[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 07/09 19:51 / Filesize : 230 KB / Number-of Response : 995
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2008/01/11(金) 15:41:00 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

ふらっとC#,C♯,C#(初心者用) Part22
pc11.2ch.net/test/read.cgi/tech/1197802312/

2 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 15:42:43 ]
C#, C♯, C#相談室 Part44
pc11.2ch.net/test/read.cgi/tech/1194956418/

C♯, C#相談室 Part34
pc11.2ch.net/test/read.cgi/tech/1162467959/

【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
pc11.2ch.net/test/read.cgi/tech/1162950198/

Windows Live プログラミング
pc11.2ch.net/test/read.cgi/tech/1188112572/

初心者のためのプログラミング言語ガイド Part6
pc11.2ch.net/test/read.cgi/tech/1193132235/

3 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 15:44:26 ]
なかなかよろしいスレタイでございますね

4 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 18:00:44 ]
>>1


5 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 19:26:59 ]
お聞きしたいのですが
ブラウザ(IE)上に表示されたテキストボックスからテキスト取得ってできるんですかね?
サイトはJAVAアプレットで書かれているものです
参考サイト、ググるキーワードなどあればご教示下さい

宜しくお願いします

6 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 19:39:32 ]
>>5
まともな方法じゃ無理、やれたとしてもC#の範疇じゃないからWin32スレにでもど〜ぞ。

7 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 19:51:21 ]
>>6
そうですか・・・。

ではWin32スレに行ってきます。
ありがとうございました

8 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 20:20:37 ]
C#のお勉強で小物のスクリプトをC#でリプレースしてるんですが
IDEでプロジェクト作ってというのはちょっと大げさです。
軽めでC#のメソッドの補完をしてくれるテキストエディタってないですか?

9 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 20:25:49 ]
新しいプロジェクトから空のプロジェクトを作って自分でソースコードを追加すればいいんじゃない。

10 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 20:26:26 ]
VSのインテリセンス触ってみては?
たぶんC#やるんならVSが一番いいと思うけど



11 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 20:29:50 ]
VC#なしのC#なんて存在価値無いよ

12 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:40:10 ]
Properties.Settings.Default.hogehoge
の値を初期状態にしてデバッグ開始する方法ってないの?

13 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:42:13 ]
やれば?

14 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:50:31 ]
コアルータの切り替え失敗したんだね…

15 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 01:36:32 ]
Visual C# 2005 Express Editionでアプリケーションを作っているのですが、
こいつのデータベースマネージャからでも、ソースコードからでもよいので
MySQLサーバにアクセスしたいと考えております
ぐぐってみたのですが、VC#2005EEではMSSQLかアクセスしか選べないと書いてあるところもありました
やっぱフリーではアクセスできないんでしょうか?

16 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 01:39:01 ]
>>15
ttp://www.mysql.com/products/connector/net/

17 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 01:42:34 ]
>>16
ここ初心者スレなんだしもうちょっと丁寧に書いてあげれば?

18 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 01:43:05 ]
自分で書けよ^^;

19 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 01:45:47 ]
>>17
わからないなら何が判らないか聞けよ

20 名前:15 mailto:sage [2008/01/12(土) 01:53:31 ]
>>16の方が教えてくれたツール?をインストールしました。
けどこのあと結局どうやって接続していいかわかりません
VSのデータベースマネージャとかからできるのかーとか思っていますが・・・



21 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 02:16:00 ]
>>20
>ソースコードからでもよいので
>VSのデータベースマネージャとかからできるのかーとか思っていますが・・・
どっちだよw

「Visual C# 2005 Express MySQL」、「C# MySQL」でググってみた?
前者はアドイン、後者は接続方法が先頭付近にあるよ?

22 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 10:20:14 ]
ExpressはMS公式のアドイン以外使えないんじゃなかった?

23 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 10:55:36 ]
今練習でデータベースを扱うプログラムを組んでいるのですが

ADO.netデータアダプターを利用した

24 名前:23 mailto:sage [2008/01/12(土) 10:58:44 ]
済みません・・・・改めて

今練習でデータベースを扱うプログラムを組んでいるのですが
da.update(dt);
でデータのアップデートをする場合 トランザクションは自動的に内部処理されて
エラーはロールバックされると考えていいのでしょうか?
それとも確実に行うにはすべて手動で設定していった方が良いのでしょうか?

25 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 12:09:20 ]
>>21
ぐぐってみました
前者のアドインは有料なのね・・・
後者の接続方法でやってみます
もっと簡単に接続できればいいんだけどなー

26 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:01:29 ]
ODBC使う手もあるけどな
まあMySQL Connector/Netあたりでいいべ

27 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:09:35 ]
VSからMySQLQueryBrowserみたいなGUI環境で接続できればいいのにね

28 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:52:12 ]
有料のにはあるみたいだけどな

29 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:55:01 ]
>>24
トランザクションは使われていない。
System.Data.Common.DbTransactionか
System.Transactions.TransactionScopeを合わせて使う。



30 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 16:36:16 ]
C# + VS2005 ExpressでのWindowsフォームアプリケーションの
開発に関してお聞きしたいのですが、フォーム(Form)上にテキストボックス(TextBox)
が配置されていて、あるタイミングでクラス(Woker)のメソッド(Method)を呼び出します。
この時、UIをフリーズさせないようにMethodはデリゲートとBeginInvokeを使用した
非同期呼び出しで呼び出され、処理終了後にコールバック(MethodDoneEvent)を使用してTextBoxに
取得した内容を表示します。

Methodでは「任意のWebサーバにHTTPで接続しファイルをダウンロードしてくる」
といった処理が行われているのですが、その際Methodの中で
1.通信の準備
2.Webサーバへの接続
3.ヘッダの取得
4.ファイルの取得
5.通信の後始末
と5つのステップの処理が行われています。

この時1〜5の処理の実行と結果を、逐一Form上のTextBoxに表示したいのですが
MethodDoneEventが呼ばれる時には既に5までの処理が完了しているので
リアルタイム表示にはなりません。
1〜5までの処理をリアルタイムでTextBoxに表示させたい場合、1〜5の各処理を分割し
それぞれを非同期呼び出し・コールバックからの結果取得・反映を行う必要があるのでしょうか?
それとも他に呼出元のFormに対して情報を通知する手段は存在するのでしょうか?

単純にWorkerにFormのインスタンスを保持させて、Method内で直接Form上のTextBoxを更新させれば
早いのですが.NET Frameworkの設計で「フォームメソッド以外にフォームの要素を変更させるのは好ましくない」
といった感じのことを聞いた事があるので・・・・




31 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 16:42:49 ]
>>30
BackgroundWorker

32 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 16:46:19 ]
「フォームメソッド」をInvokeすりゃいいんじゃね?

BackgroundWorker使って
その度にReportProgressでProgressChangedイベント起こせば簡単だけど

33 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 16:58:40 ]
>>31-32
即レスありがとう御座います!

BackgroundWorker・・・こんな便利なものがあったんですね・・・
早速使ってみたいと思います

34 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 19:05:30 ]
知識が及ばず、検索用のキーワードだけでも良いので教えてもらいたいです。

ファイルをコピーするユーティリティを作ってみていたのですが、少ないファイルなら良いのですが
それが大量だったり大容量だったりするとすごく時間がかかってしまいます。
それとファイルのコピー中はフォーム上のボタンやラベル等々はenable=falseとして操作できないようにしています。

それで肝心のエラーなのですが、同じ処理をさせても出てくれませんorz
確かポンプだとかメッセージがないとか長時間だかとかといった具合の言葉があったのは覚えています。

なのでこういった時間のかかる処理をするときの作法というかベターな方法みたいのはないでしょうか?

35 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 19:07:12 ]
ryの使い方を再認識した

36 名前:34 mailto:sage [2008/01/12(土) 20:00:34 ]
すいません、何度かチャレンジしてたら出せました

マネージ デバッグ アシスタント 'ContextSwitchDeadlock' では '(ファイルへのパス)' に問題を検出しました。
追加情報: CLR は、COM コンテキスト 0x1b08b8 から COM コンテキスト 0x1b0a28 へ 60 秒で移行できませんでした。ターゲット コンテキストおよびアパートメントを所有するスレッドが、
ポンプしない待機を行っているか、Windows のメッセージを表示しないで非常に長い実行操作を処理しているかのどちらかです。この状態は通常、パフォーマンスを低下させたり、
アプリケーションが応答していない状態および増え続けるメモリ使用を導く可能性があります。この問題を回避するには、すべての Single Thread Apartment (STA) のスレッドが、
CoWaitForMultipleHandles のようなポンプする待機プリミティブを使用するか、長い実行操作中に定期的にメッセージをポンプしなければなりません。

こいつです、警告っぽいです


37 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:02:09 ]
ネタじゃないの?

>それで肝心のエラーなのですが、

突然話が出てくるんだな。
話の上の部分書き忘れたのか、ゆとりなのか?

38 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:07:07 ]
メッセージポンプが滞る様な何かをしてるんだろうけど

何をしたくて
何をしたら
何が起きたのか

をちゃんと書けよ

39 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:07:17 ]
スレッド作って時間がかかる処理を実行させればいいんじゃないの

40 名前:34 mailto:sage [2008/01/12(土) 20:07:50 ]
>>37
ええっとどこが突然なのか・・質問の原因を前におけということなら質問の原因がわからないので後に置きました

それで、という接続詞の話ならば間違いなく正しいです、1つ意味を進める意味合いです



41 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:09:18 ]
知識が及ばず、検索用のキーワードだけでも良いので教えてもらいたいです。
(なにをしたら)
ファイルをコピーするユーティリティを作ってみていたのですが、少ないファイルなら良いのですが
それが大量だったり大容量だったりするとすごく時間がかかってしまいます。
それとファイルのコピー中はフォーム上のボタンやラベル等々はenable=falseとして操作できないようにしています。
(なにがおきた(+後述))
それで肝心のエラーなのですが、同じ処理をさせても出てくれませんorz
確かポンプだとかメッセージがないとか長時間だかとかといった具合の言葉があったのは覚えています。
(なにをしたくて)
なのでこういった時間のかかる処理をするときの作法というかベターな方法みたいのはないでしょうか?

こうしてやらないとわからないか

42 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:10:17 ]
エラーが出るとか書いてないのに
いきなりエラーの説明されても・・・

どこで出たエラーなんだ?

43 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:11:37 ]
>>41
肝心のエラーとか言われても、それまでにエラーの話なんて一言もないじゃないか。

44 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:15:02 ]
煽るやつ荒らすやつに一々反応しないでくれ

45 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:16:09 ]
わかんないけど上のレスを見る限りFormで長い処理をやらせるときは
BackgroundWorkerを使えばいいみたいだな

46 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:29:34 ]
こうやってタコは成長していくんだな
いきなりMSDNなんて引いちゃだめだ

47 名前:37 mailto:sage [2008/01/12(土) 20:31:36 ]
嵐じゃないよ。アホは放置するというのなら
>>34を放置しろ。
内容を適当に書き換えてやろうか?
どこが変わったか読んでみ。

ファイルをコピーするユーティリティを作ったのですが、大量のファイルや大容量のファイルを
コピーすると処理にかなり時間がかかって、途中でエラーが出ます。
それで肝心のエラーなのですが、同じ処理をさせても出たり出なかったりしますorz
内容は(中略)
こういった時間のかかる処理をするベターな方法はないでしょうか?


48 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:37:41 ]
今後>>47に触る奴は荒らしとみなす

49 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:39:43 ]
わたしって〜じゃないですか〜


50 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:44:03 ]
>>47
> 内容は(中略)
> 内容は(中略)
> 内容は(中略)
> 内容は(中略)




51 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:49:26 ]
C#でユニークID、親のユニークID、表示用のラベルを持ったDataTableを
ListVewにバインドしてツリーを作る方法ありますかね
やっぱコード書いてツリー作るしかない?

52 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 21:13:50 ]
>>51
ListView?

53 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 21:44:20 ]
かちゅーしゃだとスレタイが化けるのはおれだけ?
IEその他だとなんともない

「ふらっとC#@`C♯@`C#(初心者用) Part23」
となっている



54 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 21:45:44 ]
ありゃ書き込んだらカキコはまともに見える
"," が@と`になる

55 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 21:47:33 ]
回答は(後略)

56 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 22:04:14 ]
>>52
TreeViewでした(;´д`)

57 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 23:03:11 ]
PictureBox上でToolTipを表示するのに
マウスカーソルの位置でメッセージ内容を変えてます

Popupイベントでメッセージを変えてるんだけど
ただ、これだどPictureBoxの中でマウスカーソルが移動した場合に
ToolTipが再度表示されなくて悩んでます

同じコントロール上でマウスカーソルを移動したときに
ToolTipを再表示する設定ってできますか?

58 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 02:07:30 ]
親フォーム(クラス Form1)で、BackgroundWorkerのbgwを作り裏で処理をさせています。
また、Form1から子フォーム(クラス FormOption)を呼び出せるようになっています。

ここで子フォームのボタン(btnOK)を押されたときに、裏処理を中断させたいんですが、どうしたらいいでしょうか。。。
親フォームからだったらクラスが同じなのでbgw.CancelAsync();で良いと思うんですが、クラスが違うので使えません・・・

//まだクラスとかインスタンスとかの概念がよく理解してないのが問題だと思います(´・ω・)
//とりあえず似たようなケースで、異なるクラス間で変数いじったりするならstaticにすればいいってことは分かったんですが・・・

59 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 02:18:13 ]
子フォームがShowDialogなら、返値みて判断。
Showでキャンセルした時に閉じるなら、子フォームにIsCancelledプロパティ用意して子フォームのClosedイベントでチェック。
一般的には子フォームにCancelledイベントを作ってキャンセルボタン押されたら発生、親フォームはイベントにキャンセル処理を設定。

60 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 02:18:20 ]
別々のクラスオブジェクトのメソッドから共通のログファイルに書き出ししたい場合は
どのようにすればよろしいのでしょうか?



61 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 02:21:26 ]
>>60
log4net

62 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 02:26:47 ]
外部のライブラリを使わない方法を教えていただけませんか

63 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 02:35:51 ]
>>62
内部に取り込む?

64 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 02:39:23 ]
>>57
自分でやる。定番のルーチンだと思うけど。

以前の領域かどうか判別して、同じなら何もしない。
違ったらtoolTip.Active をいったんfalse にしといてSetToolTip設定、
Active をtrueに。

65 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 02:42:15 ]
>>62
ユーティリティクラスの静的メソッドで書けばよかろうもん

66 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 04:52:46 ]
TextBoxに対して、Ctrl+Vとかのショートカットを送る方法ってありますか?
右クリックメニューに独自処理を追加したいけど難しそうなので、独自処理+標準のコピーペーストとかをもつ
メニューを作りたいと思っています。

67 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 04:57:15 ]
上記自己解決。
bbs.wankuma.com/index.cgi?mode=al2&namber=9353&KLOG=22
さんざん探してから書いたのに、書き込み後、一発目の検索で発見。
しかも、普通にメソッドで用意されてた。

68 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 06:30:26 ]
まあ困ったらWeb検索するより先にMSDN/ヘルプを見ろってことだな

69 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 07:19:16 ]
お〜い山田くん、これテンプレに貼っといて

ttp://msdn2.microsoft.com/ja-jp/library/default.aspx

70 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 11:04:34 ]
>>60
普通にTraceかTraceSource使えば?



71 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 12:02:17 ]
tabControlに貼り付けたtoolStripが、勝手に移動したり、visible=falseになったりして困っています。
GripStyle=hiddenです。
ロックかけてもお構いなし。なにか良い回避策ありませんか?
C# 2008 Express Editionです。

72 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 13:05:39 ]
コンボボックスの値を取得したいのですが
Itemには、No1〜No5までの5つの文字があって
ComBoBoxのテキストには(選択してください)
という文字列が入っています
この時、プルダウンメニューからアイテムを選択しなかった時は
ComboBox.Textには(選択してください)が入ってしまうのでしょうか?
またアイテムが選択されてる状態の時は、ComboBox.Textで取得できるのでしょうか?

