全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50
C#, C♯, C#相談室 Part53

1デフォルトの名無しさんsage2009/06/16(火) 20:11:11
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part52
http://pc12.2ch.net/test/read.cgi/tech//

Visual C# 2008 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>2-5くらい
2デフォルトの名無しさんsage2009/06/16(火) 20:12:16
関連スレ

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

Visual Studio 2008 Part 15
http://pc12.2ch.net/test/read.cgi/tech//

WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
http://pc12.2ch.net/test/read.cgi/tech//

【VB.NET】LINQ友の会【C#, C♯, C#】
http://pc12.2ch.net/test/read.cgi/tech//

C#,C#の宿題片付けます。
http://pc12.2ch.net/test/read.cgi/tech//
3デフォルトの名無しさんsage2009/06/16(火) 20:12:26
関連スレ

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

Visual Studio 2008 Part 16
http://pc12.2ch.net/test/read.cgi/tech//

WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
http://pc12.2ch.net/test/read.cgi/tech//

【VB.NET】LINQ友の会【C#, C♯, C#】
http://pc12.2ch.net/test/read.cgi/tech//

C#,C#の宿題片付けます。
http://pc12.2ch.net/test/read.cgi/tech//
4デフォルトの名無しさんsage2009/06/16(火) 20:13:00
参考リンク

MSDNライブラリ
http://msdn.microsoft.com/ja-jp/library/

@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/
MSDN フォーラム
http://forums.microsoft.com/MSDN-JA/default.aspx?SiteID=7

pinvoke.net: the interop wiki!
http://pinvoke.net/
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/
WisdomSoft Microsoft .NET入門
http://wisdom.sakura.ne.jp/system/msnet/
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
5デフォルトの名無しさんsage2009/06/16(火) 20:13:16
>>2
あーあ
VS2008スレが古いよ
6デフォルトの名無しさんsage2009/06/16(火) 20:13:28
otu
7デフォルトの名無しさんsage2009/06/16(火) 20:13:44
質問する前に"必ず"WikiやFAQ集を参照し、同じような質問がないか確認してください。

初歩的な質問はPC初心者板で・・・
http://pc11.2ch.net/pcqa/
参考リンク(よく出てくる情報リンク)
Windows Vista Wiki
http://windowsvista.ms/index.php
Windows VistaFAQ
http://vistafaq.stdo.net/index.html
インストールから設定・活用まで〜 すべてが分かるWindows Vista大百科
http://journal.mycom.co.jp/special/2007/windowsvista/menu.html
8デフォルトの名無しさんsage2009/06/16(火) 20:16:40
>>1
9デフォルトの名無しさんsage2009/06/16(火) 20:24:00
最近のC#スレの勢いはすごいね。昔のC#ごみだクソだ、Javaのまねw
が懐かしく思える
10デフォルトの名無しさんsage2009/06/16(火) 20:37:11
前スレの
>みなさんはデリゲートばりばりですか
>現場であまり使う機会がないですがみなさんどうですか

使いまくりです。デリゲート、イベント、ラムダ式等々。
余計なクラス拡張しないですんだり、そもそもクラス自体作らずに寸でよい感じ
11デフォルトの名無しさんsage2009/06/16(火) 20:38:40
おつかれー。

まぁ、俺はJava使いだけど、仕事で色々な言語触るようになってから、
使いやすいもん使えばいい、という感じになってきたな。
開発環境も言語も新しいもんがポンポン出てるし、あまりこだわりすぎると芸の幅を狭める。
12デフォルトの名無しさんsage2009/06/16(火) 20:54:28
これってJAVAよりカンタンなの?
13デフォルトの名無しさんsage2009/06/16(火) 20:58:38
簡単かどうかはともかく糖衣構文だらけで便利ではある
14デフォルトの名無しさん2009/06/16(火) 21:00:53
言語自体はjavaよりも若干複雑
周辺技術だらけのjavaとは違ってMS技術だけ覚えりゃ使えるから使うのは簡単
15デフォルトの名無しさんsage2009/06/16(火) 22:07:28
0から勉強はじめて、それなりに動く物が
作れるようになるまでに必要な勉強期間はJAVAと
比べてどうなの?
16デフォルトの名無しさんsage2009/06/16(火) 22:09:18
>>14
ちょっと色々やろうとしたら大差なくならんかね?
DIとかO/Rマッピングとか
17デフォルトの名無しさんsage2009/06/16(火) 22:11:13
>>15
0からやる人にとってはC#つかドトネトが圧倒的。
UI付きで動くから物作ってる感が全然違う。
18デフォルトの名無しさんsage2009/06/16(火) 22:23:30
コードだけだからなー

button.height=100;
VisualStudioなら
これを実行する前からフォームの概観がわかるが
VSないならいちいち実効しなきゃわからん!不便!
19デフォルトの名無しさん2009/06/16(火) 22:56:19
labelで文字に縁取りしたり、行間の指定をするにはどうすればよいでしょうか?
20デフォルトの名無しさんsage2009/06/16(火) 22:57:23
だがしょせんJavaのまね
21デフォルトの名無しさんsage2009/06/16(火) 22:58:36
JavaがそもそもC++とかのまねだろ
22デフォルトの名無しさんsage2009/06/16(火) 23:12:17
>>20
MSの後出しじゃんけんは最強。
23デフォルトの名無しさんsage2009/06/16(火) 23:17:02
いままでいったいいくつ既存のものを乗っ取ってると思ってるんだ
24デフォルトの名無しさんsage2009/06/16(火) 23:20:05
乗っ取られるから悪いんだろ
25デフォルトの名無しさんsage2009/06/17(水) 00:05:49
出自がどうあれ便利ならそれでいいじゃん
26デフォルトの名無しさんsage2009/06/17(水) 00:18:28
MS全方位で戦いすぎだろ
27デフォルトの名無しさんsage2009/06/17(水) 01:06:07
QDOSを買い取ったときに叩いておくべきだった
2819です2009/06/17(水) 01:09:24
ぐぐって
class MyTextBox : TextBox {
 public void SetFontHeight(int height)  {
  this.FontHeight = height;
 }
}
class Hoge {
 meTextBox1.SetFontHeight(20);
}
というクラスで行間の変更が可能だと見つけたのですが、
このテキストボックスをフォームに表示させるにはどうすればよいのでしょうか?
Desiner.csを直接編集するのでしょうか?
29デフォルトの名無しさんsage2009/06/17(水) 01:16:54
ビルドしたらツールボックスに出てくるだろ
publicなクラスじゃないとダメかも知れんが

FontHeightの解説のメモに勝手な数字入れんなって書いてるけど
3019です2009/06/17(水) 01:58:44
ありがとうございます。ビルドしたらでてきました!
しかし
class Hoge {
 MyTextBox1.SetFontHeight(20);
}
の”(”の部分で無効なトークン '(' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。
とでてきてしまいます・・・・

>FontHeightの解説のメモに勝手な数字入れんなって書いてるけど
あぁそうなのですか・・・・
31デフォルトの名無しさんsage2009/06/17(水) 02:14:12
メソッド内じゃないから
32デフォルトの名無しさんsage2009/06/17(水) 07:53:37
>>30
こんな感じでおk
ちなみにそのコードのMyとその前の空白が全角だぞ
class Hoge {
Hoge(){
MyTextBox1.SetFontHeight(20);
}
}
33デフォルトの名無しさんsage2009/06/17(水) 09:32:54
>>20
初期は確かにまねだったが、今はもうまるで別物と化している
ここにきて同系統の言語とは思えない。
34デフォルトの名無しさん2009/06/17(水) 13:01:58
クラス化したフォームを
メインフォームに貼り付けたいんだが
VC++の時の様に出来なくて困ってます。
メインフォーム側で以下のコードなのですが、

//ユーザー定義のフォームを生成
UserCtrlFrm usrFrm = new UserCtrlFrm();
usrFrm = "ほにゃらら状態を示すフォーム";
usrFrm.Text = "usrFrm";
usrFrm.Tag = 0;
usrFrm.Visible = true;
usrFrm.Location = new System.Drawing.Point(tekitou.X, tekitou.Y);
usrFrm.Size = new System.Drawing.Size(184, 432);
//メインフォームへ結びつけ
this.Controls.Add(usrFrm);

指定した座標どころか、タイトルバーの無いダイアログとして表示されてしまいます。
他に何が足りないのでしょうか?

35デフォルトの名無しさん2009/06/17(水) 13:07:30
フォームではなくユーザコントロールとして作る
張り付けるときにはデザイナが使えるからコードは不要
36デフォルトの名無しさんsage2009/06/17(水) 13:07:56
StartPosition
タイトルバーはFormBorderStyleあたりが影響するが
37デフォルトの名無しさんsage2009/06/17(水) 17:55:52
KeyEventArgsクラスの
KeyDataとKeyCodeってどう違うの?
ボタンを押されたら何かするってので

Form1_keydown(object sender,KeyEventArgs e)
{
if(e.KeyCode==keys.Escape)
これと
if(e.KeyData==Keys.Escape)

これが同じ動きなんだけど。
まったく同じものを二つも用意する意味がないから
何か違うんだろうけどHelpみても違いわからない。
誰か教えて
38デフォルトの名無しさんsage2009/06/17(水) 18:00:33
修飾キーが組み合わされるかどうか
39デフォルトの名無しさんsage2009/06/17(水) 21:17:39
: プログラミング
HTMLに出てくるこういう文字列をデコードするメソッドってありますか?
40デフォルトの名無しさんsage2009/06/17(水) 21:19:55
うん
4139sage2009/06/17(水) 21:20:56
えーと・・・
文字参照をデコードする方法です
42デフォルトの名無しさんsage2009/06/17(水) 21:22:14
HttpUtlity.HtmlDecode
43デフォルトの名無しさんsage2009/06/17(水) 21:24:55
できました!ありがとうございます!
4419です2009/06/18(木) 00:25:25
>>30さん>>31さんありがとうございます。

class Hoge {
Hoge(){
MyTextBox1.SetFontHeight(20);
}
}

とさせていただいたのですが、MyTextBox1がコンテキスト内に存在しません。と
エラーになってしまいます。クラスの継承などよく理解していない、ながらに質問してしまってすいません。
対処というか何が問題なのかすらわかりません。
よろしければ、どなたかヒントくださいませ。
45デフォルトの名無しさんsage2009/06/18(木) 00:34:10
なんでHogeとか出てくんの?
Form1に貼り付けてLoadイベントとかで設定するもんでしょ
46デフォルトの名無しさんsage2009/06/18(木) 02:37:54
Form1.Controls.Add(MyTextBox1);
47デフォルトの名無しさんsage2009/06/18(木) 03:58:50
誰に刺せて頂いたの?
48デフォルトの名無しさんsage2009/06/18(木) 08:07:56
おまいらHogeとかHogeHogeとかどれぐらい使ってる?(´・ω・`)
49デフォルトの名無しさんsage2009/06/18(木) 08:23:22
Hogeってどういう意味?
50デフォルトの名無しさんsage2009/06/18(木) 08:44:24
ジャイアンみたいな感じ?
51デフォルトの名無しさんsage2009/06/18(木) 08:49:20
foo, bar
52デフォルトの名無しさんsage2009/06/18(木) 10:56:17
>>48
Hoge,Hehe,Gege
foo,bar,baz
くらいかな、サンプルで何でも良い何かを表すときだけしかつかわないし
53デフォルトの名無しさんsage2009/06/18(木) 14:17:03
Hoge Fuga Mage
54デフォルトの名無しさんsage2009/06/19(金) 00:43:09
俺のお気に入りはPiyo
55デフォルトの名無しさんsage2009/06/19(金) 00:49:22
x, xx, xxx, xxxx とかよく使ったりする。
すぐ消すか、後からリネームする変数限定だけど。
56デフォルトの名無しさんsage2009/06/19(金) 01:07:05
fox
57デフォルトの名無しさんsage2009/06/19(金) 01:09:24
ほげほげ(^q^)
58デフォルトの名無しさんsage2009/06/19(金) 08:05:02
Hoge、Hage、Hige
後で見て分からなくなるぜ
59デフォルトの名無しさんsage2009/06/19(金) 19:03:27
後で見るやつに適当な名前付けんな
60デフォルトの名無しさんsage2009/06/19(金) 22:33:17
Hoge には「意味がない」という意味があるから適当な名前と
いうわけではない。一応。
61デフォルトの名無しさんsage2009/06/20(土) 00:39:29
Hogeがとあるmix廃人のhandle名が由来ってのわかる人はすでに鬼籍にしかおらんのかもしらん
62デフォルトの名無しさんsage2009/06/20(土) 00:46:12
幽霊さんですか?
63デフォルトの名無しさんsage2009/06/20(土) 00:53:47
>>60
Hogeは「意味が無い」と言う意味であれば、何かに使った時点で
その何かの意味を持つので、使うこと自体が間違いである
64デフォルトの名無しさんsage2009/06/20(土) 01:13:54
ねーぞ?ラテン語かなんか?
http://eow.alc.co.jp/hoge/UTF-8/
65デフォルトの名無しさんsage2009/06/20(土) 01:14:46
Hageは?
66デフォルトの名無しさんsage2009/06/20(土) 01:21:40
Hogen Sie, bitte.
67デフォルトの名無しさんsage2009/06/20(土) 10:21:07
>>61 このあいだshowさんがあれこれ書いてた
68デフォルトの名無しさんsage2009/06/20(土) 10:22:09
てか、ウニマガでhogeを使った人はmixとの接点がないのよね。
69デフォルトの名無しさんsage2009/06/20(土) 13:30:34
>>63
適当な名前をつけると意味があるように見えて混乱するので、
変数名に意味がないことを示して気に留めるなってことを示す
名前だから「適当な名前」じゃないよって話。
本来それを否定するものだから。メタ構文変数。

実コーディングに使うな(実コードで意味がないものなどないと
いう考え方)とかはまた別の話。
70デフォルトの名無しさんsage2009/06/20(土) 17:05:58
テスト的に動かすときに、クラスメイトか変数名でHogeは多用されています(´・ω・`)
71デフォルトの名無しさんsage2009/06/21(日) 03:11:40
aaa,bbb
72デフォルトの名無しさんsage2009/06/21(日) 08:40:00
>>70
そのテストプログラムが間違って配布されたら…ガクガクブルブル
うp wktk
73デフォルトの名無しさんsage2009/06/21(日) 09:22:24
そういえばジャグ配列と多次元配列でパフォーマンスが違うのは有名だが、
環境によっても左右されるんだな。
家のPCだと簡単な計算ならジャグ配列の方が速い時が多いのに、
全く同じコードを研究室のPCで実行すると多次元配列の方が圧倒的に速い。
この辺はJITコンパイラがまだまだだな。
74デフォルトの名無しさんsage2009/06/21(日) 09:36:49
ちなみに CPU に違いとかあるの?
75デフォルトの名無しさんsage2009/06/21(日) 13:40:16
JITが吐くマシン語が見れたらいいのに
76デフォルトの名無しさん2009/06/21(日) 15:04:45
CheckedListBoxみたいなやつで1つの項目に対して項目を追加できるのを
使いたいんですが名前がわからないので誰か知ってたら教えていただけますか。
77デフォルトの名無しさんsage2009/06/21(日) 15:07:45
日本語でおk

ListView……か?
78デフォルトの名無しさんsage2009/06/21(日) 15:08:41
よくわからん・・・
TreeView にチェックボックスつけたような感じ?
79デフォルトの名無しさん2009/06/21(日) 15:22:15
ちっこくてわかりにくいですが
http://118.82.122.42/download/bm_operation_movie.zip
にあるムービーの5分07秒の真ん中らへんにあるやつです。
80デフォルトの名無しさんsage2009/06/21(日) 15:29:00
キャプチャして画像だけあげるとかしようよと思わんでもない
TreeViewという言葉が出てこないのはさすがにどうかと思う
81デフォルトの名無しさんsage2009/06/21(日) 15:37:17
TreeViewそのままだね。CheckBoxes = True で。
82デフォルトの名無しさんsage2009/06/21(日) 15:53:25
>>75
C#Builderならブレークポイントを掛けたら見れた
83デフォルトの名無しさんsage2009/06/21(日) 16:35:03
>>82
JIT結果のよ?
MSIL コードじゃなくて、それをさらに JIT したネイティブのマシン語。
84デフォルトの名無しさん2009/06/21(日) 16:38:58
TreeViewそのままでしたね、ありがとうございます。

テキストボックスに入力されているテキストとCheckedListBoxに追加した項目の名前を同期させたいと
思ってTextChangedで変更されてる瞬間にテキストを設定してるはずなのですがうまくいきません。
Refreshも最後にやったりしてるんですが変更されません。違う箇所で項目の名前の変更自体がうまく
いってないみたいなんですがどなたかわかりませんか?
85デフォルトの名無しさんsage2009/06/21(日) 16:42:42
>>83
そうだよ
x86のネイティブコードとソースの混合画面が見られた
C#Builderもラインナップから消えちゃったけどね(´・ω・`)
86デフォルトの名無しさんsage2009/06/21(日) 16:44:27
VSだとデバッグ>逆アセンブル
エディションによって見れないかどうかは知らんが
87デフォルトの名無しさんsage2009/06/21(日) 16:53:14
>>84
TextChanged内のコード書いてみ
88デフォルトの名無しさんsage2009/06/21(日) 21:55:52
>>73
ほんとかよ、ちょっと考えられないんだが。
89デフォルトの名無しさんsage2009/06/21(日) 22:12:20
通常はどっちがパフォーマンスいいの?
多次元ぽいけど。
90デフォルトの名無しさんsage2009/06/21(日) 22:15:42
要素の参照はジャグの方
91デフォルトの名無しさんsage2009/06/21(日) 22:21:30
>>90
なんで?
92デフォルトの名無しさんsage2009/06/21(日) 22:30:54
原理的には多次元配列の方が早いはずなんだけど、
.NET の場合は1次元配列の場合にのみ専用の IL 命令持ってるせいで、
JIT 次第で多次元配列がジャグ配列より遅くなることも多々あるとか。
93デフォルトの名無しさん2009/06/22(月) 12:43:11
フォームにBackgroundImage貼り付けてタイルっぽいデザインにしたら
途端にもの凄く重くなった。
VC++の時も貼り付けてたがこんなに重くならなかったんだが・・・
何か設定がまずいのかな?
ローカルリソースのインポートからjpg指定してるだけなんだけど・・・
プロジェクトリソースにしても余り変化は見られなかった。
どなたか軽くする方法知ってる方いたら教えて下され
94デフォルトの名無しさん2009/06/22(月) 17:16:56
OnPaintBackgroundをオーバーライドして自分で描画してみたら
95デフォルトの名無しさんsage2009/06/22(月) 17:35:13
何もしてない素のフォームアプリで重いの?
96デフォルトの名無しさんsage2009/06/22(月) 17:41:24
タイルじゃなくてものすごく大きな画像を貼ってるんじゃないのか?
97デフォルトの名無しさん2009/06/22(月) 17:49:40
こまいファイルを並べるように表示してるんじゃないの。
一つの大きな画像指定するとかすれば
98デフォルトの名無しさんsage2009/06/22(月) 18:04:38
でかい画像でかつタイル指定だと重い気がするな
タイルはデフォなので、はずして試してみるといいかも。
99デフォルトの名無しさんsage2009/06/22(月) 18:44:37
>>93
Stretchとかリッチな条件で貼ってない?
100デフォルトの名無しさんsage2009/06/22(月) 19:03:32
みんなが言うようにデカい画像→縮小でタイル表示は
元のサイズ次第で死ぬほど遅いね
101デフォルトの名無しさんsage2009/06/22(月) 21:47:51
縮小したイメージでタイルしなはれ(´・ω・`)
102デフォルトの名無しさん2009/06/22(月) 22:14:27
アドバイスどうもです。
縮小してやってみます。

そんな大きくないんだけどなぁ
後、余り小さくてするとちょっとしたグロ画像になってまうかもw
103デフォルトの名無しさんsage2009/06/23(火) 19:13:42
ファイルのパスだけを得たいためOpenFileDialogを使用していたの
ですが、使用中のファイルの場合「このファイルは使用されています〜」
というエラーメッセージが表示されて選択できません。
回避策はあるでしょうか?
・・自分で作るしかない?
104デフォルトの名無しさんsage2009/06/23(火) 19:30:19
>>103
http://msdn.microsoft.com/ja-jp/library/system.io.fileinfo_members.aspx
105デフォルトの名無しさんsage2009/06/23(火) 20:07:01
>>103
プロパティにない以上OpenFileDialogクラスじゃどうしようもないね
106デフォルトの名無しさんsage2009/06/24(水) 18:54:22
>>68
その系列はロビン電子経由で直接本人と面識ある派だと思う
107デフォルトの名無しさんsage2009/06/24(水) 19:17:01
ふらっとC#,C♯,C#(初心者用) Part42
http://pc12.2ch.net/test/read.cgi/tech//

ふらっとの新スレご案内
108デフォルトの名無しさんsage2009/06/25(木) 14:26:55
>>106
そうなのかなぁ。
Hoge!さんから、メタ構文変数のhogeへの系譜(があるのか否か)って
まだ検証されてないよね。
109デフォルトの名無しさんsage2009/06/26(金) 22:37:12
>>104
>>105
ありがとう。
どうしても解決できなかったのと、他の理由で
作る必要が出たので自作しときます。
110デフォルトの名無しさん2009/06/29(月) 19:37:54
webBrowser.Navigate("http://www.xxx/");
でアクセスするとアクセスした記録が残るのに
WebRequestなどでアクセスしてもninjaツールなどで
アクセス記録が表示されないのはなんでやろ?

111デフォルトの名無しさんsage2009/06/29(月) 19:47:59
agentだろ
112デフォルトの名無しさん2009/06/29(月) 20:21:45
UserAgent設定してみたけどあかんね…
113デフォルトの名無しさんsage2009/06/29(月) 20:31:31
スクリプトとimg辺りで履歴取ってんだろ
114デフォルトの名無しさんsage2009/07/03(金) 15:52:52
相談させてください。

PDFのセキュリティ設定(コピー許可、印刷許可など)を読み取りできるライブラリを
どなたかご存じないですか?

アンテナハウスのサーバーベース・コンバーターはR/Wとあったからできそうですが、
たったそれだけのことに導入するのは辛すぎです。
115デフォルトの名無しさんsage2009/07/03(金) 18:51:12
>>114
PDFはアドビが仕様書配布してるよん
116デフォルトの名無しさん2009/07/03(金) 20:50:41
C#2008を使用しています。
エディタのプロパティウィンドのように
DataGridViewに指定クラスのプロパティを
表示、編集することは出来るでしょうか?
DataTableを作って表示させることは出来ると
思いますが、できれば
Grid.DataSource = クラス
のように簡単にいかないものかと。
BindingSourceを使ってもうまくいきませんでした。
117デフォルトの名無しさんsage2009/07/03(金) 20:54:36
PropertyGridじゃだめか
118デフォルトの名無しさんsage2009/07/03(金) 21:05:44
PropertyGridって表示する分には超お手軽だけど
ちょっと凝ったことしようとすると一気に難しくなるよねw
119116sage2009/07/03(金) 21:09:57
ぬぉぉおぉぉぉ
どんぴしゃです!ありがとう!

C#って思った以上にいろいろ揃ってますねぇ
120デフォルトの名無しさんsage2009/07/03(金) 23:38:30
>>114
中身はテキストベースだから、仕様書を精査すれば気合でパースできなくもない
Javaでいくつかライブラリあるから参考にしてみるのはどうか
121デフォルトの名無しさん2009/07/04(土) 00:33:17
PropertyGridは開発者専用と考えたほうがいいよ
そもそもこんなものが標準のライブラリにあるのがおかしい
WPFでは無くなってるし
122デフォルトの名無しさんsage2009/07/04(土) 03:33:20
何がおかしいの?
123デフォルトの名無しさんsage2009/07/04(土) 07:09:21
高機能で自動的過ぎて潰しが効かないという意味じゃね?
SelectedObjectのpublicなプロパティを自動表示するとかの部分。
明らかにユーティリティであって、コントロールとしては度を越えている。
WPFでは無くなっているっていうより、まだまだ練れていないから、導入は
見送っているんじゃないかなMS。
124デフォルトの名無しさんsage2009/07/04(土) 07:59:50
>>123
自動表示するから楽ちんなんじゃんw
カスタムしたければ好きなように隠せるし
存在しないプロパティをあるように見せたりも出来る
125デフォルトの名無しさんsage2009/07/04(土) 08:58:21
WPFでなくなってるのって
リストとかグリッドがアホみたいに高機能化して
PropertyGridの存在意義がなくなったからだろ
リストやグリッドの子要素として「何でも」埋め込めるんだぜ
自動表示ってのもBindingでどんなデータにも紐付けられるし
126デフォルトの名無しさん2009/07/04(土) 09:37:02
いずれにせよ開発者向けのツールを作るためのコントロールであって
一般のユーザーに触らせるのは間違い
127デフォルトの名無しさんsage2009/07/04(土) 09:37:46
>>114
やったことないからよくわからないけど
Acrobat SDK とか使えばできるんじゃないの。
Adobe Reader とかインストールされた環境が前提になるだろうけど。
128デフォルトの名無しさん2009/07/04(土) 11:35:32
hoge.GetType()==typeof(Hoge)
で型チェックしたらえらい速いんだけどJITで特別に最適化されてたりする?
左辺をいったんローカル変数に入れたら10倍くらい遅くなるみたい
129デフォルトの名無しさんsage2009/07/04(土) 11:38:45
>>127
たぶんむり
セキュリティ絡みはAdobeの有料アプリ買わないと出来ない機能だし
どうやっても金払わないことには無理だろうね
130デフォルトの名無しさんsage2009/07/04(土) 15:46:22
べつにセキュリティの設定を変更するわけじゃないんじゃないの。
たんにプロパティみたいだけでしょ。
131デフォルトの名無しさんsage2009/07/04(土) 16:05:46
>>114
ttp://www.ujihara.jp/iTextdotNET/ja/
これで出来そう
132デフォルトの名無しさんsage2009/07/04(土) 16:08:37
http://stackoverflow.com/questions/756127/building-pdf-files-with-c
ここに載ってるの確認すれば?
iTextSharpで全部できそうだけど(よく見てない)
133デフォルトの名無しさんsage2009/07/04(土) 16:54:20
null と 空文字 どちらでも良い場合、どっちで管理するのが一般的なの?
空文字だと??が使えなくなるから不便かな?
nullはnullで何か面倒なことになりそうな気もするし
134デフォルトの名無しさんsage2009/07/04(土) 17:51:24
文字列の操作なら""
オブジェクトの操作ならnull
135デフォルトの名無しさんsage2009/07/04(土) 18:28:25
>>128
確認してないけどコンパイル時に is に変えてるんじゃないの?
ローカル変数に入れちゃうと is に変換できないからとか
136デフォルトの名無しさんsage2009/07/04(土) 23:40:05
isに変えてるわけはない。
動作が変わってしまうから。

変数に入れると遅くなるのはTypeの取得が走るからで、
何らかの方法でハンドルの比較だけに変えられてるとかか?
137デフォルトの名無しさんsage2009/07/04(土) 23:47:47
Type.GetTypeHandle(hoge)==typeof(Hoge).TypeHandle
こんな感じになってるとか。
138デフォルトの名無しさんsage2009/07/05(日) 08:14:14
ILを見た限り違いはなかった。JITでいろいろやってるのかな。
139114sage2009/07/05(日) 08:19:35
>>131
iTextSharpならTitleとAuthorの読み取りに使ったけど、
AllowCopy関連はWriteできるけどReadIがなかった(と思う)。
140デフォルトの名無しさん2009/07/06(月) 08:39:41
コメントのXMLドキュメントタグって使ってる?
どうにもとっつきにくいわ、冗長だわ、読みづらいわで使わずじまいなんだけど。
141デフォルトの名無しさんsage2009/07/06(月) 08:42:26
なにそれ?といってのける俺はもしかして勝ち組?
142デフォルトの名無しさんsage2009/07/06(月) 09:43:53
大敗
143デフォルトの名無しさんsage2009/07/06(月) 09:46:03
>>140
あれは、メタデータに加工するためのものだから、読みづらい言われても…
144デフォルトの名無しさんsage2009/07/06(月) 11:08:37
//
// 機能 : あんなことやこんなことを行う
//
// 機能説明 : あんなことやこんなことを行う。
//        その中であんなことやこんなことが起きればあんなことやこんなことを行う。
//
// 引数  : ARG1 - あんなの
//        ARG2 - こんなの
//
// 返り値 : そんなの
//
// 備考 : 簡単なサンプルです。
//


145デフォルトの名無しさんsage2009/07/06(月) 11:35:22
XMLドキュメントタグを使わないと、インテリセンスにちゃんと説明が出てこないだろ。
146デフォルトの名無しさんsage2009/07/06(月) 15:09:38
>>140
どうやって読んでいるのか気になるところ
147デフォルトの名無しさんsage2009/07/06(月) 16:40:13
あのXMLは超便利だろ
インテリ効くしビルド時に出力すればヘルプファイルも作れるし
148デフォルトの名無しさんsage2009/07/06(月) 17:48:51
とあるクラスからDispoes付きのコレクションを取得して
foreachにかけるとき、全部Dispoesすべきなんでしょうか?
要素は出来るだけ早く開放したほうがいいものを想定しています。

using( クラス )
{
using( コレクション = クラス.取得 )
{
foreach( 要素 in コレクション ) {
要素.Dispoes();
}
}
149デフォルトの名無しさんsage2009/07/06(月) 17:53:22
そんなんしらんがな
クラスとコレクションと要素の製作者に聞け
150デフォルトの名無しさんsage2009/07/06(月) 18:30:19
>>140
とっつきにくい?

冗長さと読みづらさはまあ分からんでもない
コードが多少ごちゃごちゃになるからな

とっつきにくいことは無いだろう
関数とかの宣言の上でスラッシュをカカカっと三回入力するだけで
テンプレ出てくるんだから
151デフォルトの名無しさんsage2009/07/06(月) 19:16:13
>>148
using()するなら、Disposeしちゃ駄目。
152デフォルトの名無しさんsage2009/07/06(月) 19:19:40
>>151
usingしてるのはコレクション
disposeしてるのは要素
>>149のツッコミが正しい
153デフォルトの名無しさんsage2009/07/06(月) 21:27:37
Dispose は何度呼ばれても大丈夫なように作らなければならないから
何度呼んでもいいべ
154デフォルトの名無しさんsage2009/07/06(月) 23:50:03
>>140
もったいなさ過ぎると思います
155デフォルトの名無しさんsage2009/07/07(火) 00:02:46
あれだな、とりあえず

・/// で VS は色々生成してくれる
・エディタのツリーでコメントはたためる
・インテリセンスのツールヒントに注目
・Sandcastle とか使ってみる

この辺押さえろみたいな
156デフォルトの名無しさんsage2009/07/07(火) 00:13:10
>>144
なにこれ見やすい
157デフォルトの名無しさんsage2009/07/07(火) 00:25:22
>>156
そんな所見やすくてもしかたないだろ、ヘルプは使う所(インテリセンス)で見るんだから
158デフォルトの名無しさんsage2009/07/07(火) 00:37:24
>>156
タグ嫌い?英語嫌い?
159デフォルトの名無しさんsage2009/07/07(火) 03:17:06
そんなにたくさんコメント書くの('A`)マンドクセ
160デフォルトの名無しさんsage2009/07/07(火) 08:58:46
わずか2,3行のメソッドに長々としたコメントが付いてるのは糞ウザイ
161デフォルトの名無しさんsage2009/07/07(火) 21:09:34
俺が一生懸命コメント書いてドキュメント生成しても誰も読まない
162デフォルトの名無しさんsage2009/07/07(火) 21:10:40
無駄な努力乙
163デフォルトの名無しさんsage2009/07/07(火) 21:38:51
ドキュメントはたまにしか見ないな。
インテリセンスとVSのオブジェクト ブラウザでほとんどの場合は事足りてる。
164デフォルトの名無しさんsage2009/07/07(火) 21:55:13
ドキュメントは全体の流れと思想が書いてあれば大体足りる。
165デフォルトの名無しさんsage2009/07/07(火) 21:56:11
そして投げられる例外の記述が無くてキレる
166デフォルトの名無しさんsage2009/07/07(火) 22:28:40
>>160
XMLコメントやインテリセンスの登場は、ソースを読むというくだらない時間を割くのはやめるといいよ
という事なんだと思うよ

最近C#慣れしてきて、だんだんコメント不要の意見が変わってきたオレ
ソースコードの変更にコメントの変更が遅れるぐらいならソースコードをきっちり書けというのは間違っている
コメント(仕様書)にソースコードが管理されるべきだなとw
こんなに楽ちんならもう元には戻れない
167デフォルトの名無しさんsage2009/07/07(火) 22:35:21
>>166
WEB というものがあってだな・・・
168デフォルトの名無しさんsage2009/07/07(火) 22:37:54
WebもASP.NETで!
169デフォルトの名無しさんsage2009/07/07(火) 22:41:08
WEB と Web は違う。クヌース先生の Web サイトでも見てこい。
170デフォルトの名無しさんsage2009/07/08(水) 09:35:25
>>165
MSDNですら書いてない例外が飛んでくることは普通にあるしな。
171デフォルトの名無しさんsage2009/07/08(水) 19:26:11
最近やたら煽りが多いと思ったらストールマン発狂つづいてオプソ信者発狂でC#狙い撃ちだったんだなw
タコつぼで暴れてろよお前らよ
172デフォルトの名無しさんsage2009/07/08(水) 19:34:18
         ,,-‐----‐、 , -'"` ̄ ̄"`''-,__, --‐‐-..,
        /  、゙ヽ、 ‐-'´          ヽ‐- / /   ヽ
      ,/´ .., ヽ,,l_)'    zェェェァ'  ;rfァt ヽ ,ト/ /    ヽ
     /    ヽ,r' ,l′    _,,,   . __,,  ,l゙.-〈__r,'、   ヽ_
    _.l    ヽ」   ,l    .イてソ` l イにj`,/    ゙‐ヽ、_,,  /l   
    ,l l|  −'´ll   ,l      rソi"  ヽ じ'' f゙l    .,//゙l   //\ ココおかしいんじゃねえか
    l`l|     l|ヽ  v'⌒ヽ        .,ノ  j/    |l    //   }
   l  \    l| ,l  l_U>     r‐--‐ァ  ,l    |,l   //    l
   /   '\   l|`l   ゝ_,´    ゙ヽ__r′ .,.'   ___l ヽ /
173デフォルトの名無しさんsage2009/07/08(水) 20:41:31
なんかめったにこのスレで見ない大 AA が現れたの見て
>>171 はひょっとしてとちょっと思った
174デフォルトの名無しさんsage2009/07/10(金) 17:16:57
C#のソケットですが、.NET1.1から何か変更はありますか?
ソケット関連の本を買おうかと思ってるのですが、2004年の
ものなので情報が古いかなと思いまして。
175デフォルトの名無しさんsage2009/07/10(金) 17:48:38
1.1はもはやC#の方言だからやめた方がいい。
176デフォルトの名無しさんsage2009/07/10(金) 18:37:37
MSDN見て自分で補正できないレベルだったら、2.0以降用を探すようにすすめる。
177デフォルトの名無しさんsage2009/07/10(金) 19:34:02
>>176
>>175
ありがとうございます。2.0対応だったら買うことにします。
178デフォルトの名無しさん2009/07/10(金) 21:42:28
イベントに関して質問です。
イベント += Onイベント
イベント -= Onイベント
のように+=および-=演算子でイベントを登録/解除できると思いますが、
イベントにOnイベントが既に登録されているかどうか判断することは出来ないのでしょうか?
179デフォルトの名無しさんsage2009/07/10(金) 21:50:35
うん
180デフォルトの名無しさん2009/07/10(金) 21:57:56
ですよね。
残念。
181デフォルトの名無しさんsage2009/07/11(土) 01:03:27
自分で定義したイベントなら取れる。
182デフォルトの名無しさんsage2009/07/11(土) 01:11:34
>>178
通常は判別できる必要性など無いと思うが
逆に必要と思った理由を教えて欲しい
ただし、「多重登録の回避」という回答は却下
183デフォルトの名無しさんsage2009/07/11(土) 01:14:00
自分で定義したイベントでなくても取れそうだ。
Reflction なコード書くのが面倒だから、サンプルは作らんけど。

Component の Events、EventHandlerList、Delegate.GetInvocationList() あたりを
調べてみて。
184デフォルトの名無しさんsage2009/07/11(土) 01:35:17
それはそれに結びついている保証もないというか
ロジック確認してみたいなハックに等しいから
分離を破壊する(実装変わったら終了って話)ので
さすがに薦めるのどうよ
アクセサが add/remove しかないんで無理でもう
いいじゃん
185デフォルトの名無しさんsage2009/07/11(土) 10:24:34
クラスAがイベントHogedを持っていて、クラスBのなかでクラスAのインスタンスaを作り自分のメソッドHogeをHogedに登録するとする。
あるタイミングでaは破棄されるんだけど、そのときHogeはHogedからRemoveする必要ないよね?
186デフォルトの名無しさんsage2009/07/11(土) 11:02:04
うむ
187デフォルトの名無しさん2009/07/11(土) 11:05:58
COBOLは、データラベルについてREDIFINEで再定義を行うことができますが、
C#でも同様に、
 01 DATE
  05 YY
  05 MM
  05 DD
みたいな再定義はできますか?
よろしくお願いします。
188デフォルトの名無しさんsage2009/07/11(土) 11:19:50
union かなあ
189デフォルトの名無しさんsage2009/07/11(土) 11:21:45
ってここC#か、MarshalAs属性とか?
190デフォルトの名無しさんsage2009/07/11(土) 12:49:04
>>184
保証はあるだろ。

できる/できない の話として「できる」ってだけで、
薦める/薦めないの話じゃない。
191デフォルトの名無しさんsage2009/07/11(土) 12:58:02
ないよ
イベントはデリゲート型ではあるけど実装としてデリゲートを使う必要はない
192デフォルトの名無しさんsage2009/07/11(土) 13:05:49
+=、-= でデリゲートを使わない、具体的な例を頼む。
193デフォルトの名無しさんsage2009/07/11(土) 14:14:03
int a = 1, b = 2;
a += b;
a -= b;
194デフォルトの名無しさんsage2009/07/11(土) 14:26:49
>>190
いや、完全に実装依存。
あるイベントについて現時点で動作するロジックなら書ける。
でも、全てのイベントについて今後永久に動作するロジックは無理。
195デフォルトの名無しさんsage2009/07/11(土) 14:29:51
>>191
イベントはデリゲート型ではあるけど

これは違うような。。
196デフォルトの名無しさん2009/07/11(土) 15:13:43
C#のテキストボックスで、
・高さ指定&文字列の縦配置を中央にする。
・高さ指定&padingを設定する。
以上のいずれかは可能でしょうか。
老人向けの大きな見栄えの良いボックスを作りたいのですが…。
197デフォルトの名無しさんsage2009/07/11(土) 16:15:45
>>185-186
の件だけど、これってデリゲートが弱参照だってことだよね。
ヘルプで見つからないフシアナな俺に、どこに書いてあるか教えて。
198197sage2009/07/11(土) 16:16:58
あ、ごめん。aを破棄した時か。
じゃあ問題ないな。
199デフォルトの名無しさん2009/07/11(土) 16:33:39
Win32APIのスレで聴いたのですがスレ違いとのことでした。.NETの
クラスで解決できるでしょうか?

現在、.NETアプリケーションでWebBrowserコントロールにおいて
フォルダのExplorer表示を出しています。そうすると必ずあの青色の
「タスクメニュー」が現れてきます。

通常のエクスプロ−ラだとそれをフォルダツリーに置き換えたり、
検索ツールに置き換えたりできました。

自分のアプリケーション上で、あのタスクメニューを消してしまうことは
できるでしょうか?できるようであればその方法を教えてほしく。

ちなみに、エクスプローラのオプションで「全般」タブ→「作業」のところ
で、「従来のWindowsフォルダを使う」を選ぶとタスクメニューはでなくは
なるのですが、そうすると、Xpでは「写真」表示ビューが使えなくなって
しまうので、「フォルダに共通の作業を表示する」の方で使いたいので
した。このオプションの状態で、プログラムから「タスクメニュー」を消す
方法がありましたら教えてください。

よろしくお願いします!
200デフォルトの名無しさんsage2009/07/11(土) 20:20:40
>>187
自分ならプロパティで実装するかな?
.NETクラスライブラリのSystem.DateTimeにも
Year, Month, Dayプロパティがあるから、プロパティによる実装がC#流のはず
201デフォルトの名無しさんsage2009/07/11(土) 21:06:20
>>196
Multiline=trueにすれば高さ指定はできるけど、
老人向けならフォントをでかくすればいいだけじゃないの?
202デフォルトの名無しさんsage2009/07/11(土) 21:58:13
>>200追記
REDEFINES句の例としてはSystem.DateTimeは不適切だったかも

01 DATE-STRING PIC X(6).
01 DATE REDEFINES DATE-STRING.
05 YY PIC 9(2).
05 MM PIC 9(2).
05 DD PIC 9(2).

のようなことをやりたい?
これもプロパティによる実装が良いと思う。
203デフォルトの名無しさん2009/07/11(土) 23:37:33
>>202
ありがとうございます。
プロパティをオリジナルで定義するということでしょうか。
204デフォルトの名無しさん2009/07/11(土) 23:42:26
>>201
ありがとうございます。
操作性と見栄えを重視したシステムにしなければならないんので、
テキストボックス内の上下の余白をゆったり目にとって、
かつ中央揃えにしたいんです。
これはc#では不可能なのでしょうか…。
205デフォルトの名無しさんsage2009/07/11(土) 23:48:30
>>204
TextBox を使わないで独自コントロールを使うとか
Panel 上に透明な TextBox を乗せてごまかすとか。
206デフォルトの名無しさんsage2009/07/12(日) 00:16:23
system.windows.controls.control.padding
207デフォルトの名無しさんsage2009/07/12(日) 00:27:58
>>204
少なくとも、C#そのものは関係ない。
(というか、C#のテキストボックスなんてないだろ)
どういうGUIコンポーネントを使うかは関係がある。
208デフォルトの名無しさんsage2009/07/12(日) 00:35:48
WPFを使えばどうも簡単にできるみたいだけどね・・・。開発環境がまだ完成しきってないし、Vista以降ターゲットになっちゃうけど
209デフォルトの名無しさんsage2009/07/12(日) 00:41:51
>>208
普通にXPで動くけど?
210デフォルトの名無しさんsage2009/07/12(日) 01:14:44
>>209
そうなんだ!勘違いしていたよ!
211デフォルトの名無しさん2009/07/12(日) 01:25:20
>>206
そんな名前空間、あったっけ…?
探しても見つからない(-_-;)。
212デフォルトの名無しさんsage2009/07/12(日) 01:27:42
すいません。
VisualC#2008で、フォームアプリケーションを作っているんですけど
フォームの多重表示を禁止したいのですが、検索してみつけたソースどおりにしても
まだ多重表示をされます。なにかソースがおかしいのでしょうか?

表示するフォーム=about.cs

about about = null;
if ((about == null) || about.IsDisposed)
{
about = new about();
about.Show();

}
参考ページ:ttp://homepage3.nifty.com/midori_no_bike/CS/form.html
213デフォルトの名無しさんsage2009/07/12(日) 01:29:00
ローカル変数においといちゃダメだろ
214デフォルトの名無しさん2009/07/12(日) 01:44:44
>>206
C#でその名前空間を使うにはどうすればいいの?
215デフォルトの名無しさんsage2009/07/12(日) 02:21:36
>>211>>214
WPFの一部だから基本的にWPFプロジェクトで使う。
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.control.padding.aspx
216デフォルトの名無しさん2009/07/12(日) 03:06:00
C♯では、テキストボックスのパディングや縦位置の中央揃えが存在ないということ?
そんな…まさか…。
217デフォルトの名無しさんsage2009/07/12(日) 03:25:54
>>216
C#に押し付けるとは・・・まだまだ青いな
218デフォルトの名無しさん2009/07/12(日) 06:56:46
>>217
もしかしてこれからはWPFの時代ですかね…?
C♯でできる裏技があればゆいのですが(*_*)
219デフォルトの名無しさんsage2009/07/12(日) 07:29:19
>>216
あるからググレ
220デフォルトの名無しさんsage2009/07/12(日) 08:01:33
WPFの柔軟性は異常。
Formsは今後のバージョンアップ
は見込めないらしいね。
221デフォルトの名無しさんsage2009/07/12(日) 08:50:00
ググるまでもなく>>215のリンク先に答えが書いてあるし
>>216とか>>218は言語フィルタでC#外しているのか
222デフォルトの名無しさんsage2009/07/12(日) 11:51:05
          ____   
       / \  /\ キリッ
.     / (ー)  (ー)\      
    /   ⌒(__人__)⌒ \    
    |      |r┬-|    |      今後永久に動作するロジックは無理
     \     `ー'´   /      
    ノ            \
  /´               ヽ              
 |    l              \
 ヽ    -一''''''"‾‾``'ー--、   -一'''''''ー-、.    
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))


          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)
| / / /     |r┬-|    | (⌒)/ / / //  だっておwwwwwwwwwwwwwwwwwww
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/    当たり前だろwwwwwwwwwwwwwww
|     ノ     | |  |   \  /  )  /
ヽ    /     `ー'´      ヽ /    /     バ
 |    |   l||l 从人 l||l      l||l 从人 l||l  バ   ン
 ヽ    -一''''''"‾‾``'ー--、   -一'''''''ー-、    ン
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))
223デフォルトの名無しさん2009/07/12(日) 12:47:15
>>215
俺も読んでみたけど、分からないんですが…。
テキストボックスのプロパティで縦の位置を中央揃えに指定できないし、
windows.control名前空間もC#だと見当たらない。
>>216
ぐぐっても出てこないよー…。
224デフォルトの名無しさんsage2009/07/12(日) 13:02:34
>>223
ttp://hanatyan.sakura.ne.jp/vbhlp/textali.htm
vbだけど
225デフォルトの名無しさん2009/07/12(日) 13:48:29
system.windows.controls.control.padding
ってアドインみたいなものっすか?
3.5入れてるけど出てこないんです。
226デフォルトの名無しさんsage2009/07/12(日) 13:54:21
>>225
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.control.padding.aspx
227226sage2009/07/12(日) 14:09:55
>>225
暇だからきちんと説明するか。
新規のwindowsアプリケーションを作成する。
追加->新しい項目->ユーザーコントロール(WPF)
UserControl1.xamlの要素の間に>>226
228デフォルトの名無しさん2009/07/12(日) 14:42:14
>>227
ありがとうございます。
すみませんが、
テキストボックスの高さをゆったりともたせ、
paddingを使って文字を縦中央に配置したい場合、
このコントロールでどう設定すればよいのでしょうか。
どうか、見捨てないでください。
229デフォルトの名無しさんsage2009/07/12(日) 15:03:52
C#は関係ないし、WPFスレに行けば?
その前に、http://msdn.microsoft.com/ja-jp/library/aa970268.aspx
ここと、関連する情報は読んで理解しておいてね。
230デフォルトの名無しさん2009/07/12(日) 15:26:29
>>229
C♯は関係ないの?
今までの話とちがうよ。
231デフォルトの名無しさんsage2009/07/12(日) 15:29:02
そもそもFormsもC#と関係ないがな(´・ω・`)
232デフォルトの名無しさんsage2009/07/12(日) 15:33:41
>>230
System.Windows.FormsもC#と関係ない。
C#という言語を使って、System.Windows.Formsというアセンブリを使う
だけ。C#から使おうがVisual Basicから使おうがIronPythonから
使おうが、使い方に違いはない。

