1 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 18:23:31 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part45 (実質46) pc12.2ch.net/test/read.cgi/tech/1255658236/
175 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 12:15:03 ] C#とかの仕様の問題じゃなく、単にアルゴリズムの間違いだと思う。 ネタ元ページの走査開始点の式に出力画像の幅高さが出てこないのが変。 アイデアとしては、図の通り斜めにコピーするのは納得できる。 でも、コピー先の領域(出力画像の幅高さ)を適用しないと、コピー元での走査 開始点座標が求まるはずが無い。 幾何学的意味は、回転中心を元先で合わせて、先領域を回転させて先領域の (0,0)が該当する位置を、元領域での走査開始点とするから。 よって、式が疑わしい。 回転の中心と画像の中心をごっちゃにして間違ってるんじゃないかなコレ? 書かれているように画像の中心なら幅高さとは別に用意されてる意味がない。
176 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 12:31:00 ] >>175 そうなんですか じゃー動くやつであとはLockBitsして高速化してみます
177 名前: softbank221086123053.bbtec.net mailto:sage [2009/11/07(土) 13:47:07 ] たとえば、string変数の abc[def]ghi があるとして、 [と]の間にある文字列を取得する場合はどのように書けばいいのでしょう
178 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 13:49:58 ] いや、回転中心も原点からの座標値だから正しい。175は勘違い。
179 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 13:52:18 ] >>177 String#Substring メソッド
180 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 13:56:21 ] >>177 Regex
181 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 14:18:07 ] >>142 セダンの運転手を雇ってる人が一番エライ Access使いだろうがC#使いだろうがただのしもべ
182 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 14:26:56 ] はいw
183 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 14:36:22 ] >>173 × int_sin = (int)(Math.Sin(A) * 1024); × int_cos = (int)(Math.Cos(A) * 1024); ○ int_sin = -(int)(Math.Sin(-A) * 1024); ○ int_cos = (int)(Math.Cos(-A) * 1024); × DYX = int_sin; ○ DYX = -int_sin; × BmpBufRot.SetPixel(y2, x2, BmpSource.GetPixel(y1, x1)); ○ BmpBufRot.SetPixel(x2, y2, BmpSource.GetPixel(x1, y1)); で動いた。
184 名前:中学生 mailto:sage [2009/11/07(土) 14:36:42 ] じゃあセダンの運転手を雇っててACCESSとC#の使える俺が一番偉いんかったんや!!
185 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 15:02:55 ] もっと面白い事言えんのかね
186 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 15:05:06 ] 名前欄に中学生とか書いちゃうような人に期待するだけ無駄
187 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 15:30:03 ] >>183 うおおお 神! ばっちりでした!
188 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 15:49:36 ] ちなみに>>171 の変更は必要ですか?
189 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 16:21:54 ] >>183 1つ目必要ないし
190 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 16:45:42 ] >>188 必要。 >>189 ああっっ、いらんわ確かに。
191 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 17:15:24 ] AxWindowsMediaPlayerを使い音楽ツールを作っているのですが、 プレイリストを作り順再生/ランダム再生を行おうと思い、 AxWMP.currentPlaylist.appendItem(newsong); こうすれば追加は可能ですが、 何番目の曲をプレイリストから削除することや、 現在プレイリストに入ってる曲をリストボックスに表示する方法が分かりません。 プレイリストを配列で取得・・・できるようなメソッドはありませんよねぇ・・・
192 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 17:27:17 ] SDK見ただけだけど IWMPPlaylist.Item (VB and C#) The Item property (the get_Item method in C#) gets an interface to the media item at the specified index. とか IWMPPlaylist.count (VB and C#) The count property gets the number of media items in a playlist. とか IWMPPlaylist.removeItem (VB and C#) The removeItem method removes the specified media item from the playlist. とかあるけど、駄目なのか?
193 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 20:48:35 ] >>189 ありがとうございます >>190 了解です ありがとうございました
194 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 20:48:51 ] Graphics
195 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 20:50:44 ] お、やっと解除された。 >>173 モバイル環境で開発してるみたいだけど、PixtureBoxもGraphicsも使えるんだろ? そしたら拡大だろうが回転だろうがその範囲で自由にできると思うんだけど。 なぜそれくらいでゴリゴリベタなバイナリを触ろうとするのかがよく分からないな。
196 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:22:53 ] CompactFrameworkには回転もアフィン変換も無いんだよ
197 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:18:40 ] RectangleFとかPointFとかfloat座標使えないし、コンストラクタのオーバーロードも 軒並みアウトで作ってからシコシコとプロパティ設定とかだしな。 まあしかし、手作り感がたまらないという。なんというかマゾヒズム?
198 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:43:07 ] VisualStudioのc#で実行したら binのDebutにexeができて ビルドを選んだらReleaseにexeができるけど ビルドで作られたexeとDebugのexeはなんか違いあるの?
199 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:49:54 ] それは自分で設定する。最適化の有無とかDEBUG定数の定義とか。
200 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 23:03:37 ] まあC#の場合は大した違いはない
201 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 06:31:04 ] 191です AxWMPのプレイリスト機能を使うのではなく、 配列でプレイリストのかわりにURIを持ち、 PlayStateChangeイベントハンドラで 再生終了後、配列から次のURIを読むようにしているのですが、 axwmp.Ctlcontrols.stop(); axwmp.URL = SongsPlaylist[i].ToString(); axwmp.Ctlcontrols.play(); この最後のplayメソッドが働らいていないようです。 これはどうすれば良いでしょうか?
202 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 09:07:22 ] BeginInvokeでplayの呼び出しを遅延させる
203 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:02:12 ] >>202 ありがとうございます。 URIが送られてPlayStateChangeイベントが発生したからのようですね。 初歩的なことでした;ありがとうございました。
204 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:49:35 ] VB、C#とやってるんですが、 次手を出すなら何が良いと思いますか?
205 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:54:52 ] 他の言語に手を出す前に、VB と C# を究めたら?
206 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:55:24 ] 何がやりたいかによるんじゃ? .NETつながりでIronPython、、つまりPythonとかどうよ
207 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:55:35 ] >>204 プログラミング言語はプログラムを作る道具であって、 それに手を出すこと自体に意味があるわけではないよ。 とはいえ異なるプログラミング言語に触れることで思考の引き出しは増えていくので、 暇があるときに他の言語を試してみるというのも悪い話ではない。
208 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:02:31 ] 繋がり重視ならIronPython。 引き出しを増やすならHaskellを勧める。
209 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:11:46 ] 色々触るのもいいけど、ひとつを極めるのも面白いと思う
210 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:49:13 ] .NET Compact Frameworkネタでもうひとつお願いします キーロックと画面を横にしたりするのを実装したいんですが どうしたらいいんでしょうか? さっきから探してるんですがヒントさえ見つかりません
211 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:55:48 ] 言語なんてどうせ手段なんだし極めるもなにもないような・・・ オブジェクト指向を極めたぞ!とかならまだしも。
212 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:08:07 ] だよな いかに優れたアプリケーションを作るかの方が大事だよ
213 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:14:38 ] C#極めたってのがどのレベルを指すのかはわからんけど(言語仕様の把握??) .NETを極めたぞ、とかならそれなりに意味があると思う。 それだけでも仕事取れるんじゃない?
214 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:15:18 ] いやいや、例えば車にだって低回転時のトルクがどうとかステアリングがどうとか 車種によって特性があるじゃないか。 車なんてどうせ手段だし極めるもなにもないような・・・ 運転を極めたぞ!とかならまだしも。 と、特定車のスレで言い放っているのと同じだぜ、それ。
215 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:15:26 ] 自分で言ってておかしいと思わないのかな 手段を極めることとは、すなわち生産性を高めることだろ
216 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:16:05 ] >>211 >オブジェクト指向を極めたぞ! すごく胡散臭さを感じるw
217 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:19:44 ] 極めるなんて言う程奥深いか? 生産性高めるのって言語に対する習熟より他の部分に依る部分の方が大きくない?
218 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:21:01 ] 極めるとか高校生が言いそうですね
219 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:21:34 ] >>217 よくわかってないなら黙ってろカス お前がC#の深さを全然知らんだけだろ
220 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:24:40 ] C#の深さwwww マジレスすると、VB、C# ってきたらあとはPython、Perl、Rubyあたりのスクリプト言語に慣れとくと 色々便利じゃないかね。
221 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:25:46 ] 言語を究めたって言われてもいまいちイメージできない その言語つかって思い通りのソフト作れるってこと?
222 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:31:54 ] だとしたらだいぶ浅いな。
223 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:35:51 ] エスパーレスが出来ることだろ
224 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:43:11 ] 自分で処理系作れたらおk
225 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:55:32 ] 極めたっつったら、その言語のコンパイラーを自作しちゃうくらいの勢いだな
226 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:00:08 ] 言語極めててもその言語のコンパイラは作れないだろ。 もっと別種の知識が必要で、それさえあればあとはその言語の仕様書さえあれば 極めてなくても作れると思うぞ。
227 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:19:49 ] ネタだろw
228 名前:デフォルトの名無しさん [2009/11/08(日) 17:20:48 ] C# を極めてもねぇ…。 極めるってほどじゃないと思う。 言語を極めてもクラスライブラリを使いこなせなけりゃ意味ないんだから .NET の CLR と クラスライブラリを極めないと…。
229 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:23:43 ] コアとあなたは、クラスメイト♪
230 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:26:56 ] CLRの理解を深めるといい。
231 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:47:24 ] Form_Load後、300ミリ秒程度間を開けて処理をしたいのですが、 それだけのためにtimerを利用するのもどうかと思いますし、 同じスレッドで他の処理はしたいので、Threading.Thread.Sleepは使えません。 こんな時に使えるモノはないでしょうか?
232 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:48:10 ] C#極めましたっていったらまあ.NET極めましたって意味に取っちゃうかな
233 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:50:43 ] >>231 Timerでいいよ
234 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:51:58 ] よっぽどヒマならアセンブラ辺りやっとけば。 その上でネイティブの C をちゃんと覚えれば無敵状態になれるかもよ。
235 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:57:07 ] ネイティブのCって開発環境無いよね
236 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:00:56 ] いくらでもあるだろ。
237 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:06:31 ] >>231 用途に合うかどうかは知らないが、 フォームの表示が済んだらすぐ程度でよかったらShownイベントでいいんでない?
238 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:24:00 ] プロパティの get 内でウェブアクセスして情報取得をしたいのですが、問題ありますでしょうか? それともメソッドにすべき?
239 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:44:04 ] >>237 それは試してましたが、 Loadから呼ばれる関数内から300ミリ待たせたかったので、 Shownだと早すぎてアウトみたいです。 とりあえず暫定的にタイマー使っておこうかと思います。
240 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 19:45:54 ] >>238 さすがにそれは絶対ダメ メソッドどころか専用のクラス作ってもいいくらいだ
241 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 20:31:19 ] >>240 だめですか・・・ 大人しく SetXX と IsXX を作ります。 ガイドライン見てみるとたしかに書いてありますね。 msdn.microsoft.com/ja-jp/library/ms229054.aspx より >以下の場合は、プロパティではなくメソッドを使用してください。 > 操作がフィールド セットの場合よりも格段に低速の場合。 > スレッドのブロックを避けるために非同期バージョンの操作を提供することも検討している場合は、 > プロパティでは操作の負荷が大きくなりすぎる可能性があります。 > 特に、初期化時以外にもネットワークやファイル システムにアクセスする操作は、 > 多くの場合、プロパティではなく、メソッドにする必要があります。 多くの場合って書いてあるけど、例外的にOKな場合もあるんだろか・・・
242 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 20:38:40 ] バインディングやリフレクションの都合でどうしてもプロパティにしたい場合はあるだろうな
243 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 20:49:39 ] じゃあ、form上の複数のコントロールのenable値を変えたい時にプロパティで設定するのはおk?
244 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 21:27:07 ] >>243 論理値でだとすると微妙。 一度にfalse/trueにする機能ならメソッド推奨。 複数コントロールのenable値の組み合わせは論理値じゃ返せないだろうし、 そしてget無しのset専用プロパティはガイドライン違反だから。 ※ 無理矢理にでも返すとか言い出すなら「ご勝手に」かな。
245 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 22:22:27 ] 副作用起こすプロパティ作って、うまいことやった気になるのは初心者によくあること HogeControl.Enadled = true; これで他のコントロールが無効になったり ネットワーク通信始めるようになったら、次にソース見たときに それが本当に何をやっているのか中まで全部見ないと理解できないものになる 小さいプログラムのうちはなんとかなるが、大きくなるにつれて たまねぎの皮を剥くような精神力の戦いに引きずり込まれることになる
246 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 22:28:51 ] >>245 どういう意味で「副作用」と言っているのか不明瞭な気がするが、 それは抽象化と命名が適切かどうかという問題であって、 「それ」がプロパティかメソッドか、という問題ではないと思うが。
247 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 22:50:25 ] メソッドは操作、プロパティはデータを表すのが一般的だとガイドラインに明記 されているし、俺もそう思う。 抽象化と命名の問題かもしれないが、区別して使うに越したことはない。
248 名前:243 mailto:sage [2009/11/08(日) 22:51:48 ] >>244 一括ではない。 組み合わせをcase式で処理してる。 さらにいえば、それは親フォームにある共通のコントロール。 getsetで渡す値はenumな値で表示モードです。 子フォームからgetsetして共通コントロールの制御を親のプロパティで行い、子は自formのコントロールの制御をおこなう。 状態としてコントロールの管理をしたかったんた゛。
249 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 23:09:08 ] >>248 それは別にいいんじゃないの?
250 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 23:10:25 ] それはイベント使った方がいい気がする せっかく親フォームを抽象化しようとしているみたいなのにもったいない
251 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 23:38:54 ] XmlSerializerでメンバをシリアライズ/デシリアライズする際、 独自の日付方式で書かれた文字列をDateTimeに変換したい場合に 属性のみの記述で変換することは不可能でしょうか? それとも大人しくラッパークラスを作るしかないんでしょうか? ・日付文字列(W3Cで定義された形式とは違う) Sat Jan 24 22:14:29 +0000 2009 ・メンバ [System.Xml.Serializer.XmlElement("date")] public DateTime Date {get; set;}
252 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:01:57 ] >>251 言ってることが支離滅裂に聞こえる。 独自の日付方式で書かれた文字列って何? >public DateTime Date {get; set;} このプロパティの型はDateTimeであって文字列ではないと思うけど。
253 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:05:29 ] >>252 カスは黙ってろ
254 名前:ISO 8601 mailto:sage [2009/11/09(月) 00:09:55 ] まあ、アメちゃんに国際規格とか言っても、北米が全世界で他は異世界と思ってるしな。
255 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:29:33 ] DateTimeは構造体ダス
256 名前:251 mailto:sage [2009/11/09(月) 00:30:22 ] >>252 XML上の「文字列」をDateTime型のプロパティにデシアライズしたい、というわけです。 その際、W3Cで定義された形式の日付文字列は特になにもしなくてもDateTime型に相互変換出来るんですが、 >>251 で挙げてるようなW3C標準じゃない形式の場合は変換してくれないんですよ。 で、属性にフォーマット指定したり変換用のデリゲートとかクラス指定したりして シンプルに書く方法はないのかなぁと・・・ >>254 REST API実装してるアプリが返す日付形式って結構ばらばらな上適当ですよねぇ。
257 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:36:45 ] DateTimeの書式を決めるカルチャ設定はスレッドごとに云々 DateTimeFormatInfo使えんかね
258 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:39:13 ] >>256 そういうことなら、(当たり前のこと言うなと思うかもしれないけど) >public DateTime Date {get; set;} このプロパティにはXmlIgnore属性をつけておいて、このプロパティの値を 「独自の日付方式」の文字列で設定/取得するデシリアライズ用のダミーの プロパティーを用意するだけじゃないの?
259 名前:251 mailto:sage [2009/11/09(月) 01:04:58 ] >>257 シリアライザの方はカルチャ設定の書式ではなくW3Cの仕様にしたがって変換してるみたいです。 >>258 そうするとパブリックな日付のプロパティが2つ出来てしまうわけですよね。 あんまり無駄なパブリックメンバは作りたくないというのが正直なところです・・・ とりあえず、IXmlSerializable を実装した DateTime の子クラスを作って使うことにしてみます。 W3C規定の形式以外はこれが正解になるんだろか?
260 名前:251 mailto:sage [2009/11/09(月) 01:07:02 ] って、DateTime は継承出来ませんね・・・
261 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:09:13 ] それは255で既に指摘されてるじゃん
262 名前:251 mailto:sage [2009/11/09(月) 01:30:57 ] ググったところ、 DateTimeをラップして IXmlSerializable を実装するクラスを書くか 日付のプロパティ持ってるクラス自体で IXmlSerializable を実装して 他のプロパティでも属性使って楽するのを放棄するかの2パターンぐらいみたいですね。 うう、なんかすっきりしないなぁ。
263 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:07:39 ] 以下のようなクラスがあった場合 public class A { public A(string id) {...} public string Id {get; set;} } public class B { public B(string id) {...} public string Id {get; set;}; } A.Id と B.Id がお互い代入出来なくするためにはそれぞれクラスや構造体(AidとかBidみたいな)を 作るしかないのでしょうか?
264 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:46:30 ] >>263 イマイチ意図が読み取れないけど GETだけのプロパティアクセスはだめなの?
265 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:37:34 ] >>264 Cのtypedefみたいなことがしたかったんですが、C#のusingだと別名なだけで 相互に代入してもコンパイルエラーにはならないみたいですね。 やりたかったことは、以下でした ・A.IDとB.IDはお互いに採番体系が異るのでコード中で混ざらないようにしたい (コンパイラにミスを見つけさせたい) ・ID自体にはメソッドもプロパティも不要なのでなるべくクラスは作りたくない ・プロパティはセッタもゲッタも必要 一番目か二番目を妥協するしかないのかしらん
266 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:50:14 ] えっ
267 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:50:38 ] ますますわからんw
268 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:59:22 ] メリットがいまいちわからんな…
269 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 13:15:18 ] >>210 です ロケーションの変更は msdn.microsoft.com/ja-jp/library/cc825750.aspx でわかったんですがキーロックの方法がわかりません 画面コピーしたモーダルウィンドウを全画面で出すとかですかね? イベントをおおもとでキャッチしてしまえばいいんですが 作成しているのがコントロールオブジェクトなので親のイベントを 横取りするのも作法としてどうなのかと思いますし、方法もわかりません ご意見をお願いします
270 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 13:41:33 ] >>269 通常はAPIのSetWindowsHookExを呼んでキーボードフック(WH_KEYBOARD_LL)でやるんだけど WMだとどうかな。一応、非公式でこのAPIそのものはあるみたいだが。
271 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 13:58:57 ] >>268 たとえば、A.IDとB.IDを受けとってなにかするメソッドHogeがあったとして、 > public static void Hoge(string aId, string bId) {....} コーディング中に第一引数と第二引数が逆になっちゃってもコンパイル時にはねて欲しいんですよ。 この場合はプロパティを直接渡すんじゃなくてクラスで渡せば問題ないですが。
272 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:16:40 ] typedefってエラーになったんだっけ?
273 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:21:42 ] >>272 俺も疑問に思ったんで今試したが普通に通るな。警告すらでなかったぞ。 #cygwinのgccで警告最大でコンパイルした結果。彼は何か勘違いしてる気がする。
274 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:23:56 ] クラス(とかstruct)で渡せばいい話じゃない
275 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:28:08 ] IDだけのクラス作ってもいいと思うよ IDクラスからAIDとBID継承させるとか
276 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:40:14 ] >>273 VC++のclで警告レベル最大でコンパイルしても警告出ないね
277 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:44:43 ] C#やJavaは基本型もオブジェクトとして扱っていることが優れた言語仕様だと思うし intという抽象度で表現出来る範囲を逸脱したオブジェクトなら専用のクラスにすべきだと思う
278 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:59:05 ] > 基本型もオブジェクトとして扱っている 思いっ切り間違ってるんだが
279 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:06:32 ] Javaとは違うのだよ、Javaとは
280 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:07:57 ] 構造体なんか廃止すればいいのに
281 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:08:37 ] >>270 ありがとうございます 一度キーワードがわかると情報がざくざくあつまってきますね SetWindowsHookExを読んでフックする方法の弱点として フックを登録できるのが1つだけのようです なので他のアプリが使ってたら不具合が出たりするようです サブクラス化というキーワードも出て来ましたが、これは フックするというより盗み見するだけですか? 情報が集まったので方針を決めたいと思います ありがとうございました
282 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:22:43 ] そんなことないです グローバルフックもローカルフックもCallNextHookExってのを使ってチェーン状に管理しています サブクラス化はイベントの起動に利用するだけでメッセージ潰したりはできません
283 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 16:18:57 ] まあキーロックが目的なら握りつぶすわけで、どんな方法でも 他のキー入力当てにしてるプロシージャに影響出ないわけないなw
284 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 16:41:18 ] private ContextMenuStrip cms_tasktry = new ContextMenuStrip(); と自分で書いて関連付けた時に最初のクリックではメニューが表示されず 二回目以降にしか表示されるのですがこれを最初のクリックで表示する 方法はないでしょうか?。 また以下のように書いた場合にexitをクリックしてもタスクトレイのアイコンが 消えないのですが、これを消えるようにできないでしょうか?。 private NotifyIcon tasktry = new NotifyIcon(); cms_tasktry.Items.Add("Exit").Click += delegate(Object obj, EventArgs ea) { tasktry.Visible = false; Close(); };
285 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 16:55:53 ] tasktry.Dispose() 呼んだらどうかな。
286 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 17:00:44 ] って>>284 のだけで1回のクリックでメニュー出るし終了時に消えたけど。 環境は?
287 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 17:13:22 ] Openingで書いているせいでしょうか? private void Form1_Load(object sender, EventArgs e) { cms_tasktry.Opening += new System.ComponentModel.CancelEventHandler(cms_Opening); } private void cms_Opening(object sender, EventArgs e) { cms_tasktry.Items.Add("Exit").Click += delegate(Object obj, EventArgs ea) { tasktry.Visible = false; Close(); }; } >>285 だめでした >>286 XP Ver2010 SP3 VC2010 です。
288 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 17:50:25 ] Openingでやってる理由は? Load時に一緒にやればいいじゃない。 アイコン消えない理由はそれとは違うようだが。
289 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 17:57:06 ] >>288 ログイン処理した時にメニューを書き換えているからですがnameでTextを 書き換えたり非表示にしたりする手もありますね。
290 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:05:13 ] まあ何回かやってみたけど、Openingイベント時にメニューが1つもないと出ないね。 その時に追加しても遅いみたい。
291 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:07:18 ] >>290 !するとLoad時にゴミを1つつけておけばいいのかな 試してきます
292 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:07:30 ] de?
293 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 19:50:07 ] System.Threading.Thread.Sleep(3000); this.Storyboard1.Begin(); このコードは3秒待つまで2行目は実行されないですよね?
294 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 19:56:29 ] 試せば?
295 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:09:24 ] 普通、次の行の処理はしないと思うんですが、2行目の処理が3秒飛ぶんです。 あり得ますか?
296 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:15:24 ] 飛ぶなんて俺様用語で言われても 飛びます飛びますってかw
297 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:26:18 ] GUIのスレッドでSleepしちゃダメだよ Storyboard使ってるんだったら3秒後にアニメーションをスタートするアニメーションを作れるだろ
298 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:30:18 ] 記事クラスと、記事のコレクションである掲示板クラスがあるとして、 記事の削除メソッドを実装するとしたら記事クラスと掲示板クラスの何方が適当でしょうか?
299 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:32:12 ] クラスってなんですか?
300 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:36:00 ] 掲示板クラスの方に実装するのが適当
301 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:36:00 ] >>297 GUIのスレッドではSleepは機能しないと覚えておけばいいんですか? この3秒にSleepではなく処理を入れたいんですが、 まさかGUIスレッドの中では同時に処理できる行はガンガン並行処理して次の行、次の行が実行されていくんでしょうか? めちゃくちゃなんですけど
302 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:41:43 ] GUIだとGUI自体の機能もSleepした後でその後の文が実行される
303 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:42:09 ] >>301 お前の頭がむちゃくちゃだよ
304 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:42:17 ] 違う。スリープさせるとGUIがフリーズするからやってはいけない。 this.Storyboard1.Begin();は絶対に3秒経過するまで実行されない。その間GUIはフリーズする。 基本的にSilverlightは(Silverlightのスレに書き込んでるだろ)GUIスレッドでのSleep禁止ということになってるから 何が起こっても文句は言えない。WPFやSilverlightのアニメーションは時間に依存するからややこしい。
305 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:47:00 ] WMPコンポーネントを使ってmp3プレイヤーを作っているのですが、 WMP9からWMP11にアップデートすると、 そのソフト自体の起動や処理が重くなったように感じます。 これは仕方無い事なんでしょうかね?
306 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:58:28 ] 自分でデコードしてDirectSoundで鳴らしたら
307 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:10:12 ] お前のプログラムがめちゃくちゃなんだろうよ
308 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:10:16 ] DirectSoundはプレイステータス変更時のようなイベントハンドラは提供されてますか? それが無いと不便で不便で・・・
309 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:16:33 ] >>304 silverlight限定の仕様だったんですね FormGUIの基本なのかと思っちゃいました。 silverlightと書き込まなかったので一生解決できないところでした ありがとうございます!
310 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:19:55 ] >>308 いやDirectSoundって自分でバッファに波形データを直接書き込んでいくんだぞ 何でもできるが何もできない >>309 Silverlightに限らずGUIで時間のかかる処理をしてはいけない。 一応WPFやWinFormsではそれによってGUIがフリーズするのを回避する方法が用意されてるけど やらないに越したことはない。 Silverlightに限ってはそういう回避方法が無いので絶対ダメ。
311 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:19:55 ] めちゃくちゃとむちゃくちゃってなにか違うの?
312 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:27:16 ] >>310 ありがとうございます。 DirectSoundで調べてみたいと思いますが、なんだか難しそうですね。。
313 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:43:18 ] 滅茶苦茶 無茶苦茶 滅無
314 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 00:09:25 ] C#でメッセンジャーみたいな物を制作しようと思い、 サーバーの部分だけ作ってみてビルドして、実行するとフリーズしてしまうんですが、 原因が分かりません。教えていただけないでしょうか?初心者ですいません。 public void ServerStart() { System.Text.Encoding enc = System.Text.Encoding.UTF8; int port = 9991; TcpListener listener =new TcpListener(IPAddress.Parse("127.0.01"), port); listener.Start(); TcpClient tcp = listener.AcceptTcpClient(); NetworkStream nss = tcp.GetStream(); MemoryStream mss = new MemoryStream(); byte[] resBytes = new byte[256]; int resSize; do { resSize = nss.Read(resBytes, 0, resBytes.Length); if (resSize == 0) { textBox2.Text = ("クライアントが切断しました"); //Console.ReadLine(); return; } mss.Write(resBytes, 0, resSize); } while (nss.DataAvailable); string resMsg = enc.GetString(mss.ToArray()); textBox2.Text = resMsg; mss.Close(); }
315 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 00:27:45 ] TcpListener.AcceptTcpClientメソッド AcceptTcpClient は、データの送受信に使用できる TcpClient を返すブロッキング メソッドです。ブロックしないようにする場合は、Pending メソッドを使用して、接続要求が受信接続キュー内で使用可能かどうかを確認します。 ではないのか?
316 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 00:47:28 ] >>315 解決できるかどうか分かりませんが、Pending メソッドについて調べてきます。
317 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 02:15:12 ] たとえPendingで確認しても、GUIスレッドで処理してたらクライアントが切断するまで止まるじゃん
318 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 09:40:49 ] 非同期処理にしろよ・・・・
319 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 09:43:53 ] クライアントからの切断は取れたり取れなかったりするからね
320 名前:315 mailto:sage [2009/11/10(火) 15:30:23 ] >>317 >>318 >>319 コメントありがとうございます。 非同期通信についても調べてみます
321 名前:314 mailto:sage [2009/11/10(火) 15:31:37 ] ↑314でした。すいません><
322 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 15:48:23 ] 非同期通信と通信での非同期処理は別の話だからなw
323 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 18:05:30 ] 流石に一緒にする奴はいないと思うぞwwww
324 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 18:08:54 ] >>284 は kb135788 かな
325 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 18:09:09 ] ここにいるぞ
326 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:32:36 ] BackgroundWorker_DoWorkでList<>.Sortを実行中にキャンセルボタンをおされたらを処理を中止したいんですが 何かいい方法ないですか? 自分でループしてる処理ならBackgroundWorker.CancellationPendingをチェックして終了すれば いいけど、List<>.Sort の実行中は何もできないんで。 次の様な処理書いてます。 private void backgroundWorker1_DoWork( object sender, DoWorkEventArgs e ) { BackgroundWorker worker = sender as BackgroundWorker; List<string> list = new List<string>(); Random random = new Random(); for( int i = 0; i < 1000000; i++ ) { if( worker.CancellationPending ) { e.Cancel = true; return; } list.Add( string.Format( "{0}";, random.Next( 1, 1000000 ) ) ); } list.Sort( delegate( string s1, string s2 ) { return int.Parse( s1 ).CompareTo( int.Parse( s2 ) ); } ); e.Result = list; }
327 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:46:48 ] デリゲートとか何の役にたつんだよぽ
328 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:57:43 ] なきゃないで問題ない
329 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:21:54 ] デリゲートなかったらメソッド持ってるクラス渡すか継承して実装するかの二択になるからなぁ。
330 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:35:48 ] >>346 yield
331 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:38:01 ] おっ、書けた。 >>326 yield を使って止められるようにすればいい。 貼ったソースはWorker操作のためのサンプルだと理解しているが、 もし本気コードならいちいちintに変換しながら比較するなんて馬鹿なことはやめたほうがいいぞ。 一括でソート済みsetに放り込んで再び取り出したほうがよほど速い。
332 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:42:18 ] yieldでどうやってlist.Sortを止めるんだよ 無理矢理止めるならlist.Sortに渡すコールバック内で例外投げるくらいしかないと思う
333 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:54:47 ] 現在アクティブなコントロールが、どの型か調べて 型に応じて動作を行うというものを作っております たとえば、WebBrowserならMessageBox.Show("WebBrowser","種類"); みたいな感じで アクティブなコントロールをthis.ActiveControlで取得まではできるのですが その取得したコントロールの型同士を比較するにはどうすればいいでしょうか
334 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 22:00:45 ] あるオブジェクトが特定の型かどうかを調べるにはisを使う あるオブジェクトの型名などを取得するにはGetType
335 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 22:03:50 ] >>334 if(this.ActiveControl is WebBrowser) で比較できましたありがとうございました
336 名前:デフォルトの名無しさん [2009/11/10(火) 22:05:32 ] ボタンをショートカットに対応させたいんだけど ボタンをクリックしたことにするにはどうすればいいでしょーか
337 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 22:05:49 ] あらま さげわすれごめんなさい
338 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 22:18:56 ] そんなことしなくてもボタンのTextの最後に&Xを付けるだけ(Xは任意のショートカットキー)
339 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 22:23:24 ] フォームかコントロールでキーイベント拾ったら?
340 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 22:24:53 ] あーあー、あったな、そんな機能。
341 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 23:45:23 ] WebBrowserで送信する内容を取得したりすることってできますか? 主にヘッダーのことですが
342 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 23:53:45 ] WinPcap
343 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 00:00:42 ] >>342 すいません、WebBrowserコントロールの話ですorz マイクロソフトのWebBrowserは便利ではあるのですがなかなか使いづらい・・・ 使用制限の無い便利なブラウザコントロールないかなあ・・・・
344 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 01:17:34 ] 関係ないが >>343 ってVIPのスレにも来てなかったか?
345 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 01:19:43 ] IEだろうとWebBrowserだろうと普通にネットワーク経由するなら取得できるじゃん
346 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 01:21:35 ] >>344 ここで答えもらえなかったから行ったんじゃないの? ほんと関係ないな
347 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 23:45:59 ] System.Xml.Linq.XElement.Load メソッドで発生する全例外について知る方法はありますか? MSDNに例外情報は記載されていなかったのですが、System.IO.FileNotFoundExceptionが発生しました。 System.IO.IOExceptionを継承した例外やArgumentNullException等が起きると予想できますが、 他にも発生しますか?
348 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 23:58:59 ] XLINQでは,読み込みは基本的にXmlReaderに準じる ArgumentExceptionやInvalidOperationの派生型が発生する場合は 使い方に問題があるということだから原則キャッチ禁止
349 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 00:05:31 ] >>347 目的でアドバイスが変わる 現段階のという条件をつければ解析して 可能かもしれないという話は別にして
350 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 00:16:01 ] ドキュメントに書いてないということは仕様として決まってないということなので 解析してキャッチしたりするのはあんまり良くないな XElement.Load(string)はファクトリーメソッドということになってるXmlReader.Createに依存してるので 実際何やるかわからないんだよね 不安なら他のオーバーロード使ったほうが確実
351 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 00:52:22 ] >>348-350 ありがとうございます 例外のStackTraceを見ると、 場所 System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings) 場所 System.Xml.Linq.XElement.Load(String uri, LoadOptions options) 場所 System.Xml.Linq.XElement.Load(String uri) となっていましたが、Createメソッドの説明に無い DirectoryNotFoundException が発生しました XmlReader.Create を直接呼び出しても DirectoryNotFoundException が発生しました 説明にあるFileNotFoundException と DirectoryNotFoundException には直接の継承関係は無いはずなのに 該当箇所は、何らかのエラーが発生したら、メッセージボックスを表示して強制終了する積りです。
352 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 01:19:56 ] Windowsのアプリケーションを作るのは Windows APIと.NETの二種類があるの? Windows APIって.NETより難しいんでしょ?
353 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 01:28:43 ] やる気が無い奴は消えろ
354 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 02:08:30 ] C#で設計を学びたいのですが、何から手を付けたらいいんでしょう? 自分で考えたモデリングが正しい(あるいは悪くない)ことを客観的に測る指標などは存在するのでしょうか? クラスを書くたびに間違ったことしてるんじゃないかと不安になります。
355 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 02:13:21 ] 間違ってるということは間違ったときに気付けば良いじゃないか
356 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 02:23:02 ] こればかりは経験も必要だしな
357 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 02:24:09 ] >>355 それだと動けばいいじゃん、になっちゃいません? 動くけど設計上よろしくない(拡張性/保守性がないとか)ってのをどうやって自分で認識したらいいんでしょう?
358 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 02:28:06 ] C#でコンデンサー作った。電気がたまります
359 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 02:31:00 ] たしかに「もっと優れたやり方があるのでは」って不安はあるわな
360 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 02:37:41 ] 多少のプログラム経験年数はあるが、完璧に満足したソースは無い それが成長というものじゃないのかね
361 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 02:41:00 ] ここらへんなんか読んでみたら? labo.mamezou.com/special/sp_008/sp_008_001.html
362 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 02:42:22 ] ここでそういう高尚なこと聞くのが間違いだろJK
363 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 02:44:30 ] >>360 その"満足出来なかった"っていうのは何をどう評価して満足出来なかったんでしょうか? そこらへんが肝な気がする。
364 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 02:45:40 ] >>357 >それだと動けばいいじゃん、になっちゃいません? ならないよ 間違ってるのに間違ったことに気付いていない場合や 判ってて直そうとしない場合はその限りではないが 自分で問題意識を持ち続けて常に改良を続けるのが 本来のオブジェクト指向的リファクタリングの発想
365 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 02:53:54 ] 莫大な金と人と時間をかけたOSですら日々アップデートなどしてるのに 完璧なソースだと?
366 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 03:08:51 ] _ □□ _ ___、、、 //_ [][]// ,,-―''':::::::::::::::ヽヾヽ':::::/、 誰 作 こ // \\ // /::::::::::::::::::::::::::::::i l | l i:::::::ミ だ っ の  ̄  ̄  ̄/ /:::::::::,,,-‐,/i/`''' ̄ ̄ ̄ `i::;| あ た ソ ―`―--^--、__ /:::::::::=ソ / ヽ、 / ,,|/ っ の | /f ),fヽ,-、 ノ | 三 i <ニ`-, ノ /、-ニニ' 」') !! は ス i'/ /^~i f-iノ |三 彡 t ̄ 。` ソ ハ_゙'、 ̄。,フ | ) を ,,, l'ノ j ノ::i⌒ヽ;;|  ̄ ̄ / _ヽ、 ̄ ゙i ) ` '' - / ノ::| ヽミ `_,(_ i\_ `i ヽ、 ∧ ∧ ∧ ∧ /// |:::| ( ミ / __ニ'__`i | Y Y Y Y Y ,-" ,|:::ヽ ミ /-───―-`l | // | | // l::::::::l\ ||||||||||||||||||||||/ | // | / ____.|:::::::| 、 `ー-―――┴ / __,,..-'| /゙ー、,-―'''XXXX `''l::,/| ー- 、__ ̄_,,-"、_,-''XXXXX | /XX/ XXXXXXXXXX| | _, /ノXXXXXXXXXX|
367 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 03:50:51 ] >>363 経験的な先読み予想があって、「嗚呼本当はこういう構成にしたいんだけど 後で使わないかもしれないからオーバースペックにする必要も無いか」だとか 「今の構成だとこうした方が早道だ」とか 「正規化よりもリアリティ」だとか 色々あって理想通りにはいかない事なんてあるある探検隊 学校のテスト勉強と違って正解なんて相対的なものだ 何かに気づいて知ることで考え方やアプローチが広がるから、 経験無い内に全てを網羅した答えなんて得られないと言わざるを得ない ‥って言ってもあきらめろって意味じゃないのはわかるよな
368 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 04:49:40 ] 10年くらいかかりますか?
369 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 05:08:13 ] それを知っているのは自分だけ
370 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 07:48:48 ] 自作のコントロールをデザイナで表示できるようにするにはどうすればいいですか? タブコントロールを継承した、TabDXを作ったのですが デザイナから直接これを使うことはできますか? 現状方法が分からず、一度普通のTabを配置して、TabDXにすべて置換するという作業を行っていますが なんかとても頭悪いことをしているような気がしまして
371 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 07:53:07 ] DesignTimeVisible でぐぐれ
372 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 08:01:17 ] >>371 うああああああああああああああああああああああああああああああああああああ 今までコツコツ作ってきた200個近くのコントロールが全て表示されました これで置換作業とはおさらばです!ありがとうございました!
373 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 08:03:03 ] あ、あまりにもうれしすぎて忘れてた クラス内に public abstract bool DesignTimeVisible() { return true; } を追加 それだけでした
374 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 08:15:59 ] なんか関係無い俺でもうれしくなっちゃったw
375 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 08:18:44 ] ちゃんと設計の勉強したらC#で彼女が出来ました
376 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 08:29:10 ] >間違ってるのに間違ったことに気付いていない場合 これどうやったら間違いに気付くんだ? >自分で問題意識を持ち続けて常に改良を続ける その問題意識ってのが間違ってたらどうするんだ? 例えばドメインモデル貧血症なんかはどう考える? 全然問題無いじゃん!って言ってる人もいるけどそういう人達は間違ってるの? それともそんな単語作りだした側が間違ってる?
377 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 08:34:46 ] デザパタの本でも読むのがいいんじゃないかなー GoFのじゃなく設計のパターンの方 仕事で設計してるならいいけど個人で作ってる場合は 本だのネットだの勉強会だのに頼るしかないね ダメ出ししてくれる場が無いからつらいのう
378 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 08:54:04 ] オープンソースのプロジェクトでも参加すればー
379 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:01:12 ] 方法はどうあれ適当な単位での切りわけさえできてれば破綻しない 個々が少々ダメでも他に影響しない限り問題ない
380 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:11:22 ] ぶっちゃけ仕事じゃなく個人でやってるなら正しい設計なんて出来なくても問題ない。 外から見て問題のある動作するとかならともかく。 そんなことより楽しくて役に立つプログラムを素早く作れた方が評価されるよ。
381 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:24:21 ] あるクラスを継承してさらにインターフェイスを実装ってできるんだっけ? public class AAA: System.Windows.Forms : IHogeHoge みたく
382 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:27:32 ] >>381 public class AAA : System.Windows.Forms, IHogeHoge もちょっと勉強しろよと
383 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:33:52 ] >>382 サンクス そういう風に実装する記述見当たらなかったんでちょっと聞いてみようとorz 頑張って勉強するよ
384 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:41:44 ] 間違ってるかどうかは環境によって変わることもある 間違いに気付かない人はある意味閉じた環境にいるニートみたいなもんで幸せな人なんだろう そんなのがプロジェクトに参加したらアホ呼ばわりされるんだろう PHPとかRubyとかにいっぱいいそうだ
385 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:51:59 ] >>384 >間違いに気付かない人はある意味閉じた環境にいるニートみたいなもんで幸せな人なんだろう これ本当にそうだよなぁ。 良い意味でも悪い意味でも。 気付かなくても問題が無い=それで良いってこともあるしね。 ポトペタで作ったソフトのお陰でチーム全員が残業から開放された!なんて状況下で こんなださい設計のソフト作るやつはクズだね、とか言ってもしかたないし。 あと他人と仕事するならどっかの時点でアホ呼ばわりされて間違いに気付かないとだな。 そういう意味じゃオープンソースのプロジェクトに混ざるってのは悪くないのかもしれん。
386 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 10:06:42 ] 別にプログラミング自体が目的じゃないからな 科学技術計算のプログラムなんか想像を絶する汚さ
387 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 13:41:05 ] C# からEXCELにデータ突っ込んでグラフ作って印刷しようとすると結構めんどく背ぇ…
388 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 13:55:16 ] CSVにでも出力しといてVBSに投げるのがお勧め
389 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 14:01:13 ] 餅は餅屋ってことですな
390 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 14:23:09 ] >>388 のが楽にできそうだ・・・・ COMは開放やら何やら考えてるとすげぇめんどくさいし色々怖い データファイルに落として C#→EXCEL起動→強制的に内部の関数呼ぶとか、ボタン押したことにしてVBA実行→(゚д゚)ウマー とか出来るんだろうか?
391 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 14:26:32 ] だからVBSならVBAと同じだしいちいちマクロ作らなくていいから綺麗じゃん
392 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 14:39:06 ] >>391 そっか、作っておいたVBSキックすればいいだけか それで検討してみよう サンクス!!
393 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 18:00:11 ] >>389 いいこと言うなあ。 csvで出力して、Process.StartでExcelを起動。これで十分だな。
394 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 19:48:39 ] > C#→EXCEL起動→強制的に内部の関数呼ぶとか、ボタン押したことにしてVBA実行→(゚д゚)ウマー 出来る
395 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 19:52:19 ] vstoでもよい
396 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:01:16 ] VBSで書いた方がC#より簡単とかお手軽とか思ってるのならよくわからん発想だな。 どう考えてもC#の方が簡単だと思うんだが・・・ 自動記録したマクロ(VBA)をアドインで保存しといて、それを使うってのなら まだ話も分かるんだけど
397 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:09:50 ] MakeTransparentでPictureboxの画像の背景を透明にすることはできたんだが Clickイベントを画像の中だけで起こしたいんだけどどうやりゃいいの? 画像をクリックしたらなんか処理したいんだが PictureBoxが四角形だから画像からちょっとはみでたところでもクリックイベントが発生しちゃってちょっと格好悪い。
398 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:20:42 ] >>397 クリックされた位置が透過色だったらイベントを握りつぶすだけじゃないのか? もしくは、最初に非透過部分のRegionを作っておくか。 人に聞かなきゃならん問題とも思えんが。
399 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:33:14 ] kwsk
400 名前:デフォルトの名無しさん [2009/11/12(木) 20:41:57 ] 印刷のロジックを組んでいます。 x、y座標を、紙の端から数えるようにしようとしたら、印刷可能範囲を(0,0)と捉えているみたいです。 紙の左上端を起点にするにはどうすればよいでしょうか? または、印刷可能範囲の左上端が、用紙の左上端からみてどの座標にあるかを取得する方法は ありますでしょうか? よろしくお願いいたします。
401 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:55:51 ] HardMarginX,HardMarginYでいけたはず。
402 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:56:02 ] それはプリンタドライバが知っている世界では てか可能範囲の余白を知ってどうしたいんだ セットされた紙次第なのに
403 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:57:19 ] 言語も不明なのによく答えたな
404 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:58:13 ] >>403 は勘違い。別のスレと間違えてた‥ orz
405 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 21:03:54 ] >>402 何いってんの。 例えば官製はがきの枠内に郵便番号が印刷できるのはどうしてだと思ってるんだよw
406 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 22:08:26 ] pictureBoxを2個用意して 片方の画像から片方の画像へ移す処理をしたいのですが 上手くいきません。 AllowDropがpictureboxには用意されていないようでどうしたらいいのかも わからず… 何か良い方法ありませんか?
407 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 22:14:56 ] >>406 移すってどういう事をしたいのか正確に ファイルの移動?ビットマップデータのコピー? ドラッグドロップじゃないと出来ない処理?2つのコントロールは同じアプリケーションの同一フォーム?
408 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 22:18:19 ] 自分のアプリケーション内でのドラッグドロップは基本的に自由 自分でマウスイベント拾って好きなように実装するんだよ
409 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 22:53:29 ] >>406 picturebox1.image=picturebox2.image これでいけるよ
410 名前:デフォルトの名無しさん [2009/11/13(金) 01:26:20 ] >>405 それってプリンタ毎に変わるでしょ? ハード的な要因でドライバが設定した原点(0,0)を ソフト側で変更なんて出来るの?
411 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 01:32:04 ] そういうのはドライバというソフトがやる
412 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 01:56:12 ] c++ではクラスのメンバにアクセスするとき->なのにc#だと.なんだね。 フォーム1ロードイベントにLabel1.Text="Hello"; ってC#そのまま書いたらコンパイル無効 thisも必ずつけなきゃいけないっぽい C++ this->Label1->Text="Hello"; C# Label1.Text="aaa"; これだけみてもC#とC++はCという名前が共通についてるだけで 中身はかなり別言語なんだなぁ。
413 名前:デフォルトの名無しさん [2009/11/13(金) 01:58:19 ] >>411 アプリって言い直したら気が済むのでしょうか
414 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 02:55:21 ] >>412 言ってることめちゃくちゃだが 独り言ならチラシの裏にしてくれ
415 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 03:02:03 ] ClickイベントとMouseClickイベントはどうちがうんだい
416 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 03:24:22 ] フォーカス当ててEnterキー押した時なんかにはClickしか発生しない。 詳しくはMSDNのClickイベントとMouseClickイベントのとこに書いてある。
417 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 03:29:03 ] コントロールによって違うから不用意に回答できないと思うが
418 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 04:51:50 ] MSDN読めと書いてあるじゃないか
419 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 06:38:47 ] >>412 死ね
420 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 09:11:29 ] ラベルはハンドル型だから厳密にいうとC++(非CLI)の->とも意味が違うんだよそれ C#にも一応->演算子はあるけどこちらはポインタにしか使えない(それが本来の使い方)
421 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 11:56:33 ] プロパティで private int age; プロパティのset部分に if(value>100) age=100 ってやって、これ以外にageを設定するメソッドなどがなければ みたいにやれば、外部クラスからは絶対にageを100より大きく設定できることはないよね? それとも特殊な状況で変わったりしちゃう?
422 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 12:04:02 ] 大丈夫じゃねーかなーと思ったけど BinaryFormatter使ったらprivateなフィールドもシリアライズできるから違う値も入れられるかも知んない 試してないから見当違いの可能性大
423 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 13:04:12 ] List<T>で、必要上インデックス0が最後尾 つまりList<T>[0]がList<T>[List.Count-1]になるようなクラスを作りたいんですが とりあえず内部にList<T>をもっといて読み出すときだけ逆になるようにして対処しようとしてるんですが、 <T>の部分の実装の仕方が見当が付きません。 なにかヒントもらえませんか?
424 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 13:14:58 ] 横着しないで地道にList.Count-index-1を入れればいいだろ
425 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 13:15:54 ] C#の配列機能ってすごすぎるだろ フィボナッチの数列の第一項から第100項まで1秒以内のあっというまに計算できるとか便利すぎるな。 マジC#最強だな
426 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 13:34:50 ] public class MyClass<T> { public T Value; public MyClass(T v) { Value = v; } } がぐぐったら出てきました^^;
427 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 15:57:06 ] C++のテンプレートってなんでC#だとジェネリックって名前変えてるんだ? まったく同じに見えるんだが何か機能面で違うのか?
428 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 16:03:49 ] ここに書いてある msdn.microsoft.com/ja-jp/library/c6cyy67b%28VS.80%29.aspx テンプレートは型パラメータの制約等をコンパイル時に解決するけど ジェネリクスは実行時まで持ってる
429 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 16:12:03 ] いや機能全然違うから。 っつかテンプレートじゃないから。
430 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 16:44:02 ] まあjavaのジェネリックと比べたらかなりテンプレートに近いけどな
431 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 18:37:57 ] なんでジェネリクスとテンプレートが同じに見える奴がいるのか
432 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:35:11 ] HttpUtilityがusing System.Webに存在しないようなのですが VS2010では他に移動しましたか?
433 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:36:42 ] 参照設定した?
434 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:39:25 ] C#2008ExpressがインストールしてあるPCに VS2005Stdを後からインストールしてもトラブル起きませんか?
435 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:42:09 ] 気になるならvirtualPCにでも入れろ
436 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:42:44 ] 不具合は起こらないと思うが、関連付けは上書きされるだろうな
437 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:49:09 ] >>433 言われる通りでした。 usingをしたら参照もしてくれると思っていたのですがそういうわけではないのですね。
438 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:55:50 ] ドラッグの件で質問した者ですがもう少し詳しく 動的にいくつか作成したpictureBoxをドラッグし、 元からあるpictureBoxに移動したいです。 この時、作成したpictureBoxの場所自体を移動させたいのですが どこのpictureBoxからドラッグされてきたのかという情報の 取得方法がわかりません。 eでは、中のBitmapの情報のみを拾ってくるので…
439 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:56:14 ] >>437 usingを理解してない予感 using はネームスペースを省略しますよーってこと 本来なら System.Windows.Form.WebBrowser とか書かなきゃいけないけど いちいちかくのはめんどくさい だから using System.Windows.Form; って宣言しとけば 勝手にそこ以前をつけてくれる もし、同じ名前があると曖昧だからフルで指定しろって言われるよ
440 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 20:14:59 ] using ってエイリアスぐらいの立ち位置だったんだなぁ。 たしかにusing だけじゃインテリセンスで補完もしてくれないか
441 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 20:16:45 ] >>438 自分でドラッグドロップどうさを MouseDown MouseMove を使って実装するとか MouseDown のタイミングでどれを押下したかわかるだろ ちょっと考えれば簡単。既存のドラッグ動作を良く観察して
442 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 21:06:50 ] DateTimePickerって1790年くらいが最小で1192年とか実装できない なんで?せっかく1192年からの鎌倉時代を舞台とした物語を作ろうとおもったのにカレンダー表示機能ないからできないじゃないか FuckYou!!!
443 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 21:11:03 ] 自分で計算すりゃいいじゃん
444 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 21:35:05 ] そりゃ計算は出来るだろうけどコントロールが使えないのは悲しいよな。 テキストボックスで我慢するかカスタムコントロール作るかになっちゃう。
445 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 21:42:36 ] 仮に日付が設定できたとして 一ヶ月が28日だったり 一年が13ヶ月だったりするんだぜ?
446 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 21:46:25 ] 日めくりを想像しろ 月や年なんて日の属性だ
447 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 22:46:54 ] ja.wikipedia.org/wiki/1752%E5%B9%B4 こんな月もあるし
448 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:18:30 ] 世界の中心は欧米じゃないのに何言ってんの
449 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:20:39 ] >ユリウス暦の閏年のずれを戻すために1752/9/3 〜 1752/9/13 は無い。 げぇ…
450 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:27:15 ] C#はVBとあまり変わらないよと言われたのですが 私にとっては別な言語に見えてしまいます。 たとえば、中国人や韓国人は同じアジアなので似てるといえば似てるのですが、 さすがに、東南アジアの人や、同じアジアと言われるオランダとかと比べると まったく違うあろーって思います。ありがとうございました。
451 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:29:22 ] 欧米の話じゃないんだが
452 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:36:11 ] そりゃVB関数使いまくってたらそうだろうな 先にC#やってたらVBは本当に全く同じなんだけどな
453 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:41:00 ] 構文が違うだけで他は同じと言っていいな。
454 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:46:08 ] というか .NET がメインだからなあ
455 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:48:19 ] .NET環境なら言語の違いは関係ないと言ってもよい
456 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:49:50 ] B#で書いてC#に変換したら良いのでは?
457 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:56:53 ] .NETはC#選んどけば間違いない
458 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 00:01:03 ] 未だにC#より使い易い言語に出会えない
459 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 00:02:41 ] C#できるならVB.NETも余裕
460 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 00:46:35 ] C#がというかVC#が快適すぎる どうやったらここまでインテリセンス速くなるのか
461 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 01:52:02 ] >>447-449 日本では、明治5年(1872年)に、従来の太陽太陰暦を廃して翌年から太陽暦を採用することが布告された。 この「太陰暦ヲ廃シ太陽暦ヲ頒行ス」(明治5年太政官布告第337号、改暦ノ布告)では、 「來ル十二月三日ヲ以テ明治六年一月一日ト被定候事」として、グレゴリオ暦1873年1月1日に当たる 明治5年12月3日を明治6年1月1日とすることなどを定めた。そのため明治5年12月2日まで使用されていた 天保暦は旧暦となった(明治改暦、明治の改暦)。
462 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 01:59:37 ] それもきっちり施行されたわけではなく、和暦もあわせると専門家すらどっちでもいいじゃんと言い出すほど
463 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:13:46 ] .net Framewark Compact のメニューが使いづらいのでピクチャーボックス上にアイコンを直接描画してプラグインの機能を呼び出したいのですが そのためのクラス設計がいまいちよくわかりません プラグインを読み込むときピクチャーボックスのどの位置にアイコンを表示するか計算してプロパティに持たせる OnPringイベントハンドラでそれぞれのプラグインが自分の位置にアイコンを表示する プラグインにピクチャーボックスのクリックイベントハンドラを持たせる クリックされたイベントがすべてのプラグインで評価され 自分のアイコン領域だったら機能を起動 こんな流れを考えてましたが プラグインのアイコンを押したとき、さらに選択肢アイコンを表示したくなったらどうするのか? その場合アイコンを管理するコンテナクラスを作るべきなのか? そんなことをうだうだ悩んでます どうかアドバイスをお願いします
464 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:26:49 ] プラグインって何だ? 普通にカスタムコントロールじゃね。 >選択肢 タップ&ホールドさせてメニュー出すのがWMの流儀。
465 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:27:42 ] >>463 描画方法はカスタムドローのノリでいいんじゃね アイコンの管理はContextMenuのように親子を階層管理して、 クリックイベントは親で評価して該当する子に伝えて 子は自分の管理する孫にヒットテストしていく感じで
466 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:49:03 ] >>464 ありがとうございます プラグインは普通にプラグインです DLLであとから供給される機能なので後からメニューに割り込ませないといけないです タップ&ホールドさせてメニュー出す→一つ選ぶ→そこから更に選ぶ 例えば描画なら エフェクト→モザイク→小・中・大 みたいにモザイクプラグインが自分で持ってる選択肢がどのように展開するかを先に決めることができないので・・・ >>465 ありがとうございます ノリ的にはカスタムドローなんですよね 管理のイメージもContextMenuのListを持たせる方式がなんとなくイメージしやすいです イベントの処理をどうしようか悩んでたら >クリックイベントは親で評価して該当する子に伝えて >子は自分の管理する孫にヒットテストしていく感じで あーなんか光明が見えてきた感じです 仮想関数のデリゲートのインスタンスで解決するですかね? スマートな方法というか、常道ではどうするのでしょうか?
467 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:49:14 ] C#でゲーム作りたいけどC#でゲーム作るサイトがあまりない・・・ C言語とかC++で作るページならいくらでもみつかるのに。 使いやすさ、簡単さはC#のほうがいいけど やっぱサンプルコードが充実してるっていう点ではC++とかのがいいなぁ
468 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 11:02:41 ] アプリケーションの設定で、独自の型を設定するにはどうしたら良いのでしょうか? 「参照」ボタンを教えても、自分の作ったネームスペースは出てこないんです。
469 名前:465 mailto:sage [2009/11/14(土) 11:07:33 ] >>466 メニューが整列したデスクトップアイコンみたいなの想像してるんで Zオーダーは考慮してないから注意してね 子から親ならデリゲート(イベント)かなと思ったけど 親から子ならインターフェース使うかなぁ すべてのメニューに共通のインターフェース持たせとけば楽かと void NotifyMouseClick(〜Args e) みたいな感じにするかな 継承まで考えるならこのメソッドの実装で virtual void OnMouseClick(〜) を呼ぶ
470 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 11:15:19 ] >>469 >メニューが整列したデスクトップアイコンみたいなの想像してるんで >Zオーダーは考慮してないから注意してね OKですWMでアイコン並べるって話ですからiPhoneのアイコンと同じイメージです >親から子ならインターフェース使うかなぁ >すべてのメニューに共通のインターフェース持たせとけば楽かと >void NotifyMouseClick(〜Args e) みたいな感じにするかな >継承まで考えるならこのメソッドの実装で virtual void OnMouseClick(〜) を呼ぶ なるほどなるほど メッセージの流れを先に決めてしまえばイメージしやすいですね 親から子 子から親 要素からコンテナ みたいにいろんな方法がとめどなくあるので 身動き取れませんでした なるべくいろいろなプラグインに対応できるようにここは慎重に考慮すべきですね でも、頭の中がだいぶすっきりしてきました ありがとうございます
471 名前:デフォルトの名無しさん [2009/11/14(土) 11:50:06 ] MyClass<T>というのがあり、 Dictionary<string,MyClass<T>>のようなことをしたいのですが、 ここでDictonaryが保持するMyClassはMyClass<int>やMyClass<string> のように複数の場合、どうしたらいいですか? 最悪Refrection使っても問題ないので、よろしくお願いします。
472 名前:デフォルトの名無しさん [2009/11/14(土) 11:58:25 ] デバッグした時にエラーがあると、前回成功した結果で勝手に実行されるのをやめさせるには どの設定を変えれば良いですか? 例えば、 private void button1_Click(object sender, EventArgs e) { textBox1.Text = "こんにちは"; } で実行したあとに private void button1_Click(object sender, EventArgs e) { textBox1.Text = "こんばんわ" エラー; } を実行すると、エラー一覧画面で怒られているのに 最初に実行した"こんにちは" が表示されるという具合です。 C# 2008のお試し版を使っています。
473 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 12:10:08 ] >>471 Dictionary<string, object> かねえ・・・ せめてMyClassに共通の具体的な継承元があればそれにしておくくらいか >>472 そんな現象は起こらないので、何か勘違いしてる
474 名前:471 mailto:sage [2009/11/14(土) 12:17:56 ] >>473 レスありがとうございます・。 objectにしちゃうと、受け側で int hoge = (int)myDictionary[keyString].GetValue() みたく、キャストしないと受けれないですよね? それを避けたいというのが動機です。 継承元を作るもやってみたのですが、 外部からmyDictionary[keyString].GetValue()のような形で呼ぶためには、 共通の基底クラスにも MyBaseClass { public abstract "Type" getValue(); } が必要になり、何一つ解決しませんでした。
475 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 12:29:02 ] >>474 そもそも、異なる型を一つのコレクションに突っ込もうとしてる時点でキャスト避けるのは無理に近い 他のデメリットをすべてかなぐり捨ててキャストだけ排除したいなら、 想定する全部の型をメンバーに持ったクラスにするしかない バリアント型みたいに型を表すenumでも持っておいて、それを見て取り出すべきフィールドを決める まあ、やんない方が良いね。そもそも設計の方に問題があると思うから あと気になったんだが、GetValue()の結果をキャストするのっておかしくないか? object item = myDictionary[keyString] as MyClass<int>; int hoge = item.getValue(); こうあるべきだと思うけどね。
476 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 12:30:20 ] 書き損じた objectで受けるんじゃなくて MyClass<int> だね
477 名前:471 mailto:sage [2009/11/14(土) 12:32:21 ] 訂正 objectにすると、 (MyClass<int>)myDictionary[keyString].GetValue() とするのにキャストが必要。 objectのままだと当然GetValue()にはアクセスできない。 の間違いでした。
478 名前:471 mailto:sage [2009/11/14(土) 12:39:26 ] 連続で失礼。 >>475 さん やっぱりある種、動的型付け的なことなので無理なんですかね。 typeof(int) "12" や、 typeof(String) "もじ” などの型情報とそこで指定された方にParse可能な文字列を保持しているペアがあって その型情報をもとにParseして指定された型で返すというものを作りたかったので 扱いたい型の数だけフィールドorメソッドを用意する or objectで受けてキャストするのが解っぽいですね。 getIntValue() { return (int)value;} みたいなのを色々用意するくらいなら 受け側でキャストした方が楽か… ありがとうございました。
479 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 12:51:53 ] >>478 そういうことならMyClass内ではstringのまま持って以下のような方法も・・・ enum ElementType { None, Number, Text ..} class MyClass { ElementType ElementType { get; } T getValue<T>() { ... } } MyClass item = myDictionary[keyString]; switch (item.ElementType) { case ElementType.Number: int hoge = item.getValue<int>(); break; ... enumじゃなくてTypeを公開してもいいかもだけど
480 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 13:11:53 ] これじゃだめ? public class MyClassDictionary<T> { public Dictionary<string,MyClass<T>> dic { get; private set; } public MyClassDictionary() { this.dic = new Dictionary<string,MyClass<T>>(); } }
481 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 13:27:34 ] >>467 XNAを使うんだ!
482 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:06:54 ] オブジェクト指向ってすごいな。 オブジェクト指向がない言語ってどうやってプログラム組んでるんだろうな。 if文とかすごく多くなって見づらそうだね。
483 名前:480 mailto:sage [2009/11/14(土) 14:10:38 ] って、ちゃんと読んでなかったスマソ。
484 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:17:53 ] >>467 作りたいけどサイトが無いって ずいぶん妙な事言ってるな 作るのは自分じゃないのか。他人ありきなのか 自分でアルゴリズムやロジック考える事こそがプログラミングだぜ
485 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:18:57 ] >>482 どんな言語でもオブジェクト指向プログラミングは出来る しやすいかどうか(文法としてサポートしてるかどうか)の違い
486 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:23:27 ] >>485 同意 そういや「オブジェクト指向」ていつのまにかただの単語になっちまってるな オブジェクトとして捉え観察してコーディングする指向の呼称だったはずなのにな
487 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:31:20 ] オブジェクト指向言語使ってるのに switchでの処理分けばっかりしてるようなやつもまだ沢山いるけどね。
488 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:32:14 ] プログラミング関連に限らずこの世に「ただの単語」じゃない単語があるならkwsk どんな複雑で難解な数学用語だろうが「ただの単語」だろ?理解できる人が多いか少ないかの違いがあるだけで。
489 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:32:24 ] >>484 んなこたない できるだけ横着するために苦労するのがプログラミングだと思うぞ 車輪の再発明して威張っていいのは学生まで
490 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:35:00 ] >>488 バズワードになったっていいたいんじゃね? ja.wikipedia.org/wiki/%E3%83%90%E3%82%BA%E3%83%AF%E3%83%BC%E3%83%89
491 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:36:20 ] >>487 俺のことか・・・
492 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:37:25 ] 真面目な話、他人の作ったライブラリやコード片やサービスとか上手に組み合わせて 面白い何かをいかに素早く作れるかが重要だよな。ここ最近は。 なに、レビューワーがしっかりしてりゃいいんですよ。
493 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:38:54 ] >>488 いや言いたいのははそういう事じゃない 元の意味を忘れてしまってるって話だ。前レスからの文脈を理解してくれ
494 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:39:25 ] >>491 switch とオブジェクト志向、全然関係ないから気にするな
495 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:41:59 ] switch使うならStateパターン使えよターコ ボケ カス
496 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:45:27 ] >>492 >>489 ここが「初心者向け」と看板がついたスレなのを忘れたか いくつの車輪を再発明できるかがその人の理解の幅や知識、地力を上げると気付けよ 効率の話はまたその先の話だ 基礎的な発想や当たり前レベルだと、慣れた人がパッと見てわかるような事さえ初学では判断もできない訳だから なんでもショートカットしてコピペで済ませてはいけない お前さんも経験あるなら理解してもらえると期待する
497 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:46:04 ] パソコンが普及した ↓ マイクロソフトがVSをただで配ったりBorlandがDelphiをただで配ったりした ↓ 一般大衆も高性能なプログラミング言語を手に入れられるようになった ↓ いままで一部の専門家しかプログラムなんてやらなかったのが普通の小中学生でも手を出すようになった ↓ オブジェクト指向などの概念などをわかりやすく解説するサイトが増えた ↓ 浅い知識だけのオブジェクト指向が広まった こういうことか
498 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:49:40 ] >>496 だから「"学生"まで」なんじゃね? >>484 >>489 >>492 >>496 つか不毛な精神論語って悦に入ってるぐらいならさっさと参考になるサイトでも教えてやれよって思うんだがな。
499 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:50:59 ] switch(currentState)みたいなのは多態使うべきだけど メソッドの引数なんかはよっぽどのことがないかぎり 普通にswitch使った方が適切
500 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:51:03 ] >>495 コードの見通しが悪くなる弊害を無視して 常にそれなら、それはそれでアホだな
501 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:52:56 ] >>499 パターン覚え立てだと凝ったことやりたがるのはよくあること シングルトンの乱用なんかが典型的だな
502 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:55:58 ] >>498 不毛な精神論なんてどこを読んだらそうなるんだよww 考え方やスタンスが無くてどんなコードが書けるんだ 攻略サイトが無いとパズルゲー解けないみたいな主張はゆとりと言うより、ちょっとひどい勘違い
503 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:58:24 ] >>502 自分で考えろだの拾ってくるのが正しいだの、こんなの何の役に立つアドバイスなの? 発言してて気持ちいいだけっしょ?
504 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:59:22 ] >>501 逆に初学の間は(どんなにコーディングに慣れた人でも新しい何かを始めた時も含めて、初学の間は) 色々無茶するのはむしろアリだよな 仕事に適用しなきゃならん場合は確実に除いて
505 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:01:00 ] デザパタはあくまでよくあるパターンでしかないからな。 それにGoFで挙がってるのが唯一無二ってわけでもないし。 何でもかんでもアレに当てはめようっての自体がアンチパターン。
506 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:03:13 ] >>503 どうしてそんなスタンスで話を見てるのか、俺にはそれこそお前の気持ちがわからない 俺はどんな話でもそこにヒントを探す。何故ならその方が自分の時間に無駄が無いから てか、気持ちいいだけでしょ?とか、その発想の方が不毛で無駄 コーディングの役にあんまり立たない
507 名前:新人 mailto:sage [2009/11/14(土) 15:03:41 ] クイックソート実装しました! エラー処理とかきっちりやったんで100行ぐらいになりましたよー!いやー苦労しました! 標準ライブラリのとかってなんか遅そうじゃないですか?
508 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:05:05 ] IPアドレスにマッチする正規表現ってこれでいいですか? private static Regex regexIP = new Regex(@"(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])");
509 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:06:07 ] >>506 そりゃお前の話だろ 何故ならその方が自分の時間に無駄が無いから(キリッ 気持ちいいですか?
510 名前:471 mailto:sage [2009/11/14(土) 15:08:01 ] なんかすごい勢いで流れてますが、 >>479 さん、追加例ありがとうございます。 MyClass自体は非ジェネリッククラスにして、 objectに外部で指定された型にParseしたvalueを入れておき、 myclass.getValue<int>(); みたいにとるのも可能性としてはありますね。 結局、 (int)myclass.getValue() と myclass.getValue<int>(); なら前者がシンプルでわかりやすいかなという気がします。 長々とお付き合いいただきありがとうございました。
511 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:08:27 ] >>508 IPアドレス 正規表現でググってでてくるのが軒並それと一緒だから多分大丈夫じゃね?
512 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:09:08 ] >>505 同意。その良くあるパターンを良くある理由も含めて追いかけると、先に進むにつれて楽になる 自分の技や発想のバリエーションがマジで広がる 何がアンチパターンなのかもきっとわかるよな
513 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:10:31 ] >>509 お前多分向いてないよ。もう消えとけ
514 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:10:48 ] >>510 どういたしまして。 つーか、おまえらこんなにいるくせに 黙ってスレ眺めてたのかよ、きめえww
515 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:13:18 ] ある引数の値の範囲を実行時じゃなくコンパイル時に制限することって出来ますでしょうか 値の範囲自体は1-9とかの狭い範囲です。(マージャンゲームの実装をしています) enumを使ったり値自体をクラスにすれば出来そうな気もしますが、そういうやり方が正しいのかどうか よくわかりません。
516 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:13:22 ] >>508 (25[0-5]|2[0-4]\d|[01]?\d\d|\d) こうしないと数字の途中で切れるんじゃ
517 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:14:22 ] 多分3人ぐらいで回してると見たね。
518 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:16:27 ] 俺もそう思う
519 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:17:07 ] そんな感じ
520 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:17:56 ] >>512 ただ、それはアンチパターンだよ、ってのを教えてもらわないと 一生パラダイムシフトしないまま終る人も居る気がするよ。 仕事でやってりゃ怒られたりほされたりして気付くだろうけど シコシコフリーソフトをソース公開しないで発表してたりする場合は 誰にも何にも言われんからなぁ。
521 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:18:43 ] >>517-519 お前らかww
522 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:22:34 ] >>520 あぁ確かに。 指摘してもらえるのって大事だもんな 誰も一人では成長できないって奴だ 自分で広げるスタンスをデフォにした上で、他の人の意見を理解する、みたいな やはり同意
523 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:25:28 ] ボタンを押した瞬間にコンテキストメニューを表示する動作を実装してるんですけど ContextMenuStripを使うとメッセージをブロックしてくれないから?ポップアップすると ボタンがアップしてしまいます これをContextMenuで実装するとボタンが凹んだ状態を維持出来るんですけど 機能がContextMenuStripに比べて少ないのでそれはそれで困ります そこで、ContextMenuStripでShowしたときにメッセージをブロックする良い方法があれば教えてください APIのTrackPopupMenuを試してみましたが表示されませんでした なおボタンをトグル式にしたりして見た目上回避する方法はとれません
524 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:30:31 ] >ボタンをトグル式にしたりして見た目上回避する方法はとれません なぜ? 単にそれだけで解決する「問題」に思えるんだけど。 ちなみに、個人的にはそんなメニューが表示されている間だけ「ボタンがフリーズする」 UIは生理的に気持ちが悪い気がする。
525 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:31:42 ] >>523 は>>463 を頑張ってるんじゃないんだろか
526 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:37:24 ] >>524 エクスプローラの「アイコン/一覧/詳細」の切り替えボタンの動作といったら分かりますかね 凹んだ状態でもう一度押したらポップアップが解除されるだけですけど メッセージがブロックされてないと、一瞬閉じてまた開きます これ以外にも細々とした挙動で多くの不都合がありますので採用できません >>525 別人です
527 名前:デフォルトの名無しさん [2009/11/14(土) 15:41:20 ] 「秀丸エディタ」でC#用のソースを生成しようとしたのですが、 「秀丸エディタ」の正規表現の置換がうまくいきません。 作業内容は、 (1)Excelで作成した表を、タブ区切りのテキストデータとして保存し、 (2)「秀丸エディタ」でそのテキストデータを開き、 ^(先頭文字)⇒¥t¥t¥t に全置換しようとしました。 もともとテキストデータであったファイルを置換するときはうまくいきますが、 Excelからエクスポートしたテキストデータは、先頭行を認識してくれないのでしょうか。 どうすれば、先頭行を置換できるでしょうか。 スレちがいかもしれませんが…よろしくお願いします。
528 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:48:12 ] 趣味でプログラミングやってる人に仕事でやってるようなノウハウを押し付ける人たちってきめぇわ 死ねよ
529 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:48:19 ] >>527 マルチポストです
530 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:50:11 ] >>527 スレ違い帰れ
531 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:50:48 ] class このスレ{ public int バカ; public string アホ; public static void 無駄レス(); }
532 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:53:08 ] >>528 な。連中がしてることってオナニーだよな。
533 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:53:37 ] >>526 なるほどお節介をいって申し訳ない。 ちなみに、今ちょっと実験してみたらButtonのOnMouseUpをオーバライドして ベースクラスのOnMouseUpを呼ばないようにすると「押されたまま」の状態になるようだ。 ボタンを通常の状態に戻したいときには、OnMouseUpが呼ばれた時のMouseEventArgsを 保存しておいてベースクラスのOnMouseUpを呼べばいいみたい。 これがWindowsプログラミング的に正しいかどうかは分からないけど。
534 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:03:22 ] >>533 ありがとうございます 確かにその方法でボタンの押しっぱなしには対応できますね ただボタンを左クリックして解除された時の動作や、 ポップアップしているメニューと関係のないコントロールの キーボードショートカットなどが効いてしまいます これらの多くの問題に対処するには、どうしても ContextMenuのようなメッセージをブロックする形で ポップアップしないとキリがない感じです・・・ なので、なんとか辻褄を合わせるような対処法は避けたいのです
535 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:04:44 ] 麻雀牌のクラスを作る場合、 abstract class 牌 {} abstract class 数牌 : 牌 {} abstract class 萬子牌 : 数牌 {} class 一萬 : 萬子牌 {} ... abstract class 字牌 : 牌 {} abstract class 三元牌 : 字牌 {} class 中 : 三元牌 {} ... ってやって全部クラスにしちゃうのと abstract class 牌 {} enum 数牌タイプ { 萬子,. 筒子,... }; class 数牌 { 数牌タイプ Type, int Number} enum 字牌タイプ { 東, 南,.... }; class 字牌 { 字牌タイプ Type, } みたいに途中でenumで振り分けちゃうのはどっちが実装として正しいんでしょうか?
536 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:24:12 ] いろんな言語を勉強すると 今まで使ってた言語の良い部分と悪い部分が浮き出てきて良いなぁ
537 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:32:50 ] >>536 スレ違い
538 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:34:38 ] decimalってなんで最後にmつけるの? decimalなんだからdでいいだろ!doubleと間違うならdeでいいだろ! なんだよmって!
539 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:38:33 ] プロが作ってるソフトつっても公開してるフリーソフトみてもらえればわかるけどレベル低いよ プロのうんちくは読んだ本の受け流し 趣味グラマでも萎縮する必要はないよ
540 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:39:48 ] >>538 moneyのmだろksg
541 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:40:26 ] >>535 まず、牌の種類ごとにクラス分けする必要があるかどうか疑問だなぁ。 牌を使って何をするかにもよるが。
542 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:40:26 ] >>539 具体例プリーズ
543 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:48:05 ] >>541 回答が貰えた!ありがとうございます。 最初は牌クラス一つにしようと思ったんですが、 数牌は種類と数字が必要なのに字牌は種類だけ必要 => 字牌の場合数字が死にプロパティになる?ってのと、 ドラの牌を調べるのにこの牌の次の牌(九萬の次は一萬、南の次は西とか)はそれぞれの種類毎に あったほうがいいかなぁと思って、それならどんどん派生させた方がいいのかなぁって思えてきまして・・・ 実際に処理する場合は 牌インスタンス is 萬子 で判定するか、 牌インスタンス.Type == 数牌タイプ.萬子 で判定するかの違いぐらいかなぁって漠然と考えています。
544 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:58:30 ] 二次元配列で 0-1 東 0-2 南 0-3 西 0-4 北 1-1 白 1-2 葵 1-3 中 2-1 2-2 ... 2-9 萬 3-1 3-2 ... 3-9 筒 4-1 4-2 ... 4-3 索
545 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 17:07:41 ] >>544 ??インデックスを牌クラスに持たせるということでしょうか??
546 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 17:42:41 ] 条件分岐は逐次処理になってしまうんでしょうか? 全スレッドに対して一様に条件分岐を行うと処理が遅くなったので…
547 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 17:51:26 ] 条件判断に使ってるインスタンスがロックされてて 逐次処理になってるんじゃね?
548 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 18:12:15 ] ふふふ・・・面白い漫才スレw。 はじめから完璧なものを作れた人なんていないしプロは過去の遺産を使いまわしているから 穴が少ない傾向にあるだけでしょ。どんな使われ方をしても大丈夫なプログラムなんて そうそう作れるものではない。それは色々なOSが証明している。 と、初心者なおらは思う。
549 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 18:13:42 ] >>548 ん?何に対する話だ?完璧なプログラムの話なんか誰かしてたっけ?
550 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 18:25:59 ] 完璧なものを作る・・・?どんな使われ方をしても大丈夫なプログラム・・・? printf("Hello World!!\n"); 残りmain部分だけしか書いてないならどんな使い方をしてもバグは起こらないだろうな
551 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 18:41:02 ] しかし、ランタイムが入っていなかった!
552 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 18:49:50 ] >>551 どこまでをプログラムとするかでそこらへん変るから。
553 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 19:11:47 ] ランタイムがバグっていた!
554 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 19:44:58 ] >>543 >>541 の言う通りなにをするかによるんだけど。 自分だったら牌クラスをひとつ用意した上で、enum で牌の種類を全部定義して、それをプロパティで 設定/参照できるように作る。テキストベースなプログラムを作るなら、牌をユーザに示すための文字を 設定/参照するプロパティを、GUI? なプログラムなら、牌のイメージを格納したビットマップかなにかの以下略。 ‥‥と脱線気味な雰囲気に抵抗してみた。w
555 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 20:00:26 ] >>554 役を判定するときにクラスに別れてたほうが判定しやすいかなーと思ったけど よく考えてみると緑一色判定とかしたくなったら牌を特定するしかないわけだから 渡された牌があるグループに属してるか判定する静的メソッドでも作った方が シンプルになりそうですね。 牌はenumで全定義、グループ判定は静的メソッドの方向でがんばってみようと思います。ありがとうございました。
556 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 20:09:05 ] >>555 静的メソッドより、Is萬プロパティとかの方がC#っぽい ような気がする。
557 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 20:48:39 ] >>556 牌のインスタンスにIs萬とかIs数牌とか付けるってことですよね。 そこらへんどう解決するのがスマートなのかなんですよね、結局。 Is萬とかにする場合・・・ ◯{get; private set;} なプロパティにしてコンストラクタ内で設定 --> コンストラクタでenum牌タイプを見てswitchして判断する? → コンストラクタがごつくなる・・・ ◯コンストラクタに引数で渡す --> Is萬がtrue, Is字牌がtrue、typeが一索なんてのをはじけない って書いてて思ったけど、HashSet<牌タイプ> 萬子Set, 索子Set..... とか作って それで判断すればそんなにごつくならないかな・・・
558 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:02:27 ] VBとVC#ならどちらがプログラム初心者にとっては組みやすいですか?
559 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:03:58 ] 試しに書いてみれば? 書くと何がスマートじゃないか何となくわかるからそれで書き直せばOK
560 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:05:30 ] >>558 c#
561 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:12:23 ] >>560 どうしてでしょう? VBは入門言語だと聞きますが、VC#も似たようなものでしょうか? また、趣味で本格的なプログラムをするとなればどちらが有利ですか?
562 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:14:42 ] どちらも難易度は変わらない 趣味なら断然C#。VBを選ぶ積極的な理由はない。使ってる人はみんな仕方なく使ってるだけ。
563 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:18:44 ] 昔はVBとVC++が比較されてて、 VC++はポトペタ(フォームに貼り付けてイベント直接書いて終わりの書き方)が今一な上、 C++の概念もMFCも難しかった。よってVBの方が楽っていわれてた。 その流れでVBの方が楽っていまだに言う人がいるんじゃないのかなぁ。 VBもVC#も.NETを使いこなすのが一番のポイントになってるから 文法が違うぐらいでやるこた一緒だよ。 んで文法の自由度はC#の方が強力。
564 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:25:40 ] 趣味なら情報は主にwebに頼ることになるだろうけど,それについてはC#の方がずっと充実してるんだよね オープンソースプロジェクトもほとんどC# C系言語に慣れてればjavaやC++の情報も理解しやすい
565 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:31:25 ] C#のdoubleって計算の途中でどうみても誤差が発生してる場合微妙に調整されてるの? math.PIとかmath.Eとかつかった計算をdoubleでやってみてToStringすると条件によってきっちりした整数が表示されることがあるんだが・・・ こっちとしては10.000000000001とか表示されるより10と表示されるほうが楽でいいんだけどさ。
566 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:31:41 ] C#は.NET用に一から設計されているから、負の遺産が無いのもメリット
567 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:38:39 ] 超初心者はMainをmainって書いちゃったりusingをUsingって書いちゃったり;がありませんとか double型とint型は互換性がありませんとかコンパイラにおこられまくるからいやになるかもねw
568 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:40:11 ] >>565 ToStringの段階で下の方切り捨ててるだけ 実際の演算とは無関係
569 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:52:22 ] >>565 double x = 10, y = 10.0000000000001, z = 10.00000000000001; Console.WriteLine("{0}, {1}, {2}", x.ToString(), y.ToString(), z.ToString()); Console.WriteLine(x == y); Console.WriteLine(y == z);
570 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:03:54 ] キーボードショートカットの実装で、どういうキーが押されたかの判定は どういうふうにやるのが一般的なんでしょうか。 ぐぐるとifやswitchをつかった例がいくつか見つかりますが、数が多くなったり、 Shiftなどの装飾キーの有無も含めた判定をするとかなりごちゃごちゃしそうなのですが・・・
571 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:05:57 ] メニューやコントロール自身に関連づけるのが一般的じゃない?
572 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:18:47 ] string word が日本語かどうか判別できる関数または方法はありますか?
573 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:23:39 ] >>570 ちょっとかいた、多分動く protected override bool ProcessCmdKey(ref Message msg, System.Windows.Forms.Keys keyData) { //Debug.WriteLine("ProcessCmdKey Start:"); const int WM_KEYDOWN = 0x100; const int WM_SYSKEYDOWN = 0x104; if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN)) { switch (keyData) { case Keys.F1: return true; case Keys.F2: return true; case Keys.F3: return true; case Keys.F4: return true; case Keys.F5: return true; case Keys.F6: return true; } } return base.ProcessCmdKey(ref msg, keyData); } 各キーとリターンの間に実行したい処理をいれればいい。他のキーの組み合わせはぐぐれ
574 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:42:14 ] アセンブリのことがよくわからないのですが、 VC#の場合1プロジェクト1アセンブリという認識でだいたい合っていますでしょうか?
575 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:45:45 ] VC#の場合1プロジェクト1モジュール1アセンブリ
576 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:46:35 ] うん。
577 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:00:10 ] マルチモジュールアセンブリってどういうときに使うの
578 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:06:00 ] >>577 msdn.microsoft.com/ja-jp/library/168k2ah5.aspx
579 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:08:42 ] >>557 自分なら、そう言う判定は牌クラスにはやらさない。 麻雀はやらないから良くはわからないけど、手牌を管理するクラスの基底クラスか、 役を判定するクラスを作って、そこで判定させる。 麻雀を知らないから良くわかんないんだけど、牌のグループを判定する目的ってなに? そんなのなくても判定できそうに思うんだけど。。。
580 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:11:23 ] どうせアルゴリズム主体だからどうでもいい
581 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:20:02 ] >>579 牌の情報は牌が知ってる方が妥当な設計かなーと思ってそういう設計にしてました。 実際そういった情報を使うのは役判定クラスだけになりそうなんですよね。 グループの判定がしたいと思った理由は、以下のような役で ある牌がどのグループに属してるか判った方が実装が楽かなと思ったからでした。 ・清一色(全部の牌が萬子、筒子、索子のうちの一種類) ・字一色(全部字牌) ・混一色(清一色に字牌の面子あり)
582 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:28:25 ] Win32APIのCreateProcessを使っているのですが C++だと終了前にCloseHandleをするように決められています これはリソースの解放をいうことだと思うのですが ガベッジコレクション?があるからC#では特に解放したりする必要はないのでしょうか?
583 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:32:34 ] >>582 自分で解放しなきゃダメ。 GCに回収/開放されるのはC#の管轄内で生成されたオブジェクトだけ 具体的にはそのインスタンスの為に処理系が用意したメモリ領域だけ
584 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:33:18 ] 当たり前に必要。というかなんで Process クラスを使わん .NET でまじめに Handle を使うのなら SafeHandle を使う 必要もあるし、P/Invoke は素人にお勧めできない。
585 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:41:38 ] >>581 なるほど。知識不足、すまん。 それなら、牌種類 enum の他にグループ enum を牌クラスのプロパティに持たせるかな。 やっぱり牌クラスにはその手の判定メソッドは持たせない。自分なら。
586 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:49:41 ] private void GetTextBlocks(UIElement p) { if (p is TextBlock) { list.Add((TextBlock)p); }else if (p is Panel) { var pa = (Panel)p; foreach (UIElement c in ((Panel)p).Children) { GetTextBlocks(c); } }else if (p is ContentControl) { GetTextBlocks((ContentControl)p); } } 再帰的に TextBlock の一覧を取得するメソッドですが、 これを Linq とか ラムダ式とか使ってメソッドを定義せずに 短く書くことってできますか?
587 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:51:05 ] >>585 なるほど、属するグループもenumにしちゃうってのは盲点でした。 [Flag]属性付けとけば数牌かつ萬子とか風牌かつ字牌なんてのも容易に表現出来そうですね!
588 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:55:27 ] >>583 やっぱそうなんですか うーん管理が必要だな >>584 そっちは 作成時にウインドウスタイルをいじれなくて困ってます 作成、MoveWindow(Win32API)でサイズ変更 とやると管理は必要ないですが プロセスが立ち上がるまでサイズがデォルトなので支障がありまして・・・ せめて、非表示でプロセスを立ち上げる方法があれば・・・・と思ったのですが検索しても見つからず CreateProcessを使用するしかないかという結論に至りました
589 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:59:03 ] ダメだこりゃ。
590 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:01:28 ] C#のみでの解決法も提示できないくせに口だけは御達者のようで^^
591 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:03:36 ] msdn.microsoft.com/ja-jp/library/system.diagnostics.processstartinfo_members (VS.80).aspx >>598 じゃないというか >>584 だけど少しはまともに調べたら?
592 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:04:23 ] >>587 なんでもかんでも[Flag]使って一つのプロパティに収めるのは如何なものか? でもenumが継承出来ない以上無理ないのか。
593 名前:588 mailto:sage [2009/11/15(日) 00:07:03 ] ちなみに現在の状況としてはプロセスを起動 WaitForInputIdle()でIdleを待ち MoveWindowでサイズを変更すると言った感じのことをしています Idleをまつのだから、プロセスがデフォルトの設定で開かれるのはしかたないことではあるのですが ちょっとそれだと支障がありまして
594 名前:588 mailto:sage [2009/11/15(日) 00:11:10 ] >>591 みなさんからすれば調べ方が悪いのでしょうが自分でも半日以上調べてたのですが どうしようもなくこういう結論に至ってました そんなものがあったのですね ありがとうございました 自分で考えて導き出した結論はたしかに初心者なので間違ってることも多いかと思います でもなにも考えずに あれやるのどうするの?これやるのどうするの? って全部聞いた方がいいんですかね? 自分で必死に考えてだした結論をそうやってバカにされるのは正直不快ですね
595 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:14:00 ] バカなんだからしょうがない。
596 名前:588 mailto:sage [2009/11/15(日) 00:15:41 ] >>595 ここは初心者スレじゃなくて 分からない人をバカよばわりして上級者が偉ぶるスレですか?
597 名前:588 mailto:sage [2009/11/15(日) 00:16:22 ] うそですdb
598 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:16:30 ] 煽られるのがいやなら、2ch なんて来るなよ。
599 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:17:54 ] >>598 お前の2ch論を勝手に初心者におしつけんなよwwwwwwwwwwww 2ch利用すると煽られなきゃいけないとかお前の世界はどんだけゆがんでるんだよwwwwwwwwwwwww
600 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:18:59 ] 少なくとも煽り耐性くらい付けろよ… 2ch初心者までは歓迎してなんだが。
601 名前:588 mailto:sage [2009/11/15(日) 00:19:30 ] >>598 >>597 さんはどなたでしょうか 不快なのは確かですが 自分がバカなのも確かですので仕方ないです 他の方が教えていただけたので自分は満足です ありがとうございました。喧嘩はしないでください
602 名前:588 mailto:sage [2009/11/15(日) 00:20:40 ] >>600 2ch初心者wwwwwwwwwwwwwwwwwww ぼくは2chのプロですwwwwwwwwwww あおっちゃうし偉そうに初心者を見下すけど解決法も提示しませーんwwwwwwwwwwwww ってかwwwwwwwwwwwwwwwww どんだけゆがんでんだよwwwwwwwwwwwwwww
603 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:20:42 ] 気にせずに、また来いよ。バカ
604 名前:588 mailto:sage [2009/11/15(日) 00:21:26 ] うそですdb
605 名前:588 mailto:sage [2009/11/15(日) 00:21:31 ] うそですdb
606 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:22:11 ] >>604 わろたwwwwwwwwwwww
607 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:22:49 ] >>594 煽るやつにしか煽り返さんよ。自覚ないのかよ?不快いう お前が不快だ。 それはそれとしてやっていることの内容的に CreateProcess でも 不自然でもないかもな。Vista や 7 で問題があるから使われなく なりつつある API だけど。 で、まじめに使う場合の話したが、具体的にはハンドル型を SafeHandle から継承して作成してうんぬんってややこしいことを しないといけないので大変って話だ。やりたいんなら説明は長く なるから SafeHandle でぐぐってその辺の知識を入れてからやれ。
608 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:27:22 ] 香ばしいスッドレですね
609 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:27:56 ] >>586 メソッドは必要 無理やり最近のC#っぽく書くならこんな感じか private IEnumerable<TextBlock> GetTextBlocks(UIElement p) { var textBlock = p as TextBlock; if (textBlock != null) yield return textBlock; else foreach (var textBlock in LogicalTreeHelper.GetChildren(p).SelectMany(c => GetTextBlocks(c))) yield return textBlock; }
610 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:31:38 ] はい次の方どうぞ
611 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:33:59 ] なんか根本的なところが間違ってる、とまではいわないまでも、考え違いをしているような気がする。 もういちどスタートラインに戻って考え直してみてはいかが?
612 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:49:16 ] WebBrowserのこんとろーる? を使ってるんだけど IEデフォルトのショートカットを無効にして自分で設定したショートカットを使うにはどうすればいいの?
613 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 01:18:17 ] >>573 ありがとう。研究してみる
614 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 01:52:12 ] 神回答者の俺がいなくなるとすぐに荒れるな まったくおまえらの役立たずぶりには困ったもんだ
615 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:17:39 ] さっきのものですが非表示起動はできたのですが その後、非表示から表示にきり変える方法が分かりません msdn.microsoft.com/ja-jp/library/system.diagnostics.processwindowstyle%28VS.80%29.aspx に、 Hidden 非表示のウィンドウスタイル。ウィンドウは表示または非表示のいずれかにできます。システムは、ウィンドウが非表示であることを示す場合は、そのウィンドウを描画しません。 ウィンドウが非表示の場合、そのウィンドウは無効になります。非表示のウィンドウは、システムまたはその他のウィンドウからのメッセージを処理できますが、ユーザーからの入力を処理したり 、出力を表示することはできません。アプリケーションは、新しいウィンドウを非表示にして、そのウィンドウの外観をカスタマイズしてから、ウィンドウ スタイルを Normal にすることがよくあります。 と、描いてあるのですが非表示で作成したプロセスをどうやって表示状態に戻すかが分かりません 作成したプロセスのWindowStyleを再度変更するにはどうすればいいのでしょうか? win32APIも試してみたのですが ProcessStartInfo startInfo = new ProcessStartInfo(save.memosoft); startInfo.WindowStyle = ProcessWindowStyle.Hidden; Process p = new Process(); p.StartInfo = startInfo; p.Start(); p.WaitForInputIdle(); Win32API.MoveWindow(p.MainWindowHandle,200,200,480,640,1); p.WaitForInputIdle(); Win32API.ShowWindow(p.MainWindowHandle,1); こんな感じで表示を切り替えようと思ったのですが非表示のウィンドウが表示されてくれません ShowWindowの2や3最大化・最小化なんかは、普通に動くので表示・非表示切り替えの部分だけ Cと、C#では別のものなのでしょうか? よろしくお願いします
616 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:25:23 ] >>615 すまん、Win32系のスレで聞いた方が早いかも 対象言語はC/C++になるとは思うが
617 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:29:22 ] どう考えてもC#の領域だろうが
618 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 08:52:57 ] >>569 Console.WriteLine("{0}, {1}, {2}", x, y, z); Console.WriteLine("{0:F18}, {1:F18}, {2:F18}", x, y, z); Console.WriteLine("{0:E18}, {1:E18}, {2:E18}", x, y, z);
619 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 09:11:00 ] ばかばっか
620 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 09:14:55 ] >>619 自覚しているんだねw
621 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 09:39:25 ] >>620 自覚しているんだねw
622 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 10:05:50 ] >>619-622 自覚してるんだぜ
623 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 10:33:39 ] ねぇ、オウムって賢いと思う?w
624 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:02:33 ] コンニチハ!オハヨウ!ボクピーチャン!ヨロシク!
625 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:04:39 ] >>586 やっぱContentControl渡すとスタックオーバーフローするな、これ。 何か窺い知れないオーバーロードあるかと試してみたんだが。 例示としては不適切だし、実コードなら見直しを薦める。
626 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:23:05 ] try catchってなるべくつかわないほうがいいの?
627 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:25:41 ] なんでそう思い至ったのか言ってみ
628 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:49:52 ] ム板の感じの悪さは異常。 無駄にプライドばっかり高くてスルー能力も足りず、話を脱線してでも一言いわずにはいられない。 勿論冷静な人も大勢いるだろうが、一部の幼児脳は単芝と^^を付けて顔真っ赤なのを隠しつつ 煽らずにはいられない。 ‥あ、このレスはスレチで、かつ釣りなので絶対にスルーして下さいね。 言わば例外ですが、これは仕様想定外の例外なので catch はしないで下さい。 こんなレスがある事自体が誤りなのです。その他はスルーしないで下さいね。
629 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:54:55 ] 簡単に画像を表示したり graphics gとか使ったりするのはフォームでもできるけど やっぱり画像処理はPictureBoxつかってやったほうがいいですか?
630 名前:デフォルトの名無しさん [2009/11/15(日) 11:55:46 ] >ム板の感じの悪さは異常。 結構学歴あって立場のある人間でも変態がいるからなぁw
631 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 12:28:29 ] >>615 なんでだろうな? CreateProcess() して、ShowWindow() なら表示されるんだよね? 表示・非表示以外はできる、ってことだから、ウィンドウハンドルはちゃんと取れてるんだろうし。
632 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 12:29:06 ] 煽り煽られはマの基本的な習性です。言語論争など尽きる ことがありません。そうやって知識とか整理されたり解決策を 導く兵達の世界なのです。でもこれを忘れて暗黒面に落ちる のは自重しようね! >>629 「画像処理」をもうちょっと詳しく。拡大縮小とかそんなの?
633 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 13:12:37 ] 楽しいからいいよ
634 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 13:20:44 ] axWMPコンポーネントを使い、 wmp.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(st); public void st(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) { MessageBox.Show("StateChanged"); } こうして、停止/再生を繰り返してもメッセージが表示されません。 何か間違っていませんか?
635 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 13:36:13 ] >>634 なんか最後の1行でフイタ そのライブラリって有名なのか? リファレンスにはその状況下でそれでハンドル出来ると書いてあるの? 最早知らないとわからない話の類だと思う
636 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 14:21:56 ] >>635 新規プロジェクトで、>>634 だけ張るとちゃんと機能してくれるんですが・・
637 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 14:51:27 ] WindowsMediaPlayerSDK見ると、サンプルで Player = new WMPLib.WindowsMediaPlayer(); Player.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange); で private void Player_PlayStateChange(int NewState) { ・・・・・ } になってるな。
638 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 16:29:55 ] >>626 try に入る部分で負荷がかかるから try のネストはするなってのをむかーし Java か C++でのなんかで読んだ気がする。 C#はどうなのかはあんまり気にしたことなかったなぁ。 あと .NET だとこんなの見つけた msdn.microsoft.com/ja-jp/library/ms973839.aspx >.NET アプリケーションのパフォーマンス関連のヒントとトリック >送出する例外の数を減らす >例外の送出にはきわめて高いコストがかかることがあるので、.......
639 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 17:04:30 ] string s="abcd"; //いろいろやる s="efgh"; これって、いろいろやるを行っている間は"abcd"はガベジコレクタンの対象にならずに s="efgh"が実行された瞬間"abcd"がガベジコレクタンにぶっこわされるの?
640 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 17:23:56 ] 例外が投げられない時のtry catchのコストは無視していい。 まぁ例外のパフォーマンスを気にしないといけないほど、大量の例外を投げる作り方ってどうなのさ?
641 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:03:29 ] >>640 あるとしたらフロー制御に例外を使うとかじゃない? それが推奨されないやり方だからMSも注意を促してるってことかと。 >>639 瞬間に"対象になる"ってのが正しいんじゃね?すぐにぶっこわされるわけじゃないよ。 あと当然ながら何かに参照されてるインスタンスはガベコレ対象外だよ。 あれこれしてる最中にぶっこわされるとかあったら怖すぎるww
642 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:05:53 ] >>639 リテラルだからガベコレも何もない >>640 正常系で例外を利用するようなとんでもない実装も、 異常系が頻発するような滅茶苦茶な設計も普通に駄目だろ
643 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:07:03 ] >>640 ループの中でcatchしまくり&別にそれでループ脱出はしない、とか。 直接そういう書き方しなかったとしても、ループ内で呼び出してるメソッドの中の方でcatchしてたりすると なかなか見つけづらいんじゃないかな。
644 名前:デフォルトの名無しさん [2009/11/15(日) 18:42:50 ] 部分的に文字列の色やフォントサイズが変更されている1つのリッチテキストボックスの書式の内容を、1つのRectangle構造体の中に同じ書式で印刷することは可能ですか?
645 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:45:43 ] テキストボックスの文字列を数字のみか確かめるときに Parse使うのは駄目なの?
646 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:52:51 ] >>645 try catch の流れで聞いてる? なら TryParse を使いましょう。
647 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:10:06 ] >>637 どういうことですか?
648 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:16:37 ] >>642 リテラルかどうかなんて一切関係のない話だと思うけど。
649 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:18:44 ] >>647 宣言が違うってことじゃね?
650 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:19:55 ] >>645 正規表現使うのがオーソドックスなんじゃないの? まあ扱う数字が非整数かつ国際化対応を考えるとちょっと面倒だったりするんだけど。
651 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:21:14 ] Parse でいいだろ。指数表現とかをどうするか? とかって問題はあるけど。
652 名前:634 mailto:sage [2009/11/15(日) 19:30:38 ] >>647 は私では無いです >>637 wmpはprivate AxWMPLib.AxWindowsMediaPlayer wmp; こう宣言していました。 AxWMPを使って同じ事出来ませんか?
653 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:32:01 ] そういうのはParseとかTryParseで充分じゃね? 正規表現使う程のもんじゃないと思うが。 IsDigitでシコシコチェックするメソッド作るのも別にありだと思う。
654 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:52:04 ] >>648 リテラル文字列の参照はなくならないから、ガベコレの対象にはなり得ない
655 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:55:18 ] >>652 何をやって何がどうできないのか、全然わからんよ。 環境やら手順やら、落ち着いて書いてみ。
656 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:02:58 ] >>655 だけど、少なくとも、俺の環境(Vista 64bit + VS2008 SP1) では、 Windows フォームアプリケーションでツールボックスに Windows Media Player を追加して、 それをフォームに貼り付けて、プロパティウィンドウから PlayStateChange イベントが追加できるよ。 そんで、↓みたいな感じでイベントも取れてる。 private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) { System.Diagnostics.Debug.WriteLine(e.newState); }
657 名前:634 mailto:sage [2009/11/15(日) 20:07:58 ] >>655 AxWMPコンポーネントをデザイナで配置し、 AxWMPLibのPlayStateChangeEventHandlerを使い、曲が終了すれば、 次の配列にある曲を再生、というプログラムを作ってました。 先日、機能拡張を図ろうと、幾つかの機能(次曲移動等の簡単なもの)を制作した後、 プログラムを起動してみると、曲の終了が検知できていなく、これに気がつきました。 それまではちゃんとイベントも捉えられていたのですが、どこを編集したのかも分からなってしまい・・・
658 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:09:49 ] もう一度最初っから作り直せよ。
659 名前:634 mailto:sage [2009/11/15(日) 20:15:33 ] >>656 実際に試して貰ってありがとうございます。こちらの環境でも、新しくプロジェクトを作成すると、 void Form1_Load{axWMP.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(ax);} void ax(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) これでちゃんとイベントは取れています。 >>657 のソースでも同じように記載してありますが、何度そこを書き直しても駄目でした。 今気がついたのですが、>>657 のプログラムだと、新しくWMPのコンポーネントを生成しようとするとエラーが出て生成できませんでした; コンポーネント 'AxHost' を生成できませんでした。エラー メッセージ: 'System.Reflection.ReflectionTypeLoadException: 要求された型のうち 1 つまたは複数を読み込めませんでした。詳細については、LoaderExceptions プロパティを取得してください。 場所 System.Windows.Forms.Design.DocumentDesigner.AxToolboxItem.CreateComponentsCore(IDesignerHost host) 場所 System.Drawing.Design.ToolboxItem.CreateComponentsCore(IDesignerHost host, IDictionary defaultValues) 場所 System.Drawing.Design.ToolboxItem.CreateComponents(IDesignerHost host, IDictionary defaultValues) 場所 System.Windows.Forms.Design.OleDragDropHandler.CreateTool(ToolboxItem tool, Control parent, Int32 x, Int32 y, Int32 width, Int32 height, Boolean hasLocation, Boolean hasSize, ToolboxSnapDragDropEventArgs e)' >>658 かなり膨大なプログラムになってしまいましたので、書き直すのは本当に最終手段にしたく思いまして;
660 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:19:36 ] なんか参照とかその辺がおかしくなっちゃってるんかな。 ソース管理を使ってれば、機能拡張以前にロールバックするところだけど・・・。 変に直すより、最初っから作り直した方が早いかもよ。
661 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:28:38 ] >>660 ですか。。 取りあえず参照周り弄ってみて、 駄目そうなら書き直すことにします。。 ソース管理?なるものがあるんですね。調べてみます。
662 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:36:02 ] つーか、デザイナから配置したなら、わざわざコードでイベント書かなくても、プロパティウィンドウから 追加できるだろ? 実際に配置したコントロールと別のものを使っちゃってるんじゃないの?
663 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:37:48 ] 初めてなら TortoiseSVN あたりが無難かと>ソース管理
664 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:42:02 ] >>662 それも考えましたが、そこから書いても同じでした。 現時点でwmpコンポーネントは1つしか使ってないので、 間違うというのも無いはずなので・・・
665 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:51:41 ] 廃棄周りの処理の流れを追うと何かヒントがあるかもしれなかったり 知らない内に廃棄してる、あるいは廃棄と同等な処理を呼んでしまってる あるいはそこら辺の動きが理解できていなくておざなりになってる とか
666 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:56:10 ] あるいは意表を突いてイベントのハンドラをRemOveしと再設定してる処理がある、とか 曲再生の度にDisposeやHandleの解放もせずに新たにnewしてたりして、そっちにハンドラAddしてないとか こういう謎な時は「それはありえない」って部分含めて丸ごと疑ってみるしかない
667 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:04:32 ] >>665 ,666 それはないと思います。 StateChangeのイベントハンドラでプロジェクト全体に検索かけましたが、 問題有りそうな箇所は見つけられませんでした。 dispose、new周りも確認しました。 曲再生はただURIをwmpに与えているだけなので、問題は無いと思います。 これでも数日間ソースとにらめっこしてたので、 もう新しくソース書くことにしました。。
668 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:09:08 ] QuartzTypeLibを使用して動画再生をさせているのですが、動画表示部(Panel)のクリックを拾ってくれません クリックイベントを拾う方法を教えてください
669 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:09:51 ] >>668 できますん
670 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:32:07 ] >>644 日本語になってねぇぇぇ。 リッチテキストボックスの内容を書式込みで印刷するのは出来る。 support.microsoft.com/kb/812425/ja 「1つのRectangle構造体の中に」がイミフ。
671 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:53:02 ] >>669 ど、どっちなんでしょうか? 可能であれば方法を教えていただけないでしょうか?
672 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:57:33 ] try{ >> 1-671 } catch { //確かに重い }
673 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:15:08 ] >> 1-671 何でスペース入れてんの?w
674 名前:デフォルトの名無しさん [2009/11/15(日) 23:17:41 ] >>670 ありがとうございます! 会社の各店舗がお客さんに配布する広告を作成しようとしています。 大半は、DB登録済みの商品内容を表形式で印刷するだけなのですが、 用紙の左下部分に、店舗ごとのフリー記載欄を設けたいんです。 例えば 「横浜西口店ではこんなキャンペーンを行っています!」←MSゴシック太字 であったり、 「三宮店ではこの商品がお得!!!!」←MS明朝の赤字 など、店舗ごとのオリジナルコメント登録フォームを設け、 リッチテキストボックスにコメントの内容と書式を設定してもらっておき、 その書式内容をそのまま、帳票の左下部分に反映させたいんです。 PrintDocumentコントロールなどの中で、 そのようなことを実現するにはどうすればよいでしょうか。
675 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:58:02 ] >>674 printメソッド見ると分かるけど、GraphicsのHDCの中に印刷領域決めてその中に リッチテキストをEM_FORMATRANGE送ってレンダリングしている。 そこいら辺をゴチャゴチャと直して使えばなんとかなると思われる。 また印刷領域がGraphicsで来ることから分かるけど、普通にg.DrawXXXXとかで 他の部分も描ける。ヘッダとかフッタとか。
676 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 00:00:45 ] その辺のメソッド流用すれば印刷プレビューが作れることも確実。俺やったもの。
677 名前:デフォルトの名無しさん [2009/11/16(月) 00:42:08 ] >>675 ヘッダとかフッタ… 印刷可能領域外に描けるということ? ちなみに、印刷可能領域が用紙の端から何インチか知りたいのだけど、方法が分からない (>_<)。
678 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 03:58:09 ] ReleaseモードのときとDebugモードのときで 出力する実行ファイルの名前を変えるにはどうすればいいですか?
679 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 04:05:47 ] プロジェクトでReleaseモードのときとDebugモードのときで 出力する実行ファイルの名前を変えておけばいいよ
680 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 04:27:55 ] 馬鹿はレスしなくていいよ
681 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 04:52:27 ] バカはレスしなくていいけど 初心者相手に意味不明な専門用語をならべるベテランもレスしなくていいよ
682 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 04:54:41 ] 馬鹿は質問しなくていいよ
683 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 05:06:44 ] なんだよジェネリックって!中で足し算できないのかよ!ファック! T func<T>(T x,T y) { return x+y; } intでもdoubleでも使える関数作るとおもったらできねー!ゴミ!考えたやつ死ね!
684 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 05:11:12 ] つ dynamic .NET 4.0からだけどね。
685 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 05:26:19 ] >>683 すんげー微妙だけど一応逃げ道はあるww T func<T>(T x, T y) { return (T)Microsoft.VisualBasic.CompilerServices.Operators.AddObject(x, y); } まあ、このコードもゴミだなw
686 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 06:40:39 ] T Func<T>を.net2.0でも使えるようにしたいんだけど何か方法無い?
687 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 07:27:23 ] Generic自体は2.0からサポートされてるんだから 自分で定義したらいい。
688 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 07:53:04 ] >>678 つ [ビルド後のイベント コマンド ライン]
689 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 10:26:58 ] 完成したアプリを大幅に変更したいのですが、 現時点でバックアップを取りたいです。 出来れば毎日バックアップが残ればいいのですが、 プロジェクトのフォルダごとコピーしておく以外に良い方法はありますか。
690 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 10:53:23 ] >>689 バージョン管理ツールを使う VisualStudioがStd以上ならフリーのアドインが使えるsvnがいいかも。 まあEEでもツールや文献の多いSubversion(svn)から使い始めるのがいいかな。
691 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 10:58:59 ] git が流行ってる?
692 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 11:01:13 ] >>689 VisualSVN+AnkhSVNオヌヌメ
693 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 11:22:44 ] >>688 ありがとうございます 解決しました
694 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 11:29:00 ] >>683 定義の段階ではTが何の型かわからない訳だから たとえ中で足し算が出来ない仕様だとしても仕方無いような 渡される型にオペレータオーバライドでもできて「自型+自型と書かれた場合はどうする」が 定義出来るならテンプレ中で + が使えないとおかしいとは思う
695 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 12:34:56 ] >>691 git流行ってるけどあれは個人で使ってもあんまり旨みがなさそうな気が・・・
696 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 12:38:58 ] IComparable みたいに加減乗除もインターフェースあったらよかったのにねえ。
697 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 12:44:36 ] >>696 それって演算子のオーバーロードじゃ
698 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 12:58:12 ] ドングルみたいなUSBメモリを自分で作りたいけどハード的な知識がやっぱ必要だろしC#なんかでは作れないよね?
699 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 12:59:57 ] プロテクトするんだったら 通常アクセスしない特定のセクタに特定のデータ書き込んでおく
700 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:04:06 ] >>698 ハードのドライバは難しいかもしれない。 結局C/C++などでI/O処理書いてDLLにする形になると思う。
701 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:19:07 ] >>697 いや、インターフェースがあったら T max<T>(T a, T b) where T : IAddable, ISubable, ..... みたいなことできるよねーみたいな。 もちろん IComparable と同様に Int32 とか Double が実装してること前提だろうけど。
702 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:24:05 ] VC# .NET3.5、 VS2008、WinXPProで開発を行っております。 あるファイルに、下記のような列挙型が定義されています。コメントの通り、近い将来何かの値が追加される予定の列挙型です。 このような列挙型を別のファイル・別の場所で使用する場合、予定された仕様変更に備えて、Exceptionを吐いたり、何かしら忘れないような処理を入れたいと思うのですが、どのような処理がよろしいでしょうか? 一応、思いついたのは下記のようにif/elseで分けた場合には、throw new XXXXExceptionすることでしたが、これでは列挙型が変更された後、実際にプログラムを動かさない限り、追加されたことに気づけません。 できれば、コンパイル時に忘れを防ぐような方法があればいいと思っているのですが…… よろしく御回答お願いいたします。 //あるファイル。 enum Hoge { abc, def, ghi //近い将来、 jkl(?)が追加される予定。 } ---- //別のファイル Hoge hoge = Hoge.abc; if (hoge == Hoge.abc) { //何かの処理 } else if (hoge == Hoge.def) { //何かの処理 } else if (hoge == Hoge.ghi) { //何かの処理 } else { //仕様変更により、Hogeに値が追加された場合、変更を忘れないようにするための備忘録? throw new NotImplementedException(); }
703 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:28:24 ] >>699-700 ナイスな情報サンクス! なるほど・・・ C++とかでローレベルI/O書いて.NETから呼び出せばいいのか でその書込みアドレスは普段使わない(これまた調査が必要そうだけど・・・)位置に書き込んでおけばいいだけなのか・・・ なんとなく方向性はつかめた気がする! やれるだけやってみよう!!
704 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:37:08 ] >>703 汎用IOドライバ使えば読み書きできるとおもわれ。 ただし、バルク転送に限られるけど(確か)
705 名前:デフォルトの名無しさん [2009/11/16(月) 14:32:59 ] C/C++やってました。 VS2008買ってC#を勉強しようとしていますが、 エディタの設定がデフォルトでタブが空白になるような設定になっています。 タブを空白にするメリットって自分には思いつかないのですが、どうなんでしょうか。 タブをスペースにするメリットってなんですか? またそういう人は結構多いんでしょうか?
706 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:38:29 ] ハードタブは環境によって見かけの桁数変わるから嫌う人もいる コマンドラインでダンプする時も調整利かないから見づらい 半角空白はUnix系の人に多い気がする
707 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:44:44 ] あとタブ文字は元々見たままの空白文字では無いから(機能文字/プリンタの制御コードだから)、 単にソースの見栄え整えるのに処理系で変わる機能文字使いたくない/使わない って言う文化もある。 タブ文字に別の意味割り当ててる処理系もあったはず
708 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:46:42 ] >>706 なるほど、納得です。ありがとうございます。
709 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:52:45 ] VisualStudio2010ただでロードしたwww なにこれwwwインテリセンスの強さとかマジヤバくてVC#2008Expとかウンコに見えるんですがwww 機能制限とか使用期限とかあんの?
710 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:57:02 ] VisualStudioのスレなら誰か答えてくれるんじゃね
711 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 15:28:19 ] ttp://www.dotup.org/uploda/www.dotup.org363416.jpg これを広告したかっただけでしょう
712 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 15:43:08 ] ちょっと和んだ
713 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 16:39:58 ] 2つのListboxにContextMenuStripを関連付けた場合。ContextMenuStripのメニューがクリック された時にどちらのListboxから呼び出されたのか調べる方法はありますか?。
714 名前:713 mailto:sage [2009/11/16(月) 16:44:07 ] SourceControlで取れるのかな ちょっと行ってきます
715 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 18:35:17 ] >>709 バージョン情報の右上に残り日数が出てるだろう。
716 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 18:44:22 ] >>711 厨房仕様だな・・・・・
717 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 20:06:26 ] >>711 おー、いいねえ コードに詰まった時の気分転換になるな
718 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 20:13:13 ] >>698 USBデバイスはVendor ID(メーカー固有)、Produce ID(製品種固有)、 シリアルナンバー(個体固有)の3つの識別子を持っているから、 これらを使えばどんなUSBデバイスでもドングルとして使えそう。 (正確には、シリアルナンバーを持ってないUSBデバイスもあるんだけど、 USBメモリのように一人のユーザーが複数個使用する可能性があるデバイスでは まず間違いなくシリアルナンバーを持っているはず。) これらのIDの取得方法は、ここが参考になりそう。 ぱっと見た感じマネージドコードだけで意外と簡単に出来そう。 supermab.com/mikan.html
719 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 20:14:10 ] ソースに目がいかない
720 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 20:21:41 ] 無意識に長いコードを書いてしまいそうだな
721 名前:デフォルトの名無しさん [2009/11/16(月) 20:21:53 ] Winフォームアプリケーションを作成しています。 入力予定のcsvデータは、次のような内容となっています。 さくら組,Red こすもす組,White このデータを読み込んで、帳票に、1項目目の組名を印刷したいと思います。そして2項目に組名の文字の色があるので、 その文字列をそのまま引用して文字列の色を指定したいと思います。 string a; a = ゙Red゙(入力したcsvデータの内容); としたとき、aの値を直接代入して色を指定することは可能ですか? よろしくお願いいたします。
722 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 20:33:49 ] >>721 Color 構造体を引数に取るメソッドに文字列を直接与える事はできないので、 なんとかしてその文字列を基に Color 構造体の値を得る必要がある。 KnownColor 列挙体に存在する名前だけを使うのなら、 Color.FromName("色名") でその色の Color 構造体が取得できる。 だから Red や White なら偶然にもこれでOK。 でも、KnownColor 列挙体に無い色名も使うのなら、 Color.FromName メソッドは諦めて 独自の色名から rgb 値を得る Dictionary を作っておくといい。
723 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 21:01:28 ] >>677 サンプルにある e.PageBounds がページサイズ、e.MarginBounds がマージンの内側。 このサンプルはマージンの内側にリッチテキストをレンダリングするわけ。 インチ換算もサンプルをよく読むと //Convert the unit used by the .NET framework (1/100 inch) //and the unit used by Win32 API calls (twips 1/1440 inch) private const double anInch = 14.4; とある。 俺はどうしたっけかなーと、ソース確認。 // 正直、位置は適当・・・ graphics.DrawImage(logo, PageBounds.Width - 60 - logoWidth, 10, logoWidth, logoHeight); とか書いてあってフイタ。
724 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 21:30:33 ] >>702 意図的に判断文に入れていないのかどうかはコンパイラには判断できないからねー
725 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 21:39:06 ] 条件分岐だから忘れるんだろう。ということで、ClassFactory みたいな形の メソッド呼び出しにするとかどうかな? Enum じゃなくなっちゃうけど。
726 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:30:02 ] listviewにアイテムを追加する時にソートというか日付順に入れたいのですが、以下のような 方法だと上手く並びません。どのように書いたら上手く並べられますでしょうか?。 int insert_point = -1; foreach (ListViewItem lvis in listView1.Items) { if (DateTime.Parse(lvis.Text) < InsterDateTime) { insert_point = lvis.Index; } } if (insert_point == -1) { lvi = listView1.Items.Add(insert.DateTime); } else { lvi = listView1.Items.Insert(insert_point, insert.DateTime); }
727 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:37:40 ] DateTime.Parse(lvis.Text); これが 原因のような 気がする
728 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:38:36 ] 普通にList<DateTime>かIEnumerable<DateTime>.OrderByかなんかでソートしてから 突っ込めばいいじゃん
729 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:43:26 ] 一番単純には ×insert_point = lvis.Index; ○insert_point = lvis.Index+1; じゃないかな? 例えば一個しかない場合にDateTime.Parse(lvis.Text) < InsterDateTimeだった としてlvis.Index==0だから先頭に突っ込んじゃう。
730 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:46:58 ] >>727-729 複数のRSSを時間をずらしながら習得しているのでその度に全部List等に入れてソートするのは どうなのだろうと思うのです。それから日付が新しい(現在時刻に近い)ものほど上に持って来たい ので+1だと下に来ちゃいますよね。
731 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:47:14 ] ダメな人って問題の切り分けが出来ないんだな本当。 ソートはソートであって、ListViewなんか一切関係ないと思うんだが。
732 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:47:25 ] 他の手段は、listView1.ListViewItemSorter に IComparer 実装した無名クラス ぶちこんどけ。
733 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:49:39 ] ちょっと気になっているのですがDateTimeの比較は秒?に変換されてから行われているのですか?
734 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:50:37 ] 秒ではないな。Tick だろ。
735 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:51:08 ] >>702 列挙型の値が追加されるだけならswitch構文が適切じゃないかな。 defaultでNotImplementedExceptionを返してあげればいい。
736 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:52:25 ] >>733 なんでMSDNで調べてからものを考えないの?
737 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:53:10 ] msdn.microsoft.com/ja-jp/library/system.datetime.aspx
738 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:53:23 ] >>733 100ns刻みの内部表現で比較される
739 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 23:07:29 ] みなさん、ありがと。break;を追加したらちゃんと動きました、が何故・・・あぁ・・下に行くほど 小さくなるから当たり前ですね;。 insert_point = lvis.Index; break;
740 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 01:22:22 ] Form1.csをデザイナで開こうとすると、何故か変な文字列(XML?)が表示されるようになってしまいました。 元のようにフォームデザイナで表示するにはどのようにすれば良いでしょうか?
741 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 01:26:21 ] 手動で何かのコード追加した?
742 名前:デフォルトの名無しさん [2009/11/17(火) 01:33:25 ] >>722 ありがとうございます。 感謝感謝感謝です。
743 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 01:34:27 ] どんな文字列? 頭の2行ぐらい <?xml ...?>はいらんけど
744 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 01:36:11 ] >741 はい。ただ、何が原因なのかは分かりません。 追加部分を削除しても戻りませんので…。 ちなみに実行後は通常通りフォームが表示されます。
745 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 01:40:36 ] コンストラクタに引数増やしちゃったとか
746 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 01:41:01 ] >743 すみません、普通のHTMLのようでした。htmlファイルに突っ込んでブラウザで開くと、 こんなかんじの分が表示されます。一部抜粋 クラス Form1 はチE��インできますが、ファイルの最初��Eクラスではありません。 Visual Studio では、デザイナ��Eファイルの最初��Eクラスを使用する忁E��があります。 クラスがファイルの最初��EクラスになるよぁE��クラス コードを移動して、デザイナを再度読み込んでください、E
747 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 02:00:23 ] ああそれなったことある フォームより前の部分に自分でクラスのコードを追加したでしょ 追加したクラスを別ファイルに移せば直ると思うよ
748 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 02:30:38 ] >747 解決しました! ありがとうございます。
749 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 03:36:16 ] DirectXの音楽再生機能(using Microsoft.DirectX.AudioVideoPlayback)を使って Form上のボタンを押したときにmp3を再生する、 という動作を実現したいのですが下記のようにエラーが出て完全に詰まっています。 「FileLoadExceptionはハンドルされませんでした。 混合モード アセンブリはバージョン 'v1.1.4322' のランタイムに対して作成されており、追加の構成情報がないと 4.0 ランタイムでは読み込めません。」 (※こんな感じです→gyazo.com/4b23a2794878de446303f7841d75d8d4.png ) 音楽ファイルを読み込んでいる箇所は以下の通りですが、特に読み込みに関して問題があるとは思えません。 Audio a = new Audio("C:\\test.mp3"); a.play(); SoundPlayer等は使わずにDirectXのこの方法で再生したいのですが、助言をいただけないでしょうか?
750 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 03:41:35 ] それ自分のソースの書き方云々じゃなくてエラーメッセージにある通りなのでは dxdiagでバージョン見てみた?
751 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 08:35:25 ] Buttonコントロールってフォーカス設定されてるときに 矢印キーを押したら勝手にフォーカスうつってウザイんだけど あの設定無効化する方法ない?
752 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 08:37:04 ] >>751 親フォームになげるようにして そっちで潰せばいい コントロールへの入力を親フォームが奪う方法はぐぐれ
753 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 08:39:56 ] もしくはボタン全部に、キープレスイベントで矢印おされたらキャンセル
754 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 09:10:48 ] >>753 無能は黙ってろよ
755 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 09:36:59 ] >>754 初心者スレで何ふぁびょってんだおまえ?
756 名前:698 mailto:sage [2009/11/17(火) 09:41:49 ] >>718 遅レスですが 情報サンクスです! 確かにUSBのシリアルとかあると・・色々応用の幅が広がりそうです。
757 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 09:54:19 ] >>755 実際にどうなるか試してみりゃ意味わかるんじゃね?
758 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 10:07:58 ] >>754 じゃないが>>753 じゃできないよ
759 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 10:21:46 ] >>758 追試してみた。確かにカーソルキーもタブキーも>>753 では検出できんな。
760 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 10:27:36 ] キーボードプレスイベント設定するだけで簡単にできたら質問しねーよ できねーから質問してるんだろうがボケが バカは回答するな
761 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 10:31:14 ] 質問者が偉そうにする理由もないけどなw
762 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 10:34:13 ] >>753 では無理 でも、>>760 見て教えるのやめたわ 初心者は嘘でもいいからへこへこしてろ 俺らが何年もかけて培ってきた知識、技術の一端をただで提供してやるって言ってるのに そんな態度で教えてやるわけ無いだろボケ
763 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 10:39:52 ] >>749 ttp://hightechrider.blogspot.com/2009/10/mixed-mode-assembly-errors-after.html app.configにこれでどうか // Managed DirectXは今更感漂うが
764 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 10:59:37 ] そんなちょっと捻ればわかるようなことも 自分でできない>>760 みたいなやつは正直PGやってほしくねぇな
765 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:01:30 ] 次は>>760 は偽物ですと言い訳のレスが
766 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:04:26 ] >>762 もともと答える気無いくせに偉そうなこと言うな 回答する気のあるやつなら、こういうシンプルな質問なら即レスしてるわ おまえみたいに答えるスキルもないくせに、スレに常駐して だらだらとケチ付ける奴はウザイから消えてくれマジで
767 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:05:29 ] Windows7を含めてC#でDirectXやる場合、 今ならどういうアプローチをすればいいの? Managed DirectXは古いの?
768 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:06:05 ] >>764 何が「やってほしくない」だよ 選ばれたもののつもりか?だいたい趣味か遊びでプログラム組んでるやつはPGじゃねーし。 市ねよアホンダラ
769 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:06:32 ] お前の都合で消えるわけねーだろw
770 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:07:05 ] >>767 XNA使うんだ
771 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:07:58 ] >>767 slimdx
772 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:09:40 ] つぎのC#5はメタプログラム的なことになるらしい。 メタメタメタ!
773 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:09:52 ] >>767 APICodePack
774 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:10:33 ] メメタァ
775 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:15:56 ] コンストラクタ1() : Base() コンストラクタ2(int x) : this() これでコンストラクタ2実行したらコンストラクタ1が呼ばれるけど Baseもよばれるのか?実行すりゃすぐわかるけどめんどくせーから誰か答えろ
776 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:17:50 ] ウンコして死ねボケ
777 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:18:15 ] >コンストラクタ1() : Base() これ意味なくない
778 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:22:06 ] >>772 よくわからんからkwsk どうなるんだ?
779 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:24:17 ] ああ、意味ないな。 質問にすら値しないレベルだ。
780 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:25:47 ] コンストラクタ1() : Base() コンストラクタ2(int x) : this() これでコンストラクタ2実行したらコンストラクタ1が呼ばれるけど Baseもよばれるのか?実行すりゃすぐわかるけどめんどくせーから誰か答えろ まず、コンストラクタ2実行してコンストラクタ1がよばれるわけないよね
781 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:28:07 ] じゃあそのまま死ねよ^^
782 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:28:41 ] 答えるのもめんどくせーわ
783 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:30:32 ] 継承時のコンストラクタの呼ばれ方すら知らないとか低脳極まりない
784 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:31:50 ] もう こう言ってる間に実行が終わっている件について
785 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:06:06 ] C#は良い言語なのになんで使ってる人少ないんだろうな
786 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:10:06 ] このスレを見れば分かるとおり 使ってる人のレベルが低いからだよ^^
787 名前:デフォルトの名無しさん [2009/11/17(火) 12:14:59 ] y=sin(ωt+θ)の波形を描くプログラム ωとθは各フォームによって指定できるようにするって問題なんですが、、、 すいません、さっぱりです。 助けてください。
788 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:15:35 ] 中途半端な実力でわざわざ難解な言語を使ってきたというプライドがある C分かってねー奴はゴミとか未だに言う人がいるだろう? 新しい世代に数分で自分の所まで到達されたらイラッとくんのさ プロだったら最新言語の情報収集も欠かすなよと言いたいが
789 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:16:05 ] >>787 宿題スレにお行き
790 名前:デフォルトの名無しさん [2009/11/17(火) 12:18:11 ] >>789 スレ違いでサーセン
791 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:18:12 ] >>787 C#,C#の宿題片付けます。 pc12.2ch.net/test/read.cgi/tech/1197620454/
792 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:20:24 ] >>785 えっ、少ないって一昔前だろ
793 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:23:27 ] むしろJavaとC#しかない
794 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:46:23 ] JavaとC#とPHPとRubyかね PerlとPythonは減ってきたイメージが。
795 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:51:12 ] C#は派手な機能は標準ライブラリや、Win環境ならMSのライブラリが沢山あるので 作りたい物の実現までの道のりが短く、敷居がずいぶんと低い。 言語構造自体もJavaから引き継いで型厳密なため単純なので理解しやすく、 そのため大昔のBASICよろしく初心者が大勢いるイメージ >>788 新しい世代が新しい道具で時間を飛び越えてきたとして、イラッとする奴なんているのかww 道具が旧式でも最新でも、プログラミングで重要なのはロジックを展開させる為のノウハウの方なので、 その人の歴が何年であっても、役に立つ人もいるし立たない人もいる あと重要なのは「自分にとっての新しい知識」である為、例えどれだけ道具が最新だとしても、 自分が不勉強であれば何の役に立たない。
796 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:57:25 ] ツボ抑えればどの言語でもビジネスレベルのアプリなんて簡単に組めるだろ しょせん目的を達成する手段 でもWinアプリならC#の使い勝手の良さは抜群だと思う
797 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:59:30 ] 人力車と自動車の利便性は同率じゃない
798 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 13:42:23 ] test
799 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 13:44:21 ] 苦労すりゃするほどいいものが出来るなんてのは幻想だよな
800 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 13:45:15 ] 自己満足は得られますよ
801 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 13:49:43 ] そもそもどの言語が優れているとか考えずに とにかく多数派の言語を使う奴が大半で C#のよさが分かる奴なんかほとんどいないんだお 笑うお
802 名前:デフォルトの名無しさん [2009/11/17(火) 13:51:50 ] 苦労すりゃ良い物が出来るのは幻想で間違いない ただ他人から見て苦労に見えたとしても、本人が知りたくて能動的にがつがつ掘り下げて 深部まで把握していく気持ちがあるなら、確実に地力にはなってくる その辺りでかなり大きな差は出てくるぜ 例なんて枚挙に暇が無いくらい
803 名前:デフォルトの名無しさん [2009/11/17(火) 13:55:08 ] >>801 深入りが面倒とか興味がない、あるいはそもそも別言語に柱を置いてる人が遠巻きにみてる って場合で、かつ何らかの理由で使い始めた人はそうなるかもなww
804 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 14:02:13 ] 徐々に市民権は得てるんだからどうでもいいと思うけど
805 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 14:02:31 ] dynamic便利すぎwwwwwなにこれwwwwwww
806 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 16:35:53 ] プログラミング全くの初心者なのですが、どうか教えてください。 ある文字を入力した時にその文字にあらかじめ設定しておいた別の文字を出力するにはどうすればいいのでしょうか? 例えば1と入力した場合には50、5と入力した場合には7Aと出力し1 5と入力した場合に50 7Aと出力させる感じです。 面倒かと思いますがご教授お願いいたします。
807 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 16:54:31 ] private const string _illigalStrig = "?"; private Dictionary<string, string> _list; private void SetConstData() { _list = new Dictionary<string, string>(); _list.Add("1", "50"); _list.Add("5", "7A"); } private void Text1_Change(object sender, EventArgs e) { label1.Text = GetNewString(Text1.Text); } private string GetNewString(string text) { if (string.IsNullOrEmpty(text)) return null; List<string> resList = new List<string>(); for (int i = 0; i < text.Length; i++) { string temp = text.Substring(i, 1); if (_list.ContainsKey(temp)) resList.Add(_list[temp]); else resList.Add(_illigalStrig); } return string.Join(" ", resList.ToArray()); } 適当に試してもいないけどこんな感じ? 予定外の文字とかの処理はどうするか知らんが・・・・
808 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 16:58:16 ] switch(nyuuryoku){ case "1": syuturyoku="50"; break; case "5": syuturyoku="7A"; break; いこうがんばって書く
809 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 17:29:52 ] >>802 枚挙に暇が無いっていいうなら 幾つか実例挙げてくれよ
810 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 18:18:25 ] dynamic使えば見た目は普通のオブジェクト正体はディクショナリとか 変態的なことヤリ放題だな
811 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 18:21:44 ] 使いすぎるとわけわからなくなるだろ・・・
812 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 18:26:59 ] 実際、演算やメンバ選択などオブジェクトに対するほとんどの操作を 自由に定義できるんだぞw
813 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 18:29:25 ] >>812 その代わりに.NET CLRのもっとも強力な点である静的型付けの最適化が無効になるから程々にな。
814 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 18:33:38 ] dynamicはDLRのキャッシュ使うから意外に遅くないよ せいぜいボックス化+デリゲート呼び出しのコストが入るだけ
815 名前:デフォルトの名無しさん [2009/11/17(火) 18:47:51 ] >>809 そのくらい想像してくれよ。簡単な誰でも知ってる経験してる話だよ ポトペタやパーツの組み合わせ以外にアルゴリズムやロジックや、元々の仕組みを掘り下げた時、 目的だけでなく副次的にや必然から知るようなノウハウってあるだろ 例えば効率のいい分岐、ノード的な表現、ビット演算使った手法など色々 知ってる人には慣れて当たり前に感じる内容でも、知らない人は知らなくて その点で表現手段が変わってきたり手狭になったり実現できなかったりする。 掘り下げるのも広げるのも自分の技術広げるって意味で同じだから、 興味沸いたら色々試したり調べたりするといいぜって話さ 人はそれを努力と見るかもしれないが、そんな事はどうでもよくて
816 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:00:02 ] ぜんぜん具体的じゃねー
817 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:02:35 ] >>810 だんだん言語仕様が太ってきた気がする
818 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:02:51 ] 関数とメソッドってどう違うんですか
819 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:06:35 ] オブジェクトに紐付いてるかどうかぐらいの違いじゃないの?
820 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:22:56 ] >>818 OSで言えばディレクトリとフォルダの違いのようなもの。さほど気にすることはない。 ただ、はっきり言ってしまえばC#に関数はない。 あるのはdelegateと通常のメソッドと静的メソッドだけだ。 他にイベントハンドラやらラムダやらもあるが、その辺は自分で勉強してくれ。
821 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:33:43 ] え?関数ってreturnでなんか戻ってくるメソッドのことじゃないの?
822 名前:デフォルトの名無しさん [2009/11/17(火) 19:42:36 ] >>816 なにもかも全部他人に書かせる気か 口移ししないとエサ食えないみたいな事言うなよ
823 名前:デフォルトの名無しさん [2009/11/17(火) 19:49:24 ] 関数は単純に関数だよ メソッドはひとかたまりの処理を模したオブジェクトって概念に対して、例えとして 「ふるまい」として名付けられた物 コード部分にだけ逐次的に注目すると変わらないように見えるけど、意味付けが違う、みたいな 例えばC/C++の世界では関数とメソッド(メンバ関数なんて言い方もするが)は、完全に別物 文脈的に話が混線しないならどっちも関数と呼ぶ場合もあるけど、 クラスに紐付いてないただの関数はメソッドとは呼ばない そんな感じ
824 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:58:13 ] >>815 まあ技術の変わり目にはどんな分野でもこういうアナクロ指向な人っているんだよ。 もちろん、アナクロな彼の言うことにも一理はあるけどね。 そりゃ、洗濯機があるのにあえてたらいで洗濯することで身につく技能だってあるよw こういう人の欠陥は、視野が狭いから引いた視点から全体を俯瞰して 物事のプライオティを考えることが出来ない点だな。
825 名前:デフォルトの名無しさん [2009/11/17(火) 20:04:42 ] >>824 ??誰に向けて言ってんだ? 視野を広げる手段の一つを話してる文脈が理解できないとしたら ちょっと想像力も読解力も足りなくねww なんでアナクロ扱いなんだよ。思考停止はよくないぞ
826 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:05:12 ] なんだ、しったかかよ
827 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:06:50 ] >>821 数学でいう関数だとそうだよな。
828 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:11:38 ] 釣ったほうも釣られたほうもスレ違いだ
829 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:12:18 ] 単純に int func(int x,int y){ return x+y; } これが関数で void func(int x,int y){ printf("%d",x+y); } これがメソッドだという風に覚えてたわ。
830 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:22:22 ] イベントのやり方わからん。 .netに最初からついてるフォームとかボタンとかのイベントはわかるんだが・・・ 自分でクラスつくるときにどんなイベントを入れればいいのかわからん。 ただのメソッドやデリゲートをクラスに組み込むのと イベントを組み込むのは機能面でどういう違いがあるんですかい? メソッドとデリゲートだけじゃ不可能なことでもイベント使ったらできることって例えばどんなの?
831 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:35:58 ] > ただのメソッドやデリゲートをクラスに組み込むのと > イベントを組み込むのは機能面でどういう違いがあるんですかい? メソッドは方向が違う。クラスの利用者がクラスに処理を依頼する形。 デリゲートやイベントはクラスがクラスの利用者に処理を尋ねるようなもの。 で、本質的にはデリゲートは処理の委譲のためのもの、イベントは通知のためのもの。 実際的にはイベントはデリゲートをラップするプロパティみたいなもの。 add/removeの操作限定なので他の利用者がいきなりnull入れたりすることを気にしなくて済む。 > 自分でクラスつくるときにどんなイベントを入れればいいのかわからん。 状態の変化とかをクラスの利用者に通知したいとき。 > メソッドとデリゲートだけじゃ不可能なことでもイベント使ったらできることって例えばどんなの? デザイナで扱える。 コールバックに優先順位を付けるとかもやろうと思えばできる。
832 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:41:04 ] >>830 まず、質問はどれかにまとめてくれw C#のイベントはデザインパターンで言えばObserverパターンにあたり、情報の発信元と受け取り先を分離するために使う。 つまり、発信元ではどこに送るのか、受け取り先ではどこから受け取るのかを考える必要がなくなる。 またイベントハンドラの結びつけさえやればどんなオブジェクト同士でも信号のやり取りができる。 だからこそSystem.Formsではすべてのコントロールのイベントを親のFormで受け取ることができるわけだ。 『メソッドとデリゲートだけじゃ不可能』というが、基本的にチューリング完全なら何でもできるので、 できるかどうかではなく、簡単かどうかで考えるといいよ。 ちなみに大抵は初期化時に静的なイベントパイプラインを構築するだけだと思うが、 これを実行中に動的に切り替えるようにすればさらに強力。Stateパターンなんていらねー。
833 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:43:47 ] デリゲートって何ですか?
834 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:45:36 ] イベントは一応 他クラスから実行出来無いって保証が付くんだよな
835 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:52:59 ] >>833 WikipediaやMSDNくらいは読んでから質問してるんだよな?
836 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:58:31 ] サーバへFTP接続する実行ファイルを不特定多数へ公開した場合 ID,パスの流出可能性を出来るだけ抑えるにはどうすればいいと思いますか?
837 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 21:03:08 ] >>834 リフレクションの前には儚い保証ではあるけどな
838 名前:デフォルトの名無しさん [2009/11/17(火) 21:32:17 ] >>836 それはまさかIDパスワードを埋め込むつもりって話か なにをやりたいのか知らないが、俺なら間にCGIでも挟む 直でFTPでなくて80番経由
839 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:02:02 ] CGI、PHP挟められるならそうするんですが 鯖に環境が入っていないのでそうすることも出来ないです やっぱり、どう暗号化してもパス埋め込むのは駄目ですかねぇ。。
840 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:16:39 ] あきらめろよ。
841 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:18:33 ] 大丈夫って保証は取れないねえ。 それに暗号化してもパケット見たらばれるし。 自PCにならパケットスニファなんて好きなだけ入れられるもんな。
842 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:19:04 ] そもそもFTPじゃユーザ名パスワードが平文だぜ。
843 名前:デフォルトの名無しさん [2009/11/17(火) 22:24:16 ] 質問です。.NET3.5 C#3.0 サイズの大きい画像を256四方で分割したいのです。 実際分割してみると、エクスプローラ上では256*256と表示されるのですが、 Fireworksで読み込ませると、256*256, 255*255, 256*256といった具合に、 元の画像のSizeによって256*256にならず、 切り取った画像を256四方に並べると隙間ができてしまいます。 ペイントに貼り付けるとx=0, y=0のラインが真っ黒になります(255*255)。 元画像のImageオブジェクトの HorizontalResolution,VerticalResolutionは96.01199 なのですが、 コピー先 bmp = new Bitmap(256,256); のHorizontalResolution,Vert(ry は96.0と異なるのでこの辺で誤差が出てる? Graphics.FromHwnd にてモニタのdpiを取得すると96.0と表示されます。 でもReadOnlyプロパティなのでbmpのResolutionを96.01199にできない。 矩形画像を正しく切り取り、保存する方法を教えてください。
844 名前:843 [2009/11/17(火) 22:25:52 ] //ソース int pixel = 256; Bitmap bmp = null; Graphics g = null; Rectangle rect; System.IO.FileInfo fInfo = new System.IO.FileInfo(filePath); Image origin = Image.FromFile(fInfo.FullName); int wBlocks = (int)Math.Ceiling((double)origin.Width / (double)pixel); int hBlocks = (int)Math.Ceiling((double)origin.Height / (double)pixel); Console.WriteLine(filePath); for (int h = 0; h < hBlocks; h++) { for (int w = 0; w < wBlocks; w++) { bmp = new Bitmap(pixel, pixel); g = Graphics.FromImage(bmp); rect = new Rectangle((w * pixel), (h * pixel), pixel, pixel); g.DrawImage(origin, 0, 0, rect, GraphicsUnit.Pixel); string destName = fInfo.Directory + "\\" + fInfo.Name.Replace(fInfo.Extension, string.Empty) + "_" + h.ToString("000") + "_" + w.ToString("000") + ".png"; bmp.Save(destName, System.Drawing.Imaging.ImageFormat.Png); g.Dispose(); bmp.Dispose(); } } origin.Dispose();
845 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:26:55 ] 抑えるのではなく、逆にIDとパスワードは流出してもOKにすれば問題ない。
846 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:30:52 ] LockBitsで直接コピーするのが確実じゃね
847 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:38:57 ] >>845 繋ぐ先のFTPサーバのアカウント操作権があるならそれもありだよね。 ダウンロードのみならanonymous FTPにしちゃうってのもありだ。
848 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:43:11 ] ユーザーID を本名にして、パスワードをクレジットカード番号とかにしておけばいいな。
849 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:45:27 ] >>845 ,847 あー、なるほど。 でもアップロードも必要なので、anonymousは出来ないですね サーバ側のFTP制御設定弄ってみます。
850 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:45:55 ] >>844 どうやったかなぁ。とりあえず座標系とかオフセットモードが 関係してた希ガス。PixelOffsetMode.None してみると駄目? 補間モードとかもいじらなあかんかもしれん。
851 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:45:55 ] そもそも自分でFTPアカウントを発行できない環境でそんな利用の仕方が許されるとは思えない
852 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:46:59 ] >>843 Fireworks以外のドローソフトだとどうなるの?
853 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:56:04 ] >>844 ツッコミどころは色々あるが、さしあたりはバグというほどのものはなさそうだな。 FireworksがDPIを真正直に解釈して誤動作起こしてるのかもしれんね。 まずはbmp形式で保存して、バイナリエディタで眺めてみたら?
854 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:56:54 ] 暗号化ってさ、 そんなに効果あるものなの? 実際使うのなら、起動時に複合化して、 ずっと変数に持たしておいてもいいの?
855 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:58:36 ] >>854 何を? パスワードとか大事なモノを扱うときは、SecureString とか使う方がいいね。
856 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:59:10 ] FTPの話は前のスレでも出たな プロトコルの用途がちげぇって結論になった気がする
857 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:06:23 ] DrawImageの描画先をint,intじゃなくてRectangleで指定する
858 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:07:55 ] >>856 だな。まずはその腐った要求仕様を窓から投げ捨てろといいたい。 で、代わりのプロトコルを考えるとするならどうするか、なんだが。 ユーザーのPCから特定のバイナリデータを手元のサーバーに送りつけるというのでいいんだな? ――とはいうものの、考えてみると、案外これというやりやすい方法が見当たらないので困ったもんだ。 さしあたり思いつくのがHTTPのPOSTで送るかメールで送るか、あとRDBにクエリで送りつけるかだが。 IISが運用できるならC#で解決できるからHTTPで決まりだろう。 メールの場合、LinuxやMacならともかく、Windowsは送信できる環境が保証されてないので メールを正しく送信できることが保証できない。 企業アプリみたいにこちらで動作環境を自由に決められるなら何とでもなるんだけどね。
859 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:09:24 ] >>854 パスワードを暗号化して埋めこんだんだとしても IL解読して複合化の手順読みとられたらそれで終りだし メモリに持ったり通信したりするときに取られちゃ意味ないし
860 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:10:09 ] >>856 それは、プログラムからFTPは利用しないほうがいいってことですよね? といっても、CGIやPHPが使えればそちらを使うのですが、 使えないので、ファイルの書き換えを行うには直接FTPするしか無いと思いまして・・・ 取りあえずアカウント制御で、ディレクトリ制限を掛けてみました。 これでしばらく挙動見たいと思います
861 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:11:50 ] どっかのCGI設置可能なレンタルサーバでも借りてゲートウェイでもするしかないな
862 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:13:12 ] プログラムっていうかクライアントから直には止めた方いいかもね
863 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:13:37 ] >>860 そのユーザIDとパスワードはFTPアカウント専用なん? そこが分離されててchrootとかされてるならまだなんぼかマシなんだろうけど。
864 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:16:30 ] telnetで接続可能なパスワードとかだったら笑えるな
865 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:21:01 ] >>858 IISも無理です、基本サーバ動作のモノは全てアウトでして。 RDBは思いつきませんでした、が・・・見た感じ無理そうです・・・ >>861 レンタルサーバはちょっと厳しいです >>863 chrootされてますです
866 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:24:51 ] ftp内でのコマンドの制限とかquotaとか適切に設定されてるなら とりあえず大丈夫なのかもしれないね
867 名前:デフォルトの名無しさん [2009/11/17(火) 23:26:06 ] そもそもなんでこんな危なっかしい事しなきゃいかんのだ?
868 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:31:02 ] 自分で試してみましたが、取りあえずchroot周りはうまく制御されてるみたいです もっと良い方法があれば教えてください。 これでしばらく試してみます。ありがとうございました。
869 名前:749 mailto:sage [2009/11/18(水) 00:44:38 ] >>750 >>763 遅くなりましたが、ありがとうございます! こちらにある通りApp.configを修正して実行してみましたが、やはり上手くいきませんでした(固まっちゃって再起動) ttp://hightechrider.blogspot.com/2009/10/mixed-mode-assembly-errors-after.html あまり理解できていませんが、最近のランタイムでは使えなくなった可能性が高いということでしょうか。 とりあえず今回は他の方法で実現するという方向性に逃げました。
870 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 00:56:52 ] つーか、環境ぐらい書けば? .NET Framework 4.0 なんて入れてんの?
871 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 01:01:42 ] そりゃ入れてるから「4.0 ランタイムでは読み込めません」なんてメッセージが出るんだろう
872 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 01:02:13 ] Windows SDKってどこからダウンロードできますか? ググって飛んだら 申し訳ございません。ご指定のページが見つかりませんでした。 といわれました
873 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 01:04:26 ] ベータのランタイムなんて入れてんのが悪いんだろ?
874 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 01:32:13 ] ttp://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&DisplayLang=en ttp://www.microsoft.com/downloads/details.aspx?FamilyID=71deb800-c591-4f97-a900-bea146e4fae1&DisplayLang=en 最新はコレ ISOとWebインストール ttp://www.microsoft.com/downloads/details.aspx?FamilyID=7bbe5eda-5062-4ebb-83c7-d3c5ff92a373&DisplayLang=ja こっちは日本語版MSDNライブラリの最新
875 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 01:34:42 ] C#では、C,C++における『CLOCKS_PER_SEC』のようなものってありませんか?
876 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 02:03:51 ] switch(foo){ case BAR: /*....*/ break; case BAZ: /*....*/ break; default: // バグってなければ絶対こないところ } ↑のプログラムで default:にいっちゃった時に例外投げたいんだけど、 引数エラーのときの ArgumentException みたいに投げるべき 例外ってある?
877 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 02:07:55 ] ArgumentExceptionとか
878 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 02:10:44 ] >>875 のようなものっていわれても それでなにしたいのさ
879 名前:843 [2009/11/18(水) 02:24:33 ] >>846 一回のプロセスで一度に大量の画像を分割するので LockBitsは結構しんどかったりします。 unsafeでポインタ使えば?とか言われそうですが^^; >>852 ペイントの例をすでに書いています。 ほかのソフトはためしてません。 >>853 色々ある突っ込みどころ 教えてください。 rectだけ宣言時にnull代入してないぞ、とか そういうのは無しでおねがいします。 bmpで保存すると、 fireworksで表示するとペイントのときのように x=0,y=0のラインが黒になります。 >>857 描画先をRectangle(0,0,pixel,pixel)にしたら 正常に動作しました。 ありがとうございました。
880 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 02:29:46 ] >>876 InvalidFooException
881 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 02:35:28 ] >878 すみません。定数が用意されているならそれを使おうかと思いまして
882 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 02:51:33 ] >>876 メソッド利用者にパラメータが間違っていることを通知したい場合 → InvalidEnumArgumentException コーディングミスによってありえないフローになっているのを検出したい場合 → Debug.Fail(), Trace.Fail()
883 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 03:31:43 ] >>879 >857の言うように、GraphicsUnit指定による呼び出し方によって発生する内部の変換処理を避けるわけか。 まあそりゃあそうだわな。そこが今回の不具合の直接の原因なわけだし。 >色々ある突っ込みどころ 教えてください。 じゃあ手短に。 ・wBlocks、整数演算で十分。pixel-1を足してpixelで割ればいい。 ・Disposeするオブジェクトはなるべくusing構文で初期化する。明示的な後始末はなるべく書かないのがベター。 ・切り出しファイルの名前と形式は外から変えられるように書く。というかこんなところで書くものじゃない。あとstring.Format() ・オブジェクト、=nullの初期化なんてイラネ。何そのC++もどき。むしろ必要なところでvar構文で初期化して使う。 こんなとこかな。
884 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 04:07:59 ] 大規模なプログラムになるとプロパティ使うんだろうけども 個人で使う小規模なプログラムってメンバ変数をpublicにしおいても問題ないよね?
885 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 04:12:18 ] 自動実装プロパティにしとけば?
886 名前:843 mailto:sage [2009/11/18(水) 04:45:56 ] >>883 いろいろある突っ込みどころ ありがとうございます。 ・wBlocksの件 アルゴリズムの問題ですね。 たしかに整数演算で簡潔するのでその方がスマートです。 勉強になりました。 ・usingについて 例外が発生するとdisposeされないのでusingを書くべきですが 動作検証用サンプルでしたので急ピッチですのであしからず。 ・切り出しファイルの名前を外から指定について 同じく、動作検証用サンプルですので大目にみてください。 StringFormatもargs指定ミスはコンパイル時に発見されないので +でつないでます。 ・必要なところでvar指定 2重forで300回近くループするのでfor内部で変数宣言は好ましくないのでは? ループ内部で使いまわせる変数は外出しすべきだと僕は思います。 また、null代入は無駄なのは分かってますが 「初期化してますよ」ってメッセージをこめたソースを書くのは悪くないと僕は思います。 ちなみにBitmapを毎回new(必然的にGraphicsもnew) してるのは画像サイズが256の倍数でないときに 右端と下端の矩形を描画すると、前回の描画が残ってしまうための回避策です。 Graphics.Clearで思った動作するかも。テストしてないのでなんともいえませんが。 varは メソッドの戻り値の型をそのまま受けるとき linq+foreach使うときなど、ジェネリックの型名なんだっけってなるとき 使用するのはいいと思うのですが、 C#使ってるんだからその場で初期化する変数は型はしっかり書いたほうが いいと自分は思ってます。賛否はあると思いますが。 (型付DataSetのテーブルアダプタみたいに型名が長いと初期化が冗長になるので そういうときは見易さを考慮して左辺はvarで受けたりします。) コーディング規則が決められているときはもちろんそれに従います。
887 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 05:25:45 ] C#ってマイクロソフトが作ったの?
888 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 05:37:22 ] >>886 俺はおまえさんの主張に大体同意だな そもそも宗教的なことまで突っ込みを入れるのは回答者の分を超えてると思うよ
889 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 06:11:25 ] >>886 俺もおまえさん寄りの意見だが、 突っ込んでくださいと言っておきながら、 それは違う、あれは違うと条件を付けて反論するのはどうかと思う。 自信があるなら最初から聞くな。 聞いた以上は真摯に受け止めるか、 変なやつに聞いちゃったとスルーなさい。
890 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 07:30:40 ] プライドだけは一丁前
891 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 07:39:05 ] >>889 それはおかしい 教えを請うたからといって間違った回答や、 自分の方針と反する内容を無条件で聞く必要はない かといってスルーするのは礼を失している 886の対応は真摯な態度だと思うぞ
892 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 07:40:20 ] >>886 >2重forで300回近くループするのでfor内部で変数宣言は好ましくないのでは? >ループ内部で使いまわせる変数は外出しすべきだと僕は思います。 少なくとも今回のケースでは、変数宣言を外に書いても速度的にメリット無いよ。 変数宣言を一回通るたびに実行コストがかかるとか杓子定規に考えてない?
893 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 07:44:00 ] なんでC#はmain()じゃなくてMain() なんだろうな。 cもc++もjavaもmainで始まったのに、なぜC#はMainなの?それだけ気になる。
894 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 07:45:57 ] 横だけど・・・ え、そうなの? スコープ入ったときにスタックに確保、 スコープ出るときにスタックから解放って処理普通にやってんのかと思ってた。
895 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 07:47:47 ] >>893 命名規約の問題でしょ。 メソッド名はUpperCamelCaseで表すってルールにしてるから"M"ainになってるだけ。 なんでUpperCamelCaseを採用したのかは言語設計者のポリシーなんだろね。
896 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 07:56:40 ] 黎明期の言語じゃあるまいし
897 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 07:57:42 ] >>891 無条件で聞けなんてどこにかいてあんの? ま、どっちもどっちだ
898 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 08:01:58 ] >>897 >聞いた以上は真摯に受け止め
899 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 08:09:20 ] >>894 C#で書いたコードをReflectorで逆コンパイルしたときに現れるgotoだらけのコード見たことない? 見てみれば分かるけど、結構オブジェクトの寿命が変わるような書き換えがされている。 変数スコープが終わる前にGCされてファイナライザが呼ばれることがあるのはこのため。
900 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 08:12:42 ] >>899 なるほど ちまちましたコードレベルの最適化はほんとに意味なくなってきてるんだなぁ 勉強になった
901 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 08:41:55 ] >>898 日本語が理解できない人だったんですね。 これは失礼しました。
902 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 08:48:42 ] >>886 >StringFormatもargs指定ミスはコンパイル時に発見されないので +でつないでます。 なんでやねん。テストコード書けばテストできる範囲でしょ。 >2重forで300回近くループするのでfor内部で変数宣言は好ましくないのでは? 実行時最適化が行われる.NET Frameworkの世界でそんな議論しても無意味だよ。 そして、むしろvar構文自体より(便利なものは積極的に使うべきだと思うが)ローカルインスタンスの明示的な初期化(=null;)のほうが問題。 C#ではすべての変数はデフォルト値で初期化されることが保証されているので object obj=null; などという初期化は無意味。それどころか変数が使われなくなると初期化なしだとワーニング出してくれるけど 初期化してると出してくれなくなったりするので余計に悪化している。
903 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:14:39 ] >>893 Javaの皮を被ったDelphiだから
904 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:18:19 ] varはなんか、なんかちょっと多様したら不味いことがおきるんじゃないかって気がしてならない 具体的に何が起きるのかはわからんけど dynamicもしかり・・・
905 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:19:59 ] メソッド名がCamelCaseなのはMSの旧来の伝統 >>904 むしろvar使ったら読みづらくなるようなスコープの長い変数を作るのが悪い
906 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:21:56 ] >>902 > object obj=null; > などという初期化は無意味。 可読性的には意味がある >それどころか変数が使われなくなると初期化なしだとワーニング出してくれるけど > 初期化してると出してくれなくなったりするので余計に悪化している。 ダウト
907 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:23:41 ] object obj; object obj = null; どう可読性に違いが
908 名前:905 mailto:sage [2009/11/18(水) 09:25:02 ] すまんPascalCaseだった フィールドを既定値(default(type)の値)で初期化するとFxCopで警告出るよ
909 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:29:30 ] FxCop日本語版は有料なのか・・・
910 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:33:25 ] ttp://msdn.microsoft.com/ja-jp/library/ms182274.aspx これだな パフォーマンスは今のコンパイラでは関係ないが冗長だからやめろということらしい FxCopはコメントのルールだけ外しとけば日本語ソースでも普通に使える
911 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:35:13 ] ローカル変数の確保は内部的にはメソッドスコープだよ。 そんなのを気にしながらBitmapをループ内で作るって…
912 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:39:02 ] 世の中富豪的っていうかこまけえ最適化はコンパイラがやってやんぜ!!な方向に 確実に進化してるんだなぁ
913 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:39:09 ] >>907 皆が皆C#だけやってると思うなよ?
914 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:39:59 ] nullの方がヌルヌルして入りやすい
915 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:42:13 ] ローカル変数はデフォルト値で初期化されるって、されないよ。 だから必ずどこかで代入してから参照する必要があり、でないとエラーになる。 もちろん宣言と同時に代入するのでなくとも、どこかで入れればいいが、 宣言で代入するのが普通は分かりやすいけどな(というかできるだけ最初に代入する必要がある場所で宣言する)。 初期化が保証されてるのはフィールドだ。
916 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:45:37 ] >> 2重forで300回近くループするのでfor内部で変数宣言は好ましくないのでは? >実行時最適化が行われる.NET Frameworkの世界でそんな議論しても無意味だよ。 実行時最適化関係ないよ。 ILの時点でローカル変数はメソッドスコープで確保される。
917 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:51:52 ] 実際ループ内でしか使わない変数ならループ内で宣言してくれた方が コード読む時も余計なこと考えなくてすむしメソッド化する時とかも便利だしなぁ。 #メソッド化すると呼び出しコスト↑と結局毎回確保になっちゃうけど
918 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 10:00:03 ] まあちっちゃなメソッドならインライン展開されるけどな。 とはいってもかなり小さい場合だけだったとは思うけど。
919 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 10:11:41 ] >>915 ttp://msdn.microsoft.com/ja-jp/library/aa691170(VS.71).aspx これか、なるほど 俺ずっと勘違いしてたわ。
920 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 10:16:40 ] 最終的にILになれば同じつうならあとは好みの問題だろう・・・ ギリギリの極限まで速度を追い求めない限り 些細な速度UPを得るよりも可読・メンテ性を維持したい というのが俺の持論 もちろん事務系とかの話でFA系の処理とかになれば必要なところは可読性捨ててでも速度UPとるけど
921 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 10:18:50 ] みんながどのコードを前提に話してるのか見えないんだが・・・ ループ内で宣言したくないのって言うと、 よっぽどでかいインスタンスを毎回newして捨てるとか そいういう場合?
922 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 10:49:08 ] 変数のスコープを最小限にするのは宗教でもなんでもなく常識だろ 宣言だけループ外に置いて、わざわざミスが起こる確率を増加させる必要はない あと、理由もなくローカル変数を規定値などに初期化するのも良くない たとえば、未初期化の変数を参照するとコンパイルエラーになるので即座に分かるが、 無駄に初期化していると問題の発覚が遅れ、デバッグに要する時間も増える
923 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 12:28:52 ] >>922 処理上で意味のある値で初期化するんであって 常に null で初期化すると勘違いしてるから そういう的外れな反論が飛び出すんだろう
924 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 12:45:14 ] インスタンス化の削減も微妙だけどな。 もちろんサイズがでかかったりインスタンス化が重いもので かつ再利用できるものならループ内でのインスタンス化を削減するのもいいが、 何でもかんでも削減すりゃいいってもんじゃない。 よっぽどタイトなループなら別だが。 個人的には、よく言われるStringBuilderの再利用なんかも微妙だと思ってる。 平均的にはある程度効果はあるが、常識のようにやるべきこととは思えない。
925 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 12:46:59 ] 「理由もなく」初期化すんなよってことであって 意味あって null で初期化すんのはべつにかまわんと思うけどな。
926 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 12:48:26 ] >>924 そういうのは最適化部分を狭いメソッド内に押し込めればOKってルールでやってるなあ。
927 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 12:50:40 ] なぜなら、StringBuilderのToStringは内部バッファをそのまま流用してString化するから。 その後StringBuilderに変更を加えた時点でバッファは複製される。 当たり前だけど結局メモリの再確保は起こるわけで、 StringBuilderを新たにインスタンス化するのと大差があるわけではない。
928 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 12:56:54 ] そんな細かいこと考えるよりもっとロジック工夫して高速化しろよ
929 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 12:57:56 ] だれに言ってんだよ
930 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 13:00:19 ] 今日もお前ら絶好調だな
931 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 13:04:50 ] もっと褒めて
932 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 13:22:08 ] 結局そういうのもバッドノウハウになってくんだろな
933 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 13:27:34 ] >>906 スマンカッタ。確かにフィールド、ローカル変数共に初期化してても他で使ってなかったらワーニング出るな。 初期化してないときとワーニングの内容は変わるけど。 >可読性的には意味がある 意味がないことが多い。922の言うように未初期化参照のコンパイルエラーを出させるほうが素直なコード。 初期化コード自体がif文で分岐してるとかなら初期値を与えることはあるが、それは例外的な措置だよね。 >>923 ,925 844のBitmap、Graphicsインスタンスのnull初期化は不要だよな?
934 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 13:32:32 ] まあ初期化なくす前に明らかに宣言位置を変える方向だが。 宣言位置が適切なら、多くの場合その場で初期化が自然になるからね。 もちろん意味のない初期化はするべきではないけど、 上記を守れば基本的にそういうのはなくなるはず。
935 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 13:54:00 ] >>933 >844のBitmap、Graphicsインスタンスのnull初期化は不要だよな? 不要だがあったからといって悪い訳じゃない
936 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 14:05:32 ] チームの規約にしたがうレベル 戦ってまで守らなきゃいけない一線ではないわな どっちにしても
937 名前:デフォルトの名無しさん [2009/11/18(水) 14:14:32 ] >>935 >Bitmap、Graphicsインスタンスのnull初期化は不要だよな? インスタンスのnull初期化じゃなくて変数(ry
938 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 15:48:55 ] formAからform.showでformBを開いた後、不要になったformBを×ボタンで閉じます。 この時、formBのリソースは全て開放されますよね?。
939 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 15:52:19 ] ガベージコレクションの対象にならないと開放されないよ。
940 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 15:57:44 ] そのformという変数を保持している間は解放されないかな
941 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 16:17:16 ] 規定のインスタンスを使用している場合はアプリ終了まで保持されるというような話を聞いた。 (でもこれってたしかVB.NETの話だったような。C#では規定のインスタンスってあるんかな?)
942 名前:938 mailto:sage [2009/11/18(水) 16:27:33 ] そうなるとFormClosingでちゃんと処理してから終了させた方が良さそうですね ありがとうございます
943 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 16:32:41 ] >>942 いあ、そういふ意味ではないんだが。 Form_Closingイベントとメモリ開放は別話。
944 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 16:43:17 ] >>942 モーダルダイアログならFormAで次のようにFormBを表示し using(Form formB = new FormB()) { formB.ShowDialog(this); } formBフォームの中で使ってるリソースはFormBのDisposeをオーバーライドして行う