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


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

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



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

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

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

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


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

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

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

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

codepad.org/

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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


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



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

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

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

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

45 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:23:09 ]
やばい。できた
    public partial class Form1 : Form
    {
        int hoge = 0;
        int i = 0;
        public Form1()
        {
            InitializeComponent();
        }
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            textBox1.Text = hoge.ToString();
        }
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            backgroundWorker1.ReportProgress(i++);
            System.Threading.Thread.Sleep(2000);
            hoge = 2;
            backgroundWorker1.ReportProgress(i++);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            backgroundWorker1.RunWorkerAsync();
        }
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            backgroundWorker1.WorkerReportsProgress = true;
        }
    }

46 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:24:50 ]
>>45
>>2使えよw

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

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

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

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




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

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

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

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

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

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


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

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

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

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

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

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

Radiko
codepad.org/Vvwba6du

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



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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

みたいな。

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



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

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

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

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

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

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

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

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

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

それより仕事をしなさい

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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


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





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

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

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

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


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

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

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

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

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

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



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


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

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

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


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

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

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

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

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

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


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

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

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



131 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 05:56:19 ]
windows formのスレがないのでここで聞いても良いでしょうか。

formでGUIを作っています。
アプリケーション全体からメッセージを表示させるtextboxを追加したいです。
コンソールのプログラムでいう標準出力です。
どうやConcoleクラスがそれに値するようなのですが、これをどうtextboxに表示するのかわからないです。

textBox1.Text = System.Console.Out.ToString();
としても、textboxには「System.IO.TextWriter+SyncTextWriter」と表示されるので違うようです。

何かヒントをください

132 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 06:19:39 ]
やーだお

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

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

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

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

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


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

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


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

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



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


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



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

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

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

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

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

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

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

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

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

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



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

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

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


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

155 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:32:13 ]
並列ライブラリのforを本気で使おうと思ったらやたらと引数が多くなる。
1〜10までを足すだけ。
int sum = 0;
Parallel.For(1, 10+1, option, () => 0,
 (i, parallelLoopState, s) => s + i,
 s => Interlocked.Add(ref sum, s) );
Console.WriteLine("sum = {0}", sum);


156 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:34:33 ]
そんなの使わずマルチスレッドつかえよ
Parallel.Forなんて大して使えん
ループ内がそれそれ独立していなければ無理

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


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


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

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



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

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

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

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

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

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

割れてる人は気おつけて

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

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

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

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

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


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

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

170 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 16:38:36 ]
ParallelOptionsのMaxDegreeOfParallelismが必要だね。
1コアの環境でoptionなしで使うとスレッドは使わずにメインスレッドで処理してしまう。

ParallelOptions option = new ParallelOptions() { MaxDegreeOfParallelism = 4 };
Parallel.Invoke(option, () => Worker("aaa"), () => Worker("bbb"), () => Worker("ccc"), () => Worker("ddd"));




171 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 16:48:43 ]
並列処理とか……
ここは本当に初心者スレなのか?w

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

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

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

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

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

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

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

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

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

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



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

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


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

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

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


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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

・・・違うの?

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

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

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

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

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

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

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

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

>>205
DirectoryInfo.Name

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

>>204
&&の前後が逆

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

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



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

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

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

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

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

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

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

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

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

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



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

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

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

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

処理

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

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

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

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

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

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



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

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

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

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

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

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

つまり>>193

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

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

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

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

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

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

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

(処理)

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

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

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

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

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

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

ようは好きにしろ



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

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

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

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

245 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:56:43 ]
>>235
delegate bool EmptyDelegate(string[] s);

    EmptyDelegate emp=IsEmp;

    if(emp(s))
    {
      (処理)
    }


  private bool IsEmp(int n)
  {
   if ( a == null || a.Length > 0 )
      return false;
  }
}

246 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 16:00:15 ]
>>245
普通のメソッドでなくデリゲートを使うのはなんで?

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

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

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

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



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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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


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


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

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



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

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

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

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

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


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

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

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

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

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

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

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

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



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

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



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

284 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:15:39 ]
foreach (string a in listBox2.Items)
{
try
{

File.Move(a, textBox1.Text + "\\" + Path.GetFileName(a));

}
catch
{
MessageBox.Show("err");
}
}

これでArgumentExceptionはハンドルされませんでした
とかってエラーが出る
一応ファイルは移動できてるんだけどなんなんでしょう

285 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:17:58 ]
なんのためのcatchだ

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

287 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:20:50 ]
>>284
foreach (var a in listBox2.Items)
{
try
{
File.Move(a.Text, textBox1.Text + "\\" + Path.GetFileName(a.Text));
}
catch
{
MessageBox.Show("err");
}
}

288 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:22:38 ]
>>286
そんなはずかしいことするのはお前だけ

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

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



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

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


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

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

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

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

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

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

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

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

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

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



301 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:16:43 ]
>>298
例外捕捉するように書いてみたけど問題なく通るからcatchが捕捉するのも何もないようで

ArgumentExceptionはハンドルされませんでした
使用されたパラメータが有効ではありません。



Program.csの
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());←ここで起きてる
}

何が悪いんだ?
ちなみにファイルを移動し終わっても異常は無いけどウィンドウを動かしたり最小化したりするとエラーが出てくる


302 名前:デフォルトの名無しさん [2010/03/23(火) 00:18:49 ]
しらねえよw
プログラム全部が見えないのにw

303 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:26:00 ]
>>300
ありがとうございます。
再帰が未熟なのでNodeの追加で悩んでいます・・・。

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

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

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

306 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:33:34 ]
Cでいうところのfscanf (fp, "%s%lf%lf", name,&height, &weight)みたいに構造体でtxtファイルにデータの管理をするには
どうすればいいでしょうか?
今思いつくのはstring型を特定の文字で引っ付けたり分解するものを利用すること位です

307 名前:デフォルトの名無しさん [2010/03/23(火) 00:35:38 ]
テキストボックスに時刻を表示しようとしています。

Thread thread = null;
private void timer_Tick(object sender, EventArgs e){
thread = new Thread(Thread);
thread.IsBackground = true;
thread.Start();
}

private void Thread(){
textBox.Text = DateTime.Now.ToString("HH:mm");
}

これでデバッグしようとしたら、
InvalidOperationExceptionはハンドルされませんでした。
有効ではないスレッド菅野捜査、コントロールが作成されたスレッド以外のスレッドからコントロールtextBox.Textがアクセスされました。
とエラーになります。
これはどう対処したらよいですか?


308 名前:デフォルトの名無しさん [2010/03/23(火) 00:37:04 ]
>>275
ほんとだ。これでした。ありがとうございます。


309 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:38:43 ]
>>307
codepad.org/xOdJsJie

310 名前:284 mailto:sage [2010/03/23(火) 00:42:32 ]
うんごめんなさい
画像をpictureboxから解放せずにその画像ファイル移動したらそりゃエラーもでるよね
ここに書いたプログラムとは全然関係ありませんでした
ごめんなさい
自己解決しました



311 名前:デフォルトの名無しさん [2010/03/23(火) 00:42:56 ]
>>307
すごい。速い…。
これ、Classはひとつの場合でも使えるんですか?


312 名前:デフォルトの名無しさん [2010/03/23(火) 00:45:31 ]
>311
早いっていうかスレッドネタは最近多かったのでネタだろと半分思ってるので
アドレスを取っておいた

一つの場合っていうか、スレッドから呼ぶならそれ改造すればクラスじゃなくてもいけるでしょ

313 名前:デフォルトの名無しさん [2010/03/23(火) 00:55:58 ]
>>312
ネタではなく、初心者で困っていての質問であります。
で、すみません、コードを拝見していたんですが、改造できませんでした…。
さきほどの307にあてはめると、どのようにしたらよいでしょう?
Invokeもdelegateもworkerもcallbackもshownも初めてで、かなり手に余っています。


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

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


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

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

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

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

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

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

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


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



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

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

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

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

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

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

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

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

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


もし false なら 抜ける;

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

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


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

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



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

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

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

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

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

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

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

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

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

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

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


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

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

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



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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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


C畑出身の古参か?

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

370 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 02:04:15 ]
大負荷 の検索結果 約 5,920,000 件中 1 - 100 件目 (0.28 秒)
小負荷 の検索結果 約 3,390,000 件中 1 - 100 件目 (0.32 秒)
高負荷 の検索結果 約 2,480,000 件中 1 - 100 件目 (0.27 秒)
低負荷 の検索結果 約 1,260,000 件中 1 - 100 件目 (0.42 秒)