73 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 13:30:08 ]
(´・ω・`)しらんがな

74 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 15:03:01 ]
そんなもん実験すりゃいいだろうが

75 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:13:08 ]
 配列の巡回を持った言語ならC#に限らない話だと思うのですが、
foreach中に配列の要素を消したい時、一番スマートなやり方としてはどんな物が有るでしょうか?
 どうしてもforeachが2回以上必要な気がします。
 プログラミングがうまい人ならもっとマシな方法をしていませんでしょうか?
下に目的の代換えソースを書いてみました。


//あまり綺麗では無いと思う例---
/*
 「予期しない動作を防ぐため、コレクション内容の変更には使用しないでください。」という制限の為
削除する要素へのキーを別途用意した配列に入れてその配列を"又"foreachしています。
*/
foreach(OBJ val in table)
{
 if (val.needDel) delArray.Add(val.key);
}

foreach(key key in delArray) //
{
 table.Remove(key)
}
delArray.Clear()


76 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:21:01 ]
前スレでさんざん水掛け論やってたな確か

77 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:24:07 ]
>>75
つ RemoveAll()

78 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:24:55 ]
そうだな。
元がListBoxだったのにそれそっちのけでなんやかややってたなw

79 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:28:20 ]
OBJとかkeyとかなぜか先頭小文字のneedDelとかvarと紛らわしいvalとか
名前ばっかり気になるw

80 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:29:35 ]
Smalltalk風ですな



81 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:34:54 ]
つうかあの時の奴と全く同じミスをしとる。 >>75
アイテムで削除すると同じキーが複数存在した場合にうまくいかんぞ。

82 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:35:17 ]
foreachは消すためには使えない
そもそも配列はAddもRemoveもできない

83 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:36:01 ]
あらしや釣りでは無いです。

>76 >78
前スレ見てきました。 C#では
ToList().ForEach(index => listBox1.Items.RemoveAt(index) );
あたりが使えそうですね。 これはつまり匿名メソッド?

>79 >80
borland (Pascal?)から来ました。 var,valとalignはテキストエディタで色分けしています。


84 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:38:43 ]
なんで素直にRemoveAll()じゃあかんの?
たしかにあのメソッド名は大変紛らわしいが、アイテムごとに条件を見て
削除するという目的にまさにぴったりなんだが。

85 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:38:50 ]
>>75
for (i = list.Count - 1; i >= 0; i--)
{
if (...)
{
list.RemoveAt(i);
}
}

こんな感じかな。

86 名前:85 mailto:sage [2008/01/13(日) 17:42:13 ]
しまった。RemoveAll()を忘れてた。


87 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:43:22 ]
>>75の言う配列というのがList<T>のことならRemoveAll一択

88 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:54:26 ]
前スレから見に戻って良かったです。前スレではRemoveAll()出てないし。

ヘルプが2割も理解できてませんが、List<T>::RemoveAllが良いのですね?
Delegateを返す関数を作ってvalueに入れる??

どうでも良い話。自分が一昔前にborlandつかってた頃のソースは小文字のみでした。
何処で聞いたんだっけな?


89 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:54:26 ]
AddやRemoveが使えてるから、配列じゃなくてList<T>なんだろうな。

table.RemoveAll(x => x.needDel)
といったところか

90 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:55:27 ]
>89
ありがとう。 まとまりました。



91 名前:デフォルトの名無しさん [2008/01/13(日) 18:17:25 ]
List<T>の各要素に対して、削除と、削除とは別の処理を、1つのループで行うにはどうすればいいの?

92 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:25:38 ]
RemoveAllかなんかで削除してからその他の処理をすれば?

93 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:28:06 ]
RemoveAll厨必死杉

94 名前:デフォルトの名無しさん [2008/01/13(日) 18:28:59 ]
List<T>の各要素に対して、削除と、削除とは別の処理を、1つのforeachで行うにはどうすればいいの?

95 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:33:32 ]
forを使うといい

96 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:49:22 ]
ttp://bbs.wankuma.com/index.cgi?mode=al2&namber=10106&KLOG=23

97 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:57:39 ]
namber?

98 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 19:00:00 ]
cgiの仕様だそうだからそっとしといてやれ。

99 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 20:25:32 ]
XPの音量のプロパティのうちWaveとかの特定のものを操作したいのですが
.NETのライブラリを探してもないようです。
Win32APIを使うしかないのでしょうか?

100 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 20:32:46 ]
うん
まあちょっと検索すりゃC#ラッパとかすぐ見つかるだろうけど



101 名前:58 mailto:sage [2008/01/13(日) 20:57:10 ]
>>59
あ・・・ShowDialogって値返してたんですね(´・ω・)戻り値見る方法ですんなり解決しました。ありがとうこざいました。

102 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:43:33 ]
ウインドウを表示するにはどうすればいいのでしょうか?

103 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:10:57 ]
>>102
Form.Show();
とかってことじゃなくて?もうちょっと具体的に言ってもらえればアドバイスもしやすいと思うよ

104 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:44:18 ]
ShowWindow( HWND, int )

105 名前:デフォルトの名無しさん [2008/01/13(日) 23:07:42 ]
すいません。

C# 2005 Express Editionを使っているのですが、
フォームのAcceptButtonに設定されているボタンの
クリックイベントをキャンセルするには、
どうしたらよいのでしょうか?

private void buttonOK_Click(object sender, EventArgs e)
{
 if (エラーチェック)
 {
  エラーならキャンセル
 }
以下略

というようなことがやりたいのですが、
フォームのAcceptButtonに設定されているため、
ウィンドウが消えてしまいます。

AcceptButtonに設定するのをあきらめるしかないのでしょうか?

106 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:20:25 ]
うん。

107 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:25:55 ]
VB6.0のフォームデザイナみたいにフォームに点が表示されて
コントロールが配置しやすくなる設定はできないんでしょうか?

108 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:34:01 ]
>>107
formのプロパティーにあるよ。

109 名前:デフォルトの名無しさん [2008/01/13(日) 23:41:20 ]
いろんなサンプル見て調べながら、

public void myReceive (){
   remoteEP = null;
   udp.BeginReceive(new AsyncCallback(ReceiveCallback), null);
}

private void ReceiveCallback (IAsyncResult ar){
   byte[] ReceivedBytes = udp.EndReceive(ar, ref remoteEP);
}

udpはUDPClient型
remoteEPはIPEndPoint型

こんなかんじでバックグラウンドでUDPの受信待機&受信をするコードを書いてみたんですが、受信待機状態を中断するにはどうしたらいいんでしょうか・・・良い感じのメソッドとかも見つからなくて困ってます。。。

110 名前:デフォルトの名無しさん [2008/01/13(日) 23:42:40 ]
>>106

むう。。。
ありがとうございます。



111 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 00:04:36 ]
>>108
ツール→オプション→Windowsフォームデザイナ→レイアウト設定でできました

112 名前:デフォルトの名無しさん [2008/01/14(月) 08:02:02 ]
Windows2003R2 x64のWndProcにNM_CUSTOMDRAWが飛んでこないんですが、なんで?
x86を明示してビルドすると動くのですが

113 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 09:21:23 ]
>>112
64bit環境ではIntPtrが64ビットになるから、これが影響してないか?

114 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 15:33:00 ]
あるバイナリファイルの100万バイト目から10バイトだけデータが欲しいのですが、
こういう時でも律儀に100万バイト分のデータを読み込まないと取得できないのですか?

115 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 15:36:57 ]
>>114
Seekがあるよ。

116 名前:114 mailto:sage [2008/01/14(月) 15:46:15 ]
>>115
BaseStream.Seek()メソッドを利用することで取得できました
ありがとうございました

117 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 16:57:24 ]
File.Copyメソッドについて質問です。

このメソッドを利用して、色々とコピーしてみていると、たまにエラーが出ます。
アクセス権の問題だったりするのですが、例えば
File.Copy(From, To);
このFromを読み込み可能に、Toを読み書き可能にする、というのは無理なんでしょうか?

118 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:00:24 ]
質問の意味がよく分かりませんが。。。
そんな質問してると「日本語でおk」って書かれちゃうと思うぞw

119 名前:117 mailto:sage [2008/01/14(月) 17:04:24 ]
えっと、こうかけばよかった

File.Copy(From,To);
この時、FromとToのアクセス権の設定の問題でエラーが出るのを回避したいです。
どうすれば良いでしょうか?

120 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:07:31 ]
エラーが出ないようにチェックしてからコピーすればいいじゃまいか。
それともアクセス権を回避して無理やり書き込みたいってことか?



121 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:10:00 ]
無視しようと思えば無視して横車を押せるようなアクセス権なら
そんなものに意味などないと思うんですが間違ってるでしょうか……

122 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:11:10 ]
無理にというより、設定し直してやりたいです


123 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:13:19 ]
>>122
同じことだと思いますが……
設定して「無理に」横車を押したい、と

124 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:16:07 ]
アクセス権がないのにアクセス権を変える権利はあるのかよ。
どう考えても設定間違ってるだろw

125 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:16:29 ]
それを言ったらPCの存在を否定してそうですが……

設定を変えるのは無理そうですね、ファイルアクセス権に限ってというよりファイルアクセス権だからなのかな
世のバックアップソフトは一体どうなってるんだろう

126 名前:デフォルトの名無しさん [2008/01/14(月) 17:16:29 ]
ふらっとなのにあげあしとりしか存在しないのかね

それも反応早いし、このスレもういらないだろ正直

127 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:17:23 ]
前スレで「フォームの内容を保存」がどうのと騒いでた人ですが、
なるほど。拡張子がいかなるものであろうと、テキストファイルやHTMLファイルみたいな
テキスト主体のデータをファイルに保存するにはテキスト形式で書き出し、
画像ファイルや音楽、動画ファイルといったデータを保存するにはバイナリ形式で書き出せば良かったのですね。

あとは書き出したい内容を然る場所に書けば、と。

その節は大変お騒がせして、お恥ずかしい(*^ ^*;
(報告したかっただけなので、流してくださって構いません)

128 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:19:27 ]
>>126
揚げ足取りってw
俺はそうは思わないけど、君がそう思うのなら自分の言葉に責任持てよ。

つまり揚げ足取りではない(繰り返すけど揚げ足とってるつもりないぞ)、
真面目な回答をぜひ頼むよ。

それとも自分棚上げ野郎なのか君は。

129 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:25:46 ]
円の描画でつまづいています。

円の内側は塗りつぶしができるのですが,
円の外側を塗りつぶしたい時はどうしたらいいでしょうか



130 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:31:12 ]
>>125
アクセス権の存在意義について考えろ。
アクセス権をオーバーライドできたらアクセス権の意味がないだろ。
バックアップソフトは普通はアドミン権限で実行する。

>>129
円の形でクリッピングして塗りつぶせばいいんじゃね?



131 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:38:45 ]
>>130
解決しました。
ありがとうございます。
勉強になりました。


132 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:44:37 ]
コントロールでkeydownを所得するとき
個々のkyedownイベントでとる方法とPreviewKeyDownのどちらが良いのでしょうか?

ふつうにkeydownで所得できるようなイベントの時はどっちでも同じ?

133 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:49:21 ]
所得ってなんだ…

134 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:31:44 ]
スクロールのついているフォーム全体をキャプチャを目的に,
スクロールを操作してキャプチャを試みています。

コントロールを指定して画像を取得することができたのですが
スクロールは制御すらできません。
なにかよい助言をしていただけませんか?




135 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 20:31:46 ]
>>133
また揚げ足かよ!と思ったら、その上も所得と書いてる・・・
たぶん132はガチでずっと、取得を所得と思って使ってきたんだろねw

>>132
2.0以降なら、PreviewKeyDownで取得すべき。
KeyDownは発生しないキーがある(IsInputKeyプロパティで発生可になるけど)

136 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 20:49:19 ]
>>126
揚げ足を取られるのは、アホな質問をした場合に限られる。
まともな質問であればまともな回答が返ってくる。

とられた場合はまずは自分がアホなことを言っていないかを振り返ってみよう。

137 名前:134 mailto:sage [2008/01/14(月) 21:19:13 ]
どなたかおわかりになりませんか?
いろいろ調べてみましたが,具体的にどのようにしたらいいのか
さっぱり分かりませんでした。

138 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:21:43 ]
WM_SCROLL投げたら?

139 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:21:44 ]
Formの背景色だけを半透明にする方法はないでしょうか?
Opacityオプションで半透明にすると、Form上のLabelなどの文字やButtonまで半透明になってしまいます。


140 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:25:58 ]
>>139
TransparencyKey



141 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:27:47 ]
>>139
TransparencyKeyでは完全に透明になってしまうのですが…

142 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:31:16 ]
背景色をマゼンタにでもしとけば?

143 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:38:53 ]
zlib(RFC1950)で圧縮されたファイルを解凍したいんだけど、C#だけでできる?
DeflateStream はRFC1951、GZipStream はRFC1952を使ってるらしくてうまく解凍できない。
他にzlibに関わるクラスも見当たらないし、もしかしてC#じゃできない?

144 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:40:27 ]
正式な方法が用意されてるかどうかは知らないけど
CでできるんだったらC#でもDllImport使えばできる

145 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:21:36 ]
C#でも自分でプログラム書けばできる

146 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:51:16 ]
携帯からなんでURLは書けないが、Sourceforgeにzlib.netとかいうプロジェクトがある

147 名前:109 mailto:sage [2008/01/14(月) 23:18:31 ]
良かったらどなたか>>109もお願いします(´・ω・)

148 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:26:39 ]
受信待機状態を中断…もう少し具体的に

149 名前:109 mailto:sage [2008/01/15(火) 00:09:52 ]
>>148
ありがとうございます。
具体的には、ボタンが押された時にポートを解放(?)してudpを破棄したいということです。

実装としては
udp=new UdpClient(port);としているんですが、ユーザの入力でポートを変更することも出来るようにしたいんです。

とりあえず今日いろいろ考えた末、
ポートを変更するときに呼ばれるメソッドを

public void ChangePort () {
   udp.Close();
   udp = new UdpClient(port);
   myReceive;
}

として、無理矢理破棄して、ReceiveCallback内をtry〜catchで起こった例外を全て無視するようにして一応動いたんですが、あまりにも邪道すぎる気がします。。。

150 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:14:11 ]
>>149
いやもそれでほぼオケじゃね?
例外を全て無視じゃなくて外からClose()された時の例外だけ無視するようにすれば。



151 名前:109 mailto:sage [2008/01/15(火) 00:36:04 ]
>>109
あ゛・・・
これでよかったんですね。例外は基本的に全て処理するべきなのかなぁって思い込みがありました(´・ω・)
とりあえずArgumentExceptionと、タイミングによってはObjectDisposedExceptionがスローされるみたいなんで、これらを無視するようにしておきました。

ありがとうございました。

152 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:53:30 ]
C#のことでなく.NET Frameworkのことですれ違いなんだけど、

C#で文法のことはいいとしてライブラリのことが知りたいんだけど
いい情報源教えてください。

dobon.net/
は読みました。
とりあえず
プログラミングMicrosoft .NET Framework 第2版 (マイクロソフト公式解説書) (単行本)
は買ってみようと思います、

よろしくお願いします。


153 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:15:19 ]
>>152
MSDN

154 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 02:33:43 ]
アンマネージドなリソースについてなんですが、やり直し等の機能でいつ解放
したらいいかわからないものが出てきた(ファイルとか)ので、ゴミ箱クラス作って
そこで一括管理しようと思ったのですが、対象となる変数の参照カウンタって
取得できないのでしょうか?
やっぱり自分で皮をかぶせるしかないですかね?

155 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 02:40:28 ]
何が言いたいのかよく分からんが、
LRのガーベジコレクタは参照カウント方式じゃないぞ

156 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 02:40:59 ]
s/LR/CLR/;

157 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 02:48:42 ]
>>155
ありゃ、そうなんですか… orz
今ざっと調べたところ、Finalize()を積んでおけばGCが勝手に実行
してくれるみたいなんですが、どうしてもDispose出来ないときは
それでいいんですかね?

158 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 04:03:32 ]
GC される前にランタイムが落ちるとか、結構ありそうだけどな。
ところで 「やり直し等の機能」 って何?

159 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 06:24:53 ]
>>157
アンマネージリソースを扱うなら、必ず適切なタイミングで
Disposeを呼ぶような設計しなきゃ駄目だよ。
細かい話が多いので割愛するけど、
ファイナライザに頼るスタイルは色々問題があるのヨ。

ぶっちゃけマネージドな世界では、例えばC++において参照カウンタ式スマートポインタで
自動化できてたリソース管理の一部は使えなくなると思っていた方が良いかと。

160 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 06:30:02 ]
VBの参考書で勉強しているのですが
Label1.Text = DirectCast(Me.PreviousPage.FindControl( _
"TextBox1"), TextBox).Text

をC#で書くにはどうしたらいいですか?



161 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 07:42:54 ]
自己解決しましたm(_ _)m

162 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 08:30:22 ]
>>158
ペイントなどに良くあるやり直し・元に戻す操作です。

>>159
やっぱり自前でDisposeしなきゃだめなんですね…
ちょっと基本設計見直してきます orz

163 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 14:07:03 ]
Form1とForm2を定義して
Form1内で
Form2 f2 = new Form2();
f2.ShowDialog();
でForm2を呼び出した後にf2内のbutton_Clickイベント処理内でf2の中のテキストボックスや、コンボボックスの値をForm1で取得したいのですが
どうしたらよいでしょうか?

164 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 15:56:14 ]
Form2がイベント公開してf2内のbutton_Clickイベントハンドラ内でfire
イベントデリゲート自分で定義してテキストやコンボボックスの値をEventArgsにつっこむか
またはプロパティで公開しとく

165 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 16:31:40 ]
fireってなんでしょうか?ぐぐってもよくわかんないです・・・

166 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 16:39:14 ]
イベントを起こす、ってことじゃね?

//Form2.cs

public event EventHandler HogeEvent;

private void button_Click( object sender, EventArgs e )
{
 if( this.HogeEvent != nul )
  this.HogeEvent( this, EventArgs.Empty ); // ← ココ
}

-------------------------------------------
//Form1.cs
...
Form2 f2 = new Form2();
f2.HogeEvent += new EventHandler( f2_HogeEvent );
...

private void f2_HogeEvent( object sender, EventArgs e )
{
 //ココが呼ばれる
}

167 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:47:13 ]
>>f2.HogeEvent += new EventHandler( f2_HogeEvent );
これは何をしているのでしょうか?
form1では
private void button_add_Click(object sender, EventArgs e)
{
Addition add = new Addition();
add.ShowDialog();
}
でform2(Addition)を呼び出し、手動で、form2内のテキストエリアやコンボボックスに入力してOKボタンを押す
そのとき、したのイベントに遷移して、このメソッド内で、form1内のデータグリッドを更新できないか?ということなんですが。
private void button_OK_Click(object sender, EventArgs e)
{


}



168 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:52:38 ]
(´・ω・`)しらんがな

169 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:03:28 ]
恥をしのんで質問いたします。
初めてコンソールアプリを作ろうとしているのですが、
エクスプローラーからコマンドプロンプトにディレクトリパスをD&Dで使わせようと思っています。
そのとき、長いフォルダ名を含む場合、絶対パスを表す文字列がダブルクォーテーションで囲まれてしまいます。
そのため、"入力文字列補正処理"を入れるようにしましたが、なんだかスッキリしません。
皆様どうやってやってますか?
以下にソースを書きます。宜しくお願いいたします。



170 名前:169 mailto:sage [2008/01/15(火) 19:04:04 ]
static void Main(string[] args)
{
  string[] str; //検証用変数
  string Input, Output; //フォルダパス

  Console.WriteLine("入力フォルダパスを入力して下さい");

  //入力文字列補正
  str = Console.ReadLine().Split(new char[] {'\"'});
  if (str.Length == 3) { Input = str[1]; }
  else { Input = str[0]; }

  Console.WriteLine("出力フォルダパスを入力して下さい");

  //入力文字列補正
  str = Console.ReadLine().Split(new char[] { '\"' });
  if (str.Length == 3) { Output = str[1]; }
  else { Output = str[0]; }

  if (Directory.Exists(Input) & Directory.Exists(Output))
  {
   Console.WriteLine("valid");
   Console.ReadLine();
 }
  else
  {
   Console.WriteLine("invalid");
   Console.ReadLine();
  }
}



171 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:07:37 ]
>>167
form2でセットするんじゃなくて、form2はセットさせたい項目をpublicなプロパティで返すようにする
form1でDialogResultをチェックしてform2のプロパティからセットするのが正解

172 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:07:40 ]
Trim(char[])

173 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:18:45 ]
>>167
個人で作ってるだけでプロパティ作るのが面倒くさかったら、
form2の該当の入力フィールド(textBoxとか)のModifiersをPublicにするのも手だけど

174 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:22:07 ]
>>171
丁寧にありがとうございます。
>>セットさせたい項目をpublicなプロパティで返すようにする
というのがいまいちわかりません。
ソース載せます。
//form1(Main)
public partial class Main : Form
{
public Main(){
InitializeComponent();
}

private void button_add_Click(object sender, EventArgs e) {
Addition add = new Addition();
add.ShowDialog();
}
}

//form2(Additon)
public partial class Addition : Form
{
public Addition() {
InitializeComponent();
}

private void button_OK_Click(object sender, EventArgs e) {
//MessageBox.Show(textBox_name.Text+"\n"+ comboBox1.Text+"\n"+textBox1.Text);
}
}

175 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:24:50 ]
public partial class Addition : Form
{
 public string 結果 { return textBox_name.Text+"\n"+ comboBox1.Text+"\n"+textBox1.Text; }
}

176 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:24:57 ]
>>173
publicにしたら、Form1.csの補完機能からform2のコントロールが見えました!
ありがとうございます!

177 名前:175 mailto:sage [2008/01/15(火) 19:25:16 ]
ミス
 public string 結果 { get { return textBox_name.Text+"\n"+ comboBox1.Text+"\n"+textBox1.Text; } }

178 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:37:02 ]
はじめまして。

まことに簡単な質問で恐縮なのですが、DataGridViewのculomnsのプロパティで
オートインクリメントをしたい列があるのですが、どうすればよいでしょうか?

よろしくお願いいたします。

179 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 20:33:34 ]
>>169
な、何を言ってるのかね?

180 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 20:53:51 ]
>>169
ただファイルを開くとかくらいなら、
ダブルクォーテーションがあっても問題なかった気がするけど。



181 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 10:43:24 ]
>>169
dos窓でドロップやったことないのか?
スペース含むパス取り込むためにデフォルトで""囲みになるのが普通だよー

182 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 11:16:56 ]
問題あるならTrimでもすりゃいいんでは?


183 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 11:40:31 ]
C#でExcelを操作しようと調べているんですが、断片的な
情報しか見つける事ができませんでした。

何か参考になる本やサイトなど知っていたら紹介して貰えませんか?

184 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 12:33:03 ]
COM Excel C# でググるとか

185 名前:169 mailto:sage [2008/01/16(水) 13:21:32 ]
>>180

そうだと思ったんですが、パスを変数に格納した後にフォルダの存在確認を>>170の下の方で
行っているんですが、""つきのパスだと存在しないよって言われちゃうんですよ。

>>182
調べてみます

186 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:51:48 ]
つか、D&Dできるの始めて知ったぜ。いつもいちいちコピペしてた。

187 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 14:00:08 ]
Vistaでできないな、、、XPをリモートデスクトップで出してみたらこっちではD&Dできるが・・・

188 名前:デフォルトの名無しさん [2008/01/16(水) 14:38:39 ]
VS2005でC#の勉強をしています。
質問なのですが、テキストファイルに
1 200
2 356
3 1250
4 870
5 692
といったような行列があり、それをC#のプログラムで読み込み
1000以上の値を持つものだけピックアップすることはできるでしょうか。
ピックアップした後に計算もしたいので、変数にその値を代入したいのです。
よろしくお願いします。

189 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:00:03 ]
StreamReaderとかで開いて
ReadLineして
パースすればいい

190 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:01:21 ]
var hoge =
 from line in File.ReadAllLines(@"...")
 from str in line.Split(' ')
 let value = Int32.Parse(str)
 where value >= 1000
 select value;





191 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:05:51 ]
VS2005や言うてるやろスカタン

192 名前:169 mailto:sage [2008/01/16(水) 15:46:16 ]
>>188

StreamReader sr = new StreamReader(filepath);
List<int[]> list = new List<int[]>();
do
{
  string str = sr.ReadLine();
  if (str != "")
  {
   string[] ary = str.Split(new char[] { ' ' });
   int n1 = int.Parse(ary[0]);
   int n2 = int.Parse(ary[1]);
   if (n2 > 999)
   {
    list.Add(new int[] { n1, n2 });
    }
  }
}
while (sr.Peek() != -1);

193 名前:169 mailto:sage [2008/01/16(水) 15:51:20 ]
どうやら手動で削除するほかなさそうですね。
splitを使って面倒なことをしてましたが、
Trim(もしくはReplaceでも可)を使って少しコードがすっきりしました。
ありがとうございました。



Console.WriteLine("入力フォルダパスを入力して下さい");

Input = Console.ReadLine().Trim(new char[] { '\"' });

Console.WriteLine("出力フォルダパスを入力して下さい");

Output = Console.ReadLine().Trim(new char[] { '\"' });

if (Directory.Exists(Input) & Directory.Exists(Output))
{
  Console.WriteLine("valid");
  Console.ReadLine();
}
else
{
  Console.WriteLine("入力したフォルダパスが不正です");
  Console.ReadLine();
}



194 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:00:02 ]
オマイラそれ絶対なんか間違ってるだろwww

195 名前:デフォルトの名無しさん [2008/01/16(水) 21:20:34 ]
すみません、教えてください。

VS2005 .netでプログラムしていますが、HOMEPATHの取得法はあるのでしょうか?

もしあるならば方法をご教授ください。

よろしくお願いします

196 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:23:02 ]
994 名前:デフォルトの名無しさん[sage] 投稿日:2008/01/11(金) 12:14:20
Environment.GetEnvironmentVariable( "HOMEPATH" );

197 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:27:22 ]
\r\n と \n の差がわからないんだが
どっちも改行するわけだが動違うの?

198 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:31:50 ]
>>197
サイズが違う。

199 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:38:14 ]
おおまかにはOSによって改行コードが違う。
Unix:\n
Windows:\r\n
Mac:\r

ってか基本だと思うけど。

200 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:40:24 ]
>>199
トンクス
Cとかだと\nが改行だから\r\nって何かと思ってたんだが
Windowsなら\r\nでいいってことでつね



201 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:46:35 ]
>>200
Cは、テキストモードだと、\nは\r\nに変換される。(winでは)

202 名前:デフォルトの名無しさん [2008/01/16(水) 21:52:10 ]
>>196

ありがとうございました。無事解決です

203 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 22:09:14 ]
>>200
どうでもいい話ではあるんだが意味的に言うとWinがたぶん正しい
なのでhttpとかも\r\n。この辺はCRとLFを調べてみれ

204 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 22:28:13 ]
むかしタイプライターというものがあってのう

205 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 22:57:06 ]
LFだけってのはおかしいと思う。

206 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:00:21 ]
それ言ったらCRだけなのもおかしい

207 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:16:31 ]
CRってキャリッジリターンなのは聞いたことあるけど、LFってなんて言うの?
ラインフィニッシュ?

208 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:20:38 ]
ラインフィード

209 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:21:27 ]
CR=キャリッジリターン=キャリッジ(紙を左右に動かす装置)を初期位置に戻すこと。
LF=ラインフィード=紙送り。

210 名前:デフォルトの名無しさん [2008/01/17(木) 00:53:22 ]
C#相談室から誘導されてきました。
たとえば、こういうコードがあったとします。

if (Result == null) {
transaction.Rollback();
MessageBox.Show("エラー0です。");
return false;
}
if ((int)Result == 1) {
transaction.Rollback();
MessageBox.Show("エラー1です。");
return false;
}
if ((int)Result == 2) {
transaction.Rollback();
MessageBox.Show("エラー2です。");
return false;
}
transaction.Commit();
return true;

これをスッキリ表記するのに何かいい手段はないですかねぇ…。
throwで例外起こしてtry〜catchってのもスッキリしなくて…



211 名前:デフォルトの名無しさん [2008/01/17(木) 01:08:54 ]
C#でLispみたいなカッコイイプログラミングするにはどうすればいいの?

212 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:13:40 ]
F#をダウンロードします

213 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:20:46 ]
そして卵を御飯にかけます

214 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:27:18 ]
>>210
result = (Result == null) ? 0 : (int)Result;

switch(result){
case 0:
case 1:
case 2:
transaction.Rollback();
string temp = "エラー" + result + "です。";
MessageBox.Show(temp);
return false;
break;

default:
transaction.Commit();
return true;
break;
}


215 名前:デフォルトの名無しさん [2008/01/17(木) 01:39:34 ]
xmlファイルをphpのsimple xmlみたいに簡単に扱える方法はないのでしょうか?

216 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:07:05 ]
C#のswitchのcaseは絶対に下に降りられないと思ってたが、何も書かなければ並べられるのか。
しかし不必要なbreakを強要されるのが面倒くさいな。
Cの文法に慣れてる人がバグを作らないようにってことなのかな。

217 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:10:59 ]
returnの下のbreakいらんだろ

218 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:22:09 ]
いらん以前に到達できないコードな警告出たりしないかそれ確か

219 名前:デフォルトの名無しさん [2008/01/17(木) 13:16:16 ]
構造体のマーシャリングについて質問いいっすか?
自分よく分かってないんですが

typedef struct tagDESKBANDINFO {
 DWORD dwMask;
 POINTL ptMinSize;
 POINTL ptMaxSize;
 POINTL ptIntegral;
 POINTL ptActual;
 WCHAR wszTitle[256];
 DWORD dwModeFlags;
 COLORREF crBkgnd;
} DESKBANDINFO;

の WCHAR wszTitle[256];って
[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode)]
にした上で

[MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)]
string wszTitle;

じゃないんですか?
www.pinvoke.net/default.aspx/Structures/DESKBANDINFO.html
とかだと255になってるんですがどっちが正しいんでしょう?

220 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:16:55 ]
試してみたがbreakいらんな



221 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:20:25 ]
null終端とやらの関係かなとか思ったんですが
msdn2.microsoft.com/ja-jp/library/795sy883(VS.80).aspx
文字列のマーシャリングだと

TCHAR szCSDVersion[ 128 ];

[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=128 )]
String versionString;

になってるしワケワカリマセン

222 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:20:51 ]
>>219
256であってる

223 名前:219 mailto:sage [2008/01/17(木) 13:25:09 ]
>>222
ありがとうございます。

まじすか。
PInvoke.netのまま使ってると2バイトずつ上にずれてるってことですか?

224 名前:219 mailto:sage [2008/01/17(木) 13:30:11 ]
ありゃMarshal.SizeOfを見たらどっちも同じ
さらにワケワカメ

アラインとかPackとかのせいですか?
ということは実害なし?

225 名前:デフォルトの名無しさん [2008/01/17(木) 18:06:12 ]
GTKについてわからないところがあるのですが、詳しい方いらっしゃいますか?

226 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 18:08:57 ]
>>225
C#でGTKといったらMono?
Monoスレに行かないといないかもしれない。

227 名前:デフォルトの名無しさん [2008/01/17(木) 18:11:31 ]
そうですか…行ってみます。
すみません、ありがとうございました。

228 名前:デフォルトの名無しさん [2008/01/18(金) 01:31:53 ]
VC#2008関連の書籍って出ないの?

