ふらっとC#,C♯,C#(初心者用) Part60
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2010/05/25(火) 18:41:52「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっとC#,C♯,C#(初心者用) Part59
http://pc12.2ch.net/test/read.cgi/tech/1272309948/
■関連スレ
C#, C♯, C#相談室 Part59
http://pc12.2ch.net/test/read.cgi/tech/1274019232/
VB.NET質問スレ(Part34)
http://pc12.2ch.net/test/read.cgi/tech/1270998481/
くだすれ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/05/25(火) 19:02:34ありがとうございます。
が。
いまたぶん問題なのはContextmenuのイベントハンドラなのではないかと。
0003デフォルトの名無しさん
2010/05/25(火) 19:07:08うむ
0004デフォルトの名無しさん
2010/05/25(火) 19:08:39えw
だからそれを書きなれないxaml上でしないでC#上でやったら?
って提案でしょw
0005デフォルトの名無しさん
2010/05/25(火) 19:10:12ん?何か違いましたか?
0006デフォルトの名無しさん
2010/05/25(火) 19:11:43もしかして>>993の方法教えたけど他のイベントハンドラもかかないとできないってこと?
0007デフォルトの名無しさん
2010/05/25(火) 19:24:08{
ContextMenu cm = new ContextMenu();
MenuItem mi = new MenuItem();
mi.Header = "copy";
mi.MouseDown += new MouseButtonEventHandler(mi_MouseDown);
cm.Items.Add(mi);
img.ContextMenu = cm;
}
void mi_MouseDown(object sender, MouseButtonEventArgs e)
{
throw new NotImplementedException();
}
こんな感じで書ける
0008デフォルトの名無しさん
2010/05/25(火) 20:32:45コマンドバインディングを使う
0009デフォルトの名無しさん
2010/05/25(火) 20:45:02みなさんありがとうございます。
まずcontextmenuからということで、
<Grid Name="img" MouseRightButtonDown="img_MouseRightButtonDown" MouseRightButtonUp="img_MouseRightButtonUp">
<Grid.ContextMenu>
<ContextMenu Name="contextMenu">
<MenuItem Header="コピー" Name="copy" Click="copy_Click" />
</ContextMenu>
</Grid.ContextMenu>
</Grid>
とあったものを、次のようにしました。
<Grid Name="img" MouseRightButtonDown="img_MouseRightButtonDown" MouseRightButtonUp="img_MouseRightButtonUp">
</Grid>
ContextMenu contextMenu = new ContextMenu();
MenuItem copymi = new MenuItem();
copymi.Header="copy";
copymi.Click += (s,e) => copy_Click(s,e);
contextMenu.Items.Add(copymi);
ところが、contextMenuが表示されません。
0010デフォルトの名無しさん
2010/05/25(火) 20:48:44<Grid.ContextMenu>
<ContextMenu Name="contextMenu">
</ContextMenu>
</Grid.ContextMenu>
</Grid>
MenuItem copymi = new MenuItem();
copymi.Header="copy";
copymi.Click += (s,e) => copy_Click(s,e);
contextMenu.Items.Add(copymi);
ならメニューが出ます。
Gridのimgに登録するのかと思ったのですが、
img.Add(contextMenu);
としたら、
'System.Windows.Controls.Grid' に 'Add' の定義が含まれておらず、型 'System.Windows.Controls.Grid' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
とエラーです。
0011デフォルトの名無しさん
2010/05/25(火) 20:51:27WPF ContextMenuでググればいくらでも出てくるじゃん
0012デフォルトの名無しさん
2010/05/25(火) 21:05:49>>10が要求してるのは右クリックをドラッグアンドドロップ動作とContextMenuの表示
の切替をしようとしてるからややこしくなってるだよw
0013デフォルトの名無しさん
2010/05/25(火) 21:08:49xamlの階層を見ると
Grid.ContextMenu->ContextMenu->MenuItem
って感じじゃないの?
前スレの>>9だとうまくいかないってことはxamlの階層をそのまま解釈したのではだめ
ってことだろうけど
0014デフォルトの名無しさん
2010/05/25(火) 21:21:32動的に表示したいんだから、特定の要素のContextMenuプロパティに入れちゃダメ
フィールドにContextMenuを持っておく
で、MouseUp系のイベントでIsOpenを設定する
0015デフォルトの名無しさん
2010/05/25(火) 21:50:40気合でベタ書き縦横無尽に右往左往でニッチもサッチも。
0016デフォルトの名無しさん
2010/05/25(火) 21:55:25どうにもブルドッグ、わぉ!
0017デフォルトの名無しさん
2010/05/25(火) 22:13:19規制よく食らうからここで質問出来ないのはキツイ
0018デフォルトの名無しさん
2010/05/25(火) 23:42:55フィールドにもつのはどうしたらよいでしょう?
ContextMenu contextMenu = new ContextMenu();
をメソッドの外におけばオーケー?
あと登録がまだできてないです。
FormならControl.Add(this.contextMenu)かと思ったら、これも違うみたいで…。
>>15
ふらっとC#はけっこういいですよね。
0019デフォルトの名無しさん
2010/05/25(火) 23:44:530020デフォルトの名無しさん
2010/05/26(水) 02:23:04荒らしがいてにぎやかでいいですよね。
0021デフォルトの名無しさん
2010/05/26(水) 07:55:51.Enabled = false; で一応なるのですがスクロールもできなくなってしまうので
スクロールはできつつ変わらない状態にしたいのですが
0022デフォルトの名無しさん
2010/05/26(水) 09:01:04とかw
0023デフォルトの名無しさん
2010/05/26(水) 09:30:34マウスの右クリック(コンテキストメニュー)と右ドラッグ(ダウン-移動-アップ)に異なる処理を割り当てたい。
【現在】
やっと.csだけでcontextMenuを表示できるようになりました。
<Grid Name="img" MouseRightButtonDown="img_MouseRightButtonDown" MouseRightButtonUp="img_MouseRightButtonUp">
</Grid>
ContextMenu contextMenu = new ContextMenu();
MenuItem copymi = new MenuItem();
copymi.Header="copy";
copymi.Click += (s,e) => copy_Click(s,e);
contextMenu.Items.Add(copymi);
img.ContextMenu = contextMenu;
0024デフォルトの名無しさん
2010/05/26(水) 09:39:35int startX;
int startY;
private void img_MouseRightButtonDown(object sender, MouseButtonEventArgs e){
mousemove = true;
//マウス位置取得
startX = e.X;
startY = e.Y;
MessageBox.Show("mousedown" + mousemove);
}
private void img_MouseRightButtonUp(object sender, MouseButtonEventArgs e){
//マウス位置取得。マウス位置計算
//if (移動量 > たとえば20ピクセル)
if ((e.X - startX) * (e.Y - startY) > 20 || (e.X - startX) * (e.Y - startY) < -20 MessageBox.Show("mouseup");
else ContextMenu.Show();
}
現在は、右クリックでは単にコンテキストメニューが開きます。
次になにをしたらよいんでしょう?
あと、
throw new NotImplementedException();
ってなにの意味なんでしょう?
0025デフォルトの名無しさん
2010/05/26(水) 10:01:40>なにをしたらいいんでしょう
ちょっとは考えたほうがいいと思うぞ
初心者ならなおさら
むしろ目的を達成するためになにがあと足りてないんだ?
>throw new NotImplementedException();
>ってなにの意味なんでしょう?
一回判らない事は全部聞かずにググってみ?
一番最初にすぐ出てくるから
ヘルプにさらにヘルプが必要な場合もあるからそれから聞いてみるがよろし
http://msdn.microsoft.com/ja-jp/library/system.notimplementedexception(v=VS.80).aspx
throw て書いてる意味が判らないんなら
C# throw でググれば一発目に’throw (C#)’ていうMSDNのサイト出てくるから
0026デフォルトの名無しさん
2010/05/26(水) 10:02:05NotImplementedExceptionはその名の通り未実装ってことだ
これの代わりに自分で処理を書くんだよ
0027デフォルトの名無しさん
2010/05/26(水) 10:30:23ドラッグかどうかの判別というのは、具体的にはなにをするんでしょうか?
private void img_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
private void img_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
のところで書いたつもりになっているのです。
NotImplementedExceptionは、未実装。なるほど!
>>25
考えてないとかググってないとかいうのは誤解です。
考えすぎてGoogleで出てきたサイトを見すぎて、何がなんだかわからないというのが正確です。
なにしろまるいちにちずーっとやってるのです。
途方にくれて質問してます。
0028デフォルトの名無しさん
2010/05/26(水) 11:07:06http://www.google.co.jp/search?hl=&q=NotImplementedException&sourceid=navclient-ff&rlz=1B3GGGL_jaJP338JP339&ie=UTF-8
0029デフォルトの名無しさん
2010/05/26(水) 11:07:47最小のウィンドウサイズに制限はありますか?
アイコンサイズ(56×66ピクセル)に設定しようとしましたが実行すると、幅が100ピクセルくらいあります。
FormのSizeプロパティに
Width 56
Hight 66
と設定しています。
FormBoderStyleはNoneです。
アドバイスお願いします。
0030デフォルトの名無しさん
2010/05/26(水) 11:09:55>>考えすぎてGoogleで出てきたサイトを見すぎて、何がなんだかわからないというのが正確です。
>>なにしろまるいちにちずーっとやってるのです。
納期に追われて数日徹夜した新人ですか?
とりあえず落ち着いて休憩でもすればいいんじゃないかな
0031デフォルトの名無しさん
2010/05/26(水) 11:09:56悲しいかな、そこでわからないのが素人なところで、
これを見ても、なんか新しいクラスなのか…、と思っていた次第です。
0032デフォルトの名無しさん
2010/05/26(水) 11:11:35最小値がないかい?
MinimumSizeとか
そのへんじゃないのかな?
0033デフォルトの名無しさん
2010/05/26(水) 11:12:44横幅はある程度あったはず
Region使ったら?
0034デフォルトの名無しさん
2010/05/26(水) 11:13:11ま、素人の趣味なので、別に納期はないですが、まあそんなことはどうでもよく、
ドラッグかどうかの判別についてよろしくお願いします。
0035デフォルトの名無しさん
2010/05/26(水) 11:18:15WPFよー知らんのだけど
Vectorあるみたいだし、それで移動量調べたら?
0036デフォルトの名無しさん
2010/05/26(水) 11:24:16ありがとう。
Region
でできました。
>>32
MinimumSizeではないみたい。
0037デフォルトの名無しさん
2010/05/26(水) 11:33:50知らんまま適当にテストコード書いてみた
こういう感じ?
ドラッグ中の処理入れるなら使えないけどね。
bool mouse = false;
Vector mouseOrg = new Vector(0, 0);
private void Window_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
mouse = CaptureMouse();
Point p = e.GetPosition(this);
mouseOrg = new Vector(p.X, p.Y);
}
private void Window_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
if (mouse)
{
ReleaseMouseCapture();
mouse = false;
Point p = e.GetPosition(this);
Vector mouseCur = new Vector(p.X, p.Y);
if ((mouseOrg - mouseCur).Length > 20.0)
{
MessageBox.Show("Drag!");
}
else
{
MessageBox.Show("Click!");
}
}
}
0038デフォルトの名無しさん
2010/05/26(水) 11:36:05ファイルアイコンのドラッグ&ドロップというのは多分にシステム依存な動作なので、
各コントロールが小ウィンドウ化されておらず、抽象化の著しいWPFでは難易度の高い処理のはず。
少なくともWindows.Forms時代の記事は役に立たないので頑張って資料読みこなして実装してください。
0039デフォルトの名無しさん
2010/05/26(水) 12:08:23それが回答ですか。
まあありがとうございました。
0040デフォルトの名無しさん
2010/05/26(水) 12:09:590041デフォルトの名無しさん
2010/05/26(水) 13:45:50なんか煮詰まってるのはわかるが書き込みの内容がスレの人間が悪い
みたいな方向に行ってるから気をつけたほうがいいぞ
荒れる原因になるから
それに勘違いしない方がいいよ
スレの住人はボランティアで協力してるだけで業務上君の面倒を
見るようにボスから命令貰ったわけじゃない人たちばかりだからね
WPFスレ送りにならないだけ不思議に思ってるくらいなんだし
0042デフォルトの名無しさん
2010/05/26(水) 13:55:150043デフォルトの名無しさん
2010/05/26(水) 13:57:32WPF特有じゃん
C#コーダーは居てもWPFはまだ勉強中とかも多いはず
0044デフォルトの名無しさん
2010/05/26(水) 14:05:10というか、検索したらすぐひっかかるじゃねーか。
ggrks
http://d.hatena.ne.jp/superlightbrothers/20090517/1242553619
0045デフォルトの名無しさん
2010/05/26(水) 14:06:34いやーそれ以前のプログラムの書き方の問題では
0046デフォルトの名無しさん
2010/05/26(水) 14:08:300047デフォルトの名無しさん
2010/05/26(水) 14:24:320048デフォルトの名無しさん
2010/05/26(水) 14:27:26値型やsealedな型との比較ならobj.GetType == typeof(Hoge)の方がわずかに速かったりするけど気にするほどでもない
型チェックした後キャストするならasの方が速い
0049デフォルトの名無しさん
2010/05/26(水) 19:05:37フィールドの値を文字列ベースで取得することは可能でしょうか?
たぶんリフレクションを使うことになるんでしょうが……。
0050デフォルトの名無しさん
2010/05/26(水) 19:17:000051デフォルトの名無しさん
2010/05/26(水) 20:54:15逆にプロパティの方を内部で文字列使って実装する
0052デフォルトの名無しさん
2010/05/26(水) 21:25:43場合にもよるが、単なるインターフェイスへの暗黙のアップキャストの方がコスト高いことだってあるのに。
0053デフォルトの名無しさん
2010/05/26(水) 22:28:45軽量なO/Rマッパーを実装しているところ。
SQLのフィールド名と実際のclass内のフィールドと対応させるために、
どうしても文字列でフィールドの実体に照合する必要がある。
0054デフォルトの名無しさん
2010/05/26(水) 22:37:45LCGで動的にハードコードしてしまうというとっても大袈裟な最強の方法がある
リフレクションじゃどう頑張ったって軽量にはならん
0055デフォルトの名無しさん
2010/05/26(水) 22:42:560056デフォルトの名無しさん
2010/05/26(水) 22:55:59デリゲートを使う場合、値の取得設定時のリフレクションを避けようとすると、
プロパティの型の不一致をごまかすのが難しいのでジェネリックを使ったトリッキーなテクニックが必要。
0057デフォルトの名無しさん
2010/05/26(水) 23:04:210058デフォルトの名無しさん
2010/05/26(水) 23:07:270059デフォルトの名無しさん
2010/05/26(水) 23:09:52.NETの変態メタプログラミングには必須
006057
2010/05/26(水) 23:18:18ttp://ideone.com/iPTZe
こんなんなったわ
0061デフォルトの名無しさん
2010/05/26(水) 23:32:070062デフォルトの名無しさん
2010/05/26(水) 23:34:16型チェックしてダウンキャストしてデリゲートを実行するコードをLCGで生成してくれるから
結局やってることは変わらないはず
006357
2010/05/26(水) 23:36:150064デフォルトの名無しさん
2010/05/26(水) 23:57:05HSPで遊んでなさい
0065デフォルトの名無しさん
2010/05/27(木) 00:00:09>フィールドの値
これが意味わからん
.ToString()
の話じゃないの?
0066デフォルトの名無しさん
2010/05/27(木) 00:14:33http://ideone.com/JcSe8
まともに作っても速度はこれと変わらないはず
0067デフォルトの名無しさん
2010/05/27(木) 00:17:37わーさっぱりわかんないー
まだまだ初心者から入門者への階段は登れません
0068デフォルトの名無しさん
2010/05/27(木) 00:24:10{
public string name;
}
sc = SomeClass();
type = sc.GetType();
prop = type.GetProperty("name");
prop.SetValue(sc, "lmn", null);
これでいけるらしい。
0069デフォルトの名無しさん
2010/05/27(木) 00:28:43それ普通に支障が出るくらい遅いよ
0070デフォルトの名無しさん
2010/05/27(木) 00:28:49C# 4.0 の dynamic 使ったコード書いて、
それを逆コンパイルすればそんな感じのコードが生成されてるんで、
コピって書き換えれば OK。
0071デフォルトの名無しさん
2010/05/27(木) 00:30:02まあ、使いどころ次第ではあるけども。
確かにリフレクションって普通のプロパティアクセスと比べたら2桁・3桁遅いけど、
そこがめったに呼ばれなければ特に問題にもならず。
0072デフォルトの名無しさん
2010/05/27(木) 00:38:58それどころか外部の入出力を除けば最大のボトルネックかも
0073デフォルトの名無しさん
2010/05/27(木) 02:06:300074デフォルトの名無しさん
2010/05/27(木) 07:43:44ってリフレクションじゃないの?
そんなに速度違うのかなぁ
0075デフォルトの名無しさん
2010/05/27(木) 08:54:59インスコすればいいんでしょうか?
0076デフォルトの名無しさん
2010/05/27(木) 08:59:010077デフォルトの名無しさん
2010/05/27(木) 09:05:50そういえばそうでしたorz
0078デフォルトの名無しさん
2010/05/27(木) 09:08:280079デフォルトの名無しさん
2010/05/27(木) 09:57:23クラスのところまでスムーズに理解できたのに、イベント難しいよぉ><
0080デフォルトの名無しさん
2010/05/27(木) 10:05:010081デフォルトの名無しさん
2010/05/27(木) 11:01:47まず、デリゲートとイベントを普通に自作したらどうなるかを思い浮かべる。
次にそれを言語の機能としてサポートする方法を考えてみる。
0082デフォルトの名無しさん
2010/05/27(木) 11:10:43イベントは単独で勉強せずに、Forms込みで理解した方が分かりやすいよ。
0083デフォルトの名無しさん
2010/05/27(木) 11:41:47よし、わかった!
…うそです。。もうちょっと考えてみます。
>>82
本の後ろのほうにフォームアプリケーション作成っていうのが載ってるから
そこを読めばもっとわかるかな。週末に読んでみますぅ。
0084デフォルトの名無しさん
2010/05/27(木) 11:46:29〜〜すぅ。
すまん、男だと判ってはいたが正直文字だけ見たら・・・・萌えた
0085デフォルトの名無しさん
2010/05/27(木) 11:48:050086デフォルトの名無しさん
2010/05/27(木) 13:32:49「アッー」な素質あるよあなた
0087デフォルトの名無しさん
2010/05/27(木) 13:33:560088デフォルトの名無しさん
2010/05/27(木) 15:26:070089デフォルトの名無しさん
2010/05/27(木) 16:54:14プロパティとオブジェクトが同じだと言ってるのと同じだよ
0090デフォルトの名無しさん
2010/05/27(木) 17:33:170091デフォルトの名無しさん
2010/05/27(木) 17:55:130092デフォルトの名無しさん
2010/05/27(木) 18:39:08うぜえ
0093デフォルトの名無しさん
2010/05/27(木) 18:55:21デリゲートと呼ぶこともあるでしょ
0094デフォルトの名無しさん
2010/05/27(木) 19:01:560095デフォルトの名無しさん
2010/05/27(木) 19:04:000096デフォルトの名無しさん
2010/05/27(木) 19:11:27このサンプルがVS2008でも2010でもビルドできないんだけど、
誰かビルドできた人いない?
0097デフォルトの名無しさん
2010/05/27(木) 21:32:040098デフォルトの名無しさん
2010/05/27(木) 21:42:010099デフォルトの名無しさん
2010/05/27(木) 21:45:04VS2005のWPF開発環境って冗談みたいなもんだからなあ
0100デフォルトの名無しさん
2010/05/27(木) 22:44:56>>60
>>66
>>68
のそれぞれのやり方で、プロパティアクセスの処理部分だけを繰り返す形にして、
つまり余分な処理はなるべく除いた状態でプロパティアクセス部分の速度を計測してみた結果。
かかる時間がおおよそ
9:11:400
となった。
つまりリフレクションだと40倍くらい遅かった。
0101デフォルトの名無しさん
2010/05/27(木) 22:52:18おおよそだが、
24ns
27ns
1100ns
みたいな感じ。
ちなみにx64にするとやや速度比が変わって、
18ns
35ns
800ns
みたいな具合、まあ速度の順位は同じだが。
0102デフォルトの名無しさん
2010/05/27(木) 22:56:170103デフォルトの名無しさん
2010/05/27(木) 23:01:000104デフォルトの名無しさん
2010/05/27(木) 23:03:48そうするとどうしてもそんなのが必要
実際.NETは内部でリフレクション使いまくりだよ
XmlSeriarizerなんかパフォーマンスが重要だから、C#のコードを動的に生成してコンパイルしたりするという
常軌を逸した最適化をする
010549
2010/05/27(木) 23:13:06ひぇ〜、そんなに違うのか。
あとしばらくは.NET 2.0の範囲で作りたいので、単純な>68の方法で
実装し終わったところなんだけど、
>60でも動くならそっちで試してみようかなぁ……。
ぱっと見じゃあ使い方がよくわからないけど。
>>104
TableBaseを共通既定にして属性を付けたフィールドを
書いてあげることで自動的にテーブルと読み書きする
ActiveRecord的な実装です。
最近の流行りじゃなくてすんません。
0106デフォルトの名無しさん
2010/05/27(木) 23:19:32フィールドの代わりにテーブル持って、プロパティでラップするだけで済むこと
速い簡単確実分かりやすい
0107デフォルトの名無しさん
2010/05/27(木) 23:21:07それって型付きDataSetそのもの…
0108デフォルトの名無しさん
2010/05/27(木) 23:22:49テーブルってったってそれがDictionaryを意味するなら、
ADODB.RecordSetと変りなくない?
0109デフォルトの名無しさん
2010/05/27(木) 23:27:04共通の基底クラスを必要としないのはそれはそれでメリットがある
0110デフォルトの名無しさん
2010/05/27(木) 23:37:11フレームワークに縛ってしまうのを避けるために採るものなんで
共通の基底クラス持っちゃったら意味ないよ
0111デフォルトの名無しさん
2010/05/27(木) 23:58:20ちょっとだけ扱いやすくしたぜ。
http://ideone.com/XQRTq
単純な使い方はこんな感じだ。
0112デフォルトの名無しさん
2010/05/28(金) 00:08:12PropertyAccessor alpha = PropertyAccessor.Create(typeof(Hoge), "Alpha");
PropertyAccessor beta = PropertyAccessor.Create(typeof(Hoge), "Beta");
を
PropertyAccessor<Hoge, int> alpha = PropertyAccessor<Hoge, int>.Create(typeof(Hoge), "Alpha");
PropertyAccessor<Hoge, string> beta = PropertyAccessor<Hoge, string>.Create(typeof(Hoge), "Beta");
こんな風にしてやると、完全に型指定状態になって、
1アクセス5nsくらいとか爆速になる。
とはいっても、ORマッパーみたいな用途じゃ結局はobjectで扱うしかないけどな。
0113デフォルトの名無しさん
2010/05/28(金) 00:22:09すげえ! これで採用できる目処が整った。
今日の範囲だと.NET系の別言語で実装したんだけど
正直C#と比べて利点があまりないので、ORM周りはC#で実装しなおすかもしれない。
こんな感じで使用する。
class Book : TableBase
{
[Field(FieldType.Text)]
public string Name;
[Field(FieldType.Integer)]
public int price;
}
var book = new Book(){Name = "tech", price = 113};
cursor.Save(book); // INSERT TABLE
0114デフォルトの名無しさん
2010/05/28(金) 00:26:13>>111のやり方をフィールドに適用するのは原理上無理
0115デフォルトの名無しさん
2010/05/28(金) 00:54:58問題ない。ちょっといじったらプロパティ、フィールド両対応になったよ。
0116デフォルトの名無しさん
2010/05/28(金) 01:23:11なんとなくコード生成マクロみたいなのを作れば済みそうな気がするんですが・・・
0117デフォルトの名無しさん
2010/05/28(金) 01:32:34わからないのでROMしてたんだが、リフレクションってもしかして
ビューワーなんかのプラグイン認識なんかで使う感じなのかな?
あれってどうやってるんだろうと前から思ってたんだが
0118デフォルトの名無しさん
2010/05/28(金) 01:51:40動的にアセンブリを読み込んで、
プラグイン用のインターフェース実装してるやつを探して、
インスタンスを作成する。
これ全部リフレクション
.NET4でプラグイン機能実装するならMEFの方が便利だけどね。
0119デフォルトの名無しさん
2010/05/28(金) 01:59:27なるほど〜
ありがとう
長年の疑問が解けたわw
0120デフォルトの名無しさん
2010/05/28(金) 02:59:13変更に関しては下記URLを参考に出来そうなのですが、フォーム上から新たな設定項目を追加するにはどうしたらいいのでしょうか?
全く違う方法でも構わないので教えてください
http://dobon.net/vb/dotnet/programing/mysettings.html#section1
0121デフォルトの名無しさん
2010/05/28(金) 03:30:330122デフォルトの名無しさん
2010/05/28(金) 03:33:14たぶんあれだろ
デザイナーが項目差し込んでるように自分のプログラムでも
項目増やしたいんだろうと思うんだけどさw
実装面倒そうだよね
0123デフォルトの名無しさん
2010/05/28(金) 03:34:09フォーム上でツリービューにノードを追加してそれを次回起動時にも記憶出来るようにしたいんです
0124デフォルトの名無しさん
2010/05/28(金) 08:04:46もっと単純に指定したプロパティの値の読み書きをできたりする
フィールド・メソッド・プロパティ・インターフェースとか基本的な部分に動的にアクセスできる
0125デフォルトの名無しさん
2010/05/28(金) 11:37:00基本的にはそういう機能を実現したフォームを自前で実装するしかないだろうな。
あるいは、流用出来そうなオープンソースのプロダクトを探すか。
0126デフォルトの名無しさん
2010/05/28(金) 11:39:47適当にXMLででも保存すりゃいいじゃない
0127デフォルトの名無しさん
2010/05/28(金) 12:41:22Webブラウザを使って、
<input name="title" id="title" tabindex="1" value="" maxlength="255" mt:watch-change="1" onkeyup="rebasename(this)" />
に「テスト」とかと入れたいです。
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate(URL);
}
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
HtmlElement HE = webBrowser.Document.GetElementById("title");
HE.InnerText = "テスト";
}
実行すると、
HtmlElement HE = webBrowser1.Document.GetElementById("title");
の行で、HEがnullのままになります。
HtmlElement HE = webBrowser.Document.GetElementById("title");
HE.InnerText = "テスト";
の2行がなければ、ふつうにページを表示できます。
アドバイスお願いします。
0128デフォルトの名無しさん
2010/05/28(金) 12:57:470129デフォルトの名無しさん
2010/05/28(金) 13:02:39DocumentCompletedで
0130デフォルトの名無しさん
2010/05/28(金) 13:08:200131デフォルトの名無しさん
2010/05/28(金) 13:26:24HtmlElement HE = webBrowser1.Document.All.GetElementByID("title");
としてみたところ、
'System.Windows.Forms.HtmlElementCollection' に
'GetElementByID' の定義が含まれておらず、
型 'System.Windows.Forms.HtmlElementCollection' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。
using ディレクティブまたはアセンブリ参照が不足しています。
とエラーでした。
>>129
なるほど!
しかし、
DocumentCompletedでも症状が変わりませんでした。
0132デフォルトの名無しさん
2010/05/28(金) 13:31:00もうちょっと一意性を確保した方がいいぞ
0133デフォルトの名無しさん
2010/05/28(金) 13:37:32まあ時代的なものでしょ
大体は自動送信とかそんなんだろうけど
0134デフォルトの名無しさん
2010/05/28(金) 13:37:56private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("https://login.yahoo.co.jp/config/login");
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlElement hoge;
hoge = webBrowser1.Document.GetElementById("username");
hoge.SetAttribute("value", "hoge");
}
0135デフォルトの名無しさん
2010/05/28(金) 13:41:03この分野でのC#の利点は、ランタイムが事実上標準で入ってることとGUIが作りやすいことだけ。
0136デフォルトの名無しさん
2010/05/28(金) 13:43:19DocumentCompletedだと数回呼ばれない?
0137デフォルトの名無しさん
2010/05/28(金) 13:44:310138デフォルトの名無しさん
2010/05/28(金) 13:44:47はjsのまま埋め込みだな
0139136
2010/05/28(金) 13:46:07別人だって
DocumentCompletedで処理するのがいいか
Navigatedで処理するのがいいか
0140デフォルトの名無しさん
2010/05/28(金) 13:48:16動けばよい
0141デフォルトの名無しさん
2010/05/28(金) 13:57:080142デフォルトの名無しさん
2010/05/28(金) 14:02:350143デフォルトの名無しさん
2010/05/28(金) 14:03:46webBrowser1.Document.Forms[0].InvokeMember("submit");
0144デフォルトの名無しさん
2010/05/28(金) 17:02:08FirefoxでFirebug使ってやりとりしてる内容をトレースして
そのままエミュレートしてやった
Amebaだけど
0145デフォルトの名無しさん
2010/05/28(金) 17:19:12どうやったの?
デリゲートにバインドするにはメソッドが無いといけないから
フィールドだけでは絶対に無理なわけだが
>>111の方法は値の出し入れ時にリフレクションを使わないのがメリットなんで
フィールドでも同じことがしたいならLINQのExpression TreeかILGeneratorで
アクセサメソッドを動的に生成してやらないとできないはずだけど
そこまでくると「ちょっといじった」とは言わないでしょう
0146デフォルトの名無しさん
2010/05/28(金) 17:22:18どうって、getter/setterの代わりにラムダ式を指定してあげただけなんだけど。
ちゃんと動作も確認したぞ。
0147デフォルトの名無しさん
2010/05/28(金) 17:23:29ふーん
0148デフォルトの名無しさん
2010/05/28(金) 17:28:47public PropertyAccessor(FieldInfo field)
{
Getter = (TTarget x) => { return (TProperty)field.GetValue(x); };
Setter = (TTarget x, TProperty y) => { field.SetValue(x, y); };
}
0149デフォルトの名無しさん
2010/05/28(金) 17:34:08>>111みたいなややこしいことしなくても最初から全部リフレクションでやるのと一緒
> >>111の方法は値の出し入れ時にリフレクションを使わないのがメリット
0150デフォルトの名無しさん
2010/05/28(金) 17:51:19高速な方法があるならそれを使えばいいし、
内容なら普通にやればいいのさ。
0151デフォルトの名無しさん
2010/05/28(金) 17:56:40.NET2.0ターゲットみたいだからDynamicMethod一択
いわゆるLCG
IL書き下してGetterとSetterを動的に生成する
0152デフォルトの名無しさん
2010/05/28(金) 18:25:20問答無用で最速
0153デフォルトの名無しさん
2010/05/28(金) 18:47:33普通とは?
0154デフォルトの名無しさん
2010/05/28(金) 18:53:22(ライブラリから見て)外部のオブジェクトに
動的にアクセスするには、リフレクションを使うのが普通。
0155デフォルトの名無しさん
2010/05/28(金) 18:59:31上の議論はすべてその後のキャッシュ手法の話
0156デフォルトの名無しさん
2010/05/29(土) 01:19:23今更だけどこのソースのAdaptedAccessorクラスってなんのためにあるの?
Adapterパターンと関係あるの?
0157デフォルトの名無しさん
2010/05/29(土) 01:27:56サンプル実行してデバッガで追っかけてご覧。
0158デフォルトの名無しさん
2010/05/29(土) 02:06:23単にobject型として扱うだけならいらない。
普通に型指定されたターゲットやプロパティへのアクセスでもいらない。
必要なのはちょっと特殊なケースなんだよ。
たとえばTableAdapterの基底クラスから利用する場合<わかる人にはわかるかも。
0159デフォルトの名無しさん
2010/05/29(土) 02:10:44SqlTransactionとかOracleTransactionとか、実際の型は実行時まで想定できないけど
とにかくDbTransaction派生の型で定義されてるプロパティに、DbTransaction型としてアクセスしたい場合とか。
まあ限られたケースだよ。
※もっとも>>111の例はpublicなプロパティしか想定してないので、どっちにしてもこのままじゃダメなんだが。
0160デフォルトの名無しさん
2010/05/29(土) 02:26:49PropertyAccessorクラスとして扱う場合は不要だが、
例えば PropertyAccessor<TableBase, object> クラスとして扱いたい場合なんかに使われる。
>>111の
PropertyAccessor alpha = PropertyAccessor.Create(typeof(Hoge), "Alpha");
↓
PropertyAccessor<Hoge, object> alpha = PropertyAccessor<Hoge, object>.Create(typeof(Hoge), "Alpha");
みたいにして試せばどう使われるのか分かる。
0161デフォルトの名無しさん
2010/05/29(土) 19:01:38List<string> lists = new List<string>();
lists.Add("http://www.***.com" + "\t" + text);
のようにすると、個別にURLとtextを取り出せないでいます。
0162デフォルトの名無しさん
2010/05/29(土) 19:09:020163136
2010/05/29(土) 19:11:43そりゃ全部繋がってるからねえ
0164デフォルトの名無しさん
2010/05/29(土) 19:12:410165136
2010/05/29(土) 19:14:37http://www.atmarkit.co.jp/fdotnet/dotnettips/429dictionary/dictionary.html
0166デフォルトの名無しさん
2010/05/29(土) 19:20:21むしろURLとtitleをフィールドに持たせたstructなりclassを用意して、
List<HomePage> lists;
などとする。
0167デフォルトの名無しさん
2010/05/29(土) 19:26:22自作クラスをリストで管理してる場合に自作クラス内の特定項目で
検索かける場合は泥臭く頭からクラスを取り出しては項目をチェックするしかないのかな?
0168デフォルトの名無しさん
2010/05/29(土) 19:34:44そのためのLINQ。
.NET 2.0時代のコードで頑張りたいなら、
Dictionaryでその特定のフィールドの値で辞書を引けるようにするといい。
0169デフォルトの名無しさん
2010/05/29(土) 19:35:100171デフォルトの名無しさん
2010/05/29(土) 19:39:25泥臭いかそれ?こんな感じでいいんだが。
var.found = list.Find((x) => x.Prop == "...");
あるいは
var found = list.FirstOrDefault((x) => x.Prop == "...");
LogO^2 が気になるんなら、List<Item> とは別に
private Dictionary<string, Item> propToItem;
とか用意して
var item = propToItem["..."};
0172171
2010/05/29(土) 19:45:000173デフォルトの名無しさん
2010/05/29(土) 19:45:23dynamic doc = webBrowser.Document.DomDocument;
string selectedText = doc.selection.createRange().text;
0174デフォルトの名無しさん
2010/05/29(土) 20:41:39インテリセンスは効かなくなったね。
0175デフォルトの名無しさん
2010/05/29(土) 21:27:06最後にdynamicに置き換えてDLLサイズ縮めるとかやってもいいかもねぇ。
0176デフォルトの名無しさん
2010/05/29(土) 23:16:340177デフォルトの名無しさん
2010/05/29(土) 23:18:30一般的に動的言語で作成したプログラムを静的型付き言語から呼び出すことは非常に難しい。
ただC#にはイベントと言う便利な概念があるので、
C#からIronPython/Rubyへの通知はこれを使うといい。
0178デフォルトの名無しさん
2010/05/29(土) 23:51:37dynamic使ってあたかも普通のオブジェクトのように扱える
0179デフォルトの名無しさん
2010/05/29(土) 23:59:02おお! その手があったか!
ずっと.NET 2.0+DLRで動かしてたから思いつかなかったわ。
どうもありがとう。.NET 4.0すげえ!
0180デフォルトの名無しさん
2010/05/29(土) 23:59:11scriptEngine.Operations.InvokeMember(hoge, "hogeMethod", a, b)
みたいな感じだったかな
0181デフォルトの名無しさん
2010/05/30(日) 00:16:19C#やCLRのバージョンは4.0
0182デフォルトの名無しさん
2010/05/30(日) 00:34:25COMコンポーネントを呼び出して使っているならともかく、
C#側を従、動的言語を主として実装したシステムで
C#側から動的言語側を呼び出そうとしたら
目的のオブジェクトまで階層が深くなっちゃうので大変だし、
決してその呼出は速くない。
(もちろん動的言語側で何がしか必要なオブジェクトを直接返す機構を実装する方法もあるが)
数多く呼び出したいならイベントハンドラ越しに呼び出すのが最も効率がいい。
>>181
いくつか例外はあるが、マイクロソフトとしては.NET Framework 4という呼称に統一してるみたいだね。
外部の記事ではほとんど全く気にされてないみたいだけど、固有名詞だからなぁ。注意します。
例外の例(この記事の一番後ろの章)
http://msdn.microsoft.com/ja-jp/magazine/ee405899.aspx
0183デフォルトの名無しさん
2010/05/30(日) 01:01:31余計な相互の取り決めを必要としないのは大きなメリットだと思うよ
0184デフォルトの名無しさん
2010/05/30(日) 01:06:26単純にパフォーマンス上の問題。
1秒間に60回C#側からDLRをぶん回したら結構来ちゃうのよ。
調べたら境界面をチューンするのが効果的だと分かったのでこんなやり方に。
0185デフォルトの名無しさん
2010/05/30(日) 01:46:54dynamic使ってもダメ?
C# 4.0のdynamic、っていうか、CallSiteによる動的コード生成結果の
キャッシュ機構って結構賢かったはずだけど。
あと、Python側で.NETのインターフェースを継承とかやれば早くならないかな?
0186デフォルトの名無しさん
2010/05/30(日) 01:53:30スマン。.NET 4はまだ未検証なんでわからん。
(ランタイムを配ることになるのでめどい)
C#側でインターフェイス書いて動的言語側でそれを継承/実装してあげるのが一番素直かもしれない。
速度的にはイベントハンドラ越しとさほど変わらないと思うが、その方が素直だよな。
今はDLRを捨てて組み直してるところなんだが、
初めからそうしておけば(C#のフレームワーク側にinterfaceを用意)
よかったと思ってるところ。
0187デフォルトの名無しさん
2010/05/30(日) 02:01:45イベントかdynamic経由で呼び出せるのか
0188デフォルトの名無しさん
2010/05/30(日) 02:17:430189デフォルトの名無しさん
2010/05/30(日) 03:36:460190デフォルトの名無しさん
2010/05/30(日) 04:21:410191デフォルトの名無しさん
2010/05/30(日) 08:26:24文字列の最後の文字を削除したい場合などはどうすればいいんですか?
0192デフォルトの名無しさん
2010/05/30(日) 08:32:51string a = "b" + "c";
a = a.Remove(a.Length - 1);
0193デフォルトの名無しさん
2010/05/30(日) 08:36:35なるほど、こんな方法があったのですね
助かりました。ありがとうございます
0194デフォルトの名無しさん
2010/05/30(日) 09:51:33うむ
0195デフォルトの名無しさん
2010/05/30(日) 13:35:014はまだ普及してませんかね?
0196デフォルトの名無しさん
2010/05/30(日) 13:40:460197デフォルトの名無しさん
2010/05/30(日) 13:48:130198デフォルトの名無しさん
2010/05/30(日) 13:50:34ランタイム入れるの結構簡単だし、
標準インストールにこだわるんでなければ別に4でいいだろ。
4のClient Profileのランタイムサイズ結構小さいよ。
標準インストールにこだわりたいんなら、XPターゲットは2、Vista以降なら3.5。
0199デフォルトの名無しさん
2010/05/30(日) 14:23:427が3.5SP1
0200デフォルトの名無しさん
2010/05/30(日) 15:55:01そしてXPはsp3に至っても、標準では.NET入ってない :(
0201デフォルトの名無しさん
2010/05/30(日) 18:59:27でも4ってクライアントプロファイルあんま意味ねーだろってくらい差がない。
0202デフォルトの名無しさん
2010/05/30(日) 19:38:390203デフォルトの名無しさん
2010/05/30(日) 19:51:40というか3.0と3.5は2.0にdll追加しただけのものだから特別だ
0204デフォルトの名無しさん
2010/05/30(日) 20:49:24\(^o^)/オワタ
0205デフォルトの名無しさん
2010/05/30(日) 20:52:130206デフォルトの名無しさん
2010/05/30(日) 20:53:460207デフォルトの名無しさん
2010/05/30(日) 21:03:350208デフォルトの名無しさん
2010/05/30(日) 21:06:51実際、手元の.NET2.0〜3.5のやつを全部.NET4で動かしてるけどちゃんと動いてる。
0209デフォルトの名無しさん
2010/05/30(日) 21:09:470210デフォルトの名無しさん
2010/05/30(日) 21:22:24ヘルプの.NET Framework 4 の新機能ってページ
>旧バージョンの .NET Framework でビルドされたアプリケーションを実行するために、
>.NET Framework 4 の共通言語ランタイム バージョンが自動的に使用されることはありません。
>.NET Framework 4 で旧バージョンのアプリケーションを実行するには、
>Visual Studio のプロジェクトのプロパティに指定されたターゲット バージョンの .NET Framework を使用して、
>アプリケーションをコンパイルする必要があります。
>または、アプリケーション構成ファイルの <supportedRuntime> 要素を使用して、サポートするランタイムを指定できます。
さらに<supportedRuntime>のページ
>.NET Framework Version 1.1 または .NET Framework Version 2.0 で作成されたアプリケーションまたはコンポーネントを
>.NET Framework Version 4 で実行するには、サポートされるランタイムのリストで .NET Framework 4 を指定するだけでは不十分です。
>さらに、構成ファイル内の <startup> 要素で、 useLegacyV2RuntimeActivationPolicy 属性を true に設定する必要があります。
>設定しない場合、サポートされるランタイムのリストで、.NET Framework 4 よりも低いバージョンの
>.NET Framework のうち最上位バージョンが検索されます。
>.NET Framework 4 がリストにある唯一のランタイムである場合、読み込みは失敗します。
最低でも*.configを設定してやらないといけないんじゃないの?
0211デフォルトの名無しさん
2010/05/30(日) 22:01:59誤解を招く言い方まずい。
.NET 4、.NET 2.0 からランタイム含め作り直してるって言っても、
表立っての仕様は互換性ある。
パフォーマンス上の観点から内部的に実装しなおしただけ。
4 より前のコードもほとんど動くはず。
0212デフォルトの名無しさん
2010/05/30(日) 22:09:430213デフォルトの名無しさん
2010/05/30(日) 22:17:40.NET 2〜3.5のアプリを.NET4で動かそうとしたら、
要するに.NET4向けに再ビルドしたあとで、
アプリケーション構成ファイルに設定追加が必要ということなんだな?
0214デフォルトの名無しさん
2010/05/30(日) 22:23:00再ビルドせずに.NET4で動かしたい場合の話
0215デフォルトの名無しさん
2010/05/30(日) 22:23:28違う
再ビルドとsupportedRuntimeはどちらか片方よ
つか
> .NET4向けに再ビルドしたあとで、
これで.NET 4で動かなかったら問題だろw
// 動作が変わってて意図したとおりに動かない可能性はあるけども
0216デフォルトの名無しさん
2010/05/30(日) 22:25:490217デフォルトの名無しさん
2010/05/30(日) 22:27:53すでに2.0ターゲットでリリースされたアプリケーションをユーザが勝手に4で動かして
不具合が出て開発元に文句付けられたりしたら困るからな
0218デフォルトの名無しさん
2010/05/30(日) 22:28:19なるほど。再ビルドするなら完璧なわけね。
しかし、自分で書いてるコードはともかく、利用してる外部ライブラリ関係も全部.NET 4で再ビルドが必要ってこと?
基本的にオープンソースで固めてるから不可能ではないけど、
かなり面倒だな……。
0219デフォルトの名無しさん
2010/05/30(日) 22:30:51そのバージョンの.net使うようになってるはずだから
問題になるとしたら最ビルドした時だけじゃないかな
0220デフォルトの名無しさん
2010/05/30(日) 23:10:26リビルドはいらない
4と2のCLRを同一プロセスにロードできるようになったというのはライブラリには関係ない
0221208
2010/05/30(日) 23:13:56動作検証用に最新のCLRを使わせる機能が用意されてる。(.NET2.0の頃からあって1.0/1.1からの過渡期に使ってた)
全部に適用されちゃうので>>210の書いてるようにApp.configで設定する方が望ましいが、数が多くて個別設定が面倒なので…
http://msdn.microsoft.com/ja-jp/library/ms994387.aspx
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
"OnlyUseLatestCLR"=dword:00000001
※64bit使ってる人はWow6432Nodeも忘れないように
>>209
2.0〜3.5だけじゃなくて、1.0/1.1でも2.0で動いてたやつなら4でも動く
0222デフォルトの名無しさん
2010/05/30(日) 23:17:08問題はテストのコストだよな。
まあ、お客さんに.NET2.0をアンインストールしないようにしてもらえばいい、
というか、意味もなくそんなことするお客さんもいないけど。
0223デフォルトの名無しさん
2010/05/30(日) 23:30:56これが詳しい
アプリケーションがCLR4ならDLLはそのターゲットバージョンにかかわらずすべてCLR4で動く
C++/CLIは死亡
0224デフォルトの名無しさん
2010/05/30(日) 23:48:46あるURLにPOSTした結果を取得したいのですが
どのようにすればいいか、そもそも可能かどうかすら見当がつきません。
流れとしては
1.データを入力しポストバック
2.クリックイベントであるURL名にクエリ文字をつけてPOST
3.結果を取得
4.結果をDBに保存
という流れになると思われます。
具体的にいえば
GoogleMapのジオコーディングを行い住所データを軽度・緯度に変換して保存したいのです。
JavaScriptでやればいいのでしょうが出来るだけサーバサイドでやりたいと考えお伺いしてみました。
0225デフォルトの名無しさん
2010/05/31(月) 00:03:050226デフォルトの名無しさん
2010/05/31(月) 00:40:03HttpWebRequestを使えば、POSTしてその結果を受信できる。
DOBONさんのところを見ろ。
0227デフォルトの名無しさん
2010/05/31(月) 07:09:54http://ideone.com/rGhe5
(コントロール側でダブルバッファリングを有効にし、BeginDraw()を呼び出す段階でOnPaintから渡されたグラフィックスオブジェクトを渡している)
だが、これでも重く感じるときがある
これより早くする方法はない?
0228デフォルトの名無しさん
2010/05/31(月) 07:13:23呼び出し側は各行ごとにTextSpilitterでトークンごとに分け、GetTokenType()で色付けするべきトークンかどうか調べた後、Graphics.DrawString()に渡しています
http://ideone.com/7rEYY
0229デフォルトの名無しさん
2010/05/31(月) 08:18:35The Google Geocoding API - Google Maps API Web Services - Google Code
ttp://code.google.com/intl/ja/apis/maps/documentation/geocoding/index.html#ReverseGeocoding
これ使うんならPOSTじゃなくてGETじゃないの?
日本語でしかもAPIキーなしで取れるようになってたんだね
試しに近所の住所でテストしてみたら住所→座標も座標→住所もあっさり取れた
Android用に使いたかった機能だからいいこと知れた
わかってるとは思うけど、HttpUtility.UrlEncodeとかでエンコードだけしてやればあとのurlは簡単
0230デフォルトの名無しさん
2010/05/31(月) 08:47:00予想できたことだけど略字だとだめだった
一致したところまでの情報が返るわけでもなく、ZERO_RESULTSとしか返ってこない
番地は半角でも全角でも漢数字でもok
区切りがよければ間に空白が入ってもok
「県」とか「市」っていう文字はそこに空白があればなくてもok
「町」はないとだめみたい
確実に日本語で返して欲しいならlanguage=jaは必要
思ったより柔軟
0231デフォルトの名無しさん
2010/05/31(月) 11:40:11レスが遅くなりました。
ありがとうございます。
皆様のおっしゃるようにやってみたところデータが取得できました。
レスポンスデータを見れば変換ができたかどうかも判別可能っぽいので
やりたいことは出来そうです。
皆様ありがとうございました。
0232デフォルトの名無しさん
2010/05/31(月) 15:36:55それ以外のどんな努力も無意味になる圧倒的な速度
0233デフォルトの名無しさん
2010/05/31(月) 17:10:23であるからこそ、WPFはDirect3D(9)を全面的に採用しているわけで。
0234デフォルトの名無しさん
2010/05/31(月) 17:48:300235デフォルトの名無しさん
2010/05/31(月) 18:00:33c#ってmono(?)とかいうやつでwindows以外のプラットフォームでも
同じコードで動く仕組みなんだよね?
direct3dも他のプラットフォームで動くようにできてるの?
0236デフォルトの名無しさん
2010/05/31(月) 18:02:150237デフォルトの名無しさん
2010/05/31(月) 18:02:29Direct3Dもその一つ
0238デフォルトの名無しさん
2010/05/31(月) 18:10:500239デフォルトの名無しさん
2010/05/31(月) 18:15:06クラスプラットフォームを目指すなら、DirectXではなくOpenGLを使用するとよい。
ライブラリはこの辺のものを使う。
http://www.nbrains.net/php/pukiwiki/index.php?OpenGL%2FLibrary#Base_OSS_DotNET
0240デフォルトの名無しさん
2010/05/31(月) 18:19:08なるほどー。
みんなありがとう。
0241デフォルトの名無しさん
2010/05/31(月) 19:03:510242デフォルトの名無しさん
2010/05/31(月) 19:09:410243デフォルトの名無しさん
2010/05/31(月) 23:41:070244デフォルトの名無しさん
2010/06/01(火) 00:05:17やってみろ
0245デフォルトの名無しさん
2010/06/01(火) 00:12:490246デフォルトの名無しさん
2010/06/01(火) 00:43:390247↑
2010/06/01(火) 00:50:200248デフォルトの名無しさん
2010/06/01(火) 01:09:210249デフォルトの名無しさん
2010/06/01(火) 01:50:11ありがとう
0250デフォルトの名無しさん
2010/06/01(火) 05:46:46テキストボックスの場合には、selectedtextがありますが。
0251デフォルトの名無しさん
2010/06/01(火) 09:34:520252デフォルトの名無しさん
2010/06/01(火) 10:47:04何を聞きたいのかわからないけど、>>173で選択されてるテキストは取れる
0253デフォルトの名無しさん
2010/06/01(火) 10:50:27dynamicって.netのバージョンいくつからだっけ?
0254デフォルトの名無しさん
2010/06/01(火) 10:52:01よく知らんが
0255デフォルトの名無しさん
2010/06/01(火) 10:56:070256デフォルトの名無しさん
2010/06/01(火) 11:03:340257デフォルトの名無しさん
2010/06/01(火) 12:24:110258デフォルトの名無しさん
2010/06/01(火) 12:31:050259デフォルトの名無しさん
2010/06/01(火) 12:31:460260デフォルトの名無しさん
2010/06/01(火) 12:58:29.NET4じゃないなら、COMを参照登録していろんなキャスト入れれば出来るよ
0262デフォルトの名無しさん
2010/06/01(火) 16:33:39COM参照をわざわざ書くのがいやだったので
書かなくて済んだのがいいだよw
0263デフォルトの名無しさん
2010/06/01(火) 16:34:260264デフォルトの名無しさん
2010/06/01(火) 16:57:370265デフォルトの名無しさん
2010/06/01(火) 17:12:10数十秒でインストール完了する超軽量.NET
0266デフォルトの名無しさん
2010/06/01(火) 20:38:24だべ
0267デフォルトの名無しさん
2010/06/01(火) 22:12:080268デフォルトの名無しさん
2010/06/01(火) 22:19:07その質問は内容が非常に問題がある。
Silverligthもれっきとした.NET Frameworkファミリーの一つで、
「プリウスはトヨタ車を内包してるの?」というのと同じ。
SilverlightもCLIの一実装だからBase Class Libraryが含まれていることは間違いない。
しかしそれ以外に何が入ってるかは調べる必要がある。
例えばWindows.Formsとかは入ってない。
0269デフォルトの名無しさん
2010/06/02(水) 02:42:480270デフォルトの名無しさん
2010/06/02(水) 02:47:12ildasm.exeじゃ駄目ですか?直接とは言いがたいけど。
0271デフォルトの名無しさん
2010/06/02(水) 04:24:13単に作成するだけならEmit使えばいいけど。
0272デフォルトの名無しさん
2010/06/02(水) 06:03:560273デフォルトの名無しさん
2010/06/02(水) 07:58:57意味がわからない。SharpDevelop使えば
フリーソフトの範囲で直接MSILのプロジェクト作れるのに。
0274デフォルトの名無しさん
2010/06/02(水) 08:18:55とりあえず、IL 逆アセンブラー通してアセンブリソースに戻して、編集して IL アセンブラーでできるけども。
0275デフォルトの名無しさん
2010/06/02(水) 11:24:59class Huga
{
public int ID;
public string Name;
}
クラスの配列からNameを抽出してstringの配列を生成するスマートな方法ないかしら
とりあえず今はHuga[]をforeachで回してList<string>にAddし、ToArrayして取得してます
0276デフォルトの名無しさん
2010/06/02(水) 11:34:58Array.ConvertAll(hoge, x => x.Name)
0277デフォルトの名無しさん
2010/06/02(水) 11:57:20現状2.0しか使えないけど覚えときますね。ありがとん
0278デフォルトの名無しさん
2010/06/02(水) 13:12:060279278
2010/06/02(水) 13:23:16スレ汚し失礼しました
0280デフォルトの名無しさん
2010/06/02(水) 13:33:250281デフォルトの名無しさん
2010/06/02(水) 13:37:510282デフォルトの名無しさん
2010/06/02(水) 19:38:36((((;゚Д゚))))ガクガクブルブル
0283デフォルトの名無しさん
2010/06/02(水) 19:42:300284デフォルトの名無しさん
2010/06/02(水) 20:25:55やろうと思えば、.NETだけ2.0で、C# は3.0使えるよ。
LINQ相当の関数自分で用意すれば、だけど。
0285デフォルトの名無しさん
2010/06/02(水) 21:08:38うん。ありがとん
0286デフォルトの名無しさん
2010/06/03(木) 01:06:23276の下のなんかはラムダ式じゃなくて
delegate(Huga x){return huga.Name} というような感じでなら2.0でいけるわけで。
0287デフォルトの名無しさん
2010/06/03(木) 04:20:460288デフォルトの名無しさん
2010/06/03(木) 08:37:32エクスプローラもどきの簡易ファイラーを作ってたんですが、
リストビューのアイコン表示出来るのが魅力的でリストビューに乗り換えてみたら
SelectedItemがなくて色々不便で、今WPFアプリケーションというのを見てたら
リストビューにSelectedItemがあって便利そうだったので乗り換えようかな・・
なんて考えてるんですがこの考えは浅はかですか?
0289デフォルトの名無しさん
2010/06/03(木) 08:47:58いいんじゃない?勉強はひつようだけど
0290デフォルトの名無しさん
2010/06/03(木) 09:43:59レスありがとです
とりあえずトライしてみます
0291デフォルトの名無しさん
2010/06/03(木) 09:58:340292デフォルトの名無しさん
2010/06/03(木) 10:17:26全く違う話だけど自分もファイラー作ってて、レスポンスが悪いのに悩んでた
いろいろ調べたらSHGetFileInfoでアイコンを取るのに時間がかかってたことが判明
そこだけ別スレッドで取るようにして後で再描画するようにしたら、もの凄く快適になった
参考までに。常識だったらごめん
0293デフォルトの名無しさん
2010/06/03(木) 11:33:04iTextSharpを使用して帳票を作りたいのですが、フォントをセットするときにフルパスで指定しなければいけないようです。
フォントのパスをC:\…と切ってもいいのですができればもっとスマートな方法を探しています。
APIのSHGetSpecialFolderPathを使用するしか方法はありませんか?
0294デフォルトの名無しさん
2010/06/03(木) 11:42:57System.Environment.ExpandEnvironmentVariables("%windir%\Fonts")
0295デフォルトの名無しさん
2010/06/03(木) 11:46:30おぉ!
ドトネト標準系で行けるならこっちのがイイ感じです。
わざわざAPI宣言しなくていいし
ありがとうございました。
0296デフォルトの名無しさん
2010/06/03(木) 13:05:27ってのも。
0297294
2010/06/03(木) 13:14:330298デフォルトの名無しさん
2010/06/03(木) 13:18:56Fontsなんてなくね?
0299デフォルトの名無しさん
2010/06/03(木) 13:28:32.NET4でSystem.Environment.SpecialFolderの定義が増えたから
それより前だとないかも。
0300デフォルトの名無しさん
2010/06/03(木) 14:01:120301デフォルトの名無しさん
2010/06/03(木) 15:32:53マジか!
3.5捨ててくる
0302デフォルトの名無しさん
2010/06/03(木) 16:07:240303デフォルトの名無しさん
2010/06/03(木) 16:15:04当然タイムカードには記録されていない。
0304デフォルトの名無しさん
2010/06/03(木) 16:25:16次にお前はVS2010重ぇと言うっ!!
0305デフォルトの名無しさん
2010/06/03(木) 16:38:19上司でございます。
皆様に部下の>>301が大変なご迷惑をおかけしたようで
本人に代わってお詫び申し上げます。
それでは失礼いたします。
0306デフォルトの名無しさん
2010/06/03(木) 16:47:000307デフォルトの名無しさん
2010/06/03(木) 16:54:500308デフォルトの名無しさん
2010/06/03(木) 17:02:150309デフォルトの名無しさん
2010/06/03(木) 17:25:560310デフォルトの名無しさん
2010/06/03(木) 19:54:27体力勝負だし
0311デフォルトの名無しさん
2010/06/03(木) 20:33:270312デフォルトの名無しさん
2010/06/03(木) 20:39:19技術に触れない管理職なんていやだ!と10年前はほざいていたがかったるいな
0313デフォルトの名無しさん
2010/06/03(木) 20:51:490314デフォルトの名無しさん
2010/06/03(木) 21:05:33という記事を日経BPのPC Onlineで読んだ気がする
0315デフォルトの名無しさん
2010/06/03(木) 21:38:160316デフォルトの名無しさん
2010/06/03(木) 21:46:2735歳定年説ですね分かります
0317デフォルトの名無しさん
2010/06/03(木) 22:14:100318デフォルトの名無しさん
2010/06/03(木) 22:46:45上記URLを参考に下記URLのように書いて実行してみたんですが、ボタン2を押すと5秒間ボタン1が押せません。
ボタン2は別スレッドで実行されているからボタン1は押せるという認識なんですが、何が間違っているんでしょうか?
http://ideone.com/hUeHH
0319デフォルトの名無しさん
2010/06/03(木) 22:57:130320デフォルトの名無しさん
2010/06/03(木) 22:58:24この短いコードで何か色々と間違っていて
どこから突っ込んでいいのか分からないんだが、
とりあえずInvokeしたらUIスレッドで動くんだからその間UIが止まるのは当たり前だろ?
まず、重い処理があるならBackgroundWorkerを使おうよ。
0322デフォルトの名無しさん
2010/06/04(金) 01:35:55うん
0323デフォルトの名無しさん
2010/06/04(金) 20:09:071回目の接続の時は問題なくcallbackが呼ばれるのですが2回目以降は呼ばれません。
どうしたら2回目も呼ばれるようになるでしょうか?。
接続→callback→callback終了で切断→再接続→callback(ここが呼ばれません)
0324デフォルトの名無しさん
2010/06/04(金) 20:48:280325323
2010/06/04(金) 21:18:03ループしているのに理想どおりに動かないと思ったら使い方を間違えてたw。
0326デフォルトの名無しさん
2010/06/05(土) 05:21:290327デフォルトの名無しさん
2010/06/05(土) 22:38:06Application.Run(new Form_Base())のフォームから更にshowで呼び出しているフォームなのに全て終了して
しまうのが謎です。
エスパー求む!!。
0328デフォルトの名無しさん
2010/06/05(土) 22:40:06TCP周りの動作チェックでフォームなんか使うな。コンソールを使え。
0329デフォルトの名無しさん
2010/06/05(土) 22:41:43プロセス名が被ってるの(svchostとか)だとどうなんの?
コード書いてみたけどよくわからん。
0330デフォルトの名無しさん
2010/06/05(土) 22:52:410331デフォルトの名無しさん
2010/06/05(土) 23:16:30とりあえず"svchost""svchost#1""svchost#2"てな感じで区別されてるのはわかった。
0332デフォルトの名無しさん
2010/06/05(土) 23:22:49デバッガで止める例外を指定してなくて、何か例外が起きてるんじゃねえの
0333327
2010/06/06(日) 00:08:19ありがとん
0334デフォルトの名無しさん
2010/06/06(日) 12:42:400335デフォルトの名無しさん
2010/06/06(日) 12:44:050336デフォルトの名無しさん
2010/06/06(日) 12:44:220337デフォルトの名無しさん
2010/06/06(日) 13:24:13スキンに対応させたいのですが、そういう方法を分かりやすく説明しているサイトもしくは本はありませんか?
やりたいこと(優先度)
1.背景の変更
2.フォントの変更
3.ウィンドウの外見の変更
0338デフォルトの名無しさん
2010/06/06(日) 13:28:220339デフォルトの名無しさん
2010/06/06(日) 13:29:10やるならWPFだな
フレームワークのコンセプトとしてそういうのを重視してるからとっても簡単
0340デフォルトの名無しさん
2010/06/06(日) 14:37:33環境変数読めば、分かるOSやshellもあるが、
C#関係なさすぎる(.NETすら関係ない)ので、
他所でおねがいします。
0341デフォルトの名無しさん
2010/06/06(日) 15:00:25MSDNのフォーラムにその話題があるよ。
実はその問題の解決はかなり難しい。
0342デフォルトの名無しさん
2010/06/06(日) 15:23:56すっごいショボいけどPictureBoxの上にコントロール置きまくる仕様で
Formのサイズが固定なら簡単じゃね?背景だけだが
0343デフォルトの名無しさん
2010/06/06(日) 15:31:42背景付けてしまうと上に乗ってる全てのコントロールの外観を変えないと非常に見栄えが悪い
0344デフォルトの名無しさん
2010/06/06(日) 19:30:49この方法ならWinFormsでもいけるかもね。最初っからWPFの方がいいのは確かだけど。
ボタン配置はxmlにでもしてその都度動的に配置して。
0345デフォルトの名無しさん
2010/06/06(日) 22:44:19フォームのマウスアップダウンムーヴのイベントで全部拾って
座標で振り分けるという力業でやってもいい気がする
0346デフォルトの名無しさん
2010/06/06(日) 22:51:43labelにもクリックイベントは付くのでそこへ画像当てはめればいいんじゃね?
問題はだ・・・
透過情報を持った画像をボタンぽくする場合winformだと面倒じゃなかったっけ?
0347デフォルトの名無しさん
2010/06/07(月) 00:24:410348デフォルトの名無しさん
2010/06/07(月) 01:26:320349デフォルトの名無しさん
2010/06/07(月) 11:49:370350デフォルトの名無しさん
2010/06/07(月) 11:57:010351デフォルトの名無しさん
2010/06/07(月) 11:59:290352デフォルトの名無しさん
2010/06/07(月) 12:00:260353デフォルトの名無しさん
2010/06/07(月) 12:44:350354デフォルトの名無しさん
2010/06/07(月) 14:31:35の4項目をもつListをつくって、そこにそれぞれ項目を追加するには、
List<string> mailaddress = new List<string>();
のあと、どのようにすればよいですか?
SubItems.Add;
を使うのではないかと思うのですが。
たとえば、
hitomi ひとみ [email protected] 03-3333-3333
とかだったら?
0355デフォルトの名無しさん
2010/06/07(月) 14:33:40なんか間違ってるぞ
0356デフォルトの名無しさん
2010/06/07(月) 14:41:48そういうフィールドを追加したstructを定義する。
それをList<AddressInfo>で管理する。
0357デフォルトの名無しさん
2010/06/07(月) 14:45:360358デフォルトの名無しさん
2010/06/07(月) 15:24:230359デフォルトの名無しさん
2010/06/07(月) 15:49:29どう考えてもクラスにするべき
0360デフォルトの名無しさん
2010/06/07(月) 16:00:564項目を一時的に保持するだけならimmutableなstructでもいいように見えるけど。
0361デフォルトの名無しさん
2010/06/07(月) 16:06:34でも359も気にする必要のない所を気にして言ってるようなので
同じくズレてる
0362デフォルトの名無しさん
2010/06/07(月) 16:14:200363デフォルトの名無しさん
2010/06/07(月) 16:19:190364デフォルトの名無しさん
2010/06/07(月) 16:24:590365デフォルトの名無しさん
2010/06/07(月) 16:39:57354です。
どう定義するんでしょう?
List使うの初めてで、よくわからないでいます。
0366デフォルトの名無しさん
2010/06/07(月) 16:47:534項目を持つListじゃなくて4項目を持つclassなりstructを作って
それのListを作るんだよ。
0367デフォルトの名無しさん
2010/06/07(月) 17:01:05public class Sample ←構造体でもどっちでもいいよもう・・・
{
public string 名前;
public string ふりがな;
public string メールアドレス;
public string 電話番号;
}
private void hoge()
{
List<Sample> list = new List<Sample>();
Sample item = new Sample();
item .名前 = "ヴィータ";
item .ふりがな = "おれのよめ";
item .メールアドレス = "[email protected]";
item .電話番号 = "090-xxxx-xxxx";
list.Add(item);
}
0368デフォルトの名無しさん
2010/06/07(月) 17:16:24new {
名前 = "ヴィータ",
ふりがな = "おれのよめ",
メールアドレス = "[email protected]",
電話番号 = "090-xxxx-xxxx",
}
}.ToList();
0369デフォルトの名無しさん
2010/06/07(月) 19:21:03俺、結構使ってるんだが…。
0370デフォルトの名無しさん
2010/06/07(月) 19:23:05使ってるってことに驚いた
煽りじゃない
0371デフォルトの名無しさん
2010/06/07(月) 19:25:59相手はいやだと思うが・・
0372デフォルトの名無しさん
2010/06/07(月) 19:26:07大手でも国内の新規案件で使うケースは絶対あるから使う
0373デフォルトの名無しさん
2010/06/07(月) 19:26:330374デフォルトの名無しさん
2010/06/07(月) 19:27:10ちゃんと開発やってるなら使うだろw
0375デフォルトの名無しさん
2010/06/07(月) 19:30:12日本語使うの?w
0376デフォルトの名無しさん
2010/06/07(月) 19:32:120377デフォルトの名無しさん
2010/06/07(月) 19:33:03コメントも何もかも英語というなら使わないだろう
0378デフォルトの名無しさん
2010/06/07(月) 19:56:39VisualC#2010です。sijisで書いてて、読み込んだら盛大に文字化けしてる…。
0379デフォルトの名無しさん
2010/06/07(月) 19:59:00今頃気づいたわorz
あれって別名指定出来ないものなんかね?
0380デフォルトの名無しさん
2010/06/07(月) 23:09:19タイマー系のアプリ作ってるけどDispatcherTimerが10個を超えそうな勢い。
0381デフォルトの名無しさん
2010/06/07(月) 23:10:490382デフォルトの名無しさん
2010/06/07(月) 23:15:55いくつ作ってもWindowsネイティブのタイマは一つ
0383デフォルトの名無しさん
2010/06/07(月) 23:35:28もう、どうなのこれ?
この本こんな話ばっかなのか?
パフォーマンスがーって言って結局リフレクション使ってるし、わずかに速くなったって…
わずかのためにいったい何やってんだか…
ていうか状況設定が強引すぎて義都合主義で意味がない。
0384デフォルトの名無しさん
2010/06/07(月) 23:38:49おおそうなのか。安心して多用しますサンクス
0385デフォルトの名無しさん
2010/06/07(月) 23:42:10GUIをアニメーションさせたり適当な時間間隔で処理を実行したい場合に使うもの。精度を当てにしてはいけない。
0386デフォルトの名無しさん
2010/06/07(月) 23:44:020387デフォルトの名無しさん
2010/06/07(月) 23:46:41そんなにラムダ式が好きならExpression Tree使って動的コンパイルするくらいしろよ
0388デフォルトの名無しさん
2010/06/07(月) 23:47:321秒くらいのズレなら大丈夫なのと、イベントハンドラがUIスレッドで実行できて
便利なのでこれを使ってるんだけど、他にいい方法あったらぜひ教えてください。
0389デフォルトの名無しさん
2010/06/07(月) 23:48:53…
383は君宛じゃないとオモウヨ
0390デフォルトの名無しさん
2010/06/07(月) 23:55:22DispatcherTimerを使うなら、可能な限り短い間隔でハンドラが呼び出されるようにして
現在時刻を取得して前に処理を実行した時刻との差を求めて目的の時間以上経過していたら処理を行う。
呼び出し間隔は全く当てにしない。
まあスレッドタイマ使ってDispatcher.Invokeの方が楽かも
0391デフォルトの名無しさん
2010/06/07(月) 23:56:21潔癖すぎるよ
0392デフォルトの名無しさん
2010/06/08(火) 00:02:040393デフォルトの名無しさん
2010/06/08(火) 00:04:350394デフォルトの名無しさん
2010/06/08(火) 01:03:090395デフォルトの名無しさん
2010/06/08(火) 01:04:47遅延のことだけど、別スレッドからDispatcher.Invokeするのも、
結局UIスレッドの状態に左右されてしまうのではないでしょうか。
0396デフォルトの名無しさん
2010/06/08(火) 01:06:50>>394の話だな。
0397デフォルトの名無しさん
2010/06/08(火) 05:25:360398デフォルトの名無しさん
2010/06/08(火) 08:04:49.Net4になってから文字コード指定のUrlのエンコードが出来ません!
(HttpUtilityが消えてる!Uriのものは文字コード指定出来ない!)
みんなはどうやって解決してるんですかっ!?
0399デフォルトの名無しさん
2010/06/08(火) 08:07:33winformの話?
WPFかSLあたりはHttpUtilityの所属が違ってた記憶がある
0400デフォルトの名無しさん
2010/06/08(火) 08:11:15こんなとこ切ってどうすんだイミフ
0401デフォルトの名無しさん
2010/06/08(火) 08:19:39HttpUtility
.net4は本格的に使ってないので憶測だがもしかすると
WPFやSLにあわせてる可能性もあるかもね
0402デフォルトの名無しさん
2010/06/08(火) 08:33:540403デフォルトの名無しさん
2010/06/08(火) 09:09:28Yes!
>>400
そうなんですよぉ><
>>401
ClientProfileにないんですよ、それが…
>>402
その二つじゃ文字コード指定ができないんです><
八方塞がりですじゃー
0404デフォルトの名無しさん
2010/06/08(火) 09:38:01実際の記事はFirefoxで表示して、見終わってタブを閉じたら自動的にリーダーに戻りたいのですが
どんな方法があるでしょうか?
思いついたのは
○Firefoxに閉じられるのを監視するアドオンを追加し、そこから通知を受け取る
リーダーから開く前にそのURLをファイルに書き出しておく
Firefoxアドオンで、タブが閉じられたときファイルのURLと一致したら「閉じたフラグ」ファイルを作成
リーダーでは「閉じたフラグ」ファイルが作成されるのを監視し自分自身にSetForegroundWindow
この程度の規模のFirefoxアドオンなら作れる
○ローカルサーバとして稼働しリーダー画面自体もFirefoxでAJAXっぽく表示
C#EEでのローカルサーバの作り方自体は確認済み
但しこのあたりのサーバプログラムの経験は皆無なので難易度の見当がつかない
インストールもしたこと無いけどこれだとWeb Developerで作った方が楽?
作ったことないし、調べるうちに作ってみたくなってきた
あたりなのですが、他に何か良い方法はありますか?
・基本的にはFirefoxのBrief的な感じにしたい
ツリー部分と一覧部分があり、ツリーで選択しているノード以下の全てを一覧で表示する感じ
・どちらもほぼ画面を占有するくらいのサイズが必要なので小さくして並べるという選択肢はなし
・環境はXP Pro SP3 + .NET4 + VS2010EE
Briefの機能自体は大体気に入っているのですが、
開くときに重すぎる(登録RSSフィードは200近く)のとフィルタをかけたりしたいので。
0405デフォルトの名無しさん
2010/06/08(火) 09:39:45○Firefoxもリーダーもほぼ画面を占有するくらいのサイズ
0406デフォルトの名無しさん
2010/06/08(火) 09:40:210407デフォルトの名無しさん
2010/06/08(火) 10:05:300408デフォルトの名無しさん
2010/06/08(火) 10:08:48IEコンポーネントを使えるんだし自分で簡易ブラウザも作った方が早そうだけどな
0409デフォルトの名無しさん
2010/06/08(火) 10:11:210410デフォルトの名無しさん
2010/06/08(火) 10:13:00それもいいな
後はローカルで動くproxyサーバータイプにしてしまうとか
0411デフォルトの名無しさん
2010/06/08(火) 10:23:53エンコードぐらい自分で書いちまえば?
0412デフォルトの名無しさん
2010/06/08(火) 11:39:01これって最初の宣言時に登録する以外に、あとで追加する場合はどうやるの?
またvar list =から?
0413デフォルトの名無しさん
2010/06/08(火) 11:42:080414デフォルトの名無しさん
2010/06/08(火) 11:51:07追加するときは、わざわざhogeクラス作ってから、ということ?>>367に逆戻り?
>>368の書式って初回しか使い道無いの?
0415デフォルトの名無しさん
2010/06/08(火) 11:54:56C#のコードのほうが何をやってるか見やすいね。
FILE *fp
とかイミフ
0416デフォルトの名無しさん
2010/06/08(火) 11:55:31そうじゃないの?
0417デフォルトの名無しさん
2010/06/08(火) 11:58:31new {
名前 = "なのは",
ふりがな = "まおう",
メールアドレス = "[email protected]",
電話番号 = "090-xxxx-xxxx",
});
プロパティ同じ匿名クラスなら通ったっけ?
0418デフォルトの名無しさん
2010/06/08(火) 11:58:50var newItem = new {
名前 = "ヴィータ",
ふりがな = "おれのよめ",
メールアドレス = "[email protected]",
電話番号 = "090-xxxx-xxxx",
};
list.Add(newItem);
0419デフォルトの名無しさん
2010/06/08(火) 12:00:25もうそこまでするならクラスなり構造体なりちゃんと作れって話だなw
0420デフォルトの名無しさん
2010/06/08(火) 12:04:170421デフォルトの名無しさん
2010/06/08(火) 12:35:53すでにかいてるー
レスないって事は標準ではなくなったってことなのね…
あんまり言いたくないけど糞だわ.Net4は
互換性ないとか糞にも程があるだろ
Obsoleteなんかの将来消えますよ属性もないのに勝手に消すな
0422デフォルトの名無しさん
2010/06/08(火) 12:39:330423デフォルトの名無しさん
2010/06/08(火) 12:41:520424デフォルトの名無しさん
2010/06/08(火) 12:43:56http://msdn.microsoft.com/ja-jp/library/cc656912.aspx
Client Profile限定にすると小さくできるの?
0425デフォルトの名無しさん
2010/06/08(火) 12:44:590426デフォルトの名無しさん
2010/06/08(火) 12:45:42Client Profileとか必要なのか?
0427デフォルトの名無しさん
2010/06/08(火) 12:47:12入れる事は出来る
でもWindowsUpdateではClientProfileが標準で提供されるからその認識でもOKかもね
0428デフォルトの名無しさん
2010/06/08(火) 12:51:54なんでクライアントにASP.NET入れなきゃいけないのかと
0429デフォルトの名無しさん
2010/06/08(火) 12:52:470430デフォルトの名無しさん
2010/06/08(火) 12:55:11なんかいろいろ変ってそうで怖いのぉ
0431デフォルトの名無しさん
2010/06/08(火) 12:57:150432デフォルトの名無しさん
2010/06/08(火) 12:57:49お別れしちゃったライブラリは無いも同然だから自作してね☆(ゝω・)vキャピってことか
パネェな
0433デフォルトの名無しさん
2010/06/08(火) 12:59:13というか、DBとかとそう変わらないだろ
クラスはカラムの定義
リストへの追加はレコードの追加
結構違和感でもあるのか?
Varとか使うと2.0とかでは使えないんだしひとまずベタな方法で実装してみてはどうだろうか?
PS.ヴィータとかなのはってなんだよ と思ってググったらなるほど・・・
0435デフォルトの名無しさん
2010/06/08(火) 13:04:330436デフォルトの名無しさん
2010/06/08(火) 13:07:29じゃあこれは?
http://msdn.microsoft.com/en-us/library/system.windows.browser.httputility%28VS.95%29.aspx
0437デフォルトの名無しさん
2010/06/08(火) 13:10:15しかも3からかよw
俺、3の時からSystem.Webからひっぱってきてた件…
つかなんでコロコロ場所が違ってるんだよ…
0438デフォルトの名無しさん
2010/06/08(火) 13:22:430439デフォルトの名無しさん
2010/06/08(火) 13:32:30Silverlightはやりすぎだけど
0440デフォルトの名無しさん
2010/06/08(火) 14:19:330441デフォルトの名無しさん
2010/06/08(火) 15:24:100442デフォルトの名無しさん
2010/06/08(火) 15:51:580443デフォルトの名無しさん
2010/06/08(火) 16:39:20お前の妹をファックしていいぞ
0444デフォルトの名無しさん
2010/06/08(火) 16:57:33伸ばさない
0445デフォルトの名無しさん
2010/06/08(火) 17:27:020446デフォルトの名無しさん
2010/06/08(火) 17:30:070447デフォルトの名無しさん
2010/06/08(火) 17:30:370448デフォルトの名無しさん
2010/06/08(火) 17:31:14【青森】 「カニを買わないか」→「はいはい」と気軽に返事 カニ2回届く 消費生活センター注意を呼びかける
http://live28.2ch.net/test/read.cgi/newsplus/1275622821/
0449デフォルトの名無しさん
2010/06/08(火) 20:19:493.5では極端に違ったから意味はあったが(しかし実質使えなかったが)、
4はむしろ誰得になってる…
0450デフォルトの名無しさん
2010/06/08(火) 21:59:29ここまでばっさり削られるとむしろ清々しい
それでも意外と使える
0451デフォルトの名無しさん
2010/06/08(火) 22:03:31MS公認の「ひと目でわかる」シリーズまだかなー
WPFも一緒に解説してくれるのかなー
0452デフォルトの名無しさん
2010/06/08(火) 22:44:48萌え要素だと思っているのだろうがイラストも70年代。
萌え萌えキュンキュンとしすぎるのもアレだが、もうチョッとナンとかならんかな〜
0453デフォルトの名無しさん
2010/06/08(火) 23:21:36mdb(データベース)ファイルをC#で扱いたいのですが、
mdbのファイルがまったく存在しない状態で
テンプレートになるような部分からファイルを作成することはできますか?
テンプレートというのは、たとえばこんなデータベースだとしたら
「氏名、年齢、住所」の部分だけを作るということです。
氏名 年齢 住所
山田 20才 東京
鈴木 30才 千葉
自分がmdbでやったことがあるのは、すでにmdbファイルが存在していて、その中身をいじるといったことくらいです。
Access自体はいじったことがありません。
よろしくお願いします。
0454デフォルトの名無しさん
2010/06/08(火) 23:31:41SQL Server Compactじゃダメなん?
0455デフォルトの名無しさん
2010/06/08(火) 23:33:040456デフォルトの名無しさん
2010/06/08(火) 23:35:08ほれ
0457453
2010/06/08(火) 23:41:53なんだかできそうですね。
両方試してみて、使いやすいほうでチャレンジしてみたいと思います。
どうもありがとうございました!
0458デフォルトの名無しさん
2010/06/08(火) 23:46:25Accessとかツール使わずC#アプリケーションからの利用だけだと
0459デフォルトの名無しさん
2010/06/08(火) 23:50:360460デフォルトの名無しさん
2010/06/09(水) 00:02:120461デフォルトの名無しさん
2010/06/09(水) 00:03:030462デフォルトの名無しさん
2010/06/09(水) 00:22:16ひと目にイラストなんてあったっけ?
0463デフォルトの名無しさん
2010/06/09(水) 00:59:37ダウンロード出来るのは3.0の英語版だし。こんなとこでケチんなよMS
0464デフォルトの名無しさん
2010/06/09(水) 02:29:06全く気にしてなかったけどExpressに入ってないと言われると読みたくなるw
0465デフォルトの名無しさん
2010/06/09(水) 02:52:300466デフォルトの名無しさん
2010/06/09(水) 06:37:45Microsoft Visual Studio 9.0\VC#\Specifications\1041\CSharp Language Specification.doc
ないの?
0467デフォルトの名無しさん
2010/06/09(水) 09:28:57.sdfじゃねーかな
0468デフォルトの名無しさん
2010/06/09(水) 09:35:18誰かおすえて…
0469デフォルトの名無しさん
2010/06/09(水) 11:12:45でも参照型にGetHashCode実装するなら
イミュータブルにしないといけないから安易に実装しちゃダメだよ
0470デフォルトの名無しさん
2010/06/09(水) 11:30:37サンクス!これだ!!ったかな?w
見てみたら確かにこれで出来るね
でも有償かぁ
ModelにEqualsとかを簡単に実装したいのになぁ
でも最低2万もするのかぁ…
0471デフォルトの名無しさん
2010/06/09(水) 11:40:37Dictionaryが壊れたりするからEqualsとGetHashCode(一方のみは不可)
を実装していいのは厳密には構造体かインスタンスの値が変わらないクラスだけ
0472デフォルトの名無しさん
2010/06/09(水) 11:44:27手持ちのクック本含めたあらゆる本にもそんな事かいてないけど?
0473デフォルトの名無しさん
2010/06/09(水) 12:26:02Dictionary が壊れたりするからって >>471 にまんま書かれてるが。
0474デフォルトの名無しさん
2010/06/09(水) 12:28:44だから何がどういう理屈で壊れるのさ?
GetHashCodeを使うものはクラス全体がイミュータブルであることが必須とか聞いた事が無い
0475デフォルトの名無しさん
2010/06/09(水) 13:09:47>オブジェクトがどのように変更されていても、ハッシュ関数は同じ値を返す必要があります。
0476デフォルトの名無しさん
2010/06/09(水) 14:35:40それって別にクラス全体がイミュータブルである必要性なくね?
Modelの不変なプロパティ(一意なID等)を元に計算すればいいだけじゃん
0477デフォルトの名無しさん
2010/06/09(水) 14:46:13Internet Explorerスクリプトエラー オブジェクトがありませんというパネルが出るのですが、
これを出さないようにするにはどうしたらよいでしょう?
0478デフォルトの名無しさん
2010/06/09(水) 14:49:460479デフォルトの名無しさん
2010/06/09(水) 14:52:20IEでアクセスしたときにはでないのに、なんでないっていうんでしょう?
0480デフォルトの名無しさん
2010/06/09(水) 14:57:140481デフォルトの名無しさん
2010/06/09(水) 15:05:030482デフォルトの名無しさん
2010/06/09(水) 15:33:410483デフォルトの名無しさん
2010/06/09(水) 16:51:55それでいいならいいけど
それだったら自動生成しようと思うかな
0484デフォルトの名無しさん
2010/06/09(水) 18:50:13ありがとう。見つけました。すっきり。
0485デフォルトの名無しさん
2010/06/09(水) 19:00:03javascriptとperlを使っていてオブジェクト指向は理解しているつもりです。
0486デフォルトの名無しさん
2010/06/09(水) 19:14:35随分頑張ったんだなw
0487デフォルトの名無しさん
2010/06/09(水) 19:15:38まあ、本より先に、C#でググったページ見ればいい気も。
0488デフォルトの名無しさん
2010/06/09(水) 19:20:53してないのは、見たことがないが。
0489デフォルトの名無しさん
2010/06/09(水) 19:27:190490デフォルトの名無しさん
2010/06/09(水) 19:27:53体系的な情報がほとんど無い、あっても他言語で既に解ってる人向け
0491デフォルトの名無しさん
2010/06/09(水) 20:12:22教えたおれもすっきりしたよ
0492デフォルトの名無しさん
2010/06/09(水) 22:08:52そんなこと普通やるべきじゃないのは誰が見ても明らか。
0493デフォルトの名無しさん
2010/06/09(水) 22:10:180494デフォルトの名無しさん
2010/06/09(水) 23:29:27だからそれはイミュータブルである事が必須って意味にはならないでしょー
同一プロパティ時に同一の値を返すって意味
もし不変なオブジェクトしかGetHashCodeが実装出来ないとなると全ての項目がreadonlyのものしかGetHashCodeを実装出来ないになるじゃない
イミュータブルなものしか駄目っていったいどこで聞いたの?
0495デフォルトの名無しさん
2010/06/09(水) 23:39:37代表例はディクショナリのキーに使うとき。ディクショナリに追加した後にキーのハッシュ値が変わると壊れる。
0496デフォルトの名無しさん
2010/06/09(水) 23:43:190497デフォルトの名無しさん
2010/06/10(木) 00:14:07現在はほぼイミュータブルなものでしか実装するなってのが
一般見解ではあるけどね。
>同一プロパティ時に同一の値を返すって意味
勘違いしてる気がするなー
それじゃダメだよ一般には。
0498デフォルトの名無しさん
2010/06/10(木) 00:16:320499デフォルトの名無しさん
2010/06/10(木) 00:19:41EqualsとGetHashCodeは一貫してる必要があるからハッシュの計算ではIDだけ使って
Equalsでは全てのプロパティを比較したりするのは無理だがそれでもいいなら(普通はよくないだろうけど)問題はない
似た話だけどa.Equals(b) == b.Equals(a)は嵌まったことがあるな
違反してるとものすごくわかりづらいエラーが出るんだよね
0500デフォルトの名無しさん
2010/06/10(木) 00:37:110501デフォルトの名無しさん
2010/06/10(木) 00:54:41逆は駄目だが
0502デフォルトの名無しさん
2010/06/10(木) 01:01:41わざわざ(現在では正しくない)古い情報を持ち出さなくてもいいのに。現在の指針は、
> オブジェクトの Equals メソッドの戻り値を決定するオブジェクトの状態に変更がない限り、
> オブジェクトに対応する GetHashCode メソッドは常に同じハッシュ コードを返します。
> これは、アプリケーションの現在の実行にのみ該当します。アプリケーションを再実行した場合、
> 別のハッシュ コードが返される可能性があります。
つまり、Equalsの結果に関係のある状態変化があれば、GetHashCodeの戻り値が変化してもよい
>>498>>500
PointやSizeがなぜかmutableなのは有名
0503デフォルトの名無しさん
2010/06/10(木) 01:07:18ですよねー
でもそうするとDictionaryが壊れるらしい…
なぜそうなのか後学の為に聞きたいのにおすえてくれないの…
0504デフォルトの名無しさん
2010/06/10(木) 01:07:36メンバを変更可能なのは別の意味で困ったもんだが
0505デフォルトの名無しさん
2010/06/10(木) 01:12:42値型はimmutableにしとかないと、
var p = rect.Top;
p.X = 10;
で rect.Top.X を書き換えたつもりになってはまる開発者が意外といるからということらしい。
0506デフォルトの名無しさん
2010/06/10(木) 02:00:57考えるまでもあるまいに。
そういう危険があるからイミュータブルが推奨されるってことでしょ。
0507デフォルトの名無しさん
2010/06/10(木) 02:08:17ディクショナリのキーとして格納済みの”A”という文字列を後で"B"に書き換えたら、
ディクショナリが壊れる。
それは危険だからできるだけイミュータブルにするようにしようという当たり前の話。
0508デフォルトの名無しさん
2010/06/10(木) 02:13:150509デフォルトの名無しさん
2010/06/10(木) 02:16:280510デフォルトの名無しさん
2010/06/10(木) 02:26:04その辺てどの辺?
基本javaも同じなんだが。
0511デフォルトの名無しさん
2010/06/10(木) 02:26:49その為ってどの為?
何が言いたいのかわからん。
0512デフォルトの名無しさん
2010/06/10(木) 02:31:21てかどれがイミュータブルかどうかMSDNに乗ってないから判別不可能じゃね?
つかそもそもKeyに参照型つっこまなければいいだけなんじゃね?
0513デフォルトの名無しさん
2010/06/10(木) 02:32:440514デフォルトの名無しさん
2010/06/10(木) 02:34:300515デフォルトの名無しさん
2010/06/10(木) 02:36:070516デフォルトの名無しさん
2010/06/10(木) 02:39:420517デフォルトの名無しさん
2010/06/10(木) 02:42:28普通はミュータブルをKeyに入れるユーザを責めるべきなのにさ。
0518デフォルトの名無しさん
2010/06/10(木) 07:52:01ちなみに今はイミュータブルにするべきだったって言ってるよ。
0519デフォルトの名無しさん
2010/06/10(木) 07:53:210520デフォルトの名無しさん
2010/06/10(木) 09:05:550521デフォルトの名無しさん
2010/06/10(木) 13:50:03VBの匿名型はデフォルトでミュータブルだから明示的にKeyキーワードで
メンバを不変にしてやらないといけないらしいね
0522デフォルトの名無しさん
2010/06/10(木) 17:34:52ですよねー( ´゚д゚)(゚д゚` )ネー
0523デフォルトの名無しさん
2010/06/10(木) 20:13:37上記URLを参考にDotNetZip Libraryを使ってのファイルの圧縮をしたいのですが、
ビルドして実行する際に実行ファイルと同じディレクトリに「Ionic.Zip.dll」がなければいけないのが煩わしく
組み込ませたいのですが、参照設定はどのように行うんでしょうか?
0524デフォルトの名無しさん
2010/06/10(木) 20:14:590525デフォルトの名無しさん
2010/06/10(木) 20:23:11ソースはオープンなんだから自分のプロジェクトの中にソースコード放り込め
0526デフォルトの名無しさん
2010/06/10(木) 22:04:15いきなり使うやつの問題論調ばっかになってるのはどういうわけだ。
0527デフォルトの名無しさん
2010/06/10(木) 22:11:01使う側の問題といえば使う側の問題
GetHashCodeを実装したクラスをクラスライブラリでパブリックに公開するなら論外だが
内部で使うだけなら注意してればミュータブルでも問題はない
0528デフォルトの名無しさん
2010/06/10(木) 22:11:55foreach (var key in dic.Keys)
var x = dic[key]; // これでキーが見つからない例外が発生したり
0529デフォルトの名無しさん
2010/06/10(木) 23:16:42今時staticリンクとかないから。
dll合わせて1つのアセンブリだから。
てか、exe 1個単体配布とかせず、ちゃんとセットアップexe作って。
VS使うなら「発行」ってやるだけで作れるから。
0530デフォルトの名無しさん
2010/06/10(木) 23:19:27用語の意味として完全に間違ってます
0531デフォルトの名無しさん
2010/06/10(木) 23:28:380532デフォルトの名無しさん
2010/06/10(木) 23:40:08十分壊れてるというだろそれは。
0533デフォルトの名無しさん
2010/06/11(金) 00:12:260534デフォルトの名無しさん
2010/06/11(金) 00:22:57あかんってことはないやろ
0535デフォルトの名無しさん
2010/06/11(金) 01:10:16なんで?
0536デフォルトの名無しさん
2010/06/11(金) 01:37:54せやな
0537デフォルトの名無しさん
2010/06/11(金) 03:07:07GetHashCodeの実装は効率のよいばらけ方を適切に実装出来るかを問題視してる
MSDNに書いてあるのは同一の値を使用した時に同一のハッシュコードが生成されることを指している
GetHashCodeが何故ovarride可能か普通に考えればわかる事なのにDictionaryが壊れるなどというのはあまりにもずれた事
0538デフォルトの名無しさん
2010/06/11(金) 07:40:16意味が分かりません
0539デフォルトの名無しさん
2010/06/11(金) 07:55:28と書かれてる。
↓
つまりAすることに問題はない
Aするべきではないなんてあまりにもずれている。
なんでだよw
そこでそのことには触れてないだけだろうよ。
0540デフォルトの名無しさん
2010/06/11(金) 08:44:25どこに置くか迷った挙句、手動コピーでProgram Filesやらドライブ直下にコピる人もいるし。
デスクトップとかにexeが散乱したりする人もいるし。
VS使えば数クリックでセットアップの発行できるんだから、インストーラー作って欲しい。
0541デフォルトの名無しさん
2010/06/11(金) 08:55:39exe単体がええ
0542デフォルトの名無しさん
2010/06/11(金) 09:09:55実際にたいしたことしてなくてもこういうイメージだよな
手軽なもの(Twitterクライアントとか)ならexe単体をzip配布が色々と安心
0543デフォルトの名無しさん
2010/06/11(金) 09:23:05え?マジすか?
0544デフォルトの名無しさん
2010/06/11(金) 11:01:37→OSの初期化に巻き込まれない
0545デフォルトの名無しさん
2010/06/11(金) 13:05:50WaveAudio.waveInAddBuffer
グローバル領域に確保したバッファとWAVEHDR構造体を渡す所で上手くいってないみたいなんですが
現状はバッファの確保はMarshal.AllocHGlobalで確保してIntPtrを渡す
WAVEDHDRはクラスコンストラクタでnewしてrefで渡すってやってます
たぶんWAVEHDR自体もAllocHGlobalしないといけないのかと思うのだけど
AllocHGlobalで確保した領域に構造体としてアクセスする方法が分かりません
あるいは、AllocHGlobal以外にヒープ領域に確保して安全に受け渡しする方法が
他にあるんでしょうか?
0546デフォルトの名無しさん
2010/06/11(金) 13:09:570547デフォルトの名無しさん
2010/06/11(金) 13:21:39Direct2Dはよく知らないけどキャッシュされてなくて毎回フォントをレンダリングしてるとしたら
CPUがボトルネックになるだろうから変わらなくて当たり前じゃね
というかC#だったらWPF使えよ
勝手にキャッシュしてくれるぞ
0548デフォルトの名無しさん
2010/06/11(金) 13:49:590549デフォルトの名無しさん
2010/06/11(金) 13:53:20asはキャストできない時nullが代入される
0550デフォルトの名無しさん
2010/06/11(金) 14:03:040551デフォルトの名無しさん
2010/06/11(金) 14:15:210552デフォルトの名無しさん
2010/06/11(金) 15:05:03ただしキャスト可能かどうか型判定したあとでキャストする場合はasが速い
0553デフォルトの名無しさん
2010/06/11(金) 15:23:49すまん言葉足りてなかったな
0554デフォルトの名無しさん
2010/06/11(金) 15:25:58GCHandleType.PinnedなGCハンドルを割り当てて固定すれば
マネージヒープ渡しても問題ないよ
MarshalクラスのStructureToPtrとPtrToStructureを使うかポインタを使えば
一応メモリ領域に構造体としてアクセスすることはできる
Marshal使ったからってポインタより安全というわけでは全くないので
ややこしいことするんだったらポインタ使っていいと思う
0555デフォルトの名無しさん
2010/06/11(金) 17:17:17こんな感じのサンプルが付いてるC#の本がよみたい(´・ω・`)
0556デフォルトの名無しさん
2010/06/11(金) 17:21:090557デフォルトの名無しさん
2010/06/11(金) 17:54:38なるほど、WPFはいろいろな事情で使えないので、自前でキャッシュしてみるわ
0558デフォルトの名無しさん
2010/06/11(金) 17:58:21WinFormsのコンストラクターでDirect2DとDirectWriteを初期化すると落ちるんだが、なんで?
0559デフォルトの名無しさん
2010/06/11(金) 19:23:23コードを見もせずに断言するが、コンストラクタではまだウィンドウが生成されてないから
ウィンドウハンドルが使えないんだろう。
OnHandleCreatedをオーバーライドして、そっちで初期化しる。
0560デフォルトの名無しさん
2010/06/11(金) 19:47:03トンクス
そこでやったら、うまくいった
0561デフォルトの名無しさん
2010/06/11(金) 19:56:04漫画オタクはどっかいけ
0562デフォルトの名無しさん
2010/06/11(金) 19:59:37カワイイ女の子の可能性だってあるんだ
もっと夢を持とうぜ夢をよぉ!!
0563デフォルトの名無しさん
2010/06/11(金) 20:25:350564デフォルトの名無しさん
2010/06/11(金) 20:35:45ありがとう、その方法でとりあえずデータが来るところまではやれたんだけど
MM_DATAでLPARAMにWAVEHDRのポインタが入ってくるんだけど
このLPARAMをMarshal.PtrToStructureでWAVEHDRに戻すと全部0なんだけど
直接戻したらまずいのかな?
0565564
2010/06/11(金) 20:45:56GCHandle.Allocでpin止めして
AddrOfPinnedをwinmm.dllに渡す
データ取得をを開始
WndProcにMM_DATAが来る
LPARAMをWAVEHDRにPtrToStructureで戻す
構造体の中身が全部0
アプリケーション終了時にGCHandle.Freeをする
0566564
2010/06/11(金) 21:38:45値の設定はAddrOfPinnedObjectにStructureToPtrで
直接書かないといけなかったみたい
だから最初から空だっただけでした
0567デフォルトの名無しさん
2010/06/11(金) 22:40:51キャストとasの違いだけど、asはユーザー定義の型変換は無視する(nullが返る)って違いもある
0568デフォルトの名無しさん
2010/06/11(金) 22:47:52キャストはユーザー定義の型変換を呼び出すのにも使われるけどasが使える状況においては違いはない
0569デフォルトの名無しさん
2010/06/11(金) 23:29:00DrawTextで描くために文字列の幅を求めたんだが、10000万回ぐらいDrawTextとこの関数の実行を繰り返したら、ものすごく重かった
原因はなんだろうと思い、プロファイラーで調べたら、この関数が実行時間の半分を占めていた
これよりももっと早く測定する方法はない?
0570デフォルトの名無しさん
2010/06/11(金) 23:34:30自分で計算したらそりゃ速いだろうけど何のためにDirect2D使ってるのかわからなくなるだろ
0571デフォルトの名無しさん
2010/06/11(金) 23:34:420572デフォルトの名無しさん
2010/06/11(金) 23:36:130573デフォルトの名無しさん
2010/06/11(金) 23:37:56WPFだって低レベルな文字レイアウトのAPI似たような感じだよ
キャッシュするんだから少々遅かろうがどうでもいい
0574デフォルトの名無しさん
2010/06/11(金) 23:41:130575デフォルトの名無しさん
2010/06/11(金) 23:48:06System.DrawingなりWin32APIなりで測って描画してDirect2Dのサーフェスにコピーすれば?
0576デフォルトの名無しさん
2010/06/11(金) 23:49:50この一言に尽きる気がする
0577デフォルトの名無しさん
2010/06/11(金) 23:54:28レイアウトもレンダリングもGDIでやってDirect2Dにコピーするなら当然GDIでサイズ測るだろ
0578デフォルトの名無しさん
2010/06/11(金) 23:57:09間違っても
>Direct2D使ってるんだからDirect2D使って求めないとおかしいだろ
なんて固定観念だけでやっているわけではないはずなんです!!
0579デフォルトの名無しさん
2010/06/12(土) 00:00:55いやこれは正しい
他の方法で測定したらDirect2Dによる描画結果と一致しないかもしれない
0580デフォルトの名無しさん
2010/06/12(土) 00:05:170581デフォルトの名無しさん
2010/06/12(土) 00:12:53foreach (string a in files)
{
if (new FileInfo(a).Length.Equals(0))
{ File.Delete(a); }
}
現在のフォルダからサイズが0バイトのファイルを全部削除したいんですが、
上記のようにやるとファイルがアクセス中で削除出来ないと言われます。
どうすればいいんでしょうか?
0582デフォルトの名無しさん
2010/06/12(土) 00:22:28それはどっかが使ってるからじゃないのか?
0583581
2010/06/12(土) 00:33:25レスありがとうです
原因は同一アプリからFile.Createで生成したファイルだからだったみたいです
情報不足ですみません
File.CreateのあとにClose()を追加することで解決しました
0584デフォルトの名無しさん
2010/06/12(土) 00:46:240585デフォルトの名無しさん
2010/06/12(土) 02:19:490586デフォルトの名無しさん
2010/06/12(土) 08:28:06APICodePack付属のドキュメントを見たんだが、これ以外に求められる方法がなかった
>>573
すまん
キャッシュする方法を探してみたんだが、よくわからん
ヒントだけでも教えてくれないか
>>578
いや、単純にそれだけだ
0587デフォルトの名無しさん
2010/06/12(土) 10:48:18遅レスだが、varによるローカル変数の定義が使えないのは
C# 2.0であって.NET 2.0ではない。
C# 3.0以降(Visual Studio 2008)以降なら.NET 2.0対象のプロジェクトでも使えない。
0588デフォルトの名無しさん
2010/06/12(土) 11:41:16C# 3.0以降(Visual Studio 2008)以降なら.NET 2.0対象のプロジェクトでも使える。
でした。
いっぺん氏んでくる……orz
0589デフォルトの名無しさん
2010/06/12(土) 13:53:59バッファにあらかじめ描いとくだけ
その前に、APICodePackで使えるのかは知らんがDrawTextよりも
DrawTextLayoutの方が効率的だとMSDNに書いてあるから試してみたら
それよりスレ違いだからC++覚えてDirectXの専用スレで聞くべき
どのみちC++わかんないとサンプルもロクに無くて厳しいでしょ
0590デフォルトの名無しさん
2010/06/12(土) 14:35:01あーなるほど
その方法か
スレを汚してすまんかった
0591デフォルトの名無しさん
2010/06/12(土) 16:48:230592デフォルトの名無しさん
2010/06/12(土) 20:50:050593デフォルトの名無しさん
2010/06/13(日) 00:15:590594デフォルトの名無しさん
2010/06/13(日) 02:59:15「cs」だと関係無いのばっかり出てきますし
もっぱら「.net」や「vb」で調べてますが、みなさんどうしてます?
0595デフォルトの名無しさん
2010/06/13(日) 03:13:490596デフォルトの名無しさん
2010/06/13(日) 03:20:330597デフォルトの名無しさん
2010/06/13(日) 03:24:36Googleだと「#」が抜けて「C」の候補が並ぶね。
そのまま検索すれば、「C#」の検索内容がリストされるけど。
0598デフォルトの名無しさん
2010/06/13(日) 07:26:39コピペで作ってるわけじゃないし、参考になるのがあればいいだけだし
0599デフォルトの名無しさん
2010/06/13(日) 10:09:340600デフォルトの名無しさん
2010/06/13(日) 10:18:520601デフォルトの名無しさん
2010/06/13(日) 10:23:040602デフォルトの名無しさん
2010/06/13(日) 10:26:360603デフォルトの名無しさん
2010/06/13(日) 10:27:23#が早い時期に通るようになったのはC#の影響もあると思う
0604デフォルトの名無しさん
2010/06/13(日) 10:31:320605デフォルトの名無しさん
2010/06/13(日) 10:53:59多分そう。
まあ、でも、せっかく特別扱いしてもらってるわけだし、検索しようぜ。
0606デフォルトの名無しさん
2010/06/13(日) 10:54:08候補から選ぶと#をもう一度入れ直さないといけないって話だろ
確かにちょっとしたことだけど面倒くさい
0607デフォルトの名無しさん
2010/06/13(日) 12:29:460608デフォルトの名無しさん
2010/06/13(日) 13:00:33値型はimmutableであるべき
参照型でGetHashCodeとEqualsをオーバーライドする場合はimmutableであるべき
みんな書いてあるから。
もちろん必須ではないけど、間違いなくそうするべきといわれてる。
0609デフォルトの名無しさん
2010/06/13(日) 13:16:01コンストラクタに引数がゾロゾロあるのは汚いよね?
0610デフォルトの名無しさん
2010/06/13(日) 13:25:22いや、immutable なクラス作るときは普通にコンストラクターにゾロゾロ書くね。
ただし、同じく「.NET のクラスライブラリ設計」曰く、
やっぱ引数多いコンストラクターはユーザビリティ下げるけど。
0611デフォルトの名無しさん
2010/06/13(日) 13:27:40検索して
0612デフォルトの名無しさん
2010/06/13(日) 13:36:08その本は.NETを組み上げた時のルールが主
使う側の事は考えられていない
例えばWPFやSilverlight等のモデルはINotifyPropertyChanged等の実装を行う
つまり実装すればImmutableなクラスにならない
ではImmutableでは無いのでEquals等を実装してはいけないのかというとそれは否
必ずModelとなるクラスには不変だろうがそうで無かろうがEqualsとGetHashCodeは実装する
WPFやSilverlightの世に出てるサンプルを見れば一目瞭然
ImmutableなクラスでもEqualsとGetHashCodeは実装されている
この事にいちゃもんを付けるのであればそれはWPFやSilverlight等の技術全般に文句を言ってるも同義
>>609
エッセンシャル系の本を見るとコンストラクタの引数が沢山あったり順序が不変なものは使えとある
Immutableなクラスを作る時は実際そうすべきだと思うよ
0613デフォルトの名無しさん
2010/06/13(日) 14:31:250614デフォルトの名無しさん
2010/06/13(日) 15:04:020615デフォルトの名無しさん
2010/06/13(日) 15:20:33メモリ直接読み込みでばれる?
メモリを盗聴されるのを防ぐ方法ってあるかな?
0616デフォルトの名無しさん
2010/06/13(日) 15:31:330617デフォルトの名無しさん
2010/06/13(日) 16:02:41いつ解放されるか分からないしあんまり意味ない
0618デフォルトの名無しさん
2010/06/13(日) 16:21:20SecureString ss ....
IntPtr p = Marshal.SecureStringToGlobalAllocUnicode(ss);
string s = Marshal.Marshal.PtrToStringUni(p);
とかやれば変換はできちゃうんだけど、基本的にはアンマネージ関数で処理するためのもの。
0619デフォルトの名無しさん
2010/06/13(日) 17:08:21WPFならPasswordBox使えば直接SecureStringで受け取れるけど
0620デフォルトの名無しさん
2010/06/13(日) 17:38:100621デフォルトの名無しさん
2010/06/13(日) 17:51:22正直被害妄想にしか思えんけど、仮に純粋に可能性の話をしているとしても、
というか、だったらなおさら、「メモリ盗聴」なんてものをされてるような状況下なら
どんな対策したところで安心材料にならんのじゃないのか
0622デフォルトの名無しさん
2010/06/13(日) 18:08:10俺も「メモリ盗聴」なんて表現は初めて見た。
実際にプロセスメモリを自由に見られる状況なら、暗号化や復号化のロジックまで丸見え
なんだから、小手先の暗号化なんかしてもしょうがない。
問題は、残しちゃまずいデータがページファイルに残っちゃったりすることなんだよね。
0623デフォルトの名無しさん
2010/06/13(日) 18:30:43やり方を聞くとチート野郎と罵られる。
0624デフォルトの名無しさん
2010/06/13(日) 18:32:410625デフォルトの名無しさん
2010/06/13(日) 18:34:580626デフォルトの名無しさん
2010/06/13(日) 18:48:330627デフォルトの名無しさん
2010/06/13(日) 18:54:190628デフォルトの名無しさん
2010/06/13(日) 19:04:040629デフォルトの名無しさん
2010/06/13(日) 19:11:45>>実際にプロセスメモリを自由に見られる状況なら
これを出来なくするのがSecureStringじゃないの?w
0630デフォルトの名無しさん
2010/06/13(日) 19:13:27A=null;みたいに明示的に解放すればいいんじゃないの?
0631デフォルトの名無しさん
2010/06/13(日) 19:18:32GCが動いたってメモリの内容まで破壊される訳じゃない
0632デフォルトの名無しさん
2010/06/13(日) 19:24:01OSの機能で正当に自由に読み書きできる。
なので、パスワードなどを扱うときは、なるべくメモリ上に存在する時間を短くし、
読み取りにくくするべきだと言われている。(それだって文字列がメモリ上に存在する
瞬間に読み取られたら意味がないんだけど)
CやC++なら、文字列を上書きすることもできるし、確保したメモリを任意のタイミングで
明示的に解放することもできる(解放しても内容は消えないから、上書きしてから解放する)
んだけど、.NETのStringではその方法がない。
なぜなら、一度生成したStringのインスタンスは書き換え不可能だし、>>630のように
参照できなくしてもガベージコレクタが動くまでインスタンス自体は残り続けるし、
インスタンスが削除されても、そのインスタンスが使っていたメモリが再利用可能になるだけで、
その内容までは消えないから。
0633デフォルトの名無しさん
2010/06/13(日) 19:59:05form1.cs、form2.csに分かれたときにform2でform1で作ったメソッドを使いたいときにどう使えばいいのかわかりません。
0634デフォルトの名無しさん
2010/06/13(日) 20:01:320635デフォルトの名無しさん
2010/06/13(日) 20:30:080636デフォルトの名無しさん
2010/06/13(日) 20:59:150637デフォルトの名無しさん
2010/06/13(日) 20:59:350638デフォルトの名無しさん
2010/06/13(日) 21:10:360639デフォルトの名無しさん
2010/06/13(日) 21:14:000640デフォルトの名無しさん
2010/06/13(日) 21:23:340641デフォルトの名無しさん
2010/06/14(月) 00:46:180642デフォルトの名無しさん
2010/06/14(月) 10:19:000643デフォルトの名無しさん
2010/06/14(月) 13:32:150644デフォルトの名無しさん
2010/06/14(月) 13:42:28USBカメラからの静止画だけをキャプチャしたいのですが、どのようにしたらよいのでしょうか。
動画をキャプチャすることを前提に静止画をキャプチャするサンプルはいくつかあったのですが、
これだと動画をキャプチャしている間はなぜかKeyDownイベントがフォームで受け取れず、KeyDown
で一度ブレークポイントをはって止めると、そのあとはKeyDownが効くようになってしまいました。
どのみち動画は不要なので、静止画だけをキャプチャする方法が知りたいです。
よろしくお願いします。
0645デフォルトの名無しさん
2010/06/14(月) 13:48:510646デフォルトの名無しさん
2010/06/14(月) 14:16:500647644
2010/06/14(月) 15:17:320648デフォルトの名無しさん
2010/06/14(月) 16:01:28C#は直接関係ないな
0649デフォルトの名無しさん
2010/06/14(月) 16:43:110650644
2010/06/14(月) 16:50:28たしかにそうですね…
VB.NETのスレッドはみつけれるのですが、.NET全般のスレってあるでしょうか?
0651デフォルトの名無しさん
2010/06/14(月) 16:54:110652デフォルトの名無しさん
2010/06/14(月) 17:00:110653デフォルトの名無しさん
2010/06/14(月) 17:01:50やり方によるが大体DirectShowじゃないのか?
0654デフォルトの名無しさん
2010/06/14(月) 17:19:560655644
2010/06/14(月) 17:20:09業務なので今不必要な問題は後回しにします。
>>653
なるほど、そうですね。
そっちのスレに投稿してみます。
ありがとうございました。
0656デフォルトの名無しさん
2010/06/14(月) 17:24:190657デフォルトの名無しさん
2010/06/14(月) 17:25:430658デフォルトの名無しさん
2010/06/14(月) 17:25:570659デフォルトの名無しさん
2010/06/14(月) 17:29:210660デフォルトの名無しさん
2010/06/14(月) 17:31:44こんなのに業務させるなら
ニートの俺にやらせろよ
職安いっても誰もやとってくんねーよコンチクショ
0661デフォルトの名無しさん
2010/06/14(月) 17:31:530662デフォルトの名無しさん
2010/06/14(月) 17:41:130663デフォルトの名無しさん
2010/06/14(月) 17:43:110664デフォルトの名無しさん
2010/06/14(月) 18:07:460665デフォルトの名無しさん
2010/06/14(月) 18:25:32みたいなやつがPGやってるような会社おわってんなwwww
いや、結構多いと思うが・・・
キッチリしらべて作らないと後々ひどいことになることも多いと思うんだが
0666デフォルトの名無しさん
2010/06/14(月) 18:37:160667デフォルトの名無しさん
2010/06/14(月) 19:02:15たしかにそうですね…
0668デフォルトの名無しさん
2010/06/14(月) 20:26:060669デフォルトの名無しさん
2010/06/15(火) 10:05:54効かなくなるのが仕様なのかどうなのかを検討しないとFWのバージョン変わったりパッチ当てたら動作変わるとか普通にありえる
0670デフォルトの名無しさん
2010/06/15(火) 10:42:36「あぁ、バージョンアップで使えなくなったようです。修正には追加料金がかかりますがどうしますか?」と商売するわけさ
0671デフォルトの名無しさん
2010/06/15(火) 11:46:30納期近いかもしれないけど俺は下請けでも使いたくねぇな
0672デフォルトの名無しさん
2010/06/15(火) 12:04:01会社の規模に関係なく動けばいい、納期第一ってところは少なくない
>>671の下請けもたぶん… 気付いてないだけじゃない?
0673デフォルトの名無しさん
2010/06/15(火) 12:54:00いや、それは判ってるつもりなんだ
明らかに納期が近くて問題発生した場合は仕方ないんだと思ってる。
自身もそうなってしまうし
ただ、あの文章的に こまけぇこたぁいんだよ 的なのが気に食わなかっただけ
自分ならそこは後で調べることにして、動作することを目的として ってかんじで聞くかな?
あの質問内容だとなぜ発生しなくなるかを調べて解決すれば終わりじゃん となりそうでさ
自分の週間の問題だとは思うんだけど
スレ違い甚だしいのでこれにて消えます。
0674デフォルトの名無しさん
2010/06/15(火) 14:24:440675デフォルトの名無しさん
2010/06/16(水) 04:34:38容易に特定できない秘密鍵(共有鍵)の埋め込み方法ってあるもんですかね?
0676デフォルトの名無しさん
2010/06/16(水) 05:12:260677デフォルトの名無しさん
2010/06/16(水) 07:41:450678デフォルトの名無しさん
2010/06/16(水) 08:25:080679デフォルトの名無しさん
2010/06/16(水) 09:02:05鍵は無理だが・・・
0680デフォルトの名無しさん
2010/06/16(水) 10:09:470681デフォルトの名無しさん
2010/06/16(水) 12:28:57「データ」「タバコ」「イクラ」などカタカナ言葉の日本語を原語のアクセントで読むのは間違い。
これらを間違えて読んでいると日本人である事を疑われるので気を付けるように。
0682デフォルトの名無しさん
2010/06/16(水) 12:32:160683デフォルトの名無しさん
2010/06/16(水) 12:33:520684デフォルトの名無しさん
2010/06/16(水) 12:58:300685デフォルトの名無しさん
2010/06/16(水) 13:40:45ファイル、フォルダ用のメソッドSystem.IO.File.Copy メソッドなど
は、再入可能なんでしたっけ?今まで考えずに使ってましたが、同時並行して
いくつか使った場合でも動作OK??またはスレッドを別にして実行する必要あり?
0686デフォルトの名無しさん
2010/06/16(水) 15:52:330687デフォルトの名無しさん
2010/06/16(水) 17:06:01プロフェッショナルの皆さん、おすえて!
0688デフォルトの名無しさん
2010/06/16(水) 17:44:020689デフォルトの名無しさん
2010/06/16(水) 17:44:590690デフォルトの名無しさん
2010/06/16(水) 19:17:310691デフォルトの名無しさん
2010/06/16(水) 20:03:380692デフォルトの名無しさん
2010/06/16(水) 20:25:51あんがと〜〜〜
0693デフォルトの名無しさん
2010/06/16(水) 20:29:11どういたしまして
0694デフォルトの名無しさん
2010/06/16(水) 21:43:440695デフォルトの名無しさん
2010/06/16(水) 21:52:540696デフォルトの名無しさん
2010/06/16(水) 21:57:100697デフォルトの名無しさん
2010/06/16(水) 22:03:510698デフォルトの名無しさん
2010/06/16(水) 22:29:410699デフォルトの名無しさん
2010/06/16(水) 22:40:520700デフォルトの名無しさん
2010/06/16(水) 22:49:43何が死体の?
ってことなんだけどさ
0701デフォルトの名無しさん
2010/06/16(水) 22:51:050702デフォルトの名無しさん
2010/06/16(水) 23:03:500703デフォルトの名無しさん
2010/06/17(木) 19:39:31こういうツールを使えばできる
http://dotnetfan.org/blogs/dotnetfanblog/articles/604.aspx
web.configの暗号化
http://dotnetfan.org/blogs/dotnetfanblog/archive/2006/08/17/809.aspx
App.Config内の接続文字列を暗号化する
0704デフォルトの名無しさん
2010/06/17(木) 21:00:390705デフォルトの名無しさん
2010/06/17(木) 21:04:080706デフォルトの名無しさん
2010/06/17(木) 22:52:290707デフォルトの名無しさん
2010/06/17(木) 22:54:300708デフォルトの名無しさん
2010/06/18(金) 00:31:54結局ローカルで動くソフトは諦めるしかない。
0709デフォルトの名無しさん
2010/06/18(金) 10:00:47-= newでイベント解除をする必要があるのでしょうか?
たとえば、 TextBoxを格納するオブジェクト変数 testTextに += newでClickイベントを割り付けた場合には
testTextをdisposeする前には -= newをする必要があるのでしょうか。
(同様にdisposeではなくて、そのオブジェクト変数testTextに改めて new でインスタンスを作成する場合の場合はどうでしょう?)
デザイナが自動的に作成したコードには -= newがないので問題ないように思えるのですが、MSDNの
イベントサブスクリプションとサブスクリプションの解除には
「サブスクライバー オブジェクトを破棄する前にイベント サブスクリプションを解除する必要があります。」
という記述があるので、そのところがよくわからなくなっています。
ttp://msdn.microsoft.com/ja-jp/library/ms366768.aspx
0710デフォルトの名無しさん
2010/06/18(金) 10:07:34あんまオブジェクトとかインスタンスが理解できてないように思えるんだが…
0711デフォルトの名無しさん
2010/06/18(金) 11:29:04イベントを提供するオブジェクトがGCされればイベントは自動的に解除される。
提供側のオブジェクトが提供を受ける側のオブジェクトよりライフサイクルが短いか、
同じならばGC任せで放置してよい。
Windows Formの場合はこのケースに当たる。
逆に提供側のオブジェクトのライフサイクルが長いかイベントが静的な場合は、
-= で解除しなくてはならない。
0712デフォルトの名無しさん
2010/06/18(金) 11:33:30スゲー! そんな細かいところまでGCが面倒見てくれるのか。
イベントハンドラの登録解除は明示的に切り替えたい場合(反応する、しないを動的に切り替える)を除いて
あまり真面目に考えてなかったけど、
登録解除も自動でやってくれてたのか。
ますますC#と.NETが好きになるな。
0713デフォルトの名無しさん
2010/06/18(金) 11:41:25普通のオブジェクトの参照関係と一緒。
0714デフォルトの名無しさん
2010/06/18(金) 11:47:43弱参照じゃあないのか?
WPFは弱参照イベントみたいのあった気がする
0715デフォルトの名無しさん
2010/06/18(金) 11:52:06場合が弱参照イベントパターン。
0716709
2010/06/18(金) 12:14:21すいません、わかりづらい説明で。
(あとイベントとオブジェクトも理解してないかもしれませんが)
TextBox tb = new TextBox(); <---- (1)
tb.Click += new EventHandler(tb_Click);
<何かの処理>
tb = new TextBox(); <--- (2)
この場合、 (1)で作られたオブジェクトインスタンスと(2)で作られた
オブジェクトインスタンスはメモリ上では別物なんですけど。
(2)のインスタンスが作成された段階で(1)のインスタンスは参照されなくなるので
その場合に-= newをしないと(1)のインスタンスはメモリ上から排除されないのかと
思ったものですから・・・。
0717デフォルトの名無しさん
2010/06/18(金) 12:28:12PythonとかC++やりすぎじゃない?
CopyingとかMark & SweepなGCだと循環参照あってもちゃんと解放されるよ。
.NET Micro Frameworkみたいな組み込みでメモリ不足しがちな物ならともかく、
デスクトップの.NETでは弱参照まず使わない。
.NETで弱参照使うのは、かなり巨大なでまれにしか使わない一時オブジェクトを、
可能なら確保しっぱなし、ダメなら確保しなおしって方針で持っときたいときくらい。
0718デフォルトの名無しさん
2010/06/18(金) 12:30:14tb_Click を (1)以外が握っていない場合、
(1)がGC対象になった時点でtb_ClickもGC対象。
(1)の寿命とtb_Clickの寿命が一緒でいいなら、別に -= 要らない。
(1)生かしたままtb_Clickだけ抜くときに -= 使う。
0719デフォルトの名無しさん
2010/06/18(金) 12:32:01シングルスレッドでしか動いてないせいで、
非同期処理するときに、オブジェクトをシステム側で static に握っとかないといけないから。
C#/.NET でいうと、static なイベントに対する add してるようなもの。
static で、オブジェクトの寿命みたいなのがないんで、
必ず remove してやらないとメモリリークになる。
0720デフォルトの名無しさん
2010/06/18(金) 12:35:04イベントの remove しないと循環参照になってメモリリーク。
最近のPythonは基本的に参照カウントで、
一定間隔でMark & Sweepか何か走らせるみたいなんで、
そこまで気にする必要ないはず。
0721709
2010/06/18(金) 12:37:17説明ありがとうございます。
提供側が生きていて、提供を受ける側のみDisposeした場合に
ガベージにいてもイベントが発生してしまうということが起こるわけですね。
そういう場合は、明示的にイベントの解除が必要でると。
>>718
なるほど、どこからも参照されなくなったならば、GCがオブジェクトを
削除してくれるんですね。
みなさんありがとうございました。
前々から疑問に思っていたことがようやく解決できました。
0722デフォルトの名無しさん
2010/06/18(金) 12:38:12どっちがどっちだか分からんようになる
0723デフォルトの名無しさん
2010/06/18(金) 12:41:420724デフォルトの名無しさん
2010/06/18(金) 12:45:16パブリッシャ(発行者)がイベントを発生させる側で、サブスクライバ(購読者)が
イベントを受ける側?
0725デフォルトの名無しさん
2010/06/18(金) 17:16:52例えばフォームのボタンをクリックしたなどのイベントは、フォームが閉じた後、すなわちDisposeされるとき
GCによって破棄されるので -= で解除する必要は無い。
但しstaticメンバーやフォームとは別の箇所など破棄されないオブジェクトに対してイベントを割り当てた場合、
-=で明示的に解除する必要がある。
そうしないと イベントハンドラが破棄されたオブジェクトに対してイベントを実行しようとして例外を発生することがある。
0726デフォルトの名無しさん
2010/06/18(金) 18:10:36イベントハンドラが破棄されたオブジェクトに対してイベントを実行しようとして例外を発生することがあるね
0727デフォルトの名無しさん
2010/06/18(金) 18:51:12http://livedoor.blogimg.jp/tekepo/imgs/3/4/3414dfca.jpg
ばらまこうぜ!
0728デフォルトの名無しさん
2010/06/18(金) 21:20:31ありがとうございます。
よく分かりました。実際、破棄されたと思ったオブジェクトでイベントが発生して
NullPointReferenceを出したことがあります。
0729デフォルトの名無しさん
2010/06/18(金) 21:45:590730デフォルトの名無しさん
2010/06/18(金) 22:30:290731デフォルトの名無しさん
2010/06/18(金) 23:36:390732デフォルトの名無しさん
2010/06/19(土) 00:01:220733デフォルトの名無しさん
2010/06/19(土) 04:07:18どうすれば参照できるのでしょうか?
0734デフォルトの名無しさん
2010/06/19(土) 08:07:26ターゲットでフィルターかけられてるから一旦バージョンを下げれば出来るだろ
あとはapp.config
http://msdn.microsoft.com/ja-jp/library/bbx34a2h.aspx
0735デフォルトの名無しさん
2010/06/19(土) 10:06:41画面を回転させる処理のためには
using Microsoft.WindowsCE.Form;
としてSystemSetting.ScreenOrientation 云々と行わなければならないというのですが、
Microsoft.WindowsCE.Formというのが存在しないようなのですが、どうすれば良いですか。
0736デフォルトの名無しさん
2010/06/19(土) 10:55:200737デフォルトの名無しさん
2010/06/19(土) 11:12:520738デフォルトの名無しさん
2010/06/19(土) 11:44:24レスありがとうございます
ググったら同じ症状の人が見つかったのでその人と同じapp.configを作成したのですがダメだったので諦めます
0739デフォルトの名無しさん
2010/06/19(土) 11:50:07MDXのdllはネイティブコードが混在してるためCLR4.0との互換性が無いから
ターゲットをCLR2.0系に変更したらapp.configは弄っちゃダメ。
他のラッパーを使うことを強くお勧めする
0740デフォルトの名無しさん
2010/06/19(土) 11:58:52うむ
0741デフォルトの名無しさん
2010/06/19(土) 19:29:41調べてみると認知されていないとか、比較的新しいexeは、とりあえず信頼できないみたいな感じで検出するらしい。
どうすることもできないんだろうか・・・。
0742デフォルトの名無しさん
2010/06/19(土) 20:30:50ありがとうございます
.Net4.0利用のフォーム上で音声を再生したいのでSlimDXを使うことにします
0743デフォルトの名無しさん
2010/06/19(土) 21:58:37いえいえ。
0744デフォルトの名無しさん
2010/06/20(日) 08:30:38.NETでSONARにひっかかるってよっぽどな気がするけど
誤検知通報する手段があったはず
0745デフォルトの名無しさん
2010/06/20(日) 10:42:38using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace SmartDeviceProject1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Exit_Click(object sender, EventArgs e)
{
Close();
}
[DllImport("user32.dll")]
public extern static int MessageBoxA(int h, string msg, string title, int i);
private void Form1_Load(object sender, EventArgs e)
{
MessageBoxA(0, "hoge", "title", 0); ←この行でエラー PInvoke DLL 'user32.dll' が見つかりませんでした。と。スマートデバイス以外では成功するのに。
}
}
}
0746デフォルトの名無しさん
2010/06/20(日) 10:54:05スマホ向けの開発?
user32.dllってwindows用のdllじゃないの?
0747デフォルトの名無しさん
2010/06/20(日) 10:57:230748デフォルトの名無しさん
2010/06/20(日) 11:16:15ありがとうございます。
0749デフォルトの名無しさん
2010/06/20(日) 11:51:47orz
0750デフォルトの名無しさん
2010/06/20(日) 13:54:020751デフォルトの名無しさん
2010/06/20(日) 14:10:450752デフォルトの名無しさん
2010/06/20(日) 16:11:54できるだけ初歩的なことから詳しく書かれているような物でお願いします
0753デフォルトの名無しさん
2010/06/20(日) 16:49:31結局、どれが合うかは自分次第。
0754デフォルトの名無しさん
2010/06/20(日) 16:52:27private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string str = port.ReadLine();
label1.Text = str;
}
とやっても上手くいきません。
また、受信したときっていうのは、いつのことを言うんですか?
0755デフォルトの名無しさん
2010/06/20(日) 16:58:51未確認飛行C C#によるプログラミング入門
@IT
くらいしかないよ
他は情報がフルすぎたり、C言語やJavaから移住してきたのを対象としてるとしか
思えないようなのばかり。
用語説明もなしにいきなり未知の単語が出てきたりね。
0756デフォルトの名無しさん
2010/06/20(日) 17:12:57入門というかお題が欲しいだけならここを最初からやっていけばいいんじゃね?
http://cs2ch.blog123.fc2.com/
0757デフォルトの名無しさん
2010/06/20(日) 18:02:10ReadLine()してるってことはNewLine(デフォルトだとLF)は送られてくるんだよな
あと、label1がSystem.Windows.Forms.Labelなら、それは駄目だからその行は消せ
0758デフォルトの名無しさん
2010/06/20(日) 18:07:51ボタンを押したときに、
同じことをするようにしたら、上手くいきましたんでたぶんそうです
0759デフォルトの名無しさん
2010/06/20(日) 19:41:180760デフォルトの名無しさん
2010/06/20(日) 21:14:140761デフォルトの名無しさん
2010/06/20(日) 21:24:12Designer.csにはちゃんと
ポートナンバーも指定されて
this.serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort1_DataReceived);
とあります。
0762デフォルトの名無しさん
2010/06/20(日) 22:18:28・イベントが発生すること
・データを受信できていること
を確認しろ
0763デフォルトの名無しさん
2010/06/20(日) 23:23:373回まわるwhileの中に
label1.Text = "hoge\r\n";
があって、これを実行するとlabel1に
hoge
hoge
hoge
と表示されることを期待してるのですが、1回のhogeしか表示されません。
(プログラムをいじったところ、3回目のhogeだけが表示されるようです。)
これはどうしてでしょうか?
(Console.WriteLineなら3回表示されます)
かわりにこの手を使えば3回表示されるのですが、これ以外に方法はないでしょうか?
string hoge = "";
hoge = hoge + "hoge\r\n";
Win XPでVC#2010EEを使ってます。よろしくお願いします。
0764デフォルトの名無しさん
2010/06/20(日) 23:25:170765デフォルトの名無しさん
2010/06/20(日) 23:25:20LabelのTextプロパティはそんな動作を想定してるのではないのだから当たり前だ
「かわりの手」を使いなさい
それしかない
0766デフォルトの名無しさん
2010/06/20(日) 23:26:07label1.Text += "hoge\r\n";
0767デフォルトの名無しさん
2010/06/20(日) 23:30:24どうもありがとうございます。
0768デフォルトの名無しさん
2010/06/21(月) 00:42:160769デフォルトの名無しさん
2010/06/21(月) 05:13:07nullだけドイツ語なんだ?
0770デフォルトの名無しさん
2010/06/21(月) 07:56:280771デフォルトの名無しさん
2010/06/21(月) 10:22:03RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()
rsa.FromXmlString(PublicKey)
rsa.Decrypt(Data, false);
こんな感じで
Dataがデカイとエラーが出るんだけど
一定上デカイとセキュリティに問題があるから小さいデータしかやれないようになってるの?
つまりデカイデータには使わない方がいいってこと?
それとも一定区切りで暗号化を繰り返しやらないといけないってこと?
その場合出力されるデータサイズって一定とか管理する目安みたいなものはあるの?
0772771
2010/06/21(月) 10:27:46データは共通鍵暗号で暗号化して
その鍵をRSAで一緒に記録するってことね
0773デフォルトの名無しさん
2010/06/21(月) 11:58:31//スレッドをループで止める
while (true) {
//ここにループ中の処理を挟む
//指定した時間がきたらループ脱出
}
0774デフォルトの名無しさん
2010/06/21(月) 12:13:330775デフォルトの名無しさん
2010/06/21(月) 12:14:25マルチスレッドの中での処理です
0776デフォルトの名無しさん
2010/06/21(月) 12:22:120777デフォルトの名無しさん
2010/06/21(月) 12:23:36何がやりたいのか分からないが、呼び出し側はサブスレッド開始→Sleep→サブスレッド停止とかかな
0778デフォルトの名無しさん
2010/06/21(月) 12:25:36手早いのは>>776が言うように作業スレッドを2つに分けて主スレッドから停止と再開をコントロールすればいい。
0779デフォルトの名無しさん
2010/06/21(月) 12:29:16無駄にスレッドを起動したくありません(コスト2倍になるから)
>>777
.Net4からあるキャンセルフレームワークを実装したいのです。
指定時間待機するだけならAutoResetEvent等で実装出来るのですが…。
ThreadPoolで時間指定で別スレッド立ち上げ↓
AutoResetEventでブロッキング
コールバック又はタイムアウト時の処理で〜としても良いのですが例外対処のコストが馬鹿になりません
なのでよい方法があればと思ったのです
0780デフォルトの名無しさん
2010/06/21(月) 12:34:500781デフォルトの名無しさん
2010/06/21(月) 12:35:030782デフォルトの名無しさん
2010/06/21(月) 12:35:520783デフォルトの名無しさん
2010/06/21(月) 12:36:160784デフォルトの名無しさん
2010/06/21(月) 12:36:370785デフォルトの名無しさん
2010/06/21(月) 12:37:250786デフォルトの名無しさん
2010/06/21(月) 12:37:540787デフォルトの名無しさん
2010/06/21(月) 12:37:56スレッドで特定のフラグとかループで監視してるのにSleepさせると若干開始が遅くなるよね
どうするのがいいのかな?
0788デフォルトの名無しさん
2010/06/21(月) 12:39:14お前らどこから沸いて出た
0789デフォルトの名無しさん
2010/06/21(月) 12:46:58WaitHandle
0790デフォルトの名無しさん
2010/06/21(月) 12:59:44そこまでやりたいこと分かってるなら最初からそう言えよ
具体的に何がうまくいかないんだ
http://www.infoq.com/jp/news/2009/06/net4_cancellation
0791デフォルトの名無しさん
2010/06/21(月) 13:04:15MSDN及びその辺の初歩的な物は理解してます。
やりたい事は既に非同期で実装済みのクラスをキャンセルフレームワークに適合したクラスへと変更するアダプタクラスを作成したいのです。
これを実現するには低コストのブロッキングと低コストのタイマー、安全な例外処理を実装しないといけない訳なんですが低コストのブロックとタイマーの所に詰まってます。
同一スレッドないであれば例外処理の対応は簡単なので出来れば別スレッドに分けたくないのです(非同期クラスアダプタという特性上コストが数倍になるという理由もあります)。
0792デフォルトの名無しさん
2010/06/21(月) 13:06:05volatileだな、これは!
0793デフォルトの名無しさん
2010/06/21(月) 13:12:550794デフォルトの名無しさん
2010/06/21(月) 13:16:510795デフォルトの名無しさん
2010/06/21(月) 13:18:040796デフォルトの名無しさん
2010/06/21(月) 13:20:06初心者本ばーっかりでそう言うのが皆無
0797デフォルトの名無しさん
2010/06/21(月) 13:29:440798デフォルトの名無しさん
2010/06/21(月) 13:39:390799デフォルトの名無しさん
2010/06/21(月) 13:41:570800デフォルトの名無しさん
2010/06/21(月) 13:45:10あいつ等の仕事でもあるしな
0801デフォルトの名無しさん
2010/06/21(月) 13:49:520802デフォルトの名無しさん
2010/06/21(月) 13:51:41これはマルチスレッドでやるべきだよ
0803デフォルトの名無しさん
2010/06/21(月) 14:09:34実装はしてないけどここを見ると大体理解はできるんだがなぁ
http://msdn.microsoft.com/ja-jp/library/dd997364.aspx
既存の非同期実装済みのクラスの非同期実装方法はBegin〜、End〜とIAsyncResult使った奴?それともオリジナル?
それから例外処理は重いからやりたくないって言ってるが、MSの推奨してるキャンセル動作は例外動作
使う側からはそう見えないっぽいけど
なんだかスレチな雰囲気が漂ってるから俺はこれで降りるよ
0804デフォルトの名無しさん
2010/06/21(月) 17:28:53もうこないでね(´・ω・`)
0805デフォルトの名無しさん
2010/06/21(月) 18:20:590806デフォルトの名無しさん
2010/06/21(月) 19:16:540807デフォルトの名無しさん
2010/06/21(月) 19:37:18SQL Server Compact + LINQ to SQLに初めて手を出しています
複数のスレッドからカウンタを弄る場合の競合への対策を下のようにしてみたのですが
無限ループにするかどうか以外、他に何か問題はありますか?
var db = new Database("Database.sdf");
var row = db.Data.First(item => item.RowNo == 1);
row.Count++;
while (true) {
try {
db.SubmitChanges();
break;
} catch (ChangeConflictException) {
foreach (var cc in db.ChangeConflicts) {
cc.Resolve(RefreshMode.KeepChanges, true);
if (cc.Object == row)
foreach (var mcc in cc.MemberConflicts)
if (mcc.Member.Name == "Count")
row.Index = (int)mcc.DatabaseValue + (int)mcc.CurrentValue - (int)mcc.OriginalValue;
}
}
}
0808デフォルトの名無しさん
2010/06/21(月) 19:50:380809デフォルトの名無しさん
2010/06/21(月) 20:01:12ttp://d.hatena.ne.jp/mirakui/20090808/hedotnet
↑の記述通りにMicrosoft Visual C# 2008でWebアプリを作りました。
デバッグ(ローカル環境)ではうまく動作しましたが、
IIS(でいいんでしょうか?)で実行させようとしたら、
アプリケーションでサーバーエラーが発生しました。
ファイルまたはアセンブリ'HyperEstraier'、
またはその依存関係の1つが読み込めませんでした。
間違ったフォーマットのプログラムを読み込もうとしました。
例外の詳細:System.BadImageFormatException
と出てしまい、ブラウザから起動すらしませんでした。
自分なりに調べ、Unmagaged DLLのため、と判断しましたが、
どうすればいいのでしょうか?
一応、Cで作られたDLLのパスを通すため、いろんなところに
コピーしましたが、エラーは全く変わりませんでした。
また、ブラウザから開こうとした時のエラー画面の下に
バージョン情報:Microsoft .NET Framework バージョン2.0.50727.4200;
ASP.NET バージョン:2.0.50727.4205
と出ていたのがちょっと気になります。
C#のプロジェクト自体は.NET Framework 3.5だと思います。
自分でよくわかっておらず、要領を得ない質問で
申し訳ありませんがよろしくお願いします。
0810デフォルトの名無しさん
2010/06/21(月) 20:02:180812デフォルトの名無しさん
2010/06/21(月) 20:14:20IISが64ビットで件の例外が出てるんじゃないかと想像する。
0813デフォルトの名無しさん
2010/06/21(月) 20:34:46列挙に時間がかかるIEnumerable<T>が有るのですが、これをList<T>にしたい
ただToList()するだけでは時間がかかりすぎるので、取りあえずコレクションに10ぐらいAddして
残りは非同期で追加する。
こんな動作をしたいのですが、
BackgroundWorkerを使い、ProgressChangedでObservableCollectionに追加していく
これ以外に方法は無いでしょうか?回答お願いします。
0814デフォルトの名無しさん
2010/06/21(月) 21:08:57List<T>にしたいのにObservableCollection?
ただ非同期にするだけならActionで囲んでBeginInvokeでいいと思うけど。
0815デフォルトの名無しさん
2010/06/21(月) 21:16:110816デフォルトの名無しさん
2010/06/21(月) 21:16:22メインスレッドで処理してるつもりになってるとか?
別のスレッドから追加したらイベントハンドラもその別のスレッドで実行されるし
ObservableCollectionはスレッドセーフじゃないよ
0817デフォルトの名無しさん
2010/06/21(月) 21:38:44WPFでのデータービューアー的なものを想定しています。
できるならList<T>で構わないのですが、逐次追加の場合反映されないのでObservableCollectionです。
流れとしては、
開始→IEnumerable<T>の取得→ObservableCollectionの作成→規定数だけ追加
→BackgroundWorkerのイベント設定し、開始→DoWork内で列挙→ProgressChangedで取得したアイテムをObservableCollectionに追加
0818デフォルトの名無しさん
2010/06/21(月) 23:29:02または循環小数などを分数にするというものでもやり方があったら教えてください。
0819デフォルトの名無しさん
2010/06/21(月) 23:30:390820デフォルトの名無しさん
2010/06/21(月) 23:32:40サンプルが無いとできないようなレベルじゃ無理
0821デフォルトの名無しさん
2010/06/21(月) 23:35:54あるint型プロパティCountにデシリアライズしたのですが、
xml側が<Count></Count>みたいに何も入っていない場合、nullはInt32に変換できませんと例外が投げられてしまします。
これをnullの場合は0にしてデシリアライズする方法がありましたら教えてください。
0822デフォルトの名無しさん
2010/06/21(月) 23:37:580823デフォルトの名無しさん
2010/06/21(月) 23:49:540824デフォルトの名無しさん
2010/06/22(火) 05:20:23PerlとかPHPに環境変数渡して実行するにはどうすれば?
0825デフォルトの名無しさん
2010/06/22(火) 06:37:21C#の出番がなければスレチなんですが
どう組み合わせるつもりで?
0826デフォルトの名無しさん
2010/06/22(火) 07:51:01サーバーをC#で書きたいんだろう
0827デフォルトの名無しさん
2010/06/22(火) 07:57:43いずれにしても、環境変数とか言ってる時点でC#以前な気がするけど。
0828デフォルトの名無しさん
2010/06/22(火) 09:13:200829デフォルトの名無しさん
2010/06/22(火) 09:30:20CreateProcessで環境変数渡せばいいんじゃない?
0830デフォルトの名無しさん
2010/06/22(火) 10:17:180831デフォルトの名無しさん
2010/06/22(火) 10:33:04おお、とりあえるありがとう
しかしなんだこの流れはw
0832デフォルトの名無しさん
2010/06/22(火) 10:38:240833デフォルトの名無しさん
2010/06/22(火) 10:43:33プロセス起動時に任意の環境変数を渡す方法を聞いてるだけだけどな。
0834デフォルトの名無しさん
2010/06/22(火) 10:50:060835デフォルトの名無しさん
2010/06/22(火) 12:32:10出しゃばるなよ、おボケさん
0836デフォルトの名無しさん
2010/06/22(火) 12:36:010837デフォルトの名無しさん
2010/06/22(火) 12:46:300838デフォルトの名無しさん
2010/06/22(火) 13:00:410839デフォルトの名無しさん
2010/06/22(火) 14:02:43完敗だ。
0840デフォルトの名無しさん
2010/06/22(火) 19:39:41みたいんだけど、どれみりゃいいかわかんねーー
だれか、知ってる人いたら、教えて。
0841デフォルトの名無しさん
2010/06/22(火) 23:43:21さすがに頭悪すぎる質問じゃないのか....
0842デフォルトの名無しさん
2010/06/23(水) 00:47:36とにかくツリーを開いてみて、見つけたらどこ開いたか紙にメモだな
そのうち慣れれば一発で開けるようになる
0843デフォルトの名無しさん
2010/06/23(水) 01:15:03うん。でも教えて。
0844デフォルトの名無しさん
2010/06/23(水) 08:29:14public delegate void AEventHandler();
public event AEvent;
}
class B : A
{
public B(){
base.AEvent += new EventHandler(AEvent_Func);
}
public void AEvent_Func(){
....
}
}
class program {
B b;
b.AEvent += new b.EventHandler(BEvent_Func)
public void BEvent_Func()
{
...
}
}
0845デフォルトの名無しさん
2010/06/23(水) 08:31:57Aで発生したイベントはprogramでもキャッチされてしまう?
BEvent_Func発生のタイミングはAでイベントが発生のち
Bでいろいろ処理をしてprogramにスローしたいのだけど
AにOnAEvent_Funcみたいな関数を作ってそれをオーバーライドするしかない?
0846デフォルトの名無しさん
2010/06/23(水) 09:02:200847デフォルトの名無しさん
2010/06/23(水) 10:19:53ああそうなの?
まあいいか
0848デフォルトの名無しさん
2010/06/23(水) 11:15:32よくねえよ。
外部からメソッドを呼び出すとき、クラスの階層で同じ名前のメソッドがあっても
virtual/overrideを付けておかないと呼び出しの切り替えは行われない。
基本的には同じ名前を使いまわすのは避けた方がいい。
もちろんprivateの範囲で分かっていて定義するなら構わないけど、
protected/publicにするなら最悪。
(まあコンパイラに怒られるけど)
で、同じイベントに違うクラス階層から2つ以上のハンドラを
追加するような書き方はちょっと考えられないので、
頭整理して設計を見直した方がいいんじゃないかな。
0849デフォルトの名無しさん
2010/06/23(水) 11:53:46リストが変化するとイベントを発生させる
よく考えたらクラスBはイベント発生ルールが違うのでオーバライドは使えない
クラスBはαを継承したβを同じhashtableで管理してる
βはαにクラスB管理用のデータを付加したもの
AとBは基本的に機能が少し違うだけでどちらを使ってもいいようになってる
今はBの中でAをnewしてAからのイベントはBだけで完結するようにしてる
BはBのタイミングでB独自のイベントを発生させる
問題はBの中でnewしてるせいで同じ関数も再定義しないといけないから長い
あとhashtableを検索する作業が1命令で2重だから2回必要になる
非常に効率が悪い
こういうのはどう設計しればいいのかね?
0850デフォルトの名無しさん
2010/06/23(水) 12:14:47なんか色々変な感じがしているが、とりあえずもうちょっと具体的なクラス名を付けてくれ。これじゃあ分かりにくい。
・クラスAとBを区別する必要があまりないなら1つのクラスにすることを考える
・コレクション的な使い方をしてるならSystem.Collections.Generic.Collection<T>を継承して作ることを考える。
・イベントはpublicにしておいて外部から登録させるような使い方じゃないと意味ねぇぜダンナ。
クラス内で完結するなら普通にメソッドを呼び出せばいいじゃないか。
0851デフォルトの名無しさん
2010/06/23(水) 12:23:001つにまとめるのは複雑になるので却下
Aはただのコレクションじゃなくてかなり複雑な処理をしてその結果をあるリストで管理してる
BはAのイベントをラップして別の形でAの結果にアクセスさせるためのラッパークラス
AのイベントがAで完結してるわけじゃない
BはAと似たインターフェースを持ってるが微妙に違う
共通する部分も多いのでB->Aという関数呼び出しが行われることもある
この時にBのリストのどれをターゲットにしてるか検索してまたAのリストのどれかまで
2重で調べないといけないから効率が悪いので悩んでたのです
0852デフォルトの名無しさん
2010/06/23(水) 12:55:120853デフォルトの名無しさん
2010/06/23(水) 13:08:51サンプルソースを公開してもらわんと案は出んだろうな。
お前のその判断が正しいということをソースなしにどうやって判断するんだ。
0854デフォルトの名無しさん
2010/06/23(水) 13:11:15お前にお前呼ばわりされる筋合いないから
0855デフォルトの名無しさん
2010/06/23(水) 13:38:020856デフォルトの名無しさん
2010/06/23(水) 14:25:04Windowsフォームアプリケーションを制作する際のVBとVC#の違いは何なのでしょうか?
一応どちらも使えるので優れた方に絞りたいな・・・と思うのですがお願いいたします。
0857デフォルトの名無しさん
2010/06/23(水) 14:27:36VB6だとすれば化石言語なので.netを使ったほうがいい
.netを使うんであればC#が使えるならC#を使ったほうがいい
VB.netはVBを使ってきた人が離れていかない用にあるだけ
0858デフォルトの名無しさん
2010/06/23(水) 21:30:11VB.NETは原則的にC#を超えてはいけない
0859デフォルトの名無しさん
2010/06/23(水) 21:52:590860856
2010/06/23(水) 22:33:34どちらも基本的なことはできますが使い込んで少し入ったところまでしているのはVBなのですがこの度やりたいことがC#用でもう乗り換えちまうかー?と考えましたw
マイコンとかよく使うのでビット演算とか超便利ですね、これからC#のほうを主にしたいと思います。相談に乗ってくれてありがとうございました!
0861デフォルトの名無しさん
2010/06/23(水) 22:38:332:decimal? a = obj as decimal?;
3:decimal b = a;
4:decimal c = a ?? 0m;
5:decimal d = (decimal)(a ?? 0m);
3行目だと暗黙的変換が行えない
でも4行目だと5行目みたいに書かなくても暗黙的decimalに変換されちゃう
何で?
環境:XP,VS2005
0862デフォルトの名無しさん
2010/06/23(水) 22:41:21当然だろ
0863デフォルトの名無しさん
2010/06/23(水) 22:42:400864デフォルトの名無しさん
2010/06/23(水) 22:49:420866デフォルトの名無しさん
2010/06/23(水) 22:52:04a == null ? (Aの型)a : b
と同じ意味
0867デフォルトの名無しさん
2010/06/23(水) 22:53:02a == null ? b : (aの型)a
0868861
2010/06/23(水) 23:07:014行目は
decimal c = a == null ? 0m : (decimal?)a;
と同じ意味じゃなくて
decimal c = a == null ? 0m : (decimal)a;
と同じ意味って事か
ありがとう〜
0869デフォルトの名無しさん
2010/06/23(水) 23:09:09http://msdn.microsoft.com/ja-jp/library/ms173224%28v=VS.80%29.aspx
ただし誤訳が混じってる。
>?? 演算子は、null 非許容型に対して null 許容型が割り当てられているときに返す既定値を定義します。
じゃなくて、
?? 演算子は、null 非許容型に対して null 許容型を代入するときに返す既定値を定義します。
0870デフォルトの名無しさん
2010/06/24(木) 01:57:30うん。それ。
0871デフォルトの名無しさん
2010/06/24(木) 02:43:36なんとかならんかな
public int i;
private void Form_Lord(){
//labelの配列化
for( i = 0;i < 100;i++){
method[i]();
}
}
*******************
private void method[1](){
Thread.Sleep(100)
label[1].text="a";
}
private void method[2](){
Thread.Sleep(100)
label[2].text="a";
}
・
・
・
できれば
private void method[i](){
Thread.Sleep(100)
label[i].text="a";
}
こんな様なことがしたいんだが
省略とかいろいろ気にしないで。
0872デフォルトの名無しさん
2010/06/24(木) 02:47:580873デフォルトの名無しさん
2010/06/24(木) 02:49:28.Net4使え。
0874デフォルトの名無しさん
2010/06/24(木) 02:51:16メリットがないと教えてくれないの?
0875デフォルトの名無しさん
2010/06/24(木) 02:52:05ありがと!
ちょっと調べてみるよ。
0876デフォルトの名無しさん
2010/06/24(木) 02:55:53うむ。
0877デフォルトの名無しさん
2010/06/24(木) 03:09:51ちがってたらごめん。
並列処理も目的ではあるけど
変数をつかって関数を指定する見たいな事も同時にしたいんだ。
for文で書いちゃったからあれかもしれないが関数を呼び出す時に変数を使いたい。
やっぱ無理かな・・
0878デフォルトの名無しさん
2010/06/24(木) 03:44:460879デフォルトの名無しさん
2010/06/24(木) 04:08:09調べてみましたが マルチキャストデリゲート では並列処理ではなく逐次処理になる模様です。
ですが、非同期呼び出し (Asynchronous Call) を使いBeginInvokeメソッドで実装できそうです。
以上を踏まえ少し考えてみたいと思います。
本当に有難うございました!
0880デフォルトの名無しさん
2010/06/24(木) 06:26:43スレッドクラス作って
必要な数と自分のインデックスを渡して起動すればいいだけでしょ
class threadclass(){
public int index;
public void run(){
}
}
for(i=0;i<10;i++){
threadclass t = new threadclass();
t.index = i;
Thread th = new Thread(new ThreadStart(t.run));
th.Start();
0881デフォルトの名無しさん
2010/06/24(木) 06:29:05run()を呼び出せばいいだけだろうに
0882デフォルトの名無しさん
2010/06/24(木) 06:36:26この機能はまさに神的だな
スレッド処理が馬鹿みたいに簡単になった
0883デフォルトの名無しさん
2010/06/24(木) 07:14:210884デフォルトの名無しさん
2010/06/24(木) 07:57:19知りたいのはスレッドがちゃんと破棄されたかどうかを見たい
0885デフォルトの名無しさん
2010/06/24(木) 09:34:07Debugトレーサーつかって前後にDebug.Writeして
それをテキストボックスとかに出すと楽ですお
稼働中のスレッドを列件してくれるガーベージコレクタみたいなのがあったらいいけど
0886デフォルトの名無しさん
2010/06/24(木) 09:44:062008と同じ方法でインストールしても、ツールボックスに表示されません。
.NET4.0にすれば標準で表示されるんだけど・・・うーん。
0887デフォルトの名無しさん
2010/06/24(木) 10:04:15同列に語っているのかが理解出来ない。
それぞれ別の話だろ。
0888デフォルトの名無しさん
2010/06/24(木) 10:05:33前後ってどこー?
Threadってコールバック受け取っても死ぬとは限らないから確認のしかたがわけわかめ
スレッドというウィンドウがあるけどいまいち使い方がわかんない・・・
0889デフォルトの名無しさん
2010/06/24(木) 10:08:080890デフォルトの名無しさん
2010/06/24(木) 10:09:49ユーザースレッド側でIDisposableな何がしかのオブジェクトを用意しておいて
コールバック全体をusing指定しておく。
Dispose()が呼び出された段階でトレースに書き込めばよい。
Threadのデバッグウィンドウは、デバッガでプログラムを変えている場合に他のスレッドに移動できる。
変なところで同期待ちしてたり無限ループしてたりしてる場合の問題解決には役に立つ。
0891デフォルトの名無しさん
2010/06/24(木) 10:11:44デバッガでプログラムを止めている場合に
0892デフォルトの名無しさん
2010/06/24(木) 10:12:50マイコンでもLEDしかつかったことない
0893デフォルトの名無しさん
2010/06/24(木) 10:16:10そういう意味なのか?
処理の違う関数を同じ名前で管理しなきゃならんような設計の方が理解出来ないがw
0894デフォルトの名無しさん
2010/06/24(木) 10:43:56ポリモーフィズムがまさにそれなんだが?
0895デフォルトの名無しさん
2010/06/24(木) 10:59:15これはないわー
0896デフォルトの名無しさん
2010/06/24(木) 11:12:46答えでもなんでもない茶化しでも申し訳ないが。
某 H 社で改修をやらされた悪夢のコードがよみがえってしまった。。。
ex) [機能単位の命名規則(だっけ?)]0001, *0002, *0003, ...
0897デフォルトの名無しさん
2010/06/24(木) 11:19:10いや違うだろw
0898デフォルトの名無しさん
2010/06/24(木) 11:27:24いや、そうだぞ。名前と実装を分離するのが抽象化であり、
それの利用例であるポリモーフィズムなんだから。
Wikipediaでも読んでみれ。
0899デフォルトの名無しさん
2010/06/24(木) 11:28:190900デフォルトの名無しさん
2010/06/24(木) 11:31:56クラス(スーパークラスサブクラス混在)を配列で持ってForEachは結構やるわ。
0901デフォルトの名無しさん
2010/06/24(木) 11:41:33外から追加したりってできないの?
0902デフォルトの名無しさん
2010/06/24(木) 11:42:32gという配列がありまして、
ruby で書くと
a = g[0...20]
b = g[20...20+20]
こんな感じの作業を書こうと思っています。
ぐぐるときのキーワードが悪いのか、
こんな単純なことがわからず1時間も経過してしまいました。
0903デフォルトの名無しさん
2010/06/24(木) 11:45:160904デフォルトの名無しさん
2010/06/24(木) 11:52:37了解しました
ありがとうございます。
0905デフォルトの名無しさん
2010/06/24(木) 12:00:40配列にはないが、Listにはあるぞ。List.GetRange()
>>902
動的言語におけるいわゆる配列というのは静的言語におけるリストに近いことが多い。
0906デフォルトの名無しさん
2010/06/24(木) 12:03:15TypeDescriptor越しの操作に対してならTypeDescriptor.AddAttributesとかできる
メンバの属性を弄るのは確かすんごく面倒だったが気がするが
0907デフォルトの名無しさん
2010/06/24(木) 12:20:11あっそ
0908デフォルトの名無しさん
2010/06/24(木) 12:20:490909デフォルトの名無しさん
2010/06/24(木) 12:24:380910デフォルトの名無しさん
2010/06/24(木) 12:28:040911デフォルトの名無しさん
2010/06/24(木) 12:29:11なるほど、ありがとう……。
実はprotobuf-netでシリアライズ使用としてるところなんだけど、
自作のクラスのシリアライズの一部がうまく動かなくて困ってた。
質問の答を用いた解決法とは違うやり方だけど、一応当初やりたい事はできるようになった。
しかし、protobufは型がぎちぎちだなぁ。
XmlSerializerやBinaryFormatterみたいな
ぬるいシリアライザ使ってた身ではつらいものが。
0912デフォルトの名無しさん
2010/06/24(木) 17:34:54protobuf-netはWCFの真似してるみたいだけどWCFはMSらしい汚い抜け道たくさん
0913デフォルトの名無しさん
2010/06/24(木) 18:21:48WCFは.NET 3.0だからなぁ……。
protobuf-netはどうやらシリアライズ情報に型情報が一切入らないので、
object型を含んだ曖昧なコンテナなどを扱えないようだ。
BinaryFormatterの方は理解できないクラスはスキップされる。
例えばSystem.Drawing.Colorなんかがそうで、
適宜シリアライズ用のプロパティを定義して代わりに読み書きしてもらうようにする。
従来これで動かしてきたんだけど、
データにいちいち型情報が入るし、読み書きがいまいち遅いみたいなんだよね……。
0914デフォルトの名無しさん
2010/06/24(木) 20:19:190915デフォルトの名無しさん
2010/06/24(木) 20:48:480916デフォルトの名無しさん
2010/06/24(木) 20:58:100917デフォルトの名無しさん
2010/06/24(木) 21:23:16どうやってobject型にデシリアライズするんだよ
シリアライズ関連の頻出単語"contract"の意味わかってる?
0918デフォルトの名無しさん
2010/06/24(木) 21:43:14実際にobject型のデータを持っているわけではないが、object型として扱っている部分がある。
例えばジェネリックでない通常のListだとかHash。
C#だともはやそういうコードは書かないんだけど別の言語(Boo)で実装している部分なので
そういう構成のデータが多々出来てしまう。
そういったデータをprotobuf-netだとシリアライズできなくて困ってるんだ。
0919デフォルトの名無しさん
2010/06/24(木) 22:01:52総合的に見て実際に生産性は上がった?
どうせわざわざ苦労するのが好きな変態さんなんだろ? もうシリアライザも自作しちゃえよ
まあ気持ちはよくわかるw
0920デフォルトの名無しさん
2010/06/24(木) 22:06:330921デフォルトの名無しさん
2010/06/24(木) 22:10:28うーん。総合的に見ると、正直疑問かもw
ただ利用者側がカスタマイズや機能の拡張をできるシステムを目指しているので、
C#だけで全部組んでしまうとまずい。
まあC/C++だけで組んでた時代と比べたら、
少なくとも倍位の開発スピードは維持できてるんじゃないかな。
シリアライザはメジャーどころだけで4〜5種類あるみたいだから、もうちょっと調べてみるよ。
0922デフォルトの名無しさん
2010/06/24(木) 22:40:460923デフォルトの名無しさん
2010/06/24(木) 22:56:410924デフォルトの名無しさん
2010/06/24(木) 22:57:160925デフォルトの名無しさん
2010/06/24(木) 23:00:220926デフォルトの名無しさん
2010/06/24(木) 23:02:140927デフォルトの名無しさん
2010/06/24(木) 23:05:570928デフォルトの名無しさん
2010/06/24(木) 23:11:380929デフォルトの名無しさん
2010/06/25(金) 02:17:320930デフォルトの名無しさん
2010/06/25(金) 02:18:480931デフォルトの名無しさん
2010/06/25(金) 02:31:51あきらめるわ。
0932デフォルトの名無しさん
2010/06/25(金) 07:52:55まあゆっくりしていけ
0933デフォルトの名無しさん
2010/06/25(金) 22:03:59w[0].Add = "うんち";
これでNull例外になるのはなんで?
w[0] = new System.Collections.ArrayList();
この行挟めば通るんだが、なんか納得できない
0934デフォルトの名無しさん
2010/06/25(金) 22:06:07参照型についてはどのWebサイトや書籍見ても詳しい説明があるから自分で調べろ
0935デフォルトの名無しさん
2010/06/25(金) 22:09:34えw
その前に配列だよw
0936デフォルトの名無しさん
2010/06/25(金) 22:13:27配列作った直後に要素のインスタンスメソッド呼び出してもエラーにはならない
0937デフォルトの名無しさん
2010/06/25(金) 22:25:19なぜ納得できないのかが分からない。
ArrayList w = null;
w.Add("うんち");
でエラーになるのも納得できないわけ?
0938デフォルトの名無しさん
2010/06/25(金) 22:27:56ポインタの配列を作ったところで、その配列の要素のポインタの値は不定かNULLでしょ。
…… なんて説明で分かればそもそも質問しねえかw
0939デフォルトの名無しさん
2010/06/25(金) 22:28:54リストだから混乱するのかね。
例えば
HogeClass[] hoges = new HogeClass[10];
だったらhoges[0] も hoges[1] も全てnullだというのには納得?
ところで、ArrayListは産廃なのでList<T>使いましょう。
本当にそれが必要でループ回して初期化が面倒くさいなら
var lists = Enumerable.Range(0, 10).Select(_ => new List<string>()).ToArray();
と書けなくもない。
0940デフォルトの名無しさん
2010/06/25(金) 22:31:37値型か参照型か以前に、ArrayListの配列に対する操作を
ArrayList自体と混同しているところがそもそもの問題の原因。
>System.Collections.ArrayList[] w = new System.Collections.ArrayList[10];
これは配列を作っただけで、中の10個のArrayListインスタンスはまだ初期化されておらず、nullのままだ。
だから
>w[0].Add = "うんち";
のコードの
>w[0]
のアクセスの段階でnullアクセスになる。
0941デフォルトの名無しさん
2010/06/25(金) 22:33:30すまんね、オブジェクト指向の開発経験がまったくないもんで
w[0] = new System.Collections.ArrayList();
ここで初めてインスタンスができるってことなのかね
最初の配列宣言したときにできてくれてもいいじゃんとおもったわけなんだよ
0942デフォルトの名無しさん
2010/06/25(金) 22:34:30何言ってるの?
w[0]は単なる配列アクセスでnullを返すだけ
0943デフォルトの名無しさん
2010/06/25(金) 22:40:17インスタンスの生成方法は必ずしもデフォルトコンストラクタを使用するとは限らないからな
ところで.NET 2以降ならArrayListとかやめとけ。
0944デフォルトの名無しさん
2010/06/25(金) 22:41:28配列というインスタンスはできてるじゃん
配列の各要素にぶら下げるインスタンスとは別だよ
0945デフォルトの名無しさん
2010/06/25(金) 22:43:42参照型を理解してたりするのかね。
0946デフォルトの名無しさん
2010/06/25(金) 22:45:120947デフォルトの名無しさん
2010/06/25(金) 22:52:08http://ufcpp.net/study/csharp/oo_reference.html
0948デフォルトの名無しさん
2010/06/25(金) 23:03:31一意になるようにしたいのですが、何かいい方法はないでしょうか。
整数値は1つが1〜99まで、2つめが1〜999までです(ただし連番ではない)。
単純に適当な数かけたり、XOR取ったりではキー重複になってしまいました。
0949デフォルトの名無しさん
2010/06/25(金) 23:04:48やり方間違えたわ・・・
0950デフォルトの名無しさん
2010/06/25(金) 23:06:16構造体なのにオーバーライド??
0951デフォルトの名無しさん
2010/06/25(金) 23:08:22あまり神経質にならんでもいいんだけどね。
0952デフォルトの名無しさん
2010/06/25(金) 23:11:570953デフォルトの名無しさん
2010/06/25(金) 23:24:03Dictonary<TKey, TValue>ならコンストラクタにIEqualityComparer<TKey>を実装させたオブジェクト渡す
0954デフォルトの名無しさん
2010/06/25(金) 23:31:24その課題に対するソリューションを考えるのに何か重要な情報がまだ抜けてるような気がするが、
とりあえず直接の解としては952でいいんじゃね?
他には0埋めで文字列化した上で2つ繋げて固定長の文字列にするとか。
そうやって作った集合をどう使うのか。どう保存するのかによっても話が変わってくるだろうよ。
0955デフォルトの名無しさん
2010/06/25(金) 23:40:52ポインタの概念云々言うほどのこっちゃないだろw
参照なんてただの参照じゃんw
0956デフォルトの名無しさん
2010/06/25(金) 23:44:50変数そのものを渡すとかいう意味不明な説明になる
0957デフォルトの名無しさん
2010/06/25(金) 23:49:09「参照」の方が抽象度が高いから理解しにくいでしょ。
ポインタの方が低レベルだからより簡単。
だから全くの初心者がいきなり参照を理解するのは、
同じく初心者がポインタを理解するより難しい。
何か勘違いしてないか。
0958デフォルトの名無しさん
2010/06/26(土) 00:46:320959デフォルトの名無しさん
2010/06/26(土) 00:57:490960デフォルトの名無しさん
2010/06/26(土) 05:03:00(´;ω;`)ブワッ
0961デフォルトの名無しさん
2010/06/26(土) 05:58:450962デフォルトの名無しさん
2010/06/26(土) 06:09:01manualresethandleとかで制御してたらそのせいでデッドロックしたり
イベントをマルチスレッドで使うのは危険だと分かった
0963デフォルトの名無しさん
2010/06/26(土) 06:12:33激しく勘違いしてるだけだろ
System.Collections.ArrayList w = new System.Collections.ArrayList();
w.Add = "うんち";
たぶんこうしたいだけ
0964デフォルトの名無しさん
2010/06/26(土) 09:15:550965デフォルトの名無しさん
2010/06/26(土) 09:15:55だから Win Forms も WPF もディスパッチャーの機構持ってるのよ。
>>963
List<string> にしようよ。
0966デフォルトの名無しさん
2010/06/26(土) 13:07:44Windowsをシャットダウンしようとしてもできません。そのアプリを終了するとできます。
ネットで調べたら、タスクトレイ常駐アプリはシャットダウン時の処理をちゃんと書かないと
そうなるということがわかりました。
そこでhttp://dobon.net/vb/dotnet/system/sessionending.html←を参考にして、
コンストラクタに↓とかきまして
SystemEvents.SessionEnding += new SessionEndingEventHandler(SystemEvents_SessionEnding);
private void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
if (e.Reason == SessionEndReasons.Logoff)
{
Application.Exit();
}
else if (e.Reason == SessionEndReasons.SystemShutdown)
{
Application.Exit();
}
}
というメソッドを書きました。
しかし、うまくいきません。そのアプリが終了してくれずタスクトレイに常駐したままです。
どうすればいいんでしょうか?
0967966
2010/06/26(土) 13:09:38protected override void WndProc(ref Message m)
{
const int WM_QUERYENDSESSION = 0x11;
const int WM_ENDSESSION = 0x16;
switch (m.Msg)
{
case WM_QUERYENDSESSION:
Application.Exit();
break;
case WM_ENDSESSION:
Application.Exit();
break;
}
base.WndProc(ref m);
}
↑と書いて見ると、今度はアプリの終了までは行くんですがPCのシャットダウンは
なりません。。
どうすればいいのかわからないので、知っている方がいましたら、教えてください。
0968966
2010/06/26(土) 13:11:46Windows終了時にWindowsからメッセージを受け取ってアプリケーションを終了する
コードを書かないといけないというのは、
http://www.woodensoldier.info/computer/csharptips/5.htm
で見つけました。
0969デフォルトの名無しさん
2010/06/26(土) 13:35:47なんか変なことやってると思うよ。
0970デフォルトの名無しさん
2010/06/26(土) 13:39:39.NET 2.0以降ならFormClosingイベントでCloseReasonがUserClosingのときだけCancelするようにすれば
SessionEndingとか使わずとも問題ないはずだが
0971デフォルトの名無しさん
2010/06/26(土) 14:13:51私は、以前Javaプログラマで荒療治でネットからコピペして
何とか作っていたんですが、無理があったみたいです。Form_Closing メソッドを
private void frmTouroku_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason != CloseReason.ApplicationExitCall)
{
e.Cancel = true; // フォームが閉じるのをキャンセル
this.Visible = false; // フォームの非表示
}
}
だったのを
if (e.CloseReason == CloseReason.WindowsShutDown)
{
e.Cancel = false;
}
を付加したら、治りました。Windows終了時のApplicationExitを逃していたみたいです。
うまくできるようになりました。ありがとうございました。
0972デフォルトの名無しさん
2010/06/26(土) 14:18:59if(e.CloseReason == CloseReason.UserClosing)
e.Cancel = true;
とやってためしてみます。ありがとうございました。
しかし、みなさん、詳しいですね。C#は書籍も少ないので情報源が少なく
苦戦しています(;^^ ヘルプも重いですし。
解決できてよかったです。ありがとうございました。
0973デフォルトの名無しさん
2010/06/26(土) 14:21:02そこを重点的に見ていけばいいだけなんだが。
Javaプログラマとか書籍が少ないとか、なんも言い訳にならん。
0974948
2010/06/26(土) 15:15:12>>953の通り、自前クラスをDictionary<key, value>に入れるにあたり、
keyにGetHashCode()を使用して、一意性を確保したいということでした。
元々は従業員テーブルのモデルクラスなのですが、社員IDのようなものがなく、
常に支店CDと社員CDの二つを見なければならないため、これを解消したいと思ったのがきっかけです。
現在はList<T>を継承したクラスで管理しており、
Employees.FindByPK(支店CD, 社員CD)のような形で社員情報を取得しているのですが、
100人分取得しようとすると、それだけ毎回foreachで回すという無駄が出ています。
単純に連番やAddする際のDateTime情報からKeyの導出というのも考えたのですが、
別のモデルクラスの支店CD, 社員CDから、このクラスを関連づけようとした場合に
別クラスからはKey情報が判別できないため「なんとか支店CDと社員CDから一意な値を導けないか」と考えて質問しました。
>>948、>>954の方法で試してみたいと思います。ありがとうございます。
0975デフォルトの名無しさん
2010/06/26(土) 15:55:50intとかなら値だろうけどオブジェクトだと同じオブジェクトか比較するの?
具体的にはIPEndPointを使いたいんだけど
0976デフォルトの名無しさん
2010/06/26(土) 16:00:51まず GetHashCode の戻り値で大まかに判別。
その後、ちゃんと Equals で確認。
0977デフォルトの名無しさん
2010/06/26(土) 16:01:18絞り込んだら片っ端からEqualsで比較してキーが一致したら検索成功
細かいことはハッシュ表でググれ
0978デフォルトの名無しさん
2010/06/26(土) 16:25:240979デフォルトの名無しさん
2010/06/26(土) 17:36:50>>977
その説明で完全にアルゴリズムまで理解しました
0980デフォルトの名無しさん
2010/06/26(土) 18:03:20教えた甲斐があった。
0981デフォルトの名無しさん
2010/06/26(土) 18:38:500982デフォルトの名無しさん
2010/06/26(土) 19:40:330983デフォルトの名無しさん
2010/06/27(日) 00:13:22方法はあるの?メンバメソッド見る限りそれらしいものが無いんだけど
0984デフォルトの名無しさん
2010/06/27(日) 00:36:12やりとりと言われてもよく解らんが、
そのライブラリの本来の目的である暗号化、復号化としては十分使えるぞ。
アルゴリズムごとに決まったファイルサイズが増える格好になる。
0985デフォルトの名無しさん
2010/06/27(日) 02:24:29メンバ見りゃ見たままメソッドがあるように思えるんだが、何を言っているのかね?
0986デフォルトの名無しさん
2010/06/27(日) 05:22:50あったwExportCspBlobこれかwBlobってwwwなんでwww
0987デフォルトの名無しさん
2010/06/27(日) 08:37:16>>982がかわりに作成する。
0988デフォルトの名無しさん
2010/06/27(日) 09:05:36http://pc12.2ch.net/test/read.cgi/tech/1277597122/
レス数が950を超えています。1000を超えると書き込みができなくなります。