371 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 02:09:59 ]
中負荷 の検索結果 約 7,770,000 件中 1 - 10 件目 (0.21 秒)

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

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

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


374 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 02:22:53 ]
"大負荷" の検索結果 約 10,500 件中 1 - 50 件目 (0.26 秒)
"小負荷" の検索結果 約 13,500 件中 1 - 50 件目 (0.28 秒)
"高負荷" の検索結果 約 461,000 件中 1 - 50 件目 (0.31 秒)
"低負荷" の検索結果 約 123,000 件中 1 - 50 件目 (0.39 秒)
"中負荷" の検索結果 約 16,500 件中 1 - 50 件目 (0.33 秒)

375 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 03:07:34 ]
"負荷が大きい" の検索結果 約 2,120,000 件
"負荷が小さい" の検索結果 約 1,070,000 件
"負荷が高い" の検索結果 約 69,000 件
"負荷が低い" の検索結果 約 1,600,000 件
"負荷が中い"との一致はありません。

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

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

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

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

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

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

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

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



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

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


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

384 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 11:49:29 ]
単なるAPIの塊なのにC++から呼び出す場合とC#から呼び出す場合で違ってたら笑えない

385 名前:デフォルトの名無しさん [2010/03/24(水) 13:48:55 ]
レジストリの登録について質問があります。
自作のアプリケーションでjpgファイルを開くために、
registryValue = programpath + " %1";
として登録しました。
これで、アイコンを選んで、右クリックで登録したメニューを実行すると、
「パスに無効な文字が含まれています」とエラーになります。

どうやら、%1を
C:\DOCUME~1\USERNA~1\MYDOCU~1\data\20EAE6~1\PIC~2.JPG
のように、アプリケーションのショート名(?)に展開しているようです。
これを回避するには、どのようにしたらよいでしょう?


386 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 14:39:12 ]
>>383
あっそう

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

例えばこんな感じ



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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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


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

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

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

private void hoge()
{

}

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

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

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

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

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

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



431 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 13:19:43 ]
>>428
最初の質問の時に「2度も添字チェックが必要なのかと」問われたので
必ずしもやらなくてもいいと答えただけで、
例外処理と明示的な添字チェックと比較して、
より書きやすい方法で書けばいいんだよ。

で、添字処理を自前でやるsetter/getterって、
C#で今まで必要になったことが一度もないんだが。オレだけ?
標準ライブラリのコンテナ使うだけで、困った事無い。

432 名前:デフォルトの名無しさん [2010/03/25(木) 15:12:48 ]
Graphicsで縁取り文字列を書こうとしてて問題が出てきたので誰か良い案があったら教えて下さい
↓のようにAddStringでpathに作ったアウトラインをWidenで太くしてやるやり方が
ググッたらシンプルなので使おうとしたのだけど、フォントサイズに対してWidenで太くする
サイズ(コード内でいうwidth)がでかくなるにつれ漢字などの細かい部分で意図しないツノが生えてきてしまうんだ
(このコードで言えば「刷」の左上など)
この現象の回避策や、他のシンプルな縁取り文字作成方法があったら教えて下さい(元からそういうフォントを使えというのは無しで)

// gはGraphics, pathはGraphicsPath
Font font = new Font("メイリオ", 26.25, FontStyle.Bold);
Single sizeInPixels = font.SizeInPoints * g.DpiY / 72F; // ピクセル単位のサイズに変換
Single width = 5.0F;

path.AddString("印刷中", font.FontFamily, (Int32)font.Style, sizeInPixels, new PointF(10, 10), null);
using (Pen pen = new Pen(Color.Black, width)) {
path.Widen(pen);
}
g.FillPath(Brushes.Black, path);

433 名前:デフォルトの名無しさん [2010/03/25(木) 15:50:35 ]
>>432ですけど自己解決しました。
Widenに使うPen(コードで言うpen)のLineJoinプロパティをLineJoin.Miter(デフォルト)以外にしたら出なくなった。
ついでにLineJoinの値によっては柔らかい感じにもできることが分かって
さらに得した気分。
お邪魔しました〜

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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


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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

void Execute(object[] parameters);

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

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



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

よろしくお願いします。

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

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

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

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

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

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

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

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

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

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

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



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

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

となるんです。

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

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

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

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

485 名前:デフォルトの名無しさん [2010/03/26(金) 19:38:17 ]
msdn.microsoft.com/ja-jp/magazine/dd882520.aspx
のカレンダーで遊んでみようと思っています。
このプロジェクトを開くと、
Microsoft.Windows.Controlsと
Microsoft.Windows.Controls.Primitivesの参照が必要なので、
WPFToolkitをダウンロードし、参照を追加しました。

それでもMoonPhaseCalendar/MainWindow.xamlの、
<vsm:VisualStateManager.VisualStateGroups>
の行で、
アタッチ可能なプロパティVisualStateGroupsが、
型VisualStateManagerに見つかりませんでした。
とエラーになります。
これにはどう対処したらよいでしょうか?


486 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 21:07:29 ]
WPFのデザイナにはよくあること
まず気にせず実行してみる

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

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

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

よろしくお願いします。

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

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

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

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

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

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

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

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

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



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

492 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 22:50:16 ]
>>490
bool run = true;
while(run){
Application.Run(new Form1());
Application.Run(new From2());
}

どう・・・なんでしょう。
Program.csにData(Document)保存した方がいいような気もします。

493 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 22:55:01 ]
>>491
ビューと"ロジック"なんですね。 参考になります。

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


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

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

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

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

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

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

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

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

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



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

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

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


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

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

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

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

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

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

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

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

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



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

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


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

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

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

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

517 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 17:43:57 ]
できた
private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
if (dataGridView1.HitTest(e.X, e.Y).RowIndex < 0)
{
MessageBox.Show("hoge");
}
}


518 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 18:26:20 ]
できたね

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

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

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

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



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

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

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

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

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

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

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

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

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

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



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

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

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


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


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

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

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

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

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

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

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

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

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

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



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

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

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

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

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


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

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



よろしくお願いします。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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



561 名前:541 mailto:sage [2010/03/27(土) 23:07:51 ]
>>557

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

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

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

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



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

564 名前:541 mailto:sage [2010/03/27(土) 23:10:14 ]
>>560

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

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

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

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

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

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

でおk?

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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


615 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:18:49 ]
WPFならXPの古いマシンは切り捨てることになるよ
まあゲームなら問題ないな

616 名前:デフォルトの名無しさん [2010/03/28(日) 16:35:08 ]
配列に条件によって値を入れたいと思います。
(1) int[] table = {01, 0, 120, 270};
(2) int[] table = {02, 0, 180, 90};
と2種類の値を入れたいとします。

(1)の場合の条件と、(2)の場合の条件が違う場合、

if(条件) int[] table = {01, 0, 120, 270};
else if (条件) int[] table = {02, 0, 180, 90};

//以下tableを使った処理。

とすると、処理をするところで、
tableがないとエラーになります。

int[] table;
if(条件) table = {01, 0, 120, 270};
else if (条件) table = {02, 0, 180, 90};
//以下tableを使った処理。

とすると、この書き方ではだめだと、大量にエラーになります。
配列の書き方という基本的なことなのですが、書けずに悩んでいます。
アドバイスお願いします。


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

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

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

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

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



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

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

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

にするか

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

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

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


626 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:50:23 ]
>>625
いろいろ短縮したのが

table = new int[]{01, 0, 120, 270};

これね

長くかくと

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

こうなる

627 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:50:50 ]
>>625
アホか。エラーメッセージに全部書いてあるだろ。

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

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

629 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:57:27 ]
table = new int[]{01, 0, 120, 270};
こうやって書くメリット?は

table = new int[4];
table[0] = 1;
table[1] = 0;
table[2] = 120;
table[3] = 270;
この配列に
table[4] = 100;
とか増やしたい場合は
table = new int[4];
これを
table = new int[5];
としないといけないけど

table = new int[]{01, 0, 120, 270,100};
こうするだけで{}で囲った中の要素分だけ勝手に配列を確保してくれる。

数を知りたければ配列の場合.Lengthでわかるはず

630 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 17:05:07 ]
>>590
こっちはまだわかりやすいね
訳が適当だとどうにでも解釈できるよな



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

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

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

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

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

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

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

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

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

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



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


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

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

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

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

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

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

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

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

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

648 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 09:20:00 ]
ListはArrayListのGenericだから比べるところじゃないだろう
ListとArrayListの中身は配列

