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

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

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

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

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

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

■前スレ
ふらっとC#,C♯,C#(初心者用) Part63
http://hibari.2ch.net/test/read.cgi/tech/1285048678/

■関連スレ
C#, C♯, C#相談室 Part62
http://hibari.2ch.net/test/read.cgi/tech/1284775031/
VB.NET質問スレ(Part35)
http://hibari.2ch.net/test/read.cgi/tech/1284423653/
くだすれC++/CLI(初心者用)part2
http://pc12.2ch.net/test/read.cgi/tech/1268613679/

■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも
http://ideone.com/
コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。

直接貼る場合は下記サイトなどを利用してhtmlエンコードした方が
インデントも残って見やすいです
http://kawama.jp/php/encode_html.php

2 :デフォルトの名無しさん:2010/10/12(火) 22:39:02
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です

ロクに回答もしない癖に態度だけデカイエセ回答者の出入り禁止
他人の人格を攻撃する荒らしの出入り禁止

3 :デフォルトの名無しさん:2010/10/12(火) 23:00:16
(-_-メ)

4 :デフォルトの名無しさん:2010/10/12(火) 23:08:39
前スレ >>990
http://ideone.com/YCIlz
こんな感じでいいんじゃないか?


5 :デフォルトの名無しさん:2010/10/13(水) 13:53:23
(-_-メ)

6 :デフォルトの名無しさん:2010/10/13(水) 14:04:07
>>4
前スレ見てないけどButton押しても反応ないよ?

7 :デフォルトの名無しさん:2010/10/13(水) 14:25:46
>>4
textboxに入力された文字列で始まる項目のみを表示するプログラムだってのはわかってるのか?
俺の環境(vs2010 .net3.5)じゃしっかり動いてるぞ

8 :7:2010/10/13(水) 14:27:15
x >>4
o >>6

9 :デフォルトの名無しさん:2010/10/13(水) 14:46:22
こうじゃだめなの?
http://ideone.com/VsVaY

10 :デフォルトの名無しさん:2010/10/13(水) 15:00:05
>>9
なんでDictionaryを使ったのか説明して欲しい

てかDictionaryとListは別物なんだからlistsって変数名はまずいだろ

11 :デフォルトの名無しさん:2010/10/13(水) 15:02:23
listsは変数じゃないよ

12 :デフォルトの名無しさん:2010/10/13(水) 15:08:30
じゃあ何?

13 :デフォルトの名無しさん:2010/10/13(水) 15:13:35
dt.Rows.Add("aabc");
dt.Rows.Add("babc");
dt.Rows.Add("cabc");
dt.Rows.Add("zaabc");

すいませんAddRangeみたいに一気に入れられる方法教えてください

14 :デフォルトの名無しさん:2010/10/13(水) 15:14:36
dtは何?

15 :デフォルトの名無しさん:2010/10/13(水) 15:15:14
コピペしたものなので分かりません

16 :デフォルトの名無しさん:2010/10/13(水) 15:21:48
>>13
元のデータはどういう形で存在するんだ?
コードに直打ちしてるの?テキストファイルから読み出すの?それともSQL?
はたまた別のクラスで生成されたListやDictonaryなの?

17 :デフォルトの名無しさん:2010/10/13(水) 15:24:09
フィールドのこと変数じゃないと思ってるやつはここ読めよ
http://msdn.microsoft.com/ja-jp/library/ms173118.aspx

18 :デフォルトの名無しさん:2010/10/13(水) 15:24:40
追加するデータは
string[] myarray = new string[]{"no1","no2","no5","no158"}
ListとDictonaryというのは使ってません
listBox1がフォームにあります

19 :デフォルトの名無しさん:2010/10/13(水) 15:25:38
string[] 配列 = { "abc", "aabc", "babc", "cabc", "zaabc" };

listBox1.Items.Clear();
listBox1.Items.AddRange(配列.Where(x => x.StartsWith(textBox1.Text)).ToArray());

求められてるのとは違うような気がするけど・・・

20 :デフォルトの名無しさん:2010/10/13(水) 15:27:13
コードは4さんのコードを使わせていただいてます
dt.Rows.Add("aabc");
dt.Rows.Add("babc");
dt.Rows.Add("cabc");
dt.Rows.Add("zaabc");
の部分をItems.AddRangeみたいにできませんかね?

21 :デフォルトの名無しさん:2010/10/13(水) 15:35:52
>>18
foreach (string s in myarray) dt.Rows.Add(s);
これでいいだろ

>>19
DataTableにこだわらないならそれもいいね

22 :デフォルトの名無しさん:2010/10/13(水) 17:53:04
>>21
ばかそれはないだろ

23 :デフォルトの名無しさん:2010/10/13(水) 17:59:02
それはないとはどういう意味かね?
まさか煽るだけかい?

24 :デフォルトの名無しさん:2010/10/13(水) 18:20:12
>>22
詳しく説明してくれないか?

25 :デフォルトの名無しさん:2010/10/13(水) 18:50:54
Action action = ins.method;
上記のような括弧のないメソッドを記述したのを見つけたけど、
括弧付きの場合とどう違うのん?

26 :デフォルトの名無しさん:2010/10/13(水) 18:55:19
>>25
C言語で言うところの関数ポインタ
デリゲートでぐぐればいいと思うよ

27 :デフォルトの名無しさん:2010/10/13(水) 19:05:06
>>25
Action action = new Action(ins.method);の省略形

28 :デフォルトの名無しさん:2010/10/13(水) 19:08:30
new っていつから省略できるようになったの?

29 :デフォルトの名無しさん:2010/10/13(水) 19:10:51
そういう省略系はなるべく採用してほしくないなあ・・・
なんか段々Cのころへ戻ってるじゃん・・・
IDEがタイプ補助してくれるだしさ・・

30 :デフォルトの名無しさん:2010/10/13(水) 19:12:29
C# 2.0から

31 :デフォルトの名無しさん:2010/10/13(水) 19:13:45
デリゲートに限った省略だよ
ラムダ式に new Func<int, int>(x => x)とか書きたい?

32 :デフォルトの名無しさん:2010/10/13(水) 19:16:58
ならいいけどさw

33 :デフォルトの名無しさん:2010/10/13(水) 19:21:24
C#2.0で匿名メソッドが導入されたから、それに合わせた変更でしょ
匿名メソッドやラムダ式はメソッドと同格なので、省略を許さないなら>>31みたいに書かないとおかしい


34 :デフォルトの名無しさん:2010/10/13(水) 19:40:08
前スレの990です
>>4先生ありがとうございます

35 :デフォルトの名無しさん:2010/10/13(水) 21:51:04
どういたしまして

36 :デフォルトの名無しさん:2010/10/13(水) 21:52:20
いえいえ

37 :デフォルトの名無しさん:2010/10/13(水) 22:02:55
VS2008です。ASP.NETでジェネリック ハンドラを作成したいのですが、
コードビハインドになりません。
別のファイルにコードを書き込むのチェックがEnable=falseになってます。
ジェネリックハンドラってコードビハインドできなのでしょうか。

38 :デフォルトの名無しさん:2010/10/13(水) 22:09:53
普通にできるけど・・・VS2010だからかな。

39 :デフォルトの名無しさん:2010/10/14(木) 00:19:05
>>20
無ければ作ればいいじゃない。エンジニアなんだから。
public static void AddRange(this DataTable self, params string[] arg)
{
foreach (var s in arg)
{
dt,Rows.Add(s);
}
}

こうすれば
dt.AddRange(array);
みたいにできない?

こんなんに拡張メソッド作るのがいいのかという噺はるけど・・・


40 :デフォルトの名無しさん:2010/10/14(木) 00:49:58
.NETのクラスライブラリ設計 開発チーム直伝の設計原則、コーディング標準、パターンより

- 取るに足らない拡張メソッドを定義することを避けます
-(特に、ソースコードを所有しているのではない型に対して)。

IEnumerable<T>みたいにインターフェースを拡張するのはいいけど、それ以外って誤解を生むだけだと思う。



41 :デフォルトの名無しさん:2010/10/14(木) 01:16:05
ライブラリ(public なもの)のコーディング規約と、
ちょこっと自分で使うだけの private なものの規約はまたずいぶんと違うからなぁ。

public な物の規約厳しい MS でも、private は好きにやれ的スタンスだったはず。

42 :デフォルトの名無しさん:2010/10/14(木) 01:43:45
たしかにライブラリの規約を持ち出すのは大げさか


43 :デフォルトの名無しさん:2010/10/14(木) 01:48:00
DataTableではなくDataRowCollectionを拡張するべきだろう
AddRangeがあるのにAddがないのはおかしいからな

44 :デフォルトの名無しさん:2010/10/14(木) 06:35:44
(´・ω・`)…

45 :デフォルトの名無しさん:2010/10/14(木) 07:33:02
>>43
そうだね〜。DataRowCollection拡張すべきだと思う。
携帯からだったから、Rowsプロパティが何型か忘れてて書けなかった。

補足ありがとう。



46 :デフォルトの名無しさん:2010/10/14(木) 10:22:06
Data Tableに入っているデータっていうのはstring型とかbyte型とかint型とか何でも入れられる系ですか?

47 :デフォルトの名無しさん:2010/10/14(木) 11:03:55
DataColumn.DataTypeが指定されていなければどんなデータを入れてもstringに変換される
DataColumn.DataTypeは一応どんな型でも指定できるけど、
DataTableを正しく動作させるなら基本 .NET Framework データ型に限定するべき
(基本 .NET Framework データ型ってのはstringとかbyteとかintとか)

48 :デフォルトの名無しさん:2010/10/14(木) 11:42:11
なんていうかobject型って便利だよね
戻り値の型に文字列も数値も入れられるからobject型で作ったほうが楽

49 :デフォルトの名無しさん:2010/10/14(木) 11:48:57
いかにも初心者スレっぽい意見だなあ

50 :デフォルトの名無しさん:2010/10/14(木) 11:55:58
>>48
もう引数も返り値もぜんぶobjectにしとけよ

51 :デフォルトの名無しさん:2010/10/14(木) 12:08:32
なんでそんあに投げやりなんですかい?objectがダメみたいじゃん

52 :デフォルトの名無しさん:2010/10/14(木) 12:13:01
駄目なのはお前の頭だ
objectのせいにするな

53 :デフォルトの名無しさん:2010/10/14(木) 12:15:24
じゃあなんで49と50みたいな事言うのか説明を求める

54 :デフォルトの名無しさん:2010/10/14(木) 12:17:44
何のためにジェネリック型が生まれたと思ってんの?

55 :デフォルトの名無しさん:2010/10/14(木) 12:21:46
その薬みたいなジェネリック型とは何か?

56 :デフォルトの名無しさん:2010/10/14(木) 12:24:25
実際にそういう考え方はあって、たいていのスクリプト言語はそうなってる。
デメリットを挙げるとキリがないが、一番初心者が実感してくれそうなのは
「インテリセンスが機能しない」かな

57 :デフォルトの名無しさん:2010/10/14(木) 12:38:19
objectとobject型って何がちがうのぅ?

58 :デフォルトの名無しさん:2010/10/14(木) 12:57:08
>>48
一生キャストしてろ。

59 :デフォルトの名無しさん:2010/10/14(木) 13:15:14
58
説明できないのか

60 :デフォルトの名無しさん:2010/10/14(木) 13:22:24
>>59 みたいにそれで勝ったつもりになってる奴が一番不幸だよなw

61 :デフォルトの名無しさん:2010/10/14(木) 13:24:07
59==60
相手が説明しないで逃げたからおれの勝ちみたい

62 :デフォルトの名無しさん:2010/10/14(木) 13:54:17
?

63 :デフォルトの名無しさん:2010/10/14(木) 14:10:53
で?

64 :デフォルトの名無しさん:2010/10/14(木) 14:18:33
説明できないなら開き直らず謝罪しましょう

65 :デフォルトの名無しさん:2010/10/14(木) 14:21:14
何様だよ

66 :デフォルトの名無しさん:2010/10/14(木) 14:21:29
まじめに説明するのがアホらしくて、誰も説明しないんだろ。

67 :デフォルトの名無しさん:2010/10/14(木) 14:21:55
失せろゴミ

68 :デフォルトの名無しさん:2010/10/14(木) 15:06:42
>>65
先に罵倒してきたクズに言われたくない

69 :デフォルトの名無しさん:2010/10/14(木) 15:31:14
>>68
何様だよ

70 :デフォルトの名無しさん:2010/10/14(木) 15:32:31
>>69
人格障害者黙ってろ

71 :デフォルトの名無しさん:2010/10/14(木) 15:38:47
いいから消えろよ
クズども

72 :デフォルトの名無しさん:2010/10/14(木) 17:05:44
ほいほい

73 :デフォルトの名無しさん:2010/10/14(木) 17:17:28
おまえら全員Object型に入れてやる。

74 :デフォルトの名無しさん:2010/10/14(木) 17:40:50
型が必要なくなるな

75 :デフォルトの名無しさん:2010/10/14(木) 18:32:30
やっほーい

76 :デフォルトの名無しさん:2010/10/14(木) 18:45:14
Yahho-i

77 :デフォルトの名無しさん:2010/10/14(木) 18:52:41
今更だが

関数の返り値をobjectにすることは必ずしも悪いことじゃないよ
たとえばobjectを引数に取る関数に渡すことを目的としてる場合とか
外部データを特定の型に変換して返す場合(デシリアライズなど)とかね
でもそれは楽をするためじゃなくて、型が定まらないから仕方なくやること

>>48を読むと楽をするために作者しか使えない意味不明な関数を作ってますっていう印象しか受けない

もし"勝ちたい"のであれば実際に作った関数をここに晒して、objectを返すことの有用性を証明すればいいよ

78 :デフォルトの名無しさん:2010/10/14(木) 19:07:57
プログラマは楽をする為にコードを書きます

79 :デフォルトの名無しさん:2010/10/14(木) 19:13:06
意味不明な関数で楽できるのは作ったやつだけ
周りの迷惑も考えてくれ

まあ自分だけで使うんなら構わないがな

80 :デフォルトの名無しさん:2010/10/14(木) 19:18:09
全てObjectにした場合、毎回キャストするのかね。
そう言えば昔、そう言うコーディング規約みたことあるな。
C言語だったので、型はちゃんと定義していたけど。

81 :デフォルトの名無しさん:2010/10/14(木) 19:21:48
毎回キャストするくらいなんだってんだ

82 :デフォルトの名無しさん:2010/10/14(木) 19:25:47
全てObjectにするならC#じゃなくてIronPythonあたりを使ったほうがいいかもな

83 :デフォルトの名無しさん:2010/10/14(木) 19:26:08
初心者スレっぽくていいじゃん(*´・ω・)(・ω・`*)ネー

84 :デフォルトの名無しさん:2010/10/14(木) 19:38:34
ライブラリでたまーにobjectを取るメソッドが公開されてると
ちょっとこわい

85 :デフォルトの名無しさん:2010/10/14(木) 19:39:43
WPFだとそんなんばっか

86 :デフォルトの名無しさん:2010/10/14(木) 19:50:30
MSはメタプログラミング大好きだから昔からそういうの多い

87 :デフォルトの名無しさん:2010/10/14(木) 19:54:42
dynamicはどうよ

88 :デフォルトの名無しさん:2010/10/14(木) 20:28:55
dynamicって動的言語との連携以外使い道あるの?

89 :デフォルトの名無しさん:2010/10/14(木) 20:32:17
COMがあるだろ
動的言語っていってもDLR言語に限らずブラウザのJavaScriptとの相互運用にも使えるから非常に有用

90 :デフォルトの名無しさん:2010/10/15(金) 00:10:43
COMを参照設定したときに巨大なラッパーDLLが作られなくなった。
そのかわりインテリセンスも効かなくなったけど。

91 :デフォルトの名無しさん:2010/10/15(金) 00:14:40
OfficeからCOMを使えた例しがない

92 :デフォルトの名無しさん:2010/10/15(金) 00:17:59
Dreamキャスト

93 :デフォルトの名無しさん:2010/10/15(金) 00:50:06
dynamic、簡易的にXML読みたい時と、多重ディスパッチには結構使える。

94 :デフォルトの名無しさん:2010/10/15(金) 04:50:30
APIから帰ってくるJsonとか、でデシリアライズして、めんどうなことこの上ない。
しょうなないんだろうが。。。なんとかしてほしいの。

95 :デフォルトの名無しさん:2010/10/15(金) 09:08:51
>>91
ぜんぜん使えるが

96 :デフォルトの名無しさん:2010/10/15(金) 09:28:07
そもそもOfficeの中でCOM呼び出しまくりだろ。
糞クリップアートとか色々w

97 :デフォルトの名無しさん:2010/10/15(金) 15:26:50
ListViewにgroupという機能がありますが、これでグループ化した時に
そのグループ名をクリックしてそのグループを折りたたみたいと思います。
折りたたむ機能が無ければ、せめてクリックしたイベントがあればいいと思うのですが、
グループをクリックしたときのイベントはありますか?

98 :デフォルトの名無しさん:2010/10/15(金) 16:28:20
C#のJavaに対するメリットとデメリットは何でしょうか?
そもそもC#はJavaの代換として使えるのでしょうか?
よろしくお願いします。

99 :デフォルトの名無しさん:2010/10/15(金) 16:39:34
言語としての魅力は移行が簡単って所じゃないかな
.netフレームワークとしてはどっちもどっちだけど(Tomcatに対抗してASPに組み込めるとか?)

100 :デフォルトの名無しさん:2010/10/15(金) 16:48:09
>>99
移行が容易ってことだったら関係ないかな。。。どうもありがとう。

101 :デフォルトの名無しさん:2010/10/15(金) 16:58:39
Windowsでクライアントやスタンドアロンアプリ作る上では圧倒的に楽

102 :デフォルトの名無しさん:2010/10/15(金) 17:45:05
>>98
出来ることに、そんなに差はないと思うよ。
Monoとか使えばLinuxでも動くし。
MSのサポートは受けれないとおもうけど

103 :デフォルトの名無しさん:2010/10/15(金) 18:27:44
>>99 >>101-102
C#良さそうなのでC#にします。
詳しい解説ありがとうございました。


104 :デフォルトの名無しさん:2010/10/15(金) 19:08:30
列挙型に限ってはJavaの仕様の方が好きだ

でもコードがfinalだらけになるのが致命的に好きじゃない

105 :デフォルトの名無しさん:2010/10/15(金) 20:01:16
>>98
C# のメリット:
マイクロソフト、進化速い、サーバーもクライアントもライブラリそろってる、一貫性(オレオレライブラリ乱立してない)がある

C# のデメリット:
マイクロソフト、Mono だと GUI 回りはやっぱり弱い

Java の代替になら、完璧にこなす。

106 :デフォルトの名無しさん:2010/10/15(金) 20:03:50
マイクロソフトってメリットじゃね?

107 :デフォルトの名無しさん:2010/10/15(金) 20:08:07
メリットだよ。

108 :デフォルトの名無しさん:2010/10/15(金) 20:08:38
企業としてみるならサンとオラクルよりは好き

109 :デフォルトの名無しさん:2010/10/15(金) 20:09:47
現在最悪なのは林檎かねぇ…
あまりに囲いすぎ…

110 :デフォルトの名無しさん:2010/10/15(金) 21:54:11
C#に限った話ではないと思うのですが、開発環境がVS 2008なのでここで質問させて頂きます。

フォントサイズと行数によってTextBoxの高さを設定したいのですが、どのように算出出来るのかが解りません。
今ここで、MS UI Gothic 9pt で1行のみだと19pxとなりました。
9pt / 72 * 96 = 12px + 2*2(Fixed 3D境界線の幅)=16px と、3pxの行方が解らなくなりました。
これが一行おきに出来るマージなのか、全体におけるマージなのか理論的に判別出来ず状態で、知恵を貸して頂けたら幸いです。

111 :デフォルトの名無しさん:2010/10/15(金) 21:56:19
あ、APIスレ落ちてんのか

112 :デフォルトの名無しさん:2010/10/15(金) 22:14:33
>>110
問題設定が間違ってるな。

113 :デフォルトの名無しさん:2010/10/15(金) 22:16:06
難しいことは良くわからんが、こんなコードでいいんじゃないか?

private void textBox1_TextChanged(object sender, EventArgs e) {
  if (string.IsNullOrEmpty(textBox1.Text)) {
    textBox1.Height = textBox1.PreferredHeight;
  } else {
    int margin = textBox1.PreferredHeight - textBox1.Font.Height;
    int height = textBox1.Font.Height * textBox1.Lines.Length;
    textBox1.Height = height + margin;
  }
}

114 :デフォルトの名無しさん:2010/10/15(金) 22:23:41
Font.HeightじゃなくてFont.GetHeight()使ったほうが正確かもしれない

115 :110:2010/10/15(金) 22:55:28
すいません、問題の書き方が悪かったです。

例えばTextBoxの最小行数を設定保存ファイルから読み込んで
その行数から、Load時にminimumsizeを設定する…と言った具合です。
その時に境界線、スクロールバーの高さを差し引いて設定行数に合わせてTextBoxのサイズ変更・・・というのが最終的にやりたいことです。

116 :デフォルトの名無しさん:2010/10/15(金) 23:00:28
だから、「設定行数」なんて概念に意味があるのかと。
冷静に考えてみ?
意味ないでしょ。

117 :デフォルトの名無しさん:2010/10/15(金) 23:07:04
>>115
>>113のコードを少し直せばできないか?


118 :デフォルトの名無しさん:2010/10/15(金) 23:07:46
>>110
試しにフォントサイズ変更してみて。
もし、3pxのずれが大きくなるなら、仕様かな。どっかに書いてあった。