229 名前:210 mailto:sage [2008/01/18(金) 02:17:47 ]
>214
ありがとうございます。
これで試してみます。

230 名前:デフォルトの名無しさん [2008/01/18(金) 03:32:28 ]
C#でxmlファイルをphpのsimple xmlみたいに簡単に扱える方法はないのでしょうか?



231 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 03:46:58 ]
visual studio 2005を使ってます。

pictureboxに表示する画像のリソースを指定するときは

this***.Image = Properties.Resources.abc;

のようにしますが(というかVSが勝手にやってくれますが)
これを文字列型の変数を使ってやることはできないでしょうか?

string TMP;
TMP = "abc";
として5行目と同じように指定したいのです。

232 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 06:06:54 ]
リフレクション使えばできると思うが、やるほどの価値はないと思う。

233 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 07:02:54 ]
ResourceManager.GetObject使えばできるけど厳密な型指定できないよ

234 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 07:27:36 ]
何をしたいのかを書けば、もっといい解決法があるかもよ

235 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 09:13:14 ]
>>232
>>234
リソース名が連続した英数字なので、for文で数十の文字列の配列を作ったんですが、それをリソース名の指定に使う方法が分からなくて・・・
手動でやるよりはるかに効率的だと思うので、できればさわりだけでも簡単に教えてもらえればと

>>233
では、結局出来ないということになるんでしょうか・・・?

236 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 09:21:16 ]
Properties.Resources.abc;の実装がどうなってるかみなよ。

237 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 10:18:33 ]
>>230
XLinqでも使ってみれば

238 名前:188 mailto:sage [2008/01/18(金) 11:19:39 ]
遅くなりましたが無事解決しました!
ありがとうございました。

239 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:01:23 ]
byte[] b1 = new byte[] {1,2,3,4};
byte[] b2 = new byte[] {1,2,3,4};

があったとして、2つの配列の内容が全て等しいか簡単に調べる方法ってないですか?

b1 == b2;

b1.Equals(b2);
もfalseになります(´・ω・)

やっぱいちいちforeachで回さないとダメですか?

240 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:04:53 ]
うむ
Array.Equals は object.Equals と変わらんからな



241 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:06:27 ]
ぶ、C# 配列 比較 で検索したらすぐ見つかりました。
出来ないみたいですねorz

お騒がせしました。

242 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:09:45 ]
継承クラスで共通のメソッド実行時
親クラスで共通の処理をさせたいのですがどうすればいいでしょうか
うまく説明できないんですがポリモーフィズム的なメソッドの共通処理を
継承クラスでは意識せずに親で処理させたいのですが・・・

243 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:24:50 ]
//親
virtual void Hoge()
{
 ...
}

//子
override void Hoge()
{
 ...
 base.Hoge();
}
じゃあかんのん?

244 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:27:51 ]
>>243
やっぱりそうなりますかね
base.Hoge()の処理は必ずして欲しいのに
base.Hoge();を付け忘れちゃったりするものですから

245 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:21:12 ]
Hoge は virtual じゃなくして、HogeOverridable を virtual にして
Hoge のなかで HogeOverridable を呼ぶ
ただし派生クラスで基底クラスの処理の呼び出す位置を変更できないデメリットもある

246 名前:231 mailto:sage [2008/01/18(金) 19:49:57 ]
>>231ですが
www.atmarkit.co.jp/fdotnet/dotnettips/220resources3/resources3.html
を参考に

Assembly thisExe = Assembly.GetExecutingAssembly();

ResourceManager TMPres = new ResourceManager(
"***.Properties.Resources", thisExe);
xxx = (Image)TMPres.GetObject("abc");

とやったらできました。

247 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:10:42 ]
Image img = (Image)Properties.Resources.ResourceManager.GetObject( "hoge" );

248 名前:デフォルトの名無しさん [2008/01/18(金) 23:19:52 ]
VS2008を使っていますが、
FormのFormClosingイベントを捕らえて
フォームを閉じることを中止するにはどうすればいいのでしょうか?

以下のように書いてもだめでした。
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
  DialogResult result = MessageBox.Show("変更を保存しますか?", "確認",
  MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
 if (result == DialogResult.Yes)
 {
  this.menuSaveProject_Click(sender, e);
 }
 else if (result == DialogResult.Cancel)
 {
  return; // ←これ
 }
}
よろしくお願いいたします。

249 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:26:03 ]
引数調べれ

250 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:28:22 ]
e.Cansel = true;
とやればいいようですね(´・ω・`)

今までeなんて無視してました
ありがとうございました



251 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:29:03 ]
ていうかイベントの解説に書いてるよな

252 名前:デフォルトの名無しさん mailto:age [2008/01/19(土) 00:16:31 ]
IPAddress[] addrs;
があったとして、
この中から特定のIPの項目だけ削除ってどうすればいいんでしょうか。

InteliSenseで見てると
addrs.Except();
とかそれっぽいのはあるんですが、いまいち使い方がわかりません・・・

253 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:22:22 ]
配列は要素の削除とかできないので作り直し
Array.FindAll でもいける

254 名前:252 mailto:sage [2008/01/19(土) 01:08:38 ]
>>253
ありがとうございます。やっぱり作り直ししかないんですね(´・ω・)

でもFindAllのおかげでさっくりいきました。
ありがとうございました。

255 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:23:46 ]
List<IPAddress>でいけー

256 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:24:22 ]
>>254
List<>つかおうぜ

257 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:32:56 ]
Listって要素の削除は向いてないんじゃない?

258 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:43:53 ]
ほえ?

259 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:45:39 ]
>>257

260 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:47:58 ]
>>257
( ^ω^)・・・



261 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:05:44 ]

  (^ω^;)⊃ アウアウ!!
 ⊂ミ⊃ )
  /   ヽ

262 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:47:03 ]
またRemoveAll()の流れなのか・・・

263 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:04:38 ]
末尾以外の削除は遅いと思うんだけど、大丈夫なわけ?

264 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:08:48 ]
>>263
実装に因る

てか少なくとも配列を使うのよりは高性能に作られているとうれしい(ビクンビクン

265 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:10:29 ]
>>264
実装見ろよ

266 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:55:24 ]
要素の削除と挿入をやるならLinkedListでしょ?
ランダムアクセスできないけど。

267 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 06:37:57 ]
>>266
> ランダムアクセスできないけど。

それが答えだ。

268 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:28:45 ]
それは削除にむいてないんじゃなくて、
ランダムアクセスにむいてないだけ。

269 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:57:04 ]
ある時点のList<T>の内容を配列か何かに保存しておき、その内容に戻すということをしたいのですが、
インスタンスを変えたくない場合は、Clearして一つずつAddし直すしかないのでしょうか?

270 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:58:58 ]
要するに、コストの問題だ。

データを参照するより削除と挿入の方が多いならLinkedList だろうし、
頭からforeachしたりインデクスでアクセスする必要があるならList。

目的に応じて使い分ければ済むという当たり前のことだろ。



271 名前:269 mailto:sage [2008/01/19(土) 10:02:53 ]
>>269
AddRangeってのが目に入っていませんでした。
ClearしてAddRangeが正解でしょうか。

272 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 10:14:14 ]
>>268
ahosugi

273 名前:252 mailto:sage [2008/01/19(土) 10:40:42 ]
これは・・・荒らしちゃったかも(・ω・`)
なんかごめんなさいです。
配列っていろいろ考えとかないといけないんですね。要素もすくないし、参照より削除や挿入が多いと思うんで、LinkList使ってみようかなと思います。ググってみます。ありがとうございました。

274 名前:252 mailto:sage [2008/01/19(土) 10:43:27 ]
LinkedListですね、すいません(汗

275 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:51:22 ]
>>270
そこでB*木とかRB木とかですよ

276 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:56:47 ]
HashSetが合いそうだよなあと確かに話を聞いていて思ったが
要素数少なそうとも思ったのでむしろListでいい気もしたので
言わなかった

277 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:14:25 ]
>>245
すみませんあれからいろいろやってみたのですが
class kitei
{
public void Hoge()
{
基底の処理;
派生Hoge呼び出し;
}
}

class hasei : kitei {
public virtual void Hoge()
{
派生の処理;
}
}
ということ感じになるのでしょうか
基底からの派生hogeのやり方がわからず詰まってしまいました


278 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:18:07 ]
基底にvirtualなメソッドを一つ増やせ

279 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:29:27 ]
>>278
共通でない処理を切り分けてvirtualメソッドを作って
基底で
public void Hoge()
{
基底の処理;
HogeSub();
}
public virtual void HogeSub()
{
}
という風にせよということでしょうか。
メソッド一つで自動的に裏で共通処理できたらいいなーと思ったんですが
使用者が何をするのか明示的に指示するのが正解か

280 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:37:21 ]
>>279
>メソッド一つで自動的に裏で共通処理できたらいいなー
良くないだろ怖いよそんなのw

っていうか、チミは普通に継承の意味が分かってないだけとちゃうんかと



281 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:44:55 ]
>>280
確かにそのとおりなんですよね…
派生を多人数が使うときにちゃんと規定どおりに使ってくれない場合があるもんで
もう強制自動処理にならんかなーと思った次第です…

282 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:57:57 ]
>>281
テンプレートメソッド的な工夫ではダメなの?
つまりテンプレートメソッドから呼び出されるメソッドの方をabstractなりvirtualに
すればよくない?

283 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:02:35 ]
>>282
具体的に言うとちょっと極端な例ですが
データ入力して保存するという共通処理で


public void ClickSaveButton() {
 入力チェック()
 データ保存()
 ログ出力() 
}
abstract void 入力チェック()
abstract void データ保存()
abstract void ログ出力()

とやるとabstractなんでそれぞれの実装は一応してくれんるんだが
セーブボタンを押したときClickSaveButtonを呼び出して欲しいのに
データ保存()だけ入れるやつとかいるんですよ

284 名前:283 mailto:sage [2008/01/19(土) 16:12:27 ]
最初の話とずれてますね…


public void ClickSaveButton() {
 入力チェック()
 データ保存()
 ログ出力() 
}
abstract void 入力チェック()
abstract void データ保存()
private void ログ出力() //共通処理

いい子
セーブボタン_Click {
 ClickSaveButton()
}

だめな子

セーブボタン_Click {
 データ保存()
}

セーブボタン_Click {
 入力チェック()
 データ保存()
}

285 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:15:48 ]
もはや最初と別の話になってるような気がするんですが。。

286 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:20:51 ]
>>284
まあどうしてもということなら、その例ならSaveButtonClickedイベントを持つ
インターフェイスをコンストラクタに取るようにする、みたいな姑息な
対策はできるんじゃない?


287 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:28:03 ]
>>285
自分でもよんでもよくわからない例でした・・・
つまり共通処理とabstractな派生の処理を組み合わせたテンプレートメソッドを
作ったんだがテンプレートメソッドを使わないで処理するやつがいるのです。

だからabstractなメソッド一つで共通も派生処理も出来たらなーと思ったのです

て、あーもうだめです日本語でおkです…

288 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 17:19:10 ]
セーブボタン_Click が ClickSaveButton() を呼び出すと決まっているなら
基底クラスでそう定義しておけばいいんじゃないのか?

289 名前:283 mailto:sage [2008/01/19(土) 17:25:35 ]
>>286
なるほどイベントを使うというのもいいですね
>>288
派生では実装無しですか、それだとすっきりですね
この方式が一番スマートな気がします

290 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 18:48:35 ]
派生クラスでオーバーライドさせるためのメソッドはprotectedにしとくもんだよ



291 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 18:54:35 ]
284のセーブボタン_Clickは、みんな親クラスのメソッドなのでは?

292 名前:デフォルトの名無しさん [2008/01/19(土) 19:02:51 ]
class Base{
 void method(){・・・}
 ・・・
}
class Derived : Base{
 void method(){・・・}
 void method2(){・・・}
 ・・・
}

で、
Base obj = new Derived();
obj.method();
とできるのはなぜ?
これじゃobj.method2()とできないから
Derived obj = new Base();
obj.method();
と書くべきじゃないですか?

293 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:06:35 ]
おまえは何を言ってるんだ

294 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:06:56 ]
>>290
そうでしたか…勉強になります
>>291
そうななってしまいますね…そしてそれだも問題なしとなる…
ボタンクリック以外にも場合によってセーブ処理を走らせる必要がある場合の対応と読み替えてください…

295 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:09:27 ]
>>293
DerivedよりBaseの方が持ってる情報が少ないのに
型になるのはおかしいということです
Base obj = new Derived();
と書いたら、Derivedのメンバでアクセスできないものがでてきてしまいませんか?

296 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:12:12 ]
>>292
多態化から勉強し直せ。
Derivedじゃない他のBaseから派生したクラスを同じ流れで取り扱えるようにだよ。
ちなみにvirtualとoverrideしないと、前者のobj.method();が呼ばれるのはBaseのほうだぞ。

297 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:15:31 ]
>>296
なるほど多胎っすか
だったらDerived obj = new Derived();
obj.method();
でいいんじゃないですか?
わざわざBaseを絡ませなくても・・・

298 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:17:14 ]
>>297
2行目読めよ

299 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:21:16 ]
>>298
Base obj1 = new Derived1();
Base obj2 = new Derived2();
Derived1.method();
Derived2.method();
とできるってことですか?

Derived1 obj1 = new Derived1();
Derived2 obj2 = new Derived2();
と同じ挙動だと思うんですが、意味あるんですか?
アクセスできるメンバが減ってるだけだと思うのですが・・・

300 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:27:24 ]
本当に読んだか?

class Hoge : Base{
 override void method(){・・・}
 ・・・
}
というクラスを後から追加しても
Base obj = new Hoge();
obj.method();
でHogeクラスのmethodを呼べるだろ

というかその辺の入門書にもかいてあるだろ・・・



301 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:30:32 ]
型っていうのは、最低限それらのメンバが使えることを保証するもの

302 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:49:25 ]
呼び出す側をベタに書くから分かりづらい
public void Write(Stream stream) {
    stream.Write(this.data, 0, this.data.Length);
}
ほらstreamはFileStreamでもMemoryStreamでもGZipStreamでもなんでも持ってこい

303 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:53:59 ]
例えば
public void show(object o) {
MessageBox.Show(o.ToString());
}
というメソッドを
show(5);
でも
show(DateTime.Now);
でも呼べるでしょ。そういうこと。

304 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:09:15 ]
>>302
そういう間違いそうなのはふらっとに書くなよ

305 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:15:53 ]
問題点を指摘してあげればプラスになるぜ

306 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:33:25 ]
>>300-303
ああなるほど
Streamの例は分かりやすいですね
Streamを継承したクラスの分だけ全部オーバーロードしなくても
勝手にどれでも動くようにできるということですか・・・
ライブラリを使うときは便利そうですけど
自分で設計するのは難しそうですね

307 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:34:53 ]
こういうこともできるんですか?
Base[] array = new array[3];
array[0] = new Base();
array[1] = new Derived1();
array[2] = new Derived2();
foreach(Base t in array){
 t.method();
}

308 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:37:35 ]
言語の習得にはトライ&エラーも大事だぜ
試せることは試す

309 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:05:25 ]
>>308
まったくそのとおり
書いてどうしても通し方がわからなければ聞くのがいいね

310 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:07:13 ]
で、>>307に答えられる人いないの?




311 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:08:38 ]
答えられる人がいないとでも思ってるのか?
安い挑発する前に手を動かせよ

312 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:09:50 ]
>>311
死ね

313 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:11:20 ]
はい

314 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:12:56 ]
>>311
答えろ、糞

315 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:13:55 ]
馬鹿にはできないんじゃね?

316 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:19:46 ]
>>310は偽物です

>>308
一通り疑問に思ったことはやってみました
Base obj = new Derived();
(obj as Derived).method2();
みたいなことをすればDerivedが持つメソッドも呼び出せるんですね
(なんか危なそうですが)
この場合、objが本当にDerivedのインスタンスじゃないと
実行時エラーになりますね

317 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:38:11 ]
基本クラスは派生クラスの実装を知らないから
派生クラスのメソッドは呼び出せないようになっている

318 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:39:21 ]
イテレータ・・・と言いたいところだけど
C#のイテレータって違うんだよな

319 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:47:29 ]
(obj as Derived).method2();
こういうのはダウンキャストという

320 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:58:10 ]
objがDerived型だという確信があるんだったらasじゃなくてキャストしたほうがいい
asは確信がない時に使うもの



321 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:51:29 ]
この変の話は実例みて解説してるの読んで勉強してから出直せ
確か@ITに猪俣の書いた記事であったから

322 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:56:54 ]
派生のメソッド呼んでほしいような場合にオーバーライドを使う。
それが多態ということ。
呼ぶ側のコードでは実際の型を知らなくても、
オブジェクト自身が必要な動作をしてくれる。
だからストリームの実体がなんだろうが
使う側のコードは変わらない。


323 名前:デフォルトの名無しさん [2008/01/20(日) 05:21:37 ]
.netで勉強しようとしてるのですが、expressで致命的に不満が残る欠陥って何かありますか?
当方、VisualStudioを本格的に触るのはVB6.0以来です。
www.microsoft.com/japan/msdn/vstudio/products/vs08/compare.aspx
↑ ここの性能比較を見たのですが良くわかりません。
特に、プロフェッショナルと比べて大きな違いがあれば教えていただけないでしょうか。

モバイルやofficeプログラミングはいらないのですが、
「クラス デザイナ / オブジェクト テスト ベンチ」、その他が無くて困ることってありますか?
フォームの編集はできるんですよね?

よろしくお願いします。


324 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 05:28:12 ]
>>323
スキル次第。
つーかVSスレで聞け

325 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 07:10:03 ]
>>323
Expressだと全角英数は使えないよ

326 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 09:27:38 ]
いきなり欠陥とか何言ってるんだこいつは。

327 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 09:29:41 ]
323がVS2008Expressを使いこなし限界にぶち当たるはるか以前にVS2010が出てしまうことを予言しておこう

328 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 09:30:23 ]
スタンダードからはデフォで使えるコントロールが増えているとか

気になったのはそれぐらいかな

329 名前:デフォルトの名無しさん [2008/01/20(日) 11:53:12 ]
>>7に関し
MSは複雑になり過ぎたWinAPIから.netのクラスに
移行するということを.netが出てきた当時聞いたこと
があります。

しかし、現状を見てみると、オーバーヘッドで起動は
遅いし、肝心のところはAPIがないと作成できない、
XPではフレームワークをインストールしないと
ダメだとか、良いところがないような気がします。


C#を含め.net環境は今後どうなるのでしょうか。
今、C#を使ってますが他の開発環境に移行した方が
良いのかなと悩んでいます。

あ、一番聞きたいことはWinAPIがなくなるかどうか
ということでした。


330 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 11:57:12 ]
釣りなので放置してよし



331 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 12:30:21 ]
>MSは複雑になり過ぎたWinAPIから.netのクラスに 
>移行するということを.netが出てきた当時聞いたこと 
>があります。 
これに関してはWin32APIではなく、
COMで拡張していた各種サービスへのAPIを.NETベースにしようということだった。
これがWin32のAPIと誤解され一人歩きしてた。
そして、おそらくJavaへの牽制のため、MSもエバンジェリストといわれる輩もわざと
誤解が一人歩きするのを放置してた。


332 名前:デフォルトの名無しさん [2008/01/20(日) 12:36:11 ]
>>331
回答ありがとうございます。
C#スレでこんなことを言うのも何ですが
今更ですが、C#のアドバンテージはどういった
点になりますでしょうか。

そういえば、ソフトウェア誌上でもC#の記事は
少なくなって来たような気がしますし。

333 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 12:42:44 ]
ジェネリッククラスのstaticフィールドって便利だな
型チェックが減らせる

334 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 13:23:17 ]
>>332
俺流のアホ回答
ソフト開発の面でいうと、

c++よりjavaのほうがアドバンテージがあった、
javaよりc#のほうがアドバンテージがあった。

335 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 14:48:49 ]
>>332
おまえさんみたいなのにアドバンテージはない

フレームワーク(ランタイムみたいなもん)インストールさせるのが面倒
API叩かないとできないorめんどくさい処理があること

これだけで嫌がる奴なら選択の余地はない。やめとけ。

だいたい、仕事とかで「しかたなく」使ってみたけど
結構いいところがあるのに気づいて個人でも使ってるってやつか
近頃プログラムはじめてたまたま最初にC#を選んだやつだけだろ
あどばんてーじ があるのは

おとなしくC++でWin32APIにしとき

336 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 15:24:16 ]
C++だとGUI周りが面倒くさいんだよなぁ。
MFCは設計が古いし、ATL/WTLは素のAPIよりマシだが面倒くさいのは変わらんし。

337 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 15:24:52 ]
GUI作成はC#のほうが圧倒的にやりやすいし、標準ライブラリもC++よりはるかに充実している。
悪い点は >>329 の通りだが、それ以外はいいこと尽くしだろ。
Vistaが普及して.NET標準装備になってさえくれれば、C#は選択肢としてかなり良くなる気がする。
まあ、Vistaが普及するかが問題なのだが。


338 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 16:25:16 ]
WinFXは何処に行ったんだか・・・

339 名前:デフォルトの名無しさん [2008/01/20(日) 16:41:07 ]
WinFXは.NET3.0のことだが?
WinFSのことなら確かにどこかに逝ってしまった。

340 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 16:47:42 ]
>>339
その前の話なんだけど?



341 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 16:55:26 ]
来週発売のDVDのリスト誰か貼ってくれ

342 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 17:17:01 ]
VisualStudioでフォームがあるDLLを作って、それをC#コンソールアプリから呼び出して表示する場合
#DLL側
DLLのソリューションにWindows フォームを追加
参照設定にSystem.Windows.Formsを追加
[フォーム名].cs[デザイナ]に表示されるフォームウインドウダブルクリックで[フォーム名].cs作成→ビルド
#コンソールアプリ側
ビルドしたDLLとSystem.Windows.Formsを参照設定から追加、usingにDLLのnamespace追加
コードの中に↓二行を書き加える
[フォームのクラス名] form = new [フォームのクラス名]();
form.ShowDialog();

こんな感じであってますか?

343 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 17:18:27 ]
フォームの継承がうまくいかない

ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3171&forum=7
↑みたいな問題って皆さん起きてないの?

344 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 17:38:08 ]
バージョン情報の取得方法で質問があります。

・ Assembly.GetExecutingAssembly().GetName().Version.ToString();
こちらで取ってくると、 1.1.0.0 1.1.0.0

・ Application.ProductVersion;
こちらで取ってくると、 1.1 1.1

どちらも『アセンブリバージョン』と『ファイルバージョン』がくっついて並んでしまいます・・・
片方だけ取得する方法はありませんか?

@ITには片方コメントアウトするといいと書いてありましたが、
[assembly: AssemblyVersion("1.1")]
//[assembly: AssemblyFileVersion("1.1")]
出力では 1.1.0.0 1.1.0.0と出てきてしまいます。


345 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 17:48:47 ]
>>343
それVS2005でも起きてる?
2002/2003の頃はいろいろあったけど。

346 名前:デフォルトの名無しさん [2008/01/20(日) 17:52:33 ]
まずなにしたらいいですか

347 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:03:19 ]
>>344
AssemblyVersionしか出ないはずだけど。
.NETのバージョンは?

348 名前:344 mailto:sage [2008/01/20(日) 18:45:58 ]
>>345
>>347
開発環境はVS2008 EE(.NET3.5)です。

ためしにVS2005で試してみたところ、
前者・後者の呼び出し方法共にアセンブリバージョンのみ出てきました。

.NET3.5で呼び出し内容が変わったみたいですね・・・。


349 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 19:07:25 ]
>>348
.NET 3.5のみ問題なんならソースよんでみたら?

350 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 19:07:30 ]
>>348
そこは2.0のまんまで変更はない。



351 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 19:08:41 ]
すまん。Express Editionはソース読めんのだっけか。

352 名前:344 mailto:sage [2008/01/20(日) 19:11:33 ]
試しにVS2008 EE(.NET3.5)ではなく、
VS2008 EE(.NET2.0)で試したところ。
変化がありませんでした。

つまりVisualStudio2008側が問題なのでしょうかね。
いい対策案が思いつきません。


353 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 19:44:20 ]
単純なプログラムミスとかないか?
Console.WriteLine("{0} {0}", Application.ProductVersion); とかやってたりして。

AssemblyFileVersionは 1.0.0.0 の形式になってなくてもエラーにはならない。
[assembly: AssemblyFileVersion("ほげら")] もOK
[assembly: AssemblyFileVersion("1.1  1,1")] とうぜんこれもいける。


354 名前:デフォルトの名無しさん [2008/01/20(日) 19:52:50 ]
>>337
ありがとうございます。
VistaはPCの買い替えに比例して徐々に普及して
行くことは間違いないので、もうしばらくC#で
行こうかなと思います。

で、APIは無くなると信じていたので、APIをわざと
避けて来たことから、改めて勉強しようかなと
思い始めました。


355 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:15:02 ]
駄目な奴は何をやっても駄目

356 名前:344 mailto:sage [2008/01/20(日) 20:16:57 ]
>>353
解決しました。
353氏がおっしゃるとおり、{0}{0}が原因でしたw

お騒がせしてすいませんでした。


357 名前:デフォルトの名無しさん [2008/01/20(日) 20:24:59 ]
すみません。
関数とクラスの違いがよくわかりません。

わかりやすい解説ページがあれば教えてください。
お願いします。

358 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:29:56 ]
ピンポイントでそんなアホな疑問に答えてくれるところはなさそう
まじめに初めから勉強してください

359 名前:342 mailto:sage [2008/01/20(日) 20:34:19 ]
間違ってますか…?

360 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:51:03 ]
動かしてみたらわかるだろ。



361 名前:デフォルトの名無しさん [2008/01/20(日) 20:52:26 ]
>>357
クラスは振る舞いの定義。生成を必要とする。
継承可能。コンストラクタで初期化。
中に関数や変数が含まれる。変数はget set
でアクセス。

362 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:55:03 ]
最近C言語から移ってきたんだけど
メンバ変数って要はグローバル変数みたいなもんかな?

363 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:56:50 ]
いいえ違います。

364 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:57:08 ]
>>362
グローバルスコープというよりはファイルスコープ

365 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:57:23 ]
>>357
まず古典的なcの構造体を理解する。
構造体の意義がわかればクラスの意義や意味はすぐわかると思う。(たぶん)
こういうこというとムキになって反対する人間がいるけど、
やっぱりクラスは構造体の拡張として理解するのが一番理解しやすいと思う。

>>361
そんな抽象的な説明でこういう質問する人間にわかるわけないだろw


366 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:00:29 ]
>>364
なるほど
なんかどの関数からもアクセスできたら
Cのグローバル変数みたいに管理しにくくなったりしないのかな?

367 名前:342 mailto:sage [2008/01/20(日) 21:02:01 ]
>>360
表示できることはできたのですが、試行錯誤でたどり着いたので正攻法かどうか自信がないんです

368 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:06:28 ]
>>366
なんか根本からスタイルが違うな。
クラスとして実現したい機能があって
そのためにフィールドやメソッドがある感じ。
クラスは静的な関数の寄せ集めではない

369 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:06:34 ]
>>366
だからグローバルちゃうよ、って364はいってるんだと思いますが。。
ひょっとして(案外よくいるんだが)Cとかのファイルスコープの概念を知らないの?

370 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:09:20 ]
メンバ変数にもアクセス修飾子とかあるから一概には言えないんじゃない。



371 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:18:41 ]
>>366
メンバ変数のスコープは各オブジェクト内で完結
ただしstaticなメンバの場合はどこからでもアクセスできる

372 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:22:57 ]
うん?

373 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:28:30 ]
>>368-371
クラス=ファイル
メンバ=staticグローバル変数
みたいなもんなのかな?

>>369
知ってますよ
でも、案外ファイルの中でも色んな関数から参照されてると
訳分かんなくなりませんか?

374 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:28:49 ]
オブジェクト指向の基本は自分で身につけないと
こんなとこでのやりとりでは理解できるはずがない。

375 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:29:54 ]
あとよくわかんないのはメンバ関数って
インスタンスの分だけ関数が複製されるんですか?
その意味がよくわかんなくて

376 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:30:08 ]
>>373
>クラス=ファイル
>メンバ=staticグローバル変数
>みたいなもんなのかな?

悪いけど全然違う
だから真面目に基本から勉強しろと。
C++も使ったことないの?

377 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:56:18 ]
>>375
されない

378 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:56:26 ]
オブジェクト指向について解説してるウェブページでも適当に探して読んでみるべき。

379 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:10:53 ]
>>375
staticをつけないとインスタンスごとに複製される


380 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:36:05 ]
嘘を教えるな



381 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 01:23:20 ]
ワロタ

382 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 08:57:03 ]
LinkLabelについて質問です。
配列でLinkLabelを可変で作成しているのですが、クリックしたときの処理で不明な点があります。
linklabel[i]で複数作成して、クリック時のイベントは一括で一つで処理したいのですが、押されたlinklabal対応させる方法がわかりません。
x = 選択したlinklabelのテキスト みたいな感じにしたいのですが、よい方法はないでしょうか?
buttonだとselectとか使うみたいなんですがlinklabelの場合がわかりませんでした。
あらかじめlinklabel1みたいに作っている方法なら載っているサイトが見つかったのですがこの方法のやつが見つかりません。

383 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 09:13:50 ]
sender

384 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 09:23:53 ]
>>382
デザイナで一個置いてイベント設定してdesigner.cs見てみるといいんじゃないか?

385 名前:382 mailto:sage [2008/01/21(月) 10:37:11 ]
>>383-384さんありがとうございました
x = ((System.Windows.Forms.LinkLabel) sender).Text;としたところ上手くいきました

参考サイト
dobon.net/vb/dotnet/control/buttonarray.html

386 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 13:47:00 ]
NotifyIcon.Textにセットするために、文字列が64文字を超える場合は64文字までに切りたいのですが
string.Remove(64)
string.Substring(0,64)
のどちらも64文字未満だと例外が起きるようです。
いちいち文字数のチェックをしないでも、一発で切ってくれるメソッドはないのでしょうか?

387 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 13:53:06 ]
「いちいち文字数のチェックをしないでも、一発で切ってくれるメソッド」
が存在したとしても、それは内部で長さをチェックしている。

ゆえに自分で作ればよい

388 名前:386 mailto:sage [2008/01/21(月) 14:02:26 ]
>>387
ということはやっぱりないんですね。
例外が起きると言うことは内部でもチェックしているはずなので
二重チェックになるのが嫌だっただけです。
拡張メソッドを作ることにしました。ありがとうございました。

389 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 14:07:55 ]
そんなことに拡張メソッド使うな

390 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:26:42 ]
Language Integrated Queryを「統合言語クエリ」と訳すのって変じゃね?
「言語統合クエリ」ならわかるけど



391 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:33:02 ]
LINQってリンキューって読んでるけどあってる?

392 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:34:32 ]
オレはリンク

393 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:46:31 ]
try中に意図的にcatchに移動してほしくて
無理やり0除算発生するようにしてるんだが
もっとスマートな方法はないですか?

394 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:47:40 ]
それ最悪の書き方

395 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:47:56 ]
何か throw しろ。

396 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:49:46 ]
if (flag) throw new GotoCatchException<int>();
else throw new GotoCatchException<String>();

397 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:52:22 ]
そもそも意図的にcatchに移したい処理なんて
設計に問題があるだろ

398 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 19:02:25 ]
たぶん発想が逆立ちしてるんだろうね。
本来例外処理の外に置くべき処理をcatchの中に書いちゃってる、
なんてオチだと推測する。

399 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 20:55:41 ]
変数が使われてなかったりするとエラー一覧ウィンドウで「警告」で表示されますが
「メッセージ」も文法的な間違いを発見すると表示されるのですか?

400 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:13:57 ]
メッセージって""内のメッセージか?
警告と並列で括弧でくくってある意味がわからん



401 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:53:03 ]
エラー一覧のウインドウに並んでる
[エラー] [警告] [メッセージ]
のことだろう。
俺もまだ見たことないな。

402 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:52:07 ]
例外の使い方だけど

try
処理1
処理2
catch(ex1)
エラー1
catch(ex2)
エラー2
catch()
想定外エラー

で処理1と2は戻り値無しでNG時にex1とex2をthrowする
って使い方は邪道?
例外は関数エラーに使うべきじゃなかたりする?

403 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:57:22 ]
そうやって使わないで何に使う

404 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:58:44 ]
むしろそれ以外の使い方があったら教えてほしい。

405 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 23:22:08 ]
それ以外の使い方したら読みにくいだけだろw

406 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 23:30:16 ]
想定外の例外を握りつぶすのがいいかどうかは賛否の分かれるところじゃなかろうか

407 名前:デフォルトの名無しさん [2008/01/22(火) 02:27:48 ]
C#ってスクリプト言語くらい気楽に使えるようにならないの。
いちいちコンパイルとかウザいし。

408 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 02:35:52 ]
>>397
そうでもないキガす。
とりあえず例外処理に関してテスト条件なんて作らずに
投げたらどうなるんだか見てみたいなんて話はあるかも
しれない。 これはテストをはしょるズボラな俺だけか。

409 名前:デフォルトの名無しさん [2008/01/22(火) 06:50:59 ]
JavaScript書き出された文字列を取得
する方法はありませんか。

ブラウザコンポーネントで例えば
document.write("abc")と書かれていれば
このabcを取得したいとのですが。

410 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 08:47:29 ]
>>400,401
[エラー] [警告] [メッセージ]の[メッセージ]の項目です。
ASPでweb.config内でカスタムセクションを追加した時に、
「属性○○のスキーマ情報が見つかりませんでした」と[メッセージ]でエラー一覧に表示されました。
でも問題なく動作してるのでそのまま続けてみます。
ありがとうございました。



411 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 08:48:26 ]
>>409
document.body.innerText
つーかおもっくそスレ違い

412 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 09:52:11 ]
>>407
ソースコードから実行てのはふつーにできるから調べてみれば?
使い物になるかは別だが。


413 名前:デフォルトの名無しさん [2008/01/22(火) 18:24:43 ]
CSVの質問です。

//string FileName = "二バイト文字テスト";
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(str.ToString() + ".csv"));

上記のようにファイル名が2バイトになっても正常に「開く」「ダウンロード」「キャンセル」
のダイアログが出るようにしています。

ダウンロードした場合は日本語が含まれたファイル名でダウンロードできます。
「開く」をクリックした場合、エンコードされたファイル名で開こうとしてしまいます。

解決方法はありますか?
よろしくお願いします。

414 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:26:53 ]
あげてしまった・・・

補足で、開くを選択した場合エラーになります
エンコードされたファイル名を開こうとするためです。

415 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 20:04:33 ]
誰かが作ったクラスライブラリを利用する時は、exeと一緒にそのdllも付けなきゃならないの?
C/C++のスタティックリンクライブラリみたいにexeファイルに組み込むことできないのかな?

416 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 20:06:44 ]
ilmerge

署名されてたら無理だけど

417 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 20:43:44 ]
>>416
thx

418 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:48:44 ]
文字列を表示するときに文字の間隔を標準
(Graphics.DrawString で表示されるときの文字間隔)
より1ドットずつ狭めて表示したいと思います。

思いついたのは ExtTextOut を使用する方法ですが、
それ以外の方法(できれば p/invoke を使わなくていいような)
があったら教えてください。


419 名前:デフォルトの名無しさん [2008/01/22(火) 22:55:21 ]
Frameworkで定義されているコンストラクタを持たないクラスを使用したい場合、
どのようにすれば使えるのでしょうか?

仮に、public sealed class ModelBoneというコンストラクタが無くプロパティのみを持つ
クラスのインスタンスをローカルで一時使用したいとします。

ModelBone bone = new ModelBone(); としても
'Microsoft.Xna.Framework.Graphics.ModelBone' のコンストラクタが定義されていません'
のエラーが表示されてインスタンスを作成できません。


420 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:57:21 ]
無理
他にインスタンスを取得する方法が用意されてるはずだからそれに従う



421 名前:420 mailto:sage [2008/01/22(火) 23:02:25 ]
ちょっと見てみたけど、ModelBoneに関してはContentManager.Loadで
モデルと一緒に読み込むしかないんじゃないかな

422 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:03:23 ]
>>418
一文字ずつMeasureCharacterRangesで測ってRectangleF作って
DrawStringすりゃいいんじゃね


423 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:22:23 ]
>407
Windows PowerShell使えよ。

424 名前:419 mailto:sage [2008/01/23(水) 00:37:32 ]
>>420
やはりインスタンスは作成できないのですか・・・。
このクラスが持つプロパティを自前クラスの関数の引数で使用したくなり、
Frameworkのクラスからインスタンスを作成できない場合
全く同じプロパティとコンストラクタを持つクラスを改めて
定義しなければならないからどうしたものかと悩んでいました。

とりあえず出来ないことが分ったので、他の方法を検討してみます。
ありがとうございました。

425 名前:デフォルトの名無しさん [2008/01/23(水) 01:15:38 ]
>>423
ぜんぜん手軽じゃないじゃん。

426 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 06:25:57 ]
>>420
拡張メソッド使っても無理?

427 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 07:40:21 ]
そもそも、勝手にインスタンスを作られると不都合だから、わざわざコンストラクタを定義してないわけだ。

428 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 09:20:32 ]
>>426
拡張メソッドにどんな幻想を持ってるんだ

429 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:19:50 ]
>>428
なんでもできるはず

430 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:28:13 ]
拡張メソッドのおかげで魔法使いにならずにすみました



431 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:38:00 ]
formA、formB、formCがあり、
A→B、A→Cと呼び出すとします。
formBで取得したテキストボックスの値を、formCで参照したいときはどのようにしたらよいでしょうか?

432 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:39:45 ]
formAがformBから値を取得してformCに渡せばいい

433 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:45:53 ]
渡すときはどうしたらいいでしょうか?
FORMC fc = new FORMC(/*取得した値*/);
でしたっけ?

434 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 11:08:35 ]
コンストラクタでもプロパティでもお好きなように


435 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 11:13:26 ]
ところで、そのformB、formCはそれぞれ、formAからShowDialog()で呼んでいるのですが、その場合も
>>434さんの言うとおりでいいのでしょうか?

436 名前:デフォルトの名無しさん [2008/01/23(水) 11:17:23 ]
interface I1,I2,I3(既成の外部ライブラリ)があったとして、
I1 i1 = new I1();
I2 i2 = new I2();
i1.hoge = (I3)i2.hage();
みたいなコードがあるのですが、(I1〜3は既成の外部ライブラリ)

それぞれのinterfaceで定義されているメソッドの実態はどこで定義されているんでしょうか?

やりたいのはi1にひとつ例えばvoid moe(string str)みたいなメソッドを追加したclass or interfaceを作って
void moe(string str){
i1で定義されているメソッドをコール;
}
みたいな感じにしたいのですが、何から手をつけていいのかわからなくて困っています。

よろしくお願いします。

437 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 11:17:55 ]
お前は何を言ってるんだ
ShowDialog()で呼ぼうとコンストラクタには関係ないだろう

438 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 11:41:18 ]
>>436
I1 i1 = new I1();
I2 i2 = new I2();
↑      ↑
ここ  と  ここ を

よーく見比べてみよう

439 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 12:56:15 ]
印刷で困っています。
ツールボックスから印刷プレビューのダイアログ(PrintPreviewDialog)をそのまま利用しています。

プレビューでは,意図した画像が正しく表示されるのですが実際に印刷すると一ページだけ
真っ黒に印刷されてしまいます。
これを解決するためにはどこを調べなければならないでしょうか。

440 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:10:23 ]
他のソフトから印刷してみてどう?



441 名前:436 mailto:sage [2008/01/23(水) 13:10:57 ]
>>438さん
れすありがとうござます。

見比べて見たのですが、やはりinterface同士でなにがおこっているのか理解出来ません

new Interface();
という構文自体が何をしているのかわからないのですが、
もう少しヒントいただけないでしょうか?

442 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:26:54 ]
>>441
よく見ろ。newしているほうはインターフェイスではないはず。

443 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:38:08 ]
>>440さん
お返事ありがとうございます。
ほかの印刷ソフトでは正常でした。
PrintDocumentのデータはどのタイミングで破棄されるようになっているんでしょうか?
何度やっても再現してしまいます。。。

444 名前:436 mailto:sage [2008/01/23(水) 13:40:26 ]
何度見てもinterfaceです。
そのインターフェースの定義を見ると
[Guid("hoge")]
[CoClass(typeof(I2cls))]
public interface I2 : I4
{
}

とかになっていてどうも思っている異常に複雑そうなのであきらめます。
ありがとうございました。

445 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:45:19 ]
C#のGetFilesのメソッドについて質問なんですが
複数の拡張子(この場合jpg、gif、png、bmp)で
絞り込むのはどう書いたらいいんでしょう?

446 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:46:47 ]
>>445
Path.GetExtensionすりゃいいじゃん

447 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 14:13:02 ]
>>444
CoClass属性のが実体クラス。

448 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 15:50:08 ]
>>445
C#の、ってここはC#スレだ、決まってんだろ、ハゲ
第一C#の、じゃなくて.net frameworkの、だろ、ハゲ
それにクラス名まで、書けや、ハゲ

Directory.GetFilesならsearchPatternとるオーバーロードがあるっしょ

449 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 16:20:38 ]
ツンデレの>>448に萌えた

450 名前:デフォルトの名無しさん [2008/01/23(水) 17:48:10 ]
>>448
揚げ足とるな。ばか!!!!!!!!!!!!!!



451 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 17:50:18 ]
>>450は騙り?

452 名前:デフォルトの名無しさん [2008/01/23(水) 18:47:52 ]
トランザクションオブジェクトつくって
INSERTとかUPDATEとかしたあと
コミットもロールバックもしないとどうなりまつか?

453 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 19:40:34 ]
コネクション閉じる時点でロールバック。
だったと思うけどプロバイダに依存しそう。
ものによっては保留状態になるかも。
いや、手動トランザクションなら保留はないかな?


454 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 20:36:10 ]
>>453
トンクス
SQL Serverだとそんな感じみたいでつね

455 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:26:09 ]
TabControlのTabPageにいくつかTextBoxとRichTextBoxを配置しました。
あるタイミングで,Text

456 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:31:33 ]
すいません,誤って途中のものを書き込んでしまいました。

TabControlのTabPageにいくつかTextBoxとRichTextBoxを配置しました。
あるタイミングで,TextBoxとRichTextBoxのレイアウトを Fixed3D から FixedSingle
に一気に変更しようとしています。

テキストボックスの変更はできたのですが,同様の方法でRichTextBoxの変更ができませんでした。
以下のようにしたのですが,何が問題でしょうか。
RichTextBox rtb = new RichTextBox();

foreach(Object ctrl in tabControl1.SelectedTab.Controls)
{
if(ctrl.GetType().Equals(rtb.GetType()))
{
rtb = (RichTextBox)ctrl;
rtb.BorderStyle = BorderStyle.FixedSingle;
}
}

457 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:56:04 ]
>>456

・まず直接フォームのリッチテキストのフィールドで同じことをしてどうなるか
 確認しよう。

・ブレークポイントの使い方を覚えよう。

・こんなくだらないことでいちいち悩んでるようなら、君才能ないのかも

458 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:10:40 ]
RichTextBox rtb = new RichTextBox();
こうしてから、
if(ctrl.GetType().Equals(rtb.GetType()))
こう判定して、
rtb = (RichTextBox)ctrl;
こうやってしまうところに並々ならぬ才能を感じた。


向いてないよ、やっぱり。

459 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:19:16 ]
なれてないだけ

as null

460 名前:456 mailto:sage [2008/01/24(木) 00:24:57 ]
>>458さん
ご指導ありがとうございます。
勉強になります。

>>459さん
nullなんですね。
ありがとうございます。

デバッガの使い方も分からず,すいません。
ブレークポイントを指定してBorderStyleを見てみるとちゃんとFixedSingle
になっていました。
RichTextBoxはFixedSingleにしても表示が変わりませんでした。
もしかして,そういうものなんですかね。



461 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:47:41 ]
if(ctrl is TextBox)
って,できるんですね...orz

462 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:10:50 ]
キャストするならctrl as TextBoxとしてnullかどうか見た方がいい。

463 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:12:35 ]
>>462
ありがとうございます。
459さんのヒントを頂き,そのようにしました。
型判定について全く無知でした。。。

464 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:11:02 ]
検討違いなこと言っていたらすみません

public static void func(string str1, string str2, bool flag){
 処理
}
このような文字列を2つと論理型で1つを引数とする関数を再帰的に呼び出す部分なのですが
今現在作成中のプログラムの中で、この関数による処理がほぼ全てのようなものです

なのでこの再帰的にこの関数を呼び出すという部分について何か最適化の方法がないかと探しています

関数内の処理はforeachと.NET内のクラスを利用したものでほぼ埋まっているため
そちらに関しては最適化はやりようがないかなと思っています

それではよろしくお願いします

465 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:21:53 ]
>>464
プログラムの概要を教えてもらえんとなんともなぁ
そもそも本当に再帰が必要なのかもわからないし

466 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:42:20 ]
>>465
すみませんでした、書くと長いので概要を

str1にはディレクトリへのパスを(こちらをA)
str2にはまた別のディレクトリへのパスを(こちらをB)受け取ります。

Bが存在するか確認
A内に存在するファイルを探していきながら、随時B内にA内のファイルを移動していく

その後、A内でディレクトリを検索し、無ければ終了、発見した場合
(今現在のstr1とstr2の値が以下だとしたら
 str1 C:\aaa
 str2 D:\xxx)
A内でディレクトリ検索をして見つけたものが
C:\aaa\abcだとすると
func("C:\\aaa\\abc", "D:\\xxx\\abc", true)
こんな感じで自信を呼び出します

つまりBディレクトリ以下にAディレクトリをサブフォルダ内等一切合財移動させるという感じです


467 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:49:16 ]
最適化する意味はどこにもないな。
せいぜい再帰やめることで万が一のStackOverflowを回避するぐらい。

468 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 15:06:46 ]
再帰させる必要ないでしょ。
Private Sub moveFile(ByVal a As String, ByVal b As String)
Directory.CreateDirectory(b)
Dim files() As String = Directory.GetFiles(a, "*.*", SearchOption.AllDirectories)
For Each f As String In files
Dim newpath As String = f.Replace(a, b)
Dim newdir As String = Path.GetDirectoryName(newpath)
Directory.CreateDirectory(newdir)
File.Move(f, newpath)
Next
End Sub

469 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 16:22:56 ]
なんでVBなんだよ。死ぬほど読みにくいわ
466は書くと長いって書いてるんだから
全部のファイルじゃなくて、何か条件付けがあるんだろ

470 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 16:49:37 ]
手元のマシンには、VBしか入っていないからVBで答えたまで。
なんか条件付けがあるというのならなぜその条件を説明しない。
その条件をこっちで考えろってか?
全部のファイルじゃない?
「一切合財移動させる」と書いてあるだろ。



471 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 16:53:22 ]
.netじゃフォルダ移動したら、その下にあるのも一緒に移動しないの?

472 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 18:08:56 ]
>>470
スレタイ読んでくれよ・・・

473 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:24:41 ]
 C++の頃に、switch文を嫌ってポリモーフィックを使って対応していた場合(GoFのstateやTemplete Method系?)、
C#にそのまま移植するとキャストやガベコレの為に返って処理が重たくなる事は有りませんか?

 これから具体例を用意しようと思いますが、2,3時間後になると思うので、