>ArrayList は、null 参照 (Visual Basic では Nothing) を有効な値として受け取り、要素の重複を許可します。
>Count が既に Capacity に等しい場合には、内部配列を自動的に再割り当てすることにより ArrayList の容量が増加し、新しい要素を追加する前に既存の要素は新しい配列にコピーされます。
>Count が Capacity より小さい場合、このメソッドは O(1) 操作になります。新しい要素を格納するために容量を増やす必要がある場合、このメソッドは O(n) 操作になります。ここで、n は Count です。


649 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 09:21:07 ]
ArrayListは過去の遺物。要素がobjectの場合でもList<object>を使った方がいい。
Silverlightでは切り捨てられた。

650 名前:デフォルトの名無しさん [2010/03/29(月) 10:13:51 ]
ありがとう。Listという言葉が紛らわしいですね。

C#の参考書を見ると、Windows GUIが簡単にできそう。
MFCを整理してより使い易くしているかんじ。
C++のMFCを勉強してきたけど、きっぱりとあきらめて
C#で作り直した方が早いと思う。



651 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 10:47:41 ]
ArrayListやHashtableって実装をさらけ出した悪い名前だと思う

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

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

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

655 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 11:05:19 ]
listといえばリンクリストを指すのは悪い慣習だな
.NETではインデックスでアクセスできるものをlistと呼ぶ
LinkedListもListと付いてるけどIListを実装してない

656 名前:デフォルトの名無しさん [2010/03/29(月) 12:24:01 ]
WPFのC#のコードビハインドでのウィンドウサイズの指定方法を教えてください。
xamlでは、
<Window Height="400" Width="400">
と指定します。
FormのC#では、
this.ClientSize = new System.Drawing.Size(1173, 861);
のようにできます。
WPFのC#の場合がわかりません。
Windowssize = new System.Drawing.Size(1173, 861);
としてみたところ、System.Windows.Window.Windowsizeはアクセスできない保護レベルになっています、
と表示されています。
どこで保護レベルを変更すればよいでしょう?
よろしくお願いします。


657 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 12:25:00 ]
保護レベル変更は無理

658 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 12:26:55 ]
this.Width = 1173;
this.Height = 861;
これだけ
それとWPFでSystem.Drawingは使うな

659 名前:デフォルトの名無しさん [2010/03/29(月) 12:27:07 ]
>>657
やりたいことはウィンドウサイズの変更なので、
ウィンドウサイズを変更できればよいです。


660 名前:デフォルトの名無しさん [2010/03/29(月) 12:29:59 ]
>>658
ありがとうございました。できました。感謝です。




661 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 17:27:28 ]
>>660
また俺が回答してやるよ
どーんとこい!

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

669 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:44:03 ]
UIスレッド以外から操作すんなよ。

670 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:45:43 ]
ダイアログに見せかけたFormじゃだめなの?



671 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:49:18 ]
メインスレッド側でAPIで呼べばいいんじゃね?

672 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:50:38 ]
あー、Thread.SetApartmentStateってのがあってだね

673 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:50:49 ]
一応、Thread.TrySetApartmentState メソッド ってのはあるけどな・・・。

674 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:52:26 ]
>>669-671
この3人にtaskkillしてあげてください

675 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:53:44 ]
ひどい赤っ恥だ

676 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:56:37 ]
メインのUIスレッド以外からUIいじるのはお勧めできないけどな。

677 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:58:40 ]
>>674
何でtaskkillなんだよ
>ダイアログを表示すると正常に使用‥‥出来るのですが、このフォームは最小化&非表示にしているため
>この状態でダイアログを表示しようとしても画面には出てきません。
ダイアログで出ないとかいうからダイアログに見せかけたForm表示しろっていっただけ
オーナーとの関係で表示がされないだけだろ

678 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:59:11 ]
そのスレッドは自分で作ったスレッド?
それともスレッドプールのスレッド?
自分で作ったスレッドなら、差し支えなければ自分でSTAに設定すればいい(Start前しかできないよ)
もしスレッドプールとかなら、これはMTAから変更することはできない。
汚いけど、必要な部分で自分でスレッド作って、STAに設定してメッセージボックス表示、
元のスレッドでは新しいスレッドを勝ち合わせとかするしかないと思う。
最初からUIスレッドにIncvokeする方が無駄はないけど。


679 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:01:42 ]
そもそもSTAとかMTAって何なの

680 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:02:56 ]
ようやくシンプルだけどまともに動くものが作れるようになってきたけど
未だにマルチスレッドとかよくわからないな
>>679も何のことやら



681 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:05:41 ]
Inside OLE2 嫁。

682 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:09:36 ]
>>681
それ絶版じゃなかったっけ。

683 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:10:41 ]
うん。

684 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:11:22 ]
>STAとかMTA
VC++でATL使ってIEコンポーネント触ったときにちょっとかじった程度だな
ナビゲーション関連がこの辺を理解してないとメッセージが来ないとかなんとか

685 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:24:31 ]
うん。

686 名前:668 mailto:sage [2010/03/29(月) 22:26:02 ]
みなさん、ありがとうございます。
てか、はやっ。w

>>670
無知ですみません。
ダイアログに見せかけたフォームというのは、Form を継承したファイル選択ダイアログの
ようなフォームクラスを自分で作る、と言うことでしょうか。
だとすると、今回は遠慮できたらいいかな、と。すみません。

>>671
いまの状況からは少し難しく。すみません。

>>678
System.Threading.Thread を利用して自分で作ったスレッドです。

やっとエラーメッセージの意味がわかりました。
あれは必ずしも main 関数でやれってことではなくて、ダイアログを操作するスレッドに
STA を設定しろってことなんですね。
>>672>>673 さんの仰ってる方法で出来ると理解しました。明日、確認します。

>>669,676
自分も UI スレッド(この言葉を忘れていました)以外で UI の操作を行うのには抵抗があったのですが。
‥‥気をつけておきます。

687 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:27:30 ]
>>686
わかればよろしい
今後も精進しなさい

688 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:28:10 ]
偉そうに

689 名前:665 mailto:sage [2010/03/29(月) 22:32:50 ]
>>666
レスサンクス。
バッファの取り方がまずいという事ですか。
今手元に環境がないので試せないですが、
明日試してみます。

良いサイトか何かあれば、いいんですが、
なかなか見つからず・・・orz

ちなみに、環境は
XP,VC# 2008Express
(書き忘れました)

690 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:37:59 ]
バッファの取り方でなくて、C#とCの型の違い。



691 名前:665 mailto:sage [2010/03/29(月) 22:42:37 ]
>>690
サンクス
それで、最初の構造体はアクセスできるけど(たまたま出来てるように見えてるだけ?)、
次の構造体にアクセスしようとしたら落ちると・・・。



692 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:46:49 ]
型の制約があるものより汎用的なテキストでやり取りする方が無難かもねえ
相談かこっちか忘れたけど以前同じようなdllを呼び出すアプリの相談で
httpでやり取りする形にしてみたら?ってのがあったな

693 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:52:56 ]
>>691
よく見たらST_SAMPLE**だったのか
C#側の引数の型をIntPtr[]にしてそれぞれポインタの参照先に
ST_SAMPLEDLL一つ分のメモリを割り当てておかないと

694 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:53:47 ]
バイト配列が一番わかりやすいよ。

695 名前:665 mailto:sage [2010/03/29(月) 22:58:22 ]
>>692
時間がたっぷりあって、許されるなら、DLLをC++か何かで
書き換えたいところですが、そうもいかず・・・。
このインターフェースは我慢するしかないですね。

>>693
です。ダブルポインタです。
そこなのですが
codepad.org/SnH7gdwI
このサイトに張ったソースの37行目でDLLに渡すメモリの実態自体は用意しているので、
大丈夫かと思ってたのですが、それとは別に確保するという事ですか?

あと、宣言は、こっちの方がいいってことですね。
[System.Runtime.InteropServices.DllImport("MY_Dll.dll", EntryPoint = "test")]
unsafe public static extern int test_call( IntPtr[] pstList);


696 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:00:44 ]
IntPtrのみでいいはずだけどな。
Cでは、基本的に配列はメモリ上に整列するし。

697 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:04:37 ]
ダブルポインタだからポインタの配列を渡さないといけない(だからIntPtr[])
しかもC側でポインタの参照先にアクセスしてるから予めそれぞれ実体を割り当てとかないと

698 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:11:52 ]
配列はポインタで受けれるけど、ってやつか。

699 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:12:03 ]
>>696
私もそう思ってて、そこではまってます。。

>>697
>しかもC側でポインタの参照先にアクセスしてるから予めそれぞれ実体を割り当てとかないと
そこなのですが、

testPtr1 = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(ST_SAMPLEDLL)) * (int)10);

これで、領域を確保して、
次に

test_call(testPtr1);

渡してるので、少なくとも構造体ST_SAMPLEDLLを10個分はメモリとして
確保してると思ってますが、この処理のほかに必要とうい事でしょうか?

その後、取れたのをMarshal.PtrToStructure()で取り出す処理になってます。


700 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:15:27 ]
= () => って表記、他に候補なかったのかよ!と書く度に思う。タマゴとコンニャクでオデン喰いたくなるw



701 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:21:09 ]
C#でいう「参照型の配列」と同じだ。
並んでるのは実体じゃなくてポインタで,それぞれのポインタがどこか別の場所にある実体を参照してる。
IntPtr[] testPtr1 = new IntPtr[10];
for (int i = 0; i < 10; i++) { testPtr1[i] = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(ST_SAMPLEDLL))); }
test_call(testPtr1);
こうする。
取り出すときはそれぞれの要素に対してMarshal.PtrToStructureを呼べばおk


702 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:27:48 ]
DLLとC#の間にもう一個DLL挟めばいいんだよ

703 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:29:37 ]
>>701
なんといいますか・・・。
頭が下がるばかりです。
なるほど、納得しました。


704 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:32:31 ]
もともと

x⇒x*2;

みたいな感じではなかったのあれ
1バイト文字に⇒がなかったから代用みたいな
よくしらんけど

705 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:35:16 ]
これで上手くいったと書こうと思ったら>>701に先越された。CallingConvention忘れないでね。
using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, Pack=4)]
public struct ST_SAMPLEDLL
{
public byte cCount;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public byte[] strBuff;
}
class Hoge
{
[DllImport("u.dll", EntryPoint = "test", CallingConvention=CallingConvention.Cdecl)]
unsafe public static extern int test_call([MarshalAs(UnmanagedType.LPArray), In, Out] IntPtr[] pstList);
static void Main()
{
IntPtr[] stSample = new IntPtr[10];
for (int i = 0; i < stSample.Length; ++i)
{
stSample[i] = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(ST_SAMPLEDLL)));
}
// DLL呼び出し
test_call(stSample);
ST_SAMPLEDLL[] st = new ST_SAMPLEDLL[10];
for (int i = 0; i < st.Length; ++i)
{
st[i] = (ST_SAMPLEDLL)Marshal.PtrToStructure(stSample[i], typeof(ST_SAMPLEDLL));
Marshal.FreeCoTaskMem(stSample[i]);
}
Console.WriteLine((int)st[0].cCount + " " + (int)st[0].strBuff[0]);
Console.WriteLine((int)st[1].cCount + " " + (int)st[1].strBuff[0]);
}}

706 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:40:06 ]
なんでCdecl?

707 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:40:19 ]
>>705
なんていうか・・・俺って頭の回転速いから自然と先越しちゃうんだよ。(笑)
肩を並べる奴は誰も現れないって感じだ。(笑)

708 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:41:32 ]
>>707
おい
俺のフリをするな

709 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:42:58 ]
>>706
codepad.org/SnH7gdwI で__stdcallが指定されていないから。
まさかコンパイルオプションでstdcallを指定しているなんてオチがあるわけないと思ってCDeclと仮定した。

710 名前:701■Agei32s4 mailto:sage [2010/03/29(月) 23:44:05 ]
騙りばっかだな。トリつけとくわ。



711 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:44:35 ]
ですね

712 名前:665 mailto:sage [2010/03/29(月) 23:55:44 ]
>>705
>>709
具体例、サンクス!
少し話しが出たので、質問なのですが、
DLL側で__stdcallが指定されていた場合、話しは違ってくるのでしょうか?


713 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:59:11 ]
うん。

714 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:01:18 ]
文字列でやり取りするのが今時

715 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:02:31 ]
そんなことない。

716 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:03:15 ]
WinFormsのP/Invokeを全部標準入出力に替えたらとんでもないことになるな

717 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:06:56 ]
>>715
ネットワーク越しにwebAPI呼び出してxmlなどのテキストで回答を許容できる時代なんだから
スタンドアロンでやっても問題ないだろ

そうすればGUIだけC#で書いて古いDLLは常駐してhttpをリスナーする小さいプログラム書けば
いいのでVC++の無料でも余裕で開発できる

718 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:07:42 ]
どんだけ遅いと思ってんだよ。バカジャネーノ

719 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:08:00 ]
>>713
実は、会社の帰り際に「WINAPIは__stdcallで宣言するのが標準」という記事を見つけたので、
淡い期待を抱きながら、「明日試そう・・・」と思っていたところでした。
スタックの開放タイミングの違いとうい事ですか(う〜ん汗)


720 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:12:45 ]
直接は関係ない。関数から戻るときの問題だし。



721 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:16:05 ]
やれやれ

722 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 07:25:47 ]
テキストファイルでやりとりすべきだな

723 名前:665 mailto:sage [2010/03/30(火) 11:56:25 ]
回答を下さった方々、有難う御座いました。
無事、思うような動作が出来ました!
(感謝感謝)

私の後ろの初めてを捧げたいぐらいの感動です。
ここの所、ず〜っとこれで悪戦苦闘してましたので・・・。
有難う御座いました。


724 名前:デフォルトの名無しさん [2010/03/30(火) 11:57:01 ]
UserControl 作るとツールボックスに表示されますが、
表示させたくない場合はどうすればいいですか?

725 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 11:59:17 ]
>>723
よしではいくぞ

>>724
無理じゃね?
クラスライブラリで分離しておくとかすれば可能かな・・・

726 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 12:34:16 ]
>>723
2番目をくれ

727 名前:665 mailto:sage [2010/03/30(火) 12:55:41 ]
>>725
>>726
夢を打ち砕いてすまないのだが、
一応、私は「男」です

728 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 12:57:39 ]
>>727
あたりまえだろ。女なんて嫌だ

729 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 12:58:12 ]
知ってて言ったのにw
マジな返答くるとは思わなかった

ばっちこーいのAAでも貼ってくるかと期待したのに

730 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:05:19 ]
>>724
それらしい属性探して、無ければ諦めれ



731 名前:665 mailto:sage [2010/03/30(火) 13:25:07 ]
っく・・・
変態ばっかりだったとは・・・。


732 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:30:28 ]
軽いキャッチボールだよw

733 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:58:43 ]
おまえらToolboxItemAttributeもしらねえのかよ・・・

734 名前:デフォルトの名無しさん [2010/03/30(火) 19:27:29 ]
さぁって、今日はどんな馬鹿が釣れるかな? 枠々

735 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 21:15:14 ]
>>724
AutoToolboxPopulate
というのがVSにはあるらしい
でも単独配布のEEにはないんだよな

736 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 21:18:19 ]
何かうまく動かないなーと思ったらRectangleのBottomってTop+Heightなんだ
原点0で高さ64なら下の座標は63だとばかり思ってたよ…

737 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 21:26:56 ]
>Bottom プロパティの値は、Rectangle に含まれない、Rectangle の下端にある最初の点の y 座標を表します。

確認を怠るのが悪い。

738 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 21:43:10 ]
プログラミング自体初心者で、昨日初めてC#を始めて見ました。
visual C# 2008を使ってGUIでグラフを表示させたいんですが、どうすればいいんでしょうか?
参考になりそうなサイトなどあれば教えてください。

739 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 21:52:02 ]
www.microsoft.com/downloads/details.aspx?familyid=130F7986-BF49-4FE5-9CA8-910AE6EA442C&displaylang=ja
実用的なのはこれ
プログラミングの勉強で関数のグラフを自分で描いたりするんだったら C# paint でググる

740 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:04:27 ]
>>739
ありがとうございました。
自己解決しました。



741 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:32:24 ]
C#は.net frameworkと同じ意味?

742 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:34:13 ]
違う

743 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:39:04 ]
同じ

744 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:40:03 ]
.net frameworkは土台
その上で動くプログラムを書けるのがVC#とかVB.netなど

745 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:52:42 ]
言語仕様上はC#は.NET Frameworkとは無関係ということになってる

746 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:53:15 ]
違う

747 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:53:59 ]
Monoはネイティブコード吐けるし…

748 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:56:24 ]
それラインタイム一緒に事前コンパイルしてるだけで無駄が大きいけどね

749 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 23:00:46 ]
一応言語仕様の上ではCLIにも依存してない
言語仕様に最低限必要なライブラリが書いてあるのでそれを一通り実装しさえすれば
C#と名乗れる

750 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 23:09:54 ]
名乗れるね



751 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 23:10:14 ]
違う

752 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 23:19:03 ]
もう何がなんだかw

753 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 00:00:07 ]
どこが「違う」か指摘できない馬鹿は放っておけ

754 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 00:12:05 ]
ですね

755 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 02:39:38 ]
>>739配布するときにも相手にはそれをインスコさせなきゃ駄目?
それとも、自動的に組み込んでくれる?

756 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 03:26:39 ]
90

757 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 04:59:13 ]
>>755
.netその物と同じで相手側にも入ってないとだめかもね

758 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 06:15:46 ]
だめかもね

759 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 07:36:45 ]
>>755
ライブラリの dll ファイルは
標準のアセンブリフォルダーの下か、
exe と同じフォルダーにあれば OK なんで
exe と同梱で配布すれば OK。

760 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 10:55:33 ]
include <stdio.h>
using System

int Main(void){
System::Console::WriteLine("にちゃんねらー死ね");
}



761 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 11:23:17 ]
>>760
ここはニュー速のプログラミングスレじゃないですよ

762 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 11:28:37 ]
なんでC++/CLIなんだよイライラするなあ死ね

763 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 11:37:00 ]
C++/CLIならmainだろ
include <stdio.h>
using System;も必要ない

764 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 11:39:16 ]
やたら丼を書いている奴だろ

765 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 12:45:58 ]
同じマシン、同じソフトで印刷プレビューするときにプリンタ2台で
1枚でも40秒と3分の差があるんですけど、印刷の実行速度は
プリンタドライバも関係してくるんですか?
3分かかるのは9年前発売のプリンタで、40秒かかるのは
最近発売のプリンタですけど。

766 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 12:50:17 ]
そりゃまあレンダリングするのはドライバだしな

767 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 12:59:46 ]
>>766
なるほど。
ありがとうございます。

768 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 13:51:04 ]
>印刷プレビューするとき
これはプリンタのほうでプレビューってことだよな?
自分でプレビュー画面作るってわけでもなく
だとしたら>>766の通りだけどC#関係なくね?


769 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 14:16:03 ]
プレビューの速さの話が途中から印刷の実行速度の話になってるからな

770 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 14:28:59 ]
フォームプロジェクトに追加したユーザーコントロールをデザイナで配置したいのですが、ツールボックスに表示されません。
調べてみると Windowsフォームコントロールライブラリ という別プロジェクトでDLLを作成し、
それを介する方法しか発見できませんでした。
DLLを介する以外に方法があれば教えてください。



771 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 14:51:56 ]
メニューのツールのオプションのWindowsフォームデザイナの全般で
ツールボックスのAutoToolboxPopulateをTrueにしてもダメかな?

772 名前:770 mailto:sage [2010/03/31(水) 14:59:20 ]
>>771
できました。ありがとうございました。

773 名前:765 ◆JdKMFRogo6 mailto:sage [2010/03/31(水) 15:25:55 ]
>>768 >>769
C#で作ったプログラムで印刷プレビュー出すときのことです。
出るまでにそれだけ時間がかかるんですよ・・・
ここらへんでプリンタも買い替えないと・・・

774 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 15:28:41 ]
勝手にしろよwww

775 名前:765 ◆JdKMFRogo6 mailto:sage [2010/03/31(水) 15:35:37 ]
>>774
たしかにwww

776 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 16:12:56 ]
codepad.org/YiT7oXst
上記のコードがあるとします

14行目でリストの0番目のアイテムにGetTypeしてアイテムの型を取得していますが
BindingList<T>のインスタンスが生成された段階でアイテムの型は決まってるので
0番目のアイテムにアクセスしなくても取れるはずです
これの取り方を教えて頂きたいのです

あくまでもテスト用のコードなので「Tから取ればいいだろ」みたいな突っ込みはご容赦下さい

777 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 16:13:43 ]
今から仕事なので日付変わった頃にお返事します

778 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 20:50:18 ]
>>776
listType.GetGenericArguments()[0]

779 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:00:29 ]
関数のパラメータについて、教えてください。

デバッグ用にその関数のパラメータの一覧をログなどに出力したいと考えます。
たとえばなのですが、
System.Diagnostics.StackFrame.GetMethod().GetParameters()
を利用すると、特定の関数のパラメータの一覧を得ることが出来ます。
ただ GetParameters() ではパラメータの型や変数名などの情報を取得することは出来ても
パラメータの値そのものは取得できないようです。当然と言えば当然なのですが。

これと同じような方法で、パラメータの値を取得する方法はないでしょうか。


なにをしたいのかというと、デバッグ用に特定の関数のパラメータの各値をログなどに
出力したいのですが、関数個別に "param1 = {0}", param1 などと書いていくのが手間なので、
関数のパラメータのすべての変数名とその値とを文字列にしてくれる関数を作れないものかと。

780 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:16:40 ]
>>778
お答え頂きありがとうございます

質問したかった事とコードが違ってる事に出勤してから気付きました
IBindingListの引数にclass BindingList : BindingList<string>{}のインスタンスを渡して
継承元の型パラメータを取得したいのでした
悩んでる最中は思い至らなかったのですが、単にType.BaseType.GetGenericArguments()すればいいだけでした
下らない質問してすみません



781 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:19:01 ]
>>779
無理

782 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:40:12 ]
>>779
型名でいいなら
public void Trace(params object[] o)
{
foreach(object obj in o)
{
〜(o.GetType().Name);
〜(o.ToString);

}
}

でいけるとおもうよ〜は出力命令ね

783 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:40:35 ]
フォームアプリケーションを作成している時、フォームのコードが長くなったので、
「コードファイル」を新規に作成し、コードの一部を作成したソースに移しました。
その後、フォームへコントロールを配置すると、移したはずの コントロール名_イベント名() が
元のソースに関数の中身が空の状態で生成されてしまうようになりました。
コントロールのプロパティ内でイベントの欄をダブルクリックした時以外は
コードが自動生成されないように設定する方法を教えてください。

784 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:45:55 ]
そんな設定ないよ。

785 名前:783 mailto:sage [2010/03/31(水) 23:55:44 ]
>>784
設定がないということは、フォームのコードを複数ソースに分けることをやらない方がいいということでしょうか?
それとも「コードファイル」を作成する以外の方法で別のソースを作成すべきなのでしょうか?

786 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:58:30 ]
>>785
> 設定がないということは、フォームのコードを複数ソースに分けることをやらない方がいいということでしょうか?

うん。

787 名前:783 mailto:sage [2010/03/31(水) 23:59:21 ]
>>786
ありがとうございました。

788 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:14:00 ]
>>787
うん。

789 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:14:02 ]
http;//○○○/〜〜〜
となっているURLの○○○を抽出するにはどうすればいいでしょうか?
正規表現を使ってみたのですが、うまく抽出されません。
例になるコードとかありませんか?

790 名前:779 mailto:sage [2010/04/01(木) 00:18:59 ]
>>781
>>782
ありがとうございます。
残念ながら型名などではなくて中の値そのものが欲しいので、今回は諦めます。



791 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:19:40 ]
>>789
URIクラスとかじゃねーの?

792 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:22:58 ]
"/"のSplitで[2]とか?

793 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:26:07 ]
>>792
'/'のSplitで[2]でしょ

794 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:29:17 ]
URIクラスのHostでもAuthorityでもDnsSafeHostでも

795 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:39:09 ]
http://〜〜/△△&pass=○○
のようなURLの場合に○○を取得したい場合はどうすればいいでしょうか?
さすがにこれはURIクラスでは処理しきれないと思うんですが

796 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:43:17 ]
EndOf

797 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:47:17 ]
>>795
System.Web.HttpUtility.ParseQueryString(string query, System.Text.Encoding encoding)

798 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:51:19 ]
>>795
'='のSplitで[1]

799 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:55:35 ]
みなさんありがとうございます。
今までは正規表現でどうにかしようとしてましたがいろいろやり方があることが分かりました。
もうちょっと頑張ってみます。

800 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:00:14 ]
>>799
みなさん?全部俺の回答なんだけどw



801 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:01:48 ]
4/1とはいえ他人の善意を潰す嘘は許さん

802 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:02:52 ]
自己主張したいならコテでもつけてろよ

803 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:03:41 ]
おまえがつけろクソ野郎

804 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:05:51 ]
4/1とはいえコテ付けない奴は許さん(キリッ

805 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:07:38 ]
ここまで全て俺の自演

806 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:08:43 ]
エイプリルフールはどんな嘘でもいいってわけじゃないんだよね。
人を怒らせるような行為はいただけないな。

807 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:09:05 ]
だな


808 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 01:47:08 ]
>>799
正規表現でも別にそう難しくはない気もしますが、まあ、
一番楽で素直で間違いのなさそうな方法を選ぶのが良いね。

809 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 02:07:49 ]
(new List<int>()).GetType().GetGenericTypeDefinition().Equals((new List<bool>()).GetType().GetGenericTypeDefinition())

上の評価はtrueになるんだけどさぁ
それを踏まえてMSDNを見ると

msdn.microsoft.com/ja-jp/library/system.type.getgenerictypedefinition%28VS.80%29.aspx
>2 つの構築型が同じジェネリック型定義から同じ型引数を使って作成された場合
>GetGenericTypeDefinition メソッドは両方の型に対して同じ Type オブジェクトを返します。

なんかこの説明おかしくね
この場合「違う型引数を指定して作成された場合でも」になるべきじゃね
同じのは同じなんだから当ったり前だろうそんなの
GetGenericTypeDefinition呼ぶまでもない

と思ったけど英語版もsame type argumentsなんだよなあ
なんでだ

810 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 06:33:16 ]
なんでだろうね



811 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 15:58:00 ]
未完成の汎用的なクラスを作れたのでいろんなプロジェクトで利用しているんだけど
既存の項目で追加とすると、その汎用クラスの変更がそのプロジェクトでしか行われない
汎用クラスの変更がすべての利用しているプロジェクトで反映される方法などありますか?
もしくは他に方法はありますでしょうか?

812 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 16:26:28 ]
>>811
既存の項目として追加するときに出てくるダイアログで、追加ボタンの隣にある三角ボタンを押してリンクとして追加すればいいじゃない。

813 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 18:07:35 ]
おほ〜〜いけた
ありがとう

814 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 19:34:31 ]
webclientのイベントハンドラをbuttonのイベントハンドラと同じように一覧から選んで記述ということはできないのでしょうか?

815 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 19:37:40 ]
わかんね

816 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 20:13:14 ]
foreach(var item in listview.items)

これだとlistviewitemと認識しないぞM$

817 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 20:18:03 ]
という独り言

818 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 21:54:16 ]
XMLにシリアル化の挙動がさっぱりわからん
なんなのこれは?
まったく使い物にならん
シネ

819 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 22:12:44 ]
無能は車輪の何とかでもやってなさいってこったw

820 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 22:20:21 ]
>>814
デザイナーからは設定できないぞ


>>816
varって糞VBじゃねーんだからちゃんと型つけろがボケ
ideone.com/jwBy2dbY
.netはいたるところで型が何か分かるようになってるぞボケ

>>818
publicじゃない要素があるとうまく動かん
c# XmlSerializerでぐぐってサンプルみてこい
public classだし中身もpublic付き



821 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 22:25:14 ]
>>820
>.netはいたるところで型が何か分かる
それは>>816の問題に関しては間違ってる。
foreach (ListViewItem item in listView1.Items)は
foreach (object _item in listView1.Items) { ListViewItem item = (ListViewItem)_item; と等価。
だからitemの型がListViewItemでなくてもコンパイルエラーにはならない。実行時エラーが出る。
ジェネリックが無かったころの名残の糖衣構文だ。

822 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 22:37:29 ]
>>821
糖衣構文だとか昔は〜とか言われてもよくわからんけど
現在はこう表示されるんだからそれでええんとちゃうの?
uproda.2ch-library.com/231844RNf/lib231844.png

823 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 22:46:18 ]
>>822
それ今も昔もListViewItemCollectionに普通にインデクサが定義されてるだけ。
ListViewItemCollection.GetEnumeratorがIEnumerator(非ジェネリック)を返すので
foreachを使うと要素がobject型扱いになる。だから>>816はvarの自然な挙動。

824 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 22:48:34 ]
>>822
この場合インデクサは関係ないだろ
関係あんのはEnumeratorの方

825 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 23:29:26 ]
JavaScriptでしばしばこういうコード書いているけど、これをC++(QT)で書くとどういう感じになる?
function getValue(Form,Target){
var value = document.getElementById(Form).value; // 変数Form名のIDのフォームの値をvalueに代入
value = window.prompt("文字を入力",value); // 入力フォームを表示。valueを入力プロンプトに渡す。(上の行と1本かできるの事は気にしないで)
document.getElementById(Target).value = value; // 変数TargetのIDのフォームにvalueを代入
}
これをQtで書くとどういう感じになるのかな?
FormとTargetの値(参照元のフォーム名と代入先のフォーム名)が変化するんだけど。

あと、
document.getElementById(Form+'_name').value
みたいな表現ってできない?

C言語は、関数型とかあってわかりにくい・・・。

826 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 23:39:48 ]
スレチ

827 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 08:00:37 ]
あ!?

828 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 09:22:02 ]
どうした?
バグか?


829 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 10:33:00 ]
richtextboxで指定した行に文字列を追加したいんだけどどうすればいいのでしょう
delphi見たいにrichtextbox.line[i].text=・・・なんてもんはないんですかね

830 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:29:30 ]
あんまRichiTextBox使った事ないけどレスしてみる

改行コードでsplitした配列取得して、指定行の文字列を編集
で、それをStringJoinに改行コード指定してやっちゃうとか




831 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:31:04 ]
その手って内部は行単位のstring管理じゃなかったっけ?
ちと確認してみる

832 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:32:10 ]
richTextBox1.Lines.Length

Lengthってことは配列?

833 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:32:20 ]
Linesプロパティはあるだろ。

834 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:44:31 ]
あれ・・・行指定して書き換えてもかわらねえな・・・

ideone.com/ojQnOhFF

835 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:48:50 ]
読み取り専用だから。

836 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:49:49 ]
>>835
それは挙動で想像付くが、読み取り専用って書いてる段階か
実行時にエラーになるよな?

これはそれすらないぞw

837 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:53:35 ]
ヘルプ嫁よ

838 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 11:54:22 ]
コピーして返してるからだろ

839 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 12:19:36 ]
デザイナでLabelとか貼り付けたら
デフォルトのフォントの大きさが9なんだけど、ちょっと小さいから
デフォルトのフォントを大きさを変えたいんだけどどうやったらいい?
あとタイマーが一番最初にEnableがfalseになってるのとか変えたい

840 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 12:21:34 ]
無理



841 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 12:24:02 ]
Labelとかのフォントサイズは、フォームのやつを引き継ぐから、
フォームのフォントサイズを変更しておけばOK。

842 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 12:56:03 ]
>>839
諦めろ
つうか、タイマなんぞ切り替えるのは普通Pgからやんないか?
LoadとかShownでTrueにして
ClosingとかでStop→タイマの内部処理終了待ちして


843 名前:829 mailto:sage [2010/04/02(金) 12:59:41 ]
うーんなんていうか、
-----
あいう
あいうえお
あい
-----
ていうrichtextboxがあるとする。
これの2行目の文章(あいうえお)を変数に代入するにはどうすればいいのかわからないんです。
delphiならa:=Memo1.Line[1];(たしかこんな感じ)て感じで取得できたのですが・・・

844 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:05:20 ]
あきらめろよ。

845 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:08:00 ]
ベタにテキストボックスとかでも使うやり方
別に異常なほど文字が多いわけじゃない時こんな感じでやってた

private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Text = GetInsertedText(richTextBox1.Text, 1, "\r\n" + DateTime.Now.ToString());
}

private string GetInsertedText(string baseText, int index, string inserttext)
{

string[] temp = baseText.Split("\r\n".ToCharArray());

temp[index] += inserttext;

return string.Join("\r\n", temp);

}

846 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:09:25 ]
>>843
>>834見て無いのかよ

847 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:09:37 ]
つーか、Linesプロパティって出てんじゃん。

848 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:11:32 ]
読み取りだけじゃなく行単位で書き換えもありそうなんでできるかどうかを試してたのに
読み取りすら理解してないのかよ・・・

849 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:14:37 ]
総攻撃ワロスw

850 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:17:11 ]
>>846
すいません見落としてました
これです!ありがとうございます



851 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:29:39 ]
しかしこれ内部管理が配列なのが勿体無いな
List<>でもやってくれりゃあ部分編集もしやすかったのに

852 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 13:42:56 ]
中の文書フォーマットがどうなってるか知らんけど
部分的に書き換えられると整合性で困るとかそんな話の予感
TextBoxならできるんだしね…

853 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 14:44:48 ]
管理も何も、Linesのgetterは持ってるTextをCRLF/LF/CRで分割してるだけだぞ
setterなんかCRLF挟んで連結したものをTextに設定しているだけだし

それにしても、プロパティの型が配列だったり、プロパティでコピーを返したり、
プロパティの中に必要以上の処理を入れていたりと無茶苦茶だなw

854 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 16:20:07 ]
コントロールは例外だ
デザイナやバインディングなどの都合

855 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:39:53 ]
var x=0.0としたとき、xの型はfloatですか?doubleですか?
組み込み型には使うなと教えられたんですがこれだけは気になったのでお願いします。

856 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:43:58 ]
やってみればいいじゃん。

857 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:44:33 ]
>>855
ttp://tsushima.2ch.at/s/news2ch56039.png

ちなみに気になる型とか返り値の型とか知りたければ
標準の物なら大体こうやって確認できるよ

858 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:45:27 ]
しもうた
カーソル消えてるけど
x.ToString();
のxの上でカーソル止めてるから

859 名前:855 mailto:sage [2010/04/03(土) 14:48:37 ]
>>856-858
なるほど、勉強になりました。
どうもありがとうございました。

860 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:51:32 ]
>>859
というかc#で小数点をそのまま書くとdouble,
0.0Fという感じでFをつけるとfloat



861 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:53:24 ]
>>855
860の助言を参考にして、ついでにリテラルとその型の概念も把握しておこう。


862 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:55:24 ]
便乗で悪いんだけど、質問させてくれ
floatの方がdoubleよりも速度が遅くなると聞いたんだけど理由がさっぱりわからん
doubleの方が扱う桁数が大きいんだから遅くなるんじゃないのか?

863 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:57:43 ]
>>862
ならない。最近のCPUじゃ割り算以外の処理はどちらも1クロックで終わってしまい、
速度上の差は見られない事の方が多い。

864 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 14:59:56 ]
>>862
それはCPUによるよ

865 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 16:58:41 ]
Microsoft Parallel Extensions to .NET Framework 3.5ってもうDLできませんか?
もし直リンなどあれば教えてください

866 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 17:04:52 ]
>>865
それは『Parallel Extensions to .NET Framework June 2008 CTP』のことだろう?
Parallel Extensionsが.NET 4.0の機能になったことはMSの公式決定なんだから今更どうにもならんだろう。

ここには「Reactive Extensions を見よ」なんて書いてあるが。
blogs.msdn.com/pfxteam/archive/2008/06/02/8567802.aspx

仮にそんなコンパチライブラリがあったとしても、余計な混乱を招く結果にしかならないだろうよ。

867 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:13:26 ]
ある程度作ってたプロジェクトの中から部分的に切り離してクラスライブラリを作る場合って
スマートにやる方法ないかな?

868 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:16:15 ]
>>867
名前空間の単位で整理して、
名前空間の単位でクラスモジュール化する。

869 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:23:17 ]
そういうのじゃなくて、クラスライブラリ用プロジェクト作った際のソースの移動とかね・・

870 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:28:49 ]
>>869
基本的に自己完結するようにクラスライブラリを書いていれば、
単にプロジェクトを分けて本体側で参照設定するだけで
そのまま動くようになってるんだから、
スマートにやる方法もないだろ。

上手くいかないなら設計が悪いだけ。



871 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:31:28 ]
変数のインスタンスから、その変数の変数名を取得する方法はある?

int a;
string b = a.(メソッド);

みたいにやると、b に "a" って入るみたいな。
無理だと思うけど、C# だとちょっと期待してしまう。w

872 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:41:00 ]
>>871
変数の名前というのはプログラミングの都合上便宜的に与えるものに過ぎず、
実行時にはなくなってしまうものだ。

一方、デバッガで止めると表示してくれるが、あれはpdbファイルにその情報が記述されている。

873 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:42:43 ]
intとかは無理じゃね?
クラスになるとNameがあるけどあれもつけなくても内部管理的には問題ないから
おそらくハンドルみたいなので管理されてるんだと思うしなあ

intだとそのハンドルに相当するものくらいしかないんじゃね?

874 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:52:45 ]
いや・・・もっとそのプログラム的な話じゃなくて・・・・

プロジェクト作ってフォルダ作って元のソースを移動して
既存の項目としてプロジェクトに入れて・・・という
やり方しかないのかなあって話


あとクラスライブラリとして分離した場合デバック用とリリース用
を別途分けてリンクさせるような設定はないんだろうか?

C++だと普通にあったんだがC#の場合それっぽい項目が見当たらない

875 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 19:57:02 ]
>>874
>プロジェクト作ってフォルダ作って
それのどこに問題が?
むしろ異なるアセンブリのソースコードはフォルダ分けしておかないと不便だぞ。

>あとクラスライブラリ
同じソリューションでクラスライブラリとメインプログラムを管理しておけば、
ビルドモードの切替で勝手にクラスライブラリの切り替えもやってくれる。

876 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 20:00:45 ]
>>874
それ以上のどんなバカチョン機能があれば満足するんだろう。
まあ、ファイルの移動はプロジェクトエクスプローラで
ドラッグ&ドロップしてもできるよ。

あと、ソリューション内のプロジェクトの構成(Release/Debug)の連動は
構成マネージャで設定する。

877 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 20:04:24 ]
>>875
ああ、すまんEEで開発してたのでソリューションの下で複数プロジェクト作れるとは思ってなかった

878 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 20:06:10 ]
>>876
>>877でも書いたけど俺が想像してたのは

ソリューションA プロジェクトA

とあって
プロジェクトAの一部を

ソリューションB クラスライブラリB
として切り出すしかないと思ってたんだ
すまんすまん

879 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 20:11:25 ]
複数プロジェクト入れられないソリューションがこの先生きのこるには

880 名前:871 mailto:sage [2010/04/03(土) 20:40:35 ]
thx
やっぱり無理なんだね。



881 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 22:00:04 ]
>>863
処理が一律1クロックなのは一部の大型機の話
パソコン用のCPUはそこまで単純じゃないし速くもない

キャッシュがヒットしたという前提で
intの足し算、引き算は0.33クロック、掛け算は0.5クロック、割り算は23クロックかかる
IEEE754形式の浮動小数点だと単精度でも倍精度でも時間は変わらなくて
加減算で1クロック、掛け算が2クロック、割り算が32クロック

882 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 23:55:24 ]
>>880
blogs.msdn.com/jmstall/pages/sample-pdb2xml.aspx
pdb2xmlのソースコードから学べるものがあると思うけど。
デバッガ作るわけでもなければそんな必要ない気がする。

883 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 23:55:44 ]
【FPU】 浮動小数点 【SSE】
pc12.2ch.net/test/read.cgi/tech/1199424344/
float 使うヤツはドシロートかおぢさん
pc12.2ch.net/test/read.cgi/tech/1222048909/

884 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 06:01:22 ]
>>881
結局のところ大容量キャッシュと高クロック化でごまかしてるだけで
x86の本質はそれほど変わってないのか

885 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 06:56:58 ]
floatはベクトル演算器を使う場合にはそっちの方が早い。

886 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 10:11:33 ]
ちと質問させてください。
VS2003.NETのC#を使用してプログラムしています。

参照の追加でdllを読み込み、プロパティでローカルコピーをTrueにして、コンパイル。
この時に、EXEと同じフォルダにdllがコピーされるのですが、
コピーされる場所を変更できるのでしょうか?

EXEと同じフォルダ内に、DLLというフォルダを作成し、
コンパイル時にDLLフォルダにdllがコピーされてほしいのです。

よろしくお願いします。

887 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 10:16:49 ]
ビルドイベントで移動するとか

888 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 10:21:08 ]
>>886
アプリケーション設定ファイルでアセンブリの読み込みフォルダを指定することができる。
ただし実行プログラムのサブフォルダのみ。

これはユーザーに配布するときの話で、
開発中はそういったことをやると却って話が面倒になるので
exeとdllを開発中にフォルダ分けしてしまうようなことは考え内容がいいと思うよ。

889 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 10:25:36 ]
>考え内容がいいと思うよ。
考えないほうがいいと思うよ。

失礼。

890 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:30:53 ]
>>884
クロックを上げるのは、主にコスト面の問題で限界に来てしまったので
今はパイプラインの段数とコア数の増加とバス幅の拡張でごまかす方向になってきてる。
だから1命令が1/2クロックとか1/3クロックなんていう中途半端な時間で処理できてしまう。

あとは実行環境の64bit化でlong/ulongの計算が一気に速くなったぐらい。



891 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:33:14 ]
パイプライン段数はここ数年逆に減少したとか言ってたような

892 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:33:46 ]
いい加減スレ違い。

893 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:36:56 ]
クラスライブラリで公開するクラスってpublicじゃないとだめなんだっけ?

894 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:39:17 ]
           ,,,_  _ァュ,,..__
        ィチュ::ミミ:.:三彡:.:: :.:.:ヽ
        /::彡'':.: :.::/:.:{{.::r‐‐ ::_:.: :.:..、
      ,ィ /:.: /:..: ::{{:..川||::!     ヾ::;;:、
     ,ィ:.: ::.: /:. :: 川:.:ヾ:.:.!{::      ヽ::!
   ///:.: :.:.:||ll: :.: .::.:.:ヾ::.::.i       ':!
   !:|:.:::ミ:: :.;;;川:.: :.:巛、ヾ::! 、       l
   ゙::ミミ h::. :;:.::||l|:.:: :.}}::!l {{ ヾ  _,,...ィ r'' 、
     ゙::ミミ:.: ::.;:.:ミミヾ:.: :.:| ヾ、  '´  ,  マ
     ヾ:: .:.:ミミ三 :.:州リリ    _,,..rテ'  ヽ
      ヾ::;ィ'´ ̄`''ヾ州!         ,.  ヽ
        ゙レ '⌒r ィ ,;;. ..        .:' ,rィ ’
         ヽ し  :.: ..         、  ヽ
       ,,ハ`ー- ..ィ            _,.. ィ
      ィ:::! \   ヽ.          ィ{:::...
       /:::::!   \    ` - ..__       丿::::::ヽ
    /:::::::ヘ    \      ` ーァ-一'::::.:::.:::.::.!ヽ
   /:::::.:..:::::::::ヽ    \      リ::. :::.:.:.:.:::.:.:.:.::::!:::.::!

      轌山相太郎 [そりやまそうだろう]
     (群馬.明治一九年〜昭和一七年)

895 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:50:18 ]
>>894
さんきゅー

896 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 13:37:36 ]
ifで済むようなところでも例外を使ったほうがいいんでしょうか?

897 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 13:38:44 ]
ifで済むならifで済まして下さい

898 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 13:39:47 ]
状況にもよるんじゃね?
継続可能なところのエラー程度ならifで判断してもいいだろうけど
継続しても仕方ないようなところは例外でいくとか

899 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 13:58:19 ]
>>896
コールスタックの呼び出し階層から一気に抜け出したい場合は面倒だから
エラーを返さず例外処理で実装してしまう場合もあるよ。

他に、既に例外処理を書いていて、普通にエラーを返すより
エラー自体を例外処理にしてしまった方が楽に実装できる場合か。

そういったことでないなら、通常のエラーを返す実装にしておいた方がいい。

900 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 14:03:03 ]
例外やエラーに関してもパターンが必要だと思う今日この頃。

俺はpublicメソッドでもなけりゃ自分で投げることは少ないなあ。
引数なんかは渡す前に確認するし。



901 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 14:05:51 ]
ただprivateメソッドの中でエラーチェックしてないってことはないよ。
Assert入れてるから。

902 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 14:19:34 ]
そうですかよかったね

903 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 11:58:36 ]
しかしこの例外ネタは1スレに2回ぐらいは出るな

904 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 12:01:05 ]
明確な回答を返しづらいからじゃねーの
ほとんどマイルールだもの

905 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 12:03:31 ]
確かにお決まりパターンてないよな
ソフトの作りで例外でさくっと処理しちゃう場合もあるし
エラーコードとる場合もあるし

みなさんどうしてますかっていうよりこういうコードなんですがって
晒せる範囲でコードを見せてくれるといいんだけどな

質問の仕方の問題もあるな

906 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 12:33:12 ]
ライブラリとして自分以外に提供するのか
自分で使い切るのかでも変わってくるし

907 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 12:57:19 ]
こういう時に自称プロが出てきて語ってくれればいいのに。
要らん事にばっか口出すからなー。

908 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:04:44 ]
仕事で3日だけC#のアプリを初めて作った自称プロの俺に言わせれば、
そのときの気分、テキトー

909 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:06:10 ]
そういえば2chのほかに専門系の質問できるような場所ってあります?
なんか人減ってるしすぐ規制するしでw

910 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:09:17 ]
ttp://stackoverflow.com/




911 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:09:42 ]
今回のもかなり大規模っぽいねぇ
相談室の方も3日くらい放置状態だわ

912 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:10:33 ]
ブラクラかと思うような名前だ>stackoverflow.com

913 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:33:21 ]
>>909
日本語でもいくらかある
自分でぐぐってると、そんな質問はありえないと思うんだけど

914 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:33:25 ]
まっとうなサイトだし有用な情報もごろごろしてるけど、
如何せん名前のイメージが良くない…というか悪いんだよな

915 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 15:03:50 ]
>>910
ありがとう

>>913
いやあるにはあるんだが、なんていうかオンラインゲームの古参がいっぱい居るギルドに
入るようなちょっとやりにくさがあるんだよな・・・

その点2chは気軽っていうか

916 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 15:04:51 ]
NumericUpDown を継承したユーザコントロールを作成しています。
Enterイベント・OnEnter・OnGotFocus 内でそれぞれ、
Select(0,Text.Length)・(Controls[1] as TextBox).SelectAll()・OnDoubleClick を
全ての組み合わせで試してみましたが、
フォーカスを得た時にテキストを全選択させることができません。
その他にしていることはTextAlignをRightにすることと、
配置先(元?)で、小数点5桁・変更幅0.001と設定しているのみです。
前述の機能を実装する方法を教えてください。

917 名前:デフォルトの名無しさん [2010/04/05(月) 15:05:37 ]
列挙型(大正、昭和、平成、)を後で追加出来るように
テキストファイルの"大正、昭和、平成、"を読み込んで宣言するにはどうすればいいですか?

918 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 15:07:36 ]
おっと質問忘れるところだった

fileIo関連でwindowsの改行 0x0d0x0aを0x0aにするにはどこいじってましたっけ?

919 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 15:21:29 ]
>>918
TextWriter.NewLine

920 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 15:24:02 ]
>>919
TextWriter.NewLine = "\n";
こんな感じでしたよね?

ありがとうございます。



921 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 15:59:43 ]
>>887-889
早速の回答ありがとうございました。
結構な手順を踏む必要があり、大変そうですね。

> exeとdllを開発中にフォルダ分けしてしまうようなことは考え内容がいいと思うよ。
なるほど、分かりました。
一通りの開発が完了し、配布する際に読み込み先を指定する事にします。

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

922 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 21:09:42 ]
DataGridView で、教えてください。

スクロールバーの表示設定を行う ScrollBars だったかがあったと思うのですが、
これで垂直スクロールバーを消すとマウスのスクロールボタン?による
スクロールを行えなくなります。

垂直スクロールバーを消していてもスクロールボタンによるスクロールを行えるようにすることは出来ませんか?

923 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 21:11:45 ]
ホイール?

924 名前:922 mailto:sage [2010/04/05(月) 21:20:12 ]
あ、そう。それです。

925 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 21:43:34 ]
便乗質問。
DataGridViewでセルをコピーペーストでデータを移せるようにするにはどうしたらいいの?
できれば縦方向に複数のセルを同時に選択した状態で
コピペできるようになるといいんだけど。

926 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 21:57:42 ]
クリップボードへはDataGridView.ClipboardCopyModeをtるえにすればいい
クリップボードからはシコシコ実装するしかありません

927 名前:デフォルトの名無しさん [2010/04/06(火) 11:10:24 ]
質問があります。
WPFで、使わないテキストボックスを、テキストがからのときには表示しないようにしようと考えました。
if (textBox.Text == null || textBox.Text == "") textBox.Hide();
としたら、textBoxにはHideはないらしいんですけど、
こういう場合どうしたらよいでしょう?


928 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 11:13:15 ]
Visibility

929 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 11:16:19 ]
WPFは専門じゃないけどさくっと見た限りでは>>928(先を越された

textBox1.Visibility = Visibility.Hidden;
textBox1.Visibility = Visibility.Collapsed;
上二つの違いは要素を表示しない上にレイアウト予約がどうのってあったな
マウスカーソルのせるとざっくりとした説明でたよ

textBox1.Visibility = Visibility.Visible;

930 名前:デフォルトの名無しさん [2010/04/06(火) 12:34:44 ]
>>928-929
さすがふらっとC#。
できました。マウスで出ますね。
ありがとうございました。









[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<198KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef