1 名前:デフォルトの名無しさん [03/10/04 01:02] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 少しずつC#プログラマを名乗るものが現れました。みなさん一緒に勉強しましょう。 前スレッドはこちら pc2.2ch.net/test/read.cgi/tech/1059028988/l50 (Part4) pc2.2ch.net/test/read.cgi/tech/1047210828/l50 (Part3) pc2.2ch.net/test/read.cgi/tech/1035895873/l50 (Part2) pc2.2ch.net/test/read.cgi/tech/1023766485/l50
161 名前:デフォルトの名無しさん [04/07/10 10:30] > 「ネイティブコード吐けるJava」みたいな認識 全然違う > やっぱASPで使ってんの? ASP.NET か? > それともクライアントアプリ? どっちもだろ。
162 名前:156 mailto:sage [04/07/10 12:47] >>160 あー、「結局どーしてーのよ?」みたいななるわな。 具体的にはC/Sタイプのアプリのクライアント側を何で作るか迷ってるのよ。 仕事の合間の趣味の話だから手ごろそうなC#がいいのかなと。 どんなん作りたいかっていうと、MSメッセンジャーみたいのだと思ってくれればいいな。 >>161 全然違うんか。 今まではクライアントアプリっつーとVCかDelphiか、まぁVBとかだったわな。 VCしかできねーけど。 んでひょっこりでてきたC#はどーなのよと思ってな。 Javaでもいんだけど、インストールの説明に「J2SE1.4ランタイムが必要です」って書くのと、 「.NETFrameforkランタイムが必要です」って書くのとじゃちょっとイメージ違うしな。
163 名前:名無しさん@そうだ選挙に行こう [04/07/11 10:34] terrarium1.2になりますた www.terrariumgame.net/terrarium/
164 名前:名無しさん@そうだ選挙に行こう [04/07/11 12:50] >>162 次期VS.NET(2005)は単体言語版(C#だけとか)で Web(ASP.NET)機能を除いたグレードのものが格安で 出るらしいです。 趣味ならこれ使ってC#の非Webアプリを創るのが 非常に快適ではないかと思う。VCできるならなおさら VB.NETに走る必要もないわけだし。 一つだけ問題があるとすれば、2006〜2007年予定の 次世代Windows(Longhorn)までは.NETFrameworkが デフォのAPIじゃないことだろう。なのでフリーウェアとか シェアウェアで早期にアプリを公開するつもりなら これは向いていない。
165 名前:名無しさん@そうだ選挙に行こう mailto:sage [04/07/11 13:28] C#にはウニオン型は無いの?
166 名前:名無しさん@そうだ選挙に行こう mailto:sage [04/07/11 13:45] struct でオフセット弄る
167 名前:名無しさん@そうだ選挙に行こう mailto:sage [04/07/11 15:14] int?ってなんか萌えるな
168 名前:156 mailto:sage [04/07/11 20:52] >>164 素敵情報サンクス。 サーバ(C++)とクライアント(Java)で作りつつ、 教えてくれた安価モデルが発売されたらクライアントをC#に移植 みたいな方向で考えてみるよ。 時期OSで.NETFrameworkが標準じゃなくなるってのは寝耳に水だけど、 さすがにバンドルされてないとは考えられないから、 あまりそっちは気にしなくていいかもな。 でもちょっと怖いから調べててみることにする。 マジサンクス!
169 名前:デフォルトの名無しさん mailto:sage [04/07/12 10:00] > 時期OSで.NETFrameworkが標準じゃなくなるってのは寝耳に水だけど そんなこと誰も書いてないでしょ
170 名前:デフォルトの名無しさん mailto:sage [04/07/12 15:03] >>165 なくなっちゃったよ、せっかくintやらのビット数固定にしたんだから、 その範囲でのみでても付けてもらえると便利っていうか、Cより安全確実でよかったんだけどね。 ちょとさびしい。 頑張ってstruct使ってビットフィールド操作関数作るしかないっすね。
171 名前:デフォルトの名無しさん mailto:sage [04/07/12 15:56] >>169 WinFXのことだろ。
172 名前:156 mailto:sage [04/07/12 23:10] defaultとstandardはこの場合同意語にならんか? それともそーゆーことじゃないのか? なんにせよいろいろややこしそうだな。
173 名前:デフォルトの名無しさん [04/07/14 16:27] 生成済みのオブジェクトの型を調べて、 それの型と同じ型で new をする方法があったら教えてください。 class ClassA() { ... } class ClassB() { ... } ... class MyApp { void test() { object [] list = { new ClassA() , new ClassB() } ; foreach( object i in list ) { sub( list[ i ] ) ; } } void sub( object a ) { 「aの型=ClassA/ClassB」 localData = new 「aの型=ClassA/ClassB」() ; ... } } といった事をしたいのですが、System.Reflection を使えばできると聞いたのですが、 分りやすいサンプルがあったらよろしくお願いします。
174 名前:デフォルトの名無しさん mailto:sage [04/07/14 16:40] >>173 object localData = a.GetType().GetConstructor().Invoke( new object [] {} );
175 名前:デフォルトの名無しさん mailto:sage [04/07/14 17:02] >>174 有難うございます、助かりました。
176 名前:デフォルトの名無しさん mailto:sage [04/07/14 23:14] >>175 でも、実装の仕方としては、class A, B を ICloneable にして Clone() メソッド書くのが普通な気が。
177 名前:デフォルトの名無しさん mailto:sage [04/07/14 23:28] >>175 それでほんとに問題ないのかちゃんと確認した方がいいぞ。
178 名前:デフォルトの名無しさん mailto:sage [04/07/15 06:59] >>176 リフレクションの使い方の取っ掛かりが欲しかったので、構わないんです。 コンストラクタ以外にもメソッドを呼び出すときに、もっと複雑なことになるし、この辺りは覚悟していましたし いずれにしても template が実装されるまでの繋ぎなので。
179 名前:デフォルトの名無しさん mailto:sage [04/07/15 07:06] >178 どうtemplateにからむんでしょう?個人的に興味
180 名前:デフォルトの名無しさん mailto:sage [04/07/15 19:08] ダウンキャストを知らないだけだったりして…
181 名前:デフォルトの名無しさん [04/07/15 20:30] C#の宿題スレはまだ無いみたいなのでここにて。 C#で簡易telnetを作れという問題です。通信の方法がそもそも分かりません
182 名前:デフォルトの名無しさん mailto:sage [04/07/15 21:02] >>181 ソケット作れ
183 名前:デフォルトの名無しさん mailto:sage [04/07/15 21:10] 言語依存じゃない部分が分かってないんだろ?
184 名前:デフォルトの名無しさん mailto:sage [04/07/15 21:11] >>181 TCPで接続してTELNETプロトコル話せばいいだけ www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=telnet+%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB
185 名前:デフォルトの名無しさん [04/07/20 13:26] IList をインターフェイスに持つオブジェクトでシリアル化する時、上手く行かなくて地団駄踏んでいます。 System.Runtime.Serialization.Formatters.Soap.SoapFormatter で、オブジェクトをXmlにシリアライズする時は ISerializable でカスタマイズできるみたいですが、 System.Xml.Serialization.XmlSerializer で、オブジェクトをXmlにシリアライズする時でカスタマイズできる方法は無いんでしょうか? 知っている人いますか? IList を入れていると、XmlSerializerが頑張っちゃって自動的にシリアライズしてしまうみたいで・・・ IListが入っていても普通のクラスのように振舞わせる事はできないのでしょうか?
186 名前:デフォルトの名無しさん mailto:sage [04/07/20 15:14] >>185 取りあえず簡単なIListを実装したコレクションを作ったけど普通にシリアライズ・デシリアライズできたぞ。 XmlSerializerは手軽に使えてカスタムしにくいのが特徴なので、まあいろいろ勘案して。 シリアライズ用の別クラスを作るとか。
187 名前:デフォルトの名無しさん mailto:sage [04/07/20 15:23] あ〜、>186の一行目はちょっと勘違いというか見当違い。無視して。
188 名前:デフォルトの名無しさん mailto:sage [04/07/20 15:23] >>186 あぅ、書き損じたんですが、添え字にマイナス値を使えるようにするとアウトなんですよ。 ヘルプを見ると、this[int]インデクサプロパティーを見ているようで、Countとセットで 動作しているみたいなんです。 当然動作するわけも無いのですが、ここでIListを見て勝手に動作されるとちょっと具合が悪いので、 この機能に寝ていてもらいたいのですが、手段が見つからない・・・・
189 名前:デフォルトの名無しさん [04/07/22 11:01] 単純に足し算するだけのメソッドなんですが、 public int Add() { return 10+10; } 下のように使うと、Add()の戻り値は変数aに入りますよね。 public void Test() { int a = Add(); } 以下の場合だと、Addの戻り値はどこへ格納されるんでしょうか? publi void Test() { Add(); }
190 名前:デフォルトの名無しさん mailto:sage [04/07/22 11:03] そのまま破棄されるだけだが。
191 名前:デフォルトの名無しさん mailto:sage [04/07/22 12:31] C系言語の特徴で int main() { 10 ; } とやっても、文としては正しいと認識されます と、書こうとして、C#でやったら、意味が無いって怒られました。 さすがにチェックすることにしたみたいですね。
192 名前:デフォルトの名無しさん [04/07/27 20:11] public int hoge; //hogeは1から100をとる 上の場合、publicだから外からどんな値が来るかわかりません。 hogeに値が代入された時に、hogeが正しい値かどうかを調べるにはどうしたらいいんですか
193 名前:デフォルトの名無しさん mailto:sage [04/07/27 20:16] >>192 プロパティにしてsetアクセサの中でチェックする。 つかまさにそのためにプロパティがあるんだが。
194 名前:デフォルトの名無しさん mailto:sage [04/07/27 20:17] プロパティにする
195 名前:デフォルトの名無しさん mailto:sage [04/07/27 20:28] set{ if(value >= 1 && value<=100) hoge = value; else throw new FormatException(); } みたいにすればいいんですね。なるほど
196 名前:デフォルトの名無しさん mailto:sage [04/07/27 20:31] どうでもいいがその例だとArgumentOutOfRangeExceptionの方が妥当だな。
197 名前:デフォルトの名無しさん mailto:sage [04/07/31 15:21] >>195 public int hoge { set { if (1 <= value && value <= 100) hoge = value; else throw new ArgumentOutOfRangeException(); } } ちょっと無理っぽいが、通るのか?
198 名前:デフォルトの名無しさん [04/07/31 18:44] GDI+はGDIより遅いって本当ですか?
199 名前:デフォルトの名無しさん mailto:sage [04/07/31 19:54] >>198 自分で作って確かめろ、タコ
200 名前:デフォルトの名無しさん mailto:sage [04/07/31 20:58] >ちょっと無理っぽいが、通るのか? なんで?
201 名前:198 [04/08/01 09:38] >199 GDIはBitbltで GDI+はGraphics.DrawImageで 確かめて良いですか?
202 名前:デフォルトの名無しさん mailto:sage [04/08/01 11:55] GDI+は長角まで待つべし
203 名前:デフォルトの名無しさん mailto:sage [04/08/01 12:31] リフレクションを使ってラムダ式を動的に作りたいのですが、 参考になるHPや良い方法があったら教えてください。 例えば、正規分布関数のクラスが、以下のように存在していて public class DistributionFunctions { public static dobule Normal( double x , double a , double v ) { return 1.0 / Math.Sqrt( 2 * Math.PI * v ) * Math.Exp( -(x-a)*(x-a)/( 2 * v ) ) ; } ... } やりたい事は、 delegate double DoubleToDoubleDelegate( double x ) ; public class DistributionDelegates { static DoubleToDoubleDelegate MakeNormal( double a , double v ) { ここに手際よく大量生産できるコード } } 使い方は void hogehogeMethod() { DoubleToDoubleDelegate df = MakeNormal( 0.0 , 1.0 ) ; y = df( 0.0 ) ;// ここで y = Normal( x , 0.0 , 1.0 ) が呼び出される }
204 名前:デフォルトの名無しさん mailto:sage [04/08/01 16:03] >>203 よくわからんけど、こんなこと↓がしたいの? using System; public class DistributionFunctions { double a; double v; public DistributionFunctions(double x, double y){ a = x; v = y; } public double Normal( double x ) { return 1.0 / Math.Sqrt( 2 * Math.PI * v ) * Math.Exp( -(x-a)*(x-a)/( 2 * v ) ) ; } } delegate double DoubleToDoubleDelegate( double x ); class Hoge { static DoubleToDoubleDelegate MakeNormal( double a , double v ) { //ここに手際よく大量生産できるコード DistributionFunctions f = new DistributionFunctions(a, v); return new DoubleToDoubleDelegate(f.Normal); } static void Main() { DoubleToDoubleDelegate df = MakeNormal( 0.0 , 1.0 ) ; double y = df( 0.0 ) ;// ここで y = Normal( x , 0.0 , 1.0 ) が呼び出される Console.WriteLine("y = {0}", y); } }
205 名前:204 mailto:sage [04/08/01 16:27] public class DistributionFunctions { の{の前に全角スペースが入ってた。。。鬱
206 名前:デフォルトの名無しさん mailto:sage [04/08/01 16:28] C#でGDIをつかうすべはあるのか?APIの直たたきならGDIをつかえる?
207 名前:デフォルトの名無しさん mailto:sage [04/08/01 18:33] >>204 方法は問わないんですが、そうです、そんな感じです。 そこで、関数の引数を確保するクラスを作る必要がありますよね。 関数の数が多くて、これを全部自動生成してしまいたいんです。
208 名前:204 mailto:sage [04/08/01 20:00] >>207 > そこで、関数の引数を確保するクラスを作る必要がありますよね。 > 関数の数が多くて、これを全部自動生成してしまいたいんです。 204の例を使っても、好きなだけ関数は作れるけど。。。↓こういうことではない? static void Main() { double d1 = 1.0; // 数字は適当 double d2 = 1.0; // 数字は適当 DoubleToDoubleDelegate[,] df = new DoubleToDoubleDelegate[10,10]; for(int i=0; i < 10; i++, d1 += 0.2){ for(int j=0; j < 10; j++, d2 += 0.2){ df[i,j] = MakeNormal( d1, d2); } } for(int i=0; i < 10; i++){ for(int j=0; j < 10; j++){ double y = df[i,j]( 0.0 ) ; Console.WriteLine("y = {0}", y); } } }
209 名前:デフォルトの名無しさん mailto:sage [04/08/01 21:52] >>208 ども、お手数掛けてすみません。 対象となる関数は、正規分布関数のようにパラメータ二つだけとは限りませんし、 今後、多変数に対応するにあたって、このまま場当なやり方で行きますとプログラムの保守が危機的になると考え 第一段階として、現在はC#のソースコードを自動生成するプログラムを作って対応しています。 しかし、これも必ずしも良い方法とも言えず、もっと効率的にプログラムできる方法として、 色々探している内にリフレクションという物を使ってみようかと考えていました。 さっそく始めてみたのですが、これがチュートリアルの良いページがなかなか見つからなくて・・・・ ちなみに僕自身、ここに書き込む前に色々考えたのですが、 一般的なC#の構文を使った範囲内ではおそらく良い解決方法はないだろうというのが結論でした。
210 名前:デフォルトの名無しさん [04/08/01 22:20] はじめまして、 C#でデータベースに関することを勉強しています。 ボタンを押すとアクセスに「123」というデータを追加するプログラムを書いています。 壁にぶつかりましたので、ご指導していただけませんか。 odbcDataAdapter1などの設定し、以下のボタンの内容を書きました。 odbcConnection1.Open(); odbcDataAdapter1.InsertCommand.Parameters["@ab"].Value="123"; odbcDataAdapter1.InsertCommand.ExecuteNonQuery(); odbcDataAdapter1.Fill(dataSet11); odbcConnection1.Close(); すると 'System.IndexOutOfRangeException' のハンドルされていない例外が system.data.dll で発生しました。
211 名前:デフォルトの名無しさん mailto:sage [04/08/01 22:24] > 対象となる関数は、正規分布関数のようにパラメータ二つだけとは限りませんし、 > 今後、多変数に対応するにあたって、このまま場当なやり方で行きますとプログラムの保守が危機的になると考え > 第一段階として、現在はC#のソースコードを自動生成するプログラムを作って対応しています。 これが結構まっとうな方法な気もしますが。。。 もしかして、パラメータが変わるだけではなく、どんな関数を作るかは あらかじめ決まってない、ってことですか? C++でいえば、boost::lambdaみたいなことをしたいのかなぁ? > しかし、これも必ずしも良い方法とも言えず、もっと効率的にプログラムできる方法として、 > 色々探している内にリフレクションという物を使ってみようかと考えていました。 リフレクションで出来るかどうかはわかりませんが、一応参考に。 members.jcom.home.ne.jp/1213687801/cs/reflection/reflection4.html www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemreflectionemittypebuilderclasstopic.asp
212 名前:デフォルトの名無しさん mailto:sage [04/08/01 23:01] >>210 ここにある例が参考になりませんかね。 www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdatasqlclientsqldataadapterclassinsertcommandtopic.asp
213 名前:デフォルトの名無しさん mailto:sage [04/08/02 08:36] 普通に IDbCommand.ExecuteNonquery() はダメなの?
214 名前:デフォルトの名無しさん [04/08/03 21:03] プログラムの構造をどうしたらいいのかが分かりません。 例えば、オセロプログラムを考えるとします。 オセロのマスの部分にButtonから継承したクラスMasuを使います。 Masuを8*8個集めた配列をBoardとします。 オセロゲーム ━━ Board (集約する)━━ Masu という風になっていますが、 Masuがクリックされた時に 隣のマスをひっくり返すかどうか走査するとしても、 Masuからは隣のMasuなんて分かりませんよね? だからBoardに頼んで調べてもらいたいわけですが どうやったらそうできるのかがわからないです。どうしたらいいのですか?
215 名前:デフォルトの名無しさん mailto:sage [04/08/03 21:07] X 配列Board O クラスBoard でした
216 名前:デフォルトの名無しさん mailto:sage [04/08/03 21:43] >>214 Masu に必要な機能は、 ・そのマスの内容を保持 ・画面に描画する ・クリックされたことを、Board に通知する の3つでいいんじゃない? ひっくり返すのは、Board でやればいい。
217 名前:デフォルトの名無しさん [04/08/03 23:21] >>216 その三番目のboardに通知する方法が分からんですよ。
218 名前:デフォルトの名無しさん mailto:sage [04/08/03 23:32] >>217 Clickイベント。
219 名前:デフォルトの名無しさん mailto:sage [04/08/03 23:51] >>217 boardのメソッドの引数に自分を渡せばいい。
220 名前:デフォルトの名無しさん mailto:sage [04/08/04 00:18] >214 もっと PlayerとかTurnMasterとかJudgeとかつくれや。Masuはいらん
221 名前:デフォルトの名無しさん mailto:sage [04/08/04 00:53] >>220 高度すぎ。質問者をみて答えてやれよ。
222 名前:デフォルトの名無しさん mailto:sage [04/08/04 00:56] >221 書き込んだ後そう思った.すいません。 Masu作るときにボードを引数で渡してそれ使う.それかイベント
223 名前:デフォルトの名無しさん [04/08/04 23:39] こういうのってできるかな? void Hoge( params object [] arg ) の ref バージョンで void Hoge( ref object arg0 , ref object arg1 , ref object arg2 ... ) ; の様な物。 必要個数分オーバーロードするしかないかな?
224 名前:デフォルトの名無しさん [04/08/05 00:33] コントロールのクライアント領域について質問です。 以下のような Panel を継承したクラスをつくりました。 public class PanelEx : System.Windows.Forms.Panel { public PanelEx() { } protected override void OnPaint(PaintEventArgs e) { base.OnPaint (e); Pen p = new Pen(Color.Black, 1); e.Graphics.DrawRectangle(p, this.ClientRectangle); p.Dispose(); } } この PanelEX クラスのインスタンスを、普通に Form1 の コンストラクタ内で生成したところ、画面には PanelEx の 左側と上側にしか線がひかれません。 なぜでしょうか?また、どうすればちゃんと矩形が描かれますか?
225 名前:デフォルトの名無しさん mailto:sage [04/08/05 00:55] >>224 はみ出て見えないので矩形を小さく、例えば幅と高さを-1にしたりする。
226 名前:224 [04/08/05 01:29] >>225 ええええー。なぜそんな仕様になってるんでしょうか?
227 名前:デフォルトの名無しさん [04/08/05 02:00] >>226 厨避けの為。
228 名前:デフォルトの名無しさん mailto:sage [04/08/05 02:03] >>226 別におかしくないよ。 www.microsoft.com/japan/msdn/library/ja/jpdnprogwincsharp/htm/chapter15.asp?frame=true
229 名前:デフォルトの名無しさん mailto:sage [04/08/05 10:20] >>220 ウヒャー 220さんの高度な設計だと、どんな風になるんですか? コードをつけながら説明してほしい・・・
230 名前:デフォルトの名無しさん mailto:sage [04/08/05 19:29] >>229 高度 コード !?
231 名前:デフォルトの名無しさん [04/08/05 22:23] 超基本で悪いんだけど、 int i = Console.Read(); Console.WriteLine(i); これでたとえば「2」を入力すると出力が「50」なんてなるんですが、なぜなのでしょうか?
232 名前:デフォルトの名無しさん mailto:sage [04/08/05 22:31] >>231 コンピュータの中では、「文字」ってのは一定のルールで数字の列に変換されて扱われてます。 このルールのことをエンコーディング、数字(の列)のことを文字コードと呼んだりします。 んで、文字の "2" に対応するコードが 50 (16進数で 0x32) なわけです。 ファイルやネットワーク等での読み書きは、byte の列を使って行われるのが基本で、 .Net Framework で文字列からこのバイト列に(またはその逆に)変換するには、 Encoding クラス(のインスタンス)を用います。
233 名前:デフォルトの名無しさん mailto:sage [04/08/05 22:31] P.S. "2"という文字列から、数字の 2 に変換するには、Int32.Parse() などを使います。
234 名前:231 mailto:sage [04/08/05 22:36] >>232 文字コードを実数値にしないといけないんですね。 丁寧な即レスありがとうございます。
235 名前:デフォルトの名無しさん mailto:sage [04/08/06 00:26] 久しぶりにきたが、なんだかいいスレになってるじゃねーか!
236 名前:デフォルトの名無しさん mailto:sage [04/08/06 07:42] コンソールはほとんど勉強してなかったから試してみたんだけど char c = (char)Console.Read(); とすれば、そのまま表示できまっせ。MSDNだとintを返すことになってるから まぎわらしいんだけどね。
237 名前:デフォルトの名無しさん [04/08/06 07:43] こんにちは 今画像のサムネイル保存用に複数画像をまとめてひとつの ファイルにしようとしています。 Aファイルサイズ・Aファイル・Bファイルサイズ・Bファイル・・・ みたいな感じ合成し、インデックスで呼び出そうかと思っています。 で、ふと思ったのですが、そういう複数のファイルをまとめてしまう クラスって既にあったりするのでしょうか。 よろしければお教えください。よろしくお願いいたします。
238 名前:デフォルトの名無しさん mailto:sage [04/08/06 09:33] Bitmap imageA = new Bitmap("A.bmp"); Bitmap imageB = new Bitmap("B.bmp"); Bitmap imageC = new Bitmap("C.bmp"); Bitmap bmp = new Bitmap(300, 100); Graphics g = Graphics.FromImage(bmp); g.DrawImage(imageA, 0, 0); g.DrawImage(imageB, 100, 0); g.DrawImage(imageC, 200, 0); g.Dispose(); bmp.Save("ABC.bmp"); bmp.Dispose(); imageA.Dispose(); imageB.Dispose(); imageC.Dispose();
239 名前:デフォルトの名無しさん [04/08/06 10:42] そうきましたか・・・ Hash的に名前で簡単にストリームを取り出せるような 仕組みが既存クラスにないかなーとか思っていたのでした。 やはり頑張って自分で実装してみます。 ありがとうございました。
240 名前:デフォルトの名無しさん mailto:sage [04/08/06 11:04] 参照設定でvjslib.dll(Microsoft Visual J# .NET Class Library)を追加して、java.util.zipで
241 名前:デフォルトの名無しさん [04/08/06 11:42] !!! なるほど! 早速やってみます。 ありがとうございました!
242 名前:デフォルトの名無しさん [04/08/06 23:07] DirectX 9.0 SDK (Summer 2004)の日本語ドキュメントをインストールしたんだが、 VS.NET2003に反映されないのです。 なんでなんでしょう・・・そういう方他にいますか?
243 名前:最凶VB厨房 mailto:sage [04/08/06 23:20] まずは再起動
244 名前:242 mailto:sage [04/08/06 23:24] >>243 再起動もしたんですがダメでした。
245 名前:最凶VB厨房 mailto:sage [04/08/06 23:28] SDK本体は入れてるのよな? まっわからんけど
246 名前:デフォルトの名無しさん mailto:sage [04/08/06 23:32] >>242 フィルタか?
247 名前:242 mailto:sage [04/08/06 23:52] 英語版ヘルプははいってるんですが・・・ フィルタもなしになってます。 本来ならVS.NET起動時に「ヘルプを反映中・・」とかでますよね?
248 名前:242 mailto:sage [04/08/07 01:01] 連結ヘルプ コレクション マネージャで更新できました。 お騒がせしました。(・∀・)
249 名前:デフォルトの名無しさん mailto:sage [04/08/07 11:42] >>242 DirectX9 SDK Summer2004の日本語ドキュメントってもう出てたの?
250 名前:デフォルトの名無しさん mailto:sage [04/08/07 11:51] >>249 変な書き方しちゃいましたね。 2004入れてから日本語ドキュメント入れたら〜でした。スマソ
251 名前:デフォルトの名無しさん [04/08/07 13:25] 外部プロセスに確保した領域をPtrToStructureすると例外が発生するのは何故でしょうか。どうかご教授お願いします。 using HANDLE=System.IntPtr;using LPVOID=System.IntPtr;using SIZE_T=System.UInt32;using DWORD=System.UInt32; class CMyApp:System.Windows.Forms.Form { [System.Runtime.InteropServices.DllImportAttribute("kernel32")] static extern LPVOID VirtualAllocEx(HANDLE hProcess,LPVOID lpAddress,SIZE_T dwSize,DWORD flAllocationType,DWORD flProtect); DWORD PAGE_READWRITE=0x04; DWORD MEM_COMMIT= 0x1000; static void Main() { System.Windows.Forms.Application.Run(new CMyApp()); } CMyApp() { this.Click+=new System.EventHandler(OnClick); } void OnClick(object sender,System.EventArgs e) { LPVOID 自分側の領域=VirtualAllocEx(System.Diagnostics.Process.GetCurrentProcess().Handle,(LPVOID)0,(DWORD)System.Runtime.InteropServices.Marshal.SizeOf(typeof(System.TimeSpan)),MEM_COMMIT,PAGE_READWRITE); LPVOID 他人側の領域=new LPVOID(); foreach(System.Diagnostics.Process inc in System.Diagnostics.Process.GetProcesses()) if("Explorer"==inc.ProcessName) 他人側の領域=VirtualAllocEx(inc.Handle,(LPVOID)0,(DWORD)System.Runtime.InteropServices.Marshal.SizeOf(typeof(System.TimeSpan)),MEM_COMMIT,PAGE_READWRITE); System.Runtime.InteropServices.Marshal.PtrToStructure(自分側の領域,typeof(System.TimeSpan));//自分側の領域では例外は発生しない System.Windows.Forms.MessageBox.Show("次で例外発生"); System.Runtime.InteropServices.Marshal.PtrToStructure(他人側の領域,typeof(System.TimeSpan)); } }
252 名前:デフォルトの名無しさん mailto:sage [04/08/07 14:35] >>251 非Managedなプロセス空間にManagedな構造体を確保する意味がさっぱりわからないんだが。 ttp://dotnetjunkies.com/WebLog/chris.taylor/archive/2004/05/31/14828.aspx とりあえず外部プロセスへのちょっかいの参照。
253 名前:251 [04/08/07 15:56] 252さんアドバイスありがとうございます。 これをやりたい理由は、興味本位で出来るかどうか試したかっただけです。 とりあえず上のURLをよく読んで見ます。
254 名前:デフォルトの名無しさん mailto:sage [04/08/07 18:02] おまいら、コールバックにデリゲートとインターフェースの どっち使ってる? JavaのGUIのリスナーみたいなケースなら、デリゲートの 方が何もしないメソッドまで記述しなくて済むし効率いいかな。
255 名前:デフォルトの名無しさん mailto:sage [04/08/07 18:30] >>254 俺は Java 出身だから、ある程度一まとまりの処理をくっつけるならインターフェイス使っている デリゲートは纏まり間が無くて、単体なら遣いやすいけど微妙
256 名前:デフォルトの名無しさん mailto:sage [04/08/07 21:19] 俺はデリゲート派
257 名前:デフォルトの名無しさん mailto:sage [04/08/07 21:22] anonymous class は使えないが、anonymous delegate は使えるようになるので、 デリゲートにしておくのが無難なのでは。
258 名前:デフォルトの名無しさん mailto:sage [04/08/07 23:45] 非常に唐突な質問で申し訳ないが、C#で、というか.NET Frameworkで 各ドライブのボリュームラベルを取得するのってどうやるんだべさ? なんかAPI叩くしかなかったら非常に鬱なので教えてエロイ人!
259 名前:デフォルトの名無しさん mailto:sage [04/08/07 23:48] >>258 DriveInfo.VolumeLabel かな。 …… .NET Framework 2.0 だけど。
260 名前:デフォルトの名無しさん mailto:sage [04/08/08 00:00] 2.0で変更になったクラスの一覧ってないかな?
261 名前:デフォルトの名無しさん mailto:sage [04/08/08 00:06] >>259 やっぱ2.0になっちまうのか・・・。 何故こんな基本的なもんが実装されてないんだと小一(ry