場合によるときは何処が焦点になるか、忠告頂けると助かります。
ちなみにC# 2.0です。ジェネリックの恩恵を受けれると嬉しいのですが。


474 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:34:38 ]
参照型→参照型のキャストは無問題
参照型→値型はボクシングが入って遅くなる
void Hoge<T> where T : IHogeHoge (T value) { ... }
こうすればボクシングは回避できて、インターフェイスメンバも使える
メソッドが一つならインターフェイスじゃなくてデリゲートを使うのも流行り

475 名前:474 mailto:sage [2008/01/24(木) 19:35:30 ]
間違えた
値型→参照型はボクシングが入って遅くなる

476 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:35:38 ]
そこが処理のボトルネックになってるかどうかがまず問題だろ

477 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:45:25 ]
>476 swichを使いたがる人に人的な問題が有るだけなので、ネックにならない事がわかればすっきりできます。

>474さんのおかげで解決ですけど、私も興味が有るので、もうちょっと面白い話がを集めたいんですけどスレ違ですかね。

私が今書き出したサンプルはデリゲートの方がスマートっぽいので練り直さないと。
void Hoge<T> where T : IHogeHoge (T value) { ... } を有効利用したサンプルを書けてないと足下をすくわれそうだし。


478 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:00:11 ]
手段と目的を履き違えていないか?

479 名前:477 mailto:sage [2008/01/24(木) 20:07:17 ]
>478
そうですね。 「参照型→参照型のキャストは無問題 」の理由は解ってないし。
>where T : IHogeHoge (T value) { ... }  は自分の件では要らない事が、返事を書いてから気づきました。

未だベンチテストとかできる状態では無いのでボトルネックの洗い出しはできません。

 目安としてはポリモーフィックされたupdate()関数は一秒間に180回ぐらい行われて、 satateが切り替わるのは2,3秒に一回あるか無いかです。
それでupdate()関数内に switchが有るのは嫌だなと思う次第です。

480 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:42:01 ]
C# を使うことそれ自体がボトルネックだとおもいまーす



481 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:53:24 ]
switch使ったっていいと思うが
Enumってswitch用じゃね?

482 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:11:10 ]
問題のサンプルソースできた。
100行ある。ここに貼るとしたらどうしたら良い?

483 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:27:57 ]
(´・ω・`)しらんがな

484 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:30:45 ]
お好きにどうぞ
ttp://zero0.x0.com/mc00/upload.php

485 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:32:37 ]
ttp://www.uploda.net/cgi/uploader1/index.php?file_id=0000286835.udn
オリジナルのファイル名でDLすると良いみたい。

かなり汚いけど、これのswitch版を作ってみる。

486 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:32:53 ]
一秒間に180回なら全く気にする必要ないだろ

487 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:44:26 ]
stringの連結とかやってる時点で無意味だろ

488 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:52:36 ]
switch有りのソース
ttp://www.uploda.net/cgi/uploader1/index.php?file_id=0000286840.udn

結果
switch無し 117261
switch有り 114267

switchの方が良かった。\(^o^)/
 おまえらさー、 これ信じて本当に大丈夫?

>487 良い事言った。

489 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:57:23 ]
テキスト連結を削除して試したら両方15ms以下で終わったよ

490 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:03:37 ]
>489
LinkedListの大きさを20000にして、string xをint xにして只の足し算にした。

switch無し 35928
switch 21836

C#のキャストってやっぱり痛いんだな。



491 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:33:24 ]
インライン展開されてるみたい
[MethodImpl(MethodImplOptions.NoInlining)]をswitch版のupdateに付けてみ

492 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:51:29 ]
つけては見ましたけど、特に変わらなかったです。 21600ぐらい。
---------
using System.Runtime.CompilerServices;
--中略---
 [MethodImpl(MethodImplOptions.NoInlining)]
 public void update()
 {
  switch (this.state)
-----

UMLやDPを使って設計した方が遅くなるってのはC#ユーザーなら通らされる道なんでしょうね。
キャストやガベコレの世界ってこうなっちゃうんだな。 UMLは概念?だかで実装はswitch。

493 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:10:11 ]
間違えた
インライン展開抑制でこっちで効果があったのはFunc1updateとFunc2updateの方。差がかなり小さくなった。
まあつきつめたらswitchの方が速いのは当たり前だけどそんなことに意味があるかどうかの方が大事

494 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:42:57 ]
そりゃそんな感じの作りならswitchのが効率いいだろうし
3パターンじゃなおさらswitch有利だろうけど
だからどうしたってレベルの話だな。

そのレベルでパフォーマンス重視ならC#なんざ使うのが間違い。
まあ大抵はこんなレベルの差はどうでもいい。
普通は処理そのものがもっとずっと重いしな。


495 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:53:04 ]
でどこでキャストとガベコレが関係してるわけ?

496 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:56:41 ]
まったく関係ないw
switchの方が最適化されて有利っていうだけのこと

497 名前:464 mailto:sage [2008/01/24(木) 23:57:54 ]
レスくださった方、ありがとうございます

最適化の意味がないというのがいまいちピンと来ませんでしたが
少し説明不足なところがありました。
関数内の処理をどうこうしたいのではなく、関数に引数を渡す部分に関して
何か速度を上げるのに繋がる手法のようなものがあれば・・・と思ってのことでした
なので検討違いかもしれないと今でも思っていますorz

再帰処理がいらないという意見がありましたが、私自身の力量ではこれで全力でして
これ自体アドバイス貰いながらの完成だったりします。
どんどんと階層を深く辿るにはどうしてもこれ以外の方法が思いつきませんでした

498 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:02:47 ]
>494
>普通は処理そのものがもっとずっと重いしな。

テキスト連結
117261-114267= 2994
足し算
35928- 21836= 14092
そうですね。

>495
 どう関係しているか解らないので、適当です。
C++のポインタとキャストならこうは成らないのでは?

 switch無しは、何回キャストしているか把握してないし。 ガベコレとauto pointerを勘違いしているかも、
>495が関係ないと言うなら、もっとましなソースになるかもしれませんね。


499 名前:498 mailto:sage [2008/01/25(金) 00:05:31 ]
>496 今見た。

500 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:06:08 ]
>>497
>最適化の意味がない
どう見てもディスクIOの方が圧倒的に重いからじゃね



501 名前:497 mailto:sage [2008/01/25(金) 00:12:12 ]
>>500
なるほど、確かにorz
少しでもと思ったんですが厳しそうですね
ありがとうございました

502 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:17:10 ]
>>501
IOって面で工夫するとしたら
文字列で渡さずにDirectoryInfoを渡すようにしたらいいのでは

503 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 01:31:02 ]
インラインとか書かれてるのをみると
脳内で淫乱に変換される漏れの頭を何とかしてください

504 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 04:51:44 ]
PropertyGridで、uint型の配列を展開したとき、数値を16進数で表示するには
どうしたらいいのでしょうか。

505 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 07:57:25 ]
頑張るのならば ArrayConverter を真似して実装してから
uint[] 型のプロパティに TypeConverter 属性で実装したのをつける
ArrayConverter の内部クラスが private なので面倒

頑張らないのならば
[TypeConverter(tyeof(UInt32HexConverter))]
struct UInt32Hex{
 public uint Value;
}
とでもして Uint32HexConverter をお手軽に実装してから
UInt32Hex の配列を使う

506 名前:504 mailto:sage [2008/01/25(金) 09:13:17 ]
>>505
ありがとうございます。
とりあえず、頑張らない方向でやってみます…。

507 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 09:57:14 ]
がんばろうぜ…






いやまあどうでもいいんだけど

508 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 10:17:29 ]
XMLコメントを書くと
メソッド自体とパラメータのコメントはカーソルを合わせたり、Ctrl+K,Pとかすれば表示されますが
戻り値の/// <returns>xxxx</returns>に書いたものは
どうすれば表示されるのでしょうか?

あとデバッガでメソッドの戻り値が何になったのかを
そのメソッド内で見ることは出来ないのでしょうか?
バージョンは2008です

509 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:33:12 ]
>>323
VC# 2008 Express使ってて思ったのは、
クイックウォッチが使えないこと。

ブレークポイントからステップインして処理を追っていくときに、
その時点における式の評価ができるのは結構便利なんだよな。
それ以外では全く不満はないので、それだけの為にVS2005Proに戻そうとまでは思わんね。

VS2008Pro、アップグレード版の値段によっては購入を検討する。

510 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:52:13 ]
前を使ってないからクイックウォッチってのがわからないけど、
文面からイミディエイトウインドウのような気がする。
?を最初につけてメソッドとか記述すれば結果がみれるし、フィールドに代入も出来る

初期状態では確かメニューにないから、ユーザー設定から追加。



511 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:56:44 ]
式を評価するだけならウォッチ式でできるよ
2008では演算子の上にマウスカーソルを置くと評価した結果が表示されるようになってる

512 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:27:59 ]
>>510
なるほど、イミディエイトウインドウで自作式を評価できるのか。
今まであんまり使ったこと無かったもんで知らなかった。
それならクイックウォッチいらないかもね。

>>511
それはソースに記述してある式の評価でしょ?
それは当然できる。
俺が言ってたのは、ソースに記述してない評価式のこと。


513 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:46:42 ]
>>512
ウォッチウインドウにある空の行をダブルクリックして式を入力するだけ

514 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 13:14:35 ]
.netだから出来るんだろうけど、
最初にイミディエイトウインドウを知ったときには感動した

ドキュメント見て、実際の動作確認をしたくなったら
参照さえしてあれば、そのままF10(ステップオーバー)だけ押せば
ソースコードに全くないクラスでもそのまま試せるし、IntelliSense効くし
ちょっとしたことなら確認用のプログラム書かなくてもいいんだよな
テストしたいクラスがあったときもイミディエイトウインドウから実行できるし
ブレイクポイント設定しておけばちゃんと止まるし

515 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 15:36:46 ]
>>502
DirectoryInfoとFileInfoにして色々試してみました
大きなディレクトリを移動させる際の重さがなくなったのですが、移動スピード(?)というか処理にかかる時間が延びてしまったようです

まだ色々試している段階なのですが、これは良くも悪くも安定したということか・・

何はともあれ新しい可能性です、もう少し試行錯誤していこうと思います
ありがとうございました

516 名前:デフォルトの名無しさん [2008/01/25(金) 16:32:16 ]
DataGridView 内のセルにて
長い文字列を入力した時に折り返すようにしたいのですが
どのように設定すれば良いのでしょうか?
WrapMode を True に設定したら全角文字は上手く折り返されるんですが
スペースを含まない半角文字はセルから溢れてしまい、困ってます。

517 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:56:07 ]
今データベースを使用するアプリケーションを書いているのですが、
SQL文が非常に長くて可読性が悪いので文を分割しようと考えてます。
この場合、

string query = "select hoge, fuga, hage from test"
+ " where hage = 1 ・・・";

見たいな書き方しますか?それともStringBuilderを使ってApendしていきますか?
どう書くのが一般的なんでしょうか?

518 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:28:05 ]
多いのは単に+で連結じゃないかね?
俺は@でヒアドキュメントもどきが好きだが。


519 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:29:32 ]
ループ等の中にないならstringで連結してもいいんじゃね
それか余所においとくかリソースにつっこむか

520 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:36:50 ]
リテラルの+はコンパイル時に解決されるからStringBuilderなんて使うと余計に遅くなるよ。



521 名前:デフォルトの名無しさん [2008/01/26(土) 00:44:27 ]
C#のtry-catchの質問です
シリアル通信を用いたセンサのグラフを表示するプログラムを作っています。
UIのデザインForm1.csとセンサを扱うクラスSensorClass1.csにわけています。
で、シリアル通信の関連のエラー処理をしたいのですが、かきのどちらに
try-catchを施せばよいでしょうか。

Form1.cs
private void buttonWaaSens_Click(object sender, EventArgs e)
{
this.sensorClass.sens();
}

SensorClass1.cs
public void sens()
{
this.serialPort.DiscardInBuffer();
this.serialPort.WriteLine("sens +000001000 20 5 0");
System.Diagnostics.Debug.WriteLine("取得開始");
}




522 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:51:25 ]
>>521
いや、日本語書けよw
君はエスパーかもしれんが、ここ読んでるキミ以外の人間はエスパーじゃないんだけど。

523 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:57:03 ]
ぼくはエスパーです
どちらでも好きなほうにどうぞ

524 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 01:08:10 ]
>>521
ベストアンサー

 すべて


525 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 02:33:53 ]
PropertyGridのような折り畳み・展開可能なGrid(複数カラム保持)を作成したいのですが、
参考になるURL・方法を知っている方教えていただけますか?
こんな感じを想定しています。
ColA   |ColB |ColC
-NodeA |    |
 -NodeC|     |
+NodeB |     |

526 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 02:42:09 ]
>>525
ttp://www.codeproject.com/KB/grid/OutlookGrid.aspx

527 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 03:05:21 ]
>>526
ありがとうございます。
コード参考にして作ります。

528 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 05:13:40 ]
if(dir.Attributes == FileAttributes.ReadOnly)
{
 dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly;
}
dirはDirectoryInfoです

これで読み取り属性なら読み取り属性を解除するということになっているでしょうか?

529 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 06:39:01 ]
if ((dir.Attributes & FileAttributes.ReadOnly) != 0)
とでもしておかないと、読み取り専用以外の属性を併せ持つディレクトリを漏らす。

530 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 06:45:14 ]
ディレクトリには必ずディレクトリ属性がついているから、>>528のやり方では絶対に条件が成り立たないな。



531 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:22:43 ]
>>529
ありがとうございます
流石に単純すぎて自分のものはいぶかしんでいたんですが
読み取り専用なだけ、という場合しか考慮されていなかったんですね、助かりました

>>530
DirectoryAttributes的なものでもあるんでしょうか?
一応こちらの環境では(読み取り専用にチェック入れただけのディレクトリに対しては)できましたが

532 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:25:26 ]
あれ>>529がいけそうになさそうな・・

533 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:35:47 ]
状況によって消えたり消えなかったり、読み取り属性だけころっとかわったりorz

もうちょっと試行錯誤してきます、すみません

534 名前:508 mailto:sage [2008/01/26(土) 07:50:21 ]
>>508
やっぱりどちらも無理なんでしょうか?

535 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:57:37 ]
>>534
どっちも必要ないから無理じゃない?

536 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 09:32:29 ]
>>534
メソッドの戻り値はreturnの部分にブレークポイント仕掛ければ分かるよ

537 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 11:43:12 ]
>>518,519,520 さんありがとうございました。

>>518 @使ったヒアドキュメントもどき私も使っています。
>>520 コンパイル時に解決してくれんですね。安心して+で連結できます。

538 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:22:07 ]
form1、form2、form3があり、
form1からボタンのイベントでダイアログ形式でform2を開き、そこに値(TextBox)を入力します
そのあと、okでform1に戻り、今度は別のボタンのイベントでform3を開き、そこでSaveFileDialogを開きます
このときSaveFileDialogのFileName先ほどのTextBoxの値を入れたいのですがどうしたらよいでしょう?



539 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:28:42 ]
form2にそのテキストボックスの値を取得するプロパティを定義する
form2を表示して,okで戻った後にform1のコードからそのプロパティを通して値を取得して
form1のフィールドに入れとく
form3を開く前にプロパティとかコンストラクタとかでその値をform3に渡す

540 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:29:50 ]
SaveFileDialogのヘルプ見れば一発でわかりそうなもんだが
一体なにがわからんの?
もしかしてform1からform3にファイル名を渡す方法?

そんなもん、form3を開く時にファイル名を渡すなりなんなり、自分で考えろ。



541 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:32:21 ]
>>539
すみません
実際のコードで簡単に書いていただけないでしょうか?

542 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:40:58 ]
>>540
お前初心者スレからでてったほうがいいと思うぞ

543 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:41:36 ]
>>541
基礎からやり直せ
そのレスで確信したが全くわかってないだろ

544 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:43:43 ]
>>540
具体的に言えばそうです
ただそのform3のsavefiledialogのFileNameプロパティに名前を設定するとき、
sfd.Filename = の後にどうやったらform2のテキストボックスの値を参照できるのかがしりたいです

545 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:44:07 ]
class Form2 {
 public string テキストボックスの値 { get { return this.textBox1.Text; } }
}
class Form3 {
 private string fileName;
 public string ファイル名 { get { return fileName; } set { this.fileName = value; } }
 void SaveFileDialogを開くイベント() { //(略) saveFileDialog.FileName = fileName; }
}
class Form1 {
 private string fileName;
 void Form2を開くイベント() {
  using (Form2 form2 = new Form2()) {
   if (form2.ShowDialog() == DialogResult.OK)
    this.fileName = form2.テキストボックスの値;
  }
 }
 void Form3を開くイベント(){
  Form3 form3 = new Form3();
  form3.ファイル名 = this.fileName;
  //form3を表示
 }

546 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:44:30 ]
>>544
クラスの基礎だけでいいからどっかの解説ページを読むんだ

ここで一時凌ぎすべきじゃない項目だぞ

547 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:09:30 ]
>>545
型 'System.Windows.Forms.TextBox' を型 'string' に暗黙的に変換できません
AD_Adjust.textBox1' はアクセスできない保護レベルになっています。

ってエラーが出てしまいました



548 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:17:41 ]
>>547
>>546

やる気あんのか屑

549 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:20:15 ]
>>542
ロクにマニュアルも見ず、自分で試してみることもしないのは
初心者以前。

>>544
だから、
form2のテキストボックスの値を参照できるように、プロパティなり
メソッドの引数なりで自分で参照できるように作るんだよ。

550 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:21:24 ]
↑ごめんなさい、解決です



551 名前:719 mailto:sage [2008/01/26(土) 14:29:25 ]
>>719です。
もう一度起動してWINXPを起動したのですが今度は正常に読み込みました。
が・・・
起動しても何か処理が重い・・・(普段なら10秒もすれば起動して処理が終わるのに・・・)
それで色々作業中にまたまた急に電源が切れました。。
そう、719を書き込んだときとまったく同じ症状で
で、「これはウィルスだな。」と思い、そうと決まれば駆除しかない!
そう思って俺の計算では成功する予定でした。(←馬鹿
しかしその結果、ウィルスチェッカー中に電源が落ちてしまいます。
(ちなみにしばらく時間を置いてから起動すれば立ち上がるみたいなんです。)
で3回程度試したんですが・・・必ずチェック数が1万を越える前に電源が落ちます。
ウィルスチェックしていない間は落ちることがないのでまず電源アダプタとかでは無いはずなんですが・・・
ニコニコにウィルスでも混入したのかな・・・?(←先にチェックして来い
というわけでちょっとニコニコに何か手がかりみたいなの無いか見てきます。

552 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 18:09:08 ]
(´・ω・`)知らんがな

553 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 18:48:10 ]
>>719の頭ん中にもウィスル湧いてんじゃねw

554 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:20:38 ]
Point[] p = new Point[4];
p[0] = new Point(0, 0);
p[1] = new Point(1, 1);
p[2] = new Point(2, 2);
p[3] = new Point(3, 3);


クラスの配列をnewするとき↑みたいに
1個ずつnewするのがめんどいんですが
スマートにやる方法教えてください

555 名前:デフォルトの名無しさん [2008/01/26(土) 19:25:58 ]
Point[] p = new Point[4];
for(int i = 0; i < 4; i++){
 p[i] = new Point(i, i);
}

556 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:26:31 ]
Point は構造体だから配列つくっちゃったら
要素ごとに new する必要なんてない
なので new は最初の1個だけでよい

557 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:28:33 ]
Point[] p = { new Point(0, 0), new Point(1, 1), new Point(2, 2), new Point(3, 3) };

558 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:31:07 ]
C#でさぁWindowsのAPIを利用するのは.netのコンセプトに反してるよね?


559 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:32:24 ]
それがいやなら .net 側で API 用意してくれ!

560 名前:554 mailto:sage [2008/01/26(土) 19:33:30 ]
>>555 (;´Д`)却下
>>556 (゚д゚)ハァ?
>>557 (´∀` )採用!!



561 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:34:50 ]
構造体の概念を全く理解してないでよくPointクラスを使用できるね。
掛け算の概念を知らないで九九をひたすら暗記している家の息子みたいなもんだ。

562 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:36:01 ]
for を却下して new を羅列してる方を採用って・・・
何がやりたいのか分からない。

563 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:37:38 ]
>>560
Point[] p = Enumerable.Range(0, 4).Select(i => new Point(i, i)).ToArray();

564 名前:デフォルトの名無しさん [2008/01/26(土) 19:38:05 ]
>>561


565 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:33:37 ]
今までC/C++やってたんですが
最近C#やることになって勉強中です。
ものすごく親切な仕様という印象です。

566 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:51:14 ]
文字列のn番目の文字だけを別の文字に変えたいときはどうしたら良いでしょうか?


567 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:56:55 ]
文字列.replace(a,b);
a→b


568 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:58:55 ]
>>554
Point[] p = new Dictionary<int, int> { { 0, 0 }, { 1, 1 }, { 2, 2 }, { 3, 3 } }.Select(xy=>new Point(xy.Key, xy.Value)).ToArray();

569 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:15:55 ]
一旦ToCharArray()で文字配列にしていじった後にnewし直す。とか

570 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:32:19 ]
>>566
StringBuilderならインデクサ経由で変更できるよ。



571 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:33:07 ]
>>565
親切っていうよりガチガチに制限かけまくってるだけ

572 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:51:04 ]
画像処理のラスター処理関連の質問です。

画面上に何か図形を2つ書いて(例えば10角形2つ)を書いて
その図形の重なった部分の面積を求めるっていうとき
どうやればできますか?



573 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:54:17 ]
三角形9つにずつ分解して、重なり部分81箇所の面積の和をとる。
幾何学の問題。

574 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:54:58 ]
9じゃねえわ。8x8=64

575 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:57:56 ]
重なり部分をどう求めるの?

576 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:06:03 ]
>>572
紙と鉛筆で「ry)っていうときの」アルゴリズム書ける人か書けない人かで分岐。
書ける人ならとりあえずアルゴリズム書いて晒してみると親切な人がC#での書き方のヒントくれるかも。
書けない人は……ライブラリ探すところから始める? ちなみに.NET標準にはないよ。

まあ標準ではなくてもGeometryクラスを流用すればできるかもしれんが。
ttp://d.hatena.ne.jp/hogeman/20071202

577 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:12:22 ]
>>572みたいな問題って意外と難しいんじゃないの?
いつでも代数的に解ける図形が与えられるとは限らないし。
だからモンテカルロ法みたいなのがあるわけじゃないの?

つーか、>>572は図形がどういうデータ構造で与えられるかをまず提示しなきゃ
話にならないね。

578 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:18:36 ]
>>576も言ってるけどWPF使えば超簡単にできるよ

579 名前:578 mailto:sage [2008/01/26(土) 22:19:29 ]
>>576が言ってるのは違うGeometryだったな

580 名前:572 mailto:sage [2008/01/26(土) 22:24:03 ]
図形の形状は不定です。
C言語上でやったときは
メモリデバイスコンテキスト上に図形を描画して
それぞれ配列に格納して論理演算で求めてました
↓みたいなかんじ

■■■■■■
■□□□□■
■□□□□■
■■■■■■
■■■■■■
■■■■■■

■■■■■■
■■■□□■
■■■□□■
■■■□□■
■■■□□■
■■■■■■

重なり部分
■■■■■■
■■■□□■
■■■□□■
■■■■■■
■■■■■■
■■■■■■

C#だとメモリデバイスコンテキストに相当するものが
あるのかよくわからないので聞いてみました
WPFというのでできるんですか
調べてみます



581 名前:576 mailto:sage [2008/01/26(土) 22:25:14 ]
>>578
WPFのGeometry.GetAreaでいけそだね。
だとしたら「標準にはない」は嘘になる。サンクス