言語(C#)とフレームワーク(.NET)とその中のライブラリ(System.Windows.Formsアセンブリ)の
区別が全くつきませんか?
233デフォルトの名無しさんsage2009/07/12(日) 15:41:14
232を書いた後、あれ、アセンブリは不適切?名前空間と言うべきだった?
でもこの文脈で区別するとますますとっつきにくくなるよな。

と思ったが、System.Windows.Forms.dllだった。よかった。
234デフォルトの名無しさん2009/07/12(日) 15:50:18
>>229
235デフォルトの名無しさん2009/07/12(日) 15:52:06
>>229
結局、テキストボックスの縦中央に配置するにはどうしたらよいの?
236デフォルトの名無しさんsage2009/07/12(日) 15:59:01
プロパティで項目一通り探してみればいいダロ
VerticalContentAlignmentとかそのものな項目が見えるけど
237デフォルトの名無しさんsage2009/07/12(日) 16:30:51
>>235
>>229のリンク先は読んだの?読んだら、どこが分からなかったの?
238デフォルトの名無しさん2009/07/12(日) 16:45:01
言語非依存WinFormsスレなんかあってもまず機能しないだろうな
WPFは現状VBerがほとんどいないからこそ専用スレが成り立つ
239デフォルトの名無しさんsage2009/07/12(日) 16:50:33
>>238
実際、以前.NETスレがあったが、過疎だった。
みんなC#とかVB.NETのスレへ流れるもんだから。
240デフォルトの名無しさん2009/07/12(日) 17:01:34
WPFにはXAMLという共通言語があるし
言語とライブラリを混同するようなレベルの初心者ユーザも少ないからな
241デフォルトの名無しさんsage2009/07/12(日) 17:17:18
>>212
aboutっていわゆるバージョン情報のフォーム?
だとすると、面倒なことをせずにShow()ではなくShowDialog()で一つ表示する方法が普通だと思うけど
242デフォルトの名無しさん2009/07/12(日) 17:29:10
>>237
あの…恥ずかしながら、
ユーザーコントロールを追加しましたが、
テキストボックスのパディングをどこで設定するのか…
またはテキストボックスの垂直の位置をどこで中央にするのか…
(水平の中央はありますが)
が分からないんです。
243デフォルトの名無しさんsage2009/07/12(日) 17:29:31
>>239
俺もそのスレ見てたわ。
次スレどうしようか悩んだけど、過疎ってたのでやめといたら結局誰も立てなかった・・。
244デフォルトの名無しさん2009/07/12(日) 17:33:08
Gridの中にテキストボックスを入れるんだよ
245デフォルトの名無しさんsage2009/07/12(日) 17:34:11
テキストボックスじゃなくていいならラベルで出来る
246デフォルトの名無しさん2009/07/12(日) 17:37:31
関係ないけど、WPFではLabelは特殊なコントロールで、普通の文字描画には使わないんだよ
TextBlockというのを使う
247デフォルトの名無しさん2009/07/12(日) 17:41:23
グリッドってなんだろ…
(T_T)?

ところで、テキストボックスのパディング設定は果たしてできるのかな。
248デフォルトの名無しさんsage2009/07/12(日) 17:46:47
Paddingの追加って、こんな感じに入力するだけでしょ。
……
249デフォルトの名無しさん2009/07/12(日) 17:49:58
Paddingプロパティがあるだろ?
パディングはそのコントロールの親(GridやBorderなど)を基準にして行われる
WPFはとにかくコンテナ(WinFormsでいうPanelみたいなもの)をネストしまくるんだ
250デフォルトの名無しさん2009/07/12(日) 18:19:59
>>249
それは、Windowsアプリケーションでも可能なの?
251デフォルトの名無しさんsage2009/07/12(日) 18:22:24
>>217
252デフォルトの名無しさんsage2009/07/12(日) 18:24:16
何この馬鹿は。
やってから言えよカス。
253デフォルトの名無しさん2009/07/12(日) 18:26:27
Windowsアプリケーションには
textblockとかgridってあるのかな。
254デフォルトの名無しさん2009/07/12(日) 18:30:15
WinFormsなら無い
ユーザーコントロールに枠線消したTextBoxを張る
みたいな汚い方法しかない
255デフォルトの名無しさん2009/07/12(日) 19:02:18
ビジュアル重視ならば、
WPFで作った方がよかったんじゃないかな。
俺もよく知らないけど。
256デフォルトの名無しさんsage2009/07/13(月) 00:13:27
見た目こそWPFの領分だね
257デフォルトの名無しさん2009/07/13(月) 00:55:49
しまったな…
俺もWPFで作れば良かった。
できることはWindowsアプリケーションと変わらないし。
258デフォルトの名無しさんsage2009/07/13(月) 01:37:11
何だか勘違いしてるようだけど、WPFで作ってもWindowsアプリケーションだよ。
場合によってはMFCとか.NETじゃないやつまで含んじゃう言葉だから、誤解を避けるためにWinFormsって書く方がいい。

WinFormsで見た目をちょっと改善しようと思ったら、自前で描画するとか泥臭い手段しか無かったというのはよくある話。
WPFでは馬鹿みたいに(褒め言葉)柔軟で何でも出来るけど、設計思想がWinFormsやMFCとは別物の新しいやつだから、最初は戸惑うと思う。
259デフォルトの名無しさんsage2009/07/13(月) 07:29:50
そして起動が遅いと言われるわけですな
260デフォルトの名無しさんsage2009/07/13(月) 09:54:35
Formでやるなら>>224でいいじゃない
261デフォルトの名無しさん2009/07/13(月) 11:19:26
ListViewでItemをひとつひとつ.Selected=Trueする方法で選択していくと、
Items.Count が非常に多い場合にはあまりに時間がかかりすぎることが
わかりました。

Items.Count=10000ぐらいで2分ぐらい(Core2Duo/2GHz)。

ところが例えばExplorerでファイルを同じくらい用意してやってみると瞬時に
全部が選択されました(3秒ぐらい)。これと同じ程度のスピードで選択
したいと思います。良い方法がありましたらご指導のほどお願いしたく。

よろしくお願いします。
262デフォルトの名無しさんsage2009/07/13(月) 11:49:28
試したけど3秒くらいだったよ。
イベントハンドラがあったりする?
あと描画関係なら、BeginUpdate - EndUpdateで挟むとか
263デフォルトの名無しさん2009/07/13(月) 11:59:23
>>262
実地に調べてまでして下さり、大変ありがとうございます!
いろいろすみませんです。

>BeginUpdate - EndUpdateで挟む

これたった今やってみました。結果として時間の変化はありませんでした。

>イベントハンドラがあったりする?

わかりました、すぐ調べてみます。どうもです!
2642612009/07/13(月) 12:15:11
>>262
>イベントハンドラ

この件、仰るとおりでした。Selectされた時点で、何かのメッセージの
Hookが行われているようでした!これは別のコントロールのものでしたが
対策を考えてみます。ご指導、大変どうもでした!助かりました!
265デフォルトの名無しさんsage2009/07/13(月) 19:26:25
インデックスで回してない?
foreachにすれば大丈夫だと思うけど。
266デフォルトの名無しさん2009/07/13(月) 23:23:23
VirtualModeにしてみたら?
267デフォルトの名無しさんsage2009/07/14(火) 09:41:49
良く使うジェネリックコレクションは何?
とりあえずListとDictionary覚えておけばいい?
268デフォルトの名無しさんsage2009/07/14(火) 09:42:31
Dictionaryだった。
269デフォルトの名無しさんsage2009/07/14(火) 09:52:07
K,VじゃなくてTKey,TValueな
型パラメータの命名ガイドラインは接頭辞Tプラスその型引数の意味
(ただし用途が明らかな場合ListとかはT一字でOK)

2.0ならあとはLinkedList, KeyedCollection辺り?
あ、QueueとStackがあった
3.0(WPF)ならObservableCollection
3.5はHashSetとか? コレクションじゃないけどやはり最重要はIEnumerableだな
270デフォルトの名無しさんsage2009/07/14(火) 10:24:18
>>269
ふむふむ。
IEnumerableはLINQで出て来るなあ。
ObservableCollectionはWPF本で出てきたけど
まだいいや。

List
LinkedList
KeyedCollection
Dictionary
IEnumerable

とりあえずこのあたりからマスターする。
271デフォルトの名無しさんsage2009/07/14(火) 10:29:51
あ、KeyedCollectionは後で良いよ
つか全体にマスターするほどでもないような
IEnumerable以外は
272デフォルトの名無しさんsage2009/07/14(火) 13:37:18
T[] も忘れないで上げてください、影薄いですけど
273デフォルトの名無しさん2009/07/14(火) 21:15:32
>>269
.NETの型引数の命名規則は合理的で優れてるよな
java式のK,Vとかイミフ
274デフォルトの名無しさんsage2009/07/14(火) 21:33:54
Tとかそういう意味だったのかw
ほかの引数にSとかUとかつけてたわw
275デフォルトの名無しさんsage2009/07/14(火) 21:43:12
c++テンプレートのTypenameだよね
276デフォルトの名無しさんsage2009/07/14(火) 21:44:53
>>274
SとかUってどういう意味よ?w
277デフォルトの名無しさんsage2009/07/14(火) 21:45:31
SとかUつける人いるんだw
278デフォルトの名無しさんsage2009/07/14(火) 21:46:57
アルティメットファイナルクソワロチw

ま、俺はVをつけてたけど。
279デフォルトの名無しさんsage2009/07/14(火) 21:56:52
>276,277
いや、Tの前とか次の文字とかw
HogeHogeってかんじ。
280デフォルトの名無しさんsage2009/07/14(火) 22:08:04
型引数を真面目に変数っぽく名前考えてるのって
C#くらいだよね
javaもc++もそんな習慣無い
281デフォルトの名無しさん2009/07/14(火) 22:23:47
C++には型引数に普通の名前付ける文化もある(STLなど)
わかりやすいけど普通の型名と見分けがつかないので、
.NETの(プリフィクス)+(意味)はその落としどころ
282デフォルトの名無しさんsage2009/07/14(火) 22:30:04
>>281
今VC9見たら真面目に命名してるな
VC6とか_Aとか_Cとかだったんだが
283デフォルトの名無しさんsage2009/07/14(火) 23:45:07
>>280
.NET も初めからそうだったわけではなく、型引数のこの命名は
ベータかどっかでやっぱりこうしようみたいに一気に変えたんだよ
確か。Connect とかの Suggestion も絡んでた気がする

出来上がりとか見てみんな思うところがあったんじゃないかな
284デフォルトの名無しさんsage2009/07/14(火) 23:52:12
>>283
.NET 2.0ベータ中は一文字だった、ように記憶してる
リリースされた正式版のドキュメント見て初めは違和感あった
285デフォルトの名無しさんsage2009/07/14(火) 23:57:32
制約がわかりやすいのはいいよね
TEventArgs : EventArgs なんか神
286デフォルトの名無しさんsage2009/07/15(水) 00:09:02
>>284
ああごめん。
>出来上がりとか見て
はベータのです。
なんか変わると発表したときにフィードバックの存在を
書いていた記憶があるから。
287デフォルトの名無しさんsage2009/07/15(水) 00:17:22
おまいらC#でオープンソースとか使ってる?
Log4netはつかってるがほかゴリゴリ書いてるので時間かかるお(´・ω・`)
http://csharp-source.net/search?query=graph+layout
288デフォルトの名無しさん2009/07/15(水) 03:22:30
SerialPortクラスについて質問

DataReceivedイベント使えばVC++の時みたいに自分でスレッド組まなくて済みそうで楽出来そうなんだけど
実際に受けてみると欠ける時がある
STXhoge123ETX
↑見たいなデータが改行無しで垂れ流しで延々と来るんだけど
たまに
STXhoge123ETX
STXhoge124ETX
STXhoge125ETX
STXhoge126ETX
STXhoge127ETX
STXhoge128ETX
STXhoge129   ←ETXが受けれて無かったり
STXhoge134ETX←間の130-133までが無かったり・・・

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
 string recvData = serialPort1.ReadExisting();
 Console.WriteLine(recvData);
}
こんな感じで直接出力しても途切れる・・・
何故なんでしょうか?誰か詳しい人教えて
289デフォルトの名無しさんsage2009/07/15(水) 03:22:38
すいません。質問ですが、
new RelayCommand(param => this.OnRequestClose());
この=>はどういう意味があるのでしょうか?
290デフォルトの名無しさんsage2009/07/15(水) 03:34:36
ラムダ式
http://ufcpp.net/study/csharp/sp3_lambda.html
291デフォルトの名無しさんsage2009/07/15(水) 05:26:44
>>288
フロー制御はうまく言ってる?
292デフォルトの名無しさんsage2009/07/15(水) 06:30:27
>>290
おお、ラムダ式。
どうもありがとうございました。
293デフォルトの名無しさんsage2009/07/15(水) 14:06:19
ジェネリクスのクラスの型パラメータを配列に制限したい
のですが、以下だと上手く行かないようです。

class Widget where T : IEnumerable
{
public void Iterate(T arr)
{
foreach (object item in arr)
{
Console.WriteLine(item);
}
}
}

・型パラメータTは、競合する制約IEnumerableおよびobjectを継承します
・foreachステートメントは、TがGetEnumeratorのパブリック定義を含んで
いないため、型Tの変数に対して使用できません。

というエラーが出ます。どうかご教示願います。
294デフォルトの名無しさんsage2009/07/15(水) 14:13:11
間違ってない
それだけならコンパイル通るし動く
他のところに問題がある
295デフォルトの名無しさんsage2009/07/15(水) 14:13:14
ジェネリックでdelegateを指定するにはどうすれば
いいでしょうか?
やりたいことは
public delegate_T func( string str )
こんな感じなんですが。
296デフォルトの名無しさんsage2009/07/15(水) 14:25:37
コンパイル時にチェックするのは無理
Expressionみたいに、名前だけそれっぽくして実行時にチェックする
297デフォルトの名無しさんsage2009/07/15(水) 14:31:40
typedefがないので無名になるが
Func func;
funcがstringを受け取ってintを返す関数になる
戻り値がdelegateって言うなら
Func func;
とかです
298デフォルトの名無しさんsage2009/07/15(水) 14:44:14
>>294
レスありがとうございます。
using System.Collections;
を宣言していませんでした。
299デフォルトの名無しさんsage2009/07/15(水) 15:04:49
>>296>>297
上で書いたような書式じゃ無理ということとですね。
Funcとか知らなかったので試してみます
ありがとう
300デフォルトの名無しさんsage2009/07/15(水) 16:12:22
C#入門としてオススメな本があれば教えて下さい
301デフォルトの名無しさん2009/07/15(水) 16:20:19
>>291
レスありがとう

フロー制御に問題がある様には思えません
送信側と合わせてるので


疑似で
STXhoge0ETX〜STXhoge5000ETX
までのデータを作ってtxtファイルにして
ハイパーターミナルからテキストファイルの送信で流してみたんですが
5000までデータはあるのにコンソール上には200行から300行くらいまでしか出てこない・・・
フロー制御もいろいろ設定変えて試したんですが変わらずです・・・
302デフォルトの名無しさんsage2009/07/15(水) 16:53:02
症状はどう見てもバッファあふれだろう。

>フロー制御に問題がある様には思えません 
経験的にいえば強く思い込んでるところが間違ってる可能性が高いな。
コントロールパネルで設定したとか言うなよ。
あとPC−PCでの接続だったらリバースケーブルになるけど、
結線に種類があってハード制御用のラインが自分のほうに戻ってきてるのもあるから要注意。
303デフォルトの名無しさんsage2009/07/15(水) 17:36:23
threshold設定してるだけ?
アレってあんまり信用ならなかったとおもう
304デフォルトの名無しさんsage2009/07/15(水) 17:37:26
概算じゃなくてデータのサイズきっちり計算してバッファと比べたりしようぜ
305デフォルトの名無しさんsage2009/07/15(水) 19:30:24
すいません。質問です。

C#や.NETの資格で、MS社以外のものはありますか?

また、MCPですが、
70-505 TS: Microsoft .NET Framework 3.5, Windows Forms Application Development
などの「開発経験が 1 年以上」は、大学の研究室での開発や趣味プログラミングでも大丈夫でしょうか?
306デフォルトの名無しさんsage2009/07/15(水) 21:48:39
Console.WriteLine(new Uri("http://example.com/sample../foobar.txt"));

この出力が "http://example.com/sample/foobar.txt" になるんですが、これってバグですか?
307デフォルトの名無しさんsage2009/07/15(水) 21:52:30
いいえ
308デフォルトの名無しさんsage2009/07/15(水) 22:03:26
sample/../foobar.txt

/ を足して味噌
309デフォルトの名無しさんsage2009/07/15(水) 22:07:41
>>308
いや、それはわかるけど、俺が聞きたいのはそれじゃない。
".." が消えているのはなぜかと、どうすれば回避できるのか、だ (´・ω・`)
310デフォルトの名無しさんsage2009/07/15(水) 22:22:46
OriginalStringプロパティ
311デフォルトの名無しさんsage2009/07/15(水) 22:27:16
URIの仕様としては>>306の動作は正しいのかい?
312デフォルトの名無しさんsage2009/07/15(水) 22:42:31
RFC2396

Similarly, parsers must avoid treating "." and ".." as special when
they are not complete components of a relative path.

これ?
313デフォルトの名無しさんsage2009/07/15(水) 22:45:45
sample.. の .. を特別扱いしちゃいけないから
>>306の動作は仕様を満たしてないってことかな
314デフォルトの名無しさんsage2009/07/15(水) 22:49:36
>>310
Console.WriteLine(new Uri(new Uri("http://example.com/"), "sample../foobar.txt").OriginalString);
ごめん。こういうのを書いて、ちょっと (´・ω・`) とした。

RFC か何かで規定されているなら、まあ無視しちゃって良いかなって気にはなるんだけど、
まだ読みきってないス (´・ω・)
315デフォルトの名無しさんsage2009/07/15(水) 23:25:59
全然関係ない。
趣味でも十分な奴もいれば仕事でも無理な奴もいる。
316デフォルトの名無しさんsage2009/07/15(水) 23:27:39
ふらっとの誤爆か?
317デフォルトの名無しさんsage2009/07/16(木) 19:30:14
Path.DirectorySeparatorCharとPath.AltDirectorySeparatorCharを
くっつけたものを出来ればconstで定数にしたいんですが
どう書けばよいでしょうか?
もしくはC++の関数内で
static string str = "123";
みたいなことは出来ないでしょうか?

別な方法はありますが、これが出来るとすっきりしそうなのです。
318デフォルトの名無しさんsage2009/07/16(木) 19:40:42
readonlyじゃ駄目なの?
319デフォルトの名無しさんsage2009/07/16(木) 19:57:42
>>318
なるほど。うまくいきました。
readonly static string str = string.Format( "{0}{1}", Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar );
ちなみに
>もしくはC++の関数内で
>static string str = "123";
>みたいなことは出来ないでしょうか?
これって出来ますか?
320デフォルトの名無しさんsage2009/07/16(木) 20:01:25
できない
321デフォルトの名無しさんsage2009/07/16(木) 20:04:56
そうですか・・。
了解しました。
322デフォルトの名無しさんsage2009/07/16(木) 21:15:10
>>319
C++で関数内のstatic string str = "123";は可能では?
まあスレ違いになるからC++スレで聞け。
323デフォルトの名無しさんsage2009/07/18(土) 00:36:11
internal修飾子の使いどころがイマイチわからん
324デフォルトの名無しさんsage2009/07/18(土) 00:40:57
ライブラリ作成をしてみると分かるんじゃないか
325デフォルトの名無しさんsage2009/07/18(土) 00:41:24
プログラムをDLLで分割しまくって
アクセス制限考え出すとわかる
326デフォルトの名無しさんsage2009/07/18(土) 02:26:16
TabIndexに-1を指定できるようにしてほしい
327デフォルトの名無しさんsage2009/07/18(土) 03:00:27
何故?
328デフォルトの名無しさんsage2009/07/18(土) 03:09:19
使用していないことを明確に表すため
329デフォルトの名無しさんsage2009/07/18(土) 03:16:08
継承して、使用していないことを明確に表すため のプロパティを用意すればいいじゃん
330デフォルトの名無しさんsage2009/07/18(土) 03:31:49
いえ、相談ではなく提案です
TabIndexプロパティの仕様の話で、-1が使えた方がスマートだということ
331デフォルトの名無しさんsage2009/07/18(土) 03:35:20
でもそれだとデザイナで設定できなくなるし、
そもそもTabStopがあるからいらないと思う
332デフォルトの名無しさんsage2009/07/18(土) 03:38:55
どうでもいいオブジェクトのTabIndexの値がふらふらしてて気持ち悪い
収まりが悪い
333デフォルトの名無しさんsage2009/07/18(土) 07:04:28
そう良かったね。
334デフォルトの名無しさんsage2009/07/18(土) 08:19:21
使ってないやつは-1とか
発想が前時代的
335デフォルトの名無しさんsage2009/07/18(土) 14:04:06
そうだな。
TabIndexはタブの移動順序を決めるためのプロパティだから、タブの有効/無効とは無関係だよな。
TabEnableてきなプロパティを作るべき。
336デフォルトの名無しさんsage2009/07/18(土) 14:27:34
ヌルあぶればいいじゃない
337デフォルトの名無しさんsage2009/07/19(日) 04:05:27
おまえらセンス無い
338デフォルトの名無しさんsage2009/07/19(日) 04:05:56
ごめん
339デフォルトの名無しさんsage2009/07/20(月) 10:11:32
2つの256色ビットマップを読み込んで(パレットは2つとも同じ)、
1つの大きな256ビットマップに描画して、保存したいと思っています。

System.Drawing.Bitmapオブジェクトは作成できたのですが、
ピクセルフォーマットがFormat8bppIndexedになっているので、Graphicsオブジェクトが作成できません。

256色ビットマップに描画するには、どのようにすればよいでしょうか?
340デフォルトの名無しさんsage2009/07/20(月) 10:42:12
1枚をRead→Writeはできてるの?
341デフォルトの名無しさんsage2009/07/20(月) 10:44:29
>>339
Bitmap コンストラクタ (Int32, Int32, PixelFormat) でコピー先ビットマップ作って
GetPixcel/SetPixelで書き写すしかないんじゃね?
342デフォルトの名無しさんsage2009/07/20(月) 11:45:19
最近、ビットマップ合成がらみを色々見てて、
2.0以前のSystem.Drawing.Bitmapよりも、
3.0以降のSystem.Windows.Media.Imaging.BitmapSource と
WriteableBitmap の方が使いやすかった。
343デフォルトの名無しさんsage2009/07/20(月) 12:19:39
そんなことSetPixelでやったら死ぬよ
LockBitsだな
WPFが使えるならもちろんそっちの方が遥かに便利で強力
344デフォルトの名無しさんsage2009/07/20(月) 12:27:12
結局、32bitBitmap上に描画し、LockBitsして32bit->8bit変換を行いました。

回答してくださった方、どうもありがとうございました。
345デフォルトの名無しさんsage2009/07/20(月) 12:28:08
>>344>>339です。
346デフォルトの名無しさんsage2009/07/22(水) 02:08:09
会社で社内の業務改善ツールを任されることになりました
上からJavaかC#を選ぶようにいわれましたが
どちらが扱いやすくて今後の将来性がありますか?
347デフォルトの名無しさんsage2009/07/22(水) 02:12:17
C#スレで訊いたらC#と答えるに決まっているだろう
348デフォルトの名無しさんsage2009/07/22(水) 02:23:27
>>346
Javaスレで聞いたら?
Javaって返ってくるだろうけど。

まぁ、アレですよ。
自分で使いたいと思うほうを使えばいいと思います。
どっちも将来性なんて分からないので。
349デフォルトの名無しさん2009/07/22(水) 02:29:17
>>346
製作されたソフトウェアのどちらが長期使用に耐えられるかと言ったら
C#だろうな
350デフォルトの名無しさん2009/07/22(水) 04:16:08
http://www10.ocn.ne.jp/‾mitinoie/RPGProject.zip

RPGClientでログインして、少し動かした後で切断。再度ログインすると、KeyNotFoundExpectionが発生してしまう。

しらべてみると、MapChangReq()のunits.setUnit()でunitlistに登録したキーの値がfindUnit()でキーを元に検索しようとする前の段階で入れ替わってるのが原因だとわかった。

でも、治し方がわからない。
詳しい人がいたら教えてほしい。
351デフォルトの名無しさんsage2009/07/22(水) 07:48:58
Windows環境限定でいいんだったらC#でいいんじゃね?
352デフォルトの名無しさんsage2009/07/22(水) 07:59:31
互換性考えるとC89だよな
353デフォルトの名無しさん2009/07/22(水) 08:37:00
コンシューマ用ならC#が俄然有利な気がするが
後方互換保ってくれるかわからないんだよなぁ
なんだかんだで10年来動き続けてるVB6という手も怖い
354デフォルトの名無しさんsage2009/07/22(水) 09:17:18
>>352
互換性(笑)

>>353
少なくとも IL は互換性保たれるんじゃないかな。
355デフォルトの名無しさんsage2009/07/22(水) 09:48:41
>>350
プロジェクト開けねーじゃねーか・・・XNA入れないとならんのか?メンドクサ
356デフォルトの名無しさんsage2009/07/22(水) 10:01:33
>>350
解凍できね
357デフォルトの名無しさんsage2009/07/22(水) 10:25:04
>>356
7zipで解凍できたよ。

>>350
ぱっと見なんだけどRPGServerをリブートしていたというオチではないか?
UnitManagerのunitlistをセーブしたりしている箇所はどこだ?

しかし、なんかUnitの管理とかが微妙な感じがする。
精査したわけじゃないが、unitsが座標ごとに持ってる部分とか。
358デフォルトの名無しさん2009/07/22(水) 12:04:26
>>357
RPGServerをリブートしているという落ちは残念ながありませんw
unitlistをセーブしている部分はsetunit、removeall、removeUnitの三つです。

359デフォルトの名無しさんsage2009/07/22(水) 13:40:05
>>358
右クリックして、送る→圧縮(zip 形式)フォルダ
で圧縮したものでうpしなおしてくれ。
3603582009/07/22(水) 13:54:39
>>359
すまん。今使ってるウィンドウズにはその機能はない。
361デフォルトの名無しさんsage2009/07/22(水) 14:44:12
>>360
機能がないんじゃなくてテメーが無効にしたんだろ。
362デフォルトの名無しさんsage2009/07/22(水) 15:05:03
使っているWindowsかビルド環境が古いというオチか。
363デフォルトの名無しさんsage2009/07/22(水) 16:11:02
Vistaの標準のエクスプローラで解凍できたけどな
364デフォルトの名無しさんsage2009/07/22(水) 16:33:30
>>358
んじゃ、recive_packetでMapChangReqコマンドを投げる前にHandleInput受け取って
SetPosコマンド投げた。とか?
は無いか、initedチェックしてるから。

わかんね。ギブ。

ただ、ひとつ気になったのはunitlist.Add(id, u);。
Dictionary#Addは「ただし、指定したキーが Dictionary<(Of <(TKey, TValue>)>) 内に
既に存在する場合、Item プロパティを設定すると既存の値が上書きされます。
一方、Add メソッドは、指定したキーを持つ値が既に存在する場合、例外をスローします。」
365デフォルトの名無しさんsage2009/07/22(水) 22:30:01
何が何だかよくわからない。
切断した後IPとか変わってても大丈夫なの?
366デフォルトの名無しさんsage2009/07/22(水) 22:54:46
駄目だけど、そこんとこはまた別の問題。
ツッコミどころはまだまだ多いけど、それは一つずつ解決していくしかなかろう。
とりあえず、結構頑張ってると思う。
367デフォルトの名無しさんsage2009/07/26(日) 18:08:18
C++/CLI のスレから誘導されてきた。よろしくお願いしたい。

----------

おしえて。

フォームアプリのテキストボックスとかにデータバインディングで、
DataTable の要素を関連づけて入力値を管理したい。

ここで、テーブル中のレコードが1つの場合はいいんだが、複数あって
かつ、バインドするレコードを動的に変更したい場合ってのはどうすれば
いいのだろうか?

よくわからなかったので、

・バインド用に同じ構造のテーブルを用意して
・そこにレコードをひとつだけ作り
・そのレコードに元テーブルの任意のレコードの値をコピーする
・フォーム終了後にもとのテーブルのレコードに値をコピーし直す

方法で使おうとも思ったのだけど、もっと直接的な方法がありそうな気がする。
いかがだろうか。教示いただけると嬉しい。
368デフォルトの名無しさんsage2009/07/26(日) 19:14:08
何を言いたいのかがハッキリわからないけど
DataTableに複数レコードつっこんで
あるときは1レコード目、あるときは2レコード目をバインドすればいいんじゃないの
369デフォルトの名無しさんsage2009/07/26(日) 19:37:11
返信をありがとう。

>あるときは1レコード目、あるときは2レコード目をバインドすればいいんじゃないの

その2レコード目をバインドする方法がわからなかったんだ。。。
370デフォルトの名無しさんsage2009/07/26(日) 19:38:54
何言ってるんだろ? 次のレコードに進めるだけだろ。
371デフォルトの名無しさんsage2009/07/26(日) 23:37:42
ああ。そう言う方法があるんだね。
ごめん。まだこれの経験が浅くてそれ自体がわかってないんだ。
その方向で調べ直すよ。ありがとう。
372デフォルトの名無しさんsage2009/07/27(月) 00:35:25
BindingManagerBase::Position のことか。
気がつかなかったよ。お騒がせしました。
373デフォルトの名無しさん2009/07/27(月) 14:13:58
非ジェネリックのIDictionaryをジェネリックのIDictionary
変換するスマートな方法があったら教えてください。
foreachで別のDictionayに1つずつ追加するのはやれてます。
374デフォルトの名無しさんsage2009/07/27(月) 14:30:54
それが一番だと思うけど。
dic.Cast().ToDictionary(entry => (TKey)entry.Key, entry => (TValue)entry.Value);
がスマートとは思えない。
375デフォルトの名無しさんsage2009/07/27(月) 14:34:42
C# 2.0
で質問です

System.Threading.ManualResetEvent
のインスタンスを使用して1ミリ秒のウェイト処理をループ中にかけようとしているのですが
 ・Vista環境だと上手く1mSec 程度停止するのに
 ・XP環境だと15mSec程度まで跳ね上がる時があります。
 OSの分解能ということで1mSecは諦めるしかないのでしょうか?

 用途は最高速で常時まわしたい処理を以下のソースのWhileの中に組み込んでHOGEの処理をしているのですが
可能であれば10mSec以下で1ループを終わらせたいのです。(中の処理は2〜3mSec程度)
 ただしこのままでは別スレッドで実行しているにもかかわらずCPU負荷率が高すぎるために
最低レベルでのスレッド停止処理を行いたいのです。
ちなみにSystem.Threding.Thred.Sleep(1); を行うとVista環境でも1mSecより大きく停止してしまいます。

System.Threading.ManualResetEvent mre = new System.Threading.ManualResetEvent(false);
While(True)
{

    HOGE();//処理

    //ストップウォッチ計測開始
    mre.WaitOne(1);
    //ストップウォッチ計測終了
    
    if(exitFlag == true) break;
}

何とか最速でまわしつつ負荷を上げずにWhile文を回し続ける方法はないでしょうか?
376デフォルトの名無しさんsage2009/07/27(月) 17:19:40
1msの分解能が欲しかったらCPU負荷率は諦めるしかないと思うけどな
スレッド切り替えるのに1ms以上かかりそうだし
377デフォルトの名無しさんsage2009/07/27(月) 17:55:33
>>376
そうですか・・・
まぁヂュアルCPUなんで負荷率は50%なので構わないと言えば構わないのですが・・・
できるだけ使用率を低くして寿命を延ばしてやりたかったのです
378デフォルトの名無しさんsage2009/07/27(月) 17:59:39
>>375
Sleepすることが目的ではなく、CPUを使いすぎることを抑えたいだけのように感じる。
もしそうなら、Priorityプロパティでスレッドの優先度を下げるだけというのはどう?

もちろん、優先度を下げるということはCPU使用率を下げることとは違うから、、
ほかにやることがなければCPUを使い尽くすということに変わりはないけど。
379デフォルトの名無しさんsage2009/07/27(月) 18:02:17
>>377
何をやりたいのか知らないけど専用マシンを用意すれば?
380デフォルトの名無しさんsage2009/07/27(月) 18:32:57
10mSecでTimer回した方が良いように思えてならない。
再入をブロックする必要はあるけど。
381デフォルトの名無しさんsage2009/07/27(月) 20:17:27
>>375
よくわかんないけどこういうこと?

Stopwatch sw = new Stopwatch();
long nextTiming = sw.ElapsedMilliseconds + 10;
sw.Start();

while (true)
{
  while (sw.ElapsedMilliseconds < nextTiming) { Thread.Sleep(0); }
  nextTiming += 10;
  Console.WriteLine("Now is {0} ms", sw.ElapsedMilliseconds);
}

Thread.Sleep(1)にしてやればCPU使用率は無駄に上がらない。
その場合、処理のインターバルの精度は落ちるけど、時間あたりの処理回数の精度は
保てるといってよいんじゃないか。
382デフォルトの名無しさんsage2009/07/27(月) 23:32:44
マルチメディア系の機能でミリ秒レベルの精度でsleepする方法ってあったりするんだっけ?
普通のSleepって、TimeBeginPeriodで指定した分解能でスレッドの状態変わるんだっけ?

もしSleepの精度にTimeBeginPeriodが効くなら、それやってスレッドの優先度をあげればいいかも。
ただし処理をきちっと終えてちゃんと確実に速やかにSleepしないと死ぬことになるが。
383デフォルトの名無しさんsage2009/07/27(月) 23:35:31
各回のインターバルの精度が必要でないなら、10回分繰り返して10回分Sleepとかそういう手もあるが。
384デフォルトの名無しさんsage2009/07/27(月) 23:42:24
>>382
timeBeginPeriodは消費電力を増やすと言われているのだから、
寿命を気にする>>377には似つかわしくないと思う。
385デフォルトの名無しさんsage2009/07/27(月) 23:54:07
HDDはともかく、CPUはヒートシンクが動作中に外れるとか
余程のことでもなければ「寿命」を縮めるなんてことはないと思うけど。
真空管じゃないんだから
386デフォルトの名無しさんsage2009/07/28(火) 00:07:36
まあCPU自体にはあんま関係ないけど、
使用率が高いところを維持するのは全体で見ればあまり望ましいことじゃなかろう。

あと確かに大麻精度あげると電力使用はアップしてしまうのかも知れんが、
CPU使用率が高いままになるよりはましじゃないかと思うがどうだろう。
もちろんそうせずに済むならそれにこしたことはない。
387デフォルトの名無しさんsage2009/07/28(火) 00:19:55
結局のところ、何であんな事をやりたいのかハッキリしないと何とも言えん
388デフォルトの名無しさんsage2009/07/28(火) 10:43:04
C#では、グラフィック関連のメソッドで、小数の引数はfloat型になってますよね。
floatよりdoubleの方が一般に速いと思うのですが、なぜfloatなんですか?
389デフォルトの名無しさんsage2009/07/28(火) 10:49:39
GPUはほぼ単精度までしか扱えなかったぜ
まあGDI+はGPU使わんけどな!
390デフォルトの名無しさんsage2009/07/28(火) 10:57:27
計算速度じゃなくて帯域幅の問題。
あとdoubleが速いってのは今のCPUでの話にすぎない。
391デフォルトの名無しさんsage2009/07/28(火) 10:58:17
あGPU関係なかったか…
392デフォルトの名無しさんsage2009/07/28(火) 11:00:36
>>389
なるほど…。
今まで、座標を保存するための変数x, yをdouble型で宣言して、
描画時にintに変換して使っていたのですが、
これはfloatにしてキャストなしで使った方がいいんでしょうか?
「float同士の演算(座標計算時)」と「double同士の演算(座標計算時)+intへのキャスト(描画時)」
では、どっちが速いんでしょうか。
393デフォルトの名無しさんsage2009/07/28(火) 11:05:11
>>390
> 今のCPUでの話にすぎない。
昔のCPUのことを想定してどうすんだよw
394デフォルトの名無しさんsage2009/07/28(火) 11:19:55
>>392
自分でベンチ書いて試しなよ
その方が納得できるだろ
395デフォルトの名無しさんsage2009/07/28(火) 11:53:38
昔のCPUの話じゃなくて今のGPUの話だよ。
関係なかったけど。
396デフォルトの名無しさんsage2009/07/28(火) 12:20:35
レスが遅くなりました。

>>378
おっしゃる通り現在の処理速度を犠牲にせずにCPUの負荷を下げてあげたいということです。
スレッドの優先度は、この処理部分以外にあまり同時に激しい処理をしているわけではないので微妙な感じです

>>379
まぁ専用マシンを用意してもCPU負荷がずっと大きな値に張り付くのは・・・微妙なきがします。
FA系なので安定して長く動作させたいのです。

>>380
やってみた感じスレッドのタイマで1mSecで動かしてもどうも間隔はOSに引っ張られるようですorz
例えばですが・・・再入ブロックはこんな感じの処理のことでしたっけ?

タイマコントロール
void tick
{
 タイマ停止
 処理
 タイマ開始
}

スレッドタイマ (間隔で動かすというか1回だけ動かすのを繰り返す)
void Tick()
{
処理
次回Tickを動かす時に1mSec間隔をあけて実行
}
397デフォルトの名無しさんsage2009/07/28(火) 12:37:37
>>381->>383, >>387

本当はWhileの中は最速でまわしてあげたいのです。
しかし、CPU負荷率が高くなりすぎるのでそれを防ぐためだけに仕方なく1mSecのスレッド停止を挟んでいるのですが
そのスレッド停止がXPではきっちり1mSec止まってくれない
(別に2mSecとかでもいいのですが15mSecとか止まってしまうのです。)

結局やりたいことを説明すると

FAの工場内のでラインの制御をおこなうのに1スキャンあたり(1ループ)25mSec以内で処理しなければ処理ヌケが発生する。
→処理ヌケが発生しないようにする処理は現在のループ処理の中では余裕
→だけどCPUがずっと高い使用率に張り付いたまま
→基本的に長期安定動作させたいので使用率は大きいよりは小さいほうがいい
→SleepやManualResetEvent.WaitOneではXP上で停止時間が不安定 (これで運用すると少しでもOSの動きに引っ張られると処理時間が延びて処理ヌケしてしまう)
→VISTAはなぜか停止時間が結構安定する
→上に VISTAにしてくれというと「FAでVISTAとかまじありえね XPでやれ」 と言われ取り合ってももらえず
→打つ手が思い付かずに ここへ知恵を借りに
    ↑いまここ

そして同じPC内にはコスト削減とかでラインの画像判定を撮って判定するソフトが・・・
(これ自身はCPU負荷はそこまで使いません。 一瞬5〜10%まで上がる程度が50mSec程度の間隔)

こんな状況ですorz
そもそも、Pgを別のPCに分けてもメインのループ部分がCPU使いっぱなしになるので問題の解決はしないという・・・

>>385-386
CPU自体は迷信なのかもれません。
まぁ、ただずっと高しようりつで張り付くと結局温度が上がってしまうので
色々と起きてきそうなのです。
398デフォルトの名無しさんsage2009/07/28(火) 12:49:09
CPUのタイムスライスってレジストリでいじれなかったっけ?
そこまでシビアなFAの制御なら専用のCPUボードにやらせて、
OSはサマリーだけ受け取るような仕掛けにしないといかんだろう。
399デフォルトの名無しさんsage2009/07/28(火) 12:53:35
>>398
本当はそうなんですよね
せめてPLC使って処理させるとか

でも・・・今回は期限ないうえにコストも落とせという色々無茶な状態が重なってしまいまして…
400 [―{}@{}@{}-] デフォルトの名無しさんsage2009/07/28(火) 13:11:31
>>399
RTOSが必要なんじゃね?

この辺にも色々書いてあるけど
http://www.microsoft.com/windowsembedded/ja-jp/developercenter/whitepaper/xpe/hardrealtime.mspx
401デフォルトの名無しさんsage2009/07/28(火) 13:13:02
他のプロセス(サービス含む)が動いたらあっという間に25ミリ秒とか過ぎ去るな
402デフォルトの名無しさんsage2009/07/28(火) 13:17:34
>>400
エンベデッド(これで読みはいいのか?)ですよね
そう、せめてそれがあれば最低限のコンポーネント入れていけるとおもうんです
しかし普通のPCに普通のXP PRO
サービスとかはできる限りとめて動かしていますがなんというか・・・がっくりです

>>401
そうなんです!

というか、やる気起きないのでダラダラと
403デフォルトの名無しさんsage2009/07/28(火) 13:22:06
連投ばっかですみません

なんとなくですが
>>382
のTimeBeginPeriodでいけそうな気がします。
また詳しいことは微妙ですが
これ使って簡単に1日程度動かして様子を一回見てみようかと
404デフォルトの名無しさんsage2009/07/28(火) 17:53:02
>>392
描画メソッドの呼び出し頻度なんか知れてる
呼び出してからの実際の描画処理の方が遥かに時間がかかるからそんな細かい差は全く意味がない
405デフォルトの名無しさんsage2009/07/28(火) 19:47:21
>>403
なんか>>397を読んでもやっぱりよく分からないんだけど、
要するにDIOか何かをポーリングしてるのかな?

それでそのDIOのイベントに応答するときのレイテンシの最大許容時間が25ms、
みたいなこと?
406デフォルトの名無しさんsage2009/07/28(火) 20:18:16
浮動小数から整数への丸め制御方法によっては、intにキャストする回数が多いと遅くなるかもね
407デフォルトの名無しさんsage2009/07/28(火) 20:24:57
そんな差が目に見えるほど描画メソッド呼び出したらそれこそ死亡
408デフォルトの名無しさんsage2009/07/28(火) 21:33:20
>>397 >>403
タイマーが15ms間隔でしか発動しないのはWindowsの仕様。
パラメータでは1ms単位の数値が設定できるけど、実際の動作は約15.5ms間隔に切り上げられる。

TimeBeginPeriodを使えば間隔を詰めることはできるけど、実際に試してみると、
最短の間隔がせいぜい2ms程度で、それより長くなることもある。
それにTimeBeginPeriodには副作用があって、他のアプリがたまたまTimeBeginPeriodを再設定してしまうと、
そのマシンで動いているすべてのアプリが影響を受けてしまう。
>>375でVistaは1msてのは、たまたま何かのアプリがTimeBeginPeriodをいじってただけの可能性が高い。

そもそもSleep関数の動作は「少なくとも」指定した時間経過、だから、どれだけオーバーするかは運次第。
ただしこれはVistaまでの話で、Windows7ではタイマー関係がようやく強化される予定なので、
どうしても2ms以下の間隔を死守したいならWindows7を使えばすんなり解決するかもしれない。
409デフォルトの名無しさんsage2009/07/28(火) 21:47:44
タイマっていうかタイムスライスの問題だからちょっと話がズレてると思うけど。。
410デフォルトの名無しさんsage2009/07/28(火) 21:53:02
>>408
XPしかだめっつうてんだろw


XPにPLCと同じことさせようとしても無理。
制御じゃなく監視だよね?
FA屋で制御までさせようとしてるなら職変えたほうが良いよ。
411デフォルトの名無しさんsage2009/07/28(火) 22:08:01
Chrome起動中だと高速化するよ(笑い)
412デフォルトの名無しさんsage2009/07/28(火) 22:16:54
25msなら、スレッドの優先度上げてやればSleepでも大丈夫かもしれん(実質15msくらいで)。
まあTimeBeginPeriod使った方がいいと思うけど。

優先度を上げない場合、Sleepでの停止自体は短時間でも、実行順が回ってくるまでに
タイムオーバーする危険がある(他のスレッドがある場合)。
優先度を上げると実行可能になった時優先的に処理が回ってくるので、遅れる危険が小さくなる。
ただし、処理を終えたら確実にSleepしないと、下手すればマシンハングアップ状態になるので注意。

ただ、いずれにしてもWindowsではそういうのを本当に確実に処理することはできない。
413デフォルトの名無しさんsage2009/07/28(火) 22:21:58
XPのタイムスライスってどんくらいだっけ?15msくらいだっけ?20msくらいだっけかな?
もしフォアグラウンドで何かを動かしたらそいつは3倍になるから処理にもよるけど簡単に死ねる。
414デフォルトの名無しさんsage2009/07/28(火) 22:23:41
スレッドの優先順位?
スレッド?
415デフォルトの名無しさんsage2009/07/28(火) 22:29:46
>>413
1/64 s
416デフォルトの名無しさんsage2009/07/28(火) 22:37:57
あー大きく上げるにはプロセス側で上げとかないと駄目だったか、
言いたかったのは単に最終的なスレッドの優先度を上げるということ。
417デフォルトの名無しさんsage2009/07/28(火) 23:23:52
>397の人件費考えたらVISTAなんて安いものだろうに・・・
418デフォルトの名無しさんsage2009/07/29(水) 00:05:42
ていうか・・・なんでWindowsでそんなリアルタイムOS的な制御をやろうと企画した
んだろ、発注元。
419デフォルトの名無しさんsage2009/07/29(水) 00:17:34
>>397の言葉遣いも怪しいところがあるから、
必ずしも本来の要求仕様を満たすために必要のない手法を>>397自身が
考えているだけかもしれない。

なんかその可能性が高いように思う。
420デフォルトの名無しさんsage2009/07/29(水) 00:36:59
リアルタイムにセンシングするとして、データをキューに入れといて別スレッド
で処理したら駄目なのかな・・・いや、そういう話じゃないな。

382の言うとおりマルチメディアタイマ使えばいいんじゃね?
421デフォルトの名無しさんsage2009/07/29(水) 00:47:18
>>410
いや、Vistaはカンベンしてくれって話だろ?
422デフォルトの名無しさんsage2009/07/29(水) 00:48:14
マルチメディアタイマーも15ms縛りがあったような…
423デフォルトの名無しさんsage2009/07/29(水) 00:49:07
要求が「VistaとXP」なんだからそんなところの議論は無駄無駄
424デフォルトの名無しさん2009/07/29(水) 01:16:39
てか1ms周期で動かしたら大抵CPU時間使いまくるってオチ
425397sage2009/07/29(水) 02:13:03
多くのレスありがとうございます。

そもそもなぜXPなのか?
というのはその上役の人間が安定志向でXPで今まで出来てたんだから という考えのもとに言っているような感じです。
しかし、その実績はせいぜい50〜1000mSec程度なのでどのOSでも簡単に実装できるものでした。

新しい機械を開発するにあたり
そこそこ高速で移動するライン状の物の位置をエンコーダで追い、DIOの信号を利用して移動させる という処理が必要になり
上役の人間が打ち合わせをした際にその程度の処理なら出来る という憶測で仕事を受け入れてしまいました。

その尻拭い的な感じをいまやっているわけなのです。
多くの皆様意見をいただき本当にありがとうございます。
さすがに限界を感じる感じなので、CPUをフルに使う状態での運用か、それとも設計や方針自体を変更するべきなのかを上の人間にかけあってみます。

ちなみに単純な処理です

→ 物の流れる方向
|----------------目的地     
センサ            ↓

センサをONしたタイミングでエンコーダ値を取得・保持し、目的地の位置までパルスが移動したらDIO信号をONし、流れているものを矢印の方向へ稼働させる機械を動かす。
たったこれだけです。
PLCでやればどれだけ単純で簡単なレベル という話 orz

多くの意見、今後のPGに生かしていこうと思います。
はぁ・・・月曜日が鬱だw
426デフォルトの名無しさんsage2009/07/29(水) 03:16:37
しかもC#でとな('A`
427デフォルトの名無しさんsage2009/07/29(水) 06:05:48
>>425
それ本当に1msの精度求められてるの?
仕分けでそこまでの速度を要求されるとは思えんのだが。
428デフォルトの名無しさんsage2009/07/29(水) 06:47:49
>>393
intよりdoubleが早い環境なんて少数派だぞ
429デフォルトの名無しさんsage2009/07/29(水) 06:58:29
PCでそんな制御やるのがそもそも間違えてる
カーネルから優先度の高い命令が割り込んだら何ぼでも処理落ちするぞ
430デフォルトの名無しさんsage2009/07/29(水) 08:05:16
動かないと思ったらWindowsUpdateでリブートしてるんですね。わかります。
431デフォルトの名無しさんsage2009/07/29(水) 12:06:08
>>427
初めに書いたとおり1mSecまでは求められてはいませんが
自分がWindowsで制御するなかでは初めての精度になります。

まぁごくまれに処理抜けする程度ならリターンしてもう一度処理をすればいいのでそれはそれで何とかなるわけですが
その為、処理負荷をできるだけ下げつつ処理時間間隔を短くするために可能な範囲で試行錯誤してみています。

>>426
>>429
そうなんですよね
何というか・・・GUIがほしいのはわかるんですが・・・

ちなみに現在実機でタイマ精度変更後に一日動作させた感じ1処理は停止含めて15mSecを超えていない(StopWatch調べ)感じです。
CPU負荷も常時高い位置にあったものが時々大きく上がる程度まで抑えることができている感じです。

でもぶっちゃけ実運用になったら・・・ちょっと怖いかも
432デフォルトの名無しさんsage2009/07/29(水) 12:17:58
実際のとこ、全力でぶん回してもリスクは変わらないから。
433デフォルトの名無しさんsage2009/07/29(水) 12:31:00
全くもってそのとおり
”ずーっと確実に最長1msの周期で観測する”という要件しか聞いていないから,PCの電源が落とされた時点でアウト,
PCの電源落とさないってんなら,たった一日の観測(>>431)くらいで何か分かるわけでもないし.
おとなしくデバイス作ってUSBかシリアルで接続したほうが安心.

GUIはC#でいいだろうが
434 [―{}@{}@{}-] デフォルトの名無しさんsage2009/07/29(水) 12:39:49
>>433
なんかPC障害でラインが暴走しそうな悪寒もする。
ちょっとした機能追加で制御不能になったりとか

担当者さんのデスマーチが目に浮かぶ
435デフォルトの名無しさんsage2009/07/29(水) 12:44:55
今思った

GC時間考慮してねー
436デフォルトの名無しさんsage2009/07/29(水) 13:02:29
まあ書かれてた処理内容なら大丈夫だろ。
もち注意して作る必要はあるけど。
437デフォルトの名無しさんsage2009/07/29(水) 19:25:38
>>425
その説明だと、そもそも「目的地」のところにセンサをつけ、
その出力を「流れているものを矢印の方向へ稼働させる機械」に直結すれば
PCなんか要らないように思えるけど。

それにどうしてエンコーダが必要になるのか意味がわからない。
わざわざ目的地じゃなくてその手前なんかにセンサを付けるから、
目的地を検出するためだけにエンコーダが必要になるんじゃ?
438デフォルトの名無しさんsage2009/07/29(水) 20:39:38
>>425
目的地にセンサつけたらだめだろw
目的地はn通りあるから事前に振り分ける処理が要る。
FAの機械ってのは大抵が独自のプロトコルで通信する。
だからPCなりPLCなどの中継が必要になる。
ここまでは皆理解していて、その先の精度や耐久性について語ってるのだよ。

439デフォルトの名無しさんsage2009/07/29(水) 22:02:36
>>438
よくわかんない発想をする人だなあ。

仮に目的がN通りだとする。
それって何を基準に振り分けるの?

その仮説と>>425の説明をあわせれば、恐らく物体の高さか何かによって
ONするセンサが変わるから、それを基準に振り分けることになる。

だとすると、それってN個の目的地の直前で、対応するセンサと
「矢印の方向へ稼働させる機械」を直結することと等価でしょ。
440デフォルトの名無しさんsage2009/07/29(水) 22:37:57
まあ、質問主が詳細を明らかにしてないのに細かいこといってもしょうがないか。
なんとなくセンサの設置法さえ工夫すればビジーループでポーリング、
なんてことしなくてもPCでもこなせそうな仕事にも思えるけど。

DIOの付属のライブラリって、たいてい入力のイベントでコールバックする
機能がついてると思うから、そのあたりとあわせればできるんじゃないのかな。
441デフォルトの名無しさんsage2009/07/30(木) 06:33:12
>>439
バーコード、QR、RFIDなんかは普通に使うぞ?素人か?
442デフォルトの名無しさんsage2009/07/30(木) 19:46:27
もうどうでもいいよ。
さっさと上司と拳闘しろ。
443デフォルトの名無しさんsage2009/07/30(木) 20:16:21
>>441
そういう問題か。
そんなことは>>425の文章からは読み取れない。
余程の馬鹿じゃなければ、そんな重要なことは最初に明確に書くだろう。
444デフォルトの名無しさんsage2009/07/30(木) 20:42:16
>そんな重要なことは最初に明確に書くだろう。

うーん
そんなこと無いケースが多々あるが・・・
445デフォルトの名無しさんsage2009/07/30(木) 20:48:45
そういうスレでやれ
446デフォルトの名無しさんsage2009/07/31(金) 12:41:04
EventHandler eh += delegate { };
EventHandler eh += (sender, e) => { };

sender, eを使わない場合ラムダ式にしない方がいいの?
447デフォルトの名無しさんsage2009/07/31(金) 12:49:58
使いもしないのに書くのは気持ち悪い
448デフォルトの名無しさんsage2009/07/31(金) 20:20:09
関数でシステム作る様な言語でもないんだし
LINQの目的に使わないのなら俺は使ってないなー
449デフォルトの名無しさんsage2009/08/01(土) 01:35:08
>>446
ラムダ式使うなあ。
別に引数を使わないのはLinqでもあることだし。
450デフォルトの名無しさんsage2009/08/01(土) 08:27:42
使ってると関数式が分散しちゃって管理しづらくない?
451デフォルトの名無しさんsage2009/08/01(土) 12:16:38
複数箇所で使うならメソッドにしとけ。その場限りならラムダにしとけ。
作ったメソッドをシグネチャ合わせるためにラムダ使うとかも良くあること。
452デフォルトの名無しさんsage2009/08/01(土) 13:20:59
はい匿名関数使います。
453デフォルトの名無しさんsage2009/08/01(土) 13:29:18
delegate { }の形の匿名メソッドはそのうち「今後は使用しないでください」ってお達しが出るかもね
454デフォルトの名無しさん2009/08/02(日) 01:07:34
C#って内部クラスをどういうときに使うの?
関連の強いクラスでも、内部クラスにするメリットがわからない。
Javaならすごいはっきりしてるけど・・・
455デフォルトの名無しさん2009/08/02(日) 01:08:10
>>1の本文は「飲み過ぎた・・・」と予想したが見事にはずれた
456デフォルトの名無しさんsage2009/08/02(日) 01:13:55
>>454
javaだろうがc#だろうがインナークラスの使い道なんて一緒だと思うけど…。
よくわからん疑問だな。
457デフォルトの名無しさんsage2009/08/02(日) 01:32:22
>>454
おまえはおれかw
今日ふと気になってそれ調べてたよ。
外部クラスのprivateフィールド、関数にアクセスできるのが一番のメリットだろうね。

458デフォルトの名無しさんsage2009/08/02(日) 01:32:42
>>454
わざわざ外に書くほどでもないとき
スコープ的にそのクラスの外に見れないようにしたりしたいし
459デフォルトの名無しさん2009/08/02(日) 01:49:07
>457,458
こんな遅い時間にサンクスコ!
>外部クラスのprivateフィールド、関数にアクセスできるのが一番のメリットだろうね。
ああ、なんか勘違いしてました。外部クラスのインスタンスは渡してやらなきゃいけないけど
privateにアクセス可能なんですね。馬鹿な漏れですみません。

C#ってJavaに似せてはいるけど、かなり別モンですね。
スコープっていうかアクセス権については、
Javaのパッケージプライベートに相当するものが欲しい・・・
でもプロパティは素晴らしいです!(JavaのBeansは最悪。)
460デフォルトの名無しさんsage2009/08/02(日) 02:26:21
プロパティはすばらしいとおれも思う。直観的だし、見やすい。
461デフォルトの名無しさんsage2009/08/02(日) 02:59:27
そして書きやすいしね。VB.NETのプロパティはマンドクサだけど。
462デフォルトの名無しさんsage2009/08/02(日) 03:00:55
プロパティとデリゲートは自慢できる機構だな。
いつJavaが逆輸入してくれるかと期待してるんだが、無理なのか。
463デフォルトの名無しさんsage2009/08/02(日) 04:01:16
プロパティはいいとしても、
delegateはVJ++時代の歴史的ないさかいがあるからあれだなぁ。
464デフォルトの名無しさんsage2009/08/02(日) 04:02:34
プロパティはJavaの新機能の候補にまで入ったんだけど・・・駄目だった
デリゲートはありえなさそうだ
465デフォルトの名無しさんsage2009/08/02(日) 07:55:22
C++の将来はどうなりますか?
466デフォルトの名無しさんsage2009/08/02(日) 09:19:43
C++の将来はC++0x、2015年までに何とかしてくれるらしい。
そろそろスレ違いだな。
467デフォルトの名無しさんsage2009/08/02(日) 10:36:21
>>459
パッケージスコープはinternalがある。
「名前空間」っていうのはそもそもクラスライブラリを使う側のためにあるものだから
作る側の実装の都合によるパッケージスコープとは明確に区別されてる。
どっちがいいかは別にして,考え方の問題。
468デフォルトの名無しさんsage2009/08/02(日) 10:48:31
.NETでCollectionを返してくるやつがあるけど何でジェネリック使ってないの?
469デフォルトの名無しさんsage2009/08/02(日) 11:03:03
.NET1.xのころはジェネリックが使えなかったから。
3.0〜のWPFで非ジェネリックコレクションが一部使われてる理由は,
WPFはけっこう型にルーズで,突っ込まれたいろんな型のオブジェクトを
適当に自動的に変換したりするから
470デフォルトの名無しさんsage2009/08/02(日) 11:46:54
>>467
考え方がどうとかはしらんが、
internalはexeやdllレベルのアクセス制限だから、Javaのpackage privateとは別モンだろ。
適度なアクセス制限かけたい時に、いちいちdllに分けるとかありえんwww
471デフォルトの名無しさんsage2009/08/02(日) 12:59:45
?:でelse側要らない時あるから、何もしないで辞めるという予約語cancelを追加してほしい

x = x > y ? 10 : cancel;

Open(Exist(path) ? path : cancel);
引数にcancelが入るとそのメソッドは実行されない
472デフォルトの名無しさんsage2009/08/02(日) 13:05:42
素直にif使えよ
473デフォルトの名無しさんsage2009/08/02(日) 13:14:30
Exec(a(), Open(b(), Exist(path) ? path : cancel, c()), d())
じゃあこれでExist(path)がfalseになったときはExecも実行されないの?
aやbやcやdは?
無駄に複雑になりすぎる
474デフォルトの名無しさんsage2009/08/02(日) 13:33:32
x = x > y ? 10 : x;
475デフォルトの名無しさんsage2009/08/02(日) 13:38:21
x = x > y ? 10;

こう書けりゃいいのにな
476デフォルトの名無しさんsage2009/08/02(日) 13:57:46
>>473
あー、なんか無理っぽいね
全部実行されないで欲しい感じはするものの
477デフォルトの名無しさんsage2009/08/02(日) 13:59:24
無理して三項演算子使わなくてもいいのに。
478デフォルトの名無しさんsage2009/08/02(日) 14:38:47
>>475
代入式なのに代入されない場合があるって、すんごいキモイと思うんだけど
どうだろうか
479デフォルトの名無しさんsage2009/08/02(日) 14:41:25
タイプ数そんなに変わらん
if(x > y) x = 10;

cancel導入だとむしろ多くなるじゃないか
480デフォルトの名無しさんsage2009/08/02(日) 14:53:24
>>479
これでいいじゃん
三項演算子にこだわる必要どこにもないし
481デフォルトの名無しさんsage2009/08/02(日) 14:53:48
全メソッドが毎回cancelチェックするらしいぜ!
482デフォルトの名無しさんsage2009/08/02(日) 14:57:36
なんで阿保の思いつきを開陳しようとする気になったの。
483デフォルトの名無しさんsage2009/08/02(日) 15:22:10
おまえというド阿呆をおびき寄せるため
484デフォルトの名無しさんsage2009/08/02(日) 16:35:49
本筋ではないけど、>>471のOpenの例はテストせずにモードOpenでtryして、
FileNotFoundExceptionなどをcatchでしょ。
ファイルは存在さえすれば開けるというものじゃないから、
どのみちtryする必要あり。それならばExistで存在確認するのは無駄。
485デフォルトの名無しさんsage2009/08/02(日) 16:38:23
例外は重たいから事前にチェックできるのならばチェックすべし
486デフォルトの名無しさんsage2009/08/02(日) 16:40:16
チェックから開くまでに、ファイルが消される可能性があるから無意味。
487デフォルトの名無しさんsage2009/08/02(日) 16:40:50
チェックした方がいいのは確かだが
ファイルを開こうとして失敗するなんて秒間何千回起こるようなものでもないんだから
重たいとか別に関係ない
488デフォルトの名無しさんsage2009/08/02(日) 16:42:34
例外は重いからチェックするってのは正か否か

これもよく揉める議題だよね。
頻度を考慮したらそんなに避けるべき問題でもないという結論に。
489デフォルトの名無しさんsage2009/08/02(日) 17:03:41
平均的には、チェックする方が遅くなるだろうな
どっちみち頻度考えたら問題にはならないけど
490デフォルトの名無しさんsage2009/08/02(日) 23:04:04
例外が思いからファイルを開くときにチェックしない
→ファイルを開くアクションを起こすと時々アプリケーションが終了
→作業内容が喪失
→作業意欲低下
→業務が滞る
→会社の収益が低下
→GDPが減少
→犯罪発生率の上昇
→本国崩壊
→朝鮮半島がなにかを主張し始める ←ここまで1年半

つまり例外処理反対派は反日親韓ということ?
491デフォルトの名無しさんsage2009/08/02(日) 23:10:37
>>490
それを言うなら、
例外が思い(ママ)からファイルを開くときにチェック<する>

だろ。
いつも思うんだが、ネタっていうのは分かってる奴がやるから面白いんであって、
何もわかってない奴が無理してやるネタなんて面白くもないともないんだよお馬鹿さん。
492デフォルトの名無しさんsage2009/08/02(日) 23:14:21
プログラムがファイルが存在しない状況について想定していることが伝わるからチェックはすべきでしょ
493デフォルトの名無しさんsage2009/08/02(日) 23:14:51
>>491
??
494デフォルトの名無しさんsage2009/08/02(日) 23:17:53
必要な処理を必要なだけやるわけであって
重いから処理しないのはゆとり
495デフォルトの名無しさんsage2009/08/02(日) 23:18:03
ファイルが存在しない状況について想定していることが伝わればいいのなら
FileNotFoundExceptionを別にcatchするだけで十分じゃねーの
496デフォルトの名無しさんsage2009/08/02(日) 23:19:40
はげどう
497デフォルトの名無しさんsage2009/08/02(日) 23:25:50
まあFile.Existなんて気休めだよな。
498デフォルトの名無しさんsage2009/08/02(日) 23:56:25
ところで
Try(() => Open(path)).Catch(ex => Console.Write(ex));
とか書けたらいいなと思ってるのは俺だけじゃないはず

というか多分書けるな
今から作ってこよう
499デフォルトの名無しさんsage2009/08/03(月) 00:05:20
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
500デフォルトの名無しさんsage2009/08/03(月) 00:10:24
try〜catchじゃない意味あるの?
こんなオナニーコード見せられたら卒倒しちゃうよ。
501デフォルトの名無しさんsage2009/08/03(月) 00:14:51
吐き気がするw
502デフォルトの名無しさんsage2009/08/03(月) 01:43:51
>>498
賛同者はごくまれだろうな・・・・・
503デフォルトの名無しさんsage2009/08/03(月) 02:18:06
if(auto ex = collectException(new File(path))) writeln(ex);
504デフォルトの名無しさんsage2009/08/03(月) 03:17:30
RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup
みたいのはあるけどな。
もちろん理由があって。
505デフォルトの名無しさんsage2009/08/03(月) 05:05:40
Util.TryCatch(()=>hogehoge...,e=>hoge....);
というのは作った。
506デフォルトの名無しさんsage2009/08/03(月) 05:10:59
何の役にもたたなそうだな
507デフォルトの名無しさんsage2009/08/03(月) 07:06:19
きもい流れになってるな・・・
508デフォルトの名無しさんsage2009/08/03(月) 12:01:36
C#を見にくいコードにする友の会か?
509デフォルトの名無しさんsage2009/08/03(月) 12:47:28
使う気にはなれないが、総称型をcatchに使えることは分かった。
public static T Try(Func func) where TEx : System.Exception {
 try { return func(); } catch (TEx ex) { Console.WriteLine(ex); return default(T); }
}
510デフォルトの名無しさんsage2009/08/03(月) 13:08:02
これがラムダ厨の威力だというのか。
511デフォルトの名無しさんsage2009/08/03(月) 13:12:37
もうクラス使わずに全部クロージャだけで書こうぜ
512デフォルトの名無しさんsage2009/08/03(月) 13:20:44
一部のラムダ基地外をどうにかしてくれ。
513デフォルトの名無しさんsage2009/08/03(月) 13:27:07
短かく書きたい病ってのは誰でも一度は発症するもんだよ
514デフォルトの名無しさんsage2009/08/03(月) 15:10:12
ありすぎて困る
515デフォルトの名無しさんsage2009/08/03(月) 15:19:57
短く書きたい自体は分かるが、
短くなってない、見にくくなってるだけが多いのはなんでだ。
516デフォルトの名無しさんsage2009/08/03(月) 15:20:14
短く書きすぎて可読性落ちたらいみねぇwww


に気付くのにPGはじめて数年かかった
517デフォルトの名無しさんsage2009/08/03(月) 15:21:54
try-catch-finallyをラムダで書くのに何のメリットがある。
518デフォルトの名無しさんsage2009/08/03(月) 15:48:42
テストコードやアサーションとかなら使い道があるかも
思いつかないけど
519デフォルトの名無しさんsage2009/08/03(月) 18:00:32
>>515
同感、未だ短く書きたい病発症してますけど、つか冗長コード書くやつ死ね派ですが
Tryは間違ってるだろと思うわ
520デフォルトの名無しさんsage2009/08/03(月) 18:05:09
俺は冗長コードは可読性とパフォーマンスはかりにかけて許容範囲ならOKな派
521デフォルトの名無しさんsage2009/08/03(月) 18:34:03
C#は文法自体が冗長だから短く書いてもたかがしれてるんだよな。
とりあえずPerlとかRubyは糞。
522デフォルトの名無しさんsage2009/08/03(月) 18:36:49
冗長にも種類があって、この修正いったい何か所なおしゃいいんだよボケっって冗長タイプは大嫌い
523デフォルトの名無しさんsage2009/08/03(月) 18:52:04
特定の人間しか読めないようだとそれはそれで冗長といえる気がする
524デフォルトの名無しさんsage2009/08/03(月) 19:00:18
>>498みたいなのはともかく,さすがにラムダが全く分からないのは問題外
525デフォルトの名無しさんsage2009/08/03(月) 19:30:49
いつも思うけどこのスレって程度の低い盛り上がり方するよね
ラムダ式なんて書けて当然読めて当然
ラムダ厨も叩いている奴も意識しすぎできもいよ
526デフォルトの名無しさんsage2009/08/03(月) 19:37:50
と、>>498が言っております
527デフォルトの名無しさんsage2009/08/03(月) 20:08:43
2chブラウザみたいに動的に分割するウインドウって作れるでしょうか?
528デフォルトの名無しさんsage2009/08/03(月) 20:17:19
2chブラウザっていろいろない?
529デフォルトの名無しさんsage2009/08/03(月) 20:18:54
それよりも
TryってVBじゃねえの
530デフォルトの名無しさんsage2009/08/03(月) 20:20:22
どう考えてもjavaだろう
531デフォルトの名無しさんsage2009/08/03(月) 20:23:11
いや そこはNullでしょ
532デフォルトの名無しさんsage2009/08/03(月) 20:27:53
書けて当然読めて当然濫用も当然
533デフォルトの名無しさんsage2009/08/03(月) 20:33:24
俺の書くコードが一番!
お前らの書くコードは二番!
534デフォルトの名無しさんsage2009/08/03(月) 20:37:40
1人で書いてる限りは好きなように書いていいよ
535デフォルトの名無しさんsage2009/08/03(月) 20:59:43
さんじのおやつはぶんめいどー
536デフォルトの名無しさんsage2009/08/03(月) 21:00:33
534 おまえねーじゃますんなよw
537デフォルトの名無しさんsage2009/08/03(月) 21:09:53
俺の言った設計通りに動いてくれるならどんな書き方したっていいよ
保守するのはお前らだし
538デフォルトの名無しさんsage2009/08/03(月) 21:46:04
>保守するのはお前らだし
そう思ってたころもありました・・・
539デフォルトの名無しさんsage2009/08/03(月) 22:39:59
Enum.ToStringはメタデータ検索するから遅くなるって言ってるけど
じゃあEnum.GetNamesとかはどうなの?遅くならんの?
540デフォルトの名無しさんsage2009/08/03(月) 22:48:22
ウダウダここに書いてる間に試せると思うんですが…
541デフォルトの名無しさんsage2009/08/03(月) 22:49:04
俺とお前じゃ時間単価が違うんだよ
542デフォルトの名無しさんsage2009/08/03(月) 22:49:59
GetNamesやGetValuesは中でキャッシュされてるからそんなに遅くない
といっても配列の作成とコピーは毎回行われるので注意
543デフォルトの名無しさんsage2009/08/03(月) 22:51:32
ToStringよりはずっと速い。
544デフォルトの名無しさんsage2009/08/03(月) 23:14:44
全然関係ないけど、プロパティをリフレクションで取得したりするコードで、
リフレクションは遅いからプロパティ情報をキャッシュするのだ!って言って
DictionaryとかにPropertyInfoやMethodInfoをキャッシュしてるサンプル見るんだけど、
どうせキャッシュするならデリゲートにしとけっつの。
圧倒的に速いしリフレクション特有の問題も起きない。
545デフォルトの名無しさんsage2009/08/03(月) 23:29:47
GetMethodとかは中でキャッシュされるからPropertyInfoやMethodInfoを
キャッシュするのはあまり意味がないとかいうのをMSDN Magagineあたりで読んだ覚えがある。
パフォーマンスのためなら>>544の言うようにデリゲートをキャッシュする。
546545sage2009/08/03(月) 23:34:54
http://www.microsoft.com/japan/msdn/msdnmag/issues/05/07/Reflection/default.aspx
あった
547デフォルトの名無しさんsage2009/08/03(月) 23:47:28
メンバの検索には結構時間がかかったりもする(条件によってことなる)ので無意味ではないけど
デリゲートをキャッシュする効果に比べたら全く無意味と言っていいレベルだな。
548デフォルトの名無しさんsage2009/08/03(月) 23:55:42
>>541
だったらなおさら時間を大事にしろよ。
頭悪いのかね。
549デフォルトの名無しさんsage2009/08/04(火) 00:46:07
うん
550デフォルトの名無しさんsage2009/08/04(火) 01:20:09
くだらねー
551デフォルトの名無しさんsage2009/08/04(火) 01:53:58
うん
552デフォルトの名無しさん2009/08/04(火) 18:11:07
質問です。

領域を確保したbyte型の配列を以下の関数Funcに渡したいのですが、
どうすればいいのでしょうか?

byte[] bytes = new data[640*480];
Func(????)


void Func(ref byte data){
}

553デフォルトの名無しさんsage2009/08/04(火) 18:14:22
int n = 0; //好きな数字を入れてね!
Func(ref bytes[n]);
554デフォルトの名無しさんsage2009/08/04(火) 18:14:40
void Func(byte data[]){
}

何でこうなるのか考えてから次に進めよ
555デフォルトの名無しさんsage2009/08/04(火) 18:18:01
cじゃねえんだから

void Func(byte[] data)
556デフォルトの名無しさん2009/08/04(火) 18:26:09
>>553,554,555さん
レス有難う御座います。

この場合、関数の型を以下で定義するべきなのは重々承知しております。
void Func( byte [] data)

ただ、この関数は他社提供のクラスライブラリの為、替えることができません。

これってやっぱり、関数の定義ミスでしょうか?

ちなみに、この関数は某大手電卓メーカの提供しているクラスライブラになります。
 
557デフォルトの名無しさんsage2009/08/04(火) 18:27:03
>>556
それなら使い方をサポートに問い合わせるのが一番だろ
558デフォルトの名無しさんsage2009/08/04(火) 18:31:21
>>557さん
恥ずかしながら、保守契約が切れていてけないのです

・・・ちょっと見落としていたけど、553の案で行けそうな気がしてきた
559デフォルトの名無しさんsage2009/08/04(火) 18:33:58
553の方法でアクセスできました!!!!!
すいません。 有難うございます。

3時間ぐらいハマってた・・・

皆様有難う御座いました。
560デフォルトの名無しさんsage2009/08/04(火) 18:34:14
なんじゃそりゃあ。
561デフォルトの名無しさんsage2009/08/04(火) 18:35:35
なんつうライブラリだ・・・・
要は配列の中の1バイトを書き換えるプログラムってことか…?
562デフォルトの名無しさんsage2009/08/04(火) 18:37:30
まさかのネタがマジレス
563デフォルトの名無しさんsage2009/08/04(火) 18:48:06
ネタじゃないです。

ネイティブコードのラッパライブラリみたいです。
サンプルさえあれば、こんなにハマることは無かったのですが、

本当に助かりました。感謝!!!!
564デフォルトの名無しさんsage2009/08/04(火) 18:52:54
中でえげつないことしてそうだなあ
565デフォルトの名無しさんsage2009/08/04(火) 18:57:52
なんというか・・・・
これはひどそうな匂いがぷんぷんしてくるな
566デフォルトの名無しさんsage2009/08/04(火) 19:26:21
ライブラリの機能や仕様が不明なんだから何とも言えん。
ぱっと見た感じで怪しいのは確かだが。
567デフォルトの名無しさんsage2009/08/04(火) 19:36:16
C++ の

 void Func(byte* data)

を、C# に持ってくるときに

 void Func(byte[] data)

にするべきはずのところを

 void Func(ref byte data)

にしただけだと思う
まあわかりやすい間違いだな
568デフォルトの名無しさん2009/08/04(火) 19:57:55
こんばんわ
文系のプログラムわからないぼくですが
仕事の兼ね合い覚えないといけないことになりました。

やはり先に本をかって進めていったほうがよろしいですか?
569デフォルトの名無しさんsage2009/08/04(火) 20:01:21
あたりまえ
いくらPCに詳しくても,プログラミングでは「なんとなく触ってたら使える」というのはありえません
570デフォルトの名無しさんsage2009/08/04(火) 20:03:09
>>568
それってC#でなきゃいけないの?
571デフォルトの名無しさんsage2009/08/04(火) 20:08:39
>>570
はい、C#で開発なんで
それでないといけないと思います。

本で初心者用って書いてあればなんでも平気ですかね。
572デフォルトの名無しさんsage2009/08/04(火) 20:10:16
C# とだけ書いてある本ではなく,Visual C# と書いてある本を選びましょう。
いきなり前者に挑むと挫折します。
573デフォルトの名無しさんsage2009/08/04(火) 20:12:58
しかし門外漢を使おうなんて余程手が足りないのね
ここからが本当の地獄だ
574デフォルトの名無しさんsage2009/08/04(火) 20:17:23
>>572
助かります。
2種類あったのか・・・

visualstudio2005を使うんですが、C#って書いてあったようなきがしたけど
visualC#ってことでいいのでしょうか?
575デフォルトの名無しさんsage2009/08/04(火) 20:22:36
VisualStudio2005は複数のプログラミング言語が使える。
その中でC#を使うならVisualC#2005を使うことになる。
二種類あるっていうのは,例えるなら>>572の前者は英文法の本,後者は英会話の本だ。
576デフォルトの名無しさんsage2009/08/04(火) 20:23:44
>>575
なんと・・・・
VisualC#で探します、ほんと助かりました。

前者後者で差が結構ありますね¥・・
577デフォルトの名無しさんsage2009/08/04(火) 20:30:01
>>574
プログラミング未経験者がいきなり本で独学でC#とか俺は無謀だと思う。
特別地頭がいいなら別だけど。
こういうスレの連中は変な見栄と気取りがあるから認めないと思うけどねw

いきなりC#でも人に直接教えて貰えばなんとかなるかもしれんけど、
そういう訳にいかんのかな。
578デフォルトの名無しさんsage2009/08/04(火) 20:30:59
だから地獄の始まりだと言ってるだろ
579デフォルトの名無しさんsage2009/08/04(火) 20:32:57
>>577
うちの会社教えてくれる人いないんですよ・・・
これやってねって言った人も始めてだし。

今まで仕事・・・まぁ新入社員だけど
プログラミング教えてもらったことなど一度もないんです。
本渡されてどうぞ?しかないです。
580デフォルトの名無しさんsage2009/08/04(火) 20:37:02
まあとりあえず触ってみりゃいいんじゃない
「VisualC#入門」みたいな本買ってきて一通り打ち込んで動かしてみてそれからだな
プログラミング自体に興味が持てれば次は文法の本に行けばいいし無理ならキャリアスクールへどうぞ
581デフォルトの名無しさんsage2009/08/04(火) 20:45:10
そのレベルの初心者なら、最初は研修に行かせてもらったほうが早いんだけどな。
最初は入門書は定番の有名なのより、
手取り足取りタイプの超入門書を2〜3冊読み漁るのがいい。
物足りなくなったら定番に移行。
582デフォルトの名無しさんsage2009/08/04(火) 20:55:54
>>577
C#が無謀なら何ならいいの?
583デフォルトの名無しさんsage2009/08/04(火) 20:56:17
研修とかスクールって行った事ないけど意味あるの?
実際に仕事したことのない講師が教えてそうで怖いわ。
584デフォルトの名無しさんsage2009/08/04(火) 21:10:35
研修とかプログラム受けると
お金になるとききました
(経理的な意味で)
585デフォルトの名無しさんsage2009/08/04(火) 21:34:40
http://msdn.microsoft.com/ja-jp/library/ms229043%28VS.80%29.aspx

>複数の単語で構成されるパブリック メンバ、型、および名前空間の名前には、常に Pascal 形式を使用してください。

ってあるけどプライベートなメンバの命名規則はどこにあるの?
586デフォルトの名無しさんsage2009/08/04(火) 21:35:54
公式には原則自由
それ「クラスライブラリ開発者向け」のガイドラインだからアセンブリの外から見えないメンバについては
どうでもいいの
587デフォルトの名無しさんsage2009/08/04(火) 21:37:02
すばやい返答ありがとう
588デフォルトの名無しさんsage2009/08/04(火) 21:49:37
ちなみに非推奨のアンダーバー始まりを使ってます。
589デフォルトの名無しさんsage2009/08/04(火) 21:52:15
Cじゃないんだから取り立てて禁止というわけじゃないよ。
590デフォルトの名無しさんsage2009/08/04(火) 21:55:53
むしろMSが公開してるC#で書かれたコードでは _camelCase が多数派
591デフォルトの名無しさんsage2009/08/04(火) 22:29:41
C#って結構とっつきやすい方だと思うんだけどなぁ。
592デフォルトの名無しさんsage2009/08/04(火) 22:32:20
他の言語の経験がある人にはね
もともとそういうコンセプト
593デフォルトの名無しさんsage2009/08/04(火) 22:38:09
他の言語使ったことないと結構きつい気がするよ
594デフォルトの名無しさんsage2009/08/04(火) 22:40:13
他のってCとjavaだけだろ。
595デフォルトの名無しさんsage2009/08/04(火) 23:07:54
delphiから移行したけど結構簡単だった
596デフォルトの名無しさんsage2009/08/04(火) 23:09:54
delphi とは腹違いの兄弟みたいなものだからなぁ
597デフォルトの名無しさんsage2009/08/04(火) 23:12:02
>>590
そうなんだけど非推奨なんだよw
598デフォルトの名無しさんsage2009/08/04(火) 23:16:02
ああ・・・種は一緒だからな
確かに腹違いだ
599デフォルトの名無しさんsage2009/08/04(火) 23:18:45
お下品。
600デフォルトの名無しさんsage2009/08/04(火) 23:32:40
他の言語の経験なんているか?
どの辺が?
601デフォルトの名無しさんsage2009/08/04(火) 23:42:45
>>600
誰に向かって反論してるわけ?
「どの辺」にそんなこと書いてあるの?

どうでもいいけど、こんなちっちゃいことで自分を大きく見せたい奴は
大概その意図に反して無能な奴だわな。
602デフォルトの名無しさんsage2009/08/04(火) 23:46:25
C/C++やってた俺には最初ヘッダが無いのが気持ち悪くて仕方なかった
603デフォルトの名無しさんsage2009/08/04(火) 23:47:37
>>597
非推奨と書いてある箇所は何処でしたっけ?MSDNみてるけど出てこない。
604デフォルトの名無しさんsage2009/08/04(火) 23:48:08
#defineが無くて幸せ
605デフォルトの名無しさんsage2009/08/04(火) 23:49:24
マクロには使えないが一応あったような。#define
606デフォルトの名無しさんsage2009/08/04(火) 23:49:36
あ、#defineマクロのことな
607デフォルトの名無しさんsage2009/08/04(火) 23:59:12
条件付きコンパイルはもうちょっと言語を壊さない形で実現できなかったのかな
conditional (DEBUG) { }とか
608デフォルトの名無しさんsage2009/08/04(火) 23:59:40
プリプロセスを無くすのはいいが、ファイルのインクルードまで無くしたせいで
条件付コンパイルがやり難くてしょうがないと思うんだけど。

とくに条件が複数のプロジェクトを横断的に規定するようなものだった場合。
609デフォルトの名無しさんsage2009/08/05(水) 00:02:52
>>601
うわっ、キモっ
610デフォルトの名無しさんsage2009/08/05(水) 00:03:40
>>579
悪いことは言わん。明日の退社後にでも、夜でもやってるパソコン教室へ、せめて1日(2時間)だけでも行ってこい。
最低限のとっかかりがないと、参考書のコードをそのまま入力するのも大変だろうし、ぐぐることもできんはず。

つーか、俺を雇ってくれよ…
611デフォルトの名無しさんsage2009/08/05(水) 00:09:54
なんか変な妄想ふくらませてるのがいるなw
習得に相当時間がかかったのだろうか。
612デフォルトの名無しさんsage2009/08/05(水) 00:12:26
>>610
悪いことは言わん。明日の朝にでも職安へ行ってこい。
613デフォルトの名無しさんsage2009/08/05(水) 01:17:30
>>568
明日の朝、退職願出して、ハローワークに行って、事務か介護か土方の仕事探しな。
お前みたいな奴が居ると迷惑だ。
614デフォルトの名無しさんsage2009/08/05(水) 06:32:24
>>603
http://msdn.microsoft.com/ja-jp/library/ms229045.aspx
アンダースコア (_) やハイフン (-) など、英数字以外の文字は使用しないでください。
ハンガリー表記法は使用しないでください。


読み直したらこれはプロパティのことだけに言ってるのか一般的なことに言ってるのかがわからんようになった。
615デフォルトの名無しさんsage2009/08/05(水) 07:25:28
>>614
>>586の見解で正しいと思う。

自メンバーのアクセスには全部this.つけろより、
前か後ろにアンダーバーのほうが好みだ。
616デフォルトの名無しさんsage2009/08/05(水) 08:43:36
日本語使ってるコード見たことあるな
617デフォルトの名無しさんsage2009/08/05(水) 09:27:46
○○○○○○ToolStripMenuItem_Click(object sender, EventArgs e)
これの前に日本語つくよねw
618デフォルトの名無しさんsage2009/08/05(水) 09:42:06
インテリセンスの都合で、後ろに _ の方が好き。
アンダーバーってキーボードの位置的に押しづらくて、先頭に持ってきたくない。
619デフォルトの名無しさんsage2009/08/05(水) 09:46:47
private readonly stringのメンバー変数名って大文字から始まるの?
620デフォルトの名無しさんsage2009/08/05(水) 09:58:36
privateは好きにしろと何度も出てるだろ
621デフォルトの名無しさんsage2009/08/05(水) 10:18:09
今はC#だからメソッド名とか大文字にしてるけどF#始めるから小文字になる予感。
そのあとC#使うときはどっちになるんだか・・・
622デフォルトの名無しさんsage2009/08/05(水) 10:24:36
正直どうでもいいな。
623デフォルトの名無しさんsage2009/08/05(水) 10:25:16
F#ってC#と比べてどんなメリットあるの?
624デフォルトの名無しさんsage2009/08/05(水) 10:54:16
>>617
エンティティフレームワークなんて、Hogesってテーブルがあったらデフォルトで

エンティティ=Hoges
エンティティセット=Hoges設定

だぜ。
625デフォルトの名無しさんsage2009/08/05(水) 11:12:59
ワロタ
626デフォルトの名無しさんsage2009/08/05(水) 12:05:34
プログラミングで初めての言語が C# だとクラスとか
よくわからないままになるかもしれないかな。
C++ から入るとあまり問題にならないような気がする。
627デフォルトの名無しさんsage2009/08/05(水) 12:08:04
C++こそクラスから逃げられないと思うんだが…
628デフォルトの名無しさんsage2009/08/05(水) 12:18:26
C# をはじめてのプログラミング言語にすると Main メソッドをもつクラスの意味がわかりづらい。
いきなりおまじないから始まるのはちょっと考えもの。
629デフォルトの名無しさんsage2009/08/05(水) 12:30:56
>>627
逃げられないからこそよくわからないままでいられないってことでしょ?
630デフォルトの名無しさんsage2009/08/05(水) 12:51:18
クラス設計が難しい
631デフォルトの名無しさんsage2009/08/05(水) 14:33:24
>>608
プリプロセスのうちヤバイとされる物の一つだからそりゃなくなるだろ。
また、define の方は、Conditional アトリビュートを使えとのいうがC#流。
これによって、マクロ機能等をライブラリ化する時に捨てず、きっちりdllまで維持して再コンパイル等を防止している。
632デフォルトの名無しさんsage2009/08/05(水) 15:14:12
ファイル横断的にやりたいなら、
csc /define:HOGE ... やMSBUILDのスクリプトで指定するのが原則。
633デフォルトの名無しさんsage2009/08/05(水) 17:17:09
C#でのスレッドセーフなプログラミングに関する簡単な質問なんですが
あるクラスインスタンスの値を取得する部分

work = myClass;

と、クラスインスタンスの参照をセットする部分

myClass = new MyClass();

これってそれぞれクリティカルセクション化しないとまずいですか?
内部で何をやっているのか分からず不安なんですが、何でもかんでもlockするのは嫌なので…

また、intなどの値型でも同じことが言えるんでしょうか。お願いします。
634デフォルトの名無しさんsage2009/08/05(水) 17:57:08
前提が抜けすぎてて答えようがない。もう少しシナリオをしっかり書こうよ。
635デフォルトの名無しさんsage2009/08/05(水) 18:42:23
そこだけをロックしなけりゃならないことはあまりない
636デフォルトの名無しさんsage2009/08/05(水) 18:50:18
念のため、なんでもかんでもロックしたところでそれでもスレッドセーフになるわけじゃないぜ
637デフォルトの名無しさんsage2009/08/05(水) 18:59:04
普通は想定される複数スレッドからの使われ方というのがあって、
その時にどのように動作させるという設計があって、
その上で内部のデータや動作が不正にならないための条件を導いて、
それを壊さないようにロックなどで保護するんだよ。

だから何の前提もなくただスレッドセーフなんてのはない。
638デフォルトの名無しさんsage2009/08/05(水) 21:49:32
// どちらが実行されるでしょうか?

bool a = true, b = false, c = true;
if ((a = b == c) == (a == b == c))
 d();
else
 e();
639デフォルトの名無しさんsage2009/08/05(水) 21:53:46
640デフォルトの名無しさんsage2009/08/05(水) 21:53:47
宿題か?
641デフォルトの名無しさんsage2009/08/05(水) 21:55:20
貼りつければ分かるから宿題じゃないです
クイズです
642デフォルトの名無しさんsage2009/08/05(水) 21:58:15
不適切な問題じゃね

演算子の優先順を問う感じだろうけど=と==をどっち優先にしてもdになる気がする
643デフォルトの名無しさんsage2009/08/05(水) 22:01:08
d?
644デフォルトの名無しさんsage2009/08/05(水) 22:03:05
>>642

(a = t == f) == (f == t == f)
(a = f) == (f == t)
(f) == (f)
t

(a = t == f) == (f == t == f)
(t == f) == (f == t)
(f) == (f)
t

ホントだw
645デフォルトの名無しさんsage2009/08/05(水) 22:17:53
あほやのう
646デフォルトの名無しさんsage2009/08/05(水) 22:26:34
>>644
(f == t == f) が (f == t) ?
なんで?
647デフォルトの名無しさんsage2009/08/05(水) 22:33:06
安産してeだと思った15年目の俺・・・orz

基本的に優先順位とか気にしたくないのでかっこでくくってますが( ゚Д゚)ナニカ?
648デフォルトの名無しさんsage2009/08/05(水) 22:34:56
なんだろうねぇ
649デフォルトの名無しさんsage2009/08/05(水) 22:39:14
なにいってんの?
eだろ
650デフォルトの名無しさんsage2009/08/05(水) 22:53:01
>>644
(f == t == f) の出所は?
651デフォルトの名無しさんsage2009/08/05(水) 23:18:16
(a = b == c) == (a == b == c)
=> (a = (F == T)) == (a == b == c)
=> (a = F) == (a == b == c)
=> F == (F == (F == T))
=> F == (F == F)
=> F == T
=> F

なので e が正解
652デフォルトの名無しさんsage2009/08/05(水) 23:21:37
==演算子って左結合じゃなかった?
653デフォルトの名無しさんsage2009/08/05(水) 23:28:05
>>651
まて結合の優先順位と、実行される順序は別だ。

(a = b == c) == (a == b == c)
=> (a = (F == T)) == (a == b == c)
=> (a = F) == (a == b == c)

1)
=> F == (F == (F == T))
=> F == (F == F)
=> F == T
=> F

2)
=> (a = F) == (T == (F == T))
=> (a = F) == (T == F)
=> F == F
=> T
654デフォルトの名無しさんsage2009/08/05(水) 23:32:29
大漁ですな(;´Д`)
655デフォルトの名無しさんsage2009/08/05(水) 23:34:36
式は右辺からと思っていると、
(a = b == c) == (a == b == c)
-> X == Y
の右辺Yからやることになり、地獄行きになるんです
656デフォルトの名無しさんsage2009/08/06(木) 00:13:44
(==)((a = b == c), (a == b == c))
657651sage2009/08/06(木) 03:03:09
>>652
すまん4行目は F == ((F == F) == T) だな。
結果は一緒。
ttp://msdn.microsoft.com/ja-jp/library/aa691323(VS.71).aspx
658633sage2009/08/06(木) 09:04:57
>>634-637
遅くなってすみません。

たとえば、スレッドAとスレッドBで変数myClassを共有している

スレッドAでは、myClassに新規インスタンスをセットする

while( 1 )
{
myClass = new MyClass();
}

スレッドBでは、myClassを作業用変数に確保し、さまざまな処理を実行する
while( 1 )
{
MyClass work = myClass;
workに対しての様々な処理
}

代入演算子はオーバーロードしていません
ちょっと何をやりたいかわかりにくいかもしれませんが、これだけを見た場合に問題はありそうですか?

内部的に参照カウント関係の処理が走っていたりして、危険だったりしますか?お願いします。
659デフォルトの名無しさんsage2009/08/06(木) 09:10:07
ダメダメ絶対ダメ
スレッドBのループが一回回る間にスレッドAのループが何回回るか全く分からないんだよ?
それにいくらメモリを意識しなくていいといったってさすがにノーウェイトでnewしまくったらGCの負担になる
660デフォルトの名無しさんsage2009/08/06(木) 09:21:04
スレッドAとスレッドBの周回数は同期がとれていなくていいです
GCの負荷は考慮しないとして、スレッドセーフかっていう質問なんですが・・・

要するに
myClass = new MyClass();

MyClass work = myClass;
のところをロックしないとメモリを壊したりしますか?ってことが聞きたいんです

C言語なら問題無いはずですがC#だとどうなのかな?って

>>635 の言うようにこれ自体はロックしなくても問題ないんですかね^^;
661デフォルトの名無しさんsage2009/08/06(木) 09:28:22
myClassが共有されてると言うことでおけー?
ロックされる云々の前に多分それ意図してるように動かないよ。エスパーしてみるとw
662デフォルトの名無しさんsage2009/08/06(木) 09:29:44
必ずしも間違った扱いではないけど問題あるかどうかは別だな
AでMyClassのコンストラクタが呼ばれた後に,Bで古いインスタンスが使われる可能性はある
663デフォルトの名無しさんsage2009/08/06(木) 09:32:02
ロックするならスレッドBの書かれてない処理のところじゃね?
664デフォルトの名無しさんsage2009/08/06(木) 09:36:37
参照やintへのアクセスはアトミックと規定されている。
つまり、myClassが32bitだとすると16bitだけ新しい値に書き換わってるという状態は存在しない。
一方doubleやlongはそういう状態が発生しえる。

ただしマルチCPUの場合はもう少しややこしくて、
スレッドAが書き換えたmyClassの内容がスレッドBに反映するまでにタイムラグが発生する場合がある。
これが問題になるならlockを使用するかmyClassをvolatileで宣言する。
Cのvolatileとの違いに注意。
665デフォルトの名無しさんsage2009/08/06(木) 09:44:52
あと、C#のGCは参照カウントじゃないよ。
666デフォルトの名無しさんsage2009/08/06(木) 09:58:55
ま、確実性という意味なら、volatileつけとけば確実。
ただしなくてもメモリが壊れるとかのレベルの問題はない。

実質的にはCLR2.0以降のメモリモデルと86系CPUのメモリモデルから、
事実上はvolatileなくても問題ないはず。

667デフォルトの名無しさんsage2009/08/06(木) 10:02:26
あ、確実というのは、可能な限り最新のインスタンスを使うという意味でね。
668デフォルトの名無しさんsage2009/08/06(木) 10:13:30
Interlocked.Exchangeでも使えば
669デフォルトの名無しさんsage2009/08/06(木) 10:40:47
volatileを使わない場合はもうひとつ問題があって、
MyClassの初期化が終わる前にスレッドBに参照が渡ってしまう可能性がある。
ただし、これが起きるのはMSだとItatiumの場合だけ。
原理的には有名なダブルチェックロッキング問題と同じ。

myClassをvolatileにしない場合のスレッドA
while( true ){ 
 MyClass tmp = new MyClass();
 Thread.MemoryBarrier();
 myClass = tmp;

670デフォルトの名無しさんsage2009/08/06(木) 11:15:28
おまいら詳しいのな
671デフォルトの名無しさんsage2009/08/06(木) 11:20:35
それもCLR2.0以降では大丈夫でそ。
ついでにその問題を出すなら、Aのメモリバリアだけじゃだめ。

なぜなら、Bスレッドのワーク変数が目的通りに動かないから。
ワーク変数への各アクセスで、新しい参照を読んでしまう危険がある。
かなり直感に反する動作だと思うけど。

結局この場合もvolatileつけるのが最も簡単確実。
672デフォルトの名無しさんsage2009/08/06(木) 11:58:19
>>671
いや大丈夫でないから.NET2.0で.MemoryBarrier()が追加になってるわけで。

myClassからworkの参照コピーは1回限りのようだから問題ない。
work変数はローカルなんだし、
MyClassはスレッドAでセットしたあとは放置状態なのだから、
途中で新しい参照を読み込むことはありえない。
workは一貫したクラスを参照できてれば、MyClassのバージョンは問わないという前提だよ。
673デフォルトの名無しさんsage2009/08/06(木) 12:00:37
C# 2.0で質問です。

List _list = new List();

//(本当はintではなくクラスなんですが説明しやすいようにintで・・・)

_list.Add(1);
_list.Add(2);
_list.Add(3);
_list.Add(4);
_list.Add(5);

foreach(int data in _list)
{
 Console.WriteLine(data);
}

このような感じで記述した時に
Listはインデックス0からデータを順番に必ず返すのでしょうか?
やってみた感じ必ず返っては来ているようなんですが、保障されているというような感じの文章がヘルプから探せなかったので質問させていただきました。
よろしくお願いいたします。

コレクションやソーテッドリストなんかはその並び順は勝手に変わるようですがListオブジェクトはどうもみあたらない・・・orz
674デフォルトの名無しさんsage2009/08/06(木) 12:11:22
foreach が配列の要素を走査する順序は、次のように定義されます。
1 次元配列の場合、要素はインデックス 0 から始まってインデックス Length ? 1 で終わるインデックスの昇順に走査されます。
多次元配列の場合、要素は、最初に右端の次元のインデックスが増加し、次にその左側の次元のインデックスが増加し、さらにその左側の次元のインデックスが増加する、というように走査されます。
675デフォルトの名無しさんsage2009/08/06(木) 12:37:54
>>674
int のコレクションとして考えれば0〜インデックスの最後までの順序で処理される
それでもってListコレクションの中身も同じように処理されるということでしょうか?

ということであればすっきり処理を続けることができます。
ありがとうございました!
676デフォルトの名無しさんsage2009/08/06(木) 13:09:05
>>672
違うよ。
メモリバリアはCLIの標準仕様では必要。
CLR2.0以降の実装では不要だとしても、互換性の為には必要になる。
だからある。

あとソースコード上はワーク変数に1回だけ取得してても、
実際にはワーク変数を削除して毎回実体にアクセスするという、
直感的でない最適化が行われる可能性があるんだよ。

共有してる変数をvolatileにすればそれを防げる。
677デフォルトの名無しさんsage2009/08/06(木) 13:11:03
この辺はいつだったかのMSDNマガジンに詳しく書かれてる。
678デフォルトの名無しさんsage2009/08/06(木) 14:05:33
>>676
ありがと、勉強になった。MSDNマガジンで確かに見た気がするがスルーしてた。
679デフォルトの名無しさんsage2009/08/06(木) 14:46:29
ごめんもう一つ補足。
CLR2.0以降では書き込みアクセスでのvolatileは事実上不要だけど、
読み取りでは必要な可能性もあったと思う。
書き込み順序と回数はデフォルトでvolatileのように保証されるが、
読み込みは場合によっては省略されることがある。
ただ、その他諸々の事情により、実際に問題が出るパターンはあまりなかったと思う。
680デフォルトの名無しさんsage2009/08/06(木) 17:20:59
C#からUnmanaged-DLLを利用する場合についての質問です。

DLL側でThread Local Strage(__declspec(thread)を付けた静的変数)を使用し
ている場合、(DLL内の関数がC#から呼び出され)DLL内でこれにアクセスしよう
とした時にSystem.AccessViolationExceptionになるようです。(エラー画面.PNG)
DLL側を修正せずに、C#側の修正もしくは他の手段でこれを回避する方法はあ
りませんでしょうか?

http://www1.axfc.net/uploader/Sc/so/24967.zip&key=Test
は問題を再現する簡単なコード例です。
Test¥MyDll¥MyDll.cpp の18行目が__declspec(thread)を付けた静的変数で、
これを、N:¥Test¥MyCSApp¥Program.cs の29行目から呼び出されたMyFunc(5)の
処理でszMyLastErrorにエラー情報をセットするところで例外が発生します。

Test¥MyC++App は同じ処理をC++で記述した場合で、これは問題なく動作しま
す。

以上、よろしくお願いいたします。
681デフォルトの名無しさんsage2009/08/06(木) 17:43:07
>>680
ttp://msdn.microsoft.com/ja-jp/library/2s9wt68x(VS.80).aspx
の一番下
682デフォルトの名無しさんsage2009/08/06(木) 17:57:52
C++/CLIあたりでlibを使ってラッパ作れば何とかなるかもね
683デフォルトの名無しさんsage2009/08/06(木) 21:44:03
レスありがとうございます。

>>681
症状からして、そのページに書かれていることが起きている(C#はDLLを動的にローディングしている)
のだろうな、とは思っていたのですが、それを回避する方法がなにかあるのではないかと質問させてい
ただきました。

>>682
MangedなラッパDLLを作成し、これにMyDll.libをリンクしてみましたが、ラッパDLLがC#アプリからは
動的にローディングためか結局ダメでした。

何か、裏技がありませんかねえ??
684デフォルトの名無しさんsage2009/08/06(木) 21:52:25
別 Exe にしてプロセス間通信するしかないだろ。
685デフォルトの名無しさんsage2009/08/06(木) 21:57:02
C++/CLIから起動してC#側を動的ロードするとか
686デフォルトの名無しさんsage2009/08/06(木) 22:23:54
DLLのほうを触っていいならTlsAllocを使えばいいはずだけど。
687デフォルトの名無しさんsage2009/08/06(木) 23:40:08
COMのアウトプロセスサーバーでラップすると何とかなりそうだが、
激しくめんどい。
インプロセスサーバーだと駄目だった。
688デフォルトの名無しさんsage2009/08/07(金) 02:56:45
一番現実的なのは>>685だろうな
マネージ側は参照だけでいいんで動的ロードとか言わんけど
689デフォルトの名無しさん2009/08/07(金) 08:47:30
.NETのWindowsアプリケーションで作成したプログラムにおいて、
ネットワークPCのドライブにあるフォルダをアクセスしようとした時、
たまたまそのPCが立ち上がっていなくてネットワーク上に見つからない
場合に長く待たされていました。このタイムアウト時間はたぶんOS
の設定で変えられるものとは思うのですが、タイムアウトにならない
うちにプログラムでアクセスを中断してしまうことは可能でしょうか?
690デフォルトの名無しさんsage2009/08/07(金) 10:09:55
C#でパケットキャプチャしたいのですが、サンプルありますか?
691デフォルトの名無しさんsage2009/08/07(金) 10:18:07
http://www.stackasterisk.jp/tech/program/howtosniff01_01.jsp
http://sourceforge.net/projects/sharppcap/files/SharpPcap/
692デフォルトの名無しさんsage2009/08/07(金) 11:42:39
>>691
ども、でもなんかよくわからないです
エラー 2 型または名前空間名 'NetDefineSet' は名前空間 'StackAsterisk' に存在しません。アセンブリ参照が不足しています。
とか
693デフォルトの名無しさんsage2009/08/07(金) 12:04:49
お前にはまだ早いということだね
694デフォルトの名無しさんsage2009/08/07(金) 12:16:19
>>689
別スレッドでチェックしに行って適当にタイムアウトとかできるんじゃ?
695デフォルトの名無しさんsage2009/08/07(金) 13:22:57
>>692
そういやなんかサンプルそのままじゃビルドできなかった記憶があるな

>The Code Projectによいサンプルがあったので拝借させていただき、それを元に書いてみました。
>元となったのは 「RawSocket Class-Create Network Monitoring (Packet Sniffing) Apps」 というものです。

って書いてあるしそっちも参考にするといい
696デフォルトの名無しさんsage2009/08/07(金) 14:39:34
スレッド分けるのに一票
697デフォルトの名無しさんsage2009/08/07(金) 14:49:45
Process.Start()で存在しないフォルダを起動したら、FileNotFoundExceptionじゃなくてSystem.ComponentModel.Win32Exceptionというのが来る
Frameworkが吸収するところじゃないのか
698デフォルトの名無しさんsage2009/08/07(金) 15:34:45
あなたはそれがいいと思うかもしれないが、
大多数の他人はそう思わない
699デフォルトの名無しさんsage2009/08/07(金) 16:48:15
いやそうでもない
700デフォルトの名無しさんsage2009/08/07(金) 16:59:52
Frameworkが吸収すべき所のような気がするけど
実害は無いからとやかく言わない
701デフォルトの名無しさんsage2009/08/07(金) 17:06:23
>>697
つうかふつうに固まるだろ・・・・
問題はみに行く時に固まるつうのが問題なわけで

なにかボタン押したときにチェック

チェック中ですのダイアログ的なものと共に強制キャンセルボタン

チェック開始(バックグラウンドワーカーでもなんでも)

バックグラウンド終了前にキャンセルされたら
ナックグラウンドワーカー停止

こんなんでいいんじゃね?

成功のときはバックグラウンドの完了イベントかなんかで処理するとか

色々あると思うけど
702デフォルトの名無しさんsage2009/08/07(金) 17:25:47
Microsoftの決めたことなんだから正しいお
703デフォルトの名無しさんsage2009/08/07(金) 18:37:58
>>697
吸収してどうしろって?
別プロセスからの例外をプロセス間通信で受け取るの?
それをフレームワークでやれって?
704デフォルトの名無しさんsage2009/08/07(金) 19:01:23
なん…だと…
705デフォルトの名無しさんsage2009/08/07(金) 20:19:40
Windowsフォームで質問。

Form2 _form2 = new Form2(_form1);

としたとき、_form2.FormClosedのイベントハンドラで_form1.Close()するコードを書くと、
Form2.OnFormClosed()が何度も呼ばれる(つまりFormClosedイベントが何度も発生する)
ようなんだけど、これは仕様?バグ?

仕様だとしたらどう理解したらいいんだろう?
706デフォルトの名無しさんsage2009/08/07(金) 20:25:45
OwnerはCloseするときOwnedFormsを全部Closeする
って言えば分かる?
707デフォルトの名無しさんsage2009/08/07(金) 20:34:10
>>706
そのレベルの話はOK
708デフォルトの名無しさんsage2009/08/07(金) 20:53:58
普通に再帰呼び出しになってるだけっしょ
止まるのはハンドルが消えるから
709デフォルトの名無しさんsage2009/08/07(金) 20:59:15
>>708
現象の説明としてはそれでいいと思うんだけど、
俺が聞きたいのはそういうことじゃなくて、それが仕様なのか、
仕様だとしてそれに何らかの意味があるのかってこと。

FormClosedイベントの意味は、「Close()が呼ばれました」ではないはずだよね。
710デフォルトの名無しさんsage2009/08/07(金) 21:06:03
> FormClosed イベントは、ユーザー、Close メソッド、または Application クラスの Exit メソッドによって
> フォームが閉じられた後に発生します。
「Form.Closeが呼ばれました」でも大体いいんじゃないかな

ま、おいらはMSの人じゃないので意味とか答えられないけど
711デフォルトの名無しさんsage2009/08/07(金) 21:09:46
>>710
それはさすがに読解力マズいんじゃないかと思うけど。。
712デフォルトの名無しさんsage2009/08/07(金) 21:50:30
何度も呼ばれるって何度?
713デフォルトの名無しさんsage2009/08/07(金) 21:52:55
バグだよ、>>705のプログラムのね
714デフォルトの名無しさんsage2009/08/07(金) 21:55:57
Closed≠Disposedと理解すれば良い
715デフォルトの名無しさんsage2009/08/07(金) 22:07:36
>>710-711
MSDNの説明から読み取れるのは

・ユーザ操作、Close()、Application.Exit()で発生しうる
・FormClosedが発生した時点ではフォームは閉じられている

の2点だけじゃね?

てか、説明が怪しいと感じたら英語版を読むといい
それでも怪しいときも多いけどな
716デフォルトの名無しさんsage2009/08/07(金) 22:20:48
ちなみに何回くらい呼ばれるの?
また毎回同じ回数なのか場合によって変わるのかどんな感じ?
717デフォルトの名無しさんsage2009/08/07(金) 22:33:34
>>716
以下が問題を再現する最短のコード。
コンストラクタは省略してある。

public partial class Form1 : Form
{
  Form2 _form2;

  protected override void OnLoad(EventArgs e)
  {
    base.OnLoad(e);
    _form2 = new Form2();
    _form2.FormClosed += new FormClosedEventHandler(_form2_FormClosed);
    _form2.Show(this);
  }

  void _form2_FormClosed(object sender, FormClosedEventArgs e)
  {
    Close();
  }
}

public partial class Form2 : Form
{
  int _count = 0;
  protected override void OnFormClosed(FormClosedEventArgs e)
  {
    base.OnFormClosed(e);
    Console.WriteLine("Form2.OnFormClosed Called ! // count = {0}", _count++);
  }
}
718デフォルトの名無しさんsage2009/08/07(金) 22:53:53
>>717
とりあえずDisposedイベントでForm1.Closeやるように変更したら
現象回避出来たぞ
719デフォルトの名無しさんsage2009/08/07(金) 23:00:06
>>718
うん、それはわかるけど、
俺が知りたいのはこういうコードを書くと「何故」そんなことになってしまうか、なんだ。

普通に考えれば、OnFormClosedが何度も呼ばれるのは理解に苦しむと思うんだが。
720デフォルトの名無しさんsage2009/08/07(金) 23:00:45
Form2ClosedでForm1Closeして新しいClosedが発生するのがおかしいと言ってるの?
何がおかしいのかよくわからない
721デフォルトの名無しさんsage2009/08/07(金) 23:02:44
>>719

まあ所持関係にあるForm同士として呼び出してるんだから
>    _form2.Show(this);

Form1閉じる→Form2閉じる
っていうのは標準動作として組み込まれてる

逆方向の動きを追加したい場合(Form2閉じる→Form1閉じる)は
標準の動作と競合しないようにしなきゃ不具合が起きて当たり前

FormClosed()の時点ではForm同士の所持関係を破棄していないようなので
無限ループが起きる
Disposed()の時点でForm同士の所持関係を破棄しきったので
やりたい動作が実現できる
722デフォルトの名無しさんsage2009/08/07(金) 23:07:42
FormClosedイベントなんだから、「完全にフォームが閉じた後」に発生しないとおかしい
と言いたい訳か。
んで_form2が完全に閉じた後だから、_form2_FormClosedが呼ばれても子フォームのCloseが呼ばれるのはおかしい、と
723デフォルトの名無しさんsage2009/08/07(金) 23:15:06
Close()をこうやって呼べばいけるっちゃいける。
this.BeginInvoke((MethodInvoker) (() => Close()));

親フォームが子フォームを閉じるための参照のコレクションを持ってて、
親フォームから登録を抹消するタイミングがFormClosedの後なんだろうな。
724デフォルトの名無しさんsage2009/08/07(金) 23:16:44
>>722
>_form2が完全に閉じた後だから、_form2_FormClosedが呼ばれても子フォームのCloseが呼ばれるのはおかしい、と
いや、そこは必ずしもそうは思わないけど、>>717のコードの動作が「おかしい」と思う点は、
何度も言うけどOnFormClosedの呼ばれ方が、MSDNに書かれたFormClosedイベントの仕様に
反するように思える点。
725デフォルトの名無しさんsage2009/08/07(金) 23:17:10
>>723
なんかそれタイミング次第で
うまく行ったり例外おきたり
危険な動作しそうな気がする
726デフォルトの名無しさんsage2009/08/07(金) 23:18:43
例えば、Form.Show()は何度でも呼べるけど、
その都度Shownイベントが発生したりはしないよね。
727デフォルトの名無しさんsage2009/08/07(金) 23:19:47
>>724
Formのオーナーシップの関係で
Formクラスから子FormのCloseが呼び出されるってことでしょ
何も反してないよ
728デフォルトの名無しさんsage2009/08/07(金) 23:23:40
>>727
だから、FormClosedイベントの意味、つまり仕様は、「Closeメソッドが呼ばれました」
ではないよね。少なくともMSDNライブラリを詠む限り、そうは読み取れない。
729デフォルトの名無しさんsage2009/08/08(土) 00:26:58
お前が明示的に呼んだときしかCloseメソッドが呼ばれないと思ってるということか
730デフォルトの名無しさんsage2009/08/08(土) 00:37:46
>>729
こんなこと言いたくないが、馬鹿はすっこんでてくれよ。
二重の意味で日本語も読めないのかまったく……
731デフォルトの名無しさんsage2009/08/08(土) 00:40:59
>>730
どう見てもお前の方が馬鹿だが
732デフォルトの名無しさんsage2009/08/08(土) 00:41:33
むしろMSDライブラリを読み取れないレベルの馬鹿がやめた方がいい
お話になりません
733デフォルトの名無しさんsage2009/08/08(土) 00:59:09
横やりだが>>728とかの言ってることは別にそんなおかしくないぞ。
Closeを何度呼ぼうが、実際に閉じたタイミングで一度だけ発生する
と期待するのは普通の感覚。
MSDNの説明も普通に読めばそうだと期待する。

一度しか呼ばれない、とは明記されてないし結局仕様なんだろうとは思うけど。
734デフォルトの名無しさんsage2009/08/08(土) 01:05:38
1度テストしてみて理解できないようなら方法は無い
735デフォルトの名無しさんsage2009/08/08(土) 01:14:25
MSDNのクラスのドキュメントって
クラス単体の動作を説明してるのが基本であって
フレームワークの中でそのクラスがどう扱われてるかは
オマケ程度にしか説明されていない

っていうことをわかって無いから的外れなこと言い出すんだよね
736デフォルトの名無しさんsage2009/08/08(土) 01:28:44
>>735
ほほう、「的外れ」とは?
具体的に何がどう「的外れ」だ、と?

いや、無理しなくていいよ。
そんな自分の頭で理解していることを表現しているとは思えない、
悪いけど意味不明な文章を書いているようじゃたぶん正面からの回答は無理だと思うから。

しかし、別に初心者が悪いと思わんけど(誰だって最初はそうだし)
知りもしないことに口出しして挙句に相手をいきなり罵倒する奴っていうのは
迷惑以外の何者でもないな本当。

初心者どころか自分でイベントを生成するコードすら書いたことすらないのが、
言っちゃ悪いがミエミエなのに。
まあそれ以前に日本語もまともに読めていないようだけどw

2chでこんなこと言ってみても仕方ないのは分かっているが、あまりに腹が立ったのでね。
737デフォルトの名無しさんsage2009/08/08(土) 03:20:05
ここでクダ巻いててもしょーもねーだろw
738デフォルトの名無しさんsage2009/08/08(土) 04:57:36
長文書いたら負けですよ
739デフォルトの名無しさんsage2009/08/08(土) 06:37:29
閉じられる理由位見ろ
_form2_FormClosed() の処理が
if (e.CloseReason == CloseReason.UserClosing)
  Close();
じゃないの点が問題なんだよ

何度も Form2 に FormClosed が送られてくるのも
あくまでも Form2.FormClosed イベントが終了していない段階で
Form1 を改めて閉じようとしているからループしてるに決まってるだろ

ユーザ操作以外ではどうせ親から Close が送られてくるから無視でいい
740デフォルトの名無しさんsage2009/08/08(土) 16:24:06
Form 1 の中で生成した Form2 を破棄しようとして起きるんじゃないの
741デフォルトの名無しさん2009/08/08(土) 18:41:56
テキストボックスやパネルの境界線の色をグレーや薄いブルーなどにするにはどうすればいいですか?
また、
ラベルの上に小さめのテキストボックスを重ね、一つのコントロールにすることはできますか?

調べましたが分かりませんでした。
どなたか教えてください
(T_T;)。


742デフォルトの名無しさんsage2009/08/08(土) 19:08:28
WPFをつかっとけ
743デフォルトの名無しさん2009/08/08(土) 19:45:28
>>742
WindowsフォームアプリケーションでWPFのコントロールを使えるんだっけ…。
744デフォルトの名無しさんsage2009/08/08(土) 19:50:05
>>740
ユーザ要求により Form2 に WM_CLOSE が送られ
その処理中に Form2 から Form1 に WM_CLOSE が送られ
Form1 が閉じる際に子ウィンドウに対して WM_CLOSE が送られ
その処理中に Form2 から Form1 に WM_CLOSE が送られ……

WM_CLOSE から発生する一連の処理が終了してない間に
改めて WM_CLOSE を流したらループするだろ
745デフォルトの名無しさんsage2009/08/08(土) 19:51:38
>>743
Windows Forms の編集時にツールボックス見たら
WPF 相互運用機能グループに ElementHost あるでしょ
746デフォルトの名無しさんsage2009/08/08(土) 19:56:57
>>717の場合は、別にWin32のウィンドウメッセージの水準で連鎖が起こってるわけじゃなく、
あくまで.NET Frameworkの、いわゆる「イベントの連鎖」が起こってるだけ
(しかも仕様というよりバグが原因ぽい)だから、ちょっとその説明は違うと思うけど。
747デフォルトの名無しさんsage2009/08/08(土) 19:57:05
なんでElementHost なんてわけわからん名前にしたんだ?
748デフォルトの名無しさんsage2009/08/08(土) 20:09:08
至って普通の名前だと思うが・・・
749デフォルトの名無しさんsage2009/08/08(土) 20:11:01
わけわからんって。
Element(UIElement) を Host するから ElementHost。
750デフォルトの名無しさんsage2009/08/08(土) 20:14:18
WinFormだけでやるなら、
TextBoxやらはボーダーなしにして、
その親としてPanelを用意して、
そのPanelのPaintで枠を描画
751デフォルトの名無しさんsage2009/08/08(土) 20:15:37
このスレはMS信者に乗っ取られているようだ
嘆かわしい
752デフォルトの名無しさんsage2009/08/08(土) 20:31:56
まぁC#使ってる奴の99.9%がMS使いだと思うよ(´・ω・`)
だれかC#でiPhone開発してる人来ないかな・・・
753デフォルトの名無しさんsage2009/08/08(土) 20:34:52
というかどこから >>751 が出てきたんだ?
754デフォルトの名無しさんsage2009/08/08(土) 20:44:26
何かのキーワードに反応するボットじゃない?
755デフォルトの名無しさん2009/08/08(土) 21:12:16
>>750
PanelにPaintができるの?
枠線入りの画像をパネルの背景にするってこと?
756デフォルトの名無しさんsage2009/08/08(土) 21:17:07
普通にPaintできるだろ
もしWPFを使うなら,テキストボックス一つ一つをElementHostでホストするようなことはお勧めしない
ある程度の大きい範囲で丸ごとWPFにしてElementHostに乗せる
757デフォルトの名無しさん2009/08/08(土) 21:28:28
>>755
具体的にどうやるの?
panel1_iventが出てきたけど…。
758デフォルトの名無しさん2009/08/08(土) 21:45:35
paintイベントって、formをloadしたときに自動で発生するの?
759デフォルトの名無しさんsage2009/08/08(土) 21:51:23
描画が必要なとき
もちろん初めにフォームを表示するときも呼ばれるな
760デフォルトの名無しさんsage2009/08/08(土) 21:51:35
くれくれしすぎは
761デフォルトの名無しさん2009/08/08(土) 22:14:24
もしパネルやテキストボックスがたくさんある場合、
それらの全ての四辺を描画するならば、
重たくなりそう。
762デフォルトの名無しさん2009/08/08(土) 22:16:19
>>756
ラベルやテキストボックスにbordercolorがないのが困る。
763デフォルトの名無しさん2009/08/08(土) 22:17:19
>>756
エレメントホストはどれくらい重たいのかな。
今からやってみよ。
764デフォルトの名無しさんsage2009/08/08(土) 23:01:35
>>741
なんかまともにレスする奴がいないんで見てられないからレスするけど、
そんなのは普通にTextBoxを継承してカスタムコントロール作ってやればいいんだよ。
class TextBoxEx:TextBox
{
  public TextBoxEx()
  {
    BorderColor = Color.Red;
    BorderStyle = BorderStyle.FixedSingle;
  }

  [Category("Design"), DefaultValue(typeof(Color), "Red")]
  public Color BorderColor { get; set; }

  [Browsable(false),
  DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
  public new BorderStyle BorderStyle
  {
    get { return base.BorderStyle; }
    set { base.BorderStyle = value; }
  }
765デフォルトの名無しさんsage2009/08/08(土) 23:02:47
* 764続き *

  protected override void WndProc(ref Message m)
  {
    base.WndProc(ref m);
    const int WM_PAINT = 0xF;
    switch (m.Msg)
    {
      case WM_PAINT:
        using (Graphics g = CreateGraphics())
        {
          using (Pen pen = new Pen(BorderColor))
          {
            Rectangle rect = ClientRectangle;
            rect.Width -= 1; rect.Height -= 1;
            g.DrawRectangle(pen, rect);
          }
        }
        break;
    }
  }
}
766デフォルトの名無しさんsage2009/08/08(土) 23:09:41
>>765
細かいことだけど、WndProcよりもOnPaintのオーバーライドのほうが簡潔では?
もちろんsuper.OnPaint呼ぶ手間含んで。
767デフォルトの名無しさん2009/08/08(土) 23:09:50
>>765
すごい。ありがとうございます。がんばって解読します。
この継承クラスをまた継承したら、命令を抑えてコーディングできますね。

※ なんで継承したら、bodercolorが出てくるんだろう---。
768デフォルトの名無しさんsage2009/08/08(土) 23:10:55
>>766
やってみればわかるよ。
769デフォルトの名無しさん2009/08/08(土) 23:12:08
例えば50個のテキストボックスを表示させ、
それら全てに色枠線を描いたら、重たいのかな。
770デフォルトの名無しさんsage2009/08/08(土) 23:30:00
>>768
ごめんなさい。言うとおりだった。

ググったらこんな記述も見つけた。PaintイベントがないならOnPaintもなくて当然か。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.textboxbase.paint.aspx
> TextBoxBase.Paint イベント
> コントロールが再描画されると発生します。このクラスでは、このイベントは使用されません。
771デフォルトの名無しさん2009/08/08(土) 23:35:45
panelならOnpaintも可能なんだろか。
772デフォルトの名無しさん2009/08/09(日) 07:46:49
>>765
さんの記事に、
「using (Pen pen = new Pen(BorderColor)) 」
という行がありますが、using句は名前空間の定義のみに使用するわけではないのですか?
どういうケースでusing句を指定するケースがあるのでしょうか。
773デフォルトの名無しさんsage2009/08/09(日) 07:47:50
http://msdn.microsoft.com/ja-jp/library/yh598w02.aspx
MSDNくらい読めよクソタコ
774デフォルトの名無しさんsage2009/08/09(日) 07:54:42
>>765
using (Graphics g = CreateGraphics())
{
 using (Pen pen = new Pen(BorderColor))
 {
 }
}

だとネストが深くなるから

using (Graphics g = CreateGraphics())
using (Pen pen = new Pen(BorderColor))
{
}

の方がいいな。
775デフォルトの名無しさんsage2009/08/09(日) 07:56:28
}それならこれでいいだろ
using (Graphics g = CreateGraphics(), Pen pen = new Pen(BorderColor))
776デフォルトの名無しさんsage2009/08/09(日) 09:16:17
>>775
そうやって並べると見辛くないか? >>774でいいじゃん
777デフォルトの名無しさんsage2009/08/09(日) 10:00:28
わざわざ1行にする意味ないな
778デフォルトの名無しさんsage2009/08/09(日) 10:26:24
「黄金分割」<副題> ピラミッドから ル・コルビュジェまで 柳亮著 美術出版社
1965年の出版でしかも純粋な美術書。でも、なぜフィボナッチ数の課題を
出されるのかピンとこないプログラマは一度目を通してみるとよい。
779デフォルトの名無しさんsage2009/08/09(日) 11:14:40
黄金分割なんてうさんくさいと思うのは俺だけか?
780デフォルトの名無しさんsage2009/08/09(日) 12:15:28
みんなが黄金といっているのだから黄金なんだろう
781デフォルトの名無しさんsage2009/08/09(日) 12:23:24
僕には黄金はまだきついので聖水でいいです
782デフォルトの名無しさんsage2009/08/09(日) 13:30:33
名前が胡散臭いだけで特別なものでも不可思議なものでもないけどね。
783778sage2009/08/09(日) 17:47:10
>>779すみません。これ誤爆でした。
784デフォルトの名無しさんsage2009/08/09(日) 18:35:56
>>775
コンパイル
785デフォルトの名無しさんsage2009/08/09(日) 19:08:36
>>765
こうやると枠線だけ書いて、中の文字塗り潰してしまうイメージあったけど
これでいけるんだ

