トップページ⇒tech
1001コメント285KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん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
0002デフォルトの名無しさん2010/10/12(火) 22:39:02
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です

ロクに回答もしない癖に態度だけデカイエセ回答者の出入り禁止
他人の人格を攻撃する荒らしの出入り禁止
0003デフォルトの名無しさん2010/10/12(火) 23:00:16
(-_-メ)
0004デフォルトの名無しさん2010/10/12(火) 23:08:39
前スレ >>990
http://ideone.com/YCIlz
こんな感じでいいんじゃないか?
0005デフォルトの名無しさん2010/10/13(水) 13:53:23
(-_-メ)
0006デフォルトの名無しさん2010/10/13(水) 14:04:07
>>4
前スレ見てないけどButton押しても反応ないよ?
0007デフォルトの名無しさん2010/10/13(水) 14:25:46
>>4
textboxに入力された文字列で始まる項目のみを表示するプログラムだってのはわかってるのか?
俺の環境(vs2010 .net3.5)じゃしっかり動いてるぞ
000872010/10/13(水) 14:27:15
x >>4
o >>6
0009デフォルトの名無しさん2010/10/13(水) 14:46:22
こうじゃだめなの?
http://ideone.com/VsVaY
0010デフォルトの名無しさん2010/10/13(水) 15:00:05
>>9
なんでDictionaryを使ったのか説明して欲しい

てかDictionaryとListは別物なんだからlistsって変数名はまずいだろ
0011デフォルトの名無しさん2010/10/13(水) 15:02:23
listsは変数じゃないよ
0012デフォルトの名無しさん2010/10/13(水) 15:08:30
じゃあ何?
0013デフォルトの名無しさん2010/10/13(水) 15:13:35
dt.Rows.Add("aabc");
dt.Rows.Add("babc");
dt.Rows.Add("cabc");
dt.Rows.Add("zaabc");

すいませんAddRangeみたいに一気に入れられる方法教えてください
0014デフォルトの名無しさん2010/10/13(水) 15:14:36
dtは何?
0015デフォルトの名無しさん2010/10/13(水) 15:15:14
コピペしたものなので分かりません
0016デフォルトの名無しさん2010/10/13(水) 15:21:48
>>13
元のデータはどういう形で存在するんだ?
コードに直打ちしてるの?テキストファイルから読み出すの?それともSQL?
はたまた別のクラスで生成されたListやDictonaryなの?
0017デフォルトの名無しさん2010/10/13(水) 15:24:09
フィールドのこと変数じゃないと思ってるやつはここ読めよ
http://msdn.microsoft.com/ja-jp/library/ms173118.aspx
0018デフォルトの名無しさん2010/10/13(水) 15:24:40
追加するデータは
string[] myarray = new string[]{"no1","no2","no5","no158"}
ListとDictonaryというのは使ってません
listBox1がフォームにあります
0019デフォルトの名無しさん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());

求められてるのとは違うような気がするけど・・・
0020デフォルトの名無しさん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みたいにできませんかね?
0021デフォルトの名無しさん2010/10/13(水) 15:35:52
>>18
foreach (string s in myarray) dt.Rows.Add(s);
これでいいだろ

>>19
DataTableにこだわらないならそれもいいね
0022デフォルトの名無しさん2010/10/13(水) 17:53:04
>>21
ばかそれはないだろ
0023デフォルトの名無しさん2010/10/13(水) 17:59:02
それはないとはどういう意味かね?
まさか煽るだけかい?
0024デフォルトの名無しさん2010/10/13(水) 18:20:12
>>22
詳しく説明してくれないか?
0025デフォルトの名無しさん2010/10/13(水) 18:50:54
Action action = ins.method;
上記のような括弧のないメソッドを記述したのを見つけたけど、
括弧付きの場合とどう違うのん?
0026デフォルトの名無しさん2010/10/13(水) 18:55:19
>>25
C言語で言うところの関数ポインタ
デリゲートでぐぐればいいと思うよ
0027デフォルトの名無しさん2010/10/13(水) 19:05:06
>>25
Action action = new Action(ins.method);の省略形
0028デフォルトの名無しさん2010/10/13(水) 19:08:30
new っていつから省略できるようになったの?
0029デフォルトの名無しさん2010/10/13(水) 19:10:51
そういう省略系はなるべく採用してほしくないなあ・・・
なんか段々Cのころへ戻ってるじゃん・・・
IDEがタイプ補助してくれるだしさ・・
0030デフォルトの名無しさん2010/10/13(水) 19:12:29
C# 2.0から
0031デフォルトの名無しさん2010/10/13(水) 19:13:45
デリゲートに限った省略だよ
ラムダ式に new Func<int, int>(x => x)とか書きたい?
0032デフォルトの名無しさん2010/10/13(水) 19:16:58
ならいいけどさw
0033デフォルトの名無しさん2010/10/13(水) 19:21:24
C#2.0で匿名メソッドが導入されたから、それに合わせた変更でしょ
匿名メソッドやラムダ式はメソッドと同格なので、省略を許さないなら>>31みたいに書かないとおかしい
0034デフォルトの名無しさん2010/10/13(水) 19:40:08
前スレの990です
>>4先生ありがとうございます
0035デフォルトの名無しさん2010/10/13(水) 21:51:04
どういたしまして
0036デフォルトの名無しさん2010/10/13(水) 21:52:20
いえいえ
0037デフォルトの名無しさん2010/10/13(水) 22:02:55
VS2008です。ASP.NETでジェネリック ハンドラを作成したいのですが、
コードビハインドになりません。
別のファイルにコードを書き込むのチェックがEnable=falseになってます。
ジェネリックハンドラってコードビハインドできなのでしょうか。
0038デフォルトの名無しさん2010/10/13(水) 22:09:53
普通にできるけど・・・VS2010だからかな。
0039デフォルトの名無しさん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);
みたいにできない?

こんなんに拡張メソッド作るのがいいのかという噺はるけど・・・
0040デフォルトの名無しさん2010/10/14(木) 00:49:58
.NETのクラスライブラリ設計 開発チーム直伝の設計原則、コーディング標準、パターンより

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

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

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

public な物の規約厳しい MS でも、private は好きにやれ的スタンスだったはず。
0042デフォルトの名無しさん2010/10/14(木) 01:43:45
たしかにライブラリの規約を持ち出すのは大げさか
0043デフォルトの名無しさん2010/10/14(木) 01:48:00
DataTableではなくDataRowCollectionを拡張するべきだろう
AddRangeがあるのにAddがないのはおかしいからな
0044デフォルトの名無しさん2010/10/14(木) 06:35:44
(´・ω・`)…
0045デフォルトの名無しさん2010/10/14(木) 07:33:02
>>43
そうだね〜。DataRowCollection拡張すべきだと思う。
携帯からだったから、Rowsプロパティが何型か忘れてて書けなかった。

補足ありがとう。

0046デフォルトの名無しさん2010/10/14(木) 10:22:06
Data Tableに入っているデータっていうのはstring型とかbyte型とかint型とか何でも入れられる系ですか?
0047デフォルトの名無しさん2010/10/14(木) 11:03:55
DataColumn.DataTypeが指定されていなければどんなデータを入れてもstringに変換される
DataColumn.DataTypeは一応どんな型でも指定できるけど、
DataTableを正しく動作させるなら基本 .NET Framework データ型に限定するべき
(基本 .NET Framework データ型ってのはstringとかbyteとかintとか)
0048デフォルトの名無しさん2010/10/14(木) 11:42:11
なんていうかobject型って便利だよね
戻り値の型に文字列も数値も入れられるからobject型で作ったほうが楽
0049デフォルトの名無しさん2010/10/14(木) 11:48:57
いかにも初心者スレっぽい意見だなあ
0050デフォルトの名無しさん2010/10/14(木) 11:55:58
>>48
もう引数も返り値もぜんぶobjectにしとけよ
0051デフォルトの名無しさん2010/10/14(木) 12:08:32
なんでそんあに投げやりなんですかい?objectがダメみたいじゃん
0052デフォルトの名無しさん2010/10/14(木) 12:13:01
駄目なのはお前の頭だ
objectのせいにするな
0053デフォルトの名無しさん2010/10/14(木) 12:15:24
じゃあなんで49と50みたいな事言うのか説明を求める
0054デフォルトの名無しさん2010/10/14(木) 12:17:44
何のためにジェネリック型が生まれたと思ってんの?
0055デフォルトの名無しさん2010/10/14(木) 12:21:46
その薬みたいなジェネリック型とは何か?
0056デフォルトの名無しさん2010/10/14(木) 12:24:25
実際にそういう考え方はあって、たいていのスクリプト言語はそうなってる。
デメリットを挙げるとキリがないが、一番初心者が実感してくれそうなのは
「インテリセンスが機能しない」かな
0057デフォルトの名無しさん2010/10/14(木) 12:38:19
objectとobject型って何がちがうのぅ?
0058デフォルトの名無しさん2010/10/14(木) 12:57:08
>>48
一生キャストしてろ。
0059デフォルトの名無しさん2010/10/14(木) 13:15:14
58
説明できないのか
0060デフォルトの名無しさん2010/10/14(木) 13:22:24
>>59 みたいにそれで勝ったつもりになってる奴が一番不幸だよなw
0061デフォルトの名無しさん2010/10/14(木) 13:24:07
59==60
相手が説明しないで逃げたからおれの勝ちみたい
0062デフォルトの名無しさん2010/10/14(木) 13:54:17
?
0063デフォルトの名無しさん2010/10/14(木) 14:10:53
で?
0064デフォルトの名無しさん2010/10/14(木) 14:18:33
説明できないなら開き直らず謝罪しましょう
0065デフォルトの名無しさん2010/10/14(木) 14:21:14
何様だよ
0066デフォルトの名無しさん2010/10/14(木) 14:21:29
まじめに説明するのがアホらしくて、誰も説明しないんだろ。
0067デフォルトの名無しさん2010/10/14(木) 14:21:55
失せろゴミ
0068デフォルトの名無しさん2010/10/14(木) 15:06:42
>>65
先に罵倒してきたクズに言われたくない
0069デフォルトの名無しさん2010/10/14(木) 15:31:14
>>68
何様だよ
0070デフォルトの名無しさん2010/10/14(木) 15:32:31
>>69
人格障害者黙ってろ
0071デフォルトの名無しさん2010/10/14(木) 15:38:47
いいから消えろよ
クズども
0072デフォルトの名無しさん2010/10/14(木) 17:05:44
ほいほい
0073デフォルトの名無しさん2010/10/14(木) 17:17:28
おまえら全員Object型に入れてやる。
0074デフォルトの名無しさん2010/10/14(木) 17:40:50
型が必要なくなるな
0075デフォルトの名無しさん2010/10/14(木) 18:32:30
やっほーい
0076デフォルトの名無しさん2010/10/14(木) 18:45:14
Yahho-i
0077デフォルトの名無しさん2010/10/14(木) 18:52:41
今更だが

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

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

もし"勝ちたい"のであれば実際に作った関数をここに晒して、objectを返すことの有用性を証明すればいいよ
0078デフォルトの名無しさん2010/10/14(木) 19:07:57
プログラマは楽をする為にコードを書きます
0079デフォルトの名無しさん2010/10/14(木) 19:13:06
意味不明な関数で楽できるのは作ったやつだけ
周りの迷惑も考えてくれ

まあ自分だけで使うんなら構わないがな
0080デフォルトの名無しさん2010/10/14(木) 19:18:09
全てObjectにした場合、毎回キャストするのかね。
そう言えば昔、そう言うコーディング規約みたことあるな。
C言語だったので、型はちゃんと定義していたけど。
0081デフォルトの名無しさん2010/10/14(木) 19:21:48
毎回キャストするくらいなんだってんだ
0082デフォルトの名無しさん2010/10/14(木) 19:25:47
全てObjectにするならC#じゃなくてIronPythonあたりを使ったほうがいいかもな
0083デフォルトの名無しさん2010/10/14(木) 19:26:08
初心者スレっぽくていいじゃん(*´・ω・)(・ω・`*)ネー
0084デフォルトの名無しさん2010/10/14(木) 19:38:34
ライブラリでたまーにobjectを取るメソッドが公開されてると
ちょっとこわい
0085デフォルトの名無しさん2010/10/14(木) 19:39:43
WPFだとそんなんばっか
0086デフォルトの名無しさん2010/10/14(木) 19:50:30
MSはメタプログラミング大好きだから昔からそういうの多い
0087デフォルトの名無しさん2010/10/14(木) 19:54:42
dynamicはどうよ
0088デフォルトの名無しさん2010/10/14(木) 20:28:55
dynamicって動的言語との連携以外使い道あるの?
0089デフォルトの名無しさん2010/10/14(木) 20:32:17
COMがあるだろ
動的言語っていってもDLR言語に限らずブラウザのJavaScriptとの相互運用にも使えるから非常に有用
0090デフォルトの名無しさん2010/10/15(金) 00:10:43
COMを参照設定したときに巨大なラッパーDLLが作られなくなった。
そのかわりインテリセンスも効かなくなったけど。
0091デフォルトの名無しさん2010/10/15(金) 00:14:40
OfficeからCOMを使えた例しがない
0092デフォルトの名無しさん2010/10/15(金) 00:17:59
Dreamキャスト
0093デフォルトの名無しさん2010/10/15(金) 00:50:06
dynamic、簡易的にXML読みたい時と、多重ディスパッチには結構使える。
0094デフォルトの名無しさん2010/10/15(金) 04:50:30
APIから帰ってくるJsonとか、でデシリアライズして、めんどうなことこの上ない。
しょうなないんだろうが。。。なんとかしてほしいの。
0095デフォルトの名無しさん2010/10/15(金) 09:08:51
>>91
ぜんぜん使えるが
0096デフォルトの名無しさん2010/10/15(金) 09:28:07
そもそもOfficeの中でCOM呼び出しまくりだろ。
糞クリップアートとか色々w
0097デフォルトの名無しさん2010/10/15(金) 15:26:50
ListViewにgroupという機能がありますが、これでグループ化した時に
そのグループ名をクリックしてそのグループを折りたたみたいと思います。
折りたたむ機能が無ければ、せめてクリックしたイベントがあればいいと思うのですが、
グループをクリックしたときのイベントはありますか?
0098デフォルトの名無しさん2010/10/15(金) 16:28:20
C#のJavaに対するメリットとデメリットは何でしょうか?
そもそもC#はJavaの代換として使えるのでしょうか?
よろしくお願いします。
0099デフォルトの名無しさん2010/10/15(金) 16:39:34
言語としての魅力は移行が簡単って所じゃないかな
.netフレームワークとしてはどっちもどっちだけど(Tomcatに対抗してASPに組み込めるとか?)
0100デフォルトの名無しさん2010/10/15(金) 16:48:09
>>99
移行が容易ってことだったら関係ないかな。。。どうもありがとう。
0101デフォルトの名無しさん2010/10/15(金) 16:58:39
Windowsでクライアントやスタンドアロンアプリ作る上では圧倒的に楽
0102デフォルトの名無しさん2010/10/15(金) 17:45:05
>>98
出来ることに、そんなに差はないと思うよ。
Monoとか使えばLinuxでも動くし。
MSのサポートは受けれないとおもうけど
0103デフォルトの名無しさん2010/10/15(金) 18:27:44
>>99 >>101-102
C#良さそうなのでC#にします。
詳しい解説ありがとうございました。
0104デフォルトの名無しさん2010/10/15(金) 19:08:30
列挙型に限ってはJavaの仕様の方が好きだ

でもコードがfinalだらけになるのが致命的に好きじゃない
0105デフォルトの名無しさん2010/10/15(金) 20:01:16
>>98
C# のメリット:
マイクロソフト、進化速い、サーバーもクライアントもライブラリそろってる、一貫性(オレオレライブラリ乱立してない)がある

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

Java の代替になら、完璧にこなす。
0106デフォルトの名無しさん2010/10/15(金) 20:03:50
マイクロソフトってメリットじゃね?
0107デフォルトの名無しさん2010/10/15(金) 20:08:07
メリットだよ。
0108デフォルトの名無しさん2010/10/15(金) 20:08:38
企業としてみるならサンとオラクルよりは好き
0109デフォルトの名無しさん2010/10/15(金) 20:09:47
現在最悪なのは林檎かねぇ…
あまりに囲いすぎ…
0110デフォルトの名無しさん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の行方が解らなくなりました。
これが一行おきに出来るマージなのか、全体におけるマージなのか理論的に判別出来ず状態で、知恵を貸して頂けたら幸いです。
0111デフォルトの名無しさん2010/10/15(金) 21:56:19
あ、APIスレ落ちてんのか
0112デフォルトの名無しさん2010/10/15(金) 22:14:33
>>110
問題設定が間違ってるな。
0113デフォルトの名無しさん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;
  }
}
0114デフォルトの名無しさん2010/10/15(金) 22:23:41
Font.HeightじゃなくてFont.GetHeight()使ったほうが正確かもしれない
01151102010/10/15(金) 22:55:28
すいません、問題の書き方が悪かったです。

例えばTextBoxの最小行数を設定保存ファイルから読み込んで
その行数から、Load時にminimumsizeを設定する…と言った具合です。
その時に境界線、スクロールバーの高さを差し引いて設定行数に合わせてTextBoxのサイズ変更・・・というのが最終的にやりたいことです。
0116デフォルトの名無しさん2010/10/15(金) 23:00:28
だから、「設定行数」なんて概念に意味があるのかと。
冷静に考えてみ?
意味ないでしょ。
0117デフォルトの名無しさん2010/10/15(金) 23:07:04
>>115
>>113のコードを少し直せばできないか?
0118デフォルトの名無しさん2010/10/15(金) 23:07:46
>>110
試しにフォントサイズ変更してみて。
もし、3pxのずれが大きくなるなら、仕様かな。どっかに書いてあった。
0119デフォルトの名無しさん2010/10/15(金) 23:24:55
(´・ω・`)ノシ お〜い
01201102010/10/15(金) 23:26:41
>>118
9pt→12pt(16px)にしたら高さ23pxだったので、差分値が3pxと同じでした・・・仕様ではないっぽいです(?)
>>117,113-114
コードとにらみ合ってます。
GetFontHeightもHeightも9ptで12pxと出ただけで、差分3pxの行方は解らずのままでした。
0121デフォルトの名無しさん2010/10/15(金) 23:26:46
このスレは殺伐としてなくて良スレだな
0122デフォルトの名無しさん2010/10/15(金) 23:28:18
>>120
いや、もう少し大きくしてみて。20ptぐらい。
01231102010/10/15(金) 23:33:33
>>122
21pt(28px)でHeight=35pxでした。
境界線が2*2=4pxなので、35-32=3px で、やはり同様の結果でした
(整数計算の便宜上、20ではなく21にさせて頂きました)
0124デフォルトの名無しさん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たしてるし
あんまり気にしなくていいんじゃない?
0125デフォルトの名無しさん2010/10/15(金) 23:43:46
超Magic☆Numberキタ━━━━(゚∀゚)━━━━ !!!!!
0126デフォルトの名無しさん2010/10/15(金) 23:57:51
だから、目標行数にあわせてTextBoxの高さを変えるなんて発想が前時代的。
意味あんのかよそのUI。
0127デフォルトの名無しさん2010/10/16(土) 00:00:24
PreferredHeight については触れた事が無いので曖昧ですが、
調べてみると3pxが定数で加算されるような情報は幾つか見当たりますね
定数として加算する方向でやってみようかと思います。。
0128デフォルトの名無しさん2010/10/16(土) 00:10:04
PreferredHeightってのはテキストボックスのフォントの高さと境界線のスタイルに
基づいて計算された単一行テキストボックスに最適な高さのことだよ。
0129デフォルトの名無しさん2010/10/16(土) 00:21:01
>>126
現代的なUIはどうなってるんだ?
0130デフォルトの名無しさん2010/10/16(土) 00:43:06
ボックスモデル?
01311222010/10/16(土) 01:05:54
>>123
ものすごくごめんなさい。何か勘違いしてた。
以前Textboxの横に行番号をつける時があって、その時は +2 とか +3 で調整してた。。。
0132デフォルトの名無しさん2010/10/16(土) 01:20:10
仕方がない、許したる。
0133デフォルトの名無しさん2010/10/16(土) 01:27:22
なんと寛大なお心!
0134デフォルトの名無しさん2010/10/16(土) 01:33:54
ガハハ
0135デフォルトの名無しさん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);
}
0136デフォルトの名無しさん2010/10/16(土) 02:48:53
>>132-134
この流れに何かワロタw
0137質問どす2010/10/16(土) 11:20:20
キーイベントでの RControlKey, LControlKey は WinAPI の GetAsyncKeyState を利用しないと取れないって認識でおkですか?
0138デフォルトの名無しさん2010/10/16(土) 12:07:54
修飾キーとしてなら、そうだな
0139>>1372010/10/16(土) 12:23:01
>>138
thx!
0140デフォルトの名無しさん2010/10/16(土) 12:49:00
( ̄ー ̄)ニヤリ
0141デフォルトの名無しさん2010/10/17(日) 11:53:41
string hitomoji = "漢";

hitomojiが漢字なのかを簡単に判別するclassなどはありますでしょうか?
hitomojiの内容は固定ではありません
0142デフォルトの名無しさん2010/10/17(日) 12:03:29
Char.GetUnicodeCategory でUnicode カテゴリーとれる。
漢字ってカテゴリーまでとれたかどうか忘れたけども(ひょっとしたら可読文字でひとくくりかも)。
0143デフォルトの名無しさん2010/10/17(日) 12:13:13
「その他の文字」で一括り。
SJIS(CP932)とUnicodeの対応表を入手してソースコードに持っといて
漢字以外を除外してやればいいんじゃない。
0144デフォルトの名無しさん2010/10/17(日) 12:22:23
まず漢字とは何かを定義するところから
0145デフォルトの名無しさん2010/10/17(日) 12:23:35
そもそも漢字の定義ってある程度曖昧だよね
踊り字は漢字か否か?とか
0146デフォルトの名無しさん2010/10/17(日) 12:31:04
iskanji()ないのか・・・
0147デフォルトの名無しさん2010/10/17(日) 12:36:01
じゃあ、↓これはどうかな?
http://www.forest.impress.co.jp/docs/news/20091104_326335.html
0148デフォルトの名無しさん2010/10/17(日) 12:38:00
あっ、てか、Regex にあるな、Unicode の細かいカテゴリーにマッチする判定方法。
http://ufcpp.net/study/csharp/ap_reverse.html#string_03
0149デフォルトの名無しさん2010/10/17(日) 15:57:37
へぇ、そんなのあったのか。
0150デフォルトの名無しさん2010/10/17(日) 16:27:05
ありましたよ
0151デフォルトの名無しさん2010/10/17(日) 17:53:28
backgroundworkerでforで1から20000までのカウントをリアルタイムでform1のlabel1に表示したいのですが、DoWorkからはコントロールを書き換えては駄目とありました
どうすればよいのでしょう?
0152デフォルトの名無しさん2010/10/17(日) 18:01:10
Invoke
0153デフォルトの名無しさん2010/10/17(日) 18:11:30
DoWorkでReportProgressメソッドを呼び出して、ProgressChangedイベントを発生させればいいよ。
ProgressChangedイベントにアタッチされたメソッドがメインスレッドに同期した状態で実行されるから、そのメソッドにlabelを更新する処理が書ける。
ああ、WorkerReportsProgressプロパティをtrueに設定するのを忘れるなよ。


0154デフォルトの名無しさん2010/10/17(日) 18:13:52
BackGroundWorkerって微妙に使いにくいよな
0155デフォルトの名無しさん2010/10/17(日) 18:14:35
form1のlabel1に1から20000までのカウントをリアルタイムで表示するだけなら
backgroundworkerなんて使わずにtimerで充分だけどな
0156デフォルトの名無しさん2010/10/17(日) 18:27:11
C#で、CSVデータのデータ編集ツールを作りたいのですが、
編集をいちいちコーディングするのでは生産性が低いので、
InputManやActiveReportsのように入力支援や帳票開発
コンポーネントのように、データの項目編集に使える
良いコンポーネントって無いですか?
0157デフォルトの名無しさん2010/10/17(日) 18:35:41
Access使えば簡単・・・
0158デフォルトの名無しさん2010/10/17(日) 18:41:18
カウントをリアルタイムに表示・・・表示しても読めないだろw
っていう話じゃないのか・・・
0159デフォルトの名無しさん2010/10/17(日) 18:45:32
>>157 に一票。

どうしても作りたいなら InputMan 買えば?
それか、DataGrid, DataForm。
0160デフォルトの名無しさん2010/10/17(日) 18:53:17
>>158
え、そこ!?
真面目に答えたおれ超KYじゃないか
0161デフォルトの名無しさん2010/10/17(日) 19:32:54
>>159
InputManでテキストデータ編集できるんですか?

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

今は、Accessでクエリ作って、SQLビューでSQL文をコピって
SQLサーバーやOracleに貼り付けして使用なんて事もしているんですが
ある程度複雑なことをやろうとすると手詰まりになることもあるので・・・
0162デフォルトの名無しさん2010/10/17(日) 19:48:46
あきらめろよ
0163デフォルトの名無しさん2010/10/17(日) 21:16:27
川俣がまた何か言ってます
0164デフォルトの名無しさん2010/10/17(日) 21:29:23
何か言ってますね
0165デフォルトの名無しさん2010/10/17(日) 21:31:45
>>161
もうちょっとやりたいことをまとめてから質問した方が良いよ
情報小出しにされると解答するのめんどくさくなるから
0166デフォルトの名無しさん2010/10/17(日) 23:30:15
>>153
01671662010/10/17(日) 23:32:12
すいませんミスです
>>153ありがとうございました!理想の動きができました!
0168デフォルトの名無しさん2010/10/17(日) 23:34:06
アンカーだけ書く奴って時々いるけど、
こういう奴の思考回路って意味不明な質問文書く奴と同じなんだろうな。

基本、自分を客観視できないというか、他人から自分の言動がどう見えるか
多分想像する能力が欠如しまくってるとしか思えない。
0169デフォルトの名無しさん2010/10/17(日) 23:36:53
>>168
あわてんぼさん
0170デフォルトの名無しさん2010/10/17(日) 23:38:43
>>168
早まったなw
0171デフォルトの名無しさん2010/10/17(日) 23:38:48
やっちまったなw
0172デフォルトの名無しさん2010/10/17(日) 23:41:18
>>168みたいな奴って時々いるけど、
こういう奴の思考回路って意味不明な質問文書く奴と同じなんだろうな。

基本、自分を客観視できないというか、他人から自分の言動がどう見えるか
多分想像する能力が欠如しまくってるとしか思えない。
0173デフォルトの名無しさん2010/10/17(日) 23:42:20
>>172
悪かったからそう苛めないでよw
0174デフォルトの名無しさん2010/10/17(日) 23:43:33
仕方がない、許したる。
0175デフォルトの名無しさん2010/10/17(日) 23:44:39
こうして>>168は書き込み前リロードのスキルを身につけたのであった
0176デフォルトの名無しさん2010/10/18(月) 00:00:15
次は172が面白いこと言う番ですね
0177デフォルトの名無しさん2010/10/18(月) 01:28:51
>>174
なんと寛大なお心!
0178デフォルトの名無しさん2010/10/18(月) 01:48:48
ガハハ
0179デフォルトの名無しさん2010/10/18(月) 01:57:48
LINQの勉強したいんだけど、なにかいい題材はない?
0180デフォルトの名無しさん2010/10/18(月) 02:06:07
データベース系でよく見るのは図書管理かな
0181デフォルトの名無しさん2010/10/18(月) 02:10:13
3D 関係だと、頂点とか面とかの数が多くなるから、LINQ が使える。
C# が使えるかどうかは別として。
0182デフォルトの名無しさん2010/10/18(月) 02:12:21
C# から HLSL を生成するんだ!
(注: 本当にやっている人います)
0183デフォルトの名無しさん2010/10/18(月) 02:27:44
>>180
岡崎図書館の館長に土下座して許可取らないと愛知県警に逮捕されるぞw
0184デフォルトの名無しさん2010/10/18(月) 02:36:56
>>180
検索、貸出管理、予約機能があれば十分ですかね
完成したらここに貼りつけてもいいですか?

>>181,182
なんかハードル高くね?間違いなく身長の3倍はある。
0185デフォルトの名無しさん2010/10/18(月) 03:32:58
データベースは自分で作れよw
Dictionaryとかで
0186デフォルトの名無しさん2010/10/18(月) 03:36:29
>>185
DictionaryにしたらLinqの練習にならないんじゃない?
0187デフォルトの名無しさん2010/10/18(月) 03:58:29
データソースを問わないのが LINQ だろ。
0188デフォルトの名無しさん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で投げると文字化けします。
原因は何でしょうか?
0189デフォルトの名無しさん2010/10/18(月) 10:49:57
フォームアプリケーションで「Hellow World!」が出せるようになったばかりの者です。
めっちゃ基本的過ぎて誰にも聞けないので教えてください。
C#でビルドして出てきたEXEを、他のパソで起動するには、
そのパソにNET Frameworkとかいうのが入ってないと駄目なんですよね?
しかもバージョンが合ってないと駄目なんですよね?
で今のWindows7とかには最初からNET Frameworkは入ってるのですか?XPには入ってませんよね。
0190デフォルトの名無しさん2010/10/18(月) 11:23:03
>>189
入ってないとダメ
バージョンは上位互換があるからとりあえず最新版が入ってればおk
7とVistaは最初から入ってる、XPは入ってない
0191デフォルトの名無しさん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 "));
0192デフォルトの名無しさん2010/10/18(月) 11:45:53
>>190
どうもありがとうございました!スッキリしました!
0193デフォルトの名無しさん2010/10/18(月) 11:56:24
>>191
ありがとうございます
0194デフォルトの名無しさん2010/10/18(月) 13:04:56
>>192-193
いえいえ
0195デフォルトの名無しさん2010/10/18(月) 13:22:18
>>194
お前は答えてないだろw
と毎回突っ込みたくなる
0196デフォルトの名無しさん2010/10/18(月) 15:29:53
どうしてわかった?
0197デフォルトの名無しさん2010/10/18(月) 15:32:32
>>180
早速作ってみた
http://ideone.com/gUrO6

やたら長くなってしまって申し訳ないんだけど、
もし暇な人いたらレビューしていただけませんか?
0198デフォルトの名無しさん2010/10/18(月) 17:39:41
乙
Linqの勉強にしてはLinq以外を作りすぎな気もするが・・・
0199デフォルトの名無しさん2010/10/18(月) 17:46:11
学校の課題で褒められたから公開しよ!
↓
そうだ!自分でネタふりしてその回答提示でやればもっと凄いと思われるお!
0200デフォルトの名無しさん2010/10/18(月) 18:06:57
>>199
そうだね、そういうつもりじゃなかったんだけど、
見返してみたらそのまんまでなんか嫌になってきた
0201デフォルトの名無しさん2010/10/18(月) 18:33:26
>>198
Linqは横断的な技術で、コレクションやデータベース、
スレッドが縦糸とするとLinqは横糸的な位置づけ。
お題を決めたらLinq以外が膨らむのはしょうがないと思うよ。
0202デフォルトの名無しさん2010/10/18(月) 18:35:26
コード評価の前に人が評価されるなんて
ここは怖いインターネットですね^^;
0203デフォルトの名無しさん2010/10/18(月) 18:38:20
>>199
こいつ性格悪すぎワロタw
0204デフォルトの名無しさん2010/10/18(月) 21:46:09
ideoneおちてるな
0205デフォルトの名無しさん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);
}
0206デフォルトの名無しさん2010/10/20(水) 10:34:15
>>205
request.AddRange(m_FileStream.Length);
だと先頭からm_pathのファイルサイズまでってことじゃない?
0207デフォルトの名無しさん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型と同じ扱いはできないのでしょうか?

だとしたらどうすればいいですか?
0208デフォルトの名無しさん2010/10/20(水) 22:15:24
BitConverter.GetBytes(int)の戻りをよく見ろ
0209デフォルトの名無しさん2010/10/20(水) 22:17:11
>>207
その例ならiiを普通にbyteにキャストすればいいだけ。
GetBytesなんかループの中で使うな。恐ろしく非効率。
0210デフォルトの名無しさん2010/10/20(水) 22:28:23
>>208-209
ありがとうございます。解決しました。
やっぱ似てるとはいえDelphiとは違いが多いですね;;
0211デフォルトの名無しさん2010/10/20(水) 22:38:03
C#のビット演算や型変換はほぼC言語準拠だから
いくらDelphiと似てるといっても全く関係ない部分でしょ
でも>>207はDelphiと違うからわからないとかいうことではなくてそれ以前の問題な気がするが
0212デフォルトの名無しさん2010/10/20(水) 23:06:41
code2[i] = (byte)(code[i] ^ 0x30);
念のために書いておくけどこれで十分だからね
0213デフォルトの名無しさん2010/10/21(木) 10:41:06
>>210
Delphiでも普通にキャストするだろw
0214デフォルトの名無しさん2010/10/21(木) 11:00:44
C#ではshortやbyte同士の演算結果がintに拡張されるからキャストが必要になるんだよね。
short a, b, c;
a = (short) (b + c);
0215デフォルトの名無しさん2010/10/21(木) 11:59:47
正確には演算結果が拡張されるんじゃなくて拡張してから演算してる
C#に限らず、ごく一般的な動作
0216デフォルトの名無しさん2010/10/21(木) 14:02:03
レジスターに格納するときどうこうという話でなくて名目上の動作の話。
Cの場合short同士の演算結果はあくまでshortで精度の拡張は行われないから
こういうキャストはいらない。
0217デフォルトの名無しさん2010/10/21(木) 14:21:02
Cはintからshortやunsigned charへの代入をキャストなしでできるので
どちらの考え方があってるかは規格書見ないとわからんけど
おそらく計算前に拡張しているでいいと思う。
C#との違いはキャストの要不要の部分だろう。
0218デフォルトの名無しさん2010/10/21(木) 14:38:28
あってるよ
Cでもchar+charでオーバーフローしたりはしない
0219デフォルトの名無しさん2010/10/21(木) 14:43:15
Cの、intより小さい型からintへの汎整数拡張は演算の前に起きる。
キャストが要らないのはintを小さい型の変数に代入するのがエラーではないから。
0220デフォルトの名無しさん2010/10/21(木) 14:46:11
どなたか教えてください。
某雑誌の「一気にわかるC#」という付録を見てサンプルを作ってみたのですが、
記事によると、フォームが開くとき、それをハンドラとして最初にロードされるプログラムを書く、
とあるのですが、記事の通り書いたのですが動いてくれません。
自分なりに調べたところ、フォームのデザイナが自動生成するコード(FormMain.Designer.cs)の中に
必要な一文が抜けてることを発見しました。
「this.Load += new System.EventHandler(this.FormMain_Load);」
なのですが、この一文をデザイナ(というかIDE?)で自動生成させるための操作はどうすればいいのでしょうか?
記事にはそのへんのところが詳しく書いてないのです。
手動で書き足すしかないのでしょうか?
他にも数箇所、抜けてる行があるのですが良く分かりません。orz
0221デフォルトの名無しさん2010/10/21(木) 14:50:27
フォームをダブルクリック
0222デフォルトの名無しさん2010/10/21(木) 15:15:38
なるほど!他のブタンとかのオブジェクトをハンドラにするときと同じなんだ!
ありがとうございました。
0223デフォルトの名無しさん2010/10/21(木) 15:24:35
VC#2010Expで勉強中なのですが、
複数のフォームから参照できる変数はどこに書けば良いのですか?
0224デフォルトの名無しさん2010/10/21(木) 15:27:57
ブタンに引火しないように注意な。
0225デフォルトの名無しさん2010/10/21(木) 15:45:44
>>223
C++やVBでいうところのグローバル変数は.NETには無いので
一番最初にその変数を使うクラス内でメンバ変数として保持しておいて、
別のフォームにはコンストラクタを追加して渡したり:
MyForm form2 = new MyForm("Additional Info");
プロパティ経由で渡したりする:
MyForm form3 = new MyForm();
form3.MyProp = "Additional Info";
0226デフォルトの名無しさん2010/10/21(木) 15:54:50
実質的なグローバル変数はあるよ
internal static class Globals {
 internal string どこからでも参照可能 = "Additional Info";
}
のようにすればどこからでも Globals.どこからでも参照可能 でアクセスできる
褒められたものではないけど初心者なら>>225のような方法よりもわかりやすいし
変に背伸びするより見通しのよいコードになると思う。
0227デフォルトの名無しさん2010/10/21(木) 16:14:55
static class Programの中に変数書いたら他のフォームから見れました。
0228デフォルトの名無しさん2010/10/21(木) 20:21:46
XmlReaderからXmlSerializerに切り替えたら、難読化してるせいで動かなくなってしまった。。。
ここら辺どうしてます?
0229デフォルトの名無しさん2010/10/21(木) 20:28:00
難読化しない
難読化から除外する
0230デフォルトの名無しさん2010/10/21(木) 20:45:14
>>229
あっ、部分的に除外ってできるのか。さんきゅー。
[ObfuscationAttribute(Exclude = true, ApplyToMembers = true)]
0231デフォルトの名無しさん2010/10/21(木) 21:06:07
文字列変数string strが10文字に達していなかったら足りない分だけx(英字のx)で埋めたいのですが、指定した数だけ文字を作り出す関数とかってないですかね
参考書読んでも書いてないんですが・・・
0232デフォルトの名無しさん2010/10/21(木) 21:07:08
String.PadRight or PadLeft
0233デフォルトの名無しさん2010/10/21(木) 21:09:07
>>231
文字を作り出すのなら new String(char, count) も。
参考書より、この手のものはコンストラクタかメソッドか静的メソッドのどれかにあるわけだから
入力補完を眺めるのがいいと思うよ。
0234デフォルトの名無しさん2010/10/21(木) 21:22:02
>>233
理想の動きができました
ありがとうございます
0235デフォルトの名無しさん2010/10/21(木) 21:27:09
>>233は文字列を作り出すならこういうやり方もあるよ」とうことであって
>>231の目的ではPadRightとPadLeftが正解だろ
そのまんま「文字列が指定した文字数に達していなかったら足りない分だけ指定した文字で埋める」メソッドだ
0236デフォルトの名無しさん2010/10/22(金) 07:34:12
ReactiveExtensionsって何?おいしいの?
0237デフォルトの名無しさん2010/10/22(金) 07:48:04
>>236
イベントにたいする処理や非同期呼び出しをLINQ使って簡単に処理出来るようになるよ。
0238デフォルトの名無しさん2010/10/22(金) 08:15:49
まだ始めたばかりのものなのですが、
フォームアプリのHowToが知りたくて、「"C#" フォームアプリケーション」でググったのですが、
「Hello World!」入門サイトか、逆にやたら難しい研究サイトみたいなのしか出てこないですね?
中間くらいの難易度で実用的なアプリのサンプルと、
そのコードの解説をしてるようなサイトか参考書を教えて欲しいです。お願いします。
0239デフォルトの名無しさん2010/10/22(金) 08:22:40
>>238
@ITの.NET Tipsとかはどう?
0240デフォルトの名無しさん2010/10/22(金) 08:23:57
>>238
2ch 専用ブラウザの作り方
http://cs2ch.blog123.fc2.com/blog-entry-1.html
0241デフォルトの名無しさん2010/10/22(金) 11:36:48
>>239
こんな大きなサイトがあったのですね!参考になります。ありがとうございました。
0242デフォルトの名無しさん2010/10/22(金) 12:25:23
>>238
入門と@ITの中間くらい。わかりやすい。実用ではない
ttp://ufcpp.net/study/csharp/index.html
0243デフォルトの名無しさん2010/10/22(金) 14:12:22
( ^ω^)おっおっ
0244デフォルトの名無しさん2010/10/22(金) 16:16:00
(´・ω・`)…
0245デフォルトの名無しさん2010/10/22(金) 16:58:35
ω・`)…
0246デフォルトの名無しさん2010/10/22(金) 17:05:16
・`)…
0247デフォルトの名無しさん2010/10/22(金) 17:06:22
`)…
0248デフォルトの名無しさん2010/10/22(金) 23:34:57
…
0249デフォルトの名無しさん2010/10/23(土) 00:05:24
Form1でボタンを押すとForm2が開くようにしたいのですが、

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

だとボタンを押す事に別のForm2が開いてしまいます。
一つだけ開けるようにするにはどうしたらいいですか。
0250デフォルトの名無しさん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();
 }
}
0251デフォルトの名無しさん2010/10/23(土) 00:08:58
ボタンを押せなくする
0252デフォルトの名無しさん2010/10/23(土) 00:10:26
Form2 frm2;
これをForm1のどこからでも参照できる位置に置いて

frm2 =new Form2();
この部分をLoadイベントもしくはShowイベントなどで一度だけ呼ばれるようにする
0253デフォルトの名無しさん2010/10/23(土) 00:34:02
>>250,252
有り難うございます。
0254デフォルトの名無しさん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();
}
0255デフォルトの名無しさん2010/10/23(土) 00:38:46
>>251に一票入れたいのに無視されててどうしたものかと思案中
0256デフォルトの名無しさん2010/10/23(土) 00:40:03
>>255
それでもいいけどボタンを再度おせるような状況も考えないといけないからなあ
0257デフォルトの名無しさん2010/10/23(土) 00:43:41
一つしか開かないって言ってるんだから
ボタンを再度押せるような状況考えてやっても
大きなお世話だろうけど、普通はシングルトンだろうな
0258デフォルトの名無しさん2010/10/23(土) 00:45:58
ボタン押したらForm2をアクティブにさせるべきだろう
0259デフォルトの名無しさん2010/10/23(土) 00:48:08
まあこれ以上は蛇足だろうな

質問者の条件が漠然としてるし
その漠然とした要件を一応は満たした回答でてるんだし
0260デフォルトの名無しさん2010/10/23(土) 00:48:08
一つしかいらないからってシングルトンにするのは間違い
Form2の仕様の都合上二つ以上作れない場合に使うもの
0261デフォルトの名無しさん2010/10/23(土) 01:49:46
TimeSpan型の値があるのですが、それが25分かどうか調べたい場合どうしたらいいのでしょうか?

行いたいことは、TimeSpan型の値が25分ぴったりになったときにMessageBoxを表示させたいと思っております。
TimeSpan型の値はライブラリから返される値なので、関数を呼ぶと取得ができます。
0262デフォルトの名無しさん2010/10/23(土) 01:58:36
とりあえず、Timerを提案
0263デフォルトの名無しさん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];

0264デフォルトの名無しさん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を追加してそこのイベントに書けばいい
0265デフォルトの名無しさん2010/10/23(土) 02:36:27
>>263
Meibo = (Member[])LoadFromBinaryFile("meibo.bin");
SaveToBinaryFile(Meibo, "meibo.bin");

変えなくてもこれでいいんじゃないか
要素がシリアル化可能ならその配列もバイナリ化できる
0266デフォルトの名無しさん2010/10/23(土) 03:16:38
>>265
できました有り難うございます。
0267デフォルトの名無しさん2010/10/23(土) 08:30:19
>>249は普通にShowDialog()使えばいいとかの話じゃないよな?w
0268デフォルトの名無しさん2010/10/23(土) 10:50:50
>>267
まさか幾ら何でもそんな落ちはないだろw
0269デフォルトの名無しさん2010/10/23(土) 11:18:29
残り所要時間を出したいのですが、とても大きな秒数から日時に変換するシンプルな方法を教えてください。
DateTimeを使えば簡単にできそうな印象はあるのですがどうもスッキリいけません。
0270デフォルトの名無しさん2010/10/23(土) 11:30:59
TimeSpanよく見ろよ
0271デフォルトの名無しさん2010/10/23(土) 11:32:25
Console.WriteLine(new TimeSpan(0,0,1000000).Days);
0272デフォルトの名無しさん2010/10/23(土) 11:36:56
まず時刻と時間を弁別するところから始めた方が良いかもしれない
0273デフォルトの名無しさん2010/10/23(土) 11:42:34
DateTimeの加算演算子はオーバーロードされてるからTimeSpanそのまま加算できます
02742692010/10/23(土) 12:29:13
みなさん、ありがと

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

そこに手をついて尻をこっちに向けろ
0276デフォルトの名無しさん2010/10/23(土) 13:18:38
お札(さつ)をください
0277デフォルトの名無しさん2010/10/23(土) 13:21:54
                    ,,/⌒`ノ
     ;:;:;.         ,/      `⌒γ
     ;:;:;          (  /⌒⌒"" \\           ど
     ;:;:         ( / ⌒  ⌒:::::::::ヽ i        明  う
     ;:;:.         ヽi (・ )` ´( ・):::::::::::!         る  だ
     :;:;:;.            |  (_人__):::::::::::::::|           く
     ;:;:;:             \  'ー´:::::::::::::/ヽ       な
     ;:;:.         ノ.:!:.:.:.:`ゞ-<7.:〉.:.:.:i.:.:}   ろ  っ
     从 __  _,,,/.:.:/:.:.:.:.:.:| }-{/i.:/.:.:.:.:|.:/     う  た
      从从百円}と_」.:/!.:.:.:.:.:.:.!  ̄ リ.:.:.:.:.:り     ?
         ̄ ̄    ̄  |.:.:.:.:.:./_ :__ヽ.:.:.:.:\
                \/.:.::..:.:.:.:.:.:..:\:.::./
                /.:.:.:.:.:.:.「^Y.:.:.:.:.:.:|´
                 {.:.:.:.:.:.:.:.| ,!.:.:.:.:.:.:|
                  \.:.:.:.:.:.V.:.:.:.:.:.:.:|
                  \.:.:.::|.:.:.:.:.:.:.:!
                    > 'ゝ─‐イ、
0278デフォルトの名無しさん2010/10/23(土) 13:50:40
TimeSpan.FromSeconds
こんなのもあるんだな
0279デフォルトの名無しさん2010/10/23(土) 20:36:44
0280デフォルトの名無しさん2010/10/23(土) 22:32:30
とてつもなく低レベルな質問ですが形振り構ってられないので投稿してみます

C#
0281デフォルトの名無しさん2010/10/23(土) 22:33:23
間違えて書き込んでしまいましたすみません出直してきます
0282デフォルトの名無しさん2010/10/23(土) 22:45:26
形振り構ってられないのに出直してくる余裕あるの?
0283デフォルトの名無しさん2010/10/23(土) 22:51:12
なんだこれw
0284デフォルトの名無しさん2010/10/23(土) 23:35:46
なりふりかまわずのなりふりって形振って書くのか
いい勉強になった
0285デフォルトの名無しさん2010/10/23(土) 23:37:55
D:\chinko.exe --sikosiko

と入力するとstringを返すCUIプログラムがあるとします。
これをVC#のフォームアプリでボタンを押すと実行されてDOS窓みたいなのを表示させず
返値だけ取得したいのですがどうすればいいですか?
0286デフォルトの名無しさん2010/10/23(土) 23:41:32
非表示で実行してファイルにリダイレクト。
終わってからファイルを読み込み、ってのが一番楽。
0287デフォルトの名無しさん2010/10/23(土) 23:43:31
よくわからんけど、Processと回答
ttp://dobon.net/vb/dotnet/process/standardoutput.html
02882802010/10/24(日) 00:06:51
C#について全く知識が無いのですが
「何か展示品が欲しいからC#で簡単なゲームを5日で作ってこい」
という課題を無理に出されました
唯一勉強してるCの方も本を見通しただけでまともなプログラムなんて組めません
正直そこらへんの人とプログラミングに対する知識は差が無いです

何か簡単にプログラムを組めるゲームのお勧め等を教えてもらえないでしょうか(モグラたたきなど
何から取り組めばいいのかわかりません
課題を出した方も無理難題を言って叱りたいだけにしか見えなくて八方ふさがりです
0289デフォルトの名無しさん2010/10/24(日) 00:17:57
>>287
そこ見たんですけど、
psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec");
の行の変え方が良くわかんないんです。
0290デフォルトの名無しさん2010/10/24(日) 00:26:29
FileName = @"D:\chinko.exe"; // アプリ
Arguments = "--sikosiko"; // 引数
0291デフォルトの名無しさん2010/10/24(日) 00:40:51
>>288
じゃんけんでもいいんじゃないの?
グーチョキパーの絵書いて人に選ばせて、COMは自分の手を乱数で選んで、
勝ち負け判定で終わり
余裕があれば、ご褒美とか付ける
0292デフォルトの名無しさん2010/10/24(日) 00:54:09
>ご褒美
脱衣とかw
別の意味で展示できなくて、ちょうど良い当て付けになるなw
02932882010/10/24(日) 00:58:09
>>291
じゃんけん、○罰ゲーム、文字を読むゲーム(クイズ等)をあげたら
調子のんなカスとまで言われたので・・・でも知らない言語、短い期間でモグラ叩きとかまでは作れる気がしません;
じゃんけん以上モグラたたき以下のゲームで自分が作れる、となるともう選択肢がなくて参ってます;
0294デフォルトの名無しさん2010/10/24(日) 00:59:40
>>293
テトリスとかマインスイーパぐらいなら満足してくれそうだな
0295デフォルトの名無しさん2010/10/24(日) 01:02:30
C#でゲーム作れとかどういう状況だよwww
02962932010/10/24(日) 01:12:33
>>294
そういうものなら満足してくれると思います
マインスイーパはデフォでPCについてるので流石に却下されますが・・・
1からC#を勉強してたら時間が無いので、勉強の仕方にも困ってます

>>295
ちょっとしたゲームはVBで作ったことがあるので最初はいける、と思ってたのですが
C#じゃないとダメみたいです、C#を使うことが重要だらしいので
0297デフォルトの名無しさん2010/10/24(日) 01:17:28
>>293
5日後にそいつ殴れば? 面白いゲーム考えましたとか言いながらさ
0298デフォルトの名無しさん2010/10/24(日) 01:18:38
C#でテトリスならすでにソースが公開されてたような・・・
0299デフォルトの名無しさん2010/10/24(日) 01:19:33
とりあえずこのへん読んどけば?
http://ufcpp.net/study/csharp/getstarted.html
0300デフォルトの名無しさん2010/10/24(日) 01:21:42
C#でテトリス
http://cs2ch.blog123.fc2.com/blog-category-3.html
0301デフォルトの名無しさん2010/10/24(日) 01:30:17
>>290
すみません、引数の中にunko.txtなどのファイルのパスがあった場合はどう書くんですか?
どのプログラムで試しても引数にファイルパスが入ってると値が返ってこないんです。
03022962010/10/24(日) 01:42:28
>>297
自分の相方が課題を出されたとき時全く文句を言わないで今になって「できねぇ・・・」って言ってるのが正直つらいです
反論してるときに「とりあえずやってない内から文句言うなよ・・・」みたいな感じの白い目を向けていたのになんなのもう
近頃騒がれてるブラックって常にこんな感じでやりとりしてるのかな、と思ったり・・・

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

>>300
有難うございます
全部見て参考にしたほうがいいのかな、これ・・・
0303デフォルトの名無しさん2010/10/24(日) 01:48:57
>>302
自分で作ったと言い張らなければいいんじゃないの?
嘘を言っても後で苦労するだろうしw
参考にしたと言っておけば・・
まあ作った経験がないのなら動くソースをいじって勉強するのが最短だよ
0304デフォルトの名無しさん2010/10/24(日) 01:58:21
>>300で貼られた動画の時点で理解できないんだけど詰んでるんだろうか・・・

>>303
有難うございます
怒られそうですが出来ないよりかはマシなので試してみます
ソースまで載せてるサイトが検索してもなかなか見つからないのですが、
どこか展示されているサイトなど知っていたら教えてくださると幸いです
03052992010/10/24(日) 02:00:04
>>302
じゃあ右の目次だけ目を通しとけばいいよ
思い当たったら見ればいい

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

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

ソース公開されてるでしょ
03072992010/10/24(日) 02:12:55
>>304
その動画貼ってあるサイトで公開されてるソースはこれね
http://sourceforge.jp/projects/cs2h/svn/view/Tetris.tar.gz?root=cs2h&view=tar
03083042010/10/24(日) 02:19:42
>>305
有難うございます
参照したいときに見てみます

>>306
ソースダウンロードしました、一応これは著作権フリーなのかな・・・?
実行できないのですが、何か実行する前にする操作などありますでしょうか
0309デフォルトの名無しさん2010/10/24(日) 02:24:59
フォルダのbin/Debugのなかにblock.pngをいれれば動くんじゃないかな
03103082010/10/24(日) 02:42:32
>>309
有難うございます、無事実行できました


既にあるフリーのソースコードをいじって勉強していく形でいく方針にするとします
以降は自分で出来る範囲まで頑張ってみます
普通なら罵倒される駄目質問に長時間にわたって親身になって答えてくれる皆様には感謝し尽くせません
怖いくらい優しくしてもらって本当に感謝してます、有難うございました
0311デフォルトの名無しさん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;
}
0312デフォルトの名無しさん2010/10/24(日) 04:30:11
>>311
クラス内部からそのまま_xを触れるでしょ
あくまで外部からどうするかだし
0313デフォルトの名無しさん2010/10/24(日) 04:32:32
>>311
自動使わない方法のみか、
public int X { get; private set; }
にするか。
03143112010/10/24(日) 05:01:59
>>312
分かりにくい書き方ですみませんorz

>>313
setをprivateにする記述があったとは!
ありがとうございます。
0315デフォルトの名無しさん2010/10/24(日) 08:58:10
30分でいいから文法に目を通した方がスムーズに進む希ガス
0316デフォルトの名無しさん2010/10/24(日) 12:22:19
public int X { get; }

は、4.0ではコンパイル通るようになったのか?
0317デフォルトの名無しさん2010/10/24(日) 12:25:41
通らない
というか、仮に通ったとしてどういう動作が期待されるわけ?それは
0318デフォルトの名無しさん2010/10/24(日) 12:57:29
>>317
値をセットできないじゃん。何がしたいの?
03193172010/10/24(日) 12:58:12
え?俺?
提案者じゃないのでわかりません
03203162010/10/24(日) 13:57:40
因みに俺も提案者ではないので、聞くなら311に
0321デフォルトの名無しさん2010/10/24(日) 14:51:54
Ω<(ry
0322デフォルトの名無しさん2010/10/24(日) 15:17:57
期待するのは313でしょ。
そういう質問じゃん。
0323デフォルトの名無しさん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);
  }
}

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



0324デフォルトの名無しさん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) {
  }
}
こんなのとか?
0325デフォルトの名無しさん2010/10/24(日) 15:45:16
>>324
なるほど、ありがとうございます
0326デフォルトの名無しさん2010/10/24(日) 16:27:09
>>324
へー。そんな書き方出来るのか。
0327デフォルトの名無しさん2010/10/24(日) 18:08:50
int[].Average()でint[]{0,326464}の時に0が返ってくる時があるのですが平均値を思い違いしているのでしょうか?
0328デフォルトの名無しさん2010/10/24(日) 18:12:23
いみふ(
0329デフォルトの名無しさん2010/10/24(日) 18:17:21
うん、意味不明。

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

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

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

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

rateが予想に反して0になるから下の割り算でエラーになったのですが問題はrateがどうして
0になるのかがわからないのです。int[]の中身を見ると0,326464が入っていました。
int[]が非同期から持ってきている変数なのでタイミング的にデバッグの数字が一致しない
時があるのでしょうか?
0332デフォルトの名無しさん2010/10/24(日) 18:34:44
配列にまだ何も入っていない状態でAverage計算
0除算エラー発生
0と326464が配列に追加される

こんな流れだろ
0333デフォルトの名無しさん2010/10/24(日) 18:36:05
int rate = (int)(int[].Average());
0334デフォルトの名無しさん2010/10/24(日) 18:37:36
>>331
どう考えても怪しいのは非同期の方。
0335デフォルトの名無しさん2010/10/24(日) 20:19:07
>>333
キャストより . が優先順位上なので、それは意味なす
0336デフォルトの名無しさん2010/10/24(日) 21:33:12
指定したアプリケーションのテキストボックスに
文字列を自動入力するようなプログラムを
作りたいと思っているのですが、
何について調べればよろしいでしょうか?
0337デフォルトの名無しさん2010/10/24(日) 22:18:01
>>336
自動入力についての詳しい仕様を書いてくれないと回答しようがありません。
0338デフォルトの名無しさん2010/10/24(日) 22:24:28
UI Automation?
0339デフォルトの名無しさん2010/10/24(日) 22:27:50
SendKeysとかそういうのだろ
スレ違い
03403362010/10/24(日) 22:32:09
>>339
どうやらSendKeysでできそうです。
ありがとうございました。
0341デフォルトの名無しさん2010/10/25(月) 13:55:40
何かのexeファイルあったとき、それが実行されたときにCOMオブジェクトに
なるかどうか、実行前に先に知るにはどうにすればよいでしょうか。
03423362010/10/25(月) 18:18:00
すみません。
>>341ですが、自己解決しました。
0343デフォルトの名無しさん2010/10/25(月) 19:09:04
デストラクタ ~classname(){} の前に何も付かないのが寂しいです!

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

/* デストラクタ */ ~classname(){}
0345デフォルトの名無しさん2010/10/25(月) 19:43:09
静的コンストラクタの前にアクセス修飾子がないのも寂しい。。。
0346デフォルトの名無しさん2010/10/25(月) 20:38:44
必要がないものに付けるのは蛇足
0347デフォルトの名無しさん2010/10/25(月) 20:54:09
じゃあjavaみたいにstatic { }でいいな
デストラクタも~ { }で
0348デフォルトの名無しさん2010/10/25(月) 21:12:45
うん
0349デフォルトの名無しさん2010/10/25(月) 21:20:36
C#で、タブ付きMDIってできないの?ぐぐったら、有料コンポーネント使うとかでてきた。

MFCはデフォルトでできるんだけど。
0350デフォルトの名無しさん2010/10/25(月) 21:36:44
ない
そんな大掛かりなUIが必要なソフトならそれくらい自分で作るだろ
0351デフォルトの名無しさん2010/10/25(月) 21:42:28
LGPLやコマーシャル版なら無料ってのが海外にあったような
03523492010/10/25(月) 21:44:47
>>350
初心者でもタブ付きMDIくらい作りたいだろ(´・ω・`)
MVCには、ついてるじゃん。