119 :デフォルトの名無しさん:2010/10/15(金) 23:24:55
(´・ω・`)ノシ お〜い

120 :110:2010/10/15(金) 23:26:41
>>118
9pt→12pt(16px)にしたら高さ23pxだったので、差分値が3pxと同じでした・・・仕様ではないっぽいです(?)
>>117,113-114
コードとにらみ合ってます。
GetFontHeightもHeightも9ptで12pxと出ただけで、差分3pxの行方は解らずのままでした。

121 :デフォルトの名無しさん:2010/10/15(金) 23:26:46
このスレは殺伐としてなくて良スレだな

122 :デフォルトの名無しさん:2010/10/15(金) 23:28:18
>>120
いや、もう少し大きくしてみて。20ptぐらい。

123 :110:2010/10/15(金) 23:33:33
>>122
21pt(28px)でHeight=35pxでした。
境界線が2*2=4pxなので、35-32=3px で、やはり同様の結果でした
(整数計算の便宜上、20ではなく21にさせて頂きました)

124 :デフォルトの名無しさん:2010/10/15(金) 23:34:36
textboxのPreferredHeightのソースを見ると

int fontHeight = base.FontHeight;
if (this.borderStyle != BorderStyle.None)
{
   fontHeight += (SystemInformation.BorderSize.Height * 4) + 3;
}
return fontHeight;

と、定数で3たしてるし
あんまり気にしなくていいんじゃない?


125 :デフォルトの名無しさん:2010/10/15(金) 23:43:46
超Magic☆Numberキタ━━━━(゚∀゚)━━━━ !!!!!

126 :デフォルトの名無しさん:2010/10/15(金) 23:57:51
だから、目標行数にあわせてTextBoxの高さを変えるなんて発想が前時代的。
意味あんのかよそのUI。

127 :デフォルトの名無しさん:2010/10/16(土) 00:00:24
PreferredHeight については触れた事が無いので曖昧ですが、
調べてみると3pxが定数で加算されるような情報は幾つか見当たりますね
定数として加算する方向でやってみようかと思います。。

128 :デフォルトの名無しさん:2010/10/16(土) 00:10:04
PreferredHeightってのはテキストボックスのフォントの高さと境界線のスタイルに
基づいて計算された単一行テキストボックスに最適な高さのことだよ。


129 :デフォルトの名無しさん:2010/10/16(土) 00:21:01
>>126
現代的なUIはどうなってるんだ?

130 :デフォルトの名無しさん:2010/10/16(土) 00:43:06
ボックスモデル?

131 :122:2010/10/16(土) 01:05:54
>>123
ものすごくごめんなさい。何か勘違いしてた。
以前Textboxの横に行番号をつける時があって、その時は +2 とか +3 で調整してた。。。

132 :デフォルトの名無しさん:2010/10/16(土) 01:20:10
仕方がない、許したる。

133 :デフォルトの名無しさん:2010/10/16(土) 01:27:22
なんと寛大なお心!

134 :デフォルトの名無しさん:2010/10/16(土) 01:33:54
ガハハ

135 :デフォルトの名無しさん:2010/10/16(土) 01:44:04
こうすれば細かい数値計算一切せずに確実な設定ができるぞ

private void Form1_Load(object sender, EventArgs e) {
  int line = 5;
  textBox1.Text = new string('\n', line-1);
  System.Drawing.Size s = textBox1.GetPreferredSize(Size.Empty);
  textBox1.MinimumSize = new Size(0, s.Height);
}

136 :デフォルトの名無しさん:2010/10/16(土) 02:48:53
>>132-134
この流れに何かワロタw

137 :質問どす:2010/10/16(土) 11:20:20
キーイベントでの RControlKey, LControlKey は WinAPI の GetAsyncKeyState を利用しないと取れないって認識でおkですか?

138 :デフォルトの名無しさん:2010/10/16(土) 12:07:54
修飾キーとしてなら、そうだな

139 :>>137:2010/10/16(土) 12:23:01
>>138
thx!

140 :デフォルトの名無しさん:2010/10/16(土) 12:49:00
( ̄ー ̄)ニヤリ

141 :デフォルトの名無しさん:2010/10/17(日) 11:53:41
string hitomoji = "漢";

hitomojiが漢字なのかを簡単に判別するclassなどはありますでしょうか?
hitomojiの内容は固定ではありません

142 :デフォルトの名無しさん:2010/10/17(日) 12:03:29
Char.GetUnicodeCategory でUnicode カテゴリーとれる。
漢字ってカテゴリーまでとれたかどうか忘れたけども(ひょっとしたら可読文字でひとくくりかも)。

143 :デフォルトの名無しさん:2010/10/17(日) 12:13:13
「その他の文字」で一括り。
SJIS(CP932)とUnicodeの対応表を入手してソースコードに持っといて
漢字以外を除外してやればいいんじゃない。

144 :デフォルトの名無しさん:2010/10/17(日) 12:22:23
まず漢字とは何かを定義するところから

145 :デフォルトの名無しさん:2010/10/17(日) 12:23:35
そもそも漢字の定義ってある程度曖昧だよね
踊り字は漢字か否か?とか

146 :デフォルトの名無しさん:2010/10/17(日) 12:31:04
iskanji()ないのか・・・

147 :デフォルトの名無しさん:2010/10/17(日) 12:36:01
じゃあ、↓これはどうかな?
http://www.forest.impress.co.jp/docs/news/20091104_326335.html

148 :デフォルトの名無しさん:2010/10/17(日) 12:38:00
あっ、てか、Regex にあるな、Unicode の細かいカテゴリーにマッチする判定方法。
http://ufcpp.net/study/csharp/ap_reverse.html#string_03

149 :デフォルトの名無しさん:2010/10/17(日) 15:57:37
へぇ、そんなのあったのか。

150 :デフォルトの名無しさん:2010/10/17(日) 16:27:05
ありましたよ

151 :デフォルトの名無しさん:2010/10/17(日) 17:53:28
backgroundworkerでforで1から20000までのカウントをリアルタイムでform1のlabel1に表示したいのですが、DoWorkからはコントロールを書き換えては駄目とありました
どうすればよいのでしょう?

152 :デフォルトの名無しさん:2010/10/17(日) 18:01:10
Invoke

153 :デフォルトの名無しさん:2010/10/17(日) 18:11:30
DoWorkでReportProgressメソッドを呼び出して、ProgressChangedイベントを発生させればいいよ。
ProgressChangedイベントにアタッチされたメソッドがメインスレッドに同期した状態で実行されるから、そのメソッドにlabelを更新する処理が書ける。
ああ、WorkerReportsProgressプロパティをtrueに設定するのを忘れるなよ。




154 :デフォルトの名無しさん:2010/10/17(日) 18:13:52
BackGroundWorkerって微妙に使いにくいよな

155 :デフォルトの名無しさん:2010/10/17(日) 18:14:35
form1のlabel1に1から20000までのカウントをリアルタイムで表示するだけなら
backgroundworkerなんて使わずにtimerで充分だけどな

156 :デフォルトの名無しさん:2010/10/17(日) 18:27:11
C#で、CSVデータのデータ編集ツールを作りたいのですが、
編集をいちいちコーディングするのでは生産性が低いので、
InputManやActiveReportsのように入力支援や帳票開発
コンポーネントのように、データの項目編集に使える
良いコンポーネントって無いですか?


157 :デフォルトの名無しさん:2010/10/17(日) 18:35:41
Access使えば簡単・・・

158 :デフォルトの名無しさん:2010/10/17(日) 18:41:18
カウントをリアルタイムに表示・・・表示しても読めないだろw
っていう話じゃないのか・・・

159 :デフォルトの名無しさん:2010/10/17(日) 18:45:32
>>157 に一票。

どうしても作りたいなら InputMan 買えば?
それか、DataGrid, DataForm。

160 :デフォルトの名無しさん:2010/10/17(日) 18:53:17
>>158
え、そこ!?
真面目に答えたおれ超KYじゃないか

161 :デフォルトの名無しさん:2010/10/17(日) 19:32:54
>>159
InputManでテキストデータ編集できるんですか?

Accessクエリでも良いのですが、結構複雑なことを
やりたいんです。
ズバリ自動化やWaha!TransformerのようなEAIツールのような
感覚でデータ編集ジョブを作ってそれをC#で呼び出すような
ことが出来ると良いのですが・・

今は、Accessでクエリ作って、SQLビューでSQL文をコピって
SQLサーバーやOracleに貼り付けして使用なんて事もしているんですが
ある程度複雑なことをやろうとすると手詰まりになることもあるので・・・

162 :デフォルトの名無しさん:2010/10/17(日) 19:48:46
あきらめろよ

163 :デフォルトの名無しさん:2010/10/17(日) 21:16:27
川俣がまた何か言ってます

164 :デフォルトの名無しさん:2010/10/17(日) 21:29:23
何か言ってますね

165 :デフォルトの名無しさん:2010/10/17(日) 21:31:45
>>161
もうちょっとやりたいことをまとめてから質問した方が良いよ
情報小出しにされると解答するのめんどくさくなるから

166 :デフォルトの名無しさん:2010/10/17(日) 23:30:15
>>153

167 :166:2010/10/17(日) 23:32:12
すいませんミスです
>>153ありがとうございました!理想の動きができました!

168 :デフォルトの名無しさん:2010/10/17(日) 23:34:06
アンカーだけ書く奴って時々いるけど、
こういう奴の思考回路って意味不明な質問文書く奴と同じなんだろうな。

基本、自分を客観視できないというか、他人から自分の言動がどう見えるか
多分想像する能力が欠如しまくってるとしか思えない。

169 :デフォルトの名無しさん:2010/10/17(日) 23:36:53
>>168
あわてんぼさん

170 :デフォルトの名無しさん:2010/10/17(日) 23:38:43
>>168
早まったなw

171 :デフォルトの名無しさん:2010/10/17(日) 23:38:48
やっちまったなw

172 :デフォルトの名無しさん:2010/10/17(日) 23:41:18
>>168みたいな奴って時々いるけど、
こういう奴の思考回路って意味不明な質問文書く奴と同じなんだろうな。

基本、自分を客観視できないというか、他人から自分の言動がどう見えるか
多分想像する能力が欠如しまくってるとしか思えない。

173 :デフォルトの名無しさん:2010/10/17(日) 23:42:20
>>172
悪かったからそう苛めないでよw

174 :デフォルトの名無しさん:2010/10/17(日) 23:43:33
仕方がない、許したる。

175 :デフォルトの名無しさん:2010/10/17(日) 23:44:39
こうして>>168は書き込み前リロードのスキルを身につけたのであった

176 :デフォルトの名無しさん:2010/10/18(月) 00:00:15
次は172が面白いこと言う番ですね

177 :デフォルトの名無しさん:2010/10/18(月) 01:28:51
>>174
なんと寛大なお心!

178 :デフォルトの名無しさん:2010/10/18(月) 01:48:48
ガハハ

179 :デフォルトの名無しさん:2010/10/18(月) 01:57:48
LINQの勉強したいんだけど、なにかいい題材はない?

180 :デフォルトの名無しさん:2010/10/18(月) 02:06:07
データベース系でよく見るのは図書管理かな

181 :デフォルトの名無しさん:2010/10/18(月) 02:10:13
3D 関係だと、頂点とか面とかの数が多くなるから、LINQ が使える。
C# が使えるかどうかは別として。

182 :デフォルトの名無しさん:2010/10/18(月) 02:12:21
C# から HLSL を生成するんだ!
(注: 本当にやっている人います)

183 :デフォルトの名無しさん:2010/10/18(月) 02:27:44
>>180
岡崎図書館の館長に土下座して許可取らないと愛知県警に逮捕されるぞw

184 :デフォルトの名無しさん:2010/10/18(月) 02:36:56
>>180
検索、貸出管理、予約機能があれば十分ですかね
完成したらここに貼りつけてもいいですか?

>>181,182
なんかハードル高くね?間違いなく身長の3倍はある。


185 :デフォルトの名無しさん:2010/10/18(月) 03:32:58
データベースは自分で作れよw
Dictionaryとかで

186 :デフォルトの名無しさん:2010/10/18(月) 03:36:29
>>185
DictionaryにしたらLinqの練習にならないんじゃない?

187 :デフォルトの名無しさん:2010/10/18(月) 03:58:29
データソースを問わないのが LINQ だろ。

188 :デフォルトの名無しさん:2010/10/18(月) 10:43:46
ttp://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello&langpair=en%7Cja

IEで投げるとutf8で返って来るけどC#WebClientで投げると文字化けします。
原因は何でしょうか?

189 :デフォルトの名無しさん:2010/10/18(月) 10:49:57
フォームアプリケーションで「Hellow World!」が出せるようになったばかりの者です。
めっちゃ基本的過ぎて誰にも聞けないので教えてください。
C#でビルドして出てきたEXEを、他のパソで起動するには、
そのパソにNET Frameworkとかいうのが入ってないと駄目なんですよね?
しかもバージョンが合ってないと駄目なんですよね?
で今のWindows7とかには最初からNET Frameworkは入ってるのですか?XPには入ってませんよね。


190 :デフォルトの名無しさん:2010/10/18(月) 11:23:03
>>189
入ってないとダメ
バージョンは上位互換があるからとりあえず最新版が入ってればおk
7とVistaは最初から入ってる、XPは入ってない

191 :デフォルトの名無しさん:2010/10/18(月) 11:26:11
>>188
System.Net.WebClient wc = new System.Net.WebClient();
wc.Encoding = Encoding.UTF8;
string x = wc.DownloadString(new Uri("http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello&langpair=en%7Cja "));

192 :デフォルトの名無しさん:2010/10/18(月) 11:45:53
>>190
どうもありがとうございました!スッキリしました!

193 :デフォルトの名無しさん:2010/10/18(月) 11:56:24
>>191
ありがとうございます


194 :デフォルトの名無しさん:2010/10/18(月) 13:04:56
>>192-193
いえいえ

195 :デフォルトの名無しさん:2010/10/18(月) 13:22:18
>>194
お前は答えてないだろw
と毎回突っ込みたくなる

196 :デフォルトの名無しさん:2010/10/18(月) 15:29:53
どうしてわかった?

197 :デフォルトの名無しさん:2010/10/18(月) 15:32:32
>>180
早速作ってみた
http://ideone.com/gUrO6

やたら長くなってしまって申し訳ないんだけど、
もし暇な人いたらレビューしていただけませんか?

198 :デフォルトの名無しさん:2010/10/18(月) 17:39:41

Linqの勉強にしてはLinq以外を作りすぎな気もするが・・・

199 :デフォルトの名無しさん:2010/10/18(月) 17:46:11
学校の課題で褒められたから公開しよ!

そうだ!自分でネタふりしてその回答提示でやればもっと凄いと思われるお!


200 :デフォルトの名無しさん:2010/10/18(月) 18:06:57
>>199
そうだね、そういうつもりじゃなかったんだけど、
見返してみたらそのまんまでなんか嫌になってきた

201 :デフォルトの名無しさん:2010/10/18(月) 18:33:26
>>198
Linqは横断的な技術で、コレクションやデータベース、
スレッドが縦糸とするとLinqは横糸的な位置づけ。
お題を決めたらLinq以外が膨らむのはしょうがないと思うよ。

202 :デフォルトの名無しさん:2010/10/18(月) 18:35:26
コード評価の前に人が評価されるなんて
ここは怖いインターネットですね^^;

203 :デフォルトの名無しさん:2010/10/18(月) 18:38:20
>>199
こいつ性格悪すぎワロタw


204 :デフォルトの名無しさん:2010/10/18(月) 21:46:09
ideoneおちてるな

205 :デフォルトの名無しさん:2010/10/20(水) 10:30:13
ファイルのレジュームでレジューム可能ならレジュームを不可能なら最初からダウンロードしたいのですが
常に最初からのダウンロードになってしまいます。m_FileStream.Lengthがファイルの長さだと思うので
特に間違ってはいないように思うのですが何処がおかしいのでしょうか?。

m_FileStream = new FileStream(m_path, FileMode.OpenOrCreate, FileAccess.Write);

HttpWebRequest request = (HttpWebRequest)ar.AsyncState;
request.AddRange(m_FileStream.Length);

HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar);
if (response.StatusCode != HttpStatusCode.PartialContent)
{
m_FileStream.Seek(0, SeekOrigin.Begin);
}
else
{
m_FileStream.Seek(0, SeekOrigin.End);
}

206 :デフォルトの名無しさん:2010/10/20(水) 10:34:15
>>205
request.AddRange(m_FileStream.Length);
だと先頭からm_pathのファイルサイズまでってことじゃない?

207 :デフォルトの名無しさん:2010/10/20(水) 22:10:49
バイト配列に格納されてる値にxor演算をしたいのですが(1つ単位で)
どうやらバイト同士ではxor演算ができないようなので一度int型に入れてから演算し、もう一度バイト配列に入れようと思うのですが・・・

byte[] code;//値が代入されている
byte[] code2;
int ii;
for (i = 0; i < code.Length; i ++)
{
ii = code[i];
ii = ii ^ 0x30;
code2[i] = BitConverter.GetBytes(ii);
}

しかしこれだと「byte[]をbyteに暗黙的に変換できません」と怒られてしまいます
byte配列の1つはbyte型と同じ扱いはできないのでしょうか?

だとしたらどうすればいいですか?

208 :デフォルトの名無しさん:2010/10/20(水) 22:15:24
BitConverter.GetBytes(int)の戻りをよく見ろ

209 :デフォルトの名無しさん:2010/10/20(水) 22:17:11
>>207
その例ならiiを普通にbyteにキャストすればいいだけ。
GetBytesなんかループの中で使うな。恐ろしく非効率。

210 :デフォルトの名無しさん:2010/10/20(水) 22:28:23
>>208-209
ありがとうございます。解決しました。
やっぱ似てるとはいえDelphiとは違いが多いですね;;

211 :デフォルトの名無しさん:2010/10/20(水) 22:38:03
C#のビット演算や型変換はほぼC言語準拠だから
いくらDelphiと似てるといっても全く関係ない部分でしょ
でも>>207はDelphiと違うからわからないとかいうことではなくてそれ以前の問題な気がするが

212 :デフォルトの名無しさん:2010/10/20(水) 23:06:41
code2[i] = (byte)(code[i] ^ 0x30);
念のために書いておくけどこれで十分だからね

213 :デフォルトの名無しさん:2010/10/21(木) 10:41:06
>>210
Delphiでも普通にキャストするだろw

214 :デフォルトの名無しさん:2010/10/21(木) 11:00:44
C#ではshortやbyte同士の演算結果がintに拡張されるからキャストが必要になるんだよね。
short a, b, c;
a = (short) (b + c);


215 :デフォルトの名無しさん:2010/10/21(木) 11:59:47
正確には演算結果が拡張されるんじゃなくて拡張してから演算してる
C#に限らず、ごく一般的な動作

216 :デフォルトの名無しさん:2010/10/21(木) 14:02:03
レジスターに格納するときどうこうという話でなくて名目上の動作の話。
Cの場合short同士の演算結果はあくまでshortで精度の拡張は行われないから
こういうキャストはいらない。

217 :デフォルトの名無しさん:2010/10/21(木) 14:21:02
Cはintからshortやunsigned charへの代入をキャストなしでできるので
どちらの考え方があってるかは規格書見ないとわからんけど
おそらく計算前に拡張しているでいいと思う。
C#との違いはキャストの要不要の部分だろう。

218 :デフォルトの名無しさん:2010/10/21(木) 14:38:28
あってるよ
Cでもchar+charでオーバーフローしたりはしない

219 :デフォルトの名無しさん:2010/10/21(木) 14:43:15
Cの、intより小さい型からintへの汎整数拡張は演算の前に起きる。
キャストが要らないのはintを小さい型の変数に代入するのがエラーではないから。

220 :デフォルトの名無しさん:2010/10/21(木) 14:46:11
どなたか教えてください。
某雑誌の「一気にわかるC#」という付録を見てサンプルを作ってみたのですが、
記事によると、フォームが開くとき、それをハンドラとして最初にロードされるプログラムを書く、
とあるのですが、記事の通り書いたのですが動いてくれません。
自分なりに調べたところ、フォームのデザイナが自動生成するコード(FormMain.Designer.cs)の中に
必要な一文が抜けてることを発見しました。
「this.Load += new System.EventHandler(this.FormMain_Load);」
なのですが、この一文をデザイナ(というかIDE?)で自動生成させるための操作はどうすればいいのでしょうか?
記事にはそのへんのところが詳しく書いてないのです。
手動で書き足すしかないのでしょうか?
他にも数箇所、抜けてる行があるのですが良く分かりません。orz


221 :デフォルトの名無しさん:2010/10/21(木) 14:50:27
フォームをダブルクリック

222 :デフォルトの名無しさん:2010/10/21(木) 15:15:38
なるほど!他のブタンとかのオブジェクトをハンドラにするときと同じなんだ!
ありがとうございました。

223 :デフォルトの名無しさん:2010/10/21(木) 15:24:35
VC#2010Expで勉強中なのですが、
複数のフォームから参照できる変数はどこに書けば良いのですか?

224 :デフォルトの名無しさん:2010/10/21(木) 15:27:57
ブタンに引火しないように注意な。

225 :デフォルトの名無しさん:2010/10/21(木) 15:45:44
>>223
C++やVBでいうところのグローバル変数は.NETには無いので
一番最初にその変数を使うクラス内でメンバ変数として保持しておいて、
別のフォームにはコンストラクタを追加して渡したり:
MyForm form2 = new MyForm("Additional Info");
プロパティ経由で渡したりする:
MyForm form3 = new MyForm();
form3.MyProp = "Additional Info";

226 :デフォルトの名無しさん:2010/10/21(木) 15:54:50
実質的なグローバル変数はあるよ
internal static class Globals {
 internal string どこからでも参照可能 = "Additional Info";
}
のようにすればどこからでも Globals.どこからでも参照可能 でアクセスできる
褒められたものではないけど初心者なら>>225のような方法よりもわかりやすいし
変に背伸びするより見通しのよいコードになると思う。

227 :デフォルトの名無しさん:2010/10/21(木) 16:14:55
static class Programの中に変数書いたら他のフォームから見れました。

228 :デフォルトの名無しさん:2010/10/21(木) 20:21:46
XmlReaderからXmlSerializerに切り替えたら、難読化してるせいで動かなくなってしまった。。。
ここら辺どうしてます?

229 :デフォルトの名無しさん:2010/10/21(木) 20:28:00
難読化しない
難読化から除外する

230 :デフォルトの名無しさん:2010/10/21(木) 20:45:14
>>229
あっ、部分的に除外ってできるのか。さんきゅー。
[ObfuscationAttribute(Exclude = true, ApplyToMembers = true)]

231 :デフォルトの名無しさん:2010/10/21(木) 21:06:07
文字列変数string strが10文字に達していなかったら足りない分だけx(英字のx)で埋めたいのですが、指定した数だけ文字を作り出す関数とかってないですかね
参考書読んでも書いてないんですが・・・

232 :デフォルトの名無しさん:2010/10/21(木) 21:07:08
String.PadRight or PadLeft

233 :デフォルトの名無しさん:2010/10/21(木) 21:09:07
>>231
文字を作り出すのなら new String(char, count) も。
参考書より、この手のものはコンストラクタかメソッドか静的メソッドのどれかにあるわけだから
入力補完を眺めるのがいいと思うよ。

234 :デフォルトの名無しさん:2010/10/21(木) 21:22:02
>>233
理想の動きができました
ありがとうございます

235 :デフォルトの名無しさん:2010/10/21(木) 21:27:09
>>233は文字列を作り出すならこういうやり方もあるよ」とうことであって
>>231の目的ではPadRightとPadLeftが正解だろ
そのまんま「文字列が指定した文字数に達していなかったら足りない分だけ指定した文字で埋める」メソッドだ

236 :デフォルトの名無しさん:2010/10/22(金) 07:34:12
ReactiveExtensionsって何?おいしいの?

237 :デフォルトの名無しさん:2010/10/22(金) 07:48:04
>>236
イベントにたいする処理や非同期呼び出しをLINQ使って簡単に処理出来るようになるよ。

238 :デフォルトの名無しさん:2010/10/22(金) 08:15:49
まだ始めたばかりのものなのですが、
フォームアプリのHowToが知りたくて、「"C#" フォームアプリケーション」でググったのですが、
「Hello World!」入門サイトか、逆にやたら難しい研究サイトみたいなのしか出てこないですね?
中間くらいの難易度で実用的なアプリのサンプルと、
そのコードの解説をしてるようなサイトか参考書を教えて欲しいです。お願いします。


239 :デフォルトの名無しさん:2010/10/22(金) 08:22:40
>>238
@ITの.NET Tipsとかはどう?

240 :デフォルトの名無しさん:2010/10/22(金) 08:23:57
>>238
2ch 専用ブラウザの作り方
http://cs2ch.blog123.fc2.com/blog-entry-1.html

241 :デフォルトの名無しさん:2010/10/22(金) 11:36:48
>>239
こんな大きなサイトがあったのですね!参考になります。ありがとうございました。

242 :デフォルトの名無しさん:2010/10/22(金) 12:25:23
>>238
入門と@ITの中間くらい。わかりやすい。実用ではない
ttp://ufcpp.net/study/csharp/index.html

243 :デフォルトの名無しさん:2010/10/22(金) 14:12:22
( ^ω^)おっおっ

244 :デフォルトの名無しさん:2010/10/22(金) 16:16:00
(´・ω・`)…

245 :デフォルトの名無しさん:2010/10/22(金) 16:58:35
ω・`)…

246 :デフォルトの名無しさん:2010/10/22(金) 17:05:16
・`)…

