1 名前:デフォルトの名無しさん [2009/02/04(水) 23:26:55 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part50 pc11.2ch.net/test/read.cgi/tech/1229661915/l50 Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>2-5 くらい
89 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 22:58:14 ] というか、C#や.netは今後も残るのかな .netそのものがどうなるか不安だし、言語としてもVBやC++/CLIと比較したらC#はマイナーだし、 なんか漠然とした不安を感じてしまう だから、いつまでもC#の高い本が買えない 悪い循環になってるorz
90 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:02:22 ] C++/CLIと比較ww
91 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:05:48 ] C#>>>VB>>>>>>>越えられない壁>>>>>>C++/CLI って感じだな。俺の周りでいうと。
92 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:06:30 ] 米のamazon.comだと日本で高い洋書も結構安かったりするんだけど(特に中古)、 自分の住所の英語表記に自信がない(w)のと、送料が不明確なんでずっと買うの 躊躇してるんだよなあ。 実際米のamazon.comで買ってる人いたら送料どのぐらいか教えてくれない?
93 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:11:48 ] 言語としてC++は残ってるからなCLIはその拡張版なだけだし ユーザ数はVB>C++>C#だし、消えるとしたらC#が真っ先に消えるんじゃないか?
94 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:12:58 ] >>89 というか何年前から来た人ですか
95 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:15:16 ] 確かにどの現場にいってもC#で開発してるところは少ない 無くならないかもしれないが死に体であることには変わりがないな 少なくとも俺の周りでは
96 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:15:34 ] >>93 そう思うなら、VBでもC++/CLIでも使えばいいじゃん。
97 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:17:50 ] すくなくともC++/CLIだけはありえない それだけは断言できる
98 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:20:58 ] >>97 なんで?
99 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:23:00 ] 俺もないと思う。.NET のメリットである、「お気楽コーディング」ができないし。 情報も少ないしね。
100 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:25:10 ] C++/CLIはなくなっても、C++は残るからなぁ
101 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:27:30 ] C++ じゃないとダメな分野は依然としてあるからね。
102 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:32:04 ] C++にはC++にしかできないことをやらせるというのがMSの方針 だから間違ってもC++/CLIは主役にならない
103 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:34:51 ] となると、かつてVB6でクライアントを開発してたようなシステムは、 まさかVB6ってわけでもないだろうから、.netでVBで開発してるのかな?
104 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:35:12 ] VC++のカバーして他分野はあんまり侵食してない。 VC++と旧VBの間をカバーしてたDelphiやC++Builderといったあたりが弾き出された感じだな。
105 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:37:16 ] 2chでそんな公然の秘密みたいな話されてもな。 一人で仕事して、言語の移り変わりを心配してる人がそんなに沢山いるのかな? 極個人的に、数年前に関数型言語への乗り換えに失敗したので、 Boostのlambda系をやろうと思ったら、 C#ってやつで似たような事をやってた。 現在に至る。 一万円で1日遊べればいいので、本代はペイできたと思う。
106 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:37:50 ] 主役はBasicだから主役には成らないが脇役から外れることもないんじゃない? ならC++を学んでC++でFrameworkを使うという選択肢は重要な選択肢
107 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:39:49 ] 主役は Basic って何の話? VB6 まで、MS のファーストランゲージは VB だったけど、今は C# に変わったよ。
108 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:42:12 ] >>106 だから奴らは、継承を見ると避難して、switchを沢山使うんだな!
109 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:43:50 ] >>107 今もVBがメインストリームで、C#はマイナーだろ
110 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:46:13 ] こういっちゃなんだが C#er は C++ からの人も多い まぁそういう人らすら大抵既存資産流用とか以外で C++/CLI を 使いたがらないわけで押して知るべしっていうか
111 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:47:52 ] まともなプログラマなら両方使える。たいした差はないだろうに。 使いこなすのに10の労力が必要だとして、 クラスライブラリの理解5、IDEの操作3、言語2くらいだからね。 どうでもいいよ。
112 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:51:02 ] C++/CLIはともかく,C#できるのにVBできないのはもったいない 1時間触れば使えるぞ
113 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:52:44 ] F#やbooもよろしく
114 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:03:57 ] 今のVBって今のC#のサブセットにしか見えないんだが、何か違うところある? 構文とキーワード以外で。Variant型ってまだあるんだっけ?
115 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:05:17 ] わりとC++/CLIに戻る価値があるって言ってる人もおおいじゃん アレはガゼってこと? C++: .NET Framework プログラミング最良の言語 msdn.microsoft.com/ja-jp/library/ms379617.aspx いままたC++が熱い!「C++/CLI」として大進化したVisual C++ 2005 www.atmarkit.co.jp/fdotnet/special/cppcli/cppcli_01.html C++/CLIはC#を凌駕するかも知れない…… usingステートメント不要のDisposeメソッド呼び出しの衝撃 mag.autumn.org/Content.modf?id=20050506023118 本当は凄いC++!? プログラム比較論 C++ vs C#, Java, Visual Basic mag.autumn.org/Content.modf?id=20050504145851
116 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:08:42 ] >>115 無知なので申し訳ないが、簡単な質問なので教えてくれ。 テンプレート有りのライブラリを使った後に、idasm使った事ある? それとも、あの汚いコードはJITが消化してくれるのか?
117 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:08:47 ] >>115 多くの記事がVS2005つまり.NET2.0リリース直後じゃないかな。 新製品のことは悪くは書かない。つまりそういうこと。
118 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:12:19 ] それ川ま(ry。 いやあの人の記事嫌いじゃないというかむしろ好きだけどw
119 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:12:22 ] >>116 それManaged拡張C++じゃね?
120 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:12:47 ] >>114 VariantはObject型として実装されてる メンバ呼び出しは全部リフレクションを使った遅延バインディング >>115 出たばかりのころは騒がれてたね C++/CLIとC#を両方ともちゃんと使った上でC++/CLIマンセーしてる奴なんて今時いないよ
121 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:13:45 ] >>114 書き方以上の違いがあるのはインターフェイスの扱いと、 あとOption Strict Offができるぐらいかね。 たしかにC#でしかできないことの方が逆よりずっと多いから、その意味では サブセット的存在かもしれん。
122 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:14:15 ] >>114 クエリ式がC#より充実しているとか、VB6時代の暗黙のインスタンス化復活とかかな。 名前付き引数・デフォルト引数はC# 4.0で入るんだよね。
123 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:15:27 ] んで、結局、今の開発案件はVBとC#のどっちが多いのかな
124 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:15:58 ] >>115 Managed C++ → C++/CLI は大進化と言える。 Managed C++ はカオスだったなぁ・・。
125 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:17:54 ] CreateObject とかは楽だね。
126 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:19:04 ] サブセットというより機能制限により簡易化と捉えるべきだろ それこそ、昨日のintとuintの会話と同じ
127 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:26:03 ] どっちが複雑かということならレガシー機能やダメな子のための機能が満載のVBが圧勝だろ 次のバージョンでC#でもVariantみたいなことができるようになるけど, 必要だから使うのと,わかってないのをごまかすために使うのは違う
128 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:29:26 ] 結局、VBユーザが流れ込んでC#の良いところがなくなっていくわけね 言語仕様そのものもVBユーザごのみに変わっていきそうだな
129 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:33:06 ] ぜんぜんわかってないやつがいます。
130 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:35:30 ] あれは要するに DLR 対応なんだけど。 C# 4.0 に関して、どうして必要か、どういう風に導入するかとい われたら、ヘジのプレゼン見れば納得すると思うんだけど、 なんか伝聞でへんな風に伝わっていっている気がする・・・
131 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:38:34 ] また、そうやって荒れる原因になることをいう C#がVB化するという意味じゃなくて、造詣に深くなくても使えてしまうから、 結果的にVB化するということだよ VBみたいな言語の仕様での曖昧化を許すということでなく、 結果的に機能について曖昧なままユーザが使用し続けるということさ。 でも本質的には言語のVB化には変わりがないと思うよ
132 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:39:31 ] Variantとして使えるのも事実だけどな COM Interopの強化も合わせて,C#4.0になれば 今までVBのほうがやりやすいと言われていたようなことが無くなって 完全にVBと縁を切れるよ
133 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:45:10 ] >>132 そうなんだ。 ついでにVBのWithEventsとメソッド内のフィールド(Staticで宣言された ローカル変数)も欲しい。
134 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:54:24 ] Variantとして使う奴が同じグループにいたら全部書き直させるわ
135 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 13:59:21 ] JavaからC#に移行してきました。 Javaの場合はget/setメソッドでメンバー変数の公開をしていましたが、 C#ではプロパティー機能が存在していますのでこちらを使用しております。 プロパティーを使用していますが使い方としてはget/setメソッドと同様の 使い方しかしてないので、なぜこの仕様が実装されたのか理解できていません。 もしよろしければ理由などについて解説していただけませんでしょうか。 面倒でしたら参考URLをいただければそちらで勉強したいと思います。
136 名前:デフォルトの名無しさん [2009/02/12(木) 14:06:20 ] >>135 参考URL blog.inomata.lolipop.jp/?eid=192442
137 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 14:46:56 ] >>135 www.atmarkit.co.jp/fdotnet/special/java2cs/java2cs_01.html 「あたかも公開しているかのように振舞う使い方」ができるからでは?
138 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 15:39:05 ] 単にタイプ数が減るからだろ
139 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 16:01:24 ] >>136 >>137 ・呼び出しコーディング非効率の改善 ・リフレクションを使うにあたっての非効率の改善 この2点を解消しているってことなのでしょうか? 「あたかも公開しているかのように振舞う使い方」は、 呼び出しコーディング非効率の改善と捕らえてよいのかな・・・。
140 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 16:09:17 ] リフレクションを使って見るとわかるけれど、プロパティーはフィールド(変数)とも メソッドとも区別されている。概念として言語レベルでサポートされている。それが 利点の全て。高級言語なのだから。 get_foo, set_fooだと、あるパラメタを取得、設定するメソッドである事をプログラマが 名前で示す単なる慣習に過ぎないけれど、C#ではプロパティという概念によって取得、 設定という行為を特別扱いしている。つまり、get, setメソッドという慣習の事をJAVA言語 は``知らない''けれど、JAVAプログラマは``知って''いた。つまりJAVAプログラマも無意識 にプロパティという概念を持っていたわけ。しかしその概念をJAVAは``知らなかった''。 一方でプロパティという概念をC#は``知っている''。たとえば、あるクラスが持っている プロパティの一覧を取得するなんて事もリフレクションによって可能。プログラマが扱って いる概念を言語がサポートしているのは、できる事が増えるわけじゃないけど、高級言語では 素直に喜ぶべき事。それだけ構造性が増すのだから。 まとめると、JAVAでも同じ事を``プログラマが''やっていたんだから、``言語が''同じ事を やってくれるのを素直に喜べば良い。新しい事ができるわけではないから、使い方はJAVA と同様で全然良い。ぶっちゃけ、get_foo, set_booとタイプミスしなくて済む機能くらいの 認識でも良い。
141 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 16:12:24 ] 追記:get, setの中で取得/設定とは言い難い処理まで書けてしまうという問題点はJAVAと同じ。 ただし、C#というか.NETではむしろ逆にプロパティの設定に伴う副作用を積極的に活用する傾向 がある。時々UI関係で面白い事例に出くわす。たとえば、フォームのClientSizeを設定すると フォームのサイズがClientSizeに合わせて調節されるので、一度、フォームのサイズがおかしく なるバグを修正するためにthis.ClientSize=this.ClientSizeという字面上は超怪しいコードを書いた 事がある。(とあるツールのアドイン開発で、ロード側の問題なので対症療法するしかなかった) でも、get, setの副作用は標準ライブラリ以外では濫用すべきではないと思う。そいういう意味 では、JAVAのget_foo, set_fooと本当に同じで良い。自動プロパティなんてのも実装されたし 活用してみたらどうだろう?
142 名前:135 mailto:sage [2009/02/12(木) 17:34:12 ] >>140-141 判りやすい説明感謝します。 これからは積極的にプロパティーを使って生きたいと思います!
143 名前:デフォルトの名無しさん [2009/02/12(木) 19:56:47 ] プロパティに関しては否定的な意見もあるけどね。 以下は プログラミング.NET Framework (Jeffrey Richter著, Microsoft Press出版) から あくまで参考程度に、こういう見解もあるということで。 9.1.1 プロパティを賢く設計する 個人的には、筆者はプロパティが好きではありません。Microsoft.NET Framework やプログラミング言語でのサポートがなければよかったと思っています。理由は、 プロパティはメソッドであるのにフィールドのように見えるからです。この問題は 大きな混乱を招いてきています。プログラマがフィールドにアクセスしているコードを 見て仮定してしまうことが、プロパティにおいては誤っていることがあります。例えば、 次のようなことです。 ・プロパティは読み取り専用または書き込み専用にできますが、 フィールドは常に読み書きできます。プロパティを定義するときはgetとset のアクセサメソッドを両方提供するのが最善策です。 ・プロパティのメソッドは例外をスローすることがあります。 フィールドは例外をスローしません。 ・プロパティはメソッドのoutやrefの引数には渡せません。フィールドは渡せます。 ・プロパティのメソッドは実行に長い時間がかかることがありますが、フィールドへの アクセスはいつもすぐに実行が完了します。プロパティを利用する一般的な理由は、 スレッドの同期を取ることです。これはスレッドを永遠に止めてしまうかもしれない ことを意味します。したがって、スレッドの同期が必要な時にプロパティを使うべきでは ありません。このような状況ではメソッドを利用するほうが好ましいでしょう。また、 クラスがリモートからアクセスできる(たとえばクラスがSystem.MarshalByRefObjectから 派生している)場合、プロパティメソッドの呼び出しはとても遅くなることがあります。 したがって、プロパティよりメソッドの方が好ましいでしょう。筆者の私見ですが、 MarshalByRefObjectから派生しているクラスではプロパティは使うべきではありません。 (続く)
144 名前:デフォルトの名無しさん [2009/02/12(木) 19:57:31 ] (続き) ・続けて繰り返し呼び出された場合、プロパティは毎回異なる値を返す可能性がありますが、 フィールドは常に同じ値を返します。System.DateTimeクラスにはNowという読み取り専用の クラスがあります。このプロパティは現在の日付と時間を返すため、呼び出されるたびに 異なる値を返します。この実装は誤りで、MicrosoftでもNowをプロパティではなくメソッドに 直せるものなら直したいと考えています。 ・プロパティメソッドは副作用を持つ場合がありますが、フィールドへのアクセスには そのようなことはありません。言い換えると、型のユーザーがさまざまなプロパティに 値を任意の順序で設定できて、型の動作に違いがでないようにすべきだということです。 ・プロパティメソッドは追加のメモリを必要とするか、オブジェクトの状態の一部では ない何かへの参照を返して、そのオブジェクトを操作しても元のオブジェクトには 何の影響もない場合があります。フィールドは常にオブジェクトの状態の一部であることが 保証されているオブジェクトへの参照を返します。コピーを返すようなプロパティを利用すると 開発者は混乱します。また、このような仕様がドキュメント化されていないこともあります。 プロパティは使われすぎているというのが筆者の懸念です。プロパティとフィールドの違いを 一覧すれば、プロパティを定義する方が使いやすく、かつ開発者の混乱を招かないパターンは 非常に少ないことに気づくでしょう。プロパティによって得られるのは、少々単純化された構文 だけです。パフォーマンスの向上もない上に、コードは読みづらくなります。もし筆者が、.NET Frameworkとコンパイラの設計に関わっていたら、プロパティを提供することはなかったでしょう。 代わりに、開発者にGetXxxやSetXxxというメソッドを必要に応じて定義させるようにしていたこと でしょう。コンパイラが何か特殊な、単純化された構文でこれらのメソッドを呼び出せるように したいなら、そうすればよかったのです。ですが、フィールドアクセスとは異なる構文を使って 欲しいと思います。開発者が何をしているのか(つまりメソッドを呼び出しているということを) しっかり認識できる構文ということです。
145 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 19:58:19 ] public class MyGenericClass<T> where T:(Intとかfloat){ T example(T a,T b){ return a * b; } } operator*が使える型を取るときwhereにはなんと書けばいいのでしょう?
146 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:00:13 ] >>145 今のところできません
147 名前:145 mailto:sage [2009/02/12(木) 20:08:29 ] できませんか。コピペでbyte,short,ushot,,,,ulongつくります
148 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:41:14 ] 演算子の実装を表すインタフェースが欲しいってのは常々議論されているけれど、 C#4.0でも解決されないみたいだね。
149 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:49:24 ] ExpressionTree使う
150 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 21:14:47 ] >>144 つまりWPFのSetValue(オブジェクト、型.依存プロパティ)はグッドという事か。 これはこれで超冗長だけど、まあロジカルではある。しかも添付プロパティなんて 芸当も可。
151 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 21:39:27 ] >>148 よく知らずに突っ込むけど、そんな議論あるの? 演算子って普通staticじゃないか
152 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 22:05:41 ] インタフェースというより、ジェネリック制約が欲しいという話のことが多い気がする。 いずれにせよ、目的は>>145 をどうにかしたいということなんだけど。
153 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 22:12:27 ] >>151 いやだから>>145 みたいなケースで型制約を where T: Imultiplicative とか書ければ万事オッケー、みたいな。別に演算子の実装をインタフェースの実装でやりたい わけじゃなくて、演算子の実装を表す型制約があって欲しいという事。だから where T: multiplicative って書けて欲しい、という話とも言える。 「C# 四則演算 ジェネリック」でググると、MSDNフォーラムとかわんくま同盟の人たち とかの議論がわんさか出てきます。 >>149 はどういう風にやるの?ExprssionTree詳しくないのでちょっとイメージできないんだけど。
154 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 22:34:10 ] >>151 ここの過去スレでも出てきてるね www.23ch.info/test/read.cgi/tech/1194956418/295-312 他にもあったような
155 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 22:38:44 ] >>151 ここの過去スレでもやってた www.23ch.info/test/read.cgi/tech/1194956418/295-312
156 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 22:40:03 ] ごめんね >>154-155 は書き込み失敗したかと思った
157 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 22:53:25 ] >>153 T example(T a, T b) {
158 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 22:53:58 ] ミスったので帰ります
159 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 23:16:17 ] >>154 普通に2chのURLはってくれお pc11.2ch.net/test/read.cgi/tech/1194956418/295-312
160 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 23:40:37 ] ごめんね 次からそうする
161 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 00:17:39 ] >>143 プロパティ否定するのなんて、初期のJava信者だけだろ。 そのJavaにもプロパティ実装されて、否定してた連中涙目。
162 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 00:22:42 ] java7のプロパティもクロージャもキャンセルのふいんき(なぜかr)らしい。
163 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 00:34:30 ] プロパティは属性だから、それを求めるのに特定の機能が使いまわされやすいからな string mText; public bool IsEmpty { get { return this.GetIsEmpty(this.mText); } } protected bool GetIsEmpty(string text) { return text == ""; } みたいにGetIsEmptyを基底クラスにまとめて置けば、 継承先ではメンバ変数を渡すプロパティを書けばいいだけで楽。
164 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 01:08:42 ] >>153 Expression Tree使うとこういうのが簡単に作れる static class GenericCalculator<T> { private static readonly Func<T, T, T> add; static GenericCalculator() { var left = Expression.Parameter(typeof(T), "left"); var right = Expression.Parameter(typeof(T), "left"); add = Expression.Lambda<Func<T, T, T>>(Expression.Add(left, right)).Compile(); } public static T Add(T left, T right) { return add(left, right); } //他の演算子も同様 }
165 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 03:22:34 ] 153です。 >>164 add=(Func<T,T,T>)((l,r)=>(l+r));って書くのと同じじゃん、と一瞬思ったけど、 Compile()は当然実行時評価なのかー!。 型制約が欲しい、というのとは話が違くて、足し算ができないと実行時に例外が投げられるのね。 勉強になった。 それなら、CodeDOMでも良いかな? この手の議論って型制約の話とは別にダックタイピングができればなあ、って話にもなりやすい けれど、それを無理やりやる方法があるって事だね。
166 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 04:34:58 ] 書いてみた。ごめん、164を使ってくれ。今は反省している。 class Multiplier<T> { public T Mult(T l, T r) { string nameOfT = typeof(T).FullName; string assemblyOfT = typeof(T).Assembly.ManifestModule.FullyQualifiedName; CompilerResults cr = null;
167 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 04:35:44 ] 続き using (CodeDomProvider provider = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } })) { CompilerParameters cp = new CompilerParameters() { GenerateInMemory = true }; cp.ReferencedAssemblies.AddRange(new string[] { "System.Core.dll", "mscorlib.dll", assemblyOfT }); string className = "Multiplier_" + nameOfT.Replace('.', '_'); string namespaceName="GenericTest"; string qualifiedClassName = namespaceName + "." + className; string source = "namespace " +namespaceName+"{ public class " + className + "{public " + nameOfT + " Mult(" + nameOfT + " l, " + nameOfT + @" r){return l*r;}}}";
168 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 04:36:29 ] さらに続き cr = provider.CompileAssemblyFromSource(cp, source); if (cr.Errors.HasErrors) { throw new Exception(String.Join(Environment.NewLine, cr.Errors.OfType<CompilerError>().Select(e => e.ToString()).ToArray())); } Type typeOfMultiplier = cr.CompiledAssembly.GetType(qualifiedClassName); Object multiplier = Activator.CreateInstance(typeOfMultiplier); MethodInfo multiplierMethodMult = typeOfMultiplier.GetMethod("Mult"); return (T)multiplierMethodMult.Invoke(multiplier, new object[] { l, r }); } } }
169 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 06:08:29 ] 同じ話題を d.hatena.ne.jp/NyaRuRu/20060802/p1 で見つけたんだけど、ここに ------------------------------ .NET で動的に実行コードを生成する方法はいくつかあり,またその方法は増えつつあります. * (.NET 1.0 以降)CodeDOM やコンパイラによる動的コンパイル * (.NET 2.0 以降)Lightweight Code Generation (LCG) * (.NET 3.5 以降?)Expression Tree による動的コンパイル -------------------------------- とあるので、俺のCodeDOMの方法は一応.NET1.0でも使えるという利点はあるみたい。 あと、このサイトではExpression Treeはコードのセマンティクスをデータ構造として保持 するために用いる、という哲学が示されていて、著者的には直ちにExpression Treeをコンパイル するような使い方はしっくりしないらしい。まあでも>>166-168 を書くくらいなら>>164 を 書くわな。 このサイトには>>164 と同じ方針で作った演算子オーバロード付きの四則演算のジェネリック型 とそれを用いた複素数のジェネリック型のサンプルもある。この手の話って頻繁に繰り返されて いるように見えるのでまとまった解決法はないと思っていたけれど、これはそのまま直ちに 利用可能だね。 夜中に目が覚めてしまったので色々書いてしまった。連投&長文すまない。
170 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 06:16:59 ] 足し算のためにデリゲート呼び出すのもインターフェース越しにアクセスするのも 現実的ではないでしょう
171 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 07:58:44 ] そういう事書いてる奴誰かと思ったらやはりNyaruruか・・・
172 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 08:26:23 ] >>170 パフォーマンス的に? C++のテンプレートみたいな「超高機能なマクロ」にしないと決めてる以上、 それはしょうがない。 >>171 しかも、他のMVPが「いまさら」盛り上がってる中、 NyaRuRu さんだけは「そういえば昔書いたけど」だし。
173 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 08:42:40 ] >>170 基本的な値型だけを対象にしたければ、素直に大量にオーバーロード書けば良いのでは? まあその場合も型制約でOR論理を使いたい、ってな議論はできるけれど、興味深くはない。
174 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 08:50:03 ] >>173 みたいな方法も、 ソース冒頭に using ValueType = System.Double; とか書いておいて実装して、 このソースをコピって冒頭の1行書き換えるだけで可能だしね。 美しくはないけども、何とかならないレベルじゃない。
175 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 08:50:09 ] 別にintと、あとdoubleがあれば十分じゃないかと思うけど
176 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 08:51:09 ] >>175 あとは BigInteger とか、実装してる人がいるなら Rational とかかな。
177 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 09:09:42 ] それこそ遅くて使いものにならないだろうけど C#4.0ならdynamic使えばそのままleft + rightと書けるな
178 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 10:47:41 ] Nyaruruって大学生だっけ? ガキに「さん」付けか・・・
179 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 11:12:29 ] 能力も無いのに自分の方が年上ってだけで 見下した態度をとるのはみっともないぞ
180 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 12:58:20 ] Nyaruruって大学生だったのか
181 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 13:24:55 ] Nyaruruが大学生だったら俺プログラマやめるわ
182 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 14:26:16 ] なさけねー。
183 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 14:34:24 ] 昔はC++を使っていて色々研究とかしてたけど・・・ いろんな言語使っている間に言語の濃い部分を積極的に学ばなくなってしまったな。 これは退化してるのかね・・・
184 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 14:38:49 ] 羽根が短くなったのを退化ということもあれば進化ということもある。
185 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 15:26:43 ] 低水準な所を濃いと言ってるならアセンブラかマシン語でもやれば?
186 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 15:47:23 ] 誰もそんなこと言ってないと思うが できるだけ楽に扱えるものを使って生産的なことをする人と楽に扱えるようにするために深い部分まで追及する人とどっちが優れてるとかないだろう 前者のが需要あるし
187 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 16:42:20 ] >>185 すでにアセンブラは68系と86系をあわせて6年くらいはやってましたよ。
188 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 16:46:24 ] ひよっこだな
189 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 16:49:26 ] 甘い、甘すぎるよ。 俺なんて、C# を15年以上やってるけど、まだまだ力不足を感じてる・・・
190 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 16:52:11 ] 俺なんてもう100年になるかな
191 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 17:38:48 ] 紀元前からD言語を触ってるが、まだ完成しない
192 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 17:41:40 ] みんなたくましいなw
193 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 20:59:47 ] 生まれて間もない猛者が、ここに質問してきた事もあったしw
194 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 21:35:55 ] >>177 ジェネリクスと同時に使うなら、dynamic よりも式木使い方がお勧め。 >>178 院生だろ。 あと、歳の上下で態度変えてたら見ず知らずの人と付き合いづらいよ。
195 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 22:23:41 ] ネット上で「君」とかつけて呼ぶの?
196 名前:デフォルトの名無しさん [2009/02/13(金) 22:34:35 ] 厳密にはC#の問題ではないかもしれないけど、ちょっとお助け願います。 Genericコレクション型のインスタンスをリモート処理時に参照渡しにするにはどうすれば良いでしょうか。 例えば、 class OtherSample : MarshalByRefObject { List<int> intList; } というコードでは、OtherSampleは参照渡しですがintListは自動的にシリアル化され値渡しマーシャリングされてしまいます。 なので、アクセッサを付けてintListを取得しても、リモート化されたインスタンスの値を変更できません。 適宜 intList に対するメソッドをOtherSampleに追加するしかないのでしょうか。
197 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 23:55:43 ] メソッド作ってなんか変わる?
198 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 00:38:48 ] メソッド作ってから彼女もできるし、ギャンブルでも大当たりだしいいことづくしだよ
199 名前:デフォルトの名無しさん [2009/02/14(土) 00:46:04 ] class OtherSample : MarshalByRefObject { List<int> intList; public void AddInt( int n ) { intList.Add( n ); } } で AddInt を使えばプロキシを介して参照渡しの OtherSample のメソッドが実行される。 そうすっと、OtherSampleの参照 の intList に値が追加される。
200 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 10:13:33 ] 株価ボード的なアプリを作ろうと思っているのですが質問させてください FormLoad時に動的にLabelを3000個ぐらい生成してるのですが 起動に1〜2分ぐらいかかってしまいます。 何か良い方法はないでしょうか?
201 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 10:17:09 ] 自分で描画しろよ(´・ω・`)
202 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 10:52:05 ] XNA使ってスプライトテキストで描画でもいいかも。 その場合はフォームとか使えないけどね。
203 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 11:01:13 ] GDIで十分じゃね
204 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 12:37:57 ] 確かにGDIだけでも十分かな、ダブルバッファを有効にすればアニメーションもある程度滑らかだしね。
205 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 12:50:24 ] >200 Windows.Formsでコントロールを大量に作るとどうやってもそうなるよ。 そういう使い方ならWPFで同じことやれば結構スムーズに動きそうな気がする。
206 名前:200 mailto:sage [2009/02/14(土) 12:59:12 ] >>201-205 皆さん、どうもです。 VC++(MFC)で過去に作ったときは CStatic の派生クラスを何個も作ってやってたので Labelの派生クラスで何とかなるかと思ったら起動が遅くて・・・ ありがとうございました
207 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 13:03:09 ] そもそも3000個も表示するスペースがあるのか 一文字一個なのか
208 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 13:14:08 ] そりゃスクロールするんだろ…
209 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 13:23:13 ] ばらけた文字が集まったりとか盛大にアニメーションしたりして。 画面に表示される分だけプールから取得して再利用するようにすれば、 new()のコストかからないし、3000個も作らなくてすむんじゃない? WPFでも詳しくはしらないけれど、スクロール可能な場合に画面に表示される部分だけ 子コントロールを生成するような仕組みがあったはず。ListViewとかだっけ?
210 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 13:28:06 ] それもバーチャンリストの場合だな
211 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 13:41:02 ] ウィンドウハンドルの上限って10000くらいじゃなかったっけ そんな使い方してたらすぐ足りなく
212 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 13:43:02 ] .NET のラベルって、ウィンドウもってんだよな。 デスクトップヒープの関係もあるし、3000は多すぎだろ。
213 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 13:53:05 ] WPF なら確かにそういう問題ないけども読み込みに時間は かかるわなぁ
214 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 13:53:50 ] いうほどかかんねえよ
215 名前:200 mailto:sage [2009/02/14(土) 14:29:58 ] >207 一画面だけで300銘柄(1銘柄辺り10要素)あるので 3000個必要なんですよね 画面サイズ的にはUXGAで余裕ありです。 データ更新時にデータを適当な形に処理して Redrawする感じでVC++ではやってました。
216 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 14:51:40 ] www.woodensoldier.info/soft/AlarmTimer.htm これをReflector使ってソース出して動かせるようにしたいんですが できる人いませんか?
217 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 14:53:43 ] 何が知りたいの?
218 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 14:55:22 ] >>216 別に難読化されてるわけでもなく、逆アセできたけど? 何が問題なの?
219 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 14:58:07 ] フォームの形つくって、ソースをコピペして貼り付けてっても エラーで出てしまうんです
220 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 15:00:00 ] エラーが出るとこ直していけばいいじゃん・・・
221 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 15:00:13 ] そうですか。あなたには無理ですね
222 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 15:00:23 ] まんま使えるとは限らんよ ゴミ君
223 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 15:00:56 ] Reflector のプラグインで、.cs を吐いてくれるやつがあったな・・・ それ使えばいいんじゃね?
224 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 15:01:18 ] その上でソース作ってくれる人いませんか
225 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 15:02:55 ] いません。
226 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 15:03:24 ] >>223 kwsk!
227 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 15:06:15 ] ぐぐれ
228 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 15:07:37 ] なにが「kwsk!」だよw それ質問する態度じゃねえじゃん エロマンガの作者名じゃねえんだから、もうちょっと考えろよ
229 名前:赤西仁 [2009/02/14(土) 15:32:19 ] 1年間悩んでます。お力をお貸しください。 アークザラッドUというタイトルのゲームの、ゲーム画像(歩行画像など)を抽出したいのですが、 かれこれ1年ほど経ちますが、なかなかうまくいきません。 *もちろん抽出した画像は個人範囲内で利用するつもりです。 ◆試してダメだったこと ネット上からダウンロードできる、ありとあらゆる抽出系ツールを試した。 (ちなみに他のゲームはほとんど抽出可能) ◆教わったこと ・アークザラッドUは独自の画像形式を使っているから抽出できない。 ・PS上で表示されてるということは絶対に摘出はできるはず。 ◆抽出は不可能ではないということを知ったとき 2ちゃんねるで質問したところ、 ある方が実際にキャラクターの歩行画像を抽出して 私が立てたスレにアップしてくださいました。 スクリーンショットじゃ嫌なんです。どうか皆さん、お力をお貸しください。
230 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 15:35:43 ] アークザラッドII って、C# で作られてるの? そうでなきゃ、スレ違い、ってことで。
231 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 17:18:47 ] >>223 ずっと探してるけど見つかりません お願いします・・・
232 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 17:21:33 ] >>231 Reflector のプラグインなんてあまり数ないのに探して見つからないとかありえない。
233 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 17:22:50 ] >>231 www.codeplex.com/FileGenReflector
234 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 17:34:22 ] 使い方教えてください 童貞なんでう
235 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 17:51:58 ] チョコ食って寝ろ
236 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:36:20 ] >215 DataGridとかListViewを使った方がいいんじゃない?
237 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:44:37 ] >>233 はやくこれの使い方教えろよグズども
238 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:59:52 ] まずパンツを被ります
239 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:06:34 ] 次にズボンを脱ぎます
240 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:24:54 ] おまえら親切すぐる
241 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:26:52 ] 姉ちゃんのパンツを被ってズボンを脱いだので教えてください
242 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:30:13 ] ケツをバンバン両手で叩きながら白目をむきます。
243 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:47:51 ] 切れて本当にすみませんでした、教えてくださいお願いします
244 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 22:14:58 ] まずは>>241 の写真をうpしよう。
245 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 22:27:33 ] __ /-、r-ヽ |K>|K7| , へ 人ー^ー人 , へ / リノノ||  ̄ 7/巛 _ \ ,.-― '" ゝー、) || .// (/ ` ` ー-、 / /_ || // _ \ ) (__/ ̄ | ',Y/ /  ̄`ー ' __ \ || / __ /XXXX<>x,..、_ l ハ | _,... rxXXXXXA |XXXX|XXX|::::l` ´ Y ! '´ l::::|XXX|XXXX| |XXXX|XXX|::::| | | |::::|XXX|XXXX| XXXX/\Xソ::ノ ゝ-く ゝ::ゝ/ lXXXX|
246 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 23:19:10 ] コピペ君って馬鹿だな、まで読んだ。
247 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 00:31:01 ] >>243 [View]-[Add-Ins]
248 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 02:29:54 ] >>241 うpまだ〜?
249 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 04:04:57 ] j// /\ヽ∨//∠ヽ. \\. \ _/ ∠≠ニ二ニ≧=<´ ヘ. ', ヘ\ヽ. / _ -‐ ´/ , -‐´、_, '⌒`^ 、 \::\ } l ヽヘ ヽ} / _|_ \  ̄ フ´, / 丶\::V| | Vl ,' |____ . //./ `Vヽl | ヽ ' . | /| ヽ / ,イ/ Y/, ヽ.\ |. l (_ノ _ノ |/ / | ∨ヘ. ト、 \_ |. | . / / / l: / l ∨i 、 |  ̄ ! l lヽ│/ / l│ / イ ,イ. l ト、ヽ / | :l :| | l | ヽ_ノ !ー┼‐ |‐┬ | | l_メ、」_,;./l L l V ∧ / :|/ ハ. ト、 | |./│ヽ l | | ト. |.____ ヽ l´ヽ{ _⊥イ イ / / / l/⌒ヽ .| ー┼─ └── l | | | ヽ | 、i┘::::i \ | r┬┬‐┬ァ V ,∧. ,' ´ | ー┼− レ ヽ! ゝ- ' \l i,.┘:::::iノ / ,/〉│ :| { | _⊥_ l | . 7/l/l/ 、 `'ー‐ ' ∠≠r'ノ:jノ :| | | (__丿 ヽ レ | λ `i`ァー-- 、 /l/l/l ∧‐'.:|:::| ハ ', | l `、 レ' ', ,/| ::| :|:::| ./ ヽ_> _| __|_ _ノ ` = 、 '、 ノ ,.イ∧'|:l.:/l:::|´ \ ._| `>-r =ニi´、.,_`::: |:| { |:::l | .(_| _,.イ´ヽ.7 / /:\;八:V:ノ | ノ /7:::::! ○O'´ /::::::::/ヽ.
250 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 11:57:16 ] >>247 なぜかできないので、替わりにgenerateしてもらえませんか
251 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 13:48:11 ] >>247 それやってexe選んでも何も起こらないんですけど
252 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 13:52:24 ] つか、俺の環境だと、アセンブリ右クリックして、Export でいけるな・・・
253 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 13:59:54 ] うpお願いします><
254 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 14:00:57 ] ハ,,ハ ( ゚ω゚ ) お断りします / \ ((⊂ ) ノ\つ)) (_⌒ヽ ヽ ヘ } ε≡Ξ ノノ `J
255 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 14:05:10 ] AlarmTimer\Property.cs AlarmTimer\FormMain.cs AlarmTimer\FormOption.cs AlarmTimer\Properties\Settings.cs AlarmTimer\Properties\Resources.cs AlarmTimer.Properties.Resources.resources AlarmTimer.FormMain.resources AlarmTimer.FormOption.resources AlarmTimer.AlarmTimer16Mono.ico AlarmTimer.AlarmTimer16.ico AlarmTimer.csproj 0 error(s). Done. こう出たんですがどこにエキスポートされてるんですか
256 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 14:06:57 ] んで、警告が一個でるけど、exe の方はビルドもOK。 ->VS2008 へアップグレード後 ・ライブラリは nunit が必要らしいので、逆アセせずに参照設定を変更して利用 簡単にできるじゃん・・・
257 名前:200 mailto:sage [2009/02/15(日) 14:08:28 ] DrawString で右寄せとか出来ますか? 株価が左寄せじゃ見にくい・・・
258 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 14:12:01 ] >>257 StringAlignment
259 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 14:16:19 ] Far
260 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 14:59:57 ] >>256 エクスポートできましたが1エラー2警告出てデバック開始してもだめでした・・・
261 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 15:01:11 ] >>260 じゃあ、エラーを修正しろよ。つーか、初心者スレ行けハゲ
262 名前:200 [2009/02/15(日) 22:21:05 ] >258-259 本当にありがとう、そこがよくわからなくて困ってました おかげで外観は完成しました。 ttp://www.uploda.org/uporg2020293.png
263 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 22:23:37 ] なんとなくすごそう。これ、コントロールはいくつ使ってるの? 全部 DrawString() で描画?
264 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 22:37:30 ] WPF使いたくなるな
265 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 22:43:43 ] >>262 DataGridView はなんで使わないんだ?
266 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 22:48:44 ] でも個人的に好みだな、この外観はw
267 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 23:36:52 ] 目に優しいな
268 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 00:51:39 ] 再うっぷ汁(´・ω・`)
269 名前:262 mailto:sage [2009/02/16(月) 01:46:53 ] >>263-265 前の方にアドバイス頂いたので全部 DrawStringとFillRectangleとDrawLinesで書きました。 他のはややこしそうだったので・・・ まあ、こっちは意図通りに動いてくれれば 最新技術だろうと枯れた技術だろうと関係ないので これで満足しています。 >>267 かなり目に・・・ですw しかし、この色合いがお金を産み出してくれるんで仕方なしです。
270 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 22:43:08 ] 動画をタグで管理するソフトを作りたいのですが、 タグ情報はどうやって保存するべきでしょうか? xml?SQLで?その他? イメージ的にはiTunesみたいな感じです
271 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 22:45:43 ] 好きにしろよ
272 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 22:56:43 ] …検索速度とかバランス考えると組み込み DB がいいんでない。 エクスポートインポート機能ありな前提で。
273 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 22:58:48 ] AdobeReaderのdllを使わない、 C#から操作できるロイヤリティフリーな PDFビューアコントロールでお勧めありませんか?
274 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 23:04:28 ] >>262 再ウプして欲しい。
275 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 23:13:24 ] 何をだよw
276 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 23:14:10 ] SSでしょ。俺も404で見れなかった。
277 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 23:19:51 ] >>274 ほれ www.dotup.org/uploda/www.dotup.org14172.png
278 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 00:52:51 ] まともにできてるじゃないか。色遣いは別としてw
279 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 01:16:55 ] この色遣いはないわ-
280 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 01:39:04 ] せめて赤青黄の三色に統一するくらいの気概がないと。
281 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 01:43:16 ] 創価乙
282 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 01:44:01 ] そうか?
283 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 02:13:40 ] じゃあ赤黄緑で。
284 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 02:13:48 ] 大作だな
285 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 06:46:12 ] 期待してたけどこの色遣いは・・・
286 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 09:01:41 ] この色に意味があるんだろう。なれた色で変えたくないとか。
287 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 09:04:35 ] あの色は夢で見た神様のお告げらしいよ
288 名前:200 [2009/02/17(火) 13:44:31 ] ttp://uproda.2ch-library.com/src/lib106249.png 金融系は ↑=赤、↓=緑 って決まってるからね・・・ ところで、小数2桁まで表示させたい(2 も 2.00 みたいに)とき そうすればいいのかな? ToString("0.##") じゃだめみたいね。
289 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 13:46:07 ] >>288 別に「決まって」はいない 証券会社のツールいろいろ使ってればデフォルトが逆のやつもある だから色はカスタマイズできるものが多い
290 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 13:55:24 ] >>288 "F2" ttp://msdn.microsoft.com/ja-jp/library/dwhawy9k.aspx
291 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 14:30:11 ] >>288 "0.##"って書いていて、どうして'0'の意味と'#'の意味を知らないのか謎だ。
292 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 17:32:39 ] 自作クラスにBeginReceiveやBeginReadのような非同期動作のメソッドを加えたいのですが、どのように実装するものでしょう?
293 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 17:38:14 ] >>292 TCPの非同期通信したいの? だったらググレばいっぱい出てくるよ 一言でレスできる内容じゃないし。 ESPして余計なこというとゲームで使うなら 非同期するよりポーリングしたほうがスマート。
294 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 17:47:06 ] >>292 非同期メソッド、非同期デリゲートで検索汁
295 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 17:55:04 ] >>293 .294さん レスありです >>293 さん、聞き方がまずくてすいません、通信ではなくて非同期に処理させたいんです いちいちスレッドつくるのもめんどいなあと思って、そういやBeginなんたらとかはどうやって実装してるんだろ?聞いちゃえ、と >>294 さん、あなたがエスパーでよかった、ありがとうございます
296 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:51:10 ] >>288 ttp://uproda.2ch-library.com/src/lib106249.png 色盲の人が見ると・・・ ttp://ranobe.com/up/src/up339235.jpg ttp://ranobe.com/up/src/up339236.jpg
297 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:01:12 ] ウ、ウンコ色!!
298 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:13:33 ] 赤と緑は色盲的に最悪な色使い。全く区別がつかない。 色盲であると告白している小堺一機の 「紅葉が分からない」という言葉によく現れている。 その代わり赤紫と紫の区別はよくつくんだがね。 緑と紫なら色盲の人でもそうでない人でも区別しやすい。
299 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:14:41 ] 赤と緑がわからない って言うけど、その2色は何色に見えるんだろうと思ったことがある しかし色盲の人のことまで考えるかどうかはさすがに作る人の自由かと
300 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:15:35 ] >しかし、この色合いがお金を産み出してくれるんで仕方なしです。 から、この色合いが要求仕様なんだろ。 これに文句を言っても仕方がないよ
301 名前:デフォルトの名無しさん [2009/02/17(火) 23:16:32 ] まあ単に個人で作るソフトならそうだわな。 オプションで色盲者のための色使いに切り替えられるようにしておくと優しさを感じるが。
302 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:19:09 ] >>299 色盲って黄色人種男性の5%、白人男性の8%、黒人男性の4%もいるんだぜ。 日本人男女40人のクラスの1人くらいは色盲ってくらい結構な割合だ。 黒板に赤いチョークで書かれると見辛いって言ってた人はいなかった? 多分その人は色弱か色盲だよ。
303 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:19:41 ] StreamReader使った後に元のStreamを閉じたくないときは StreamReaderはDisposeせずに放置していいの?
304 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:21:48 ] うんそう
305 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:25:49 ] >>302 で、色盲専用に作り直せっていいたいわけ?
306 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:26:02 ] そういうとき、Disposeしないことが心配なので、Flushすることにしている。
307 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:26:41 ] >>305 なんで専用なんだ?
308 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:26:46 ] StreamReaderそのものはDisposeしちゃってもいいんじゃないの
309 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:28:15 ] >>307 言い方が悪かったな 訂正する 色盲がわかりやすい色を表示できるように作り直せっていいたいわけ?
310 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:30:08 ] 色盲ネタはいい加減スレ違いだろ・・・
311 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:30:26 ] >>309 その方が望ましい。 わざわざユーザの幅を狭める利点は無い。
312 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:31:37 ] >>308 StreamReaderをDisposeしたら元のストリームも一緒に閉じられる
313 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:36:23 ] >>311 望ましいが、現実には難しいだろうな。 むしろ、OSのユーザ補助機能のレベルで実装すべき
314 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:37:02 ] >>302 けっこうみんな「みづらい」とは言ってたけどなあw いつも後ろの席だったからかも知れないけど
315 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:39:15 ] >>311 お前が作ったいままでのソフトは、全部色盲対応なの?
316 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:41:13 ] 自由に色設定できれば問題ないでしょ。 でも自分専用なら無理にやる必要もないと思うが。
317 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:42:35 ] なにも色設定しないのが一番
318 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:44:14 ] 見にくいと見えにくいは違うからなぁ 色が見えていて派手で目が疲れるということと、 色そのものが見えなくて困るということは別個
319 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:45:13 ] いっその事文字も背景も黒でよくね?
320 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:47:01 ] ソフト自体によって色盲対応の個別の色を設定できるのも問題なんだろうな だからOSの機能として、既存の色を問題がなく表示する機能を設定すべきなんだよ ソフトによって赤を青に表示したり、緑に表示したりしちゃったら、利用者に影響が出るだろ?
321 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:49:26 ] おまいらの理想はよくわかった だが全部スレ違いだ
322 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:55:20 ] 理想ぐらいかたらせてやれよ
323 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:16:57 ] >>302 >色盲って黄色人種男性の5% >日本人男女40人のクラスの1人くらいは色盲 ってことは女性に色盲はいないの?
324 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:19:19 ] >>323 男性に比べて非常に稀なだけでいることはいる
325 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:30:31 ] >>323 色盲と色弱がいるからな 完全な色盲だともっと低い そんなの考えなくていいレベル もちろんあれば便利だが
326 名前:200 mailto:sage [2009/02/18(水) 00:38:43 ] >>289 素人用のツールはそうかもね >>290 ありがとう、マジ助かりました
327 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:44:11 ] ttp://www.microsoft.com/downloads/details.aspx?FamilyID=6671f8da-b0cb-41de-ad93-798fc71d344d&DisplayLang=ja このリンクのMSDN Library for Visual Studio 2005がダウンロードできなくなってるんだけど、 どこに引っ越したか知ってる人いる? Windwos2000の再インストール後に見つからなくて困ってるのでよろしくお願いします
328 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:48:38 ] お前ら何で大騒ぎしてんの? >>323 色覚異常はX染色体で遺伝する。 だからX染色体を1つしか持たない男性(XY)に多く、2つ持ってる女性(XX)に少ない。 500人に1人ぐらいの割合
329 名前:323 mailto:sage [2009/02/18(水) 01:01:01 ] >>324-325 、>>328 そうなんだ。知らなかった。 ┏┳┳┓ ハイ ┏┳┳┓ ┏┫┃┃┃ スレ違いは ┃┃┃┣┓ ┃┃┃┃┣┓ ここまで ┏┫┃┃┃┃ ┃ ┃┃┏━━━┓┃┃ ┃ ┃スレ違い ┣┫*・∀・*┣┫. STOP!┃ ┗━━━━┛┗┳━┳┛┗━━━━┛ ┏┻┓┃ ┏━┛ ┣┻┓ ┗━━━┫ ┗━┓ ┗━━━┛
330 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:03:58 ] 素人用のツール(笑)
331 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:04:22 ] >>327 Visual Studio 2005 は既に販売が終了している製品なので それに連動して公開停止になったのかも 今は以下が最新版 MSDN Library for Visual Studio 2008 SP1 (2008年12月更新版) あと、MSDN Subscription に加入すれば過去のバージョンは 一通り入手できるハズ
332 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:05:39 ] >>328 劣性遺伝なの?
333 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:07:04 ] 伴性劣性遺伝ってやつだな
334 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:08:26 ] なんで色盲・色弱にそんなにこだわるんだ? 普通に考えて、カスタマイズの余地皆無だったら 誰にとっても使いにくくなる可能性はあるだろ。 ユーザ=制作者のみってのでも無い限り
335 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:17:24 ] >普通に考えて、カスタマイズの余地皆無だったら >誰にとっても使いにくくなる可能性はあるだろ。 んなこといったら、あらゆるすべての設定値を備えなければならないじゃん。 毎晩24時にbeep音を鳴らして寝ることを促す設定がないと、 それを必要とする人には使いにくいってーことになる。 そもそも万人向けにオプションの設定項目を多くするということは、 設定項目が多すぎて煩雑になるという点において万人向けでなくなる。
336 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:22:11 ] >>335 どうせ分かってて言ってんだろ? アホか
337 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:38:18 ] 韓国語表示がないのはウリナラへの差別ニダ!
338 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 02:05:00 ] 設定なんて無くても 赤と緑じゃなく赤紫と緑にするだけで解決する問題なのに なんでそんなに抵抗あるのかね?
339 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 02:05:54 ] サイケデリックはプロ用ツールの証ですw
340 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 02:35:21 ] >>338 それをする必要があるのかっていう問題じゃないの?
341 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 02:43:41 ] もともとの指摘も、色盲の人にとって、ではなくセンスがない色遣いだという点が主だったはず。 おそらく、赤紫と緑にしても、センスのなさそうなデザインであることは変わらないだろうから、 変えるのは無意味だと思う。
342 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 02:57:51 ] お前らが超ハイセンスなのは分かったからそろそろ黙って下さいませんかねこのやろう
343 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 03:00:36 ] センスとか以前に株とかで儲けやすいようなプログラムを作ってる奴に嫉妬してるだけじゃねえの うひょひょ
344 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 03:06:45 ] おおかた343で図星ってところだろう
345 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 04:33:34 ] >>627 このあたりかな support.microsoft.com/kb/814675/en-us ファイル以外のストリームには言及がないのでなんともいえないけど 少なくともファイルは特別に意識していて、ファイルから生成した ストリームについてはそれを破棄するとイメージにアクセスできなくなるのが 仕様みたい
346 名前:345 mailto:sage [2009/02/18(水) 04:34:50 ] すみません >>345 は誤爆です
347 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 07:12:31 ] >>340 お前が思っているより色盲の人は遥かに多いから必要だ。
348 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 07:18:48 ] あほみたいに、いつまで青い議論を続けてるんだ。 単なる証券屋店頭の電光掲示板へのオマージュだろあれは。 俺的には文字の真ん中に切れ目のあるパネルがパタパタ音を立てて 回転するタイプのコントロールが欲しいな。
349 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 07:26:44 ] WPFのViewport3Dとストーリーボードアニメーションの出番だな。さあリッチインタフェースを 追求するんだ。
350 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 07:39:43 ] 注文すると、発注内容書いた手紙が取引所まで3Dで飛んでいって届いたら実際に発注されるってどうよ。
351 名前:デフォルトの名無しさん [2009/02/18(水) 10:58:31 ] >>348 俺も欲しい・・・
352 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 13:30:06 ] >>350 間違えて疑似嫁のデータを送ってしまうわけですね、わかります。
353 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 13:33:01 ] デシリアライズされるときコンストラク呼び出されないけれど同じようにユーザーコードからコンストラク呼び出しなしで生成すること可能?
354 名前:デフォルトの名無しさん [2009/02/18(水) 13:35:43 ] >>353 エスパーしてみるけど デシリアライズされた時点でオブジェクトのインスタンスは生成されてるんじゃないのか?
355 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 15:29:45 ] すまん、説明が悪かった。インスタンスは生成されるんだがコンストラクタは呼び出されないてない。 同じようにコンストラクタ通さずインスタンスだけ生成したいんです。
356 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 15:36:28 ] シリアライズされたオブジェクトファイルを自分で記述してデシリアライズすればいいんじゃね?
357 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 15:40:43 ] コンストラクタのオーバーロードでも作ってみるとか? こんなん逃げじゃアカンかな・・・?(;´∀`) public AAA() { 初期化(); } public AAA(bool isIniti) { if(isIniti == true) { 初期化(); } } private void 初期化() {ほげ} というか、コンストラクタに何も書かずに コンストラクタみたいな感じの処理が 必要な時にSetInitializeみたいな関数作って呼ぶようにしたらダメなんだろうか…
358 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 15:41:46 ] いや、すでに独自のシリアライズのような仕組みがを実装していて、コンストラクタを呼ばないですむならそうしたいなと。
359 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 16:12:59 ] コピーコンストラクタの一種と思えば
360 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 17:05:59 ] >>347 なんで個人用ソフトでそんな対策する必要あるの?
361 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:38:57 ] あちらの素人馴れ合いスレで聞いても誰も答えてくれなかったのでこちらで質問させていただきます。 Microsoft.Samles名前空間以下のモジュールって自作アプリに組み込んで配布してもライセンス違反にならないでしょうか?
362 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:46:54 ] >>348 たまに裏返ったら擬似嫁が出てきて、 あわてるアニメーション後、また裏返って正しい表示に変わるやつが欲しいぜ!
363 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 19:09:26 ] >>362 自分で作れ
364 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 19:47:00 ] >>361 なりま
365 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 20:35:06 ] >>364 ありがとう。知らんなら黙っててください。
366 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 20:37:36 ] >>361 あー大丈夫だいじょーぶホント―にだいじょーぶw
367 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 20:43:44 ] >>361 こんなところに聞きにくるくらいなら自分で調べろ
368 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 20:54:53 ] >>365 黙りま
369 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 21:33:36 ] ここも素人ばかりですね 無駄口きいてないで少しは勉強したらどうですか?
370 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 21:37:21 ] 匿名性の弊害
371 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 21:42:49 ] そもそもそんな大事なことをここで聞くな。 嘘だったらどうするんだ。 本家本元マイクロソフトさんに聞けばいいだろうに。
372 名前:マイクロソフト mailto:sage [2009/02/18(水) 21:48:31 ] 漏れも(゚听)ワカンネ
373 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 21:51:34 ] Microsoft.Samples 名前空間すべてを対象にした EULA、なんてものはない。 ということで、各サンプルの EULA に従う必要がある。
374 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:36:34 ] ぶつからないようにわざわざ名前付けてるのに 同じ名前付けてどうすんだよ
375 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:41:30 ] >>367 それ言い出したらム板の存在価値が・・
376 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:47:59 ] まぁでも、ライセンス関係は配布元に直接聞くほうが確実だしな。
377 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:54:43 ] 訴えられた後だと遅いしね
378 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:11:45 ] すいません、ジェネリックに関しての質問です。 public struct V2<T>{ public T x; public T y; public V2( T x_, T y_ ){ x = x_; y = y_; } public void Add( V2<T> v_){ x += v_.x; y += v_.y; } } このような構造体を作りたいのですが、Addメソッド内の x、yそれぞれ加算しているところでコンパイルエラーとなってしまいます。 エラーの文言としては下記のものが出力されました。 「演算子 '+=' を 'T' と 'T' 型のオペランドに適用することはできません。」 これはTにどのようなものが指定されるか不明なので、 +=演算子が必ずしも使えない、よってこれをエラーとする。 このような理由でエラーが出ているのでしょうか? また、宜しければ解決方法がございましたらお教えいただけたらうれしいです。
379 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:13:58 ] 現スレの過去レスくらいは読め >>145-177 あたり参照
380 名前:378 mailto:sage [2009/02/19(木) 00:19:42 ] すいませんでした、早速読んできます。
381 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:27:14 ] その辺F#は華麗に実現できるのでまじお勧め
382 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:34:10 ] F#知らないんだけどどうやって実現してるの? 結局のところ,CLRで動かす以上は ・DynamicMethodを使ったコード動的生成やリフレクションなどによって動的に ・C++みたいにテキスト的に の二つしか方法はないはずだけどどちらも華麗とは思えない
383 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:42:26 ] 動的言語向けにCLRを拡張するんだよ。
384 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:47:14 ] DLRのことを言ってるなら,あれはCLRを拡張してるんじゃなくて CLRの既存の機能を使用した単なるクラスライブラリにすぎないよ >>382 の上の方法に帰着する
385 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 08:05:50 ] 今、F# をちょっと試してみたけど、型推論してるだけだな。 コマンドラインの方は触ってないけど、Visual F# で試したら、 全然動的なことしてなかった。
386 名前:デフォルトの名無しさん [2009/02/19(木) 08:08:14 ] F#はちゃんとTに足し算させられるの?
387 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 08:15:32 ] 手元にある F# の本の、ContentsとIndexをざっと眺めてみたけど、 ジェネリックス自体どこにもない。 >>381 に詳細聞きたい。
388 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 10:51:25 ] 基本的にはOCamlだから文法上の静的型付けで解決するのでって話だと思ってたけど それともF#はILのジェネリクスを使うように拡張されてる? だとしたら同じくエラーになる気がする
389 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 14:23:06 ] System.Windows.Controls.TextBoxを160個並べて0.2秒に一回、Textに文字列を入れてるんですが ときどきアプリ全体が劇重になってしまいます Textに文字列を入れる部分だけコメントアウトすると重くなりません これを回避する方法はあるでしょうか? TextBoxを使ってると諦めるしかないのでしょうか?
390 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 14:32:53 ] 非同期でぐぐれ
391 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 14:36:50 ] 非同期処理してます
392 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 14:46:11 ] GCの影響?
393 名前:デフォルトの名無しさん [2009/02/19(木) 16:00:15 ] InvokeではなくBeginInvoke使ってみるといいんじゃね?
394 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 16:29:43 ] TextBoxは重量級のコントロールだから160も並べたらそういうこともあるだろうな。 Labelじゃだめなん?
395 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 16:59:09 ] 上のほうでも出てるけど、文字の出力だけでいいなら LabelかGDIでいんじゃない?
396 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:28:35 ] Labelに変えたらスムースに動作するようになりました ありがとうございました でも右寄せ表示する方法が分からない 困った
397 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:41:09 ] AutoSizeをfalseにしてTextAlignでいけない?
398 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:47:12 ] 右寄せの方法みつかった Style style = new Style(typeof(ListBoxItem)); style.Setters.Add(new Setter(ListBoxItem.HorizontalContentAlignmentProperty, HorizontalAlignment.Stretch)); ほんとWPFわけわからん みなさん、ありがとうございました〜
399 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:56:58 ] WPFかよ プロパティでデザイン時にも指定できるからそこからわかるべ。
400 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 18:13:17 ] そもそもItemsControlとか使ってバインディング コードからコントロール生成しない データソースを変更すれば勝手に表示が変わる ってのがWPFの方向性
401 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 19:58:01 ] ADOとベタベタ
402 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:30:16 ] WPFで文字表示するだけならLabelよりもTextBlockのほうが軽いよ
403 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 23:06:40 ] ありがとうございます さっそく修正しました
404 名前:デフォルトの名無しさん [2009/02/20(金) 08:59:24 ] 結構みんなWPF使ってるものなの?
405 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 09:10:51 ] 使われてないよ
406 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 09:39:04 ] デフォルトのスタックサイズを変更するにはどうすればいいですか?
407 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 09:58:52 ] 変更しなくていいよ
408 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 12:08:48 ] わろたww
409 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 12:15:21 ] わらわなくていいよ
410 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 12:25:07 ] 吹いたw
411 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 13:06:39 ] 汚いから拭いとけよ
412 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 13:08:07 ] いっぱい釣れたぜ ショボン
413 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 16:35:13 ] キャッチしたらリリースしとけよ
414 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 20:20:11 ] 海外の掲示板で質問したらすぐに答えがもらえました ここの馬鹿な人たちとは大違いですね^^; もう2度と来ません ノシ
415 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 20:21:40 ] おまえだれ?
416 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 20:45:20 ] おれおれ
417 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 20:46:23 ] >>406 とりあえず、リンカで。
418 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 21:57:44 ] シェイラのそっくりさん?
419 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 22:09:09 ] >>417 根中 千恵子?
420 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 22:54:17 ] 海外の掲示板に質問書き込むスキルはあるのにググるスキルはなかったのか・・・
421 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 00:52:53 ] この国の人ではないのかもしれん罠
422 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 01:30:42 ] つまり海外って日本のことか
423 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 01:32:33 ] 2chを一つの国と考えてるかも試練
424 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 18:22:55 ] C#で省略可能引数の既定値を指定する方法はありますか? [opt]属性はOptionalAttributeを付けることで付けられるようですが
425 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 18:27:51 ] 引数のないメソッドでオーバーロードすればいいんでないの?
426 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 18:29:44 ] >>424 (1) 素直にオーバーロードを使う (2) 引数をNullableにする
427 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 18:35:19 ] C#4.0をじっと待つ
428 名前:424 mailto:sage [2009/02/21(土) 18:43:53 ] 省略可能引数をC#で使いたいわけではなくて, VBで省略可能引数にしたときの既定値のメタデータを付けたいだけなんです リフレクションで既定値の取得もできるみたいですがやっぱり設定するのは無理なんですかね
429 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 18:53:19 ] いや言ってる意味が。。
430 名前:423 mailto:sage [2009/02/21(土) 18:58:41 ] ごめんなさい VBで省略可能引数の既定値を設定した場合, 既定値の情報はメタデータとしてメソッドに付加されます。 それと同じ形式のメタデータをC#で付けたいということです。 具体的にはこういうILです .param [1] = "既定値"
431 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 19:08:08 ] リフレクタで言語をC#にして見てみたらどんな属性を付与しているのか分かるのでは?
432 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 19:12:59 ] msdn.microsoft.com/ja-jp/library/system.runtime.interopservices.defaultparametervalueattribute.aspx これとか違うの?
433 名前:424 mailto:sage [2009/02/21(土) 19:18:01 ] >>432 [Optional, DefaultParameterValue("既定値")]でうまくいきました ありがとうございます
434 名前:432 mailto:sage [2009/02/21(土) 19:19:19 ] stackoverflow.com/questions/104068/how-do-vb-net-optional-parameters-work-under-the-hood-are-they-cls-compliant 正解っぽい。
435 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 19:21:30 ] あ、解決済みか。 これやってもC#で省略可能引数が使えるわけじゃないみたいね。 でも、アセンブリをVBから呼び出す時には省略可能になる引数を持つメソッドを C#で定義できるのは興味深い。
436 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 23:35:48 ] 逆の例もあるよ。 outはVBにないけど、Out属性付きのByRef引数はC#からout引数として扱われるというもの。
437 名前:435 mailto:sage [2009/02/21(土) 23:40:52 ] あーなるほど、ByRefだけだとref引数扱いになるのか。
438 名前:デフォルトの名無しさん [2009/02/22(日) 01:49:55 ] 4.0の動的型付け変数と、3.0の暗黙的型付けって、どういうときべんりなの? 大幅に労力が削減されるような利用法が思い浮かばないんだけど。
439 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:02:04 ] >>438 リフレクションやComInterop、やDLR対応の動的言語と相互運用する場合かな。 いろいろdymamicに期待してる人が要るけど、 dynamic型同士で + - * / などの演算はサポートされていないから、 プリミティブ型をdynamicにするのはナンセンス。
440 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:12:30 ] >>439 多言語との相互運用という趣旨ならわかるけど、 静的言語として、こういうのを許容しちゃうのって、どうなんだろう コンパイル時にはエラーにならなくて、実行時にしかエラーにならないんでしょ? 暗黙型付けも、自分で型をしっかり宣言して、それで使うということで、 ユーザの思い込みの余地を減らすことが大事ということで 静的言語のメリットがあると思ってたんだけど、 なんか曖昧的なものを受け入れるような気がしていやな感じがする。
441 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:18:27 ] いやなのは使わなきゃいいだけ。
442 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:23:28 ] 使わなきゃいいって言われても、 自分だけで成り立つ世界じゃないからなぁ 嫌でも他人のソースを見ることになるわけで
443 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:32:26 ] ヘジの言葉送ってやるよ。 「静的な型として動的な型を導入するんだ」 機能的には相互運用、さらに相互運用。プレゼンも基本それしか 出てこない。動的型前提な言語との相互運用、ライブラリを使う ときに死ぬるんだよ現状。 しかも JavaScript だの IronPython だの DLR だの利用ケースが 増えていってやがる。 そういや雑談な話になるんだが、コンポーネントモデル周りは ほとんど動的な要素で構成されてるよな。 なんでいまさら動的だからどうこうとかなるんだろうな
444 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:34:54 ] 今までだって動的なことできたわけでそれが楽になるだけ C#はそんなに強い静的型付け言語じゃない
445 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:49:43 ] そもそも相互運用するのが間違ってないか? 他方の言語は相互運用のために拡張して、他方の制限はない? C#のいいところが失われているような気がするよ。
446 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:58:36 ] 糊言語に何をいまさら。 あとせっかく DLR で「汎用的な」動的型システムつくってくれる んだから乗らん手はないし
447 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:02:18 ] .NET使っておきながら動的はよくないやら相互運用が間違ってるやら
448 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:08:32 ] それ結果論でしょ 動的言語をnetで使うためのものがDLRなんだから
449 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:17:38 ] C#やjavaが複雑になって、新しい言語のダージリンdarjeelingができるわけですね んで、それに対抗してC♭が開発されるわけです それらの言語は多言語(特にC#)との相互運用性のために、 動的型型付けが導入されていきました。 そしてその間、ロシアはc++を使い続けました。
450 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:27:31 ] var i = Class; とかユーザ定義変換とかどうなるんだろ あと、var j 、Class.Method(out j);とかあったらjは何型?
451 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:38:28 ] >>450 コンパイルエラー
452 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:40:34 ] >>449 個人的にヘジの言語設計者としてのすごいところは ゴチャゴチャ要素を詰め込みまくって許容範囲内に 纏め上げる才能だと思う。 >>450 型システムとしては大きく変わらん。だからそれらはどれも 今までと同じように通らない。 簡単に言うと新しい dynamic 型という「静的型」が導入される 感じ。こいつはディスパッチ周りが特殊に扱われる。
453 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:48:47 ] んで、後世に残るのは彼の手を離れたObjectPascalなんだろうな
454 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:53:19 ] Option Explicit OFF Strict OFF/Infer OFFモードのVBも dynamic対応してくれるのだろうか。 今は毎回律儀にリフレクション使ってるから遅くて遅くて。
455 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:57:59 ] vbならどうだっていいでしょ なにやったって
456 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:05:00 ] >>452 ごちゃごちゃ要素を詰めまくって、 複雑になった分の学習に必要な非生産性と、 複雑になった分の楽できるコーディングや設計による生産性の向上を比較したら、 どっちがどうなんだろう 学習はともかく、通常と比較したら生産性はどんだけあがんだろ
457 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:34:42 ] 心配は分かるがvarにしろdynamicにしろ絶妙にコントロールされてて、 想定以外の使い方をされないような工夫はしっかり施されている。 もしdynamicで四則演算の演算子が使えたり、 varがメンバやプロパティで使えたらそういう心配するような状態になるだろう。
458 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:41:15 ] 演算子のオーバーロードで崩壊してるじゃん 足し算なのに引き算とか可能だし (;゚д゚)ァ....
459 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:44:40 ] gotoと同じく演算子のオーバーロードの乱用などは文法的に抑制しなくても、 常識的なプログラマーなら分かってるよね?といった風に信用してくれてる部分もある。 実際乱用されてるかい? そういった部分も含めて絶妙と評価している。
460 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:46:51 ] gotoはifだったりでけっこうできるけど 演算子は無いと面倒くさいJavaやってたからかな〜
461 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:53:45 ] 信用、常識をプログラマーの運用に求めるなら、そもそも静的型付けである必要がないだろ なにいってんだ?
462 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:59:06 ] 何が常識かは人によって違うからな そのための強制約と考えるのは普通たよな
463 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 05:06:19 ] だからさじ加減が絶妙といってるのさ
464 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 05:09:16 ] >>459 つかまぁ、3.0 の丁寧な仕事といい社内で使いまくって叩いた上 出てくるんだろうなって感じがするよな
465 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 05:33:38 ] そしてmultiple宣言をしたclassには多重継承が許可されます c++との相互運用のために その中では、ポインタの使用も可能です c++との相互運用のために 代入演算子のオーバーロードも可能にし、 いまではc++と同じ実装になっていますが、問題は発生していません なぜならみんなが常識的なプログラマなので乱用されてはいないからです。 めでたしめでたし
466 名前:デフォルトの名無しさん [2009/02/22(日) 05:37:12 ] 名文なので、さらしあげ
467 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 05:45:48 ] 代入演算子はキャストで良いだろ
468 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:11:03 ] >>457 dynamicはインデクサも演算子もinvoke式もなんでもアリだよ
469 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:26:43 ] ソースきぼう
470 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:29:54 ] code.msdn.microsoft.com/csharpfuture ここでダウンロードできるNew Features in C# 4.0
471 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:33:57 ] とりあえずC#にほしいもの。 ・多重継承orMixin ・friend ・C++ばりの変態テンプレート ・Lispばりのマクロ
472 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:35:02 ] ありがとん、読んでみる
473 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:38:14 ] dynamic<IHoge> hoge = IHogeを実装してないけどHogeという名前のメソッドを実装してる型のオブジェクト; hoge.Hoge(); どうせならこんな感じでダックタイピングできるようにしちゃえばよかったのに
474 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:52:17 ] >>468 これのことですな。 >dynamic d = GetDynamicObject(…); >int i = d + 3; // calling operators 出来ないといったのは正確ではなかったので訂正する。 OKのパターン dynamic d = "abc"; string i = d + "xxx"; // "xxx"のstringが+オペレータを持っている。 NGのパターン dynamic d = 10; int i = d + 3; // integerはプリミティブなので+オペレータを持ってない dynamic d = "abc"; dynamic d2 = "XYZ"; string i = d + d2; // dynamic同士の演算
475 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:59:20 ] >dynamic d = 10; int i = d + 3; これがなんでNGなのかわからない >>470 のドキュメントによると,コンパイルは通るはずだよね 実行時にエラーになるってこと? 試せないけど,今のExpression Treeの仕様から類推すると大丈夫そうな気がするんだが あとStringの+は演算子オーバーロードじゃなくて言語組み込みだよ
476 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 12:00:56 ] >>474 ちと保留、これだと下の説明が付かないですね。 >dynamic d = GetDynamicObject(…); >int i = d + 3; // calling operators DynamicObjectが+オペレータをサポートしていれば大丈夫なのか。 それともCTPではまだ未実装の機能なのか。 うむむ・・
477 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 12:03:32 ] スレチ
478 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 13:54:58 ] なんか、「善意の人間がミスを犯しにくいようなしくみを工夫すること」と、 「悪意の人間の犯罪行為を防止すること」の区別がつかない人が2人ぐらいいるなw
479 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 14:01:52 ] この辺は難しいよね。 馬鹿基準に合わせると天才の要求仕様に満たなくなる。自分としては自由度を高めて使う側のスキルアップを要求する方がいい時も多々あるけれど
480 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 16:24:50 ] そこで複雑になったC#に変わり、Darjeelingの登場ですよ Sun様おながいします
481 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 16:38:39 ] javaはjava teaではなくてjava coffeeが由来とされてるから、名前を付けるならTorajaがいいと思う。
482 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 16:44:42 ] javaの場合はscalaがはっちゃけてるからそっち行く可能性はあるかも。 .NETはC#自身がはっちゃけてるからな。他の言語はニッチ狙いなのがおおいな。booとかF#とか。
483 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 19:26:02 ] >>475-476 その話、英語のフィードバックサイトで出てたけど、 現CTP版では “まだ” できないって話だったと思う。
484 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 01:41:29 ] >>482 まぁScalaは使ってみると「うーん」という感じが否めないけどな。 JavaやC#に比べると、細かい部分で文法に無理が出まくってる。 やっぱりなんだかんだ言っても言語設計者のセンスって大事だなと思う。 スレチすまん
485 名前:デフォルトの名無しさん [2009/02/23(月) 16:22:55 ] ウイルスバスターみたいに1PC1ライセンスみたいな感じの 個別認証をやりたいんですけど、どんなふうに実装するのが いいんでしょ…?
486 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 16:52:17 ] ネット使ってサーバにアクティベーションするしかないんじゃないの?
487 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 16:54:34 ] >>485 「みたい」の指すところが全然分からん。 まずは要件定義とは何かを知ることから始めよう。
488 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:05:45 ] MACアドレスに対して認証キーを発行とかすればいいんじゃない。
489 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:36:40 ] 簡単なファイラーを作っていて Windows Vistaなどの検索ボックスのように、 スペースで区切ったキーワードにヒットするファイルの一覧を取得したいのですが、 何かスマート(簡単な)方法はないでしょうか? 今のところ、ファイル名に対して、 スペースで区切られたキーワードの数だけstring.containsを行うくらいしか思いつかないんですが、 この方法だと大量のファイルがあった場合に処理が遅くなってしまうと思うので。 # どんな方法でもファイル数が多ければ多いほど時間は掛かると思いますが、もう少し高速に行える方法があればと考えています。
490 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:49:07 ] >>489 正規表現をコンパイルしたら速いんじゃないか?知らんけどな Regex.Match(input, "AAA|BBB|CCC", RegexOptions.IgnoreCase | RegexOptions.Compiled);
491 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:52:32 ] 入力内容は毎回変わるのにその正規表現をコンパイルしたら 検索のたびにメモリを食って解放されなくなるぞ
492 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:01:52 ] ファイル数なんてどんなに多めに見積もっても百万のオーダーとかじゃないのかな? だとしたらベタにやっても抽出する処理そのものには1秒掛からないんじゃないか。 むしろボトルネックは言うまでもないんだろうけどディスクアクセスって気がする。
493 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:11:15 ] index seviceを使う。
494 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:23:49 ] >>490-493 皆様ありがとうございます。 >>492 なるほど。 一度試してみてパフォーマンスをみることにします。 >>493 そんな方法があったとは思いつきませんでした。 軽くググってみると 209.85.175.132/search?q=cache:94DRo_UXXIEJ:repse.blogspot.com/2008/02/c_20.html+C%23+index+service&hl=ja&ct=clnk&cd=14&gl=jp&client=firefox-a 確かに…、少し調べてみようと思います。
495 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:37:43 ] インデックスサービスってWindowsにある程度詳しいユーザはたいがい止めてるよ
496 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:51:30 ] api公開されてアプリケーションから使えるあまり素性が怪しくない無料のエンジンって言うと選択肢それぐらいしかないんじゃない?
497 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 07:31:14 ] ジェネリックコレクションの保存ってどうしたらいいんですか? public class MyList<T> : List<T> { public void Load(string fileName) { using (Stream stream = new FileStream(fileName, FileMode.Create)) { using (BinaryWriter writer = new BinaryWriter(stream)) { foreach (T item in this) { writer.Write(item);//コンパイルエラー } } } } }
498 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 07:34:50 ] シリアライザ
499 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 07:34:52 ] >>497 の補足 使いたいTはintやlongやdoubleなどの値型だけです。
500 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 07:40:15 ] typeidでわけるしかない。
501 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 07:56:44 ] おかげで道がひらけました ありがとうございます
502 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 08:14:30 ] >>497 無理やりだけど、 var write = typeof(BinaryWriter).GetMethod("Write", new[] { typeof(T) }); write.Invoke(writer, new object[] { value });
503 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 08:24:47 ] LoadでWrite
504 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 11:45:19 ] XmlSerializer使えよ public void Save<T>(List<T> list) { byte[] bytes; using (MemoryStream ms = new MemoryStream(0x10000)) { new XmlSerializer(typeof(List<T).Serialize(ms, list); bytes = ms.ToArray(); } using (Stream stream = new FileStream(fileName, FileMode.Create)) using (BinaryWriter writer = new BinaryWriter(stream)) { writer.Write(bytes); } }
505 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 17:24:53 ] >>497 Loadで保存w
506 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 18:45:49 ] >>502 が簡単でよさそうだがBinaryReaderでもやろうとすると面倒だな なんでreadとwriteでこんなにも非対称なコードになるんだ
507 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 18:49:31 ] objectで返したらボックス化が発生するからな 標準のライブラリでRead<T>//(注)プリミティブ型のみ なんて素人臭いことするわけにもいかないし
508 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 18:56:57 ] プリミティブ型じゃなくても、そんな大げさにならずに簡単にできるの?
509 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 19:11:28 ] 参照型のフィールドを含まない構造体限定なら Marshal.StructureToPtrみたいな外道な方法を用いれば簡単にできる
510 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 19:13:19 ] ふんじゃあ、素人臭くてもいいじゃんw
511 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:21:41 ] 他のアプリケーションのアイコン上に、あるテキストファイルをドラッグする処理(と同じ事)を 自作アプリケーション内で行いたいのですが、どのような方法があるのでしょうか・・・? ドラッグ対象となるアプリケーションはコンソールアプリケーションです。 てぃんこでかい人よろしくおねがいします。
512 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:23:31 ] Main() の String[] args から取れなかったっけ?
513 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:28:21 ] その「他のアプリケーション」をプログラムから起動したいってことなら System.DiagnosticsのProcess エクスプローラで実行ファイルに何かのファイルをドロップするのは その何かのファイルを引数に実行ファイルを起動するのと同じ
514 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:32:53 ] >>513 とても有益なヒントありがとうございました。 ちんこもでかくてありがとうございました。 試行錯誤してみます。
515 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:42:24 ] ちんこ小さいから回答できなかった
516 名前:511 mailto:sage [2009/02/24(火) 21:49:03 ] うーーん。以下のようにしても ファイルを指定せずに実行ファイルを起動したような動作になっちゃう・・・ proc.StartInfo.Arguments ="あるテキストファイルのパス"; proc.StartInfo.FileName ="受け取り側の実行ファイルのパス"; proc.Start();
517 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:51:11 ] ちんこついてないから答えられない
518 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:51:29 ] >>516 「あるテキストファイルのパス」に空白が含まれるなら、""で囲まないとダメ。 具体的には、 proc.StartInfo.Arguments = "\"あるテキストファイルのパス\"";
519 名前:511 mailto:sage [2009/02/24(火) 21:54:34 ] こんな感じでしょうか? ""ではかこんでいます。 proc.StartInfo.Arguments = @"C:\sample.xml"; proc.StartInfo.FileName = @"C:\Document and setting\APPLE.exe"; proc.Start();
520 名前:511 mailto:sage [2009/02/24(火) 22:05:58 ] >>518 あああいけました いけました。ありがとうございました。 ちんこにもよろしくお伝えください。
521 名前:sage [2009/02/24(火) 23:19:27 ] RichTextBoxのスクロールバーをつまみで移動させると ピクセル単位で動くのですが、TextBoxのように行単位で動かせるような方法ないですか? wawatete.ddo.jp/exec/program/cs/rtb_scrbarrtb にあるような別途スクロールバーを作りたくなくて RichTextBox備え付けのスクロールバーで実現したいのですが。。。 RichTextBoxのWndProcでつまみスクロールのイベントが来たら SendMessage(rich1.Handle, EM_SCROLL, SB_LINEDOWN, 0) で独自で1行スクロールとか試みたんですが、微妙にずれてしまって。。。 ちなみに上記URLと同じ目的ですが、RichTextBoxの左に 行番号を作りたいのですが、テキストが中途半端な表示されると 困るために、行単位でスクロールさせたい次第です。 教えてエライ人!
522 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:37:28 ] >>521 ボクはGDI+を使って書いた
523 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:38:33 ] さすがに行番行表示までやるならはじめから自前で作るべきだな
524 名前:521 mailto:sage [2009/02/24(火) 23:48:13 ] >>522 kwsk・・・、じゃなくておさわりだけでもいいんで どんな流れか教えてください。 因みに自分は、クライアント領域が表示されてる分だけ左側に Labelを配置して、スクロールされたら配置されてる全Labelに メッセージなげて、Label.Textを変えて行番号を表示する方式を 考えてました。
525 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:50:13 ] >>506 Reader 側はもっと無理やりだけど、↓でできる。 var read = typeof(BinaryReader).GetMethod("Read" + typeof(T).Name, new Type[0]); return (T)read.Invoke(reader, new object[0]);
526 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:53:45 ] ググれ若人
527 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 00:49:32 ] VS2008EEのC#でwebBrowser使ってpdfを表示したまま終了すると必ずエラー出すんだけど、これってどうにかできないの? AdobeReader8ならエラー出なくて9だと出るって事はしばらくしたら改善される? Delphi2006なら大丈夫だけどあっちはunicodeのテキスト読むのめんどいし、いい方法はないものかね?
528 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 01:10:55 ] >527 別のページを表示してから終了とか頑張ってみたけどどうしようもなくて 終了時だけなのでエラーを握り潰して無視したよ。
529 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 10:04:22 ] >>497 こんなのはどうかね public abstract class ReaderWriter<T> : IDisposable { protected FileStream stream; protected BinaryWriter writer; protected BinaryReader reader; public abstract void Write(T item); public abstract T Read(); public virtual void Seek(long offset, SeekOrigin origin) { this.stream.Seek(offset, origin); } public void Dispose() { if (this.reader != null) this.reader.Close(); if (this.writer != null) this.writer.Close(); if (this.stream != null) this.stream.Close(); } } public class IntReaderWriter : ReaderWriter<int> { public IntReaderWriter(string fileName) { this.stream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite); this.reader = new BinaryReader(this.stream); this.writer = new BinaryWriter(this.stream); } public override void Write(int item) { this.writer.Write(item); } public override int Read() { return this.reader.ReadInt32(); } }
530 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 10:05:22 ] >>529 の続き public class MyList<T> : List<T> { public void Save(ReaderWriter<T> writer) { if (writer == null) return; foreach (T item in this) writer.Write(item); } public void Load(ReaderWriter<T> reader, int count) { if (reader == null) return; for (int i = 0; i < count; i++) this.Add(reader.Read()); } } static void Main(string[] args) { MyList<int> list = new MyList<int>(); using (IntReaderWriter writer = new IntReaderWriter("test.bin")) list.Save(writer); using (IntReaderWriter reader = new IntReaderWriter("test.bin")) list.Load(reader, 100); } 終わり
531 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 12:51:34 ] 型ごとにReaderWriter<T>実装しないといけないなら全く意味ないなそれ 普通にSaveInt32とか型ごとに保存・読み込みメソッドを定義するのと変わらん
532 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 13:53:57 ] generic<typename TSrc, typename TDst> where TSrc : value class where TDst : value class void BlockCopy( array<TSrc>^ src, int srcOffset, array<TDst>^ dst, int dstOffset, int count) { using namespace System; pin_ptr<TSrc> pSrc = &src[0]; Byte* pSrcByte = reinterpret_cast<Byte*>(pSrc); pin_ptr<TDst> pDst = &dst[0]; Byte* pDstByte = reinterpret_cast<Byte*>(pDst); for (int i = 0; i < count; i++) pDstByte[srcOffset + i] = pSrcByte[dstOffset + i]; } こういうのをC++/CLIで用意しておけば解決w
533 名前:デフォルトの名無しさん [2009/02/25(水) 14:35:22 ] Application.DoEvents(); と等価の処理を別コードで書きたいんだけど なにかいい方法はないかなぁ… PeekMessageとかコレ系つかうとたまに応答なし になってしまう。 timerとかBackGroundworkerだとプログラムが みにくくなってしまうし悩んでます。
534 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:42:03 ] AというクラスにAクラスを返す 例えば public virtual A CreateA(){ return new A(); } があります。 このAを継承した BというクラスはこのCreateAをオーバーライドしてBを返すようにしたいのですが こういう事はできますか? CreateBを新たに作らないと駄目ですか?
535 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:46:45 ] >>533 timerやbackgroundworkerで見にくくなる理由も不明だが、 Application.DoEvents()ではだめな理由も謎だな。
536 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:48:25 ] >>534 class B : A {} だったら public override A CreateA(){ return new B(); } でいいじゃね。 戻り値の型をBにしたいなら、CreateBを作ることになるだろうけど。
537 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:52:55 ] そうですか…有り難うございます
538 名前:533 [2009/02/25(水) 14:58:27 ] >>535 d.hatena.ne.jp/yaneurao/20081125 DoEventsを使うとたまに応答なしになったりひどい挙動を起こすことが あるんですよ。 これを完全に回避したいんです。
539 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:00:24 ] class Base{ public virtual Base Create(); } class Base<T>:Base where T:Base<T>, new(){ public override Base Create(){ return (Base)(new T()); } public T Create(){return new T();} } こんな方法もあるかも。未テストかつ変態的なので動くか不明。 なお、使う時は class B:Base<B>{ ... } class C:Base<B>{ ... } みたいにする。
540 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:00:40 ] もう一つ良いですか? 同じクラスAに class A { public const int i = 100; public void D() { Console.Write(i); } } とこれを継承したクラスB,に public const int i=10; としてBからDを呼び出すとiは10として処理されますか? 100として処理されますか。
541 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:03:18 ] あ、間違った。 class Base{ public virtual Base CreateBase(); } class Base<T>:Base where T:Base<T>, new(){ public override Base CreateBase(){ return (Base)(new T()); } public T Create(){return new T();} } みたいにメソッド名は変えなきゃ駄目だ。 後、使い方の方も(まあ気が付くと思うけど) class B:Base<B>{ ... } class C:Base<C>{ ... } ね。
542 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:05:09 ] >>540 それくらいなら、やってみりゃいいじゃん。
543 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:09:50 ] >>538 等価のコードを書いたら結局Application.DoEventsと同じ作用をもたらすだろ 素直にイベント駆動の脳になれ
544 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:10:27 ] >>540 やってみました 継承元の100が入ってきますね どうにかして10にすることは出来ませんか? >>539 やってみます
545 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:11:18 ] virtualなプロパティにすればよろし
546 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:15:34 ] >>545 できました有り難うございます。
547 名前:539,541 mailto:sage [2009/02/25(水) 15:44:40 ] >>544 共通の基底クラスが必要なければ、 class Base<T> where T : Base<T>, new() { public static T Create() { return new T(); } } class A : Base<A> { } class B : Base<B> { } でも可だと思う。A:Base<foo>と書く時のfooはAのみに制約されて、それ以外を書くとコンパイル エラーではねられる。継承先のクラスのインスタンスをプロパティの設定などの処理とともに生成 するメソッドを持つクラスを作る(変態的だけど)わりと一般的なテクニック。
548 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:48:35 ] >>547 成る程 よく分かりました ついでにやっと何となくwhereが分かりました
549 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:49:24 ] >>548 class B:Base<B>{}があると、class A:Base<B>はコンパイルエラーにならないので注意してね。
550 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 22:09:43 ] >538 タイマーにしておけ。 見やすくなるように整理して書くだけだろ。
551 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 22:32:27 ] 処理内容にもよると思いますが、 void BigMethod() { ... if (〜) { ...//百行くらい } else { ...//百行くらい } ... } よりも、 void BigMethod() { ... if (〜) { Method1(...); } else { Method2(...); } ... } Method1(...);//百行くらい Method2(...);//百行くらい ... の方が大抵の場合で速くなるのはなぜでしょう?
552 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 22:38:57 ] >>551 気のせいじゃね?
553 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 22:40:53 ] ↓のようなリストを作成しており、条件としてKeyだけを 用いてそれと一致するbdListのindexを取得したいのですが foreachなどで一つ一つチェックするしかないのでしょうか。 BindingList<Data> bdList; public class Data { private string _Key; private string _Value; private int _Count; public string Key { set { this._Key = value; } get { return this._Key; } } public string Value { set { this._Value = value; } get { return this._Value; } } public int Count { set { this._Count = value; } get { return this._Count; } } }
554 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 22:47:54 ] >>553 リスト構造なら辿るしかないだろ そういう意味じゃないならlinqとか
555 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:08:17 ] >551 実行時に最適化されてるんだよ。 呼び出しの初回にメソッド全体がJITコンパイルされるか小さなメソッド単位でJITコンパイルされるかだよ。 細かなプロパティやメソッドの呼び出しなんか結構インライン展開されてるしある程度分割した方がいいと思うよ。 試しにBigMethod内で呼び出しているけど条件に合わなくて呼び出されない箇所で 参照してるアセンブリのメソッドを削除してdllを差し替えてそのまま実行すると 上はBigMethodメソッド呼び出しで実行される前のタイミングで落ちるけど、 下はMethod1かMethod2が不完全でも呼ばれなければ動いたりする。 >553 .Select((data, index) => new {Data=data, Index=index}).ToLookup(i => i.Data.Key).ToDictionary(i => i.Key, i.First().Index)["探したいキー"] とでもすればいいんじゃないかな。 素直にforで辿った方がいいよ。
556 名前:553 mailto:sage [2009/02/25(水) 23:13:06 ] >>554 有り難う御座いました。2005環境なのでLinqは使えません…。 .Containsや.IndexOfが内部的にforeachで回しているのであれば 諦めつくのですが、件数が増えてきたときに効率が悪いかと思いまして。 データ構造を見直した方がいいんですかね…。
557 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:13:35 ] LINQ使う場合、 bdList.OfType<Data>.Where(d=>条件).Select(d=>bdList.IndexOf(d)); が書き方的には自然だけど、IndexOfのコストが絶対に問題になる。 Enumerable.Range(0,bdList.Count).Where(i=>bdList[i].Key==ほにゃらら); とかすべき。
558 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:15:52 ] そりゃ普通のリストならO(n)掛かるのはどうにもならんだろ。
559 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:17:52 ] >>556 LINQ使えないのなら、 Enumerable.Range(0,bdList.Count).Where(i=>bdList[i].Key==ほにゃらら); と同等の処理をforで書けば良いと思う。.Containsや.IndexOfがO(N)で嫌だという 感覚は正解で、インデックスによる参照がO(1)だから、そっちを使うべき。
560 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:31:07 ] 内部にDictionary<string, Data>持っとくとか
561 名前:553 mailto:sage [2009/02/25(水) 23:42:04 ] 親切に有り難う御座いました。 Dictionaryでもう少し効率良く出来るのであればそれも 視野に入れて色々試してみます。
562 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:43:42 ] >>560 Dictionaryって、重複を許すモノホンのハッシュじゃないよね?
563 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:50:29 ] ごめん、>>562 はハッシュについて勘違いしていた。 それと、そもそも異なるValueに同じKeyが対応する事がないのなら、確かにDictionary一択だね。
564 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 02:16:03 ] >>555 1回のみしか呼ばれないならJITコンパイル時の時間分だけ短縮しているというのは理解できるのですが、 BigMethod自体が複数回呼ばれる場合でも下の方が速いというのがちょっとわからないのですが… 呼び出し回数は、で、BigMethod1回につきMethod1またはMethod2が1回なのですが、 複数回呼ばれる間にどちらも呼ばれます。回数自体はそこまで多くなく、メソッド呼び出しのオーバーヘッド は大きくないはずですが、なぜ分割した方が速くなるのでしょうか? 処理をメソッドに分割した方がうまく最適化されやすいのでしょうか?
565 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 03:28:31 ] レジスタ変数をうまいこと選択できるとか? いや知らんけど。
566 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 03:28:38 ] >>564 基本的なことだけど速度計測の時に最適化が有効になってるか確かめた? デバッグビルドは最適化が働かないよ。 リリースビルドでもF5実行の場合は最適化が抑止されるよ。
567 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 10:20:45 ] 初歩的な質問で恐縮ですが C++のSTLとかアルゴリズムを利用したコードってC#でも使用できますか?
568 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 10:28:12 ] コードってC++のソースコードなのかコンパイル済みのコードなのかどっちなんだ
569 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 10:28:33 ] >>565 一応BigMethodをビルドしてからReflectorでILを見てみると、.maxstackの値が22から10に減っていました。 >>566 Debug、Releaseビルドどちらの場合でも分割している方が速かったです。 一応実行時はリビルドを実行してからVS上ではなく直接exeを起動して計測しています。
570 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 10:46:38 ] >>568 どちらでも可能であればかまいません C#でSTLを使いたいのです
571 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 10:47:56 ] 無理 テンプレートが使えないからな C++/CLIでSTL/CLRでも使えば?
572 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 10:53:58 ] C#使う以上は問答無用でSystem.Collections.Generic使え
573 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 11:16:30 ] 拝承
574 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 11:21:53 ] 調べてないのだけど、C++/CLIってunsafeキーワード書かなくても、 ポインター使ったプログラムを掛けるのかな?
575 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 11:24:05 ] 書けるよ。 manageとunmanageの区別は自分で意識してやらないとならんが。
576 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 11:31:35 ] コンパイルオプションでポインタを使えなくすることもできるけどな
577 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 11:32:18 ] pinできなくなるってこと?
578 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 12:05:27 ] pin_ptrはできる。GCHandleType.Pinned使ったGCHandle.Allocと意味的に同じだし。 でもT*にキャストはできない。 pin_ptrからIntPtr作ることはできてMarshalでアクセスはできる。 つまりは/unsafe使わないC#とほぼ同じ。
579 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 12:52:53 ] あくまで相互運用のためにあるので全部がC++/CLIのアプリケーションは作るな莫迦者って誰かが言ってたな
580 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 13:03:47 ] MS自身そういうスタンスだからな STL/CLRとかいう迷惑なものはなかったことにするべき こんなもんがはびこったりしたら何のための.NETかわからなくなる
581 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 13:26:44 ] いや、.NETのジェネリックは糞過ぎるから、 テンプレートとして使えるコレクションライブラリは欲しい。
582 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 13:40:18 ] C++コードとの互換性を含めるべきだったんだよ、MSは!
583 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 15:01:34 ] プリプロセッサで変態マクロが定義できる言語には二度と触りたくない。マクロのすごい版として テンプレートを導入したC++は何をかいわんや。オブジェクト指向的な構造さえしっかりしていれば むやみやたらな自由度なんていらない。.NETのジェネリックはコードが変態にならない点で優れて いると思う。その分できない事が多すぎるというのは理解するが。
584 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 15:07:25 ] そしてやっぱりダージリンの新開発待望論が高まる
585 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 22:47:21 ] 自分が書いたものですら、昔のものはまるで読めないような変態言語は勘弁して。
586 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 23:05:07 ] 今の仕事が左から流れてきたデータをより分けたり下から流れてきたデータと組み合わせたりして 右に流すようなやつなんだがLINQ使い倒せて実に気分がいい 趣味でいじる分にはピンと来ないgroup byとか爽快だ だが後でメンテする人は果たして読めるんだろうかアレ いやまあできる限り読みやすく書いてるつもりだが でも最大の責任は同じ名前のクラス3つも4つも作った奴だから文句はそいつに言ってくれ なんで一つのメソッド内に別々のInformationクラスが3つも出てくるんだ畜生
587 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 23:30:55 ] ネームスペース別でも、機能が似たようなInformationが、 3つ同じ名前で実装されてるってか?w
588 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 23:46:17 ] それは酷いww
589 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 00:09:44 ] まさか担当者ごとにネームスペースを分けちゃいないだろうな。 Kaishamei.Suzuki.Information, Kaishamei.Sato.Information みたいな……
590 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 00:52:18 ] 苗字だけじゃなくちゃんと名前でわけてるわ!
591 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 07:51:01 ] ならおk
592 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 09:05:09 ] でも将来的に似てても一部違う機能を実装するならそれもありとかでは? と素人が申しております
593 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 20:03:12 ] 便乗質問。 2chにはあまりこういう仕事してる人いないかもしれないけど、 例えばFooTech社のBAR1234というインターフェイスカード(DIOとか モーションコントローラとかいろいろ)を操作するためのクラスライブラリを 作るときって、名前空間名はどうしてる? FooTech.BAR1234 ? MyCompany.BAR1234 ? MyCompany.FooTech.BAR1234 ?
594 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 20:26:33 ] 三番目以外にする理由がわからない
595 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 20:41:43 ] 発注元にもよるんじゃ
596 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 01:49:05 ] >593 3番目でやってるよ。 結局名前空間だけじゃなくアセンブリも分けてあって プラグインのように呼び出せるようにしてある。
597 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 05:22:52 ] 仮面さんとこから転記 名前空間のネーミング方法 CompanyName.TechnologyName[.Feature][.Design] というパターン。 例: Uchukamen.MultiMedia.Movie.Viewer .NET Framework 名前空間で使用されている名前は使わない。 Class Console →だめ。 意味的に適切な場合は、複数形の名前空間名を使用する。 例: Collections 例外: 省略形 System.IOs 誤 → System.IO 正。 名前空間とクラスに同じ名前を使用しない。 namespace MySystem; class MySystem; // 誤り。名前空間とクラスに同じ名前を使用しない。
598 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 07:02:32 ] 趣味で作ってる場合CompanyNameはどうすればいいんだ・・・ 本名使うには抵抗が・・・
599 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 07:11:28 ] 趣味ならウェブサイト名とか。公開しないなら個人名でもいいだろう。
600 名前:デフォルトの名無しさん [2009/02/28(土) 08:09:42 ] 600
601 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 10:23:05 ] 趣味やオープンソースならプロジェクト名だけでいいと思う
602 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 11:56:24 ] メッセンジャーを作ろうと思うのですが、 どうやったらインターネット越しの相手と通信できますか?
603 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 12:22:53 ] キミニハムリダ
604 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 14:00:03 ] カムサハムニダ
605 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 14:03:22 ] ヨンドンサリの
606 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 14:18:49 ] UPnPでポートをあけてpushできるようにして、 マイクから音声を取得するようにして、 その音声を圧縮して、tcpかudpで送って、それを受信側で元に戻して再生するお UPnPつかわないで擬似的にpushしてるソフトあるけど どうやってんだろ
607 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 14:23:27 ] 擬似的なpushって受信側からのポーリングじゃね
608 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 14:28:51 ] >>599 ニックネーム
609 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 18:26:02 ] >>608 じゃおれの場合はHannsamubo-iにすればいいのか
610 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 22:06:48 ] おまえ、ハンサムボーイって呼ばれてるのか イジメじゃないか
611 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 22:17:46 ] >>610 ごめんごめんhandsomeboyの間違いだった
612 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:21:45 ] >>598 GUID
613 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:43:04 ] >>612 おまえとは仕事したくないなwwwww
614 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:56:29 ] むしろうちに欲しい
615 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:57:34 ] 仕事欲しい
616 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:58:37 ] 彼女欲しい
617 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 02:04:12 ] 仕事さえあれば彼女ができる自信はある
618 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 02:35:51 ] いたって簡単なことだが、ずっと家に居たって何も始まらない。 2chなんてすぐに断って家を発って職安に行くんだ。
619 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 02:38:30 ] いやーん
620 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 03:52:57 ] >>618 じゃあ一緒に行こうか
621 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 15:47:48 ] 現地集合な
622 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 16:54:25 ] NEETでなぜ悪いっ
623 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:03:45 ] 悪いに決まってるだろJK 親や周りの人に負担ばかりかけて 無駄に消費するだけして 周囲や社会には何も貢献してないんだから
624 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:34:33 ] >親や周りの人に負担ばかりかけて >無駄に消費するだけして >周囲や社会には何も貢献してないんだから まさに2ちゃんねるにレスすることとまったく同じだな
625 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:13:01 ] ばーか 上の世代が貯金ばかりして経済が停滞してるというのに ニートはそれを消費に回して経済活性化に寄与してるんだよ
626 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:19:21 ] >>622 .NETでなぜ悪いっ に見えた
627 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:36:07 ] 悪いに決まってるだろJK メモリやディスクに負担ばかりかけて 無駄にリソースを消費して 周囲や社会には何も貢献してないんだから
628 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 20:45:01 ] >メモリやディスクに負担ばかりかけて >無駄にリソースを消費して >周囲や社会には何も貢献してないんだから まさに2ちゃんねるにレスすることとまったく同じだな
629 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 20:51:56 ] NEET、NEETを語る
630 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 10:40:11 ] NEETな午後3時
631 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:04:39 ] TCPListenerを使って接続を受け付けるために、 BeginAcceptTcpClientで接続を受け付けています。 while (isAlive == true) { tcpListener.BeginAcceptTcpClient(new AsyncCallback(TCPListenAcceptCallback), tcpListener); autoResetEventTCPReceive.WaitOne(); } ここで、プログラムを終了させるためにisAliveをfalseにしているのですが、 BeginAcceptTcpClientでブロックされてしまい、プログラムがいつまでも終了 しない状態になってしまいます。 そもそもプログラムの終了方法が悪いのかもしれませんが、 何か良い方法があれば教えてください。 よろしくお願いいたします。
632 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:30:17 ] せっかくBegin使ってるのにその直後に無限待機しちゃ意味無いじゃん 適当にWaitOneにタイムアウト秒数与えなよ
633 名前:631 mailto:sage [2009/03/02(月) 22:02:43 ] >>632 ありがとうございます。 WaitOneにタイムアウトを持たせることで解決しました。 # 若干プログラムの終了まで時間が掛かりますが、問題になる範囲ではないですよね?
634 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:29:23 ] CLR ProfilerでFormアプリケーションのメモリ生成を見ようとしいます。CLRプロファイラのメインフォームからアプリケーションをスタートするとアプリケーションはスタートするんですが、 "Waiting for application to start common language runtime" とでたままプロファイラがアプリケーションにアタッチできません。 デバッガーで見るとCLRProFiler.MainForm.WaitForProcessToConnectの中のpipe.Readで毎回IO.Exceptionが発生しています。 例外内容は"プロセスがパイプの他端を開くのを待っています。"とのこと。 ぐぐってみると同じような現象が出ているのはあったんですが、サービスで発生した場合でアイデンテイティをシステムで立ち上げるとかうんたら。 forums.asp.net/p/368720/372560.aspx アプリケーションの場合にどうするのかわかりません・・・ securityがらみぽいのですが、これは環境がVistaだからでしょうか。
635 名前:634 mailto:sage [2009/03/03(火) 12:30:25 ] 事故解決。 CLRProfiler.exeをエクスプローラから右クリで管理者として実行でいけました(=゚ω゚)ノ でもタスクマネージャーでワーキングセットが500Mぐらい食って減らないもののプロファイルしたかったんだがProfilerでみても、10Mぐらいしかアロケートしてないといわれる・・・ 見方が悪いんだかよくわからん。逝ってくるノシ
636 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 14:39:07 ] 出来上がったexeをバイナリエディタで覗くとプロジェクトのフルパスが埋め込まれちゃってるんだけど、消す方法ある?
637 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 14:53:06 ] バイナリエディタがあるなら消せるだろ。
638 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 14:53:12 ] プロジェクトのじゃなくてpdbファイルのじゃね? pdbファイルの出力ならプロジェクトのプロパティでビルドの詳細設定>デバッグ情報あたりで制御できる
639 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 17:05:04 ] >>637 消して動作に影響あるかもしれんのじゃないか?
640 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 21:28:21 ] ハッシュで弾かれないか?
641 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 21:58:53 ] pdbはデバッグ用だろ
642 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:52:45 ] >636 デバッグビルドしてない?と思ったけど VS2005かVS2008からReleaseビルドでもpdbを作るのがデフォルトになってるんだった。 ビルドの詳細設定から出力のデバッグ情報をnoneに変更する。
643 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 07:37:47 ] おお本当だ Release設定のデバッグ情報noneで埋め込まれなくなった みんなありがとう しかしこれ気付かずにそのままリリースしたら、プロジェクトのフォルダに個人名使ってたら色々と問題になりそうじゃない?
644 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 07:45:30 ] 普通の観察力があれば気づく
645 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 07:48:19 ] dotfucator使ってればその辺の情報は消えてるだろ
646 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 08:57:50 ] "要.NET Framework3"でググって出てきたのをいくつか見てみたけど消してる人は少ないな
647 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 09:13:34 ] 普通はexe(dll)と設定ファイル以外出さないでしょ
648 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 10:47:53 ] pdbファイルがどうこうの話じゃなくて、本名バレしてる人いるんじゃね?って話 本名でユーザー作っててマイドキュメントの下にプロジェクト置いてたらアウアウ
649 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 11:07:34 ] そういう事故がままあるからうちではユーザー名に本名を使わなくなった
650 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 11:20:06 ] タスマネのユーザー名を消さずにスクショうpしてあうあうとかリアルにあるからな
651 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 14:12:41 ] ユーザ名は嫁の名前使ってます。 脳内嫁ですが。
652 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 14:44:15 ] >>646 蛇足だが、100%アンマネージドなVC++アプリでも デフォルトのリリースビルドの設定だとPDBのパスが埋め込まれるのは同じ。
653 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 15:27:08 ] リリースするときって、msbuildとか使ってバッチビルドするもんでしょ
654 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 16:27:40 ] 高度な話題禁止!
655 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:05:03 ] 高度な話はしてないので続けてOK
656 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:43:50 ] >>653 おれはいまだにGNUのmake
657 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 03:35:05 ] 俺は何も考えずにReleaseに切り替えてリビルドして出来上がったexeを配布してるな
658 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 12:01:20 ] うちは専用のビルド用PCでやってるんで個人名とか入らない。
659 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 12:13:36 ] レポジトリにコミットしたらHudsonが自動ビルドしてくれる
660 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 19:33:22 ] VS2008のC#でプログラムを組んでいます。 たくさんの線や長方形、円をアルファ値30%ぐらいで重ね合わせて描画しています。 これを印刷しようとして躓いてしまいました。 プリンタへは、きれいに印刷できました。でも、プリンタドライバ型のPDF出力を行うと、 不完全なディザみたいになってしまいます。どうも、PDF自体が半透明な描画ができないようです。 それで、いったんBitmapに描画してから、プリンタに転送しようとしました。 サイズが小さいときにはこれでPDF出力もうまくいったのですが、A3サイズになると、プリンタの 解像度と用紙サイズでBitmapを作成しようとした時点でエラーになってしまいました。 縦横のピクセルサイズが大きすぎるのだと思います。 こんなときはどうすればいいのでしょうか。やっぱりバンディングみたいにすこしずつ処理でしょうか。
661 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:08:52 ] >>660 大きすぎるならそのBitmapを縮小すれば良いんじゃね?
662 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:36:47 ] A3が11.7" x 16.5"で、300dpiだと3500px x 5000pxあたりか。 そのくらいでエラーになるのはおかしい。
663 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:23:44 ] 本当に仮想プリンタのせいだとしたら、 まず仮想プリンタを変えて試すべきじゃないんだろうか? フリーのだけでも数種類あったはずだよね?
664 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 22:24:47 ] ありがとうございます。 >>662 仮想プリンタ側で4800dpiみたいな設定ができて、C#プログラムの中からはこれが そのまま解像度として見えています。 現実的には、600dpiぐらいで良いので、それぐらいで考えてみます。 >>663 Primo、BullZip、Acrobat Pro(これは評価版)を試してみたのですが、色のアルファ ブレンドはうまくできませんでした。
665 名前:661 mailto:sage [2009/03/08(日) 23:02:24 ] >>664 おいてめーw形式だけでも俺様に礼の一文を書けwww
666 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:11:08 ] >>665 ああっすみません。 4800dpi→600dpiは>>661 さんのご提案を取り入れての判断でした。
667 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:43:20 ] その程度のことで礼を求めるなよ だせえ
668 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 00:24:11 ] さすが大物さんは違いますね。 まあ会社でも鼻つまみ者だろうけどw
669 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 00:48:19 ] 中学生でも思いつくようなアドバイスで霊を要求するってw
670 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 01:20:05 ] 661は馬鹿なの?
671 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 01:39:59 ] うん
672 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 02:35:30 ] 冗談もわかんねーのかよwお前らほんと低脳だなwww
673 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 02:42:08 ] そんなに悔しかったのか(プ
674 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 02:52:26 ] 雑誌のグラビア写真でも300dpiくらいだよな
675 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 09:25:54 ] 661が馬鹿なのはどうでもいい それより664が大人なのが重要 こんな人間に私はなりたい
676 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 14:04:49 ] C# Express2008にてC#を勉強中です。 質問なのですが、ToolStrip上にtoolStripLabelを置いて、そのバックカラーを 変更したいのですが、BackColorプロパティーをいじっても変化ありません。 他のどこをいじれば変更できるのでしょうか? そもそも、変更できない?
677 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 14:49:38 ] あんまり簡単ではないがToolStripRendererの派生クラスで制御できる 一通りヘルプの解説読んでググってみたりしても"さっぱり"理解できないのなら手を出すには早いかもね
678 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 14:56:15 ] Visual Styleに依存するのでむやみに変更するのは非推奨
679 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 15:28:37 ] 皆様、ありがとうございます。 なるほど、そのtoolStripLabelが乗ってるtoolStripのRendererModeで動作が変わるんですね。 RendererModeをSystemにしたら変更が反映されました。 ありがとうございます。
680 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:47:19 ] ボタンクリックイベントとかで一時的に使ったBitmapとかImageってそこの処理抜ける前にDisposeした方がいいの? それともそのスコープ抜けたときに勝手に開放してくれる?
681 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:53:40 ] Disposeしたほうがいい
682 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:24:03 ] 一時的に作ってローカルな範囲だけで使って 外に漏らしてないと断言できるならならあえてDisposeしない理由がない
683 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:47:50 ] >>680 using使おうや
684 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 18:24:21 ] usingといえば、StreamReaderが元のStreamまで根こそぎ閉じるの勘弁して欲しいな
685 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 19:46:42 ] 複数のオブジェクト間で受け渡したりするときはTextReaderを通すことが多いからな
686 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 19:53:39 ] >>684 なんで合理的な仕様じゃん。 そう思えないなら、ふらっとスレの議論じゃないけどDispoeのそもそもの意義が わかってないんでしょ。
687 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:52:53 ] 実際のとこスコープ外れたオブジェクトって即時消去されずに残ってるもんなの? 例えばこういう場合に明示的にDisposeするべきなのか、しなくてもいいのか迷う private void hogehoge(string fname) { Bitmap bmp = new Bitmap(fname); this.pictureBox0.Image = (Image)bmp.Clone(); //bmp.Dispose(); }
688 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:54:48 ] そんなに頻繁に呼ばれないのならしなくても問題にはならないだろうけど できるのにわざわざしない意味がない
689 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:01:27 ] >>688 できるのにしないのは、C#ってそもそもそういう部分を気にせずにコーディングできるのが強みだから 使わなくなった変数やオブジェクトはGCで自動的に開放してくれるからC++みたいにメモリ管理で苦労しなくていいって触れ込みだった気がする
690 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:10:08 ] GCはオブジェクトの生存範囲が分からない場合には有効だけど >>687 ではusingを書くか書かないかだけの違いだろ
691 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:10:13 ] using!using!
692 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:54:24 ] メモリで大きな画像を持ってると大変なことになりそうだしな 特にサーバなんかでは 必要無くなったら破棄するのが良いよ
693 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 22:08:44 ] >>687 .NETのBitmapは参照用途のつもりでもファイルをロックしてしまう この例では pictureBox0 にクローンしたものを わたしているから bmp は不要なんだが、Disposeしないと GCが動くタイミングまで(いつかは不明)ファイルがロックされたままとなり、 結果、ファイルを削除あるいは移動しようと失敗してしまうことがありうる よって、Disposeしとくべき
694 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:38:22 ] 質問です。 開発上、とあるライブラリを仕様せよとの指令が下りました。 APIマニュアルはそれなりに整備されています。 しかしメソッドはプロパティーにアクセスした時に、 発行しうるExceptionの記述がまったく無いマニュアルでした。 そこでどのようなExceptionが発生するのか調査したいのですが、 ソースを直接参照できないため行き詰っております。 このような場合は、どのような調査を行ったほうが良いでしょうか・・・
695 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:42:46 ] 逆コンパイル
696 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:47:10 ] C#をC++に変換してくれるツールないっすか?
697 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:47:44 ] ないよ
698 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:54:11 ] C#からC++/CLIへの変換なら簡単なのだけどねぇ Instant C++ (C# Edition) ってのがあるけど、どの程度使える代物なのかは知らん
699 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:26:12 ] >>695 アドバイスありがとうございます。 C# 逆コンパイルで引っかかったものに Reflector というものがあるのですが、 こちらはこの手の会席で使う定番ツールみたいですね。
700 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:39:19 ] このサイトってどうなの? ++C++;// 未確認飛行 C ttp://ufcpp.net/
701 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:46:02 ] 普通に良いサイト
702 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 11:23:56 ] >>693 .NET3.5はその辺大丈夫みたいよ 3.0からなのか3.5からなのかはわからないけどロックされることがなくなったっぽい
703 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 15:19:06 ] 一度MemoryStreamにコピーすれば問題ない。
704 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:32:35 ] >>702 むしろロックしない仕様の方に問題があると思うんだが。。 ロックしない仕様の方を大丈夫と表現する感覚が理解できない。
705 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:37:50 ] 本来,メモリに読み込むときにしかファイルアクセスはいらないだろ
706 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:42:25 ] メモリを占有するのが嫌だからファイルをロックするんだよw 何言ってんだか。
707 名前:デフォルトの名無しさん [2009/03/13(金) 09:16:06 ] 質問です メンバ変数hogeとコンストラクタやメソッドhoge()があるとき this.a = foo; とやると曖昧と言われてエラーが出るのですが 名称変更せずにこれを解決する方法はないでしょうか?
708 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 09:31:12 ] hogeはどこいった どこに何があるのか分からん 曖昧と言われてエラーって台詞そのものが曖昧
709 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 09:36:47 ] 707 なにがなんだかわからない
710 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 09:47:16 ] >>707 ぐだぐだ言わずにソースコード出せよ お前の稚拙な説明では意味不明だ
711 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 10:19:15 ] >>707 吹いたwww
712 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 11:14:40 ] >>707 ワロタ 赤くしとこ
713 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:31:09 ] うわー恥ずかしい class hoge { int hoge; public hoge() { } public void hoge() { } public void hoge(int foo) { this.hoge = foo;//エラー } } こんな感じなのですが
714 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:35:31 ] それthis.hoge = foo;の行がなくてもコンパイルエラーになる 名前変える以外にない
715 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:43:43 ] ・メンバ名と型名を同じにはできない ・メソッドのオーバーロード以外で同じ名前のメンバが複数存在することはできない
716 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:50:35 ] サンクス
717 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:59:09 ] それを眺めていてふと思ったんだが class Hogeで、 public static implicit operator Hoge(int intValue) return new Hoge(intValue); でHoge hoge = 1;みたいにしてインスタンスの生成が可能で、 public static implicit operator int(Hoge hoge) return hoge.IntValue; で、int a = hoge;みたいな定義型変換ができるけど、 インスタンスを生成しないで代入するhoge = 1;ってできたっけ 代入演算子はオーバーロードできないから無理なんだっけ?
718 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 13:05:27 ] hogeにインスタンスが入ってるかどうかにかかわらず hoge = new Hoge { intValue = 1; };と同じ 新しくインスタンスを作らずにintValueだけ変えるのは無理
719 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 13:10:19 ] さんくす。なら hoge.IntValue = 1; とか hoge.SetInt(1); とかしかないのか。 どっちかというこ後者かな?
720 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 14:07:25 ] public void this(int hoge)
721 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 22:15:09 ] あれ?そうだっけ? public static implicit operator Hoge(int value) じゃなかったっけ? Hoge a = 1; こう使いたいんでしょ? XNamespace かなんかで使ってるように
722 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 22:18:11 ] あごめん、勘違いしてた。生成しないでか。
723 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 22:23:47 ] ようはseal型にどれだけ近づけるかと、 ポインタ的な操作(delegate等)をどう簡単に実装するかのジレンマだな
724 名前:デフォルトの名無しさん [2009/03/14(土) 08:16:03 ] TextBox1に入力された数字をInt型のRAMに取り込むにはどうすればいいんでしょうか?
725 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 08:51:16 ] int n = Convert.ToInt32(TextBox1.Text);
726 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 08:52:52 ] ありり
727 名前:デフォルトの名無しさん [2009/03/14(土) 17:27:22 ] Textboxに数字のみ入力させようと思い、以下のイベントハンドラーとプログラムを用意しました。 するとコンパイルエラーが発生し困っています。 エラーメッセージも以下に用意しました。 私が用意した文のどこがおかしいのでしょうか? this.textBox2.KeyPress += new System.EventHandler(this.textBox2_KeyPress); private void textBox2_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if (e.KeyChar < '0' || e.KeyChar > '9') { e.Handled = true; } } デリゲート 'System.EventHandler' に一致する 'textBox2_KeyPress' のオーバーロードはありません。 (CS0123) - C:\Users\masamune\Documents\SharpDevelop Projects\Hello\MainForm.Designer.cs:74,30
728 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:32:39 ] >>727 KeyPressEventArgs ↓ EventArgs
729 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:34:20 ] > this.textBox2.KeyPress += new System.EventHandler(this.textBox2_KeyPress); ここがおかしい。 普通に KeyPress イベント作って、Designer.cs の中身を確認してみれば いいと思うよ。
730 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:38:49 ] エラーメッセージの通り。 そういうエラーメッセージが出たら、とりあえずMSDNで System.EventHandlerを検索する。 msdn.microsoft.com/ja-jp/library/system.eventhandler (VS.80).aspx デリゲートのシグネチャが public delegate void EventHandler ( Object sender, EventArgs e ) であると書いてある。で、textBox2_KeyPressメソッドはこの シグネチャと一致していない(第二引数の型が一致しない)。 そこを直すとまたエラーメッセージが出ると思うので、そのエラー に関連すると思われるトピックをMSDNで調べる。これを繰り返す。
731 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:43:26 ] >>728 >>729 即レスあざーす。 早速試してみます。 Cを数年かじっている経験から感覚的に進めてたら急に壁が出来てしまってw
732 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:44:04 ] >>730 あざーす
733 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:44:09 ] あざーす、って何?
734 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:47:32 ] Azure の開発コード名
735 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:55:34 ] アザトースのことだろ
736 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:56:34 ] ASUSだろ
737 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:03:28 ] パチンコのCMでもりゆきの格好してる奴だよ
738 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:10:01 ] others つまり(お前の意見じゃあてにならないから)他の意見くれってことだろ
739 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:32:44 ] >>734-738 ボケのレベルが低い。 俺様がまぢレスしてやる。 安産です。
740 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:34:28 ] 一番レベル低い奴が満を持して登場
741 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:34:49 ] うん?
742 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:35:59 ] 安産ですとか勝訴ですとかこの手のギャグに弱い
743 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 03:38:24 ] それってギャグなの?
744 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 09:20:26 ] 最近VB.NETからC#に移行しようとしているものですが質問です C# の public static class というのはVBで言うところの public shared class みたいなもので ほぼVB.NETのモジュール的な考え方でいいんでしょうか?
745 名前:デフォルトの名無しさん [2009/03/15(日) 09:45:37 ] SQL SERVER 2005 とか2008のDB作成するときにでてくるパスの変更部分 テキストボックスの横にボタンがあって、1つのセルに組み合わさったようなものをC#で作成したいんですが 何か簡単な方法はありませんか? Cellを継承して自作するしかないんでしょうか?
746 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:18:35 ] >>744 たとえば、System.Mathクラスは public static class なんだけど、じゃあMathクラスはVB.NETのモジュール的なもの? 君のいうところのVB.NETのモジュールが何を指すのか分からんので答えようがないが。 普通に"静的クラス C#"でググったほうが早いよ
747 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:28:01 ] >>746 VBとC#の両方知ってる人なんて山ほどいるんだから、知らなければ 黙ってればいいと思うんだが。 おれは、ぐぐって www.rocksthoughts.com/blog/archive/2008/03/11/extension-method-implementation-differences-between-c-and-vb.net.aspx これ見て、ふうんと思ったが、<Extension()>なんてアトリビュート 知らないから、コメントしなかった。
748 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:33:18 ] >>747 偉い偉い立派だよ君 レスしなければもっと偉かったのにね!
749 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:52:28 ] >>747 おいおい、2つのコードやページのタイトルを見ればExtensionが属性がなんなのか想像がつくだろうに。
750 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 12:07:30 ] >>748 ,749 746さん、ちーす
751 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 12:10:50 ] 何このスレ・・・
752 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:13:27 ] >>749 そりゃ想像はできるさ。ぐぐって見つけて概要を想像したのを、 そのままここに書いたらただの知ったか妄想じゃないか。 要するに、ちゃんとした回答ができればいいけど、 できないから書かなかったということ。 その次にこのスレに来たら、変な回答しかついてなかったから、 あえて留保(=言い訳)付でリンクを提示した。 リンクは提示したんだから、質問者が読みたければ、それを読んで 自分で判断すればいい。
753 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:21:39 ] ExtentionAttributeなんかC#しかやってない奴はあんまり知らんだろうな
754 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 14:30:03 ] >>752 というかそもそも元の質問が拡張メソッドの話でないのだから、 蛇足になる拡張メソッドについて言及しているところは避けようよ。 >>744 少なくとも構文上は、ほぼVB.NETのモジュールのような存在という考え方でいい。 細かい話をすれば、C#の視点から見たVB.NETのModuleとは、 単にStandardModule属性付きの静的クラス。 そもそもVB.NETでClassにSharedは付けられない気がするけど。
755 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 14:33:43 ] >>752 ごちゃごちゃ言わずに、 黙ってればいいのに
756 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:51:03 ] オマエモナー
757 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 19:11:22 ] まぁまぁ、ぬるぽぬるぽ
758 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 19:18:01 ] がっ
759 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 00:29:10 ] Type 型のインスタンスからその型のデフォルト値を取りたいんだがどうすればいい? つまり default(T) みたいなことをしたいんだが。
760 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 00:48:09 ] Assembly.GetAssembly(typeof(T)).CreateInstanceで行けるかな。試してないけど。
761 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:13:14 ] >>760 それだとインスタンスを生成するのでだめなんだ。
762 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:16:05 ] intとかstringとかdatetimeでもデフォルト値ってとれたっけ
763 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:18:46 ] >>762 数値や列挙型だと0、参照型だと null、構造体 T だと new T() と同じになる。
764 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:24:40 ] インターフェースの場合とか、列挙体の場合とか考えると、結構ややこしいな。
765 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:26:49 ] これでいけるんじゃまいか。 object o = t.IsValueType ? Activator.CreateInstance(t) : null;
766 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:27:37 ] Nullable<T>は?
767 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:39:06 ] >>766 Activator.CreateInstance()がnullを返す。
768 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:42:27 ] >>765 でいけたよ。サンクス。
769 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:47:55 ] SortedList<double, int> 型でデータがあるとして、 入ってるキーのうち「X以下で最大の数」ってのを 2分法で求めたいんだが自分で書くしかない? そういう関数があってもよさそうなもんだが。
770 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:57:34 ] そんな関数大量に作られても邪魔だろ。
771 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 23:35:23 ] >>769 ttp://msdn.microsoft.com/ja-jp/library/system.array.binarysearch(VS.80).aspx
772 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 23:51:44 ] >>771 あんがと
773 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 01:33:53 ] >>771 特定の値を探すんならそれでいいだろうけど、 X以下で最大の数 みたいに特殊な条件で検索するには向かないのでは Array.BinarySearchでなくとも、List.BinarySearchやSortedList.ContainsもO(log n)
774 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 01:50:51 ] じゃあどうすればいいの
775 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 01:58:37 ] 自分で書けばいいじゃないか
776 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 08:41:16 ] >>773 汎用性を求めているわけじゃないんだから、 Xのインデックスを求めてそこから範囲指定BinarySearchじゃないかな
777 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:55:39 ] ちょっとC#ってくくりじゃない質問なんですけど、 ブログとかに使われるWEB認証の歪んだ数字の画像なんだけど あれってそのURLにアクセスする度に表示される画像変わるじゃん。 サーバー側はどうやって自分が出力した画像に書いてあるナンバーと クライアントが打ち込んだ数字のナンバーが合致しているかを認証するんだろう。 この仕組みご存じの方居ますか?
778 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:02:28 ] データベースに保存しとくだけ。
779 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:12:10 ] データベースに保存(笑)
780 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:18:26 ] すれち
781 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:29:27 ] >>777 usernameごとに認証ナンバーを発行してるだけ
782 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:36:11 ] 大体はセッションに保存じゃね? 詳細はCAPTCHAでググるよろし
783 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:48:42 ] >>781 あー、なるほど。 納得! じゃあ認証されないって事は やっぱりリクエスト2回投げちゃってるのかなー。 >>782 有益な情報ありがとう。 調べてみます。
784 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 20:17:52 ] PHPのpreg_replace_callback()みたいな実装ってある? 正規表現で複雑な処理がしたくて・・・
785 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 20:27:02 ] >>784 string str = Regex.Replace( input, @"\d+", (m) => Int32.Parse(m.ToString()).ToString("000") );
786 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 20:33:53 ] >>784 re.sub()のreplに関数を渡すという話ではなくて?
787 名前:デフォルトの名無しさん [2009/03/17(火) 20:40:06 ] 円を描画をしたいです。 プロパティからインスタンスを作成したいのですがどのコンストラクタを選べばいいのでしょうか?
788 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:12:37 ] C#語でおk
789 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:20:07 ] System.Drawing.Graphics
790 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:25:18 ] 最近やけに日本語でおkレベルの質問が目に付くな
791 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:28:26 ] クラスのオブジェクトを作成したらインスタンスですか? クラスのインスタンスを作成したらオブジェクトと同じで、インスタンスはオブジェクトということでいいでしょうか。 クラスは型で作成したらオブジェクトですか?
792 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:29:24 ] ワッケワッカラン♪
793 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:39:49 ] 誰かスレのためにクラス・コンストラクタ・メソッド・インスタンスをわかり易くまとめろよ。 そういう基本的な部分があいまいな人かなりいると思うぞ。 俺は今から風呂入ってくる。
794 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:41:09 ] そうだな 風呂でじっくり纏め上げて来い
795 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:47:35 ] さすがにそのレベルは半年ROMってろカスとしか言えんわ
796 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:02:35 ] でも自分がその半年ROMってろのカスのレベルの時に 半年ROMってろカスって言われたらむかつくだろ?
797 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:07:46 ] 半年ROMる暇があったら、まともな本を読んで理解を深めてください。
798 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:21:49 ] C#以前の問題だろ…
799 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:26:46 ] でも半年ROM中にまともな本読んで理解を深めていて質問したくなったら困るだろ?
800 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:32:09 ] 円を書きたいんです。 描画の仕方詳しく教えて下さい。 ぐぐってもうまくいきません
801 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:33:00 ] 日本語でおk
802 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:33:41 ] >>800 よくわからないけど、これを試してみたら? youryella.wankuma.com/Library/Extensions/Control/Default.aspx
803 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:40:35 ] >>800 Console.WriteLine("○");
804 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:41:44 ] >>801 と>>803 は質問にすら答えられない低脳かつ荒らしかつ穀潰しかつNEET
805 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:51:04 ] まずは質問の仕方を勉強してからこようね^^
806 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:54:50 ] 質問に答えられなかったらレスしなくていいんだよ^^
807 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:59:28 ] >>800 Rect theRect; PenSize(2,2); SetRect(theRect,20,20,70,70); FrameOval(theRect);
808 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:05:18 ] 800は釣りだろ
809 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:09:53 ] ttp://developer.apple.com/DOCUMENTATION/mac/QuickDraw/QuickDraw-60.html#MARKER-9-90
810 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:11:13 ] スレ違いのレスをしてる荒らしがたくさんいまちゅね
811 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:16:46 ] >>810 でもさ、>>800 みたいな超基本みたいな質問する人ってなんだかな、って気がしない? こんなことぐらい、本の4,5冊でも見れば簡単にわかるだろうに。
812 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:23:03 ] そしてこれをきっかけに初心者スレが建ち そこで同じようなレスが繰り返され さらなる初心者スレが建つことが繰り返されるのであった
813 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:34:40 ] >>811 4,5冊もいらんだろw もし4,5冊読まないと分からないような問題だとしたら ここで質問するべき問題だと思うんだが。
814 名前:786 mailto:sage [2009/03/17(火) 23:38:25 ] すまない…Pythonスレと間違えてたw
815 名前:デフォルトの名無しさん [2009/03/17(火) 23:57:19 ] APIを叩いたことないやつはこれだから困る
816 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 00:02:32 ] ニーモニックを知らない若造が何を言うか
817 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 00:14:11 ] >>803 はとんち的には100点
818 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 00:29:40 ] >>817 実際にそれが現実解ってこともなくはないしなw
819 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 00:42:54 ] お前ら冷たすぎ >>800 円を描画するんなら、Controlの派生クラスの中でGraphicsクラスを使えばいい。 例えばこんな感じ。 protected override void OnPaint(PaintEventArgs e) { e.Graphics.DrawString("円", Font); }
820 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 00:43:54 ] 下らないネタをいつまでも引っ張りすぎ
821 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 12:55:10 ] 略して下ネタ
822 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 09:26:04 ] ManagedDirectXつかってシューティングを作っているのですが、 何らかの描画命令(たとえばfont.DrawText)を1フレームに300回くらいやると、 描画命令の増加に従って徐々にFPSが落ちていきます。 描画命令をコメントアウトすると治るのでそれ以外が原因になっているとは考えにくいです。 また、テクスチャの有無やアルファの有効無効、頂点数にも影響されないようです。 デバイスの初期化はこうやっています Direct3D.PresentParameters param = new PresentParameters(); param.Windowed = true; param.SwapEffect = SwapEffect.Discard; param.MultiSample = MultiSampleType.EightSamples; device = new Direct3D.Device(0,Microsoft.DirectX.Direct3D.DeviceType.Hardware, wind,CreateFlags.HardwareVertexProcessing, param); device.RenderState.CullMode = Cull.None; device.RenderState.Lighting = false; device.RenderState.AlphaBlendEnable = true; device.SetTextureStageState(0, TextureStageStates.AlphaOperation, (int)Microsoft.DirectX.Direct3D.TextureOperation.Modulate); device.SetTextureStageState(0, TextureStageStates.AlphaArgument1,(int)Microsoft.DirectX.Direct3D.TextureArgument.TextureColor); device.SetTextureStageState(0, TextureStageStates.AlphaArgument2,(int)Microsoft.DirectX.Direct3D.TextureArgument.Current); device.RenderState.SourceBlend = Blend.SourceAlpha; device.RenderState.DestinationBlend = Blend.InvSourceAlpha; D3DTex.Direct3DDevice = device; verts = new CustomVertex.TransformedColoredTextured[10]; vertexBuffer = new VertexBuffer(typeof(CustomVertex.TransformedColoredTextured), 5000, device, 0, CustomVertex.TransformedColoredTextured.Format, Pool.Managed); sprite_ = new Sprite(device); ClientSize_ = wind.ClientSize; どうかご教授願います。
823 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:09:17 ] 多数の描画すれば、描画待ちでフレームレートが 悪化するのは、この手の処理では常識だと思います。
824 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:12:52 ] あとfont.DrawTextは重い
825 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:36:57 ] >>823 それはそうなんですが、表示してるのはただのスプライト(4頂点)なんです。 C2DにGeforce8600GTをつんでいるのに400スプライトで15FPSもでないのできっと何かが悪いのだとは思いますが・・・。 スプライトの描画部はこうなってます。これより前にテクスチャの設定や頂点の設定があります。 Draw2Dは使っていません。 triは描画する三角形の数で四角いスプライトなので通常2を設定。 if (device == null) return; GraphicsStream stm = vertexBuffer.Lock(0, 0, 0); stm.Write(verts); vertexBuffer.Unlock(); device.SetStreamSource(0, vertexBuffer, 0); device.VertexFormat = CustomVertex.TransformedColoredTextured.Format; device.DrawPrimitives(ptype, 0, tri); cPolygon += tri;
826 名前:デフォルトの名無しさん [2009/03/19(木) 11:46:11 ] スプライト一枚ごとにそんなことやってたら遅いに決まってる 可能な限り同じテクスチャでまとめて書き込んでまとめて描画しろ
827 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:46:41 ] GraphicsStream stm = vertexBuffer.Lock(0, 0, 0); stm.Write(verts); vertexBuffer.Unlock(); ↑この処理を400回やってるなら重くなって当り前かと DrawPrimitiveで描いてるって事はGRAMをロックしてんだろ? 何れにせよDrawPrimitivesを数百回呼び出したら重い 数百枚のスプライトをオンメモリ上に1つのプリミティブで作成しといて CPU側で座標指定してDrawPrimitiveUpとかやれば大分違うと思う Managed DirectXはよく知らないけど
828 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:48:20 ] DrawTextなどを300回って書いといてそりゃねーだろ バッチ処理は基本だが、にしても遅すぎるな マネージコードのGCが暴れている可能性もあるからCLRProfilerとかで要調査
829 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:48:51 ] お、便乗しよっと 「メモリのロック」の意味がよくわかりません 必要な呪文程度に思ってます このロックとは具体的にはどういう動作をしてるんでしょうか?
830 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:51:28 ] >>826-827 なるほど。 DrawPrimitivesの小口多数実行とDrawTextのやりすぎの複合要因だったんですね・・・。 テクスチャごとに1回ずつDrawPrimitivesを実行し、DrawTextの使用を見直してみます。 お答えくださった皆様、本当にありがとうございました。 改良に取り組んでみます!
831 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 12:06:36 ] >>829 そこ今から俺が触るからおまえら触るなよ!! ってこと
832 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 12:14:45 ] 少し便乗して テクスチャ毎に描画というのは各頂点をGraphicsStreamに書き込んで DrawPrimitives(PrimitiveType.TriangleList,0,(描画するテクスチャの場所*2)); で良いのですか?
833 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 13:12:45 ] >>831 ググればすぐにわかるだろうにw ttp://www.stackasterisk.jp/tech/dotNet/csharp07_04.jsp
834 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 13:29:17 ] メモリのロックってマルチスレッド絡みの処理だったのかw 理解しました、ありがとう
835 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 20:17:12 ] 下記いずれかのデータを大量にListに格納する場合、速度面等からいうと どちらを選択した方が良いのでしょうか。格納するデータが増えることは 無いので拡張性を考慮する必要はありませんが、ググってもイマイチ分からず…。 ・KeyValuePair<string,string> ・Key,Valueのstringを持ったクラス
836 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 20:30:13 ] Dictionary
837 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 20:32:15 ] なんで実測してみないんだ?
838 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 21:06:17 ] 大量のデータから対象を素早く取り出したいならHashtable一択 .NET2.0以降のHashtable実装はDictionaryクラス 詳しく知りたいなら「データ構造とアルゴリズム」でぐぐればいいよ
839 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 21:16:08 ] まあ待てインデックスでのアクセスだけでいいのかも知れん 簡単にHashtable/Dictionaryを挙げるのは早計だ
840 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 21:19:07 ] >>839 >>835
841 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 21:22:40 ] 純粋に>>835 の質問に答えると後者だな KeyValuePairは構造体だから出し入れ遅いよ
842 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 07:57:03 ] 2147483647個以上の値を格納できるListみたいなのは 自作するしかない?
843 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:01:54 ] DB使えよwwww
844 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:12:59 ] 本当にそんな物が必要なのかどうか検討するところからだな。
845 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:16:32 ] 今List型で動いてるプログラムがあるんだが、 「メモリを50GB積むからこのデータを処理できるようにしてくれ」 って要求が来たんだ。
846 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:21:31 ] 50Gとかw
847 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:43:44 ] 単純計算で一オブジェクトあたり25b使えるわけだけど、 そのやり方は上手くいかないと思うわwww IList<T>インターフェイスを提供するDBオブジェクト自作したほうがいいよwww
848 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:50:10 ] >>847 DBってディスクに書き込むイメージがあったんだがそうでもない? 金(50GBのメモリ分)がかかっても速いほうがいいんだが。
849 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:53:55 ] でかいRAMDISKつくってそこにDBおけばいいんじゃね?
850 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:57:42 ] DBについて勉強してくる ありがと。
851 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 11:43:19 ] でもどっかの企業が全部オンメモリにするデータベースを運用しているっていう話を聞いたことがある。
852 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 11:44:45 ] そりゃおらくる
853 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 11:54:42 ] SQLiteやMySQLがオンメモリモードもってたとおもった。
854 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 12:45:42 ] 配列なら添え字にlongが使える。 このため64bitの.NET Frameworkなら4GB越えの配列を扱える。 32bitの.NET Frameworkでもlongが使えるが、intの範囲を使い切る前にmemory不足に陥る。 64bitの.NET FrameworkならListなどのコレクションもトータルで4GB以上使えるが、 添え字がint限定なのでそれが上限になる。
855 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 13:51:31 ] すべてのユーザーが毎回50GB相当のデータを要求するわけではないんでしょ OSのディスクキャッシュとかDBのメモリキャッシュに50GBメモリを活用してもらえば、 十分なパフォーマンスが出ると思うがね
856 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 14:23:45 ] >>855 十分なパフォーマンスが要件ではなく、 メモリで動作することなんじゃね? 要件定義を間違えるとそうなる。
857 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 14:41:19 ] しかし、仕事でDBを使うはいつものことだが、21億件のデータを突っ込んだことはないなw 一体何をしようとしてるんだ。
858 名前:842 mailto:sage [2009/03/20(金) 14:56:58 ] シミュレーション系です。
859 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:46:13 ] あー・・・ってそういうのもC#でやるもんなのか
860 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:51:47 ] ものにもよるだろうけど生産性との兼ね合いでそれもありじゃね? まぁ自分的にはF#を使いたいと子だが
861 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 22:06:16 ] 要素へのアクセスが添字だけですむなら、ただの配列の方がいいけどね。 普通にC#で書いたプログラムを、64bit環境で実行すればよい。
862 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 23:18:41 ] 円をformの中でピンポンの様に動かしたいんですがどうすればよいのかご教授下さい。 周期的に座標を変化させていけばいいのか、他になにか方法があるのか・・ 現在までのソースを示しておきます。 namespace circ { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } void MainFormPaint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; Pen pen = new Pen(Color.Green, 1); g.DrawEllipse(pen, 60, 60, 30, 30); } } }
863 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 23:40:59 ] 何言ってんのお前?
864 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:08:26 ] >>862 Forms アプリなら Timer 使え。
865 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:52:33 ] Managed DirectXでコーディングしていrのですが、 ランタイムが入っていない場合の動作を定義するにはどうしたらよいのでしょうか? FileNotFoundExceptionがthrowされることはわかったのですが、 どの時点でtry catchするべきかよくわかりません・・・。 using System・・・ (略) using Microsoft.DirectX.Direct3D; using Direct3D = Microsoft.DirectX.Direct3D; Direct3D.Device = null; try { Direct3D.Device = new Direct3D(なんとか); } catch(Exception e) { System.Diagnostics.Debug.MessageBox.Show(e.ToString()); } のような書き方をすると、 newをしくじった時のcatchはできるんですがDevice型自体を宣言できなった時にcatchするにはどのようにコーディングすればよいのでしょうか?
866 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:59:06 ] System.Reflection.Assembly.GetModule()
867 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:00:56 ] >>866 うおおおお ああああありがとう!!!
868 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:33:51 ] >>862 ピンポンの動きはよく分からんが、 こんな感じのものを作りたい? using System; using System.Drawing; using System.Windows.Forms; namespace circ { public class MainForm : Form { Timer timer; int x; int y; public MainForm() { Paint += new PaintEventHandler(MainForm_Paint); timer = new Timer(); timer.Tick += new EventHandler(timer_Tick); timer.Interval = 500; timer.Enabled = true; } void MainForm_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawArc(Pens.Green, x, y, 10, 10, 0, 360); } void timer_Tick(object sender, EventArgs e) { x = (x + 10) % Width; y = (y + 20) % Height; Invalidate(); } } }
869 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 10:09:56 ] >>868 ありがとう御座います。 動きの基本はそれです。 頂いたソースをベースに以下の仕様を考えています。 @スタート時、円は二個 A円の動きは直線 Bスタート時二個円の直進方向は異なる C壁にぶつかって跳ね返る D二個の円がぶつかると円が1個増える。 E増えた円も直線動作を行う。 F繰り返し 円同士がぶつかる判定と円を増やしていくにはどうしたらいいんでしょうか?
870 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 10:18:29 ] 1.お互いの円の中心が半径の2倍より近づいていたら衝突したと見なす 2.円をList<円>等で保持しておいて、衝突したら新しい円を追加する
871 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 11:10:16 ] なんつーかやりたいこととやれることのギャップが激しすぎるんじゃねーの? 全部ココで質問するつもりか?
872 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 11:14:12 ] このスレの連中はみんな初心者だろ
873 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 11:21:49 ] ふらっとすれもうなくなったんだっけ?
874 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 11:23:28 ] あるよ ふらっとC#,C♯,C#(初心者用) Part39 pc11.2ch.net/test/read.cgi/tech/1237051173/
875 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:46:36 ] まさかとは思うがこれ宿題じゃないだろうな
876 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:47:58 ] 宿題スレもあるね! C#,C#の宿題片付けます。 pc11.2ch.net/test/read.cgi/tech/1197620454/l50
877 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:48:18 ] 宿題じゃなく春休みの課題です
878 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:58:29 ] どう見ても宿題です。有り難うございました。
879 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 17:01:24 ] 質問です。課題と宿題の違いってなんですか?
880 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 18:36:28 ] 辞書ひけやゴミ
881 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:20:32 ] Tooltipの表示タイミングはそのままに、Tooltip.Showを使わずに 表示位置を制御する方法はないでしょうか。 ↓でも議論されていますが、具体的な方法が分かりません…。 ttp://bbs.wankuma.com/index.cgi?mode=al2&namber=1692&KLOG=10
882 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:39:38 ] デフォルトだと、マウス位置がベースになるんだっけか。 となると、それを誤魔化すか、デフォルトの動作をフックして、 位置を指定して表示するしかないでしょ。
883 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:51:50 ] Showを使っても問題ないんですが、表示タイミングだけは 準拠したいという所なんです…。良い方法ないものでしょうか。
884 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:59:44 ] 表示されるタイミングで、何かのメッセージが来るだろうから、 そいつを握りつぶしつつ、Show() すればいいんじゃね?
885 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:38:37 ] 今ラジアンで角度を処理するクラスを作っているのですが、次のような動作をさせたいんです 1.値を代入したときは値を正規化してからいれる(負値だったら正値に、2π以上だったら2πで剰余算) 2.値を参照するときはそのまま参照 3.floatと同じように扱える プロパティを使って実装すると次のようになりますが class RegularizedAngle { private float InAngle; public float Angle { get { return Angle; } set { //Angleが負値だったら正値に if (Angle < 0) Angle = PIx2 + Angle; //Angleが2π以上だったら2πで剰余算 Angle %= (float)(Math.PI * 2f); } } } これを普通のfloatと同じように扱いたいんです。 たとえば RegularizedAngle Ang = (float)(Math.PI * 2f); //すなわち6.28・・・の代入 Ang += 1; //代入したとき内部で正規化がおこなわれて1になる。 Ang += Ang; //これで2になる?こんなかんじで見た目を組み込み型みたいにしたいんです。 しかし上記のプロパティをつかった方法だとアクセスするときに Ang.Angle としなければなりませんし、宣言するときにはnewが必要です 組み込み型へのオーバーライドとかでできるのでしょうか?
886 名前:885 mailto:sage [2009/03/22(日) 13:54:58 ] >>885 ですがすいません。初心者スレに移動します。 >>885 は無視してください。
887 名前:デフォルトの名無しさん [2009/03/23(月) 01:16:27 ] C#でrubyのWWW::Mechanizeみたいなネットワーク系のライブラリありますか?
888 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 01:48:39 ] Mechanizeがネットワーク系とは思わないが、 あとC#じゃなくて.NETのコンポーネントだけど System.Windows.Forms.WebBrowserが同等かな。 (もしくはWPFでそれに相当する物) もちろんもっと低レベルのものもあります。
889 名前:887 [2009/03/23(月) 02:04:56 ] ありがとうございます 見てみます
890 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 18:23:08 ] Vista、VisualStdio2008で開発しているのですが、 hProcess.PriorityClass = ProcessPriorityClass.BelowNormal; このように外部プロセスの優先度を変更しようとするコードをF5「デバッグ開始」で実行すると、エラーが発生し、 エラーメッセージは「アクセスが拒否されました。」となっています。 また、Ctrl+F5「デバッグなしで開始」で実行すると、問題なく動きます。 デバッグありでこのコードを動かすことはできないのでしょうか?
891 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 20:14:28 ] >>890 とりあえず VS(devenv) を昇格起動してみな
892 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 20:50:03 ] >>891 レスありがとうごいます。 昇格起動とは管理者権限で実行ということでしょうか? AdministratorでログインしUACをオフ、devenv.exeを右クリックから管理者として実行を選択しましたが、 依然として「アクセスが拒否されました」になってしまいます。。。
893 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 20:58:17 ] >>892 ありゃ、とりあえず昇格すれば大丈夫だった気がするが。 まぁ駄目ならしゃーない。利便性落ちるけどこの手で。 プロジェクトの Properties → デバッグ → Visual Studio ホスティングプロセスを有効にする のチェックをはずす。デバッグなしでいけるならこれでどうよ。 これで駄目ならセキュリティとかゾーンの設定見直してとしか いえん
894 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 21:12:13 ] >>893 ホスティングプロセスのチェックを外したところうまく動きました。 現在のところホストプロセスを無効にしても、あまり問題はないようなのでこれでいこうと思います。 ありがとうございました。
895 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 00:31:48 ] APIスレの方が良いのかもしれませんが、教えて下さい。 WndProcでWM_KEYDOWNが発生したときに、 StrKey = new StringBuilder(); GetKeyNameText(msg.LParam, StrKey, StrKey.Capacity); として押されたキー名を取得しているのですが、例えば「Ctrl+A」の時など StrKeyにCtrlが入ってしまい、「A」が取得できません。 ※AやShift+A、Alt+Aの時などは普通に拾えます。 WParamにはAを示す値(65)が入っているので何か方法はあるのでは 無いかと思っているのですが…。宜しくお願いします。
896 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 08:59:45 ] と、思いましたが、色々調べたところGetKeyboardStateで Ctrl+A押下時のイベントが発生していないようでした。 Ctrl+B等は問題無いのですが…。TextBoxを継承しているのが問題なのか…。 もう少し色々調べてみます。失礼しました。
897 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 10:34:41 ] SelectAllのショートカットになってるからじゃ? ShortCutsEnabledをFalseにしてみるとか
898 名前:895 mailto:sage [2009/03/24(火) 11:23:25 ] 解決しました。↓が参考になりました。 ttp://www.atmarkit.co.jp/fdotnet/dotnettips/243winkeyproc/winkeyproc.html 結果的に、WndProcで行っていた処理をProcessCmdKeyに移すだけで 解決できました。失礼しました。
899 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:33:54 ] スレ汚しの質問すみません。 ブラウザの仕組みについてなんですが ブラウザはどうやって同一タイミングでターゲットURLのHTTP情報、 さらにHTTPを解析してその先にある画像データの取得を一意的に行っているのでしょうか。 それをC#でIEコントロールを用いずに実現する方法はありますか? たとえば今HttpWebRequestを使って試しているのですが これでは1インスタンスにつき HttpWebRequest req = new HttpWebReqest.Create(url); といった具合に一つのURLしか指定できません。 これによってサイト全体のHTTPをゲットする事が出来るのですが 1画像を取得しようと思った時には、その画像のURLをもって別インスタンスでCreateしなければならないんですが 一つのリクエストで全ての画像、サイト全体のHTTPを取得する方法はありませんか。 どなたか知恵をお貸しください。
900 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:40:52 ] 無理 自分で作るか誰かが作ったのを使うしか。 サイト全部取得は場所によってはアクセス遮断されるかも。
901 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:49:55 ] 一つのリクエストである必要性がどこにあるのか って単に手抜きたいだけか
902 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:57:49 ] >>901 セッション管理を行っているサイトにリクエストした場合に 1セッションと認めさせたいからです。
903 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 12:01:39 ] ブラウザだって一つのリクエストで全部取ってきてるわけじゃないんだから // KeepAliveで接続自体は一つかもしれんが セッションとは関係ねーよ
904 名前:899 mailto:sage [2009/03/25(水) 12:03:05 ] というか、セッション管理をしているサイトというのは やはりリクエストごとに別セッションと認識する物なんでしょうか。 要は1セッションと認めさせる事が出来、なおかつIEコントロールを使わない方法があれば HttpWebRequest以外でもなんでもいいんですが・・・><;
905 名前:899 mailto:sage [2009/03/25(水) 12:04:35 ] >>903 ああ!やはりそうなんですね! 一つのリクエストじゃないのですねー。 keepAliveを使えば接続は一つになるのか〜!ふむふむ!
906 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 12:41:57 ] 取り敢えず適当なパケットモニタでも入れて送受信の様子を眺めてれば
907 名前:899 mailto:sage [2009/03/25(水) 13:40:04 ] >>906 なるほど・・・! それは思いつきませんでした! ありがとうございます!やってみます。
908 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 17:34:36 ] 出来るだけ高速なファイル処理がやりたいのですが教えてください。 現在 [serializable] public class A { public int id; public datetime date; public long data; public long data2; } のようなクラスが存在し、これを50mSec程度の間隔で追記だけを行います。 このファイルには60万件のクラスAが入る可能性があります。 このとき出来るだけ高速に書き込む方法を教えて頂きたいのです。 また、この書きこんだクラスAの入ったバイナリファイル(60万件)を 例えば List<A> にデシリアライズ?してやるにはどうすればいいのでしょうか?
909 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 17:37:38 ] DB使えよ、ってのは駄目なのか
910 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 17:52:59 ] シリアライズせずにそのままバイナリデータを書き込んで、 読み込み時にbinaryReaderで読み込見ながらAddしたほうがいいような・・・
911 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 18:06:25 ] その程度のクラスなら、自前でバイナリシリアライズを実装すれば十分な速度が得られそうだ。 俺ならSQLite使うけど。
912 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 18:38:42 ] >>909-901 レスありがとうございます。 DBに関してはちょっと使えないのです。 >>910 と>911を組み込んでみてチェックして速度が出る方を選んでみます。 ありがとうございました。
913 名前:デフォルトの名無しさん [2009/03/25(水) 20:49:33 ] WebBrowserで表示しているコンテンツ内のボタンをクリックして 何かの動作が始まって、それが何かのエラーを起こして制御が 返ってこない場合があり、その結果アプリケーション本体がハング アップしてしまうことがときどきありました。こういうケースでもその 状態から復帰して他の作業ができるようにしたいのですが良い方法 があれば教えて頂きたく。何卒よろしく。
914 名前:デフォルトの名無しさん [2009/03/25(水) 20:57:08 ] WebBrowser内のコンテンツ上でボタンクリックなどでスクリプトか何か なのか、あるいは返信待ちなのか、何らかの動作をしているときに エラーが起きて制御が返って来ないまま、アプリケーション全体が キーもマウスも受け付けなくなる時があり、対策をどうするべきかわからず 困っております。WebBrowserの外からそうした動作を監視していて 一定時間たったらどうなったか調べるなどといったことをするべきなのか、 あるいはなんらかの方法でそういう応答なしになった状態から復帰可能 なのか、わかっていないのですがアドバイスもしくはご解説をいただけたら ありがたく。よろしくお願いします!
915 名前:913, 914 mailto:sage [2009/03/25(水) 21:03:02 ] すみません、JaneDoeStyle使っているのですが、書き込みした後で 何度かリロードして確認しても反映されておらず、しかも書き込みした 内容がエディタに残らなかったため、同じ質問を再度書いて送信して こうなってしまいました。再掲申し訳ありません。
916 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 00:20:58 ] Formを半透明にすることなどは簡単に出来るのですが 半透明のグラデーションは出来ますか? 具体的に言うと、四角いフォームの場合一番上が不透明で 下に行くに従って透明度が増していく感じのフォームを作りたいのです。 よろしくお願いします。
917 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 01:08:16 ] Layered Window と UpdateLayeredWindow 使う方法が思いつくけど、 Form じゃ無理かなぁ。いや、無理というより意味がないというか…。
918 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 01:10:09 ] >>916 www.codeproject.com/KB/miscctrl/AlphaForm.aspx
919 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 01:53:37 ] XmlReaderで現在の行数を取得することって出来ませんか?
920 名前:デフォルトの名無しさん [2009/03/26(木) 03:25:35 ] 質問です。 XmlSerializerを用いて、プログラム内のオブジェクト構造を元に データの保存と読込を行っています。 このXmlSerializerで、同じオブジェクトを指す複数の参照変数を シリアライズすると、シリアライズ化されたデータには その参照数分のデータが重複して書き出されてしまいます。 このオブジェクトを、実際にシリアライズによって書き出されるデータは一つだけとし、 デシリアライズの際に参照変数群へ同じインスタンスへの参照が入るようにしたいです。 一応、あまり良い方法ではないと思うのですが、 複数参照されるオブジェクトは専用にシリアライズされるコンテナに全て格納、オブジェクトのID付けをし、 複数参照されるオブジェクトの変数と対に、そのオブジェクトのIDを持つシリアライズ対象なプロパティを定義し、 そのIDプロパティのsetterにおいてIDを元に、既にデシリアライズされているコンテナから該当オブジェクトを 取り出して変数にセットする、という方法をこれまで取っていました。 これを行うもっと正しい感じの方法はありますでしょうか?ヒントだけでも頂けると有り難いです。
921 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 09:02:37 ] >>920 とりあえずIXmlSerializableを実装して同じことを行えば隠蔽できる もっと賢いやり方があったら俺も知りたいな
922 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 08:50:14 ] >>919 IXmlLineInfoにasキャストしてみる
923 名前:デフォルトの名無しさん [2009/03/27(金) 10:40:24 ] >>914 の件、どなたかアドバイスかヒントでもいただけたらありがたく。
924 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 10:46:18 ] 32bit環境でつくってたプログラムのソースを64bit環境にもちこんでコンパイルして実行した場合、 挙動が異なったりする可能性はありますか?
925 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 10:48:34 ] ありまqす。
926 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 10:48:35 ] >>922 出来ました しかしインターフェイスにキャストしてどうしてちゃんと行番号が取得できるんですか?
927 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 10:49:40 ] そうできてるから。
928 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 10:56:53 ] >>927 そうですか 有り難うございます。
929 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:00:32 ] class Foo {} interface IHoge { void f(); } class Bar : Foo, IHoge { public void f() {}} Fooだと思ってるものがBarだったとしたら
930 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:03:12 ] >>924 同じソースならどちらの環境でコンパイルしても同じアセンブリが出来る。 どちらのCLRで動かすかが問題でそこで挙動が異なる場合がある。
931 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:04:16 ] >>930 ありがとうございます intとか要注意ってことですか?
932 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:06:52 ] >>931 intは64bit環境でも32bitで固定。違いが出るのはIntPtr。
933 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:08:55 ] なるほど、ありがとうございました
934 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 20:21:50 ] >>932 製品開発統括部ブログだったかな? WinXP64はintもlongで扱ってると書いていたよ。
935 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 20:29:52 ] >>934 URLプリーヅ
936 名前:デフォルトの名無しさん [2009/03/27(金) 20:31:00 ] >>934 System.Int32が64ビットだっていいたいわけ?
937 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 20:31:56 ] >>935 前に探した時、アドレスが変わる前の記事だったようで見つからなかった
938 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 21:35:09 ] x64は64bit演算のほうが1バイト命令が長い、 ポインタ64、整数32でやる気満々のCPUだからそれはないと思うな。 03 c8 add ecx, eax 48 03 c8 add rcx, rax VC++も int = long = 32bit, long long = 64bitだし。
939 名前:920 mailto:sage [2009/03/28(土) 03:16:33 ] >>921 亀レスですみません。 なるほとIXmlSerializableという手がありましたね、すっかり忘れていました。 これを使って解決する機構をGenericsを使って汎用化できるものとして作ってみたいと思います。
940 名前:デフォルトの名無しさん [2009/03/28(土) 04:07:45 ] Windows.Formsについて質問です。 親子関係になっているコントロールにおいて、 親コントロールで子コントロールのイベントを捕獲する方法を知りたいです。 例えば、子コントロールの中にマウスカーソルがあって、 クリックされると通常は子コントロール側のClickedイベントが発生してしまいますが、 それよりも先に親コントロール側でClickedイベントが発生して欲しいのです。 暫定的な対処として、対象コントロールの子コントロール全てを再帰的に探索して それらのイベントハンドラに、イベント発生を中継通知するメソッドを登録しています。 が、これでは結局通知のみであってイベント発生自体の順序は変わらないし、 またControlAddedイベントでも、追加されたコントロールに対して更に処理を行っており、 こんな力技な方法、絶対間違っているのでは・・と思っています。
941 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 10:41:13 ] 子.Click += new System.EventHandler(親_Click); 子.Click += new System.EventHandler(子_Click); てこと?
942 名前:デフォルトの名無しさん [2009/03/28(土) 21:23:54 ] 朝生 「不可解な逮捕 東京地検 どうなる?小沢民主党」 (2009年03月28日) Part1 -75分- www.megavideo.com/?v=TBA1379H Part2 -75分- www.megavideo.com/?v=JDBPR8XN
943 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 21:35:40 ] >>940 WPFをつかう
944 名前:デフォルトの名無しさん [2009/03/29(日) 13:08:28 ] 質問です。 これまで以下のように VB6 の ADODB.Recordset Seek メソッドで .mdb 検索を行っていました。 rs.Seek Array(1006, 10), adSeekFirstEQ C# で再現する場合、 Seek メソッドの第1引数「Array メソッド」に相当するオブジェクトは何なのか教えてください。
945 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 13:27:57 ] >>944 データベースへのアクセスモデルからしてまるで変わっちゃってて、 ADOのことはよくわからないからズバリそのものな答えはちょっとわかんない。 Array 相当のものだったら、 new int[] とか new[] { 1006, 10 } とかで作れる。 キーに一致する最初の値をとりたいんだったら、LINQ to SQL 使って var keys = new[] { 1006, 10 }; var firstEq = table.First(x => keys.Contains(x)); とかでいけると思う。
946 名前:944 [2009/03/29(日) 13:53:30 ] >>945 ありがとうございます。 やってみましたが仰るとおり List<object> values = new List<object>(); values.Add(1006); object[] array = values.ToArray(); rs.Seek(array, SeekEnum.adSeekFirstEQ); 上記のように配列をそのまま渡すことで通りました、ただし値が単一の場合のみ。 下記のようにキー値を複数設定すると「パラメータが間違っています」っておこられる values.Add(1006); values.Add(10); どうしたらいいんだろな_| ̄|○
947 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 13:56:29 ] new object[] { 1006, 10 } じゃダメなんけ?
948 名前:944 [2009/03/29(日) 14:07:52 ] >>947 スマソ。 テーブル名、インデックス名のパラメータを間違えてただけだった。 キー値が複数の場合でもバッチリいけたわ。 ありがとう、無事解決です。
949 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 05:47:23 ] ところで、 ++ ++ で、#ちゅう事なん(´・ω・) スカ?
950 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 06:25:37 ] >>949 アンダース・ヘルスバーグはそう言ってる。
951 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 09:19:47 ] そんなこじゃれた名前つけるから検索しにくくなるのだ
952 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 14:23:11 ] .NETよりはまし。.NETの検索し難さといったら…
953 名前:デフォルトの名無しさん [2009/03/30(月) 14:24:12 ] でもCとかDよりいいよね
954 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 14:29:13 ] Bも忘れないであげて
955 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 17:53:03 ] VisualC#2008をインストールして、動作確認の為にWindowsFormsApplication1を 作成したのですが、デバッグ実行すると(0xc0000005)で終了してしまいます。 デバッグなしで実行だと、普通にウインドウが表示されます。 どうやら、プロジェクト名の長さが11文字以上だとこういう現象になるようです。 プロジェクト名が10文字以内というのは、ちょっと不便なのでなんとかしたいの ですが、対策をご存知の方がいましたら教えてください。
956 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 17:53:44 ] 今の今まで C,C++,C#相談室 だと思ってた
957 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 18:17:06 ] 昔はスレタイに # の文字入れると#が消えちゃってたから しつこく入れるようになったんだっけかw
958 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 19:11:59 ] 検索用じゃね? …と思ったら、1つ目と3つ目がどちらも ASCII のナンバ記号だった。
959 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 20:04:35 ] いつもは3つ目が全角のナンバー記号だよ。 次スレ立てる人は気をつけて。
960 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 22:46:02 ] この Part51 でそろそろ終わりにしようぜ
961 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 22:52:12 ] 2ヶ月で1スレ消費するようなペースって事は需要はあるのだろう。 Part51にもなって「そろそろ終わりに・・」ってのは今更すぎないかw
962 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 22:53:50 ] >>960 来なけりゃいいんじゃね?
963 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 00:36:10 ] スレタイに#を3パターンで書くのをこのスレで終わりしないかといってると上の流れを見ると思うのだが 俺がイカれてるのかな。そう解釈する俺が狂ってるだよなやっぱりそうとしか思えないうん
964 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 00:51:31 ] 他のC#スレも数パターン使ってるとこあるし、検索用に残しといていいんじゃね?
965 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 01:44:20 ] ところでおまいらC#で組んだもの、何に利用してるの? 仕事?
966 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 01:51:26 ] 研究 まあ仕事だけど
967 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 01:52:50 ] 俺は趣味でちまちま作ってる。 自分専用の痒い所に手が届くような小規模アプリが殆ど
968 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 02:27:50 ] C#で孫の手つくれんの?
969 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 02:30:22 ] つまんないよ
970 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 02:49:21 ] つまらないものを面白くするのがプログラミングだろjk
971 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 03:14:15 ] 窓の手ってそういう意味だったのか!素で気付かなかった
972 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 07:47:06 ] C井でいいんじゃね?
973 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 08:29:31 ] 思いっきり仕事だな。 来月あたりに客先とおしてそのユーザーに公開される(´・ω・`)
974 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 08:57:55 ] 趣味コードは全部C#。 仕事だと、社内ツールの類はC#で書いてる。
975 名前:デフォルトの名無しさん [2009/03/31(火) 10:08:11 ] 質問です。 PropertyGridで入れ子になっていて展開可能な項目を自動で展開したいです。 まずExpandAllGridItemsメソッドを調べてみましたが、これはカテゴリの展開専用で意味がありませんでした。 次に、GridItem.Expandedプロパティを見つけ、おおこれこそ捜し求めていたものと歓喜したのですが・・・ PropertyGridからGridItemの一覧を得る方法が分かりません。 SelectedGridItemがあって、なぜGridItemsが無いのでしょうか。
976 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 10:30:55 ] SelectedGridItemからParentたどってけば
977 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 11:12:02 ] Public Type Struct1 Member1 As String Member2 As Byte Member3 As Byte Member4(20) As String Member5(20, 1340) As Byte End Type Declare Function ExpFunc1 Lib "Library1.dll" _ (ByRef a_Struct1 As Struct1, _ ByVal a_iNumber1 As Long, _ ByVal a_iNumber2 As Long) As Long ソースのない「Library1.dll」とそれを利用するための 上のようなVB6のサンプルがあるんですが、 これをC#(2008/.NET3.5)で利用するにはどう書いたら いいんでしょうか? よろしくお願いします。
978 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 12:49:26 ] >>972 ++ ナ+ になっちまう
979 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 13:02:09 ] >>977 C#で参照してみれば? ラッパクラ出来てインテリセンスきくんじゃないかな?
980 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 13:19:21 ] >>979 --------------------------- Microsoft Visual C# 2008 Express Edition --------------------------- 'Library1.dll' への参照を追加できませんでした。 ファイルがアクセス可能で、有効なアセンブリまたは COM コンポーネントであることを確認してください。 --------------------------- OK --------------------------- COMじゃないとNGっぽいですね。
981 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 13:22:24 ] DllImportでぐぐればいいんじゃね
982 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 13:23:49 ] >>980 ごめん、VB6のDLLかと思ってた VB6はDLLはCOMになるから そういうことならReflection使ってみては? 色々他にもあると思うけど
983 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 13:25:08 ] 動的に呼び出しさせて何をさせようというんだ俺は・・・ 疲れてんだな
984 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 17:19:48 ] >>977 2次元配列のマーシャリングってできたっけ?>識者
985 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 17:35:29 ] 2次元配列はやったことないけど出来るはずだと思う
986 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 17:43:20 ] うお、今調べたら出来ないようだった、もうしわけない。 対策はいろいろあるそうだが、ストレートには出来ないそうだ。
987 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 18:18:17 ] とりあえずVB6の知識をひけらかすか Public Type Struct1 Member1 As String 'BSTR Member2 As Byte '1バイト Member3 As Byte '1バイト Member4(20) As String 'UTF16な文字が20文字 Member5(20, 1340) As Byte 'Option Base 0なら21×1341バイト End Type 何の役にたつかはしらん
988 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 18:44:38 ] >>987 >UTF16な文字が20文字 はこれじゃね? Member4 As String * 20 Member4(20) As String はStringの配列21 (Option base によるけど)
989 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 18:52:13 ] 立てれなかったから誰か任せた C#, C♯, C#相談室 Part52 ------------ (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part51 pc12.2ch.net/test/read.cgi/tech/1233757615/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>2-5 くらい
990 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 18:53:17 ] 「ふらっと」と「VS2008」スレが新スレになってるので更新。 >>3 >>5 はそのままでおkかな? ----- 関連スレ ふらっとC#,C♯,C#(初心者用) Part39 pc12.2ch.net/test/read.cgi/tech/1237051173/ Visual Studio 2008 Part 15 pc12.2ch.net/test/read.cgi/tech/1233853864/ WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3 pc11.2ch.net/test/read.cgi/tech/1231506876/ 【VB.NET】LINQ友の会【C#, C♯, C#】 pc11.2ch.net/test/read.cgi/tech/1202568694/ C#,C#の宿題片付けます。 pc11.2ch.net/test/read.cgi/tech/1197620454/
991 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 18:53:59 ] >>987 ,988 参考になります。 Option Base は無指定ですので、0ですかね。 UnmanagedType.BStr をヒントにもう少しトライしてみたいと思います。
992 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 19:15:52 ] VB、C#混合になってしまうが VB6で>>877 の標準モジュールを含むプロジェクトを作って VB.NETのアップグレードウイザードにかける。 やってみたがTODOが残るな・・・これもで手を入れないといけないようだ。
993 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 19:18:16 ] VB6もC#も中途半端な知識しか持っていないけどこんな感じではないのか、と質問していい? unsafe struct Struct1 { [MarshalAs(UnmanagedType.LPStr)] string Member1; byte Member2; byte Member3; [MarshalAs(SizeConst = 21)] string Member4[]; fixed byte Member5[21 * 1340]; }; [DllImport("Library1.dll")] static extern int ExpFunc1(ref Struct1 a_Struct1, int a_iNumber1, int a_iNumber2); unsafeが嫌なら [MarshalAs(UnmanagedType.U1, SizeConst = 21 * 1341)] byte Member5[,]; としてMember5 = new byte[21, 1341];
994 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 22:01:27 ] >>988 そうだった すっかり知識が抜け落ちてて愕然
995 名前:977 mailto:sage [2009/04/01(水) 09:48:39 ] UnmanagedType.LPStrとか UnmanagedType.BStrとか UnmanagedType.ByValArrayとか いろいろ試しましたが、どうにもうまく行かないので、 もう諦めてVB6でラップDLL作ってそれをC#で参照して 使うことにしました。 VB6のデバッガでもう少し粘るといいのかもしれませんが これで妥協しました。 いろいろありがとうございました。
996 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 09:55:35 ] MSDN見たか?まあ解決したならいいか
997 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:17:26 ] C#, C♯, C#相談室 Part52 pc12.2ch.net/test/read.cgi/tech/1238548552/
998 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:58:25 ] >>996 MSDNは 見まくり ですね。。 解決というか 逃げ ですけど、とりあえず やれることはやれるようになったので。 VB6側の状況がよくわからずに やみくもにやってもダメですね。 暇ができたら、ダミーの Library1.dll を作って VB6から呼んでみて、中がどうなってるのか 確認してから再挑戦してみたいと思います。
999 名前:デフォルトの名無しさん [2009/04/01(水) 12:33:10 ] MSDNよりPInvoke
1000 名前:デフォルトの名無しさん [2009/04/01(水) 13:14:28 ] 1000いただきまーす♪
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。