勉強になりました
786デフォルトの名無しさん2009/08/09(日) 19:13:38
このやり方で重たくならないならば、俺もやりたい。
みんな、なんでそんなに詳しいの?
頭脳を分けてほしいよ。
787デフォルトの名無しさんsage2009/08/09(日) 19:14:55
もっと簡単にできたとおもうが。
788デフォルトの名無しさんsage2009/08/09(日) 20:23:35
listviewのcustomdrowめんどくさー
789デフォルトの名無しさんsage2009/08/09(日) 20:27:50
ユーlistviewつくっちゃいなYO!
790デフォルトの名無しさんsage2009/08/09(日) 20:33:28
customdrow?
791デフォルトの名無しさんsage2009/08/09(日) 20:37:31
カスタムドローで合ってるぞ
オーナードローじゃないぜ
792デフォルトの名無しさんsage2009/08/09(日) 20:44:39
dr o w?
793デフォルトの名無しさん2009/08/09(日) 21:05:54
>>784
このロジックはどこに書くの?
デザイナーズcs?
それとも本体の方?
794デフォルトの名無しさんsage2009/08/09(日) 21:39:42
いろいろ作ったらさ
SS見せてほしいんだけどw
795デフォルトの名無しさん2009/08/09(日) 22:21:54
>>794
SSってなに?
796デフォルトの名無しさんsage2009/08/09(日) 22:24:17
Secret Service
797デフォルトの名無しさん2009/08/09(日) 22:26:35
SQLサーバーを借りてるんですが、直にSQLを書くのと、linqを使うのと、どちらがメリットが高いですか?
798デフォルトの名無しさん2009/08/09(日) 22:28:15
ボーリングのスコア表をC♯で作りたいんだけど、
膨大な数のテキストボックスを早く負担なく描くには何かいいテクニックはありますか?
799デフォルトの名無しさん2009/08/09(日) 22:29:39
>>798
なんでボーリングスコア表なんていんねん。
800デフォルトの名無しさん2009/08/09(日) 22:31:47
>>798
マウスを使って一つずつペタペタ描く。
それしかないだろ。
本を見てもそう書いてた。
間違っていたらごめん。
801デフォルトの名無しさんsage2009/08/09(日) 22:40:38
手っ取り早いのはGirdじゃね
802デフォルトの名無しさん2009/08/09(日) 22:45:24
>>801
ジードって読むの?
初めて聞きました。
詳しく教えてください。
僕もマウスて配置していてくたびれました。
803デフォルトの名無しさんsage2009/08/09(日) 22:47:17
1文字間違えるのが流行りなのか?
DateGridView
804デフォルトの名無しさんsage2009/08/09(日) 22:48:40
>>800
その本は何個のテキストボックスをポトペしていた?
10個超えてたらダウト
805デフォルトの名無しさん2009/08/09(日) 22:59:55
>>804
5つのコマンドボタン。
揃える技は書いてたけど、大量描画についてはコメントなし。
806デフォルトの名無しさんsage2009/08/10(月) 00:37:08
ストライクとかのアイコンはどうすんの?
結局自前で描画する予感
なら1枚絵で作ってしまえ!とか
807デフォルトの名無しさんsage2009/08/10(月) 00:42:53
DataGridViewはアイコン置けるよー
808デフォルトの名無しさんsage2009/08/10(月) 01:34:20
複数の定数を定義したクラスの中に存在する、
定数に要素に全てアクセスするにはどうすればよいでしょうか?
for each 的なコードがあればお教えください。

class TestClass
{

  public const string const_test_1 = "aaa1";
  public const string const_test_2 = "aaa2";
  public const string const_test_3 = "aaa3";
  public const string const_test_4 = "aaa4";
}

809デフォルトの名無しさんsage2009/08/10(月) 01:39:29
設計から見直せタコ
810デフォルトの名無しさんsage2009/08/10(月) 01:41:46
>>808
案1 人手で全て列挙を行う
案2 コンパイラの忠告を無視して後々のメンテナンスを全て投げきってもいいならリフレクション

後で人手で行った場合の数倍のツケを支払う覚悟があるなら
機械的にリフレクションを通してもいいかも
811デフォルトの名無しさんsage2009/08/10(月) 01:41:54
配列で用意しとけよそんなん
812デフォルトの名無しさんsage2009/08/10(月) 01:47:17
>>810
案2の方法をお教えください。

813デフォルトの名無しさんsage2009/08/10(月) 01:48:25
>>812
c# リフレクション フィールド 列挙
で出てきたの↓
http://dobon.net/vb/dotnet/programing/typegetmembers.html
814デフォルトの名無しさんsage2009/08/10(月) 01:50:23
>>813
ありがとうございました。
815デフォルトの名無しさんsage2009/08/10(月) 02:11:58
リフレクションなんか馬鹿に勧めるな馬鹿。
816デフォルトの名無しさんsage2009/08/10(月) 02:29:09
>>815
馬鹿のお前がいっても説得力がない。
817デフォルトの名無しさんsage2009/08/10(月) 02:31:24
リフレクション使って全部実行時に行う必要もなくて

一旦リフレクション使って集計して
その後手作業でソース起こしてもいいかもね
818デフォルトの名無しさんsage2009/08/10(月) 07:04:01
yieldでよくね?
819デフォルトの名無しさんsage2009/08/10(月) 09:10:28
>>817
これはよくやる
自動生成しちゃえばいいんだよね
820デフォルトの名無しさんsage2009/08/10(月) 11:09:01
リフレクションとか難しすぎて頭おかしくなりそう
821デフォルトの名無しさんsage2009/08/10(月) 11:26:49
>>819
日本語としては「ひちがつ」が正しいがレッドブックの「なながつ」も間違いではない
ただ朝鮮人や関西人が良く使う「しちがつ」は明らかに間違い
これを使っていると日本人である事を疑われるので気を付けるように
822デフォルトの名無しさんsage2009/08/10(月) 11:31:29
>>821
なんか最近BOT多くね?
823デフォルトの名無しさんsage2009/08/10(月) 14:27:14
馬鹿ウヨ死ねや
824デフォルトの名無しさんsage2009/08/10(月) 20:20:39
lex とか yacc を思いだした
825デフォルトの名無しさんsage2009/08/11(火) 00:07:46
リフレクション使うならせめてconstではなくreadonly使おう
constとリフレクションは非常に相性が悪い
826デフォルトの名無しさんsage2009/08/11(火) 01:13:45
>>825
もしかしてCLI時点でconst修飾の名前ってきえちゃうの?
827デフォルトの名無しさんsage2009/08/11(火) 01:29:13
ビルドした時点でリテラルに置き換わるんじゃなかったか
828デフォルトの名無しさんsage2009/08/11(火) 01:31:13
んだよ
だからリテラルにできない物はconst宣言できない
829デフォルトの名無しさんsage2009/08/11(火) 01:38:09
使用した場所はリテラルに置き換わってるが、
型の定義としては残っているのでリフレクションで確認できる。

public static const field System.String const_test_1
830デフォルトの名無しさんsage2009/08/11(火) 01:40:05
ildasmの表記のほうがいいな。

.field public static literal string const_test_1 = "aaa1"
831デフォルトの名無しさんsage2009/08/11(火) 01:57:24
しょうがないんだろうけれど、Attributeのコンストラクタ?に普通のオブジェクト生成式とか書けるようになって欲しいお(´・ω・`)
832デフォルトの名無しさんsage2009/08/11(火) 02:26:21
むちゃゆうな
まあ気持ちは分かる
833デフォルトの名無しさんsage2009/08/11(火) 08:30:52
Expressionさえ書ければ解決なのに
834デフォルトの名無しさんsage2009/08/12(水) 02:27:35
TDelegateってなんだ。
835デフォルトの名無しさんsage2009/08/12(水) 06:20:06
Delegateは特殊クラスなのでこういう制約は作れないってことだと思う。
class F where T : System.Delegate
836デフォルトの名無しさんsage2009/08/12(水) 20:09:48
IL 上作れないわけじゃないよ。実際 ECMA335 には
一例として載ってる。
要するにわざと禁止しているものなので理由を考えて
みるといいと思うよ
837デフォルトの名無しさんsage2009/08/13(木) 15:52:09
1日分のログを日付フォルダごとに分けて保存していて
一定期間経過したフォルダを
DirectoryInfo.Delete(true)で削除しているんだが
毎日少しずつ削除時間が延びていくんだが
なんか理由知っている人いない?
削除の他にも処理をしているんだが
なぜか削除だけ時間がかかる
IOの問題なのかな?

ちなみに、、、
OS:windows 2003 server R2
Enterprise x64 Edition
Service Pack2
838デフォルトの名無しさんsage2009/08/13(木) 16:39:00
普通にコマンドで消した時は遅くないの?
839デフォルトの名無しさんsage2009/08/13(木) 20:45:04
削除してる間にログを他者が見てるって事はないの?
そもそもログの量、大きさは同じくらいなの?
840デフォルトの名無しさん2009/08/14(金) 00:23:18
処理内容がわからんから何とも胃炎。
毎日一定時間に処理をしてるんじゃないのか。

削除終了時に終了後から一定時間をセットするなら
削除処理にかかる時間分ずれていくだろ。
841デフォルトの名無しさんsage2009/08/14(金) 00:45:25
すいません
vista + C# express edition + excel2007です
参照設定で参照の追加でcom タブでmicrosoft excel5.0をみると
microsoft excel5.0 ?????????? と出てるんですけど・・・
これって一体・・・・2007以前のexcel入れれば治るのでしょうか?
とても不安です・・・
壊れてるのかなC#・・・(涙
842デフォルトの名無しさんsage2009/08/14(金) 02:03:58
>>837
最初は断片化かな?とか思ったけど、メモリリークな気もする。
C#はジェネリクスとnewで管理されているけど解放されないメモリが
簡単にできちゃうから、仮想メモリにガリガリアクセスして時間が
かかってしまう可能性も否めない。
Process Explorerあたりで確認して、GCのジェネレーション2が
異常にでかいサイズなら解放漏れ(ジェネリクスのClearやDisposeのし忘れ)を
確認してみたらどうだろう。
843デフォルトの名無しさんsage2009/08/14(金) 02:06:10
>>842
気になる
これってアンマネージドで管理されているメモリの話?
それともマネージドだが古すぎてpermanent(永久?)領域に直ぐに移されちゃう話?
それとも両方混ざった話?
844デフォルトの名無しさんsage2009/08/14(金) 02:13:25
マネージドでしょ
845842sage2009/08/14(金) 02:35:11
マネージドの話。
ちょっと怖い書き方をしてしまったけど、要は使わないクラスがどっかで
参照されてるので消されずにメモリが圧迫されてるかも、という事です。
ソートとかで一時領域として使ってたDictionaryに、そのまま参照が残っちゃってて、みたいな。
開発中、デバッガ終了後なかなか処理が戻ってこない時はこの現象が起きてるか
疑ってみたほうがいいかも。と、経験者よりorz
846デフォルトの名無しさんsage2009/08/14(金) 05:20:44
DirectoryInfoのインスタンスは使いまわしてるか、毎回newしてるか。
Directory.Delete(String, Boolean)を使ったらどうか。
8478412009/08/14(金) 08:32:26
初心板にまわります
848837sage2009/08/14(金) 11:20:52
みなさん、ありがとうございます。

>>838
ディレクトリのサイズが32MBぐらいで
普通に"rmdir"コマンドで削除すると1分ぐらいです。

>>839
削除しているのは、数日経過したディレクトリなので
他の人は見てないです。

>>840
日付ごとにディレクトリを作成して
その配下に時間ごとのサブディレクトリを
作成してプロセスごとのログを出力しています。
"日付ディレクトリ"の日付を見て
数日経過していたら削除するという
処理を行っています。

>>842
自分も最初はメモリリークを疑っていました。
ページファイルが1日で5MBずつ増えていますが
そのせいで削除処理が約30秒も伸びるんでしょうか?
削除処理だけで、他の処理は遅くなっていないのも
気になっています。

>>846
毎回newしています。
解放処理は明示的に行っていないので
参照が残ってしまっているのでしょうか?
849デフォルトの名無しさんsage2009/08/14(金) 12:18:00
>ディレクトリのサイズが32MBぐらいで
>普通に"rmdir"コマンドで削除すると1分ぐらいです。
850デフォルトの名無しさん2009/08/14(金) 12:58:35
削除の処理にかかる時間が延びてるってことか
851デフォルトの名無しさんsage2009/08/14(金) 13:54:14
32MBで一分ってその時点で遅すぎねーか?
852837sage2009/08/14(金) 14:04:49
>>850
そうです。
削除の時間が日々伸びています。

>>851
ディスク上のサイズは204MBでした。
遅すぎですかね?
853デフォルトの名無しさんsage2009/08/14(金) 14:07:13
ファイル数くらい書けよ。
エスパーさせんな
854デフォルトの名無しさんsage2009/08/14(金) 14:08:40
シャドウコピーとかは有効になってる?
855デフォルトの名無しさんsage2009/08/14(金) 14:42:25
ファイル数がきっと膨大なはず
ファイルの数があまりに多いと関連の処理がどんどん重くなる

確かWindowsのファイルテーブルてツリー構造してるの見た目だけで
実際はドライブごとに一つの表があるだけだから
ドライブ内のファイル/フォルダの数が多くなる度に
ファイル/フォルダ絡みのあらゆる動作が遅くなる

間違ってたらごめん
856デフォルトの名無しさんsage2009/08/14(金) 15:14:19
NTFSだったらB木使ってるからFAT32よりも格段に速いよ
857デフォルトの名無しさんsage2009/08/14(金) 15:22:48
>>856
フォルダの中身ごと削除の時点で全スキャンだし
858837sage2009/08/14(金) 15:58:22
>>853
すみません。。
フォルダ数:約9500
ファイル数:約52500
膨大な数ですよね。

>>855
毎回削除する"フォルダ数"/"ディレクトリ数"は
変わらないのですが
それでも段々遅くなるのでしょうか?

859デフォルトの名無しさんsage2009/08/14(金) 16:07:16
>>858
数日でそんなに溜まるログとか設計が狂ってる
860デフォルトの名無しさんsage2009/08/14(金) 16:10:39
いっその事DBにログ記録しろ
861デフォルトの名無しさんsage2009/08/14(金) 16:18:10
単純に一日のログを1ファイルにまとめるだけでも
相当マシになるはず
862837sage2009/08/14(金) 17:51:15
みなさん、ありがとうございます。
設計というよりも、そういう仕様なので
仕方ない部分もあるのですが・・・

アドバイスを参考にしたいと思います。
863デフォルトの名無しさんsage2009/08/14(金) 18:46:36
それ、プログラム終了させて新たに起動したらあきらかに速度が違う
というのなら、今まで消したファイルもスキャンしてるとかないか?
864842sage2009/08/15(土) 01:15:55
>ページファイルが1日で5MBずつ増えていますが
>そのせいで削除処理が約30秒も伸びるんでしょうか?
>削除処理だけで、他の処理は遅くなっていないのも
>気になっています。

その、今の所、日を追うごとに増えているデータってのが
ページファイルだけなら疑ってみる価値はあるかと。
ファイル削除とページングでハードディスクへのリクエストがかち合って
ガリガリ言ってる時間が長くなれば可能性はあるかと。

削除プログラムが常駐プログラムなら一度再起動してみて速度をみてみるのはどうだろう?
それ以前にgen2の値はどうなんだろう?これでリークか否かの答えは出ると思うんだけど。

毎回起動なら、そのページファイルを増やしている別のプログラムをつきとめた方がいいかも。
なんにせよ、そのサーバはリークを起こしているっぽいw
865デフォルトの名無しさんage2009/08/16(日) 12:42:56
webbrowserに表示しているHTMLを画像として保存するには、
どのような方法が一番妥当ですか?

クライアントの隠れている部分も含めて画像変換したいので、
PrintScreenではだめです。
866865sage2009/08/16(日) 13:00:41
ネットで探してて最初は見つからなかったのですが、
書き込んでからいろいろ見つかってきました。

http://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserDrawToBitmap.htm

http://www.i-tribe.info/Blog/post/2009/06/08/e7b0a1e58d98e79a84e381abWebe38398e383bce382b7e381aee794bbe5838fe38292e4bf9de5ad98e38199e3828b.aspx

すみませんでした。
867865sage2009/08/16(日) 13:04:11
ここが一番よさそうでした。

http://ufreyr.blog80.fc2.com/blog-date-200703.html
868837sage2009/08/17(月) 14:29:39
>>864
遅くなりましたが、「Process Explorer」で見てみました。
削除しているプログラムの値です。

#Gen0 Collection 14,220
#Gen1 Collection 5,952
#Gen2 Collection 314

Gen0 Heap Size 3,145,728
Gen1 Heap Size 30,976
Gen2 Heap Size 64,076,116

これって、リークしているのでしょうか?
869864sage2009/08/17(月) 18:07:10
Gen2を知らないなら、今だけはプログラムを起動中に常に必要なメモリサイズだと思ってください。
削除プログラムに常に必要とされているメモリが64M弱が正しいならリークしてないです。
これが削除処理を実行する度に増えているなら、かなり怪しいです。
個人的な見解としてはファイルが何ギガあっても削除するだけに64Mは異常です。
CLR Profilerで何にメモリを使っているのか調べます。
更にいうと、64M程度で体感速度に差が出るとは考えづらいです。
他のヒープも合わせ削除処理中にムチャなメモリ確保がある可能性も視野に入れます。
ただし処理時間の原因がメモリリークであり、それが改善された場合、
これ以上削除時間が延びる事は無いはずなのでクレームが来るまで放置しますw
870デフォルトの名無しさんsage2009/08/17(月) 23:10:33
サーバーでPaythonスクリプトを実行し、
特定の命令が呼び出されたら割り込みが入るまで待機ということをしたい。
それを実現するために、スクリプトを実行するごとにスレッドを呼び出してイベント来るまで待機ということをしているんだが、
これだと多数のユーザーがスクリプトを実行したときにリソースが枯渇しそうなことに気付いた。
スレッドプールで書き直したいんだが、ブロックするような処理をするのはまずいとMSDNに書いてあった.

これってイベントが来るまで待機するような処理も含まれるの?
871デフォルトの名無しさんsage2009/08/17(月) 23:44:28
どの辺にC#がw
872870sage2009/08/17(月) 23:55:18
使用言語:C#3.0
873デフォルトの名無しさんsage2009/08/18(火) 00:22:37
>>870
そのまえにペイソンとかいう言語はC#とどの程度相互運用できるんだ
874デフォルトの名無しさんsage2009/08/18(火) 00:28:52
phython≠paython
875デフォルトの名無しさんsage2009/08/18(火) 00:59:19
また変なエサを投下して・・・
876デフォルトの名無しさんsage2009/08/18(火) 01:07:01
ふぁいそん?
877デフォルトの名無しさんsage2009/08/18(火) 01:46:04
北米的にはぺいずぅぁん。
878デフォルトの名無しさんsage2009/08/18(火) 10:24:41
SORPとかでWCF使うとか
879870sage2009/08/18(火) 16:49:05
>>873
ironpaythonを使えば、楽に相互運用ができる。
880デフォルトの名無しさんsage2009/08/18(火) 17:25:17
>>879
paythonって何だよ
ironpaythonって何だよ
881デフォルトの名無しさんsage2009/08/18(火) 17:36:43
試しにググったらここのPart42が引っかかったw
882デフォルトの名無しさんsage2009/08/18(火) 20:44:15
SORP?
883デフォルトの名無しさんsage2009/08/18(火) 20:46:14
>>879
アイロンペイソンってサーバーで動かすPaythonスクリプトにもなれるの?
884デフォルトの名無しさんsage2009/08/18(火) 21:22:55
おまえらペイトホンも知らねーのかよ。

>>870
マジレスしようと何度か読み直してみたがさっぱり意味が解らない。
とりあえず質問の内容は最後の2行のみ?
で、ブロックしそうなのはクライアント側?サーバ側?
っつか多分日本語でやりとりしてもらちがあかなそう。簡単なソース出して
これはおk?ってやった方が、キミとは上手くやっていけそうな気がする。
885デフォルトの名無しさんsage2009/08/18(火) 21:53:42
boid mein() {
}

とかってコード期待w
886デフォルトの名無しさんsage2009/08/18(火) 22:35:00
>>869
亀だが・・・

64M程度ならドトネトでは普通じゃないかと思う
結局メモリ量は予約領域でもあるはずだから純粋に使用しているメモリというわけではないだろうし
887870sage2009/08/18(火) 23:54:18
>>884
ソースをさらします。
サーバーがRunScriptというパケットを受け取ると実行される
void talk()
{
Thread t = new Thread(executeScript);
t.Start(this.remoteip);
}
private void executeScript(object data)
{
PythonEngine pe = new PythonEngine();
pe.deliverVarible("_self", this);
pe.deliverVarible("_target", target);
pe.deliverVarible("_remoteip", (string)data);
pe.execute("foo.py");
}
//リモートIPとManualResetEventが対になってる
static Dictionary ManualEvent = new Dictionary();
//foo.pyがwaitForSignalを実行すると呼び出させる
public void waitForSignal()
{
if (remoteip == null) return;
ManualEvent[remoteip].Reset();
ManualEvent[remoteip].WaitOne(Globals.script_wait_time);
}
//別スレッドから呼び出し
public void setSignal()
{
if (remoteip == null) return;
ManualEvent[remoteip].Set();
}
888870sage2009/08/18(火) 23:55:49
訂正
×//別スレッドから呼び出し
○//同じクライアントから特定のパケットを受け取ると呼び出される(パケットを受け取る部分は非同期ソケットを使ってます)
889デフォルトの名無しさんsage2009/08/19(水) 00:08:34
Directory.Delete("パス",true);
これに64Mはありえない。それからgen2は回収に何度か失敗している領域。
現在使用中かつ長い間確保されている可能性が高い。

とまぁ、レスの情報と自分の経験からの推測な訳です。はい。
本当に64Mが適正か否かは>>837氏のみが知る所でしょう。
890デフォルトの名無しさんsage2009/08/19(水) 19:00:23
質問です

今ちょっと頼まれて
テキストボックスとボタンのフォームだけがあります。
そしてそれに必須入力チェック、桁数チェック、書式チェックと言う条件を作らないといけないのですが

当方初心者でまるでわかりません。

まず、True,Falseの場合に出すメッセージボックスを作ります。
そしてIF文でどっちに行くかを条件付けるんですが
どのようにして記述していけばいいのでしょうか・・・・
891デフォルトの名無しさんsage2009/08/19(水) 21:30:38
ググれ
892デフォルトの名無しさんsage2009/08/19(水) 21:31:42
初心者向けの本でも買え。
893デフォルトの名無しさんsage2009/08/19(水) 21:53:52
カスどもありがとう助かったわ
894デフォルトの名無しさん2009/08/19(水) 22:19:58
タブコントロールのタブなしってあるの?
アクセスではあるらしいね。
895デフォルトの名無しさんsage2009/08/19(水) 22:34:11
フラットスタイルじゃなくて?
896デフォルトの名しさんsage2009/08/19(水) 22:46:10
ふらっとの方でもたずねたのですが、返事がないので
C#を始めて1年くらいで、2Dグラフィック周りを主にやってます。
最近、JAVAプログラムのオープンソフトでJDrafter(hhp://jdrafter.com/)とい
うソフトを発見したのですが、 このソフトは、イラレ感覚で2Dグラフィックを作成し、Javaの
オブジェクトとして保存できるため、Javaプログラムからの表示やアニメーションなどにも応
用できるようなのですが、 どなたか、C#でこんなプログラムをご存知の方いないでしょうか。
もしくは、オープンソフトなので、描画周りのクラスをC#に変換して利用できないか考え
ているところですが、どなたかその方法やこれに適したjava→C#変換ツールをご存知
の方があれば、ご教授をお願いします。
897デフォルトの名無しさんsage2009/08/19(水) 22:54:20
何文字目?
898デフォルトの名無しさんsage2009/08/19(水) 22:55:30
Java使えよ
899デフォルトの名無しさんsage2009/08/19(水) 22:56:59
つJ#
900デフォルトの名無しさん2009/08/19(水) 22:59:36
>>895
フラットスタイル…
C♯にあるの?
901デフォルトの名しさんsage2009/08/19(水) 22:59:48
>>898
javaに変えてもいいのですが、今までの資産や、C#の将来性を考えると簡単に
は決断できません。
ググってもみましたが、どうしてもわからないのでお尋ねしているところです。
902デフォルトの名無しさんsage2009/08/19(水) 23:01:03
つか xaml に変換できるもの、Expression とかがまさにそのまま
イラレ感覚がいいんならイラレ -> xaml のエクスポータ使えばー
903デフォルトの名しさんsage2009/08/19(水) 23:17:21
>>902
ありがとうございました。
xamlテクノロジーは始めて知りました。(勉強不足ですみません。)
xamlについて調べて、フリーの(金がないので) ツールなんかがない
かいググります。どうもありがとうございました。
904デフォルトの名無しさんsage2009/08/19(水) 23:36:49
イラレってxaml生成できんのか。おどろいた。
905デフォルトの名無しさんsage2009/08/19(水) 23:49:29
XPSじゃねーのと思って調べたらほんとにXAMLだった
906デフォルトの名無しさんsage2009/08/20(木) 00:11:20
イラレ10でも出力できますか?
907デフォルトの名無しさんsage2009/08/20(木) 00:59:00
プラグイン形式のやつはCS以降じゃないと無理なんじゃないかな?
Photoshop(.psd)やIllustrator(.ai)を直接取り込めるようになったBlend 3を使うのが楽だとは思うけど↓みたいなのもある。

XamlXporter for Illustrator
http://www.codeplex.com/Wiki/View.aspx?ProjectName=xamlxporter

>>903
Inkscapeがオススメ。日本語化されてて標準でXAML出力に対応してる。
908デフォルトの名無しさんsage2009/08/20(木) 02:14:50
(´・∀・`)ヘー
909デフォルトの名無しさん2009/08/20(木) 06:44:32
イラレでコントロールを作成してWPFコントロールにすることは可能なの?
910デフォルトの名無しさんsage2009/08/20(木) 07:02:50
仮にCanvasしか吐けなくても好きなルート要素で囲んでやるだけで
ユーザーコントロールでもコントロールテンプレートでも作れるはず
911デフォルトの名無しさんsage2009/08/20(木) 08:27:03
へーへーへー
912デフォルトの名無しさん2009/08/20(木) 11:35:37
すいません。教えてくらはい。

VS2008のプロジェクトに*.iniファイルを含めて
プロジェクト出力として一緒に出力したいのですが、
クラスライブラリプロジェクトの場合うまくいきません。

これは仕様でなんでしょうか?

<<設定例>>
ファイルプロパティ
 ビルドアクション:コンテンツ
 出力ディレクトリにコピー:常にコピー
913デフォルトの名無しさんsage2009/08/20(木) 11:56:20

質問ですが、遅延バインディングにてExcelの単一セルの中に入っている情報を取り出すにはどうすればよいでしょうか?
遅延バインディング レイトバインディング 実行時バインディング いろんな呼び方がありますね。

http://www6.atwiki.jp/we_hate_sunshine/pages/73.html にありましたコードの一部を参照させていただいております。

// セルデータを2次元配列にいっぺんに読み込みます。
objRange_Late = objSheet_Late.GetType().InvokeMember("UsedRange", BindingFlags.GetProperty, null, objSheet_Late, null);
Object[,] tmpTable;
tmpTable = (System.Object[,])(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null));

↑上記コードはうまくいったのですが、
単一のセルを指定し(Rangeを使うのだと思います)そのセル内のデータを取得する方法がわかりません。

やりたいこと 例)
A1セル「hoge」 の文字列hogeを取得したいです。

試しに書いたコード(実行時にエラーが出たのでできませんでしたが)を乗せておきます。

parameters = new Object[] { "A1",Missing.Value };
objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, parameters);
Object tmpTable = new object[1];
tmpTable = (System.Object[,])(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null));

こういう雰囲気でいけそうな気がするのですが、わかりません。よろしくお願いします。
914デフォルトの名無しさん2009/08/20(木) 18:43:57
Webサーバ機能を、作ってるアプリに付けたいのですが、
単一ループ内でkeep-aliveを処理できるお手軽なアプローチ無いでしょうか?


// listner起動

while (true)
{
 // Context取得 (ブロック)

 // Request処理

 // Response処理

 if (Connection == close)
 {
   break;
 }
}

と言う様な処理を行い、
要は、ソケットの接続〜切断のモデルと近似にしたいのです。

理由は、データ管理や前回のリクエスト/レスポンスに強く依存した処理の為、簡単に回したいと言う感じです。

アドバイスと慈悲を下さい。
915デフォルトの名無しさんsage2009/08/20(木) 18:52:23
>>912
プロジェクト出力ってセットアッププロジェクトの話?
セットアッププロジェクトでDLLだけ配布するの?

>>914
プロトコルに何使うのさ

>>913
Excelの質問には答えられないけど、エラーの内容ぐらい書いた方がいいんでないか
916デフォルトの名無しさんsage2009/08/20(木) 18:55:59
>>915
httpです
917デフォルトの名無しさんsage2009/08/20(木) 20:16:18
>>916
HTTP で keep-alive でのみセッションが維持されるなんて
仕様外の特殊な事考えたりしてるなら
独自プロトコルでやった方がいい
918デフォルトの名無しさんsage2009/08/20(木) 22:27:31
前回のリクエスト/レスポンスに強く依存した処理ってviewstateじゃだめなん?
919デフォルトの名無しさんsage2009/08/20(木) 22:37:11
>>914
つまりソケットの接続〜切断のモデルと同じなんじゃね?
ソケットつかえばおk
920デフォルトの名無しさんsage2009/08/20(木) 23:46:05
.net 3.5、 WinXP VS2008、C#で開発しています。
開発するアプリケーションの利用環境は、Win2003、Win2008、WinVistaなどを想定している開発です。

質問します。
C#でファイル名の整合性を確認する関数はあるでしょうか?
ファイル名に使えない文字を取得する、System.IO.GetInvalidFileNameChars()は知っていますが、これだと
CON, PRN, AUX, CLOCK$, NUL COM0, COM1, COM2, COM3……
のような文字列を調べることができません。

また、開発環境こそWinXP Proなんですけれども、開発するアプリケーションは
クライアント・サーバ方式のアプリケーションで、クライアントからサーバにファイルを作成する形式のものです。

サーバはWin2003かWin2008、クライアントはWinVistaかWinXPです。
そうなってくると、いったんクライアントでファイルを作成して、実際に有効なファイル名かどうかを
確認する手段もOSの差を吸収できるかどうかに疑問が生じます。

このような場合、一体どのようにしてファイル名として有効な文字列かどうか判断したらよいか
教えてください。

お願いいたします。
921デフォルトの名無しさんsage2009/08/20(木) 23:48:30
最近C#をはじめました。ワケあってちょっと急いで基本を学ばなければなりません。
質問させていただきたいのですが、sqrtやsinなどの数学系の関数を使うとき
Math.Sqrt(2.0)
といちいちMath.をつけるのが(複雑な式をコーディングするときにMathだらけになる)
嫌なのですがこれを書かないでいいようにするにはどうしたらいいのでしょうか。
多分Console.WriteをWriteだけにしたいというのと同じ意味だと思いますが。
よろしくお願いいたします。
922920sage2009/08/20(木) 23:54:54
ごめんなさい、よく考えたら権限の問題とかもあるので、サーバ側でディレクトリ作ってみて、失敗するかどうかで判断したほうがよさそうです。

質問を取り消します。
923デフォルトの名無しさんsage2009/08/20(木) 23:56:21
>>921
Math.Sinを呼び出すだけのローカル関数でも作っとけば
924デフォルトの名無しさんsage2009/08/20(木) 23:56:42
>>919
開発効率が悪いからもっと便利なクラスを使いたいです
925デフォルトの名無しさんsage2009/08/20(木) 23:58:21
便利なクラスを作れ
926デフォルトの名無しさんsage2009/08/21(金) 00:00:06
static import は?と思ってしまった・・・orz
927デフォルトの名無しさんsage2009/08/21(金) 00:16:18
>>923>>925
それはそういうものなのですか。VC#で開発してるとあまりそういうことは
みんな面倒とは思わないためでしょうか?
いずれにせよ、手軽にできるわけではないんですね。ありがとうございました。
928デフォルトの名無しさんsage2009/08/21(金) 00:18:17
>>927
Math って書くのが普通。とくに面倒じゃないよ。
929デフォルトの名無しさん2009/08/21(金) 00:36:50
>>927
オブジェクト指向というのはそういうもの。
930デフォルトの名無しさんsage2009/08/21(金) 00:52:29
>>927
Math.Sinをコンパクトに記述することを考えるより、
式そのものを簡単にすることをまず考えるべきだろうね。

数学の数式だって同じだと思うけど、式が複雑だっていうなら
いくつかの部分に分けて部分ごとに一時変数に入れるとかね。

まあ数式の場合と違って、数値計算の場合は演算誤差に対する配慮は
必要になるけど。
931デフォルトの名無しさんsage2009/08/21(金) 01:25:51
using使えば
932デフォルトの名無しさんsage2009/08/21(金) 01:29:53
Func sin = Math.Sin;
とかできねーの?
933デフォルトの名無しさんsage2009/08/21(金) 01:30:22
>>927
VC#っていうか、フレームワークの関数がいくつあると思ってるん?
全部一発で書けるようトップレベルに置いたらとんでもないことになる。
Mathだけ特別扱いなんて出来ないよ。
934デフォルトの名無しさんsage2009/08/21(金) 01:37:07
>>927
そういうのは学生のうちに卒業しよう。
プロジェクトメンバーが迷惑するから。
935デフォルトの名無しさんsage2009/08/21(金) 01:41:10
>>932
できるよ
936デフォルトの名無しさんsage2009/08/21(金) 01:44:44
>927 うるせーよ
937デフォルトの名無しさんsage2009/08/21(金) 02:17:22
普段使わない関数がIntelliSenseでわらわら出られたらよっぽど面倒だわね
938デフォルトの名無しさんsage2009/08/21(金) 06:34:37
ExpressionTree使え
939デフォルトの名無しさんsage2009/08/21(金) 07:35:53
>>927
その書き方だと「面倒だなぁ……。よくみんな我慢してるよなw」って考えてるみたいだが、
こうやって分類されている方が、長い目で見れば便利なんだ。
このめんどくささはむしろ必要なめんどくささ。いずれわかるよ。
940デフォルトの名無しさんsage2009/08/21(金) 07:36:37
>>932
Math.を省略したくなるような状況でそんなことしたら遅くなるからやめれ
941デフォルトの名無しさんsage2009/08/21(金) 08:03:24
コードを書くときには面倒かもしれないけど
コードを読むときには何してるかわかるからいいと思うんだが。
というか実際のところたいした手間じゃないだろう。
942デフォルトの名無しさんsage2009/08/21(金) 08:07:18
>>939がもっともだと思う
943デフォルトの名無しさんsage2009/08/21(金) 08:47:45
F#でかけばMath.とか書かずにすむお
944>>913sage2009/08/21(金) 10:39:22
>>913です。
自己解決したので解決方法を。

parameters = new Object[] { "A1" };
objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, parameters);
Object tmpTable = new object[1];
→tmpTable = (System.Object[])(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null));

// 「→」行部分実行時に Error:型'System.String'オブジェクトを型'System.Object[]'にキャストできません のエラー

parameters = new Object[] { "A1" };
objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, parameters);
String str = string.Empty;
str = (System.String)(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null));

MessageBox.Show(str);

無事A1セルに入力されていたValueを取得することができました。
無駄にキャストしていたことが問題だったのですね。エラーみろよっていってくれた>>915さんどうもです。
945デフォルトの名無しさんsage2009/08/21(金) 16:47:03
Double型をString型に変換する方法を教えていただけませんか?
946デフォルトの名無しさんsage2009/08/21(金) 16:53:59
ToString
947デフォルトの名無しさんsage2009/08/21(金) 17:43:13
>>946
ありがとうございます。>>945です
doubleを無理やりstring型にキャストしようとしてました^^;
948デフォルトの名無しさんsage2009/08/21(金) 17:44:05
キャストの意味を勉強しなおそう
949デフォルトの名無しさん2009/08/21(金) 17:51:22
DataGrid へ適当なクラスリストのバインドを考えています。
ただ、表示対象は対象クラスが保持するプロパティの一つに限定したいです。
後々にDataGrid から SelectedItems として、バインドしたクラスのデータを取得を考えます。

ここで、クラスをそのまま ItemsSource へ突っ込むと、クラス名が表示されてしまいます。
こういった場合、特に二行目の部分ではどんな風にすれば対象プロパティのみ表示可能でしょうか。

よろしくおねがいします。
950デフォルトの名無しさんsage2009/08/21(金) 18:04:56
全体に意味が分からんが、まずそれはWPFか?
951デフォルトの名無しさんsage2009/08/21(金) 18:07:19
>>949
>ここで、クラスをそのまま ItemsSource へ突っ込むと、クラス名が表示されてしまいます。
ここで、クラスをそのまま ItemsSource へ突っ込むと、突っ込んだリスト中のクラスが保持するメンバクラスの名前、でした。

class hoge
{
public int m_hoge;
public foo m_foo;
}

class foo
{

で言う foo です。

m_hoge | m_foo
------+------
 2   | m_foo
 2   | m_foo
 3   | m_foo
 4   | m_foo
952デフォルトの名無しさんsage2009/08/21(金) 18:10:29
>>950
WPF というか、 Silverlight でやってます。



>>951 では途中で送信してしまったので、続きです。

class foo
{
public int m_x;
public int m_y;
}

ここで、 foo というクラス名ではなく、数字の x を出力したい。
953デフォルトの名無しさんsage2009/08/21(金) 18:10:59
パブリックプロパティ用意すりゃいい
954デフォルトの名無しさんsage2009/08/21(金) 18:18:24
XAML側でどのプロパティを表示するかの指定があったはず−。
それにしてもpublicなフィールドでm_って気持ち悪い命名規則だね。
955デフォルトの名無しさん2009/08/21(金) 18:27:16
>>954
ありがとうございますっ!
そういうのを探していました。
とても助かりました。
956デフォルトの名無しさんsage2009/08/21(金) 18:51:19
アクセサを使いましょう
957デフォルトの名無しさんsage2009/08/21(金) 18:53:43
XAMLのバインディングってわかりづらいよね
もとより人間が書くものじゃないんだろうけど
958デフォルトの名無しさんsage2009/08/21(金) 19:01:24
>>956
アクセサって get とか set ですよね?
XAML と合わせて検索しても、どうにも分らないです。
すみません。

バインディングの記述に利用する識別子でしょうか?

>>957
未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。
慣れの問題でしょうか……。
959デフォルトの名無しさんsage2009/08/21(金) 19:20:53
BindingのPathは . 使ってプロパティのプロパティを指すこともできる
つかフィールドってバインディングできたっけ? プロパティじゃないとダメな気が

> 未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。
XAMLに記述するのはViewModelのクラスのだから問題ない
960デフォルトの名無しさんsage2009/08/21(金) 19:23:48
>>942
>>927の考えは>>939やチミが勝手に心配しているような意味じゃないと思うぞw
別にクラスの中にしかメソッドが存在できないのがウザい、
というような意味のことは言ってないだろう。

っていうか、複雑な計算式をベタにコーディングしたら
>>927のように思うのはむしろ普通のこと。
実際見難くくてかなわんよ。

だから>>930のようにアドバイスするのが正しい。

しかし、今に始まったことじゃないけど本当シロートがシロートに講釈垂れる
図式が多すぎるなここ。
961デフォルトの名無しさんsage2009/08/21(金) 20:55:24
>> 未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。
>XAMLに記述するのはViewModelのクラスのだから問題ない
どうにもバインディングを勘違いしていました。
特に制約無く作ったデータでもバインディングは行えるものとして考えていました。
バインディングは特定のインタフェースを実装したクラスしか不可能なのですね。
962デフォルトの名無しさんsage2009/08/21(金) 21:01:05
>>961
>バインディングは特定のインタフェースを実装したクラスしか不可能なのですね。
違う。
設計の問題で、バインディング自体にそういう制限は無い。
963デフォルトの名無しさんsage2009/08/22(土) 00:13:55
>>960
このレベルの自分で頭使わないで文句言うタイプには「黙って書いとけ」が正しい。
964デフォルトの名無しさんsage2009/08/22(土) 00:39:36
""(空文字列)との比較は以下のどれがいいですか?
それぞれのメリット・デメリットを教えてください。

str.Equals("")
String.Equals(str, "")
str == ""
srt.Length == 0
"".Equals(str)
965デフォルトの名無しさんsage2009/08/22(土) 00:45:34
個人的には3
他は4以外objectで比較できちゃう
14はstrがnullのときを考慮しないといけない

でも大体はString.IsNullOrEmptyで片付けるかな
966デフォルトの名無しさんsage2009/08/22(土) 00:46:47
あくまで個人的な意見だけど。
俺は「str==""」が一番シンプルかつ直感的でいいと思うね。

1. 参照アドレスの比較と差別化するという意味合いはご尤もだが…。ここまでする必要あるかなぁ。
2. 冗長。
4. 使う場面による。文字列自体に着目した流れで来てるのか、
  文字列の長さに着目した流れで来てるのか、というのが判断基準。
5. これは逆。どういう意図でこう書くんだろう。
967デフォルトの名無しさんsage2009/08/22(土) 00:58:15
5の書き方はJavaかなんかでこうするのがイイ
みたいなのがどっかに載ってた気がする(そして当然叩かれてた)

C#だと3かIsNullOrEmptyだよね。
968デフォルトの名無しさんsage2009/08/22(土) 01:05:59
fxcopにIsNullOrEmpty使えっていわれたような
969デフォルトの名無しさんsage2009/08/22(土) 01:14:50
C#の世界でも割と「==使うなEquals()使え」っていう教条主義的意見は
見かけるね。

というか、俺の見解では、そもそも==がデフォで参照等価の検査なのが直感的じゃない。
少なくともこれに関してはVBの方がまともに感じる。
つまり、参照等価の検査用には別の演算子を導入することにして、==の方は
値等価用にオーバーロードしないと使えない方が分かりやすい。

まあそれを言うと、そもそもC由来の=と==からして逆なんじゃないのかとも思うが…
970デフォルトの名無しさんsage2009/08/22(土) 01:34:35
しかし値の同一性ってのはデフォで定義できない
971デフォルトの名無しさんsage2009/08/22(土) 01:40:47
str == string.Empty
972デフォルトの名無しさんsage2009/08/22(土) 01:42:52
IsNullOrEmpty 派です。
973デフォルトの名無しさんsage2009/08/22(土) 02:14:56
>>966
>5. これは逆。どういう意図でこう書くんだろう。
これはリテラルのequals()呼び出しだから、コンパイラが最適化してくれる
可能性がある、という説明で自分は納得した。
実際のところ本当かは検証したわけじゃないけど、どう再定義してるかわか
んないstrのequals()を呼び出すよりは速い可能性があるというだけで充分
に意味はあると考えてる。
974デフォルトの名無しさんsage2009/08/22(土) 02:22:55
Javaでの話だけど、str.equals("")だとstrがnullのときにぬるぽの例外になるので、
"".equals(str)がいいんだって言っていた。
でも、まともな意見の人は"".equals(str)に否定的な人が多いという印象。
975デフォルトの名無しさんsage2009/08/22(土) 02:25:37
君の印象ではなく「まともな意見」でどう否定したかが重要。
976デフォルトの名無しさんsage2009/08/22(土) 02:29:39
つか str.Equals("") とほぼ等価でかつ str が null でも大丈夫だから
だろ。2 と 3 がほぼ同じ意味であることを除けば他は意味とか前提が
色々微妙に違う
977デフォルトの名無しさんsage2009/08/22(土) 02:57:02
class Tuple{ T1 _t1,T2 _t2}(アクセッサとか省略)みたいな奴で
Tuple tuple1,tuple2の比較したいときに、class でなくstructなら_t1,_t2が各々==でtrueの時tuple1==tuple2になるんだっけ?
classでEqualsとかoverrideするのめんどくさいよ(´д`)ママン…
属性とかの指定一発でやってくれ・・・
978デフォルトの名無しさんsage2009/08/22(土) 03:46:49
>>964
俺も>>971と同じ書き方するな。
でも null と空文字列で特別に違う意味がなければ IsNullOrEmpty を使う。
979デフォルトの名無しさんsage2009/08/22(土) 05:58:42
str.Equals(string.Empty)か
String.Equals(str,stringEmpty)
だな。

javaと違って参照でも'=='が使えるのは知ってるんだけどね。
980デフォルトの名無しさんsage2009/08/22(土) 06:46:21
String以外にも話を展開してみる。

Equalsはタイプセーフではない。
Equalsをoverrideするなら==、!=もoverrideしなければならない。
a.Equals(b)はnullチェックが面倒なので、Object.Equals(a,b)が有効。
981デフォルトの名無しさんsage2009/08/22(土) 06:50:49
タイプセーフでないというのは事実だけど、型を意識しないで比較するのは個人的にはなしだ。
ライブラリ製作者と使用者で意見が食い違うところか。
982デフォルトの名無しさんsage2009/08/22(土) 07:22:05
10.0と10は違うのか?→時と場合と人による
"a"と'a'は違うのか?→〃
10と10は違うのか?→〃

しかし”参照”としての比較はドメインが”参照”に固定されているので混乱しない
値の比較はドメインが固定できないので混乱する
値の比較であーだこーだ言っていてもはじまらね
983デフォルトの名無しさんsage2009/08/22(土) 07:35:17
>>968はこれか
http://msdn.microsoft.com/ja-jp/library/ms182279.aspx

それはそうと次スレは?
984デフォルトの名無しさんsage2009/08/22(土) 08:59:39
>>980
>タイプセーフではない。(
値型以外では使うことはまずないけど
IEquatable.Equals(T o)
>Equalsをoverrideするなら==、!=もoverrideしなければならない。 
Stringのようにimutableでない限りは==や!=演算子のoverrideはするべきではない。
985デフォルトの名無しさんsage2009/08/22(土) 11:02:53
なんで
986デフォルトの名無しさんsage2009/08/22(土) 12:31:41
次ぎたててくる
987デフォルトの名無しさんsage2009/08/22(土) 12:34:22
C#, C♯, C#相談室 Part54
http://pc12.2ch.net/test/read.cgi/tech//

はい
988デフォルトの名無しさんsage2009/08/22(土) 12:44:02
>>987
^^
989デフォルトの名無しさんsage2009/08/22(土) 13:00:55
.NET 4では2.0の部分のパフォーマンスの向上とかあるのかな?
990デフォルトの名無しさんsage2009/08/22(土) 13:09:55
BCL部分はC#4.0などにあわせて確実に手が入るけど
WinFormsはどうせ放置だろ
991デフォルトの名無しさんsage2009/08/22(土) 13:36:55
>WinFormsはどうせ放置だろ
せっかく枯れてきたのに手を入れられてもねぇ…
992デフォルトの名無しさんsage2009/08/22(土) 13:40:42
2005以降に追加されたコントロールのバグはしっかり直してくれないと
困ると思うけど…

toolstrip関連はバグ多過ぎなんだよ本当。
993デフォルトの名無しさんsage2009/08/22(土) 16:49:17
うんこが枯れたところでしょうがないけど。
994デフォルトの名無しさんsage2009/08/22(土) 17:41:23
現実見れよ
995デフォルトの名無しさんsage2009/08/22(土) 17:55:11
早く現実から目を逸らさないと!
996デフォルトの名無しさんsage2009/08/22(土) 17:59:18
現実見たらおなかすいた
997デフォルトの名無しさんsage2009/08/22(土) 18:08:11
今恐竜番組見ながら飯食い終わった俺に死角はなかった。
998デフォルトの名無しさんsage2009/08/22(土) 18:58:16
恐竜惑星とな。

……見間違えか。
999デフォルトの名無しさんsage2009/08/22(土) 19:35:32
うめ
1000デフォルトの名無しさんsage2009/08/22(土) 19:36:23
次スレ
C#, C♯, C#相談室 Part54
http://pc12.2ch.net/test/read.cgi/tech//
10011001Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
 224KB (229598Byte)
dummy_for_searchRef

DAT2HTML 0.32g Converted.