247 :デフォルトの名無しさん:2010/10/22(金) 17:06:22
`)…

248 :デフォルトの名無しさん:2010/10/22(金) 23:34:57


249 :デフォルトの名無しさん:2010/10/23(土) 00:05:24
Form1でボタンを押すとForm2が開くようにしたいのですが、

Form2 frm2 =new Form2();
frm2.Show();

だとボタンを押す事に別のForm2が開いてしまいます。
一つだけ開けるようにするにはどうしたらいいですか。

250 :デフォルトの名無しさん:2010/10/23(土) 00:08:00
private Form2 frm2;
private void button1_Click(object sender, EventArgs e) {
 if (frm2 == null) {
  frm2 = new Form2();
  frm2.FormClosed += (s, e1) => frm2 = null;
  frm2.Show();
 }
}

251 :デフォルトの名無しさん:2010/10/23(土) 00:08:58
ボタンを押せなくする

252 :デフォルトの名無しさん:2010/10/23(土) 00:10:26
Form2 frm2;
これをForm1のどこからでも参照できる位置に置いて

frm2 =new Form2();
この部分をLoadイベントもしくはShowイベントなどで一度だけ呼ばれるようにする

253 :デフォルトの名無しさん:2010/10/23(土) 00:34:02
>>250,252
有り難うございます。

254 :デフォルトの名無しさん:2010/10/23(土) 00:35:04
>>249
シングルトンパターンの応用でいいでしょ。
Form2のコントスラクタをprivateにして(この場合静的クラスは不可)、
こんなメソッドを作ればOK.

private static Form2 _instance;
public static void ShowInstance()
{
  if (_instance == null)
  {
    _instance = new Form2();
    _instance.FormClosed += _instance_Closed;
  }
  _instance.Show();
}


255 :デフォルトの名無しさん:2010/10/23(土) 00:38:46
>>251に一票入れたいのに無視されててどうしたものかと思案中

256 :デフォルトの名無しさん:2010/10/23(土) 00:40:03
>>255
それでもいいけどボタンを再度おせるような状況も考えないといけないからなあ

257 :デフォルトの名無しさん:2010/10/23(土) 00:43:41
一つしか開かないって言ってるんだから
ボタンを再度押せるような状況考えてやっても
大きなお世話だろうけど、普通はシングルトンだろうな

258 :デフォルトの名無しさん:2010/10/23(土) 00:45:58
ボタン押したらForm2をアクティブにさせるべきだろう

259 :デフォルトの名無しさん:2010/10/23(土) 00:48:08
まあこれ以上は蛇足だろうな

質問者の条件が漠然としてるし
その漠然とした要件を一応は満たした回答でてるんだし

260 :デフォルトの名無しさん:2010/10/23(土) 00:48:08
一つしかいらないからってシングルトンにするのは間違い
Form2の仕様の都合上二つ以上作れない場合に使うもの

261 :デフォルトの名無しさん:2010/10/23(土) 01:49:46
TimeSpan型の値があるのですが、それが25分かどうか調べたい場合どうしたらいいのでしょうか?

行いたいことは、TimeSpan型の値が25分ぴったりになったときにMessageBoxを表示させたいと思っております。
TimeSpan型の値はライブラリから返される値なので、関数を呼ぶと取得ができます。

262 :デフォルトの名無しさん:2010/10/23(土) 01:58:36
とりあえず、Timerを提案

263 :デフォルトの名無しさん:2010/10/23(土) 02:17:41
http://dobon.net/vb/dotnet/file/binaryformatter.html
ここを参考にバイナリへの読み書きを勉強してるのですが、
配列を扱う方法が分かりません。

例えば以下のようなクラスの配列Meiboの中身をバイナリへ順に書き込み、
読み出す時には同じようにMeiboに格納していくには、上記URLの例を
どういう風に変えればいいですか?


//クラス
[Serializable()]
public class Member
{
 public string Name;
 public int age;
}

//クラスの配列
static public Member[] Meibo = new Member[100];



264 :デフォルトの名無しさん:2010/10/23(土) 02:27:55
>>261
もう少し詳しく書いてくれないかね

もしそのTimespanが実時間と連動しているならSystem.Timers.Timer使えばいい。
そうじゃなくてゲームの中の時間とか、シーク可能な動画の経過時間とかならこんな感じ。
double m = ts.TotalMinutes - 25;
if (0 <= m && m < 1) {  // 25分から25分59秒99
 // do task
}
定期的にTimespanをチェックする方法を知りたいなら、フォームのデザインビューでTimerを追加してそこのイベントに書けばいい


265 :デフォルトの名無しさん:2010/10/23(土) 02:36:27
>>263
Meibo = (Member[])LoadFromBinaryFile("meibo.bin");
SaveToBinaryFile(Meibo, "meibo.bin");

変えなくてもこれでいいんじゃないか
要素がシリアル化可能ならその配列もバイナリ化できる

266 :デフォルトの名無しさん:2010/10/23(土) 03:16:38
>>265
できました有り難うございます。

267 :デフォルトの名無しさん:2010/10/23(土) 08:30:19
>>249は普通にShowDialog()使えばいいとかの話じゃないよな?w

268 :デフォルトの名無しさん:2010/10/23(土) 10:50:50
>>267
まさか幾ら何でもそんな落ちはないだろw

269 :デフォルトの名無しさん:2010/10/23(土) 11:18:29
残り所要時間を出したいのですが、とても大きな秒数から日時に変換するシンプルな方法を教えてください。
DateTimeを使えば簡単にできそうな印象はあるのですがどうもスッキリいけません。

270 :デフォルトの名無しさん:2010/10/23(土) 11:30:59
TimeSpanよく見ろよ

271 :デフォルトの名無しさん:2010/10/23(土) 11:32:25
Console.WriteLine(new TimeSpan(0,0,1000000).Days);

272 :デフォルトの名無しさん:2010/10/23(土) 11:36:56
まず時刻と時間を弁別するところから始めた方が良いかもしれない

273 :デフォルトの名無しさん:2010/10/23(土) 11:42:34
DateTimeの加算演算子はオーバーロードされてるからTimeSpanそのまま加算できます

274 :269:2010/10/23(土) 12:29:13
みなさん、ありがと

お礼 つ焼きそば

275 :デフォルトの名無しさん:2010/10/23(土) 12:33:43
焼きそばなんているか

そこに手をついて尻をこっちに向けろ

276 :デフォルトの名無しさん:2010/10/23(土) 13:18:38
お札(さつ)をください

277 :デフォルトの名無しさん:2010/10/23(土) 13:21:54
                    ,,/⌒`ノ
     ;:;:;.         ,/      `⌒γ
     ;:;:;          (  /⌒⌒"" \\           ど
     ;:;:         ( / ⌒  ⌒:::::::::ヽ i        明  う
     ;:;:.         ヽi (・ )` ´( ・):::::::::::!         る  だ
     :;:;:;.            |  (_人__):::::::::::::::|           く
     ;:;:;:             \  'ー´:::::::::::::/ヽ       な
     ;:;:.         ノ.:!:.:.:.:`ゞ-<7.:〉.:.:.:i.:.:}   ろ  っ
     从 __  _,,,/.:.:/:.:.:.:.:.:| }-{/i.:/.:.:.:.:|.:/     う  た
      从从百円}と_」.:/!.:.:.:.:.:.:.!  ̄ リ.:.:.:.:.:り     ?
         ̄ ̄    ̄  |.:.:.:.:.:./_ :__ヽ.:.:.:.:\
                \/.:.::..:.:.:.:.:.:..:\:.::./
                /.:.:.:.:.:.:.「^Y.:.:.:.:.:.:|´
                 {.:.:.:.:.:.:.:.| ,!.:.:.:.:.:.:|
                  \.:.:.:.:.:.V.:.:.:.:.:.:.:|
                  \.:.:.::|.:.:.:.:.:.:.:!
                    > 'ゝ─‐イ、

278 :デフォルトの名無しさん:2010/10/23(土) 13:50:40
TimeSpan.FromSeconds
こんなのもあるんだな

279 :デフォルトの名無しさん:2010/10/23(土) 20:36:44


280 :デフォルトの名無しさん:2010/10/23(土) 22:32:30
とてつもなく低レベルな質問ですが形振り構ってられないので投稿してみます

C#

281 :デフォルトの名無しさん:2010/10/23(土) 22:33:23
間違えて書き込んでしまいましたすみません出直してきます

282 :デフォルトの名無しさん:2010/10/23(土) 22:45:26
形振り構ってられないのに出直してくる余裕あるの?

283 :デフォルトの名無しさん:2010/10/23(土) 22:51:12
なんだこれw

284 :デフォルトの名無しさん:2010/10/23(土) 23:35:46
なりふりかまわずのなりふりって形振って書くのか
いい勉強になった

285 :デフォルトの名無しさん:2010/10/23(土) 23:37:55
D:\chinko.exe --sikosiko

と入力するとstringを返すCUIプログラムがあるとします。
これをVC#のフォームアプリでボタンを押すと実行されてDOS窓みたいなのを表示させず
返値だけ取得したいのですがどうすればいいですか?

286 :デフォルトの名無しさん:2010/10/23(土) 23:41:32
非表示で実行してファイルにリダイレクト。
終わってからファイルを読み込み、ってのが一番楽。

287 :デフォルトの名無しさん:2010/10/23(土) 23:43:31
よくわからんけど、Processと回答
ttp://dobon.net/vb/dotnet/process/standardoutput.html

288 :280:2010/10/24(日) 00:06:51
C#について全く知識が無いのですが
「何か展示品が欲しいからC#で簡単なゲームを5日で作ってこい」
という課題を無理に出されました
唯一勉強してるCの方も本を見通しただけでまともなプログラムなんて組めません
正直そこらへんの人とプログラミングに対する知識は差が無いです

何か簡単にプログラムを組めるゲームのお勧め等を教えてもらえないでしょうか(モグラたたきなど
何から取り組めばいいのかわかりません
課題を出した方も無理難題を言って叱りたいだけにしか見えなくて八方ふさがりです

289 :デフォルトの名無しさん:2010/10/24(日) 00:17:57
>>287
そこ見たんですけど、
psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec");
の行の変え方が良くわかんないんです。


290 :デフォルトの名無しさん:2010/10/24(日) 00:26:29
FileName = @"D:\chinko.exe"; // アプリ
Arguments = "--sikosiko"; // 引数

291 :デフォルトの名無しさん:2010/10/24(日) 00:40:51
>>288
じゃんけんでもいいんじゃないの?
グーチョキパーの絵書いて人に選ばせて、COMは自分の手を乱数で選んで、
勝ち負け判定で終わり
余裕があれば、ご褒美とか付ける

292 :デフォルトの名無しさん:2010/10/24(日) 00:54:09
>ご褒美
脱衣とかw
別の意味で展示できなくて、ちょうど良い当て付けになるなw

293 :288:2010/10/24(日) 00:58:09
>>291
じゃんけん、○罰ゲーム、文字を読むゲーム(クイズ等)をあげたら
調子のんなカスとまで言われたので・・・でも知らない言語、短い期間でモグラ叩きとかまでは作れる気がしません;
じゃんけん以上モグラたたき以下のゲームで自分が作れる、となるともう選択肢がなくて参ってます;

294 :デフォルトの名無しさん:2010/10/24(日) 00:59:40
>>293
テトリスとかマインスイーパぐらいなら満足してくれそうだな


295 :デフォルトの名無しさん:2010/10/24(日) 01:02:30
C#でゲーム作れとかどういう状況だよwww


296 :293:2010/10/24(日) 01:12:33
>>294
そういうものなら満足してくれると思います
マインスイーパはデフォでPCについてるので流石に却下されますが・・・
1からC#を勉強してたら時間が無いので、勉強の仕方にも困ってます

>>295
ちょっとしたゲームはVBで作ったことがあるので最初はいける、と思ってたのですが
C#じゃないとダメみたいです、C#を使うことが重要だらしいので

297 :デフォルトの名無しさん:2010/10/24(日) 01:17:28
>>293
5日後にそいつ殴れば? 面白いゲーム考えましたとか言いながらさ

298 :デフォルトの名無しさん:2010/10/24(日) 01:18:38
C#でテトリスならすでにソースが公開されてたような・・・

299 :デフォルトの名無しさん:2010/10/24(日) 01:19:33
とりあえずこのへん読んどけば?
http://ufcpp.net/study/csharp/getstarted.html

300 :デフォルトの名無しさん:2010/10/24(日) 01:21:42
C#でテトリス
http://cs2ch.blog123.fc2.com/blog-category-3.html

301 :デフォルトの名無しさん:2010/10/24(日) 01:30:17
>>290
すみません、引数の中にunko.txtなどのファイルのパスがあった場合はどう書くんですか?
どのプログラムで試しても引数にファイルパスが入ってると値が返ってこないんです。

302 :296:2010/10/24(日) 01:42:28
>>297
自分の相方が課題を出されたとき時全く文句を言わないで今になって「できねぇ・・・」って言ってるのが正直つらいです
反論してるときに「とりあえずやってない内から文句言うなよ・・・」みたいな感じの白い目を向けていたのになんなのもう
近頃騒がれてるブラックって常にこんな感じでやりとりしてるのかな、と思ったり・・・

>>299
今そこを参照しているのですが、ゲームを作るにあたって一個一個消化してたら
時間が無くなってしまうのでどうすればいいか途方にくれています

>>300
有難うございます
全部見て参考にしたほうがいいのかな、これ・・・

303 :デフォルトの名無しさん:2010/10/24(日) 01:48:57
>>302
自分で作ったと言い張らなければいいんじゃないの?
嘘を言っても後で苦労するだろうしw
参考にしたと言っておけば・・
まあ作った経験がないのなら動くソースをいじって勉強するのが最短だよ


304 :デフォルトの名無しさん:2010/10/24(日) 01:58:21
>>300で貼られた動画の時点で理解できないんだけど詰んでるんだろうか・・・

>>303
有難うございます
怒られそうですが出来ないよりかはマシなので試してみます
ソースまで載せてるサイトが検索してもなかなか見つからないのですが、
どこか展示されているサイトなど知っていたら教えてくださると幸いです

305 :299:2010/10/24(日) 02:00:04
>>302
じゃあ右の目次だけ目を通しとけばいいよ
思い当たったら見ればいい



306 :デフォルトの名無しさん:2010/10/24(日) 02:00:21
>>304
動画はC#じゃないよ
C(C++?)で作ってるし

それをC#で作るとこうなるってだけだから動画は後で参考にすればいいんじゃね?
1時間も見てると長い

ソース公開されてるでしょ

307 :299:2010/10/24(日) 02:12:55
>>304
その動画貼ってあるサイトで公開されてるソースはこれね
http://sourceforge.jp/projects/cs2h/svn/view/Tetris.tar.gz?root=cs2h&view=tar


308 :304:2010/10/24(日) 02:19:42
>>305
有難うございます
参照したいときに見てみます

>>306
ソースダウンロードしました、一応これは著作権フリーなのかな・・・?
実行できないのですが、何か実行する前にする操作などありますでしょうか

309 :デフォルトの名無しさん:2010/10/24(日) 02:24:59
フォルダのbin/Debugのなかにblock.pngをいれれば動くんじゃないかな

310 :308:2010/10/24(日) 02:42:32
>>309
有難うございます、無事実行できました


既にあるフリーのソースコードをいじって勉強していく形でいく方針にするとします
以降は自分で出来る範囲まで頑張ってみます
普通なら罵倒される駄目質問に長時間にわたって親身になって答えてくれる皆様には感謝し尽くせません
怖いくらい優しくしてもらって本当に感謝してます、有難うございました

311 :デフォルトの名無しさん:2010/10/24(日) 04:22:13
自動プロパティでgetのみを作ったのですが
これをクラス内部で変える方法はあるのでしょうか。

public int X { get; }

public void foo() {
  this.??? = 123; // Xを変えたいが記述が分からない
}

---------------------------

自動を使わない方法のみ??
private int _x;
public int X {
 get {
 return this._x;
 }
}

public void foo() {
 this._x = 123;
}

312 :デフォルトの名無しさん:2010/10/24(日) 04:30:11
>>311
クラス内部からそのまま_xを触れるでしょ
あくまで外部からどうするかだし

313 :デフォルトの名無しさん:2010/10/24(日) 04:32:32
>>311
自動使わない方法のみか、
public int X { get; private set; }
にするか。

314 :311:2010/10/24(日) 05:01:59
>>312
分かりにくい書き方ですみませんorz

>>313
setをprivateにする記述があったとは!
ありがとうございます。

315 :デフォルトの名無しさん:2010/10/24(日) 08:58:10
30分でいいから文法に目を通した方がスムーズに進む希ガス

316 :デフォルトの名無しさん:2010/10/24(日) 12:22:19
public int X { get; }

は、4.0ではコンパイル通るようになったのか?

317 :デフォルトの名無しさん:2010/10/24(日) 12:25:41
通らない
というか、仮に通ったとしてどういう動作が期待されるわけ?それは

318 :デフォルトの名無しさん:2010/10/24(日) 12:57:29
>>317
値をセットできないじゃん。何がしたいの?

319 :317:2010/10/24(日) 12:58:12
え?俺?
提案者じゃないのでわかりません

320 :316:2010/10/24(日) 13:57:40
因みに俺も提案者ではないので、聞くなら311に

321 :デフォルトの名無しさん:2010/10/24(日) 14:51:54
Ω<(ry

322 :デフォルトの名無しさん:2010/10/24(日) 15:17:57
期待するのは313でしょ。
そういう質問じゃん。

323 :デフォルトの名無しさん:2010/10/24(日) 15:24:23
class BaseClass{
  public int A {get; private set;}
  public int B {get; private set;}
  public BaseClass(int a, int b);
}

class DrvClass : BaseClass{
  public DrvClass(string c){
    int a, b;
    // cからaとbを計算
    base(a, b);
  }
}

例のように派生クラスの引数から値を計算して
既定クラスのコンストラクタを呼び出したいんですが
なにかいい方法はないでしょうか。





324 :デフォルトの名無しさん:2010/10/24(日) 15:34:57
class DrvClass : BaseClass {
  class Hoge {
    public int a, b;
  }
  public DrvClass(string c) : this(Parse(c)) {
  }
  private DrvClass(Hoge x) : base(x.a, x.b) {
  }
  private static Hoge Parse(string x) {
  }
}
こんなのとか?

325 :デフォルトの名無しさん:2010/10/24(日) 15:45:16
>>324
なるほど、ありがとうございます

326 :デフォルトの名無しさん:2010/10/24(日) 16:27:09
>>324
へー。そんな書き方出来るのか。


327 :デフォルトの名無しさん:2010/10/24(日) 18:08:50
int[].Average()でint[]{0,326464}の時に0が返ってくる時があるのですが平均値を思い違いしているのでしょうか?

328 :デフォルトの名無しさん:2010/10/24(日) 18:12:23
いみふ(

329 :デフォルトの名無しさん:2010/10/24(日) 18:17:21
うん、意味不明。

>>327
「返ってくる時がある」って何?
LINQ の Average は決定論的な動作しかしないはずだけども。

他に何か変な処理してるんじゃないの?

330 :デフォルトの名無しさん:2010/10/24(日) 18:17:44
>0が返ってくる時がある
ってのは0の場合とそうじゃない場合があるってことか?

普通に考えたら163232以外ありえないが



331 :327:2010/10/24(日) 18:26:00
int rate = (int)int[].Average();
int abc = (int) (1192/rate);

rateが予想に反して0になるから下の割り算でエラーになったのですが問題はrateがどうして
0になるのかがわからないのです。int[]の中身を見ると0,326464が入っていました。
int[]が非同期から持ってきている変数なのでタイミング的にデバッグの数字が一致しない
時があるのでしょうか?

332 :デフォルトの名無しさん:2010/10/24(日) 18:34:44
配列にまだ何も入っていない状態でAverage計算
0除算エラー発生
0と326464が配列に追加される

こんな流れだろ

333 :デフォルトの名無しさん:2010/10/24(日) 18:36:05
int rate = (int)(int[].Average());

334 :デフォルトの名無しさん:2010/10/24(日) 18:37:36
>>331
どう考えても怪しいのは非同期の方。

335 :デフォルトの名無しさん:2010/10/24(日) 20:19:07
>>333
キャストより . が優先順位上なので、それは意味なす

336 :デフォルトの名無しさん:2010/10/24(日) 21:33:12
指定したアプリケーションのテキストボックスに
文字列を自動入力するようなプログラムを
作りたいと思っているのですが、
何について調べればよろしいでしょうか?

337 :デフォルトの名無しさん:2010/10/24(日) 22:18:01
>>336
自動入力についての詳しい仕様を書いてくれないと回答しようがありません。

338 :デフォルトの名無しさん:2010/10/24(日) 22:24:28
UI Automation?

339 :デフォルトの名無しさん:2010/10/24(日) 22:27:50
SendKeysとかそういうのだろ
スレ違い

340 :336:2010/10/24(日) 22:32:09
>>339
どうやらSendKeysでできそうです。
ありがとうございました。

341 :デフォルトの名無しさん:2010/10/25(月) 13:55:40
何かのexeファイルあったとき、それが実行されたときにCOMオブジェクトに
なるかどうか、実行前に先に知るにはどうにすればよいでしょうか。

342 :336:2010/10/25(月) 18:18:00
すみません。
>>341ですが、自己解決しました。

343 :デフォルトの名無しさん:2010/10/25(月) 19:09:04
デストラクタ ~classname(){} の前に何も付かないのが寂しいです!



344 :デフォルトの名無しさん:2010/10/25(月) 19:18:07
これでさみしくない

/* デストラクタ */ ~classname(){}

345 :デフォルトの名無しさん:2010/10/25(月) 19:43:09
静的コンストラクタの前にアクセス修飾子がないのも寂しい。。。

346 :デフォルトの名無しさん:2010/10/25(月) 20:38:44
必要がないものに付けるのは蛇足

347 :デフォルトの名無しさん:2010/10/25(月) 20:54:09
じゃあjavaみたいにstatic { }でいいな
デストラクタも~ { }で

348 :デフォルトの名無しさん:2010/10/25(月) 21:12:45
うん

349 :デフォルトの名無しさん:2010/10/25(月) 21:20:36
C#で、タブ付きMDIってできないの?ぐぐったら、有料コンポーネント使うとかでてきた。

MFCはデフォルトでできるんだけど。

350 :デフォルトの名無しさん:2010/10/25(月) 21:36:44
ない
そんな大掛かりなUIが必要なソフトならそれくらい自分で作るだろ

351 :デフォルトの名無しさん:2010/10/25(月) 21:42:28
LGPLやコマーシャル版なら無料ってのが海外にあったような

352 :349:2010/10/25(月) 21:44:47
>>350
初心者でもタブ付きMDIくらい作りたいだろ(´・ω・`)
MVCには、ついてるじゃん。

>>351
探してみますわ。ありがとう。

353 :デフォルトの名無しさん:2010/10/25(月) 21:47:39
MVC?

354 :デフォルトの名無しさん:2010/10/25(月) 21:55:44
「ドッキングウィンドウ」というキーワードからアプローチするといいかも

355 :デフォルトの名無しさん:2010/10/25(月) 22:18:25
海外のサイトを探せば無料の沢山あるよ
ライセンスは要確認だけど

356 :デフォルトの名無しさん:2010/10/25(月) 22:33:45
C#はVisual Studioと一緒に使うの水晶ですか

357 :デフォルトの名無しさん:2010/10/25(月) 22:36:45
C#自体はそうでもないけど.NETがほぼVisualStudio専用

358 :デフォルトの名無しさん:2010/10/25(月) 22:37:25
>>356
VisualStudiogが動作する環境なら使わないメリットは
ほとんど無いと思いますが?

359 :デフォルトの名無しさん:2010/10/26(火) 00:08:11
必要は発明のなんちょけ

360 :デフォルトの名無しさん:2010/10/26(火) 00:19:10
開いている間はとても少ない確立ですがアクセスの可能性があるとします
ReadAllTextを使うとします
1MBのファイルを100つ開くのと100MBのファイルを1つ開くのではどちらがパフォーマンス、危険性などに問題がありますか?


361 :デフォルトの名無しさん:2010/10/26(火) 00:23:30
わかりません。
アクセスとは何ですか?ファイルを何に使いますか?どういうパフォーマンスが求められているのですか?
何の危険性を心配しているのですか?
具体的に書きましょう。

362 :デフォルトの名無しさん:2010/10/26(火) 00:30:31
>>361
アクセス・・・メモ帳で開く、保存するなどの行為とします
ファイルはテキストファイルで、読み込んでstring配列に格納するとします
パフォーマンスというか、どちらの処理の方が早いか、ですね
危険性は、ファイルを他のアプリケーションが編集、保存等をしている最中のため、読み込みに失敗したり例外を吐いたりということです

わかりづらくてすいません;;


363 :デフォルトの名無しさん:2010/10/26(火) 00:38:07
迷わず行けよ、行けばわかるさ、とでも言って欲しいのかなw
いや真面目に結局何が知りたいのかサッパリ若布

364 :デフォルトの名無しさん:2010/10/26(火) 02:25:03
IOなんて例外発生の塊なんだから
1Mのファイルを100個開いていって途中でどうやら使いにくいってなったら
その場で流動的に回避する方法しかないんでは(100Mの一つのファイルに落とし込むとか?)

365 :デフォルトの名無しさん:2010/10/26(火) 03:06:25
こういうのって具体的にどんなシステムを
作ろうとしているのかで答えが変わってくるから
抽象的な喩え話をされても答えにくいんだよな

まあ俺なら、それぞれのファイルが独立していて単体で読み書きできる場合以外は分割しないだろうな



366 :デフォルトの名無しさん:2010/10/26(火) 11:01:30
>>349
え?どうゆこと?
C#だけではMIDIアプリは作れないって事?
おれMIDIとかWAVとかの音楽系のアプリめざして勉強始めたばかりなんだけど・・・
誰かおしえてorz

367 :デフォルトの名無しさん:2010/10/26(火) 11:02:36
MDIとMIDIを読み違えるでない

368 :デフォルトの名無しさん:2010/10/26(火) 11:05:35
MDIってウインドウの中にウインドウを持てるやつだろ
エクセルとかもそういう構造だし

MIDIとは違うけど

369 :デフォルトの名無しさん:2010/10/26(火) 11:06:36
あ、ほんとだ・・・ハズ・・・・

370 :デフォルトの名無しさん:2010/10/26(火) 11:18:35
間違いついでに教えてくださいwww
C#でMIDIやWAVを扱えるアプリのサンプルを紹介してる本やサイト探してます。
分かりやすい日本語サイトとかないですかね?
Win32API使ったC++の10年以上前の本なら見つけたんだけど、

371 :デフォルトの名無しさん:2010/10/26(火) 11:19:45
つい最近ここか相談スレで同じネタあったよ
過去ログ調べてみ



372 :デフォルトの名無しさん:2010/10/26(火) 11:36:13
>>371
たぶん見たことあると思う。ロクなレス付かなかったんじゃなかった?
WAVの同期/非同期再生くらいならありこち見かけるけど、ちょっと専門的なのって無いですね。


373 :デフォルトの名無しさん:2010/10/26(火) 12:18:13
初めて質問します。よろしくおねがいします。
C#を使い始めて日が浅く調べてもヒットしなかったので教えてください。

タスクトレイ常駐型のプログラムを作成したいのですが、設定ウィンドウをHideやShowで
一時的に見えなくするのではなく、タスクトレイのアイコンからメニュー起動で設定ウィンドウ
を生成したい場合どのような方法がありますででしょうか?

よろしくおねがいいたします。

374 :デフォルトの名無しさん:2010/10/26(火) 12:20:40
>>373
隠しウインドウ作ってそいつとメニューを結びつけて
別ウインドウを作るとか

375 :デフォルトの名無しさん:2010/10/26(火) 12:39:18
>>372
分かりやすいかどうかは貴方のスキル次第だけど
ちょっと専門的なのがいいならこれのソースでも読んでみれば?
http://naudio.codeplex.com/




376 :デフォルトの名無しさん:2010/10/26(火) 12:57:00
これ買ってレビューしてくれ
ttp://www.amazon.co.jp/dp/4877832181/

377 :デフォルトの名無しさん:2010/10/26(火) 13:17:52
>>376
この辺はwavファイルの勉強すればバイナリ読みすればできるやん
http://www.cutt.co.jp/book/978-4-87783-218-6.html

378 :デフォルトの名無しさん:2010/10/26(火) 13:24:07
>>374
別のフォームを作って、そのフォームはタスクトレイ用でそこから設定ウィンドウを
開ける・・・ということでしょうか?

常駐型なので出来るだけメモリへのロードを抑えたいのですがその別のフォーム
を作る以外にはないでしょうか?作業の内容としてはフォルダ内のファイルを監視
して新規、変更等があれば処理を行うというものです。

仕様するコンポーネントはNotifyIconとFileSystemWatcherを使用する予定です。

379 :デフォルトの名無しさん:2010/10/26(火) 13:26:10
隠しform一つでいくらもメモリーくわないよw

380 :デフォルトの名無しさん:2010/10/26(火) 13:33:17
>>372
初心者のレベルを超えてるからって結論じゃなかったっけ?
で、オープンソース読めってのは妥当な回答だったような。

結局 winapi や directx系使って鳴らす形になるので
C#とかC++とかの言語は関係ないし。
ファイルフォーマットを熟知して解析し、
それで得たデータの意味を熟知し、足し引きして好きな形に扱って出力するだけの話なんだよね。
同期・非同期は準備コードレベルという。

出力先は普通にoutデバイスだったり、
スペクトルアナライザや音ゲーみたいなのだと画面にも出したり。

Yahoo!知恵袋で自分で頑張って作ってどうしても判らない所を質問してる人が居たけど、
そんな姿勢じゃないと難しいと思うよ。

381 :デフォルトの名無しさん:2010/10/26(火) 13:33:22
>>379
 そうですか><一応業務用に常駐させておくので少しでもメモリ節約しようと
思いまして@w@あと、個人的にどうすればいいのか知りたかったのとw

382 :デフォルトの名無しさん:2010/10/26(火) 13:37:35
>>380
まあこんなところで説明しきれるほど小さい内容じゃないしなw

>>381
作ってみればいいじゃん
最低限のフォーム表示するアプリ程度ならいくらメモリ消費してるか
調べるのが面倒なくらいの消費量だよw

383 :デフォルトの名無しさん:2010/10/26(火) 13:53:59
>>381
適当なサンプル作ったので参考までに
(インデントは全角スペースにしてあるので注意)

static void Main()
{
  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  //Application.Run(new Form1()); // ←フォームはApplicationContextあたりで管理してやれば無駄なメモリは食わない

  //メニュー
  ContextMenuStrip cmStrip1 = new ContextMenuStrip();
  //好きなメニューにする

  // こいつを使えばFormに関係なくタスクトレイを扱える
  NotifyIcon ni = new NotifyIcon();
  ni.Icon = new Icon("../../NET12.ico"); // パスは好きにしてね(ね)
  niIcon.ContextMenuStrip = cmStrip1; // メニューはこのプロパティでできるみたい
  ni.DoubleClick += new EventHandler(ni_DoubleClick); // イベント追加
  ni.Visible = true; // これしないと見えない

  Application.Run();
}

// タスクトレイのアイコンをダブルクリックしたらメッセージダイアログが出ます
static void ni_DoubleClick(object sender, EventArgs e)
{
  MessageBox.Show("ok");
}

こんな感じでできるっしょ。

384 :373:2010/10/26(火) 13:58:26
ちょっと、コードなしのフォームx2 とコンポーネントだけ配置したアプリを作ってみました。
ビルドして起動してみるとタスクマネージャー上で8,124k使用されており、C++ですべて作り込んだ
同じソフトが2,480kとかなり差がでました。もしかしてC#で作ること自体重くなってしまうのでしょうか?

開発環境がC++(ボーランド)とC#なのですが、そのあたりにも関係あるのでしょうか?

ちなみに、少し容量が増えたくらいで〜って思うかもしれませんが、探究心から知りたいのでよろしくおねがいします。

ちなみにC++で作成されたソフトのコードに冗長なところもあり、ロジックの作りなどが古いので
新規作成する経緯があります。(#defineによる文字列置き換えや、グローバル変数を多用しているなど)

385 :デフォルトの名無しさん:2010/10/26(火) 14:03:49
>>383
ふむふむ!ありがとうございます。さっそくコードを精査してみて
テストしてみます♪

386 :デフォルトの名無しさん:2010/10/26(火) 14:05:05
>>384
ttp://okwave.jp/qa/q2113581.html

387 :デフォルトの名無しさん:2010/10/26(火) 14:08:42
>>381
http://ideone.com/knsuP
こうすれば隠しフォームを使わずにできるよ

ただ1回でもフォームを生成すると閉じてもメモリは減らない。
メモリ節約というなら設定フォームを別の実行ファイルにして呼び出すって形にしないとだめかもね

388 :デフォルトの名無しさん:2010/10/26(火) 14:10:55
そんなに搭載メモリ少ないのか?

389 :デフォルトの名無しさん:2010/10/26(火) 14:13:42
GCですからね

390 :370:2010/10/26(火) 14:29:54
>>376>>377
おあ!C#での解説本あったのか!でも高い!orz
こういうの電子化して欲しいな。

>>380
そうなんですよね。結局、ソース読めるようになれって話で。
でも以外にC#で書かれてるの少ないんだよね。どうしてもC++中心な感じ。

>>375はダウンロードすればC#のソースが見れるのですかね?
英語サイトは全く読む気力が起きないもんで・・・


391 :デフォルトの名無しさん:2010/10/26(火) 14:37:41
>>390
うん。

392 :デフォルトの名無しさん:2010/10/26(火) 14:38:16
>>390
右にあるDownloadってでっかいボタン押すだけだろ
この程度もわからないならソース読んでも意味無いかもな

393 :デフォルトの名無しさん:2010/10/26(火) 14:47:10
ソースのダウンロード数、なかなかw

394 :デフォルトの名無しさん:2010/10/26(火) 15:50:39
C#でWAVの録音・再生、MIDIの送信・受信、SMFの再生プログラム作った
ちゃんと動いているよ

以下必要な要件

・C#の基本が分かっていること
・C++で同様のプログラム作成のスキルがあること
・マーシャリングについてある程度知識があること

ワカランことがあったら解説するけど
丸投げ、クレクレ坊はお断り


395 :デフォルトの名無しさん:2010/10/26(火) 16:07:08
>>372
Windowsで音を鳴らすにはどうしたらいいかとか、
waveファイルの解析方法などはC#全く関係ないだろ。>>375はたまたまC#で書いてあるだけだ。
そこらへんの知識は自分で入手した上で、このWinAPIの関数を
C#で使うにはどうしたらいいかとか、C++のサンプルではこのようになっているが
どうC#に持っていけばいいかとかいうのはこのスレで聞けばいい。

396 :デフォルトの名無しさん:2010/10/26(火) 16:19:16
特定の形式に従ってファイルを読み書きするのって、調べてるとどうしても
英語の仕様書に行き当たることが多いと思うけどな。
もちろん仕様書にはC#どころかどの言語のソースコードも載ってないのが普通。

397 :デフォルトの名無しさん:2010/10/26(火) 17:12:58
スレ違いだけどzipのパスワードに設定できる最大長をご存知の方は居ます?。
プログラムを作る過程で調べた人がいないかと思いまして。

398 :デフォルトの名無しさん:2010/10/26(火) 17:24:41
C++でMIDIプログラム作ったなぁ。
Windows APIバイブルの3巻だっけな。
押入れにまだあるなw

399 :370:2010/10/26(火) 18:26:15
>>394
そうなんですよ。お手軽さからC#から入ったんだけど、オーディオMIDI関係って
未だにC++やAPIの比重が高くて困ってるんですよ。
でも>>376みたいな本や>>375みたいなサンプルがあるとかなり助かります。
サンプルがあれば、多少分からなくても、見よう見まねで先に進めますから。
ただ>>375はちょっとパーツが多すぎて、まだ僕には難しすぎますねorz
まあ気長に進めていきますよ。趣味だから。
興味はMIDIのほうにあるんですけどね。MIDI関係の情報って少ないですよね。

400 :370:2010/10/26(火) 18:29:22
>>395
もっと具体的な質問が出来るようになったら、そのときはよろしくお願いしますよ。
今はまだ、サンプルの真似や組み合わせすることしか出来ません。

401 :370:2010/10/26(火) 18:32:19
>>395
間違えました。

402 :デフォルトの名無しさん:2010/10/26(火) 18:38:14
興味はいいけど、プログラムチェンジ何番とかコントロールチェンジ何番とかわかってるのかね。

403 :370本物:2010/10/26(火) 18:48:44
>>401
君は誰?さっそくかるーいナリスマシかね?
ここはそういうところ?めんどくせーなw

404 :デフォルトの名無しさん:2010/10/26(火) 22:22:57
>>403
お前が一番めんどくせーよ


405 :デフォルトの名無しさん:2010/10/26(火) 23:21:13
面倒だったらソフトウェアで自動化すればいいじゃない!

406 :デフォルトの名無しさん:2010/10/26(火) 23:56:13
すでにスクリプト化してるから。2ちゃんに手動で投稿してるのはお前だけ。

407 :デフォルトの名無しさん:2010/10/27(水) 00:08:56
なんかそんな小説を昔読んだな
引きこもってるやつがスクリプト化されたBBSとかチャットのせいで、
自分の国が滅んでたの気づかなかったってやつ

408 :デフォルトの名無しさん:2010/10/27(水) 00:15:09
SFの古典ネタっぽい感じもするけどね。SFよく知らんが。
PKディックとかにそんなのありそう。
まあデカルトの「我思う故に我あり」だって考えようによってはその手の話だ。

409 :デフォルトの名無しさん:2010/10/27(水) 00:41:37
もう3回くらい見てるなその手のは
直近で2年位前か

410 :デフォルトの名無しさん:2010/10/27(水) 03:39:16
プログラムがプログラムについて議論するとはなかなか興味深いね

411 :デフォルトの名無しさん:2010/10/27(水) 06:35:49
じゃあ話題を変えて
うちの妹の話でもしようか

412 :デフォルトの名無しさん:2010/10/27(水) 10:43:44
手書きでコントロールを追加しようと思ったのですがModifiersが候補にでてきません。
publicに設定したいのですがどうしいたら良いのでしょうか?。


413 :デフォルトの名無しさん:2010/10/27(水) 15:36:14
Modifiersはプロパティじゃないよ
フォームの自動生成機能がコントロールをどのアクセシビリティレベルで宣言するかを指定するための項目
だから手動でtextbox1を追加するときはpublic TextBox textbox1;
って書けばModifiersをpublicに設定したのと同等になる



414 :デフォルトの名無しさん:2010/10/27(水) 15:57:17
(´・ω・`)

415 :デフォルトの名無しさん:2010/10/27(水) 22:57:05
(´・ω・`) …

416 :デフォルトの名無しさん:2010/10/28(木) 00:09:36
( ´ ・ ω ・ ` )

417 :デフォルトの名無しさん:2010/10/28(木) 00:57:23
ライフゲームとかで使うグリッドはe_State[,] cell = new e_State[columns,rows]ってやりますけど、List使うならList<List<e_State>>ですよね?
後で描画することを考えるとList<>使うよりも前者のほうが向いてるんでしょうか?

418 :デフォルトの名無しさん:2010/10/28(木) 01:26:02
ライフゲームで使うグリッドなんて工夫のしようがないから2次元配列を直に出してもいいかな
ライフゲーム”とか”で使うなら範囲外アクセスを回避したいとかグリッドを結合させたいとか色々要求が別にあるだろうから、それならそれで別に作る

419 :デフォルトの名無しさん:2010/10/28(木) 04:56:11
そもそもそういうゲームでグリッドに対してListを使う利点ってあるの?
盤面の大きさ変える必要があるときはnewし直せばいいだけなわけだし。

420 :デフォルトの名無しさん:2010/10/28(木) 10:15:14
ちょっと質問

FileSystemWatcherってファイルの監視をTimerで見てるの?それともイベント?

421 :デフォルトの名無しさん:2010/10/28(木) 11:32:29
>>420
ReadDirectoryChangesW使ってる

422 :デフォルトの名無しさん:2010/10/28(木) 14:24:24
>>421
ありがとうございます。タイマー使うよりは処理は重くなくてよさげっぽいですね。
めっちゃ更新されるとバッファオーバーになるようですが・・・

423 :デフォルトの名無しさん:2010/10/28(木) 16:30:04
ReadDirectoryChangesW使ってるようですね

424 :デフォルトの名無しさん:2010/10/28(木) 17:46:17
C#で書いたWindows Mobile用のアプリについて聞きたいんですけど、
ここでいいんですかね?

425 :デフォルトの名無しさん:2010/10/28(木) 18:16:54
だめですちがいます。

426 :デフォルトの名無しさん:2010/10/28(木) 18:38:49
じゃあどこで質問すればいいんですかね?

427 :デフォルトの名無しさん:2010/10/28(木) 19:42:11
さっさとここに書けばいいだろ

428 :デフォルトの名無しさん:2010/10/28(木) 20:34:35
早く聞けよまだかよ

429 :デフォルトの名無しさん:2010/10/28(木) 20:44:15
どうせ煽りしか帰ってこないような気がする。
MSに質問というか報告した方が良さそう。

430 :デフォルトの名無しさん:2010/10/28(木) 21:05:30
文字をランダムに入れ替えるプログラムってどうやってつくればいい

「ありがとう」を「がとりうあ」
にする、みたいな

431 :デフォルトの名無しさん:2010/10/28(木) 21:15:59
乱数a,bを発生させて、a文字目とb文字目を入れ替える
というのを複数回繰り返す

432 :デフォルトの名無しさん:2010/10/28(木) 21:17:58
>>431
どうもありがとう


433 :デフォルトの名無しさん:2010/10/28(木) 21:23:14
>>431
その方法だと一様に分布しないんじゃないのか

434 :デフォルトの名無しさん:2010/10/28(木) 21:32:13
シャッフルという操作だな

「ありがとう」から
範囲が 0〜4 の乱数、で 2 が出たとして「が」を取り出す
「ありとう」から
範囲が 0〜3 の乱数、で 2 が出たとして「と」を取り出す
「ありう」から
範囲が 0〜2 の乱数、で 1 が出たとして「り」を取り出す
「あう」から
範囲が 0〜1 の乱数、で 1 が出たとして「う」を取り出す
「あ」から
「あ」を取り出す

で「がとりうあ」

435 :デフォルトの名無しさん:2010/10/28(木) 21:38:17
private string scramble(string str) {
  Random r = new Random();
  StringBuilder sb = new StringBuilder(str);

  for (int i = 0; i < sb.Length; i++) {
    int j = r.Next(i, sb.Length);
    char t = sb[i];
    sb[i] = sb[j];
    sb[j] = t;
  }
  return sb.ToString();
}

436 :デフォルトの名無しさん:2010/10/28(木) 21:44:01
>>430
こんなのとか?
まあもっと上手い方法が何かありそうな感じもするが....
string ShuffleLeter(string text)
{
  var sl = new SortedList<int, char>();
  var rnd = new Random();
  foreach (char c in text)
  {
    sl.Add(rnd.Next(), c);
  }
  return new string(sl.Values.ToArray());
}

437 :デフォルトの名無しさん:2010/10/28(木) 21:47:51
順列生成と同じなのでO(n)よりも大きいオーダーで書いてるやつは失格な

438 :デフォルトの名無しさん:2010/10/28(木) 21:49:10
そんなマジになるような内容とも思えんが....

439 :デフォルトの名無しさん:2010/10/28(木) 21:51:31
ウィンドウズモバイル用アプリってC#で作れるの?

440 :デフォルトの名無しさん:2010/10/28(木) 21:57:02
作れるよ

441 :デフォルトの名無しさん:2010/10/28(木) 22:07:08
あえてLINQで書くのが俺のジャスティス
new string((from c in str let p = new {r = r.Next(), c} orderby p.r select p.c).ToArray());

442 :デフォルトの名無しさん:2010/10/28(木) 22:14:45
甘いな
return new string((from c in str orderby r.Next() select c).ToArray());

443 :デフォルトの名無しさん:2010/10/28(木) 22:16:43
GOM PLAYERで動画をストリーム再生させられる、ストリームサーバーを作ってみたいのですが、
new Socket().SendFile(path);では上手く行きません。
データを送りつけるだけではだめなのでしょうか?。

444 :デフォルトの名無しさん:2010/10/28(木) 22:17:14
>>441
それletいらなくない?
return string.Join("", str.OrderBy(_ => r.Next()));

445 :デフォルトの名無しさん:2010/10/28(木) 22:23:15
WM用の簡単にMixiやTwitterに投稿するつ○やキング(一応伏せ字)ってソフトをリフレクタで見ると
タイトルや本文をID・パスと一緒にttp://sns.dataholdings.jp/に送信しているみたい。
そのアドレスから「sns.」を除いてttp://dataholdings.jp/でアクセスしたら
つ○やキングを作ってる会社のHP(ttp://www.esukei.jp/)に飛ばされた。
これって対丈夫なの?

SNS -> FrmProstMsg -> meuSendMsg_Clickに書いてある
MixiCommon.MIXI_MessageSendメソッドのstring requestUriString

ってのをMSに聞こうと思ったけど、どこに送っていいか分からなかった。

Windows Marketplaceで公開されてるし大丈夫だとは思うんだけど。

446 :デフォルトの名無しさん:2010/10/28(木) 22:29:56
ID、パスワードを送ってんならまずいだろ。

447 :デフォルトの名無しさん:2010/10/28(木) 22:35:39
>>444
残念ながらエラーだ
return new string(str.OrderBy(_=>r.Next()).ToArray());

>>445
プライバシーの問題の話をしているなら
ダウンロードページのReport Abuseってところから苦情出せばいいんじゃない?
ところでさっきまではちゃんとダウンロードページ表示されてたのに
今はエラーってでるな

448 :デフォルトの名無しさん:2010/10/29(金) 00:04:44
>>447
.NET4でString.Join<T>(String, IEnumerable<T>)とか追加されてる

449 :デフォルトの名無しさん:2010/10/29(金) 07:55:22
>>448
まじか、それは失礼

450 :デフォルトの名無しさん:2010/10/29(金) 11:07:51
C#とCってどっちが覚える事少ないですか?
C#は名前空間がたくさんありすぎて・・・Cはまだやってないですk

451 :デフォルトの名無しさん:2010/10/29(金) 11:13:30
>>450
C#が楽だろ
名前空間覚えるの大変ってCだって結局はライブラリとかAPIとか覚えるんだから一緒だよ

452 :デフォルトの名無しさん:2010/10/29(金) 11:15:51
C#はオープンなのでその点に不満さえなければ.net系がお勧め

453 :デフォルトの名無しさん:2010/10/29(金) 11:23:10
>>450
例えばの話、実用じゃなくて学校の課題的な意味で、
言語でできる最低ラインのこと覚えるだけってなら C 言語は超楽。
機能がないんだもん。

で、目的ベースで、世に出せるようなアプリ作りたいってのなら、
たいていは C# の方が楽。
「C# が使える」って言われる分野だと絶対 C# の方がいい。

454 :デフォルトの名無しさん:2010/10/29(金) 11:27:32
常駐型アプリ作成で質問です。

どこのサイトを調べてもメインフォームを非表示にさせて必要な時だけShowするってやり方なのですが、
制御用のクラスAと処理用のクラスB、設定用のフォームをそれぞれ作りMain()で制御用のクラスを生成し
常時使用したいです。終了は任意のタイミングで制御用のクラスを終了させてアプリを閉じるにはどのような
方法がありますか?ちなみに、設定用のフォームは初回起動時に設定するだけがほとんどで後はレジストリ
値から読み込むのでフォーム非表示の方法はさせたくありません。

ちなみに自分が考える方法としてはsleepで任意の時間停止させてFor文でまわす・・・・という方法しか思いつきません
でしたorz フォームを非表示にするのであればタスクからコンテキストメニューでClose()すれば済むから楽ですけど・・・


455 :デフォルトの名無しさん:2010/10/29(金) 11:32:58
C#2.0ベースで作るのとC#4.0ベースで作るのはどっちが楽ですか?

456 :デフォルトの名無しさん:2010/10/29(金) 11:33:59
処理側、普段はどういう挙動してるの?

処理側が while(IsAlive) みたいなループしてるんなら、
終了させたいスレッドで IsAlive 書き換えておしまい。

457 :デフォルトの名無しさん:2010/10/29(金) 11:38:04
>>456
処理側は普段は何もしていません。特定のイベント(ファイルの作成、削除、リネーム)が
行われた時のみ制御クラスから呼び出して処理を行います。

なので処理側はループ処理は行いません。
・・・でもよく考えたらSleepとかにしちゃうとタスクバーからのメニュー表示とかに
影響が出そうですが・・・

PS.サービスにしろっていうのは無しでorz使っちゃだめらしいので@w@

458 :デフォルトの名無しさん:2010/10/29(金) 11:39:09
隠しFormにした方がいろいろ楽じゃなかったけ?

459 :デフォルトの名無しさん:2010/10/29(金) 11:43:54
ttp://www.a-quest.com/products/aquestalk.htmlのAquesTalkDa_Createを使って発声するサンプルをどなたか書いていただけませんか?


460 :デフォルトの名無しさん:2010/10/29(金) 11:45:02
>>それは重々承知しておりますorz どのサイトでもそのように推奨(?)されているので;w;

今回はクライアント側で動作するソフトなのであまり意識しないのですが、今後はサーバー
にも常駐ソフトを開発する機会が増えるらしいので少しでも資源の節約を考えないと・・・と
思いましてorz



461 :454:2010/10/29(金) 11:46:57
>>458 でした。すいません;;

それとサーバー常駐ならC/C++でしょーが!!って言われるかもですが、
現在までC++で作っていたのですが、社の方針ですべてC#にすることなので
ご理解のほどよろしくおねがいします;w;

462 :デフォルトの名無しさん:2010/10/29(金) 11:48:33
>>455
どう考えても新機能使える方が楽。
減ってる機能はない。

463 :デフォルトの名無しさん:2010/10/29(金) 11:50:54
>>457
それ、なんかただ単に非同期処理したいだけ?
BackgroundWorker じゃダメなの?

464 :454:2010/10/29(金) 11:58:32
>>463
BackgroundWorkerを使用とのことでしたが、処理内容自体は軽く、頻度もそこまである
わけではないのであまり考えていませんでした。

463さんの言われるのは処理ではなく、制御用にご使用されては?ということでしょうか?


465 :デフォルトの名無しさん:2010/10/29(金) 12:00:23
>>464
そんなもん、普通に BeginInvoke とか使った非同期処理すりゃいいんじゃないの?

466 :454:2010/10/29(金) 12:19:35
>>464
ふむふむ!ちょっとBeginInvokeについて調べてみます><

467 :デフォルトの名無しさん:2010/10/29(金) 12:31:32
>>464
ファイルの監視するクラス、又はメソッドをデリゲートに入れて実行させておいて、
呼び出し元ではタスクのコンテキストメニューなどから終了すると。アプリケーションを
停止するという考え方であっていますでしょうか?

468 :デフォルトの名無しさん:2010/10/29(金) 13:30:45
>>459
ちゃんとサンプルへのリンクあるじゃないか。
これやってみてわからないとこを聞きなさい。
http://blog-yama.a-quest.com/?eid=267269

469 :デフォルトの名無しさん:2010/10/29(金) 13:32:42
>>468
そちらのサンプルの場合は同期で発生するやりかたですでに訪問済みです
ぼくの探しているサンプルは非同期のほうなんです

470 :デフォルトの名無しさん:2010/10/29(金) 13:33:27
補足:AquesTalkDa_Createは非同期のときに使う関数です

471 :デフォルトの名無しさん:2010/10/29(金) 13:50:02
最初から、わかるようにかけよ。
ホイ
http://monmokoblog.blogspot.com/2008/01/c.html

472 :デフォルトの名無しさん:2010/10/29(金) 14:45:21
>>454
前にも書いたんだけど
http://ideone.com/D0Wak
こういう方法じゃダメなの?

473 :デフォルトの名無しさん:2010/10/29(金) 21:41:32
うるせー

474 :デフォルトの名無しさん:2010/10/29(金) 21:55:39
非同期には勝てなかったよ

475 :デフォルトの名無しさん:2010/10/29(金) 22:04:55
>>471
コード量が多すぎて僕には難しいです(汗
非同期でこんにちはを発音する程度の本当にシンプルなサンプルがいいのですがそういうサンプルってないですよね?

476 :デフォルトの名無しさん:2010/10/29(金) 22:22:24
もう別プロセスで作れば?
コマンドライン引数に与えられた文字列を発音するコンソールアプリケーション作って
Process.Startで呼べば非同期になる

477 :デフォルトの名無しさん:2010/10/29(金) 23:38:07
プログラム終了時に特定のコードを実行させる方法はどうやるのでしょうか?

終了はalt+f4や右上の×ボタンを押して終了させたりも含みます

478 :デフォルトの名無しさん:2010/10/29(金) 23:42:27
OnClosingのオーバライドも含みます

479 :デフォルトの名無しさん:2010/10/29(金) 23:50:36
http://dobon.net/vb/dotnet/form/unloadmode.html
これは?

480 :デフォルトの名無しさん:2010/10/30(土) 00:01:21
Main()の最後じゃダメなんか。

481 :デフォルトの名無しさん:2010/10/30(土) 00:10:45
>>475
ちょっと触ってみたからサンプルとしてあげる。
フォームにボタン1つ貼り付けただけのもの。
http://ideone.com/ZQYsG

482 :デフォルトの名無しさん:2010/10/30(土) 01:32:58
O(n) ってなんと発音するの?

483 :デフォルトの名無しさん:2010/10/30(土) 01:59:27
オーダー えぬ

484 :デフォルトの名無しさん:2010/10/30(土) 08:50:50
王と長島だろ・・・オーエヌ

485 :デフォルトの名無しさん:2010/10/30(土) 08:58:08
o(n) ってなんと発音するの?

486 :デフォルトの名無しさん:2010/10/30(土) 09:34:01
スモールオーエヌ

487 :デフォルトの名無しさん:2010/10/30(土) 10:31:27
小さな巨人

488 :デフォルトの名無しさん:2010/10/30(土) 10:36:10
なぼな

489 :デフォルトの名無しさん:2010/10/30(土) 14:00:43
”尻の穴を手で隠してる人がこっち向いてる”

490 :デフォルトの名無しさん:2010/10/30(土) 15:19:22
子コントロールのMouseEnterイベントを親フォームに転送するには、子コントロールで捕まえて親フォームに投げつけるしかありませんか。
なにかのプロパティを設定したら、親に通知が行くようになるとかありませんか。

具体的には、マウスカーソルをツールウィンドウからメインウィンドウに移動させた際に、フォーカスをメインウィンドウに移したいと思っており、
メインウィンドウでMouseEnterイベントを捕まえたいのですが、メインウィンドウの子コントロールに捕まってしまうので、
何とか簡潔な手段で解決したいです。

491 :デフォルトの名無しさん:2010/10/30(土) 15:26:55
>>490
位置関係とやりたいことが今一つよくわからん
とりあえず、子のMouseLeaveから親のMouseEnterを呼ぶ

492 :デフォルトの名無しさん:2010/10/30(土) 16:09:11
メインウィンドウとは別に、リストビューを貼りつけたウィンドウがあって、これをツールウィンドウと書いたんですが、
このリストビューからマウスで項目を選び、メインウィンドウの方にマウスカーソルを戻すと、メインウィンドウで作業していた場所に戻るというか…
メインウィンドウのキャプションをクリックすれば、大体そんな感じにはできるんですけど、
マウスカーソルの移動が頻繁になったり大きくなったりして、それは避けたい…とか思ってまして…

>>491の方法も試してみましたが、ツールウィンドウのMouseLeaveはDock=FillにしたListViewにつかまるし、
ListViewのMouseLeaveは、リストビューのヘッダに移動しただけで発生するので、うまくコントロールできませんでした。


いろいろ考えたんですが、1秒間に数回くらいマウスの位置をポーリングして、判断すればいいのかな、と思えてきました。

493 :デフォルトの名無しさん:2010/10/30(土) 16:24:12
>>492
コントロールを再帰的に辿って(コンテナのControlsの中を再帰的にスキャンするってこと)
フォーム上の全部のコントロールのMouseEnter(MouseLeaveじゃない)を受信するように
すれば出来るでしょ。

でも、タイマ使ってポーリングするのが泥臭いけど一番簡単だね。
俺はこの手の処理のが必用な時はそうしちゃう。

494 :デフォルトの名無しさん:2010/10/30(土) 17:44:49
>>490
WPFなら親へ親へと伝播されるで

495 :デフォルトの名無しさん:2010/10/30(土) 19:03:02
外部のアプリを起動させる時、
Process.Start("notepad.exe","test1.txt");
とファイルを開かせた後、今度はtest2.txtを開きたいのですが、新しくnotepadを開くのではなく
さっき開いたnotepadでファイルを開きたいのですが方法はありますか?

496 :デフォルトの名無しさん:2010/10/30(土) 19:08:24
アプリケーション依存なので、共通的な方法はないです。

497 :デフォルトの名無しさん:2010/10/30(土) 19:09:39
メモ帳くらい似たようなの自分で作ればいいのに

498 :デフォルトの名無しさん:2010/10/30(土) 19:20:16
C#でマイクから「こんにちは」っていったらAの処理を、「こんばんは」っていったらBの処理をする事ってできますか?
音声を認識するのってCじゃないとやはり無理ですかね?


499 :デフォルトの名無しさん:2010/10/30(土) 19:25:38
>>498
http://msdn.microsoft.com/ja-jp/library/system.speech.recognition.aspx


500 :デフォルトの名無しさん:2010/10/30(土) 19:27:28
クラスライブラリのchmファイルってないですか?
毎回ダイヤルアップ接続するのが面倒くさくて・・・

501 :デフォルトの名無しさん:2010/10/30(土) 19:28:45
>>499
ありがとうございます

502 :デフォルトの名無しさん:2010/10/30(土) 19:30:52
>>500
Silverlightのドキュメントならchmあるよ

503 :デフォルトの名無しさん:2010/10/30(土) 19:35:58
Silverlightはやらないのです。。。すみません。。。
オンラインマニュアルのクラスライブラリがオフラインで見れればいいんです。。。
一つ一つhtmlファイルにダウンロードしかなさそうですよねそうしてみます。。。

504 :デフォルトの名無しさん:2010/10/30(土) 19:38:40
Express版は知らんけど、Pro版とかなら、普通にローカル用のヘルプがついてる

505 :デフォルトの名無しさん:2010/10/30(土) 19:39:15
MSDNライブラリを丸ごと収録したDVDISOがダウンロードできたはず
ダイヤルアップなら無理だろうけどw

506 :349:2010/10/30(土) 19:56:10
いいじゃんじゃん。(´・ω・`)

507 :デフォルトの名無しさん:2010/10/30(土) 20:03:26
でもローカルよりオンラインコンテンツの検索の方が速いという。

508 :デフォルトの名無しさん:2010/10/30(土) 20:14:55
2010のヘルプはDVDISOじゃなくて
ヘルプメニューからオフラインに設定してやってダウンロードする形に変わった

509 :デフォルトの名無しさん:2010/10/30(土) 20:16:55
VSの次のバージョンくらいで全てのエディションでローカル版のMSDNは無くなりそうだな

510 :デフォルトの名無しさん:2010/10/30(土) 20:25:45
そんなわけないでしょ。ありえない。

511 :デフォルトの名無しさん:2010/10/30(土) 20:30:24
ネットにつなげない環境、ってのがあるから、
ローカル版はやっぱり残ると思うよ。

512 :デフォルトの名無しさん:2010/10/30(土) 20:34:58
String.Internって遅くない?
Dictionaryで自分で実装したのと比べたらlock込みでもString.Internの方が遅いんだが

513 :デフォルトの名無しさん:2010/10/30(土) 20:41:51
すごい無意味な比較してるな

514 :デフォルトの名無しさん:2010/10/30(土) 22:58:12
String.Internってどういう用途で使うの?

515 :デフォルトの名無しさん:2010/10/30(土) 23:07:41
インターンするため

516 :デフォルトの名無しさん:2010/10/30(土) 23:21:39
これ以上ないほど完璧な解答だな

517 :デフォルトの名無しさん:2010/10/30(土) 23:54:32
C#で人口チャットロボを作りたいんですけど
どういう仕組みで作るのかどなたかおしえてください

518 :デフォルトの名無しさん:2010/10/31(日) 00:00:21
ロボ > トウキョウト ハ 1300 マンニン デス
ロボ > カナガワケン ハ 903 マンニン デス
ロボ > オオサカフ ハ 880 マンニン デス

519 :デフォルトの名無しさん:2010/10/31(日) 00:11:18
>>517
http://pc.2ch.net/tech/kako/982/982118979.html


520 :デフォルトの名無しさん:2010/10/31(日) 01:16:49
そういえばちょっと前にゲームを5日で作ってこいって言われた人は無事完成させられたのだろうか

521 :517:2010/10/31(日) 12:39:19
おれ・・・・作ってみたいんです
作りながらコードしてここの先輩方にご指摘頂くのかいいですか?
教えて君じゃなくてコードは自分で調べます!

522 :デフォルトの名無しさん:2010/10/31(日) 12:55:52
@ 人間用の普通のオンラインチャットプログラムを作る
A 人工無能について調べ、オンラインでなくローカルで会話できるまで作る
B @とAを組み合わせる

それぞれのキーワードについて自分で調べて、
サンプルがCやC++やJava用だったなら自力でアレンジ、移植する
誰も作るななんて言わないから、作ってみたいならどんどん作ればいいんだよ

物理的なロボット作りたいならハードウェアも勉強してね

523 :517:2010/10/31(日) 12:57:29
先生ありがとうございます!
2番を作ります!
俺中1なんで学校終わったら毎日調べて書きます!

524 :デフォルトの名無しさん:2010/10/31(日) 13:01:49
いや、ここに書かなくてもいいからw
そういうのはブログにでも書いた方がいいと思うよ

525 :デフォルトの名無しさん:2010/10/31(日) 16:28:45
とりあえず形態素解析とマルコフ連鎖あたりから調べてみれ

526 :デフォルトの名無しさん:2010/10/31(日) 17:17:05
WPFのXAMLにトリガーとかストーリーボードを追加するときってvs2010で手書きするのが普通?それともExpression Blend使うの?

527 :デフォルトの名無しさん:2010/10/31(日) 17:20:51
アニメーションはさすがにBlend使わないと無理。
あとトリガーは時代遅れ。Visual State Manager使う。

528 :デフォルトの名無しさん:2010/10/31(日) 17:45:24
ちょうど今トリガーの勉強したところだったが、
今度はVisual State Managerの勉強してくる

529 :デフォルトの名無しさん:2010/10/31(日) 18:46:30
StreamReaderのオブジェクトのディープコピーしたいのです。
サンプルメソッド使用して実行したら、例外が発生し実行できませんでした。
エラーメッセージに「'System.IO.FileStream' はシリアル化可能として設定されていません。」と、ありました。
どうすればシリアル化することができるのでしょうか?

530 :デフォルトの名無しさん:2010/10/31(日) 18:50:34
何をしてもシリアル化はできません。

531 :デフォルトの名無しさん:2010/10/31(日) 19:13:39
>>530
シリアル化できるものとできないものとあるんですねえ〜

532 :デフォルトの名無しさん:2010/10/31(日) 19:15:02
ラップしても無理なものは無理です。

533 :デフォルトの名無しさん:2010/10/31(日) 19:19:38
Readerをディープコピーして何がどうなるってんだ
まさか別々に読み出せるとかトンデモ発想してるわけじゃないだろうが

534 :デフォルトの名無しさん:2010/10/31(日) 19:27:08
C#の勉強やりたいのでスレ立てていいですよね?

535 :デフォルトの名無しさん:2010/10/31(日) 19:29:22
アイちゃん貼られても知らんぜ俺は

536 :デフォルトの名無しさん:2010/10/31(日) 19:29:29
個別レス立てると叩かれるぞw

537 :デフォルトの名無しさん:2010/10/31(日) 19:34:31
ここでいいだろ。

538 :デフォルトの名無しさん:2010/10/31(日) 20:29:48
特定の配列に文字列が入ってない事をどうすれば表現できるのでしょうか

539 :デフォルトの名無しさん:2010/10/31(日) 20:31:18
array.All(a => !(a is string))

540 :デフォルトの名無しさん:2010/10/31(日) 20:36:13
!array.OfType<string>().Any()

541 :デフォルトの名無しさん:2010/10/31(日) 20:42:15
ありがとうございます

542 :デフォルトの名無しさん:2010/10/31(日) 20:42:19
LINQかっこいい ><
俺も勉強する ><

543 :デフォルトの名無しさん:2010/10/31(日) 21:15:16
C#5.0が出るのが先かC#4.5が出るのが先かC#4.1が出るのか先か分かる人教えて

544 :デフォルトの名無しさん:2010/10/31(日) 21:32:24
なぜ、表記の違いだけなのに気になるかがわからない。
次がでる時期が気になるならわかるけど。

545 :デフォルトの名無しさん:2010/10/31(日) 21:37:40
Cωが虫の息なんですが…

546 :デフォルトの名無しさん:2010/10/31(日) 21:38:37
マーケティング戦略によっていろいろ変わるしね。

547 :デフォルトの名無しさん:2010/10/31(日) 21:50:16
>>545
虫の息っていうかもとから実験用みたいなもんでしょ
コンセプトがLinqで消化されたんで役割は見事に果たせたんではないかと。

548 :デフォルトの名無しさん:2010/10/31(日) 22:00:06
すいません質問です!
C#で作成したプログラムが吐き出したデータを見てるんですが、
時間の値が解読不可能で困ってます;;

634089637900000000
     ↓
2010/5/10/ 1:03

・・になるみたいなんですが。
シリアル値で変換出来ず。。。
どなたか分かる方いらっしゃいますか?

549 :デフォルトの名無しさん:2010/10/31(日) 22:05:27
>>548
基準となる日時があるんじゃないの?
2chのdatのファイルネームも確かUNIXタイムだし

550 :デフォルトの名無しさん:2010/10/31(日) 22:08:13
DateTime.Ticksの値

551 :デフォルトの名無しさん:2010/10/31(日) 22:08:33
時刻値は 100 ナノ秒単位 (タイマ刻み) で表し、日付は GregorianCalendar 暦の A.D. (西暦紀元) 1 年 1 月 1 日の午前 00:00 からのタイマ刻み数で表します。たとえば、タイマ刻み値

552 :デフォルトの名無しさん:2010/10/31(日) 22:09:25
http://msdn.microsoft.com/ja-jp/library/system.datetime%28VS.80%29.aspx

553 :デフォルトの名無しさん:2010/10/31(日) 22:13:32
>>548
http://msdn.microsoft.com/ja-jp/library/system.datetime%28VS.80%29.aspx

554 :デフォルトの名無しさん:2010/10/31(日) 22:16:35
大人気だな。

555 :デフォルトの名無しさん:2010/10/31(日) 22:19:22
大人気ないな。


556 :デフォルトの名無しさん:2010/10/31(日) 22:28:23
>>549-552
納得できました!!ありがとうございます。
ちなみにこの値をプログラムを使用せずに
元の日時へ変換する計算方法なんてあるんでしょうか?

557 :デフォルトの名無しさん:2010/10/31(日) 22:29:52
DateTimeクラスのコンストラクタを調べてみろ。

558 :デフォルトの名無しさん:2010/10/31(日) 22:38:36
MSDNに書いてるし


559 :デフォルトの名無しさん:2010/10/31(日) 22:39:20
2038年問題の対応の仕方をご教授お願い嶋sう

560 :デフォルトの名無しさん:2010/10/31(日) 22:44:12
>>559
・基準時間を変える
・桁を増やす

VC++の最近のやつはこの辺の警告でまくりだっけ?


561 :デフォルトの名無しさん:2010/10/31(日) 22:55:11
>>556
プログラムを使用せずに?紙と鉛筆?暗算?
気合と根性で足し算すればできるよ。

>0001 年 1 月 1 日午前 00:00:00 以降の経過時間 (100 ナノ秒単位) を表します。

562 :デフォルトの名無しさん:2010/10/31(日) 22:56:47
うるう年とか、カレンダー切り替えの辺りを考えると、
手動計算はちょっと厳しいと思う。

563 :デフォルトの名無しさん:2010/10/31(日) 22:58:54
気合と根性w

564 :デフォルトの名無しさん:2010/10/31(日) 23:34:13
C#全く知らなくて他人が書いたもの見なきゃいけないんだけど、
GUIの部分をイベントでつないでるのは分かったんだけど、
ロジックの部分も全部イベントでつながってるっぽいんだけど、
なんかグラフィカルにつながり一覧できるようなビュー(ツール)ってありますか?

こんな感じの。(これはイベントとプロパティなんかが線で表現されてる(選択して編集もできる)んだけど)
http://www.javaworld.com/javaworld/jw-01-2000/images/jw-01-beans3.gif

565 :デフォルトの名無しさん:2010/10/31(日) 23:36:19
>>546
ひとまずITmediaの入門記事よんでからでなおしてね。

566 :デフォルトの名無しさん:2010/10/31(日) 23:40:42
根性使い果たしました\(^o^)/
でも調べて理論ははんなりわかったので、妥協しますorz
ありがとうございました。

567 :デフォルトの名無しさん:2010/10/31(日) 23:42:17
.NETのGUIやイベントやその間の関連はあんまり宣言的じゃないのでそういうのは無理。

568 :デフォルトの名無しさん:2010/10/31(日) 23:46:23
>>563
作り慣れてれば感覚的に構造が理解できるけど。
最初は手で繋がりを書いた方が速いと思う。

569 :デフォルトの名無しさん:2010/10/31(日) 23:50:20
静的解析は無理だろうけど、
実際にアプリを動かしながらだったらそういう可視化は可能だろうな
案外簡単に作れるかも

570 :デフォルトの名無しさん:2010/11/01(月) 00:24:49
う〜〜ん、メッセージキューをトレースしても、キューの連続が見えるだけで。
それが内部のメソッドやクラスと関連させる方法が思いつかないけど。
ソースに手を加えるのか?
それが出るほどに手を加えるのなら、その時点で理解していると思われ。

571 :564:2010/11/01(月) 00:31:32
どうもです。

>>567
>.NETのGUIやイベントやその間の関連はあんまり宣言的じゃないのでそういうのは無理。
>>569
>静的解析は無理だろうけど、

編集するのはムリだろうな。とは思っていたのですが、表示もムリですか。
マイクロソフト純正(高いのから安いのまで)でもそういう表示の機能は無くて、
サードパーティー製のツールでもそういう表示(多少解析に処理時間がかかっても)は出来ないと。

>実際にアプリを動かしながらだったらそういう可視化は可能だろうな

たしかにイベントハンドラの登録とかコードの中から呼んでますもんね。
どこで呼んでもいいとなればコード全体解析しなければ分からないと。。。

GUIのフォームや関連する部分からイベント飛んでるぐらいだったら分かるんですが、
GUIと全く関係ない直接呼んだら良さそうな内部の処理なのに何段階もイベントで飛ばしてる
ってC#はそもそもそういうもんなんですかね。

コードを検索かけてみてもなんかすごく分かりにくい気がするんですが。
やっぱり、つながりを紙かなんかにコツコツ書いてくしかないんですかね。

572 :デフォルトの名無しさん:2010/11/01(月) 00:44:31
>>571
それは「C#がそういうもん」じゃなくて、
そういう書きかたされたってだけのような。
どの言語でもスパゲティにする人はいるわけで。

573 :デフォルトの名無しさん:2010/11/01(月) 00:46:19
作り方によるだろ
Java知ってるのかしらないけどイベントなんて
インターフェイス経由のメソッド呼び出しと同じ

574 :デフォルトの名無しさん:2010/11/01(月) 00:47:51
今時、直接イベント直結してるのが不思議
去年、全ての資産はwpfに移行してるからってのもあるけど
それでも不思議

575 :デフォルトの名無しさん:2010/11/01(月) 00:53:35
複数スレッドで処理を分担するアプリケーションもある、
その時は連携にイベントを使うだろうね。
イベントがあるからスパゲッティーというのは暴言だと思われ。

576 :デフォルトの名無しさん:2010/11/01(月) 01:02:33
>>564みたいな構造ならイベント多用するだろうな
WinFomsが最も得意とする類
スパゲッティになるかどうかは別問題

577 :デフォルトの名無しさん:2010/11/01(月) 01:05:19
>>564のまちがいね。

578 :デフォルトの名無しさん:2010/11/01(月) 01:12:44
どこを間違えたって?

579 :デフォルトの名無しさん:2010/11/01(月) 01:16:53
>>574
今時WinFormで開発なんてありえねーってこと?
いまいち何いってるのかわからん

580 :デフォルトの名無しさん:2010/11/01(月) 01:17:26
>>571
コツコツっていうか、普通のプログラマが書いたコードならイベントハンドラは
それと分かるような名前になってるはずだし、ちょっと気が利く人ならイベントハンドラだけ
regionで括ってあったりするし、そうでなくても自分でそうすればいいんだし。

何より、イベントがどこから参照されているかはIDEで検索可能だし。
そんなに気に病むほどのことでもないよ。

581 :デフォルトの名無しさん:2010/11/01(月) 16:44:00
WPFでウィンドウの最大化、最小化を
this.WindowState = System.Windows.WindowState.〜;
で制御しているんですが、これだと通常右上のボタンを押した時の
ウィンドウが縮んだり伸びたりするアニメーションが発生しません。(動作環境はVistaです)
動作に統一感を持たせたいので、出来ればこのアニメーションを
発生させたいのですが、何か方法はないでしょうか。


582 :デフォルトの名無しさん:2010/11/01(月) 17:58:03
逆に考えるんだ
Vistaのアニメーションをoffにするんだ

583 :デフォルトの名無しさん:2010/11/01(月) 19:02:24
うーん、それはちょっと

584 :デフォルトの名無しさん:2010/11/02(火) 05:23:40
WinFormsのTextBoxでアクティブウィンドウじゃなくなっても文章選択のハイライトを維持する方法ありますか?
通常ではデスクトップなどをクリックしてアクティブウィンドウじゃなくなるとハイライトが一時的に消えます。

585 :デフォルトの名無しさん:2010/11/02(火) 05:27:29
自己解決しました

586 :デフォルトの名無しさん:2010/11/02(火) 10:34:30
超巨大なCSVファイルを読み込んでファイル操作(列入れ替えや引用符など)を行って
別フォルダに出力するのですが、TextFieldParser を使うべきかStreamReaderで一行ずつ
拾っていくか迷っています。

CSVが項目100以上で行数が60万件なのでやはりStreamReaderのほうがよいのでしょうか?
基本的にメモリに出来るだけ読み込まないことを前提に考えております。

このほかによい方法などありますでしょうか?

587 :デフォルトの名無しさん:2010/11/02(火) 10:37:16
思いつくパターン書いてみて実測してみればいいじゃん

588 :デフォルトの名無しさん:2010/11/02(火) 10:40:16
StreamReader使っても結局CSVの構文解析は必要になるんでは
その点ではTextFieldParserでいいんでないかな

でもMS Accessに任せちゃう方がいいと思うけどね
CSVをデータベースっぽく使えるはずだし

589 :デフォルトの名無しさん:2010/11/02(火) 10:49:03
実測したいのですが、手元にデータがなく現地で即、実施となるので・・・orz

CSVの構文についてはなんとかするつもりです@w@
ただ、今回の場合サーバーで実行するので処理速度はそこそこで
基本はメモリを食わない設計にしたいと考えております。

後、蛇足ですが.netは2までですorz


590 :デフォルトの名無しさん:2010/11/02(火) 10:53:56
>CSVが項目100以上で行数が60万件
データ作ればいいんじゃないの?
それこそc#で簡単なファイル出力プログラム書いてしまえば・・・

591 :デフォルトの名無しさん:2010/11/02(火) 11:01:15
”列の入れ替え”がソーティングのことを指していて、
ソーティングにO(logN)の実行速度とか要求されたら
オフラインアルゴリズムしかないので、メモリがO(N)とかになっちゃう
無難にADO.NETでCSV読ます方法がいいんじゃない?

592 :デフォルトの名無しさん:2010/11/02(火) 11:01:58
あれ、列って項目のことか
行と勘違いしていた^p^;

593 :デフォルトの名無しさん:2010/11/02(火) 11:14:35
行の入れ替えならそのようにするのがよいと思います。
今回は列の入れ替えのみ考えるので@w@

とりあえず、データを作ってみます@w@もしTextFieldParserが
CSVのデータをすべてメモリ内に読み込むようでしたらStreamReaderで
作成しようかと思います。もしTextFieldParserのことを知っておられる方が
おりましたらご教授お願いいたいます。

594 :デフォルトの名無しさん:2010/11/02(火) 11:17:22
この場合行数は関係ないんじゃね。1行分処理できればあとは同じだろうし。
基本的にTextFieldParserでいいんだろうけど、
妙に融通が効かないこともあるから、不都合があれば自前でやる。

それからAccessというかODBCのテキストドライバはそろそろ非推奨なんじゃね。
アップデートもされてないし。

595 :デフォルトの名無しさん:2010/11/02(火) 11:20:52
TextFieldParser parser = new TextFieldParser("text.csv",
System.Text.Encoding.GetEncoding("Shift_JIS"));

上記の構文を作成したときに該当CSVファイルをメモリに
読み込ます・・・というわけではないのでしょうか?
単に、ファイルのハンドルを取得するだけならいいのですが

596 :デフォルトの名無しさん:2010/11/02(火) 11:30:54
ReadFieldsメソッドで1行づつ処理するから、まとめて読み込むようなことはない。

597 :デフォルトの名無しさん:2010/11/02(火) 11:43:35
ふむふむ、そしたらTextFieldParseをメインで考えて作ってみようと思います。

ありがとうございました^-^

598 :デフォルトの名無しさん:2010/11/02(火) 13:42:46
2010C#EE

オプションのチェック状況の保存
複数ファイルのパス+再生位置などのデータの保存

それぞれどういう風にファイルに書き出すのが最適ですか?

599 :デフォルトの名無しさん:2010/11/02(火) 13:50:57
適当にフォーマット自分で決めてXMLで吐けばいいでしょう
GUIとデータをきちんと分けて考えていればそんなことで悩む必要は無いはず

600 :デフォルトの名無しさん:2010/11/02(火) 13:59:38
XMLですか、どーもー

601 :デフォルトの名無しさん:2010/11/02(火) 14:09:40
XMLシリアライザみたいなやつ無かったっけ?

602 :デフォルトの名無しさん:2010/11/02(火) 14:12:04
あるよ
クラス作っておけばそれにあわせて読み書きしてくれるぜ

603 :デフォルトの名無しさん:2010/11/02(火) 14:24:27
richTextBoxで、文字を打つとコードエディタのようにコメントマーク〜改行まで
文字色が変わるようにするにはどうしたらいいですか?
下の文章の//以降が緑色になるみたいな感じにしたいのですが。


hogehoge
//この行は緑色
hogehoge//ここから緑色

604 :デフォルトの名無しさん:2010/11/02(火) 14:27:51
シリアライザも万能じゃなくて
リストの中のリストは書き出せないとかがあるんですよね?

XMLに書き出す場合>>598だとどういう形式のクラスを作ればいいんでしょうか?

classA{
name
path
position
}
↑適当ですいません

みたいな感じのクラスをList<>とかにするのがいいのかな?

605 :デフォルトの名無しさん:2010/11/02(火) 15:17:50
XMLシリアライズならこれで十分

public class ClassA
{
  public string Name { get; set; }
  public TimeSpan Position { get; set; }
  public List<string> Paths { get; set; }
  public Options Options { get; set; }
}

クラス内のListもちゃんと展開されるよ


606 :デフォルトの名無しさん:2010/11/02(火) 15:23:58
あ、いけねTimeSpanは展開されないんだった。
かわりにintでも使ってくれ

607 :デフォルトの名無しさん:2010/11/02(火) 15:26:30
最近c言語を学び始めました
「各入力行から、行のあとのブランクやタグを除き、かつ空白行はすべて削除するようなプログラムをかけ」
という問の答えがわかりません;;
putchar、getcharを使うんだと言う事はなんとなくわかるんですが・・・
どなたか優しい方このプログラムの作り方おしえてください

608 :598:2010/11/02(火) 15:29:22
>>605
そんなやり方が、すごいなー
ありがとうございます

609 :デフォルトの名無しさん:2010/11/02(火) 15:32:46
>>607
スレ違いです
こっちへどうぞ
http://hibari.2ch.net/test/read.cgi/tech/1287876803/l50

610 :デフォルトの名無しさん:2010/11/02(火) 15:33:29
>>608
どこがすごいの?ばかにしてるの?

611 :デフォルトの名無しさん:2010/11/02(火) 15:34:16
つーかコード書いて試すとかしないのか・・・
シリアライズだって試せばわかるだろうに

612 :598:2010/11/02(火) 15:39:22
public class ClassA
{
public string FullPath { get; set; }
public int Position { get; set; }

}

public class ClassB
{
 public List<ClassA> Movies { get; set; }
public Options Options { get; set; }
}

ファイルごとに再生位置を設定したいので
理想はこんな感じなんですが、ちゃんと展開できますか?

613 :デフォルトの名無しさん:2010/11/02(火) 15:43:12
ISerializable実装したらいいんじゃないの?

614 :598:2010/11/02(火) 15:46:50
そんな難しいこと言われてもよくわかりません

オプションのチェック状況を保存
ファイルのパス+再生位置のリストを保存

これをやりたいだけなんですが
スパっと解答できる人いないの?

615 :デフォルトの名無しさん:2010/11/02(火) 15:51:59
どこまで人任せなんだよ
とりあえずこれで実際にどういうXMLが出力されるか試せるから自分でやってみればいいよ
それでもわからなければまた質問に来い

string result;
List<ClassB> classBListInstance = new List<ClassB>();

// classBListInstanceに値を代入

System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(List<ClassB>));
using (System.IO.StringWriter sw = new System.IO.StringWriter()) {
  ser.Serialize(sw, classBListInstance);
  result = sw.ToString();
}

616 :デフォルトの名無しさん:2010/11/02(火) 15:55:21
>>613
たしかXmlSerializerとISerializableは無関係のはず

617 :598:2010/11/02(火) 15:56:16
>>615
あ、なるほどー
typeofで設計図を参照しろってな感じでやれば
理解してやってくれるのか

今度こそわかった
ありがとう

618 :デフォルトの名無しさん:2010/11/02(火) 18:58:54
子ウィンドウから親を取得したいんだが。
親から子をShowMessageで呼び出しているのに
子のOwnerがnullになる。
子から親を取得するのはどうすりゃいい?
親からOwnerを書き換えてやっても駄目だった。

619 :618:2010/11/02(火) 19:00:09
ShowMessageってなんだ
ShowDialogです。

620 :デフォルトの名無しさん:2010/11/02(火) 19:01:53
>>618
子を作るときに親のインスタンスを渡しておくとか・・・

621 :620:2010/11/02(火) 19:03:22
あとthis.parentformとかあったっけ?
ちょっと今IDE入れてないマシンからなんで記憶をたどってるだけですまん

とりあえずコントロールにせよparentという単語が入ってるやつ調べれば親だよ

622 :618:2010/11/02(火) 19:04:58
>>620
子がForm2 親Form1として
Form2 form2 = new Form2();//親から
Form2.Owner = this;
Form2.ShowDialog;
こうしてもnullになる。
実行時にthisはForm2になっているみたい。

623 :618:2010/11/02(火) 19:14:22
>>621
ParrentはMDIフォーム用だったきがす
試してみたけどnull

624 :デフォルトの名無しさん:2010/11/02(火) 19:17:12
>>622
独自にインスタンスを持つようにしてそれ経由でw



625 :デフォルトの名無しさん:2010/11/02(火) 19:32:23
ダメだと思うけど、いちお

form2.ShowDialog(this); // thisはform1

626 :618:2010/11/02(火) 19:42:05
>>624
ナイスヒント
Form2のコンストラクタにForm1を渡すことで成功しました。
>>620,625もありがとな

627 :デフォルトの名無しさん:2010/11/02(火) 19:46:04
これから始めるなら、WPF?C#?
とりあえず、EXELっぽいのを作りたいんだけど

628 :デフォルトの名無しさん:2010/11/02(火) 19:52:35
>>627
WPFとC#を比較してどうするんだか。
何もわかってないならExcelとか大層な目標は掲げず、
もっと地に足の着いたとこからどうぞ。

629 :デフォルトの名無しさん:2010/11/02(火) 20:00:22
気になるから調べてみた。
Form f = new Form();
f.Shown += (o, s) => MessageBox.Show(f.Owner.ToString());
//f.ShowDialog();
f.ShowDialog(this);

ShowDialog()の引数に呼び出し元を渡さないとOwnerがnullになる。
ShowDialog()では例外が出て、ShowDialog(this)では例外無く実行できる。
>>625が正解でした

630 :デフォルトの名無しさん:2010/11/02(火) 20:02:30
>>627
C++

631 :デフォルトの名無しさん:2010/11/02(火) 20:15:36
>>628
>>630

答えたくないなら答えなくていいんだけど
ネタぽくされると答える気のあった人にもスルーされちゃんで
暇つぶししたいなら他でやってね

632 :デフォルトの名無しさん:2010/11/02(火) 20:32:22
割と的を得ていると思うがね
もしかしてWindowsフォームアプリケーションとWPFを比べてる?

633 :デフォルトの名無しさん:2010/11/02(火) 20:33:38
>>631
これは回答する気をなくさせるな。

634 :デフォルトの名無しさん:2010/11/02(火) 20:35:16
Formsはマジで死ねる。
単純な物ならFormsだけど、少しでも複雑になろう物なら一気にWPFが優位になるよな。
あとは軽くなってくれれば文句無いんだが

635 :デフォルトの名無しさん:2010/11/02(火) 20:50:20
>>634
どのように複雑?

636 :デフォルトの名無しさん:2010/11/02(火) 20:51:13
>>632
2択なのにその他を選ぶなんて試験だと0点だよ

>>633
元々する気がない奴ほどそういうことをいう

637 :デフォルトの名無しさん:2010/11/02(火) 20:54:00
WPFとC#の2択って意味がわからんから、何か他の物に例えてくれ

638 :デフォルトの名無しさん:2010/11/02(火) 20:56:39
>>636
なんで煽ってんの
会社か学校で嫌なことでもあった?

639 :デフォルトの名無しさん:2010/11/02(火) 20:59:00
WPFかWinFormsならわかるけどな
ちょっと調べてから来たほうがいいのでは

640 :デフォルトの名無しさん:2010/11/02(火) 21:00:10
もうちょっと勉強してからきたほうがよかったんじゃないかな

641 :デフォルトの名無しさん:2010/11/02(火) 21:00:16
>>636
よく分かったなw
質問で返して悪いけど、C#じゃなくてWPFからはじめるとしたら、
C#の代わりは何使うんだ?

642 :デフォルトの名無しさん:2010/11/02(火) 21:02:19
FlashアニメーションみたいなのをLooseXAMLで作るんだよきっと

643 :デフォルトの名無しさん:2010/11/02(火) 21:02:55
VBじゃね?

644 :デフォルトの名無しさん:2010/11/02(火) 21:04:11
ヒント WPFは言語じゃありません

645 :デフォルトの名無しさん:2010/11/02(火) 21:04:41
ルーティングイベントが無いFormsは不便だろ

646 :デフォルトの名無しさん:2010/11/02(火) 21:06:37
small basicマジおすすめ^^
http://smallbasic.com/

647 :デフォルトの名無しさん:2010/11/02(火) 21:08:02
今回はこちら側に不備があったようなので改めて質問させて頂きます

簡単なファイラーを作ろうと思うのですが
これから始めるとしたらWPFとWinFormsのどちらが良いですか?

648 :デフォルトの名無しさん:2010/11/02(火) 21:08:59
C#で使える最も正確なタイマーってどれ?

649 :デフォルトの名無しさん:2010/11/02(火) 21:10:10
>>647
どっちでもいいよ

650 :デフォルトの名無しさん:2010/11/02(火) 21:11:43
>>649
0点

651 :デフォルトの名無しさん:2010/11/02(火) 21:12:24
クソワラタw

652 :デフォルトの名無しさん:2010/11/02(火) 21:12:42
>>627の人気に嫉妬


653 :デフォルトの名無しさん:2010/11/02(火) 21:17:40
>>648
System.Threading.TimerかSystem.Timers.Timer
後者は前者のラッパーなので精度は全く同じ

654 :デフォルトの名無しさん:2010/11/02(火) 21:24:04
WPFは少し勉強してみましたが、概念の理解で詰まる
データバインド、テンプレート・・・もうこんなややこしいことするなら
winformsでいいやってなるんだけど
どうしてみなさんはWPFやろうと思ったのか
そこら辺の動機を教えてほしい

655 :デフォルトの名無しさん:2010/11/02(火) 21:26:19
便利だから

656 :デフォルトの名無しさん:2010/11/02(火) 21:27:16
理解できる人にはWPFの方が簡単だから

657 :デフォルトの名無しさん:2010/11/02(火) 21:27:47
とりあえずwinformでなんか作ってみれ
ある程度規模が大きくなるとデータバインド出来ればなぁとか思うようになるから


658 :デフォルトの名無しさん:2010/11/02(火) 21:27:51
例えばどういうときに?
ファイラーを作る時もWinformsより楽なの?

659 :デフォルトの名無しさん:2010/11/02(火) 21:27:52
動機:そこにWPFがあったから^^

660 :デフォルトの名無しさん:2010/11/02(火) 21:30:37
>>657
いくつか作ったけど、WinFormですら
データバインドがよくわからなくて使ってないんだよ

これって、データソースを弄れば勝手にGUIも変更されるってことなんでしょ?
例えばデータグリッドにaddでデータ追加するのと
データバインド使うのと何がどう違うのかよくわからない

データバインドでぐぐっても、確かに楽だっと思えるような例もないし

661 :デフォルトの名無しさん:2010/11/02(火) 21:56:43
addでデータ追加しなくていいってこったよ
馬鹿かおめぇ

662 :618:2010/11/02(火) 22:00:05
>>629
それで出来なかったから悩んでた

663 :デフォルトの名無しさん:2010/11/02(火) 22:08:58
UIの管理とデータの管理を完全に分離できる
WinformsではUIとデータを結びつけるプログラムは全部自分で書かなきゃいけないけど、WPFなら不要
追加だけじゃなくて、データに対する更新や変更、データごとの表示の切り替えなんかも自動

664 :デフォルトの名無しさん:2010/11/02(火) 22:14:16
>>654
フレームワークの機能ベースで見るから概念多くて詰まるのよ。
GUI アプリケーションに求められてる要件ベースで考えたらあれくらいないとやってらんない。


665 :デフォルトの名無しさん:2010/11/02(火) 22:15:12
WPFは直接textBox3.Text = …のようなコードを書かなくて済むだけだよ。
MVVMなんかM-VM間の結び付けコード書きまくり

666 :デフォルトの名無しさん:2010/11/02(火) 22:45:52
>>663
それちょっと違うんじゃないですか?
結びつけるコードはWPFでも必要だし、
それが一番ややこしくて詰まるんだけど

winformsならADDだけ書けばいいのに、データバインドのためにnotifyなんちゃらとか
いろいろ書かないといけないし、まあ、一回書いてしまえばもう書かなくていいのと
毎回Addや.Text=をしないといけない差と考えれば楽っぽい気もするけど・・・
あと残念ながらxpなんですよね、スペックはcpuE8400で数年前のモデル

667 :デフォルトの名無しさん:2010/11/02(火) 22:48:24
メリットを感じないなら、データバインドやらWPFやら使わなきゃいいだけ。

668 :デフォルトの名無しさん:2010/11/02(火) 22:52:03
ちょっとしたユーティリティ作るのにWPFなんていらないよね?
個人で使うのにそんなグラフィカルにする気もないし
winformsでやります、てかもうやってて半分ぐらい完成してるw

669 :デフォルトの名無しさん:2010/11/02(火) 23:02:04
逆に二度とWinFormsに戻りたくねえけどな

670 :デフォルトの名無しさん:2010/11/02(火) 23:12:50
>>669
小規模でも?
例えば画像を仕分けするような単純なお仕事をするソフトでも?

671 :デフォルトの名無しさん:2010/11/02(火) 23:17:45
WPFは難しいと思い込んでるだけだろ
手軽にWinFormsと同じように使うこともできるよ

672 :デフォルトの名無しさん:2010/11/02(火) 23:17:54
仕分けが何かわからんけど、画像の一覧なんてWPFの超得意分野じゃないか?

673 :デフォルトの名無しさん:2010/11/02(火) 23:29:40
GUI上にボタンが二つあって
画像じゃないファイルをボタンを押して仕分ける場合でも
WPFのほうが早くて簡単?
ちがうでしょ?

674 :デフォルトの名無しさん:2010/11/02(火) 23:33:27
なんか奥手の奴が告白しない理由をああだこうだ並べてるみたい。


675 :デフォルトの名無しさん:2010/11/02(火) 23:33:31
うぜー

676 :デフォルトの名無しさん:2010/11/02(火) 23:35:35
>>670
コレクションに突っ込んでテンプレートをちょっと書いたら画像の一覧表示ができるようになって
コンバータ作ってスライダーをポトペタしてバインディングするだけで、一覧表示した画像の拡大縮小も実装できちゃう。

WPFの方が早くて簡単。

>>673
WPFでもWinFormsでも作業量変わらんだろ…。どこが違うのさ?

677 :デフォルトの名無しさん:2010/11/02(火) 23:35:41
凝ったUIやる場合はWPF
そうじゃければWinForm
それだけ

678 :デフォルトの名無しさん:2010/11/02(火) 23:36:52
Click+=ナンチャラ とか書けないと思ってる?

679 :デフォルトの名無しさん:2010/11/02(火) 23:42:06
例えばさ、ファイル一覧をリストに表示したいってときでも
どうしていいかさっぱりわからない

ドボンネットみたいなのでWPF対応しているようなサイトないのかな

680 :デフォルトの名無しさん:2010/11/02(火) 23:43:27
>>679
その程度ならあるじゃん


681 :デフォルトの名無しさん:2010/11/02(火) 23:45:06
>>676
えーと、デザイナの出来とかw

682 :デフォルトの名無しさん:2010/11/02(火) 23:45:57
>>677
WPF使った事ないだろ。
凝ったUIやらなくてもバインディングとテンプレートは素晴らしく強力。
WPFの真価はここにある。

683 :デフォルトの名無しさん:2010/11/02(火) 23:48:00
VS2010だったら十分デザイナ使えるぞ

684 :デフォルトの名無しさん:2010/11/02(火) 23:48:46
>>682
あるよ
でもwinformのころとは明らかに書き方とか変わってるので
覚えてなれるまでが大変

685 :デフォルトの名無しさん:2010/11/02(火) 23:50:56
俺は、タスクトレイアプリ以外は、WPFでやるけどさ。
どうしても、Formつかうことあると、負けた!!って思う><

686 :デフォルトの名無しさん:2010/11/02(火) 23:54:55
>>679
<ListView ItemsSource="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

って書いといてthis.DataContext=Directory.GetFiles(path).Select(s=>new FileInfo(s));

こんな感じかな?

687 :デフォルトの名無しさん:2010/11/03(水) 00:03:59
>>686
それそれ、そのラムダ式?
おれラムダ式も知らない初心者だよ?
そこで詰まるんだよ

688 :デフォルトの名無しさん:2010/11/03(水) 00:06:05
そんなもんWPF全く関係ないしそういう風に書かないといけないわけでもない

689 :デフォルトの名無しさん:2010/11/03(水) 00:06:32
>>685
タスクトレイアプリはWPF NotifyIcon使って作ってる。
http://www.hardcodet.net/projects/wpf-notifyicon

690 :デフォルトの名無しさん:2010/11/03(水) 00:07:22
C#初心者じゃねーか!スレ違い!

あれ

691 :デフォルトの名無しさん:2010/11/03(水) 00:10:48
ITやMSなどのWPFのTIPS一通り読んでさ
書いてあることをやることはできるけど
ちょっと違うことやりたいと思ったらまったくわからない
あ、これ基礎の基礎が書かれているわけじゃないんだって気づいて挫折するんだよ

例えば>>686の場合
ファイルパスだけじゃなくて、更新日時やファイルサイズも読み込むとしたら?
listviewじゃなくてdatagridviewだった場合は?ってなると
一体どのようにバインディングすればいいかさっぱり

692 :デフォルトの名無しさん:2010/11/03(水) 00:13:25
拡張子で文字色を替える場合XAML?
それともXAMLになくてC#で書くの?
とか、ドボンでごり押ししてアプリ作ってきた俺には
TIPSサイトが少ないことが致命的
MSのあの説明じゃ難しすぎてわけわかめー

693 :デフォルトの名無しさん:2010/11/03(水) 00:16:13
@ITで今やってるWPF連載はわかりづらいから前回の連載オヌヌメ
第2回の最後まで読めばわかるよ。

WPF/Silverlight UIフレームワーク入門
ttp://www.atmarkit.co.jp/fdotnet/vblab/uiframework_index/index.html

あと、ここ
ttp://ufcpp.net/study/dotnet/wpf_abst.html

入門でMSDN読んで理解できたら凄いと思うわ

694 :デフォルトの名無しさん:2010/11/03(水) 00:17:40
>>693
まあ理解に時間かかるかもしれないけど
それほど難しい物ではないような気がするけどな・・・

695 :デフォルトの名無しさん:2010/11/03(水) 00:30:46
>>691
更新日時・ファイルサイズのプロパティを公開する適当なクラス作ってバインディング。
TIPS一通り読んでもできないなら、WPFやWinFormsの前にC#でのプログラミングに関する知識が決定的に足りてない。

>>690

696 :デフォルトの名無しさん:2010/11/03(水) 00:35:45
c#って検索するとき#が消えるんだけど、他に候補はなかったのかな

697 :デフォルトの名無しさん:2010/11/03(水) 00:38:53
何の検索?
消える方がおかしい

698 :デフォルトの名無しさん:2010/11/03(水) 00:40:08
>>693
最近のもそこの両方とも見ましたけど、さっき言ったように書かれていること以外の
コントロールを使ったりなんかするとどこにバインディングすればいいかがわからないんです
INotifyPropertyChangedとかも、え?これってデリゲート理解してないと無理なんじゃないの?って詰まる
ITのコンバータによるデータ変換のところも
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
これでできますとかいわれても、一体この引数はどこから来たの?なぜこれだといけるの?
そしてこのソースは一体どこに記述するの?
そんなのわかってて当たり前だよって人が書いたものなのでそういう説明が抜けててわからない
他の数多くあるTIPSサイトも同じようにこうすればできるとは書いているが
なぜそれだとできるのか、なぜそれでできるとわかったのかなどが書かれてない
それさえわかれば、応用できるのにって思う

>入門でMSDN読んで理解できたら凄いと思うわ
やっぱりそうですか、こんなのでみんな理解できているのかと思って自暴自棄になった。

699 :デフォルトの名無しさん:2010/11/03(水) 00:46:50
>>695
それぼくからすると説明になってませんから・・・
クラス作ってバインディング
いやいや、そのバインディングの仕方がわからないんです
stringやintのバインディングは出来ても
ファイル情報の自作データクラスを一体どうしたら、データグリッドの
各セルに配置できるかさっぱりわからない

winformsだとどぼん見ていれば小規模なユーティリティなら作れますが
何の知識が足りないんだろ

700 :デフォルトの名無しさん:2010/11/03(水) 00:49:49
>>686
これもそうだけど、datacontextにfileinfoのインスタンスを渡しているのかな?
なぜ、ListView ItemsSourceにfileinfoのインスタンスを渡せるとわかたのかがわからない
それをするとなぜlistviewに表示されるかもわからない

701 :デフォルトの名無しさん:2010/11/03(水) 00:53:15
よくたとえでテレビの内部構造を理解していなくてもチャンネルを変えることができる
みたいな例えがありますが、

WPFも、一見内部構造知らなくても操作できますよって感じに見せておいて
内部構造知らないとできないだろってパターンなんだよね

702 :デフォルトの名無しさん:2010/11/03(水) 00:53:15
ぜんぜんよんでないな

703 :デフォルトの名無しさん:2010/11/03(水) 01:13:15
>>699
WPF関係なくデリゲートとラムダ使えないとC#プログラマーとしてかなり損すると思うよ
Linqの勉強でもしたら?
Convertの引数の意味が分からんのならインターフェイスも復習したほうがいい

704 :デフォルトの名無しさん:2010/11/03(水) 01:30:32
>>703
使えないというか使う必要がなかったという感じです
そういう知識が最低限ないとWPFは無理ってことですね

>>702
読みましたが、理解はしていないと思います。
あまりにも難しすぎる。

705 :デフォルトの名無しさん:2010/11/03(水) 01:36:31
>>704
使う必要はWinFormsであろうともあるというか、
少し頑張って覚えようとするだけでどれだけ楽になるか。
WinFormsがどうだのWPFがどうだのというよりも、学習する気があまりにもなさすぎる。

706 :デフォルトの名無しさん:2010/11/03(水) 01:37:08
WPFはWinformsのように直感的には作れないし
Webの情報もの方は圧倒的に不足してる
Winformsで満足だと思うなら無理にWPFに移行する必要はないよ

別に馬鹿にしてるわけじゃないけど、今回の話は
四則演算しかできない小学生が微分積分ってなにがすごいの役に立つの?
って聞いてる状況ににてると思う



707 :デフォルトの名無しさん:2010/11/03(水) 01:42:39
>>700
DataContextに何が入るのかなんてSelectにマウスオーバーすれば一発で分かるだろ…。
ブレークポイントで止めて、実際に何が入っているのか確認もしていない。
INotifyPropertyChangedだってWinFormsの頃から使われてた。

IDEを使えずC#を知らないのに理解できるわけないじゃないか。
最初から全て理解するなんて誰にもできない。誰だって自分が理解できる範囲から少しずつ知識を広げていくもんだ。
サンプルからコピペするだけの状況から抜け出すには、自分で努力するしかない。

・WindowのDataContextにIEnumerable<FileInfo>が入れられる。
・{Binding}は親のDataContextに入ってる物を参照する。
 ListViewのItemsSourceは列挙可能なインスタンス(Array,List<T>,IEnumerable<T> ...)を受け取る。
 →<ListView ItemsSource="{Binding}">でItemsSourceにWindow.DataContextのIEnumerable<FileInfo>が入る。
・ListView.ItemTemplateはItemsSourceに入っているIEnumerable<FileInfo>から要素(FileInfo)を一つずつ取り出し、自分のDataContextに格納する。
・<TextBlock Text="{Binding Name}" />でDataContextに入っている要素(FileInfo)からプロパティ(Name)の値を取得し、TextBlockに表示する。
厳密に言うと違うとこもあるけど、イメージとしてはこんな感じ。

708 :デフォルトの名無しさん:2010/11/03(水) 01:42:59
これはWPFの話じゃないなw

709 :デフォルトの名無しさん:2010/11/03(水) 02:00:55
Linqって先につながるものなの?
他の言語でその考えを応用できたりする?

710 :デフォルトの名無しさん:2010/11/03(水) 02:04:21
>>709
Linq to Objectsの高階関数でのリスト処理はいまどきの言語なら基本中の基本。

711 :デフォルトの名無しさん:2010/11/03(水) 02:06:48
>>705
ラムダぐらいはちょっと覚えてみます

>>706
やっぱりWPFは微積レベルだったんですね
道理でわからないと思った

>>707
そりゃあ、経験豊だからわかるんでしょうがぼくにはまだ無理です
ラムダがわからないので、selectといわれてもよくわかりません

>イメージとしてはこんな感じ
大体そういうことなんだろうなというのはわかりますがが、そういう説明がよくあるTIPSで、ぼくがわからないのは
>要素(FileInfo)を一つずつ取り出し・・・
ItemsSourceがどういうデータを受け取けとれるのかどうやってわかったのかがわからない
fileinfoなんてかなり特殊なデータ構造ですよね?これがそのまま入るなんて想像もできない
一体どこまでのものが入るの?自作のデータクラスもそのまま入るの?入らないの?
なぜ入らないのか?なぜfileinfoだと入るのか?DirectoryInfoではどうなのか?DataGrid.Columnsの場合は?
List<List<T>>の場合は?,Directory<Directory<T>>の場合は?一体どんなものまで取り出せるの?
制限みたいなのはどこを見ればわかるの?

単純にプロパティさえあればなんでもありなの?
だとしたら、プロパティさえあれば何でもいいってどこを見てわかったの?

こういう疑問が湧いてきて、ちょっと違うことしようとすると何をどうしていいかわからない

712 :デフォルトの名無しさん:2010/11/03(水) 02:21:31
>>711
それこそItemsSourceには列挙可能なインスタンス(Array,List<T>,IEnumerable<T> ...)ならTにかかわらず"何でも"入る。
で、どうやってそのTを表示するのかっていうのは、もともとTに表示方法が定義してあればその通り表示するし、
今回のようにDataTemplateで定義されてればそれに従う。もしそういうのが一切なければToStringの結果が表示される。

<TextBlock Text="{Binding Name}" />
の部分はTの型のNameっていうプロパティを表示してって意味で、LastAccessTimeとかLengthとかにもできる


713 :712:2010/11/03(水) 02:24:07
ついでに俺はこういう知識はエッセンシャルWPFって本を読んで理解した。
この本読めばWPFのイロハは理解できると思う。


714 :デフォルトの名無しさん:2010/11/03(水) 02:30:20
>>711
>ItemsSourceがどういうデータを受け取けとれるのかどうやってわかったのかがわからない
ItemsSourceを使う全てのサンプルやTipsでIEnumerable インターフェイスを実装したクラスを指定している。
MSDNにも「IEnumerable インターフェイスを実装するすべてのコレクションを列挙できます。」と書いてある。
http://msdn.microsoft.com/ja-jp/library/ms743643%28VS.80%29.aspx#collections

ぐぐれ

>fileinfoなんてかなり特殊なデータ構造ですよね?自作のデータクラスもそのまま入るの?
よくある普通のクラス。自作のクラスもそのまま入る。
IEnumerable<DirectoryInfo>, DataGrid.Columns, List<List<T>>, Directory<Directory<T>>全部入る。

>単純にプロパティさえあればなんでもありなの?どこを見てわかったの?
なんでもあり。プロパティがなくてもあり(ToStringの結果が表示される)。
そもそも"なんでもあり"ではないと書いてる所なんてない。

何でも突っ込んでテンプレートで好きなように表示するのがWPF流。
全部手動でやるWinFormsは単純だが面倒。だからWPFに慣れた人はWinFormsに戻りたくないと言う。

715 :デフォルトの名無しさん:2010/11/03(水) 02:37:31
>>711
なんで手で動かしてみようとしないの?
DirectoryInfoでだろうなのかという疑問が浮かんだなら
まずはFileInfoでやってみて、そして次にDirectoryInfoで試せばいいじゃない。
100回、ネットで記事見て本を読んで質問をしてを繰り返すよりも
1回、自分の手で動かして、VisualStudioのデバッガで値を見て、
というのを行ったほうがずっと身に付くと思うんだけど。

理屈は後だっていいじゃない。
手で動かして結果を見てから、理屈を見たほうが納得行くと思うよ?

716 :デフォルトの名無しさん:2010/11/03(水) 02:47:27
ちょっと便乗して質問
<ListBox.ItemSource>
<Binding Path = ".">
<Binding.Converter>


っていうサンプルがあったんだけどPath = "."ってどういう意味?


717 :デフォルトの名無しさん:2010/11/03(水) 02:49:07
ここでウダウダ書いてる暇で十分に獲得できただろうにな

718 :デフォルトの名無しさん:2010/11/03(水) 02:55:03
>>716
http://pro.art55.jp/?eid=871963

719 :デフォルトの名無しさん:2010/11/03(水) 02:57:30
>>718
ありがと

720 :デフォルトの名無しさん:2010/11/03(水) 03:13:05
>>712-714
なんとなくWPFのきっかけがつかめた気がします
それにしても、まさか全部の質問に答てくれる人がいるとは正直驚きました
深く感謝いたします

>>715
やっぱり力技で覚えていく方がいいんですかね

721 :デフォルトの名無しさん:2010/11/03(水) 03:34:05
きっかけなんて「そこにあるから」で十分。
プロジェクト作ってデザイナで、とりあえずメニューだ!と設置して動かしたら
Windowのサイズ変えても左上に居座ってて、Stretchが怪しい!とStretchしたら
ド真ん中に表示されて・・・ 1日目それで終了。
ああMarginか、とか、StackPanelとかあるのかー、とちょっとだけ調べたのが2日目。
そういう積み重ねでしょーが。
全部理解してから何かを始める人なんて居ないよ。

722 :デフォルトの名無しさん:2010/11/03(水) 04:41:13
すごい、できちゃったよDataGridで
しかも>>686のようにたった一行のコードを書くだけで・・・
確かに慣れたら楽かもしれない

723 :デフォルトの名無しさん:2010/11/03(水) 05:12:19
クソミソ言われた子が頑張って1つのことを成し遂げた姿に感動した

724 :デフォルトの名無しさん:2010/11/03(水) 05:23:55
>>686のDataTemplateに画像を追加して、項目が選択されたときに画像を変更するみたいなことをやりたいんだけど、どうすればいい?

725 :デフォルトの名無しさん:2010/11/03(水) 05:26:33
ラムダ式なかったらめんどくさい
昔のC#は匿名メソッドはあったがラムダ式がなかったらしいな
みんなめんどくさいものやってたんだな

726 :724:2010/11/03(水) 06:15:40
自己解決しました
http://stackoverflow.com/questions/248545/wpf-trigger-for-isselected-in-a-datatemplate-for-listbox-items

727 :デフォルトの名無しさん:2010/11/03(水) 06:17:52
>>724
ttp://blogs.wankuma.com/kazuki/archive/2009/01/12/166166.aspx

728 :724:2010/11/03(水) 06:36:52
>>727
すまん言葉が足りなかった。
画像を変更したいのはListBoxの項目自体の画像です。
ディレクトリを表す項目にフォルダみたいなアイコンをつけて、
選択したらフォルダが開いてるアイコンに変えるみたいなことをしたかった。
DataTemplateの親のプロパティにトリガを設定する方法がわからなかったんだけど、
調べてたら
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True">
ってやればいいことがわかりました。


729 :722:2010/11/03(水) 07:08:27
DATAGRIDだけど
・あれから1時間かけてfileinfoのLastWriteTimeの
日/月/年
と逆になっているのを普通にするための方法を調べ解決
それから一時間かけて
・fileinfo.lengthに3桁づつコンマをつける方法を調べ解決
・そのファイルサイズを右揃えにする方法を調べ中
なぜかカラムヘッダのプロパティウィンドウのテキストの項目に
右揃えできそうなアイコンがあるのにクリックしても無反応
バイトで表示じゃなくてMBで表示するために/1024で割りたいが
どこですればいいかわからない
fileinfoを直接扱うんじゃなくて、一旦自前のクラスに入れるほうがいいのかな・・・
・ヘッダをクリックしてソートすると、スクロールバーが勝手に動く(セルの値に合わせているのか?)のを止める方法を調べ中
どうしてこんないらない機能をつけるかなー

730 :デフォルトの名無しさん:2010/11/03(水) 07:17:31
ここは日記帳じゃないよ
質問じゃないならブログかツイッターに書けば?

731 :デフォルトの名無しさん:2010/11/03(水) 08:17:53
FXの醍醐味ってXBAPのはずだよね
XBAP自体そんなに普及しているようには思えないんだけどそんなにWPFって使われているのだろうか?


732 :デフォルトの名無しさん:2010/11/03(水) 08:28:49
> FXの醍醐味ってXBAPのはずだよね
そんなことないしxbapはもう終息

733 :デフォルトの名無しさん:2010/11/03(水) 09:52:16
>>725
ReactiveExtensionいいよ。結構便利

734 :デフォルトの名無しさん:2010/11/03(水) 11:27:24
>>686だが一晩寝たらWPFできる子になってて笑った
この調子で1万人ぐらい開発者増えないかな

>>729
・割り算用のIValueConverterを自作する
 IValueConverterは割り算だけでStringFormatで単位を付けてもいいけど、文字列で返した方が潰しがきくと思う
・ElementStyleでHorizontalAlignmentを変更
 〜Style系のプロパティで困ったらSnoopってツールを使うといいかも

<DataGridTextColumn Binding="{Binding Length,Converter={StaticResource ファイルサイズコンバーター}}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="HorizontalAlignment" Value="Right" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>

735 :デフォルトの名無しさん:2010/11/03(水) 11:27:53
C#でアダプタパターンをやる際に、
D言語のopDotやGo言語の埋込みのように
.演算子の右側で指定された名前を、
クラス内で明示的に定義されていなければ
クラス内の特定のメンバ構造体に転送するような方法はあるのでしょうか。

736 :デフォルトの名無しさん:2010/11/03(水) 11:32:13
IDEにプロパティウインドウってありますけど、あれと同じものを
実装するコントロールってあるんでしょうか?
ちなみにVS2008を使用しています。

737 :デフォルトの名無しさん:2010/11/03(水) 11:33:10
PropertyGrid

738 :デフォルトの名無しさん:2010/11/03(水) 11:33:13
ないね。

DynamicObject 使って動的にやるか、
コード生成系の手段でプロキシクラス生成するか。

Go の埋め込みみたいなの、今から C# に追加するとものすごい混乱しそうだし、今後追加されることもないと思う。
あれは、structural subtyping 持ってないと大して有用でもないし、
C# みたいな nominational subtyping(明示的にインターフェイス継承しないと多態動作できないもの)には不向き。

739 :デフォルトの名無しさん:2010/11/03(水) 12:01:32
>>738
ありがとうございました。
確かにインターフェース継承してないとあんまり継承の意味ないですね。

740 :デフォルトの名無しさん:2010/11/03(水) 15:54:29
richtextboxのコンテクストメニューって自分で作らないといけないんですか?
どこかにtextboxと同じメニューのひな形とかありませんか?

741 :722:2010/11/03(水) 16:38:05
>>734
いけました

StaticResourceとして使う方法(インスタンス化?)がわからなくて手間取りました
コンバーターを使うと

102,000k
120k
200,000k

こんな風にソートされるかと思ってたけど
コンバートする前のlong型データでちゃんと計算されるんですね

742 :722:2010/11/04(木) 00:36:13
今日1日かけたけどわからなかった
DataGridのカラムをクリックしてソートしたときや、セルを選択したときに
水平スクロールバーが勝手に動くのだけど動かないようにする方法ないでしょうか?

743 :デフォルトの名無しさん:2010/11/04(木) 01:07:08
この流れみて俺もWPF始めようと思った

744 :デフォルトの名無しさん:2010/11/04(木) 01:18:37
俺もWPF暦2週間の入門者。
WPFスレ過疎ってるから来てくれよ (´・ω・`)

745 :デフォルトの名無しさん:2010/11/04(木) 01:20:36
もうWPFもSLも分ける必要ないんじゃね?

746 :722:2010/11/04(木) 01:45:05
向こうのスレなんか怖いんだけど

747 :デフォルトの名無しさん:2010/11/04(木) 02:07:42
C#とかVisual Studioのスレ荒らしてたのが
SilverlightとWPFに行ってるんじゃない?

その分こっちが静かになって昨日の話しもやりやすかった。

748 :デフォルトの名無しさん:2010/11/04(木) 05:50:05
WPFはExpression Blendが無いとキツい場面もあるよ。


また一つMSにお布施だな。

749 :デフォルトの名無しさん:2010/11/04(木) 10:32:31
http://ideone.com/NE2ck
サーバ側です
クライアントサーバシステムでチャレンジ&レスポンス方式でパスワード認証したいのですが
どうも文字列の比較がうまくできません
ハッシュ値をhttp://phpspot.net/php/pg%82l%82c%82T%83n%83b%83V%83%85%8Cv%8EZ%83c%81%5B%83%8B.html
で計算してクライアント側から返してもresult部分でreceivedanswer、myanswerともに見た目はまったく同じでも
if文の条件の比較では違っているとでてしまいます。
改行コードあたりの見えない文字があるのかと思って改行コードだけはあたってみたのですが
両方とも改行コード自体関係ないみたいですし・・・どこがおかしいのでしょうか

750 :デフォルトの名無しさん:2010/11/04(木) 10:55:12
とりあえずハッシュしないで素の文字列でやってみたら?
なんかわかるかもよ

751 :デフォルトの名無しさん:2010/11/04(木) 11:08:48
>>748
グラフィックツールが欲しくなるようなことができるということ。
外観がWinFormsと同じでよければBlendなくてもVSのデザイナで十分作れるよ。
WinFormsでWPFと同じことやろうとしたら自前描画地獄でそれこそXAML手書きなんかより
はるかに面倒。

752 :デフォルトの名無しさん:2010/11/04(木) 11:42:31
splitで作成した文字配列をInt型の配列にするためには
どのような方法があるのでしょうか?ひとつづつ抜き出す以外の方法を探しております。

(Ex)
string a="1,2,5,2,6";
var b = a.split(',');
*var bをInt型に変更したいです

思いついているのは↓
var row = new System.Collections.ArrayList();
foreach(string i in a)
{
row.Add(int.Parse(i));
}

位しか思いつきません・・・.netでなにか用意されていないのでしょうか?よろしくおねがいします。

753 :デフォルトの名無しさん:2010/11/04(木) 12:05:05
var b = (from i in a.Split(',') select int.Parse(i)).ToArray();

754 :デフォルトの名無しさん:2010/11/04(木) 12:04:48
Array.ConvertAll

755 :デフォルトの名無しさん:2010/11/04(木) 12:07:40
なぜC#初心者はArrayListを使いたがるのだろうか

756 :デフォルトの名無しさん:2010/11/04(木) 12:10:38
別に使ったっていいじゃん。
あと、元ので何か困るのかいな。

757 :デフォルトの名無しさん:2010/11/04(木) 12:13:05
ArrayListって配列にするときにJavaみたいに(int[])row.ToArray(typeof(int))と書くんだっけ
懐かしいな

758 :デフォルトの名無しさん:2010/11/04(木) 12:13:20
>>752
Array.ConvertAll(b,
new Converter<string, int>(s=>return int.Parse(s));

IDEで検証してないから動作保証外。


759 :デフォルトの名無しさん:2010/11/04(木) 12:16:46
ラムダ式ならnew Converter<string, int>はいらんでしょ
省略が嫌なんだったらConvertAll<string, int>も書くべき
もしくはArray.ConvertAll<string, int>(b, int.Parse);でもいいはず

760 :デフォルトの名無しさん:2010/11/04(木) 12:16:50
>>753は拡張メソッドで書いたほうが見やすいかな?
var b = a.Split(',').Select(x => int.Parse(x));
int[]で欲しいなら最後にToArray()
回すだけならIEnumerable<int>のまま

761 :デフォルトの名無しさん:2010/11/04(木) 12:17:44
ラムダ式の偉大さが如実に現れる問題だな

762 :752:2010/11/04(木) 12:20:47
ほ、、、ほう・・・@w@ラムダ式、、まだそこには手をつけてないですorz

もしかしてラムダ式にはバルスとかいう全てDeleteしてしまうメソッドも実装しているのかな・・orz

あぁ、目がぁ、目が見えない・・・・

763 :デフォルトの名無しさん:2010/11/04(木) 12:24:26
>>762
ラムダ式っつーかLINQわかんないならとりあえずこうやって書いとけ

string a = "1,2,5,2,6";
var row = new List<int>();
foreach (var item in a.Split(',')) {
  row.Add(int.Parse(item));
}

ArrayListよりも型を指定できるジェネリックな配列(List<T>)を使った方がいろいろ便利

764 :デフォルトの名無しさん:2010/11/04(木) 12:24:47
ラムダ式なんか後でいいからその前にジェネリックを勉強しろ
基本的に>>752でいいけど今時ArrayListは使わん

765 :デフォルトの名無しさん:2010/11/04(木) 12:35:07
var arraylist = new System.Collections.ArrayList();
var list = new List<int>();

arraylist.Add(1); arraylist.Add(2);
list.Add(1); list.Add(2);

var a = (int)arraylist[0] + (int)arraylist[1];
var b = list[0] + list[1];

さあ、これをみてジェネリックの素晴らしさを体感するのです

766 :デフォルトの名無しさん:2010/11/04(木) 12:50:08
おおおおおお!!!!!!

767 :デフォルトの名無しさん:2010/11/04(木) 14:48:08
画面キャプチャするのに
CopyFromScreenより軽い方法ってあります?
1600x900くらいのサイズを連続でキャプチャしてると
10fpsでも間に合わなかったりするんですけど

768 :デフォルトの名無しさん:2010/11/04(木) 14:51:45
そりゃ無理だろ
俺もFlashゲームをやる際の補助ツールとして
画面の部分キャプチャをしやすいツール書いたけど
C#だと重すぎて部分的にC++で書いたもんな

769 :767:2010/11/04(木) 15:00:30
>>768
返信ありがとうございます。
やっぱりC#.NETだけで大画面を高速にキャプチャは無理ですか・・・。
C/C++とかDirectX覚える機会があったらまた頑張ってみます。

770 :デフォルトの名無しさん:2010/11/04(木) 15:22:18
CopyFromScreen自体は内部的にBitBlt使ってるから高速だと思う。
多分キャプチャしたビットマップをファイルに出力するのに時間くってるんじゃね?

771 :767:2010/11/04(木) 15:58:19
>>770
@画面キャプチャ
AキャプチャしたビットマップをListに出力
B別スレッド1でMemoryStreamのリストにJPEGに変換保存(Encoderクラスは使用してません)、元のビットマップは破棄
C別スレッド2で1秒間隔でMemoryStreamのリストを見に行って、JPEGがあったら保存
(BCをしないとメモリが足りなくなってしまうので)

っていうのをやってたんで、ABCを切ってキャプチャしてみたところ
キャプチャしてない状態で100fps弱
キャプチャしている状態で20fps弱まで出ました

単純計算でキャプチャに40ms、出力に50ms秒強かかってる事になりますね・・・。

画面の一部が変化し次第キャプチャっていう事をやっているんで
その変化を監視するのに10msほどかかってます

C#始めたばかりなので軽い処理にするためには、っていうノウハウが無いので
実際このアルゴリズムが一番速いのかどうかも分かってない状態です・・・

772 :デフォルトの名無しさん:2010/11/04(木) 17:12:40
NT 6.xになってからGDIの存在意義が無くなったことを悲しく思う

773 :デフォルトの名無しさん:2010/11/04(木) 17:42:30
>>771
画面が変化したことだけを検出したいなら、

byte[] prev; //前回キャプチャした画像
byte[] next; //今回キャプチャした画像
int sum = 0;
for (int i = 0; i < prev.Length; i++)
{
sum += Math.Abs(prev[i] - next[i]);
}
//sum > 0なら変化した

とかやれば速くなるんでない?
後は、監視する領域を極力小さくするか

774 :773:2010/11/04(木) 17:50:34
32bitRGB、もしくは画面サイズが4の倍数とかであるなら、
byte[]じゃなくてint[]とかlong[]にコピーして差分取った方が速いかも。
あるいは、unsafeを使うか、あきらめてC/C++を使うか。

775 :デフォルトの名無しさん:2010/11/04(木) 17:52:14
>>773
描画系のAPIをフックした方が早いんじゃないの?

776 :デフォルトの名無しさん:2010/11/04(木) 18:12:36
>>772
それだけCPUの速度が上がったって事でしょ
PCI-Eになったし

大昔あったHDDのPIO転送みたいな考え方
本当はマルチタスクOSでは禁じ手なんだけどね

777 :デフォルトの名無しさん:2010/11/04(木) 20:41:07
どうでもいいけどそれってバスマスタかDMAの間違いじゃないのか。
PIOて

778 :デフォルトの名無しさん:2010/11/04(木) 20:42:54
>>773
private int GetHashCode(byte[] bytes) {
  int r = 0;
  for (int y = 0; y < _capSize.Height; y += 4) {
    for (int x = (y % 2) * 2; x < _capSize.Width; x += 4) {
      int i = (y * _capSize.Width + x) * 3;
      r ^= bytes[i] * i + (bytes[i + 1] * x + bytes[i + 2] * y * 256) * 256;
    }
  }
  return r;
}

高速化が目的なら細かい変化はある程度無視するのもありかもね

779 :デフォルトの名無しさん:2010/11/04(木) 22:52:31
>>777
バスマスタとDMAはマルチタスクOSでは禁じ手とはならないだろ

780 :デフォルトの名無しさん:2010/11/05(金) 04:30:38
ボタンなどのコントロールを配置したパネルをいくつ配置したいのですが、
その配置数の数だけ_Click等を用意するのは無駄かと思うのですが、
プログラムからパネルをコピーして利用することなどはできませんか?

781 :デフォルトの名無しさん:2010/11/05(金) 04:45:59
「ボタンなどのコントロールを配置したパネル」をユーザーコントロールにして
それをいくつか作るのはどうでしょうか。

同じようなボタンが多いならイベントハンドラは同じ物を指定して
senderのNameとかで振り分けなんてのも。

782 :デフォルトの名無しさん:2010/11/05(金) 04:51:37
投稿する前に文章を読み返すことをおすすめする。

つまり複数のコントロールを1個にまとめたパーツを何個か配置したいんだけど、
コピーして貼り付けるとそれぞれにイベントやらなんやらを割り当てなくちゃいけなくて面倒だから
なんかうまい方法教えろってことでおk?
もしそうならユーザーコントロールってのを使いなされ。

783 :デフォルトの名無しさん:2010/11/05(金) 04:54:25
>senderのNameとかで振り分けなんてのも
その手があったか

784 :767:2010/11/05(金) 05:05:16
>>773
>>778
返事が遅くなってしまいました。サンプルコードありがとうございます。
やっぱりみなさん凄いですね・・・。この短時間でビットマップの差異を導き出すアルゴリズム組めるなんて
監視にかかる時間をもっと縮められれば、もう少し高いfpsでキャプチャし続けられるかもしれないので
そっちのアルゴリズム責めてみます。
ありがとうございます。

785 :デフォルトの名無しさん:2010/11/05(金) 05:30:13
>>784
ためしにちょっとつくってみたんだがなかなか速度上がらんかったわ
まあそれでも少しは効果があったものをあげとくと
別スレッド2をタイマー動作じゃなくて、AutoResetEvent使ってリストに追加したらすぐに処理できるようにする
キャプチャー用の画像やデータを保持するbyte[]なんかは予め用意しておいて作業中に大規模なメモリの割当が発生しないようにする
こんなところ



786 :767:2010/11/05(金) 06:34:23
>>785
貴重な情報ありがとうございます!
たまーに一気にメモリが食われる時があったのはいちいち頻繁に呼び出す関数内にローカルで
byte[]とかを定義してたからかもしれません。見落としていました。
ありがとうございます!

787 :デフォルトの名無しさん:2010/11/05(金) 07:27:24
画像の差分チェックなんてそれこそGPGPUの新しい使い方として
やろうとしてることなのにw
そんなのをMPUでやるなんて無謀だろw

788 :デフォルトの名無しさん:2010/11/05(金) 14:48:28
お前GPGPUって言いたいだけちゃうんかw

789 :デフォルトの名無しさん:2010/11/05(金) 16:53:36
それなりに動いてれば十分だろ
たかが画面のキャプチャのために激しく環境依存するのか

790 :デフォルトの名無しさん:2010/11/05(金) 17:30:06
”GPGPUの新しい使い方なのにMPUでやるなんて無謀”
この論理は破綻している


791 :デフォルトの名無しさん:2010/11/05(金) 21:23:23
MDBを参照するのはOLE DBで可能なのですが、MDBを作成するには
やはりCOMとしてADOXなどを使わなければ難しいのでしょうか?

792 :デフォルトの名無しさん:2010/11/05(金) 21:29:22
空のDBをリソースに入れておいてコピーとか

793 :デフォルトの名無しさん:2010/11/05(金) 22:29:49
>>781,782
すみません ユーザコントロールなど調べてみたのですが
どのように行えばいいのかがわかりませんでした。

解説のページなどはないでしょうか?

794 :デフォルトの名無しさん:2010/11/05(金) 22:32:59
>>793
ここおすすめ
http://cs2ch.blog123.fc2.com/blog-entry-1.html

どの辺のページか忘れたけどやってる
ただしユーザーコントロールではやってないけど

795 :デフォルトの名無しさん:2010/11/05(金) 22:46:58
DAOで。

796 :デフォルトの名無しさん:2010/11/06(土) 00:25:58
webclientのDownloadDataでページをダウンロード、その後UTF8でGetStringしたが、ソースが取得できない
byte配列にデータは入っているようなのですが、GetStringすると文字化けしたっぽい文字が2文字ほど
なぜなのでしょうか?

WebClient webClient = new WebClient();
byte[] a=webClient.DownloadData("http://g.e-hentai.org/g/286017/330e7c37ff/");
textBox1.Text = System.Text.Encoding.UTF8.GetString(a);

まぁサイトも晒すとこうなってるんですが。。。
googleとかはちゃんとソースが取れます

797 :デフォルトの名無しさん:2010/11/06(土) 00:28:06
サイトの文字コードとか確認してる?

798 :デフォルトの名無しさん:2010/11/06(土) 00:32:01
BOMが変とか?

799 :デフォルトの名無しさん:2010/11/06(土) 00:33:08
>>797
すいません書き忘れました
IEの表示で見てみるとUnicode(UTF-8)でした
UnicodeでGetStringも試しましたが駄目でした

800 :デフォルトの名無しさん:2010/11/06(土) 00:38:40
IEと同じオプションあわせたら?
というか、DownloadDataだっけ?
stringとかなかったか?

余談だけどwcはレスポンスコード吐かないから今ひとつ使いにくい…

801 :デフォルトの名無しさん:2010/11/06(土) 00:42:47
(同人誌) [毒ペッパー(しいなかずき)] AIDO 〜性処理人形〜

802 :デフォルトの名無しさん:2010/11/06(土) 01:00:42
webBrowser1.Navigate("http://g.e-hentai.org/g/286017/330e7c37ff/");
string s = webBrowser1.DocumentText;

803 :デフォルトの名無しさん:2010/11/06(土) 01:36:10
>>802
ぇー

804 :デフォルトの名無しさん:2010/11/06(土) 03:13:38
デリゲートがわかりにくいのは昔はこうだったがと説明されているところ
これが最近デリゲートを勉強し出した人には非常にわかりにくい
昔のデリゲートを知っている人なら簡単になったなってことだけど
今からの人は昔のデリゲートのやり方も覚えて今のやり方も覚えなきゃ
わからないような説明がされている

よく、CやC++ではこうだったがという説明もあるがこれも
初心者にとったら混乱するだけ

805 :デフォルトの名無しさん:2010/11/06(土) 03:20:03
例えば、最近の電話の説明をする場合

昔はダイヤル式だったけど、今はボタン式になっているんだよ
便利でしょ?

といわれても、電話がそもそも何をするものなのかわからない人にとっては
まったく説明になってない

他の場所にいる人と通話するには、電話局に信号を送るために
ボタンを押すだけでいいよ

と説明してくれた方がわかりやすい

806 :デフォルトの名無しさん:2010/11/06(土) 03:23:07
逆に電話が何者かわかっている人に

他の場所にいる人と通話するには、電話局に信号を送るために
ボタンを押すだけでいいよ

と説明してもちゃんと伝わる

昔話を例えに出して説明するのはやめてほしい

807 :デフォルトの名無しさん:2010/11/06(土) 03:24:17
わからないぞおれには

808 :デフォルトの名無しさん:2010/11/06(土) 03:25:26
デリケートなゾーンにはデリゲート

809 :デフォルトの名無しさん:2010/11/06(土) 03:29:44
またこいつか

810 :デフォルトの名無しさん:2010/11/06(土) 03:36:27
バリケードなゾーンには?

811 :デフォルトの名無しさん:2010/11/06(土) 03:38:48
育毛剤に脱毛剤

812 :デフォルトの名無しさん:2010/11/06(土) 03:57:05
>>804-806
お前の例えが的外れで分かりにくい。混乱するだけ。

813 :デフォルトの名無しさん:2010/11/06(土) 04:01:59
日本語がわからないとは

814 :デフォルトの名無しさん:2010/11/06(土) 04:03:40
日本語のデリゲートの説明読んで理解できなかった馬鹿が何か言いたいようです。

815 :デフォルトの名無しさん:2010/11/06(土) 04:23:06
煽りたくて仕方が無いようだな
俺みたいな奴にムキになるなんてお前もその程度なんだな

816 :デフォルトの名無しさん:2010/11/06(土) 04:35:34
このスレ、ID出してくれよ

817 :デフォルトの名無しさん:2010/11/06(土) 04:40:53
Linqの質問です。
whereの条件であるObjectがnullだったら含めたくなく、
null意外だったらObjectをキャストしてメンバーの値で比較したいのですがやり方がわかりません・・・。
whereで先にobject != nullとしても、後の条件のキャストも評価されてNullReferenceExceptionが投げられてしまいます。

818 :デフォルトの名無しさん:2010/11/06(土) 04:44:11
sequence.Where(obj => obj != null).Cast<TResult>()

819 :デフォルトの名無しさん:2010/11/06(土) 05:07:44
>>815
>>815

820 :デフォルトの名無しさん:2010/11/06(土) 05:12:05
>>803
>デリゲートがわかりにくいのは昔はこうだったがと説明されているところ
たぶん関数ポインタのことだろうな。
関数ポインタがわかる人にとってはそういう説明でデリゲートが何か一発で理解できるからしかたない。
その喩え話で言うと、携帯電話を初めて見る人に、これは電話ですって説明してる感じ。
そもそも関数ポインタってそんなに分かりにくい概念じゃないし、
デリゲートの説明だって関数ポインタがでてくるのは最初の概要だけで
そのあとは知らなくても理解出来るように書いてあるだろ。

821 :デフォルトの名無しさん:2010/11/06(土) 05:37:31
知らない単語が出た瞬間に思考停止する類の人間なんだろ。

822 :デフォルトの名無しさん:2010/11/06(土) 05:56:52
それともあれか?
2.0から代入するときnewが要らなくなったり、匿名メソッドが追加されたり、
3.0からラムダ式が追加されたことに対して?
確かにそれは紛らわしいけど、C#のソースコードを読むためには全部理解する必要があるしなぁ


823 :デフォルトの名無しさん:2010/11/06(土) 06:01:31
>>817
>whereで先にobject != nullとしても、後の条件のキャストも評価されてNullReferenceExceptionが投げられてしまいます。
そんなことってありえるの?

824 :デフォルトの名無しさん:2010/11/06(土) 07:06:01
>>818 >>823
ごめんなさい。
null判定の書き方を間違ってました。
先の条件が成立しなければ後のキャストは評価されませんでした。

825 :デフォルトの名無しさん:2010/11/06(土) 07:09:18
>>822
全部理解って、2.0以前のデリゲートの表記から全部覚えていかないと
いきなりラムダ式のデリゲート表記は理解できないってこと?

C++でソフト作るにはアセンブラ理解してないと無理みたいな感じ?

826 :デフォルトの名無しさん:2010/11/06(土) 07:55:10
>>825
デリゲートの表記は今も昔も1つしかない
delegate int Del(int x);

デリゲートとして扱えるものは
名前付きメソッドと匿名メソッドとラムダ式

int method (int x){ return x + 1; }

Del d1 = method;
Del d2 = delegate(int x) { return x + 1; };
Del d3 = x => x + 1;

2.0からは
Del d = new Del(someMethod);
じゃなくて
Del d = someMethod;
ってかけるようになった

まとめるとこれだけ

ラムダ式があれば匿名メソッドは必要ないかもしれないが
どの書き方もいまだに有効で、サンプルコードを読む際には覚えておく必要がある


827 :デフォルトの名無しさん:2010/11/06(土) 07:59:24
あほなの?


828 :デフォルトの名無しさん:2010/11/06(土) 08:00:06
ああ、あほは>>825な。


829 :デフォルトの名無しさん:2010/11/06(土) 08:00:16
>>825
前の時も思ったけどなんもわかってないくせに適当なこと言うのやめろよ
自分じゃまともなこと書いてるつもりかもしれないけど的外れ過ぎてまじ笑えない

830 :デフォルトの名無しさん:2010/11/06(土) 08:37:52
label1からlabel10までの10個のラベルがあるのですが、
このラベルの値(label.Text)を配列に代入したいと考えています。

配列に代入するにはどのようなコードを書けばいいでしょうか?

831 :デフォルトの名無しさん:2010/11/06(土) 08:39:14
>>796
System.Net.WebClient wc = new System.Net.WebClient();
wc.Encoding = Encoding.UTF8;

832 :デフォルトの名無しさん:2010/11/06(土) 08:39:26
label1〜10はデザイナーで作るの?

833 :デフォルトの名無しさん:2010/11/06(土) 08:41:07
>>832
はい。デザイナーで作成しております。

834 :デフォルトの名無しさん:2010/11/06(土) 08:43:57
>>833
まあこの辺を参考に
http://dobon.net/vb/dotnet/control/buttonarray.html

835 :デフォルトの名無しさん:2010/11/06(土) 08:49:07
string[] texts = new string[10];
texts[0] = label1.text;
texts[1] = label2.text;
texts[2] = label3.text;
...
こういう事じゃないの?

836 :デフォルトの名無しさん:2010/11/06(土) 08:51:29
まぁ長生きしろな

837 :デフォルトの名無しさん:2010/11/06(土) 08:53:11
ラベル作成時にnameに固有冠を付けておいてコントロールからnameを引っ張ってきて
マッチ判別で配列に放り込めばできるだろうけど、そういう書き方自体がどうなのかと思う。

838 :デフォルトの名無しさん:2010/11/06(土) 08:57:43
labelを配列にしたひw
そこだけコードで書いちゃえyp!

839 :デフォルトの名無しさん:2010/11/06(土) 09:08:03
labelの配列を得たいならこんな感じに書くのがスマートじゃないかな
http://ideone.com/w7Hu0

840 :デフォルトの名無しさん:2010/11/06(土) 09:14:34
labelが大量にあるなら動的に追加、そうでないからlabelのコントロール群を手書きで作るのが良いかも

841 :デフォルトの名無しさん:2010/11/06(土) 09:31:46
public struct hoge
{
public string test;
}

public hoge[] foo;
foo = new hoge[7];
for ( int i = 0; i <= 10; i++ )
{
foo[i] = new hoge();
}

このような構造体を作成し、xmlにシリアライズして保存すると
<hoge>
<test>var</test>
</hoge>
<hoge>
<test>baz</test>
</hoge>
この用に保存されています。

これをデシリアライズして読み込みを行おうとすると
{"XML ドキュメント (2,2) でエラーが発生しました。"}
というエラーが起きてしまいます。

これは、同じ名前のプロパティが複数あるのが原因になるのでしょうか?
また、その場合はどのようにすればよいでしょうか?

842 :デフォルトの名無しさん:2010/11/06(土) 09:34:21
XMLの読み書きは結構柔軟に読んでくれるだけどなあ・・・
そんな部分的じゃなく全ソース公開できない?

843 :デフォルトの名無しさん:2010/11/06(土) 09:50:07
たしかにそれだけじゃ判断できんな
どのテクノロジを使ってシリアライズしたかぐらいは書いてくれ

844 :デフォルトの名無しさん:2010/11/06(土) 09:53:58
>>842
XMLを原因と考えず他の部分も調べてみます。
全ソースはそこそこおおきいので、もうすこし調べて動かなければ張らせていただきます。

>>843
using System.Xml.Serialization;
を利用しています。

845 :デフォルトの名無しさん:2010/11/06(土) 09:57:45
>>844
ソースはideoneに張ってね。

846 :デフォルトの名無しさん:2010/11/06(土) 10:15:56
シリアライズする際の型が間違っておりました。

御手数をおかけいたしました

847 :デフォルトの名無しさん:2010/11/06(土) 10:40:57
>>839
たしかにスマートですね

848 :デフォルトの名無しさん:2010/11/06(土) 11:15:24
>>847
でもそれだとパネルとかに配置されたラベルは拾えないよな

849 :デフォルトの名無しさん:2010/11/06(土) 11:18:38
親コントロールから検索かけることもできたはずだけど
まあどうせならFormの起動の段階で動的にボタンを作って
管理した方がいいだろうね

なんせ自分は何があるか知ってるんだし

850 :デフォルトの名無しさん:2010/11/06(土) 11:21:43
>動的にボタンを作って
動的にラベルを作って

851 :デフォルトの名無しさん:2010/11/06(土) 12:25:33
FlowLayoutPanelですが、微妙に右にちょっとずれるんですが、
普通のパネルのようにぴたっとくっつける方法ってありますか?

852 :デフォルトの名無しさん:2010/11/06(土) 12:27:15
動的にラベルを作るって、デザイナー使わずに手打ちするってこと?
そんなことしたらレイアウトの修正が激しく面倒なことになりそうだが

853 :デフォルトの名無しさん:2010/11/06(土) 12:28:13
>>851
画像くれ

854 :デフォルトの名無しさん:2010/11/06(土) 12:29:25
>>852
そうか?
labelだからある程度規則的に並べるだろうし
規則性がないのなら座標用のデータを配列にでもいれて
動的にlabalを作るときにそれを代入すればいいだけちゃうの?

855 :デフォルトの名無しさん:2010/11/06(土) 12:36:09
>>851
どっかでこの関数を呼べばぴったりくっつくよ
private void PittariLayout(FlowLayoutPanel panel) {
  foreach (Control item in panel.Controls) {
    item.Margin = new Padding(0);
  }
}

856 :デフォルトの名無しさん:2010/11/06(土) 12:43:23
ぴったりれいあうと

857 :デフォルトの名無しさん:2010/11/06(土) 12:59:34
>>854
labelは他のコントロールの説明のために配置されることが多いよね
そうしたときに対象のコントロールとラベルを別々に管理しなきゃいけないのはめんどいと思うよ。
例えばテキストボックスの左側にラベルが置いてあって、このラベルの文字列を変える場合、
テキストボックスの座標はどうやって計算する?


858 :デフォルトの名無しさん:2010/11/06(土) 13:07:21
WPFでGridとGridColumnでautoでも使おうかな

859 :デフォルトの名無しさん:2010/11/06(土) 13:08:41
>>857
その辺は自分で考えろよw
そんなマルチに面倒みきれねーよw

860 :デフォルトの名無しさん:2010/11/06(土) 13:13:09
>>859
あ、別に俺は質問者じゃないよ
ただデザイナ使わずに配置するの推奨みたいな書き方してたから絡んでみただけです


861 :デフォルトの名無しさん:2010/11/06(土) 13:14:14
>>860
デザイナーで楽したいか
ラベルの列挙も楽したいか
じゃないの?

862 :デフォルトの名無しさん:2010/11/06(土) 13:18:58
>>858
WPFならDataTemplateだろ
コレクションを置くコード必要なし

863 :デフォルトの名無しさん:2010/11/06(土) 13:34:47
>>855
ありがとうございます。解決しました。

864 :デフォルトの名無しさん:2010/11/06(土) 13:41:07
ラベルをパネル内の中央に寄せたいんですが、そういうプロパティってあるんでしょうか?

865 :デフォルトの名無しさん:2010/11/06(土) 13:57:46
>>864
水平方向のAnchorを設定しなきゃOK

866 :デフォルトの名無しさん:2010/11/06(土) 13:59:59
label1.Dock = System.Windows.Forms.DockStyle.Fill;
label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
label1.AutoSize = false;
これで中央に配置されるよ

867 :デフォルトの名無しさん:2010/11/06(土) 14:14:47
>>861
デザイナーで楽して、
プログラムで列挙する。
これが一番
列挙用の関数なんてすぐ作れるし

868 :デフォルトの名無しさん:2010/11/06(土) 14:55:35
Win32APIを呼び出すときの型の宣言なんですけど、
MMRESULTに対応するC#の型は何になるのでしょうか?
私の見てるページがよく使われる型しか載ってないようなのでわかりませんでした。
あと、この型変換?専門用語でなんていうんですか?
用語知らないとMSDNで探せなかったので。

869 :796:2010/11/06(土) 15:05:19
どうもできないんでとりあえずは>>802で代用します
お騒がせしてすいませんでした

870 :デフォルトの名無しさん:2010/11/06(土) 15:05:34
typedef 型名

でググってけば型がなんだろうが大元が見つかるよ
マーシャリング

871 :デフォルトの名無しさん:2010/11/06(土) 15:22:21
MDIの子フォームをブラウザにしたいんだけど、
ネットみててクリックすると自動的に新しいウィンドウが開いてそれに表示される見たいのって
デフォルトでそうなる?

872 :デフォルトの名無しさん:2010/11/06(土) 15:50:34
>>868
http://www.pinvoke.net/default.aspx/winmm/MMRESULT.html

873 :デフォルトの名無しさん:2010/11/06(土) 16:01:46
>>826
ありがとうございます。やっぱり基礎から全部覚えなきゃいけないのか。
ラムダ式のデリゲートいくらみても理解できないわけだ

コードが短くなると
呼び出し側と呼び出される側という考え方って必要なの?って思えてくる
結局メソッドを変数みたいに扱うだけってことらしいが
じゃあ、直接呼び出さないのはなぜ?って考えた場合

親子関係にある子クラスから親クラスのメソッドを実行させるために必要だったんですね
でも、まんま親クラスを子クラスにプロパティで渡せばいいだけに思えるけど
その方が 親クラス.method()という感じになってどのクラスのどのメソッドを呼び出しているかわかりやすいし
でも、これだと長くなるからってことでデリゲートなんでしょ?

874 :デフォルトの名無しさん:2010/11/06(土) 16:05:38
でも、直接呼び出すようにしたら、親クラスのメソッド名や内容を変更した場合
子クラスの呼び出し方も変えなくてはいけないから
やっぱりデリゲートを中継したほうが、クラス間の依存関係が弱まって
変更しやすくなるからいいのか・・・

875 :デフォルトの名無しさん:2010/11/06(土) 16:08:17
Threadクラスのコンストラクタが得体の知れない特定の型を引数に取るようになってたら困るだろ?

876 :868:2010/11/06(土) 16:16:31
>>870>>872
ありがとうございます・・・・が、そのキーワードでぐぐって出てきたページや、
紹介のページみましたが・・・理解できませんでしたorz
[DllImport("winmm.dll")]
private extern static・・・
てパターンじゃないんですね?また出直します。

877 :デフォルトの名無しさん:2010/11/06(土) 16:18:49
>>876
小出しにしないで全部書け

878 :デフォルトの名無しさん:2010/11/06(土) 16:22:12
>>876
ちゃんと見ろ。public static enum MMRESULT : uintってあるだろ。

879 :868:2010/11/06(土) 16:30:37
でわ、お言葉に甘えて、
MMRESULT midiInGetDevCaps(
UINT uDeviceID,
LPMIDIINCAPS lpMidiInCaps,
UINT cbMidiInCaps
);
というAPIの関数をC#で使いたいのですが、2つ解らないところがあって、
1つは最初の質問の型宣言。
もうひとつは、lpMidiInCapsを格納する構造体をどうすればいいのか?
ただの変数でいいのか?ってところで躓いてます。

>>878
それが何を言ってるのか解らない。

880 :デフォルトの名無しさん:2010/11/06(土) 16:33:49
http://www.pinvoke.net/default.aspx/winmm.midiOutGetDevCaps
ここに書いてある

検索能力でも鍛えた方が捗るぞ、いろいろと

881 :デフォルトの名無しさん:2010/11/06(土) 16:36:37
なんでwin32apiってわざわざ調べて宣言しないと使えないようになってんの?
ライブラリで用意しといてくれればいいのに

882 :デフォルトの名無しさん:2010/11/06(土) 16:40:01
ほとんどはラップされて何らかのクラスで提供されてるよ
されてないのは言語的に相性が悪いかニッチな奴

883 :デフォルトの名無しさん:2010/11/06(土) 17:13:31
>>882
フリーのMIDI関係のクラスって、何処かにあるんでしょうか?

884 :デフォルトの名無しさん:2010/11/06(土) 17:28:14
http://www.un4seen.com/
http://akabeko.sakura.ne.jp/blog/2010/01/c-%E3%81%A7%E9%9F%B3%E6%A5%BD%E5%86%8D%E7%94%9F-3/
使うのはちょっと面倒だけどFreeにしてはかなり高機能なライブラリ

885 :デフォルトの名無しさん:2010/11/06(土) 17:50:11
>>884
おお、あるんだなぁ!ありがとうございます。

886 :デフォルトの名無しさん:2010/11/06(土) 19:35:31
Dockプロパティをセットすると、Controlls..addをしたコントロールが上に着ちゃうんだけど
下にする方法ってある?

887 :デフォルトの名無しさん:2010/11/06(土) 19:36:25
Dock.Topね

888 :デフォルトの名無しさん:2010/11/06(土) 19:41:44
Dock.Bottom

889 :デフォルトの名無しさん:2010/11/06(土) 20:29:03
>>886
何その質問w

890 :デフォルトの名無しさん:2010/11/06(土) 22:23:11
Dogをセットすると上を着ちゃう?
http://image.rakuten.co.jp/m-mutter/cabinet/dwa2/08462-99.jpg

891 :デフォルトの名無しさん:2010/11/06(土) 22:28:48
>>890
毛を刈り上げたくなるね

892 :デフォルトの名無しさん:2010/11/06(土) 22:30:49
コントロールをまとめて扱いたいなら。
そういう機能を持つIExtenderProvider実装コンポーネントにするのがおすすめ。


893 :デフォルトの名無しさん:2010/11/07(日) 00:36:07
>>882
ふじゅううううううううううううううううううううううう

894 :デフォルトの名無しさん:2010/11/07(日) 08:39:29
>>881
「エクスプローラと同じ挙動のフォルダツリー作って」とか簡単に言われると泣きたくなる。
そういうときのためC++/CLIがあるんだろうけどさ。

895 :868:2010/11/07(日) 10:14:32
>>880
御礼が遅くなりました。ありがとうございます。
引数で構造体を渡すDllは、構造体の宣言も必要だから複雑なんですね・・・
一晩色々勉強しましたがわかりませんでした。orz
もっと勉強してきます。

ところでPINVOKEのアドインソフトはVS2010EEでも使えるのでしょうか?
トップページの記述では2005までしか対応してないようですが。
理論が解らなくてもツールでプログラムさえ組めたらいいかなとも思うので・・・(^^;;

896 :デフォルトの名無しさん:2010/11/07(日) 10:20:19
>>895
複雑とか言うなアホ。
めんどくせえってだけだろ。

897 :デフォルトの名無しさん:2010/11/07(日) 10:43:44
そもそもEEでアドイン使えるの?

898 :デフォルトの名無しさん:2010/11/07(日) 13:41:29
使えないな
コードジェネレータとか使いたいのに使えない

899 :デフォルトの名無しさん:2010/11/07(日) 14:26:15
2010はExpressEditionは無くなったの?

900 :デフォルトの名無しさん:2010/11/07(日) 14:30:47
あるよ

901 :デフォルトの名無しさん:2010/11/07(日) 14:40:29
あった
でもultimateにしよう

902 :デフォルトの名無しさん:2010/11/07(日) 14:48:19
new { ファイル = "エロエロ女子高生.avi", パス = "D:\\エットなフォルダ" }

これって略されているんですよね?
これは略さないとどういう感じになるんですか?
文法というか構文というのかそれがわからないです

903 :デフォルトの名無しさん:2010/11/07(日) 15:29:20
厳密に同じものは書けないはず

904 :デフォルトの名無しさん:2010/11/07(日) 15:32:49
入力された値が数値以外の時メッセージボックスを表示させたいんですがどういうコードを書けばいいんでしょうか

905 :デフォルトの名無しさん:2010/11/07(日) 15:35:56

double d;
if(Double.TryParse("数値か判定する文字列",out d)){

// メッセージ
}

906 :デフォルトの名無しさん:2010/11/07(日) 16:37:15
それ数値の時じゃね?

907 :デフォルトの名無しさん:2010/11/07(日) 16:43:22
>>902
それは匿名型の話だね
そういう記述をするとまずコンパイラが自動的に次のようなクラスを生成する
internal sealed class _AnonymouseType0<Tファイル, Tパス> {
  private readonly Tファイル ファイル_field;
  private readonly Tパス パス_field;
  public _AnonymouseType0(Tファイル ファイル, Tパス パス){
    this.ファイル_field = ファイル;
    this.パス_field = パス;
  }
  public Tファイル ファイル{ get{ return this.ファイル_field; } }
  public Tパス パス{ get{ return this.パス_field; } }
}
そしてnew { ファイル = "aaa", パス = "bbb" } は
new _AnonymouseType0<string, string>("aaa", "bbb");
に置換される
つまり匿名型は変更不可能なクラスの定義とコンストラクタの呼び出しを代行してくれるってわけ

>>905
ifの条件に否定付け忘れてる

908 :デフォルトの名無しさん:2010/11/07(日) 18:09:51
ありがとうございました

909 :デフォルトの名無しさん:2010/11/07(日) 19:30:15
>>907
なるほど、ありがとうございます

910 :デフォルトの名無しさん:2010/11/07(日) 21:30:41
自作の短いプログラムがアンチウィルスにトロイだって言われるんだけど…
どこがウィルスっぽいとかわかる?

static void Main(string[] args)
{
string str;
bool flg = false;
do
{
flg = false;
foreach (Process p in Process.GetProcesses())
{
if (p.ProcessName=="dv")
{
SetThreadExecutionState(ExecutionState.SystemRequired |ExecutionState.DisplayRequired | ExecutionState.Continuous);
flg = true;
Console.WriteLine(p.ProcessName);
break;
}
}
if (flg == false)
{
SetThreadExecutionState(ExecutionState.Continuous);
Console.WriteLine("dv not found");
}
str = Console.ReadLine();
} while (str != "q");
}
[DllImport("kernel32.dll")]
extern static ExecutionState SetThreadExecutionState(ExecutionState esFlags);


911 :デフォルトの名無しさん:2010/11/07(日) 21:31:39
public enum ExecutionState : uint
{
Null = 0,
SystemRequired = 1,
DisplayRequired = 2,
Continuous = 0x80000000,
}

912 :デフォルトの名無しさん:2010/11/07(日) 22:05:18
>>910
ウィルス対策ソフトは端的にバイナリのパターンを見てるだけで、
何をやってるかなんて意味的な解析はしてないと思うから、
ソースの一部なんか貼っても無意味では?

913 :デフォルトの名無しさん:2010/11/07(日) 22:09:17
ヒューリスティックス評価無視ですか
今じゃ搭載してないウィルス対策ソフト探すほうが至難だけど

914 :デフォルトの名無しさん:2010/11/07(日) 22:18:26
何も問題ないように見える

915 :デフォルトの名無しさん:2010/11/07(日) 22:26:50
そのソフトの会社に聞いてみた方が早いんでね?

916 :デフォルトの名無しさん:2010/11/07(日) 22:38:58
うちの AntiVir もお怒りだ

ちなみに、
>[DllImport("kernel32.dll")]
>extern static bool Beep(uint dwFreq, uint dwDuration);
とか
>[DllImport("user32.dll")]
>extern static int MessageBeep(uint uType);
を追加してやったら(呼び出しは無し)、ビルドも実行も問題なく出来た

917 :デフォルトの名無しさん:2010/11/07(日) 23:06:36
質問です。
comboBoxをItemの表示・選択専用にして、入力できないようにするプロパティってどれですか?


918 :デフォルトの名無しさん:2010/11/07(日) 23:12:45
VS2010EEで質問なんですけど、
コントロールをダブルクリックするとプリセットされたイベントハンドラが自動生成されますが、
プリセット以外のイベントをハンドラにしたいときは、手書き修正しかないのでしょうか?


919 :デフォルトの名無しさん:2010/11/07(日) 23:13:24
ComboBoxStyle.DropDownList

920 :デフォルトの名無しさん:2010/11/07(日) 23:13:55
プロパティウィンドウでイベント表示しろ

921 :デフォルトの名無しさん:2010/11/08(月) 00:02:20
>>919
ありがとうございました!

922 :デフォルトの名無しさん:2010/11/08(月) 00:19:34
元気があってよろしい。
月曜日が来た・・・。

923 :デフォルトの名無しさん:2010/11/08(月) 01:05:11
>>916
どうもです。
こっちのアンチウイルスもAntiVirなんですが…誤爆かな?

ところでBeepを追加したらいいというのはどういう考えで出てきたものなのか
非常に興味があるんですが。

924 :デフォルトの名無しさん:2010/11/08(月) 02:15:09
バイナリを手っ取り早く変えるって発想だと思う
今日からまた学校か……

925 :デフォルトの名無しさん:2010/11/08(月) 02:18:31
>>924
ちげーよw
kernel32.dll使うと大抵のセキュリティソフトは反応する

926 :デフォルトの名無しさん:2010/11/08(月) 02:25:13
ウィルスバスター2011反応なし(´・ω・`)ショボーン
喜んでいいのかどうなのか

927 :デフォルトの名無しさん:2010/11/08(月) 02:35:58
クラックdllでビープ音がなるのはそのためか

928 :デフォルトの名無しさん:2010/11/08(月) 09:43:50
textboxやrichtextboxに"\"ではなくてバックスラッシュを入力できるように
したいのですがどうすればいいですか?

929 :デフォルトの名無しさん:2010/11/08(月) 09:53:19
そこだけフォントをsystemに変えるとか?

930 :デフォルトの名無しさん:2010/11/08(月) 09:54:42
文字コードは同じだもんね

931 :デフォルトの名無しさん:2010/11/08(月) 09:59:27
両方入れたいときは?
キーボードの入力で右上のと右下のって区別できるんだっけ?

932 :928:2010/11/08(月) 10:28:32
あれ?
Font fnt = new Font("System",11,FontStyle.Regular);
textBox1.Font = fnt;
にしてもなぜか"\"になってしまいます。


933 :デフォルトの名無しさん:2010/11/08(月) 10:33:58
Consolas

934 :デフォルトの名無しさん:2010/11/08(月) 10:36:00
>>933
あ、有り難うございます。お騒がせしました。

935 :デフォルトの名無しさん:2010/11/08(月) 10:36:59
一応、UnicodeではU+00A5に円記号が割り振られてるけどな
書式指定でc指定したらこっちが使われるようになってるはず

936 :デフォルトの名無しさん:2010/11/08(月) 12:54:56
C#で聞くことではないのですが、現在開発環境がC#なので参考に教えてください。

現在、フォーム上のボタンを押すと処理が実行されるのですが、その際にテキストボックスや
その他のフォーム上に入力がされているか確認を取った後に実行するように入力チェックを
行っております。
(Ex)
if(string.IsNullOrEmpty(this.TextBox.Text))
{
MessageBox.Show("フォームに入力がされていません");
this.Button.Enabled = true;
}

などのようにしています。メッセージの違いは3パターンほどでそれ以外の処理(ボタンのEnabledをtrueにする)
は共通しております。それをまとめるには別のメソッドにするか、例外として投げて処理するかを考えております。

もし、実行ボタン押下時の入力チェックをする場合ほかにどのような処理方法があるのでしょうか?
よろしくお願い致します。

937 :デフォルトの名無しさん:2010/11/08(月) 13:06:58
分け方なんて色々あるから、とりあえず一つ

GUIにアプリケーションの知識を入れ込まないようにするなら、
チェックする機能とチェック後にGUIの状態を変える機能に分けちゃう。
たとえば、
・GUIから入力の正誤をチェックするためのイベント
・GUIの状態を初期化(または必要な部分だけ変える)ためのメソッド


GUIは高度な描画機械って割り切っちゃって、その機械を扱う別の機械を作る

938 :デフォルトの名無しさん:2010/11/08(月) 14:03:50
モデルがGUIを使っちゃダメでしょ。逆。
GUIの方からモデルにアクセスしてモデルの状態を変更したり
モデルの状態が変更された時のイベントを受け取ったりするんだよ

939 :デフォルトの名無しさん:2010/11/08(月) 15:46:24
GUIとモデルを分けるのって一見2度手間みたいに思うけど
モデル側からするとデータを手元に常に置けるのは安心だしわかり易いし
GUIが何をするかなんて関係ないって考えで作ると後々楽なんだよね

とりあえず、コンソールアプリを作ることがおすすめ

940 :デフォルトの名無しさん:2010/11/08(月) 16:17:51
これは笑った
まずお前の実力を示すことかけよ

941 :デフォルトの名無しさん:2010/11/08(月) 16:42:07
>>940
これは笑った
まずお前の実力を示すことかけよ

942 :デフォルトの名無しさん:2010/11/08(月) 16:43:59
>>941
コンソールアプリ作ってきたら示してやるよ

943 :デフォルトの名無しさん:2010/11/08(月) 16:58:00
>>942
>>939に言ってやれよ

944 :デフォルトの名無しさん:2010/11/08(月) 19:55:23
>>938
動けばいいんでないの?
MVCでもPACでも

> GUIの方からモデルにアクセスしてモデルの状態を変更
これが GUIから入力の正誤をチェックするためのイベント

> モデルの状態が変更された時のイベントを受け取ったりする
GUIにデータの扱い方を入れ始めるとぐちゃぐちゃになるから嫌だな
時々やっちゃうけど。

データバインドの様な広く一般的に使われる(標準ライブラリに入っている)方法なら許されるけど、
オレオレ仕様のデータバインド()は許されない。
まあ動けばいいんだから、動くように書けばいいんだよね。

945 :デフォルトの名無しさん:2010/11/08(月) 20:07:09
ちょっと気になったんだけど
>例外として投げて処理するか
これってMSDNかなんかでやるなって書いてあった気がする




946 :デフォルトの名無しさん:2010/11/09(火) 10:46:29
ArduinoとC#と通信を行っています。
SerialPortコンポーネントを用いてArduinoボードからのデータを
DataReceivedイベントを用いて受信しています。

データの受信は問題なく行われているのですが、
データ受信に大きく遅延が発生してしまいます。

Arduinoボードの可変抵抗の値をC#側に送っているのですが、
可変抵抗をひねってから、C#側に受信されるまで、数秒掛ってしまいます。

おそらくデータ受信が追い付いていないのが原因かと思いますが、
どのような対策を行えばよろしいでしょうか?

何かアドバイスなどありましたら、ご教授していただけると幸いです。
よろしくお願いいたします。


947 :デフォルトの名無しさん:2010/11/09(火) 11:05:31
ボード側のデータ送信が追いついてない可能性はない?
確かに数秒ってのは異常だと思うんだけど
1バイトでイベント発生するようにしてもやっぱ1文字目の受信まで数秒かかったりする?

948 :デフォルトの名無しさん:2010/11/09(火) 12:09:22
List<int> 型のリストをstring[]に変換するにはどのようにすればよいでしょうか?

var test = new List<int>();

string strJoin =string.Join(",",test.To.String().ToArray());

ではうまくいかないので・・・;w;

949 :デフォルトの名無しさん:2010/11/09(火) 12:13:42
Listの総数をcountだっけ?で調べてstring[]を作成
ループ作ってListの項目を先頭から見ていってstring[]へセットしていく

950 :デフォルトの名無しさん:2010/11/09(火) 12:13:53
>>948
test.Select(i=>i.ToString()).ToArray();
てことかな

951 :デフォルトの名無しさん:2010/11/09(火) 12:21:02
>>949
自分もその方法を思いついたのですが、ほかになにか用意されていないかと思いまして・・・
ConvertAllなるものを使えばよさげですが、、いまいち使い方が・・・orz

>>950
それで試してみましたが、Selectっていうのがありませんでしたorz


952 :デフォルトの名無しさん:2010/11/09(火) 12:22:17
書式指定なしのToString()でよければ単純にこれでできそうな。
string strJoin =string.Join(",",test);

953 :デフォルトの名無しさん:2010/11/09(火) 12:24:32
string.Join の第二引数がstring[]なのでList<int>だと通らないです;w;

954 :デフォルトの名無しさん:2010/11/09(火) 12:26:36
>>953
Join<T>(String, IEnumerable<T>)が使えるのは.NET4からだった

955 :デフォルトの名無しさん:2010/11/09(火) 12:27:33
ループ回すとか無いわ
Enumerable拡張メソッド使おうぜ

956 :デフォルトの名無しさん:2010/11/09(火) 12:30:43
こちらの環境は.NET2までなので使えないですね;w;

>>949さんの考えを踏襲すると・・・

var test1 = new List<int>;
var test = new List<string>();

foreach(var i in test1)
{
test.Add(i.ToString());
}
Pro.sortIndex_string = string.Join(",",test.ToArray());

になるのかなぁ・・?



957 :デフォルトの名無しさん:2010/11/09(火) 12:31:15
>>951
>それで試してみましたが、Selectっていうのがありませんでしたorz 
SelectやToArray()を使う場合は
using System.Linq;
が必要。それでコンパイルが通るはずだけど。


958 :デフォルトの名無しさん:2010/11/09(火) 12:31:40
>>956
えw
ループ使うにしてもそれはないわw

959 :デフォルトの名無しさん:2010/11/09(火) 12:34:36
むむむ@w@
>>956さん
もしループしようならどの様にしますか?
後学のためにサンプルお願いいたします><

>>957
さっそく、してみます><また報告します


960 :デフォルトの名無しさん:2010/11/09(火) 12:34:38
.NETは3.5でなく2.0でいいの?それだとLinqも使えないね。

961 :デフォルトの名無しさん:2010/11/09(火) 12:36:33
LINQはMSDNだと3.5からでしたorz

962 :デフォルトの名無しさん:2010/11/09(火) 12:37:53
2.0なら何でvarとか使ってんの
よくバージョン確認したほうがいいんじゃね

963 :デフォルトの名無しさん:2010/11/09(火) 12:38:09
あと、質問ですが、ConvertAllではできないのでしょうか?
使い方がMSDNみてもよくわからないので・・・orz

もし参考になるサイトなどありましたらよろしくおねがいいたします。

964 :デフォルトの名無しさん:2010/11/09(火) 12:39:06
ん、2.0だとvar使えませんか?

使えるので使っているのですが・・・

965 :デフォルトの名無しさん:2010/11/09(火) 12:39:45
値を変換するのは全部SelectメソッドでOK


966 :デフォルトの名無しさん:2010/11/09(火) 12:39:41
C#2.0/.NET 2.0の範囲なら
String.Join(",", test.ConvertAll<string>(delegate(int _) { return _.ToString(); }).ToArray());
かな

967 :デフォルトの名無しさん:2010/11/09(火) 12:41:57
>>966
C#3.0を使えるなら
String.Join(",", test.ConvertAll(_ => _.ToString()).ToArray());

968 :デフォルトの名無しさん:2010/11/09(火) 12:47:26
>>967

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

>>966はむずかしそうなので、今度検証してみます;w;


969 :デフォルトの名無しさん:2010/11/09(火) 12:48:31
VSの2008か2010で対象フレームワークを.NET2.0にして使ってるのか。

970 :デフォルトの名無しさん:2010/11/09(火) 12:50:01
>>967
横からだけど、_ってどういう役目があるんだっけ?
C# アンダースコアでググッても引っかからない

971 :デフォルトの名無しさん:2010/11/09(火) 12:59:39
ただの変数。
他の言語でラムダ式の引数に使われるので、その習慣を持ち込んだだけ。

972 :デフォルトの名無しさん:2010/11/09(火) 13:00:57
なるほど

973 :デフォルトの名無しさん:2010/11/09(火) 13:03:15
横道それるけど、例えばscalaだと _ を使えば2段目のように短縮表記できる。
f.filter(i => i <  5)
f.filter(_ < 5)


974 :デフォルトの名無しさん:2010/11/09(火) 13:04:49
ぱっと見てわからないとかまたC時代の悪習をやるのかよ・・・

975 :デフォルトの名無しさん:2010/11/09(火) 13:06:40
ラムダ式は一般的だぞ

976 :デフォルトの名無しさん:2010/11/09(火) 13:08:16
>>973
scalaは_に意味を持たせているわけね。
記号を使った記法はググりにくいから困るw

977 :デフォルトの名無しさん:2010/11/09(火) 13:10:05
>>975
>>973の最終行なんてある程度学んでないとわからないだろw

978 :デフォルトの名無しさん:2010/11/09(火) 14:36:37
ループを露に書く方がよっぽどパッと見てわからないと思うけどな
低レベルになるほどわかりやすいんだったら制御文はbrfalse(flag, label)だけでいいことになる

979 :デフォルトの名無しさん:2010/11/09(火) 14:48:54
ラムダ式での_って引数としてとるけど使わない場合に書くやつだと思ってた
scalaからの流れだったんだ

LINQは.NET3.5からだけどラムダ式とか型推論はC#3.0からだから使えるんだ

980 :デフォルトの名無しさん:2010/11/09(火) 15:42:46
Perlも$_が暗黙の変数だな

981 :デフォルトの名無しさん:2010/11/09(火) 16:18:21
そのうち、メソッドやプロパティなどの省略形を定義する構文が出そうだな。
そうすりゃ、
>>973 を、
f.<5
まで省略できる可能性がある。

982 :デフォルトの名無しさん:2010/11/09(火) 17:27:56
ラムダ式なんてやめてほしいわ
女子高生の略語みたい
ナウいとか思っちゃってるの?

983 :デフォルトの名無しさん:2010/11/09(火) 17:39:11
>>982
思ってないよ。

984 :デフォルトの名無しさん:2010/11/09(火) 17:51:53
>>982
λ計算が考案されたのは1930年代、現実のプログラミング言語(Lisp)の形で
導入されたのは1950年代
無名関数やらクロージャやらは、要するに大昔からあるもので、
今だってPerlだのJavaScriptだのRubyだのPythonだの、そこらの言語で
当たり前に使えるごくごくありふれた代物だよ
今更ナウいも糞もないだろう

985 :デフォルトの名無しさん:2010/11/09(火) 18:29:24
型宣言しっかりして頭ガチガチにされたのに
今更ラムダ思考に切り替えられるわけないだろ

986 :946:2010/11/09(火) 18:51:13
>947
TeraTermなどのソフトで通信した場合は、リアルタイムに値が変化しています。
C#のSerialPortを用いるとデータが送られてくるまで時間がかかってしまいます。
デフォルト設定でSerialPortコンポーネントを使っています。

初回のデータ取得は問題ないのですが、
見た感じ、データがどんどん溜まって遅延が発生しているようにも見えます。



987 :デフォルトの名無しさん:2010/11/09(火) 19:03:34
>>985
まさに老害

988 :デフォルトの名無しさん:2010/11/09(火) 19:18:56
このアンチラムダ野郎はWPFスレのあいつ

989 :デフォルトの名無しさん:2010/11/09(火) 19:20:20
>>986
SerialPortは何度も使ってるけど、人間が目視で分かるほどの遅延はありえない。
君のコードの側の問題だろうね。

それと、どんなデータを受信してるのか知らないけど、
普通はDataReceivedイベントなんか使わない。

ちょっと考えれば分かると思うけど、そんなの使ったらシステムが受信データを
バッファリングしてくれてる意味が台無しじゃん。

990 :デフォルトの名無しさん:2010/11/09(火) 19:22:08
>>985
あれか、わざわざ厳密な型名と一緒に宣言しないと型がわからない人なんだよ

991 :デフォルトの名無しさん:2010/11/09(火) 19:36:17
次建ててくるよ

992 :デフォルトの名無しさん:2010/11/09(火) 19:39:46
と意気込んでみたものの規制されてたでござる
誰か頼む

993 :デフォルトの名無しさん:2010/11/09(火) 20:22:33
たまに、ラムダ、ランダム、ガンダム、やんばダム、ランバラル、の区別がつかない時がある。

994 :デフォルトの名無しさん:2010/11/09(火) 20:28:16
ラベンダー

995 :デフォルトの名無しさん:2010/11/09(火) 20:33:56
ランバダ、ダイバダッダ、段田男

996 :デフォルトの名無しさん:2010/11/09(火) 20:52:35
ガンダムシードとランダムシード

997 :デフォルトの名無しさん:2010/11/09(火) 21:21:27
>>979
F#では_は使わないに近い感じだし、
.NET系では_は「使わない場合」とすべきだと思うねえ
Scalaだと暗黙な引数になるけどさ

998 :デフォルトの名無しさん:2010/11/09(火) 21:27:40
F#ではパターンマッチングのワイルドカードで使ってるからってのもあるね。
あと演算子が必ず先頭に来るから、たいていはカリー化で対応できる。

999 :デフォルトの名無しさん:2010/11/09(火) 21:58:11
間に合ったかな?

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

1000 :デフォルトの名無しさん:2010/11/09(火) 21:58:57
2ゲットずさー

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

222 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)