>>351
探してみますわ。ありがとう。
0353デフォルトの名無しさん2010/10/25(月) 21:47:39
MVC?
0354デフォルトの名無しさん2010/10/25(月) 21:55:44
「ドッキングウィンドウ」というキーワードからアプローチするといいかも
0355デフォルトの名無しさん2010/10/25(月) 22:18:25
海外のサイトを探せば無料の沢山あるよ
ライセンスは要確認だけど
0356デフォルトの名無しさん2010/10/25(月) 22:33:45
C#はVisual Studioと一緒に使うの水晶ですか
0357デフォルトの名無しさん2010/10/25(月) 22:36:45
C#自体はそうでもないけど.NETがほぼVisualStudio専用
0358デフォルトの名無しさん2010/10/25(月) 22:37:25
>>356
VisualStudiogが動作する環境なら使わないメリットは
ほとんど無いと思いますが?
0359デフォルトの名無しさん2010/10/26(火) 00:08:11
必要は発明のなんちょけ
0360デフォルトの名無しさん2010/10/26(火) 00:19:10
開いている間はとても少ない確立ですがアクセスの可能性があるとします
ReadAllTextを使うとします
1MBのファイルを100つ開くのと100MBのファイルを1つ開くのではどちらがパフォーマンス、危険性などに問題がありますか?
0361デフォルトの名無しさん2010/10/26(火) 00:23:30
わかりません。
アクセスとは何ですか?ファイルを何に使いますか?どういうパフォーマンスが求められているのですか?
何の危険性を心配しているのですか?
具体的に書きましょう。
0362デフォルトの名無しさん2010/10/26(火) 00:30:31
>>361
アクセス・・・メモ帳で開く、保存するなどの行為とします
ファイルはテキストファイルで、読み込んでstring配列に格納するとします
パフォーマンスというか、どちらの処理の方が早いか、ですね
危険性は、ファイルを他のアプリケーションが編集、保存等をしている最中のため、読み込みに失敗したり例外を吐いたりということです

わかりづらくてすいません;;
0363デフォルトの名無しさん2010/10/26(火) 00:38:07
迷わず行けよ、行けばわかるさ、とでも言って欲しいのかなw
いや真面目に結局何が知りたいのかサッパリ若布
0364デフォルトの名無しさん2010/10/26(火) 02:25:03
IOなんて例外発生の塊なんだから
1Mのファイルを100個開いていって途中でどうやら使いにくいってなったら
その場で流動的に回避する方法しかないんでは(100Mの一つのファイルに落とし込むとか?)
0365デフォルトの名無しさん2010/10/26(火) 03:06:25
こういうのって具体的にどんなシステムを
作ろうとしているのかで答えが変わってくるから
抽象的な喩え話をされても答えにくいんだよな

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

0366デフォルトの名無しさん2010/10/26(火) 11:01:30
>>349
え?どうゆこと?
C#だけではMIDIアプリは作れないって事?
おれMIDIとかWAVとかの音楽系のアプリめざして勉強始めたばかりなんだけど・・・
誰かおしえてorz
0367デフォルトの名無しさん2010/10/26(火) 11:02:36
MDIとMIDIを読み違えるでない
0368デフォルトの名無しさん2010/10/26(火) 11:05:35
MDIってウインドウの中にウインドウを持てるやつだろ
エクセルとかもそういう構造だし

MIDIとは違うけど
0369デフォルトの名無しさん2010/10/26(火) 11:06:36
あ、ほんとだ・・・ハズ・・・・
0370デフォルトの名無しさん2010/10/26(火) 11:18:35
間違いついでに教えてくださいwww
C#でMIDIやWAVを扱えるアプリのサンプルを紹介してる本やサイト探してます。
分かりやすい日本語サイトとかないですかね?
Win32API使ったC++の10年以上前の本なら見つけたんだけど、
0371デフォルトの名無しさん2010/10/26(火) 11:19:45
つい最近ここか相談スレで同じネタあったよ
過去ログ調べてみ

0372デフォルトの名無しさん2010/10/26(火) 11:36:13
>>371
たぶん見たことあると思う。ロクなレス付かなかったんじゃなかった?
WAVの同期/非同期再生くらいならありこち見かけるけど、ちょっと専門的なのって無いですね。
0373デフォルトの名無しさん2010/10/26(火) 12:18:13
初めて質問します。よろしくおねがいします。
C#を使い始めて日が浅く調べてもヒットしなかったので教えてください。

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

よろしくおねがいいたします。
0374デフォルトの名無しさん2010/10/26(火) 12:20:40
>>373
隠しウインドウ作ってそいつとメニューを結びつけて
別ウインドウを作るとか
0375デフォルトの名無しさん2010/10/26(火) 12:39:18
>>372
分かりやすいかどうかは貴方のスキル次第だけど
ちょっと専門的なのがいいならこれのソースでも読んでみれば?
http://naudio.codeplex.com/


0376デフォルトの名無しさん2010/10/26(火) 12:57:00
これ買ってレビューしてくれ
ttp://www.amazon.co.jp/dp/4877832181/
0377デフォルトの名無しさん2010/10/26(火) 13:17:52
>>376
この辺はwavファイルの勉強すればバイナリ読みすればできるやん
http://www.cutt.co.jp/book/978-4-87783-218-6.html
0378デフォルトの名無しさん2010/10/26(火) 13:24:07
>>374
別のフォームを作って、そのフォームはタスクトレイ用でそこから設定ウィンドウを
開ける・・・ということでしょうか?

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

仕様するコンポーネントはNotifyIconとFileSystemWatcherを使用する予定です。
0379デフォルトの名無しさん2010/10/26(火) 13:26:10
隠しform一つでいくらもメモリーくわないよw
0380デフォルトの名無しさん2010/10/26(火) 13:33:17
>>372
初心者のレベルを超えてるからって結論じゃなかったっけ?
で、オープンソース読めってのは妥当な回答だったような。

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

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

Yahoo!知恵袋で自分で頑張って作ってどうしても判らない所を質問してる人が居たけど、
そんな姿勢じゃないと難しいと思うよ。
0381デフォルトの名無しさん2010/10/26(火) 13:33:22
>>379
 そうですか><一応業務用に常駐させておくので少しでもメモリ節約しようと
思いまして@w@あと、個人的にどうすればいいのか知りたかったのとw
0382デフォルトの名無しさん2010/10/26(火) 13:37:35
>>380
まあこんなところで説明しきれるほど小さい内容じゃないしなw

>>381
作ってみればいいじゃん
最低限のフォーム表示するアプリ程度ならいくらメモリ消費してるか
調べるのが面倒なくらいの消費量だよw
0383デフォルトの名無しさん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");
}

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

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

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

ちなみにC++で作成されたソフトのコードに冗長なところもあり、ロジックの作りなどが古いので
新規作成する経緯があります。(#defineによる文字列置き換えや、グローバル変数を多用しているなど)
0385デフォルトの名無しさん2010/10/26(火) 14:03:49
>>383
ふむふむ!ありがとうございます。さっそくコードを精査してみて
テストしてみます♪
0386デフォルトの名無しさん2010/10/26(火) 14:05:05
>>384
ttp://okwave.jp/qa/q2113581.html
0387デフォルトの名無しさん2010/10/26(火) 14:08:42
>>381
http://ideone.com/knsuP
こうすれば隠しフォームを使わずにできるよ

ただ1回でもフォームを生成すると閉じてもメモリは減らない。
メモリ節約というなら設定フォームを別の実行ファイルにして呼び出すって形にしないとだめかもね
0388デフォルトの名無しさん2010/10/26(火) 14:10:55
そんなに搭載メモリ少ないのか?
0389デフォルトの名無しさん2010/10/26(火) 14:13:42
GCですからね
03903702010/10/26(火) 14:29:54
>>376>>377
おあ!C#での解説本あったのか!でも高い!orz
こういうの電子化して欲しいな。

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

で>>375はダウンロードすればC#のソースが見れるのですかね?
英語サイトは全く読む気力が起きないもんで・・・
0391デフォルトの名無しさん2010/10/26(火) 14:37:41
>>390
うん。
0392デフォルトの名無しさん2010/10/26(火) 14:38:16
>>390
右にあるDownloadってでっかいボタン押すだけだろ
この程度もわからないならソース読んでも意味無いかもな
0393デフォルトの名無しさん2010/10/26(火) 14:47:10
ソースのダウンロード数、なかなかw
0394デフォルトの名無しさん2010/10/26(火) 15:50:39
C#でWAVの録音・再生、MIDIの送信・受信、SMFの再生プログラム作った
ちゃんと動いているよ

以下必要な要件

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

ワカランことがあったら解説するけど
丸投げ、クレクレ坊はお断り
0395デフォルトの名無しさん2010/10/26(火) 16:07:08
>>372
Windowsで音を鳴らすにはどうしたらいいかとか、
waveファイルの解析方法などはC#全く関係ないだろ。>>375はたまたまC#で書いてあるだけだ。
そこらへんの知識は自分で入手した上で、このWinAPIの関数を
C#で使うにはどうしたらいいかとか、C++のサンプルではこのようになっているが
どうC#に持っていけばいいかとかいうのはこのスレで聞けばいい。
0396デフォルトの名無しさん2010/10/26(火) 16:19:16
特定の形式に従ってファイルを読み書きするのって、調べてるとどうしても
英語の仕様書に行き当たることが多いと思うけどな。
もちろん仕様書にはC#どころかどの言語のソースコードも載ってないのが普通。
0397デフォルトの名無しさん2010/10/26(火) 17:12:58
スレ違いだけどzipのパスワードに設定できる最大長をご存知の方は居ます?。
プログラムを作る過程で調べた人がいないかと思いまして。
0398デフォルトの名無しさん2010/10/26(火) 17:24:41
C++でMIDIプログラム作ったなぁ。
Windows APIバイブルの3巻だっけな。
押入れにまだあるなw
03993702010/10/26(火) 18:26:15
>>394
そうなんですよ。お手軽さからC#から入ったんだけど、オーディオMIDI関係って
未だにC++やAPIの比重が高くて困ってるんですよ。
でも>>376みたいな本や>>375みたいなサンプルがあるとかなり助かります。
サンプルがあれば、多少分からなくても、見よう見まねで先に進めますから。
ただ>>375はちょっとパーツが多すぎて、まだ僕には難しすぎますねorz
まあ気長に進めていきますよ。趣味だから。
興味はMIDIのほうにあるんですけどね。MIDI関係の情報って少ないですよね。
04003702010/10/26(火) 18:29:22
>>395
もっと具体的な質問が出来るようになったら、そのときはよろしくお願いしますよ。
今はまだ、サンプルの真似や組み合わせすることしか出来ません。
04013702010/10/26(火) 18:32:19
>>395
間違えました。
0402デフォルトの名無しさん2010/10/26(火) 18:38:14
興味はいいけど、プログラムチェンジ何番とかコントロールチェンジ何番とかわかってるのかね。
0403370本物2010/10/26(火) 18:48:44
>>401
君は誰?さっそくかるーいナリスマシかね?
ここはそういうところ?めんどくせーなw
0404デフォルトの名無しさん2010/10/26(火) 22:22:57
>>403
お前が一番めんどくせーよ
0405デフォルトの名無しさん2010/10/26(火) 23:21:13
面倒だったらソフトウェアで自動化すればいいじゃない!
0406デフォルトの名無しさん2010/10/26(火) 23:56:13
すでにスクリプト化してるから。2ちゃんに手動で投稿してるのはお前だけ。
0407デフォルトの名無しさん2010/10/27(水) 00:08:56
なんかそんな小説を昔読んだな
引きこもってるやつがスクリプト化されたBBSとかチャットのせいで、
自分の国が滅んでたの気づかなかったってやつ
0408デフォルトの名無しさん2010/10/27(水) 00:15:09
SFの古典ネタっぽい感じもするけどね。SFよく知らんが。
PKディックとかにそんなのありそう。
まあデカルトの「我思う故に我あり」だって考えようによってはその手の話だ。
0409デフォルトの名無しさん2010/10/27(水) 00:41:37
もう3回くらい見てるなその手のは
直近で2年位前か
0410デフォルトの名無しさん2010/10/27(水) 03:39:16
プログラムがプログラムについて議論するとはなかなか興味深いね
0411デフォルトの名無しさん2010/10/27(水) 06:35:49
じゃあ話題を変えて
うちの妹の話でもしようか
0412デフォルトの名無しさん2010/10/27(水) 10:43:44
手書きでコントロールを追加しようと思ったのですがModifiersが候補にでてきません。
publicに設定したいのですがどうしいたら良いのでしょうか?。
0413デフォルトの名無しさん2010/10/27(水) 15:36:14
Modifiersはプロパティじゃないよ
フォームの自動生成機能がコントロールをどのアクセシビリティレベルで宣言するかを指定するための項目
だから手動でtextbox1を追加するときはpublic TextBox textbox1;
って書けばModifiersをpublicに設定したのと同等になる

0414デフォルトの名無しさん2010/10/27(水) 15:57:17
(´・ω・`)
0415デフォルトの名無しさん2010/10/27(水) 22:57:05
(´・ω・`) …
0416デフォルトの名無しさん2010/10/28(木) 00:09:36
( ´ ・ ω ・ ` )
0417デフォルトの名無しさん2010/10/28(木) 00:57:23
ライフゲームとかで使うグリッドはe_State[,] cell = new e_State[columns,rows]ってやりますけど、List使うならList<List<e_State>>ですよね?
後で描画することを考えるとList<>使うよりも前者のほうが向いてるんでしょうか?
0418デフォルトの名無しさん2010/10/28(木) 01:26:02
ライフゲームで使うグリッドなんて工夫のしようがないから2次元配列を直に出してもいいかな
ライフゲーム”とか”で使うなら範囲外アクセスを回避したいとかグリッドを結合させたいとか色々要求が別にあるだろうから、それならそれで別に作る
0419デフォルトの名無しさん2010/10/28(木) 04:56:11
そもそもそういうゲームでグリッドに対してListを使う利点ってあるの?
盤面の大きさ変える必要があるときはnewし直せばいいだけなわけだし。
0420デフォルトの名無しさん2010/10/28(木) 10:15:14
ちょっと質問

FileSystemWatcherってファイルの監視をTimerで見てるの?それともイベント?
0421デフォルトの名無しさん2010/10/28(木) 11:32:29
>>420
ReadDirectoryChangesW使ってる
0422デフォルトの名無しさん2010/10/28(木) 14:24:24
>>421
ありがとうございます。タイマー使うよりは処理は重くなくてよさげっぽいですね。
めっちゃ更新されるとバッファオーバーになるようですが・・・
0423デフォルトの名無しさん2010/10/28(木) 16:30:04
ReadDirectoryChangesW使ってるようですね
0424デフォルトの名無しさん2010/10/28(木) 17:46:17
C#で書いたWindows Mobile用のアプリについて聞きたいんですけど、
ここでいいんですかね?
0425デフォルトの名無しさん2010/10/28(木) 18:16:54
だめですちがいます。
0426デフォルトの名無しさん2010/10/28(木) 18:38:49
じゃあどこで質問すればいいんですかね?
0427デフォルトの名無しさん2010/10/28(木) 19:42:11
さっさとここに書けばいいだろ
0428デフォルトの名無しさん2010/10/28(木) 20:34:35
早く聞けよまだかよ
0429デフォルトの名無しさん2010/10/28(木) 20:44:15
どうせ煽りしか帰ってこないような気がする。
MSに質問というか報告した方が良さそう。
0430デフォルトの名無しさん2010/10/28(木) 21:05:30
文字をランダムに入れ替えるプログラムってどうやってつくればいい

「ありがとう」を「がとりうあ」
にする、みたいな
0431デフォルトの名無しさん2010/10/28(木) 21:15:59
乱数a,bを発生させて、a文字目とb文字目を入れ替える
というのを複数回繰り返す
0432デフォルトの名無しさん2010/10/28(木) 21:17:58
>>431
どうもありがとう
0433デフォルトの名無しさん2010/10/28(木) 21:23:14
>>431
その方法だと一様に分布しないんじゃないのか
0434デフォルトの名無しさん2010/10/28(木) 21:32:13
シャッフルという操作だな

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

で「がとりうあ」
0435デフォルトの名無しさん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();
}
0436デフォルトの名無しさん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());
}
0437デフォルトの名無しさん2010/10/28(木) 21:47:51
順列生成と同じなのでO(n)よりも大きいオーダーで書いてるやつは失格な
0438デフォルトの名無しさん2010/10/28(木) 21:49:10
そんなマジになるような内容とも思えんが....
0439デフォルトの名無しさん2010/10/28(木) 21:51:31
ウィンドウズモバイル用アプリってC#で作れるの?
0440デフォルトの名無しさん2010/10/28(木) 21:57:02
作れるよ
0441デフォルトの名無しさん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());
0442デフォルトの名無しさん2010/10/28(木) 22:14:45
甘いな
return new string((from c in str orderby r.Next() select c).ToArray());
0443デフォルトの名無しさん2010/10/28(木) 22:16:43
GOM PLAYERで動画をストリーム再生させられる、ストリームサーバーを作ってみたいのですが、
new Socket().SendFile(path);では上手く行きません。
データを送りつけるだけではだめなのでしょうか?。
0444デフォルトの名無しさん2010/10/28(木) 22:17:14
>>441
それletいらなくない?
return string.Join("", str.OrderBy(_ => r.Next()));
0445デフォルトの名無しさん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で公開されてるし大丈夫だとは思うんだけど。
0446デフォルトの名無しさん2010/10/28(木) 22:29:56
ID、パスワードを送ってんならまずいだろ。
0447デフォルトの名無しさん2010/10/28(木) 22:35:39
>>444
残念ながらエラーだ
return new string(str.OrderBy(_=>r.Next()).ToArray());

>>445
プライバシーの問題の話をしているなら
ダウンロードページのReport Abuseってところから苦情出せばいいんじゃない?
ところでさっきまではちゃんとダウンロードページ表示されてたのに
今はエラーってでるな
0448デフォルトの名無しさん2010/10/29(金) 00:04:44
>>447
.NET4でString.Join<T>(String, IEnumerable<T>)とか追加されてる
0449デフォルトの名無しさん2010/10/29(金) 07:55:22
>>448
まじか、それは失礼
0450デフォルトの名無しさん2010/10/29(金) 11:07:51
C#とCってどっちが覚える事少ないですか?
C#は名前空間がたくさんありすぎて・・・Cはまだやってないですk
0451デフォルトの名無しさん2010/10/29(金) 11:13:30
>>450
C#が楽だろ
名前空間覚えるの大変ってCだって結局はライブラリとかAPIとか覚えるんだから一緒だよ
0452デフォルトの名無しさん2010/10/29(金) 11:15:51
C#はオープンなのでその点に不満さえなければ.net系がお勧め
0453デフォルトの名無しさん2010/10/29(金) 11:23:10
>>450
例えばの話、実用じゃなくて学校の課題的な意味で、
言語でできる最低ラインのこと覚えるだけってなら C 言語は超楽。
機能がないんだもん。

で、目的ベースで、世に出せるようなアプリ作りたいってのなら、
たいていは C# の方が楽。
「C# が使える」って言われる分野だと絶対 C# の方がいい。
0454デフォルトの名無しさん2010/10/29(金) 11:27:32
常駐型アプリ作成で質問です。

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

ちなみに自分が考える方法としてはsleepで任意の時間停止させてFor文でまわす・・・・という方法しか思いつきません
でしたorz フォームを非表示にするのであればタスクからコンテキストメニューでClose()すれば済むから楽ですけど・・・
0455デフォルトの名無しさん2010/10/29(金) 11:32:58
C#2.0ベースで作るのとC#4.0ベースで作るのはどっちが楽ですか?
0456デフォルトの名無しさん2010/10/29(金) 11:33:59
処理側、普段はどういう挙動してるの?

処理側が while(IsAlive) みたいなループしてるんなら、
終了させたいスレッドで IsAlive 書き換えておしまい。
0457デフォルトの名無しさん2010/10/29(金) 11:38:04
>>456
処理側は普段は何もしていません。特定のイベント(ファイルの作成、削除、リネーム)が
行われた時のみ制御クラスから呼び出して処理を行います。

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

PS.サービスにしろっていうのは無しでorz使っちゃだめらしいので@w@
0458デフォルトの名無しさん2010/10/29(金) 11:39:09
隠しFormにした方がいろいろ楽じゃなかったけ?
0459デフォルトの名無しさん2010/10/29(金) 11:43:54
ttp://www.a-quest.com/products/aquestalk.htmlのAquesTalkDa_Createを使って発声するサンプルをどなたか書いていただけませんか?
0460デフォルトの名無しさん2010/10/29(金) 11:45:02
>>それは重々承知しておりますorz どのサイトでもそのように推奨(?)されているので;w;

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

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

それとサーバー常駐ならC/C++でしょーが!!って言われるかもですが、
現在までC++で作っていたのですが、社の方針ですべてC#にすることなので
ご理解のほどよろしくおねがいします;w;
0462デフォルトの名無しさん2010/10/29(金) 11:48:33
>>455
どう考えても新機能使える方が楽。
減ってる機能はない。
0463デフォルトの名無しさん2010/10/29(金) 11:50:54
>>457
それ、なんかただ単に非同期処理したいだけ?
BackgroundWorker じゃダメなの?
04644542010/10/29(金) 11:58:32
>>463
BackgroundWorkerを使用とのことでしたが、処理内容自体は軽く、頻度もそこまである
わけではないのであまり考えていませんでした。

463さんの言われるのは処理ではなく、制御用にご使用されては?ということでしょうか?
0465デフォルトの名無しさん2010/10/29(金) 12:00:23
>>464
そんなもん、普通に BeginInvoke とか使った非同期処理すりゃいいんじゃないの?
04664542010/10/29(金) 12:19:35
>>464
ふむふむ!ちょっとBeginInvokeについて調べてみます><
0467デフォルトの名無しさん2010/10/29(金) 12:31:32
>>464
ファイルの監視するクラス、又はメソッドをデリゲートに入れて実行させておいて、
呼び出し元ではタスクのコンテキストメニューなどから終了すると。アプリケーションを
停止するという考え方であっていますでしょうか?
0468デフォルトの名無しさん2010/10/29(金) 13:30:45
>>459
ちゃんとサンプルへのリンクあるじゃないか。
これやってみてわからないとこを聞きなさい。
http://blog-yama.a-quest.com/?eid=267269
0469デフォルトの名無しさん2010/10/29(金) 13:32:42
>>468
そちらのサンプルの場合は同期で発生するやりかたですでに訪問済みです
ぼくの探しているサンプルは非同期のほうなんです
0470デフォルトの名無しさん2010/10/29(金) 13:33:27
補足:AquesTalkDa_Createは非同期のときに使う関数です
0471デフォルトの名無しさん2010/10/29(金) 13:50:02
最初から、わかるようにかけよ。
ホイ
http://monmokoblog.blogspot.com/2008/01/c.html
0472デフォルトの名無しさん2010/10/29(金) 14:45:21
>>454
前にも書いたんだけど
http://ideone.com/D0Wak
こういう方法じゃダメなの?
0473デフォルトの名無しさん2010/10/29(金) 21:41:32
うるせー
0474デフォルトの名無しさん2010/10/29(金) 21:55:39
非同期には勝てなかったよ
0475デフォルトの名無しさん2010/10/29(金) 22:04:55
>>471
コード量が多すぎて僕には難しいです(汗
非同期でこんにちはを発音する程度の本当にシンプルなサンプルがいいのですがそういうサンプルってないですよね?
0476デフォルトの名無しさん2010/10/29(金) 22:22:24
もう別プロセスで作れば?
コマンドライン引数に与えられた文字列を発音するコンソールアプリケーション作って
Process.Startで呼べば非同期になる
0477デフォルトの名無しさん2010/10/29(金) 23:38:07
プログラム終了時に特定のコードを実行させる方法はどうやるのでしょうか?

終了はalt+f4や右上の×ボタンを押して終了させたりも含みます
0478デフォルトの名無しさん2010/10/29(金) 23:42:27
OnClosingのオーバライドも含みます
0479デフォルトの名無しさん2010/10/29(金) 23:50:36
http://dobon.net/vb/dotnet/form/unloadmode.html
これは?
0480デフォルトの名無しさん2010/10/30(土) 00:01:21
Main()の最後じゃダメなんか。
0481デフォルトの名無しさん2010/10/30(土) 00:10:45
>>475
ちょっと触ってみたからサンプルとしてあげる。
フォームにボタン1つ貼り付けただけのもの。
http://ideone.com/ZQYsG
0482デフォルトの名無しさん2010/10/30(土) 01:32:58
O(n) ってなんと発音するの?
0483デフォルトの名無しさん2010/10/30(土) 01:59:27
オーダー えぬ
0484デフォルトの名無しさん2010/10/30(土) 08:50:50
王と長島だろ・・・オーエヌ
0485デフォルトの名無しさん2010/10/30(土) 08:58:08
o(n) ってなんと発音するの?
0486デフォルトの名無しさん2010/10/30(土) 09:34:01
スモールオーエヌ
0487デフォルトの名無しさん2010/10/30(土) 10:31:27
小さな巨人
0488デフォルトの名無しさん2010/10/30(土) 10:36:10
なぼな
0489デフォルトの名無しさん2010/10/30(土) 14:00:43
”尻の穴を手で隠してる人がこっち向いてる”
0490デフォルトの名無しさん2010/10/30(土) 15:19:22
子コントロールのMouseEnterイベントを親フォームに転送するには、子コントロールで捕まえて親フォームに投げつけるしかありませんか。
なにかのプロパティを設定したら、親に通知が行くようになるとかありませんか。

具体的には、マウスカーソルをツールウィンドウからメインウィンドウに移動させた際に、フォーカスをメインウィンドウに移したいと思っており、
メインウィンドウでMouseEnterイベントを捕まえたいのですが、メインウィンドウの子コントロールに捕まってしまうので、
何とか簡潔な手段で解決したいです。
0491デフォルトの名無しさん2010/10/30(土) 15:26:55
>>490
位置関係とやりたいことが今一つよくわからん
とりあえず、子のMouseLeaveから親のMouseEnterを呼ぶ
0492デフォルトの名無しさん2010/10/30(土) 16:09:11
メインウィンドウとは別に、リストビューを貼りつけたウィンドウがあって、これをツールウィンドウと書いたんですが、
このリストビューからマウスで項目を選び、メインウィンドウの方にマウスカーソルを戻すと、メインウィンドウで作業していた場所に戻るというか…
メインウィンドウのキャプションをクリックすれば、大体そんな感じにはできるんですけど、
マウスカーソルの移動が頻繁になったり大きくなったりして、それは避けたい…とか思ってまして…

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


いろいろ考えたんですが、1秒間に数回くらいマウスの位置をポーリングして、判断すればいいのかな、と思えてきました。
0493デフォルトの名無しさん2010/10/30(土) 16:24:12
>>492
コントロールを再帰的に辿って(コンテナのControlsの中を再帰的にスキャンするってこと)
フォーム上の全部のコントロールのMouseEnter(MouseLeaveじゃない)を受信するように
すれば出来るでしょ。

でも、タイマ使ってポーリングするのが泥臭いけど一番簡単だね。
俺はこの手の処理のが必用な時はそうしちゃう。
0494デフォルトの名無しさん2010/10/30(土) 17:44:49
>>490
WPFなら親へ親へと伝播されるで
0495デフォルトの名無しさん2010/10/30(土) 19:03:02
外部のアプリを起動させる時、
Process.Start("notepad.exe","test1.txt");
とファイルを開かせた後、今度はtest2.txtを開きたいのですが、新しくnotepadを開くのではなく
さっき開いたnotepadでファイルを開きたいのですが方法はありますか?
0496デフォルトの名無しさん2010/10/30(土) 19:08:24
アプリケーション依存なので、共通的な方法はないです。
0497デフォルトの名無しさん2010/10/30(土) 19:09:39
メモ帳くらい似たようなの自分で作ればいいのに
0498デフォルトの名無しさん2010/10/30(土) 19:20:16
C#でマイクから「こんにちは」っていったらAの処理を、「こんばんは」っていったらBの処理をする事ってできますか?
音声を認識するのってCじゃないとやはり無理ですかね?
0499デフォルトの名無しさん2010/10/30(土) 19:25:38
>>498
http://msdn.microsoft.com/ja-jp/library/system.speech.recognition.aspx
0500デフォルトの名無しさん2010/10/30(土) 19:27:28
クラスライブラリのchmファイルってないですか?
毎回ダイヤルアップ接続するのが面倒くさくて・・・
0501デフォルトの名無しさん2010/10/30(土) 19:28:45
>>499
ありがとうございます
0502デフォルトの名無しさん2010/10/30(土) 19:30:52
>>500
Silverlightのドキュメントならchmあるよ
0503デフォルトの名無しさん2010/10/30(土) 19:35:58
Silverlightはやらないのです。。。すみません。。。
オンラインマニュアルのクラスライブラリがオフラインで見れればいいんです。。。
一つ一つhtmlファイルにダウンロードしかなさそうですよねそうしてみます。。。
0504デフォルトの名無しさん2010/10/30(土) 19:38:40
Express版は知らんけど、Pro版とかなら、普通にローカル用のヘルプがついてる
0505デフォルトの名無しさん2010/10/30(土) 19:39:15
MSDNライブラリを丸ごと収録したDVDISOがダウンロードできたはず
ダイヤルアップなら無理だろうけどw
05063492010/10/30(土) 19:56:10
いいじゃんじゃん。(´・ω・`)
0507デフォルトの名無しさん2010/10/30(土) 20:03:26
でもローカルよりオンラインコンテンツの検索の方が速いという。
0508デフォルトの名無しさん2010/10/30(土) 20:14:55
2010のヘルプはDVDISOじゃなくて
ヘルプメニューからオフラインに設定してやってダウンロードする形に変わった
0509デフォルトの名無しさん2010/10/30(土) 20:16:55
VSの次のバージョンくらいで全てのエディションでローカル版のMSDNは無くなりそうだな
0510デフォルトの名無しさん2010/10/30(土) 20:25:45
そんなわけないでしょ。ありえない。
0511デフォルトの名無しさん2010/10/30(土) 20:30:24
ネットにつなげない環境、ってのがあるから、
ローカル版はやっぱり残ると思うよ。
0512デフォルトの名無しさん2010/10/30(土) 20:34:58
String.Internって遅くない?
Dictionaryで自分で実装したのと比べたらlock込みでもString.Internの方が遅いんだが
0513デフォルトの名無しさん2010/10/30(土) 20:41:51
すごい無意味な比較してるな
0514デフォルトの名無しさん2010/10/30(土) 22:58:12
String.Internってどういう用途で使うの?
0515デフォルトの名無しさん2010/10/30(土) 23:07:41
インターンするため
0516デフォルトの名無しさん2010/10/30(土) 23:21:39
これ以上ないほど完璧な解答だな
0517デフォルトの名無しさん2010/10/30(土) 23:54:32
C#で人口チャットロボを作りたいんですけど
どういう仕組みで作るのかどなたかおしえてください
0518デフォルトの名無しさん2010/10/31(日) 00:00:21
ロボ > トウキョウト ハ 1300 マンニン デス
ロボ > カナガワケン ハ 903 マンニン デス
ロボ > オオサカフ ハ 880 マンニン デス
0519デフォルトの名無しさん2010/10/31(日) 00:11:18
>>517
http://pc.2ch.net/tech/kako/982/982118979.html
0520デフォルトの名無しさん2010/10/31(日) 01:16:49
そういえばちょっと前にゲームを5日で作ってこいって言われた人は無事完成させられたのだろうか
05215172010/10/31(日) 12:39:19
おれ・・・・作ってみたいんです
作りながらコードしてここの先輩方にご指摘頂くのかいいですか?
教えて君じゃなくてコードは自分で調べます!
0522デフォルトの名無しさん2010/10/31(日) 12:55:52
�@ 人間用の普通のオンラインチャットプログラムを作る
�A 人工無能について調べ、オンラインでなくローカルで会話できるまで作る
�B �@と�Aを組み合わせる

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

物理的なロボット作りたいならハードウェアも勉強してね
05235172010/10/31(日) 12:57:29
先生ありがとうございます!
2番を作ります!
俺中1なんで学校終わったら毎日調べて書きます!
0524デフォルトの名無しさん2010/10/31(日) 13:01:49
いや、ここに書かなくてもいいからw
そういうのはブログにでも書いた方がいいと思うよ
0525デフォルトの名無しさん2010/10/31(日) 16:28:45
とりあえず形態素解析とマルコフ連鎖あたりから調べてみれ
0526デフォルトの名無しさん2010/10/31(日) 17:17:05
WPFのXAMLにトリガーとかストーリーボードを追加するときってvs2010で手書きするのが普通?それともExpression Blend使うの?
0527デフォルトの名無しさん2010/10/31(日) 17:20:51
アニメーションはさすがにBlend使わないと無理。
あとトリガーは時代遅れ。Visual State Manager使う。
0528デフォルトの名無しさん2010/10/31(日) 17:45:24
ちょうど今トリガーの勉強したところだったが、
今度はVisual State Managerの勉強してくる
0529デフォルトの名無しさん2010/10/31(日) 18:46:30
StreamReaderのオブジェクトのディープコピーしたいのです。
サンプルメソッド使用して実行したら、例外が発生し実行できませんでした。
エラーメッセージに「'System.IO.FileStream' はシリアル化可能として設定されていません。」と、ありました。
どうすればシリアル化することができるのでしょうか?
0530デフォルトの名無しさん2010/10/31(日) 18:50:34
何をしてもシリアル化はできません。
0531デフォルトの名無しさん2010/10/31(日) 19:13:39
>>530
シリアル化できるものとできないものとあるんですねえ〜
0532デフォルトの名無しさん2010/10/31(日) 19:15:02
ラップしても無理なものは無理です。
0533デフォルトの名無しさん2010/10/31(日) 19:19:38
Readerをディープコピーして何がどうなるってんだ
まさか別々に読み出せるとかトンデモ発想してるわけじゃないだろうが
0534デフォルトの名無しさん2010/10/31(日) 19:27:08
C#の勉強やりたいのでスレ立てていいですよね?
0535デフォルトの名無しさん2010/10/31(日) 19:29:22
アイちゃん貼られても知らんぜ俺は
0536デフォルトの名無しさん2010/10/31(日) 19:29:29
個別レス立てると叩かれるぞw
0537デフォルトの名無しさん2010/10/31(日) 19:34:31
ここでいいだろ。
0538デフォルトの名無しさん2010/10/31(日) 20:29:48
特定の配列に文字列が入ってない事をどうすれば表現できるのでしょうか
0539デフォルトの名無しさん2010/10/31(日) 20:31:18
array.All(a => !(a is string))
0540デフォルトの名無しさん2010/10/31(日) 20:36:13
!array.OfType<string>().Any()
0541デフォルトの名無しさん2010/10/31(日) 20:42:15
ありがとうございます
0542デフォルトの名無しさん2010/10/31(日) 20:42:19
LINQかっこいい ><
俺も勉強する ><
0543デフォルトの名無しさん2010/10/31(日) 21:15:16
C#5.0が出るのが先かC#4.5が出るのが先かC#4.1が出るのか先か分かる人教えて
0544デフォルトの名無しさん2010/10/31(日) 21:32:24
なぜ、表記の違いだけなのに気になるかがわからない。
次がでる時期が気になるならわかるけど。
0545デフォルトの名無しさん2010/10/31(日) 21:37:40
Cωが虫の息なんですが…
0546デフォルトの名無しさん2010/10/31(日) 21:38:37
マーケティング戦略によっていろいろ変わるしね。
0547デフォルトの名無しさん2010/10/31(日) 21:50:16
>>545
虫の息っていうかもとから実験用みたいなもんでしょ
コンセプトがLinqで消化されたんで役割は見事に果たせたんではないかと。
0548デフォルトの名無しさん2010/10/31(日) 22:00:06
すいません質問です!
C#で作成したプログラムが吐き出したデータを見てるんですが、
時間の値が解読不可能で困ってます;;

634089637900000000
     ↓
2010/5/10/ 1:03

・・になるみたいなんですが。
シリアル値で変換出来ず。。。
どなたか分かる方いらっしゃいますか?
0549デフォルトの名無しさん2010/10/31(日) 22:05:27
>>548
基準となる日時があるんじゃないの?
2chのdatのファイルネームも確かUNIXタイムだし
0550デフォルトの名無しさん2010/10/31(日) 22:08:13
DateTime.Ticksの値
0551デフォルトの名無しさん2010/10/31(日) 22:08:33
時刻値は 100 ナノ秒単位 (タイマ刻み) で表し、日付は GregorianCalendar 暦の A.D. (西暦紀元) 1 年 1 月 1 日の午前 00:00 からのタイマ刻み数で表します。たとえば、タイマ刻み値
0552デフォルトの名無しさん2010/10/31(日) 22:09:25
http://msdn.microsoft.com/ja-jp/library/system.datetime%28VS.80%29.aspx
0553デフォルトの名無しさん2010/10/31(日) 22:13:32
>>548
http://msdn.microsoft.com/ja-jp/library/system.datetime%28VS.80%29.aspx
0554デフォルトの名無しさん2010/10/31(日) 22:16:35
大人気だな。
0555デフォルトの名無しさん2010/10/31(日) 22:19:22
大人気ないな。
0556デフォルトの名無しさん2010/10/31(日) 22:28:23
>>549-552
納得できました!!ありがとうございます。
ちなみにこの値をプログラムを使用せずに
元の日時へ変換する計算方法なんてあるんでしょうか?
0557デフォルトの名無しさん2010/10/31(日) 22:29:52
DateTimeクラスのコンストラクタを調べてみろ。
0558デフォルトの名無しさん2010/10/31(日) 22:38:36
MSDNに書いてるし
0559デフォルトの名無しさん2010/10/31(日) 22:39:20
2038年問題の対応の仕方をご教授お願い嶋sう
0560デフォルトの名無しさん2010/10/31(日) 22:44:12
>>559
・基準時間を変える
・桁を増やす

VC++の最近のやつはこの辺の警告でまくりだっけ?
0561デフォルトの名無しさん2010/10/31(日) 22:55:11
>>556
プログラムを使用せずに?紙と鉛筆?暗算?
気合と根性で足し算すればできるよ。

>0001 年 1 月 1 日午前 00:00:00 以降の経過時間 (100 ナノ秒単位) を表します。
0562デフォルトの名無しさん2010/10/31(日) 22:56:47
うるう年とか、カレンダー切り替えの辺りを考えると、
手動計算はちょっと厳しいと思う。
0563デフォルトの名無しさん2010/10/31(日) 22:58:54
気合と根性w
0564デフォルトの名無しさん2010/10/31(日) 23:34:13
C#全く知らなくて他人が書いたもの見なきゃいけないんだけど、
GUIの部分をイベントでつないでるのは分かったんだけど、
ロジックの部分も全部イベントでつながってるっぽいんだけど、
なんかグラフィカルにつながり一覧できるようなビュー(ツール)ってありますか?

こんな感じの。(これはイベントとプロパティなんかが線で表現されてる(選択して編集もできる)んだけど)
http://www.javaworld.com/javaworld/jw-01-2000/images/jw-01-beans3.gif
0565デフォルトの名無しさん2010/10/31(日) 23:36:19
>>546
ひとまずITmediaの入門記事よんでからでなおしてね。
0566デフォルトの名無しさん2010/10/31(日) 23:40:42
根性使い果たしました\(^o^)/
でも調べて理論ははんなりわかったので、妥協しますorz
ありがとうございました。
0567デフォルトの名無しさん2010/10/31(日) 23:42:17
.NETのGUIやイベントやその間の関連はあんまり宣言的じゃないのでそういうのは無理。
0568デフォルトの名無しさん2010/10/31(日) 23:46:23
>>563
作り慣れてれば感覚的に構造が理解できるけど。
最初は手で繋がりを書いた方が速いと思う。
0569デフォルトの名無しさん2010/10/31(日) 23:50:20
静的解析は無理だろうけど、
実際にアプリを動かしながらだったらそういう可視化は可能だろうな
案外簡単に作れるかも
0570デフォルトの名無しさん2010/11/01(月) 00:24:49
う〜〜ん、メッセージキューをトレースしても、キューの連続が見えるだけで。
それが内部のメソッドやクラスと関連させる方法が思いつかないけど。
ソースに手を加えるのか?
それが出るほどに手を加えるのなら、その時点で理解していると思われ。
05715642010/11/01(月) 00:31:32
どうもです。

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

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

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

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

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

コードを検索かけてみてもなんかすごく分かりにくい気がするんですが。
やっぱり、つながりを紙かなんかにコツコツ書いてくしかないんですかね。
0572デフォルトの名無しさん2010/11/01(月) 00:44:31
>>571
それは「C#がそういうもん」じゃなくて、
そういう書きかたされたってだけのような。
どの言語でもスパゲティにする人はいるわけで。
0573デフォルトの名無しさん2010/11/01(月) 00:46:19
作り方によるだろ
Java知ってるのかしらないけどイベントなんて
インターフェイス経由のメソッド呼び出しと同じ
0574デフォルトの名無しさん2010/11/01(月) 00:47:51
今時、直接イベント直結してるのが不思議
去年、全ての資産はwpfに移行してるからってのもあるけど
それでも不思議
0575デフォルトの名無しさん2010/11/01(月) 00:53:35
複数スレッドで処理を分担するアプリケーションもある、
その時は連携にイベントを使うだろうね。
イベントがあるからスパゲッティーというのは暴言だと思われ。
0576デフォルトの名無しさん2010/11/01(月) 01:02:33
>>564みたいな構造ならイベント多用するだろうな
WinFomsが最も得意とする類
スパゲッティになるかどうかは別問題
0577デフォルトの名無しさん2010/11/01(月) 01:05:19
>>564のまちがいね。
0578デフォルトの名無しさん2010/11/01(月) 01:12:44
どこを間違えたって?
0579デフォルトの名無しさん2010/11/01(月) 01:16:53
>>574
今時WinFormで開発なんてありえねーってこと?
いまいち何いってるのかわからん
0580デフォルトの名無しさん2010/11/01(月) 01:17:26
>>571
コツコツっていうか、普通のプログラマが書いたコードならイベントハンドラは
それと分かるような名前になってるはずだし、ちょっと気が利く人ならイベントハンドラだけ
regionで括ってあったりするし、そうでなくても自分でそうすればいいんだし。

何より、イベントがどこから参照されているかはIDEで検索可能だし。
そんなに気に病むほどのことでもないよ。
0581デフォルトの名無しさん2010/11/01(月) 16:44:00
WPFでウィンドウの最大化、最小化を
this.WindowState = System.Windows.WindowState.〜;
で制御しているんですが、これだと通常右上のボタンを押した時の
ウィンドウが縮んだり伸びたりするアニメーションが発生しません。(動作環境はVistaです)
動作に統一感を持たせたいので、出来ればこのアニメーションを
発生させたいのですが、何か方法はないでしょうか。
0582デフォルトの名無しさん2010/11/01(月) 17:58:03
逆に考えるんだ
Vistaのアニメーションをoffにするんだ
0583デフォルトの名無しさん2010/11/01(月) 19:02:24
うーん、それはちょっと
0584デフォルトの名無しさん2010/11/02(火) 05:23:40
WinFormsのTextBoxでアクティブウィンドウじゃなくなっても文章選択のハイライトを維持する方法ありますか?
通常ではデスクトップなどをクリックしてアクティブウィンドウじゃなくなるとハイライトが一時的に消えます。
0585デフォルトの名無しさん2010/11/02(火) 05:27:29
自己解決しました
0586デフォルトの名無しさん2010/11/02(火) 10:34:30
超巨大なCSVファイルを読み込んでファイル操作(列入れ替えや引用符など)を行って
別フォルダに出力するのですが、TextFieldParser を使うべきかStreamReaderで一行ずつ
拾っていくか迷っています。

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

このほかによい方法などありますでしょうか?
0587デフォルトの名無しさん2010/11/02(火) 10:37:16
思いつくパターン書いてみて実測してみればいいじゃん
0588デフォルトの名無しさん2010/11/02(火) 10:40:16
StreamReader使っても結局CSVの構文解析は必要になるんでは
その点ではTextFieldParserでいいんでないかな

でもMS Accessに任せちゃう方がいいと思うけどね
CSVをデータベースっぽく使えるはずだし
0589デフォルトの名無しさん2010/11/02(火) 10:49:03
実測したいのですが、手元にデータがなく現地で即、実施となるので・・・orz

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

後、蛇足ですが.netは2までですorz
0590デフォルトの名無しさん2010/11/02(火) 10:53:56
>CSVが項目100以上で行数が60万件
データ作ればいいんじゃないの?
それこそc#で簡単なファイル出力プログラム書いてしまえば・・・
0591デフォルトの名無しさん2010/11/02(火) 11:01:15
”列の入れ替え”がソーティングのことを指していて、
ソーティングにO(logN)の実行速度とか要求されたら
オフラインアルゴリズムしかないので、メモリがO(N)とかになっちゃう
無難にADO.NETでCSV読ます方法がいいんじゃない?
0592デフォルトの名無しさん2010/11/02(火) 11:01:58
あれ、列って項目のことか
行と勘違いしていた^p^;
0593デフォルトの名無しさん2010/11/02(火) 11:14:35
行の入れ替えならそのようにするのがよいと思います。
今回は列の入れ替えのみ考えるので@w@

とりあえず、データを作ってみます@w@もしTextFieldParserが
CSVのデータをすべてメモリ内に読み込むようでしたらStreamReaderで
作成しようかと思います。もしTextFieldParserのことを知っておられる方が
おりましたらご教授お願いいたいます。
0594デフォルトの名無しさん2010/11/02(火) 11:17:22
この場合行数は関係ないんじゃね。1行分処理できればあとは同じだろうし。
基本的にTextFieldParserでいいんだろうけど、
妙に融通が効かないこともあるから、不都合があれば自前でやる。

それからAccessというかODBCのテキストドライバはそろそろ非推奨なんじゃね。
アップデートもされてないし。
0595デフォルトの名無しさん2010/11/02(火) 11:20:52
TextFieldParser parser = new TextFieldParser("text.csv",
System.Text.Encoding.GetEncoding("Shift_JIS"));

上記の構文を作成したときに該当CSVファイルをメモリに
読み込ます・・・というわけではないのでしょうか?
単に、ファイルのハンドルを取得するだけならいいのですが
0596デフォルトの名無しさん2010/11/02(火) 11:30:54
ReadFieldsメソッドで1行づつ処理するから、まとめて読み込むようなことはない。
0597デフォルトの名無しさん2010/11/02(火) 11:43:35
ふむふむ、そしたらTextFieldParseをメインで考えて作ってみようと思います。

ありがとうございました^-^
0598デフォルトの名無しさん2010/11/02(火) 13:42:46
2010C#EE

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

それぞれどういう風にファイルに書き出すのが最適ですか?
0599デフォルトの名無しさん2010/11/02(火) 13:50:57
適当にフォーマット自分で決めてXMLで吐けばいいでしょう
GUIとデータをきちんと分けて考えていればそんなことで悩む必要は無いはず
0600デフォルトの名無しさん2010/11/02(火) 13:59:38
XMLですか、どーもー
0601デフォルトの名無しさん2010/11/02(火) 14:09:40
XMLシリアライザみたいなやつ無かったっけ?
0602デフォルトの名無しさん2010/11/02(火) 14:12:04
あるよ
クラス作っておけばそれにあわせて読み書きしてくれるぜ
0603デフォルトの名無しさん2010/11/02(火) 14:24:27
richTextBoxで、文字を打つとコードエディタのようにコメントマーク〜改行まで
文字色が変わるようにするにはどうしたらいいですか?
下の文章の//以降が緑色になるみたいな感じにしたいのですが。


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

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

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

みたいな感じのクラスをList<>とかにするのがいいのかな?
0605デフォルトの名無しさん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もちゃんと展開されるよ
0606デフォルトの名無しさん2010/11/02(火) 15:23:58
あ、いけねTimeSpanは展開されないんだった。
かわりにintでも使ってくれ
0607デフォルトの名無しさん2010/11/02(火) 15:26:30
最近c言語を学び始めました
「各入力行から、行のあとのブランクやタグを除き、かつ空白行はすべて削除するようなプログラムをかけ」
という問の答えがわかりません;;
putchar、getcharを使うんだと言う事はなんとなくわかるんですが・・・
どなたか優しい方このプログラムの作り方おしえてください
06085982010/11/02(火) 15:29:22
>>605
そんなやり方が、すごいなー
ありがとうございます
0609デフォルトの名無しさん2010/11/02(火) 15:32:46
>>607
スレ違いです
こっちへどうぞ
http://hibari.2ch.net/test/read.cgi/tech/1287876803/l50
0610デフォルトの名無しさん2010/11/02(火) 15:33:29
>>608
どこがすごいの?ばかにしてるの?
0611デフォルトの名無しさん2010/11/02(火) 15:34:16
つーかコード書いて試すとかしないのか・・・
シリアライズだって試せばわかるだろうに
06125982010/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; }
}

