2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

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

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

ふらっとC#,C♯,C#(初心者用) Part56
http://pc12.2ch.net/test/read.cgi/tech/1267348401/


関連スレ
C#, C♯, C#相談室 Part55(実質56)
http://pc12.2ch.net/test/read.cgi/tech/1260111240/1

VB.NET質問スレ(Part33)
http://pc12.2ch.net/test/read.cgi/tech/1263738929/1

C++/CLI part3
http://pc12.2ch.net/test/read.cgi/tech/1206447234/1

2 :デフォルトの名無しさん:2010/03/20(土) 02:20:14
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも

http://codepad.org/

コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。

3 :デフォルトの名無しさん:2010/03/20(土) 10:36:08
OrderedDictionary

4 :デフォルトの名無しさん:2010/03/20(土) 17:31:58
>>1
関連スレの更新忘れ

C#, C♯, C#相談室 Part55 (実質57)
http://pc12.2ch.net/test/read.cgi/tech/1265283175/

紛らわしい。いつになったら正しいスレ番になるのかと

5 :デフォルトの名無しさん:2010/03/20(土) 17:46:26
メンバ変数の値が変更されたらイベント処理をするようなのをしてみたい
TextChangedイベントみたいな感じ

6 :デフォルトの名無しさん:2010/03/20(土) 17:59:35
.....というチラ裏?

7 :デフォルトの名無しさん:2010/03/20(土) 18:04:01
してみたいのでさせてください

8 :デフォルトの名無しさん:2010/03/20(土) 18:06:17
どうぞ

9 :デフォルトの名無しさん:2010/03/20(土) 18:09:43
デリゲート、マルチスレッド、イベント
ごちゃごちゃになってどれ使えばできるのかよくわかりません
教えて

10 :デフォルトの名無しさん:2010/03/20(土) 18:12:30
いいよ

11 :デフォルトの名無しさん:2010/03/20(土) 18:16:47
イベントとデリゲートの関係は、イベントを宣言するときに簡略記法使わずに
addアクセサとremoveアクセサを自分で実装してみるとよく理解できる

12 :デフォルトの名無しさん:2010/03/20(土) 18:21:33
>>11
イベントは呼び出し側は追加と削除しかできない
そういう違いはだいたいわかったんだけど
いざ応用しようとするとまったくわからない

ある変数の値をフォームに表示するために
値が変更されると値を表示するメソッドを毎回書いていたんですけど
もしかしたら、TextChangedのようにデリゲートを使えば
わざわざ表示メソッドを毎回書かなくてもいいんじゃないかと気づいて
調べていたんですが、むじゅかしくて・・・

13 :デフォルトの名無しさん:2010/03/20(土) 18:26:45
そういうのはINotifyPropertyChangedを実装してバインドしてしまえば更新処理不要

14 :デフォルトの名無しさん:2010/03/20(土) 18:47:33
レベルが高すぎて理解できません

15 :デフォルトの名無しさん:2010/03/20(土) 18:51:43
あきらめろよ。

16 :デフォルトの名無しさん:2010/03/20(土) 19:14:08
>>12
普通にプロパティじゃだめなの?

17 :デフォルトの名無しさん:2010/03/20(土) 19:19:36
>>16
そういえばプロパティで出来そうですね
でもプロパティをそういうふうに使ってもいいんですか?
それとクラス内部で使うだけの変数なので
プロパティをするというのも違うような
やはりイベントだと思うんですよ

18 :デフォルトの名無しさん:2010/03/20(土) 19:21:00
イベントを使うにしても結局プロパティで地道にチェックしてイベント発生させるんだよ

19 :デフォルトの名無しさん:2010/03/20(土) 19:41:12
イベントでそれっぽいの実現してるソースみたけど
結局別のクラスのプロパティでメソッド呼び出して
メインクラスのイベントハンドラ呼び出しているだけですね

ってことはプロパティにそのまま書けばいいだけか・・・

20 :デフォルトの名無しさん:2010/03/20(土) 19:45:16
しかし、>>9のレスにマルチスレッドが出ているのは不思議だと思った。
他の二つはわかるけど

21 :デフォルトの名無しさん:2010/03/20(土) 19:46:01
>>19
あまり良い設計じゃないな

22 :デフォルトの名無しさん:2010/03/20(土) 19:49:15
イベントとデリゲートってどんな関係があるの?

23 :デフォルトの名無しさん:2010/03/20(土) 19:50:09
デリゲート経由でイベント呼び出しなんじゃね?

24 :デフォルトの名無しさん:2010/03/20(土) 19:52:04
windowsのイベントってOSが呼び出しする物なので非同期
クリックされたとかイベントが起きたときに特定の関数を呼んでもらった方が効率がいい

呼んでもらいたい関数を教える際に使うのがデリゲート
Cだとコールバックとか言ってた

25 :デフォルトの名無しさん:2010/03/20(土) 19:52:58
イベントは
・イベントハンドラを登録するメソッド
・イベントハンドラを削除するメソッド
をひとまとめにしたもの。プロパティみたいなもん。
addとremoveを省略してevent EventHandler Hoge; の形式で宣言する場合は
自動実装プロパティと同じでデリゲートやメソッドが自動生成される。

26 :デフォルトの名無しさん:2010/03/20(土) 19:54:48
まあ別にしらなくてもぷろぐらむは作れるからいいか

27 :デフォルトの名無しさん:2010/03/20(土) 19:55:23
デリゲートの説明で一番わかりやすかったのが

デリゲートはメソッドをオブジェクトのように使うもの

そう考えるとすごくわかりやすかった
でも、クラス使えばできることをなぜわざわざするのかというと
やっぱり、マルチスレッドかイベントぐらいしか使い道ないような感じ

28 :デフォルトの名無しさん:2010/03/20(土) 20:00:29
>>27
はじめは>マルチスレッドかイベントぐらいしか使い道ない と想定されてたから
マルチキャストとか変なところがあるけど最近はラムダ式などで積極的に活用されてる

29 :デフォルトの名無しさん:2010/03/20(土) 20:02:38
ひょっとしてサブスレッドからメインスレッドに処理の終了を
知らせることができるのか!!

30 :デフォルトの名無しさん:2010/03/20(土) 20:02:50
>はじめは>マルチスレッドかイベントぐらいしか使い道ない と想定されてたから
だから、前にも書いたがそれはない。
寝ぼけたことをどや顔で繰り返さないように。

31 :デフォルトの名無しさん:2010/03/20(土) 20:04:31
>>29
とりあえずバックグラウンドワーカーコントロールでも使ってこい

32 :デフォルトの名無しさん:2010/03/20(土) 20:08:05
俺も初心者だけど、このスレのレベルにワロタ

33 :デフォルトの名無しさん:2010/03/20(土) 20:11:29
>>31
使ってみた!すげーーー!

いつの間にこんなコントロールが!

34 :デフォルトの名無しさん:2010/03/20(土) 20:16:03
と思ったらわざとだろお前wwしらじらしいww

35 :デフォルトの名無しさん:2010/03/20(土) 20:17:52
わざとじゃねーよw
スレッド作ってメインスレッドからタイマーで見てたよw

36 :デフォルトの名無しさん:2010/03/20(土) 20:19:37
>>35
スレッドからスレッド名前空間のタイマ?
それって二重になってるんじゃ・・・・

37 :デフォルトの名無しさん:2010/03/20(土) 20:29:38
この間どっちかのスレでこんなのもあったな
http://codepad.org/akzX4pKs

38 :デフォルトの名無しさん:2010/03/20(土) 20:39:06
で、結局、変数の値が変更されたら
自動でform.Textの値を変更してくれるのは
どう書けばいいの?

39 :デフォルトの名無しさん:2010/03/20(土) 20:46:52
今まで出た感じで好きなように


40 :デフォルトの名無しさん:2010/03/20(土) 20:59:27
textboxだっけ?
あれって中身が変更された〜とかそんなイベントなかったっけ?
それで監視するしかないよね

41 :デフォルトの名無しさん:2010/03/20(土) 21:02:44
なんでもバインドしたけりゃWPFだな

42 :デフォルトの名無しさん:2010/03/20(土) 21:06:03
>>40
メンバ変数つってんだろ
textbox関係ないだろ

43 :デフォルトの名無しさん:2010/03/20(土) 21:08:56
そろそろ死ねよ。

44 :デフォルトの名無しさん:2010/03/20(土) 21:16:26
>>43
お前は寂しい人間だな
昨日から用もないのにこのスレに来ては煽るだけ
お前の人生が不幸だからって他人に八つ当たりするな

45 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/20(土) 21:24:50
>>45
>>2使えよw

47 :デフォルトの名無しさん:2010/03/20(土) 21:25:40
昨日は来てねーよ。
頭おかしいんじゃね?

48 :デフォルトの名無しさん:2010/03/20(土) 21:25:58
>>46
おぉ!
すげーーー!

49 :デフォルトの名無しさん:2010/03/20(土) 21:26:45
何がしたいんだよ。このコード。

50 :デフォルトの名無しさん:2010/03/20(土) 21:27:44
初めての非同期で感動するコードだろ


51 :デフォルトの名無しさん:2010/03/20(土) 21:27:46
素直にプロパティでチェックしてイベント発行するべき
わざわざスレッド使うとか初心者スレで間違ったやり方出すなよ

52 :デフォルトの名無しさん:2010/03/20(土) 21:30:26
初めてのマルチスレッドか。

今度は何か意味のあるコードで頼む。

53 :デフォルトの名無しさん:2010/03/20(土) 21:31:03
あれ? この場合、Invokeしないでいいの?

54 :デフォルトの名無しさん:2010/03/20(土) 21:31:04
>>37で十分だろ

55 :デフォルトの名無しさん:2010/03/20(土) 21:32:57
>>53
そういうの意識しなくていいから初心者にもやさしい


56 :デフォルトの名無しさん:2010/03/20(土) 21:33:14
素直なつくりにできないのって大概は仕様や設計が悪いんじゃないの?

57 :デフォルトの名無しさん:2010/03/20(土) 21:33:17
うん

58 :デフォルトの名無しさん:2010/03/20(土) 21:34:24
へー。使ったことなかったけど、BackgroundWorkerって便利なんだな。

59 :デフォルトの名無しさん:2010/03/20(土) 21:40:17
ああ間違えた
これテンプレにしとけ
毎度応えるの面倒

Form間のデータの受け渡しサンプルコード
http://codepad.org/akzX4pKs

スレッド、デリゲート関連のサンプルコード
http://codepad.org/xOdJsJie

Radiko
http://codepad.org/Vvwba6du

60 :デフォルトの名無しさん:2010/03/20(土) 21:42:51
>>58
まあな

61 :デフォルトの名無しさん:2010/03/20(土) 21:44:10
hogeを他で使うならlock大丈夫か

62 :デフォルトの名無しさん:2010/03/20(土) 21:45:44
>>38

63 :デフォルトの名無しさん:2010/03/20(土) 21:47:13
テンプレにはいらんだろ。

64 :デフォルトの名無しさん:2010/03/20(土) 21:53:47
>>62
変数の値が変わるのはサブスレッド側でわかるんだから
>>45でできるやん。
俺って天才かも。

65 :デフォルトの名無しさん:2010/03/20(土) 22:01:19
BackgroundWorkerなんか便利なものか。
スレッドがよく分かってない奴でもなんとなく使える、という以上のメリット(本当にメリットか?)
は何もないだろう

66 :デフォルトの名無しさん:2010/03/20(土) 22:03:25
超メリットだよ
ただ馬鹿に仕事取られるということでもあるけどなw

67 :デフォルトの名無しさん:2010/03/20(土) 22:05:20
>>65
時代遅れになっていくやつの典型的な反応だな

68 :デフォルトの名無しさん:2010/03/20(土) 22:07:40
アセンブラ厨と言ってることが変わらないよね

BackgroundWorkerをC#に、Threadをアセンブラに変えても成立してしまうw

69 :デフォルトの名無しさん:2010/03/20(土) 22:15:09
>>67
むしろ、言いたくないが君のようなのがいわゆる「VB厨」の典型的反応でしょ。
BackgroundWorkerって典型的な「VB厨」向けツールだよ。

彼らは言うんだよ。「便利なものは便利に使わせていただく」ってw
お前便利だから使ってるわけじゃなくて、それしか使えないんじゃねえの、って。

70 :デフォルトの名無しさん:2010/03/20(土) 22:16:05
>>69
はいはいパンチカードに穴あける作業に戻ってねオジーチャン

71 :デフォルトの名無しさん:2010/03/20(土) 22:17:39
C++やJavaでもマルチスレッドプログラミングしてたけど
BackgroundWorkerは便利だよ

72 :デフォルトの名無しさん:2010/03/20(土) 22:17:47
年寄りはおとなしくタイプライター叩いててくれ。

73 :デフォルトの名無しさん:2010/03/20(土) 22:18:55
普通に明示的にスレッド起動した方がよほど分かりやすい、
と標準的なプログラマなら感じると思うけどね俺は。

