ふらっとC#,C♯,C#(初心者用) Part92

■ このスレッドは過去ログ倉庫に格納されています
2012/04/26(木) 21:32:32.95ID:RzRn9VkL0
ふらっとVisual C#,C♯,C#(初心者用)

このスレッドは
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

関連スレ
ふらっとC#,C♯,C#(初心者用) Part91
http://toro.2ch.net/test/read.cgi/tech/1335089085/
C#, C♯, C#相談室 Part71
http://toro.2ch.net/test/read.cgi/tech/1332575004/


こんな感じでソフトウェア板に立てたらどうかな
2012/09/17(月) 18:02:02.24ID:0M7Go0Rj0
windows7 64bit VS2010

UIntPtr up = new UIntPtr();
up = (UIntPtr)uint.MaxValue; // 通る
up = (UIntPtr)ulong.MaxValue; // x64向けビルドは通る

IntPtr p = new IntPtr();
p = (IntPtr)uint.MaxValue; // x64向けビルドは通る
//p = (IntPtr)ulong.MaxValue; // コンパイルエラー

>>459見るとULONG_PTRは32/64bit符号なし整数だから
やっぱり値によってはオーバーフローするように思えるんだけど…
何か勘違いしてたら指摘お願いします
464名無しさん@お腹いっぱい。
垢版 |
2012/09/17(月) 19:45:00.78ID:VbchTx9p0
>>463
UIntPtrもIntPtrも実体はアドレスが入る入れ物だからx86かx64でのみ長さが変わる
X86ならIntPtrもUIntptrも64bitだが、x86なら両方とも32bit

詳しく調べないといけないけど、落ちる理由は全然別だと思うよ
2012/09/17(月) 20:06:55.07ID:4/VwBFNE0
ULONG_PTR Method();

というCのコードがあったとして
C#でP/Invokeするときに

[DllImport...]
extern IntPtr Method();

と宣言しても

[DllImport...]
extern UIntPtr Method();

と宣言してもどっちでも使えるよってこと

>>463は.netの世界でのエラーの話だろ
int i = (int)uint.MaxValuel;
がコンパイルエラー出すのと同じ

Cで書かれたMethod()が0xFFFFFFFFFFFFFFFFを返してきた場合を考えてみても
ビット列としては同一で、IntPtrなら-1になるだけの話

UIntPtrを使う場面ないっしょというのは、intとuintを混在させて使うメリットないというのと同じ意味っす
466名無しさん@お腹いっぱい。
垢版 |
2012/09/17(月) 20:22:19.02ID:VbchTx9p0
>>465
>Cで書かれたMethod()が0xFFFFFFFFFFFFFFFFを返してきた場合を考えてみても
>ビット列としては同一で、IntPtrなら-1になるだけの話

いやだから、返ってくるのはポインターだからアドレス値。IntptrでもUIntptrでもUnsignedだよ
違いはそのアドレスが指し示す場所にあるデータがsignedかunsignedって違いだけ
2012/09/17(月) 20:29:49.51ID:4/VwBFNE0
ちょっと何言ってるか分からないです
2012/09/17(月) 20:30:42.83ID:IZsi9JPU0
IntPtrに-1は入るけど、UIntPtrには入らないのはなんか関係あんの?
469名無しさん@お腹いっぱい。
垢版 |
2012/09/17(月) 20:32:23.98ID:flhbUipA0
頭のUの意味を考えれば・・・
2012/09/17(月) 20:34:28.50ID:flhbUipA0
IntPtrもUIntPtrターゲットが同じならbit幅は同じ

同じbit幅の中で表現できる情報は限られててどう表現するか
UなしのIntPtrは補数表現込み
UありのIntPtrは補数表現なし
2012/09/17(月) 20:34:37.51ID:IZsi9JPU0
いや、なぜハッキリ「符号に意味がないんだよ」ってことを言わないのかなと思って
2012/09/17(月) 20:35:50.94ID:9uSqAn2K0
>>466
 typedef unsigned __int64 ULONG_PTR;
 typedef unsigned long ULONG_PTR;

何言ってるんだかちょっとわからないです。
2012/09/17(月) 20:36:45.88ID:flhbUipA0
絶対アドレスだけを扱うなら符号なしでもいいけど
相対アドレスも考慮するとあるアドレスからマイナスの番地は必要だよ
2012/09/17(月) 20:38:16.97ID:KWHauYAx0
>>473
ポインタ同士の加算はできないから不要だよ
2012/09/17(月) 20:38:50.92ID:IZsi9JPU0
相対アドレスはオフセットであってマイナスの番地とは意味が違うっす
2012/09/17(月) 20:40:37.58ID:KWHauYAx0
必要ないけどIntがあってUIntが無いのはなんかキモイから追加した
みたいなことがMSDNには書いてあるね
2012/09/17(月) 20:41:19.82ID:flhbUipA0
>>476
まあその程度だよね

なんでわざわざもめてるのかよくわからんかった
2012/09/17(月) 20:42:31.98ID:IZsi9JPU0
IntPtr p = (IntPtr)0x7FFFFFFF;
p = IntPtr.Add(ppp, 1);

pはいくらでしょうか
2012/09/17(月) 20:43:08.64ID:flhbUipA0
ppp
どこから出てきたの?
2012/09/17(月) 20:43:49.11ID:IZsi9JPU0
そこはコピペに失敗したのでppp->pと読み替えてください
2012/09/17(月) 20:45:27.08ID:flhbUipA0
>>478
それは実装によるんじゃないの?
一番下層のx86の仕組に依存するのかその上の方で判断してるのかしらんけど
2012/09/17(月) 20:53:05.98ID:0M7Go0Rj0
なんとなくわかってきた
.netで呼び出す過程では、変数のサイズさえあってれば
(符号無視して)そのままのビット列で返ってくることでいいのか
2012/09/17(月) 20:56:57.93ID:KWHauYAx0
うん
オーバーフローするかもしれないが別にそんなことに意味はない
484名無しさん@お腹いっぱい。
垢版 |
2012/09/23(日) 00:15:20.15ID:y30RztivO
例えば、
enum animal { cat, dog, mouse };
...
Console.WriteLine(animal.cat);

で、 cat が出力されますが、これって意味があるのでしょうか?
animal.cat としている段階でcatの存在は自覚しているはずで
cat を出力したければ、Console.WriteLine("cat"); などとすればよいと思うのですが。。。

もしくは、animal.cat として cat を求めなければならない
理由や状況などがあれば教えていただきたいのです。
2012/09/23(日) 00:17:57.09ID:+WRtkWU90
禅問答か何か?

どうあるべきが自分の中では正解だと思ってるの?
2012/09/23(日) 00:22:10.99ID:dI7hJC+X0
//Console.WriteLine(animal.cat);
こうすりゃいい
2012/09/23(日) 00:34:41.47ID:ac2G8xZ80
>>484
例えばだけど、コンボボックスでanimal型を選択できるようにしておいて
ユーザーが何を選択したかによって動作を変える場合とか

