1 名前:デフォルトの名無しさん [2010/03/20(土) 02:15:38 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ふらっとC#,C♯,C#(初心者用) Part56 pc12.2ch.net/test/read.cgi/tech/1267348401/ 関連スレ C#, C♯, C#相談室 Part55(実質56) pc12.2ch.net/test/read.cgi/tech/1260111240/1 VB.NET質問スレ(Part33) pc12.2ch.net/test/read.cgi/tech/1263738929/1 C++/CLI part3 pc12.2ch.net/test/read.cgi/tech/1206447234/1
2 名前:デフォルトの名無しさん [2010/03/20(土) 02:20:14 ] コードの量が多い場合は下記サイトを使うなどしたほうがいいかも codepad.org/ コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと コードを鯖側にアップして専用のアドレスが発行されます。
3 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 10:36:08 ] OrderedDictionary
4 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 17:31:58 ] >>1 関連スレの更新忘れ C#, C♯, C#相談室 Part55 (実質57) pc12.2ch.net/test/read.cgi/tech/1265283175/ 紛らわしい。いつになったら正しいスレ番になるのかと
5 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 17:46:26 ] メンバ変数の値が変更されたらイベント処理をするようなのをしてみたい TextChangedイベントみたいな感じ
6 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 17:59:35 ] .....というチラ裏?
7 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:04:01 ] してみたいのでさせてください
8 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:06:17 ] どうぞ
9 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:09:43 ] デリゲート、マルチスレッド、イベント ごちゃごちゃになってどれ使えばできるのかよくわかりません 教えて
10 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:12:30 ] いいよ
11 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:16:47 ] イベントとデリゲートの関係は、イベントを宣言するときに簡略記法使わずに addアクセサとremoveアクセサを自分で実装してみるとよく理解できる
12 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:21:33 ] >>11 イベントは呼び出し側は追加と削除しかできない そういう違いはだいたいわかったんだけど いざ応用しようとするとまったくわからない ある変数の値をフォームに表示するために 値が変更されると値を表示するメソッドを毎回書いていたんですけど もしかしたら、TextChangedのようにデリゲートを使えば わざわざ表示メソッドを毎回書かなくてもいいんじゃないかと気づいて 調べていたんですが、むじゅかしくて・・・
13 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:26:45 ] そういうのはINotifyPropertyChangedを実装してバインドしてしまえば更新処理不要
14 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:47:33 ] レベルが高すぎて理解できません
15 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:51:43 ] あきらめろよ。
16 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 19:14:08 ] >>12 普通にプロパティじゃだめなの?
17 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 19:19:36 ] >>16 そういえばプロパティで出来そうですね でもプロパティをそういうふうに使ってもいいんですか? それとクラス内部で使うだけの変数なので プロパティをするというのも違うような やはりイベントだと思うんですよ
18 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 19:21:00 ] イベントを使うにしても結局プロパティで地道にチェックしてイベント発生させるんだよ
19 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 19:41:12 ] イベントでそれっぽいの実現してるソースみたけど 結局別のクラスのプロパティでメソッド呼び出して メインクラスのイベントハンドラ呼び出しているだけですね ってことはプロパティにそのまま書けばいいだけか・・・
20 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 19:45:16 ] しかし、>>9 のレスにマルチスレッドが出ているのは不思議だと思った。 他の二つはわかるけど
21 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 19:46:01 ] >>19 あまり良い設計じゃないな
22 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 19:49:15 ] イベントとデリゲートってどんな関係があるの?
23 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 19:50:09 ] デリゲート経由でイベント呼び出しなんじゃね?
24 名前:デフォルトの名無しさん [2010/03/20(土) 19:52:04 ] windowsのイベントってOSが呼び出しする物なので非同期 クリックされたとかイベントが起きたときに特定の関数を呼んでもらった方が効率がいい 呼んでもらいたい関数を教える際に使うのがデリゲート Cだとコールバックとか言ってた
25 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 19:52:58 ] イベントは ・イベントハンドラを登録するメソッド ・イベントハンドラを削除するメソッド をひとまとめにしたもの。プロパティみたいなもん。 addとremoveを省略してevent EventHandler Hoge; の形式で宣言する場合は 自動実装プロパティと同じでデリゲートやメソッドが自動生成される。
26 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 19:54:48 ] まあ別にしらなくてもぷろぐらむは作れるからいいか
27 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 19:55:23 ] デリゲートの説明で一番わかりやすかったのが デリゲートはメソッドをオブジェクトのように使うもの そう考えるとすごくわかりやすかった でも、クラス使えばできることをなぜわざわざするのかというと やっぱり、マルチスレッドかイベントぐらいしか使い道ないような感じ
28 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 20:00:29 ] >>27 はじめは>マルチスレッドかイベントぐらいしか使い道ない と想定されてたから マルチキャストとか変なところがあるけど最近はラムダ式などで積極的に活用されてる
29 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 20:02:38 ] ひょっとしてサブスレッドからメインスレッドに処理の終了を 知らせることができるのか!!
30 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 20:02:50 ] >はじめは>マルチスレッドかイベントぐらいしか使い道ない と想定されてたから だから、前にも書いたがそれはない。 寝ぼけたことをどや顔で繰り返さないように。
31 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 20:04:31 ] >>29 とりあえずバックグラウンドワーカーコントロールでも使ってこい
32 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 20:08:05 ] 俺も初心者だけど、このスレのレベルにワロタ
33 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 20:11:29 ] >>31 使ってみた!すげーーー! いつの間にこんなコントロールが!
34 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 20:16:03 ] と思ったらわざとだろお前wwしらじらしいww
35 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 20:17:52 ] わざとじゃねーよw スレッド作ってメインスレッドからタイマーで見てたよw
36 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 20:19:37 ] >>35 スレッドからスレッド名前空間のタイマ? それって二重になってるんじゃ・・・・
37 名前:デフォルトの名無しさん [2010/03/20(土) 20:29:38 ] この間どっちかのスレでこんなのもあったな codepad.org/akzX4pKs
38 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 20:39:06 ] で、結局、変数の値が変更されたら 自動でform.Textの値を変更してくれるのは どう書けばいいの?
39 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 20:46:52 ] 今まで出た感じで好きなように
40 名前:デフォルトの名無しさん [2010/03/20(土) 20:59:27 ] textboxだっけ? あれって中身が変更された〜とかそんなイベントなかったっけ? それで監視するしかないよね
41 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:02:44 ] なんでもバインドしたけりゃWPFだな
42 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:06:03 ] >>40 メンバ変数つってんだろ textbox関係ないだろ
43 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:08:56 ] そろそろ死ねよ。
44 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:16:26 ] >>43 お前は寂しい人間だな 昨日から用もないのにこのスレに来ては煽るだけ お前の人生が不幸だからって他人に八つ当たりするな
45 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:23:09 ] やばい。できた public partial class Form1 : Form { int hoge = 0; int i = 0; public Form1() { InitializeComponent(); } private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { textBox1.Text = hoge.ToString(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { backgroundWorker1.ReportProgress(i++); System.Threading.Thread.Sleep(2000); hoge = 2; backgroundWorker1.ReportProgress(i++); } private void button1_Click(object sender, EventArgs e) { backgroundWorker1.RunWorkerAsync(); } private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { } private void Form1_Load(object sender, EventArgs e) { backgroundWorker1.WorkerReportsProgress = true; } }
46 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:24:50 ] >>45 >>2 使えよw
47 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:25:40 ] 昨日は来てねーよ。 頭おかしいんじゃね?
48 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:25:58 ] >>46 おぉ! すげーーー!
49 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:26:45 ] 何がしたいんだよ。このコード。
50 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:27:44 ] 初めての非同期で感動するコードだろ
51 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:27:46 ] 素直にプロパティでチェックしてイベント発行するべき わざわざスレッド使うとか初心者スレで間違ったやり方出すなよ
52 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:30:26 ] 初めてのマルチスレッドか。 今度は何か意味のあるコードで頼む。
53 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:31:03 ] あれ? この場合、Invokeしないでいいの?
54 名前:デフォルトの名無しさん [2010/03/20(土) 21:31:04 ] >>37 で十分だろ
55 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:32:57 ] >>53 そういうの意識しなくていいから初心者にもやさしい
56 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:33:14 ] 素直なつくりにできないのって大概は仕様や設計が悪いんじゃないの?
57 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:33:17 ] うん
58 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:34:24 ] へー。使ったことなかったけど、BackgroundWorkerって便利なんだな。
59 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:40:17 ] ああ間違えた これテンプレにしとけ 毎度応えるの面倒 Form間のデータの受け渡しサンプルコード codepad.org/akzX4pKs スレッド、デリゲート関連のサンプルコード codepad.org/xOdJsJie Radiko codepad.org/Vvwba6du
60 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:42:51 ] >>58 まあな
61 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:44:10 ] hogeを他で使うならlock大丈夫か
62 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:45:44 ] >>38
63 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:47:13 ] テンプレにはいらんだろ。
64 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:53:47 ] >>62 変数の値が変わるのはサブスレッド側でわかるんだから >>45 でできるやん。 俺って天才かも。
65 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:01:19 ] BackgroundWorkerなんか便利なものか。 スレッドがよく分かってない奴でもなんとなく使える、という以上のメリット(本当にメリットか?) は何もないだろう
66 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:03:25 ] 超メリットだよ ただ馬鹿に仕事取られるということでもあるけどなw
67 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:05:20 ] >>65 時代遅れになっていくやつの典型的な反応だな
68 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:07:40 ] アセンブラ厨と言ってることが変わらないよね BackgroundWorkerをC#に、Threadをアセンブラに変えても成立してしまうw
69 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:15:09 ] >>67 むしろ、言いたくないが君のようなのがいわゆる「VB厨」の典型的反応でしょ。 BackgroundWorkerって典型的な「VB厨」向けツールだよ。 彼らは言うんだよ。「便利なものは便利に使わせていただく」ってw お前便利だから使ってるわけじゃなくて、それしか使えないんじゃねえの、って。
70 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:16:05 ] >>69 はいはいパンチカードに穴あける作業に戻ってねオジーチャン
71 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:17:39 ] C++やJavaでもマルチスレッドプログラミングしてたけど BackgroundWorkerは便利だよ
72 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:17:47 ] 年寄りはおとなしくタイプライター叩いててくれ。
73 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:18:55 ] 普通に明示的にスレッド起動した方がよほど分かりやすい、 と標準的なプログラマなら感じると思うけどね俺は。
74 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:19:45 ] 結局お前が思ってるだけじゃん。 何が標準的(キリッだってのw
75 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:20:17 ] この怒涛のレスの雨は久しぶりに見たぞwww
76 名前:デフォルトの名無しさん [2010/03/20(土) 22:20:20 ] 伸びてると思ったら・・・・
77 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:20:55 ] phpをdisってる人と同じ匂いがする
78 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:22:00 ] >>69 VBが出た時、beginner's toyと言われていたけど、今や、どれもこれも真似してるよな そういうハッカー気どってVB馬鹿にするのは、COMコンポーネントをCでストレスなく作れるようになってから言ってくれ
79 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:22:56 ] わざわざ遠回りな方法をとるアテクシカコイイみたいな。 スレッド使いこなしてデキるプログラマ目指そう! モテカワマルチスレッドの嗜み方教えちゃいます特集号 みたいな。
80 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:23:59 ] >>78 VBを馬鹿にしてないって。 「VB厨」を馬鹿にしてるの。だからわざわざカギ括弧付けてるんじゃないの。
81 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:24:11 ] おっさん調子乗ってんなよ^^
82 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:25:41 ] とはいっても>>68 を否定できないよねw
83 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:25:48 ] BackgroundWorkerがいやならC#も嫌なはず
84 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:26:48 ] >>80 じゃあさっさと>>62 答えろよ
85 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:28:12 ] >>64 お前はイベントとマルチスレッドの違いもわからないカス
86 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:28:44 ] まあ御託はいいから、そんなにBackgroundWorkerが便利だと思うのなら 普通にスレッド起動した場合と比較したメリットをちゃんと言ってみろって。 言えやしないだろうそんなもの。 無い者を言えるわけがない。 さすがにいくら面の皮が厚い馬鹿でも「理屈が分かってない馬鹿なボキュにも使えることがメリット」とは 言いづらいもんねw
87 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:29:21 ] まあまあ喧嘩しないしない 使いたいの使いなさい それより仕事をしなさい
88 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:30:24 ] >>86 早く>>68 を否定してみろよ 否定できないならC#使うのやめて機械語に帰れ
89 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:32:54 ] >>86 単にフレームとして一連の処理の流れが実装してあることがメリットだろう。 IListそのものがListより便利だとは言わないでしょ。 実装が無いんだから。
90 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:34:04 ] >>86 理屈がわからなければを繰り返していくと、最後は量子力学か神学までいくから理屈がわかってないバカ議論は不毛 もう化石だな
91 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:34:23 ] >>86 簡単に使える、ってのは大きなメリットだろ。
92 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:35:03 ] >>86 馬鹿でも使えるのは超メリットだと初めに言ったはずだが そこから否定されても困るね 何言ってんのお前
93 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:35:04 ] >>88 意味不明な命題を否定も肯定もしようもないと思うけど。 なぜBackgroundWorkerがC#に、スレッド起動の方法がアセンブリ言語に対応するのか サッパリ理解できん。 馬鹿の議論はいつもこれだが、馬鹿のお前さんの思いつきを俺が共有してるわけないじゃん。 これがセカイ系か。
94 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:35:39 ] 簡単だから嫌いってもうね。 自分は特別な人間だと思ってるやつの典型だね。
95 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:35:40 ] >>88-92 死ねよおめーらwww
96 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:36:09 ] ワロタ
97 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:37:20 ] 初心者向けスレで、顔真っ赤にすんなよ。
98 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:37:47 ] お前ら落ち着け
99 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:39:14 ] >>98 お前も落ち着け
100 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:39:30 ] こいつと同じ臭いがする。 勘違い職業マ。 678 名前:以下、名無しにかわりましてVIPがお送りします[] 投稿日:2010/02/08(月) 13:05:38.59 ID:V+MiXXPeP >>674 その手段を自分で想像出来ないヤツが結果を出せる訳無いよな >>675 いきなり素人が5つ星のフランス料理作れるとしたら、誰か経験のある人が代わりに作ってあげたキットを再利用するか、 あるいはボタンを押せば出てくる装置を使うしかない。 もともとプログラミングって、技術職の仕事だ。 みんな欲しいのは技術じゃないのかと。 結果が欲しいだけなら巷に転がってる完成品使えばいいだけ 昔も今も見よう見まねから始まるのは変わらないだろうけどな。 でもコピペは見真似にすらならね
101 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:39:33 ] 今日はアンチMSのスレが伸びてないと思ったが、こっちで喧嘩してたのかw
102 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:40:21 ] へー
103 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:41:08 ] VIPで死ね
104 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:41:14 ] 反論したかったら、BackgroundWorkerの致命的な欠点を言わないとな 簡単なことにThreadを生で使った方が問題引き起こすと思うけどな
105 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:41:22 ] その「簡単な方法」では搭載しきれない仕様が降ってきたときに ちょっと苦労するか、沢山苦労するか、逃げ出すか、の違いだしょ? いいじゃん、選ぶのは自分なのだし。
106 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:42:42 ] 俺>>86 じゃないけど Suspendできないのがちょっと面倒だったカモ
107 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:43:04 ] カモネ
108 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:43:39 ] かーもね
109 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:44:04 ] 灰
110 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:45:01 ] >>65 使えるものは使う てひとはそれでいいじゃん まぁ同じくらいのもの実装しても大してめんどくさいものではないけどね
111 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:45:08 ] >>77 >>100 ディスプレイとキーボードと部屋掃除しろ
112 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:46:47 ] 勢いが板でトップになってるから何事かと思ったら
113 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:48:06 ] >>110 いいじゃんね
114 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:49:05 ] 2番目に勢いのある 【超高速】C/C++に代わる低級言語を開発したい の倍いってるじゃねぇかwwwww
115 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:53:14 ] お前ら落ち着いて落ち着いて死ねなの〜
116 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:57:26 ] すべてRuby厨の仕業
117 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 23:00:16 ] まんまと釣られたということだよ。 言わせんな恥ずかしい。
118 名前:デフォルトの名無しさん [2010/03/20(土) 23:01:05 ] ID欲しいよね・・・
119 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 23:02:19 ] ID出たら真っ赤になってそうだなぁ
120 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 23:08:36 ] 書いてんの2人くらいだろ
121 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 23:10:26 ] >>120 の会話ですら赤字になってる人の発言かもしれないと疑ってしまう自分
122 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 23:14:40 ] Dr林にご相談ください
123 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 23:16:16 ] >>115 の発言が最近やったエロゲキャラのしゃべり方と似ててちょっと燃えた いや萌えた
124 名前:デフォルトの名無しさん [2010/03/21(日) 00:02:57 ] あ
125 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 00:58:47 ] (´・ω・`)ショボーン
126 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 01:16:21 ] スレッドプールで十分なら極力そちらを使うべきではあるが、 専用スレッドを用意するメリットがあるなら使えばいいだけの話だろ 因みに、ThreadPool、Delegate.BeginInvoke、BackgroundWorker、 Forms以外のTimer、多くのコンポーネントの非同期操作(〜Async)などの スレッドプールを使っているものなら多用しても問題はない 逆に、なんでもかんでもThreadを使うのは論外 >>106 中断のための機構は自前で用意すべきもの Threadならイベントオブジェクト使って適当な間隔でチェックするだけだし、 ThreadPoolなら処理を細切れにしてキューに入れるタイミングを制御する
127 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 03:13:28 ] Thread明示的に使ったってどうせ同じようなことを自分で実装するんだから、 あるもの使う方が手っ取り早いだろう。 それにいちいちスレッド作るよりThreadPool使う方が一般に望ましい(常にとは言わない)のは常識。
128 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 03:56:43 ] 知識0の状態からFF11のツール作るためにC#の勉強をしたいのですが 参考になるサイトやこれは買っとけ的な本は何ですか?
129 名前:デフォルトの名無しさん [2010/03/21(日) 03:58:53 ] 言語はどうにでもなるだろ 周辺ツール作る場合はゲーム側の独自仕様をどれだけ集められるかだと思うよ
130 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 04:22:07 ] FF14にしましょう
131 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 05:56:19 ] windows formのスレがないのでここで聞いても良いでしょうか。 formでGUIを作っています。 アプリケーション全体からメッセージを表示させるtextboxを追加したいです。 コンソールのプログラムでいう標準出力です。 どうやConcoleクラスがそれに値するようなのですが、これをどうtextboxに表示するのかわからないです。 textBox1.Text = System.Console.Out.ToString(); としても、textboxには「System.IO.TextWriter+SyncTextWriter」と表示されるので違うようです。 何かヒントをください
132 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 06:19:39 ] やーだお
133 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 06:23:23 ] うーむ なんでこの手の話題は繰り返すんだろうw スレッド、デリゲート関連のサンプルコード codepad.org/xOdJsJie これの応用でできるんじゃないかな?
134 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 06:24:45 ] Console使うなら、 TextWriterから派生させたクラスを作って、 WriteメソッドとかをオーバーライドしてTextBoxに出力するようにして、 Console.SetOutで設定すればいいけど。
135 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 09:03:12 ] >>133 誰に言ってんの??
136 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 09:05:50 ] >>133-134 ありがとうございます。 単語を調べて一つ一つ確かめてみます
137 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 09:09:55 ] >>86 お前素人だろ
138 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 09:15:19 ] なんでBackroundWorkerをそんなに毛嫌いするのかわからん。 素人専用とでも思いこんでるのか? 素人に使いやすい設計になってるのは事実だが、 別にやりたいことにあってれば普通に使えばいいじゃん。 普通に使えるのにわざわざ自分で同じような処理を実装して、 でそれがThread明示的に作ってとか、マイナスにしかなってない。
139 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 09:20:00 ] 用途に合ってなければ自分で制御するだけ、 誰も常にBackroundWorkerがいいなんて言ってないのにな。 まあそれでもThreadを自分で作ることはあまりないが。
140 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 10:14:40 ] まあそれでもThreadを自分で作ることはあまりないが。
141 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 10:16:41 ] 今時代はスレッドプールですよ
142 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 10:31:31 ] スレッド温泉でゆっくりしたいなあ
143 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 10:32:07 ] スレッドプールって何?
144 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 11:01:50 ] 次はParallel.Forですね 簡単といってもBackgroundWorkerとは違ってこちらはアカデミックな感じだが
145 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 11:02:22 ] ThreadPool
146 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 11:08:50 ] >>134 できました。 継承してオーバーライドって便利ですね。 勉強になりました。
147 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:50:25 ] まだ4.0の勉強してないんだけどParallel.Forとかって別CPUで処理させるんだよね? いくつかParallel.Forで処理を同時にやってすべてが終わったかどうかのチェックはフラグかなんか持って 自分で管理しないとだめなのかな?
148 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:56:39 ] parallel.forとかすげーな もうC++の時代は終わってるな
149 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:03:03 ] 単純に適材適所でしょ windowsなんかC/C++がなきゃ動かないわけだし
150 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:03:54 ] まぁGUIクライアントを書く言語としてはC#の方が向いてるね
151 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:22:21 ] >>147 並列ライブラリは直接使うとよほど単純なパターンを除くと非常にややこしいので、 Parallel Linqから使ったほうが簡単。 並列処理の結果を待つかどうかオプションで指定できる。
152 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:26:30 ] >>151 そんなの知ってるよ
153 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:27:50 ] >>151 なるほど しかし、すげぇな・・・ 4.0いろいろ贅沢な機能付きすぎだろ
154 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:29:06 ] >>152 自己紹介乙
155 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:32:13 ] 並列ライブラリのforを本気で使おうと思ったらやたらと引数が多くなる。 1〜10までを足すだけ。 int sum = 0; Parallel.For(1, 10+1, option, () => 0, (i, parallelLoopState, s) => s + i, s => Interlocked.Add(ref sum, s) ); Console.WriteLine("sum = {0}", sum);
156 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:34:33 ] そんなの使わずマルチスレッドつかえよ Parallel.Forなんて大して使えん ループ内がそれそれ独立していなければ無理
157 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:37:16 ] ((;゚Д゚)) 決めつけ無理……………!!!
158 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:37:34 ] 結構使いにくそうだ… でも・・・実装したからには何か目的が・・・・メリットがあるんだよな?
159 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:38:35 ] Parallelライブラリはコア数に合わせて並列数を調整してくれるところにある。 自分でスレッド作って調整するのは大変だぞ?
160 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:39:16 ] そうだね。
161 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:42:37 ] うん
162 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:50:06 ] >>155 そんな並列の意味が一切無い例出してどうすんのさ
163 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:52:50 ] >>162 お前に言われる筋合いはないから
164 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:53:04 ] もうちょっとMPIの様に透過的にだな・・
165 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 14:12:13 ] 【春祭り 】また割れ厨のスクショと個人情報が晒されてるぞ避難所5 jbbs.livedoor.jp/bbs/read.cgi/news/4988/1269124859/ ICO - 国際著作権機構 ttp://warezer.net/search/user/3201 割れてる人は気おつけて
166 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 14:42:40 ] >>164 パラレルライブラリはOpenMP型で、MPI型のはAxum。 ttp://msdn.microsoft.com/en-us/devlabs/dd795202.aspx まだ研究段階っぽい。最終的にはC#に成果を吸収という流れだろうか。
167 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 15:21:20 ] >>147 ちゃんと Join する。 スレッドいっぱいたつけど、全部のタスクが終わるまで待ってくれる。 >>148 同時に C++ 向けにも並列処理ライブラリが追加されるけどね、VS 2010。 C++ の時代、分野次第だなぁ。 10年は前に終わってるとこもあるし、あと10年は使わなきゃいけないとこあるし。 >>155 そんな処理は Parallel LINQ の方がいいな。 あと、集計部分(+= するとこ)は並列化してもおいしくない。 >>164 pragma だらけってのは、標準化がどうこう言われてしまう C++ の苦肉の策だろ。
168 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 16:08:18 ] >>167 ほほぅ キッチリ便利にはやってくれそうだなぁ… 3つの画像を同時に処理して終わったらその結果を判定して処理 とかやってるから単純なマルチスレッドでやるよりイイかもしれねぇ。。。 ちょっと期待したい
169 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 16:34:39 ] for文の前に属性書けたら楽そうだけど [Parallel 4] for(){ } まぁ文法的に無理ぽ
170 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 16:38:36 ] ParallelOptionsのMaxDegreeOfParallelismが必要だね。 1コアの環境でoptionなしで使うとスレッドは使わずにメインスレッドで処理してしまう。 ParallelOptions option = new ParallelOptions() { MaxDegreeOfParallelism = 4 }; Parallel.Invoke(option, () => Worker("aaa"), () => Worker("bbb"), () => Worker("ccc"), () => Worker("ddd"));
171 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 16:48:43 ] 並列処理とか…… ここは本当に初心者スレなのか?w
172 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 16:50:44 ] いいんじゃね?
173 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 16:56:30 ] まあ、Parallel.ForはちゃんとJoinしてくれるの?とか、結構初心者らしい質問な気もするが。
174 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 20:11:36 ] 並列処理といってもこのていどは初級レベルだろう まあ普通は初心者は並列処理を勉強しないものだけど、 勉強してみれば、このくらいは理解できるレベルだと思う
175 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 20:36:37 ] だね
176 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 20:39:48 ] 並列処理の使い方を理解できるというより、 並列処理の必要性を理解する、ことになるのでしょうね。 必要と思えれば頑張れる、そういうもんでしょ、言語習得ってさ。
177 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 20:41:33 ] そして別スレッドからGUIコントロールにアクセスして怒られるんですね
178 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 20:48:12 ] もう・・・ぷんぷんっ
179 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 20:58:05 ] backgroundWorkerは自由度が低いから使いづらい
180 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 21:05:14 ] いつまでそのネタ引っ張るつもりだ
181 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 21:16:46 ] >>179 初心者ではなく低級者の発言ですね
182 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 23:34:27 ] >>170 何の意味があるのそれ?
183 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 00:34:37 ] 質問します。 DataGridViewで特定のCellから値を参照したいんですけど 方法がわかりません。お願いします。
184 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 00:36:04 ] DatagridView.Rows(0).Cells(カラム名).Value だけじゃね? さすがにそれはヘルプ見てみようぜ それとも何か勘違いしてるかな?
185 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 01:08:49 ] メソッドに戻り値つけないとどういう処理しているかわからなくなるね とくにグローバル変数をどうにかしているときとか
186 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 01:14:00 ] C#スレでグローバル変数とな!? シングルトンのクラスに詰め込むの?
187 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 01:15:17 ] フィールド変数だらう
188 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 03:31:48 ] SlimDX/Direct3Dで描画してるウィンドウの中にWPFでコントロールを描画して使いたいんですが、 いいサンプルはありませんでしょうか。
189 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 03:59:50 ] このスレレベル高すぎて何いってるのか全然わからないですがさらに初心者向けのスレってないんですか? FF11でツールを作ろうと思ってます。
190 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 04:12:21 ] 今のFF11ってツールまで作れるんだな…。
191 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 07:09:13 ] そういやFF11ってなんか言語っぽいもんな 0xFF11みたいな
192 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:49:37 ] ボットでも作りたいのかね
193 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:39:33 ] string型の配列aがnullでも空でもないことを判定するプログラムを考えています。 if ( a != null ) { if ( a.Length > 0 ) { (処理) } } これ以上にスマートな記述方法は存在しますか?
194 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:41:26 ] >>193 string.IsNullEmpty()
195 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:43:39 ] それ、配列にも使えるのけ?
196 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:45:57 ] 無理だな ネストが深くなるのが嫌だから&&でつなぐ
197 名前:193 mailto:sage [2010/03/22(月) 13:49:55 ] >>194-195 そうなんです。String.IsNullEmptyOrEmptyは文字列には使えますが文字列の配列には使えませんでして・・ >>196 たしかにネストが深くなるのはイヤなんですが、もし&&でつないでしまうとnullだった場合に a.Legth のところで例外が発生してしまうんです。 だから泣く泣くネストを深くして対処しました。
198 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:52:31 ] ショートサーキットを使うように、|| でつなげばいいだろ。
199 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:55:07 ] & じゃなくて && だよ?
200 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:58:02 ] &&で繋ぐと、結果が偽になった時点でそれ以降は評価されない
201 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:03:15 ] >>200 じゃあ&&でいいじゃないか。変数aがnullなら、他のことをやっても仕方がない。
202 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:07:00 ] try { if ( a.Length > 0 ) { (処理) } } catch(ぬるぽ) { } ・・・違うの?
203 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:09:57 ] >>202 本気で言ってるの? ぬるぽをキャッチしようとする奴始めて見た
204 名前:193 mailto:sage [2010/03/22(月) 14:10:15 ] >>200 > &&で繋ぐと、結果が偽になった時点でそれ以降は評価されない 判定式の順番は重要ですか? たとえば a がnullのとき if ( a.Length > 0 && a != null ) { (処理) } とやってしまうと最初の a.Length > 0 で例外が発生したりしませんか?
205 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:10:21 ] フォルダパスからフォルダ名を取得するのってどうすればいいのでしょうか GetDirectoryNameはファイルパスからフォルダパスを求めるもんですし・・・
206 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:10:55 ] それはないわ。
207 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:11:38 ] >>204 左から >>205 DirectoryInfo.Name
208 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:23:47 ] >>203 お前の経験が浅いのではw >>204 &&の前後が逆
209 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:25:22 ] >>207 ありがとうございます!
210 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:26:17 ] null判定を例外で処理しようとするのは初心者
211 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:28:27 ] try { } catch(Exception e) { } なんて書いてるソースはよく見るね
212 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:29:34 ] 初心者スレだから意見を聞きたいなら間違ってはいないが 回答としては無い
213 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:30:50 ] >>211 テストソースとしてならいいんじゃない? それで納品したら次回はないと思うけど
214 名前:デフォルトの名無しさん [2010/03/22(月) 14:31:09 ] いろいろ作り込んだり、ぐちゃぐちゃになったりして、 新規プロジェクト作成したくなる衝動に駆られるよね この衝動に名前つけようぜ
215 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:31:10 ] >>211 まぁそれ自体が間違ってるわけじゃないけど わかってない臭はするな
216 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:32:05 ] >>214 現実逃避
217 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:42:19 ] 別にExceptionで受けてもいいだろ
218 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:44:43 ] >>217 どんなException出しても同じ対応するの?
219 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:48:29 ] >>193 var notNullEmptyAry = ary.Where(s => !string.IsNullOrEmpty(s));
220 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:49:49 ] >>218 後処理がいるのは別にきまってるだろw
221 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:51:52 ] >>219 配列の各要素にnull/空文字列が含まれているかどうかなんて話、誰もしてないぞ
222 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:52:22 ] そもそも>>193 は、正常な処理をif文のブロック内に書いてる時点で ソースが汚いと思う
223 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:01:59 ] どっちが正常なのかは文脈次第じゃないか
224 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:02:22 ] if(a==null && a.Length == 0) return; 処理
225 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:05:44 ] || が正解
226 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:05:52 ] >>223 さすがに配列のオブジェクトがnullで正常処理とか・・・ そういうのが正常だと言える例あるの?
227 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:07:58 ] >>220 致命的な例外もわざわざCatchするんですね かっこいい!
228 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:09:20 ] >>226 ローカル変数ならあると思うけど
229 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:22:37 ] 初心者からかって遊んでるやつしかいないのかここは
230 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:24:22 ] 外部からデータ貰って配列に入れるときとか、0件だと配列そのものができてない つまりnullになることあるな。もちろん0件でも正常
231 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:29:32 ] try-catch はコストが大きいから >>193 のような条件判別では普通>>202 のようにはしない
232 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:37:59 ] >>231 他の言語ならそうだがC#なら正解 エラー処理のために条件分岐やるのはVB6.0で止まっている奴 条件分岐は何かの処理をさせたいから使うわけでエラー処理のためにするべきではない つまりこれだけでいい try { //何かの処理 } catch{}
233 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:39:56 ] >>231 一般的にtry-catch構文はオーバーヘッドが大きいといわれているけど、 C#(clr)でも同じことが言えるの? なにかこの辺について言及したいい記事はありませんかね。
234 名前:193 mailto:sage [2010/03/22(月) 15:41:49 ] >>207 >>208 どうもです(´・ω・`)ノ &&で結ばれた判定式が左から順番に判定されて、条件に合致した時点で残りの判定式の判別は 破棄されるとは知りませんでした。 つまり>>193 は if ( a != null && a.Length > 0 ) { (処理) } と簡潔に記述できるわけですね。
235 名前:193 mailto:sage [2010/03/22(月) 15:42:32 ] >>222 > そもそも>>193 は、正常な処理をif文のブロック内に書いてる時点で > ソースが汚いと思う :(;゙゚'ω゚'):! その件に関しましては常々疑問に思っておりました。 メインとなる処理はif文の中で記述するべきか、外で記述するべきかに関してです。 メインとなる処理はif文の外に書くべきでしたら>>193 は if ( a == null || a.Length == 0 ) { return false; } (処理) とするべきなんでしょうか?
236 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:43:39 ] catchした時は重くなるけど通常は関係ないんじゃないの
237 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:43:53 ] >>234 そういうことはC#ではやらない
238 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:44:25 ] >>230 0件とnullは違う意味で使うだろ、常識的に考えて
239 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:44:27 ] >>235 >>224
240 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:45:38 ] >>235 プログラムはケツまで流すものだとか考えてる人なら 正常処理だけif文に入れる ようは好きにしろ
241 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:47:20 ] >>230 そもそもDBの場合 まず件数引っ張ってからデータ取得しない?
242 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:48:28 ] 条件式のネストを避ける書き方って一般的に何ていうんだっけ?
243 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:49:16 ] >>241 件数そのものを先に欲しい場合はそうするかもしれないが、 普通はカーソル機能を使って最初の1行目だけをもらう。 全部引っ張るようなメモリ食うようなことは避ける。
244 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:52:12 ] rowsよりcountのほうが軽いだろ
245 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:56:43 ] >>235 delegate bool EmptyDelegate(string[] s); EmptyDelegate emp=IsEmp; if(emp(s)) { (処理) } private bool IsEmp(int n) { if ( a == null || a.Length > 0 ) return false; } }
246 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 16:00:15 ] >>245 普通のメソッドでなくデリゲートを使うのはなんで?
247 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 16:11:07 ] 全角変換するなら文頭のスペースだけにしろよ
248 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 16:13:10 ] >>247 おまえがやれ
249 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 16:14:11 ] カッコの中の最初と最後を空けるなら全部に適用しろ 算術記号も同様に
250 名前:193 mailto:sage [2010/03/22(月) 16:15:01 ] >>237 >>239 >>240 どうもです。>>224 さんのようにします(´・ω・`)ノシ
251 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 16:18:22 ] >>249 おまえがやれ
252 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 16:22:54 ] できないのか・・・
253 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 16:40:50 ] >>241 外部ってWebサービスでSOAPで受け取ったりするやつもある
254 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 17:19:50 ] (´・ω・`)←お亡くなりになられました
255 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 17:22:55 ] >>245 C#1.0のような腐った書き方のうえに腐った命名規則
256 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 17:30:51 ] スレタイ読めよ
257 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 17:34:24 ] というかCS0161。論外
258 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 17:45:33 ] >>192 はいそのとうりでボットを作りたいです。もっと初心者向けのスレないでしょうか。
259 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 17:47:09 ] いきなりボット作ろうとする人向けの初心者スレは無いと思う・・・
260 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 19:01:04 ] ちょっとしたプログラムを作って、そのできばえを達人に判定してもらって 技能向上に向けたアドバイスをいただけるスレは無いでしょうか?
261 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 19:03:52 ] ないんじゃね? あっても罵倒の嵐になりそうだし。
262 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 19:04:37 ] >>260 スクエニ社内のボット対策スレへ行け。
263 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 19:32:02 ] >>261 > あっても罵倒の嵐になりそうだし。 。・゚・(ノ∀`)・゚・。
264 名前:デフォルトの名無しさん [2010/03/22(月) 19:44:01 ] 第一 分かりやすいところでBOT開発の情報共有したら 社員にかぎつけられて対策されちゃうだろw
265 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 20:05:45 ] D言語使えばいいじゃん
266 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 20:10:15 ] >>265 【超高速】C/C++に代わる低級言語を開発したい にカエレ
267 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 20:24:02 ] >>224 ナイスジョーク
268 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 21:16:55 ] >>233 記事じゃないけどこれとかどうよ ttp://msdn.microsoft.com/ja-jp/library/x4764854.aspx
269 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 21:17:24 ] >>255 おまえバカ大将
270 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 21:24:02 ] >>269 おまえバカ元帥
271 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 21:25:49 ] >>233 コストを払うのは例外発生時 通常はtrycatchの外とほぼ変わりない .NET アプリケーションのパフォーマンス関連のヒントとトリック msdn.microsoft.com/ja-jp/library/ms973839.aspx trycatchを置き換えるというよりは、条件分岐で例外が投げられるケースを減らす 条件分岐の外を大きくtrycatchで括って漏れた奴キャッチするとかそんなんでもいいの
272 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 21:26:18 ] >>188 WPFの中でDirectX使うのは可能だけど逆は無理 画像に描画するとかすれば無理やりできなくもないけど極めて非効率
273 名前:デフォルトの名無しさん [2010/03/22(月) 22:14:07 ] VisualC#2008のデバッグについて質問があります。 デバッグ中時間がかかる処理をしているところを確認したいのです。デバッグの再生ボタンがグレーの実行状態のときに、どこで実行しているか知る方法はありますか? プログラムは約5000行あり、ブレークポイントを設定する候補の箇所が多すぎる場合、いちいち手動で設定するのではたいへんなのです。 こういう場合、どのようにしたらよいものでしょう?
274 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 22:20:10 ] >>273 毎日どこから質問拾ってるのか?
275 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 22:23:32 ] >>273 ビデオの一時停止みたいなボタン
276 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 22:23:33 ] 5000行で10個のブレイクポイントを張って、どの500行に時間がかかってるか確認。 ってのを何回か繰り返せばすぐわかるだろよ。
277 名前:デフォルトの名無しさん [2010/03/22(月) 22:25:10 ] >>276 目安程度かもしれんがブレイクポイント入れるんじゃなく その場所を通った時間をどこかに出力すればいいかもね
278 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 22:27:34 ] >>273 ブレークポイントを設定するのと同時にコンソール出力のコードを挿入していく。 恒常的に残すときはTrace呼び出しにする。 以降、ログを見るだけでエラーの発生箇所がだいたい分かるようになる。
279 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 22:27:45 ] 少しは頭使えばいいのに。
280 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:04:22 ] \文字を使いたいのですがどうすればいいのでしょうか? なんかプログラムの一部として認識されちゃいます
281 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:05:50 ] \\ または文字列リテラルの中で使うなら @"\"でも可
282 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:09:32 ] >>281 この速さ だから助かる アリガトス
283 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:14:31 ] varってみんな使ってる? 使ってみたけどコードが短くはなるけど わかりにくいような気がする
284 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:15:39 ] foreach (string a in listBox2.Items) { try { File.Move(a, textBox1.Text + "\\" + Path.GetFileName(a)); } catch { MessageBox.Show("err"); } } これでArgumentExceptionはハンドルされませんでした とかってエラーが出る 一応ファイルは移動できてるんだけどなんなんでしょう
285 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:17:58 ] なんのためのcatchだ
286 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:20:16 ] こうした方がよくねーか? codepad.org/wcT2CmWz
287 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:20:50 ] >>284 foreach (var a in listBox2.Items) { try { File.Move(a.Text, textBox1.Text + "\\" + Path.GetFileName(a.Text)); } catch { MessageBox.Show("err"); } }
288 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:22:38 ] >>286 そんなはずかしいことするのはお前だけ
289 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:26:30 ] >>286 と>>284 じゃまったく意味合いが違っていくる >>286 なら1つのファイル移動が失敗しても他のはできる可能性があるが >>284 だと一度例外が出るとその時点で作業がストップする
290 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:28:30 ] 間違った逆だ。>>286 だと例外が出た視点で作業が継続できない 通常複数ファイル移動する場合に一部のファイルが存在しなかったりしても続けるからな
291 名前:284 mailto:sage [2010/03/22(月) 23:33:44 ] >>287 試したけど、'object' に 'Text' の定義が含まれておらず、型 'object' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 というかそもそも目的のファイルは全部ちゃんと移動できてるのにエラーが発生する意味がわからんのです
292 名前:デフォルトの名無しさん [2010/03/22(月) 23:35:22 ] 自分で制御がちゃんとできないならファイルとかフォルダがあるかどうか 確認する機能使えばいいんじゃね? 昔ながらのコードで返してくれるのがあったはず
293 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:36:33 ] >>291 型を指定してないからだろ? listboxの行って確かstring管理だったはず
294 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:42:58 ] listviewitemと勘違いしてたわw
295 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:44:42 ] ListViewItemsは何のコレクションだよ 賢者タイムか・・・
296 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:48:56 ] catch(Exception e) { MessageBox.Show((e.GetTyppe()).FullName+e.Message); }}
297 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:56:51 ] >>283 Hogeclass hogeclass = new Hogeclass();なんかは冗長なので、 var hogeclass = new Hogeclass();にする。 あとはLINQ関係かな。
298 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:00:06 ] >>291 コレクションのアイテムを入れる変数の型が違うとか tryステートメント使ってるのにcatchで例外を捕捉しないとか まず基本を身につけないと例外出る度に自分で対処できないよ
299 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:08:24 ] エクスプローラのフォルダツリーを使いたいのですが、 treeViewで作るしかないですか?
300 名前:デフォルトの名無しさん [2010/03/23(火) 00:14:12 ] というより エクスプローラのフォルダツリーを実現するための部品がtreeviewでしょ? サンプルとかありそうな気もしたけどWPFくらいしかないな
301 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:16:43 ] >>298 例外捕捉するように書いてみたけど問題なく通るからcatchが捕捉するのも何もないようで ArgumentExceptionはハンドルされませんでした 使用されたパラメータが有効ではありません。 が Program.csの [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1());←ここで起きてる } 何が悪いんだ? ちなみにファイルを移動し終わっても異常は無いけどウィンドウを動かしたり最小化したりするとエラーが出てくる
302 名前:デフォルトの名無しさん [2010/03/23(火) 00:18:49 ] しらねえよw プログラム全部が見えないのにw
303 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:26:00 ] >>300 ありがとうございます。 再帰が未熟なのでNodeの追加で悩んでいます・・・。 >>301 映画タイトル決定「この春、Form1で何かが起こる!?」
304 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:27:01 ] >>303 MSの公式サンプル support.microsoft.com/kb/303974/ja
305 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:33:12 ] >>304 ありがとうございます。 見ながらやってみます。
306 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:33:34 ] Cでいうところのfscanf (fp, "%s%lf%lf", name,&height, &weight)みたいに構造体でtxtファイルにデータの管理をするには どうすればいいでしょうか? 今思いつくのはstring型を特定の文字で引っ付けたり分解するものを利用すること位です
307 名前:デフォルトの名無しさん [2010/03/23(火) 00:35:38 ] テキストボックスに時刻を表示しようとしています。 Thread thread = null; private void timer_Tick(object sender, EventArgs e){ thread = new Thread(Thread); thread.IsBackground = true; thread.Start(); } private void Thread(){ textBox.Text = DateTime.Now.ToString("HH:mm"); } これでデバッグしようとしたら、 InvalidOperationExceptionはハンドルされませんでした。 有効ではないスレッド菅野捜査、コントロールが作成されたスレッド以外のスレッドからコントロールtextBox.Textがアクセスされました。 とエラーになります。 これはどう対処したらよいですか?
308 名前:デフォルトの名無しさん [2010/03/23(火) 00:37:04 ] >>275 ほんとだ。これでした。ありがとうございます。
309 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:38:43 ] >>307 codepad.org/xOdJsJie
310 名前:284 mailto:sage [2010/03/23(火) 00:42:32 ] うんごめんなさい 画像をpictureboxから解放せずにその画像ファイル移動したらそりゃエラーもでるよね ここに書いたプログラムとは全然関係ありませんでした ごめんなさい 自己解決しました
311 名前:デフォルトの名無しさん [2010/03/23(火) 00:42:56 ] >>307 すごい。速い…。 これ、Classはひとつの場合でも使えるんですか?
312 名前:デフォルトの名無しさん [2010/03/23(火) 00:45:31 ] >311 早いっていうかスレッドネタは最近多かったのでネタだろと半分思ってるので アドレスを取っておいた 一つの場合っていうか、スレッドから呼ぶならそれ改造すればクラスじゃなくてもいけるでしょ
313 名前:デフォルトの名無しさん [2010/03/23(火) 00:55:58 ] >>312 ネタではなく、初心者で困っていての質問であります。 で、すみません、コードを拝見していたんですが、改造できませんでした…。 さきほどの307にあてはめると、どのようにしたらよいでしょう? Invokeもdelegateもworkerもcallbackもshownも初めてで、かなり手に余っています。
314 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 01:06:48 ] 生徒らの個人情報流出について陳謝する長崎市教委の鈴木徹学校教育部長(右)ら=22日午後、長崎市役所 img.47news.jp/PN/201003/PN2010032201000575.-.-.CI0003.jpg 【春祭り 】また割れ厨のスクショと個人情報が晒されてるぞ避難所17 jbbs.livedoor.jp/internet/7847/ 本スレはこちら 新たな大物をいっしょに探しましょう
315 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 02:49:27 ] あるクラスの中のデリゲートにメソッドを入れたいが、そのメソッドの引数の数が 実行時までわからなくても、問題なく入れられる方法ってありますか? デリゲートのオーバーロードを行って、引数のバリエーション分の デリゲートをあらかじめ用意しておく方法を思いつきましたが、 ほかにいい方法があれば教えてほしいです。
316 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 02:52:09 ] リストにできるものならリスト渡せばいいし できないものならクラス化すればいいんじゃね
317 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 02:56:29 ] >>315 すべての基底クラスがなにか知ってる?
318 名前:315 mailto:sage [2010/03/23(火) 02:57:48 ] なんか勘違いしてたかも…もう少し設計練ります。 ありがとうございました。
319 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 03:08:18 ] timer_Tickでスレッド開始するってのが何がしたいのか意味不明。
320 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 05:10:14 ] ブラクラとか
321 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 14:12:24 ] >>319 意味不明
322 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 15:42:08 ] フォームのタイマでは時計は作れないというのは有名な話 >>309 のSetTextをスレッドタイマのコールバックで呼び出す 30行目以降はいらない
323 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 16:03:48 ] ここで言っていたようにif文内に正常処理を書かないようにし 邪悪なものを最初に弾くようにしたらものすごくコードが見やすくなった 他にこういうことしたらコードが見やすくなるよというのありますか?
324 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 17:42:48 ] リファクタリング
325 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 17:45:51 ] それと同じようなものだけど、例外的な状況を弾くような場合じゃなくて 通常の分岐のときは、なるべくelseを書いてifよりもelseの方が長くなるようにする
326 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 18:07:41 ] 「もしtrueなら」じゃなくて「もしfalseなら」という書き方のほうがいいということですね
327 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 18:21:47 ] 単に長いものは後回しにした方が見やすいからです
328 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 19:48:02 ] ていうか、 { もし false なら 抜ける; trueの時のコード ・ ・ ・ ・ }; とかの方がインデントが浅くて良いとかじゃないのん。
329 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 20:20:40 ] if節が長いかelse節が長いかは判定式に否定演算子を 付けてまわれば逆転するわけで、あまり意味はないわな。
330 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 20:22:02 ] if節を短くしたほうが可読性が上がる
331 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 20:47:19 ] っていうかそんな長いメソッドにはならないから ifでどうのこうのなんてないな
332 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 22:34:41 ] >>323 > ここで言っていたようにif文内に正常処理を書かないようにし > 邪悪なものを最初に弾くようにしたらものすごくコードが見やすくなった やっぱそう思う? 俺も前々からそんな気がしていた・・・ こういうtipsがまとめられたサイトとか本とか無いかな。 初級者以上中上級者未満を対象にした情報源ってあまり無いよな('A` )b
333 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 22:38:50 ] Code Complete
334 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 22:48:06 ] CodeComplete高い 近所の紀伊国屋書店さん3日間も立ち読みしてごめんなさい
335 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 22:48:12 ] 正直、elseより後が長い方が可読的って感覚は微妙。 完全には否定しないけどね。 俺もCの二重インクルード防止のなんかには、一般的な作法じゃないけど 空っぽの#ifdefを書くようにしてるから気持ちは分かる。 ただ、ifのブロックなんてCのインクルードファイルほど行数あるわけじゃないからねえ。 普通は。
336 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 22:49:36 ] 俺はif節がよほど短いならさっさと脱出させてしまうなぁ
337 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 22:52:57 ] ListView.ListViewItemCollection.AddRange(ListView.ListViewItemCollection items) のオーバーロードバージョンてどうやって使うんですか?サンプルないですか? listView1.Items.AddRange(listView2.Items)とかやるとArgumentExceptionになるんですが…
338 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:00:08 ] >>337 実質内部で使う用と考えていい
339 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:03:02 ] >>338 ありがとうございます。CopyToします。
340 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:08:09 ] インデント深くしたくないから、すぐ脱出するコード書くなぁ。
341 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:13:58 ] 画像処理系のソフト作っているんだけど DirectXSDKを使わないとグラボの性能ほとんど使わないのかな?
342 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:23:00 ] いやDirectXと画像処理は関係ない グラボはリアルタイムな処理に使うものであって静的な画像処理にはあまり使われない シェーダ使えばできるけど面倒で制限が多い割には体感的にそんなに速くなるとは思えない
343 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:27:04 ] 思えないね
344 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:40:07 ] 動画だとCUDAとかViewerでもグラボを使っているものがあるから そんなに変わるのかなと思ったんだけど使い方によるんですね
345 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:40:46 ] ていうか、WPF使ったら勝手に使われる。
346 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:42:57 ] WPF使おうが何使おうが明示的にグラボ使わない限りアプリケーションの画像処理には関係ない
347 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:46:35 ] >>346 画像処理と言っても色々ある。 単純なファイル形式変換ならグラボ関係ないが、 拡大、縮小、色変換、フィルタリングとかかけるならWPFやSilverlight使った方が圧倒的に便利かと。
348 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:51:01 ] そうか? 簡単な拡大縮小などで細かい制御を必要としないならともかく シェーダ書くなら余計に手間かかるよ
349 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:53:03 ] >>348 シェーダー書かんでも代わりに色々やってくれるところがWPFのいいところじゃないの。
350 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:56:56 ] WPFでフィルタなどのエフェクトを自作しようと思ったら ビットマップのピクセルをCPUで直接処理するのが嫌ならピクセルシェーダを書くしかない
351 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:57:02 ] >>323 無駄なtrueを書かない。 × if ( flag == true ) { } ○ if ( flag ) { }
352 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:59:56 ] わざわざ28レスも前に指摘することかよ
353 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:01:58 ] ワラタ
354 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:10:45 ] Windows.Formのタイトルバー?(タイトルと拡大縮小閉じるボタンのところ) にコンポーネントを追加することはできますか? 同じボタンを1つ増やしたいのですが。
355 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:11:54 ] >>347 おお、今までWPF使ったことなかったけど使ってみようかな そんな難しい処理じゃなくて画像Viewer的なのを作りたいだけなので 勉強してみようかな
356 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:18:59 ] >>351 > 無駄なtrueを書かない。 > × if ( flag == true ) { } > ○ if ( flag ) { } C畑出身の古参か? 時代は可読性を求める時代だぞ。
357 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:24:06 ] >>356 それは「無駄な可読性」というものだ。 ただし、C#はC/C++と比べてif節はbool型しか取らないから、 自然、これまでよりも式が厳格になる傾向があるけどな(式が非ゼロかどうかの判定とか)
358 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:26:58 ] flagの名前によるな isHoge とかならif(isHoge==true)は冗長だろ
359 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:29:48 ] bool評価なのにわざわざ flag == true って可読性高い? 大切なことなので2回言いましたってことか?
360 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:29:57 ] >>354 まあ無理 どうしてもと言うならタイトルバーなしにしてそれっぽいのを自分で描画する
361 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:35:13 ] >>332 そこで.NET4.0の契約プログラミングですよ。
362 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:43:42 ] >>360 ありがとうございます。 小さいウインドウから元のサイズにするだけなので コンテキストメニューで代用します。
363 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:46:41 ] >>359 ある種の思い込みがある人たちにとってはそうなんでしょ。 思い込みっていうか、たぶん「ifが取るのはbool型の値」という風に論理的に考えず、 経験的に「ifの後に来るのは2項演算じゃないと気持ち悪い」と感じるタイプ。 そういう人は自分の感覚を修正すべきだね。
364 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:51:35 ] flag==true って書くのはいいけど、 flag!=true とか !(flag==true) とか !(flag==false) とかいろんなパターンで使われたらもうイライラ。
365 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 01:19:50 ] これは言葉に直すと素直だけど if(n>0) これはわかりにくいよね if(n<=0) でもelseの方の文を長くしたいならこうなる if(!(n>0))
366 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 01:21:31 ] >>365 もうねろよ。疲れてんだよ。
367 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 01:53:35 ] WPF負荷高いね ボタン4つ作っただけなのにウィンドウサイズ変えると c2dの使用率50%になっちゃう
368 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 01:54:22 ] ねーよ
369 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 01:59:06 ] 負荷は大きい、小さい。高い低いじゃない。
370 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 02:04:15 ] 大負荷 の検索結果 約 5,920,000 件中 1 - 100 件目 (0.28 秒) 小負荷 の検索結果 約 3,390,000 件中 1 - 100 件目 (0.32 秒) 高負荷 の検索結果 約 2,480,000 件中 1 - 100 件目 (0.27 秒) 低負荷 の検索結果 約 1,260,000 件中 1 - 100 件目 (0.42 秒)
371 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 02:09:59 ] 中負荷 の検索結果 約 7,770,000 件中 1 - 10 件目 (0.21 秒)
372 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 02:11:12 ] 結論 負荷は中というのが正しい。
373 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 02:15:40 ] >>322 いつ時計を作ってたの? 時計をタイマーで作るの?
374 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 02:22:53 ] "大負荷" の検索結果 約 10,500 件中 1 - 50 件目 (0.26 秒) "小負荷" の検索結果 約 13,500 件中 1 - 50 件目 (0.28 秒) "高負荷" の検索結果 約 461,000 件中 1 - 50 件目 (0.31 秒) "低負荷" の検索結果 約 123,000 件中 1 - 50 件目 (0.39 秒) "中負荷" の検索結果 約 16,500 件中 1 - 50 件目 (0.33 秒)
375 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 03:07:34 ] "負荷が大きい" の検索結果 約 2,120,000 件 "負荷が小さい" の検索結果 約 1,070,000 件 "負荷が高い" の検索結果 約 69,000 件 "負荷が低い" の検索結果 約 1,600,000 件 "負荷が中い"との一致はありません。 "負荷が中くらい" の検索結果 約 18,600 件
376 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 03:19:07 ] 一方その頃、「そんな大きなフカヒレは入らないよう!」 という夢を中国が見ていた。
377 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 03:36:16 ] いつまでやってんだ。スレタイ読め
378 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 05:35:51 ] 本当に下らないかもしれませんが・・・ *.exe形式で配布〜ローカルにインストールして使う、 WEB上のXMLを取得して処理したり、 XML-RPCでブログ投稿 などを行うソフトを作りたいのですが、 こういうソフトは、どういう単語で検索すれば情報が集められるのでしょうか 勉強するとっかかりが、全くわかりません。 本1冊と、C#入門、みたいなサイトは一通り勉強してきましたが この辺の情報はなかったです。 「WEBサービス」では、サーバサイドの話のようで・・・
379 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 07:06:03 ] XML Web サービスクライアント、だな。
380 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 08:41:42 ] ちなみに「*.exe形式で配布〜ローカルにインストールして使う、」 というのは実行ファイル形式のインストーラーのことだ。 基本的にはこれは.NETで作らない方がいい。 自己解凍書庫、インストーラー作成ツールなどを使う。
381 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 11:18:09 ] グローバリゼーションの警告うぜぇ…
382 名前:デフォルトの名無しさん [2010/03/24(水) 11:41:39 ] directxはc++とかと構造は同じ?
383 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 11:48:42 ] >>382 その質問は、カレーとスプーンが構造が同じかと問うていることに等しい。 ちなみに、DirectXはCOMでできている。
384 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 11:49:29 ] 単なるAPIの塊なのにC++から呼び出す場合とC#から呼び出す場合で違ってたら笑えない
385 名前:デフォルトの名無しさん [2010/03/24(水) 13:48:55 ] レジストリの登録について質問があります。 自作のアプリケーションでjpgファイルを開くために、 registryValue = programpath + " %1"; として登録しました。 これで、アイコンを選んで、右クリックで登録したメニューを実行すると、 「パスに無効な文字が含まれています」とエラーになります。 どうやら、%1を C:\DOCUME~1\USERNA~1\MYDOCU~1\data\20EAE6~1\PIC~2.JPG のように、アプリケーションのショート名(?)に展開しているようです。 これを回避するには、どのようにしたらよいでしょう?
386 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 14:39:12 ] >>383 あっそう
387 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 17:05:37 ] string形式の変数aの指定した行の文字列を取得したいのですがどうすれば取得できますかね
388 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 17:06:27 ] String.Splitで配列に分解してアクセスすれ
389 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 17:08:09 ] >>387 StringReader.ReadLine
390 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 17:11:51 ] >>379 >>380 ありがとうございます。 知りたかった情報が見つかりました
391 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 17:31:41 ] >>385 8.3形式のファイル名が問題なんじゃなくて、programpathに半角スペースが入っているせいで実行ファイルが見つかってないんじゃない?
392 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 18:34:36 ] WPFとC#のコードの連携の説明がどこにもない コードからウィンドウサイズ変えることすらできない 使えない
393 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 18:38:08 ] お前の使えなさっぷりをそんなにアピールしなくても大丈夫、世間は意外に優しいよ
394 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 20:56:25 ] WPFのスレで聞けばいいのに みんな始めたばかりだからやさしいぞ
395 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:17:27 ] 自クラスのprivateフィールド変数もプロパティを 通してでないとアクセスできないようにする方法ありますか?
396 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:20:18 ] 無理だろ
397 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:22:23 ] 特にないな 変数名を\uxxxx並べた理解不能なのにしとくとかどう?
398 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:25:15 ] 自動実装プロパティにするくらい
399 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:35:14 ] 自クラスくらい自分が責任持って扱えよって思っちゃうけど、 複数人で1つのクラスいじってるような場面だとそうはイカンザキ?
400 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:42:59 ] その自動プロパティはgetsetの中身を省略することらしいですが ここに式を記述してもいいのでしょうか? そしたら思っているようなことができそうなんですが public string Name { set{ this.Name=valeu;} } 例えばこんな感じ
401 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:44:20 ] できるようになったら個人的にうれしいけど無理
402 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:45:38 ] >>395 そんなフィールド(とプロパティ)が存在しうるとして、 プロパティーのセッターやゲッターは自分自身を呼び出してバッキングフィールドに 値を代入したり取得したりするんだろうか。 それって無限に再帰することになるんじゃないか? 少しは頭を使おうよ。 まあ気持ちは理解できなくもないがw VBはせっかくメソッド内Static変数があるんだから、ゲッターからもセッターからも アクセスできる位置にメソッド内Static変数が書ける構文さえ用意してくれれば バッキングフィールドを不要にできるんだけどな。 ことほど左様に、VBチームはやる気がなさ杉気が利かな杉。 開発者までVB厨っぽい。
403 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:46:04 ] >>395 それって、ごく普通のプロパティ公開のシチュエーションじゃないの?
404 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:48:03 ] privateな範囲くらいテメェで管理しろってことだろーけどね
405 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:48:13 ] msdn.microsoft.com/ja-jp/ff383208.aspx
406 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:50:34 ] 別ファイルにpartialで分けて、privateフィールドは見ない振りをする
407 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:51:34 ] ProrertyChangedイベントを使えば>>395 のご所望に近いことが出来そうな気が しないでもないでもない
408 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:54:45 ] privateなフィールドに値を代入する時に適切な定義域かどうか確認するのがメンドイとか、そんな理由だろ。 フィールドに属性か何かで定義域指定できるようになったら蝶うれしいぞ。
409 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:55:31 ] そしてDbcへ・・・
410 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:57:15 ] privateな範囲ならDebug.Assert入れとけばいいじゃん
411 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 23:02:04 ] 正直契約プログラミングはかなり興味ある。
412 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 23:02:36 ] 興味あるならVS2010試そうぜ
413 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 23:03:49 ] ああ、そういうことか。 自分のクラスのprivateなメンバ変数に対してアクセスせず、 常にプロパティ越しにアクセスしたい、ということか。 すればいいじゃん。 こういうのはコーディングテクニックじゃなくて、ポリシーで解決すべきことがらだ。 どうしてもこねくり回したいなら private変数と抽象プロパティを定義した親クラスを作って継承すればいい。 そんな必要性は感じられないが。 だいたい、VSなら特定の変数がどこで参照されてるか全検索は簡単にかけられるんだから、 一括で修正してしまえば済む話。
414 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 23:04:34 ] すべての変数がプロパティになればいいのに
415 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 23:08:51 ] 元の木阿弥
416 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 23:12:42 ] まあ現実的な妥協としてはEditorBrowsable(false)を付けるぐらいかね。 あとは>>413 の言うようにベースクラスのプロパティをフィールド代わりにするか。 でも一番の方法は、そんな下らないことは考えないこと。
417 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:34:54 ] >>414 否、すべての変数はグローバル変数とするべきだ
418 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 02:21:04 ] ( ̄ー ̄)ふっ
419 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 03:19:34 ] (^-^)♪
420 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 04:35:11 ] ttp://msdn.microsoft.com/ja-jp/ff357685.aspx この連載いいねー簡潔でわかり易いし 疑問に思ってたことがいくつか解決した C#4.0はpythonでやってたようなことができるみたいだな
421 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 07:32:33 ] C#のクラスってC言語でいう構造体の延長だろ たくさんのデータを含めるし。
422 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 07:37:21 ] えっ!?
423 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 07:40:40 ] 第12回の「4. スレッド プールの何が問題なのだろう?」の話がかなりでたらめな件
424 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 07:52:00 ] でたらめはお前だカス
425 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 07:52:18 ] Indexというプロパティで配列の添え字範囲チェックしてるんだけど Indexを呼び出す側でもやっぱり添え字でチェックして2重になってるんだけど やっぱそういうもんですか? それとこの場合ゲッターの戻り値どうすればいいでしょうか? public int Index{set{if(0<=value)_index=value;}} private void hoge() { }
426 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 07:55:05 ] 誤って途中で書き込んでしまった private void hoge() { ++Index; if(0<=idx && list.Count>idx) a(list[idx]); }
427 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 08:39:59 ] >>425 基本的に、添字チェックはCLIのレベルで自動でやってくれるから必ずしもやらなくていい。 (すなわち添字チェックは最悪ひとつも書かなくていい。失敗したら例外が発生する) で、そのセッターってなんかおかしくね?
428 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 09:16:02 ] てことは、tryで包み込むということかな なんかどこまで例外処理を書けばいいか迷うね 下手したら同じ例外処理をいくつものクラス間で 3重4重やってしまうことになるわけで 続行して問題が出る場合以外は 条件分岐を極力書かずにtryで済ませる方が いいような気がしてきた
429 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 09:22:04 ] 例えば、picturebox.loadにしてもファイルが無ければ平気でエラー出して強制終了なるし GetDirectoriesでもアクセスできないディレクトリを検索してエラー吐くし .Netで用意されているクラスですらエラー出すんだから 正常な値であるはずという前提で作っていった方がいいのかな
430 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 09:30:11 ] おいおい・・・
431 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 13:19:43 ] >>428 最初の質問の時に「2度も添字チェックが必要なのかと」問われたので 必ずしもやらなくてもいいと答えただけで、 例外処理と明示的な添字チェックと比較して、 より書きやすい方法で書けばいいんだよ。 で、添字処理を自前でやるsetter/getterって、 C#で今まで必要になったことが一度もないんだが。オレだけ? 標準ライブラリのコンテナ使うだけで、困った事無い。
432 名前:デフォルトの名無しさん [2010/03/25(木) 15:12:48 ] Graphicsで縁取り文字列を書こうとしてて問題が出てきたので誰か良い案があったら教えて下さい ↓のようにAddStringでpathに作ったアウトラインをWidenで太くしてやるやり方が ググッたらシンプルなので使おうとしたのだけど、フォントサイズに対してWidenで太くする サイズ(コード内でいうwidth)がでかくなるにつれ漢字などの細かい部分で意図しないツノが生えてきてしまうんだ (このコードで言えば「刷」の左上など) この現象の回避策や、他のシンプルな縁取り文字作成方法があったら教えて下さい(元からそういうフォントを使えというのは無しで) // gはGraphics, pathはGraphicsPath Font font = new Font("メイリオ", 26.25, FontStyle.Bold); Single sizeInPixels = font.SizeInPoints * g.DpiY / 72F; // ピクセル単位のサイズに変換 Single width = 5.0F; path.AddString("印刷中", font.FontFamily, (Int32)font.Style, sizeInPixels, new PointF(10, 10), null); using (Pen pen = new Pen(Color.Black, width)) { path.Widen(pen); } g.FillPath(Brushes.Black, path);
433 名前:デフォルトの名無しさん [2010/03/25(木) 15:50:35 ] >>432 ですけど自己解決しました。 Widenに使うPen(コードで言うpen)のLineJoinプロパティをLineJoin.Miter(デフォルト)以外にしたら出なくなった。 ついでにLineJoinの値によっては柔らかい感じにもできることが分かって さらに得した気分。 お邪魔しました〜
434 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 17:06:25 ] 添え字のエラーを例外で処理するのはダメだろ 原則「発生したらバグ」の類の例外だ それにIndexOutOfRangeやNullReferenceのような例外は一度出たら 頻繁に出ることが多いので例外で処理すると極端にパフォーマンスが低下することがある
435 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 17:12:11 ] はぁ!?
436 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 17:19:05 ] public/protectedメソッドorプロパティで外部から渡されたのに出すのはいいだろ privateな部分では(渡す前に)Length参照した方がスマートじゃないでしょうか
437 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 17:24:02 ] >>436 おいおい・・・
438 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 18:35:00 ] 自前のファイル入出力クラスで指定ディレクトリにある ファイルを取得しstring[]で返すのを作ったとして そのクラスを利用する側もやっぱりファイルがあるのかないのかチェックし さらにそのクラス利用する側もファイルがなかった場合を想定してコードを書かないといけない この同じチェックは永遠に続くの?
439 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 18:52:03 ] >>438 書きたければ書けばいいし、例外処理で済ますなら済ませればいい。
440 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 19:00:47 ] カスタマイズ可能なキーボードショートカットを実装したいです。 まず、 Up, Scroll, 20 Down, Scroll, -20 Right, Next Left, Prev というふうなテキストファイルを読み込んで、キーとメソッドを結び付けたいです。 (この例では、左からキー、メソッド名、パラメータにしてます) 具体的な実装方法として思いつくのが ・キーとメソッド名をもつ連想配列を用いて、switch文で分岐してメソッド呼び出し。 ・switch文ではなく、リフレクションでメソッド呼び出し。 なのですが、上のはコードが冗長になりますし、下のはパフォーマンス面で不利かもしれません。 キーとデリゲートを持つ連想配列を用いて呼び出せればスマートだとは思うのですが、 引数が異なると別のデリゲートと、それを入れる連想配列を用意する必要がある(と思う) ので悩ましいです。スマートにこなす方法なんかがあればアドバイスお願いします。
441 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 19:06:18 ] >>440 匿名メソッド
442 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 19:24:27 ] パフォーマンス気にするところじゃないな
443 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 19:38:46 ] >>440 その1行分を表現する構造体を作って、XMLSerializerでさくっと読み書き。 アプリ上ではDictionaryか何かの表持たせておく。 キーイベントを受け取ったら表を見て登録したメソッドを呼び出す。 メソッドの登録はdelegateかラムダ式を使えばいい。
444 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 20:39:31 ] ラムダ式の登場です。
445 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 20:52:59 ] 果たしてふらっとスレの行く末やいかに!?
446 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 21:05:06 ] 質問です ListViewのチェックボクスのチェックを付けたり、外したりするのは画面からクリックしたときではないと無理なのですか? ソース内でチェックを書き換えたいのですが、CheckedListBoxのSetItemCheckedメソッドみたいなのが存在しないみたいなので困っています もともとはCheckedListBoxを使用していたのですが、アイコンを表示するためにListViewに変えました チェックの状態が変わらないとItemCheckイベントも起きないですし、何か方法はあるのでしょうか
447 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 21:23:25 ] ListViewItem.Checked
448 名前:デフォルトの名無しさん [2010/03/25(木) 21:43:06 ] DataTable で自動で計算する項目があるんだけど、 DataColumn.Expression では計算できないので、 DataTable.TableNewRow イベントで値を計算して入れようと思ってます。 これを XML で保存するために WriteXml すると自動で計算した項目も出力されると 思うのですが、自動で計算した項目は出力しないようにする方法はあるのでしょうか?
449 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 21:55:30 ] >>448 属性をつける
450 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 21:58:30 ] >>447 listView1.SelectedItems[0].Checkedのことですよね? これってSelectedItemsには今チェックされている項目が格納されてると思うんですが、 このプロパティではチェックされている項目のチェックを外すことは出来てもチェックが付いていない項目にチェックを付けることは不可能ではないですか?
451 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 22:02:17 ] >>448 Copyして列をRemoveしたあとでWriteXmlするとか? >>450 Itemsからアクセスすりゃよかろう
452 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 22:03:59 ] おおこんな簡単だったんですね ありがとうございました
453 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 22:16:13 ] >>449 それとあんたうざい
454 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 22:31:10 ] >>453 ハァ? 無視させたいフィールド、プロパティにXMLIgnore属性をつけておいて、 XmlSerializerに食わせて吐き出させればよい。
455 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 22:37:55 ] やってみろw
456 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 22:43:15 ] webBrowserコントロール上でマウスカーソルが動いた時にイベントを拾いたいんですけど なにか方法がありますか?FormとかButtonだとMouseMoveイベントがあったけど、それと 同等の機能がwebBrowserには見当たりません。
457 名前:デフォルトの名無しさん [2010/03/25(木) 23:12:08 ] >>454 DataTable のカラムに XMLIgnore 属性つけられるなら やってみせてくれw
458 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 23:14:05 ] IXmlSerializable実装して自分でシリアライズするかどうか決めたら
459 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 23:14:56 ] >>457 ハァ? てめーがやれ。
460 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 23:17:29 ] >>458 それ結局XML吐く処理を全て自前で書くという意味だけどわかってる?
461 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 23:18:25 ] >>460 おお
462 名前:デフォルトの名無しさん [2010/03/25(木) 23:18:54 ] >>459 馬鹿だからできねぇってこと知らないの?
463 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 23:20:14 ] o(´・ω・`) ぶつお
464 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 23:53:40 ] エクスプローラだとフォルダのプロパティで フォルダ数、ファイル数が瞬時に出ますが こういう機能はありますか?
465 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 23:55:37 ] 瞬時に出ないよ。たくさんフォルダ・ファイルがあるところで見ると、 一生懸命カウントしてるのがわかる。
466 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 00:06:03 ] なるほど あれはGetDirectoriesやGetFilesやるしかないですか? ファイルやフォルダ検索の進行状況を表示させたいので まず数を取得してやろうと思っていたんですが
467 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 00:17:52 ] なるほどなるほど
468 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 01:51:45 ] >>441-444 設定ファイルを読み込んだときに、 delegate void Invoke(); Invoke inv = () => Scroll(20); てな感じのデリゲートをこしらえて辞書に登録すれば、呼び出し時はスマートに済ませそうですね。 こしらえるときは地道にswitchで分岐するとして。 しかしこれは、戻り値を返すメソッドの場合は呼び出し側に値を返せない欠点があります。 でも、戻り値を返すようなメソッドをキーに割り当てる場面は今のところないのでこれでいってみます。
469 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 02:26:54 ] コマンドのシグネチャを void Execute(object[] parameters); みたいにして、パラメータを配列で渡せばいい
470 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 07:19:29 ] >>456 www.k4.dion.ne.jp/~anis7742/codevault/00110.html
471 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 10:40:57 ] お世話になります。 以下のこと、教えてください。 VisualStudioにてユーザーコントロールやカスタムコントロールを作成し、ビルドすると、 そのコントロールがツールボックスの”(プロジェクト名)コンポーネント”といったタブ内に デフォルトで配置されます。 このデフォルトの配置場所を任意のタブ内(該当タブが無ければ新規作成)にすることは可能でしょうか? 属性でなんとかなりそうな予感がしていたのですが、どうにも見つけきれませんでした。 よろしくお願いします。
472 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 10:44:25 ] >>471 そこは開発側で手をいれるところでなく、運用側で対処すべき問題だと思うんだが、どうよ。
473 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 10:58:04 ] codepad.org/YCZ12iRD WINDOWSフォームを作っていてテストでちゃんと読み込んでいるかチェックしようとしたのですが chengebox1にチェックを入れるとエラーが起きます。どこがおかしいのでしょうか
474 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 11:06:27 ] >>472 やはりそこは個人々々でなんとかしてもらうしかないですかね。 ありがとうございました。
475 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 11:17:37 ] >>473 エラーが出たならエラーの内容書けよカス
476 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 11:32:32 ] >>473 URLのソースコードを見てみたが、 とりあえずbutton1を押した後じゃないとcheckBox1は押しちゃいけないように見える。 というか、こんなレベルで詰まってちゃ何もできないぞ。 不具合が出たらデバッガで1行ずつ動かしながら再チェックする習慣をつけよう。
477 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 14:42:01 ] >>475 カス
478 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:39:08 ] www.atmarkit.co.jp/fdotnet/dotnettips/242htmlencode/htmlencode.html このサンプルを動かそうと思ったのですが html = ExpandTabs(html); ネットで調べたのですがExpandTabsの所在がわかりません。 どれをusing指定すればいいのでしょうか?
479 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:44:31 ] >>478 何も考えずにソースをそのまま入れてみて ExpandTabsにカーソルを合わせてみ
480 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:46:44 ] xxxx.ExpandTabsの形でないってことは同一クラスってことなんだが
481 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:48:07 ] >>479 そういう意味じゃなくて・・・ 2004年当時と違って場所が変わってるようなので サンプルソースのusingだけだと エラー 3 名前 'ExpandTabs' は現在のコンテキスト内に存在しません。 となるんです。
482 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:51:03 ] ああ・・・ 失礼しました sjis使わないので・・と思って頭の方全部すっとばしてみてませんでしたorz
483 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:57:11 ] しかし意味不明な言葉だ… > サンプルソースのusing
484 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 16:41:26 ] コピペも満足にできないのはつらいな
485 名前:デフォルトの名無しさん [2010/03/26(金) 19:38:17 ] msdn.microsoft.com/ja-jp/magazine/dd882520.aspx のカレンダーで遊んでみようと思っています。 このプロジェクトを開くと、 Microsoft.Windows.Controlsと Microsoft.Windows.Controls.Primitivesの参照が必要なので、 WPFToolkitをダウンロードし、参照を追加しました。 それでもMoonPhaseCalendar/MainWindow.xamlの、 <vsm:VisualStateManager.VisualStateGroups> の行で、 アタッチ可能なプロパティVisualStateGroupsが、 型VisualStateManagerに見つかりませんでした。 とエラーになります。 これにはどう対処したらよいでしょうか?
486 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 21:07:29 ] WPFのデザイナにはよくあること まず気にせず実行してみる
487 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 22:10:49 ] フォームのデザインを2種類、切り替えられるアプリケーションを作っています。 複数のフォームで値を共有するにはどういった方法が適切ですか? 今は1つのフォーム内(Form1.cs)に切り替えられるよう書いていますが、 デザイナが使えないのは何かとても間違っている気がします。 1つのコンポーネントを2つのフォームから参照できるとスマートだと思うのですが・・・ よろしくお願いします。
488 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 22:17:53 ] >>487 Document-Viewアーキテクチャだね。 Viewから保持するデータ(Document)を分離する。 もたせ方は、コンストラクタで渡そうがプロパティで引き渡そうが好きにすればいい。 それよりも、メインのフォームを切り替えるのがちょっと面倒そうだなー、と心配するかな。
489 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 22:35:56 ] >>488 ありがとうございます。 Document-Viewアーキテクチャを見ると、 「そのためにWPFがあるのです。」という空耳が聞こえます、気のせいですよね。 ご指摘の通り、そこで悩んでいます。 フォームの値をまとめた構造体Dataなどを作って、 Form2 a = new Form2(); a.Data = this.Data; this.Close(); みたいにしてもいいのでしょうか?
490 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 22:39:22 ] >>489 だよね。 その書き方だと、this.Close()を呼び出した直後にProgram.csのMain関数が終わってしまう。 そこでMain関数内をループ構造にして、 Application.Runを複数回呼び出せるようにするとどうだろう。 そのタイミングでメインフォームを切り替えるとか。
491 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 22:49:32 ] WPFのコードビハインドとXAMLの関係は、物理的にビューとロジックを分けて 分業しましょうっていう考え方でDoc-Viewとは違うよ XAMLはWinFormsのDesigner.cs相当で、コードビハインドとは別にXAMLだけを入れ替えるようなことはしない そういうのはMVVMとかもっと高次の枠組みでやる
492 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 22:50:16 ] >>490 bool run = true; while(run){ Application.Run(new Form1()); Application.Run(new From2()); } どう・・・なんでしょう。 Program.csにData(Document)保存した方がいいような気もします。
493 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 22:55:01 ] >>491 ビューと"ロジック"なんですね。 参考になります。 WPFはスケッチブックと色鉛筆渡されたような気持ちになるので触る勇気がまだありません・・・。 ちなみに、Formは大学ノートとシャーペン。
494 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 22:56:57 ] ManageForm.Visible =false
495 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 22:59:11 ] ManageForm.Visible =true
496 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 22:59:36 ] >>494 メモリ×2 でも、それも手段の一つです。
497 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 22:59:39 ] >>489 そもそも「フォームの値」などというものが存在していることそれ自体がおかしい。 WPFとか関係ない。 聞いた感じクラスを使ったプログラミングが理解できてないようだから まずそれを覚えないことには話にならないよ。
498 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 23:00:18 ] >>493 そこじゃないw WPFでいうビューとロジックの分離っていうのは、デザインとコードをはっきり分離できていれば デザインはデザイナが担当してコードはプログラマが書くという形で分業できるという考え方。 だからDoc-ViewやMVCでいうならXAMLもコードビハインドもViewに属する。
499 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 23:15:20 ] >>497 フィールドの受け渡し、と言うべきでしょうか。
500 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 23:17:30 ] 言い直しても理解できてなけりゃ同じだろう
501 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 23:24:59 ] 俺だったらフォーム分けないな Panelか何かに配置して入れ替える おそらくデザイナ使いたいからその辺を避けようとしてるのだろうけど だったらUserControlでも継承すればいいんだよ
502 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 23:26:52 ] >>492 おかしなことせんとApplicationContext使えば?
503 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 23:39:01 ] >>501 >>502 ありがとうございます。 両方試してみます。
504 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 23:41:08 ] クラスライブラリ書くとき内部クラスにするの面倒くさいのでinternal使ってよいですか?
505 名前:デフォルトの名無しさん [2010/03/26(金) 23:48:20 ] 例えば 今日の朝生の出演者名簿から 今日の討論の流れをシュミレーションするには どれぐらいの経験がひつようでしょうか?
506 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:20:58 ] >>501 その方法で解決できました。 ありがとうございます。
507 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 03:08:31 ] >>506 だろ 継承すればいいだろ
508 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 07:26:53 ] >>505 朝生視聴歴10年くらい
509 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 11:52:38 ] ネットの画像を保存する方法は? タイマーとか使って一定時間ごとに自動的に保存するようなのを作りたいんだけど。
510 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 11:57:57 ] 画像がJPEGとかなら、普通にダウンロード。 WebBrowserで取ってきて、キャプチャってのもありだね。
511 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 12:43:16 ] >>509 dobon.net/vb/dotnet/internet/downloadfile.html ほい
512 名前:デフォルトの名無しさん [2010/03/27(土) 15:42:11 ] C#にてWindowsフォームアプリケーションを作成しています。 DataGridViewを置き、 実際に内容が表示されている(値のある)行をクリックしたときはその行を選択状態にさせ 実際に内容が表示されていない下部の余白をクリックしたときは、選択状態を解除したいと考えているのですが、 余白をクリックしたことを検知するにはどのようなイベントを行えばよいのでしょうか。 よろしくお願いします。
513 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 15:43:24 ] HITTEST系のイベントなかったっけ?
514 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 15:46:29 ] >>512 欄外をクリックしてChange系イベントをもらったときに 選択中のindexを問い合せると-1が返ってきたりしない? ListBoxではそういう動きをする。
515 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 15:55:19 ] そのものずばりの HitTest() メソッドがあるな。
516 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 17:33:14 ] あっそ
517 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 17:43:57 ] できた private void dataGridView1_MouseDown(object sender, MouseEventArgs e) { if (dataGridView1.HitTest(e.X, e.Y).RowIndex < 0) { MessageBox.Show("hoge"); } }
518 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 18:26:20 ] できたね
519 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 18:42:29 ] おめでとう。
520 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 18:45:50 ] Visual Studio C# Express Editionで、 フォームの入った.csをエディタでいじってフォーム部分を壊してしまったとき なんとか復活させる方法ないでしょうか。 Express Editionのフォームデザイナが異常終了しちゃうんです。 ビルドはできるし、できあがったexeも実行出来るんですけど。 フォームデザイナだけ言う事聞いてくれない。
521 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 18:47:26 ] 異常終了って何だよ? 赤いバッテンが出るとかか?
522 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 18:58:49 ] ソースのほうを直すしかない
523 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 19:05:55 ] exeから逆コンパイルすればいいのでは?
524 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 19:11:20 ] >>523 一言余計だ
525 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 19:15:04 ] 何がやねん
526 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 19:34:25 ] せやな
527 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 19:42:22 ] これだから大阪民国人は・・・
528 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 19:50:42 ] せやせや
529 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 20:05:06 ] でんがなまんがな
530 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 20:26:11 ] 日本人の97%は朝鮮人か中国人の直系
531 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 20:30:55 ] そういう言い方だと、朝鮮人とか中国人ってのも意味ないんだけどな。
532 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 20:36:43 ] 全人類はアフリカの女性からだっけ? 全員はアフリカ人だな
533 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 21:11:33 ] >>521 うん。そう、それ。 Visual C#でエラーが発生したため終了します。 エラー報告を送信する しない × データが失われる可能性を防ぐため、デザイナの読み込み前には以下のエラーを 解決する必要があります。 × オブジェクト参照がオブジェクトインスタンスに選定されていません。
534 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 21:17:26 ] ちょこちょこ直してくしかないんじゃないかなぁ。
535 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 21:39:12 ] 初心者なんでどこがエラー原因なのかさっぱりわかりませんよー
536 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 21:42:03 ] じゃ、あきらめろ。
537 名前:デフォルトの名無しさん [2010/03/27(土) 21:45:05 ] >>517 マウスでクリックしたときのイベントを書くとき、 MouseDown,MouseClick,Click,MouseUp どれを使うのが適切なの? イベントの発生順がちがうのは分かるけども、 どれか1つしか書かないときはどれが望ましいのか分からないっす (-_-;);
538 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 21:46:39 ] クリックでいいじゃん
539 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 21:47:29 ] 処理による。イベントによって取れる情報が違うし、タイミングが重要なこともあるからね。
540 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:00:13 ] >>533 実はVSのデザイナーはいろんな理由で落ちる不完全な代物なので、 そういうものだと思っておこう。 落ちた位置自体はレポートされてるから、 それを参考に修正する。大抵はコンストラクタ周り。
541 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:27:52 ] 現在、.net Framework3.5で開発中です。 特定のディレクトリの配下すべてを 1つのファイルにバックアップ・リストアする機能を作成しています。 (イメージ的には、zip圧縮と解凍) 圧縮はSystem.IO.Packageのクラスでどうにかできたのですが、 解凍がうまくいきません。 今やっている考え方は、 packgeのオープン→ファイルパス取得→取得したファイルパスからファイルをコピー の流れで、パス取得とコピーを繰り返している状態です。 なぜかコピーできるファイルとコピーできないファイルが存在していて困っています。 なお、ソースで圧縮したzipファイルは、laplusで解凍、ファイルが適切に存在していることを確認しています。 誰か理由を知っていますか? また、代替案をご存知ですか? #J#のライブラリによる圧縮・解凍や、フリーのライブラリを利用することは現状考えていません。 よろしくお願いします。
542 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:29:46 ] オセロの盤面のようなものを描きマウスクリックする事で 左1右3とマス目を取得するプログラムを作りたいのですが 参考になるサイトなどがあったら教えてください
543 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:30:27 ] すみません 左1上3でした
544 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:32:24 ] >>541 System.IO.Packagingはzipファイル作るためのライブラリじゃないよ Open Packaging Conventions、つまりxpsとかのためのパッケージ仕様
545 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:34:16 ] >>541 そもそも ZIP 用ってわけじゃないので、ダメかも知らんね。 まっとうなライブラリ使った方が早いと思うよ。 >>542 たかだか 64マスなんだから、PictrueBoxとか配置しちゃうってのもひとつの手。
546 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:37:03 ] >>542 void form_MouseUp(object sender, MouseEventArgs e) { int x = e.X / マス目の幅; int y = e.Y / マス目の高さ; }
547 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:39:29 ] >>544 回答ありがとうございます。 Open Packaging Conventions用のクラスだというのは承知です。 固定のアプリからの圧縮・解凍ができればおkらしいです。 本当ならJ#のライブラリを使ったら簡単というのはわかるのですが、 いかんせん仕様上使わない方向らしいです。 もし完全に無理なら仕様変更を訴えてみます。
548 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:41:40 ] その仕様を決めた奴に聞けよ。
549 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:43:03 ] >>545 回答ありがとうございます。 やっぱり無理そうですか…。 まっとうなライブラリとはどんなライブラリですか?
550 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:43:36 ] GZipStreamでも使って独自フォーマットでまとめて突っ込めばいいじゃん ヘッダにファイル名とサイズさえ書き込んでおけば充分だろ
551 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:44:44 ] >>548 仕様を決めた人は、C#を知らないわけでorz。 無理なら無理と言い切りたいのですが、圧縮だけはできてしまったので困った次第です。
552 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:44:51 ] 7zip
553 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:45:46 ] GZipStreamは単一ファイルにしか使えないからないわ。 >>549 フリーのライブラリがいろいろ転がってるだろ? サポート云々とか言うなら、PkZipのがいいな。
554 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:47:15 ] 仕様を決めたやつがC#知らないんだったら、「これじゃできません」って言っても 否定はされないだろ。
555 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:47:28 ] サポートとか無くていいならこれおすすめ dotnetzip.codeplex.com/ pureC#で使いやすい
556 名前:541 mailto:sage [2010/03/27(土) 22:51:09 ] 1人1人に返すのが大変なので一括で。 初め、GZipStreamも考えたのですが、 ・必須仕様 →アプリ上で圧縮・解凍が可能。 ・推奨仕様 →アプリ外でも解凍可能。 という感じだったので、却下した次第です。 あと、フリーのライブラリも検索で引っかかってたのですが、 商用利用のために怖いと上の人間に言われて却下状態です。 無理ぽなら、月曜にでも理由を言って、改善案を作ってもらいます。
557 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:00:28 ] zlibでもP/Invokeしてきて使えば いくらフリーといってもさすがにzlibを信用できないなら何も使えないでしょ
558 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:00:40 ] あの…ここ…初心者用…
559 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:04:41 ] >>556 プログラムの安定性は実績で決まるのであって、 商用かオープンソースなのかは全然関係ないんだけどな。 オレはアーカイブ内のファイル構成はSQLiteで外部で管理してるよ。 データファイル側はただ単に暗号化して連結してるだけ。
560 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:07:06 ] 怖いのは安定性じゃなくてライセンスだと思うよ、多分
561 名前:541 mailto:sage [2010/03/27(土) 23:07:51 ] >>557 了解です。 zlibも検討します。 >>558 知ってるか? 俺はC#はじめてまだ5ヶ月だから初心者なんだぜ。
562 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:09:22 ] >>553 ちゃんとzip用のヘッダさえ書いてやれば、 ファイル一つ一つの圧縮はGZipStream使ってもれっきとしたzipファイルが作れるんだぜ
563 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:09:25 ] >>560 ああ、ライセンスね。そのライブラリは調べてなかったな……。 って、Ms-PLじゃねえか! .NETの世界で一番有名なオープンソースライセンスなのに、 怖いとかモグリだろ。
564 名前:541 mailto:sage [2010/03/27(土) 23:10:14 ] >>560 そういうこと。 できたらおkじゃないところが痛い。
565 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:11:26 ] まあオープンソース=GPL汚染というのはやはり根強い印象があるよねー
566 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:12:59 ] >>555 のようなMS-PLなら全く問題ないだろ 最近のMSのサンプルやMSがオープンソースで公開してるライブラリもほとんどMS-PL
567 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:16:21 ] C#すげーな
568 名前:541 mailto:sage [2010/03/27(土) 23:16:46 ] みなさんいろいろありがとう。 とりあえず結論としては、 ・標準ライブラリはやめとけ。 ・dotnetzipができるならいい。 ・ダメならzlibでどうにかする。 ・それでも無理ならあきらめろ。 でおk?
569 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:18:47 ] まあ自作しろって言われるのがオチだな
570 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:20:17 ] PKとかのライブラリ買え、ってのが抜けてる。
571 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:20:19 ] .NET4では大量のMS-PL由来のライブラリが本家.NETに統合されるよ WPFの新しいコントロールとかDLRとかMEFとか新機能の多くがMS-PL
572 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:22:20 ] deflateの自作は重すぎ。
573 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:23:06 ] >>568 541が使用している標準ライブラリは必ずしも選択は間違ってないけど、使い方がおそらく間違っている。 dotnetzipで問題ないだろうけどこのスレのやつが実際に確かめたわけではないので、自分で調べて考えろ。
574 名前:541 mailto:sage [2010/03/27(土) 23:26:56 ] とりあえず、自作する方向でも、一度上の人と相談します。 >>573 の言うとおり、使い方が間違っている可能性もあるのでそれも含めつつ。 ダメなら即効白旗揚げて、対策考えてもらいます。 ありがとうございました。
575 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:29:24 ] あのよ、コスト考えろよ。ZIP圧縮・解凍ライブラリなんて自作してたら、 どんだけ時間かかると思ってんだよ。
576 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:31:33 ] 当該アプリで圧縮したものは、他のアプリでも伸張できるけど、 当該アプリで伸張できるのは、当該アプリで圧縮したものだけ という仕様でよければ、自分で実装するのも然程困難ではない
577 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:36:10 ] そんな実装するくらいなら、BSDライセンスのライブラリでも探すわw
578 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:38:24 ] そんなロクにテストもしてない実績もない バグだらけの糞自作ライブラリなんかそれこそ怖くて使いたくないわ
579 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:38:58 ] >>540 あれ、レポートされてたっけ。 また今度じっくり向きあってみます。 自分が組み上げたコードじゃなく引き継いだものなので、 どこがどーなってるかさっぱりなんですがねw
580 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:40:47 ] 誤解されそうなので補足しとくけど>>578 は拾ってきたライブラリを使うんじゃなくて 自分で実装する場合の話ね
581 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:42:50 ] よく「設計した人から言われたんで」みたいなこと言うやついるけど、 きちっと筋道建てて論破できない時点で、そいつも同罪。
582 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:42:56 ] >>576 作るのは簡単だが、世間並の圧縮率にするのと、バグがほとんどないと思えるレベルの安定性にするのが大変
583 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 02:44:06 ] Ms-PLのdotnetzipはどう使えばいいの? 黙って実装しても問題にならないの?
584 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 03:13:13 ] オレは業務でZIP書庫作る必要があって、結局は自前でやったなぁ 実データはDeflateStreamで済むしヘッダだけ実装すればいいだけだよ
585 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 03:22:29 ] シェアード ソース ライセンス www.microsoft.com/japan/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx 商用アプリに利用して一緒にバイナリを配布してもOK。詳しくはライセンス原文を参照してくれ。
586 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 04:28:12 ] .NET界隈はわりと自由なライセンスが普及してて良い
587 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 04:29:33 ] >>586 隠したくても隠せないしねw
588 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 04:40:44 ] まぁ、使っていいって言ってくれてるんだから隠す必要はないな。 ライセンスで認められた範囲で堂々と使うといい。
589 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 05:17:35 ] 許諾者は、著作権、特許権、商標、またはその他の形式の出所をコード内に常に示しておく必要があります ここがよくわからないんだけど、結局配布する場合どうすればいいの?
590 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 09:51:03 ] www.microsoft.com/japan/opensource/licenses.mspx#Ms-PL 今はこっち >本ソフトウェアに含まれるすべての著作権…の表示を維持する必要があります。 だから元々そういう表示が含まれている場合は消すなってことだろう
591 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:23:35 ] >>587 隠す方法はいろいろある。ネイティブにもできる。
592 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:36:10 ] 流れを読まずに質問です。 C#で使えるコントロールのライブラリってないでしょうか? ・ゲージやメーター ・Officeっぽい、Vistaっぽいコントロールのスキン表示 ・スキン機能 こんな機能があるライブラリがあれば名前だけでもいいので教えてください。 商用ではいくらでもあるのですがライセンス料が高すぎるのでできればオープンソース のライブラリを教えて頂ければと思います。 日本語・英語は問いませんが、日本語を使用しても問題のない方が望ましいです。 注文だらけですが、もし知っておられる方がいましたらお願いいたします。
593 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:36:58 ] WPF
594 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:02:22 ] いやWPFはNFW3.5以降ということなので、NFW2.0以降で使用できるライブラリを お願いします。 というか最初に言い忘れてました、ごめんなさい
595 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:06:23 ] NFWって略は初めて見たかもしれない
596 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:17:50 ] 聞いたことないな .NETのオープンソースが盛り上がりだしたのって最近MSがオープンソースに積極的になってからだからな WPF使えば一瞬でできる報われないことをわざわざやる人もいないだろ
597 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:40:38 ] いやNFW3.5にするとWin2000を切り捨てざるを得なくなるので、それを避けたいだけなのです。 フリーではライブラリはないか、または聞いたことがないぐらいマイナーということですね。 昔はいくつかあったみたいですが、今はすべて商用に変わっていてがっくりですorz
598 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:46:22 ] 2000は切り捨ててもいいのよ
599 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:52:05 ] UIだけActiveXでHTMLやSilverlightベースにしてしまえ
600 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:58:59 ] jQueryがあるじゃないか
601 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 12:32:27 ] ふーん
602 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 12:57:25 ] はーん
603 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:37:09 ] 10年前のOSだもんなあ。 IE6も10年前でみんな葬り去りたくてウズウズしてるんだから、2000も葬っていいわな。
604 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:40:24 ] 2000のSP4は、7月にサポート切れだったろ。 そのタイミングで俺的には終了だな。
605 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:25:57 ] MSだけじゃなくて開発側も古いWindowsサポートって頭があるからな 切っちゃっていいでしょっていうか切っていこうよ。.netなら尚更
606 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:29:06 ] 逆にMSがサポートしないものを「サポートします!」とか、 すごい勇気だなぁ、って思いますよw
607 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:36:27 ] >>592 RoboFormとか、skinstudioかねぇ? 後者はDirectX用だからやや違うかもしれないけど。 他は皆がレスしてるようにWPF自体がスキン機能そのものの(機能とデザインの分離)だから それを使うのが一番の王道だな。
608 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:36:45 ] MSじゃないどこかの企業がそれを大々的にするって言ってたな。
609 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:40:42 ] DevExpress .NET Windows Forms Skinning Library SPREAD for .NET Windows Forms Edition AppStylist for Windows Forms ぐぐったら色々あるみたいね。もちろん、みんな商用プロダクトだが。
610 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:41:33 ] スキン突っ立ってオーナードローするだけ出しな そんなに手間じゃないだろ
611 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:42:28 ] 十分手間だろ 一つやったら全部やらないと空気読めてない感じになる
612 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:42:38 ] SPREADは違うだろ。
613 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:52:17 ] とりあえず、オープンソースの範囲ではこんなのがあった。 weys.codeplex.com/ UIのカスタマイズと言うよりか、Windows Media Playerのスキンっぽい感じだな。
614 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:00:47 ] みなさん、いろいろとありがとうございます。 私が今開発しているのはとあるゲームなのですが、それがWin2000以降に対応していたもので Win2000ユーザーを切り捨てるのもどうかと考えてたのです。 数年前ならコントロールのライブラリも意味があったかもしれませんが、今ではWPFが一番 いいみたいですね。 WPF検討してみます。 しかし、日本語だと書籍はないですね... いろいろとありがとうございました。
615 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:18:49 ] WPFならXPの古いマシンは切り捨てることになるよ まあゲームなら問題ないな
616 名前:デフォルトの名無しさん [2010/03/28(日) 16:35:08 ] 配列に条件によって値を入れたいと思います。 (1) int[] table = {01, 0, 120, 270}; (2) int[] table = {02, 0, 180, 90}; と2種類の値を入れたいとします。 (1)の場合の条件と、(2)の場合の条件が違う場合、 if(条件) int[] table = {01, 0, 120, 270}; else if (条件) int[] table = {02, 0, 180, 90}; //以下tableを使った処理。 とすると、処理をするところで、 tableがないとエラーになります。 int[] table; if(条件) table = {01, 0, 120, 270}; else if (条件) table = {02, 0, 180, 90}; //以下tableを使った処理。 とすると、この書き方ではだめだと、大量にエラーになります。 配列の書き方という基本的なことなのですが、書けずに悩んでいます。 アドバイスお願いします。
617 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:37:17 ] >>615 ちょっとそれ詳しくお願いします。 要求スペックが高いから古いマシンでは駄目 XP SP3以降じゃないと駄目 という意味ですか?
618 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:37:19 ] >>616 そりゃあ、その2箇所を通過してしまうような条件が残ってるからだ。 当たり前のことじゃないか。
619 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:37:58 ] 素直にnew int書くだけでいいと思うの
620 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:38:26 ] int[] table; これはifの前に宣言だけして table = new int[]{02, 0, 180, 90}; とかでできない?
621 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:41:40 ] >>617 前者 どんな環境でも動くことは動くけどバリバリのDirect3Dで描画されてるから ハードウェアアクセラレーションが十分に効かない環境では厳しい
622 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:44:30 ] >>616 これで一応エラーでないけどコメントの箇所何かいれないと何も設定されない条件ができないか? ideone.com/JFPMtwVZ
623 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:44:41 ] >>616 int[] table = null; にするか if() 〜〜 else 〜〜 とするか お好きなのをどうぞ
624 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:46:13 ] >>621 回答ありがとうございます。 なるほど、やはりそのような理由ですか。 了解しました。 スレチなのでWPFのことは別スレで聞いてみたいと思います。 みなさん、いろいろとありがとうございました。
625 名前:デフォルトの名無しさん [2010/03/28(日) 16:47:21 ] >>620 new int[]でできました。 ありがとうございました。 これをつけるのとつけないのとでは、どう意味が違うんですか?
626 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:50:23 ] >>625 いろいろ短縮したのが table = new int[]{01, 0, 120, 270}; これね 長くかくと table = new int[4]; int[0] = 01; int[1] = 0; int[2] = 120; int[3] = 270; こうなる
627 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:50:50 ] >>625 アホか。エラーメッセージに全部書いてあるだろ。
628 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:53:15 ] ああああああ 間違えた table = new int[4]; table[0] = 1; table[1] = 0; table[2] = 120; table[3] = 270;
629 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:57:27 ] table = new int[]{01, 0, 120, 270}; こうやって書くメリット?は table = new int[4]; table[0] = 1; table[1] = 0; table[2] = 120; table[3] = 270; この配列に table[4] = 100; とか増やしたい場合は table = new int[4]; これを table = new int[5]; としないといけないけど table = new int[]{01, 0, 120, 270,100}; こうするだけで{}で囲った中の要素分だけ勝手に配列を確保してくれる。 数を知りたければ配列の場合.Lengthでわかるはず
630 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 17:05:07 ] >>590 こっちはまだわかりやすいね 訳が適当だとどうにでも解釈できるよな
631 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 17:11:45 ] >>616 普通にこれだけでいける table=new []{0,1,2,3,4}
632 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 21:49:36 ] >>631 アホか。
633 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 23:50:29 ] 配列なんて使わずArrayList使おうよ
634 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 23:51:52 ] intの配列の初期化がまともにできないレベルだからなあ もうちょい先だろ
635 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 23:53:00 ] うひゃあうひゃあ 配列とか扱うのはメモリ効率悪いwww
636 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:08:06 ] 男なら配列なんか使うな!
637 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:13:42 ] いまどき配列を嫌う男の人って…
638 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:28:06 ] 大した弊害なくて使えるなら何だって良いさ
639 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:34:17 ] ですね
640 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 03:59:41 ] volatile の効果が実感できるソースコードの例は無いでしょうか? 簡単なコードでは実感できないような修飾子なのでしょうか。
641 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 06:16:01 ] 無理
642 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 06:19:56 ] そもそも初心者には使う必要のない修飾子
643 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 06:39:07 ] VSの設定保存機能って使ってる? ビルドしたらなんとか.exe.configとかいう名前で生成されるやつ。 自分で用意してるから使わないんだけど、生成させないようにするのはどうするの?
644 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 06:47:40 ] App.configを消せばいい。
645 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 06:51:00 ] >>644 おー、サンクス。さっそく除外しとこう。
646 名前:デフォルトの名無しさん [2010/03/29(月) 09:13:16 ] ArrayListって内部的にリスト構造なの? Listとどう違うの? リスト構造だとインデクサ[]は使えるとしてもアクセス効率 が悪いと思うけど
647 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 09:18:19 ] >>646 いや配列 配列の容量あふれると別の容量大きめの配列作ってコピーするから時々追加にO(n)かかる ArrayListはList<object>だった気がするなぁ〜 使わないから覚えてない…
648 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 09:20:00 ] ListはArrayListのGenericだから比べるところじゃないだろう ListとArrayListの中身は配列 >ArrayList は、null 参照 (Visual Basic では Nothing) を有効な値として受け取り、要素の重複を許可します。 >Count が既に Capacity に等しい場合には、内部配列を自動的に再割り当てすることにより ArrayList の容量が増加し、新しい要素を追加する前に既存の要素は新しい配列にコピーされます。 >Count が Capacity より小さい場合、このメソッドは O(1) 操作になります。新しい要素を格納するために容量を増やす必要がある場合、このメソッドは O(n) 操作になります。ここで、n は Count です。
649 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 09:21:07 ] ArrayListは過去の遺物。要素がobjectの場合でもList<object>を使った方がいい。 Silverlightでは切り捨てられた。
650 名前:デフォルトの名無しさん [2010/03/29(月) 10:13:51 ] ありがとう。Listという言葉が紛らわしいですね。 C#の参考書を見ると、Windows GUIが簡単にできそう。 MFCを整理してより使い易くしているかんじ。 C++のMFCを勉強してきたけど、きっぱりとあきらめて C#で作り直した方が早いと思う。
651 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 10:47:41 ] ArrayListやHashtableって実装をさらけ出した悪い名前だと思う
652 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 10:54:34 ] そこがメリット
653 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 10:58:07 ] Java由来の名前だが、実装を示唆するような名前でないと速度の見積もりができないので、あれはあれでよい。
654 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 11:01:25 ] >>650 MFCを使ってる人がまだいたことに驚いた
655 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 11:05:19 ] listといえばリンクリストを指すのは悪い慣習だな .NETではインデックスでアクセスできるものをlistと呼ぶ LinkedListもListと付いてるけどIListを実装してない
656 名前:デフォルトの名無しさん [2010/03/29(月) 12:24:01 ] WPFのC#のコードビハインドでのウィンドウサイズの指定方法を教えてください。 xamlでは、 <Window Height="400" Width="400"> と指定します。 FormのC#では、 this.ClientSize = new System.Drawing.Size(1173, 861); のようにできます。 WPFのC#の場合がわかりません。 Windowssize = new System.Drawing.Size(1173, 861); としてみたところ、System.Windows.Window.Windowsizeはアクセスできない保護レベルになっています、 と表示されています。 どこで保護レベルを変更すればよいでしょう? よろしくお願いします。
657 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 12:25:00 ] 保護レベル変更は無理
658 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 12:26:55 ] this.Width = 1173; this.Height = 861; これだけ それとWPFでSystem.Drawingは使うな
659 名前:デフォルトの名無しさん [2010/03/29(月) 12:27:07 ] >>657 やりたいことはウィンドウサイズの変更なので、 ウィンドウサイズを変更できればよいです。
660 名前:デフォルトの名無しさん [2010/03/29(月) 12:29:59 ] >>658 ありがとうございました。できました。感謝です。
661 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 17:27:28 ] >>660 また俺が回答してやるよ どーんとこい!
662 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 18:34:08 ] いや俺が回答した
663 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 18:40:04 ] いやいや俺が
664 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 19:08:57 ] あ、じゃあ 俺がやったよ
665 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 20:47:38 ] 質問 現在、C言語で書かれたDLLが提供する関数を C#から呼び出そうとしています。 悩んでるが、「引数に構造体の配列を持つ関数」の処理です。 下記URLにソースコードを張りました codepad.org/SnH7gdwI 上でいう所のC側の「//<- ここで落ちる」というコメントのある所で不正アクセスで落ちてしまいます。 (stSample[0]に値が入ってるのは確認できました) C#側の構造体の渡し方がおかしいとかなと思ってるのですが、 どこがおかしいのか分からず・・・。 ご存知の方いましたら、教えて下さい。
666 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 20:52:16 ] public struct ST_SAMPLEDLL { public byte cCount; public fixed byte strBuff[256]; } こうじゃね
667 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:18:54 ] 文字列にしてそれを渡してパースしてぶっこめば楽だな
668 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:35:23 ] 教えてください。 マルチスレッドを利用したプログラムがあります。 このスレッドのうち1本で、ローカルファイルにデータを出力する処理があり、そのファイル名を ファイル選択ダイアログ(System.Widows.Forms.SaveFileDialog)を利用して求めることにしたいと思います。 実際にプログラムを組んで実行すると、ShowDialog() を実行する箇所でエラー終了します。 メッセージボックスに表示されるエラーの内容は以下の通りです。 >OLE が呼び出される前に、現在のスレッドが Single Thread Apartment (STA) モードに設定されていなければなりません。 main 関数には STAThread の設定もしてあります。(元からついているようですが) 同じプログラムで、main 関数を実行したスレッド(以下、メインスレッドと記述します)でダイアログを表示すると正常に使用できます。 また、メインスレッドで開けばいいのかと、メインスレッドで表示しているフォームに Invoke を掛けて ダイアログを表示すると正常に使用‥‥出来るのですが、このフォームは最小化&非表示にしているため この状態でダイアログを表示しようとしても画面には出てきません。 メインスレッド以外からファイル選択ダイアログを正常に開く方法はないでしょうか。
669 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:44:03 ] UIスレッド以外から操作すんなよ。
670 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:45:43 ] ダイアログに見せかけたFormじゃだめなの?
671 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:49:18 ] メインスレッド側でAPIで呼べばいいんじゃね?
672 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:50:38 ] あー、Thread.SetApartmentStateってのがあってだね
673 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:50:49 ] 一応、Thread.TrySetApartmentState メソッド ってのはあるけどな・・・。
674 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:52:26 ] >>669-671 この3人にtaskkillしてあげてください
675 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:53:44 ] ひどい赤っ恥だ
676 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:56:37 ] メインのUIスレッド以外からUIいじるのはお勧めできないけどな。
677 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:58:40 ] >>674 何でtaskkillなんだよ >ダイアログを表示すると正常に使用‥‥出来るのですが、このフォームは最小化&非表示にしているため >この状態でダイアログを表示しようとしても画面には出てきません。 ダイアログで出ないとかいうからダイアログに見せかけたForm表示しろっていっただけ オーナーとの関係で表示がされないだけだろ
678 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:59:11 ] そのスレッドは自分で作ったスレッド? それともスレッドプールのスレッド? 自分で作ったスレッドなら、差し支えなければ自分でSTAに設定すればいい(Start前しかできないよ) もしスレッドプールとかなら、これはMTAから変更することはできない。 汚いけど、必要な部分で自分でスレッド作って、STAに設定してメッセージボックス表示、 元のスレッドでは新しいスレッドを勝ち合わせとかするしかないと思う。 最初からUIスレッドにIncvokeする方が無駄はないけど。
679 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:01:42 ] そもそもSTAとかMTAって何なの
680 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:02:56 ] ようやくシンプルだけどまともに動くものが作れるようになってきたけど 未だにマルチスレッドとかよくわからないな >>679 も何のことやら
681 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:05:41 ] Inside OLE2 嫁。
682 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:09:36 ] >>681 それ絶版じゃなかったっけ。
683 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:10:41 ] うん。
684 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:11:22 ] >STAとかMTA VC++でATL使ってIEコンポーネント触ったときにちょっとかじった程度だな ナビゲーション関連がこの辺を理解してないとメッセージが来ないとかなんとか
685 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:24:31 ] うん。
686 名前:668 mailto:sage [2010/03/29(月) 22:26:02 ] みなさん、ありがとうございます。 てか、はやっ。w >>670 無知ですみません。 ダイアログに見せかけたフォームというのは、Form を継承したファイル選択ダイアログの ようなフォームクラスを自分で作る、と言うことでしょうか。 だとすると、今回は遠慮できたらいいかな、と。すみません。 >>671 いまの状況からは少し難しく。すみません。 >>678 System.Threading.Thread を利用して自分で作ったスレッドです。 やっとエラーメッセージの意味がわかりました。 あれは必ずしも main 関数でやれってことではなくて、ダイアログを操作するスレッドに STA を設定しろってことなんですね。 >>672 や >>673 さんの仰ってる方法で出来ると理解しました。明日、確認します。 >>669 ,676 自分も UI スレッド(この言葉を忘れていました)以外で UI の操作を行うのには抵抗があったのですが。 ‥‥気をつけておきます。
687 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:27:30 ] >>686 わかればよろしい 今後も精進しなさい
688 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:28:10 ] 偉そうに
689 名前:665 mailto:sage [2010/03/29(月) 22:32:50 ] >>666 レスサンクス。 バッファの取り方がまずいという事ですか。 今手元に環境がないので試せないですが、 明日試してみます。 良いサイトか何かあれば、いいんですが、 なかなか見つからず・・・orz ちなみに、環境は XP,VC# 2008Express (書き忘れました)
690 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:37:59 ] バッファの取り方でなくて、C#とCの型の違い。
691 名前:665 mailto:sage [2010/03/29(月) 22:42:37 ] >>690 サンクス それで、最初の構造体はアクセスできるけど(たまたま出来てるように見えてるだけ?)、 次の構造体にアクセスしようとしたら落ちると・・・。
692 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:46:49 ] 型の制約があるものより汎用的なテキストでやり取りする方が無難かもねえ 相談かこっちか忘れたけど以前同じようなdllを呼び出すアプリの相談で httpでやり取りする形にしてみたら?ってのがあったな
693 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:52:56 ] >>691 よく見たらST_SAMPLE**だったのか C#側の引数の型をIntPtr[]にしてそれぞれポインタの参照先に ST_SAMPLEDLL一つ分のメモリを割り当てておかないと
694 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:53:47 ] バイト配列が一番わかりやすいよ。
695 名前:665 mailto:sage [2010/03/29(月) 22:58:22 ] >>692 時間がたっぷりあって、許されるなら、DLLをC++か何かで 書き換えたいところですが、そうもいかず・・・。 このインターフェースは我慢するしかないですね。 >>693 です。ダブルポインタです。 そこなのですが codepad.org/SnH7gdwI このサイトに張ったソースの37行目でDLLに渡すメモリの実態自体は用意しているので、 大丈夫かと思ってたのですが、それとは別に確保するという事ですか? あと、宣言は、こっちの方がいいってことですね。 [System.Runtime.InteropServices.DllImport("MY_Dll.dll", EntryPoint = "test")] unsafe public static extern int test_call( IntPtr[] pstList);
696 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:00:44 ] IntPtrのみでいいはずだけどな。 Cでは、基本的に配列はメモリ上に整列するし。
697 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:04:37 ] ダブルポインタだからポインタの配列を渡さないといけない(だからIntPtr[]) しかもC側でポインタの参照先にアクセスしてるから予めそれぞれ実体を割り当てとかないと
698 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:11:52 ] 配列はポインタで受けれるけど、ってやつか。
699 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:12:03 ] >>696 私もそう思ってて、そこではまってます。。 >>697 >しかもC側でポインタの参照先にアクセスしてるから予めそれぞれ実体を割り当てとかないと そこなのですが、 testPtr1 = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(ST_SAMPLEDLL)) * (int)10); これで、領域を確保して、 次に test_call(testPtr1); 渡してるので、少なくとも構造体ST_SAMPLEDLLを10個分はメモリとして 確保してると思ってますが、この処理のほかに必要とうい事でしょうか? その後、取れたのをMarshal.PtrToStructure()で取り出す処理になってます。
700 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:15:27 ] = () => って表記、他に候補なかったのかよ!と書く度に思う。タマゴとコンニャクでオデン喰いたくなるw
701 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:21:09 ] C#でいう「参照型の配列」と同じだ。 並んでるのは実体じゃなくてポインタで,それぞれのポインタがどこか別の場所にある実体を参照してる。 IntPtr[] testPtr1 = new IntPtr[10]; for (int i = 0; i < 10; i++) { testPtr1[i] = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(ST_SAMPLEDLL))); } test_call(testPtr1); こうする。 取り出すときはそれぞれの要素に対してMarshal.PtrToStructureを呼べばおk
702 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:27:48 ] DLLとC#の間にもう一個DLL挟めばいいんだよ
703 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:29:37 ] >>701 なんといいますか・・・。 頭が下がるばかりです。 なるほど、納得しました。
704 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:32:31 ] もともと x⇒x*2; みたいな感じではなかったのあれ 1バイト文字に⇒がなかったから代用みたいな よくしらんけど
705 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:35:16 ] これで上手くいったと書こうと思ったら>>701 に先越された。CallingConvention忘れないでね。 using System; using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential, Pack=4)] public struct ST_SAMPLEDLL { public byte cCount; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public byte[] strBuff; } class Hoge { [DllImport("u.dll", EntryPoint = "test", CallingConvention=CallingConvention.Cdecl)] unsafe public static extern int test_call([MarshalAs(UnmanagedType.LPArray), In, Out] IntPtr[] pstList); static void Main() { IntPtr[] stSample = new IntPtr[10]; for (int i = 0; i < stSample.Length; ++i) { stSample[i] = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(ST_SAMPLEDLL))); } // DLL呼び出し test_call(stSample); ST_SAMPLEDLL[] st = new ST_SAMPLEDLL[10]; for (int i = 0; i < st.Length; ++i) { st[i] = (ST_SAMPLEDLL)Marshal.PtrToStructure(stSample[i], typeof(ST_SAMPLEDLL)); Marshal.FreeCoTaskMem(stSample[i]); } Console.WriteLine((int)st[0].cCount + " " + (int)st[0].strBuff[0]); Console.WriteLine((int)st[1].cCount + " " + (int)st[1].strBuff[0]); }}
706 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:40:06 ] なんでCdecl?
707 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:40:19 ] >>705 なんていうか・・・俺って頭の回転速いから自然と先越しちゃうんだよ。(笑) 肩を並べる奴は誰も現れないって感じだ。(笑)
708 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:41:32 ] >>707 おい 俺のフリをするな
709 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:42:58 ] >>706 codepad.org/SnH7gdwI で__stdcallが指定されていないから。 まさかコンパイルオプションでstdcallを指定しているなんてオチがあるわけないと思ってCDeclと仮定した。
710 名前:701■Agei32s4 mailto:sage [2010/03/29(月) 23:44:05 ] 騙りばっかだな。トリつけとくわ。
711 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:44:35 ] ですね
712 名前:665 mailto:sage [2010/03/29(月) 23:55:44 ] >>705 >>709 具体例、サンクス! 少し話しが出たので、質問なのですが、 DLL側で__stdcallが指定されていた場合、話しは違ってくるのでしょうか?
713 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:59:11 ] うん。
714 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:01:18 ] 文字列でやり取りするのが今時
715 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:02:31 ] そんなことない。
716 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:03:15 ] WinFormsのP/Invokeを全部標準入出力に替えたらとんでもないことになるな
717 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:06:56 ] >>715 ネットワーク越しにwebAPI呼び出してxmlなどのテキストで回答を許容できる時代なんだから スタンドアロンでやっても問題ないだろ そうすればGUIだけC#で書いて古いDLLは常駐してhttpをリスナーする小さいプログラム書けば いいのでVC++の無料でも余裕で開発できる
718 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:07:42 ] どんだけ遅いと思ってんだよ。バカジャネーノ
719 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:08:00 ] >>713 実は、会社の帰り際に「WINAPIは__stdcallで宣言するのが標準」という記事を見つけたので、 淡い期待を抱きながら、「明日試そう・・・」と思っていたところでした。 スタックの開放タイミングの違いとうい事ですか(う〜ん汗)
720 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:12:45 ] 直接は関係ない。関数から戻るときの問題だし。
721 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:16:05 ] やれやれ
722 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 07:25:47 ] テキストファイルでやりとりすべきだな
723 名前:665 mailto:sage [2010/03/30(火) 11:56:25 ] 回答を下さった方々、有難う御座いました。 無事、思うような動作が出来ました! (感謝感謝) 私の後ろの初めてを捧げたいぐらいの感動です。 ここの所、ず〜っとこれで悪戦苦闘してましたので・・・。 有難う御座いました。
724 名前:デフォルトの名無しさん [2010/03/30(火) 11:57:01 ] UserControl 作るとツールボックスに表示されますが、 表示させたくない場合はどうすればいいですか?
725 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 11:59:17 ] >>723 よしではいくぞ >>724 無理じゃね? クラスライブラリで分離しておくとかすれば可能かな・・・
726 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 12:34:16 ] >>723 2番目をくれ
727 名前:665 mailto:sage [2010/03/30(火) 12:55:41 ] >>725 >>726 夢を打ち砕いてすまないのだが、 一応、私は「男」です
728 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 12:57:39 ] >>727 あたりまえだろ。女なんて嫌だ
729 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 12:58:12 ] 知ってて言ったのにw マジな返答くるとは思わなかった ばっちこーいのAAでも貼ってくるかと期待したのに
730 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:05:19 ] >>724 それらしい属性探して、無ければ諦めれ
731 名前:665 mailto:sage [2010/03/30(火) 13:25:07 ] っく・・・ 変態ばっかりだったとは・・・。
732 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:30:28 ] 軽いキャッチボールだよw
733 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:58:43 ] おまえらToolboxItemAttributeもしらねえのかよ・・・
734 名前:デフォルトの名無しさん [2010/03/30(火) 19:27:29 ] さぁって、今日はどんな馬鹿が釣れるかな? 枠々
735 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 21:15:14 ] >>724 AutoToolboxPopulate というのがVSにはあるらしい でも単独配布のEEにはないんだよな
736 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 21:18:19 ] 何かうまく動かないなーと思ったらRectangleのBottomってTop+Heightなんだ 原点0で高さ64なら下の座標は63だとばかり思ってたよ…
737 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 21:26:56 ] >Bottom プロパティの値は、Rectangle に含まれない、Rectangle の下端にある最初の点の y 座標を表します。 確認を怠るのが悪い。
738 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 21:43:10 ] プログラミング自体初心者で、昨日初めてC#を始めて見ました。 visual C# 2008を使ってGUIでグラフを表示させたいんですが、どうすればいいんでしょうか? 参考になりそうなサイトなどあれば教えてください。
739 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 21:52:02 ] www.microsoft.com/downloads/details.aspx?familyid=130F7986-BF49-4FE5-9CA8-910AE6EA442C&displaylang=ja 実用的なのはこれ プログラミングの勉強で関数のグラフを自分で描いたりするんだったら C# paint でググる
740 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:04:27 ] >>739 ありがとうございました。 自己解決しました。
741 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:32:24 ] C#は.net frameworkと同じ意味?
742 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:34:13 ] 違う
743 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:39:04 ] 同じ
744 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:40:03 ] .net frameworkは土台 その上で動くプログラムを書けるのがVC#とかVB.netなど
745 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:52:42 ] 言語仕様上はC#は.NET Frameworkとは無関係ということになってる
746 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:53:15 ] 違う
747 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:53:59 ] Monoはネイティブコード吐けるし…
748 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:56:24 ] それラインタイム一緒に事前コンパイルしてるだけで無駄が大きいけどね
749 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 23:00:46 ] 一応言語仕様の上ではCLIにも依存してない 言語仕様に最低限必要なライブラリが書いてあるのでそれを一通り実装しさえすれば C#と名乗れる
750 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 23:09:54 ] 名乗れるね
751 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 23:10:14 ] 違う
752 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 23:19:03 ] もう何がなんだかw
753 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 00:00:07 ] どこが「違う」か指摘できない馬鹿は放っておけ
754 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 00:12:05 ] ですね
755 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 02:39:38 ] >>739 配布するときにも相手にはそれをインスコさせなきゃ駄目? それとも、自動的に組み込んでくれる?
756 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 03:26:39 ] 90
757 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 04:59:13 ] >>755 .netその物と同じで相手側にも入ってないとだめかもね
758 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 06:15:46 ] だめかもね
759 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 07:36:45 ] >>755 ライブラリの dll ファイルは 標準のアセンブリフォルダーの下か、 exe と同じフォルダーにあれば OK なんで exe と同梱で配布すれば OK。
760 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 10:55:33 ] include <stdio.h> using System int Main(void){ System::Console::WriteLine("にちゃんねらー死ね"); }
761 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 11:23:17 ] >>760 ここはニュー速のプログラミングスレじゃないですよ
762 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 11:28:37 ] なんでC++/CLIなんだよイライラするなあ死ね
763 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 11:37:00 ] C++/CLIならmainだろ include <stdio.h> using System;も必要ない
764 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 11:39:16 ] やたら丼を書いている奴だろ
765 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 12:45:58 ] 同じマシン、同じソフトで印刷プレビューするときにプリンタ2台で 1枚でも40秒と3分の差があるんですけど、印刷の実行速度は プリンタドライバも関係してくるんですか? 3分かかるのは9年前発売のプリンタで、40秒かかるのは 最近発売のプリンタですけど。
766 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 12:50:17 ] そりゃまあレンダリングするのはドライバだしな
767 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 12:59:46 ] >>766 なるほど。 ありがとうございます。
768 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 13:51:04 ] >印刷プレビューするとき これはプリンタのほうでプレビューってことだよな? 自分でプレビュー画面作るってわけでもなく だとしたら>>766 の通りだけどC#関係なくね?
769 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 14:16:03 ] プレビューの速さの話が途中から印刷の実行速度の話になってるからな
770 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 14:28:59 ] フォームプロジェクトに追加したユーザーコントロールをデザイナで配置したいのですが、ツールボックスに表示されません。 調べてみると Windowsフォームコントロールライブラリ という別プロジェクトでDLLを作成し、 それを介する方法しか発見できませんでした。 DLLを介する以外に方法があれば教えてください。
771 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 14:51:56 ] メニューのツールのオプションのWindowsフォームデザイナの全般で ツールボックスのAutoToolboxPopulateをTrueにしてもダメかな?
772 名前:770 mailto:sage [2010/03/31(水) 14:59:20 ] >>771 できました。ありがとうございました。
773 名前:765 ◆JdKMFRogo6 mailto:sage [2010/03/31(水) 15:25:55 ] >>768 >>769 C#で作ったプログラムで印刷プレビュー出すときのことです。 出るまでにそれだけ時間がかかるんですよ・・・ ここらへんでプリンタも買い替えないと・・・
774 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 15:28:41 ] 勝手にしろよwww
775 名前:765 ◆JdKMFRogo6 mailto:sage [2010/03/31(水) 15:35:37 ] >>774 たしかにwww
776 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 16:12:56 ] codepad.org/YiT7oXst 上記のコードがあるとします 14行目でリストの0番目のアイテムにGetTypeしてアイテムの型を取得していますが BindingList<T>のインスタンスが生成された段階でアイテムの型は決まってるので 0番目のアイテムにアクセスしなくても取れるはずです これの取り方を教えて頂きたいのです あくまでもテスト用のコードなので「Tから取ればいいだろ」みたいな突っ込みはご容赦下さい
777 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 16:13:43 ] 今から仕事なので日付変わった頃にお返事します
778 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 20:50:18 ] >>776 listType.GetGenericArguments()[0]
779 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:00:29 ] 関数のパラメータについて、教えてください。 デバッグ用にその関数のパラメータの一覧をログなどに出力したいと考えます。 たとえばなのですが、 System.Diagnostics.StackFrame.GetMethod().GetParameters() を利用すると、特定の関数のパラメータの一覧を得ることが出来ます。 ただ GetParameters() ではパラメータの型や変数名などの情報を取得することは出来ても パラメータの値そのものは取得できないようです。当然と言えば当然なのですが。 これと同じような方法で、パラメータの値を取得する方法はないでしょうか。 なにをしたいのかというと、デバッグ用に特定の関数のパラメータの各値をログなどに 出力したいのですが、関数個別に "param1 = {0}", param1 などと書いていくのが手間なので、 関数のパラメータのすべての変数名とその値とを文字列にしてくれる関数を作れないものかと。
780 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:16:40 ] >>778 お答え頂きありがとうございます 質問したかった事とコードが違ってる事に出勤してから気付きました IBindingListの引数にclass BindingList : BindingList<string>{}のインスタンスを渡して 継承元の型パラメータを取得したいのでした 悩んでる最中は思い至らなかったのですが、単にType.BaseType.GetGenericArguments()すればいいだけでした 下らない質問してすみません
781 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:19:01 ] >>779 無理
782 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:40:12 ] >>779 型名でいいなら public void Trace(params object[] o) { foreach(object obj in o) { 〜(o.GetType().Name); 〜(o.ToString); } } でいけるとおもうよ〜は出力命令ね
783 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:40:35 ] フォームアプリケーションを作成している時、フォームのコードが長くなったので、 「コードファイル」を新規に作成し、コードの一部を作成したソースに移しました。 その後、フォームへコントロールを配置すると、移したはずの コントロール名_イベント名() が 元のソースに関数の中身が空の状態で生成されてしまうようになりました。 コントロールのプロパティ内でイベントの欄をダブルクリックした時以外は コードが自動生成されないように設定する方法を教えてください。
784 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:45:55 ] そんな設定ないよ。
785 名前:783 mailto:sage [2010/03/31(水) 23:55:44 ] >>784 設定がないということは、フォームのコードを複数ソースに分けることをやらない方がいいということでしょうか? それとも「コードファイル」を作成する以外の方法で別のソースを作成すべきなのでしょうか?
786 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:58:30 ] >>785 > 設定がないということは、フォームのコードを複数ソースに分けることをやらない方がいいということでしょうか? うん。
787 名前:783 mailto:sage [2010/03/31(水) 23:59:21 ] >>786 ありがとうございました。
788 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:14:00 ] >>787 うん。
789 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:14:02 ] http;//○○○/〜〜〜 となっているURLの○○○を抽出するにはどうすればいいでしょうか? 正規表現を使ってみたのですが、うまく抽出されません。 例になるコードとかありませんか?
790 名前:779 mailto:sage [2010/04/01(木) 00:18:59 ] >>781 >>782 ありがとうございます。 残念ながら型名などではなくて中の値そのものが欲しいので、今回は諦めます。
791 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:19:40 ] >>789 URIクラスとかじゃねーの?
792 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:22:58 ] "/"のSplitで[2]とか?
793 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:26:07 ] >>792 '/'のSplitで[2]でしょ
794 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:29:17 ] URIクラスのHostでもAuthorityでもDnsSafeHostでも
795 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:39:09 ] http://〜〜/△△&pass=○○ のようなURLの場合に○○を取得したい場合はどうすればいいでしょうか? さすがにこれはURIクラスでは処理しきれないと思うんですが
796 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:43:17 ] EndOf
797 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:47:17 ] >>795 System.Web.HttpUtility.ParseQueryString(string query, System.Text.Encoding encoding)
798 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:51:19 ] >>795 '='のSplitで[1]
799 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:55:35 ] みなさんありがとうございます。 今までは正規表現でどうにかしようとしてましたがいろいろやり方があることが分かりました。 もうちょっと頑張ってみます。
800 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:00:14 ] >>799 みなさん?全部俺の回答なんだけどw
801 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:01:48 ] 4/1とはいえ他人の善意を潰す嘘は許さん
802 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:02:52 ] 自己主張したいならコテでもつけてろよ
803 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:03:41 ] おまえがつけろクソ野郎
804 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:05:51 ] 4/1とはいえコテ付けない奴は許さん(キリッ
805 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:07:38 ] ここまで全て俺の自演
806 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:08:43 ] エイプリルフールはどんな嘘でもいいってわけじゃないんだよね。 人を怒らせるような行為はいただけないな。
807 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:09:05 ] だな
808 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:47:08 ] >>799 正規表現でも別にそう難しくはない気もしますが、まあ、 一番楽で素直で間違いのなさそうな方法を選ぶのが良いね。
809 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 02:07:49 ] (new List<int>()).GetType().GetGenericTypeDefinition().Equals((new List<bool>()).GetType().GetGenericTypeDefinition()) 上の評価はtrueになるんだけどさぁ それを踏まえてMSDNを見ると msdn.microsoft.com/ja-jp/library/system.type.getgenerictypedefinition%28VS.80%29.aspx >2 つの構築型が同じジェネリック型定義から同じ型引数を使って作成された場合 >GetGenericTypeDefinition メソッドは両方の型に対して同じ Type オブジェクトを返します。 なんかこの説明おかしくね この場合「違う型引数を指定して作成された場合でも」になるべきじゃね 同じのは同じなんだから当ったり前だろうそんなの GetGenericTypeDefinition呼ぶまでもない と思ったけど英語版もsame type argumentsなんだよなあ なんでだ
810 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 06:33:16 ] なんでだろうね
811 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 15:58:00 ] 未完成の汎用的なクラスを作れたのでいろんなプロジェクトで利用しているんだけど 既存の項目で追加とすると、その汎用クラスの変更がそのプロジェクトでしか行われない 汎用クラスの変更がすべての利用しているプロジェクトで反映される方法などありますか? もしくは他に方法はありますでしょうか?
812 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 16:26:28 ] >>811 既存の項目として追加するときに出てくるダイアログで、追加ボタンの隣にある三角ボタンを押してリンクとして追加すればいいじゃない。
813 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 18:07:35 ] おほ〜〜いけた ありがとう
814 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 19:34:31 ] webclientのイベントハンドラをbuttonのイベントハンドラと同じように一覧から選んで記述ということはできないのでしょうか?
815 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 19:37:40 ] わかんね
816 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 20:13:14 ] foreach(var item in listview.items) これだとlistviewitemと認識しないぞM$
817 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 20:18:03 ] という独り言
818 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 21:54:16 ] XMLにシリアル化の挙動がさっぱりわからん なんなのこれは? まったく使い物にならん シネ
819 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 22:12:44 ] 無能は車輪の何とかでもやってなさいってこったw
820 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 22:20:21 ] >>814 デザイナーからは設定できないぞ >>816 varって糞VBじゃねーんだからちゃんと型つけろがボケ ideone.com/jwBy2dbY .netはいたるところで型が何か分かるようになってるぞボケ >>818 publicじゃない要素があるとうまく動かん c# XmlSerializerでぐぐってサンプルみてこい public classだし中身もpublic付き
821 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 22:25:14 ] >>820 >.netはいたるところで型が何か分かる それは>>816 の問題に関しては間違ってる。 foreach (ListViewItem item in listView1.Items)は foreach (object _item in listView1.Items) { ListViewItem item = (ListViewItem)_item; と等価。 だからitemの型がListViewItemでなくてもコンパイルエラーにはならない。実行時エラーが出る。 ジェネリックが無かったころの名残の糖衣構文だ。
822 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 22:37:29 ] >>821 糖衣構文だとか昔は〜とか言われてもよくわからんけど 現在はこう表示されるんだからそれでええんとちゃうの? uproda.2ch-library.com/231844RNf/lib231844.png
823 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 22:46:18 ] >>822 それ今も昔もListViewItemCollectionに普通にインデクサが定義されてるだけ。 ListViewItemCollection.GetEnumeratorがIEnumerator(非ジェネリック)を返すので foreachを使うと要素がobject型扱いになる。だから>>816 はvarの自然な挙動。
824 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 22:48:34 ] >>822 この場合インデクサは関係ないだろ 関係あんのはEnumeratorの方
825 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 23:29:26 ] JavaScriptでしばしばこういうコード書いているけど、これをC++(QT)で書くとどういう感じになる? function getValue(Form,Target){ var value = document.getElementById(Form).value; // 変数Form名のIDのフォームの値をvalueに代入 value = window.prompt("文字を入力",value); // 入力フォームを表示。valueを入力プロンプトに渡す。(上の行と1本かできるの事は気にしないで) document.getElementById(Target).value = value; // 変数TargetのIDのフォームにvalueを代入 } これをQtで書くとどういう感じになるのかな? FormとTargetの値(参照元のフォーム名と代入先のフォーム名)が変化するんだけど。 あと、 document.getElementById(Form+'_name').value みたいな表現ってできない? C言語は、関数型とかあってわかりにくい・・・。
826 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 23:39:48 ] スレチ
827 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 08:00:37 ] あ!?
828 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 09:22:02 ] どうした? バグか?
829 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 10:33:00 ] richtextboxで指定した行に文字列を追加したいんだけどどうすればいいのでしょう delphi見たいにrichtextbox.line[i].text=・・・なんてもんはないんですかね
830 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:29:30 ] あんまRichiTextBox使った事ないけどレスしてみる 改行コードでsplitした配列取得して、指定行の文字列を編集 で、それをStringJoinに改行コード指定してやっちゃうとか
831 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:31:04 ] その手って内部は行単位のstring管理じゃなかったっけ? ちと確認してみる
832 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:32:10 ] richTextBox1.Lines.Length Lengthってことは配列?
833 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:32:20 ] Linesプロパティはあるだろ。
834 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:44:31 ] あれ・・・行指定して書き換えてもかわらねえな・・・ ideone.com/ojQnOhFF
835 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:48:50 ] 読み取り専用だから。
836 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:49:49 ] >>835 それは挙動で想像付くが、読み取り専用って書いてる段階か 実行時にエラーになるよな? これはそれすらないぞw
837 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:53:35 ] ヘルプ嫁よ
838 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:54:22 ] コピーして返してるからだろ
839 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 12:19:36 ] デザイナでLabelとか貼り付けたら デフォルトのフォントの大きさが9なんだけど、ちょっと小さいから デフォルトのフォントを大きさを変えたいんだけどどうやったらいい? あとタイマーが一番最初にEnableがfalseになってるのとか変えたい
840 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 12:21:34 ] 無理
841 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 12:24:02 ] Labelとかのフォントサイズは、フォームのやつを引き継ぐから、 フォームのフォントサイズを変更しておけばOK。
842 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 12:56:03 ] >>839 諦めろ つうか、タイマなんぞ切り替えるのは普通Pgからやんないか? LoadとかShownでTrueにして ClosingとかでStop→タイマの内部処理終了待ちして
843 名前:829 mailto:sage [2010/04/02(金) 12:59:41 ] うーんなんていうか、 ----- あいう あいうえお あい ----- ていうrichtextboxがあるとする。 これの2行目の文章(あいうえお)を変数に代入するにはどうすればいいのかわからないんです。 delphiならa:=Memo1.Line[1];(たしかこんな感じ)て感じで取得できたのですが・・・
844 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:05:20 ] あきらめろよ。
845 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:08:00 ] ベタにテキストボックスとかでも使うやり方 別に異常なほど文字が多いわけじゃない時こんな感じでやってた private void button1_Click(object sender, EventArgs e) { richTextBox1.Text = GetInsertedText(richTextBox1.Text, 1, "\r\n" + DateTime.Now.ToString()); } private string GetInsertedText(string baseText, int index, string inserttext) { string[] temp = baseText.Split("\r\n".ToCharArray()); temp[index] += inserttext; return string.Join("\r\n", temp); }
846 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:09:25 ] >>843 >>834 見て無いのかよ
847 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:09:37 ] つーか、Linesプロパティって出てんじゃん。
848 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:11:32 ] 読み取りだけじゃなく行単位で書き換えもありそうなんでできるかどうかを試してたのに 読み取りすら理解してないのかよ・・・
849 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:14:37 ] 総攻撃ワロスw
850 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:17:11 ] >>846 すいません見落としてました これです!ありがとうございます
851 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:29:39 ] しかしこれ内部管理が配列なのが勿体無いな List<>でもやってくれりゃあ部分編集もしやすかったのに
852 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:42:56 ] 中の文書フォーマットがどうなってるか知らんけど 部分的に書き換えられると整合性で困るとかそんな話の予感 TextBoxならできるんだしね…
853 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 14:44:48 ] 管理も何も、Linesのgetterは持ってるTextをCRLF/LF/CRで分割してるだけだぞ setterなんかCRLF挟んで連結したものをTextに設定しているだけだし それにしても、プロパティの型が配列だったり、プロパティでコピーを返したり、 プロパティの中に必要以上の処理を入れていたりと無茶苦茶だなw
854 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 16:20:07 ] コントロールは例外だ デザイナやバインディングなどの都合
855 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:39:53 ] var x=0.0としたとき、xの型はfloatですか?doubleですか? 組み込み型には使うなと教えられたんですがこれだけは気になったのでお願いします。
856 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:43:58 ] やってみればいいじゃん。
857 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:44:33 ] >>855 ttp://tsushima.2ch.at/s/news2ch56039.png ちなみに気になる型とか返り値の型とか知りたければ 標準の物なら大体こうやって確認できるよ
858 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:45:27 ] しもうた カーソル消えてるけど x.ToString(); のxの上でカーソル止めてるから
859 名前:855 mailto:sage [2010/04/03(土) 14:48:37 ] >>856-858 なるほど、勉強になりました。 どうもありがとうございました。
860 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:51:32 ] >>859 というかc#で小数点をそのまま書くとdouble, 0.0Fという感じでFをつけるとfloat
861 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:53:24 ] >>855 860の助言を参考にして、ついでにリテラルとその型の概念も把握しておこう。
862 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:55:24 ] 便乗で悪いんだけど、質問させてくれ floatの方がdoubleよりも速度が遅くなると聞いたんだけど理由がさっぱりわからん doubleの方が扱う桁数が大きいんだから遅くなるんじゃないのか?
863 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:57:43 ] >>862 ならない。最近のCPUじゃ割り算以外の処理はどちらも1クロックで終わってしまい、 速度上の差は見られない事の方が多い。
864 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:59:56 ] >>862 それはCPUによるよ
865 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 16:58:41 ] Microsoft Parallel Extensions to .NET Framework 3.5ってもうDLできませんか? もし直リンなどあれば教えてください
866 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 17:04:52 ] >>865 それは『Parallel Extensions to .NET Framework June 2008 CTP』のことだろう? Parallel Extensionsが.NET 4.0の機能になったことはMSの公式決定なんだから今更どうにもならんだろう。 ここには「Reactive Extensions を見よ」なんて書いてあるが。 blogs.msdn.com/pfxteam/archive/2008/06/02/8567802.aspx 仮にそんなコンパチライブラリがあったとしても、余計な混乱を招く結果にしかならないだろうよ。
867 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:13:26 ] ある程度作ってたプロジェクトの中から部分的に切り離してクラスライブラリを作る場合って スマートにやる方法ないかな?
868 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:16:15 ] >>867 名前空間の単位で整理して、 名前空間の単位でクラスモジュール化する。
869 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:23:17 ] そういうのじゃなくて、クラスライブラリ用プロジェクト作った際のソースの移動とかね・・
870 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:28:49 ] >>869 基本的に自己完結するようにクラスライブラリを書いていれば、 単にプロジェクトを分けて本体側で参照設定するだけで そのまま動くようになってるんだから、 スマートにやる方法もないだろ。 上手くいかないなら設計が悪いだけ。
871 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:31:28 ] 変数のインスタンスから、その変数の変数名を取得する方法はある? int a; string b = a.(メソッド); みたいにやると、b に "a" って入るみたいな。 無理だと思うけど、C# だとちょっと期待してしまう。w
872 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:41:00 ] >>871 変数の名前というのはプログラミングの都合上便宜的に与えるものに過ぎず、 実行時にはなくなってしまうものだ。 一方、デバッガで止めると表示してくれるが、あれはpdbファイルにその情報が記述されている。
873 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:42:43 ] intとかは無理じゃね? クラスになるとNameがあるけどあれもつけなくても内部管理的には問題ないから おそらくハンドルみたいなので管理されてるんだと思うしなあ intだとそのハンドルに相当するものくらいしかないんじゃね?
874 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:52:45 ] いや・・・もっとそのプログラム的な話じゃなくて・・・・ プロジェクト作ってフォルダ作って元のソースを移動して 既存の項目としてプロジェクトに入れて・・・という やり方しかないのかなあって話 あとクラスライブラリとして分離した場合デバック用とリリース用 を別途分けてリンクさせるような設定はないんだろうか? C++だと普通にあったんだがC#の場合それっぽい項目が見当たらない
875 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 19:57:02 ] >>874 >プロジェクト作ってフォルダ作って それのどこに問題が? むしろ異なるアセンブリのソースコードはフォルダ分けしておかないと不便だぞ。 >あとクラスライブラリ 同じソリューションでクラスライブラリとメインプログラムを管理しておけば、 ビルドモードの切替で勝手にクラスライブラリの切り替えもやってくれる。
876 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 20:00:45 ] >>874 それ以上のどんなバカチョン機能があれば満足するんだろう。 まあ、ファイルの移動はプロジェクトエクスプローラで ドラッグ&ドロップしてもできるよ。 あと、ソリューション内のプロジェクトの構成(Release/Debug)の連動は 構成マネージャで設定する。
877 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 20:04:24 ] >>875 ああ、すまんEEで開発してたのでソリューションの下で複数プロジェクト作れるとは思ってなかった
878 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 20:06:10 ] >>876 >>877 でも書いたけど俺が想像してたのは ソリューションA プロジェクトA とあって プロジェクトAの一部を ソリューションB クラスライブラリB として切り出すしかないと思ってたんだ すまんすまん
879 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 20:11:25 ] 複数プロジェクト入れられないソリューションがこの先生きのこるには
880 名前:871 mailto:sage [2010/04/03(土) 20:40:35 ] thx やっぱり無理なんだね。
881 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 22:00:04 ] >>863 処理が一律1クロックなのは一部の大型機の話 パソコン用のCPUはそこまで単純じゃないし速くもない キャッシュがヒットしたという前提で intの足し算、引き算は0.33クロック、掛け算は0.5クロック、割り算は23クロックかかる IEEE754形式の浮動小数点だと単精度でも倍精度でも時間は変わらなくて 加減算で1クロック、掛け算が2クロック、割り算が32クロック
882 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 23:55:24 ] >>880 blogs.msdn.com/jmstall/pages/sample-pdb2xml.aspx pdb2xmlのソースコードから学べるものがあると思うけど。 デバッガ作るわけでもなければそんな必要ない気がする。
883 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 23:55:44 ] 【FPU】 浮動小数点 【SSE】 pc12.2ch.net/test/read.cgi/tech/1199424344/ float 使うヤツはドシロートかおぢさん pc12.2ch.net/test/read.cgi/tech/1222048909/
884 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 06:01:22 ] >>881 結局のところ大容量キャッシュと高クロック化でごまかしてるだけで x86の本質はそれほど変わってないのか
885 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 06:56:58 ] floatはベクトル演算器を使う場合にはそっちの方が早い。
886 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 10:11:33 ] ちと質問させてください。 VS2003.NETのC#を使用してプログラムしています。 参照の追加でdllを読み込み、プロパティでローカルコピーをTrueにして、コンパイル。 この時に、EXEと同じフォルダにdllがコピーされるのですが、 コピーされる場所を変更できるのでしょうか? EXEと同じフォルダ内に、DLLというフォルダを作成し、 コンパイル時にDLLフォルダにdllがコピーされてほしいのです。 よろしくお願いします。
887 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 10:16:49 ] ビルドイベントで移動するとか
888 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 10:21:08 ] >>886 アプリケーション設定ファイルでアセンブリの読み込みフォルダを指定することができる。 ただし実行プログラムのサブフォルダのみ。 これはユーザーに配布するときの話で、 開発中はそういったことをやると却って話が面倒になるので exeとdllを開発中にフォルダ分けしてしまうようなことは考え内容がいいと思うよ。
889 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 10:25:36 ] >考え内容がいいと思うよ。 考えないほうがいいと思うよ。 失礼。
890 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:30:53 ] >>884 クロックを上げるのは、主にコスト面の問題で限界に来てしまったので 今はパイプラインの段数とコア数の増加とバス幅の拡張でごまかす方向になってきてる。 だから1命令が1/2クロックとか1/3クロックなんていう中途半端な時間で処理できてしまう。 あとは実行環境の64bit化でlong/ulongの計算が一気に速くなったぐらい。
891 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:33:14 ] パイプライン段数はここ数年逆に減少したとか言ってたような
892 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:33:46 ] いい加減スレ違い。
893 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:36:56 ] クラスライブラリで公開するクラスってpublicじゃないとだめなんだっけ?
894 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:39:17 ] ,,,_ _ァュ,,..__ ィチュ::ミミ:.:三彡:.:: :.:.:ヽ /::彡'':.: :.::/:.:{{.::r‐‐ ::_:.: :.:..、 ,ィ /:.: /:..: ::{{:..川||::! ヾ::;;:、 ,ィ:.: ::.: /:. :: 川:.:ヾ:.:.!{:: ヽ::! ///:.: :.:.:||ll: :.: .::.:.:ヾ::.::.i ':! !:|:.:::ミ:: :.;;;川:.: :.:巛、ヾ::! 、 l ゙::ミミ h::. :;:.::||l|:.:: :.}}::!l {{ ヾ _,,...ィ r'' 、 ゙::ミミ:.: ::.;:.:ミミヾ:.: :.:| ヾ、 '´ , マ ヾ:: .:.:ミミ三 :.:州リリ _,,..rテ' ヽ ヾ::;ィ'´ ̄`''ヾ州! ,. ヽ ゙レ '⌒r ィ ,;;. .. .:' ,rィ ’ ヽ し :.: .. 、 ヽ ,,ハ`ー- ..ィ _,.. ィ ィ:::! \ ヽ. ィ{:::... /:::::! \ ` - ..__ 丿::::::ヽ /:::::::ヘ \ ` ーァ-一'::::.:::.:::.::.!ヽ /:::::.:..:::::::::ヽ \ リ::. :::.:.:.:.:::.:.:.:.::::!:::.::! 轌山相太郎 [そりやまそうだろう] (群馬.明治一九年〜昭和一七年)
895 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:50:18 ] >>894 さんきゅー
896 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 13:37:36 ] ifで済むようなところでも例外を使ったほうがいいんでしょうか?
897 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 13:38:44 ] ifで済むならifで済まして下さい
898 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 13:39:47 ] 状況にもよるんじゃね? 継続可能なところのエラー程度ならifで判断してもいいだろうけど 継続しても仕方ないようなところは例外でいくとか
899 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 13:58:19 ] >>896 コールスタックの呼び出し階層から一気に抜け出したい場合は面倒だから エラーを返さず例外処理で実装してしまう場合もあるよ。 他に、既に例外処理を書いていて、普通にエラーを返すより エラー自体を例外処理にしてしまった方が楽に実装できる場合か。 そういったことでないなら、通常のエラーを返す実装にしておいた方がいい。
900 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 14:03:03 ] 例外やエラーに関してもパターンが必要だと思う今日この頃。 俺はpublicメソッドでもなけりゃ自分で投げることは少ないなあ。 引数なんかは渡す前に確認するし。
901 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 14:05:51 ] ただprivateメソッドの中でエラーチェックしてないってことはないよ。 Assert入れてるから。
902 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 14:19:34 ] そうですかよかったね
903 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 11:58:36 ] しかしこの例外ネタは1スレに2回ぐらいは出るな
904 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 12:01:05 ] 明確な回答を返しづらいからじゃねーの ほとんどマイルールだもの
905 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 12:03:31 ] 確かにお決まりパターンてないよな ソフトの作りで例外でさくっと処理しちゃう場合もあるし エラーコードとる場合もあるし みなさんどうしてますかっていうよりこういうコードなんですがって 晒せる範囲でコードを見せてくれるといいんだけどな 質問の仕方の問題もあるな
906 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 12:33:12 ] ライブラリとして自分以外に提供するのか 自分で使い切るのかでも変わってくるし
907 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 12:57:19 ] こういう時に自称プロが出てきて語ってくれればいいのに。 要らん事にばっか口出すからなー。
908 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:04:44 ] 仕事で3日だけC#のアプリを初めて作った自称プロの俺に言わせれば、 そのときの気分、テキトー
909 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:06:10 ] そういえば2chのほかに専門系の質問できるような場所ってあります? なんか人減ってるしすぐ規制するしでw
910 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:09:17 ] ttp://stackoverflow.com/
911 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:09:42 ] 今回のもかなり大規模っぽいねぇ 相談室の方も3日くらい放置状態だわ
912 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:10:33 ] ブラクラかと思うような名前だ>stackoverflow.com
913 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:33:21 ] >>909 日本語でもいくらかある 自分でぐぐってると、そんな質問はありえないと思うんだけど
914 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:33:25 ] まっとうなサイトだし有用な情報もごろごろしてるけど、 如何せん名前のイメージが良くない…というか悪いんだよな
915 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 15:03:50 ] >>910 ありがとう >>913 いやあるにはあるんだが、なんていうかオンラインゲームの古参がいっぱい居るギルドに 入るようなちょっとやりにくさがあるんだよな・・・ その点2chは気軽っていうか
916 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 15:04:51 ] NumericUpDown を継承したユーザコントロールを作成しています。 Enterイベント・OnEnter・OnGotFocus 内でそれぞれ、 Select(0,Text.Length)・(Controls[1] as TextBox).SelectAll()・OnDoubleClick を 全ての組み合わせで試してみましたが、 フォーカスを得た時にテキストを全選択させることができません。 その他にしていることはTextAlignをRightにすることと、 配置先(元?)で、小数点5桁・変更幅0.001と設定しているのみです。 前述の機能を実装する方法を教えてください。
917 名前:デフォルトの名無しさん [2010/04/05(月) 15:05:37 ] 列挙型(大正、昭和、平成、)を後で追加出来るように テキストファイルの"大正、昭和、平成、"を読み込んで宣言するにはどうすればいいですか?
918 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 15:07:36 ] おっと質問忘れるところだった fileIo関連でwindowsの改行 0x0d0x0aを0x0aにするにはどこいじってましたっけ?
919 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 15:21:29 ] >>918 TextWriter.NewLine
920 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 15:24:02 ] >>919 TextWriter.NewLine = "\n"; こんな感じでしたよね? ありがとうございます。
921 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 15:59:43 ] >>887-889 早速の回答ありがとうございました。 結構な手順を踏む必要があり、大変そうですね。 > exeとdllを開発中にフォルダ分けしてしまうようなことは考え内容がいいと思うよ。 なるほど、分かりました。 一通りの開発が完了し、配布する際に読み込み先を指定する事にします。 ありがとうございました。
922 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 21:09:42 ] DataGridView で、教えてください。 スクロールバーの表示設定を行う ScrollBars だったかがあったと思うのですが、 これで垂直スクロールバーを消すとマウスのスクロールボタン?による スクロールを行えなくなります。 垂直スクロールバーを消していてもスクロールボタンによるスクロールを行えるようにすることは出来ませんか?
923 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 21:11:45 ] ホイール?
924 名前:922 mailto:sage [2010/04/05(月) 21:20:12 ] あ、そう。それです。
925 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 21:43:34 ] 便乗質問。 DataGridViewでセルをコピーペーストでデータを移せるようにするにはどうしたらいいの? できれば縦方向に複数のセルを同時に選択した状態で コピペできるようになるといいんだけど。
926 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 21:57:42 ] クリップボードへはDataGridView.ClipboardCopyModeをtるえにすればいい クリップボードからはシコシコ実装するしかありません
927 名前:デフォルトの名無しさん [2010/04/06(火) 11:10:24 ] 質問があります。 WPFで、使わないテキストボックスを、テキストがからのときには表示しないようにしようと考えました。 if (textBox.Text == null || textBox.Text == "") textBox.Hide(); としたら、textBoxにはHideはないらしいんですけど、 こういう場合どうしたらよいでしょう?
928 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 11:13:15 ] Visibility
929 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 11:16:19 ] WPFは専門じゃないけどさくっと見た限りでは>>928 (先を越された textBox1.Visibility = Visibility.Hidden; textBox1.Visibility = Visibility.Collapsed; 上二つの違いは要素を表示しない上にレイアウト予約がどうのってあったな マウスカーソルのせるとざっくりとした説明でたよ textBox1.Visibility = Visibility.Visible;
930 名前:デフォルトの名無しさん [2010/04/06(火) 12:34:44 ] >>928-929 さすがふらっとC#。 できました。マウスで出ますね。 ありがとうございました。