582 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:43:15 ]
>>580
メモリデバイスコンテキストに相当するものならSystem.Drawing以下にあるかな。
GraphicsPathからRegion作って残りとIntersectして共通領域のRegionを作る。
できたRegionをGraphics.Clipにセットして適当に塗りつぶして塗りつぶし色でピクセル数え上げか。
それでいいならできなくはないと思う。

WPFはSystem.Drawing以下のとは別の描画ライブラリ。

583 名前:572 mailto:sage [2008/01/26(土) 22:50:39 ]
>>582

dobon.net/vb/dotnet/graphics/fillregion.html

↑のHPのやり方ですか?
キーワードでググってみたら出てきました。
とりあえずこのやり方でやってみます。
ありがとうございました。


584 名前:566 mailto:sage [2008/01/26(土) 23:35:17 ]
>>570
ありがとう

585 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 23:37:28 ]
フォントの名前からフォントファイルの名前を取得する方法ってありますか?

"MS ゴシック"->"MSGOTHIC.TTC" みたいな感じで。

586 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 23:51:31 ]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts

587 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 01:41:37 ]
以下のような任意の2つのRectがあって、

□□□□□□□□□
□□□□□□□□□ Rect1
□□□□□□□□□

         □□□□
         □□□□ Rect2
         □□□□

これを次のようにマージするには、空白部分をどうやって補完すればいいんでしょ。

□□□□□□□□□
□□□□□□□□□
□□□□□□□□□ Region1(=Rect1+Rect2+補完部分)
         □□□
         □□□□
         □□□□
         □□□□



588 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 01:45:08 ]
まず間違いなく必要なのは
「次のように」
の部分を厳密に定義することじゃないだろうか。

589 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 01:46:26 ]
書き込んでから閃いた。

Rect1のBottomをRect2のTopの位置まで下げ、新しいRect1とする。
Rect2のTopをRect1のBottomまで上げ、新しいRect2とする。

次に、新しいRect1とRect2の重なりを>>583のHPのやり方で求めると、
これが補完部分になる。

より簡単で、いろんな場合に使える方法がありましたら教えてください。

590 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 01:56:32 ]
矩形同士の重なりなんてRectangle.Intersectでいいだろ



591 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 03:09:06 ]
menustripをウインドウの上に固定するにはどうしたらいい?
今は大きい画像を読み込んで↓の方にスクロールさせると
menustripが消えてしまう

592 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 03:11:36 ]
>>591
画像を表示するパネルに一緒にMenuStripを乗っける馬鹿がいるか。

593 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 04:40:33 ]
画像処理する時処理を少しでも軽くするため
ポインタ使おうかと思うんですが
C#の流儀に反する?

594 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:04:16 ]
反しない。普通にunsafeで使え。

595 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:06:05 ]
>>593
不安ならPaint .NETのソースをunsafeでgrepしてみたら?

596 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:13:08 ]
C#のエントリポイント、なにを書くところかさっぱりわからない

597 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:30:56 ]
プログラムを開始してやりたいことを書けばいい。
イベントドリブンなプログラムなら、ハンドラを登録しまくれ。

598 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:36:39 ]
とりあえず自動生成されたのを眺めていたけどクラス(デフォだとForm1)を呼び出して起動、みたいになってる様子

その呼び出されたクラス内のコンストラクタでハンドラだとかコモンコントロール?だとかを登録してる

599 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:42:15 ]
enum型のToString()って独自定義出来ないものだろうか。
ComboBox.Itemsにするのに出し入れで変換するのが面倒くさいから日本語で要素を定義してみた。
IntelliSenseは特に問題ないけど違和感ありまくり

600 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:57:49 ]
>>599
enumみたいな構造体を自分で定義すればいいのでは?



601 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 13:28:42 ]
struct EnumWrapper<T> where T : struct {
 private T value; public T Value { get { return value; } }
 public EnumWrapper(T value) { this.value = value; }
 public static explicit operator T(EnumWrapper<T> value) { return value.Value; }
 public static explicit operator EnumWrapper<T>(T value) { return new EnumWrapper<T>(value); }
 public override string ToString(){
  ToStringAttribute[] attr = (ToStringAttribute[])typeof(T)
   .GetField(Value.ToString()).GetCustomAttributes(typeof(ToStringAttribute), false);
  return (attr.Length != 0) ? return attr[0].String : Value.ToString();}}
[AttributeUsage(AttributeTargets.Field)]class ToStringAttribute : Attribute {
 public string String { get; private set; }
 public ToStringAttribute(string str) { this.String = str; }}

enum MyEnum { [ToString("いちばん")]One, [ToString("二番")]Two, }
こんな風にするとか

602 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 14:07:34 ]
enum の要素に属性ってつけられたっけ

603 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 14:14:32 ]
フィールド扱いだからAttributeTargets.Fieldで可

604 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 14:44:51 ]
>>601
ぼやきのつもりで書いたのに、あっさりこんなコードが出てきて驚きました。
中程のreturnの行の真ん中のreturnだけ削除したと思います。
使い方にちょっと悩んだけど
初期設定で
ComboBox.Items.Add((EnumWrapper<MyEnum>)MyEnum.One);
使うときには
(MyEnum)(EnumWrapper<MyEnum>)ComboBox.SelectedItem
ですね。
ありがとうございました。

なんかC#ってなんでもできそうな気がしてきた。

605 名前:デフォルトの名無しさん [2008/01/27(日) 17:21:47 ]
質問なんですが
struct Foo{...}という構造体があって

Foo foo = new Foo(10, 20, 30);
とやる場合と
foo.a = 10;
foo.b = 20;
foo.c = 30;
では後者のほうが高速なのですか?

構造体のコピーが発生する時ってnewとかreturnとか、あと何がありますか?

606 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 17:23:29 ]
しるか。

607 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 17:38:34 ]
>>605
構造体のnewでコピーは発生してない。

608 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 17:55:59 ]
後者の方が最適化されやすい場合があるみたいだけど基本的にはほとんど変わらないみたい
Foo foo = new Foo { a=10, b=20, c=30 };はだいぶ遅い

609 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:03:13 ]
C#わかんねーな。
>560は只の基地外だと思ってスルーしてたけど、
もしかして最適化狙いかと、勘ぐってしまう。

610 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:14:35 ]
>>606>>607>>608
ありがとうございました



611 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:16:01 ]
>>556は単に図形の頂点か何かを直接書きたかっただけだろ
たまたま規則性のある例を挙げたから誤解されただけで

612 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:18:20 ]
>>608
確かにC#3.0のその構文のときはコピーが発生してるね。
妙なコードを吐いてる。構造体のときは要注意か。

613 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:58:07 ]
Foo temp = new Foo();
temp.a = 10;
temp.b = 20;
temp.c = 30;
Foo foo = temp;

になるんだっけ。

614 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:03:26 ]
>>613
それがなぜかスタック3つも使ってる。
Foo temp1 = new Foo(); 
Foo temp2 = temp1; 
temp2.a = 10; 
temp2.b = 20; 
temp2.c = 30; 
Foo foo = temp2; 

クラスだと2つなのだが。

615 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:05:12 ]
それって何が嬉しいんだろう。
クラスの場合も良く分かんないんだけど。

616 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:12:46 ]
>611
ありがとう。質問するときの参考になった。

617 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:17:31 ]
800*600の画像があったとします。
逆透視変換のためにその画像を上辺900、下辺800、高さ1000の等脚台形に変換したいのですが、
.NETのクラスを使って簡単な方法があれば教えていただきたいです。
OpenCVのアフィン変換とかになるんですかねやっぱり。


618 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:34:15 ]
>>614
初期化をatomicにするためじゃないかな。
ttp://d.hatena.ne.jp/siokoshou/20071123#p1
ttp://community.bartdesmet.net/blogs/bart/archive/2007/11/22/c-3-0-object-initializers-revisited.aspx

619 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:45:36 ]
atomicってなにwww
下の方読んで何となくわかったけど。

620 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:37:41 ]
同期のためか。
もう>>608みたいな書き方するときはパフォーマンスなんて気にするな、
ってことかな。



621 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 21:05:59 ]
>>617
うまく計算してWPFの3D機能でやるとか
ピクセルロックして頑張るとか

622 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:46:20 ]
初歩の初歩だとは思うのですが
ラベルやテキストボックスの文字列をセンターでそろえるというのはどうすればいいのでしょうか?
ググってもなにやらコードを書く必要があるような記述ばかりなんですが、プログラムから制御を
行わないとできないのでしょうか?

623 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:53:38 ]
VS使えばいいと思うよ

624 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 01:41:41 ]
へたな本読みながら一つずつ機能を知っていくより
Visual C# Express Editionと、それと一緒に入ってくるMSDNドキュメント
見ながら遊んでる方がずっとコントロール廻りは理解できるよ

625 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 01:49:40 ]
VS6.0からVS2008に移った俺はMSDNの進化に感動した

626 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 02:20:44 ]
>>622
フォームデザイナ上で、
複数コントロールを選択した状態で
ツールバー>書式>整列

最初に選択したコントロールを基準に整列してくれる。

627 名前:デフォルトの名無しさん [2008/01/28(月) 17:57:40 ]
2001のMSDNはウンコだったが2005あたりからようやくマシになった

628 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:06:23 ]
>>627
通信回線が発達してオンラインがまともに使えるようになってから
かなり使えるようになったと感じる


629 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:16:14 ]
いやローカルにインストールするライブラリのこと>>625は言ってるんだと思いますが。。

630 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:19:36 ]
オンラインなんてレスポンスが悪すぎて使ってられない



631 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:52:21 ]
おまけにブックマークしといても数ヶ月でリンク切れになるしねw

632 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:17:42 ]
MSは何故C#の匿名メソッドをレキシカルクロージャーにしなかったの?
理由分かる人いたら教えて。

633 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 06:54:59 ]
プログラマが選択できるようにしてあるし

634 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 09:54:01 ]
VC#であるプログラムを作っていて、アイコンを埋め込みたいと思いました。
そこから少し話は反れて飛びます

ソリューショネクスプローラのResources以下にicoファイルを入れ
Form.Icon = ((System.Drawing.Icon)(resources.GetObject("アイコンファイル名")));
↑このようにするとアイコンをセット出来るのではという結論に至りました

しかしコンパイルは通るもののデバッグになるとこの記述の部分でエラーが出ます

'System.Resources.MissingManifestResourceException' のハンドルされていない例外が mscorlib.dll で発生しました。

エラーはこの通りです
見たところ、アイコンファイル自体みつけられてないのか・・?と思いましたがアイコンファイル名はいくら確認しても正しいです
何が間違っているのでしょうか?


635 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 10:12:26 ]
ああ、大間違いだよ

636 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 15:24:23 ]
違うよー

637 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:12:32 ]
よく覚えてないけどソリューションエクスプローラにぶちこんだら相対指定で使えるだろうに

638 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:38:20 ]
System.Collections.Generic.List#Add が

  System.ArgumentOutOfRangeException: 容量が現在のサイズより小さい値です。

なんて投げてくるんですが、これって .NET Framework のバグですか?

639 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:41:24 ]
あーごめん。3秒で疑問が氷解。複数スレッドが一度に Add しようとしてました。すみません。

640 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:49:24 ]
>.NET Framework のバグですか?

これって見る度ネタなのかどうか理解に困る



641 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:56:09 ]
大抵はそれを本気で言ってるし言う奴は低レベルと相場が決まってる

642 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 17:01:58 ]
いや、今日初めて言ってみて、初めて言う輩の気分がわかったwwww
マルチスレッド関係はやっぱ鬼門だわ……

643 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:19:57 ]
画像処理関連で質問です。
1600*1200のbmp1があり、そのbmpの指定した座標(x,y)を支点として、
300*300のbmp2を重ねたいのですがどのようにすればいいのでしょうか。

Bitmap bmp1 = new Bitmap(filename1);
Bitmap bmp2 = new Bitmap(filename2);
bmp1.Add(x,y,bmp2);

のような感じでできないのでしょうか?
BitmapクラスとImageクラスのメンバをオブジェクトブラウザで眺めてみましたが、
そのようなメソッドを見つけることができませんでした。
GetPixelしてSetPixelするという操作を全量に対して行うしかないですか?

644 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:23:14 ]
>GetPixelしてSetPixelするという操作を全量に対して行うしかないですか?
それでもいいし
bmp1のGraphicsを取得してそれでbmp2をDrawImageしてもいいよ

645 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:48:46 ]
そしてIndexedなBitmapという落ち

646 名前:643 mailto:sage [2008/01/29(火) 18:56:08 ]
>>644
ありがとうございます。
追記になりますが、その画像をjpegで保存したいと思っています。
描画にGraphicsクラスを使ったことはありますが、描画した画像を保存したことがありません。

DrawImageして出来上がったGraphicsクラスのインスタンスを使って
画像保存をすることはできますか?

647 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:01:30 ]
>>646
Image.Save

648 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:19:09 ]
>>647
は?

649 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:51:18 ]
は?じゃないが

650 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:57:34 ]
>>648
知らないならレスすんな



651 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 20:20:33 ]
Graphicsクラスのインスタンスでは出来ないが、Graphicsには描画対象となるImageなりなんなりが必ずあるので、そっちの機能で保存すればOK

652 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:41:01 ]
pictureboxより大きい画像を表示したばあい、スクロールバーを自動で表示したいけど無理ですか?

653 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:42:04 ]
Panelに入れればいいだろ

654 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 22:19:46 ]
kami

655 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 09:47:31 ]
どーんと行こうや

656 名前:デフォルトの名無しさん [2008/01/30(水) 10:13:51 ]
こんにちは

ToolStripMenuItemのAllowDropをtrueにしてもOnDragEnterのイベントがきません

MenuTripだと正常にイベントがきます

何かご存知な方がいましたら
教えて頂けると助かります。

よろしくお願いいたします。

657 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:22:37 ]
自分でイベント追加したら?

658 名前:656 [2008/01/30(水) 13:52:55 ]
デリケートでイベントを追加しましたが
うまくいきません

開発環境はvs2005、vistaです

659 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 14:09:18 ]
似たような質問どっかで見たな。ここか前スレだったかなー

660 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:07:19 ]
前スレ945ぐらいかな




661 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:43:09 ]
ユーザーコントロール作ってみた
で、完成度が高くなったので
コントロールライブラリにしようと思ってDLL作ったんだが
このDLLの使い方がわからない漏れはどうしたらいいですか?

662 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:06:19 ]
完成度低いから心配いらないよ

663 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:50:37 ]
我々の社会って連呼かよ
中国って何回言った? 死ねや

664 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:51:01 ]
誤爆スマソ

665 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:00:37 ]
プログラマにもネトウヨ君っているんだね
まあ近頃は一口にプログラっていっても知的水準はいろいろだからなw

666 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:05:35 ]
プログラマ(笑

667 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:10:34 ]
>>665
>>663をネトウヨって言ってる時点でチョンか学生だな

668 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:19:22 ]
うんチョンで学生でいいよ別に。
で「チョン」って何ですか?
ネトウヨ君の仲間うちで通じる「ヲタ用語」みたいなもの?w

669 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:26:07 ]
他所でやれ

670 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:30:06 ]
PGはリベラル派が多いんだろうな。



671 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:39:32 ]
「PG」だと微妙かもなw

672 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:42:32 ]
>>665は例の餃子たべちゃったんだよ。
そっとしといてやろう……( -人-)

673 名前:デフォルトの名無しさん [2008/01/30(水) 22:12:15 ]
餃子とか右翼の話は他でやれよ
スレタイ読めないバカども

674 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 01:36:36 ]
フォームの位置とか状態(最大化、最小化とか)を次回起動時に復元しようと
プロパティのApplicationSettingsからLocation, ClientSize, WindowStateを保存するようにしたんだが
なんか挙動がおかしい。
最大化ボタン押しても最大化しなくて何故か位置が変わったり。
なんでだろう。

675 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 01:46:31 ]
なんでだろうね。

676 名前:656 mailto:sage [2008/01/31(木) 02:04:44 ]
前スレ945とは症状が違うようです。
ファイルのドラッグ&ドロップなら私の環境でも問題ありません。

Googleで探してますが、なかなかヒントが見つかりません。

677 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 08:20:44 ]
TreeViewの中身を保存しようとしています。
TreeView.Nodes[0]をBinaryFormatter.Serializeで保存し、
読み込みはBinaryFormatter.Deserializeした結果をTreeView.Nodes.Addすることで一応実現できました。
ただこの方法だとツリーの展開状態と選択状態が復帰できません。

現時点ではTreeNodeと下のクラスが混在しているのですが、
TreeNode自体ではなく、TreeNodeから派生させたクラスを使うようにして
そのクラスのDeserializeで展開状態とかを一旦内部フィールドに保存して、
TreeViewに追加した後に復帰させるしかないかなと思っているのですが
もっと良い方法があるのでしょうか?

[Serializable]
public class TVKeyword : TreeNode
{
  public TVKeyword() : base() {
  }
  protected TVKeyword(SerializationInfo serializationInfo, StreamingContext context) : base(serializationInfo, context) { }

  protected override void Deserialize(SerializationInfo serializationInfo, StreamingContext context) {
    base.Deserialize(serializationInfo, context);
    Keyword = serializationInfo.GetString("Keyword");
  }

  protected override void Serialize(SerializationInfo si, StreamingContext context) {
    base.Serialize(si, context);
    si.AddValue("Keyword", Keyword);
  }

  public string Keyword { get; set; }
}

678 名前:677 mailto:sage [2008/01/31(木) 09:06:37 ]
保存されたファイルを眺めていたら、
どうやら展開状態はそもそもシリアライズされていないように見えます。
派生クラスを作ることにしました。失礼しました。

679 名前:643 mailto:sage [2008/01/31(木) 10:26:47 ]
>>647-651

ここの回答者はOOPというものが全く分かっていないのか?
Graphicsクラスのインスタンスを使わないで、どうやってGraphicsクラスの
インスタンスメソッド(DrawImage)で描画しようとしているオブジェクトを保存するんだ?

>Graphicsクラスのインスタンスでは出来ないが、
>Graphicsには描画対象となるImageなりなんなりが必ずあるので、
>そっちの機能で保存すればOK

実際にコーディングしてみましたか?
どう考えても、Graphicsオブジェクトを作成するときに使っただけのImageオブジェクトが、
インスタンスメソッドであるDrawImageによって変更されているはずがない。
DrawImageの引数にImageオブジェクトが参照渡しで渡されているのならば別だがね。

だからこそ>>643のように質問しているわけなのだが。

てっきりGraphicsオブジェクトがメモリ上に保持しているGDIビットマップオブジェクトのハンドルを
取得して云々とかそういうアドバイスがくると思っていたのに、見当違いな回答しかこない。
挙げ句の果てに>>650のようなアホまで出る始末。分かってないのはどっちだと・・・

680 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:40:53 ]
>>643みたいなアホな質問してる割には偉そうだなw



681 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:47:10 ]
>>680

>>643の質問が低レベルなのは十分承知の上だよ。
でもそれにたいする回答者が見当違いのアホ回答をしてきたからこそ噛みついているわけで。
少なくともあいつらよりは分かっているつもりだが。

もしもGraphicsクラスを使わずに、かつImageオブジェクトで泥臭い全量ループすることなしに、
他のアプローチでもっと簡単に実現できる方法があるのであれば、是非ご教授願いたい。

682 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:55:08 ]
>>679,681
心底意味が分からん。
ベースとなるBmp1から作ったGraphicsを使ってBmp2をDrawImageするだけじゃん。

683 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:57:17 ]
何をぶち切れてるのか知らないけど、下のコードでtest.jpgは黒く塗り潰されたよ。
ImageもGraphicsも触ったのは初めてだけど、MSDNライブラリ見てったらすぐにサンプル見つかったよ。
Graphicsクラスの概要に「イメージ、ビットマップ、アイコン、およびメタファイルの操作」ってリンクがあるから
そこの「方法 : 実行時にビットマップを作成する

Image imageFile = Image.FromFile("sample.jpg");
Graphics newGraphics = Graphics.FromImage(imageFile);
newGraphics.FillRectangle(new SolidBrush(Color.Black), 100, 50, 100, 100);
newGraphics.Dispose();
imageFile.Save("test.jpg");


IDない板だし「は?」とかだけじゃ誰が何を言いたいのかさっぱりわからない。
はたから見てるとどういうやりとりなのか全くわからなかったから、スルーしてたんだよ。

ちゃんと誰で何を言いたいのかわかるようにしてたら、とっくに解決してたと思うけどね。

684 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:57:55 ]
>>681
>>643の質問内容より十分理解できる回答を見当違いといっている時点で、低脳杉。

685 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:00:16 ]
>>679
>>681
>どう考えても、Graphicsオブジェクトを作成するときに使っただけのImageオブジェクトが、
>インスタンスメソッドであるDrawImageによって変更されているはずがない。

何に怒ってるのかわけ分からん。

>>682
>ベースとなるBmp1から作ったGraphicsを使ってBmp2をDrawImageするだけじゃん。

だな。

Bitmap bmp1 = new Bitmap(filename1);
Bitmap bmp2 = new Bitmap(filename2);

using (Graphics g = Graphics.FromImage(bmp1))
{
  g.DrawImage(bmp2, x, y);
}

これでbmp1の中身が変更されるはず。
bmp1.Save("check.bmp");
あたりで確認できるかな。

686 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:16:39 ]
まあ今から棒グラフみたいなものを書きたかった、描画知識0の俺には
ちょうどいい話題だったぜ。

687 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:27:55 ]
ごめんなさいはマダー? (・∀・ ) っノシ凵 ⌒☆チンチン

688 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:30:33 ]
質問がネタに見えて仕方が無い。質問主はこれ試してみろ。
>>683>>685Save()メソッドはデフォルト.png保存じゃなかったっけな?


using System.Drawing;
using System.Drawing.Imaging;

class Hoge{
static void Main(){
Image img1 = Image.FromFile("1.jpg");
Image img2 = Image.FromFile("2.jpg");
Graphics g = Graphics.FromImage(img1);

g.DrawImage(img2,100,100,200,200);

img1.Save("hoge.jpg",ImageFormat.Jpeg);
}
}

689 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:49:22 ]
お前らの優しさは南半球まで響き渡るわ。

690 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:22:41 ]
>>681
>Graphicsクラスを使わずに
なんか初め>>643から新しく条件加わってるけど、何でGraphicsクラス使ったらいけないんだ?
Graphicsクラスでやりたいことが楽にできるのに、わざわざ自分で新しく作る必要ないだろ?



691 名前:651 mailto:sage [2008/01/31(木) 12:24:16 ]
>>643
だからよう、Graphicsクラス自体は描画機能を持っているだけで、描画対象は別に必要なんだよ。
だから、描画対象となるオブジェクトを指定せずにGraphicsクラスのインスタンスを作成出来ないようになってるわけ。
Graphicsクラスのインスタンスメソッドを使用して実際に変更されるのは描画対象オブジェクトのほう。

>>688
指定した拡張子に対応するImageEncoderがあれば、自動的にその形式で保存されるはず。

692 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:32:02 ]
>>679
こっちはコード書いたことあるからわかってんだよ
それで動かないってどんな糞コード書いたんだよ
晒してみろよ
アホすぎて生きてる価値ないんじゃね

693 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:36:48 ]
なるほど、このスレでは横柄な態度で質問したほうが答えが付きやすいってことだな

694 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:38:33 ]
>>681
> もしもGraphicsクラスを使わずに、かつImageオブジェクトで泥臭い全量ループすることなしに、 
> 他のアプローチでもっと簡単に実現できる方法があるのであれば、是非ご教授願いたい。
bitmap

695 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:41:13 ]
>>643にたいして>>644で答えが出ているというところが恐ろしい