ファイルごとに再生位置を設定したいので
理想はこんな感じなんですが、ちゃんと展開できますか?
0613デフォルトの名無しさん2010/11/02(火) 15:43:12
ISerializable実装したらいいんじゃないの?
06145982010/11/02(火) 15:46:50
そんな難しいこと言われてもよくわかりません

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

これをやりたいだけなんですが
スパっと解答できる人いないの?
0615デフォルトの名無しさん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();
}
0616デフォルトの名無しさん2010/11/02(火) 15:55:21
>>613
たしかXmlSerializerとISerializableは無関係のはず
06175982010/11/02(火) 15:56:16
>>615
あ、なるほどー
typeofで設計図を参照しろってな感じでやれば
理解してやってくれるのか

今度こそわかった
ありがとう
0618デフォルトの名無しさん2010/11/02(火) 18:58:54
子ウィンドウから親を取得したいんだが。
親から子をShowMessageで呼び出しているのに
子のOwnerがnullになる。
子から親を取得するのはどうすりゃいい?
親からOwnerを書き換えてやっても駄目だった。
06196182010/11/02(火) 19:00:09
ShowMessageってなんだ
ShowDialogです。
0620デフォルトの名無しさん2010/11/02(火) 19:01:53
>>618
子を作るときに親のインスタンスを渡しておくとか・・・
06216202010/11/02(火) 19:03:22
あとthis.parentformとかあったっけ?
ちょっと今IDE入れてないマシンからなんで記憶をたどってるだけですまん

とりあえずコントロールにせよparentという単語が入ってるやつ調べれば親だよ
06226182010/11/02(火) 19:04:58
>>620
子がForm2 親Form1として
Form2 form2 = new Form2();//親から
Form2.Owner = this;
Form2.ShowDialog;
こうしてもnullになる。
実行時にthisはForm2になっているみたい。
06236182010/11/02(火) 19:14:22
>>621
ParrentはMDIフォーム用だったきがす
試してみたけどnull
0624デフォルトの名無しさん2010/11/02(火) 19:17:12
>>622
独自にインスタンスを持つようにしてそれ経由でw

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

form2.ShowDialog(this); // thisはform1
06266182010/11/02(火) 19:42:05
>>624
ナイスヒント
Form2のコンストラクタにForm1を渡すことで成功しました。
>>620,625もありがとな
0627デフォルトの名無しさん2010/11/02(火) 19:46:04
これから始めるなら、WPF?C#?
とりあえず、EXELっぽいのを作りたいんだけど
0628デフォルトの名無しさん2010/11/02(火) 19:52:35
>>627
WPFとC#を比較してどうするんだか。
何もわかってないならExcelとか大層な目標は掲げず、
もっと地に足の着いたとこからどうぞ。
0629デフォルトの名無しさん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が正解でした
0630デフォルトの名無しさん2010/11/02(火) 20:02:30
>>627
C++
0631デフォルトの名無しさん2010/11/02(火) 20:15:36
>>628
>>630

答えたくないなら答えなくていいんだけど
ネタぽくされると答える気のあった人にもスルーされちゃんで
暇つぶししたいなら他でやってね
0632デフォルトの名無しさん2010/11/02(火) 20:32:22
割と的を得ていると思うがね
もしかしてWindowsフォームアプリケーションとWPFを比べてる?
0633デフォルトの名無しさん2010/11/02(火) 20:33:38
>>631
これは回答する気をなくさせるな。
0634デフォルトの名無しさん2010/11/02(火) 20:35:16
Formsはマジで死ねる。
単純な物ならFormsだけど、少しでも複雑になろう物なら一気にWPFが優位になるよな。
あとは軽くなってくれれば文句無いんだが
0635デフォルトの名無しさん2010/11/02(火) 20:50:20
>>634
どのように複雑?
0636デフォルトの名無しさん2010/11/02(火) 20:51:13
>>632
2択なのにその他を選ぶなんて試験だと0点だよ

>>633
元々する気がない奴ほどそういうことをいう
0637デフォルトの名無しさん2010/11/02(火) 20:54:00
WPFとC#の2択って意味がわからんから、何か他の物に例えてくれ
0638デフォルトの名無しさん2010/11/02(火) 20:56:39
>>636
なんで煽ってんの
会社か学校で嫌なことでもあった?
0639デフォルトの名無しさん2010/11/02(火) 20:59:00
WPFかWinFormsならわかるけどな
ちょっと調べてから来たほうがいいのでは
0640デフォルトの名無しさん2010/11/02(火) 21:00:10
もうちょっと勉強してからきたほうがよかったんじゃないかな
0641デフォルトの名無しさん2010/11/02(火) 21:00:16
>>636
よく分かったなw
質問で返して悪いけど、C#じゃなくてWPFからはじめるとしたら、
C#の代わりは何使うんだ?
0642デフォルトの名無しさん2010/11/02(火) 21:02:19
FlashアニメーションみたいなのをLooseXAMLで作るんだよきっと
0643デフォルトの名無しさん2010/11/02(火) 21:02:55
VBじゃね?
0644デフォルトの名無しさん2010/11/02(火) 21:04:11
ヒント WPFは言語じゃありません
0645デフォルトの名無しさん2010/11/02(火) 21:04:41
ルーティングイベントが無いFormsは不便だろ
0646デフォルトの名無しさん2010/11/02(火) 21:06:37
small basicマジおすすめ^^
http://smallbasic.com/
0647デフォルトの名無しさん2010/11/02(火) 21:08:02
今回はこちら側に不備があったようなので改めて質問させて頂きます

簡単なファイラーを作ろうと思うのですが
これから始めるとしたらWPFとWinFormsのどちらが良いですか?
0648デフォルトの名無しさん2010/11/02(火) 21:08:59
C#で使える最も正確なタイマーってどれ?
0649デフォルトの名無しさん2010/11/02(火) 21:10:10
>>647
どっちでもいいよ
0650デフォルトの名無しさん2010/11/02(火) 21:11:43
>>649
0点
0651デフォルトの名無しさん2010/11/02(火) 21:12:24
クソワラタw
0652デフォルトの名無しさん2010/11/02(火) 21:12:42
>>627の人気に嫉妬
0653デフォルトの名無しさん2010/11/02(火) 21:17:40
>>648
System.Threading.TimerかSystem.Timers.Timer
後者は前者のラッパーなので精度は全く同じ
0654デフォルトの名無しさん2010/11/02(火) 21:24:04
WPFは少し勉強してみましたが、概念の理解で詰まる
データバインド、テンプレート・・・もうこんなややこしいことするなら
winformsでいいやってなるんだけど
どうしてみなさんはWPFやろうと思ったのか
そこら辺の動機を教えてほしい
0655デフォルトの名無しさん2010/11/02(火) 21:26:19
便利だから
0656デフォルトの名無しさん2010/11/02(火) 21:27:16
理解できる人にはWPFの方が簡単だから
0657デフォルトの名無しさん2010/11/02(火) 21:27:47
とりあえずwinformでなんか作ってみれ
ある程度規模が大きくなるとデータバインド出来ればなぁとか思うようになるから
0658デフォルトの名無しさん2010/11/02(火) 21:27:51
例えばどういうときに?
ファイラーを作る時もWinformsより楽なの?
0659デフォルトの名無しさん2010/11/02(火) 21:27:52
動機:そこにWPFがあったから^^
0660デフォルトの名無しさん2010/11/02(火) 21:30:37
>>657
いくつか作ったけど、WinFormですら
データバインドがよくわからなくて使ってないんだよ

これって、データソースを弄れば勝手にGUIも変更されるってことなんでしょ?
例えばデータグリッドにaddでデータ追加するのと
データバインド使うのと何がどう違うのかよくわからない