74 :デフォルトの名無しさん:2010/03/20(土) 22:19:45
結局お前が思ってるだけじゃん。
何が標準的(キリッだってのw

75 :デフォルトの名無しさん:2010/03/20(土) 22:20:17
この怒涛のレスの雨は久しぶりに見たぞwww

76 :デフォルトの名無しさん:2010/03/20(土) 22:20:20
伸びてると思ったら・・・・

77 :デフォルトの名無しさん:2010/03/20(土) 22:20:55
phpをdisってる人と同じ匂いがする

78 :デフォルトの名無しさん:2010/03/20(土) 22:22:00
>>69
VBが出た時、beginner's toyと言われていたけど、今や、どれもこれも真似してるよな
そういうハッカー気どってVB馬鹿にするのは、COMコンポーネントをCでストレスなく作れるようになってから言ってくれ

79 :デフォルトの名無しさん:2010/03/20(土) 22:22:56
わざわざ遠回りな方法をとるアテクシカコイイみたいな。

スレッド使いこなしてデキるプログラマ目指そう!
モテカワマルチスレッドの嗜み方教えちゃいます特集号

みたいな。

80 :デフォルトの名無しさん:2010/03/20(土) 22:23:59
>>78
VBを馬鹿にしてないって。
「VB厨」を馬鹿にしてるの。だからわざわざカギ括弧付けてるんじゃないの。

81 :デフォルトの名無しさん:2010/03/20(土) 22:24:11
おっさん調子乗ってんなよ^^

82 :デフォルトの名無しさん:2010/03/20(土) 22:25:41
とはいっても>>68を否定できないよねw

83 :デフォルトの名無しさん:2010/03/20(土) 22:25:48
BackgroundWorkerがいやならC#も嫌なはず

84 :デフォルトの名無しさん:2010/03/20(土) 22:26:48
>>80
じゃあさっさと>>62答えろよ

85 :デフォルトの名無しさん:2010/03/20(土) 22:28:12
>>64
お前はイベントとマルチスレッドの違いもわからないカス

86 :デフォルトの名無しさん:2010/03/20(土) 22:28:44
まあ御託はいいから、そんなにBackgroundWorkerが便利だと思うのなら
普通にスレッド起動した場合と比較したメリットをちゃんと言ってみろって。

言えやしないだろうそんなもの。
無い者を言えるわけがない。

さすがにいくら面の皮が厚い馬鹿でも「理屈が分かってない馬鹿なボキュにも使えることがメリット」とは
言いづらいもんねw

87 :デフォルトの名無しさん:2010/03/20(土) 22:29:21
まあまあ喧嘩しないしない
使いたいの使いなさい

それより仕事をしなさい

88 :デフォルトの名無しさん:2010/03/20(土) 22:30:24
>>86
早く>>68を否定してみろよ
否定できないならC#使うのやめて機械語に帰れ

89 :デフォルトの名無しさん:2010/03/20(土) 22:32:54
>>86
単にフレームとして一連の処理の流れが実装してあることがメリットだろう。
IListそのものがListより便利だとは言わないでしょ。
実装が無いんだから。

90 :デフォルトの名無しさん:2010/03/20(土) 22:34:04
>>86
理屈がわからなければを繰り返していくと、最後は量子力学か神学までいくから理屈がわかってないバカ議論は不毛
もう化石だな

91 :デフォルトの名無しさん:2010/03/20(土) 22:34:23
>>86
簡単に使える、ってのは大きなメリットだろ。

92 :デフォルトの名無しさん:2010/03/20(土) 22:35:03
>>86
馬鹿でも使えるのは超メリットだと初めに言ったはずだが
そこから否定されても困るね
何言ってんのお前

93 :デフォルトの名無しさん:2010/03/20(土) 22:35:04
>>88
意味不明な命題を否定も肯定もしようもないと思うけど。
なぜBackgroundWorkerがC#に、スレッド起動の方法がアセンブリ言語に対応するのか
サッパリ理解できん。

馬鹿の議論はいつもこれだが、馬鹿のお前さんの思いつきを俺が共有してるわけないじゃん。
これがセカイ系か。

94 :デフォルトの名無しさん:2010/03/20(土) 22:35:39
簡単だから嫌いってもうね。
自分は特別な人間だと思ってるやつの典型だね。

95 :デフォルトの名無しさん:2010/03/20(土) 22:35:40
>>88-92
死ねよおめーらwww

96 :デフォルトの名無しさん:2010/03/20(土) 22:36:09
ワロタ

97 :デフォルトの名無しさん:2010/03/20(土) 22:37:20
初心者向けスレで、顔真っ赤にすんなよ。

98 :デフォルトの名無しさん:2010/03/20(土) 22:37:47
お前ら落ち着け

99 :デフォルトの名無しさん:2010/03/20(土) 22:39:14
>>98
お前も落ち着け

100 :デフォルトの名無しさん:2010/03/20(土) 22:39:30
こいつと同じ臭いがする。
勘違い職業マ。

678 名前:以下、名無しにかわりましてVIPがお送りします[] 投稿日:2010/02/08(月) 13:05:38.59 ID:V+MiXXPeP
>>674
その手段を自分で想像出来ないヤツが結果を出せる訳無いよな

>>675
いきなり素人が5つ星のフランス料理作れるとしたら、誰か経験のある人が代わりに作ってあげたキットを再利用するか、
あるいはボタンを押せば出てくる装置を使うしかない。 もともとプログラミングって、技術職の仕事だ。
みんな欲しいのは技術じゃないのかと。 結果が欲しいだけなら巷に転がってる完成品使えばいいだけ

昔も今も見よう見まねから始まるのは変わらないだろうけどな。 でもコピペは見真似にすらならね

101 :デフォルトの名無しさん:2010/03/20(土) 22:39:33
今日はアンチMSのスレが伸びてないと思ったが、こっちで喧嘩してたのかw

102 :デフォルトの名無しさん:2010/03/20(土) 22:40:21
へー

103 :デフォルトの名無しさん:2010/03/20(土) 22:41:08
VIPで死ね

104 :デフォルトの名無しさん:2010/03/20(土) 22:41:14
反論したかったら、BackgroundWorkerの致命的な欠点を言わないとな
簡単なことにThreadを生で使った方が問題引き起こすと思うけどな

105 :デフォルトの名無しさん:2010/03/20(土) 22:41:22
その「簡単な方法」では搭載しきれない仕様が降ってきたときに
ちょっと苦労するか、沢山苦労するか、逃げ出すか、の違いだしょ?

いいじゃん、選ぶのは自分なのだし。

106 :デフォルトの名無しさん:2010/03/20(土) 22:42:42
>>86じゃないけど
Suspendできないのがちょっと面倒だったカモ

107 :デフォルトの名無しさん:2010/03/20(土) 22:43:04
カモネ

108 :デフォルトの名無しさん:2010/03/20(土) 22:43:39
かーもね

109 :デフォルトの名無しさん:2010/03/20(土) 22:44:04


110 :デフォルトの名無しさん:2010/03/20(土) 22:45:01
>>65
使えるものは使う てひとはそれでいいじゃん
まぁ同じくらいのもの実装しても大してめんどくさいものではないけどね



111 :デフォルトの名無しさん:2010/03/20(土) 22:45:08
>>77>>100
ディスプレイとキーボードと部屋掃除しろ

112 :デフォルトの名無しさん:2010/03/20(土) 22:46:47
勢いが板でトップになってるから何事かと思ったら

113 :デフォルトの名無しさん:2010/03/20(土) 22:48:06
>>110
いいじゃんね

114 :デフォルトの名無しさん:2010/03/20(土) 22:49:05
2番目に勢いのある
【超高速】C/C++に代わる低級言語を開発したい
の倍いってるじゃねぇかwwwww


115 :デフォルトの名無しさん:2010/03/20(土) 22:53:14
お前ら落ち着いて落ち着いて死ねなの〜

116 :デフォルトの名無しさん:2010/03/20(土) 22:57:26
すべてRuby厨の仕業

117 :デフォルトの名無しさん:2010/03/20(土) 23:00:16
まんまと釣られたということだよ。
言わせんな恥ずかしい。

118 :デフォルトの名無しさん:2010/03/20(土) 23:01:05
ID欲しいよね・・・

119 :デフォルトの名無しさん:2010/03/20(土) 23:02:19
ID出たら真っ赤になってそうだなぁ

120 :デフォルトの名無しさん:2010/03/20(土) 23:08:36
書いてんの2人くらいだろ

121 :デフォルトの名無しさん:2010/03/20(土) 23:10:26
>>120
の会話ですら赤字になってる人の発言かもしれないと疑ってしまう自分


122 :デフォルトの名無しさん:2010/03/20(土) 23:14:40
Dr林にご相談ください

123 :デフォルトの名無しさん:2010/03/20(土) 23:16:16
>>115の発言が最近やったエロゲキャラのしゃべり方と似ててちょっと燃えた
いや萌えた

124 :デフォルトの名無しさん:2010/03/21(日) 00:02:57


125 :デフォルトの名無しさん:2010/03/21(日) 00:58:47
(´・ω・`)ショボーン

126 :デフォルトの名無しさん:2010/03/21(日) 01:16:21
スレッドプールで十分なら極力そちらを使うべきではあるが、
専用スレッドを用意するメリットがあるなら使えばいいだけの話だろ

因みに、ThreadPool、Delegate.BeginInvoke、BackgroundWorker、
Forms以外のTimer、多くのコンポーネントの非同期操作(〜Async)などの
スレッドプールを使っているものなら多用しても問題はない

逆に、なんでもかんでもThreadを使うのは論外

>>106
中断のための機構は自前で用意すべきもの
Threadならイベントオブジェクト使って適当な間隔でチェックするだけだし、
ThreadPoolなら処理を細切れにしてキューに入れるタイミングを制御する

127 :デフォルトの名無しさん:2010/03/21(日) 03:13:28
Thread明示的に使ったってどうせ同じようなことを自分で実装するんだから、
あるもの使う方が手っ取り早いだろう。
それにいちいちスレッド作るよりThreadPool使う方が一般に望ましい(常にとは言わない)のは常識。


128 :デフォルトの名無しさん:2010/03/21(日) 03:56:43
知識0の状態からFF11のツール作るためにC#の勉強をしたいのですが
参考になるサイトやこれは買っとけ的な本は何ですか?

129 :デフォルトの名無しさん:2010/03/21(日) 03:58:53
言語はどうにでもなるだろ
周辺ツール作る場合はゲーム側の独自仕様をどれだけ集められるかだと思うよ

130 :デフォルトの名無しさん:2010/03/21(日) 04:22:07
FF14にしましょう

131 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/21(日) 06:19:39
やーだお

133 :デフォルトの名無しさん:2010/03/21(日) 06:23:23
うーむ
なんでこの手の話題は繰り返すんだろうw

スレッド、デリゲート関連のサンプルコード
http://codepad.org/xOdJsJie

これの応用でできるんじゃないかな?

134 :デフォルトの名無しさん:2010/03/21(日) 06:24:45
Console使うなら、
TextWriterから派生させたクラスを作って、
WriteメソッドとかをオーバーライドしてTextBoxに出力するようにして、
Console.SetOutで設定すればいいけど。

135 :デフォルトの名無しさん:2010/03/21(日) 09:03:12
>>133
誰に言ってんの??


136 :デフォルトの名無しさん:2010/03/21(日) 09:05:50
>>133-134
ありがとうございます。
単語を調べて一つ一つ確かめてみます

137 :デフォルトの名無しさん:2010/03/21(日) 09:09:55
>>86
お前素人だろ


138 :デフォルトの名無しさん:2010/03/21(日) 09:15:19
なんでBackroundWorkerをそんなに毛嫌いするのかわからん。
素人専用とでも思いこんでるのか?

素人に使いやすい設計になってるのは事実だが、
別にやりたいことにあってれば普通に使えばいいじゃん。
普通に使えるのにわざわざ自分で同じような処理を実装して、
でそれがThread明示的に作ってとか、マイナスにしかなってない。



139 :デフォルトの名無しさん:2010/03/21(日) 09:20:00
用途に合ってなければ自分で制御するだけ、
誰も常にBackroundWorkerがいいなんて言ってないのにな。
まあそれでもThreadを自分で作ることはあまりないが。


140 :デフォルトの名無しさん:2010/03/21(日) 10:14:40
まあそれでもThreadを自分で作ることはあまりないが。

141 :デフォルトの名無しさん:2010/03/21(日) 10:16:41
今時代はスレッドプールですよ

142 :デフォルトの名無しさん:2010/03/21(日) 10:31:31
スレッド温泉でゆっくりしたいなあ

143 :デフォルトの名無しさん:2010/03/21(日) 10:32:07
スレッドプールって何?

144 :デフォルトの名無しさん:2010/03/21(日) 11:01:50
次はParallel.Forですね
簡単といってもBackgroundWorkerとは違ってこちらはアカデミックな感じだが

145 :デフォルトの名無しさん:2010/03/21(日) 11:02:22
ThreadPool

146 :デフォルトの名無しさん:2010/03/21(日) 11:08:50
>>134
できました。
継承してオーバーライドって便利ですね。
勉強になりました。

147 :デフォルトの名無しさん:2010/03/21(日) 12:50:25
まだ4.0の勉強してないんだけどParallel.Forとかって別CPUで処理させるんだよね?
いくつかParallel.Forで処理を同時にやってすべてが終わったかどうかのチェックはフラグかなんか持って
自分で管理しないとだめなのかな?

148 :デフォルトの名無しさん:2010/03/21(日) 12:56:39
parallel.forとかすげーな
もうC++の時代は終わってるな

149 :デフォルトの名無しさん:2010/03/21(日) 13:03:03
単純に適材適所でしょ
windowsなんかC/C++がなきゃ動かないわけだし

150 :デフォルトの名無しさん:2010/03/21(日) 13:03:54
まぁGUIクライアントを書く言語としてはC#の方が向いてるね

151 :デフォルトの名無しさん:2010/03/21(日) 13:22:21
>>147
並列ライブラリは直接使うとよほど単純なパターンを除くと非常にややこしいので、
Parallel Linqから使ったほうが簡単。
並列処理の結果を待つかどうかオプションで指定できる。

152 :デフォルトの名無しさん:2010/03/21(日) 13:26:30
>>151
そんなの知ってるよ

153 :デフォルトの名無しさん:2010/03/21(日) 13:27:50
>>151
なるほど
しかし、すげぇな・・・
4.0いろいろ贅沢な機能付きすぎだろ


154 :デフォルトの名無しさん:2010/03/21(日) 13:29:06
>>152
自己紹介乙

155 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/21(日) 13:34:33
そんなの使わずマルチスレッドつかえよ
Parallel.Forなんて大して使えん
ループ内がそれそれ独立していなければ無理

157 :デフォルトの名無しさん:2010/03/21(日) 13:37:16
((;゚Д゚)) 決めつけ無理……………!!!


158 :デフォルトの名無しさん:2010/03/21(日) 13:37:34
結構使いにくそうだ…
でも・・・実装したからには何か目的が・・・・メリットがあるんだよな?


159 :デフォルトの名無しさん:2010/03/21(日) 13:38:35
Parallelライブラリはコア数に合わせて並列数を調整してくれるところにある。
自分でスレッド作って調整するのは大変だぞ?

160 :デフォルトの名無しさん:2010/03/21(日) 13:39:16
そうだね。

161 :デフォルトの名無しさん:2010/03/21(日) 13:42:37
うん

162 :デフォルトの名無しさん:2010/03/21(日) 13:50:06
>>155
そんな並列の意味が一切無い例出してどうすんのさ

163 :デフォルトの名無しさん:2010/03/21(日) 13:52:50
>>162
お前に言われる筋合いはないから

164 :デフォルトの名無しさん:2010/03/21(日) 13:53:04
もうちょっとMPIの様に透過的にだな・・

165 :デフォルトの名無しさん:2010/03/21(日) 14:12:13
【春祭り 】また割れ厨のスクショと個人情報が晒されてるぞ避難所5
http://jbbs.livedoor.jp/bbs/read.cgi/news/4988/1269124859/

ICO - 国際著作権機構
ttp://warezer.net/search/user/3201

割れてる人は気おつけて

166 :デフォルトの名無しさん:2010/03/21(日) 14:42:40
>>164
パラレルライブラリはOpenMP型で、MPI型のはAxum。
ttp://msdn.microsoft.com/en-us/devlabs/dd795202.aspx
まだ研究段階っぽい。最終的にはC#に成果を吸収という流れだろうか。

167 :デフォルトの名無しさん:2010/03/21(日) 15:21:20
>>147
ちゃんと Join する。
スレッドいっぱいたつけど、全部のタスクが終わるまで待ってくれる。

>>148
同時に C++ 向けにも並列処理ライブラリが追加されるけどね、VS 2010。
C++ の時代、分野次第だなぁ。
10年は前に終わってるとこもあるし、あと10年は使わなきゃいけないとこあるし。

>>155
そんな処理は Parallel LINQ の方がいいな。
あと、集計部分(+= するとこ)は並列化してもおいしくない。

>>164
pragma だらけってのは、標準化がどうこう言われてしまう C++ の苦肉の策だろ。


168 :デフォルトの名無しさん:2010/03/21(日) 16:08:18
>>167
ほほぅ
キッチリ便利にはやってくれそうだなぁ…
3つの画像を同時に処理して終わったらその結果を判定して処理
とかやってるから単純なマルチスレッドでやるよりイイかもしれねぇ。。。
ちょっと期待したい

169 :デフォルトの名無しさん:2010/03/21(日) 16:34:39
for文の前に属性書けたら楽そうだけど
[Parallel 4]
for(){
}
まぁ文法的に無理ぽ

170 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/21(日) 16:48:43
並列処理とか……
ここは本当に初心者スレなのか?w

172 :デフォルトの名無しさん:2010/03/21(日) 16:50:44
いいんじゃね?

173 :デフォルトの名無しさん:2010/03/21(日) 16:56:30
まあ、Parallel.ForはちゃんとJoinしてくれるの?とか、結構初心者らしい質問な気もするが。

174 :デフォルトの名無しさん:2010/03/21(日) 20:11:36
並列処理といってもこのていどは初級レベルだろう
まあ普通は初心者は並列処理を勉強しないものだけど、
勉強してみれば、このくらいは理解できるレベルだと思う

175 :デフォルトの名無しさん:2010/03/21(日) 20:36:37
だね

176 :デフォルトの名無しさん:2010/03/21(日) 20:39:48
並列処理の使い方を理解できるというより、
並列処理の必要性を理解する、ことになるのでしょうね。

必要と思えれば頑張れる、そういうもんでしょ、言語習得ってさ。

177 :デフォルトの名無しさん:2010/03/21(日) 20:41:33
そして別スレッドからGUIコントロールにアクセスして怒られるんですね

178 :デフォルトの名無しさん:2010/03/21(日) 20:48:12
もう・・・ぷんぷんっ

179 :デフォルトの名無しさん:2010/03/21(日) 20:58:05
backgroundWorkerは自由度が低いから使いづらい

180 :デフォルトの名無しさん:2010/03/21(日) 21:05:14
いつまでそのネタ引っ張るつもりだ

181 :デフォルトの名無しさん:2010/03/21(日) 21:16:46
>>179
初心者ではなく低級者の発言ですね

182 :デフォルトの名無しさん:2010/03/21(日) 23:34:27
>>170
何の意味があるのそれ?


183 :デフォルトの名無しさん:2010/03/22(月) 00:34:37
質問します。
DataGridViewで特定のCellから値を参照したいんですけど
方法がわかりません。お願いします。

184 :デフォルトの名無しさん:2010/03/22(月) 00:36:04
DatagridView.Rows(0).Cells(カラム名).Value

だけじゃね?
さすがにそれはヘルプ見てみようぜ
それとも何か勘違いしてるかな?


185 :デフォルトの名無しさん:2010/03/22(月) 01:08:49
メソッドに戻り値つけないとどういう処理しているかわからなくなるね
とくにグローバル変数をどうにかしているときとか

186 :デフォルトの名無しさん:2010/03/22(月) 01:14:00
C#スレでグローバル変数とな!?
シングルトンのクラスに詰め込むの?

187 :デフォルトの名無しさん:2010/03/22(月) 01:15:17
フィールド変数だらう

188 :デフォルトの名無しさん:2010/03/22(月) 03:31:48
SlimDX/Direct3Dで描画してるウィンドウの中にWPFでコントロールを描画して使いたいんですが、
いいサンプルはありませんでしょうか。

189 :デフォルトの名無しさん:2010/03/22(月) 03:59:50
このスレレベル高すぎて何いってるのか全然わからないですがさらに初心者向けのスレってないんですか?
FF11でツールを作ろうと思ってます。

190 :デフォルトの名無しさん:2010/03/22(月) 04:12:21
今のFF11ってツールまで作れるんだな…。

191 :デフォルトの名無しさん:2010/03/22(月) 07:09:13
そういやFF11ってなんか言語っぽいもんな
0xFF11みたいな

192 :デフォルトの名無しさん:2010/03/22(月) 09:49:37
ボットでも作りたいのかね

193 :デフォルトの名無しさん:2010/03/22(月) 13:39:33
string型の配列aがnullでも空でもないことを判定するプログラムを考えています。

if ( a != null )
{
  if ( a.Length > 0 )
  {
    (処理)
  }
}

これ以上にスマートな記述方法は存在しますか?

194 :デフォルトの名無しさん:2010/03/22(月) 13:41:26
>>193
string.IsNullEmpty()

195 :デフォルトの名無しさん:2010/03/22(月) 13:43:39
それ、配列にも使えるのけ?

196 :デフォルトの名無しさん:2010/03/22(月) 13:45:57
無理だな
ネストが深くなるのが嫌だから&&でつなぐ

197 :193:2010/03/22(月) 13:49:55
>>194-195
そうなんです。String.IsNullEmptyOrEmptyは文字列には使えますが文字列の配列には使えませんでして・・

>>196
たしかにネストが深くなるのはイヤなんですが、もし&&でつないでしまうとnullだった場合に
a.Legth のところで例外が発生してしまうんです。

だから泣く泣くネストを深くして対処しました。

198 :デフォルトの名無しさん:2010/03/22(月) 13:52:31
ショートサーキットを使うように、|| でつなげばいいだろ。

199 :デフォルトの名無しさん:2010/03/22(月) 13:55:07
& じゃなくて && だよ?

200 :デフォルトの名無しさん:2010/03/22(月) 13:58:02
&&で繋ぐと、結果が偽になった時点でそれ以降は評価されない

201 :デフォルトの名無しさん:2010/03/22(月) 14:03:15
>>200
じゃあ&&でいいじゃないか。変数aがnullなら、他のことをやっても仕方がない。

202 :デフォルトの名無しさん:2010/03/22(月) 14:07:00
try
{
  if ( a.Length > 0 )
  {
    (処理)
  }
}
catch(ぬるぽ)
{
}

・・・違うの?

203 :デフォルトの名無しさん:2010/03/22(月) 14:09:57
>>202
本気で言ってるの?
ぬるぽをキャッチしようとする奴始めて見た

204 :193:2010/03/22(月) 14:10:15
>>200
> &&で繋ぐと、結果が偽になった時点でそれ以降は評価されない

判定式の順番は重要ですか?
たとえば a がnullのとき

if ( a.Length > 0 && a != null )
{
    (処理)
}

とやってしまうと最初の a.Length > 0 で例外が発生したりしませんか?

205 :デフォルトの名無しさん:2010/03/22(月) 14:10:21
フォルダパスからフォルダ名を取得するのってどうすればいいのでしょうか
GetDirectoryNameはファイルパスからフォルダパスを求めるもんですし・・・

206 :デフォルトの名無しさん:2010/03/22(月) 14:10:55
それはないわ。

207 :デフォルトの名無しさん:2010/03/22(月) 14:11:38
>>204
左から

>>205
DirectoryInfo.Name

208 :デフォルトの名無しさん:2010/03/22(月) 14:23:47
>>203
お前の経験が浅いのではw

>>204
&&の前後が逆

209 :デフォルトの名無しさん:2010/03/22(月) 14:25:22
>>207
ありがとうございます!

210 :デフォルトの名無しさん:2010/03/22(月) 14:26:17
null判定を例外で処理しようとするのは初心者

211 :デフォルトの名無しさん:2010/03/22(月) 14:28:27
try
{
}
catch(Exception e)
{
}
なんて書いてるソースはよく見るね

212 :デフォルトの名無しさん:2010/03/22(月) 14:29:34
初心者スレだから意見を聞きたいなら間違ってはいないが
回答としては無い

213 :デフォルトの名無しさん:2010/03/22(月) 14:30:50
>>211
テストソースとしてならいいんじゃない?
それで納品したら次回はないと思うけど

214 :デフォルトの名無しさん:2010/03/22(月) 14:31:09
いろいろ作り込んだり、ぐちゃぐちゃになったりして、
新規プロジェクト作成したくなる衝動に駆られるよね
この衝動に名前つけようぜ

215 :デフォルトの名無しさん:2010/03/22(月) 14:31:10
>>211
まぁそれ自体が間違ってるわけじゃないけど
わかってない臭はするな

216 :デフォルトの名無しさん:2010/03/22(月) 14:32:05
>>214
現実逃避

217 :デフォルトの名無しさん:2010/03/22(月) 14:42:19
別にExceptionで受けてもいいだろ

218 :デフォルトの名無しさん:2010/03/22(月) 14:44:43
>>217
どんなException出しても同じ対応するの?

219 :デフォルトの名無しさん:2010/03/22(月) 14:48:29
>>193
var notNullEmptyAry = ary.Where(s => !string.IsNullOrEmpty(s));

220 :デフォルトの名無しさん:2010/03/22(月) 14:49:49
>>218
後処理がいるのは別にきまってるだろw

221 :デフォルトの名無しさん:2010/03/22(月) 14:51:52
>>219
配列の各要素にnull/空文字列が含まれているかどうかなんて話、誰もしてないぞ

222 :デフォルトの名無しさん:2010/03/22(月) 14:52:22
そもそも>>193は、正常な処理をif文のブロック内に書いてる時点で
ソースが汚いと思う

223 :デフォルトの名無しさん:2010/03/22(月) 15:01:59
どっちが正常なのかは文脈次第じゃないか

224 :デフォルトの名無しさん:2010/03/22(月) 15:02:22
if(a==null && a.Length == 0) return;

処理

225 :デフォルトの名無しさん:2010/03/22(月) 15:05:44
|| が正解

226 :デフォルトの名無しさん:2010/03/22(月) 15:05:52
>>223
さすがに配列のオブジェクトがnullで正常処理とか・・・
そういうのが正常だと言える例あるの?

227 :デフォルトの名無しさん:2010/03/22(月) 15:07:58
>>220
致命的な例外もわざわざCatchするんですね
かっこいい!

228 :デフォルトの名無しさん:2010/03/22(月) 15:09:20
>>226
ローカル変数ならあると思うけど

229 :デフォルトの名無しさん:2010/03/22(月) 15:22:37
初心者からかって遊んでるやつしかいないのかここは

230 :デフォルトの名無しさん:2010/03/22(月) 15:24:22
外部からデータ貰って配列に入れるときとか、0件だと配列そのものができてない
つまりnullになることあるな。もちろん0件でも正常

231 :デフォルトの名無しさん:2010/03/22(月) 15:29:32
try-catch はコストが大きいから
>>193のような条件判別では普通>>202のようにはしない

232 :デフォルトの名無しさん:2010/03/22(月) 15:37:59
>>231
他の言語ならそうだがC#なら正解
エラー処理のために条件分岐やるのはVB6.0で止まっている奴

条件分岐は何かの処理をさせたいから使うわけでエラー処理のためにするべきではない
つまりこれだけでいい
try
{
//何かの処理
}
catch{}

233 :デフォルトの名無しさん:2010/03/22(月) 15:39:56
>>231
一般的にtry-catch構文はオーバーヘッドが大きいといわれているけど、
C#(clr)でも同じことが言えるの?
なにかこの辺について言及したいい記事はありませんかね。

234 :193:2010/03/22(月) 15:41:49
>>207
>>208
どうもです(´・ω・`)ノ

&&で結ばれた判定式が左から順番に判定されて、条件に合致した時点で残りの判定式の判別は
破棄されるとは知りませんでした。

つまり>>193

if ( a != null && a.Length > 0 )
{
    (処理)
}

と簡潔に記述できるわけですね。

235 :193:2010/03/22(月) 15:42:32
>>222
> そもそも>>193は、正常な処理をif文のブロック内に書いてる時点で
> ソースが汚いと思う

:(;゙゚'ω゚'):!

その件に関しましては常々疑問に思っておりました。
メインとなる処理はif文の中で記述するべきか、外で記述するべきかに関してです。

メインとなる処理はif文の外に書くべきでしたら>>193

if ( a == null || a.Length == 0 )
{
  return false;
}

(処理)

とするべきなんでしょうか?

236 :デフォルトの名無しさん:2010/03/22(月) 15:43:39
catchした時は重くなるけど通常は関係ないんじゃないの

237 :デフォルトの名無しさん:2010/03/22(月) 15:43:53
>>234
そういうことはC#ではやらない

238 :デフォルトの名無しさん:2010/03/22(月) 15:44:25
>>230
0件とnullは違う意味で使うだろ、常識的に考えて

239 :デフォルトの名無しさん:2010/03/22(月) 15:44:27
>>235
>>224

240 :デフォルトの名無しさん:2010/03/22(月) 15:45:38
>>235
プログラムはケツまで流すものだとか考えてる人なら
正常処理だけif文に入れる

ようは好きにしろ

241 :デフォルトの名無しさん:2010/03/22(月) 15:47:20
>>230
そもそもDBの場合
まず件数引っ張ってからデータ取得しない?

242 :デフォルトの名無しさん:2010/03/22(月) 15:48:28
条件式のネストを避ける書き方って一般的に何ていうんだっけ?

243 :デフォルトの名無しさん:2010/03/22(月) 15:49:16
>>241
件数そのものを先に欲しい場合はそうするかもしれないが、
普通はカーソル機能を使って最初の1行目だけをもらう。
全部引っ張るようなメモリ食うようなことは避ける。

244 :デフォルトの名無しさん:2010/03/22(月) 15:52:12
rowsよりcountのほうが軽いだろ

245 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/22(月) 16:00:15
>>245
普通のメソッドでなくデリゲートを使うのはなんで?

247 :デフォルトの名無しさん:2010/03/22(月) 16:11:07
全角変換するなら文頭のスペースだけにしろよ

248 :デフォルトの名無しさん:2010/03/22(月) 16:13:10
>>247
おまえがやれ

249 :デフォルトの名無しさん:2010/03/22(月) 16:14:11
カッコの中の最初と最後を空けるなら全部に適用しろ
算術記号も同様に

250 :193:2010/03/22(月) 16:15:01
>>237
>>239
>>240
どうもです。>>224さんのようにします(´・ω・`)ノシ

251 :デフォルトの名無しさん:2010/03/22(月) 16:18:22
>>249
おまえがやれ

252 :デフォルトの名無しさん:2010/03/22(月) 16:22:54
できないのか・・・

253 :デフォルトの名無しさん:2010/03/22(月) 16:40:50
>>241
外部ってWebサービスでSOAPで受け取ったりするやつもある

254 :デフォルトの名無しさん:2010/03/22(月) 17:19:50
(´・ω・`)←お亡くなりになられました

255 :デフォルトの名無しさん:2010/03/22(月) 17:22:55
>>245
C#1.0のような腐った書き方のうえに腐った命名規則

256 :デフォルトの名無しさん:2010/03/22(月) 17:30:51
スレタイ読めよ

257 :デフォルトの名無しさん:2010/03/22(月) 17:34:24
というかCS0161。論外

258 :デフォルトの名無しさん:2010/03/22(月) 17:45:33
>>192
はいそのとうりでボットを作りたいです。もっと初心者向けのスレないでしょうか。

259 :デフォルトの名無しさん:2010/03/22(月) 17:47:09
いきなりボット作ろうとする人向けの初心者スレは無いと思う・・・

260 :デフォルトの名無しさん:2010/03/22(月) 19:01:04
ちょっとしたプログラムを作って、そのできばえを達人に判定してもらって
技能向上に向けたアドバイスをいただけるスレは無いでしょうか?

261 :デフォルトの名無しさん:2010/03/22(月) 19:03:52
ないんじゃね? あっても罵倒の嵐になりそうだし。

262 :デフォルトの名無しさん:2010/03/22(月) 19:04:37
>>260
スクエニ社内のボット対策スレへ行け。

263 :デフォルトの名無しさん:2010/03/22(月) 19:32:02
>>261
> あっても罵倒の嵐になりそうだし。

。・゚・(ノ∀`)・゚・。

264 :デフォルトの名無しさん:2010/03/22(月) 19:44:01
第一

分かりやすいところでBOT開発の情報共有したら
社員にかぎつけられて対策されちゃうだろw

265 :デフォルトの名無しさん:2010/03/22(月) 20:05:45
D言語使えばいいじゃん

266 :デフォルトの名無しさん:2010/03/22(月) 20:10:15
>>265
【超高速】C/C++に代わる低級言語を開発したい
にカエレ

267 :デフォルトの名無しさん:2010/03/22(月) 20:24:02
>>224
ナイスジョーク


268 :デフォルトの名無しさん:2010/03/22(月) 21:16:55
>>233
記事じゃないけどこれとかどうよ
ttp://msdn.microsoft.com/ja-jp/library/x4764854.aspx


269 :デフォルトの名無しさん:2010/03/22(月) 21:17:24
>>255
おまえバカ大将

270 :デフォルトの名無しさん:2010/03/22(月) 21:24:02
>>269
おまえバカ元帥

271 :デフォルトの名無しさん:2010/03/22(月) 21:25:49
>>233
コストを払うのは例外発生時
通常はtrycatchの外とほぼ変わりない

.NET アプリケーションのパフォーマンス関連のヒントとトリック
http://msdn.microsoft.com/ja-jp/library/ms973839.aspx

trycatchを置き換えるというよりは、条件分岐で例外が投げられるケースを減らす
条件分岐の外を大きくtrycatchで括って漏れた奴キャッチするとかそんなんでもいいの

272 :デフォルトの名無しさん:2010/03/22(月) 21:26:18
>>188
WPFの中でDirectX使うのは可能だけど逆は無理
画像に描画するとかすれば無理やりできなくもないけど極めて非効率

273 :デフォルトの名無しさん:2010/03/22(月) 22:14:07
VisualC#2008のデバッグについて質問があります。
デバッグ中時間がかかる処理をしているところを確認したいのです。デバッグの再生ボタンがグレーの実行状態のときに、どこで実行しているか知る方法はありますか?
プログラムは約5000行あり、ブレークポイントを設定する候補の箇所が多すぎる場合、いちいち手動で設定するのではたいへんなのです。
こういう場合、どのようにしたらよいものでしょう?


274 :デフォルトの名無しさん:2010/03/22(月) 22:20:10
>>273
毎日どこから質問拾ってるのか?

275 :デフォルトの名無しさん:2010/03/22(月) 22:23:32
>>273
ビデオの一時停止みたいなボタン

276 :デフォルトの名無しさん:2010/03/22(月) 22:23:33
5000行で10個のブレイクポイントを張って、どの500行に時間がかかってるか確認。
ってのを何回か繰り返せばすぐわかるだろよ。

277 :デフォルトの名無しさん:2010/03/22(月) 22:25:10
>>276
目安程度かもしれんがブレイクポイント入れるんじゃなく
その場所を通った時間をどこかに出力すればいいかもね

278 :デフォルトの名無しさん:2010/03/22(月) 22:27:34
>>273
ブレークポイントを設定するのと同時にコンソール出力のコードを挿入していく。
恒常的に残すときはTrace呼び出しにする。

以降、ログを見るだけでエラーの発生箇所がだいたい分かるようになる。

279 :デフォルトの名無しさん:2010/03/22(月) 22:27:45
少しは頭使えばいいのに。

280 :デフォルトの名無しさん:2010/03/22(月) 23:04:22
\文字を使いたいのですがどうすればいいのでしょうか?
なんかプログラムの一部として認識されちゃいます

281 :デフォルトの名無しさん:2010/03/22(月) 23:05:50
\\
または文字列リテラルの中で使うなら
@"\"でも可

282 :デフォルトの名無しさん:2010/03/22(月) 23:09:32
>>281
この速さ
だから助かる
アリガトス



283 :デフォルトの名無しさん:2010/03/22(月) 23:14:31
varってみんな使ってる?
使ってみたけどコードが短くはなるけど
わかりにくいような気がする

284 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/22(月) 23:17:58
なんのためのcatchだ

286 :デフォルトの名無しさん:2010/03/22(月) 23:20:16
こうした方がよくねーか?
http://codepad.org/wcT2CmWz

287 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/22(月) 23:22:38
>>286
そんなはずかしいことするのはお前だけ

289 :デフォルトの名無しさん:2010/03/22(月) 23:26:30
>>286>>284じゃまったく意味合いが違っていくる
>>286なら1つのファイル移動が失敗しても他のはできる可能性があるが
>>284だと一度例外が出るとその時点で作業がストップする

290 :デフォルトの名無しさん:2010/03/22(月) 23:28:30
間違った逆だ。>>286だと例外が出た視点で作業が継続できない
通常複数ファイル移動する場合に一部のファイルが存在しなかったりしても続けるからな

291 :284:2010/03/22(月) 23:33:44
>>287試したけど、'object' に 'Text' の定義が含まれておらず、型 'object' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。

というかそもそも目的のファイルは全部ちゃんと移動できてるのにエラーが発生する意味がわからんのです


292 :デフォルトの名無しさん:2010/03/22(月) 23:35:22
自分で制御がちゃんとできないならファイルとかフォルダがあるかどうか
確認する機能使えばいいんじゃね?

昔ながらのコードで返してくれるのがあったはず

293 :デフォルトの名無しさん:2010/03/22(月) 23:36:33
>>291
型を指定してないからだろ?
listboxの行って確かstring管理だったはず

294 :デフォルトの名無しさん:2010/03/22(月) 23:42:58
listviewitemと勘違いしてたわw

295 :デフォルトの名無しさん:2010/03/22(月) 23:44:42
ListViewItemsは何のコレクションだよ
賢者タイムか・・・

296 :デフォルトの名無しさん:2010/03/22(月) 23:48:56
catch(Exception e)
{
MessageBox.Show((e.GetTyppe()).FullName+e.Message);
}}

297 :デフォルトの名無しさん:2010/03/22(月) 23:56:51
>>283
Hogeclass hogeclass = new Hogeclass();なんかは冗長なので、
var hogeclass = new Hogeclass();にする。
あとはLINQ関係かな。

298 :デフォルトの名無しさん:2010/03/23(火) 00:00:06
>>291
コレクションのアイテムを入れる変数の型が違うとか
tryステートメント使ってるのにcatchで例外を捕捉しないとか
まず基本を身につけないと例外出る度に自分で対処できないよ

299 :デフォルトの名無しさん:2010/03/23(火) 00:08:24
エクスプローラのフォルダツリーを使いたいのですが、
treeViewで作るしかないですか?

300 :デフォルトの名無しさん:2010/03/23(火) 00:14:12
というより
エクスプローラのフォルダツリーを実現するための部品がtreeviewでしょ?
サンプルとかありそうな気もしたけどWPFくらいしかないな

301 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/23(火) 00:26:00
>>300
ありがとうございます。
再帰が未熟なのでNodeの追加で悩んでいます・・・。

>>301
映画タイトル決定「この春、Form1で何かが起こる!?」

304 :デフォルトの名無しさん:2010/03/23(火) 00:27:01
>>303
MSの公式サンプル
http://support.microsoft.com/kb/303974/ja

305 :デフォルトの名無しさん:2010/03/23(火) 00:33:12
>>304
ありがとうございます。
見ながらやってみます。

306 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/23(火) 00:38:43
>>307
http://codepad.org/xOdJsJie

310 :284: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 :デフォルトの名無しさん:2010/03/23(火) 01:06:48
生徒らの個人情報流出について陳謝する長崎市教委の鈴木徹学校教育部長(右)ら=22日午後、長崎市役所
http://img.47news.jp/PN/201003/PN2010032201000575.-.-.CI0003.jpg

【春祭り 】また割れ厨のスクショと個人情報が晒されてるぞ避難所17
http://jbbs.livedoor.jp/internet/7847/


本スレはこちら
新たな大物をいっしょに探しましょう

315 :デフォルトの名無しさん:2010/03/23(火) 02:49:27
あるクラスの中のデリゲートにメソッドを入れたいが、そのメソッドの引数の数が
実行時までわからなくても、問題なく入れられる方法ってありますか?

デリゲートのオーバーロードを行って、引数のバリエーション分の
デリゲートをあらかじめ用意しておく方法を思いつきましたが、
ほかにいい方法があれば教えてほしいです。

316 :デフォルトの名無しさん:2010/03/23(火) 02:52:09
リストにできるものならリスト渡せばいいし
できないものならクラス化すればいいんじゃね

317 :デフォルトの名無しさん:2010/03/23(火) 02:56:29
>>315
すべての基底クラスがなにか知ってる?

318 :315:2010/03/23(火) 02:57:48
なんか勘違いしてたかも…もう少し設計練ります。
ありがとうございました。

319 :デフォルトの名無しさん:2010/03/23(火) 03:08:18
timer_Tickでスレッド開始するってのが何がしたいのか意味不明。


320 :デフォルトの名無しさん:2010/03/23(火) 05:10:14
ブラクラとか

321 :デフォルトの名無しさん:2010/03/23(火) 14:12:24
>>319意味不明

322 :デフォルトの名無しさん:2010/03/23(火) 15:42:08
フォームのタイマでは時計は作れないというのは有名な話
>>309のSetTextをスレッドタイマのコールバックで呼び出す
30行目以降はいらない

323 :デフォルトの名無しさん:2010/03/23(火) 16:03:48
ここで言っていたようにif文内に正常処理を書かないようにし
邪悪なものを最初に弾くようにしたらものすごくコードが見やすくなった

他にこういうことしたらコードが見やすくなるよというのありますか?

324 :デフォルトの名無しさん:2010/03/23(火) 17:42:48
リファクタリング

325 :デフォルトの名無しさん:2010/03/23(火) 17:45:51
それと同じようなものだけど、例外的な状況を弾くような場合じゃなくて
通常の分岐のときは、なるべくelseを書いてifよりもelseの方が長くなるようにする

326 :デフォルトの名無しさん:2010/03/23(火) 18:07:41
「もしtrueなら」じゃなくて「もしfalseなら」という書き方のほうがいいということですね

327 :デフォルトの名無しさん:2010/03/23(火) 18:21:47
単に長いものは後回しにした方が見やすいからです

328 :デフォルトの名無しさん:2010/03/23(火) 19:48:02
ていうか、


もし false なら 抜ける;

trueの時のコード
    ・
    ・
    ・
    ・
};

とかの方がインデントが浅くて良いとかじゃないのん。


329 :デフォルトの名無しさん:2010/03/23(火) 20:20:40
if節が長いかelse節が長いかは判定式に否定演算子を
付けてまわれば逆転するわけで、あまり意味はないわな。

330 :デフォルトの名無しさん:2010/03/23(火) 20:22:02
if節を短くしたほうが可読性が上がる

331 :デフォルトの名無しさん:2010/03/23(火) 20:47:19
っていうかそんな長いメソッドにはならないから
ifでどうのこうのなんてないな

332 :デフォルトの名無しさん:2010/03/23(火) 22:34:41
>>323
> ここで言っていたようにif文内に正常処理を書かないようにし
> 邪悪なものを最初に弾くようにしたらものすごくコードが見やすくなった

やっぱそう思う?
俺も前々からそんな気がしていた・・・

こういうtipsがまとめられたサイトとか本とか無いかな。
初級者以上中上級者未満を対象にした情報源ってあまり無いよな('A` )b

333 :デフォルトの名無しさん:2010/03/23(火) 22:38:50
Code Complete

334 :デフォルトの名無しさん:2010/03/23(火) 22:48:06
CodeComplete高い
近所の紀伊国屋書店さん3日間も立ち読みしてごめんなさい

335 :デフォルトの名無しさん:2010/03/23(火) 22:48:12
正直、elseより後が長い方が可読的って感覚は微妙。

完全には否定しないけどね。
俺もCの二重インクルード防止のなんかには、一般的な作法じゃないけど
空っぽの#ifdefを書くようにしてるから気持ちは分かる。

ただ、ifのブロックなんてCのインクルードファイルほど行数あるわけじゃないからねえ。
普通は。

336 :デフォルトの名無しさん:2010/03/23(火) 22:49:36
俺はif節がよほど短いならさっさと脱出させてしまうなぁ

337 :デフォルトの名無しさん:2010/03/23(火) 22:52:57
ListView.ListViewItemCollection.AddRange(ListView.ListViewItemCollection items)
のオーバーロードバージョンてどうやって使うんですか?サンプルないですか?
listView1.Items.AddRange(listView2.Items)とかやるとArgumentExceptionになるんですが…


338 :デフォルトの名無しさん:2010/03/23(火) 23:00:08
>>337
実質内部で使う用と考えていい

339 :デフォルトの名無しさん:2010/03/23(火) 23:03:02
>>338
ありがとうございます。CopyToします。

340 :デフォルトの名無しさん:2010/03/23(火) 23:08:09
インデント深くしたくないから、すぐ脱出するコード書くなぁ。

341 :デフォルトの名無しさん:2010/03/23(火) 23:13:58
画像処理系のソフト作っているんだけど
DirectXSDKを使わないとグラボの性能ほとんど使わないのかな?

342 :デフォルトの名無しさん:2010/03/23(火) 23:23:00
いやDirectXと画像処理は関係ない
グラボはリアルタイムな処理に使うものであって静的な画像処理にはあまり使われない
シェーダ使えばできるけど面倒で制限が多い割には体感的にそんなに速くなるとは思えない

343 :デフォルトの名無しさん:2010/03/23(火) 23:27:04
思えないね

344 :デフォルトの名無しさん:2010/03/23(火) 23:40:07
動画だとCUDAとかViewerでもグラボを使っているものがあるから
そんなに変わるのかなと思ったんだけど使い方によるんですね

345 :デフォルトの名無しさん:2010/03/23(火) 23:40:46
ていうか、WPF使ったら勝手に使われる。

346 :デフォルトの名無しさん:2010/03/23(火) 23:42:57
WPF使おうが何使おうが明示的にグラボ使わない限りアプリケーションの画像処理には関係ない

347 :デフォルトの名無しさん:2010/03/23(火) 23:46:35
>>346
画像処理と言っても色々ある。
単純なファイル形式変換ならグラボ関係ないが、
拡大、縮小、色変換、フィルタリングとかかけるならWPFやSilverlight使った方が圧倒的に便利かと。

348 :デフォルトの名無しさん:2010/03/23(火) 23:51:01
そうか?
簡単な拡大縮小などで細かい制御を必要としないならともかく
シェーダ書くなら余計に手間かかるよ

349 :デフォルトの名無しさん:2010/03/23(火) 23:53:03
>>348
シェーダー書かんでも代わりに色々やってくれるところがWPFのいいところじゃないの。

350 :デフォルトの名無しさん:2010/03/23(火) 23:56:56
WPFでフィルタなどのエフェクトを自作しようと思ったら
ビットマップのピクセルをCPUで直接処理するのが嫌ならピクセルシェーダを書くしかない

351 :デフォルトの名無しさん:2010/03/23(火) 23:57:02
>>323
無駄なtrueを書かない。
× if ( flag == true ) { }
○ if ( flag ) { }

352 :デフォルトの名無しさん:2010/03/23(火) 23:59:56
わざわざ28レスも前に指摘することかよ

353 :デフォルトの名無しさん:2010/03/24(水) 00:01:58
ワラタ

354 :デフォルトの名無しさん:2010/03/24(水) 00:10:45
Windows.Formのタイトルバー?(タイトルと拡大縮小閉じるボタンのところ)
にコンポーネントを追加することはできますか?

同じボタンを1つ増やしたいのですが。

355 :デフォルトの名無しさん:2010/03/24(水) 00:11:54
>>347
おお、今までWPF使ったことなかったけど使ってみようかな
そんな難しい処理じゃなくて画像Viewer的なのを作りたいだけなので
勉強してみようかな

356 :デフォルトの名無しさん:2010/03/24(水) 00:18:59
>>351
> 無駄なtrueを書かない。
> × if ( flag == true ) { }
> ○ if ( flag ) { }


C畑出身の古参か?

時代は可読性を求める時代だぞ。

357 :デフォルトの名無しさん:2010/03/24(水) 00:24:06
>>356
それは「無駄な可読性」というものだ。
ただし、C#はC/C++と比べてif節はbool型しか取らないから、
自然、これまでよりも式が厳格になる傾向があるけどな(式が非ゼロかどうかの判定とか)

358 :デフォルトの名無しさん:2010/03/24(水) 00:26:58
flagの名前によるな
isHoge
とかならif(isHoge==true)は冗長だろ

359 :デフォルトの名無しさん:2010/03/24(水) 00:29:48
bool評価なのにわざわざ flag == true って可読性高い?
大切なことなので2回言いましたってことか?

360 :デフォルトの名無しさん:2010/03/24(水) 00:29:57
>>354
まあ無理
どうしてもと言うならタイトルバーなしにしてそれっぽいのを自分で描画する

361 :デフォルトの名無しさん:2010/03/24(水) 00:35:13
>>332
そこで.NET4.0の契約プログラミングですよ。

362 :デフォルトの名無しさん:2010/03/24(水) 00:43:42
>>360
ありがとうございます。
小さいウインドウから元のサイズにするだけなので
コンテキストメニューで代用します。

363 :デフォルトの名無しさん:2010/03/24(水) 00:46:41
>>359
ある種の思い込みがある人たちにとってはそうなんでしょ。
思い込みっていうか、たぶん「ifが取るのはbool型の値」という風に論理的に考えず、
経験的に「ifの後に来るのは2項演算じゃないと気持ち悪い」と感じるタイプ。

そういう人は自分の感覚を修正すべきだね。

364 :デフォルトの名無しさん:2010/03/24(水) 00:51:35
flag==true って書くのはいいけど、
flag!=true とか !(flag==true) とか !(flag==false) とかいろんなパターンで使われたらもうイライラ。

365 :デフォルトの名無しさん:2010/03/24(水) 01:19:50
これは言葉に直すと素直だけど
if(n>0)
これはわかりにくいよね
if(n<=0)
でもelseの方の文を長くしたいならこうなる
if(!(n>0))

366 :デフォルトの名無しさん:2010/03/24(水) 01:21:31
>>365
もうねろよ。疲れてんだよ。

367 :デフォルトの名無しさん:2010/03/24(水) 01:53:35
WPF負荷高いね
ボタン4つ作っただけなのにウィンドウサイズ変えると
c2dの使用率50%になっちゃう

368 :デフォルトの名無しさん:2010/03/24(水) 01:54:22
ねーよ

369 :デフォルトの名無しさん:2010/03/24(水) 01:59:06
負荷は大きい、小さい。高い低いじゃない。

370 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/24(水) 02:09:59
中負荷 の検索結果 約 7,770,000 件中 1 - 10 件目 (0.21 秒)

372 :デフォルトの名無しさん:2010/03/24(水) 02:11:12
結論

負荷は中というのが正しい。

373 :デフォルトの名無しさん:2010/03/24(水) 02:15:40
>>322
いつ時計を作ってたの?
時計をタイマーで作るの?


374 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/24(水) 03:07:34
"負荷が大きい" の検索結果 約 2,120,000 件
"負荷が小さい" の検索結果 約 1,070,000 件
"負荷が高い" の検索結果 約 69,000 件
"負荷が低い" の検索結果 約 1,600,000 件
"負荷が中い"との一致はありません。

"負荷が中くらい" の検索結果 約 18,600 件

376 :デフォルトの名無しさん:2010/03/24(水) 03:19:07
一方その頃、「そんな大きなフカヒレは入らないよう!」
という夢を中国が見ていた。

377 :デフォルトの名無しさん:2010/03/24(水) 03:36:16
いつまでやってんだ。スレタイ読め

378 :デフォルトの名無しさん:2010/03/24(水) 05:35:51
本当に下らないかもしれませんが・・・

*.exe形式で配布〜ローカルにインストールして使う、
WEB上のXMLを取得して処理したり、
XML-RPCでブログ投稿
などを行うソフトを作りたいのですが、
こういうソフトは、どういう単語で検索すれば情報が集められるのでしょうか

勉強するとっかかりが、全くわかりません。
本1冊と、C#入門、みたいなサイトは一通り勉強してきましたが
この辺の情報はなかったです。
「WEBサービス」では、サーバサイドの話のようで・・・

379 :デフォルトの名無しさん:2010/03/24(水) 07:06:03
XML Web サービスクライアント、だな。

380 :デフォルトの名無しさん:2010/03/24(水) 08:41:42
ちなみに「*.exe形式で配布〜ローカルにインストールして使う、」
というのは実行ファイル形式のインストーラーのことだ。
基本的にはこれは.NETで作らない方がいい。
自己解凍書庫、インストーラー作成ツールなどを使う。

381 :デフォルトの名無しさん:2010/03/24(水) 11:18:09
グローバリゼーションの警告うぜぇ…

382 :デフォルトの名無しさん:2010/03/24(水) 11:41:39
directxはc++とかと構造は同じ?


383 :デフォルトの名無しさん:2010/03/24(水) 11:48:42
>>382
その質問は、カレーとスプーンが構造が同じかと問うていることに等しい。
ちなみに、DirectXはCOMでできている。

384 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/24(水) 14:39:12
>>383
あっそう

387 :デフォルトの名無しさん:2010/03/24(水) 17:05:37
string形式の変数aの指定した行の文字列を取得したいのですがどうすれば取得できますかね

388 :デフォルトの名無しさん:2010/03/24(水) 17:06:27
String.Splitで配列に分解してアクセスすれ

389 :デフォルトの名無しさん:2010/03/24(水) 17:08:09
>>387
StringReader.ReadLine

390 :デフォルトの名無しさん:2010/03/24(水) 17:11:51
>>379>>380
ありがとうございます。
知りたかった情報が見つかりました

391 :デフォルトの名無しさん:2010/03/24(水) 17:31:41
>>385
8.3形式のファイル名が問題なんじゃなくて、programpathに半角スペースが入っているせいで実行ファイルが見つかってないんじゃない?

392 :デフォルトの名無しさん:2010/03/24(水) 18:34:36
WPFとC#のコードの連携の説明がどこにもない
コードからウィンドウサイズ変えることすらできない
使えない

393 :デフォルトの名無しさん:2010/03/24(水) 18:38:08
お前の使えなさっぷりをそんなにアピールしなくても大丈夫、世間は意外に優しいよ

394 :デフォルトの名無しさん:2010/03/24(水) 20:56:25
WPFのスレで聞けばいいのに
みんな始めたばかりだからやさしいぞ

395 :デフォルトの名無しさん:2010/03/24(水) 22:17:27
自クラスのprivateフィールド変数もプロパティを
通してでないとアクセスできないようにする方法ありますか?

396 :デフォルトの名無しさん:2010/03/24(水) 22:20:18
無理だろ

397 :デフォルトの名無しさん:2010/03/24(水) 22:22:23
特にないな
変数名を\uxxxx並べた理解不能なのにしとくとかどう?

398 :デフォルトの名無しさん:2010/03/24(水) 22:25:15
自動実装プロパティにするくらい

399 :デフォルトの名無しさん:2010/03/24(水) 22:35:14
自クラスくらい自分が責任持って扱えよって思っちゃうけど、
複数人で1つのクラスいじってるような場面だとそうはイカンザキ?

400 :デフォルトの名無しさん:2010/03/24(水) 22:42:59
その自動プロパティはgetsetの中身を省略することらしいですが
ここに式を記述してもいいのでしょうか?
そしたら思っているようなことができそうなんですが

public string Name
{
set{ this.Name=valeu;}
}

例えばこんな感じ

401 :デフォルトの名無しさん:2010/03/24(水) 22:44:20
できるようになったら個人的にうれしいけど無理

402 :デフォルトの名無しさん:2010/03/24(水) 22:45:38
>>395
そんなフィールド(とプロパティ)が存在しうるとして、
プロパティーのセッターやゲッターは自分自身を呼び出してバッキングフィールドに
値を代入したり取得したりするんだろうか。

それって無限に再帰することになるんじゃないか?
少しは頭を使おうよ。

まあ気持ちは理解できなくもないがw
VBはせっかくメソッド内Static変数があるんだから、ゲッターからもセッターからも
アクセスできる位置にメソッド内Static変数が書ける構文さえ用意してくれれば
バッキングフィールドを不要にできるんだけどな。

ことほど左様に、VBチームはやる気がなさ杉気が利かな杉。
開発者までVB厨っぽい。

403 :デフォルトの名無しさん:2010/03/24(水) 22:46:04
>>395
それって、ごく普通のプロパティ公開のシチュエーションじゃないの?

404 :デフォルトの名無しさん:2010/03/24(水) 22:48:03
privateな範囲くらいテメェで管理しろってことだろーけどね

405 :デフォルトの名無しさん:2010/03/24(水) 22:48:13
http://msdn.microsoft.com/ja-jp/ff383208.aspx

406 :デフォルトの名無しさん:2010/03/24(水) 22:50:34
別ファイルにpartialで分けて、privateフィールドは見ない振りをする

407 :デフォルトの名無しさん:2010/03/24(水) 22:51:34
ProrertyChangedイベントを使えば>>395のご所望に近いことが出来そうな気が
しないでもないでもない

408 :デフォルトの名無しさん:2010/03/24(水) 22:54:45
privateなフィールドに値を代入する時に適切な定義域かどうか確認するのがメンドイとか、そんな理由だろ。
フィールドに属性か何かで定義域指定できるようになったら蝶うれしいぞ。

409 :デフォルトの名無しさん:2010/03/24(水) 22:55:31
そしてDbcへ・・・

410 :デフォルトの名無しさん:2010/03/24(水) 22:57:15
privateな範囲ならDebug.Assert入れとけばいいじゃん

411 :デフォルトの名無しさん:2010/03/24(水) 23:02:04
正直契約プログラミングはかなり興味ある。

412 :デフォルトの名無しさん:2010/03/24(水) 23:02:36
興味あるならVS2010試そうぜ

413 :デフォルトの名無しさん:2010/03/24(水) 23:03:49
ああ、そういうことか。
自分のクラスのprivateなメンバ変数に対してアクセスせず、
常にプロパティ越しにアクセスしたい、ということか。
すればいいじゃん。

こういうのはコーディングテクニックじゃなくて、ポリシーで解決すべきことがらだ。

どうしてもこねくり回したいなら
private変数と抽象プロパティを定義した親クラスを作って継承すればいい。
そんな必要性は感じられないが。

だいたい、VSなら特定の変数がどこで参照されてるか全検索は簡単にかけられるんだから、
一括で修正してしまえば済む話。

414 :デフォルトの名無しさん:2010/03/24(水) 23:04:34
すべての変数がプロパティになればいいのに

415 :デフォルトの名無しさん:2010/03/24(水) 23:08:51
元の木阿弥

416 :デフォルトの名無しさん:2010/03/24(水) 23:12:42
まあ現実的な妥協としてはEditorBrowsable(false)を付けるぐらいかね。
あとは>>413の言うようにベースクラスのプロパティをフィールド代わりにするか。

でも一番の方法は、そんな下らないことは考えないこと。

417 :デフォルトの名無しさん:2010/03/25(木) 00:34:54
>>414
否、すべての変数はグローバル変数とするべきだ

418 :デフォルトの名無しさん:2010/03/25(木) 02:21:04
( ̄ー ̄)ふっ

419 :デフォルトの名無しさん:2010/03/25(木) 03:19:34
(^-^)♪

420 :デフォルトの名無しさん:2010/03/25(木) 04:35:11
ttp://msdn.microsoft.com/ja-jp/ff357685.aspx
この連載いいねー簡潔でわかり易いし
疑問に思ってたことがいくつか解決した
C#4.0はpythonでやってたようなことができるみたいだな

421 :デフォルトの名無しさん:2010/03/25(木) 07:32:33
C#のクラスってC言語でいう構造体の延長だろ
たくさんのデータを含めるし。

422 :デフォルトの名無しさん:2010/03/25(木) 07:37:21
えっ!?

423 :デフォルトの名無しさん:2010/03/25(木) 07:40:40
第12回の「4. スレッド プールの何が問題なのだろう?」の話がかなりでたらめな件


424 :デフォルトの名無しさん:2010/03/25(木) 07:52:00
でたらめはお前だカス

425 :デフォルトの名無しさん:2010/03/25(木) 07:52:18
Indexというプロパティで配列の添え字範囲チェックしてるんだけど
Indexを呼び出す側でもやっぱり添え字でチェックして2重になってるんだけど
やっぱそういうもんですか?
それとこの場合ゲッターの戻り値どうすればいいでしょうか?

public int Index{set{if(0<=value)_index=value;}}

private void hoge()
{

}

426 :デフォルトの名無しさん:2010/03/25(木) 07:55:05
誤って途中で書き込んでしまった
private void hoge()
{
++Index;
if(0<=idx && list.Count>idx) a(list[idx]);
}

427 :デフォルトの名無しさん:2010/03/25(木) 08:39:59
>>425
基本的に、添字チェックはCLIのレベルで自動でやってくれるから必ずしもやらなくていい。
(すなわち添字チェックは最悪ひとつも書かなくていい。失敗したら例外が発生する)
で、そのセッターってなんかおかしくね?

428 :デフォルトの名無しさん:2010/03/25(木) 09:16:02
てことは、tryで包み込むということかな
なんかどこまで例外処理を書けばいいか迷うね
下手したら同じ例外処理をいくつものクラス間で
3重4重やってしまうことになるわけで

続行して問題が出る場合以外は
条件分岐を極力書かずにtryで済ませる方が
いいような気がしてきた

429 :デフォルトの名無しさん:2010/03/25(木) 09:22:04
例えば、picturebox.loadにしてもファイルが無ければ平気でエラー出して強制終了なるし
GetDirectoriesでもアクセスできないディレクトリを検索してエラー吐くし
.Netで用意されているクラスですらエラー出すんだから
正常な値であるはずという前提で作っていった方がいいのかな

430 :デフォルトの名無しさん:2010/03/25(木) 09:30:11
おいおい・・・

431 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/25(木) 17:06:25
添え字のエラーを例外で処理するのはダメだろ
原則「発生したらバグ」の類の例外だ
それにIndexOutOfRangeやNullReferenceのような例外は一度出たら
頻繁に出ることが多いので例外で処理すると極端にパフォーマンスが低下することがある

435 :デフォルトの名無しさん:2010/03/25(木) 17:12:11
はぁ!?

436 :デフォルトの名無しさん:2010/03/25(木) 17:19:05
public/protectedメソッドorプロパティで外部から渡されたのに出すのはいいだろ
privateな部分では(渡す前に)Length参照した方がスマートじゃないでしょうか

437 :デフォルトの名無しさん:2010/03/25(木) 17:24:02
>>436
おいおい・・・

438 :デフォルトの名無しさん:2010/03/25(木) 18:35:00
自前のファイル入出力クラスで指定ディレクトリにある
ファイルを取得しstring[]で返すのを作ったとして
そのクラスを利用する側もやっぱりファイルがあるのかないのかチェックし
さらにそのクラス利用する側もファイルがなかった場合を想定してコードを書かないといけない
この同じチェックは永遠に続くの?

439 :デフォルトの名無しさん:2010/03/25(木) 18:52:03
>>438
書きたければ書けばいいし、例外処理で済ますなら済ませればいい。

440 :デフォルトの名無しさん:2010/03/25(木) 19:00:47
カスタマイズ可能なキーボードショートカットを実装したいです。
まず、
Up, Scroll, 20
Down, Scroll, -20
Right, Next
Left, Prev
というふうなテキストファイルを読み込んで、キーとメソッドを結び付けたいです。
(この例では、左からキー、メソッド名、パラメータにしてます)
具体的な実装方法として思いつくのが
・キーとメソッド名をもつ連想配列を用いて、switch文で分岐してメソッド呼び出し。
・switch文ではなく、リフレクションでメソッド呼び出し。
なのですが、上のはコードが冗長になりますし、下のはパフォーマンス面で不利かもしれません。
キーとデリゲートを持つ連想配列を用いて呼び出せればスマートだとは思うのですが、
引数が異なると別のデリゲートと、それを入れる連想配列を用意する必要がある(と思う)
ので悩ましいです。スマートにこなす方法なんかがあればアドバイスお願いします。

441 :デフォルトの名無しさん:2010/03/25(木) 19:06:18
>>440
匿名メソッド

442 :デフォルトの名無しさん:2010/03/25(木) 19:24:27
パフォーマンス気にするところじゃないな

443 :デフォルトの名無しさん:2010/03/25(木) 19:38:46
>>440
その1行分を表現する構造体を作って、XMLSerializerでさくっと読み書き。
アプリ上ではDictionaryか何かの表持たせておく。
キーイベントを受け取ったら表を見て登録したメソッドを呼び出す。
メソッドの登録はdelegateかラムダ式を使えばいい。

444 :デフォルトの名無しさん:2010/03/25(木) 20:39:31
ラムダ式の登場です。

445 :デフォルトの名無しさん:2010/03/25(木) 20:52:59
果たしてふらっとスレの行く末やいかに!?

446 :デフォルトの名無しさん:2010/03/25(木) 21:05:06
質問です

ListViewのチェックボクスのチェックを付けたり、外したりするのは画面からクリックしたときではないと無理なのですか?
ソース内でチェックを書き換えたいのですが、CheckedListBoxのSetItemCheckedメソッドみたいなのが存在しないみたいなので困っています
もともとはCheckedListBoxを使用していたのですが、アイコンを表示するためにListViewに変えました

チェックの状態が変わらないとItemCheckイベントも起きないですし、何か方法はあるのでしょうか

447 :デフォルトの名無しさん:2010/03/25(木) 21:23:25
ListViewItem.Checked

448 :デフォルトの名無しさん:2010/03/25(木) 21:43:06
DataTable で自動で計算する項目があるんだけど、
DataColumn.Expression では計算できないので、
DataTable.TableNewRow イベントで値を計算して入れようと思ってます。

これを XML で保存するために WriteXml すると自動で計算した項目も出力されると
思うのですが、自動で計算した項目は出力しないようにする方法はあるのでしょうか?

449 :デフォルトの名無しさん:2010/03/25(木) 21:55:30
>>448
属性をつける

450 :デフォルトの名無しさん:2010/03/25(木) 21:58:30
>>447
listView1.SelectedItems[0].Checkedのことですよね?
これってSelectedItemsには今チェックされている項目が格納されてると思うんですが、
このプロパティではチェックされている項目のチェックを外すことは出来てもチェックが付いていない項目にチェックを付けることは不可能ではないですか?

451 :デフォルトの名無しさん:2010/03/25(木) 22:02:17
>>448
Copyして列をRemoveしたあとでWriteXmlするとか?

>>450
Itemsからアクセスすりゃよかろう

452 :デフォルトの名無しさん:2010/03/25(木) 22:03:59
おおこんな簡単だったんですね
ありがとうございました

453 :デフォルトの名無しさん:2010/03/25(木) 22:16:13
>>449
それとあんたうざい

454 :デフォルトの名無しさん:2010/03/25(木) 22:31:10
>>453
ハァ?
無視させたいフィールド、プロパティにXMLIgnore属性をつけておいて、
XmlSerializerに食わせて吐き出させればよい。

455 :デフォルトの名無しさん:2010/03/25(木) 22:37:55
やってみろw


456 :デフォルトの名無しさん:2010/03/25(木) 22:43:15
webBrowserコントロール上でマウスカーソルが動いた時にイベントを拾いたいんですけど
なにか方法がありますか?FormとかButtonだとMouseMoveイベントがあったけど、それと
同等の機能がwebBrowserには見当たりません。

457 :デフォルトの名無しさん:2010/03/25(木) 23:12:08
>>454
DataTable のカラムに XMLIgnore 属性つけられるなら
やってみせてくれw

458 :デフォルトの名無しさん:2010/03/25(木) 23:14:05
IXmlSerializable実装して自分でシリアライズするかどうか決めたら

459 :デフォルトの名無しさん:2010/03/25(木) 23:14:56
>>457
ハァ?
てめーがやれ。

460 :デフォルトの名無しさん:2010/03/25(木) 23:17:29
>>458
それ結局XML吐く処理を全て自前で書くという意味だけどわかってる?

461 :デフォルトの名無しさん:2010/03/25(木) 23:18:25
>>460
おお

462 :デフォルトの名無しさん:2010/03/25(木) 23:18:54
>>459
馬鹿だからできねぇってこと知らないの?

463 :デフォルトの名無しさん:2010/03/25(木) 23:20:14
o(´・ω・`) ぶつお

464 :デフォルトの名無しさん:2010/03/25(木) 23:53:40
エクスプローラだとフォルダのプロパティで
フォルダ数、ファイル数が瞬時に出ますが
こういう機能はありますか?

465 :デフォルトの名無しさん:2010/03/25(木) 23:55:37
瞬時に出ないよ。たくさんフォルダ・ファイルがあるところで見ると、
一生懸命カウントしてるのがわかる。

466 :デフォルトの名無しさん:2010/03/26(金) 00:06:03
なるほど
あれはGetDirectoriesやGetFilesやるしかないですか?
ファイルやフォルダ検索の進行状況を表示させたいので
まず数を取得してやろうと思っていたんですが

467 :デフォルトの名無しさん:2010/03/26(金) 00:17:52
なるほどなるほど

468 :デフォルトの名無しさん:2010/03/26(金) 01:51:45
>>441-444
設定ファイルを読み込んだときに、
delegate void Invoke();

Invoke inv = () => Scroll(20);
てな感じのデリゲートをこしらえて辞書に登録すれば、呼び出し時はスマートに済ませそうですね。
こしらえるときは地道にswitchで分岐するとして。
しかしこれは、戻り値を返すメソッドの場合は呼び出し側に値を返せない欠点があります。
でも、戻り値を返すようなメソッドをキーに割り当てる場面は今のところないのでこれでいってみます。

469 :デフォルトの名無しさん:2010/03/26(金) 02:26:54
コマンドのシグネチャを

void Execute(object[] parameters);

みたいにして、パラメータを配列で渡せばいい

470 :デフォルトの名無しさん:2010/03/26(金) 07:19:29
>>456
http://www.k4.dion.ne.jp/~anis7742/codevault/00110.html

471 :デフォルトの名無しさん:2010/03/26(金) 10:40:57
お世話になります。
以下のこと、教えてください。
VisualStudioにてユーザーコントロールやカスタムコントロールを作成し、ビルドすると、
そのコントロールがツールボックスの”(プロジェクト名)コンポーネント”といったタブ内に
デフォルトで配置されます。
このデフォルトの配置場所を任意のタブ内(該当タブが無ければ新規作成)にすることは可能でしょうか?
属性でなんとかなりそうな予感がしていたのですが、どうにも見つけきれませんでした。

よろしくお願いします。

472 :デフォルトの名無しさん:2010/03/26(金) 10:44:25
>>471
そこは開発側で手をいれるところでなく、運用側で対処すべき問題だと思うんだが、どうよ。

473 :デフォルトの名無しさん:2010/03/26(金) 10:58:04
http://codepad.org/YCZ12iRD
WINDOWSフォームを作っていてテストでちゃんと読み込んでいるかチェックしようとしたのですが
chengebox1にチェックを入れるとエラーが起きます。どこがおかしいのでしょうか

474 :デフォルトの名無しさん:2010/03/26(金) 11:06:27
>>472
やはりそこは個人々々でなんとかしてもらうしかないですかね。
ありがとうございました。

475 :デフォルトの名無しさん:2010/03/26(金) 11:17:37
>>473
エラーが出たならエラーの内容書けよカス

476 :デフォルトの名無しさん:2010/03/26(金) 11:32:32
>>473
URLのソースコードを見てみたが、
とりあえずbutton1を押した後じゃないとcheckBox1は押しちゃいけないように見える。
というか、こんなレベルで詰まってちゃ何もできないぞ。

不具合が出たらデバッガで1行ずつ動かしながら再チェックする習慣をつけよう。

477 :デフォルトの名無しさん:2010/03/26(金) 14:42:01
>>475
カス

478 :デフォルトの名無しさん:2010/03/26(金) 15:39:08
http://www.atmarkit.co.jp/fdotnet/dotnettips/242htmlencode/htmlencode.html
このサンプルを動かそうと思ったのですが
html = ExpandTabs(html);

ネットで調べたのですがExpandTabsの所在がわかりません。
どれをusing指定すればいいのでしょうか?

479 :デフォルトの名無しさん:2010/03/26(金) 15:44:31
>>478
何も考えずにソースをそのまま入れてみて
ExpandTabsにカーソルを合わせてみ

480 :デフォルトの名無しさん:2010/03/26(金) 15:46:44
xxxx.ExpandTabsの形でないってことは同一クラスってことなんだが

481 :デフォルトの名無しさん:2010/03/26(金) 15:48:07
>>479
そういう意味じゃなくて・・・
2004年当時と違って場所が変わってるようなので
サンプルソースのusingだけだと

エラー 3 名前 'ExpandTabs' は現在のコンテキスト内に存在しません。

となるんです。

482 :デフォルトの名無しさん:2010/03/26(金) 15:51:03
ああ・・・
失礼しました

sjis使わないので・・と思って頭の方全部すっとばしてみてませんでしたorz

483 :デフォルトの名無しさん:2010/03/26(金) 15:57:11
しかし意味不明な言葉だ…
> サンプルソースのusing

484 :デフォルトの名無しさん:2010/03/26(金) 16:41:26
コピペも満足にできないのはつらいな

485 :デフォルトの名無しさん:2010/03/26(金) 19:38:17
http://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 :デフォルトの名無しさん:2010/03/26(金) 21:07:29
WPFのデザイナにはよくあること
まず気にせず実行してみる

487 :デフォルトの名無しさん:2010/03/26(金) 22:10:49
フォームのデザインを2種類、切り替えられるアプリケーションを作っています。
複数のフォームで値を共有するにはどういった方法が適切ですか?

今は1つのフォーム内(Form1.cs)に切り替えられるよう書いていますが、
デザイナが使えないのは何かとても間違っている気がします。

1つのコンポーネントを2つのフォームから参照できるとスマートだと思うのですが・・・

よろしくお願いします。

488 :デフォルトの名無しさん:2010/03/26(金) 22:17:53
>>487
Document-Viewアーキテクチャだね。
Viewから保持するデータ(Document)を分離する。
もたせ方は、コンストラクタで渡そうがプロパティで引き渡そうが好きにすればいい。

それよりも、メインのフォームを切り替えるのがちょっと面倒そうだなー、と心配するかな。

489 :デフォルトの名無しさん:2010/03/26(金) 22:35:56
>>488
ありがとうございます。

Document-Viewアーキテクチャを見ると、
「そのためにWPFがあるのです。」という空耳が聞こえます、気のせいですよね。

ご指摘の通り、そこで悩んでいます。
フォームの値をまとめた構造体Dataなどを作って、

Form2 a = new Form2();
a.Data = this.Data;
this.Close();

みたいにしてもいいのでしょうか?

490 :デフォルトの名無しさん:2010/03/26(金) 22:39:22
>>489
だよね。
その書き方だと、this.Close()を呼び出した直後にProgram.csのMain関数が終わってしまう。

そこでMain関数内をループ構造にして、
Application.Runを複数回呼び出せるようにするとどうだろう。
そのタイミングでメインフォームを切り替えるとか。

491 :デフォルトの名無しさん:2010/03/26(金) 22:49:32
WPFのコードビハインドとXAMLの関係は、物理的にビューとロジックを分けて
分業しましょうっていう考え方でDoc-Viewとは違うよ
XAMLはWinFormsのDesigner.cs相当で、コードビハインドとは別にXAMLだけを入れ替えるようなことはしない
そういうのはMVVMとかもっと高次の枠組みでやる

492 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/26(金) 22:55:01
>>491
ビューと"ロジック"なんですね。 参考になります。

WPFはスケッチブックと色鉛筆渡されたような気持ちになるので触る勇気がまだありません・・・。
ちなみに、Formは大学ノートとシャーペン。


494 :デフォルトの名無しさん:2010/03/26(金) 22:56:57
ManageForm.Visible =false

495 :デフォルトの名無しさん:2010/03/26(金) 22:59:11
ManageForm.Visible =true

496 :デフォルトの名無しさん:2010/03/26(金) 22:59:36
>>494
メモリ×2

でも、それも手段の一つです。

497 :デフォルトの名無しさん:2010/03/26(金) 22:59:39
>>489
そもそも「フォームの値」などというものが存在していることそれ自体がおかしい。
WPFとか関係ない。

聞いた感じクラスを使ったプログラミングが理解できてないようだから
まずそれを覚えないことには話にならないよ。

498 :デフォルトの名無しさん:2010/03/26(金) 23:00:18
>>493
そこじゃないw
WPFでいうビューとロジックの分離っていうのは、デザインとコードをはっきり分離できていれば
デザインはデザイナが担当してコードはプログラマが書くという形で分業できるという考え方。
だからDoc-ViewやMVCでいうならXAMLもコードビハインドもViewに属する。

499 :デフォルトの名無しさん:2010/03/26(金) 23:15:20
>>497
フィールドの受け渡し、と言うべきでしょうか。

500 :デフォルトの名無しさん:2010/03/26(金) 23:17:30
言い直しても理解できてなけりゃ同じだろう

501 :デフォルトの名無しさん:2010/03/26(金) 23:24:59
俺だったらフォーム分けないな
Panelか何かに配置して入れ替える

おそらくデザイナ使いたいからその辺を避けようとしてるのだろうけど
だったらUserControlでも継承すればいいんだよ

502 :デフォルトの名無しさん:2010/03/26(金) 23:26:52
>>492
おかしなことせんとApplicationContext使えば?


503 :デフォルトの名無しさん:2010/03/26(金) 23:39:01
>>501
>>502
ありがとうございます。
両方試してみます。

504 :デフォルトの名無しさん:2010/03/26(金) 23:41:08
クラスライブラリ書くとき内部クラスにするの面倒くさいのでinternal使ってよいですか?

505 :デフォルトの名無しさん:2010/03/26(金) 23:48:20
例えば

今日の朝生の出演者名簿から
今日の討論の流れをシュミレーションするには
どれぐらいの経験がひつようでしょうか?

506 :デフォルトの名無しさん:2010/03/27(土) 00:20:58
>>501
その方法で解決できました。
ありがとうございます。

507 :デフォルトの名無しさん:2010/03/27(土) 03:08:31
>>506
だろ
継承すればいいだろ

508 :デフォルトの名無しさん:2010/03/27(土) 07:26:53
>>505
朝生視聴歴10年くらい

509 :デフォルトの名無しさん:2010/03/27(土) 11:52:38
ネットの画像を保存する方法は?
タイマーとか使って一定時間ごとに自動的に保存するようなのを作りたいんだけど。

510 :デフォルトの名無しさん:2010/03/27(土) 11:57:57
画像がJPEGとかなら、普通にダウンロード。
WebBrowserで取ってきて、キャプチャってのもありだね。

511 :デフォルトの名無しさん:2010/03/27(土) 12:43:16
>>509
http://dobon.net/vb/dotnet/internet/downloadfile.html
ほい

512 :デフォルトの名無しさん:2010/03/27(土) 15:42:11
C#にてWindowsフォームアプリケーションを作成しています。
DataGridViewを置き、
実際に内容が表示されている(値のある)行をクリックしたときはその行を選択状態にさせ
実際に内容が表示されていない下部の余白をクリックしたときは、選択状態を解除したいと考えているのですが、
余白をクリックしたことを検知するにはどのようなイベントを行えばよいのでしょうか。
よろしくお願いします。


513 :デフォルトの名無しさん:2010/03/27(土) 15:43:24
HITTEST系のイベントなかったっけ?

514 :デフォルトの名無しさん:2010/03/27(土) 15:46:29
>>512
欄外をクリックしてChange系イベントをもらったときに
選択中のindexを問い合せると-1が返ってきたりしない?
ListBoxではそういう動きをする。

515 :デフォルトの名無しさん:2010/03/27(土) 15:55:19
そのものずばりの HitTest() メソッドがあるな。

516 :デフォルトの名無しさん:2010/03/27(土) 17:33:14
あっそ

517 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/27(土) 18:26:20
できたね

519 :デフォルトの名無しさん:2010/03/27(土) 18:42:29
おめでとう。

520 :デフォルトの名無しさん:2010/03/27(土) 18:45:50
Visual Studio C# Express Editionで、
フォームの入った.csをエディタでいじってフォーム部分を壊してしまったとき
なんとか復活させる方法ないでしょうか。

Express Editionのフォームデザイナが異常終了しちゃうんです。

ビルドはできるし、できあがったexeも実行出来るんですけど。
フォームデザイナだけ言う事聞いてくれない。

521 :デフォルトの名無しさん:2010/03/27(土) 18:47:26
異常終了って何だよ? 赤いバッテンが出るとかか?

522 :デフォルトの名無しさん:2010/03/27(土) 18:58:49
ソースのほうを直すしかない

523 :デフォルトの名無しさん:2010/03/27(土) 19:05:55
exeから逆コンパイルすればいいのでは?

524 :デフォルトの名無しさん:2010/03/27(土) 19:11:20
>>523
一言余計だ

525 :デフォルトの名無しさん:2010/03/27(土) 19:15:04
何がやねん

526 :デフォルトの名無しさん:2010/03/27(土) 19:34:25
せやな

527 :デフォルトの名無しさん:2010/03/27(土) 19:42:22
これだから大阪民国人は・・・

528 :デフォルトの名無しさん:2010/03/27(土) 19:50:42
せやせや

529 :デフォルトの名無しさん:2010/03/27(土) 20:05:06
でんがなまんがな

530 :デフォルトの名無しさん:2010/03/27(土) 20:26:11
日本人の97%は朝鮮人か中国人の直系

531 :デフォルトの名無しさん:2010/03/27(土) 20:30:55
そういう言い方だと、朝鮮人とか中国人ってのも意味ないんだけどな。

532 :デフォルトの名無しさん:2010/03/27(土) 20:36:43
全人類はアフリカの女性からだっけ?
全員はアフリカ人だな

533 :デフォルトの名無しさん:2010/03/27(土) 21:11:33
>>521
うん。そう、それ。


Visual C#でエラーが発生したため終了します。
エラー報告を送信する しない


× データが失われる可能性を防ぐため、デザイナの読み込み前には以下のエラーを
   解決する必要があります。

× オブジェクト参照がオブジェクトインスタンスに選定されていません。

534 :デフォルトの名無しさん:2010/03/27(土) 21:17:26
ちょこちょこ直してくしかないんじゃないかなぁ。

535 :デフォルトの名無しさん:2010/03/27(土) 21:39:12
初心者なんでどこがエラー原因なのかさっぱりわかりませんよー

536 :デフォルトの名無しさん:2010/03/27(土) 21:42:03
じゃ、あきらめろ。

537 :デフォルトの名無しさん:2010/03/27(土) 21:45:05
>>517
マウスでクリックしたときのイベントを書くとき、
MouseDown,MouseClick,Click,MouseUp
どれを使うのが適切なの?
イベントの発生順がちがうのは分かるけども、
どれか1つしか書かないときはどれが望ましいのか分からないっす
(-_-;);

538 :デフォルトの名無しさん:2010/03/27(土) 21:46:39
クリックでいいじゃん

539 :デフォルトの名無しさん:2010/03/27(土) 21:47:29
処理による。イベントによって取れる情報が違うし、タイミングが重要なこともあるからね。

540 :デフォルトの名無しさん:2010/03/27(土) 22:00:13
>>533
実はVSのデザイナーはいろんな理由で落ちる不完全な代物なので、
そういうものだと思っておこう。

落ちた位置自体はレポートされてるから、
それを参考に修正する。大抵はコンストラクタ周り。

541 :デフォルトの名無しさん:2010/03/27(土) 22:27:52
現在、.net Framework3.5で開発中です。

特定のディレクトリの配下すべてを
1つのファイルにバックアップ・リストアする機能を作成しています。
(イメージ的には、zip圧縮と解凍)

圧縮はSystem.IO.Packageのクラスでどうにかできたのですが、
解凍がうまくいきません。

今やっている考え方は、
packgeのオープン→ファイルパス取得→取得したファイルパスからファイルをコピー
の流れで、パス取得とコピーを繰り返している状態です。

なぜかコピーできるファイルとコピーできないファイルが存在していて困っています。
なお、ソースで圧縮したzipファイルは、laplusで解凍、ファイルが適切に存在していることを確認しています。


誰か理由を知っていますか?
また、代替案をご存知ですか?

#J#のライブラリによる圧縮・解凍や、フリーのライブラリを利用することは現状考えていません。



よろしくお願いします。

542 :デフォルトの名無しさん:2010/03/27(土) 22:29:46
オセロの盤面のようなものを描きマウスクリックする事で
左1右3とマス目を取得するプログラムを作りたいのですが
参考になるサイトなどがあったら教えてください

543 :デフォルトの名無しさん:2010/03/27(土) 22:30:27
すみません 左1上3でした

544 :デフォルトの名無しさん:2010/03/27(土) 22:32:24
>>541
System.IO.Packagingはzipファイル作るためのライブラリじゃないよ
Open Packaging Conventions、つまりxpsとかのためのパッケージ仕様

545 :デフォルトの名無しさん:2010/03/27(土) 22:34:16
>>541
そもそも ZIP 用ってわけじゃないので、ダメかも知らんね。
まっとうなライブラリ使った方が早いと思うよ。

>>542
たかだか 64マスなんだから、PictrueBoxとか配置しちゃうってのもひとつの手。

546 :デフォルトの名無しさん:2010/03/27(土) 22:37:03
>>542
void form_MouseUp(object sender, MouseEventArgs e) {
int x = e.X / マス目の幅;
int y = e.Y / マス目の高さ;
}

547 :デフォルトの名無しさん:2010/03/27(土) 22:39:29
>>544

回答ありがとうございます。
Open Packaging Conventions用のクラスだというのは承知です。
固定のアプリからの圧縮・解凍ができればおkらしいです。

本当ならJ#のライブラリを使ったら簡単というのはわかるのですが、
いかんせん仕様上使わない方向らしいです。

もし完全に無理なら仕様変更を訴えてみます。

548 :デフォルトの名無しさん:2010/03/27(土) 22:41:40
その仕様を決めた奴に聞けよ。

549 :デフォルトの名無しさん:2010/03/27(土) 22:43:03
>>545

回答ありがとうございます。
やっぱり無理そうですか…。

まっとうなライブラリとはどんなライブラリですか?

550 :デフォルトの名無しさん:2010/03/27(土) 22:43:36
GZipStreamでも使って独自フォーマットでまとめて突っ込めばいいじゃん
ヘッダにファイル名とサイズさえ書き込んでおけば充分だろ

551 :デフォルトの名無しさん:2010/03/27(土) 22:44:44
>>548

仕様を決めた人は、C#を知らないわけでorz。
無理なら無理と言い切りたいのですが、圧縮だけはできてしまったので困った次第です。

552 :デフォルトの名無しさん:2010/03/27(土) 22:44:51
7zip


553 :デフォルトの名無しさん:2010/03/27(土) 22:45:46
GZipStreamは単一ファイルにしか使えないからないわ。

>>549
フリーのライブラリがいろいろ転がってるだろ?
サポート云々とか言うなら、PkZipのがいいな。

554 :デフォルトの名無しさん:2010/03/27(土) 22:47:15
仕様を決めたやつがC#知らないんだったら、「これじゃできません」って言っても
否定はされないだろ。

555 :デフォルトの名無しさん:2010/03/27(土) 22:47:28
サポートとか無くていいならこれおすすめ
http://dotnetzip.codeplex.com/
pureC#で使いやすい

556 :541:2010/03/27(土) 22:51:09
1人1人に返すのが大変なので一括で。

初め、GZipStreamも考えたのですが、
・必須仕様
→アプリ上で圧縮・解凍が可能。
・推奨仕様
→アプリ外でも解凍可能。
という感じだったので、却下した次第です。

あと、フリーのライブラリも検索で引っかかってたのですが、
商用利用のために怖いと上の人間に言われて却下状態です。

無理ぽなら、月曜にでも理由を言って、改善案を作ってもらいます。

557 :デフォルトの名無しさん:2010/03/27(土) 23:00:28
zlibでもP/Invokeしてきて使えば
いくらフリーといってもさすがにzlibを信用できないなら何も使えないでしょ

558 :デフォルトの名無しさん:2010/03/27(土) 23:00:40
あの…ここ…初心者用…

559 :デフォルトの名無しさん:2010/03/27(土) 23:04:41
>>556
プログラムの安定性は実績で決まるのであって、
商用かオープンソースなのかは全然関係ないんだけどな。

オレはアーカイブ内のファイル構成はSQLiteで外部で管理してるよ。
データファイル側はただ単に暗号化して連結してるだけ。

560 :デフォルトの名無しさん:2010/03/27(土) 23:07:06
怖いのは安定性じゃなくてライセンスだと思うよ、多分

561 :541:2010/03/27(土) 23:07:51
>>557

了解です。
zlibも検討します。

>>558
知ってるか?
俺はC#はじめてまだ5ヶ月だから初心者なんだぜ。

562 :デフォルトの名無しさん:2010/03/27(土) 23:09:22
>>553
ちゃんとzip用のヘッダさえ書いてやれば、
ファイル一つ一つの圧縮はGZipStream使ってもれっきとしたzipファイルが作れるんだぜ

563 :デフォルトの名無しさん:2010/03/27(土) 23:09:25
>>560
ああ、ライセンスね。そのライブラリは調べてなかったな……。



って、Ms-PLじゃねえか!
.NETの世界で一番有名なオープンソースライセンスなのに、
怖いとかモグリだろ。

564 :541:2010/03/27(土) 23:10:14
>>560

そういうこと。
できたらおkじゃないところが痛い。

565 :デフォルトの名無しさん:2010/03/27(土) 23:11:26
まあオープンソース=GPL汚染というのはやはり根強い印象があるよねー

566 :デフォルトの名無しさん:2010/03/27(土) 23:12:59
>>555のようなMS-PLなら全く問題ないだろ
最近のMSのサンプルやMSがオープンソースで公開してるライブラリもほとんどMS-PL

567 :デフォルトの名無しさん:2010/03/27(土) 23:16:21
C#すげーな

568 :541:2010/03/27(土) 23:16:46
みなさんいろいろありがとう。

とりあえず結論としては、
・標準ライブラリはやめとけ。
・dotnetzipができるならいい。
・ダメならzlibでどうにかする。
・それでも無理ならあきらめろ。

でおk?

569 :デフォルトの名無しさん:2010/03/27(土) 23:18:47
まあ自作しろって言われるのがオチだな

570 :デフォルトの名無しさん:2010/03/27(土) 23:20:17
PKとかのライブラリ買え、ってのが抜けてる。

571 :デフォルトの名無しさん:2010/03/27(土) 23:20:19
.NET4では大量のMS-PL由来のライブラリが本家.NETに統合されるよ
WPFの新しいコントロールとかDLRとかMEFとか新機能の多くがMS-PL

572 :デフォルトの名無しさん:2010/03/27(土) 23:22:20
deflateの自作は重すぎ。

573 :デフォルトの名無しさん:2010/03/27(土) 23:23:06
>>568

541が使用している標準ライブラリは必ずしも選択は間違ってないけど、使い方がおそらく間違っている。
dotnetzipで問題ないだろうけどこのスレのやつが実際に確かめたわけではないので、自分で調べて考えろ。

574 :541:2010/03/27(土) 23:26:56
とりあえず、自作する方向でも、一度上の人と相談します。
>>573の言うとおり、使い方が間違っている可能性もあるのでそれも含めつつ。

ダメなら即効白旗揚げて、対策考えてもらいます。
ありがとうございました。

575 :デフォルトの名無しさん:2010/03/27(土) 23:29:24
あのよ、コスト考えろよ。ZIP圧縮・解凍ライブラリなんて自作してたら、
どんだけ時間かかると思ってんだよ。

576 :デフォルトの名無しさん:2010/03/27(土) 23:31:33
当該アプリで圧縮したものは、他のアプリでも伸張できるけど、
当該アプリで伸張できるのは、当該アプリで圧縮したものだけ

という仕様でよければ、自分で実装するのも然程困難ではない

577 :デフォルトの名無しさん:2010/03/27(土) 23:36:10
そんな実装するくらいなら、BSDライセンスのライブラリでも探すわw

578 :デフォルトの名無しさん:2010/03/27(土) 23:38:24
そんなロクにテストもしてない実績もない
バグだらけの糞自作ライブラリなんかそれこそ怖くて使いたくないわ

579 :デフォルトの名無しさん:2010/03/27(土) 23:38:58
>>540
あれ、レポートされてたっけ。

また今度じっくり向きあってみます。
自分が組み上げたコードじゃなく引き継いだものなので、
どこがどーなってるかさっぱりなんですがねw

580 :デフォルトの名無しさん:2010/03/27(土) 23:40:47
誤解されそうなので補足しとくけど>>578は拾ってきたライブラリを使うんじゃなくて
自分で実装する場合の話ね

581 :デフォルトの名無しさん:2010/03/27(土) 23:42:50
よく「設計した人から言われたんで」みたいなこと言うやついるけど、
きちっと筋道建てて論破できない時点で、そいつも同罪。

582 :デフォルトの名無しさん:2010/03/27(土) 23:42:56
>>576
作るのは簡単だが、世間並の圧縮率にするのと、バグがほとんどないと思えるレベルの安定性にするのが大変

583 :デフォルトの名無しさん:2010/03/28(日) 02:44:06
Ms-PLのdotnetzipはどう使えばいいの?
黙って実装しても問題にならないの?

584 :デフォルトの名無しさん:2010/03/28(日) 03:13:13
オレは業務でZIP書庫作る必要があって、結局は自前でやったなぁ
実データはDeflateStreamで済むしヘッダだけ実装すればいいだけだよ

585 :デフォルトの名無しさん:2010/03/28(日) 03:22:29
シェアード ソース ライセンス
http://www.microsoft.com/japan/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx

商用アプリに利用して一緒にバイナリを配布してもOK。詳しくはライセンス原文を参照してくれ。

586 :デフォルトの名無しさん:2010/03/28(日) 04:28:12
.NET界隈はわりと自由なライセンスが普及してて良い

587 :デフォルトの名無しさん:2010/03/28(日) 04:29:33
>>586
隠したくても隠せないしねw

588 :デフォルトの名無しさん:2010/03/28(日) 04:40:44
まぁ、使っていいって言ってくれてるんだから隠す必要はないな。
ライセンスで認められた範囲で堂々と使うといい。

589 :デフォルトの名無しさん:2010/03/28(日) 05:17:35
許諾者は、著作権、特許権、商標、またはその他の形式の出所をコード内に常に示しておく必要があります

ここがよくわからないんだけど、結局配布する場合どうすればいいの?

590 :デフォルトの名無しさん:2010/03/28(日) 09:51:03
http://www.microsoft.com/japan/opensource/licenses.mspx#Ms-PL
今はこっち
>本ソフトウェアに含まれるすべての著作権…の表示を維持する必要があります。
だから元々そういう表示が含まれている場合は消すなってことだろう

591 :デフォルトの名無しさん:2010/03/28(日) 10:23:35
>>587
隠す方法はいろいろある。ネイティブにもできる。

592 :デフォルトの名無しさん:2010/03/28(日) 10:36:10
流れを読まずに質問です。
C#で使えるコントロールのライブラリってないでしょうか?
・ゲージやメーター
・Officeっぽい、Vistaっぽいコントロールのスキン表示
・スキン機能
こんな機能があるライブラリがあれば名前だけでもいいので教えてください。
商用ではいくらでもあるのですがライセンス料が高すぎるのでできればオープンソース
のライブラリを教えて頂ければと思います。
日本語・英語は問いませんが、日本語を使用しても問題のない方が望ましいです。
注文だらけですが、もし知っておられる方がいましたらお願いいたします。

593 :デフォルトの名無しさん:2010/03/28(日) 10:36:58
WPF

594 :デフォルトの名無しさん:2010/03/28(日) 11:02:22
いやWPFはNFW3.5以降ということなので、NFW2.0以降で使用できるライブラリを
お願いします。
というか最初に言い忘れてました、ごめんなさい

595 :デフォルトの名無しさん:2010/03/28(日) 11:06:23
NFWって略は初めて見たかもしれない

596 :デフォルトの名無しさん:2010/03/28(日) 11:17:50
聞いたことないな
.NETのオープンソースが盛り上がりだしたのって最近MSがオープンソースに積極的になってからだからな
WPF使えば一瞬でできる報われないことをわざわざやる人もいないだろ

597 :デフォルトの名無しさん:2010/03/28(日) 11:40:38
いやNFW3.5にするとWin2000を切り捨てざるを得なくなるので、それを避けたいだけなのです。
フリーではライブラリはないか、または聞いたことがないぐらいマイナーということですね。
昔はいくつかあったみたいですが、今はすべて商用に変わっていてがっくりですorz

598 :デフォルトの名無しさん:2010/03/28(日) 11:46:22
2000は切り捨ててもいいのよ

599 :デフォルトの名無しさん:2010/03/28(日) 11:52:05
UIだけActiveXでHTMLやSilverlightベースにしてしまえ

600 :デフォルトの名無しさん:2010/03/28(日) 11:58:59
jQueryがあるじゃないか

601 :デフォルトの名無しさん:2010/03/28(日) 12:32:27
ふーん

602 :デフォルトの名無しさん:2010/03/28(日) 12:57:25
はーん

603 :デフォルトの名無しさん:2010/03/28(日) 13:37:09
10年前のOSだもんなあ。
IE6も10年前でみんな葬り去りたくてウズウズしてるんだから、2000も葬っていいわな。

604 :デフォルトの名無しさん:2010/03/28(日) 13:40:24
2000のSP4は、7月にサポート切れだったろ。
そのタイミングで俺的には終了だな。

605 :デフォルトの名無しさん:2010/03/28(日) 14:25:57
MSだけじゃなくて開発側も古いWindowsサポートって頭があるからな
切っちゃっていいでしょっていうか切っていこうよ。.netなら尚更

606 :デフォルトの名無しさん:2010/03/28(日) 14:29:06
逆にMSがサポートしないものを「サポートします!」とか、
すごい勇気だなぁ、って思いますよw

607 :デフォルトの名無しさん:2010/03/28(日) 14:36:27
>>592
RoboFormとか、skinstudioかねぇ?

後者はDirectX用だからやや違うかもしれないけど。
他は皆がレスしてるようにWPF自体がスキン機能そのものの(機能とデザインの分離)だから
それを使うのが一番の王道だな。

608 :デフォルトの名無しさん:2010/03/28(日) 14:36:45
MSじゃないどこかの企業がそれを大々的にするって言ってたな。

609 :デフォルトの名無しさん:2010/03/28(日) 14:40:42
DevExpress .NET Windows Forms Skinning Library
SPREAD for .NET Windows Forms Edition
AppStylist for Windows Forms

ぐぐったら色々あるみたいね。もちろん、みんな商用プロダクトだが。

610 :デフォルトの名無しさん:2010/03/28(日) 14:41:33
スキン突っ立ってオーナードローするだけ出しな
そんなに手間じゃないだろ

611 :デフォルトの名無しさん:2010/03/28(日) 14:42:28
十分手間だろ
一つやったら全部やらないと空気読めてない感じになる

612 :デフォルトの名無しさん:2010/03/28(日) 14:42:38
SPREADは違うだろ。

613 :デフォルトの名無しさん:2010/03/28(日) 14:52:17
とりあえず、オープンソースの範囲ではこんなのがあった。
http://weys.codeplex.com/
UIのカスタマイズと言うよりか、Windows Media Playerのスキンっぽい感じだな。

614 :デフォルトの名無しさん:2010/03/28(日) 16:00:47
みなさん、いろいろとありがとうございます。
私が今開発しているのはとあるゲームなのですが、それがWin2000以降に対応していたもので
Win2000ユーザーを切り捨てるのもどうかと考えてたのです。
数年前ならコントロールのライブラリも意味があったかもしれませんが、今ではWPFが一番
いいみたいですね。
WPF検討してみます。
しかし、日本語だと書籍はないですね...

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


615 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/28(日) 16:37:17
>>615
ちょっとそれ詳しくお願いします。
要求スペックが高いから古いマシンでは駄目
XP SP3以降じゃないと駄目
という意味ですか?

618 :デフォルトの名無しさん:2010/03/28(日) 16:37:19
>>616
そりゃあ、その2箇所を通過してしまうような条件が残ってるからだ。
当たり前のことじゃないか。

619 :デフォルトの名無しさん:2010/03/28(日) 16:37:58
素直にnew int書くだけでいいと思うの

620 :デフォルトの名無しさん:2010/03/28(日) 16:38:26
int[] table;

これはifの前に宣言だけして
table = new int[]{02, 0, 180, 90};
とかでできない?

621 :デフォルトの名無しさん:2010/03/28(日) 16:41:40
>>617
前者
どんな環境でも動くことは動くけどバリバリのDirect3Dで描画されてるから
ハードウェアアクセラレーションが十分に効かない環境では厳しい

622 :デフォルトの名無しさん:2010/03/28(日) 16:44:30
>>616
これで一応エラーでないけどコメントの箇所何かいれないと何も設定されない条件ができないか?
http://ideone.com/JFPMtwVZ

623 :デフォルトの名無しさん:2010/03/28(日) 16:44:41
>>616
int[] table = null;

にするか

if()
〜〜
else
〜〜
とするか
お好きなのをどうぞ

624 :デフォルトの名無しさん:2010/03/28(日) 16:46:13
>>621
回答ありがとうございます。
なるほど、やはりそのような理由ですか。
了解しました。
スレチなのでWPFのことは別スレで聞いてみたいと思います。
みなさん、いろいろとありがとうございました。

625 :デフォルトの名無しさん:2010/03/28(日) 16:47:21
>>620
new int[]でできました。
ありがとうございました。
これをつけるのとつけないのとでは、どう意味が違うんですか?


626 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/28(日) 16:50:50
>>625
アホか。エラーメッセージに全部書いてあるだろ。

628 :デフォルトの名無しさん:2010/03/28(日) 16:53:15
ああああああ
間違えた

table = new int[4];
table[0] = 1;
table[1] = 0;
table[2] = 120;
table[3] = 270;

629 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/28(日) 17:05:07
>>590
こっちはまだわかりやすいね
訳が適当だとどうにでも解釈できるよな

631 :デフォルトの名無しさん:2010/03/28(日) 17:11:45
>>616
普通にこれだけでいける
table=new []{0,1,2,3,4}

632 :デフォルトの名無しさん:2010/03/28(日) 21:49:36
>>631
アホか。

633 :デフォルトの名無しさん:2010/03/28(日) 23:50:29
配列なんて使わずArrayList使おうよ

634 :デフォルトの名無しさん:2010/03/28(日) 23:51:52
intの配列の初期化がまともにできないレベルだからなあ
もうちょい先だろ

635 :デフォルトの名無しさん:2010/03/28(日) 23:53:00
うひゃあうひゃあ
配列とか扱うのはメモリ効率悪いwww

636 :デフォルトの名無しさん:2010/03/29(月) 00:08:06
男なら配列なんか使うな!

637 :デフォルトの名無しさん:2010/03/29(月) 00:13:42
いまどき配列を嫌う男の人って…

638 :デフォルトの名無しさん:2010/03/29(月) 00:28:06
大した弊害なくて使えるなら何だって良いさ

639 :デフォルトの名無しさん:2010/03/29(月) 00:34:17
ですね

640 :デフォルトの名無しさん:2010/03/29(月) 03:59:41
volatile の効果が実感できるソースコードの例は無いでしょうか?
簡単なコードでは実感できないような修飾子なのでしょうか。

641 :デフォルトの名無しさん:2010/03/29(月) 06:16:01
無理


642 :デフォルトの名無しさん:2010/03/29(月) 06:19:56
そもそも初心者には使う必要のない修飾子

643 :デフォルトの名無しさん:2010/03/29(月) 06:39:07
VSの設定保存機能って使ってる?
ビルドしたらなんとか.exe.configとかいう名前で生成されるやつ。
自分で用意してるから使わないんだけど、生成させないようにするのはどうするの?

644 :デフォルトの名無しさん:2010/03/29(月) 06:47:40
App.configを消せばいい。

645 :デフォルトの名無しさん:2010/03/29(月) 06:51:00
>>644
おー、サンクス。さっそく除外しとこう。

646 :デフォルトの名無しさん:2010/03/29(月) 09:13:16
ArrayListって内部的にリスト構造なの?
Listとどう違うの?

リスト構造だとインデクサ[]は使えるとしてもアクセス効率
が悪いと思うけど

647 :デフォルトの名無しさん:2010/03/29(月) 09:18:19
>>646
いや配列

配列の容量あふれると別の容量大きめの配列作ってコピーするから時々追加にO(n)かかる

ArrayListはList<object>だった気がするなぁ〜
使わないから覚えてない…

648 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/29(月) 10:47:41
ArrayListやHashtableって実装をさらけ出した悪い名前だと思う

652 :デフォルトの名無しさん:2010/03/29(月) 10:54:34
そこがメリット

653 :デフォルトの名無しさん:2010/03/29(月) 10:58:07
Java由来の名前だが、実装を示唆するような名前でないと速度の見積もりができないので、あれはあれでよい。

654 :デフォルトの名無しさん:2010/03/29(月) 11:01:25
>>650
MFCを使ってる人がまだいたことに驚いた

655 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/29(月) 12:25:00
保護レベル変更は無理

658 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/29(月) 17:27:28
>>660
また俺が回答してやるよ
どーんとこい!

662 :デフォルトの名無しさん:2010/03/29(月) 18:34:08
いや俺が回答した

663 :デフォルトの名無しさん:2010/03/29(月) 18:40:04
いやいや俺が

664 :デフォルトの名無しさん:2010/03/29(月) 19:08:57
あ、じゃあ
俺がやったよ

665 :デフォルトの名無しさん:2010/03/29(月) 20:47:38
質問
現在、C言語で書かれたDLLが提供する関数を
C#から呼び出そうとしています。

悩んでるが、「引数に構造体の配列を持つ関数」の処理です。
下記URLにソースコードを張りました
http://codepad.org/SnH7gdwI

上でいう所のC側の「//<- ここで落ちる」というコメントのある所で不正アクセスで落ちてしまいます。
(stSample[0]に値が入ってるのは確認できました)

C#側の構造体の渡し方がおかしいとかなと思ってるのですが、
どこがおかしいのか分からず・・・。
ご存知の方いましたら、教えて下さい。


666 :デフォルトの名無しさん:2010/03/29(月) 20:52:16
public struct ST_SAMPLEDLL {
  public byte cCount;
  public fixed byte strBuff[256];
}
こうじゃね

667 :デフォルトの名無しさん:2010/03/29(月) 21:18:54
文字列にしてそれを渡してパースしてぶっこめば楽だな

668 :デフォルトの名無しさん:2010/03/29(月) 21:35:23
教えてください。

マルチスレッドを利用したプログラムがあります。
このスレッドのうち1本で、ローカルファイルにデータを出力する処理があり、そのファイル名を
ファイル選択ダイアログ(System.Widows.Forms.SaveFileDialog)を利用して求めることにしたいと思います。

実際にプログラムを組んで実行すると、ShowDialog() を実行する箇所でエラー終了します。
メッセージボックスに表示されるエラーの内容は以下の通りです。

>OLE が呼び出される前に、現在のスレッドが Single Thread Apartment (STA) モードに設定されていなければなりません。

main 関数には STAThread の設定もしてあります。(元からついているようですが)

同じプログラムで、main 関数を実行したスレッド(以下、メインスレッドと記述します)でダイアログを表示すると正常に使用できます。
また、メインスレッドで開けばいいのかと、メインスレッドで表示しているフォームに Invoke を掛けて
ダイアログを表示すると正常に使用‥‥出来るのですが、このフォームは最小化&非表示にしているため
この状態でダイアログを表示しようとしても画面には出てきません。

メインスレッド以外からファイル選択ダイアログを正常に開く方法はないでしょうか。

669 :デフォルトの名無しさん:2010/03/29(月) 21:44:03
UIスレッド以外から操作すんなよ。

670 :デフォルトの名無しさん:2010/03/29(月) 21:45:43
ダイアログに見せかけたFormじゃだめなの?

671 :デフォルトの名無しさん:2010/03/29(月) 21:49:18
メインスレッド側でAPIで呼べばいいんじゃね?

672 :デフォルトの名無しさん:2010/03/29(月) 21:50:38
あー、Thread.SetApartmentStateってのがあってだね

673 :デフォルトの名無しさん:2010/03/29(月) 21:50:49
一応、Thread.TrySetApartmentState メソッド ってのはあるけどな・・・。

674 :デフォルトの名無しさん:2010/03/29(月) 21:52:26
>>669-671
この3人にtaskkillしてあげてください

675 :デフォルトの名無しさん:2010/03/29(月) 21:53:44
ひどい赤っ恥だ

676 :デフォルトの名無しさん:2010/03/29(月) 21:56:37
メインのUIスレッド以外からUIいじるのはお勧めできないけどな。

677 :デフォルトの名無しさん:2010/03/29(月) 21:58:40
>>674
何でtaskkillなんだよ
>ダイアログを表示すると正常に使用‥‥出来るのですが、このフォームは最小化&非表示にしているため
>この状態でダイアログを表示しようとしても画面には出てきません。
ダイアログで出ないとかいうからダイアログに見せかけたForm表示しろっていっただけ
オーナーとの関係で表示がされないだけだろ

678 :デフォルトの名無しさん:2010/03/29(月) 21:59:11
そのスレッドは自分で作ったスレッド?
それともスレッドプールのスレッド?
自分で作ったスレッドなら、差し支えなければ自分でSTAに設定すればいい(Start前しかできないよ)
もしスレッドプールとかなら、これはMTAから変更することはできない。
汚いけど、必要な部分で自分でスレッド作って、STAに設定してメッセージボックス表示、
元のスレッドでは新しいスレッドを勝ち合わせとかするしかないと思う。
最初からUIスレッドにIncvokeする方が無駄はないけど。


679 :デフォルトの名無しさん:2010/03/29(月) 22:01:42
そもそもSTAとかMTAって何なの

680 :デフォルトの名無しさん:2010/03/29(月) 22:02:56
ようやくシンプルだけどまともに動くものが作れるようになってきたけど
未だにマルチスレッドとかよくわからないな
>>679も何のことやら

681 :デフォルトの名無しさん:2010/03/29(月) 22:05:41
Inside OLE2 嫁。

682 :デフォルトの名無しさん:2010/03/29(月) 22:09:36
>>681
それ絶版じゃなかったっけ。

683 :デフォルトの名無しさん:2010/03/29(月) 22:10:41
うん。

684 :デフォルトの名無しさん:2010/03/29(月) 22:11:22
>STAとかMTA
VC++でATL使ってIEコンポーネント触ったときにちょっとかじった程度だな
ナビゲーション関連がこの辺を理解してないとメッセージが来ないとかなんとか

685 :デフォルトの名無しさん:2010/03/29(月) 22:24:31
うん。

686 :668:2010/03/29(月) 22:26:02
みなさん、ありがとうございます。
てか、はやっ。w

>>670
無知ですみません。
ダイアログに見せかけたフォームというのは、Form を継承したファイル選択ダイアログの
ようなフォームクラスを自分で作る、と言うことでしょうか。
だとすると、今回は遠慮できたらいいかな、と。すみません。

>>671
いまの状況からは少し難しく。すみません。

>>678
System.Threading.Thread を利用して自分で作ったスレッドです。

やっとエラーメッセージの意味がわかりました。
あれは必ずしも main 関数でやれってことではなくて、ダイアログを操作するスレッドに
STA を設定しろってことなんですね。
>>672>>673 さんの仰ってる方法で出来ると理解しました。明日、確認します。

>>669,676
自分も UI スレッド(この言葉を忘れていました)以外で UI の操作を行うのには抵抗があったのですが。
‥‥気をつけておきます。

687 :デフォルトの名無しさん:2010/03/29(月) 22:27:30
>>686
わかればよろしい
今後も精進しなさい

688 :デフォルトの名無しさん:2010/03/29(月) 22:28:10
偉そうに

689 :665:2010/03/29(月) 22:32:50
>>666
レスサンクス。
バッファの取り方がまずいという事ですか。
今手元に環境がないので試せないですが、
明日試してみます。

良いサイトか何かあれば、いいんですが、
なかなか見つからず・・・orz

ちなみに、環境は
XP,VC# 2008Express
(書き忘れました)

690 :デフォルトの名無しさん:2010/03/29(月) 22:37:59
バッファの取り方でなくて、C#とCの型の違い。

691 :665:2010/03/29(月) 22:42:37
>>690
サンクス
それで、最初の構造体はアクセスできるけど(たまたま出来てるように見えてるだけ?)、
次の構造体にアクセスしようとしたら落ちると・・・。



692 :デフォルトの名無しさん:2010/03/29(月) 22:46:49
型の制約があるものより汎用的なテキストでやり取りする方が無難かもねえ
相談かこっちか忘れたけど以前同じようなdllを呼び出すアプリの相談で
httpでやり取りする形にしてみたら?ってのがあったな

693 :デフォルトの名無しさん:2010/03/29(月) 22:52:56
>>691
よく見たらST_SAMPLE**だったのか
C#側の引数の型をIntPtr[]にしてそれぞれポインタの参照先に
ST_SAMPLEDLL一つ分のメモリを割り当てておかないと

694 :デフォルトの名無しさん:2010/03/29(月) 22:53:47
バイト配列が一番わかりやすいよ。

695 :665:2010/03/29(月) 22:58:22
>>692
時間がたっぷりあって、許されるなら、DLLをC++か何かで
書き換えたいところですが、そうもいかず・・・。
このインターフェースは我慢するしかないですね。

>>693
です。ダブルポインタです。
そこなのですが
http://codepad.org/SnH7gdwI
このサイトに張ったソースの37行目でDLLに渡すメモリの実態自体は用意しているので、
大丈夫かと思ってたのですが、それとは別に確保するという事ですか?

あと、宣言は、こっちの方がいいってことですね。
[System.Runtime.InteropServices.DllImport("MY_Dll.dll", EntryPoint = "test")]
unsafe public static extern int test_call( IntPtr[] pstList);


696 :デフォルトの名無しさん:2010/03/29(月) 23:00:44
IntPtrのみでいいはずだけどな。
Cでは、基本的に配列はメモリ上に整列するし。

697 :デフォルトの名無しさん:2010/03/29(月) 23:04:37
ダブルポインタだからポインタの配列を渡さないといけない(だからIntPtr[])
しかもC側でポインタの参照先にアクセスしてるから予めそれぞれ実体を割り当てとかないと

698 :デフォルトの名無しさん:2010/03/29(月) 23:11:52
配列はポインタで受けれるけど、ってやつか。

699 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/29(月) 23:15:27
= () => って表記、他に候補なかったのかよ!と書く度に思う。タマゴとコンニャクでオデン喰いたくなるw

701 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/29(月) 23:27:48
DLLとC#の間にもう一個DLL挟めばいいんだよ

703 :デフォルトの名無しさん:2010/03/29(月) 23:29:37
>>701
なんといいますか・・・。
頭が下がるばかりです。
なるほど、納得しました。


704 :デフォルトの名無しさん:2010/03/29(月) 23:32:31
もともと

x⇒x*2;

みたいな感じではなかったのあれ
1バイト文字に⇒がなかったから代用みたいな
よくしらんけど

705 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/29(月) 23:40:06
なんでCdecl?

707 :デフォルトの名無しさん:2010/03/29(月) 23:40:19
>>705
なんていうか・・・俺って頭の回転速いから自然と先越しちゃうんだよ。(笑)
肩を並べる奴は誰も現れないって感じだ。(笑)

708 :デフォルトの名無しさん:2010/03/29(月) 23:41:32
>>707
おい
俺のフリをするな

709 :デフォルトの名無しさん:2010/03/29(月) 23:42:58
>>706
http://codepad.org/SnH7gdwI で__stdcallが指定されていないから。
まさかコンパイルオプションでstdcallを指定しているなんてオチがあるわけないと思ってCDeclと仮定した。

710 :701■Agei32s4:2010/03/29(月) 23:44:05
騙りばっかだな。トリつけとくわ。

711 :デフォルトの名無しさん:2010/03/29(月) 23:44:35
ですね

712 :665:2010/03/29(月) 23:55:44
>>705
>>709
具体例、サンクス!
少し話しが出たので、質問なのですが、
DLL側で__stdcallが指定されていた場合、話しは違ってくるのでしょうか?


713 :デフォルトの名無しさん:2010/03/29(月) 23:59:11
うん。

714 :デフォルトの名無しさん:2010/03/30(火) 00:01:18
文字列でやり取りするのが今時

715 :デフォルトの名無しさん:2010/03/30(火) 00:02:31
そんなことない。

716 :デフォルトの名無しさん:2010/03/30(火) 00:03:15
WinFormsのP/Invokeを全部標準入出力に替えたらとんでもないことになるな

717 :デフォルトの名無しさん:2010/03/30(火) 00:06:56
>>715
ネットワーク越しにwebAPI呼び出してxmlなどのテキストで回答を許容できる時代なんだから
スタンドアロンでやっても問題ないだろ

そうすればGUIだけC#で書いて古いDLLは常駐してhttpをリスナーする小さいプログラム書けば
いいのでVC++の無料でも余裕で開発できる

718 :デフォルトの名無しさん:2010/03/30(火) 00:07:42
どんだけ遅いと思ってんだよ。バカジャネーノ

719 :デフォルトの名無しさん:2010/03/30(火) 00:08:00
>>713
実は、会社の帰り際に「WINAPIは__stdcallで宣言するのが標準」という記事を見つけたので、
淡い期待を抱きながら、「明日試そう・・・」と思っていたところでした。
スタックの開放タイミングの違いとうい事ですか(う〜ん汗)


720 :デフォルトの名無しさん:2010/03/30(火) 00:12:45
直接は関係ない。関数から戻るときの問題だし。

721 :デフォルトの名無しさん:2010/03/30(火) 00:16:05
やれやれ

722 :デフォルトの名無しさん:2010/03/30(火) 07:25:47
テキストファイルでやりとりすべきだな

723 :665:2010/03/30(火) 11:56:25
回答を下さった方々、有難う御座いました。
無事、思うような動作が出来ました!
(感謝感謝)

私の後ろの初めてを捧げたいぐらいの感動です。
ここの所、ず〜っとこれで悪戦苦闘してましたので・・・。
有難う御座いました。


724 :デフォルトの名無しさん:2010/03/30(火) 11:57:01
UserControl 作るとツールボックスに表示されますが、
表示させたくない場合はどうすればいいですか?

725 :デフォルトの名無しさん:2010/03/30(火) 11:59:17
>>723
よしではいくぞ

>>724
無理じゃね?
クラスライブラリで分離しておくとかすれば可能かな・・・

726 :デフォルトの名無しさん:2010/03/30(火) 12:34:16
>>723
2番目をくれ

727 :665:2010/03/30(火) 12:55:41
>>725
>>726
夢を打ち砕いてすまないのだが、
一応、私は「男」です

728 :デフォルトの名無しさん:2010/03/30(火) 12:57:39
>>727
あたりまえだろ。女なんて嫌だ

729 :デフォルトの名無しさん:2010/03/30(火) 12:58:12
知ってて言ったのにw
マジな返答くるとは思わなかった

ばっちこーいのAAでも貼ってくるかと期待したのに

730 :デフォルトの名無しさん:2010/03/30(火) 13:05:19
>>724
それらしい属性探して、無ければ諦めれ

731 :665:2010/03/30(火) 13:25:07
っく・・・
変態ばっかりだったとは・・・。


732 :デフォルトの名無しさん:2010/03/30(火) 13:30:28
軽いキャッチボールだよw

733 :デフォルトの名無しさん:2010/03/30(火) 13:58:43
おまえらToolboxItemAttributeもしらねえのかよ・・・

734 :デフォルトの名無しさん:2010/03/30(火) 19:27:29
さぁって、今日はどんな馬鹿が釣れるかな? 枠々

735 :デフォルトの名無しさん:2010/03/30(火) 21:15:14
>>724
AutoToolboxPopulate
というのがVSにはあるらしい
でも単独配布のEEにはないんだよな

736 :デフォルトの名無しさん:2010/03/30(火) 21:18:19
何かうまく動かないなーと思ったらRectangleのBottomってTop+Heightなんだ
原点0で高さ64なら下の座標は63だとばかり思ってたよ…

737 :デフォルトの名無しさん:2010/03/30(火) 21:26:56
>Bottom プロパティの値は、Rectangle に含まれない、Rectangle の下端にある最初の点の y 座標を表します。

確認を怠るのが悪い。

738 :デフォルトの名無しさん:2010/03/30(火) 21:43:10
プログラミング自体初心者で、昨日初めてC#を始めて見ました。
visual C# 2008を使ってGUIでグラフを表示させたいんですが、どうすればいいんでしょうか?
参考になりそうなサイトなどあれば教えてください。

739 :デフォルトの名無しさん:2010/03/30(火) 21:52:02
http://www.microsoft.com/downloads/details.aspx?familyid=130F7986-BF49-4FE5-9CA8-910AE6EA442C&displaylang=ja
実用的なのはこれ
プログラミングの勉強で関数のグラフを自分で描いたりするんだったら C# paint でググる

740 :デフォルトの名無しさん:2010/03/30(火) 22:04:27
>>739
ありがとうございました。
自己解決しました。

741 :デフォルトの名無しさん:2010/03/30(火) 22:32:24
C#は.net frameworkと同じ意味?

742 :デフォルトの名無しさん:2010/03/30(火) 22:34:13
違う

743 :デフォルトの名無しさん:2010/03/30(火) 22:39:04
同じ

744 :デフォルトの名無しさん:2010/03/30(火) 22:40:03
.net frameworkは土台
その上で動くプログラムを書けるのがVC#とかVB.netなど

745 :デフォルトの名無しさん:2010/03/30(火) 22:52:42
言語仕様上はC#は.NET Frameworkとは無関係ということになってる

746 :デフォルトの名無しさん:2010/03/30(火) 22:53:15
違う

747 :デフォルトの名無しさん:2010/03/30(火) 22:53:59
Monoはネイティブコード吐けるし…

748 :デフォルトの名無しさん:2010/03/30(火) 22:56:24
それラインタイム一緒に事前コンパイルしてるだけで無駄が大きいけどね

749 :デフォルトの名無しさん:2010/03/30(火) 23:00:46
一応言語仕様の上ではCLIにも依存してない
言語仕様に最低限必要なライブラリが書いてあるのでそれを一通り実装しさえすれば
C#と名乗れる

750 :デフォルトの名無しさん:2010/03/30(火) 23:09:54
名乗れるね

751 :デフォルトの名無しさん:2010/03/30(火) 23:10:14
違う

752 :デフォルトの名無しさん:2010/03/30(火) 23:19:03
もう何がなんだかw

753 :デフォルトの名無しさん:2010/03/31(水) 00:00:07
どこが「違う」か指摘できない馬鹿は放っておけ

754 :デフォルトの名無しさん:2010/03/31(水) 00:12:05
ですね

755 :デフォルトの名無しさん:2010/03/31(水) 02:39:38
>>739配布するときにも相手にはそれをインスコさせなきゃ駄目?
それとも、自動的に組み込んでくれる?

756 :デフォルトの名無しさん:2010/03/31(水) 03:26:39
90

757 :デフォルトの名無しさん:2010/03/31(水) 04:59:13
>>755
.netその物と同じで相手側にも入ってないとだめかもね

758 :デフォルトの名無しさん:2010/03/31(水) 06:15:46
だめかもね

759 :デフォルトの名無しさん:2010/03/31(水) 07:36:45
>>755
ライブラリの dll ファイルは
標準のアセンブリフォルダーの下か、
exe と同じフォルダーにあれば OK なんで
exe と同梱で配布すれば OK。

760 :デフォルトの名無しさん:2010/03/31(水) 10:55:33
include <stdio.h>
using System

int Main(void){
System::Console::WriteLine("にちゃんねらー死ね");
}

761 :デフォルトの名無しさん:2010/03/31(水) 11:23:17
>>760
ここはニュー速のプログラミングスレじゃないですよ

762 :デフォルトの名無しさん:2010/03/31(水) 11:28:37
なんでC++/CLIなんだよイライラするなあ死ね

763 :デフォルトの名無しさん:2010/03/31(水) 11:37:00
C++/CLIならmainだろ
include <stdio.h>
using System;も必要ない

764 :デフォルトの名無しさん:2010/03/31(水) 11:39:16
やたら丼を書いている奴だろ

765 :デフォルトの名無しさん:2010/03/31(水) 12:45:58
同じマシン、同じソフトで印刷プレビューするときにプリンタ2台で
1枚でも40秒と3分の差があるんですけど、印刷の実行速度は
プリンタドライバも関係してくるんですか?
3分かかるのは9年前発売のプリンタで、40秒かかるのは
最近発売のプリンタですけど。

766 :デフォルトの名無しさん:2010/03/31(水) 12:50:17
そりゃまあレンダリングするのはドライバだしな

767 :デフォルトの名無しさん:2010/03/31(水) 12:59:46
>>766
なるほど。
ありがとうございます。

768 :デフォルトの名無しさん:2010/03/31(水) 13:51:04
>印刷プレビューするとき
これはプリンタのほうでプレビューってことだよな?
自分でプレビュー画面作るってわけでもなく
だとしたら>>766の通りだけどC#関係なくね?


769 :デフォルトの名無しさん:2010/03/31(水) 14:16:03
プレビューの速さの話が途中から印刷の実行速度の話になってるからな

770 :デフォルトの名無しさん:2010/03/31(水) 14:28:59
フォームプロジェクトに追加したユーザーコントロールをデザイナで配置したいのですが、ツールボックスに表示されません。
調べてみると Windowsフォームコントロールライブラリ という別プロジェクトでDLLを作成し、
それを介する方法しか発見できませんでした。
DLLを介する以外に方法があれば教えてください。

771 :デフォルトの名無しさん:2010/03/31(水) 14:51:56
メニューのツールのオプションのWindowsフォームデザイナの全般で
ツールボックスのAutoToolboxPopulateをTrueにしてもダメかな?

772 :770:2010/03/31(水) 14:59:20
>>771
できました。ありがとうございました。

773 :765 ◆JdKMFRogo6 :2010/03/31(水) 15:25:55
>>768 >>769
C#で作ったプログラムで印刷プレビュー出すときのことです。
出るまでにそれだけ時間がかかるんですよ・・・
ここらへんでプリンタも買い替えないと・・・

774 :デフォルトの名無しさん:2010/03/31(水) 15:28:41
勝手にしろよwww

775 :765 ◆JdKMFRogo6 :2010/03/31(水) 15:35:37
>>774
たしかにwww

776 :デフォルトの名無しさん:2010/03/31(水) 16:12:56
http://codepad.org/YiT7oXst
上記のコードがあるとします

14行目でリストの0番目のアイテムにGetTypeしてアイテムの型を取得していますが
BindingList<T>のインスタンスが生成された段階でアイテムの型は決まってるので
0番目のアイテムにアクセスしなくても取れるはずです
これの取り方を教えて頂きたいのです

あくまでもテスト用のコードなので「Tから取ればいいだろ」みたいな突っ込みはご容赦下さい

777 :デフォルトの名無しさん:2010/03/31(水) 16:13:43
今から仕事なので日付変わった頃にお返事します

778 :デフォルトの名無しさん:2010/03/31(水) 20:50:18
>>776
listType.GetGenericArguments()[0]

779 :デフォルトの名無しさん:2010/03/31(水) 23:00:29
関数のパラメータについて、教えてください。

デバッグ用にその関数のパラメータの一覧をログなどに出力したいと考えます。
たとえばなのですが、
System.Diagnostics.StackFrame.GetMethod().GetParameters()
を利用すると、特定の関数のパラメータの一覧を得ることが出来ます。
ただ GetParameters() ではパラメータの型や変数名などの情報を取得することは出来ても
パラメータの値そのものは取得できないようです。当然と言えば当然なのですが。

これと同じような方法で、パラメータの値を取得する方法はないでしょうか。


なにをしたいのかというと、デバッグ用に特定の関数のパラメータの各値をログなどに
出力したいのですが、関数個別に "param1 = {0}", param1 などと書いていくのが手間なので、
関数のパラメータのすべての変数名とその値とを文字列にしてくれる関数を作れないものかと。

780 :デフォルトの名無しさん:2010/03/31(水) 23:16:40
>>778
お答え頂きありがとうございます

質問したかった事とコードが違ってる事に出勤してから気付きました
IBindingListの引数にclass BindingList : BindingList<string>{}のインスタンスを渡して
継承元の型パラメータを取得したいのでした
悩んでる最中は思い至らなかったのですが、単にType.BaseType.GetGenericArguments()すればいいだけでした
下らない質問してすみません

781 :デフォルトの名無しさん:2010/03/31(水) 23:19:01
>>779
無理

782 :デフォルトの名無しさん:2010/03/31(水) 23:40:12
>>779
型名でいいなら
public void Trace(params object[] o)
{
foreach(object obj in o)
{
〜(o.GetType().Name);
〜(o.ToString);

}
}

でいけるとおもうよ〜は出力命令ね

783 :デフォルトの名無しさん:2010/03/31(水) 23:40:35
フォームアプリケーションを作成している時、フォームのコードが長くなったので、
「コードファイル」を新規に作成し、コードの一部を作成したソースに移しました。
その後、フォームへコントロールを配置すると、移したはずの コントロール名_イベント名() が
元のソースに関数の中身が空の状態で生成されてしまうようになりました。
コントロールのプロパティ内でイベントの欄をダブルクリックした時以外は
コードが自動生成されないように設定する方法を教えてください。

784 :デフォルトの名無しさん:2010/03/31(水) 23:45:55
そんな設定ないよ。

785 :783:2010/03/31(水) 23:55:44
>>784
設定がないということは、フォームのコードを複数ソースに分けることをやらない方がいいということでしょうか?
それとも「コードファイル」を作成する以外の方法で別のソースを作成すべきなのでしょうか?

786 :デフォルトの名無しさん:2010/03/31(水) 23:58:30
>>785
> 設定がないということは、フォームのコードを複数ソースに分けることをやらない方がいいということでしょうか?

うん。

787 :783:2010/03/31(水) 23:59:21
>>786
ありがとうございました。

788 :デフォルトの名無しさん:2010/04/01(木) 00:14:00
>>787
うん。

789 :デフォルトの名無しさん:2010/04/01(木) 00:14:02
http;//○○○/〜〜〜
となっているURLの○○○を抽出するにはどうすればいいでしょうか?
正規表現を使ってみたのですが、うまく抽出されません。
例になるコードとかありませんか?

790 :779:2010/04/01(木) 00:18:59
>>781
>>782
ありがとうございます。
残念ながら型名などではなくて中の値そのものが欲しいので、今回は諦めます。

791 :デフォルトの名無しさん:2010/04/01(木) 00:19:40
>>789
URIクラスとかじゃねーの?

792 :デフォルトの名無しさん:2010/04/01(木) 00:22:58
"/"のSplitで[2]とか?

793 :デフォルトの名無しさん:2010/04/01(木) 00:26:07
>>792
'/'のSplitで[2]でしょ

794 :デフォルトの名無しさん:2010/04/01(木) 00:29:17
URIクラスのHostでもAuthorityでもDnsSafeHostでも

795 :デフォルトの名無しさん:2010/04/01(木) 00:39:09
http://〜〜/△△&pass=○○
のようなURLの場合に○○を取得したい場合はどうすればいいでしょうか?
さすがにこれはURIクラスでは処理しきれないと思うんですが

796 :デフォルトの名無しさん:2010/04/01(木) 00:43:17
EndOf

797 :デフォルトの名無しさん:2010/04/01(木) 00:47:17
>>795
System.Web.HttpUtility.ParseQueryString(string query, System.Text.Encoding encoding)

798 :デフォルトの名無しさん:2010/04/01(木) 00:51:19
>>795
'='のSplitで[1]

799 :デフォルトの名無しさん:2010/04/01(木) 00:55:35
みなさんありがとうございます。
今までは正規表現でどうにかしようとしてましたがいろいろやり方があることが分かりました。
もうちょっと頑張ってみます。

800 :デフォルトの名無しさん:2010/04/01(木) 01:00:14
>>799
みなさん?全部俺の回答なんだけどw

801 :デフォルトの名無しさん:2010/04/01(木) 01:01:48
4/1とはいえ他人の善意を潰す嘘は許さん

802 :デフォルトの名無しさん:2010/04/01(木) 01:02:52
自己主張したいならコテでもつけてろよ

803 :デフォルトの名無しさん:2010/04/01(木) 01:03:41
おまえがつけろクソ野郎

804 :デフォルトの名無しさん:2010/04/01(木) 01:05:51
4/1とはいえコテ付けない奴は許さん(キリッ

805 :デフォルトの名無しさん:2010/04/01(木) 01:07:38
ここまで全て俺の自演

806 :デフォルトの名無しさん:2010/04/01(木) 01:08:43
エイプリルフールはどんな嘘でもいいってわけじゃないんだよね。
人を怒らせるような行為はいただけないな。

807 :デフォルトの名無しさん:2010/04/01(木) 01:09:05
だな


808 :デフォルトの名無しさん:2010/04/01(木) 01:47:08
>>799
正規表現でも別にそう難しくはない気もしますが、まあ、
一番楽で素直で間違いのなさそうな方法を選ぶのが良いね。

809 :デフォルトの名無しさん:2010/04/01(木) 02:07:49
(new List<int>()).GetType().GetGenericTypeDefinition().Equals((new List<bool>()).GetType().GetGenericTypeDefinition())

上の評価はtrueになるんだけどさぁ
それを踏まえてMSDNを見ると

http://msdn.microsoft.com/ja-jp/library/system.type.getgenerictypedefinition%28VS.80%29.aspx
>2 つの構築型が同じジェネリック型定義から同じ型引数を使って作成された場合
>GetGenericTypeDefinition メソッドは両方の型に対して同じ Type オブジェクトを返します。

なんかこの説明おかしくね
この場合「違う型引数を指定して作成された場合でも」になるべきじゃね
同じのは同じなんだから当ったり前だろうそんなの
GetGenericTypeDefinition呼ぶまでもない

と思ったけど英語版もsame type argumentsなんだよなあ
なんでだ

810 :デフォルトの名無しさん:2010/04/01(木) 06:33:16
なんでだろうね

811 :デフォルトの名無しさん:2010/04/01(木) 15:58:00
未完成の汎用的なクラスを作れたのでいろんなプロジェクトで利用しているんだけど
既存の項目で追加とすると、その汎用クラスの変更がそのプロジェクトでしか行われない
汎用クラスの変更がすべての利用しているプロジェクトで反映される方法などありますか?
もしくは他に方法はありますでしょうか?

812 :デフォルトの名無しさん:2010/04/01(木) 16:26:28
>>811
既存の項目として追加するときに出てくるダイアログで、追加ボタンの隣にある三角ボタンを押してリンクとして追加すればいいじゃない。

813 :デフォルトの名無しさん:2010/04/01(木) 18:07:35
おほ〜〜いけた
ありがとう

814 :デフォルトの名無しさん:2010/04/01(木) 19:34:31
webclientのイベントハンドラをbuttonのイベントハンドラと同じように一覧から選んで記述ということはできないのでしょうか?

815 :デフォルトの名無しさん:2010/04/01(木) 19:37:40
わかんね

816 :デフォルトの名無しさん:2010/04/01(木) 20:13:14
foreach(var item in listview.items)

これだとlistviewitemと認識しないぞM$

817 :デフォルトの名無しさん:2010/04/01(木) 20:18:03
という独り言

818 :デフォルトの名無しさん:2010/04/01(木) 21:54:16
XMLにシリアル化の挙動がさっぱりわからん
なんなのこれは?
まったく使い物にならん
シネ

819 :デフォルトの名無しさん:2010/04/01(木) 22:12:44
無能は車輪の何とかでもやってなさいってこったw

820 :デフォルトの名無しさん:2010/04/01(木) 22:20:21
>>814
デザイナーからは設定できないぞ


>>816
varって糞VBじゃねーんだからちゃんと型つけろがボケ
http://ideone.com/jwBy2dbY
.netはいたるところで型が何か分かるようになってるぞボケ

>>818
publicじゃない要素があるとうまく動かん
c# XmlSerializerでぐぐってサンプルみてこい
public classだし中身もpublic付き

821 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/04/01(木) 22:37:29
>>821
糖衣構文だとか昔は〜とか言われてもよくわからんけど
現在はこう表示されるんだからそれでええんとちゃうの?
http://uproda.2ch-library.com/231844RNf/lib231844.png

823 :デフォルトの名無しさん:2010/04/01(木) 22:46:18
>>822
それ今も昔もListViewItemCollectionに普通にインデクサが定義されてるだけ。
ListViewItemCollection.GetEnumeratorがIEnumerator(非ジェネリック)を返すので
foreachを使うと要素がobject型扱いになる。だから>>816はvarの自然な挙動。

824 :デフォルトの名無しさん:2010/04/01(木) 22:48:34
>>822
この場合インデクサは関係ないだろ
関係あんのはEnumeratorの方

825 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/04/01(木) 23:39:48
スレチ

827 :デフォルトの名無しさん:2010/04/02(金) 08:00:37
あ!?

828 :デフォルトの名無しさん:2010/04/02(金) 09:22:02
どうした?
バグか?


829 :デフォルトの名無しさん:2010/04/02(金) 10:33:00
richtextboxで指定した行に文字列を追加したいんだけどどうすればいいのでしょう
delphi見たいにrichtextbox.line[i].text=・・・なんてもんはないんですかね

830 :デフォルトの名無しさん:2010/04/02(金) 11:29:30
あんまRichiTextBox使った事ないけどレスしてみる

改行コードでsplitした配列取得して、指定行の文字列を編集
で、それをStringJoinに改行コード指定してやっちゃうとか


831 :デフォルトの名無しさん:2010/04/02(金) 11:31:04
その手って内部は行単位のstring管理じゃなかったっけ?
ちと確認してみる

832 :デフォルトの名無しさん:2010/04/02(金) 11:32:10
richTextBox1.Lines.Length

Lengthってことは配列?

833 :デフォルトの名無しさん:2010/04/02(金) 11:32:20
Linesプロパティはあるだろ。

834 :デフォルトの名無しさん:2010/04/02(金) 11:44:31
あれ・・・行指定して書き換えてもかわらねえな・・・

http://ideone.com/ojQnOhFF

835 :デフォルトの名無しさん:2010/04/02(金) 11:48:50
読み取り専用だから。

836 :デフォルトの名無しさん:2010/04/02(金) 11:49:49
>>835
それは挙動で想像付くが、読み取り専用って書いてる段階か
実行時にエラーになるよな?

これはそれすらないぞw

837 :デフォルトの名無しさん:2010/04/02(金) 11:53:35
ヘルプ嫁よ

838 :デフォルトの名無しさん:2010/04/02(金) 11:54:22
コピーして返してるからだろ

839 :デフォルトの名無しさん:2010/04/02(金) 12:19:36
デザイナでLabelとか貼り付けたら
デフォルトのフォントの大きさが9なんだけど、ちょっと小さいから
デフォルトのフォントを大きさを変えたいんだけどどうやったらいい?
あとタイマーが一番最初にEnableがfalseになってるのとか変えたい

840 :デフォルトの名無しさん:2010/04/02(金) 12:21:34
無理

841 :デフォルトの名無しさん:2010/04/02(金) 12:24:02
Labelとかのフォントサイズは、フォームのやつを引き継ぐから、
フォームのフォントサイズを変更しておけばOK。

842 :デフォルトの名無しさん:2010/04/02(金) 12:56:03
>>839
諦めろ
つうか、タイマなんぞ切り替えるのは普通Pgからやんないか?
LoadとかShownでTrueにして
ClosingとかでStop→タイマの内部処理終了待ちして


843 :829:2010/04/02(金) 12:59:41
うーんなんていうか、
-----
あいう
あいうえお
あい
-----
ていうrichtextboxがあるとする。
これの2行目の文章(あいうえお)を変数に代入するにはどうすればいいのかわからないんです。
delphiならa:=Memo1.Line[1];(たしかこんな感じ)て感じで取得できたのですが・・・

844 :デフォルトの名無しさん:2010/04/02(金) 13:05:20
あきらめろよ。

845 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/04/02(金) 13:09:25
>>843
>>834見て無いのかよ

847 :デフォルトの名無しさん:2010/04/02(金) 13:09:37
つーか、Linesプロパティって出てんじゃん。

848 :デフォルトの名無しさん:2010/04/02(金) 13:11:32
読み取りだけじゃなく行単位で書き換えもありそうなんでできるかどうかを試してたのに
読み取りすら理解してないのかよ・・・

849 :デフォルトの名無しさん:2010/04/02(金) 13:14:37
総攻撃ワロスw

850 :デフォルトの名無しさん:2010/04/02(金) 13:17:11
>>846
すいません見落としてました
これです!ありがとうございます

851 :デフォルトの名無しさん:2010/04/02(金) 13:29:39
しかしこれ内部管理が配列なのが勿体無いな
List<>でもやってくれりゃあ部分編集もしやすかったのに

852 :デフォルトの名無しさん:2010/04/02(金) 13:42:56
中の文書フォーマットがどうなってるか知らんけど
部分的に書き換えられると整合性で困るとかそんな話の予感
TextBoxならできるんだしね…

853 :デフォルトの名無しさん:2010/04/02(金) 14:44:48
管理も何も、Linesのgetterは持ってるTextをCRLF/LF/CRで分割してるだけだぞ
setterなんかCRLF挟んで連結したものをTextに設定しているだけだし

それにしても、プロパティの型が配列だったり、プロパティでコピーを返したり、
プロパティの中に必要以上の処理を入れていたりと無茶苦茶だなw

854 :デフォルトの名無しさん:2010/04/02(金) 16:20:07
コントロールは例外だ
デザイナやバインディングなどの都合

855 :デフォルトの名無しさん:2010/04/03(土) 14:39:53
var x=0.0としたとき、xの型はfloatですか?doubleですか?
組み込み型には使うなと教えられたんですがこれだけは気になったのでお願いします。

856 :デフォルトの名無しさん:2010/04/03(土) 14:43:58
やってみればいいじゃん。

857 :デフォルトの名無しさん:2010/04/03(土) 14:44:33
>>855
ttp://tsushima.2ch.at/s/news2ch56039.png

ちなみに気になる型とか返り値の型とか知りたければ
標準の物なら大体こうやって確認できるよ

858 :デフォルトの名無しさん:2010/04/03(土) 14:45:27
しもうた
カーソル消えてるけど
x.ToString();
のxの上でカーソル止めてるから

859 :855:2010/04/03(土) 14:48:37
>>856-858
なるほど、勉強になりました。
どうもありがとうございました。

860 :デフォルトの名無しさん:2010/04/03(土) 14:51:32
>>859
というかc#で小数点をそのまま書くとdouble,
0.0Fという感じでFをつけるとfloat

861 :デフォルトの名無しさん:2010/04/03(土) 14:53:24
>>855
860の助言を参考にして、ついでにリテラルとその型の概念も把握しておこう。


862 :デフォルトの名無しさん:2010/04/03(土) 14:55:24
便乗で悪いんだけど、質問させてくれ
floatの方がdoubleよりも速度が遅くなると聞いたんだけど理由がさっぱりわからん
doubleの方が扱う桁数が大きいんだから遅くなるんじゃないのか?

863 :デフォルトの名無しさん:2010/04/03(土) 14:57:43
>>862
ならない。最近のCPUじゃ割り算以外の処理はどちらも1クロックで終わってしまい、
速度上の差は見られない事の方が多い。

864 :デフォルトの名無しさん:2010/04/03(土) 14:59:56
>>862
それはCPUによるよ

865 :デフォルトの名無しさん:2010/04/03(土) 16:58:41
Microsoft Parallel Extensions to .NET Framework 3.5ってもうDLできませんか?
もし直リンなどあれば教えてください

866 :デフォルトの名無しさん:2010/04/03(土) 17:04:52
>>865
それは『Parallel Extensions to .NET Framework June 2008 CTP』のことだろう?
Parallel Extensionsが.NET 4.0の機能になったことはMSの公式決定なんだから今更どうにもならんだろう。

ここには「Reactive Extensions を見よ」なんて書いてあるが。
http://blogs.msdn.com/pfxteam/archive/2008/06/02/8567802.aspx

仮にそんなコンパチライブラリがあったとしても、余計な混乱を招く結果にしかならないだろうよ。

867 :デフォルトの名無しさん:2010/04/03(土) 18:13:26
ある程度作ってたプロジェクトの中から部分的に切り離してクラスライブラリを作る場合って
スマートにやる方法ないかな?

868 :デフォルトの名無しさん:2010/04/03(土) 18:16:15
>>867
名前空間の単位で整理して、
名前空間の単位でクラスモジュール化する。

869 :デフォルトの名無しさん:2010/04/03(土) 18:23:17
そういうのじゃなくて、クラスライブラリ用プロジェクト作った際のソースの移動とかね・・

870 :デフォルトの名無しさん:2010/04/03(土) 18:28:49
>>869
基本的に自己完結するようにクラスライブラリを書いていれば、
単にプロジェクトを分けて本体側で参照設定するだけで
そのまま動くようになってるんだから、
スマートにやる方法もないだろ。

上手くいかないなら設計が悪いだけ。

871 :デフォルトの名無しさん:2010/04/03(土) 18:31:28
変数のインスタンスから、その変数の変数名を取得する方法はある?

int a;
string b = a.(メソッド);

みたいにやると、b に "a" って入るみたいな。
無理だと思うけど、C# だとちょっと期待してしまう。w

872 :デフォルトの名無しさん:2010/04/03(土) 18:41:00
>>871
変数の名前というのはプログラミングの都合上便宜的に与えるものに過ぎず、
実行時にはなくなってしまうものだ。

一方、デバッガで止めると表示してくれるが、あれはpdbファイルにその情報が記述されている。

873 :デフォルトの名無しさん:2010/04/03(土) 18:42:43
intとかは無理じゃね?
クラスになるとNameがあるけどあれもつけなくても内部管理的には問題ないから
おそらくハンドルみたいなので管理されてるんだと思うしなあ

intだとそのハンドルに相当するものくらいしかないんじゃね?

874 :デフォルトの名無しさん:2010/04/03(土) 18:52:45
いや・・・もっとそのプログラム的な話じゃなくて・・・・

プロジェクト作ってフォルダ作って元のソースを移動して
既存の項目としてプロジェクトに入れて・・・という
やり方しかないのかなあって話


あとクラスライブラリとして分離した場合デバック用とリリース用
を別途分けてリンクさせるような設定はないんだろうか?

C++だと普通にあったんだがC#の場合それっぽい項目が見当たらない

875 :デフォルトの名無しさん:2010/04/03(土) 19:57:02
>>874
>プロジェクト作ってフォルダ作って
それのどこに問題が?
むしろ異なるアセンブリのソースコードはフォルダ分けしておかないと不便だぞ。

>あとクラスライブラリ
同じソリューションでクラスライブラリとメインプログラムを管理しておけば、
ビルドモードの切替で勝手にクラスライブラリの切り替えもやってくれる。

876 :デフォルトの名無しさん:2010/04/03(土) 20:00:45
>>874
それ以上のどんなバカチョン機能があれば満足するんだろう。
まあ、ファイルの移動はプロジェクトエクスプローラで
ドラッグ&ドロップしてもできるよ。

あと、ソリューション内のプロジェクトの構成(Release/Debug)の連動は
構成マネージャで設定する。

877 :デフォルトの名無しさん:2010/04/03(土) 20:04:24
>>875
ああ、すまんEEで開発してたのでソリューションの下で複数プロジェクト作れるとは思ってなかった

878 :デフォルトの名無しさん:2010/04/03(土) 20:06:10
>>876
>>877でも書いたけど俺が想像してたのは

ソリューションA プロジェクトA

とあって
プロジェクトAの一部を

ソリューションB クラスライブラリB
として切り出すしかないと思ってたんだ
すまんすまん

879 :デフォルトの名無しさん:2010/04/03(土) 20:11:25
複数プロジェクト入れられないソリューションがこの先生きのこるには

880 :871:2010/04/03(土) 20:40:35
thx
やっぱり無理なんだね。

881 :デフォルトの名無しさん:2010/04/03(土) 22:00:04
>>863
処理が一律1クロックなのは一部の大型機の話
パソコン用のCPUはそこまで単純じゃないし速くもない

キャッシュがヒットしたという前提で
intの足し算、引き算は0.33クロック、掛け算は0.5クロック、割り算は23クロックかかる
IEEE754形式の浮動小数点だと単精度でも倍精度でも時間は変わらなくて
加減算で1クロック、掛け算が2クロック、割り算が32クロック

882 :デフォルトの名無しさん:2010/04/03(土) 23:55:24
>>880
http://blogs.msdn.com/jmstall/pages/sample-pdb2xml.aspx
pdb2xmlのソースコードから学べるものがあると思うけど。
デバッガ作るわけでもなければそんな必要ない気がする。

883 :デフォルトの名無しさん:2010/04/03(土) 23:55:44
【FPU】 浮動小数点 【SSE】
http://pc12.2ch.net/test/read.cgi/tech/1199424344/
float 使うヤツはドシロートかおぢさん
http://pc12.2ch.net/test/read.cgi/tech/1222048909/

884 :デフォルトの名無しさん:2010/04/04(日) 06:01:22
>>881
結局のところ大容量キャッシュと高クロック化でごまかしてるだけで
x86の本質はそれほど変わってないのか

885 :デフォルトの名無しさん:2010/04/04(日) 06:56:58
floatはベクトル演算器を使う場合にはそっちの方が早い。

886 :デフォルトの名無しさん:2010/04/04(日) 10:11:33
ちと質問させてください。
VS2003.NETのC#を使用してプログラムしています。

参照の追加でdllを読み込み、プロパティでローカルコピーをTrueにして、コンパイル。
この時に、EXEと同じフォルダにdllがコピーされるのですが、
コピーされる場所を変更できるのでしょうか?

EXEと同じフォルダ内に、DLLというフォルダを作成し、
コンパイル時にDLLフォルダにdllがコピーされてほしいのです。

よろしくお願いします。

887 :デフォルトの名無しさん:2010/04/04(日) 10:16:49
ビルドイベントで移動するとか

888 :デフォルトの名無しさん:2010/04/04(日) 10:21:08
>>886
アプリケーション設定ファイルでアセンブリの読み込みフォルダを指定することができる。
ただし実行プログラムのサブフォルダのみ。

これはユーザーに配布するときの話で、
開発中はそういったことをやると却って話が面倒になるので
exeとdllを開発中にフォルダ分けしてしまうようなことは考え内容がいいと思うよ。

889 :デフォルトの名無しさん:2010/04/04(日) 10:25:36
>考え内容がいいと思うよ。
考えないほうがいいと思うよ。

失礼。

890 :デフォルトの名無しさん:2010/04/04(日) 11:30:53
>>884
クロックを上げるのは、主にコスト面の問題で限界に来てしまったので
今はパイプラインの段数とコア数の増加とバス幅の拡張でごまかす方向になってきてる。
だから1命令が1/2クロックとか1/3クロックなんていう中途半端な時間で処理できてしまう。

あとは実行環境の64bit化でlong/ulongの計算が一気に速くなったぐらい。

891 :デフォルトの名無しさん:2010/04/04(日) 11:33:14
パイプライン段数はここ数年逆に減少したとか言ってたような

892 :デフォルトの名無しさん:2010/04/04(日) 11:33:46
いい加減スレ違い。

893 :デフォルトの名無しさん:2010/04/04(日) 11:36:56
クラスライブラリで公開するクラスってpublicじゃないとだめなんだっけ?

894 :デフォルトの名無しさん:2010/04/04(日) 11:39:17
           ,,,_  _ァュ,,..__
        ィチュ::ミミ:.:三彡:.:: :.:.:ヽ
        /::彡'':.: :.::/:.:{{.::r‐‐ ::_:.: :.:..、
      ,ィ /:.: /:..: ::{{:..川||::!     ヾ::;;:、
     ,ィ:.: ::.: /:. :: 川:.:ヾ:.:.!{::      ヽ::!
   ///:.: :.:.:||ll: :.: .::.:.:ヾ::.::.i       ':!
   !:|:.:::ミ:: :.;;;川:.: :.:巛、ヾ::! 、       l
   ゙::ミミ h::. :;:.::||l|:.:: :.}}::!l {{ ヾ  _,,...ィ r'' 、
     ゙::ミミ:.: ::.;:.:ミミヾ:.: :.:| ヾ、  '´  ,  マ
     ヾ:: .:.:ミミ三 :.:州リリ    _,,..rテ'  ヽ
      ヾ::;ィ'´ ̄`''ヾ州!         ,.  ヽ
        ゙レ '⌒r ィ ,;;. ..        .:' ,rィ ’
         ヽ し  :.: ..         、  ヽ
       ,,ハ`ー- ..ィ            _,.. ィ
      ィ:::! \   ヽ.          ィ{:::...
       /:::::!   \    ` - ..__       丿::::::ヽ
    /:::::::ヘ    \      ` ーァ-一'::::.:::.:::.::.!ヽ
   /:::::.:..:::::::::ヽ    \      リ::. :::.:.:.:.:::.:.:.:.::::!:::.::!

      轌山相太郎 [そりやまそうだろう]
     (群馬.明治一九年〜昭和一七年)

895 :デフォルトの名無しさん:2010/04/04(日) 11:50:18
>>894
さんきゅー

896 :デフォルトの名無しさん:2010/04/04(日) 13:37:36
ifで済むようなところでも例外を使ったほうがいいんでしょうか?

897 :デフォルトの名無しさん:2010/04/04(日) 13:38:44
ifで済むならifで済まして下さい

898 :デフォルトの名無しさん:2010/04/04(日) 13:39:47
状況にもよるんじゃね?
継続可能なところのエラー程度ならifで判断してもいいだろうけど
継続しても仕方ないようなところは例外でいくとか

899 :デフォルトの名無しさん:2010/04/04(日) 13:58:19
>>896
コールスタックの呼び出し階層から一気に抜け出したい場合は面倒だから
エラーを返さず例外処理で実装してしまう場合もあるよ。

他に、既に例外処理を書いていて、普通にエラーを返すより
エラー自体を例外処理にしてしまった方が楽に実装できる場合か。

そういったことでないなら、通常のエラーを返す実装にしておいた方がいい。

900 :デフォルトの名無しさん:2010/04/04(日) 14:03:03
例外やエラーに関してもパターンが必要だと思う今日この頃。

俺はpublicメソッドでもなけりゃ自分で投げることは少ないなあ。
引数なんかは渡す前に確認するし。

901 :デフォルトの名無しさん:2010/04/04(日) 14:05:51
ただprivateメソッドの中でエラーチェックしてないってことはないよ。
Assert入れてるから。

902 :デフォルトの名無しさん:2010/04/04(日) 14:19:34
そうですかよかったね

903 :デフォルトの名無しさん:2010/04/05(月) 11:58:36
しかしこの例外ネタは1スレに2回ぐらいは出るな

904 :デフォルトの名無しさん:2010/04/05(月) 12:01:05
明確な回答を返しづらいからじゃねーの
ほとんどマイルールだもの

905 :デフォルトの名無しさん:2010/04/05(月) 12:03:31
確かにお決まりパターンてないよな
ソフトの作りで例外でさくっと処理しちゃう場合もあるし
エラーコードとる場合もあるし

みなさんどうしてますかっていうよりこういうコードなんですがって
晒せる範囲でコードを見せてくれるといいんだけどな

質問の仕方の問題もあるな

906 :デフォルトの名無しさん:2010/04/05(月) 12:33:12
ライブラリとして自分以外に提供するのか
自分で使い切るのかでも変わってくるし

907 :デフォルトの名無しさん:2010/04/05(月) 12:57:19
こういう時に自称プロが出てきて語ってくれればいいのに。
要らん事にばっか口出すからなー。

908 :デフォルトの名無しさん:2010/04/05(月) 13:04:44
仕事で3日だけC#のアプリを初めて作った自称プロの俺に言わせれば、
そのときの気分、テキトー

909 :デフォルトの名無しさん:2010/04/05(月) 13:06:10
そういえば2chのほかに専門系の質問できるような場所ってあります?
なんか人減ってるしすぐ規制するしでw

910 :デフォルトの名無しさん:2010/04/05(月) 13:09:17
ttp://stackoverflow.com/


911 :デフォルトの名無しさん:2010/04/05(月) 13:09:42
今回のもかなり大規模っぽいねぇ
相談室の方も3日くらい放置状態だわ

912 :デフォルトの名無しさん:2010/04/05(月) 13:10:33
ブラクラかと思うような名前だ>stackoverflow.com

913 :デフォルトの名無しさん:2010/04/05(月) 13:33:21
>>909
日本語でもいくらかある
自分でぐぐってると、そんな質問はありえないと思うんだけど

914 :デフォルトの名無しさん:2010/04/05(月) 13:33:25
まっとうなサイトだし有用な情報もごろごろしてるけど、
如何せん名前のイメージが良くない…というか悪いんだよな

915 :デフォルトの名無しさん:2010/04/05(月) 15:03:50
>>910
ありがとう

>>913
いやあるにはあるんだが、なんていうかオンラインゲームの古参がいっぱい居るギルドに
入るようなちょっとやりにくさがあるんだよな・・・

その点2chは気軽っていうか

916 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/04/05(月) 15:07:36
おっと質問忘れるところだった

fileIo関連でwindowsの改行 0x0d0x0aを0x0aにするにはどこいじってましたっけ?

919 :デフォルトの名無しさん:2010/04/05(月) 15:21:29
>>918
TextWriter.NewLine

920 :デフォルトの名無しさん:2010/04/05(月) 15:24:02
>>919
TextWriter.NewLine = "\n";
こんな感じでしたよね?

ありがとうございます。

921 :デフォルトの名無しさん:2010/04/05(月) 15:59:43
>>887-889
早速の回答ありがとうございました。
結構な手順を踏む必要があり、大変そうですね。

> exeとdllを開発中にフォルダ分けしてしまうようなことは考え内容がいいと思うよ。
なるほど、分かりました。
一通りの開発が完了し、配布する際に読み込み先を指定する事にします。

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

922 :デフォルトの名無しさん:2010/04/05(月) 21:09:42
DataGridView で、教えてください。

スクロールバーの表示設定を行う ScrollBars だったかがあったと思うのですが、
これで垂直スクロールバーを消すとマウスのスクロールボタン?による
スクロールを行えなくなります。

垂直スクロールバーを消していてもスクロールボタンによるスクロールを行えるようにすることは出来ませんか?

923 :デフォルトの名無しさん:2010/04/05(月) 21:11:45
ホイール?

924 :922:2010/04/05(月) 21:20:12
あ、そう。それです。

925 :デフォルトの名無しさん:2010/04/05(月) 21:43:34
便乗質問。
DataGridViewでセルをコピーペーストでデータを移せるようにするにはどうしたらいいの?
できれば縦方向に複数のセルを同時に選択した状態で
コピペできるようになるといいんだけど。

926 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/04/06(火) 11:13:15
Visibility

929 :デフォルトの名無しさん: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#。
できました。マウスで出ますね。
ありがとうございました。


931 :デフォルトの名無しさん:2010/04/06(火) 13:47:13
ふたつのFormについて質問です。
Form1にボタンをふたつ、Form2にブラウザを配置します。

public partial class Form1 : Form
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.Show();
form2.web("http://2ch.net");
}

private void button2_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.Show();
form2.web("http://asahi.com");
}

public partial class Form2 : Form
public void web(string URL)
{
webBrowser1.Navigate(URL);
}

は動くのですが、


932 :デフォルトの名無しさん:2010/04/06(火) 13:50:32
public partial class Form1 : Form
Form2 form2 = new Form2();
private void button1_Click(object sender, EventArgs e)
{
form2.Show();
form2.web("http://2ch.net");
}

private void button2_Click(object sender, EventArgs e)
{
form2.Show();
form2.web("http://asahi.com");
}
とすると、ボタン1を押してForm2を閉じて、ボタン2を押したときに、「ObjectDisposedExceptionはハンドルされませんでした。オブジェクト名Form2です」。
とエラーになります。
これを回避するのには、上のように書くしかないんですか?


933 :デフォルトの名無しさん:2010/04/06(火) 13:53:58
まぁそうですね
他の手段としては閉じるのをやめて表示を不可視にするとか考えられますが
閉じるのやめるならFormClosing拾って下さい

934 :デフォルトの名無しさん:2010/04/06(火) 14:00:39
どういう動きにしたいのかで対策が変わりますけど
>>931だとForm2が複数作れますけどそれでいいのかな?

Form2は一つしか必要ないなら>>932のようにして
>>933のいうようにForm2のFormClosingイベントで
イベントをキャンセルしてForm2をVisible(もしくはHide)
にしないとだめかなあ

935 :916:2010/04/06(火) 14:05:48
>>916 をどなたかお願いします。

936 :デフォルトの名無しさん:2010/04/06(火) 14:10:23
>>935
コードを晒せるなら晒した方が回答は得やすいよ
プログラマはコードで会話するともいえるし

日本語の説明だと厳しい

937 :デフォルトの名無しさん:2010/04/06(火) 14:13:13
コード量が多い場合はここをどうぞ
http://ideone.com/

938 :916:2010/04/06(火) 14:36:59
>>936-937
ありがとうございます。
以下がそのコードです。
テストしたコードも一緒に載せてあります。
http://ideone.com/OHLQ4

939 :デフォルトの名無しさん:2010/04/06(火) 14:59:16
全選択ってあれかマウスで選択して反転してる状態のことか
ttp://tsushima.2ch.at/s/news2ch56520.png

オーバーライドしなくても一応それっぽい動作はできるな
ただし要求を完全に満たすにはイベントをいくつか試さないとだめだろうけど

Form1.cs
http://ideone.com/VHMBz
numericUpDown1を貼り付けてイベントを追加

Enterだけだと一回目だけで後はクリックしまくらないと駄目なので
MouseDownつけたけどさ・・・

940 :916:2010/04/06(火) 15:15:11
>>939
OnEnter と OnMouseUp で Select することで、目的の機能を作成できました。
ありがとうございました。

941 :デフォルトの名無しさん:2010/04/06(火) 15:40:53
>>933
なるほど。
>>934
なるほど。おっしゃるとおり、Form2をふたつは作りたくないのです。
なるほどFormClosingでキャンセルすればよかったんですね!
Visible or Hideか。
やってみます。
ありがとうございました。


942 :デフォルトの名無しさん:2010/04/06(火) 15:47:49
以下のようなことをしたいのですが、 BitConverter.GetBytes() でエラーが出てしまいます。
同様のメソッドを複数用意する以外に方法はありませんか?

public void Write<T>( T[] data )
{
foreach( T t in data )
{
Byte[] dat = BitConverter.GetBytes( t );
// ビッグエンディアン == 反対
if( ENDIAN.BIG == Endian ) Array.Reverse( dat );
(以下略)

943 :デフォルトの名無しさん:2010/04/06(火) 15:50:46
まったく試さずにいうけどTの型制限すればいいんじゃねえの

944 :デフォルトの名無しさん:2010/04/06(火) 15:52:14
Tの型は?
エラーコードはなんてでてるの?

呼び出し元のコードはどんなの?

945 :デフォルトの名無しさん:2010/04/06(火) 15:55:51
呼び出すってかコンパイルできないよ
BitConverter.GetBytesがどのオーバーロード呼び出せばいいか決定できないから

946 :デフォルトの名無しさん:2010/04/06(火) 15:59:03
ビックエンディアンをいじるっていっても
2byte、4byte、8byteくらいか?
そんなに悩むことかな

947 :デフォルトの名無しさん:2010/04/06(火) 16:00:24
型制約については以下お読み下さい
http://msdn.microsoft.com/ja-jp/library/d5x73970.aspx
http://ufcpp.net/study/csharp/sp2_generics.html#method

948 :デフォルトの名無しさん:2010/04/06(火) 16:55:10
制約付けても無理
ポインタ使うしかないな

949 :デフォルトの名無しさん:2010/04/06(火) 17:06:27
Tの種別で判断するしかないんじゃね?

950 :デフォルトの名無しさん:2010/04/06(火) 17:09:41
はぁ・・・・・みんな何も考えず自動プロパティ使ってる?

951 :デフォルトの名無しさん:2010/04/06(火) 17:14:55
これで型わかるじゃん
http://ideone.com/Ep0gn

952 :デフォルトの名無しさん:2010/04/06(火) 17:16:16
つーかマジで質問したやつはエラーコードとかTがなんなのかとか
複数型を取るとか情報だせ

953 :942:2010/04/06(火) 17:21:47
>>943-947
型制約というものを初めて知りました。
調べてはみたのですが、書き方がよくわからず、以下の書式で書いてみたところエラーになってしまいました。
どういう書式で書けばいいのでしょうか?
public void Write<T>( T[] data ) where T : Byte, Boolean, Char, Double, Int16, Int32, Int64, Single, UInt16, UInt32, UInt64

>>948
やはりポインタですか・・・。

>>949
種別で判断とはどういうことをすればいいのでしょうか?

954 :942:2010/04/06(火) 17:27:31
>>951
GetType() で switch する感じでしょうか?

>>952
複数型というのは何でしょうか?
エラーコードは以下のものです。
> エラー CS1502: 'System.BitConverter.GetBytes(bool)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。
> エラー CS1503: 引数 '1': 'T' から 'bool' に変換できません。

955 :デフォルトの名無しさん:2010/04/06(火) 17:30:57
>>954
Tをこれでみたいんでしょ?
Byte, Boolean, Char, Double, Int16, Int32, Int64, Single, UInt16, UInt32, UInt64

956 :デフォルトの名無しさん:2010/04/06(火) 17:33:32
こうやると
http://ideone.com/pOHdD
こんな結果になった
ttp://tsushima.2ch.at/s/news2ch56535.png
objectにして渡して中で型判断するってのはどうなんだろ?

957 :942:2010/04/06(火) 17:50:45
>>955
> これでみたい
とはどういう意味なのでしょうか?
それらの型以外の動作は保障しなくても問題ありません。

>>956
以下のコードで思い通りの動作になりました。
ありがとうございました。

Object obj = (Object)t;
Byte[] dat;
switch( obj.GetType().Name )
{
default: throw new Exception( "エラー" );
case "Byte": dat = new Byte[]{ (Byte)obj }; break;
(略)
case "UInt64": dat = BitConverter.GetBytes( (UInt64)obj ); break;
}

958 :デフォルトの名無しさん:2010/04/06(火) 17:57:30
それならwhere T : IConvertibleで
switch (t.GetTypeCode())が最善だと思う

959 :942:2010/04/06(火) 18:09:46
>>958
文字列以外にも方法があったのですね。
ありがとうございました。

960 :デフォルトの名無しさん:2010/04/06(火) 18:10:17
        public void Write<T>(T[] data) where T : IConvertible
        {
            foreach (T t in data)
            {
                Byte[] dat;
                switch (t.GetTypeCode().ToString())
                {
                    default: throw new Exception("エラー");
                    case "Byte": dat = new Byte[] { t.ToByte(null) }; break;
                    case "UInt64": dat = BitConverter.GetBytes(t.ToUInt64(null)); break;
                }
            }
        }
こんな感じか

961 :デフォルトの名無しさん:2010/04/06(火) 18:12:11
        public void Write<T>(T[] data) where T : IConvertible
        {
            foreach (T t in data)
            {
                Byte[] dat;
                switch (t.GetTypeCode())
                {
                    default: throw new Exception("エラー");
                    case TypeCode.Byte:
                        dat = new Byte[] { t.ToByte(null) }; break;
                    case TypeCode.UInt64:
                        dat = BitConverter.GetBytes(t.ToUInt64(null)); break;
                }
            }
        }
ああ、こういうのもOKなのか

962 :デフォルトの名無しさん:2010/04/06(火) 18:17:01
えっ

963 :デフォルトの名無しさん:2010/04/06(火) 18:20:20
だからコードはここに書くなと…

964 :デフォルトの名無しさん:2010/04/06(火) 18:25:05
>>953のケースでジェネリック使うのはおかしくね?

public void Write(byte[] data) {}
public void Write(bool[] data) {}
(略)
public void Write(ulong[] data) {}

みたいに書き出すべきだと思うんだが。


965 :デフォルトの名無しさん:2010/04/06(火) 18:28:27
>>964
それが面倒だから・・・ってことでこうなったw

966 :デフォルトの名無しさん:2010/04/06(火) 20:19:47
C#でFSMやるときに、プロパティの値を
「自分自身と継承先とステートマシンクラス」だけ読み書き可能で、それ以外には
リードオンリってやりたいんだが、どう組んでも恐ろしく複雑になってしまうんだが、
なるべくシンプルに実装する場合どうすればいいんだろう
外からいじられるリスク前提で全部publicにしてしまう他ないのかな

967 :デフォルトの名無しさん:2010/04/06(火) 20:40:27
>>966
protected internalは使いたくない状況なんだろうか

968 :デフォルトの名無しさん:2010/04/06(火) 20:43:18
あー念のため補足しとくけど、2003以降はプロパティのセッタとゲッタで
別々のアクセス修飾子が付けられるようになってるのは知ってるんだよね?

969 :デフォルトの名無しさん:2010/04/06(火) 23:30:26
計測アプリ作りたくて、先ずはその中のRS-232C通信設定ダイヤログを作りたいと検討中
設定値をドコに持たせたらいいとか、呼び出すお作法の書いてあるwebはお勧めありますでしょうか?

参考図書だと、コントロールをフォームにぶち込んで、すぐその場でプロパティに直書き。とか
ComSerialPort.PortName="COM1"
ComSerialPort.BaudRate=9600
とフォーム.loadにベタ書きみたいなものにしか見かけないんです。
脱初心者となりたく、村の書店で立ち読みしてみたけど、多くはフォーム1枚板で完結した内容で
なかなか前に進まずに居ます。

970 :デフォルトの名無しさん:2010/04/06(火) 23:36:20
MSのサイトにプロパティの値を永続化しましょう、みたいのあるだろ。

971 :デフォルトの名無しさん:2010/04/07(水) 00:00:19
圧縮ツール作っているんだけど
コマンドラインからの起動なら大丈夫なんだけど
エクスプローラからドラッグアンドドロップでファイル渡して圧縮すると
そのエクスプローラが作業完了するまでフリーズしちゃうんだけど
どうすればいいかな?

972 :デフォルトの名無しさん:2010/04/07(水) 00:03:09
DragDropがさっさと制御を返せばいいだけ

973 :デフォルトの名無しさん:2010/04/07(水) 00:03:44
ドラッグ&ドロップってのは、アプリが起動してない状態で、
アイコンに対して?

974 :デフォルトの名無しさん:2010/04/07(水) 00:10:29
http://ideone.com/Iu4Rn
今話題(?)のジェネリック対応版のBitConveterExを作ってみた。
型パラメータは可能な限り制限しているけど最終的には実行時検証。

作っておいてなんだが、ジェネリッククラス/メソッドから呼び出すのでなければ、
>>964の言うようにオーバーロードするのが正解。
特にオーバーロードを書くのが面倒なんて阿呆な理由は論外。

975 :971:2010/04/07(水) 00:16:49
ファイルの自アプリのフォームにドロップして
それを圧縮するという感じです

>>972
多分そういうことなのかなと思うんですが
制御を返す方法がよくわかりません

DragDropイベントリから圧縮するmethodを呼び出しているので
圧縮が完了してやっとDragDropのイベントが抜ける感じになってます
どうすればうまく書けるんでしょうか?

976 :デフォルトの名無しさん:2010/04/07(水) 00:17:46
Thread.Startすれよ

977 :デフォルトの名無しさん:2010/04/07(水) 00:23:59
>>975
http://www.atmarkit.co.jp/fdotnet/dotnettips/676dragdrop/dragdrop.html
ここの最後のところとか

978 :デフォルトの名無しさん:2010/04/07(水) 00:26:15
VBの頃はタイマーで、とかやってたけど、
今の時代は普通にワーカースレッドを起こして、メインスレッド(イベント)は
終了、でいいわな。

979 :デフォルトの名無しさん:2010/04/07(水) 00:28:07
>>970初心者にそのひとことで済むなら苦労しないわな。

980 :デフォルトの名無しさん:2010/04/07(水) 00:31:33
>>979
質問したやつが苦労すべきだろ。

981 :971:2010/04/07(水) 00:37:52
>>976
>>977
マルチスレッドですか、難しそうですががんばってみます
ありがとうございました

982 :デフォルトの名無しさん:2010/04/07(水) 01:08:44
ツールはすべて.Net製で揃えたいです
みんながんばってください

983 :デフォルトの名無しさん:2010/04/07(水) 01:17:50
がんばってるやつにがんばれと言っても既にがんばってるんだから、ほどほどにね。
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
君はもう充分がんばったさ。もう寝ていいんだぜ、逃げてもいいんだぜ?
なんてやさしいおれ。

984 :デフォルトの名無しさん:2010/04/07(水) 07:07:22
いつから丸投げのやつらをがんばってると称するようになったのか

985 :966:2010/04/07(水) 12:31:53
>>967
同一の名前空間前提なら最悪それでもいいかもしれないが……。
できればPerlのような紳士協定的な制約はかけたくないなぁ、と。

>>968
public int hoge{ get; private set; } みたいなのだよね?

986 :デフォルトの名無しさん:2010/04/07(水) 13:21:11
internalは名前空間とは無関係に同じアセンブリ内ならアクセス可
誰が使うか分からないクラスライブラリ作ってるならそれで十分
内部では基本的に契約が通じるはずなので紳士協定で問題ない
コンパイル時に解決できない内部のお約束なんか他にもいくらでもあるだろ

987 :デフォルトの名無しさん:2010/04/07(水) 18:52:05
JPEG画像をWPFで縮小して表示するアプリケーションを作っています。
このWPFのローカルアプリケーションをWebでサービスする場合について教えてください。
大前提として、WPFからWeb用のアプリケーションに書き換える作業があることはなんとなく理解しています。

疑問点は、次のようなものです。
・サーバーはLinuxでよいのでしょうか?
・クライアントはIEとかのブラウザだけでよいのでしょうか?
・そのWPFのアプリケーションは.NET Framework3.5が必要なのですが、Webサービスの場合、.NET Framework3.5はどこに用意すればいいんでしょうか? サーバー側ですか?
・各種設定がある場合、(たとえばいつも読むフォルダ名を覚えておくとか)、その設定はサーバー側に保存するのですか? それともクライアントに?

というかなり大まかな質問で恐縮です。
ざっくりどんな感じなのか、教えていただけると助かります。


988 :デフォルトの名無しさん:2010/04/07(水) 19:04:54
webサーバーはwindowsでもできるでしょ
windows系のサーバーを提供してるところもあったはず
ちょっと高いけど

989 :デフォルトの名無しさん:2010/04/07(水) 21:15:47
Linuxじゃ無理。
IIS上でASP.NETを動かす形になる。
当然、サーバー上に.NET Frameworkが必要。
各種設定は、サーバー側に保存。

990 :デフォルトの名無しさん:2010/04/07(水) 22:06:35
あれ?monoって.net3.5は未対応だっけか?

991 :デフォルトの名無しさん:2010/04/07(水) 22:12:23
MonoのWPFはまだまだ。

992 :デフォルトの名無しさん:2010/04/07(水) 22:13:46
なるほど。Windowsサーバーにしてサーバー側に.NET Frameworkなんですね。
なんとなく輪郭がつかめました。
ありがとうございました

993 :デフォルトの名無しさん:2010/04/07(水) 22:28:57
開発用Webサーバーもあるし、IISもあるんだから、
まずはその辺で雰囲気をつかむといいんじゃね?

994 :デフォルトの名無しさん:2010/04/07(水) 23:34:12
先ほどの件です。
C#でWebサーバーを作るのには、ASP.NET MVCフレームワークを使って、@ITの
http://www.atmarkit.co.jp/fdotnet/aspnetmvc/aspnetmvc01/aspnetmvc01_01.html
あたりの順番で進めればオーケーでしょうか?

995 :デフォルトの名無しさん:2010/04/07(水) 23:38:14
ASP.NETには、大きく分けてWebフォームとMVCがある。
MVCは最近できたばっかりで、俺は使ったことがない。
ま、どっちでもいいんじゃね?

ただ、ASP.NET 1.0/1.1/2.0なとこだったりすると、MVCは使えないので、要注意。

996 :デフォルトの名無しさん:2010/04/07(水) 23:59:18
>>995
ASP.NETのWebフォームのほうが動作実績ありってことですね。
ちなみに構成としては、LinuxとWindowsXPを使って、
LinuxのWebサーバーでは、
(1)
<form method="post" EncType=multipart/form-data" ACTION="upload.cgi">
<INPUT TYPE="submit" value="upload" class="button">
</form>
みたいな感じで、ユーザーのファイルのアップロードを受ける。
(2)アップロードされたら、WindowsXPにそのファイルをコピーする。
(3)WindowsXPでは、WPFを使って、ファイルを作り、LinuxのWebサーバーにコピーする。
(4)LinuxのWebサーバーは、そのファイルをhtmlに組み込んで表示する。
(5)クライアントはLinuxのWebサーバーの表示を見てファイルをゲット。
って流れでもオーケーなんでしょうか?


997 :デフォルトの名無しさん:2010/04/08(木) 00:08:50
もっと初心者スレらしい質問おねがいします

998 :デフォルトの名無しさん:2010/04/08(木) 01:27:15
次スレ立ててくる

999 :デフォルトの名無しさん:2010/04/08(木) 01:29:59
ほいよ、次スレ

ふらっとC#,C♯,C#(初心者用) Part58
http://pc12.2ch.net/test/read.cgi/tech/1270657735/

1000 :デフォルトの名無しさん:2010/04/08(木) 02:50:24


1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

220 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)