696 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:42:27 ]
横レスだけど正直>>643の切れ方は意味がわからないな。
いきなり「オブジェクト指向が〜」とかキレてるのよんでリアルでコーヒー吹いちゃったよw

というか、適当にレスを拾い読みした感じでは、>>643はWinの描画の考え方っていうか
デバイスコンテキストって概念を知らないんだと思う。

まあ最近の.NET用の入門書はこのあたり解説してないのが多いと思うから無理もない。

697 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:45:06 ]
たぶんさ、PC-98時代のビットマップスクリーンと同じ発想で
Winのグラフィックも考えてるんだろうね。
だとしたら結構年長のオジサマなんだと思うよw

698 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:47:58 ]
いやこれどうみてもガキだろ

699 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:54:09 ]
>>679の一番痛いところは
> Graphicsクラスのインスタンスを使わないで、どうやってGraphicsクラスの 
> インスタンスメソッド(DrawImage)で描画しようとしているオブジェクトを保存するんだ?
ここ
描写しようとしているオブジェクトは Graphicsクラスのインスタンス となんら関係がない
勝手に持ってろって話

700 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:57:59 ]
ここまで能無しだと釣りに思えるんだが・・・
本気でこんな事言う人間が居るのか?



701 名前:643 mailto:sage [2008/01/31(木) 13:16:43 ]
ごめんなさい

702 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 14:09:14 ]
それだけ?

703 名前:643 mailto:sage [2008/01/31(木) 15:53:11 ]
全面的に私が悪かったです。
これまでの暴言を心よりお詫び申し上げます。
何卒お許し下さい。

経緯及び結果を説明します。
>>617=>>643=>>646=>>648です

流れとしては、1600*1200の画像から台形補正をするために、
1600*1ずつ切り取っていって、それを目的の等脚台形にするために横にのばして
貼り付けていくという手法を試みたのです。

画像処理は初めてだったので、>>643の質問をしてみました。

Graphicsクラスを使って実現するためには、Graphicsクラスのメンバ変数にImageオブジェクトが
格納されていなければならないと思いこんでいました。←勘違い

実際は、
Graphics newG= Graphics.FromImage(img);
この引数で渡されたImageオブジェクトをGraphicsオブジェクトがPrivate変数で保持していて、
それに対して処理を行っているということなんですね。
だから引数で渡されたオブジェクトそのものが変更されると。
値型との区別が付いていなかったようです。←低脳

ということで、結果としてはやりたいことができました。
以下にコードを記します。


704 名前:643 mailto:sage [2008/01/31(木) 15:55:34 ]
using System.Drawing;
using System.Drawing.Imaging;

class Hoge
{
  static public void Main()
 {
   int newX = 3200;
   int newY = 3200;
   Image bmp = new Bitmap("input.jpg"); //画像読み込み[1600:1200]
   Image newbmp = new Bitmap(newX, newY); //編集後イメージ(等脚台形格納用)
   Image tmpbmp = new Bitmap(newX, bmp.Height); //編集作業用イメージ(台形格納用)

   RectangleF destRect = new RectangleF(0, 0, 0, 1);
   RectangleF srcRect = new RectangleF(0, 0, bmp.Width, 1);
   Graphics newG = Graphics.FromImage(newbmp);
   Graphics tmpG = Graphics.FromImage(bmp);
   Point[] pt = new[]
   {
    new Point(0, 0),
    new Point(newX, 0),
    new Point((newX + bmp.Width) / 2, newY)
   }; //等脚台形変換用平行四辺形の3頂点


//続く

705 名前:643 mailto:sage [2008/01/31(木) 16:02:49 ]
//続き


int tan = (newX - bmp.Width) / bmp.Height; //台形積分計算用

//台形作成用ループ
for (int i = 0; i <= bmp.Height; i++)
{
  srcRect.Y = i;
  destRect.Y = i;
  destRect.X = newX - i * tan;

  //tmpbmpに貼り付けていく
  tmpG.DrawImage(bmp, destRect, srcRect, GraphicsUnit.Pixel);
}

//tmpbmpの保存
tmpbmp.Save("tmp.jpg", ImageFormat.Jpeg);

//等脚台形に変換してnewbmpに格納
newG.DrawImage(tmpbmp, pt);

//jpgで保存
newbmp.Save("output.jpg", ImageFormat.Jpeg);

//終了処理
tmpG.Dispose();
newG.Dispose();
newbmp.Dispose();
tmpbmp.Dispose();
}
}

706 名前:643 mailto:sage [2008/01/31(木) 16:06:46 ]
補足ですが、この台形補正では逆透視変換は実現できませんでした。
こんな単純なアルゴリズムで実現できるはずがないということにもっと早く気づくべきでしたかね。

結局OpenCVの力を借りて実現する方法にしたいと思います。
Cの勉強しなくては・・・
.NET脳の私には頭が痛いです。

707 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 16:27:03 ]
     ,.――――-、
     ヽ / ̄ ̄ ̄`ヽ、        勇者トンファーパーマン惨状
      | |  (・)。(・)|
      | |@_,.--、_,>         俺が着たからにはもう色々と駄目だ
      ヽヽ___ノ          
        /:::::::::::::::::l   /77
       /::::::::::i:i:::::::i,../ / | 
       l:::/::::::::i:i:::、:::/ / |  
       l;;ノ:::::::::::::::l l;.,.,.!  |  
        /::::::::::::::::l/ /  冂 
       /:::::::;へ:::::::l~   |ヌ|
      /:::::/´  ヽ:::l   .|ヌ|  
      .〔:::::l     l:::l   凵
      ヽ;;;>     \;;>

いろいろつっこみたいけど、とりあえず
www.google.co.jp/search?num=20&hl=ja&rlz=1T4GGLJ_enJP208JP208&q=C%23+Graphics+Trapezoid&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja


708 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 16:47:03 ]
本当に初心者な質問で恐縮なのですが……

Windowsアプリ(VC#2005)で、XMLとCSVから読み込んだデータをDataGridViewに表示させようとしています。
そのときのバインド方法なのですが、下記の2パターンの差がわかりません。
BindingSourceのデータソースとして(DataTableではなく)DataViewを使用するメリットって何かありますか?

DataTable→DataView→BindingSource→DataGridView
DataTable→BindingSource→DataGridView

709 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 17:06:44 ]
DataTable.DefaultView以外のDataViewを使える

710 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:04:08 ]
C#でスタック関係の直接操作ってできますか?



711 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:05:41 ]
なんでスタックなんか弄りたいんだ?

712 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:17:07 ]
関数のカリー化を実装したいとか

713 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:17:58 ]
それならdelegateでいいだろ

714 名前:710 mailto:sage [2008/01/31(木) 18:22:59 ]
うまく説明できないのでまとめると
ウィルスチェックってどうなってるんだろう?
→全ファイル走査するにはどんなやり方がスマートなんだろう
→再帰処理を使って全部辿るのがベターらしい
→なんだか重くなる
(ここら辺から迷走気味)
→コールスタックとかを知る
→すたっくおーばーふろー・・?
(本格的に迷走)
→スタックを直接操作できればどうにかなるんじゃね?

こんな感じです
質問をするにもどう質問すればいいかわからず>>710のような具合で質問しました

715 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:29:04 ]
再帰処理をほぐす、すなわち、

再帰処理で、保存・復帰してる情報(今探索してるフォルダの情報)を、
インスタンス変数にリストか何かで保持するようにして、そのリストで、
保存したり取り出したりして、本体はループになるように書き直す、
というのがだいたい定番。

ファイルシステムの場合、親フォルダを ".." で探せることを利用すれば、
そういう面倒なことをしなくてもうまくいくかもしれない。

716 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:30:34 ]
吹いたw

とりあえず重くなる原因を確認したほうが良いよ

717 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:30:59 ]
再帰関数でローカルな変数が多すぎなら、
関数を何とかする手もある。

718 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:31:54 ]
そもそも再帰の脱出条件ミスってて、無限に掘ってるかもしれんなw

719 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:35:02 ]
>>715
つまり再帰処理を行う回数を最初に逆算しておくってこと、かな
ディレクトリの階層数があって更に木構造のように枝分かれしていくのを考えると
すごく大変そうですがちょっと調べつつがんばってみます・・・

>>716-718
しっかり終了はするんですが、時間が経つとだんだんと重たくなってきます
CPU使用率の方が、他アプリケーションをがんがん使うと結構きつくなったりするようです


720 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:36:50 ]
お前のパソコンはウィルス検索中に他アプリケーションがんがん使ったら重たくならないか・・?

うちのノートン先生は重たくなる



721 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:39:22 ]
>>719
> つまり再帰処理を行う回数を最初に逆算しておくってこと、かな

「配列」じゃなくて「リスト」って書いた意味を汲んでくれないかな...

722 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:42:53 ]
>>709
なるほど! ありがとうございました。

723 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:44:13 ]
・探索中にサブディレクトリを見つけたら、現在の状態をスタックに積み上げて、
 サブディレクトリの探索を開始する。
・現在のディレクトリの探索が終了したら、スタックから状態をとってきて、
 そのディレクトリの探索を再開する。
・スタックが空になったら終了。

何も難しいことはない。

724 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:48:28 ]
再帰をループにするときはスタックに変数を入れるんじゃなかったっけ。

725 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:49:05 ]
Directory.GetFiles(@"c:\", "*.*", SearchOption.AllDirectories);
とかじゃだめなのか?

726 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:49:13 ]
あ、かぶった。

727 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:50:23 ]
>>725
あんまり変なことを教えるなよ…

728 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:54:15 ]
>>725
それだとXP以降のOSではシステムフォルダを検索しようとして権限がないので例外が発生する。
また拡張子のないファイルが取得出来ない。

729 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:57:45 ]
コールスタックの知識自体に間違いがあると問題なのですが、
再帰呼び出しをするからスタックが溜まっていってしまうのであって
ループで何度も何度も呼び出す分には問題ないのでしょうか?

>>721
すみません調べてみます

>>723
やってることは同じなのは感覚として掴めました
しかし全然想像つかないです、じっくり考えてみます

>>725
調べていてDirectoryInfoとかそういうのは見つけました
.GetFiles()とかは使っていましたが引数渡すのは試してないです
ちょっとやりたいことがやられちゃう感じなので今回はパスでお願いします

730 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:02:47 ]
関数を呼び出すたびに、その時点の実行状態がコールスタックに積み上げられる。
しかし、コールスタックは小さいから、すぐに溢れる。
だから、再帰呼び出しをループに展開する。
そのときには、もとと同じようにスタックを使って実装すると楽。



731 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:12:04 ]
コールスタックについて学ぶのは良いことだけどさ、

たかがコールスタックが増えたごときで動作は遅くならん。
ましてやディレクトリの深さが 1000 や 2000 も無いかぎり溢れるなんて。

732 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:13:27 ]
どうでもいいかもしれないけどファイル階層列挙場合はQueueの方が好きかなあ
並び的に

733 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:49:26 ]
>>730
つまり関数の中で関数が呼ばれてその中で更に・・・みたいのだとあふれちゃうんですよね
スタックはC++でクラスを勉強する時にそういう構造を作ってみた記憶があるので
やってみようと思います

>>731
ですよね・・ちょっと1から作り直してみます

ありがとうございました、助かりました

734 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:56:24 ]
それにしても良い子であった

スタックの実装にArrayListを使ってくれればいいけど

735 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:06:27 ]
>>734
なんで”Array”Listなん?

736 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:16:56 ]
Stack<T>でおk

737 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:39:51 ]
.NETってどうしてもっさりなん?

738 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:59:41 ]
メモリ大量に積んだvista使ってから言え!
ってゲイツが言ってた

739 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:02:21 ]
32bitCPUだといまのメモリで限界だろ(2GB)

740 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:04:38 ]
つーか、スタックぐらい自分で作ればよくね?



741 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:46:08 ]
Expression Treeって面白いな
時々話題になるT Multiply<T>(T left, T right)みたいなのも簡単に作れる

742 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:57:21 ]
Mapが見当たらないので作ってしまったが,拡張性高いのはいいなC#

static class Extension {
    public delegate Y MapFuncor<X, Y>(X item);
    public static IEnumerable<TDst> Map<TSource, TDst>(this IEnumerable<TSource> source, MapFuncor<TSource, TDst> functor) {
        foreach (TSource s in source) {
            yield return functor(s);
        }
    }
}

743 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:00:26 ]
Enumerable.Selectでいいだろ

744 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:37:36 ]
>>743いまわかた^p^

745 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:29:50 ]
.netもっさりとか言ってるやつはどんなボロいPC使ってるん?

746 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:33:35 ]
.netもっさりって気分は分からんでもない。
結局は結構windowsのAPI使用することが多いし。
何のための.netなんか分からんときがある。

747 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:36:31 ]
それでも楽じゃん。

748 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:42:18 ]
>>745
Athlon64 3500+ですがもっさりです

749 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:46:47 ]
それじゃあたりまえ。

750 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:58:33 ]
どれ位のCPU使うともっさりしなくなりますか?



751 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:04:34 ]
>>750
ヅアルコア

752 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:06:00 ]
>>748
日ごろのメンテナンス次第でいくらでも遅くできるよ

753 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:13:31 ]
Pen4とかでも、チューニング次第じゃそこそこ動くんじゃね?

754 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:24:18 ]
今Core2Duoを買う金がないのでAthlon64 X2にでもしてみます。
あの重い2005が軽くなるなら。

755 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:26:14 ]
メモリ搭載量の方が重要

756 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:30:04 ]
今AMDは駄目だろ。

757 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:30:50 ]
メモリ3G詰め込めばOK

758 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:31:20 ]
2G積んでます。
それと2度目以降の起動はキャッシュが効いて速いです。
よく見ると2005自体にNTFS圧縮が掛けてあるみたいです。

759 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:32:42 ]
>>754
OS入れなおしだよ

760 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:32:50 ]
常駐プロセスいくつあるよ?



761 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:33:28 ]
>>756
安いのならコストパフォーマンス高いんじゃね?
15k以下のラインで

762 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:35:52 ]
>>759
それやっても大して変化なかったです。
>>760
42個です。極力いらないものは切っています。


763 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:36:36 ]
NTFS 圧縮のせいじゃね?

764 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:36:49 ]
4万だせばX2 4000+でGeForce6150のケース付きが変えます。
メモリは別ですが今は5000円あればお釣りが来ますので。

765 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:37:53 ]
>>763
わかりました。やはりNTFS圧縮のせいでもっさりなのかもしれません。
WordやExcelにもNTFS圧縮掛けていますがもっさりしませんけど。
あとC++Builder2007にも圧縮掛けてありますがもっさりしません。

766 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:38:19 ]
中間ファイルに圧縮かかってたらもっさりしそう

767 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:38:44 ]
CPU : pentium4 3ghz 
mem : 256*2

これでも十分。

768 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:39:52 ]
>>764
4万出してそれはないわ。

769 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:40:09 ]
>>767
えー
やっぱりNTFS圧縮のせいっぽいですね。
他に原因が思いつかない。

770 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:40:15 ]
おまえらPC自作板かよ



771 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:41:44 ]
今思い出しましたが2003の時はNTFS圧縮を掛けてなかったのでか
もっさりしてませんでした。
さっそく圧縮を解除してみます。これでだめなら本格的にPCの交換を
考えます。

772 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:42:56 ]
俺NTFS圧縮掛けてない
ちなみにCドライブは80GB

773 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:51:56 ]
>>762
常駐多すぎ
ノートンいれて起動時に30切るくらい、スタンドアロンで20弱くらいで

774 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:54:39 ]
>>773
30個?どうやったらそんなに少なくなるんだろう。
WinampエージェントとかDaemon Toolsとか切るしかないか。

775 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:55:32 ]
俺今3GBだけど起動直後で60個くらいあるわ・・・
しばらく前までは1GBで常駐プロセスとか気にしてたんだが・・・

776 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:56:42 ]
60は多すぎ。

777 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:58:40 ]
ちなみに仮想メモリは切ってある

778 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:59:39 ]
変態的にカスタマイズし過ぎかと

779 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:59:55 ]
>>774
デーモンとかwinampは関係ないだろ・・・切れよ・・・

780 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:01:19 ]
>>779
切りますか・・・・



781 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:02:33 ]
msconfigして、スタートアップとサービスから
マイクロソフトとセキュリティ関係のやつ全部とめて
デーモンバスターいれて、不要なwindowsプロセスとめるといいよ

782 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:03:08 ]
それくらいはやってるが

783 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:03:48 ]
ituneHelperとかなめてるよな。


784 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:04:24 ]
QuickTimeのおそろしさは異常

785 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:05:14 ]
まったくだw

786 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:06:03 ]
それ考えるとAcronis True ImageとDiskeeper2007入れてるのが
痛いかもなあ。

Acronis True Imageは定期的にバックアップ取るので仕方ないとして
Diskeeperはバックグラウンドでデフラグするので止めた方がいいのかも。
でも何かやってる間はデフラグ止めてくれるんだけど。

787 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:06:46 ]
>>784
QUick Time Alternative入れてます。

788 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:08:34 ]
>>787
賢いな

789 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:14:54 ]
なんか話がスレとかなり違ってきている。



790 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:15:14 ]
コーデックそのものがffdshowしか入れてないので・・・・って
だいぶスレチになってきました。



791 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:15:36 ]
こういう話なら敷居が低くなるから盛り上がる

792 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:35:50 ]
うんこな話題にハエがよって来てるだけだろ

793 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 02:05:46 ]
そのうんこをためらいなく踏み潰す >>792。かっこいー!

794 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 03:01:02 ]
開発環境は「できるだけ」素のOSっぽくしときたいよな

795 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 03:07:05 ]
まっさらなHDDにOSだけ入れればいいんじゃね?

796 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 03:10:54 ]
でもそれだと不便だよ
最低限便利なファイラとか解凍ソフトが欲しい

797 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 03:12:28 ]
おまえら学生とかアマグラマ?

798 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 03:59:14 ]
cvsサーバーが必要だよな

799 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 04:47:17 ]
>>798
どこの古代人だw

800 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 04:55:18 ]
Windows専用ソフトならWin標準GUI使って欲しい

正直.NET快適、Javaは起動以外快適、動作はもっさり
.NETがもっさりするPC使ってみてえ
Win98時代のが残ってるけどそっちはHDD小さすぎてなんもできないしな



801 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 05:10:56 ]
日本語でおk

802 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 05:28:12 ]
常駐起動時50くらいだしStylerとか入れてるがすいすい起動する
ブートファイルデフラグを何回かやっていくと起動が目に見えて早くなることがあるから
ブートファイルデフラグ→再起動繰り返しでちょくちょく様子みてる

803 名前:デフォルトの名無しさん [2008/02/01(金) 11:10:58 ]
.NET2.0のMDIアプリで親フォームと子フォームの両方にToolStripPanelを付けたのですが、
なぜか、この親子間でToolStripPanelのドッキングツールバーが移動できていまうのですが、
両者のツールバーは全く意味が違うツールバーなので移動できないようにしたいのですが、
どうすればよいでしょうか?

804 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 15:14:59 ]
何故そんなことをする必要があるのかは抜きにして、
labelに表示してある文字列をstring型で再取得する方法ってあるのでしょうか?

805 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 15:36:10 ]
label.Text

806 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 15:42:40 ]
その方法だと表示してある文字列じゃなくて
"label1"という文字列を取得してしまうのですが・・・やり方が悪いのかな

807 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 15:46:41 ]
それはlabelにlabel1って入ってるんじゃないの

808 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:04:34 ]
すみません、情報が小出しになってしまって。

DateTime nitiji = DateTime.now;
label1.Text = nitiji.ToString("d");

これでlabel1に「2008/2/1」って表示されてるとしたら
label1に表示されている"2008/2/1"ってのを
文字列で取得したいんです。(nitijiを使わずに)

これがやりたいんですが、出来ますか?

809 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:06:09 ]
いや、だからlabel1.Textだって

810 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:06:15 ]
小出しにするやつは相手にしない



811 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:06:16 ]
>>808
>>805

812 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:12:50 ]
labelに表示するタイミングとlabelの文字列を取得するタイミングが
後者の方が早くなってしまっていたみたいです。
最初から正解を教えていただいていたのに申し訳ありませんでした。
>>805さん、807さん、809-811さんありがとうございました。

813 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:28:39 ]
人の悩み所って色々あってすごいね・・

814 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:30:34 ]
最近C#を習い始めてまだよく分からないのですが、
学習本の中にはインターフェイスを定義するとき、

public interface Itest {

}

と、インターフェイスの先頭にpublic修飾子を付けているものがあります。
本の中で詳しく解説されていないのでよく分からないのですが、
このpublicを付ける場合と付けない場合とでは、何か違いがあるのですか?


815 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:33:22 ]
>>814
publicでアセンブル(DLL)の外部から使える。
何もつけない場合はinternalで内部のみで有効。

816 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:48:56 ]
>>815
素早い解答有難う御座います。
なるほど、デフォルトではinternalとなるのですか。
分かりました。

817 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:20:21 ]
挫折するタイプだな。


818 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:21:13 ]
すみません。質問いいですか?

サーバーに置いたC#のexeってそのままじゃクライアントから起動できないんですか?
セキュリティ関係なんでしょうか。。。。

誰かお力をお貸しください

819 名前:818 mailto:sage [2008/02/01(金) 19:22:40 ]
すみません。ローカルサーバーです。

言葉が足りませんでした

820 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:24:27 ]
サーバーソフトは?



821 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:25:41 ]
どちら側のCPUを使って処理するかによるんじゃないの?

822 名前:818 mailto:sage [2008/02/01(金) 19:26:58 ]
んー、すみません・・・
知識不足で理解できません・・・

\\hogehoge\\hore\foreって感じのパスになるんですが。

本当にお世話掛けます。すみません

823 名前:818 mailto:sage [2008/02/01(金) 19:28:01 ]
×\\hogehoge\\hore\fore

○\\hogehoge\hore\fore

でした

824 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:30:51 ]
パスとか何の役にも立たない情報を提供されてもw
ちなみに hoge の次は fuga, piyo と続く。

825 名前:818 mailto:sage [2008/02/01(金) 19:31:52 ]
>>824
wすみません><

> fuga, piyo
これ信じていいんですか?

826 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:32:23 ]
ここまでの情報で言うと
おそらくSequrityExceptionが発生して終了かと

827 名前:818 mailto:sage [2008/02/01(金) 19:34:34 ]
>>826
会社でちょっとしたツール作ってるんですけど
会社で2chはまずいので自宅から書き込みです。

。。ですので詳細を説明する事ができないのが申し訳ないのですが・・・・

828 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:34:44 ]
そもそもC#じゃなくても実行ファイルは・・・・・・・・・・・起動できるの?
かなり危険だよね。

829 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:38:56 ]
C#でサーバに置いたファイル、ということならクリックワンス使うのがいい気がするな

830 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:39:35 ]
.net言語は一度中間言語に直してから必要な部分をそのつどコンパイラして実行しているわけですよね?
これをサーバー側のpcのcpuで行ってデータだけをユーザー側に送るなら、サーバーのPCに対してユーザーにアクセス権?を与える必要があるんじゃないですか?





831 名前:818 mailto:sage [2008/02/01(金) 19:39:38 ]
>>828
!!
・・・・なるほど。そういうもんなんですかぁ・・・
こちらの住人さんがおっしゃるなら正しいと思います。(本気ですよ)

ありがとうございました。そしてお騒がせしました

832 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:41:17 ]
>>831
いや、聞いているんですけどね・・・・・・・・・・・・・・・・

833 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:42:14 ]
実行ファイルをを CGI に使うのはわりと普通だよ。

834 名前:818 mailto:sage [2008/02/01(金) 19:42:43 ]
> .net言語は一度中間言語に直してから必要な部分をそのつどコンパイラして実行しているわけですよね?

なるほど!目からウロコです。そうですよね、JITコンパイルするのは
サーバー側になってしまいますよね。

んー簡単に考えていた私が浅はかで恥ずかしいです><

835 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:44:16 ]

クリックわんこで解決。

836 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:44:57 ]
>>830
\\hoge~.exeでクリックすると実行されるFWはローカルじゃなかったかな
でもセキュリティ例外が出るので鯖での権限設定は必要だったかと

・・・あきらめてEXEばら撒いたので解決策はよくわからない^^

837 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:47:26 ]
webブラウザが要求してプログラムを起動させるんですよね?


838 名前:818 mailto:sage [2008/02/01(金) 19:47:36 ]
すみません。会社から呼び出しが掛かってしまいました・・・・・・・

もし宜しければ色々と情報をお教えいただけると助かります。

クリックわんこも自分なりに調べてみますね


・・・・・・んでは行ってきますorz

839 名前:818 mailto:sage [2008/02/01(金) 19:48:50 ]
>>837
あ、すみません。サーバーフォルダのexeをショートカットで直に叩くつもりなんです

840 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:49:06 ]
クリックわんこが気になる・・・・・・・・・・・・・



841 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:58:56 ]
会社から2chで質問って・・
MSDNフォーラムにでも行っとけまじで。

つかその状態ならクリックワンス配信だろJK

842 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 20:00:22 ]
たしかにClicOneceに可能性がある。
すごいなC#・・・・・・・・・・。

843 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 20:10:02 ]
ClickOnceでは、配置時のオプションとして、アプリケーションを配布(=デプロイメント)する方法を、次の2種類から選択できる。

(1)ローカル環境へインストールするモード(オンライン/オフライン・モード)
(2)ネットワーク上から起動するモード(オンライン・モード)

(2)だね。
参考に張っておきます。
www.atmarkit.co.jp/fdotnet/clickonce/clickonce02/clickonce02_01.html



844 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 20:43:51 ]
Func<>でパラメータにvoidを指定したいのですけどどうやるのでしょうか?
voidってかいたらだめだといわれました.

845 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 20:53:42 ]
何故コードとエラーメッセージを書けないのか、頭がおかしいのだろうか

846 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 20:55:07 ]
>>844
読み取りも書き込みもできない型なんてあるだけ無駄だからコンパイラさんがエラー吐いてくれてるんだとおもえ

847 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 21:00:36 ]
>>844
型引数無しのActionを使え

848 名前:844 mailto:sage [2008/02/01(金) 21:02:23 ]
Actionなんてのもあるのですね.これまで見たのがFuncだけだったのでこれしか知りませんでした.
ありがとうございました.

849 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 21:17:57 ]
Sequrity とか Onece とか……一体このスレはどうしちゃったんだ

850 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 21:21:09 ]
Let's Engrish with me!



851 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 21:36:37 ]
ク・・クナイフ

852 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:02:20 ]
ホ・・ホングコング

853 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:10:57 ]
キ・・キングコング

854 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:16:10 ]
頭が不自由な奴らってのはどうして繰言が好きなんんだろね。
そういや知的障害の子とボケ老人も繰言ばっかり言ってるよなw

855 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:22:59 ]
Engrishなのだろうかこれ…

856 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:29:57 ]
エイゴリアン見ないと・・・

857 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:35:01 ]
エイドリアン

858 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:35:14 ]
繰言・・・クリゲン?

859 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:56:50 ]
>>824ってマジ?

860 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 23:00:21 ]
そんなちょっとしたツールで軽い気持ちでクリックワンスに手を出したら後悔するぞ



861 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 23:03:28 ]
JITコンパイルも実行も全部ローカルだよ。
ってか適当なこと書きすぎだろ。
サーバに実行ファイルがある場合はイントラネットゾーンになって
デフォルトの権限が弱くなるだけだ。

862 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 00:36:55 ]
>>859
マジ
英語だとfoo,bar,baz

863 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 02:27:17 ]
タスクトレイに登録されているアプリケーションまたはプロセスの一覧は取得できないのでしょうか?
Process.GetProcess()や
Process.MeinWindowHandleを試したのですがうまくいきませんでした
ご存知の方おられましたらよろしくお願いいたします

864 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 02:42:17 ]
「C#の絵本」ってどうなの?

865 名前:デフォルトの名無しさん [2008/02/02(土) 03:23:10 ]
>>864

>>C#を気軽に学べる一番やさしい解説書!

だってよ。

866 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 03:34:01 ]
>>863
むりぽ

867 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 03:36:01 ]
>>866
そうですか・・・(´・ω・`)
実行時にタスクトレイに常駐(ウィンドウなし)する
アプリケーションがあるのですが、プロセスを殺していいかどうかの判断ができないんですよね・・・
どうしたらいいんだろう