データバインドでぐぐっても、確かに楽だっと思えるような例もないし
0661デフォルトの名無しさん2010/11/02(火) 21:56:43
addでデータ追加しなくていいってこったよ
馬鹿かおめぇ
06626182010/11/02(火) 22:00:05
>>629
それで出来なかったから悩んでた
0663デフォルトの名無しさん2010/11/02(火) 22:08:58
UIの管理とデータの管理を完全に分離できる
WinformsではUIとデータを結びつけるプログラムは全部自分で書かなきゃいけないけど、WPFなら不要
追加だけじゃなくて、データに対する更新や変更、データごとの表示の切り替えなんかも自動
0664デフォルトの名無しさん2010/11/02(火) 22:14:16
>>654
フレームワークの機能ベースで見るから概念多くて詰まるのよ。
GUI アプリケーションに求められてる要件ベースで考えたらあれくらいないとやってらんない。
0665デフォルトの名無しさん2010/11/02(火) 22:15:12
WPFは直接textBox3.Text = …のようなコードを書かなくて済むだけだよ。
MVVMなんかM-VM間の結び付けコード書きまくり
0666デフォルトの名無しさん2010/11/02(火) 22:45:52
>>663
それちょっと違うんじゃないですか?
結びつけるコードはWPFでも必要だし、
それが一番ややこしくて詰まるんだけど

winformsならADDだけ書けばいいのに、データバインドのためにnotifyなんちゃらとか
いろいろ書かないといけないし、まあ、一回書いてしまえばもう書かなくていいのと
毎回Addや.Text=をしないといけない差と考えれば楽っぽい気もするけど・・・
あと残念ながらxpなんですよね、スペックはcpuE8400で数年前のモデル
0667デフォルトの名無しさん2010/11/02(火) 22:48:24
メリットを感じないなら、データバインドやらWPFやら使わなきゃいいだけ。
0668デフォルトの名無しさん2010/11/02(火) 22:52:03
ちょっとしたユーティリティ作るのにWPFなんていらないよね?
個人で使うのにそんなグラフィカルにする気もないし
winformsでやります、てかもうやってて半分ぐらい完成してるw
0669デフォルトの名無しさん2010/11/02(火) 23:02:04
逆に二度とWinFormsに戻りたくねえけどな
0670デフォルトの名無しさん2010/11/02(火) 23:12:50
>>669
小規模でも?
例えば画像を仕分けするような単純なお仕事をするソフトでも?
0671デフォルトの名無しさん2010/11/02(火) 23:17:45
WPFは難しいと思い込んでるだけだろ
手軽にWinFormsと同じように使うこともできるよ
0672デフォルトの名無しさん2010/11/02(火) 23:17:54
仕分けが何かわからんけど、画像の一覧なんてWPFの超得意分野じゃないか?
0673デフォルトの名無しさん2010/11/02(火) 23:29:40
GUI上にボタンが二つあって
画像じゃないファイルをボタンを押して仕分ける場合でも
WPFのほうが早くて簡単?
ちがうでしょ?
0674デフォルトの名無しさん2010/11/02(火) 23:33:27
なんか奥手の奴が告白しない理由をああだこうだ並べてるみたい。
0675デフォルトの名無しさん2010/11/02(火) 23:33:31
うぜー
0676デフォルトの名無しさん2010/11/02(火) 23:35:35
>>670
コレクションに突っ込んでテンプレートをちょっと書いたら画像の一覧表示ができるようになって
コンバータ作ってスライダーをポトペタしてバインディングするだけで、一覧表示した画像の拡大縮小も実装できちゃう。

WPFの方が早くて簡単。

>>673
WPFでもWinFormsでも作業量変わらんだろ…。どこが違うのさ?
0677デフォルトの名無しさん2010/11/02(火) 23:35:41
凝ったUIやる場合はWPF
そうじゃければWinForm
それだけ
0678デフォルトの名無しさん2010/11/02(火) 23:36:52
Click+=ナンチャラ とか書けないと思ってる?
0679デフォルトの名無しさん2010/11/02(火) 23:42:06
例えばさ、ファイル一覧をリストに表示したいってときでも
どうしていいかさっぱりわからない

ドボンネットみたいなのでWPF対応しているようなサイトないのかな
0680デフォルトの名無しさん2010/11/02(火) 23:43:27
>>679
その程度ならあるじゃん
0681デフォルトの名無しさん2010/11/02(火) 23:45:06
>>676
えーと、デザイナの出来とかw
0682デフォルトの名無しさん2010/11/02(火) 23:45:57
>>677
WPF使った事ないだろ。
凝ったUIやらなくてもバインディングとテンプレートは素晴らしく強力。
WPFの真価はここにある。
0683デフォルトの名無しさん2010/11/02(火) 23:48:00
VS2010だったら十分デザイナ使えるぞ
0684デフォルトの名無しさん2010/11/02(火) 23:48:46
>>682
あるよ
でもwinformのころとは明らかに書き方とか変わってるので
覚えてなれるまでが大変
0685デフォルトの名無しさん2010/11/02(火) 23:50:56
俺は、タスクトレイアプリ以外は、WPFでやるけどさ。
どうしても、Formつかうことあると、負けた!!って思う><
0686デフォルトの名無しさん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));

こんな感じかな?
0687デフォルトの名無しさん2010/11/03(水) 00:03:59
>>686
それそれ、そのラムダ式?
おれラムダ式も知らない初心者だよ?
そこで詰まるんだよ
0688デフォルトの名無しさん2010/11/03(水) 00:06:05
そんなもんWPF全く関係ないしそういう風に書かないといけないわけでもない
0689デフォルトの名無しさん2010/11/03(水) 00:06:32
>>685
タスクトレイアプリはWPF NotifyIcon使って作ってる。
http://www.hardcodet.net/projects/wpf-notifyicon
0690デフォルトの名無しさん2010/11/03(水) 00:07:22
C#初心者じゃねーか!スレ違い!

あれ
0691デフォルトの名無しさん2010/11/03(水) 00:10:48
ITやMSなどのWPFのTIPS一通り読んでさ
書いてあることをやることはできるけど
ちょっと違うことやりたいと思ったらまったくわからない
あ、これ基礎の基礎が書かれているわけじゃないんだって気づいて挫折するんだよ

例えば>>686の場合
ファイルパスだけじゃなくて、更新日時やファイルサイズも読み込むとしたら?
listviewじゃなくてdatagridviewだった場合は?ってなると
一体どのようにバインディングすればいいかさっぱり
0692デフォルトの名無しさん2010/11/03(水) 00:13:25
拡張子で文字色を替える場合XAML?
それともXAMLになくてC#で書くの?
とか、ドボンでごり押ししてアプリ作ってきた俺には
TIPSサイトが少ないことが致命的
MSのあの説明じゃ難しすぎてわけわかめー
0693デフォルトの名無しさん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読んで理解できたら凄いと思うわ
0694デフォルトの名無しさん2010/11/03(水) 00:17:40
>>693
まあ理解に時間かかるかもしれないけど
それほど難しい物ではないような気がするけどな・・・
0695デフォルトの名無しさん2010/11/03(水) 00:30:46
>>691
更新日時・ファイルサイズのプロパティを公開する適当なクラス作ってバインディング。
TIPS一通り読んでもできないなら、WPFやWinFormsの前にC#でのプログラミングに関する知識が決定的に足りてない。

>>690
0696デフォルトの名無しさん2010/11/03(水) 00:35:45
c#って検索するとき#が消えるんだけど、他に候補はなかったのかな
0697デフォルトの名無しさん2010/11/03(水) 00:38:53
何の検索?
消える方がおかしい
0698デフォルトの名無しさん2010/11/03(水) 00:40:08
>>693
最近のもそこの両方とも見ましたけど、さっき言ったように書かれていること以外の
コントロールを使ったりなんかするとどこにバインディングすればいいかがわからないんです
INotifyPropertyChangedとかも、え?これってデリゲート理解してないと無理なんじゃないの?って詰まる
ITのコンバータによるデータ変換のところも
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
これでできますとかいわれても、一体この引数はどこから来たの?なぜこれだといけるの?
そしてこのソースは一体どこに記述するの?
そんなのわかってて当たり前だよって人が書いたものなのでそういう説明が抜けててわからない
他の数多くあるTIPSサイトも同じようにこうすればできるとは書いているが
なぜそれだとできるのか、なぜそれでできるとわかったのかなどが書かれてない
それさえわかれば、応用できるのにって思う

>入門でMSDN読んで理解できたら凄いと思うわ
やっぱりそうですか、こんなのでみんな理解できているのかと思って自暴自棄になった。
0699デフォルトの名無しさん2010/11/03(水) 00:46:50
>>695
それぼくからすると説明になってませんから・・・
クラス作ってバインディング
いやいや、そのバインディングの仕方がわからないんです
stringやintのバインディングは出来ても
ファイル情報の自作データクラスを一体どうしたら、データグリッドの
各セルに配置できるかさっぱりわからない

winformsだとどぼん見ていれば小規模なユーティリティなら作れますが
何の知識が足りないんだろ
0700デフォルトの名無しさん2010/11/03(水) 00:49:49
>>686
これもそうだけど、datacontextにfileinfoのインスタンスを渡しているのかな?
なぜ、ListView ItemsSourceにfileinfoのインスタンスを渡せるとわかたのかがわからない
それをするとなぜlistviewに表示されるかもわからない
0701デフォルトの名無しさん2010/11/03(水) 00:53:15
よくたとえでテレビの内部構造を理解していなくてもチャンネルを変えることができる
みたいな例えがありますが、

WPFも、一見内部構造知らなくても操作できますよって感じに見せておいて
内部構造知らないとできないだろってパターンなんだよね
0702デフォルトの名無しさん2010/11/03(水) 00:53:15
ぜんぜんよんでないな
0703デフォルトの名無しさん2010/11/03(水) 01:13:15
>>699
WPF関係なくデリゲートとラムダ使えないとC#プログラマーとしてかなり損すると思うよ
Linqの勉強でもしたら?
Convertの引数の意味が分からんのならインターフェイスも復習したほうがいい
0704デフォルトの名無しさん2010/11/03(水) 01:30:32
>>703
使えないというか使う必要がなかったという感じです
そういう知識が最低限ないとWPFは無理ってことですね

>>702
読みましたが、理解はしていないと思います。
あまりにも難しすぎる。
0705デフォルトの名無しさん2010/11/03(水) 01:36:31
>>704
使う必要はWinFormsであろうともあるというか、
少し頑張って覚えようとするだけでどれだけ楽になるか。
WinFormsがどうだのWPFがどうだのというよりも、学習する気があまりにもなさすぎる。
0706デフォルトの名無しさん2010/11/03(水) 01:37:08
WPFはWinformsのように直感的には作れないし
Webの情報もの方は圧倒的に不足してる
Winformsで満足だと思うなら無理にWPFに移行する必要はないよ

別に馬鹿にしてるわけじゃないけど、今回の話は
四則演算しかできない小学生が微分積分ってなにがすごいの役に立つの?
って聞いてる状況ににてると思う

0707デフォルトの名無しさん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に表示する。
厳密に言うと違うとこもあるけど、イメージとしてはこんな感じ。
0708デフォルトの名無しさん2010/11/03(水) 01:42:59
これはWPFの話じゃないなw
0709デフォルトの名無しさん2010/11/03(水) 02:00:55
Linqって先につながるものなの?
他の言語でその考えを応用できたりする?
0710デフォルトの名無しさん2010/11/03(水) 02:04:21
>>709
Linq to Objectsの高階関数でのリスト処理はいまどきの言語なら基本中の基本。
0711デフォルトの名無しさん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>>の場合は?一体どんなものまで取り出せるの?
制限みたいなのはどこを見ればわかるの?

単純にプロパティさえあればなんでもありなの?
だとしたら、プロパティさえあれば何でもいいってどこを見てわかったの?

こういう疑問が湧いてきて、ちょっと違うことしようとすると何をどうしていいかわからない
0712デフォルトの名無しさん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とかにもできる
07137122010/11/03(水) 02:24:07
ついでに俺はこういう知識はエッセンシャルWPFって本を読んで理解した。
この本読めばWPFのイロハは理解できると思う。
0714デフォルトの名無しさん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に戻りたくないと言う。
0715デフォルトの名無しさん2010/11/03(水) 02:37:31
>>711
なんで手で動かしてみようとしないの?
DirectoryInfoでだろうなのかという疑問が浮かんだなら
まずはFileInfoでやってみて、そして次にDirectoryInfoで試せばいいじゃない。
100回、ネットで記事見て本を読んで質問をしてを繰り返すよりも
1回、自分の手で動かして、VisualStudioのデバッガで値を見て、
というのを行ったほうがずっと身に付くと思うんだけど。

理屈は後だっていいじゃない。
手で動かして結果を見てから、理屈を見たほうが納得行くと思うよ?
0716デフォルトの名無しさん2010/11/03(水) 02:47:27
ちょっと便乗して質問
<ListBox.ItemSource>
<Binding Path = ".">
<Binding.Converter>
〜

っていうサンプルがあったんだけどPath = "."ってどういう意味?
0717デフォルトの名無しさん2010/11/03(水) 02:49:07
ここでウダウダ書いてる暇で十分に獲得できただろうにな
0718デフォルトの名無しさん2010/11/03(水) 02:55:03
>>716
http://pro.art55.jp/?eid=871963
0719デフォルトの名無しさん2010/11/03(水) 02:57:30
>>718
ありがと
0720デフォルトの名無しさん2010/11/03(水) 03:13:05
>>712-714
なんとなくWPFのきっかけがつかめた気がします
それにしても、まさか全部の質問に答てくれる人がいるとは正直驚きました
深く感謝いたします

>>715
やっぱり力技で覚えていく方がいいんですかね
0721デフォルトの名無しさん2010/11/03(水) 03:34:05
きっかけなんて「そこにあるから」で十分。
プロジェクト作ってデザイナで、とりあえずメニューだ!と設置して動かしたら
Windowのサイズ変えても左上に居座ってて、Stretchが怪しい!とStretchしたら
ド真ん中に表示されて・・・ 1日目それで終了。
ああMarginか、とか、StackPanelとかあるのかー、とちょっとだけ調べたのが2日目。
そういう積み重ねでしょーが。
全部理解してから何かを始める人なんて居ないよ。
0722デフォルトの名無しさん2010/11/03(水) 04:41:13
すごい、できちゃったよDataGridで
しかも>>686のようにたった一行のコードを書くだけで・・・
確かに慣れたら楽かもしれない
0723デフォルトの名無しさん2010/11/03(水) 05:12:19
クソミソ言われた子が頑張って1つのことを成し遂げた姿に感動した
0724デフォルトの名無しさん2010/11/03(水) 05:23:55
>>686のDataTemplateに画像を追加して、項目が選択されたときに画像を変更するみたいなことをやりたいんだけど、どうすればいい?
0725デフォルトの名無しさん2010/11/03(水) 05:26:33
ラムダ式なかったらめんどくさい
昔のC#は匿名メソッドはあったがラムダ式がなかったらしいな
みんなめんどくさいものやってたんだな
07267242010/11/03(水) 06:15:40
自己解決しました
http://stackoverflow.com/questions/248545/wpf-trigger-for-isselected-in-a-datatemplate-for-listbox-items
0727デフォルトの名無しさん2010/11/03(水) 06:17:52
>>724
ttp://blogs.wankuma.com/kazuki/archive/2009/01/12/166166.aspx
07287242010/11/03(水) 06:36:52
>>727
すまん言葉が足りなかった。
画像を変更したいのはListBoxの項目自体の画像です。
ディレクトリを表す項目にフォルダみたいなアイコンをつけて、
選択したらフォルダが開いてるアイコンに変えるみたいなことをしたかった。
DataTemplateの親のプロパティにトリガを設定する方法がわからなかったんだけど、
調べてたら
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True">
ってやればいいことがわかりました。
07297222010/11/03(水) 07:08:27
DATAGRIDだけど
・あれから1時間かけてfileinfoのLastWriteTimeの
日/月/年
と逆になっているのを普通にするための方法を調べ解決
それから一時間かけて
・fileinfo.lengthに3桁づつコンマをつける方法を調べ解決
・そのファイルサイズを右揃えにする方法を調べ中
なぜかカラムヘッダのプロパティウィンドウのテキストの項目に
右揃えできそうなアイコンがあるのにクリックしても無反応
バイトで表示じゃなくてMBで表示するために/1024で割りたいが
どこですればいいかわからない
fileinfoを直接扱うんじゃなくて、一旦自前のクラスに入れるほうがいいのかな・・・
・ヘッダをクリックしてソートすると、スクロールバーが勝手に動く(セルの値に合わせているのか?)のを止める方法を調べ中
どうしてこんないらない機能をつけるかなー
0730デフォルトの名無しさん2010/11/03(水) 07:17:31
ここは日記帳じゃないよ
質問じゃないならブログかツイッターに書けば?
0731デフォルトの名無しさん2010/11/03(水) 08:17:53
FXの醍醐味ってXBAPのはずだよね
XBAP自体そんなに普及しているようには思えないんだけどそんなにWPFって使われているのだろうか?
0732デフォルトの名無しさん2010/11/03(水) 08:28:49
> FXの醍醐味ってXBAPのはずだよね
そんなことないしxbapはもう終息
0733デフォルトの名無しさん2010/11/03(水) 09:52:16
>>725
ReactiveExtensionいいよ。結構便利
0734デフォルトの名無しさん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>
0735デフォルトの名無しさん2010/11/03(水) 11:27:53
C#でアダプタパターンをやる際に、
D言語のopDotやGo言語の埋込みのように
.演算子の右側で指定された名前を、
クラス内で明示的に定義されていなければ
クラス内の特定のメンバ構造体に転送するような方法はあるのでしょうか。
0736デフォルトの名無しさん2010/11/03(水) 11:32:13
IDEにプロパティウインドウってありますけど、あれと同じものを
実装するコントロールってあるんでしょうか?
ちなみにVS2008を使用しています。
0737デフォルトの名無しさん2010/11/03(水) 11:33:10
PropertyGrid
0738デフォルトの名無しさん2010/11/03(水) 11:33:13
ないね。

DynamicObject 使って動的にやるか、
コード生成系の手段でプロキシクラス生成するか。

Go の埋め込みみたいなの、今から C# に追加するとものすごい混乱しそうだし、今後追加されることもないと思う。
あれは、structural subtyping 持ってないと大して有用でもないし、
C# みたいな nominational subtyping(明示的にインターフェイス継承しないと多態動作できないもの)には不向き。
0739デフォルトの名無しさん2010/11/03(水) 12:01:32
>>738
ありがとうございました。
確かにインターフェース継承してないとあんまり継承の意味ないですね。
0740デフォルトの名無しさん2010/11/03(水) 15:54:29
richtextboxのコンテクストメニューって自分で作らないといけないんですか?
どこかにtextboxと同じメニューのひな形とかありませんか?
07417222010/11/03(水) 16:38:05
>>734
いけました

StaticResourceとして使う方法(インスタンス化?)がわからなくて手間取りました
コンバーターを使うと

102,000k
120k
200,000k

こんな風にソートされるかと思ってたけど
コンバートする前のlong型データでちゃんと計算されるんですね
07427222010/11/04(木) 00:36:13
今日1日かけたけどわからなかった
DataGridのカラムをクリックしてソートしたときや、セルを選択したときに
水平スクロールバーが勝手に動くのだけど動かないようにする方法ないでしょうか?
0743デフォルトの名無しさん2010/11/04(木) 01:07:08
この流れみて俺もWPF始めようと思った
0744デフォルトの名無しさん2010/11/04(木) 01:18:37
俺もWPF暦2週間の入門者。
WPFスレ過疎ってるから来てくれよ (´・ω・`)
0745デフォルトの名無しさん2010/11/04(木) 01:20:36
もうWPFもSLも分ける必要ないんじゃね?
07467222010/11/04(木) 01:45:05
向こうのスレなんか怖いんだけど
0747デフォルトの名無しさん2010/11/04(木) 02:07:42
C#とかVisual Studioのスレ荒らしてたのが
SilverlightとWPFに行ってるんじゃない?

その分こっちが静かになって昨日の話しもやりやすかった。
0748デフォルトの名無しさん2010/11/04(木) 05:50:05
WPFはExpression Blendが無いとキツい場面もあるよ。


また一つMSにお布施だな。
0749デフォルトの名無しさん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文の条件の比較では違っているとでてしまいます。
改行コードあたりの見えない文字があるのかと思って改行コードだけはあたってみたのですが
両方とも改行コード自体関係ないみたいですし・・・どこがおかしいのでしょうか
0750デフォルトの名無しさん2010/11/04(木) 10:55:12
とりあえずハッシュしないで素の文字列でやってみたら?
なんかわかるかもよ
0751デフォルトの名無しさん2010/11/04(木) 11:08:48
>>748
グラフィックツールが欲しくなるようなことができるということ。
外観がWinFormsと同じでよければBlendなくてもVSのデザイナで十分作れるよ。
WinFormsでWPFと同じことやろうとしたら自前描画地獄でそれこそXAML手書きなんかより
はるかに面倒。
0752デフォルトの名無しさん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でなにか用意されていないのでしょうか?よろしくおねがいします。
0753デフォルトの名無しさん2010/11/04(木) 12:05:05
var b = (from i in a.Split(',') select int.Parse(i)).ToArray();
0754デフォルトの名無しさん2010/11/04(木) 12:04:48
Array.ConvertAll
0755デフォルトの名無しさん2010/11/04(木) 12:07:40
なぜC#初心者はArrayListを使いたがるのだろうか
0756デフォルトの名無しさん2010/11/04(木) 12:10:38
別に使ったっていいじゃん。
あと、元ので何か困るのかいな。
0757デフォルトの名無しさん2010/11/04(木) 12:13:05
ArrayListって配列にするときにJavaみたいに(int[])row.ToArray(typeof(int))と書くんだっけ
懐かしいな
0758デフォルトの名無しさん2010/11/04(木) 12:13:20
>>752
Array.ConvertAll(b,
new Converter<string, int>(s=>return int.Parse(s));

IDEで検証してないから動作保証外。
0759デフォルトの名無しさん2010/11/04(木) 12:16:46
ラムダ式ならnew Converter<string, int>はいらんでしょ
省略が嫌なんだったらConvertAll<string, int>も書くべき
もしくはArray.ConvertAll<string, int>(b, int.Parse);でもいいはず
0760デフォルトの名無しさん2010/11/04(木) 12:16:50
>>753は拡張メソッドで書いたほうが見やすいかな?
var b = a.Split(',').Select(x => int.Parse(x));
int[]で欲しいなら最後にToArray()
回すだけならIEnumerable<int>のまま
0761デフォルトの名無しさん2010/11/04(木) 12:17:44
ラムダ式の偉大さが如実に現れる問題だな
07627522010/11/04(木) 12:20:47
ほ、、、ほう・・・@w@ラムダ式、、まだそこには手をつけてないですorz

もしかしてラムダ式にはバルスとかいう全てDeleteしてしまうメソッドも実装しているのかな・・orz

あぁ、目がぁ、目が見えない・・・・
0763デフォルトの名無しさん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>)を使った方がいろいろ便利
0764デフォルトの名無しさん2010/11/04(木) 12:24:47
ラムダ式なんか後でいいからその前にジェネリックを勉強しろ
基本的に>>752でいいけど今時ArrayListは使わん
0765デフォルトの名無しさん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];

さあ、これをみてジェネリックの素晴らしさを体感するのです
0766デフォルトの名無しさん2010/11/04(木) 12:50:08
おおおおおお!!!!!!
0767デフォルトの名無しさん2010/11/04(木) 14:48:08
画面キャプチャするのに
CopyFromScreenより軽い方法ってあります?
1600x900くらいのサイズを連続でキャプチャしてると
10fpsでも間に合わなかったりするんですけど
0768デフォルトの名無しさん2010/11/04(木) 14:51:45
そりゃ無理だろ
俺もFlashゲームをやる際の補助ツールとして
画面の部分キャプチャをしやすいツール書いたけど
C#だと重すぎて部分的にC++で書いたもんな
07697672010/11/04(木) 15:00:30
>>768
返信ありがとうございます。
やっぱりC#.NETだけで大画面を高速にキャプチャは無理ですか・・・。
C/C++とかDirectX覚える機会があったらまた頑張ってみます。
0770デフォルトの名無しさん2010/11/04(木) 15:22:18
CopyFromScreen自体は内部的にBitBlt使ってるから高速だと思う。
多分キャプチャしたビットマップをファイルに出力するのに時間くってるんじゃね?
07717672010/11/04(木) 15:58:19
>>770
�@画面キャプチャ
�AキャプチャしたビットマップをListに出力
�B別スレッド1でMemoryStreamのリストにJPEGに変換保存(Encoderクラスは使用してません)、元のビットマップは破棄
�C別スレッド2で1秒間隔でMemoryStreamのリストを見に行って、JPEGがあったら保存
(�B�Cをしないとメモリが足りなくなってしまうので)

っていうのをやってたんで、�A�B�Cを切ってキャプチャしてみたところ
キャプチャしてない状態で100fps弱
キャプチャしている状態で20fps弱まで出ました

単純計算でキャプチャに40ms、出力に50ms秒強かかってる事になりますね・・・。

画面の一部が変化し次第キャプチャっていう事をやっているんで
その変化を監視するのに10msほどかかってます

C#始めたばかりなので軽い処理にするためには、っていうノウハウが無いので
実際このアルゴリズムが一番速いのかどうかも分かってない状態です・・・
0772デフォルトの名無しさん2010/11/04(木) 17:12:40
NT 6.xになってからGDIの存在意義が無くなったことを悲しく思う
0773デフォルトの名無しさん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なら変化した

とかやれば速くなるんでない?
後は、監視する領域を極力小さくするか
07747732010/11/04(木) 17:50:34
32bitRGB、もしくは画面サイズが4の倍数とかであるなら、
byte[]じゃなくてint[]とかlong[]にコピーして差分取った方が速いかも。
あるいは、unsafeを使うか、あきらめてC/C++を使うか。
0775デフォルトの名無しさん2010/11/04(木) 17:52:14
>>773
描画系のAPIをフックした方が早いんじゃないの?
0776デフォルトの名無しさん2010/11/04(木) 18:12:36
>>772
それだけCPUの速度が上がったって事でしょ
PCI-Eになったし

大昔あったHDDのPIO転送みたいな考え方
本当はマルチタスクOSでは禁じ手なんだけどね
0777デフォルトの名無しさん2010/11/04(木) 20:41:07
どうでもいいけどそれってバスマスタかDMAの間違いじゃないのか。
PIOて
0778デフォルトの名無しさん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;
}

高速化が目的なら細かい変化はある程度無視するのもありかもね
0779デフォルトの名無しさん2010/11/04(木) 22:52:31
>>777
バスマスタとDMAはマルチタスクOSでは禁じ手とはならないだろ
0780デフォルトの名無しさん2010/11/05(金) 04:30:38
ボタンなどのコントロールを配置したパネルをいくつ配置したいのですが、
その配置数の数だけ_Click等を用意するのは無駄かと思うのですが、
プログラムからパネルをコピーして利用することなどはできませんか?
0781デフォルトの名無しさん2010/11/05(金) 04:45:59
「ボタンなどのコントロールを配置したパネル」をユーザーコントロールにして
それをいくつか作るのはどうでしょうか。

同じようなボタンが多いならイベントハンドラは同じ物を指定して
senderのNameとかで振り分けなんてのも。
0782デフォルトの名無しさん2010/11/05(金) 04:51:37
投稿する前に文章を読み返すことをおすすめする。

つまり複数のコントロールを1個にまとめたパーツを何個か配置したいんだけど、
コピーして貼り付けるとそれぞれにイベントやらなんやらを割り当てなくちゃいけなくて面倒だから
なんかうまい方法教えろってことでおk?
もしそうならユーザーコントロールってのを使いなされ。
0783デフォルトの名無しさん2010/11/05(金) 04:54:25
>senderのNameとかで振り分けなんてのも
その手があったか
07847672010/11/05(金) 05:05:16
>>773
>>778
返事が遅くなってしまいました。サンプルコードありがとうございます。
やっぱりみなさん凄いですね・・・。この短時間でビットマップの差異を導き出すアルゴリズム組めるなんて
監視にかかる時間をもっと縮められれば、もう少し高いfpsでキャプチャし続けられるかもしれないので
そっちのアルゴリズム責めてみます。
ありがとうございます。
0785デフォルトの名無しさん2010/11/05(金) 05:30:13
>>784
ためしにちょっとつくってみたんだがなかなか速度上がらんかったわ
まあそれでも少しは効果があったものをあげとくと
別スレッド2をタイマー動作じゃなくて、AutoResetEvent使ってリストに追加したらすぐに処理できるようにする
キャプチャー用の画像やデータを保持するbyte[]なんかは予め用意しておいて作業中に大規模なメモリの割当が発生しないようにする
こんなところ

07867672010/11/05(金) 06:34:23
>>785
貴重な情報ありがとうございます!
たまーに一気にメモリが食われる時があったのはいちいち頻繁に呼び出す関数内にローカルで
byte[]とかを定義してたからかもしれません。見落としていました。
ありがとうございます!
0787デフォルトの名無しさん2010/11/05(金) 07:27:24
画像の差分チェックなんてそれこそGPGPUの新しい使い方として
やろうとしてることなのにw
そんなのをMPUでやるなんて無謀だろw
0788デフォルトの名無しさん2010/11/05(金) 14:48:28
お前GPGPUって言いたいだけちゃうんかw
0789デフォルトの名無しさん2010/11/05(金) 16:53:36
それなりに動いてれば十分だろ
たかが画面のキャプチャのために激しく環境依存するのか
0790デフォルトの名無しさん2010/11/05(金) 17:30:06
”GPGPUの新しい使い方なのにMPUでやるなんて無謀”
この論理は破綻している
0791デフォルトの名無しさん2010/11/05(金) 21:23:23
MDBを参照するのはOLE DBで可能なのですが、MDBを作成するには
やはりCOMとしてADOXなどを使わなければ難しいのでしょうか?
0792デフォルトの名無しさん2010/11/05(金) 21:29:22
空のDBをリソースに入れておいてコピーとか
0793デフォルトの名無しさん2010/11/05(金) 22:29:49
>>781,782
すみません ユーザコントロールなど調べてみたのですが
どのように行えばいいのかがわかりませんでした。

解説のページなどはないでしょうか?
0794デフォルトの名無しさん2010/11/05(金) 22:32:59
>>793
ここおすすめ
http://cs2ch.blog123.fc2.com/blog-entry-1.html

どの辺のページか忘れたけどやってる
ただしユーザーコントロールではやってないけど
0795デフォルトの名無しさん2010/11/05(金) 22:46:58
DAOで。
0796デフォルトの名無しさん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とかはちゃんとソースが取れます
0797デフォルトの名無しさん2010/11/06(土) 00:28:06
サイトの文字コードとか確認してる?
0798デフォルトの名無しさん2010/11/06(土) 00:32:01
BOMが変とか?
0799デフォルトの名無しさん2010/11/06(土) 00:33:08
>>797
すいません書き忘れました
IEの表示で見てみるとUnicode(UTF-8)でした
UnicodeでGetStringも試しましたが駄目でした
0800デフォルトの名無しさん2010/11/06(土) 00:38:40
IEと同じオプションあわせたら?
というか、DownloadDataだっけ?
stringとかなかったか?

余談だけどwcはレスポンスコード吐かないから今ひとつ使いにくい…
0801デフォルトの名無しさん2010/11/06(土) 00:42:47
(同人誌) [毒ペッパー(しいなかずき)] AIDO 〜性処理人形〜
0802デフォルトの名無しさん2010/11/06(土) 01:00:42
webBrowser1.Navigate("http://g.e-hentai.org/g/286017/330e7c37ff/");
string s = webBrowser1.DocumentText;
0803デフォルトの名無しさん2010/11/06(土) 01:36:10
>>802
ぇー
0804デフォルトの名無しさん2010/11/06(土) 03:13:38
デリゲートがわかりにくいのは昔はこうだったがと説明されているところ
これが最近デリゲートを勉強し出した人には非常にわかりにくい
昔のデリゲートを知っている人なら簡単になったなってことだけど
今からの人は昔のデリゲートのやり方も覚えて今のやり方も覚えなきゃ
わからないような説明がされている

よく、CやC++ではこうだったがという説明もあるがこれも
初心者にとったら混乱するだけ
0805デフォルトの名無しさん2010/11/06(土) 03:20:03
例えば、最近の電話の説明をする場合

昔はダイヤル式だったけど、今はボタン式になっているんだよ
便利でしょ?

といわれても、電話がそもそも何をするものなのかわからない人にとっては
まったく説明になってない

他の場所にいる人と通話するには、電話局に信号を送るために
ボタンを押すだけでいいよ

と説明してくれた方がわかりやすい
0806デフォルトの名無しさん2010/11/06(土) 03:23:07
逆に電話が何者かわかっている人に

他の場所にいる人と通話するには、電話局に信号を送るために
ボタンを押すだけでいいよ

と説明してもちゃんと伝わる

昔話を例えに出して説明するのはやめてほしい
0807デフォルトの名無しさん2010/11/06(土) 03:24:17
わからないぞおれには
0808デフォルトの名無しさん2010/11/06(土) 03:25:26
デリケートなゾーンにはデリゲート
0809デフォルトの名無しさん2010/11/06(土) 03:29:44
またこいつか
0810デフォルトの名無しさん2010/11/06(土) 03:36:27
バリケードなゾーンには?
0811デフォルトの名無しさん2010/11/06(土) 03:38:48
育毛剤に脱毛剤
0812デフォルトの名無しさん2010/11/06(土) 03:57:05
>>804-806
お前の例えが的外れで分かりにくい。混乱するだけ。
0813デフォルトの名無しさん2010/11/06(土) 04:01:59
日本語がわからないとは
0814デフォルトの名無しさん2010/11/06(土) 04:03:40
日本語のデリゲートの説明読んで理解できなかった馬鹿が何か言いたいようです。
0815デフォルトの名無しさん2010/11/06(土) 04:23:06
煽りたくて仕方が無いようだな
俺みたいな奴にムキになるなんてお前もその程度なんだな
0816デフォルトの名無しさん2010/11/06(土) 04:35:34
このスレ、ID出してくれよ
0817デフォルトの名無しさん2010/11/06(土) 04:40:53
Linqの質問です。
whereの条件であるObjectがnullだったら含めたくなく、
null意外だったらObjectをキャストしてメンバーの値で比較したいのですがやり方がわかりません・・・。
whereで先にobject != nullとしても、後の条件のキャストも評価されてNullReferenceExceptionが投げられてしまいます。
0818デフォルトの名無しさん2010/11/06(土) 04:44:11
sequence.Where(obj => obj != null).Cast<TResult>()
0819デフォルトの名無しさん2010/11/06(土) 05:07:44
>>815
>>815
0820デフォルトの名無しさん2010/11/06(土) 05:12:05
>>803
>デリゲートがわかりにくいのは昔はこうだったがと説明されているところ
たぶん関数ポインタのことだろうな。
関数ポインタがわかる人にとってはそういう説明でデリゲートが何か一発で理解できるからしかたない。
その喩え話で言うと、携帯電話を初めて見る人に、これは電話ですって説明してる感じ。
そもそも関数ポインタってそんなに分かりにくい概念じゃないし、
デリゲートの説明だって関数ポインタがでてくるのは最初の概要だけで
そのあとは知らなくても理解出来るように書いてあるだろ。
0821デフォルトの名無しさん2010/11/06(土) 05:37:31
知らない単語が出た瞬間に思考停止する類の人間なんだろ。
0822デフォルトの名無しさん2010/11/06(土) 05:56:52
それともあれか?
2.0から代入するときnewが要らなくなったり、匿名メソッドが追加されたり、
3.0からラムダ式が追加されたことに対して?
確かにそれは紛らわしいけど、C#のソースコードを読むためには全部理解する必要があるしなぁ
0823デフォルトの名無しさん2010/11/06(土) 06:01:31
>>817
>whereで先にobject != nullとしても、後の条件のキャストも評価されてNullReferenceExceptionが投げられてしまいます。
そんなことってありえるの?
0824デフォルトの名無しさん2010/11/06(土) 07:06:01
>>818 >>823
ごめんなさい。
null判定の書き方を間違ってました。
先の条件が成立しなければ後のキャストは評価されませんでした。
0825デフォルトの名無しさん2010/11/06(土) 07:09:18
>>822
全部理解って、2.0以前のデリゲートの表記から全部覚えていかないと
いきなりラムダ式のデリゲート表記は理解できないってこと?

C++でソフト作るにはアセンブラ理解してないと無理みたいな感じ?
0826デフォルトの名無しさん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;
ってかけるようになった

まとめるとこれだけ

ラムダ式があれば匿名メソッドは必要ないかもしれないが
どの書き方もいまだに有効で、サンプルコードを読む際には覚えておく必要がある
0827デフォルトの名無しさん2010/11/06(土) 07:59:24
あほなの?
0828デフォルトの名無しさん2010/11/06(土) 08:00:06
ああ、あほは>>825な。
0829デフォルトの名無しさん2010/11/06(土) 08:00:16
>>825
前の時も思ったけどなんもわかってないくせに適当なこと言うのやめろよ
自分じゃまともなこと書いてるつもりかもしれないけど的外れ過ぎてまじ笑えない
0830デフォルトの名無しさん2010/11/06(土) 08:37:52
label1からlabel10までの10個のラベルがあるのですが、
このラベルの値(label.Text)を配列に代入したいと考えています。

配列に代入するにはどのようなコードを書けばいいでしょうか?
0831デフォルトの名無しさん2010/11/06(土) 08:39:14
>>796
System.Net.WebClient wc = new System.Net.WebClient();
wc.Encoding = Encoding.UTF8;
0832デフォルトの名無しさん2010/11/06(土) 08:39:26
label1〜10はデザイナーで作るの?
0833デフォルトの名無しさん2010/11/06(土) 08:41:07
>>832
はい。デザイナーで作成しております。
0834デフォルトの名無しさん2010/11/06(土) 08:43:57
>>833
まあこの辺を参考に
http://dobon.net/vb/dotnet/control/buttonarray.html
0835デフォルトの名無しさん2010/11/06(土) 08:49:07
string[] texts = new string[10];
texts[0] = label1.text;
texts[1] = label2.text;
texts[2] = label3.text;
...
こういう事じゃないの?
0836デフォルトの名無しさん2010/11/06(土) 08:51:29
まぁ長生きしろな
0837デフォルトの名無しさん2010/11/06(土) 08:53:11
ラベル作成時にnameに固有冠を付けておいてコントロールからnameを引っ張ってきて
マッチ判別で配列に放り込めばできるだろうけど、そういう書き方自体がどうなのかと思う。
0838デフォルトの名無しさん2010/11/06(土) 08:57:43
labelを配列にしたひw
そこだけコードで書いちゃえyp!
0839デフォルトの名無しさん2010/11/06(土) 09:08:03
labelの配列を得たいならこんな感じに書くのがスマートじゃないかな
http://ideone.com/w7Hu0
0840デフォルトの名無しさん2010/11/06(土) 09:14:34
labelが大量にあるなら動的に追加、そうでないからlabelのコントロール群を手書きで作るのが良いかも
0841デフォルトの名無しさん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) でエラーが発生しました。"}
というエラーが起きてしまいます。

これは、同じ名前のプロパティが複数あるのが原因になるのでしょうか?
また、その場合はどのようにすればよいでしょうか?
0842デフォルトの名無しさん2010/11/06(土) 09:34:21
XMLの読み書きは結構柔軟に読んでくれるだけどなあ・・・
そんな部分的じゃなく全ソース公開できない?
0843デフォルトの名無しさん2010/11/06(土) 09:50:07
たしかにそれだけじゃ判断できんな
どのテクノロジを使ってシリアライズしたかぐらいは書いてくれ
0844デフォルトの名無しさん2010/11/06(土) 09:53:58
>>842
XMLを原因と考えず他の部分も調べてみます。
全ソースはそこそこおおきいので、もうすこし調べて動かなければ張らせていただきます。

>>843
using System.Xml.Serialization;
を利用しています。
0845デフォルトの名無しさん2010/11/06(土) 09:57:45
>>844
ソースはideoneに張ってね。
0846デフォルトの名無しさん2010/11/06(土) 10:15:56
シリアライズする際の型が間違っておりました。

御手数をおかけいたしました
0847デフォルトの名無しさん2010/11/06(土) 10:40:57
>>839
たしかにスマートですね
0848デフォルトの名無しさん2010/11/06(土) 11:15:24
>>847
でもそれだとパネルとかに配置されたラベルは拾えないよな
0849デフォルトの名無しさん2010/11/06(土) 11:18:38
親コントロールから検索かけることもできたはずだけど
まあどうせならFormの起動の段階で動的にボタンを作って
管理した方がいいだろうね

なんせ自分は何があるか知ってるんだし
0850デフォルトの名無しさん2010/11/06(土) 11:21:43
>動的にボタンを作って
動的にラベルを作って
0851デフォルトの名無しさん2010/11/06(土) 12:25:33
FlowLayoutPanelですが、微妙に右にちょっとずれるんですが、
普通のパネルのようにぴたっとくっつける方法ってありますか?
0852デフォルトの名無しさん2010/11/06(土) 12:27:15
動的にラベルを作るって、デザイナー使わずに手打ちするってこと?
そんなことしたらレイアウトの修正が激しく面倒なことになりそうだが
0853デフォルトの名無しさん2010/11/06(土) 12:28:13
>>851
画像くれ
0854デフォルトの名無しさん2010/11/06(土) 12:29:25
>>852
そうか?
labelだからある程度規則的に並べるだろうし
規則性がないのなら座標用のデータを配列にでもいれて
動的にlabalを作るときにそれを代入すればいいだけちゃうの?
0855デフォルトの名無しさん2010/11/06(土) 12:36:09
>>851
どっかでこの関数を呼べばぴったりくっつくよ
private void PittariLayout(FlowLayoutPanel panel) {
  foreach (Control item in panel.Controls) {
    item.Margin = new Padding(0);
  }
}
0856デフォルトの名無しさん2010/11/06(土) 12:43:23
ぴったりれいあうと
0857デフォルトの名無しさん2010/11/06(土) 12:59:34
>>854
labelは他のコントロールの説明のために配置されることが多いよね
そうしたときに対象のコントロールとラベルを別々に管理しなきゃいけないのはめんどいと思うよ。
例えばテキストボックスの左側にラベルが置いてあって、このラベルの文字列を変える場合、
テキストボックスの座標はどうやって計算する?
0858デフォルトの名無しさん2010/11/06(土) 13:07:21
WPFでGridとGridColumnでautoでも使おうかな
0859デフォルトの名無しさん2010/11/06(土) 13:08:41
>>857
その辺は自分で考えろよw
そんなマルチに面倒みきれねーよw
0860デフォルトの名無しさん2010/11/06(土) 13:13:09
>>859
あ、別に俺は質問者じゃないよ
ただデザイナ使わずに配置するの推奨みたいな書き方してたから絡んでみただけです
0861デフォルトの名無しさん2010/11/06(土) 13:14:14
>>860
デザイナーで楽したいか
ラベルの列挙も楽したいか
じゃないの?
0862デフォルトの名無しさん2010/11/06(土) 13:18:58
>>858
WPFならDataTemplateだろ
コレクションを置くコード必要なし
0863デフォルトの名無しさん2010/11/06(土) 13:34:47
>>855
ありがとうございます。解決しました。
0864デフォルトの名無しさん2010/11/06(土) 13:41:07
ラベルをパネル内の中央に寄せたいんですが、そういうプロパティってあるんでしょうか?
0865デフォルトの名無しさん2010/11/06(土) 13:57:46
>>864
水平方向のAnchorを設定しなきゃOK
0866デフォルトの名無しさん2010/11/06(土) 13:59:59
label1.Dock = System.Windows.Forms.DockStyle.Fill;
label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
label1.AutoSize = false;
これで中央に配置されるよ
0867デフォルトの名無しさん2010/11/06(土) 14:14:47
>>861
デザイナーで楽して、
プログラムで列挙する。
これが一番
列挙用の関数なんてすぐ作れるし
0868デフォルトの名無しさん2010/11/06(土) 14:55:35
Win32APIを呼び出すときの型の宣言なんですけど、
MMRESULTに対応するC#の型は何になるのでしょうか?
私の見てるページがよく使われる型しか載ってないようなのでわかりませんでした。
あと、この型変換?専門用語でなんていうんですか?
用語知らないとMSDNで探せなかったので。
08697962010/11/06(土) 15:05:19
どうもできないんでとりあえずは>>802で代用します
お騒がせしてすいませんでした
0870デフォルトの名無しさん2010/11/06(土) 15:05:34
typedef 型名

でググってけば型がなんだろうが大元が見つかるよ
マーシャリング
0871デフォルトの名無しさん2010/11/06(土) 15:22:21
MDIの子フォームをブラウザにしたいんだけど、
ネットみててクリックすると自動的に新しいウィンドウが開いてそれに表示される見たいのって
デフォルトでそうなる?
0872デフォルトの名無しさん2010/11/06(土) 15:50:34
>>868
http://www.pinvoke.net/default.aspx/winmm/MMRESULT.html
0873デフォルトの名無しさん2010/11/06(土) 16:01:46
>>826
ありがとうございます。やっぱり基礎から全部覚えなきゃいけないのか。
ラムダ式のデリゲートいくらみても理解できないわけだ

コードが短くなると
呼び出し側と呼び出される側という考え方って必要なの?って思えてくる
結局メソッドを変数みたいに扱うだけってことらしいが
じゃあ、直接呼び出さないのはなぜ?って考えた場合

親子関係にある子クラスから親クラスのメソッドを実行させるために必要だったんですね
でも、まんま親クラスを子クラスにプロパティで渡せばいいだけに思えるけど
その方が 親クラス.method()という感じになってどのクラスのどのメソッドを呼び出しているかわかりやすいし
でも、これだと長くなるからってことでデリゲートなんでしょ?
0874デフォルトの名無しさん2010/11/06(土) 16:05:38
でも、直接呼び出すようにしたら、親クラスのメソッド名や内容を変更した場合
子クラスの呼び出し方も変えなくてはいけないから
やっぱりデリゲートを中継したほうが、クラス間の依存関係が弱まって
変更しやすくなるからいいのか・・・
0875デフォルトの名無しさん2010/11/06(土) 16:08:17
Threadクラスのコンストラクタが得体の知れない特定の型を引数に取るようになってたら困るだろ?
08768682010/11/06(土) 16:16:31
>>870>>872
ありがとうございます・・・・が、そのキーワードでぐぐって出てきたページや、
紹介のページみましたが・・・理解できませんでしたorz
[DllImport("winmm.dll")]
private extern static・・・
てパターンじゃないんですね?また出直します。
0877デフォルトの名無しさん2010/11/06(土) 16:18:49
>>876
小出しにしないで全部書け
0878デフォルトの名無しさん2010/11/06(土) 16:22:12
>>876
ちゃんと見ろ。public static enum MMRESULT : uintってあるだろ。
08798682010/11/06(土) 16:30:37
でわ、お言葉に甘えて、
MMRESULT midiInGetDevCaps(
UINT uDeviceID,
LPMIDIINCAPS lpMidiInCaps,
UINT cbMidiInCaps
);
というAPIの関数をC#で使いたいのですが、2つ解らないところがあって、
1つは最初の質問の型宣言。
もうひとつは、lpMidiInCapsを格納する構造体をどうすればいいのか?
ただの変数でいいのか?ってところで躓いてます。

>>878
それが何を言ってるのか解らない。
0880デフォルトの名無しさん2010/11/06(土) 16:33:49
http://www.pinvoke.net/default.aspx/winmm.midiOutGetDevCaps
ここに書いてある

検索能力でも鍛えた方が捗るぞ、いろいろと
0881デフォルトの名無しさん2010/11/06(土) 16:36:37
なんでwin32apiってわざわざ調べて宣言しないと使えないようになってんの?
ライブラリで用意しといてくれればいいのに
0882デフォルトの名無しさん2010/11/06(土) 16:40:01
ほとんどはラップされて何らかのクラスで提供されてるよ
されてないのは言語的に相性が悪いかニッチな奴
0883デフォルトの名無しさん2010/11/06(土) 17:13:31
>>882
フリーのMIDI関係のクラスって、何処かにあるんでしょうか?
0884デフォルトの名無しさん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にしてはかなり高機能なライブラリ
0885デフォルトの名無しさん2010/11/06(土) 17:50:11
>>884
おお、あるんだなぁ!ありがとうございます。
0886デフォルトの名無しさん2010/11/06(土) 19:35:31
Dockプロパティをセットすると、Controlls..addをしたコントロールが上に着ちゃうんだけど
下にする方法ってある?
0887デフォルトの名無しさん2010/11/06(土) 19:36:25
Dock.Topね
0888デフォルトの名無しさん2010/11/06(土) 19:41:44
Dock.Bottom
0889デフォルトの名無しさん2010/11/06(土) 20:29:03
>>886
何その質問w
0890デフォルトの名無しさん2010/11/06(土) 22:23:11
Dogをセットすると上を着ちゃう?
http://image.rakuten.co.jp/m-mutter/cabinet/dwa2/08462-99.jpg
0891デフォルトの名無しさん2010/11/06(土) 22:28:48
>>890
毛を刈り上げたくなるね
0892デフォルトの名無しさん2010/11/06(土) 22:30:49
コントロールをまとめて扱いたいなら。
そういう機能を持つIExtenderProvider実装コンポーネントにするのがおすすめ。
0893デフォルトの名無しさん2010/11/07(日) 00:36:07
>>882
ふじゅううううううううううううううううううううううう
0894デフォルトの名無しさん2010/11/07(日) 08:39:29
>>881
「エクスプローラと同じ挙動のフォルダツリー作って」とか簡単に言われると泣きたくなる。
そういうときのためC++/CLIがあるんだろうけどさ。
08958682010/11/07(日) 10:14:32
>>880
御礼が遅くなりました。ありがとうございます。
引数で構造体を渡すDllは、構造体の宣言も必要だから複雑なんですね・・・
一晩色々勉強しましたがわかりませんでした。orz
もっと勉強してきます。

ところでPINVOKEのアドインソフトはVS2010EEでも使えるのでしょうか?
トップページの記述では2005までしか対応してないようですが。
理論が解らなくてもツールでプログラムさえ組めたらいいかなとも思うので・・・(^^;;
0896デフォルトの名無しさん2010/11/07(日) 10:20:19
>>895
複雑とか言うなアホ。
めんどくせえってだけだろ。
0897デフォルトの名無しさん2010/11/07(日) 10:43:44
そもそもEEでアドイン使えるの?
0898デフォルトの名無しさん2010/11/07(日) 13:41:29
使えないな
コードジェネレータとか使いたいのに使えない
0899デフォルトの名無しさん2010/11/07(日) 14:26:15
2010はExpressEditionは無くなったの?
0900デフォルトの名無しさん2010/11/07(日) 14:30:47
あるよ
0901デフォルトの名無しさん2010/11/07(日) 14:40:29
あった
でもultimateにしよう
0902デフォルトの名無しさん2010/11/07(日) 14:48:19
new { ファイル = "エロエロ女子高生.avi", パス = "D:\\エットなフォルダ" }

これって略されているんですよね?
これは略さないとどういう感じになるんですか?
文法というか構文というのかそれがわからないです
0903デフォルトの名無しさん2010/11/07(日) 15:29:20
厳密に同じものは書けないはず
0904デフォルトの名無しさん2010/11/07(日) 15:32:49
入力された値が数値以外の時メッセージボックスを表示させたいんですがどういうコードを書けばいいんでしょうか
0905デフォルトの名無しさん2010/11/07(日) 15:35:56

double d;
if(Double.TryParse("数値か判定する文字列",out d)){

// メッセージ
}
0906デフォルトの名無しさん2010/11/07(日) 16:37:15
それ数値の時じゃね?
0907デフォルトの名無しさん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の条件に否定付け忘れてる
0908デフォルトの名無しさん2010/11/07(日) 18:09:51
ありがとうございました
0909デフォルトの名無しさん2010/11/07(日) 19:30:15
>>907
なるほど、ありがとうございます
0910デフォルトの名無しさん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);
0911デフォルトの名無しさん2010/11/07(日) 21:31:39
public enum ExecutionState : uint
{
Null = 0,
SystemRequired = 1,
DisplayRequired = 2,
Continuous = 0x80000000,
}
0912デフォルトの名無しさん2010/11/07(日) 22:05:18
>>910
ウィルス対策ソフトは端的にバイナリのパターンを見てるだけで、
何をやってるかなんて意味的な解析はしてないと思うから、
ソースの一部なんか貼っても無意味では?
0913デフォルトの名無しさん2010/11/07(日) 22:09:17
ヒューリスティックス評価無視ですか
今じゃ搭載してないウィルス対策ソフト探すほうが至難だけど
0914デフォルトの名無しさん2010/11/07(日) 22:18:26
何も問題ないように見える
0915デフォルトの名無しさん2010/11/07(日) 22:26:50
そのソフトの会社に聞いてみた方が早いんでね?
0916デフォルトの名無しさん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);
を追加してやったら(呼び出しは無し)、ビルドも実行も問題なく出来た
0917デフォルトの名無しさん2010/11/07(日) 23:06:36
質問です。
comboBoxをItemの表示・選択専用にして、入力できないようにするプロパティってどれですか?
0918デフォルトの名無しさん2010/11/07(日) 23:12:45
VS2010EEで質問なんですけど、
コントロールをダブルクリックするとプリセットされたイベントハンドラが自動生成されますが、
プリセット以外のイベントをハンドラにしたいときは、手書き修正しかないのでしょうか?
0919デフォルトの名無しさん2010/11/07(日) 23:13:24
ComboBoxStyle.DropDownList
0920デフォルトの名無しさん2010/11/07(日) 23:13:55
プロパティウィンドウでイベント表示しろ
0921デフォルトの名無しさん2010/11/08(月) 00:02:20
>>919
ありがとうございました!
0922デフォルトの名無しさん2010/11/08(月) 00:19:34
元気があってよろしい。
月曜日が来た・・・。
0923デフォルトの名無しさん2010/11/08(月) 01:05:11
>>916
どうもです。
こっちのアンチウイルスもAntiVirなんですが…誤爆かな?

ところでBeepを追加したらいいというのはどういう考えで出てきたものなのか
非常に興味があるんですが。
0924デフォルトの名無しさん2010/11/08(月) 02:15:09
バイナリを手っ取り早く変えるって発想だと思う
今日からまた学校か……
0925デフォルトの名無しさん2010/11/08(月) 02:18:31
>>924
ちげーよw
kernel32.dll使うと大抵のセキュリティソフトは反応する
0926デフォルトの名無しさん2010/11/08(月) 02:25:13
ウィルスバスター2011反応なし(´・ω・`)ショボーン
喜んでいいのかどうなのか
0927デフォルトの名無しさん2010/11/08(月) 02:35:58
クラックdllでビープ音がなるのはそのためか
0928デフォルトの名無しさん2010/11/08(月) 09:43:50
textboxやrichtextboxに"\"ではなくてバックスラッシュを入力できるように
したいのですがどうすればいいですか?
0929デフォルトの名無しさん2010/11/08(月) 09:53:19
そこだけフォントをsystemに変えるとか?
0930デフォルトの名無しさん2010/11/08(月) 09:54:42
文字コードは同じだもんね
0931デフォルトの名無しさん2010/11/08(月) 09:59:27
両方入れたいときは?
キーボードの入力で右上のと右下のって区別できるんだっけ?
09329282010/11/08(月) 10:28:32
あれ?
Font fnt = new Font("System",11,FontStyle.Regular);
textBox1.Font = fnt;
にしてもなぜか"\"になってしまいます。
0933デフォルトの名無しさん2010/11/08(月) 10:33:58
Consolas
0934デフォルトの名無しさん2010/11/08(月) 10:36:00
>>933
あ、有り難うございます。お騒がせしました。
0935デフォルトの名無しさん2010/11/08(月) 10:36:59
一応、UnicodeではU+00A5に円記号が割り振られてるけどな
書式指定でc指定したらこっちが使われるようになってるはず
0936デフォルトの名無しさん2010/11/08(月) 12:54:56
C#で聞くことではないのですが、現在開発環境がC#なので参考に教えてください。

現在、フォーム上のボタンを押すと処理が実行されるのですが、その際にテキストボックスや
その他のフォーム上に入力がされているか確認を取った後に実行するように入力チェックを
行っております。
(Ex)
if(string.IsNullOrEmpty(this.TextBox.Text))
{
MessageBox.Show("フォームに入力がされていません");
this.Button.Enabled = true;
}

などのようにしています。メッセージの違いは3パターンほどでそれ以外の処理(ボタンのEnabledをtrueにする)
は共通しております。それをまとめるには別のメソッドにするか、例外として投げて処理するかを考えております。

もし、実行ボタン押下時の入力チェックをする場合ほかにどのような処理方法があるのでしょうか?
よろしくお願い致します。
0937デフォルトの名無しさん2010/11/08(月) 13:06:58
分け方なんて色々あるから、とりあえず一つ

GUIにアプリケーションの知識を入れ込まないようにするなら、
チェックする機能とチェック後にGUIの状態を変える機能に分けちゃう。
たとえば、
・GUIから入力の正誤をチェックするためのイベント
・GUIの状態を初期化(または必要な部分だけ変える)ためのメソッド


GUIは高度な描画機械って割り切っちゃって、その機械を扱う別の機械を作る
0938デフォルトの名無しさん2010/11/08(月) 14:03:50
モデルがGUIを使っちゃダメでしょ。逆。
GUIの方からモデルにアクセスしてモデルの状態を変更したり
モデルの状態が変更された時のイベントを受け取ったりするんだよ
0939デフォルトの名無しさん2010/11/08(月) 15:46:24
GUIとモデルを分けるのって一見2度手間みたいに思うけど
モデル側からするとデータを手元に常に置けるのは安心だしわかり易いし
GUIが何をするかなんて関係ないって考えで作ると後々楽なんだよね

とりあえず、コンソールアプリを作ることがおすすめ
0940デフォルトの名無しさん2010/11/08(月) 16:17:51
これは笑った
まずお前の実力を示すことかけよ
0941デフォルトの名無しさん2010/11/08(月) 16:42:07
>>940
これは笑った
まずお前の実力を示すことかけよ
0942デフォルトの名無しさん2010/11/08(月) 16:43:59
>>941
コンソールアプリ作ってきたら示してやるよ
0943デフォルトの名無しさん2010/11/08(月) 16:58:00
>>942
>>939に言ってやれよ
0944デフォルトの名無しさん2010/11/08(月) 19:55:23
>>938
動けばいいんでないの?
MVCでもPACでも

> GUIの方からモデルにアクセスしてモデルの状態を変更
これが GUIから入力の正誤をチェックするためのイベント

> モデルの状態が変更された時のイベントを受け取ったりする
GUIにデータの扱い方を入れ始めるとぐちゃぐちゃになるから嫌だな
時々やっちゃうけど。

データバインドの様な広く一般的に使われる(標準ライブラリに入っている)方法なら許されるけど、
オレオレ仕様のデータバインド()は許されない。
まあ動けばいいんだから、動くように書けばいいんだよね。
0945デフォルトの名無しさん2010/11/08(月) 20:07:09
ちょっと気になったんだけど
>例外として投げて処理するか
これってMSDNかなんかでやるなって書いてあった気がする


0946デフォルトの名無しさん2010/11/09(火) 10:46:29
ArduinoとC#と通信を行っています。
SerialPortコンポーネントを用いてArduinoボードからのデータを
DataReceivedイベントを用いて受信しています。

データの受信は問題なく行われているのですが、
データ受信に大きく遅延が発生してしまいます。

Arduinoボードの可変抵抗の値をC#側に送っているのですが、
可変抵抗をひねってから、C#側に受信されるまで、数秒掛ってしまいます。

おそらくデータ受信が追い付いていないのが原因かと思いますが、
どのような対策を行えばよろしいでしょうか?

何かアドバイスなどありましたら、ご教授していただけると幸いです。
よろしくお願いいたします。
0947デフォルトの名無しさん2010/11/09(火) 11:05:31
ボード側のデータ送信が追いついてない可能性はない?
確かに数秒ってのは異常だと思うんだけど
1バイトでイベント発生するようにしてもやっぱ1文字目の受信まで数秒かかったりする?
0948デフォルトの名無しさん2010/11/09(火) 12:09:22
List<int> 型のリストをstring[]に変換するにはどのようにすればよいでしょうか?

var test = new List<int>();

string strJoin =string.Join(",",test.To.String().ToArray());

ではうまくいかないので・・・;w;
0949デフォルトの名無しさん2010/11/09(火) 12:13:42
Listの総数をcountだっけ?で調べてstring[]を作成
ループ作ってListの項目を先頭から見ていってstring[]へセットしていく
0950デフォルトの名無しさん2010/11/09(火) 12:13:53
>>948
test.Select(i=>i.ToString()).ToArray();
てことかな
0951デフォルトの名無しさん2010/11/09(火) 12:21:02
>>949
自分もその方法を思いついたのですが、ほかになにか用意されていないかと思いまして・・・
ConvertAllなるものを使えばよさげですが、、いまいち使い方が・・・orz

>>950
それで試してみましたが、Selectっていうのがありませんでしたorz
0952デフォルトの名無しさん2010/11/09(火) 12:22:17
書式指定なしのToString()でよければ単純にこれでできそうな。
string strJoin =string.Join(",",test);
0953デフォルトの名無しさん2010/11/09(火) 12:24:32
string.Join の第二引数がstring[]なのでList<int>だと通らないです;w;
0954デフォルトの名無しさん2010/11/09(火) 12:26:36
>>953
Join<T>(String, IEnumerable<T>)が使えるのは.NET4からだった
0955デフォルトの名無しさん2010/11/09(火) 12:27:33
ループ回すとか無いわ
Enumerable拡張メソッド使おうぜ
0956デフォルトの名無しさん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());

になるのかなぁ・・?

0957デフォルトの名無しさん2010/11/09(火) 12:31:15
>>951
>それで試してみましたが、Selectっていうのがありませんでしたorz 
SelectやToArray()を使う場合は
using System.Linq;
が必要。それでコンパイルが通るはずだけど。
0958デフォルトの名無しさん2010/11/09(火) 12:31:40
>>956
えw
ループ使うにしてもそれはないわw
0959デフォルトの名無しさん2010/11/09(火) 12:34:36
むむむ@w@
>>956さん
もしループしようならどの様にしますか?
後学のためにサンプルお願いいたします><

>>957
さっそく、してみます><また報告します
0960デフォルトの名無しさん2010/11/09(火) 12:34:38
.NETは3.5でなく2.0でいいの?それだとLinqも使えないね。
0961デフォルトの名無しさん2010/11/09(火) 12:36:33
LINQはMSDNだと3.5からでしたorz
0962デフォルトの名無しさん2010/11/09(火) 12:37:53
2.0なら何でvarとか使ってんの
よくバージョン確認したほうがいいんじゃね
0963デフォルトの名無しさん2010/11/09(火) 12:38:09
あと、質問ですが、ConvertAllではできないのでしょうか?
使い方がMSDNみてもよくわからないので・・・orz

もし参考になるサイトなどありましたらよろしくおねがいいたします。
0964デフォルトの名無しさん2010/11/09(火) 12:39:06
ん、2.0だとvar使えませんか?

使えるので使っているのですが・・・
0965デフォルトの名無しさん2010/11/09(火) 12:39:45
値を変換するのは全部SelectメソッドでOK
0966デフォルトの名無しさん2010/11/09(火) 12:39:41
C#2.0/.NET 2.0の範囲なら
String.Join(",", test.ConvertAll<string>(delegate(int _) { return _.ToString(); }).ToArray());
かな
0967デフォルトの名無しさん2010/11/09(火) 12:41:57
>>966
C#3.0を使えるなら
String.Join(",", test.ConvertAll(_ => _.ToString()).ToArray());
0968デフォルトの名無しさん2010/11/09(火) 12:47:26
>>967

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

>>966はむずかしそうなので、今度検証してみます;w;
0969デフォルトの名無しさん2010/11/09(火) 12:48:31
VSの2008か2010で対象フレームワークを.NET2.0にして使ってるのか。
0970デフォルトの名無しさん2010/11/09(火) 12:50:01
>>967
横からだけど、_ってどういう役目があるんだっけ?
C# アンダースコアでググッても引っかからない
0971デフォルトの名無しさん2010/11/09(火) 12:59:39
ただの変数。
他の言語でラムダ式の引数に使われるので、その習慣を持ち込んだだけ。
0972デフォルトの名無しさん2010/11/09(火) 13:00:57
なるほど
0973デフォルトの名無しさん2010/11/09(火) 13:03:15
横道それるけど、例えばscalaだと _ を使えば2段目のように短縮表記できる。
f.filter(i => i <  5)
f.filter(_ < 5)
0974デフォルトの名無しさん2010/11/09(火) 13:04:49
ぱっと見てわからないとかまたC時代の悪習をやるのかよ・・・
0975デフォルトの名無しさん2010/11/09(火) 13:06:40
ラムダ式は一般的だぞ
0976デフォルトの名無しさん2010/11/09(火) 13:08:16
>>973
scalaは_に意味を持たせているわけね。
記号を使った記法はググりにくいから困るw
0977デフォルトの名無しさん2010/11/09(火) 13:10:05
>>975
>>973の最終行なんてある程度学んでないとわからないだろw
0978デフォルトの名無しさん2010/11/09(火) 14:36:37
ループを露に書く方がよっぽどパッと見てわからないと思うけどな
低レベルになるほどわかりやすいんだったら制御文はbrfalse(flag, label)だけでいいことになる
0979デフォルトの名無しさん2010/11/09(火) 14:48:54
ラムダ式での_って引数としてとるけど使わない場合に書くやつだと思ってた
scalaからの流れだったんだ

LINQは.NET3.5からだけどラムダ式とか型推論はC#3.0からだから使えるんだ
0980デフォルトの名無しさん2010/11/09(火) 15:42:46
Perlも$_が暗黙の変数だな
0981デフォルトの名無しさん2010/11/09(火) 16:18:21
そのうち、メソッドやプロパティなどの省略形を定義する構文が出そうだな。
そうすりゃ、
>>973 を、
f.<5
まで省略できる可能性がある。
0982デフォルトの名無しさん2010/11/09(火) 17:27:56
ラムダ式なんてやめてほしいわ
女子高生の略語みたい
ナウいとか思っちゃってるの?
0983デフォルトの名無しさん2010/11/09(火) 17:39:11
>>982
思ってないよ。
0984デフォルトの名無しさん2010/11/09(火) 17:51:53
>>982
λ計算が考案されたのは1930年代、現実のプログラミング言語(Lisp)の形で
導入されたのは1950年代
無名関数やらクロージャやらは、要するに大昔からあるもので、
今だってPerlだのJavaScriptだのRubyだのPythonだの、そこらの言語で
当たり前に使えるごくごくありふれた代物だよ
今更ナウいも糞もないだろう
0985デフォルトの名無しさん2010/11/09(火) 18:29:24
型宣言しっかりして頭ガチガチにされたのに
今更ラムダ思考に切り替えられるわけないだろ
09869462010/11/09(火) 18:51:13
>947
TeraTermなどのソフトで通信した場合は、リアルタイムに値が変化しています。
C#のSerialPortを用いるとデータが送られてくるまで時間がかかってしまいます。
デフォルト設定でSerialPortコンポーネントを使っています。

初回のデータ取得は問題ないのですが、
見た感じ、データがどんどん溜まって遅延が発生しているようにも見えます。

0987デフォルトの名無しさん2010/11/09(火) 19:03:34
>>985
まさに老害
0988デフォルトの名無しさん2010/11/09(火) 19:18:56
このアンチラムダ野郎はWPFスレのあいつ
0989デフォルトの名無しさん2010/11/09(火) 19:20:20
>>986
SerialPortは何度も使ってるけど、人間が目視で分かるほどの遅延はありえない。
君のコードの側の問題だろうね。

それと、どんなデータを受信してるのか知らないけど、
普通はDataReceivedイベントなんか使わない。

ちょっと考えれば分かると思うけど、そんなの使ったらシステムが受信データを
バッファリングしてくれてる意味が台無しじゃん。
0990デフォルトの名無しさん2010/11/09(火) 19:22:08
>>985
あれか、わざわざ厳密な型名と一緒に宣言しないと型がわからない人なんだよ
0991デフォルトの名無しさん2010/11/09(火) 19:36:17
次建ててくるよ
0992デフォルトの名無しさん2010/11/09(火) 19:39:46
と意気込んでみたものの規制されてたでござる
誰か頼む
0993デフォルトの名無しさん2010/11/09(火) 20:22:33
たまに、ラムダ、ランダム、ガンダム、やんばダム、ランバラル、の区別がつかない時がある。
0994デフォルトの名無しさん2010/11/09(火) 20:28:16
ラベンダー
0995デフォルトの名無しさん2010/11/09(火) 20:33:56
ランバダ、ダイバダッダ、段田男
0996デフォルトの名無しさん2010/11/09(火) 20:52:35
ガンダムシードとランダムシード
0997デフォルトの名無しさん2010/11/09(火) 21:21:27
>>979
F#では_は使わないに近い感じだし、
.NET系では_は「使わない場合」とすべきだと思うねえ
Scalaだと暗黙な引数になるけどさ
0998デフォルトの名無しさん2010/11/09(火) 21:27:40
F#ではパターンマッチングのワイルドカードで使ってるからってのもあるね。
あと演算子が必ず先頭に来るから、たいていはカリー化で対応できる。
0999デフォルトの名無しさん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ゲットずさー
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。