animal someAnimal = animal.cat; // ここにユーザーが選択した値が入ってくるとして
Console.WriteLine("{0}が選択されました", someAnimal);
if (someAnimal == animal.cat) {
...

あとよくあるのはメソッドの引数でオプション指定するような使い方
例えばFile.Open関数の第二引数は列挙体になってる
File.Open(string, FileMode);

それから列挙体の名前は一般的に大文字でスタートさせるのが慣習なんで注意しましょう
488名無しさん@お腹いっぱい。
垢版 |
2012/09/23(日) 03:57:26.46ID:y30RztivO
例えば、
enum animal { cat, dog, mouse };
...
Console.WriteLine(animal.cat);

で、 cat が出力されますが、これって意味があるのでしょうか?
animal.cat としている段階でcatの存在は自覚しているはずで
cat を出力したければ、Console.WriteLine("cat"); などとすればよいと思うのですが。。。

もしくは、animal.cat として cat を求めなければならない
理由や状況などがあれば教えていただきたいのです。
489名無しさん@お腹いっぱい。
垢版 |
2012/09/23(日) 03:59:45.13ID:y30RztivO
すいません誤爆しました。
ありがとうございました。
490名無しさん@お腹いっぱい。
垢版 |
2012/09/23(日) 21:52:27.68ID:y30RztivO
実行ファイルをリソースに埋め込むことは可能でしょうか?
491名無しさん@お腹いっぱい。
垢版 |
2012/09/23(日) 21:53:07.74ID:y30RztivO
実行ファイルをリソースに埋め込むことは可能でしょうか?
2012/09/23(日) 22:20:12.63ID:HqHVtFvg0
リソースへのストリーム開いてbyte配列に読み込んでAssembly.Load(byte[])
493名無しさん@お腹いっぱい。
垢版 |
2012/10/09(火) 16:48:10.32ID:MOJfNnXj0
ソウカ
死・ね
ソウカ
死・ね
ソウカ
死・ね 
ソウカ
死・ね 
ソウカ
死・ね
ソウカ
死・ね
ソウカ
死・ね
ソウカ
死・ね
ソウカ
死・ね
ソウカ
死・ね
ソウカ
死・ね
ソウカ
死・ね 
ソウカ
死・ね
494名無しさん@お腹いっぱい。
垢版 |
2012/10/10(水) 11:28:39.92ID:JL+iP2ke0
参照の追加でuser32.dllなどのwinapiライブラリを追加できないでしょうか
495名無しさん@お腹いっぱい。
垢版 |
2012/10/10(水) 11:33:18.12ID:CrzF5W1K0
>>494
これじゃだめなの?
http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.html
2012/10/10(水) 13:33:38.69ID:bFawIBks0
こういうのもある
WindowsR API Code Pack for MicrosoftR .NET Framework
http://archive.msdn.microsoft.com/WindowsAPICodePack
2012/10/10(水) 17:33:42.23ID:B4f5z3F70
http://ideone.com/Xqxm3
ボタン1を押すとエラーになりますが、ボタン2はエラーになりません
初心者の直感ではボタン1のAddControl行とWriteLine行で実行される引数は同じものなので
問題なく動きそうな気がしますが、何が問題なのでしょうか?
2012/10/10(水) 17:41:28.21ID:EnPjftbn0
Select呼び出した時点ではまだその中に記述したデリゲートは実行されていない
foreachした時点で初めて実行される
もちろん二回foreachしたらそれぞれ別々に実行される
2012/10/10(水) 17:52:35.01ID:B4f5z3F70
>>498
Controlのハッシュコード見て納得しました。両者の引数の中身は別々のものだったんですね
ありがとうございます
2012/10/13(土) 09:35:06.08ID:bcLNuUO70
フォント変えるたびにサイズだのMarginだのUIがグダグダになるんだけどフォントだけ変えられないの?
501名無しさん@お腹いっぱい。
垢版 |
2012/10/13(土) 09:36:34.58ID:5zpC+t1f0
無理です
2012/10/13(土) 15:09:46.38ID:VcGh2v180
AutoScaleModeをFontじゃくすればおk
2012/10/13(土) 18:31:58.36ID:bcLNuUO70
>>502
ありがと
504名無しさん@お腹いっぱい。
垢版 |
2012/10/24(水) 15:15:58.56ID:k+hoXY1r0
AutoHotKey、C、C++、C#、1から覚えるならどれがよいでしょうか?
2012/10/24(水) 17:31:04.00ID:iih9hxB00
>>504
何がしたいのかによる
手っ取り早くGUIアプリ作りたいならC#
506名無しさん@お腹いっぱい。
垢版 |
2012/10/24(水) 17:46:55.86ID:k+hoXY1r0
C、C++を使わなければならない場面って
どんな時が想定されるのでしょうか?
2012/10/24(水) 17:52:52.34ID:Ik1RwUJu0
C#が気に入らないとき
508名無しさん@お腹いっぱい。
垢版 |
2012/10/24(水) 17:53:33.55ID:k+hoXY1r0
C#が気に入らないときって
どんなときなのでしょうか?
2012/10/24(水) 17:56:51.88ID:JblmfH4p0
所詮は道具なのに自分の存在価値がC++を信望する
ことにあるように思い込んでるオールドグラマーのプライドが傷ついたとき

所詮は道具
2012/10/24(水) 17:59:35.21ID:iih9hxB00
>>506
速度が必要なときとかドライバ開発するときとか
511名無しさん@お腹いっぱい。
垢版 |
2012/10/27(土) 22:57:43.05ID:kK2FJj7P0
C++の名前空間がついた関数をC#から呼ぶ方法ってありますか?

C++
namespace std
{
dllexport void hello{}
};

C#
class Test{
[DllImport("Hello.dll")]
public static extern void std::hello();
}
2012/10/27(土) 23:05:34.95ID:QanRTcXg0
ありまっせん
2012/10/27(土) 23:26:54.29ID:XAMdIF+y0
C++/CLI でバイパス関数を作るとか?
2012/10/27(土) 23:28:44.51ID:dc7ozUsu0
dumpbin /exportsでエクスポートされてる名前調べて
DllImportのEntryPointに指定する
@とか色々ついてるの全部な
515名無しさん@お腹いっぱい。
垢版 |
2012/10/29(月) 21:53:35.88ID:8J/RA3H7O
みなさんマイクロソフトのVC#2010お使いですか?
時期バージョンではメトロアプリケーションしか作れないって本当ですか?
2012/10/29(月) 21:56:45.43ID:DV7dQm/k0
とっくに2012出てるし普通のアプリケーションも作れるfor Desktopもあります
しかしVistaでは動きませんwwwwwwwww
517名無しさん@お腹いっぱい。
垢版 |
2012/10/29(月) 22:19:21.43ID:8J/RA3H7O
>>516
無償版出てるんですか?
2012/10/29(月) 22:20:18.01ID:FBftQse/0
2012あったんかVistaの俺オワタwwwwwwwww
2012/10/29(月) 22:36:22.16ID:JIRDyW8T0
嘘です。
2012/10/29(月) 22:37:26.11ID:ma/E4RsR0
VisualStudio 2010で
VisualStudioのプロパティ設定画面のような入力を実現したいのですが

1. そーゆーフォームってありますか?

2. サンプルが載っているようなサイトがあったら教えてください。

プロパティ  設定値
位置        5 , 80
サイズ      20 , 50
色          ■ ←赤く表示されてる
背景色       □ ←白く表示されてる

みたいなやつです。
2012/10/29(月) 22:37:43.81ID:DV7dQm/k0
Win7でしか動かない機能があるからVista駄目って名目だけどホンマかいな
2012/10/29(月) 22:48:17.45ID:FBftQse/0
Win8って売れるのかあれ?
523名無しさん@お腹いっぱい。
垢版 |
2012/10/29(月) 22:49:25.41ID:y+W1M2Ph0
あれだけ安ければ売れるだろ
2012/10/29(月) 23:03:27.73ID:JIRDyW8T0
>>520
http://dobon.net/vb/dotnet/control/propertygrid.html
2012/10/29(月) 23:12:27.84ID:rW3DTNlp0
ドボンすげー
2012/10/30(火) 00:24:45.57ID:bUd/YgI20
>>524
PropertyGridコントロールっていうのですね。
ありがとうございます。助かりました。
2012/10/31(水) 15:57:59.06ID:MyiV4EuH0
ILSpy使ってみたのですが


base..ctor();


こんなのがでてきます
なんですか、これは?
2012/10/31(水) 16:07:42.48ID:xYjQuu0g0
基底クラスのコンストラクタ呼び出し
.ctor:コンストラクタ
.cctor:静的コンストラクタ
.dtor:ファイナライザ
2012/10/31(水) 16:16:05.60ID:MyiV4EuH0
ありがとうございます
なんでそんなものがでてくるのかわかりませんが、コンパイル通らないので削っておきました
2012/10/31(水) 18:45:24.78ID:1qE1ndG1P
C#の絵本買って読んでみてるけど
まったく頭に入らない。プログラムは難しいね
2012/10/31(水) 18:50:47.45ID:FGAWRxyp0
なんだってェ・・・?
2012/10/31(水) 20:03:08.03ID:SoL3B7R90
>>529
2012/10/31(水) 23:03:56.83ID:kRljdB+h0
>>529
!?
2012/10/31(水) 23:13:13.09ID:FGAWRxyp0
どういうことなん
2012/11/01(木) 11:12:25.09ID:r4ED/Trl0
ILSpy使ってる時点でコンパイルは済んでいるはずだが……
2012/11/01(木) 11:14:25.82ID:2+OQdg2B0
ILSpy使ったことない人たち乙
使ってみればわかるよ
2012/11/01(木) 19:37:35.41ID:rJWV0p35O
一応言っておくけど
クラッキングに関する話題はローカルルールで禁止のはずだから
その辺弁えてね
違うなら別に良いけど
2012/11/01(木) 20:06:16.58ID:r4ED/Trl0
べ……弁えてね……
2012/11/01(木) 20:10:01.41ID:3QH3y+v+0
べんべん
2012/11/01(木) 20:49:31.05ID:5Gi8i1ek0
その位わきまえろよ
541名無しさん@お腹いっぱい。
垢版 |
2012/11/01(木) 21:55:08.65ID:yekrgJiTO
逆コンパイル防止とかできますか?
2012/11/01(木) 21:56:06.12ID:cK/t36Y90
無理
2012/11/01(木) 22:02:16.46ID:R3kwDSIh0
動作する以上、逆コンパイル自体の防止なんてネイティブでも不可能だけど
読みづらくして逆コンパイルした奴にやる気を無くさせることはできる
お前の作ったカスをわざわざ手間かけて解読しようなんて酔狂はいないから極めて有効
544名無しさん@お腹いっぱい。
垢版 |
2012/11/02(金) 03:24:11.42ID:bqHByckqO
C#は将来性のある言語でしょうか?
2012/11/02(金) 09:27:36.49ID:wC5ga2nw0
スマホ向けクロスプラットフォーム開発では圧倒的トップシェアなんだっけ
2012/11/02(金) 20:17:57.35ID:aIakvy5+0
iOSがObjectiv-C、AndroidがJavaで、その間をうまいことMonoが持って行ったわけか。
547名無しさん@お腹いっぱい。
垢版 |
2012/11/02(金) 22:07:19.88ID:bqHByckqO
無償版のC#expでは難読化できないの?
2012/11/02(金) 22:11:06.04ID:CERrS32S0
単独じゃ無理だな
一応フリーなものは存在する

でもC#やJavaみたいなメタデータに依存しまくった言語で
適切に難読化を行うのはそれなりに面倒だ
多分このスレで質問してるレベルじゃ起動すらしなくなるだろう
2012/11/02(金) 22:11:24.26ID:wC5ga2nw0
まずは解読したくなるようなアプリを作れるかどうかを心配したほうがいいよ
2012/11/02(金) 22:14:07.60ID:wC5ga2nw0
だいたい、そこまで読まれたくないならクライアントにバイナリ置くこと自体が間違いだよ
デスクトップアプリなんてオワコンは捨ててWebアプリにすれば解読なんてしようがない
2012/11/02(金) 22:56:20.70ID:PCsPEjTX0
まあそんなに読まれたくないものならC++で作ればいいだけだしなー
552名無しさん@お腹いっぱい。
垢版 |
2012/11/03(土) 01:21:58.61ID:a4RPfFKTO
C++expはコード補完してくれますか?
2012/11/03(土) 05:09:40.38ID:hZ/WQ5Qr0
WebアプリWWWWWWWWWWWWWWWW
2012/11/03(土) 11:05:12.64ID:UA94FFsf0
>C++expはコード補完してくれますか?

ある程度は
それよりはC99とかC++11への準拠度が低すぎてイライラする
2012/11/03(土) 13:30:43.61ID:UA94FFsf0
もう一言いっておきたい

http://opcdiary.net/?p=6539
C++11が忙しいからC99は注力しないよ見たいな事を抜かしておいて
VC++2012のあのザマは何なのだ
舐めとんのか
2012/11/03(土) 13:41:36.62ID:aQkNFxaV0
これでもC++のIDEとしては世界最高峰という現実
2012/11/04(日) 00:47:22.62ID:uGVODdQQ0
>>554-555
スレ違いにレスするのもあれだが
2012のリリースに間に合った分だけ先に出したんじゃないか。
つい先日C++コンパイラのCTPが出たから試してみるといい。

Visual C++ Compiler November 2012 CTP
http://www.microsoft.com/en-us/download/details.aspx?id=35515
http://blogs.msdn.com/b/vcblog/archive/2012/11/02/visual-c-c-11-and-the-future-of-c.aspx
558名無しさん@お腹いっぱい。
垢版 |
2012/11/04(日) 01:15:52.52ID:2HT1Ehp3O
VC++はWinAPI呼び出しやすいですか?
2012/11/04(日) 02:23:33.97ID:8/SJMHn70
WinAPIのようなC向けAPIはC#からでも呼び出しやすいから大差ない
C#の場合は.NETによって格段に便利な形でカバーされてるところも
C++ではWinAPIに頼らざるをえないことが多々あるから、総合的にみるとC#に比べて糞面倒
2012/11/04(日) 12:51:39.29ID:n0HETfhZ0
まあDllImportに頼らないとkeybd_eventもSendInputも使えないので
マクロ書きたい初心者には不評なんですが
561名無しさん@お腹いっぱい。
垢版 |
2012/11/06(火) 06:24:23.97ID:wprtWPyAO
Func<int, int, int> foo = (x, y) => { return x + y; };
例えば上をコールバック関数にしたいと思ったらどうすればよいでしょうか?
extern static int CallBack( ???, int x, int y );
???は定義可能でしょうか?
2012/11/06(火) 06:39:57.83ID:7jUzu2Y40
delegate int HogeCallback(int x, int y);
使うしかないね
■ このスレッドは過去ログ倉庫に格納されています
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

ニューススポーツなんでも実況