868 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 03:36:58 ]
最近C#はじめてびっくり
C++とか糞に見えてきた

869 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 03:53:27 ]
>>868
んなこたあない
グラフィックはGDI+で遅いし.NETはなぜかもっさりする

870 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 04:08:59 ]
C#でもポインタ使えば早いじゃん



871 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 04:10:27 ]
C#最高、.NETがダメ

872 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 04:11:10 ]
>>869
何故かもっさりって原理分かってれば当然かと。

873 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 04:20:30 ]
>>872
JITコンパイル終わった後ももっさりするんだよ
吐くコードが糞なのか?

874 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 04:31:28 ]
書くコードが糞

875 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 04:57:26 ]
つまり糞を見て「なんでこんなに糞なの?」って考えてるようなもん

876 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 05:43:23 ]
>>873がうんこした後便器を覗きながら>>875を言ってる姿を想像した

877 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 09:05:32 ]
そしてそのうんこをひりだしたのが>>873自身ってわけだな

878 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 09:57:22 ]
>>873
もっさりって言っても、Cのコードの2倍以内だろ?
もっさり感じるのは、やっぱGUIとか他の要因だと思われ。

879 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:16:41 ]
WinForms以外で遅いなら書いた奴が糞だと考えざるを得ない

880 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:26:12 ]
wpfももっさりしてる



881 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:36:42 ]
直接Direct3D使うならC++とほとんど変わらないくらい速いのにな
なんであんなに重くなるのか

882 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:43:30 ]
WPFが重いのはポトペタ開発の支援にそこかしこでリフレクション使ってるからじゃないかな。

データベースの内容を表示して変更するだけみたいな、ちょこっとしたプログラムなら、
IDEでコントロール置いてプロパティ編集するだけで、ほとんどコード書かずに済んだのには感動した。

883 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:58:21 ]
WPFはフリッカーフリーとかティアリングフリーとか
最悪の状況を回避が基本だからというのがあるんだろう
今までのWin32が持ちにくかったものだな
逆に言えばやっとではあるんだが・・・

つかWPF重くないと思うよ。実現している内容を考えるに

884 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:58:38 ]
C#で作りました。

ソフトが起動できるかどうか確かめて頂けると助かります。
www.ts-scorpion.info/wme9mccst/

よろしくお願いします。

885 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:00:43 ]
実行ファイルを起動するのは・・・・・・・・・・・・・・
本当に大丈夫だろうね?

886 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:00:57 ]
>>883
大抵の場合においてオーバースペックだから、formsの単純な代用にはならんのだよなあ。

887 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:02:51 ]
>>884
レジストリ云々のメッセージが出てきた。

888 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:03:50 ]
>>884
こんなところでわざわざ紹介するならせめてソースくらい付けろよ
まあ見るまでもなく想像つくし見ようと思えば見られるけど

889 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:08:26 ]
>>884
ソース出せバカ。
出せないならC#スレに書くな。ボケ。

890 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:08:34 ]
>>884
regファイルでいいじゃん・・・



891 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:16:34 ]
こんな素人丸出しの奴が作ったレジストリを触るプログラムなんて誰が動かすんだよw

892 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:26:32 ]
WMEの接続人数を変えたい!

├ 1.PCを買い換える
│                              
│    [まちがい]                         
│      確実な方法ではありますが、お金がかかるのが難点です。
│      それよりも別の手段を探してみませんか?
│      ちょっとしたフリーウェアでなんとかなるかも?
│              ↑
│          ココがポイント!

└ 2.RegSeekerを使う

      [せいかい]

893 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:31:12 ]
>>886
>オーバースペック
だったらDataGridViewとか無茶やコントロール生まれねえー!

894 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:35:12 ]
日本語書けよ。
なんだその意味不明な一行レス

895 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:37:51 ]
や→な
タイポですたゴメンナサイ

896 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:41:01 ]
そこ直してもやっぱり意味不明だと思いますがw
こういう人が質問するとエスパー召喚質問になるんだろうねw

897 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:48:36 ]
?複合コントロールとして肥大化しまくった最たるものだろ?
オーバースペックならこんなもの生まれない。

898 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:00:12 ]
WPFはかなりオーバースペックだが、Windows Formsはそこそこオーバースペック

Formsに比べればWPFはよりオーバースペックで、何も矛盾することはない。

899 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:25:41 ]
visualC#(Express)の、プロジェクトのプロパティ→リソースで画像ファイルを追加しました。
この画像リソースのアクセスレベルをpublicにするには、
Resources.Designer.csのコードを直接いじくるしかないのでしょうか?

900 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:41:48 ]
>>898
えーと、WPFはプリミティブコントロールを現在の要求に合わせて
整理している感じなのが重要なんであって上位な複合コントロールが
たくさんあったりするわけじゃないぞ。つかその視点ならFormsに劣る



901 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:17:48 ]
>>882の1行目が理解出来なんだけど誰か解説頼む。

902 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:36:20 ]
ttp://dobon.net/vb/dotnet/programing/plugin.html

Assembly.LoadFromで読み込んだAssemblyを保持してないようですが
使ってる最中にアンロードされたりしないんでしょうか?

903 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:43:56 ]
Assemblyは一旦AppDomainにロードされたらそのAppDomainがUnloadされない限り残る

904 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:44:50 ]
あ、
>Assemblyは
って分かりづらいな
アセンブリは、と言い換えとこう

905 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:59:05 ]
C#でWinAPIって使えないんですか?

906 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 21:00:06 ]
>>903-904
なるほど、よくわかりました。ありがとうございました。

907 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 21:01:40 ]
.NETの色々あるクラスの定義を見たいけどどこにあるんでしょうか?
あれ・・スレ違いでしょうか?

908 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 21:04:14 ]
MSDN

909 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 21:04:34 ]
>>905
使える
>>907
MSDNじゃ足りないの?

910 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 21:08:52 ]
>>908-909
えっと使い方というか各メンバ(メソッド)の説明はあるんですが
その実際のコードはあるのかなと思いまして質問しました
MSDNライブラリってそこまでしかないですよね?



911 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 21:12:27 ]
VS2008で見れるようになったんじゃなかったっけ

912 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:15:11 ]
Image.FromFile等でアニメーションGIFを読み込めますが
複数の画像とフレーム間の時間のデータからプログラム中で
Imageを生成するにはどんな感じにすればいいのでしょうか?

913 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:49:31 ]
GDI+じゃ無理
普通にタイマで描画してくんじゃ駄目なの?

914 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 23:22:01 ]
SelectActiveFrame って使えないの?

915 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 23:37:48 ]
既存のGIF画像になら使える

916 名前:912 mailto:sage [2008/02/02(土) 23:54:37 ]
アプリケーションからはアニメーションなImageは作れないんですか…
自分でアニメーションさせてみます。
ありがとうございました。

917 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 23:56:45 ]
Win32のPtInRectと同等の機能を持つメソッドって.NETにありますか?
今探していますが見つかりません。
Rectangleのスタティックとしてあるのかと思ったらありませんでした。

918 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 23:57:52 ]
gifはファイル構造が比較的単純だから自前でヘッダ書いてく手もあるけどね

919 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:00:17 ]
>>917
〜〜と同等の機能じゃなくて言葉で機能を説明しろと
まあ普通にRectangleのインスタンスメソッドにあるけどな

920 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:03:30 ]
あったあったよく見てなかったわサンクス

msdn2.microsoft.com/ja-jp/library/system.drawing.rectangle.contains(VS.80).aspx



921 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:33:18 ]
サウンド関連で教えてください。
テキストボックスに入力を行った際、エンターキーを押すとシステム設定のエラー音が鳴ってしまいます。
これをプログラム上から鳴らなくするにはどうすればいいのでしょうか?
winXP sp2 で VS2005です。

922 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:41:29 ]
TextBox ビープ音

923 名前:899 mailto:sage [2008/02/03(日) 01:46:57 ]
自己解決しました。2008にはデザイナに項目が追加されてました。

924 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:50:50 ]
課題終わらない\(^o^)/

925 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:54:02 ]
>>924
先生は一人だがお前には俺らがついてる!

926 名前:921 mailto:sage [2008/02/03(日) 02:18:03 ]
ググって

e.Handled = true;

としてもやっぱりBeepは消えてくれません。

927 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:46:23 ]
インテリセンスで拡張メソッドが候補に表示されるときは頭に「(拡張子)」と表示される
しかしMSDNのメンバ一覧では「Extension のメソッド」として記載されてる
しかしMSDNではその他の場合は全て「拡張メソッド」
なんだこれ

928 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:48:48 ]
英語版使え

929 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:13:04 ]
プログラムを発行する際に 特定のファイルも自動的にインストールされるようにするにはどこに置けば良いのか教えてください

930 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:29:47 ]
C#の良書があったら教えてください



931 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:49:58 ]
プロパティを使うと遅くなるから
for文などの繰り返し処理の中では
使わない方がいいと聞いたんですが
そういうもんなんですか?

932 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:55:01 ]
プロパティの実装による
コントロールのプロパティは中で色々やってて遅いのが多いかも
フィールドの値を返すだけの単純なプロパティならインライン展開されてほとんど変わらん

933 名前:931 mailto:sage [2008/02/03(日) 14:50:19 ]
今実験してみたら300倍以上違ったwww
簡単な画像処理でテスト。

1: 12889msec
2:   38msec

1.プロパティ使いまくる場合

for (int y = 0; y < bmp.Height; y++){
for (int x = 0; x < bmp.Width; x++){
if (data[y * bmpData.Stride + x * 3] == Color.White.B){
data[y * bmpData.Stride + x * 3] = Color.Black.B;
}
}
}

2.変数を使う場合

int w = bmp.Width;
int h = bmp.Height;
int yPos;
byte white = Color.White.B;
byte black = Color.Black.B;

for (int y = 0; y < h; y++){
yPos = y * bmpData.Stride;
for (int x = 0; x < w; x++){
if (data[yPos + x * 3] == white){
data[yPos + x * 3] = black;
}
}
}

934 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:55:44 ]
メンバ変数を直接使うのと
プロパティを使うのとで
比較しないと。

935 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:57:46 ]
Bitmap.Width/Heightは中でアンマネージ関数呼んでる
Color.White.Bは新しいColor作成→値渡し→ビット演算
どっちも全然単純なプロパティじゃないの

936 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:12:41 ]
>>933のコードはどこがボトルネック?

937 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:15:52 ]
bmp.Widthとbmp.Heightかな

938 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:28:52 ]
>>933
その例が極端だとしてもこれはいいこと聞いた
定数クラスに新たに用意してそれでやってみる

939 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:32:00 ]
は?

940 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:34:52 ]
>>939
この話がわからない子は参加しなくていいんじゃないかな



941 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:38:00 ]
荒れる流れストップ

>>938が言ったことを咄嗟に>>939は想像出来なかった
また、他人に伝える意図でないものを>>938がレス内容に含めたというのにも問題がある

942 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:39:42 ]
bmp.Width/Heightが
Color.White.Bよりもネックになる理由がわかりません。
どうしてですか?

943 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:45:10 ]
VBのForループなら>>933の前者でも結果あまり変わらなそうだ。

まあとにかく、速度が問題になる場面では可読性犠牲にしてでも(といってもそれで低下する可読性なんてほんの僅かだろうけど)
プロパティーをキャッシュして使った方がいいってことか。

944 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:45:41 ]
>>942
>>935
怪しいことしてるのはそこくらいだから

945 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:58:56 ]
>>942
Color.White.Bがネックにならないのは、コンパイラがそれをリテラルに
置き換えてるからだろうけど、どうしてコンパイラはColor.White.Bの値を
定数扱いしても大丈夫だと知ることができるんだろう・・・

946 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:01:52 ]
> コンパイラがそれをリテラルに置き換えてるから
頭沸いてるんですか^^;

947 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:02:51 ]
>>946
君頭悪いでしょw

948 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:11:14 ]
>>933
MDAの影響は排除してる?
ttp://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=521353&SiteID=7

949 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:15:28 ]
おまいら!もちつけ!
     /\⌒ヽペタン
   /  /⌒)ノ ペタン
  ∧_∧ \ (( ∧_∧
 (; ´Д`))' ))(・∀・ ;)
 /  ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O   ノ ) ̄ ̄ ̄()__   )
 )_)_) (;;;;;;;;;;;;;;;;;;;)(_(


950 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:17:40 ]
WebBrowserって、MouseEnterのイベントをサポートしてないのか!
なぜだ!?



951 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:18:19 ]
それより困るのは、ArrayList.Countじゃね?
ArrayListの実装って配列モドキのくせに
CountにO(N)かかるんだけど・・・
一度それでハマったことがある

952 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:20:13 ]
は?

953 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:22:13 ]
>>951
さすがにそれは嘘だろうと思ってソース見てみたら変数の内容返してたよ。
というわけで少なくとも最新版のArrayListではO(1)。
ソース公開便利だね!

954 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:29:53 ]
>>953
そうなんだ
昔のArrayListで
while(al.count > 0){
・・・O(N)の処理
}
ってやったらやたら時間がかかって、
しばらく悩んでたらArrayList.countがO(N)で、O(N^2)になってたことがある
このときは死ねよと思ったが改善されたなら良かった

955 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:33:21 ]
WebBrowserでMouseEnterを受け付ける方法ってありますか?
もしくは、WebBrowserの親に通知する方法とか。

956 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:34:11 ]
処理に時間のかかるプロパティは作るな!っていうMSのガイドラインがあるけど
あんまり守られてないなw

957 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:34:46 ]
forとwhileの違いを教えてください

下記のところを読んでも違いがよくわかりませんでした
ひょっとしてforはいらない子なのでしょうか?

d.hatena.ne.jp/gallu/20060829/p2


958 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:37:18 ]
それを肯定したらC#の存在意義がなくなる
foreachもいらないLINQもいらないプロパティもデリゲートもいらない

959 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:37:45 ]
>>956
根本的な疑問。

「作るな!」って宣言すれば、本質的に重い処理にならざるを得ないプロパティが
軽くなるの?w

960 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:38:30 ]
>>957
むしろwhileがいらない子なんじゃないの



961 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:41:20 ]
>>959
重い処理はメソッドにする
プロパティだとなんとなくループ中に繰り返し呼び出してもOKかな?という感じがあるから
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpgenref/html/cpconpropertyusageguidelines.asp

962 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:45:03 ]
>プロパティだとなんとなくループ中に繰り返し呼び出してもOKかな?という感じがある
むしろその感覚の方を修正すべきなのでは?
だってそれは単なる願望であって、現実的な認識じゃないでしょ。

963 名前:957 mailto:sage [2008/02/03(日) 16:48:02 ]
とくに違いはないということでよろしいのでしょうか?(´・ω・`)

964 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:48:58 ]
たしかに、プロパティにルーティンをかけるけど、
実際にどのレベルまで書いていいのかな?って悩む時はあるね。

基本的にメソッドと同じくらいの処理はかけるわけで。。。

965 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:52:02 ]
get には return 文しか書けないよう、
set には1文しか書けないよう制限すればいいのに。

966 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:01:08 ]
コントロールのプロパティは仕方ないとしても
Bitmap.Widthはコスト無いと思うだろ普通

967 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:01:22 ]
setだって、配列データをobjectとして渡して、中で分解して使うようにすれば、
実質複数の引数を渡してるのと同じことができるからな。

メソッドと変わりはあんまないような。
つまり、線引きの問題だよな。

968 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:01:27 ]
>>965
本末転倒でしょそれは。
プロパティの目的はOOP的な思考モデルに実際のコーディングを近づけることにあるんであって、
処理の効率化のためではない。


969 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:03:11 ]
素朴な疑問なんだけど
MSのガイドラインに背いてまで、メソッドではなくプロパティで重い処理をしなければならない
本質的な理由にはどんなものがあるのかな

970 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:05:27 ]
do-whileがあればいいのに



971 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:05:59 ]
>>969
問題は重いと重くないの境目でしょ。

972 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:07:11 ]
>>969
セッターでセットした時にクラス使用者には意識させず対象プロパティ以外の値を変更したいとき


973 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:07:32 ]
今日の話は勉強になった。
次スレも期待

974 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:08:11 ]
>>969
愚問だね。
その方がライブラリの使用者にとって直感的なインターフェイスだからでしょ。


975 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:09:51 ]
基本的には、1つに対してのget,setのみの使用でしょう。

976 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:12:55 ]
>>955
TrackMouseEvent

977 名前:955 mailto:sage [2008/02/03(日) 17:18:56 ]
>>976
あぁ、まさにそれです。

www.thescripts.com/forum/thread268276.html
ここに書かれてる内容こそが、今私が悩んでいるところです。
熟読してみます。
どうも。

978 名前:955 mailto:sage [2008/02/03(日) 17:30:10 ]
やっかいですね。
これはMFCのプログラミングになっちゃいます。

WM_NCMOUSELEAVEをC#側でdefineしないといけないってことか。

979 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:32:34 ]
>>974
しかしプロパティの取得に時間がかかるのは直感的ではない、とw

980 名前:955 mailto:sage [2008/02/03(日) 17:35:47 ]
const int WM_CLOSE = 0x0010;
const int WM_ENDSESSION = 0x16;
const int WM_SYSCOMMAND = 0x112;
const int SC_CLOSE = 0xF060;

のリストが掲載されているWebページってありますか?
もちろん今自分で探していますけど。。。



981 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:37:51 ]
素直にWindows SDK入れとけよ

982 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:38:11 ]
>>980
WinUser.h

983 名前:955 mailto:sage [2008/02/03(日) 17:38:40 ]
見つけたけど、肝心の値がないw orz

msdn2.microsoft.com/en-us/library/ms645626(VS.85).aspx

984 名前:955 mailto:sage [2008/02/03(日) 17:41:04 ]
>>982
winuser.hにありました。

#define WM_NCMOUSELEAVE 0x02A2

誠にありがとうございます。

985 名前:955 mailto:sage [2008/02/03(日) 17:45:38 ]
お礼の意味を込めて次スレを立てときました。
素人発言で気に障ったかたもいらっしゃったと思いますが、
ありがとうございました。

ふらっとC#,C♯,C#(初心者用) Part24
pc11.2ch.net/test/read.cgi/tech/1202028267/

986 名前:955 mailto:sage [2008/02/03(日) 17:52:10 ]
WebBrowserだと、WndProcにWM_MOUSELEAVEのイベントがこないですね。。。
それ以外だと来ますが。

Console出力をして確認して気づきました。
一難さってまた一難。

987 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:58:33 ]
ここはお前の日記帳じゃない

988 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:01:33 ]
俺は応援してるよ

989 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:05:30 ]
>>985
新スレ立てるなら関連スレもはれよ。
中途半端な仕事しやがって。

990 名前:955 mailto:sage [2008/02/03(日) 18:07:48 ]
単にWebBrowserでマウスイベントを検出したいだけなんですけどね。
こんなに苦労をするとは予想外でした。



991 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:29:45 ]
Document.Bodyのイベントを使うのはダメなのか?

992 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:31:50 ]
中身がHTMLDocumentじゃなかったら使えないだろ。

993 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:26:41 ]
Application.AddMessageFilterで横どる。色々応用きくからこの際
覚えとけ

994 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 00:10:10 ]
TrackMouseEventで始めないと
メッセージすら生成されないと思うのだが






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<230KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef