C#, C♯, C#相談室 Part53
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/06/16(火) 20:11:11前スレ
C#, C♯, C#相談室 Part52
http://pc12.2ch.net/test/read.cgi/tech/1238548552/
Visual C# 2008 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
その他テンプレ>>2-5くらい
0002デフォルトの名無しさん
2009/06/16(火) 20:12:16ふらっとC#,C♯,C#(初心者用) Part41
http://pc12.2ch.net/test/read.cgi/tech/1244259018/
Visual Studio 2008 Part 15
http://pc12.2ch.net/test/read.cgi/tech/1233853864/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
http://pc12.2ch.net/test/read.cgi/tech/1231506876/
【VB.NET】LINQ友の会【C#, C♯, C#】
http://pc12.2ch.net/test/read.cgi/tech/1202568694/
C#,C#の宿題片付けます。
http://pc12.2ch.net/test/read.cgi/tech/1197620454/
0003デフォルトの名無しさん
2009/06/16(火) 20:12:26ふらっとC#,C♯,C#(初心者用) Part41
http://pc12.2ch.net/test/read.cgi/tech/1244259018/
Visual Studio 2008 Part 16
http://pc12.2ch.net/test/read.cgi/tech/1238941772/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
http://pc12.2ch.net/test/read.cgi/tech/1231506876/
【VB.NET】LINQ友の会【C#, C♯, C#】
http://pc12.2ch.net/test/read.cgi/tech/1202568694/
C#,C#の宿題片付けます。
http://pc12.2ch.net/test/read.cgi/tech/1197620454/
0004デフォルトの名無しさん
2009/06/16(火) 20:13:00MSDNライブラリ
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/
0005デフォルトの名無しさん
2009/06/16(火) 20:13:16あーあ
VS2008スレが古いよ
0006デフォルトの名無しさん
2009/06/16(火) 20:13:280007デフォルトの名無しさん
2009/06/16(火) 20:13:44初歩的な質問は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
0008デフォルトの名無しさん
2009/06/16(火) 20:16:40乙
0009デフォルトの名無しさん
2009/06/16(火) 20:24:00が懐かしく思える
0010デフォルトの名無しさん
2009/06/16(火) 20:37:11>みなさんはデリゲートばりばりですか
>現場であまり使う機会がないですがみなさんどうですか
使いまくりです。デリゲート、イベント、ラムダ式等々。
余計なクラス拡張しないですんだり、そもそもクラス自体作らずに寸でよい感じ
0011デフォルトの名無しさん
2009/06/16(火) 20:38:40まぁ、俺はJava使いだけど、仕事で色々な言語触るようになってから、
使いやすいもん使えばいい、という感じになってきたな。
開発環境も言語も新しいもんがポンポン出てるし、あまりこだわりすぎると芸の幅を狭める。
0012デフォルトの名無しさん
2009/06/16(火) 20:54:280013デフォルトの名無しさん
2009/06/16(火) 20:58:380014デフォルトの名無しさん
2009/06/16(火) 21:00:53周辺技術だらけのjavaとは違ってMS技術だけ覚えりゃ使えるから使うのは簡単
0015デフォルトの名無しさん
2009/06/16(火) 22:07:28作れるようになるまでに必要な勉強期間はJAVAと
比べてどうなの?
0016デフォルトの名無しさん
2009/06/16(火) 22:09:18ちょっと色々やろうとしたら大差なくならんかね?
DIとかO/Rマッピングとか
0017デフォルトの名無しさん
2009/06/16(火) 22:11:130からやる人にとってはC#つかドトネトが圧倒的。
UI付きで動くから物作ってる感が全然違う。
0018デフォルトの名無しさん
2009/06/16(火) 22:23:30button.height=100;
VisualStudioなら
これを実行する前からフォームの概観がわかるが
VSないならいちいち実効しなきゃわからん!不便!
0019デフォルトの名無しさん
2009/06/16(火) 22:56:190020デフォルトの名無しさん
2009/06/16(火) 22:57:230021デフォルトの名無しさん
2009/06/16(火) 22:58:360022デフォルトの名無しさん
2009/06/16(火) 23:12:17MSの後出しじゃんけんは最強。
0023デフォルトの名無しさん
2009/06/16(火) 23:17:020024デフォルトの名無しさん
2009/06/16(火) 23:20:050025デフォルトの名無しさん
2009/06/17(水) 00:05:490026デフォルトの名無しさん
2009/06/17(水) 00:18:280027デフォルトの名無しさん
2009/06/17(水) 01:06:07002819です
2009/06/17(水) 01:09:24class MyTextBox : TextBox {
public void SetFontHeight(int height) {
this.FontHeight = height;
}
}
class Hoge {
meTextBox1.SetFontHeight(20);
}
というクラスで行間の変更が可能だと見つけたのですが、
このテキストボックスをフォームに表示させるにはどうすればよいのでしょうか?
Desiner.csを直接編集するのでしょうか?
0029デフォルトの名無しさん
2009/06/17(水) 01:16:54publicなクラスじゃないとダメかも知れんが
FontHeightの解説のメモに勝手な数字入れんなって書いてるけど
003019です
2009/06/17(水) 01:58:44しかし
class Hoge {
MyTextBox1.SetFontHeight(20);
}
の”(”の部分で無効なトークン '(' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。
とでてきてしまいます・・・・
>FontHeightの解説のメモに勝手な数字入れんなって書いてるけど
あぁそうなのですか・・・・
0031デフォルトの名無しさん
2009/06/17(水) 02:14:120032デフォルトの名無しさん
2009/06/17(水) 07:53:37こんな感じでおk
ちなみにそのコードのMyとその前の空白が全角だぞ
class Hoge {
Hoge(){
MyTextBox1.SetFontHeight(20);
}
}
0033デフォルトの名無しさん
2009/06/17(水) 09:32:54初期は確かにまねだったが、今はもうまるで別物と化している
ここにきて同系統の言語とは思えない。
0034デフォルトの名無しさん
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);
指定した座標どころか、タイトルバーの無いダイアログとして表示されてしまいます。
他に何が足りないのでしょうか?
0035デフォルトの名無しさん
2009/06/17(水) 13:07:30張り付けるときにはデザイナが使えるからコードは不要
0036デフォルトの名無しさん
2009/06/17(水) 13:07:56タイトルバーはFormBorderStyleあたりが影響するが
0037デフォルトの名無しさん
2009/06/17(水) 17:55:52KeyDataとKeyCodeってどう違うの?
ボタンを押されたら何かするってので
Form1_keydown(object sender,KeyEventArgs e)
{
if(e.KeyCode==keys.Escape)
これと
if(e.KeyData==Keys.Escape)
これが同じ動きなんだけど。
まったく同じものを二つも用意する意味がないから
何か違うんだろうけどHelpみても違いわからない。
誰か教えて
0038デフォルトの名無しさん
2009/06/17(水) 18:00:330039デフォルトの名無しさん
2009/06/17(水) 21:17:39HTMLに出てくるこういう文字列をデコードするメソッドってありますか?
0040デフォルトの名無しさん
2009/06/17(水) 21:19:55004139
2009/06/17(水) 21:20:56文字参照をデコードする方法です
0042デフォルトの名無しさん
2009/06/17(水) 21:22:140043デフォルトの名無しさん
2009/06/17(水) 21:24:55004419です
2009/06/18(木) 00:25:25class Hoge {
Hoge(){
MyTextBox1.SetFontHeight(20);
}
}
とさせていただいたのですが、MyTextBox1がコンテキスト内に存在しません。と
エラーになってしまいます。クラスの継承などよく理解していない、ながらに質問してしまってすいません。
対処というか何が問題なのかすらわかりません。
よろしければ、どなたかヒントくださいませ。
0045デフォルトの名無しさん
2009/06/18(木) 00:34:10Form1に貼り付けてLoadイベントとかで設定するもんでしょ
0046デフォルトの名無しさん
2009/06/18(木) 02:37:540047デフォルトの名無しさん
2009/06/18(木) 03:58:500048デフォルトの名無しさん
2009/06/18(木) 08:07:560049デフォルトの名無しさん
2009/06/18(木) 08:23:220050デフォルトの名無しさん
2009/06/18(木) 08:44:240051デフォルトの名無しさん
2009/06/18(木) 08:49:200052デフォルトの名無しさん
2009/06/18(木) 10:56:17Hoge,Hehe,Gege
foo,bar,baz
くらいかな、サンプルで何でも良い何かを表すときだけしかつかわないし
0053デフォルトの名無しさん
2009/06/18(木) 14:17:030054デフォルトの名無しさん
2009/06/19(金) 00:43:090055デフォルトの名無しさん
2009/06/19(金) 00:49:22すぐ消すか、後からリネームする変数限定だけど。
0056デフォルトの名無しさん
2009/06/19(金) 01:07:050057デフォルトの名無しさん
2009/06/19(金) 01:09:240058デフォルトの名無しさん
2009/06/19(金) 08:05:02後で見て分からなくなるぜ
0059デフォルトの名無しさん
2009/06/19(金) 19:03:270060デフォルトの名無しさん
2009/06/19(金) 22:33:17いうわけではない。一応。
0061デフォルトの名無しさん
2009/06/20(土) 00:39:290062デフォルトの名無しさん
2009/06/20(土) 00:46:120063デフォルトの名無しさん
2009/06/20(土) 00:53:47Hogeは「意味が無い」と言う意味であれば、何かに使った時点で
その何かの意味を持つので、使うこと自体が間違いである
0064デフォルトの名無しさん
2009/06/20(土) 01:13:54http://eow.alc.co.jp/hoge/UTF-8/
0065デフォルトの名無しさん
2009/06/20(土) 01:14:460066デフォルトの名無しさん
2009/06/20(土) 01:21:400067デフォルトの名無しさん
2009/06/20(土) 10:21:070068デフォルトの名無しさん
2009/06/20(土) 10:22:090069デフォルトの名無しさん
2009/06/20(土) 13:30:34適当な名前をつけると意味があるように見えて混乱するので、
変数名に意味がないことを示して気に留めるなってことを示す
名前だから「適当な名前」じゃないよって話。
本来それを否定するものだから。メタ構文変数。
実コーディングに使うな(実コードで意味がないものなどないと
いう考え方)とかはまた別の話。
0070デフォルトの名無しさん
2009/06/20(土) 17:05:580071デフォルトの名無しさん
2009/06/21(日) 03:11:400072デフォルトの名無しさん
2009/06/21(日) 08:40:00そのテストプログラムが間違って配布されたら…ガクガクブルブル
うp wktk
0073デフォルトの名無しさん
2009/06/21(日) 09:22:24環境によっても左右されるんだな。
家のPCだと簡単な計算ならジャグ配列の方が速い時が多いのに、
全く同じコードを研究室のPCで実行すると多次元配列の方が圧倒的に速い。
この辺はJITコンパイラがまだまだだな。
0074デフォルトの名無しさん
2009/06/21(日) 09:36:490075デフォルトの名無しさん
2009/06/21(日) 13:40:160076デフォルトの名無しさん
2009/06/21(日) 15:04:45使いたいんですが名前がわからないので誰か知ってたら教えていただけますか。
0077デフォルトの名無しさん
2009/06/21(日) 15:07:45ListView……か?
0078デフォルトの名無しさん
2009/06/21(日) 15:08:41TreeView にチェックボックスつけたような感じ?
0079デフォルトの名無しさん
2009/06/21(日) 15:22:15http://118.82.122.42/download/bm_operation_movie.zip
にあるムービーの5分07秒の真ん中らへんにあるやつです。
0080デフォルトの名無しさん
2009/06/21(日) 15:29:00TreeViewという言葉が出てこないのはさすがにどうかと思う
0081デフォルトの名無しさん
2009/06/21(日) 15:37:170082デフォルトの名無しさん
2009/06/21(日) 15:53:25C#Builderならブレークポイントを掛けたら見れた
0083デフォルトの名無しさん
2009/06/21(日) 16:35:03JIT結果のよ?
MSIL コードじゃなくて、それをさらに JIT したネイティブのマシン語。
0084デフォルトの名無しさん
2009/06/21(日) 16:38:58テキストボックスに入力されているテキストとCheckedListBoxに追加した項目の名前を同期させたいと
思ってTextChangedで変更されてる瞬間にテキストを設定してるはずなのですがうまくいきません。
Refreshも最後にやったりしてるんですが変更されません。違う箇所で項目の名前の変更自体がうまく
いってないみたいなんですがどなたかわかりませんか?
0085デフォルトの名無しさん
2009/06/21(日) 16:42:42そうだよ
x86のネイティブコードとソースの混合画面が見られた
C#Builderもラインナップから消えちゃったけどね(´・ω・`)
0086デフォルトの名無しさん
2009/06/21(日) 16:44:27エディションによって見れないかどうかは知らんが
0087デフォルトの名無しさん
2009/06/21(日) 16:53:14TextChanged内のコード書いてみ
0088デフォルトの名無しさん
2009/06/21(日) 21:55:52ほんとかよ、ちょっと考えられないんだが。
0089デフォルトの名無しさん
2009/06/21(日) 22:12:20多次元ぽいけど。
0090デフォルトの名無しさん
2009/06/21(日) 22:15:420091デフォルトの名無しさん
2009/06/21(日) 22:21:30なんで?
0092デフォルトの名無しさん
2009/06/21(日) 22:30:54.NET の場合は1次元配列の場合にのみ専用の IL 命令持ってるせいで、
JIT 次第で多次元配列がジャグ配列より遅くなることも多々あるとか。
0093デフォルトの名無しさん
2009/06/22(月) 12:43:11途端にもの凄く重くなった。
VC++の時も貼り付けてたがこんなに重くならなかったんだが・・・
何か設定がまずいのかな?
ローカルリソースのインポートからjpg指定してるだけなんだけど・・・
プロジェクトリソースにしても余り変化は見られなかった。
どなたか軽くする方法知ってる方いたら教えて下され
0094デフォルトの名無しさん
2009/06/22(月) 17:16:560095デフォルトの名無しさん
2009/06/22(月) 17:35:130096デフォルトの名無しさん
2009/06/22(月) 17:41:240097デフォルトの名無しさん
2009/06/22(月) 17:49:40一つの大きな画像指定するとかすれば
0098デフォルトの名無しさん
2009/06/22(月) 18:04:38タイルはデフォなので、はずして試してみるといいかも。
0099デフォルトの名無しさん
2009/06/22(月) 18:44:37Stretchとかリッチな条件で貼ってない?
0100デフォルトの名無しさん
2009/06/22(月) 19:03:32元のサイズ次第で死ぬほど遅いね
0101デフォルトの名無しさん
2009/06/22(月) 21:47:510102デフォルトの名無しさん
2009/06/22(月) 22:14:27縮小してやってみます。
そんな大きくないんだけどなぁ
後、余り小さくてするとちょっとしたグロ画像になってまうかもw
0103デフォルトの名無しさん
2009/06/23(火) 19:13:42ですが、使用中のファイルの場合「このファイルは使用されています〜」
というエラーメッセージが表示されて選択できません。
回避策はあるでしょうか?
・・自分で作るしかない?
0104デフォルトの名無しさん
2009/06/23(火) 19:30:19http://msdn.microsoft.com/ja-jp/library/system.io.fileinfo_members.aspx
0105デフォルトの名無しさん
2009/06/23(火) 20:07:01プロパティにない以上OpenFileDialogクラスじゃどうしようもないね
0106デフォルトの名無しさん
2009/06/24(水) 18:54:22その系列はロビン電子経由で直接本人と面識ある派だと思う
0107デフォルトの名無しさん
2009/06/24(水) 19:17:01http://pc12.2ch.net/test/read.cgi/tech/1245836827/
ふらっとの新スレご案内
0108デフォルトの名無しさん
2009/06/25(木) 14:26:55そうなのかなぁ。
Hoge!さんから、メタ構文変数のhogeへの系譜(があるのか否か)って
まだ検証されてないよね。
0109デフォルトの名無しさん
2009/06/26(金) 22:37:12>>105
ありがとう。
どうしても解決できなかったのと、他の理由で
作る必要が出たので自作しときます。
0110デフォルトの名無しさん
2009/06/29(月) 19:37:54でアクセスするとアクセスした記録が残るのに
WebRequestなどでアクセスしてもninjaツールなどで
アクセス記録が表示されないのはなんでやろ?
0111デフォルトの名無しさん
2009/06/29(月) 19:47:590112デフォルトの名無しさん
2009/06/29(月) 20:21:450113デフォルトの名無しさん
2009/06/29(月) 20:31:310114デフォルトの名無しさん
2009/07/03(金) 15:52:52PDFのセキュリティ設定(コピー許可、印刷許可など)を読み取りできるライブラリを
どなたかご存じないですか?
アンテナハウスのサーバーベース・コンバーターはR/Wとあったからできそうですが、
たったそれだけのことに導入するのは辛すぎです。
0115デフォルトの名無しさん
2009/07/03(金) 18:51:12PDFはアドビが仕様書配布してるよん
0116デフォルトの名無しさん
2009/07/03(金) 20:50:41エディタのプロパティウィンドのように
DataGridViewに指定クラスのプロパティを
表示、編集することは出来るでしょうか?
DataTableを作って表示させることは出来ると
思いますが、できれば
Grid.DataSource = クラス
のように簡単にいかないものかと。
BindingSourceを使ってもうまくいきませんでした。
0117デフォルトの名無しさん
2009/07/03(金) 20:54:360118デフォルトの名無しさん
2009/07/03(金) 21:05:44ちょっと凝ったことしようとすると一気に難しくなるよねw
0119116
2009/07/03(金) 21:09:57どんぴしゃです!ありがとう!
C#って思った以上にいろいろ揃ってますねぇ
0120デフォルトの名無しさん
2009/07/03(金) 23:38:30中身はテキストベースだから、仕様書を精査すれば気合でパースできなくもない
Javaでいくつかライブラリあるから参考にしてみるのはどうか
0121デフォルトの名無しさん
2009/07/04(土) 00:33:17そもそもこんなものが標準のライブラリにあるのがおかしい
WPFでは無くなってるし
0122デフォルトの名無しさん
2009/07/04(土) 03:33:200123デフォルトの名無しさん
2009/07/04(土) 07:09:21SelectedObjectのpublicなプロパティを自動表示するとかの部分。
明らかにユーティリティであって、コントロールとしては度を越えている。
WPFでは無くなっているっていうより、まだまだ練れていないから、導入は
見送っているんじゃないかなMS。
0124デフォルトの名無しさん
2009/07/04(土) 07:59:50自動表示するから楽ちんなんじゃんw
カスタムしたければ好きなように隠せるし
存在しないプロパティをあるように見せたりも出来る
0125デフォルトの名無しさん
2009/07/04(土) 08:58:21リストとかグリッドがアホみたいに高機能化して
PropertyGridの存在意義がなくなったからだろ
リストやグリッドの子要素として「何でも」埋め込めるんだぜ
自動表示ってのもBindingでどんなデータにも紐付けられるし
0126デフォルトの名無しさん
2009/07/04(土) 09:37:02一般のユーザーに触らせるのは間違い
0127デフォルトの名無しさん
2009/07/04(土) 09:37:46やったことないからよくわからないけど
Acrobat SDK とか使えばできるんじゃないの。
Adobe Reader とかインストールされた環境が前提になるだろうけど。
0128デフォルトの名無しさん
2009/07/04(土) 11:35:32で型チェックしたらえらい速いんだけどJITで特別に最適化されてたりする?
左辺をいったんローカル変数に入れたら10倍くらい遅くなるみたい
0129デフォルトの名無しさん
2009/07/04(土) 11:38:45たぶんむり
セキュリティ絡みはAdobeの有料アプリ買わないと出来ない機能だし
どうやっても金払わないことには無理だろうね
0130デフォルトの名無しさん
2009/07/04(土) 15:46:22たんにプロパティみたいだけでしょ。
0131デフォルトの名無しさん
2009/07/04(土) 16:05:46ttp://www.ujihara.jp/iTextdotNET/ja/
これで出来そう
0132デフォルトの名無しさん
2009/07/04(土) 16:08:37ここに載ってるの確認すれば?
iTextSharpで全部できそうだけど(よく見てない)
0133デフォルトの名無しさん
2009/07/04(土) 16:54:20空文字だと??が使えなくなるから不便かな?
nullはnullで何か面倒なことになりそうな気もするし
0134デフォルトの名無しさん
2009/07/04(土) 17:51:24オブジェクトの操作ならnull
0135デフォルトの名無しさん
2009/07/04(土) 18:28:25確認してないけどコンパイル時に is に変えてるんじゃないの?
ローカル変数に入れちゃうと is に変換できないからとか
0136デフォルトの名無しさん
2009/07/04(土) 23:40:05動作が変わってしまうから。
変数に入れると遅くなるのはTypeの取得が走るからで、
何らかの方法でハンドルの比較だけに変えられてるとかか?
0137デフォルトの名無しさん
2009/07/04(土) 23:47:47こんな感じになってるとか。
0138デフォルトの名無しさん
2009/07/05(日) 08:14:140139114
2009/07/05(日) 08:19:35iTextSharpならTitleとAuthorの読み取りに使ったけど、
AllowCopy関連はWriteできるけどReadIがなかった(と思う)。
0140デフォルトの名無しさん
2009/07/06(月) 08:39:41どうにもとっつきにくいわ、冗長だわ、読みづらいわで使わずじまいなんだけど。
0141デフォルトの名無しさん
2009/07/06(月) 08:42:260142デフォルトの名無しさん
2009/07/06(月) 09:43:530143デフォルトの名無しさん
2009/07/06(月) 09:46:03あれは、メタデータに加工するためのものだから、読みづらい言われても…
0144デフォルトの名無しさん
2009/07/06(月) 11:08:37// 機能 : あんなことやこんなことを行う
//
// 機能説明 : あんなことやこんなことを行う。
// その中であんなことやこんなことが起きればあんなことやこんなことを行う。
//
// 引数 : ARG1 - あんなの
// ARG2 - こんなの
//
// 返り値 : そんなの
//
// 備考 : 簡単なサンプルです。
//
0145デフォルトの名無しさん
2009/07/06(月) 11:35:220146デフォルトの名無しさん
2009/07/06(月) 15:09:38どうやって読んでいるのか気になるところ
0147デフォルトの名無しさん
2009/07/06(月) 16:40:13インテリ効くしビルド時に出力すればヘルプファイルも作れるし
0148デフォルトの名無しさん
2009/07/06(月) 17:48:51foreachにかけるとき、全部Dispoesすべきなんでしょうか?
要素は出来るだけ早く開放したほうがいいものを想定しています。
using( クラス )
{
using( コレクション = クラス.取得 )
{
foreach( 要素 in コレクション ) {
要素.Dispoes();
}
}
0149デフォルトの名無しさん
2009/07/06(月) 17:53:22クラスとコレクションと要素の製作者に聞け
0150デフォルトの名無しさん
2009/07/06(月) 18:30:19とっつきにくい?
冗長さと読みづらさはまあ分からんでもない
コードが多少ごちゃごちゃになるからな
とっつきにくいことは無いだろう
関数とかの宣言の上でスラッシュをカカカっと三回入力するだけで
テンプレ出てくるんだから
0151デフォルトの名無しさん
2009/07/06(月) 19:16:13using()するなら、Disposeしちゃ駄目。
0152デフォルトの名無しさん
2009/07/06(月) 19:19:40usingしてるのはコレクション
disposeしてるのは要素
>>149のツッコミが正しい
0153デフォルトの名無しさん
2009/07/06(月) 21:27:37何度呼んでもいいべ
0154デフォルトの名無しさん
2009/07/06(月) 23:50:03もったいなさ過ぎると思います
0155デフォルトの名無しさん
2009/07/07(火) 00:02:46・/// で VS は色々生成してくれる
・エディタのツリーでコメントはたためる
・インテリセンスのツールヒントに注目
・Sandcastle とか使ってみる
この辺押さえろみたいな
0156デフォルトの名無しさん
2009/07/07(火) 00:13:10なにこれ見やすい
0157デフォルトの名無しさん
2009/07/07(火) 00:25:22そんな所見やすくてもしかたないだろ、ヘルプは使う所(インテリセンス)で見るんだから
0158デフォルトの名無しさん
2009/07/07(火) 00:37:24タグ嫌い?英語嫌い?
0159デフォルトの名無しさん
2009/07/07(火) 03:17:060160デフォルトの名無しさん
2009/07/07(火) 08:58:460161デフォルトの名無しさん
2009/07/07(火) 21:09:340162デフォルトの名無しさん
2009/07/07(火) 21:10:400163デフォルトの名無しさん
2009/07/07(火) 21:38:51インテリセンスとVSのオブジェクト ブラウザでほとんどの場合は事足りてる。
0164デフォルトの名無しさん
2009/07/07(火) 21:55:130165デフォルトの名無しさん
2009/07/07(火) 21:56:110166デフォルトの名無しさん
2009/07/07(火) 22:28:40XMLコメントやインテリセンスの登場は、ソースを読むというくだらない時間を割くのはやめるといいよ
という事なんだと思うよ
最近C#慣れしてきて、だんだんコメント不要の意見が変わってきたオレ
ソースコードの変更にコメントの変更が遅れるぐらいならソースコードをきっちり書けというのは間違っている
コメント(仕様書)にソースコードが管理されるべきだなとw
こんなに楽ちんならもう元には戻れない
0167デフォルトの名無しさん
2009/07/07(火) 22:35:21WEB というものがあってだな・・・
0168デフォルトの名無しさん
2009/07/07(火) 22:37:540169デフォルトの名無しさん
2009/07/07(火) 22:41:080170デフォルトの名無しさん
2009/07/08(水) 09:35:25MSDNですら書いてない例外が飛んでくることは普通にあるしな。
0171デフォルトの名無しさん
2009/07/08(水) 19:26:11タコつぼで暴れてろよお前らよ
0172デフォルトの名無しさん
2009/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 ヽ /
0173デフォルトの名無しさん
2009/07/08(水) 20:41:31>>171 はひょっとしてとちょっと思った
0174デフォルトの名無しさん
2009/07/10(金) 17:16:57ソケット関連の本を買おうかと思ってるのですが、2004年の
ものなので情報が古いかなと思いまして。
0175デフォルトの名無しさん
2009/07/10(金) 17:48:380176デフォルトの名無しさん
2009/07/10(金) 18:37:370177デフォルトの名無しさん
2009/07/10(金) 19:34:02>>175
ありがとうございます。2.0対応だったら買うことにします。
0178デフォルトの名無しさん
2009/07/10(金) 21:42:28イベント += Onイベント
イベント -= Onイベント
のように+=および-=演算子でイベントを登録/解除できると思いますが、
イベントにOnイベントが既に登録されているかどうか判断することは出来ないのでしょうか?
0179デフォルトの名無しさん
2009/07/10(金) 21:50:350180デフォルトの名無しさん
2009/07/10(金) 21:57:56残念。
0181デフォルトの名無しさん
2009/07/11(土) 01:03:270182デフォルトの名無しさん
2009/07/11(土) 01:11:34通常は判別できる必要性など無いと思うが
逆に必要と思った理由を教えて欲しい
ただし、「多重登録の回避」という回答は却下
0183デフォルトの名無しさん
2009/07/11(土) 01:14:00Reflction なコード書くのが面倒だから、サンプルは作らんけど。
Component の Events、EventHandlerList、Delegate.GetInvocationList() あたりを
調べてみて。
0184デフォルトの名無しさん
2009/07/11(土) 01:35:17ロジック確認してみたいなハックに等しいから
分離を破壊する(実装変わったら終了って話)ので
さすがに薦めるのどうよ
アクセサが add/remove しかないんで無理でもう
いいじゃん
0185デフォルトの名無しさん
2009/07/11(土) 10:24:34あるタイミングでaは破棄されるんだけど、そのときHogeはHogedからRemoveする必要ないよね?
0186デフォルトの名無しさん
2009/07/11(土) 11:02:040187デフォルトの名無しさん
2009/07/11(土) 11:05:58C#でも同様に、
01 DATE
05 YY
05 MM
05 DD
みたいな再定義はできますか?
よろしくお願いします。
0188デフォルトの名無しさん
2009/07/11(土) 11:19:500189デフォルトの名無しさん
2009/07/11(土) 11:21:450190デフォルトの名無しさん
2009/07/11(土) 12:49:04保証はあるだろ。
できる/できない の話として「できる」ってだけで、
薦める/薦めないの話じゃない。
0191デフォルトの名無しさん
2009/07/11(土) 12:58:02イベントはデリゲート型ではあるけど実装としてデリゲートを使う必要はない
0192デフォルトの名無しさん
2009/07/11(土) 13:05:490193デフォルトの名無しさん
2009/07/11(土) 14:14:03a += b;
a -= b;
0194デフォルトの名無しさん
2009/07/11(土) 14:26:49いや、完全に実装依存。
あるイベントについて現時点で動作するロジックなら書ける。
でも、全てのイベントについて今後永久に動作するロジックは無理。
0195デフォルトの名無しさん
2009/07/11(土) 14:29:51イベントはデリゲート型ではあるけど
これは違うような。。
0196デフォルトの名無しさん
2009/07/11(土) 15:13:43・高さ指定&文字列の縦配置を中央にする。
・高さ指定&padingを設定する。
以上のいずれかは可能でしょうか。
老人向けの大きな見栄えの良いボックスを作りたいのですが…。
0197デフォルトの名無しさん
2009/07/11(土) 16:15:45の件だけど、これってデリゲートが弱参照だってことだよね。
ヘルプで見つからないフシアナな俺に、どこに書いてあるか教えて。
0198197
2009/07/11(土) 16:16:58じゃあ問題ないな。
0199デフォルトの名無しさん
2009/07/11(土) 16:33:39クラスで解決できるでしょうか?
現在、.NETアプリケーションでWebBrowserコントロールにおいて
フォルダのExplorer表示を出しています。そうすると必ずあの青色の
「タスクメニュー」が現れてきます。
通常のエクスプロ−ラだとそれをフォルダツリーに置き換えたり、
検索ツールに置き換えたりできました。
自分のアプリケーション上で、あのタスクメニューを消してしまうことは
できるでしょうか?できるようであればその方法を教えてほしく。
ちなみに、エクスプローラのオプションで「全般」タブ→「作業」のところ
で、「従来のWindowsフォルダを使う」を選ぶとタスクメニューはでなくは
なるのですが、そうすると、Xpでは「写真」表示ビューが使えなくなって
しまうので、「フォルダに共通の作業を表示する」の方で使いたいので
した。このオプションの状態で、プログラムから「タスクメニュー」を消す
方法がありましたら教えてください。
よろしくお願いします!
0200デフォルトの名無しさん
2009/07/11(土) 20:20:40自分ならプロパティで実装するかな?
.NETクラスライブラリのSystem.DateTimeにも
Year, Month, Dayプロパティがあるから、プロパティによる実装がC#流のはず
0201デフォルトの名無しさん
2009/07/11(土) 21:06:20Multiline=trueにすれば高さ指定はできるけど、
老人向けならフォントをでかくすればいいだけじゃないの?
0202デフォルトの名無しさん
2009/07/11(土) 21:58:13REDEFINES句の例としては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).
のようなことをやりたい?
これもプロパティによる実装が良いと思う。
0203デフォルトの名無しさん
2009/07/11(土) 23:37:33ありがとうございます。
プロパティをオリジナルで定義するということでしょうか。
0204デフォルトの名無しさん
2009/07/11(土) 23:42:26ありがとうございます。
操作性と見栄えを重視したシステムにしなければならないんので、
テキストボックス内の上下の余白をゆったり目にとって、
かつ中央揃えにしたいんです。
これはc#では不可能なのでしょうか…。
0205デフォルトの名無しさん
2009/07/11(土) 23:48:30TextBox を使わないで独自コントロールを使うとか
Panel 上に透明な TextBox を乗せてごまかすとか。
0206デフォルトの名無しさん
2009/07/12(日) 00:16:230207デフォルトの名無しさん
2009/07/12(日) 00:27:58少なくとも、C#そのものは関係ない。
(というか、C#のテキストボックスなんてないだろ)
どういうGUIコンポーネントを使うかは関係がある。
0208デフォルトの名無しさん
2009/07/12(日) 00:35:480209デフォルトの名無しさん
2009/07/12(日) 00:41:51普通にXPで動くけど?
0210デフォルトの名無しさん
2009/07/12(日) 01:14:44そうなんだ!勘違いしていたよ!
0211デフォルトの名無しさん
2009/07/12(日) 01:25:20そんな名前空間、あったっけ…?
探しても見つからない(-_-;)。
0212デフォルトの名無しさん
2009/07/12(日) 01:27:42VisualC#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
0213デフォルトの名無しさん
2009/07/12(日) 01:29:000214デフォルトの名無しさん
2009/07/12(日) 01:44:44C#でその名前空間を使うにはどうすればいいの?
0215デフォルトの名無しさん
2009/07/12(日) 02:21:36WPFの一部だから基本的にWPFプロジェクトで使う。
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.control.padding.aspx
0216デフォルトの名無しさん
2009/07/12(日) 03:06:00そんな…まさか…。
0217デフォルトの名無しさん
2009/07/12(日) 03:25:54C#に押し付けるとは・・・まだまだ青いな
0218デフォルトの名無しさん
2009/07/12(日) 06:56:46もしかしてこれからはWPFの時代ですかね…?
C♯でできる裏技があればゆいのですが(*_*)
0219デフォルトの名無しさん
2009/07/12(日) 07:29:19あるからググレ
0220デフォルトの名無しさん
2009/07/12(日) 08:01:33Formsは今後のバージョンアップ
は見込めないらしいね。
0221デフォルトの名無しさん
2009/07/12(日) 08:50:00>>216とか>>218は言語フィルタでC#外しているのか
0222デフォルトの名無しさん
2009/07/12(日) 11:51:05/ \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \
| |r┬-| | 今後永久に動作するロジックは無理
\ `ー'´ /
ノ \
/´ ヽ
| l \
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / // だっておwwwwwwwwwwwwwwwwwww
| :::::::::::(⌒) | | | / ゝ :::::::::::/ 当たり前だろwwwwwwwwwwwwwww
| ノ | | | \ / ) /
ヽ / `ー'´ ヽ / / バ
| | l||l 从人 l||l l||l 从人 l||l バ ン
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ン
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
0223デフォルトの名無しさん
2009/07/12(日) 12:47:15俺も読んでみたけど、分からないんですが…。
テキストボックスのプロパティで縦の位置を中央揃えに指定できないし、
windows.control名前空間もC#だと見当たらない。
>>216
ぐぐっても出てこないよー…。
0224デフォルトの名無しさん
2009/07/12(日) 13:02:34ttp://hanatyan.sakura.ne.jp/vbhlp/textali.htm
vbだけど
0225デフォルトの名無しさん
2009/07/12(日) 13:48:29ってアドインみたいなものっすか?
3.5入れてるけど出てこないんです。
0226デフォルトの名無しさん
2009/07/12(日) 13:54:21http://msdn.microsoft.com/ja-jp/library/system.windows.controls.control.padding.aspx
0227226
2009/07/12(日) 14:09:55暇だからきちんと説明するか。
新規のwindowsアプリケーションを作成する。
追加->新しい項目->ユーザーコントロール(WPF)
UserControl1.xamlの<Grid></Grid>要素の間に>>226の<Button>〜</Buttion>を入れる。
デザイナにPaddingと表示されたButtonができる。
これをダブルクリックすればvoid ChangePadding(object sender,RoutedEventArgs e)がソースに自動追記される。
>>226にあるコードを実装する。
そしてwindowアプリケーションの方に戻り、Form1のデザイナの上にツールボックスからUserControl1を貼り付ける。
以上
0228デフォルトの名無しさん
2009/07/12(日) 14:42:14ありがとうございます。
すみませんが、
テキストボックスの高さをゆったりともたせ、
paddingを使って文字を縦中央に配置したい場合、
このコントロールでどう設定すればよいのでしょうか。
どうか、見捨てないでください。
0229デフォルトの名無しさん
2009/07/12(日) 15:03:52その前に、http://msdn.microsoft.com/ja-jp/library/aa970268.aspx
ここと、関連する情報は読んで理解しておいてね。
0230デフォルトの名無しさん
2009/07/12(日) 15:26:29C♯は関係ないの?
今までの話とちがうよ。
0231デフォルトの名無しさん
2009/07/12(日) 15:29:020232デフォルトの名無しさん
2009/07/12(日) 15:33:41System.Windows.FormsもC#と関係ない。
C#という言語を使って、System.Windows.Formsというアセンブリを使う
だけ。C#から使おうがVisual Basicから使おうがIronPythonから
使おうが、使い方に違いはない。
言語(C#)とフレームワーク(.NET)とその中のライブラリ(System.Windows.Formsアセンブリ)の
区別が全くつきませんか?
0233デフォルトの名無しさん
2009/07/12(日) 15:41:14でもこの文脈で区別するとますますとっつきにくくなるよな。
と思ったが、System.Windows.Forms.dllだった。よかった。
0234デフォルトの名無しさん
2009/07/12(日) 15:50:180235デフォルトの名無しさん
2009/07/12(日) 15:52:06結局、テキストボックスの縦中央に配置するにはどうしたらよいの?
0236デフォルトの名無しさん
2009/07/12(日) 15:59:01VerticalContentAlignmentとかそのものな項目が見えるけど
0237デフォルトの名無しさん
2009/07/12(日) 16:30:51>>229のリンク先は読んだの?読んだら、どこが分からなかったの?
0238デフォルトの名無しさん
2009/07/12(日) 16:45:01WPFは現状VBerがほとんどいないからこそ専用スレが成り立つ
0239デフォルトの名無しさん
2009/07/12(日) 16:50:33実際、以前.NETスレがあったが、過疎だった。
みんなC#とかVB.NETのスレへ流れるもんだから。
0240デフォルトの名無しさん
2009/07/12(日) 17:01:34言語とライブラリを混同するようなレベルの初心者ユーザも少ないからな
0241デフォルトの名無しさん
2009/07/12(日) 17:17:18aboutっていわゆるバージョン情報のフォーム?
だとすると、面倒なことをせずにShow()ではなくShowDialog()で一つ表示する方法が普通だと思うけど
0242デフォルトの名無しさん
2009/07/12(日) 17:29:10あの…恥ずかしながら、
ユーザーコントロールを追加しましたが、
テキストボックスのパディングをどこで設定するのか…
またはテキストボックスの垂直の位置をどこで中央にするのか…
(水平の中央はありますが)
が分からないんです。
0243デフォルトの名無しさん
2009/07/12(日) 17:29:31俺もそのスレ見てたわ。
次スレどうしようか悩んだけど、過疎ってたのでやめといたら結局誰も立てなかった・・。
0244デフォルトの名無しさん
2009/07/12(日) 17:33:080245デフォルトの名無しさん
2009/07/12(日) 17:34:110246デフォルトの名無しさん
2009/07/12(日) 17:37:31TextBlockというのを使う
0247デフォルトの名無しさん
2009/07/12(日) 17:41:23(T_T)?
ところで、テキストボックスのパディング設定は果たしてできるのかな。
0248デフォルトの名無しさん
2009/07/12(日) 17:46:47<TextBlock …… Padding="10">……</TextBlock>
0249デフォルトの名無しさん
2009/07/12(日) 17:49:58パディングはそのコントロールの親(GridやBorderなど)を基準にして行われる
WPFはとにかくコンテナ(WinFormsでいうPanelみたいなもの)をネストしまくるんだ
0250デフォルトの名無しさん
2009/07/12(日) 18:19:59それは、Windowsアプリケーションでも可能なの?
0251デフォルトの名無しさん
2009/07/12(日) 18:22:240252デフォルトの名無しさん
2009/07/12(日) 18:24:16やってから言えよカス。
0253デフォルトの名無しさん
2009/07/12(日) 18:26:27textblockとかgridってあるのかな。
0254デフォルトの名無しさん
2009/07/12(日) 18:30:15ユーザーコントロールに枠線消したTextBoxを張る
みたいな汚い方法しかない
0255デフォルトの名無しさん
2009/07/12(日) 19:02:18WPFで作った方がよかったんじゃないかな。
俺もよく知らないけど。
0256デフォルトの名無しさん
2009/07/13(月) 00:13:270257デフォルトの名無しさん
2009/07/13(月) 00:55:49俺もWPFで作れば良かった。
できることはWindowsアプリケーションと変わらないし。
0258デフォルトの名無しさん
2009/07/13(月) 01:37:11場合によってはMFCとか.NETじゃないやつまで含んじゃう言葉だから、誤解を避けるためにWinFormsって書く方がいい。
WinFormsで見た目をちょっと改善しようと思ったら、自前で描画するとか泥臭い手段しか無かったというのはよくある話。
WPFでは馬鹿みたいに(褒め言葉)柔軟で何でも出来るけど、設計思想がWinFormsやMFCとは別物の新しいやつだから、最初は戸惑うと思う。
0259デフォルトの名無しさん
2009/07/13(月) 07:29:500260デフォルトの名無しさん
2009/07/13(月) 09:54:350261デフォルトの名無しさん
2009/07/13(月) 11:19:26Items.Count が非常に多い場合にはあまりに時間がかかりすぎることが
わかりました。
Items.Count=10000ぐらいで2分ぐらい(Core2Duo/2GHz)。
ところが例えばExplorerでファイルを同じくらい用意してやってみると瞬時に
全部が選択されました(3秒ぐらい)。これと同じ程度のスピードで選択
したいと思います。良い方法がありましたらご指導のほどお願いしたく。
よろしくお願いします。
0262デフォルトの名無しさん
2009/07/13(月) 11:49:28イベントハンドラがあったりする?
あと描画関係なら、BeginUpdate - EndUpdateで挟むとか
0263デフォルトの名無しさん
2009/07/13(月) 11:59:23実地に調べてまでして下さり、大変ありがとうございます!
いろいろすみませんです。
>BeginUpdate - EndUpdateで挟む
これたった今やってみました。結果として時間の変化はありませんでした。
>イベントハンドラがあったりする?
わかりました、すぐ調べてみます。どうもです!
0264261
2009/07/13(月) 12:15:11>イベントハンドラ
この件、仰るとおりでした。Selectされた時点で、何かのメッセージの
Hookが行われているようでした!これは別のコントロールのものでしたが
対策を考えてみます。ご指導、大変どうもでした!助かりました!
0265デフォルトの名無しさん
2009/07/13(月) 19:26:25foreachにすれば大丈夫だと思うけど。
0266デフォルトの名無しさん
2009/07/13(月) 23:23:230267デフォルトの名無しさん
2009/07/14(火) 09:41:49とりあえずList<T>とDictionary<T>覚えておけばいい?
0268デフォルトの名無しさん
2009/07/14(火) 09:42:310269デフォルトの名無しさん
2009/07/14(火) 09:52:07型パラメータの命名ガイドラインは接頭辞Tプラスその型引数の意味
(ただし用途が明らかな場合List<T>とかはT一字でOK)
2.0ならあとはLinkedList<T>, KeyedCollection<TKey, TItem>辺り?
あ、Queue<T>とStack<T>があった
3.0(WPF)ならObservableCollection<T>
3.5はHashSet<T>とか? コレクションじゃないけどやはり最重要はIEnumerable<T>だな
0270デフォルトの名無しさん
2009/07/14(火) 10:24:18ふむふむ。
IEnumerable<T>はLINQで出て来るなあ。
ObservableCollection<T>はWPF本で出てきたけど
まだいいや。
List<T>
LinkedList<T>
KeyedCollection<TKey, TItem>
Dictionary<TKey, TValue>
IEnumerable<T>
とりあえずこのあたりからマスターする。
0271デフォルトの名無しさん
2009/07/14(火) 10:29:51つか全体にマスターするほどでもないような
IEnumerable<T>以外は
0272デフォルトの名無しさん
2009/07/14(火) 13:37:180273デフォルトの名無しさん
2009/07/14(火) 21:15:32.NETの型引数の命名規則は合理的で優れてるよな
java式のK,Vとかイミフ
0274デフォルトの名無しさん
2009/07/14(火) 21:33:54ほかの引数にSとかUとかつけてたわw
0275デフォルトの名無しさん
2009/07/14(火) 21:43:120276デフォルトの名無しさん
2009/07/14(火) 21:44:53SとかUってどういう意味よ?w
0277デフォルトの名無しさん
2009/07/14(火) 21:45:310278デフォルトの名無しさん
2009/07/14(火) 21:46:57ま、俺はVをつけてたけど。
0279デフォルトの名無しさん
2009/07/14(火) 21:56:52いや、Tの前とか次の文字とかw
HogeHoge<S,T,U>ってかんじ。
0280デフォルトの名無しさん
2009/07/14(火) 22:08:04C#くらいだよね
javaもc++もそんな習慣無い
0281デフォルトの名無しさん
2009/07/14(火) 22:23:47わかりやすいけど普通の型名と見分けがつかないので、
.NETの(プリフィクス)+(意味)はその落としどころ
0282デフォルトの名無しさん
2009/07/14(火) 22:30:04今VC9見たら真面目に命名してるな
VC6とか_Aとか_Cとかだったんだが
0283デフォルトの名無しさん
2009/07/14(火) 23:45:07.NET も初めからそうだったわけではなく、型引数のこの命名は
ベータかどっかでやっぱりこうしようみたいに一気に変えたんだよ
確か。Connect とかの Suggestion も絡んでた気がする
出来上がりとか見てみんな思うところがあったんじゃないかな
0284デフォルトの名無しさん
2009/07/14(火) 23:52:12.NET 2.0ベータ中は一文字だった、ように記憶してる
リリースされた正式版のドキュメント見て初めは違和感あった
0285デフォルトの名無しさん
2009/07/14(火) 23:57:32TEventArgs : EventArgs なんか神
0286デフォルトの名無しさん
2009/07/15(水) 00:09:02ああごめん。
>出来上がりとか見て
はベータのです。
なんか変わると発表したときにフィードバックの存在を
書いていた記憶があるから。
0287デフォルトの名無しさん
2009/07/15(水) 00:17:22Log4netはつかってるがほかゴリゴリ書いてるので時間かかるお(´・ω・`)
http://csharp-source.net/search?query=graph+layout
0288デフォルトの名無しさん
2009/07/15(水) 03:22:30DataReceivedイベント使えば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);
}
こんな感じで直接出力しても途切れる・・・
何故なんでしょうか?誰か詳しい人教えて
0289デフォルトの名無しさん
2009/07/15(水) 03:22:38new RelayCommand(param => this.OnRequestClose());
この=>はどういう意味があるのでしょうか?
0290デフォルトの名無しさん
2009/07/15(水) 03:34:36http://ufcpp.net/study/csharp/sp3_lambda.html
0291デフォルトの名無しさん
2009/07/15(水) 05:26:44フロー制御はうまく言ってる?
0292デフォルトの名無しさん
2009/07/15(水) 06:30:27おお、ラムダ式。
どうもありがとうございました。
0293デフォルトの名無しさん
2009/07/15(水) 14:06:19のですが、以下だと上手く行かないようです。
class Widget<T> where T : IEnumerable
{
public void Iterate(T arr)
{
foreach (object item in arr)
{
Console.WriteLine(item);
}
}
}
・型パラメータTは、競合する制約IEnumerableおよびobjectを継承します
・foreachステートメントは、TがGetEnumeratorのパブリック定義を含んで
いないため、型Tの変数に対して使用できません。
というエラーが出ます。どうかご教示願います。
0294デフォルトの名無しさん
2009/07/15(水) 14:13:11それだけならコンパイル通るし動く
他のところに問題がある
0295デフォルトの名無しさん
2009/07/15(水) 14:13:14いいでしょうか?
やりたいことは
public delegate_T func<delegate_T>( string str )
こんな感じなんですが。
0296デフォルトの名無しさん
2009/07/15(水) 14:25:37Expression<TDelegate>みたいに、名前だけそれっぽくして実行時にチェックする
0297デフォルトの名無しさん
2009/07/15(水) 14:31:40Func<string, int> func;
funcがstringを受け取ってintを返す関数になる
戻り値がdelegateって言うなら
Func<string, Action> func;
とかです
0298デフォルトの名無しさん
2009/07/15(水) 14:44:14レスありがとうございます。
using System.Collections;
を宣言していませんでした。
0299デフォルトの名無しさん
2009/07/15(水) 15:04:49上で書いたような書式じゃ無理ということとですね。
Funcとか知らなかったので試してみます
ありがとう
0300デフォルトの名無しさん
2009/07/15(水) 16:12:220301デフォルトの名無しさん
2009/07/15(水) 16:20:19レスありがとう
フロー制御に問題がある様には思えません
送信側と合わせてるので
疑似で
STXhoge0ETX〜STXhoge5000ETX
までのデータを作ってtxtファイルにして
ハイパーターミナルからテキストファイルの送信で流してみたんですが
5000までデータはあるのにコンソール上には200行から300行くらいまでしか出てこない・・・
フロー制御もいろいろ設定変えて試したんですが変わらずです・・・
0302デフォルトの名無しさん
2009/07/15(水) 16:53:02>フロー制御に問題がある様には思えません
経験的にいえば強く思い込んでるところが間違ってる可能性が高いな。
コントロールパネルで設定したとか言うなよ。
あとPC−PCでの接続だったらリバースケーブルになるけど、
結線に種類があってハード制御用のラインが自分のほうに戻ってきてるのもあるから要注意。
0303デフォルトの名無しさん
2009/07/15(水) 17:36:23アレってあんまり信用ならなかったとおもう
0304デフォルトの名無しさん
2009/07/15(水) 17:37:260305デフォルトの名無しさん
2009/07/15(水) 19:30:24C#や.NETの資格で、MS社以外のものはありますか?
また、MCPですが、
70-505 TS: Microsoft .NET Framework 3.5, Windows Forms Application Development
などの「開発経験が 1 年以上」は、大学の研究室での開発や趣味プログラミングでも大丈夫でしょうか?
0306デフォルトの名無しさん
2009/07/15(水) 21:48:39この出力が "http://example.com/sample/foobar.txt" になるんですが、これってバグですか?
0307デフォルトの名無しさん
2009/07/15(水) 21:52:300308デフォルトの名無しさん
2009/07/15(水) 22:03:26/ を足して味噌
0309デフォルトの名無しさん
2009/07/15(水) 22:07:41いや、それはわかるけど、俺が聞きたいのはそれじゃない。
".." が消えているのはなぜかと、どうすれば回避できるのか、だ (´・ω・`)
0310デフォルトの名無しさん
2009/07/15(水) 22:22:460311デフォルトの名無しさん
2009/07/15(水) 22:27:160312デフォルトの名無しさん
2009/07/15(水) 22:42:31Similarly, parsers must avoid treating "." and ".." as special when
they are not complete components of a relative path.
これ?
0313デフォルトの名無しさん
2009/07/15(水) 22:45:45>>306の動作は仕様を満たしてないってことかな
0314デフォルトの名無しさん
2009/07/15(水) 22:49:36Console.WriteLine(new Uri(new Uri("http://example.com/"), "sample../foobar.txt").OriginalString);
ごめん。こういうのを書いて、ちょっと (´・ω・`) とした。
RFC か何かで規定されているなら、まあ無視しちゃって良いかなって気にはなるんだけど、
まだ読みきってないス (´・ω・)
0315デフォルトの名無しさん
2009/07/15(水) 23:25:59趣味でも十分な奴もいれば仕事でも無理な奴もいる。
0316デフォルトの名無しさん
2009/07/15(水) 23:27:390317デフォルトの名無しさん
2009/07/16(木) 19:30:14くっつけたものを出来ればconstで定数にしたいんですが
どう書けばよいでしょうか?
もしくはC++の関数内で
static string str = "123";
みたいなことは出来ないでしょうか?
別な方法はありますが、これが出来るとすっきりしそうなのです。
0318デフォルトの名無しさん
2009/07/16(木) 19:40:420319デフォルトの名無しさん
2009/07/16(木) 19:57:42なるほど。うまくいきました。
readonly static string str = string.Format( "{0}{1}", Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar );
ちなみに
>もしくはC++の関数内で
>static string str = "123";
>みたいなことは出来ないでしょうか?
これって出来ますか?
0320デフォルトの名無しさん
2009/07/16(木) 20:01:250321デフォルトの名無しさん
2009/07/16(木) 20:04:56了解しました。
0322デフォルトの名無しさん
2009/07/16(木) 21:15:10C++で関数内のstatic string str = "123";は可能では?
まあスレ違いになるからC++スレで聞け。
0323デフォルトの名無しさん
2009/07/18(土) 00:36:110324デフォルトの名無しさん
2009/07/18(土) 00:40:570325デフォルトの名無しさん
2009/07/18(土) 00:41:24アクセス制限考え出すとわかる
0326デフォルトの名無しさん
2009/07/18(土) 02:26:160327デフォルトの名無しさん
2009/07/18(土) 03:00:270328デフォルトの名無しさん
2009/07/18(土) 03:09:190329デフォルトの名無しさん
2009/07/18(土) 03:16:080330デフォルトの名無しさん
2009/07/18(土) 03:31:49TabIndexプロパティの仕様の話で、-1が使えた方がスマートだということ
0331デフォルトの名無しさん
2009/07/18(土) 03:35:20そもそもTabStopがあるからいらないと思う
0332デフォルトの名無しさん
2009/07/18(土) 03:38:55収まりが悪い
0333デフォルトの名無しさん
2009/07/18(土) 07:04:280334デフォルトの名無しさん
2009/07/18(土) 08:19:21発想が前時代的
0335デフォルトの名無しさん
2009/07/18(土) 14:04:06TabIndexはタブの移動順序を決めるためのプロパティだから、タブの有効/無効とは無関係だよな。
TabEnableてきなプロパティを作るべき。
0336デフォルトの名無しさん
2009/07/18(土) 14:27:340337デフォルトの名無しさん
2009/07/19(日) 04:05:270338デフォルトの名無しさん
2009/07/19(日) 04:05:560339デフォルトの名無しさん
2009/07/20(月) 10:11:321つの大きな256ビットマップに描画して、保存したいと思っています。
System.Drawing.Bitmapオブジェクトは作成できたのですが、
ピクセルフォーマットがFormat8bppIndexedになっているので、Graphicsオブジェクトが作成できません。
256色ビットマップに描画するには、どのようにすればよいでしょうか?
0340デフォルトの名無しさん
2009/07/20(月) 10:42:120341デフォルトの名無しさん
2009/07/20(月) 10:44:29Bitmap コンストラクタ (Int32, Int32, PixelFormat) でコピー先ビットマップ作って
GetPixcel/SetPixelで書き写すしかないんじゃね?
0342デフォルトの名無しさん
2009/07/20(月) 11:45:192.0以前のSystem.Drawing.Bitmapよりも、
3.0以降のSystem.Windows.Media.Imaging.BitmapSource と
WriteableBitmap の方が使いやすかった。
0343デフォルトの名無しさん
2009/07/20(月) 12:19:39LockBitsだな
WPFが使えるならもちろんそっちの方が遥かに便利で強力
0344デフォルトの名無しさん
2009/07/20(月) 12:27:12回答してくださった方、どうもありがとうございました。
0345デフォルトの名無しさん
2009/07/20(月) 12:28:080346デフォルトの名無しさん
2009/07/22(水) 02:08:09上からJavaかC#を選ぶようにいわれましたが
どちらが扱いやすくて今後の将来性がありますか?
0347デフォルトの名無しさん
2009/07/22(水) 02:12:170348デフォルトの名無しさん
2009/07/22(水) 02:23:27Javaスレで聞いたら?
Javaって返ってくるだろうけど。
まぁ、アレですよ。
自分で使いたいと思うほうを使えばいいと思います。
どっちも将来性なんて分からないので。
0349デフォルトの名無しさん
2009/07/22(水) 02:29:17製作されたソフトウェアのどちらが長期使用に耐えられるかと言ったら
C#だろうな
0350デフォルトの名無しさん
2009/07/22(水) 04:16:08RPGClientでログインして、少し動かした後で切断。再度ログインすると、KeyNotFoundExpectionが発生してしまう。
しらべてみると、MapChangReq()のunits.setUnit()でunitlistに登録したキーの値がfindUnit()でキーを元に検索しようとする前の段階で入れ替わってるのが原因だとわかった。
でも、治し方がわからない。
詳しい人がいたら教えてほしい。
0351デフォルトの名無しさん
2009/07/22(水) 07:48:580352デフォルトの名無しさん
2009/07/22(水) 07:59:310353デフォルトの名無しさん
2009/07/22(水) 08:37:00後方互換保ってくれるかわからないんだよなぁ
なんだかんだで10年来動き続けてるVB6という手も怖い
0354デフォルトの名無しさん
2009/07/22(水) 09:17:18互換性(笑)
>>353
少なくとも IL は互換性保たれるんじゃないかな。
0355デフォルトの名無しさん
2009/07/22(水) 09:48:41プロジェクト開けねーじゃねーか・・・XNA入れないとならんのか?メンドクサ
0356デフォルトの名無しさん
2009/07/22(水) 10:01:33解凍できね
0357デフォルトの名無しさん
2009/07/22(水) 10:25:047zipで解凍できたよ。
>>350
ぱっと見なんだけどRPGServerをリブートしていたというオチではないか?
UnitManagerのunitlistをセーブしたりしている箇所はどこだ?
しかし、なんかUnitの管理とかが微妙な感じがする。
精査したわけじゃないが、unitsが座標ごとに持ってる部分とか。
0358デフォルトの名無しさん
2009/07/22(水) 12:04:26RPGServerをリブートしているという落ちは残念ながありませんw
unitlistをセーブしている部分はsetunit、removeall、removeUnitの三つです。
0359デフォルトの名無しさん
2009/07/22(水) 13:40:05右クリックして、送る→圧縮(zip 形式)フォルダ
で圧縮したものでうpしなおしてくれ。
0360358
2009/07/22(水) 13:54:39すまん。今使ってるウィンドウズにはその機能はない。
0361デフォルトの名無しさん
2009/07/22(水) 14:44:12機能がないんじゃなくてテメーが無効にしたんだろ。
0362デフォルトの名無しさん
2009/07/22(水) 15:05:030363デフォルトの名無しさん
2009/07/22(水) 16:11:020364デフォルトの名無しさん
2009/07/22(水) 16:33:30んじゃ、recive_packetでMapChangReqコマンドを投げる前にHandleInput受け取って
SetPosコマンド投げた。とか?
は無いか、initedチェックしてるから。
わかんね。ギブ。
ただ、ひとつ気になったのはunitlist.Add(id, u);。
Dictionary#Addは「ただし、指定したキーが Dictionary<(Of <(TKey, TValue>)>) 内に
既に存在する場合、Item プロパティを設定すると既存の値が上書きされます。
一方、Add メソッドは、指定したキーを持つ値が既に存在する場合、例外をスローします。」
0365デフォルトの名無しさん
2009/07/22(水) 22:30:01切断した後IPとか変わってても大丈夫なの?
0366デフォルトの名無しさん
2009/07/22(水) 22:54:46ツッコミどころはまだまだ多いけど、それは一つずつ解決していくしかなかろう。
とりあえず、結構頑張ってると思う。
0367デフォルトの名無しさん
2009/07/26(日) 18:08:18----------
おしえて。
フォームアプリのテキストボックスとかにデータバインディングで、
DataTable の要素を関連づけて入力値を管理したい。
ここで、テーブル中のレコードが1つの場合はいいんだが、複数あって
かつ、バインドするレコードを動的に変更したい場合ってのはどうすれば
いいのだろうか?
よくわからなかったので、
・バインド用に同じ構造のテーブルを用意して
・そこにレコードをひとつだけ作り
・そのレコードに元テーブルの任意のレコードの値をコピーする
・フォーム終了後にもとのテーブルのレコードに値をコピーし直す
方法で使おうとも思ったのだけど、もっと直接的な方法がありそうな気がする。
いかがだろうか。教示いただけると嬉しい。
0368デフォルトの名無しさん
2009/07/26(日) 19:14:08DataTableに複数レコードつっこんで
あるときは1レコード目、あるときは2レコード目をバインドすればいいんじゃないの
0369デフォルトの名無しさん
2009/07/26(日) 19:37:11>あるときは1レコード目、あるときは2レコード目をバインドすればいいんじゃないの
その2レコード目をバインドする方法がわからなかったんだ。。。
0370デフォルトの名無しさん
2009/07/26(日) 19:38:540371デフォルトの名無しさん
2009/07/26(日) 23:37:42ごめん。まだこれの経験が浅くてそれ自体がわかってないんだ。
その方向で調べ直すよ。ありがとう。
0372デフォルトの名無しさん
2009/07/27(月) 00:35:25気がつかなかったよ。お騒がせしました。
0373デフォルトの名無しさん
2009/07/27(月) 14:13:58変換するスマートな方法があったら教えてください。
foreachで別のDictionayに1つずつ追加するのはやれてます。
0374デフォルトの名無しさん
2009/07/27(月) 14:30:54dic.Cast<DictionaryEntry>().ToDictionary(entry => (TKey)entry.Key, entry => (TValue)entry.Value);
がスマートとは思えない。
0375デフォルトの名無しさん
2009/07/27(月) 14:34:42で質問です
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文を回し続ける方法はないでしょうか?
0376デフォルトの名無しさん
2009/07/27(月) 17:19:40スレッド切り替えるのに1ms以上かかりそうだし
0377デフォルトの名無しさん
2009/07/27(月) 17:55:33そうですか・・・
まぁヂュアルCPUなんで負荷率は50%なので構わないと言えば構わないのですが・・・
できるだけ使用率を低くして寿命を延ばしてやりたかったのです
0378デフォルトの名無しさん
2009/07/27(月) 17:59:39Sleepすることが目的ではなく、CPUを使いすぎることを抑えたいだけのように感じる。
もしそうなら、Priorityプロパティでスレッドの優先度を下げるだけというのはどう?
もちろん、優先度を下げるということはCPU使用率を下げることとは違うから、、
ほかにやることがなければCPUを使い尽くすということに変わりはないけど。
0379デフォルトの名無しさん
2009/07/27(月) 18:02:17何をやりたいのか知らないけど専用マシンを用意すれば?
0380デフォルトの名無しさん
2009/07/27(月) 18:32:57再入をブロックする必要はあるけど。
0381デフォルトの名無しさん
2009/07/27(月) 20:17:27よくわかんないけどこういうこと?
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使用率は無駄に上がらない。
その場合、処理のインターバルの精度は落ちるけど、時間あたりの処理回数の精度は
保てるといってよいんじゃないか。
0382デフォルトの名無しさん
2009/07/27(月) 23:32:44普通のSleepって、TimeBeginPeriodで指定した分解能でスレッドの状態変わるんだっけ?
もしSleepの精度にTimeBeginPeriodが効くなら、それやってスレッドの優先度をあげればいいかも。
ただし処理をきちっと終えてちゃんと確実に速やかにSleepしないと死ぬことになるが。
0383デフォルトの名無しさん
2009/07/27(月) 23:35:310384デフォルトの名無しさん
2009/07/27(月) 23:42:24timeBeginPeriodは消費電力を増やすと言われているのだから、
寿命を気にする>>377には似つかわしくないと思う。
0385デフォルトの名無しさん
2009/07/27(月) 23:54:07余程のことでもなければ「寿命」を縮めるなんてことはないと思うけど。
真空管じゃないんだから
0386デフォルトの名無しさん
2009/07/28(火) 00:07:36使用率が高いところを維持するのは全体で見ればあまり望ましいことじゃなかろう。
あと確かに大麻精度あげると電力使用はアップしてしまうのかも知れんが、
CPU使用率が高いままになるよりはましじゃないかと思うがどうだろう。
もちろんそうせずに済むならそれにこしたことはない。
0387デフォルトの名無しさん
2009/07/28(火) 00:19:550388デフォルトの名無しさん
2009/07/28(火) 10:43:04floatよりdoubleの方が一般に速いと思うのですが、なぜfloatなんですか?
0389デフォルトの名無しさん
2009/07/28(火) 10:49:39まあGDI+はGPU使わんけどな!
0390デフォルトの名無しさん
2009/07/28(火) 10:57:27あとdoubleが速いってのは今のCPUでの話にすぎない。
0391デフォルトの名無しさん
2009/07/28(火) 10:58:170392デフォルトの名無しさん
2009/07/28(火) 11:00:36なるほど…。
今まで、座標を保存するための変数x, yをdouble型で宣言して、
描画時にintに変換して使っていたのですが、
これはfloatにしてキャストなしで使った方がいいんでしょうか?
「float同士の演算(座標計算時)」と「double同士の演算(座標計算時)+intへのキャスト(描画時)」
では、どっちが速いんでしょうか。
0393デフォルトの名無しさん
2009/07/28(火) 11:05:11> 今のCPUでの話にすぎない。
昔のCPUのことを想定してどうすんだよw
0394デフォルトの名無しさん
2009/07/28(火) 11:19:55自分でベンチ書いて試しなよ
その方が納得できるだろ
0395デフォルトの名無しさん
2009/07/28(火) 11:53:38関係なかったけど。
0396デフォルトの名無しさん
2009/07/28(火) 12:20:35>>378
おっしゃる通り現在の処理速度を犠牲にせずにCPUの負荷を下げてあげたいということです。
スレッドの優先度は、この処理部分以外にあまり同時に激しい処理をしているわけではないので微妙な感じです
>>379
まぁ専用マシンを用意してもCPU負荷がずっと大きな値に張り付くのは・・・微妙なきがします。
FA系なので安定して長く動作させたいのです。
>>380
やってみた感じスレッドのタイマで1mSecで動かしてもどうも間隔はOSに引っ張られるようですorz
例えばですが・・・再入ブロックはこんな感じの処理のことでしたっけ?
タイマコントロール
void tick
{
タイマ停止
処理
タイマ開始
}
スレッドタイマ (間隔で動かすというか1回だけ動かすのを繰り返す)
void Tick()
{
処理
次回Tickを動かす時に1mSec間隔をあけて実行
}
0397デフォルトの名無しさん
2009/07/28(火) 12:37:37本当は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自体は迷信なのかもれません。
まぁ、ただずっと高しようりつで張り付くと結局温度が上がってしまうので
色々と起きてきそうなのです。
0398デフォルトの名無しさん
2009/07/28(火) 12:49:09そこまでシビアなFAの制御なら専用のCPUボードにやらせて、
OSはサマリーだけ受け取るような仕掛けにしないといかんだろう。
0399デフォルトの名無しさん
2009/07/28(火) 12:53:35本当はそうなんですよね
せめてPLC使って処理させるとか
でも・・・今回は期限ないうえにコストも落とせという色々無茶な状態が重なってしまいまして…
RTOSが必要なんじゃね?
この辺にも色々書いてあるけど
http://www.microsoft.com/windowsembedded/ja-jp/developercenter/whitepaper/xpe/hardrealtime.mspx
0401デフォルトの名無しさん
2009/07/28(火) 13:13:020402デフォルトの名無しさん
2009/07/28(火) 13:17:34エンベデッド(これで読みはいいのか?)ですよね
そう、せめてそれがあれば最低限のコンポーネント入れていけるとおもうんです
しかし普通のPCに普通のXP PRO
サービスとかはできる限りとめて動かしていますがなんというか・・・がっくりです
>>401
そうなんです!
というか、やる気起きないのでダラダラと
0403デフォルトの名無しさん
2009/07/28(火) 13:22:06なんとなくですが
>>382
のTimeBeginPeriodでいけそうな気がします。
また詳しいことは微妙ですが
これ使って簡単に1日程度動かして様子を一回見てみようかと
0404デフォルトの名無しさん
2009/07/28(火) 17:53:02描画メソッドの呼び出し頻度なんか知れてる
呼び出してからの実際の描画処理の方が遥かに時間がかかるからそんな細かい差は全く意味がない
0405デフォルトの名無しさん
2009/07/28(火) 19:47:21なんか>>397を読んでもやっぱりよく分からないんだけど、
要するにDIOか何かをポーリングしてるのかな?
それでそのDIOのイベントに応答するときのレイテンシの最大許容時間が25ms、
みたいなこと?
0406デフォルトの名無しさん
2009/07/28(火) 20:18:160407デフォルトの名無しさん
2009/07/28(火) 20:24:570408デフォルトの名無しさん
2009/07/28(火) 21:33:20タイマーが15ms間隔でしか発動しないのはWindowsの仕様。
パラメータでは1ms単位の数値が設定できるけど、実際の動作は約15.5ms間隔に切り上げられる。
TimeBeginPeriodを使えば間隔を詰めることはできるけど、実際に試してみると、
最短の間隔がせいぜい2ms程度で、それより長くなることもある。
それにTimeBeginPeriodには副作用があって、他のアプリがたまたまTimeBeginPeriodを再設定してしまうと、
そのマシンで動いているすべてのアプリが影響を受けてしまう。
>>375でVistaは1msてのは、たまたま何かのアプリがTimeBeginPeriodをいじってただけの可能性が高い。
そもそもSleep関数の動作は「少なくとも」指定した時間経過、だから、どれだけオーバーするかは運次第。
ただしこれはVistaまでの話で、Windows7ではタイマー関係がようやく強化される予定なので、
どうしても2ms以下の間隔を死守したいならWindows7を使えばすんなり解決するかもしれない。
0409デフォルトの名無しさん
2009/07/28(火) 21:47:440410デフォルトの名無しさん
2009/07/28(火) 21:53:02XPしかだめっつうてんだろw
XPにPLCと同じことさせようとしても無理。
制御じゃなく監視だよね?
FA屋で制御までさせようとしてるなら職変えたほうが良いよ。
0411デフォルトの名無しさん
2009/07/28(火) 22:08:010412デフォルトの名無しさん
2009/07/28(火) 22:16:54まあTimeBeginPeriod使った方がいいと思うけど。
優先度を上げない場合、Sleepでの停止自体は短時間でも、実行順が回ってくるまでに
タイムオーバーする危険がある(他のスレッドがある場合)。
優先度を上げると実行可能になった時優先的に処理が回ってくるので、遅れる危険が小さくなる。
ただし、処理を終えたら確実にSleepしないと、下手すればマシンハングアップ状態になるので注意。
ただ、いずれにしてもWindowsではそういうのを本当に確実に処理することはできない。
0413デフォルトの名無しさん
2009/07/28(火) 22:21:58もしフォアグラウンドで何かを動かしたらそいつは3倍になるから処理にもよるけど簡単に死ねる。
0414デフォルトの名無しさん
2009/07/28(火) 22:23:41スレッド?
0415デフォルトの名無しさん
2009/07/28(火) 22:29:461/64 s
0416デフォルトの名無しさん
2009/07/28(火) 22:37:57言いたかったのは単に最終的なスレッドの優先度を上げるということ。
0417デフォルトの名無しさん
2009/07/28(火) 23:23:520418デフォルトの名無しさん
2009/07/29(水) 00:05:42んだろ、発注元。
0419デフォルトの名無しさん
2009/07/29(水) 00:17:34必ずしも本来の要求仕様を満たすために必要のない手法を>>397自身が
考えているだけかもしれない。
なんかその可能性が高いように思う。
0420デフォルトの名無しさん
2009/07/29(水) 00:36:59で処理したら駄目なのかな・・・いや、そういう話じゃないな。
382の言うとおりマルチメディアタイマ使えばいいんじゃね?
0421デフォルトの名無しさん
2009/07/29(水) 00:47:18いや、Vistaはカンベンしてくれって話だろ?
0422デフォルトの名無しさん
2009/07/29(水) 00:48:140423デフォルトの名無しさん
2009/07/29(水) 00:49:070424デフォルトの名無しさん
2009/07/29(水) 01:16:390425397
2009/07/29(水) 02:13:03そもそもなぜXPなのか?
というのはその上役の人間が安定志向でXPで今まで出来てたんだから という考えのもとに言っているような感じです。
しかし、その実績はせいぜい50〜1000mSec程度なのでどのOSでも簡単に実装できるものでした。
新しい機械を開発するにあたり
そこそこ高速で移動するライン状の物の位置をエンコーダで追い、DIOの信号を利用して移動させる という処理が必要になり
上役の人間が打ち合わせをした際にその程度の処理なら出来る という憶測で仕事を受け入れてしまいました。
その尻拭い的な感じをいまやっているわけなのです。
多くの皆様意見をいただき本当にありがとうございます。
さすがに限界を感じる感じなので、CPUをフルに使う状態での運用か、それとも設計や方針自体を変更するべきなのかを上の人間にかけあってみます。
ちなみに単純な処理です
→ 物の流れる方向
|----------------目的地
センサ ↓
センサをONしたタイミングでエンコーダ値を取得・保持し、目的地の位置までパルスが移動したらDIO信号をONし、流れているものを矢印の方向へ稼働させる機械を動かす。
たったこれだけです。
PLCでやればどれだけ単純で簡単なレベル という話 orz
多くの意見、今後のPGに生かしていこうと思います。
はぁ・・・月曜日が鬱だw
0426デフォルトの名無しさん
2009/07/29(水) 03:16:370427デフォルトの名無しさん
2009/07/29(水) 06:05:48それ本当に1msの精度求められてるの?
仕分けでそこまでの速度を要求されるとは思えんのだが。
0428デフォルトの名無しさん
2009/07/29(水) 06:47:49intよりdoubleが早い環境なんて少数派だぞ
0429デフォルトの名無しさん
2009/07/29(水) 06:58:29カーネルから優先度の高い命令が割り込んだら何ぼでも処理落ちするぞ
0430デフォルトの名無しさん
2009/07/29(水) 08:05:160431デフォルトの名無しさん
2009/07/29(水) 12:06:08初めに書いたとおり1mSecまでは求められてはいませんが
自分がWindowsで制御するなかでは初めての精度になります。
まぁごくまれに処理抜けする程度ならリターンしてもう一度処理をすればいいのでそれはそれで何とかなるわけですが
その為、処理負荷をできるだけ下げつつ処理時間間隔を短くするために可能な範囲で試行錯誤してみています。
>>426
>>429
そうなんですよね
何というか・・・GUIがほしいのはわかるんですが・・・
ちなみに現在実機でタイマ精度変更後に一日動作させた感じ1処理は停止含めて15mSecを超えていない(StopWatch調べ)感じです。
CPU負荷も常時高い位置にあったものが時々大きく上がる程度まで抑えることができている感じです。
でもぶっちゃけ実運用になったら・・・ちょっと怖いかも
0432デフォルトの名無しさん
2009/07/29(水) 12:17:580433デフォルトの名無しさん
2009/07/29(水) 12:31:00”ずーっと確実に最長1msの周期で観測する”という要件しか聞いていないから,PCの電源が落とされた時点でアウト,
PCの電源落とさないってんなら,たった一日の観測(>>431)くらいで何か分かるわけでもないし.
おとなしくデバイス作ってUSBかシリアルで接続したほうが安心.
GUIはC#でいいだろうが
なんかPC障害でラインが暴走しそうな悪寒もする。
ちょっとした機能追加で制御不能になったりとか
担当者さんのデスマーチが目に浮かぶ
0435デフォルトの名無しさん
2009/07/29(水) 12:44:55GC時間考慮してねー
0436デフォルトの名無しさん
2009/07/29(水) 13:02:29もち注意して作る必要はあるけど。
0437デフォルトの名無しさん
2009/07/29(水) 19:25:38その説明だと、そもそも「目的地」のところにセンサをつけ、
その出力を「流れているものを矢印の方向へ稼働させる機械」に直結すれば
PCなんか要らないように思えるけど。
それにどうしてエンコーダが必要になるのか意味がわからない。
わざわざ目的地じゃなくてその手前なんかにセンサを付けるから、
目的地を検出するためだけにエンコーダが必要になるんじゃ?
0438デフォルトの名無しさん
2009/07/29(水) 20:39:38目的地にセンサつけたらだめだろw
目的地はn通りあるから事前に振り分ける処理が要る。
FAの機械ってのは大抵が独自のプロトコルで通信する。
だからPCなりPLCなどの中継が必要になる。
ここまでは皆理解していて、その先の精度や耐久性について語ってるのだよ。
0439デフォルトの名無しさん
2009/07/29(水) 22:02:36よくわかんない発想をする人だなあ。
仮に目的がN通りだとする。
それって何を基準に振り分けるの?
その仮説と>>425の説明をあわせれば、恐らく物体の高さか何かによって
ONするセンサが変わるから、それを基準に振り分けることになる。
だとすると、それってN個の目的地の直前で、対応するセンサと
「矢印の方向へ稼働させる機械」を直結することと等価でしょ。
0440デフォルトの名無しさん
2009/07/29(水) 22:37:57なんとなくセンサの設置法さえ工夫すればビジーループでポーリング、
なんてことしなくてもPCでもこなせそうな仕事にも思えるけど。
DIOの付属のライブラリって、たいてい入力のイベントでコールバックする
機能がついてると思うから、そのあたりとあわせればできるんじゃないのかな。
0441デフォルトの名無しさん
2009/07/30(木) 06:33:12バーコード、QR、RFIDなんかは普通に使うぞ?素人か?
0442デフォルトの名無しさん
2009/07/30(木) 19:46:27さっさと上司と拳闘しろ。
0443デフォルトの名無しさん
2009/07/30(木) 20:16:21そういう問題か。
そんなことは>>425の文章からは読み取れない。
余程の馬鹿じゃなければ、そんな重要なことは最初に明確に書くだろう。
0444デフォルトの名無しさん
2009/07/30(木) 20:42:16うーん
そんなこと無いケースが多々あるが・・・
0445デフォルトの名無しさん
2009/07/30(木) 20:48:450446デフォルトの名無しさん
2009/07/31(金) 12:41:04EventHandler eh += (sender, e) => { };
sender, eを使わない場合ラムダ式にしない方がいいの?
0447デフォルトの名無しさん
2009/07/31(金) 12:49:580448デフォルトの名無しさん
2009/07/31(金) 20:20:09LINQの目的に使わないのなら俺は使ってないなー
0449デフォルトの名無しさん
2009/08/01(土) 01:35:08ラムダ式使うなあ。
別に引数を使わないのはLinqでもあることだし。
0450デフォルトの名無しさん
2009/08/01(土) 08:27:420451デフォルトの名無しさん
2009/08/01(土) 12:16:38作ったメソッドをシグネチャ合わせるためにラムダ使うとかも良くあること。
0452デフォルトの名無しさん
2009/08/01(土) 13:20:590453デフォルトの名無しさん
2009/08/01(土) 13:29:180454デフォルトの名無しさん
2009/08/02(日) 01:07:34関連の強いクラスでも、内部クラスにするメリットがわからない。
Javaならすごいはっきりしてるけど・・・
0455デフォルトの名無しさん
2009/08/02(日) 01:08:100456デフォルトの名無しさん
2009/08/02(日) 01:13:55javaだろうがc#だろうがインナークラスの使い道なんて一緒だと思うけど…。
よくわからん疑問だな。
0457デフォルトの名無しさん
2009/08/02(日) 01:32:22おまえはおれかw
今日ふと気になってそれ調べてたよ。
外部クラスのprivateフィールド、関数にアクセスできるのが一番のメリットだろうね。
0458デフォルトの名無しさん
2009/08/02(日) 01:32:42わざわざ外に書くほどでもないとき
スコープ的にそのクラスの外に見れないようにしたりしたいし
0459デフォルトの名無しさん
2009/08/02(日) 01:49:07こんな遅い時間にサンクスコ!
>外部クラスのprivateフィールド、関数にアクセスできるのが一番のメリットだろうね。
ああ、なんか勘違いしてました。外部クラスのインスタンスは渡してやらなきゃいけないけど
privateにアクセス可能なんですね。馬鹿な漏れですみません。
C#ってJavaに似せてはいるけど、かなり別モンですね。
スコープっていうかアクセス権については、
Javaのパッケージプライベートに相当するものが欲しい・・・
でもプロパティは素晴らしいです!(JavaのBeansは最悪。)
0460デフォルトの名無しさん
2009/08/02(日) 02:26:210461デフォルトの名無しさん
2009/08/02(日) 02:59:270462デフォルトの名無しさん
2009/08/02(日) 03:00:55いつJavaが逆輸入してくれるかと期待してるんだが、無理なのか。
0463デフォルトの名無しさん
2009/08/02(日) 04:01:16delegateはVJ++時代の歴史的ないさかいがあるからあれだなぁ。
0464デフォルトの名無しさん
2009/08/02(日) 04:02:34デリゲートはありえなさそうだ
0465デフォルトの名無しさん
2009/08/02(日) 07:55:220466デフォルトの名無しさん
2009/08/02(日) 09:19:43そろそろスレ違いだな。
0467デフォルトの名無しさん
2009/08/02(日) 10:36:21パッケージスコープはinternalがある。
「名前空間」っていうのはそもそもクラスライブラリを使う側のためにあるものだから
作る側の実装の都合によるパッケージスコープとは明確に区別されてる。
どっちがいいかは別にして,考え方の問題。
0468デフォルトの名無しさん
2009/08/02(日) 10:48:310469デフォルトの名無しさん
2009/08/02(日) 11:03:033.0〜のWPFで非ジェネリックコレクションが一部使われてる理由は,
WPFはけっこう型にルーズで,突っ込まれたいろんな型のオブジェクトを
適当に自動的に変換したりするから
0470デフォルトの名無しさん
2009/08/02(日) 11:46:54考え方がどうとかはしらんが、
internalはexeやdllレベルのアクセス制限だから、Javaのpackage privateとは別モンだろ。
適度なアクセス制限かけたい時に、いちいちdllに分けるとかありえんwww
0471デフォルトの名無しさん
2009/08/02(日) 12:59:45x = x > y ? 10 : cancel;
Open(Exist(path) ? path : cancel);
引数にcancelが入るとそのメソッドは実行されない
0472デフォルトの名無しさん
2009/08/02(日) 13:05:420473デフォルトの名無しさん
2009/08/02(日) 13:14:30じゃあこれでExist(path)がfalseになったときはExecも実行されないの?
aやbやcやdは?
無駄に複雑になりすぎる
0474デフォルトの名無しさん
2009/08/02(日) 13:33:320475デフォルトの名無しさん
2009/08/02(日) 13:38:21こう書けりゃいいのにな
0476デフォルトの名無しさん
2009/08/02(日) 13:57:46あー、なんか無理っぽいね
全部実行されないで欲しい感じはするものの
0477デフォルトの名無しさん
2009/08/02(日) 13:59:240478デフォルトの名無しさん
2009/08/02(日) 14:38:47代入式なのに代入されない場合があるって、すんごいキモイと思うんだけど
どうだろうか
0479デフォルトの名無しさん
2009/08/02(日) 14:41:25if(x > y) x = 10;
cancel導入だとむしろ多くなるじゃないか
0480デフォルトの名無しさん
2009/08/02(日) 14:53:24これでいいじゃん
三項演算子にこだわる必要どこにもないし
0481デフォルトの名無しさん
2009/08/02(日) 14:53:480482デフォルトの名無しさん
2009/08/02(日) 14:57:360483デフォルトの名無しさん
2009/08/02(日) 15:22:100484デフォルトの名無しさん
2009/08/02(日) 16:35:49FileNotFoundExceptionなどをcatchでしょ。
ファイルは存在さえすれば開けるというものじゃないから、
どのみちtryする必要あり。それならばExistで存在確認するのは無駄。
0485デフォルトの名無しさん
2009/08/02(日) 16:38:230486デフォルトの名無しさん
2009/08/02(日) 16:40:160487デフォルトの名無しさん
2009/08/02(日) 16:40:50ファイルを開こうとして失敗するなんて秒間何千回起こるようなものでもないんだから
重たいとか別に関係ない
0488デフォルトの名無しさん
2009/08/02(日) 16:42:34これもよく揉める議題だよね。
頻度を考慮したらそんなに避けるべき問題でもないという結論に。
0489デフォルトの名無しさん
2009/08/02(日) 17:03:41どっちみち頻度考えたら問題にはならないけど
0490デフォルトの名無しさん
2009/08/02(日) 23:04:04→ファイルを開くアクションを起こすと時々アプリケーションが終了
→作業内容が喪失
→作業意欲低下
→業務が滞る
→会社の収益が低下
→GDPが減少
→犯罪発生率の上昇
→本国崩壊
→朝鮮半島がなにかを主張し始める ←ここまで1年半
つまり例外処理反対派は反日親韓ということ?
0491デフォルトの名無しさん
2009/08/02(日) 23:10:37それを言うなら、
例外が思い(ママ)からファイルを開くときにチェック<する>
だろ。
いつも思うんだが、ネタっていうのは分かってる奴がやるから面白いんであって、
何もわかってない奴が無理してやるネタなんて面白くもないともないんだよお馬鹿さん。
0492デフォルトの名無しさん
2009/08/02(日) 23:14:210493デフォルトの名無しさん
2009/08/02(日) 23:14:51??
0494デフォルトの名無しさん
2009/08/02(日) 23:17:53重いから処理しないのはゆとり
0495デフォルトの名無しさん
2009/08/02(日) 23:18:03FileNotFoundExceptionを別にcatchするだけで十分じゃねーの
0496デフォルトの名無しさん
2009/08/02(日) 23:19:400497デフォルトの名無しさん
2009/08/02(日) 23:25:500498デフォルトの名無しさん
2009/08/02(日) 23:56:25Try(() => Open(path)).Catch<FileNotFoundException>(ex => Console.Write(ex));
とか書けたらいいなと思ってるのは俺だけじゃないはず
というか多分書けるな
今から作ってこよう
0499デフォルトの名無しさん
2009/08/03(月) 00:05:20醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
0500デフォルトの名無しさん
2009/08/03(月) 00:10:24こんなオナニーコード見せられたら卒倒しちゃうよ。
0501デフォルトの名無しさん
2009/08/03(月) 00:14:510502デフォルトの名無しさん
2009/08/03(月) 01:43:51賛同者はごくまれだろうな・・・・・
0503デフォルトの名無しさん
2009/08/03(月) 02:18:060504デフォルトの名無しさん
2009/08/03(月) 03:17:30みたいのはあるけどな。
もちろん理由があって。
0505デフォルトの名無しさん
2009/08/03(月) 05:05:40というのは作った。
0506デフォルトの名無しさん
2009/08/03(月) 05:10:590507デフォルトの名無しさん
2009/08/03(月) 07:06:190508デフォルトの名無しさん
2009/08/03(月) 12:01:360509デフォルトの名無しさん
2009/08/03(月) 12:47:28public static T Try<TEx,T>(Func<T> func) where TEx : System.Exception {
try { return func(); } catch (TEx ex) { Console.WriteLine(ex); return default(T); }
}
0510デフォルトの名無しさん
2009/08/03(月) 13:08:020511デフォルトの名無しさん
2009/08/03(月) 13:12:370512デフォルトの名無しさん
2009/08/03(月) 13:20:440513デフォルトの名無しさん
2009/08/03(月) 13:27:070514デフォルトの名無しさん
2009/08/03(月) 15:10:120515デフォルトの名無しさん
2009/08/03(月) 15:19:57短くなってない、見にくくなってるだけが多いのはなんでだ。
0516デフォルトの名無しさん
2009/08/03(月) 15:20:14に気付くのにPGはじめて数年かかった
0517デフォルトの名無しさん
2009/08/03(月) 15:21:540518デフォルトの名無しさん
2009/08/03(月) 15:48:42思いつかないけど
0519デフォルトの名無しさん
2009/08/03(月) 18:00:32同感、未だ短く書きたい病発症してますけど、つか冗長コード書くやつ死ね派ですが
Tryは間違ってるだろと思うわ
0520デフォルトの名無しさん
2009/08/03(月) 18:05:090521デフォルトの名無しさん
2009/08/03(月) 18:34:03とりあえずPerlとかRubyは糞。
0522デフォルトの名無しさん
2009/08/03(月) 18:36:490523デフォルトの名無しさん
2009/08/03(月) 18:52:040524デフォルトの名無しさん
2009/08/03(月) 19:00:180525デフォルトの名無しさん
2009/08/03(月) 19:30:49ラムダ式なんて書けて当然読めて当然
ラムダ厨も叩いている奴も意識しすぎできもいよ
0526デフォルトの名無しさん
2009/08/03(月) 19:37:500527デフォルトの名無しさん
2009/08/03(月) 20:08:430528デフォルトの名無しさん
2009/08/03(月) 20:17:190529デフォルトの名無しさん
2009/08/03(月) 20:18:54TryってVBじゃねえの
0530デフォルトの名無しさん
2009/08/03(月) 20:20:220531デフォルトの名無しさん
2009/08/03(月) 20:23:110532デフォルトの名無しさん
2009/08/03(月) 20:27:530533デフォルトの名無しさん
2009/08/03(月) 20:33:24お前らの書くコードは二番!
0534デフォルトの名無しさん
2009/08/03(月) 20:37:400535デフォルトの名無しさん
2009/08/03(月) 20:59:430536デフォルトの名無しさん
2009/08/03(月) 21:00:330537デフォルトの名無しさん
2009/08/03(月) 21:09:53保守するのはお前らだし
0538デフォルトの名無しさん
2009/08/03(月) 21:46:04そう思ってたころもありました・・・
0539デフォルトの名無しさん
2009/08/03(月) 22:39:59じゃあEnum.GetNamesとかはどうなの?遅くならんの?
0540デフォルトの名無しさん
2009/08/03(月) 22:48:220541デフォルトの名無しさん
2009/08/03(月) 22:49:040542デフォルトの名無しさん
2009/08/03(月) 22:49:59といっても配列の作成とコピーは毎回行われるので注意
0543デフォルトの名無しさん
2009/08/03(月) 22:51:320544デフォルトの名無しさん
2009/08/03(月) 23:14:44リフレクションは遅いからプロパティ情報をキャッシュするのだ!って言って
DictionaryとかにPropertyInfoやMethodInfoをキャッシュしてるサンプル見るんだけど、
どうせキャッシュするならデリゲートにしとけっつの。
圧倒的に速いしリフレクション特有の問題も起きない。
0545デフォルトの名無しさん
2009/08/03(月) 23:29:47キャッシュするのはあまり意味がないとかいうのをMSDN Magagineあたりで読んだ覚えがある。
パフォーマンスのためなら>>544の言うようにデリゲートをキャッシュする。
0546545
2009/08/03(月) 23:34:54あった
0547デフォルトの名無しさん
2009/08/03(月) 23:47:28デリゲートをキャッシュする効果に比べたら全く無意味と言っていいレベルだな。
0548デフォルトの名無しさん
2009/08/03(月) 23:55:42だったらなおさら時間を大事にしろよ。
頭悪いのかね。
0549デフォルトの名無しさん
2009/08/04(火) 00:46:070550デフォルトの名無しさん
2009/08/04(火) 01:20:090551デフォルトの名無しさん
2009/08/04(火) 01:53:580552デフォルトの名無しさん
2009/08/04(火) 18:11:07領域を確保したbyte型の配列を以下の関数Funcに渡したいのですが、
どうすればいいのでしょうか?
byte[] bytes = new data[640*480];
Func(????)
void Func(ref byte data){
}
0553デフォルトの名無しさん
2009/08/04(火) 18:14:22Func(ref bytes[n]);
0554デフォルトの名無しさん
2009/08/04(火) 18:14:40}
何でこうなるのか考えてから次に進めよ
0555デフォルトの名無しさん
2009/08/04(火) 18:18:01void Func(byte[] data)
0556デフォルトの名無しさん
2009/08/04(火) 18:26:09レス有難う御座います。
この場合、関数の型を以下で定義するべきなのは重々承知しております。
void Func( byte [] data)
ただ、この関数は他社提供のクラスライブラリの為、替えることができません。
これってやっぱり、関数の定義ミスでしょうか?
ちなみに、この関数は某大手電卓メーカの提供しているクラスライブラになります。
0557デフォルトの名無しさん
2009/08/04(火) 18:27:03それなら使い方をサポートに問い合わせるのが一番だろ
0558デフォルトの名無しさん
2009/08/04(火) 18:31:21恥ずかしながら、保守契約が切れていてけないのです
・・・ちょっと見落としていたけど、553の案で行けそうな気がしてきた
0559デフォルトの名無しさん
2009/08/04(火) 18:33:58すいません。 有難うございます。
3時間ぐらいハマってた・・・
皆様有難う御座いました。
0560デフォルトの名無しさん
2009/08/04(火) 18:34:140561デフォルトの名無しさん
2009/08/04(火) 18:35:35要は配列の中の1バイトを書き換えるプログラムってことか…?
0562デフォルトの名無しさん
2009/08/04(火) 18:37:300563デフォルトの名無しさん
2009/08/04(火) 18:48:06ネイティブコードのラッパライブラリみたいです。
サンプルさえあれば、こんなにハマることは無かったのですが、
本当に助かりました。感謝!!!!
0564デフォルトの名無しさん
2009/08/04(火) 18:52:540565デフォルトの名無しさん
2009/08/04(火) 18:57:52これはひどそうな匂いがぷんぷんしてくるな
0566デフォルトの名無しさん
2009/08/04(火) 19:26:21ぱっと見た感じで怪しいのは確かだが。
0567デフォルトの名無しさん
2009/08/04(火) 19:36:16void Func(byte* data)
を、C# に持ってくるときに
void Func(byte[] data)
にするべきはずのところを
void Func(ref byte data)
にしただけだと思う
まあわかりやすい間違いだな
0568デフォルトの名無しさん
2009/08/04(火) 19:57:55文系のプログラムわからないぼくですが
仕事の兼ね合い覚えないといけないことになりました。
やはり先に本をかって進めていったほうがよろしいですか?
0569デフォルトの名無しさん
2009/08/04(火) 20:01:21いくらPCに詳しくても,プログラミングでは「なんとなく触ってたら使える」というのはありえません
0570デフォルトの名無しさん
2009/08/04(火) 20:03:09それってC#でなきゃいけないの?
0571デフォルトの名無しさん
2009/08/04(火) 20:08:39はい、C#で開発なんで
それでないといけないと思います。
本で初心者用って書いてあればなんでも平気ですかね。
0572デフォルトの名無しさん
2009/08/04(火) 20:10:16いきなり前者に挑むと挫折します。
0573デフォルトの名無しさん
2009/08/04(火) 20:12:58ここからが本当の地獄だ
0574デフォルトの名無しさん
2009/08/04(火) 20:17:23助かります。
2種類あったのか・・・
visualstudio2005を使うんですが、C#って書いてあったようなきがしたけど
visualC#ってことでいいのでしょうか?
0575デフォルトの名無しさん
2009/08/04(火) 20:22:36その中でC#を使うならVisualC#2005を使うことになる。
二種類あるっていうのは,例えるなら>>572の前者は英文法の本,後者は英会話の本だ。
0576デフォルトの名無しさん
2009/08/04(火) 20:23:44なんと・・・・
VisualC#で探します、ほんと助かりました。
前者後者で差が結構ありますね¥・・
0577デフォルトの名無しさん
2009/08/04(火) 20:30:01プログラミング未経験者がいきなり本で独学でC#とか俺は無謀だと思う。
特別地頭がいいなら別だけど。
こういうスレの連中は変な見栄と気取りがあるから認めないと思うけどねw
いきなりC#でも人に直接教えて貰えばなんとかなるかもしれんけど、
そういう訳にいかんのかな。
0578デフォルトの名無しさん
2009/08/04(火) 20:30:590579デフォルトの名無しさん
2009/08/04(火) 20:32:57うちの会社教えてくれる人いないんですよ・・・
これやってねって言った人も始めてだし。
今まで仕事・・・まぁ新入社員だけど
プログラミング教えてもらったことなど一度もないんです。
本渡されてどうぞ?しかないです。
0580デフォルトの名無しさん
2009/08/04(火) 20:37:02「VisualC#入門」みたいな本買ってきて一通り打ち込んで動かしてみてそれからだな
プログラミング自体に興味が持てれば次は文法の本に行けばいいし無理ならキャリアスクールへどうぞ
0581デフォルトの名無しさん
2009/08/04(火) 20:45:10最初は入門書は定番の有名なのより、
手取り足取りタイプの超入門書を2〜3冊読み漁るのがいい。
物足りなくなったら定番に移行。
0582デフォルトの名無しさん
2009/08/04(火) 20:55:54C#が無謀なら何ならいいの?
0583デフォルトの名無しさん
2009/08/04(火) 20:56:17実際に仕事したことのない講師が教えてそうで怖いわ。
0584デフォルトの名無しさん
2009/08/04(火) 21:10:35お金になるとききました
(経理的な意味で)
0585デフォルトの名無しさん
2009/08/04(火) 21:34:40>複数の単語で構成されるパブリック メンバ、型、および名前空間の名前には、常に Pascal 形式を使用してください。
ってあるけどプライベートなメンバの命名規則はどこにあるの?
0586デフォルトの名無しさん
2009/08/04(火) 21:35:54それ「クラスライブラリ開発者向け」のガイドラインだからアセンブリの外から見えないメンバについては
どうでもいいの
0587デフォルトの名無しさん
2009/08/04(火) 21:37:020588デフォルトの名無しさん
2009/08/04(火) 21:49:370589デフォルトの名無しさん
2009/08/04(火) 21:52:150590デフォルトの名無しさん
2009/08/04(火) 21:55:530591デフォルトの名無しさん
2009/08/04(火) 22:29:410592デフォルトの名無しさん
2009/08/04(火) 22:32:20もともとそういうコンセプト
0593デフォルトの名無しさん
2009/08/04(火) 22:38:090594デフォルトの名無しさん
2009/08/04(火) 22:40:130595デフォルトの名無しさん
2009/08/04(火) 23:07:540596デフォルトの名無しさん
2009/08/04(火) 23:09:540597デフォルトの名無しさん
2009/08/04(火) 23:12:02そうなんだけど非推奨なんだよw
0598デフォルトの名無しさん
2009/08/04(火) 23:16:02確かに腹違いだ
0599デフォルトの名無しさん
2009/08/04(火) 23:18:450600デフォルトの名無しさん
2009/08/04(火) 23:32:40どの辺が?
0601デフォルトの名無しさん
2009/08/04(火) 23:42:45誰に向かって反論してるわけ?
「どの辺」にそんなこと書いてあるの?
どうでもいいけど、こんなちっちゃいことで自分を大きく見せたい奴は
大概その意図に反して無能な奴だわな。
0602デフォルトの名無しさん
2009/08/04(火) 23:46:250603デフォルトの名無しさん
2009/08/04(火) 23:47:37非推奨と書いてある箇所は何処でしたっけ?MSDNみてるけど出てこない。
0604デフォルトの名無しさん
2009/08/04(火) 23:48:080605デフォルトの名無しさん
2009/08/04(火) 23:49:240606デフォルトの名無しさん
2009/08/04(火) 23:49:360607デフォルトの名無しさん
2009/08/04(火) 23:59:12conditional (DEBUG) { }とか
0608デフォルトの名無しさん
2009/08/04(火) 23:59:40条件付コンパイルがやり難くてしょうがないと思うんだけど。
とくに条件が複数のプロジェクトを横断的に規定するようなものだった場合。
0609デフォルトの名無しさん
2009/08/05(水) 00:02:52うわっ、キモっ
0610デフォルトの名無しさん
2009/08/05(水) 00:03:40悪いことは言わん。明日の退社後にでも、夜でもやってるパソコン教室へ、せめて1日(2時間)だけでも行ってこい。
最低限のとっかかりがないと、参考書のコードをそのまま入力するのも大変だろうし、ぐぐることもできんはず。
つーか、俺を雇ってくれよ…
0611デフォルトの名無しさん
2009/08/05(水) 00:09:54習得に相当時間がかかったのだろうか。
0612デフォルトの名無しさん
2009/08/05(水) 00:12:26悪いことは言わん。明日の朝にでも職安へ行ってこい。
0613デフォルトの名無しさん
2009/08/05(水) 01:17:30明日の朝、退職願出して、ハローワークに行って、事務か介護か土方の仕事探しな。
お前みたいな奴が居ると迷惑だ。
0614デフォルトの名無しさん
2009/08/05(水) 06:32:24http://msdn.microsoft.com/ja-jp/library/ms229045.aspx
アンダースコア (_) やハイフン (-) など、英数字以外の文字は使用しないでください。
ハンガリー表記法は使用しないでください。
読み直したらこれはプロパティのことだけに言ってるのか一般的なことに言ってるのかがわからんようになった。
0615デフォルトの名無しさん
2009/08/05(水) 07:25:28>>586の見解で正しいと思う。
自メンバーのアクセスには全部this.つけろより、
前か後ろにアンダーバーのほうが好みだ。
0616デフォルトの名無しさん
2009/08/05(水) 08:43:360617デフォルトの名無しさん
2009/08/05(水) 09:27:46これの前に日本語つくよねw
0618デフォルトの名無しさん
2009/08/05(水) 09:42:06アンダーバーってキーボードの位置的に押しづらくて、先頭に持ってきたくない。
0619デフォルトの名無しさん
2009/08/05(水) 09:46:470620デフォルトの名無しさん
2009/08/05(水) 09:58:360621デフォルトの名無しさん
2009/08/05(水) 10:18:09そのあとC#使うときはどっちになるんだか・・・
0622デフォルトの名無しさん
2009/08/05(水) 10:24:360623デフォルトの名無しさん
2009/08/05(水) 10:25:160624デフォルトの名無しさん
2009/08/05(水) 10:54:16エンティティフレームワークなんて、Hogesってテーブルがあったらデフォルトで
エンティティ=Hoges
エンティティセット=Hoges設定
だぜ。
0625デフォルトの名無しさん
2009/08/05(水) 11:12:590626デフォルトの名無しさん
2009/08/05(水) 12:05:34よくわからないままになるかもしれないかな。
C++ から入るとあまり問題にならないような気がする。
0627デフォルトの名無しさん
2009/08/05(水) 12:08:040628デフォルトの名無しさん
2009/08/05(水) 12:18:26いきなりおまじないから始まるのはちょっと考えもの。
0629デフォルトの名無しさん
2009/08/05(水) 12:30:56逃げられないからこそよくわからないままでいられないってことでしょ?
0630デフォルトの名無しさん
2009/08/05(水) 12:51:180631デフォルトの名無しさん
2009/08/05(水) 14:33:24プリプロセスのうちヤバイとされる物の一つだからそりゃなくなるだろ。
また、define の方は、Conditional アトリビュートを使えとのいうがC#流。
これによって、マクロ機能等をライブラリ化する時に捨てず、きっちりdllまで維持して再コンパイル等を防止している。
0632デフォルトの名無しさん
2009/08/05(水) 15:14:12csc /define:HOGE ... やMSBUILDのスクリプトで指定するのが原則。
0633デフォルトの名無しさん
2009/08/05(水) 17:17:09あるクラスインスタンスの値を取得する部分
work = myClass;
と、クラスインスタンスの参照をセットする部分
myClass = new MyClass();
これってそれぞれクリティカルセクション化しないとまずいですか?
内部で何をやっているのか分からず不安なんですが、何でもかんでもlockするのは嫌なので…
また、intなどの値型でも同じことが言えるんでしょうか。お願いします。
0634デフォルトの名無しさん
2009/08/05(水) 17:57:080635デフォルトの名無しさん
2009/08/05(水) 18:42:230636デフォルトの名無しさん
2009/08/05(水) 18:50:180637デフォルトの名無しさん
2009/08/05(水) 18:59:04その時にどのように動作させるという設計があって、
その上で内部のデータや動作が不正にならないための条件を導いて、
それを壊さないようにロックなどで保護するんだよ。
だから何の前提もなくただスレッドセーフなんてのはない。
0638デフォルトの名無しさん
2009/08/05(水) 21:49:32bool a = true, b = false, c = true;
if ((a = b == c) == (a == b == c))
d();
else
e();
0639デフォルトの名無しさん
2009/08/05(水) 21:53:460640デフォルトの名無しさん
2009/08/05(水) 21:53:470641デフォルトの名無しさん
2009/08/05(水) 21:55:20クイズです
0642デフォルトの名無しさん
2009/08/05(水) 21:58:15演算子の優先順を問う感じだろうけど=と==をどっち優先にしてもdになる気がする
0643デフォルトの名無しさん
2009/08/05(水) 22:01:080644デフォルトの名無しさん
2009/08/05(水) 22:03:05(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
0645デフォルトの名無しさん
2009/08/05(水) 22:17:530646デフォルトの名無しさん
2009/08/05(水) 22:26:34(f == t == f) が (f == t) ?
なんで?
0647デフォルトの名無しさん
2009/08/05(水) 22:33:06基本的に優先順位とか気にしたくないのでかっこでくくってますが( ゚Д゚)ナニカ?
0648デフォルトの名無しさん
2009/08/05(水) 22:34:560649デフォルトの名無しさん
2009/08/05(水) 22:39:14eだろ
0650デフォルトの名無しさん
2009/08/05(水) 22:53:01(f == t == f) の出所は?
0651デフォルトの名無しさん
2009/08/05(水) 23:18:16=> (a = (F == T)) == (a == b == c)
=> (a = F) == (a == b == c)
=> F == (F == (F == T))
=> F == (F == F)
=> F == T
=> F
なので e が正解
0652デフォルトの名無しさん
2009/08/05(水) 23:21:370653デフォルトの名無しさん
2009/08/05(水) 23:28:05まて結合の優先順位と、実行される順序は別だ。
(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
0654デフォルトの名無しさん
2009/08/05(水) 23:32:290655デフォルトの名無しさん
2009/08/05(水) 23:34:36(a = b == c) == (a == b == c)
-> X == Y
の右辺Yからやることになり、地獄行きになるんです
0656デフォルトの名無しさん
2009/08/06(木) 00:13:440657651
2009/08/06(木) 03:03:09すまん4行目は F == ((F == F) == T) だな。
結果は一緒。
ttp://msdn.microsoft.com/ja-jp/library/aa691323(VS.71).aspx
0658633
2009/08/06(木) 09:04:57遅くなってすみません。
たとえば、スレッドAとスレッドBで変数myClassを共有している
スレッドAでは、myClassに新規インスタンスをセットする
while( 1 )
{
myClass = new MyClass();
}
スレッドBでは、myClassを作業用変数に確保し、さまざまな処理を実行する
while( 1 )
{
MyClass work = myClass;
workに対しての様々な処理
}
代入演算子はオーバーロードしていません
ちょっと何をやりたいかわかりにくいかもしれませんが、これだけを見た場合に問題はありそうですか?
内部的に参照カウント関係の処理が走っていたりして、危険だったりしますか?お願いします。
0659デフォルトの名無しさん
2009/08/06(木) 09:10:07スレッドBのループが一回回る間にスレッドAのループが何回回るか全く分からないんだよ?
それにいくらメモリを意識しなくていいといったってさすがにノーウェイトでnewしまくったらGCの負担になる
0660デフォルトの名無しさん
2009/08/06(木) 09:21:04GCの負荷は考慮しないとして、スレッドセーフかっていう質問なんですが・・・
要するに
myClass = new MyClass();
と
MyClass work = myClass;
のところをロックしないとメモリを壊したりしますか?ってことが聞きたいんです
C言語なら問題無いはずですがC#だとどうなのかな?って
>>635 の言うようにこれ自体はロックしなくても問題ないんですかね^^;
0661デフォルトの名無しさん
2009/08/06(木) 09:28:22ロックされる云々の前に多分それ意図してるように動かないよ。エスパーしてみるとw
0662デフォルトの名無しさん
2009/08/06(木) 09:29:44AでMyClassのコンストラクタが呼ばれた後に,Bで古いインスタンスが使われる可能性はある
0663デフォルトの名無しさん
2009/08/06(木) 09:32:020664デフォルトの名無しさん
2009/08/06(木) 09:36:37つまり、myClassが32bitだとすると16bitだけ新しい値に書き換わってるという状態は存在しない。
一方doubleやlongはそういう状態が発生しえる。
ただしマルチCPUの場合はもう少しややこしくて、
スレッドAが書き換えたmyClassの内容がスレッドBに反映するまでにタイムラグが発生する場合がある。
これが問題になるならlockを使用するかmyClassをvolatileで宣言する。
Cのvolatileとの違いに注意。
0665デフォルトの名無しさん
2009/08/06(木) 09:44:520666デフォルトの名無しさん
2009/08/06(木) 09:58:55ただしなくてもメモリが壊れるとかのレベルの問題はない。
実質的にはCLR2.0以降のメモリモデルと86系CPUのメモリモデルから、
事実上はvolatileなくても問題ないはず。
0667デフォルトの名無しさん
2009/08/06(木) 10:02:260668デフォルトの名無しさん
2009/08/06(木) 10:13:300669デフォルトの名無しさん
2009/08/06(木) 10:40:47MyClassの初期化が終わる前にスレッドBに参照が渡ってしまう可能性がある。
ただし、これが起きるのはMSだとItatiumの場合だけ。
原理的には有名なダブルチェックロッキング問題と同じ。
myClassをvolatileにしない場合のスレッドA
while( true ){
MyClass tmp = new MyClass();
Thread.MemoryBarrier();
myClass = tmp;
}
0670デフォルトの名無しさん
2009/08/06(木) 11:15:280671デフォルトの名無しさん
2009/08/06(木) 11:20:35ついでにその問題を出すなら、Aのメモリバリアだけじゃだめ。
なぜなら、Bスレッドのワーク変数が目的通りに動かないから。
ワーク変数への各アクセスで、新しい参照を読んでしまう危険がある。
かなり直感に反する動作だと思うけど。
結局この場合もvolatileつけるのが最も簡単確実。
0672デフォルトの名無しさん
2009/08/06(木) 11:58:19いや大丈夫でないから.NET2.0で.MemoryBarrier()が追加になってるわけで。
myClassからworkの参照コピーは1回限りのようだから問題ない。
work変数はローカルなんだし、
MyClassはスレッドAでセットしたあとは放置状態なのだから、
途中で新しい参照を読み込むことはありえない。
workは一貫したクラスを参照できてれば、MyClassのバージョンは問わないという前提だよ。
0673デフォルトの名無しさん
2009/08/06(木) 12:00:37List<int> _list = new List<int>();
//(本当は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<int>はインデックス0からデータを順番に必ず返すのでしょうか?
やってみた感じ必ず返っては来ているようなんですが、保障されているというような感じの文章がヘルプから探せなかったので質問させていただきました。
よろしくお願いいたします。
コレクションやソーテッドリストなんかはその並び順は勝手に変わるようですがListオブジェクトはどうもみあたらない・・・orz
0674デフォルトの名無しさん
2009/08/06(木) 12:11:221 次元配列の場合、要素はインデックス 0 から始まってインデックス Length ? 1 で終わるインデックスの昇順に走査されます。
多次元配列の場合、要素は、最初に右端の次元のインデックスが増加し、次にその左側の次元のインデックスが増加し、さらにその左側の次元のインデックスが増加する、というように走査されます。
0675デフォルトの名無しさん
2009/08/06(木) 12:37:54int のコレクションとして考えれば0〜インデックスの最後までの順序で処理される
それでもってListコレクションの中身も同じように処理されるということでしょうか?
ということであればすっきり処理を続けることができます。
ありがとうございました!
0676デフォルトの名無しさん
2009/08/06(木) 13:09:05違うよ。
メモリバリアはCLIの標準仕様では必要。
CLR2.0以降の実装では不要だとしても、互換性の為には必要になる。
だからある。
あとソースコード上はワーク変数に1回だけ取得してても、
実際にはワーク変数を削除して毎回実体にアクセスするという、
直感的でない最適化が行われる可能性があるんだよ。
共有してる変数をvolatileにすればそれを防げる。
0677デフォルトの名無しさん
2009/08/06(木) 13:11:030678デフォルトの名無しさん
2009/08/06(木) 14:05:33ありがと、勉強になった。MSDNマガジンで確かに見た気がするがスルーしてた。
0679デフォルトの名無しさん
2009/08/06(木) 14:46:29CLR2.0以降では書き込みアクセスでのvolatileは事実上不要だけど、
読み取りでは必要な可能性もあったと思う。
書き込み順序と回数はデフォルトでvolatileのように保証されるが、
読み込みは場合によっては省略されることがある。
ただ、その他諸々の事情により、実際に問題が出るパターンはあまりなかったと思う。
0680デフォルトの名無しさん
2009/08/06(木) 17:20:59DLL側で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++で記述した場合で、これは問題なく動作しま
す。
以上、よろしくお願いいたします。
0681デフォルトの名無しさん
2009/08/06(木) 17:43:07ttp://msdn.microsoft.com/ja-jp/library/2s9wt68x(VS.80).aspx
の一番下
0682デフォルトの名無しさん
2009/08/06(木) 17:57:520683デフォルトの名無しさん
2009/08/06(木) 21:44:03>>681
症状からして、そのページに書かれていることが起きている(C#はDLLを動的にローディングしている)
のだろうな、とは思っていたのですが、それを回避する方法がなにかあるのではないかと質問させてい
ただきました。
>>682
MangedなラッパDLLを作成し、これにMyDll.libをリンクしてみましたが、ラッパDLLがC#アプリからは
動的にローディングためか結局ダメでした。
何か、裏技がありませんかねえ??
0684デフォルトの名無しさん
2009/08/06(木) 21:52:250685デフォルトの名無しさん
2009/08/06(木) 21:57:020686デフォルトの名無しさん
2009/08/06(木) 22:23:540687デフォルトの名無しさん
2009/08/06(木) 23:40:08激しくめんどい。
インプロセスサーバーだと駄目だった。
0688デフォルトの名無しさん
2009/08/07(金) 02:56:45マネージ側は参照だけでいいんで動的ロードとか言わんけど
0689デフォルトの名無しさん
2009/08/07(金) 08:47:30ネットワークPCのドライブにあるフォルダをアクセスしようとした時、
たまたまそのPCが立ち上がっていなくてネットワーク上に見つからない
場合に長く待たされていました。このタイムアウト時間はたぶんOS
の設定で変えられるものとは思うのですが、タイムアウトにならない
うちにプログラムでアクセスを中断してしまうことは可能でしょうか?
0690デフォルトの名無しさん
2009/08/07(金) 10:09:550691デフォルトの名無しさん
2009/08/07(金) 10:18:07http://sourceforge.net/projects/sharppcap/files/SharpPcap/
0692デフォルトの名無しさん
2009/08/07(金) 11:42:39ども、でもなんかよくわからないです
エラー 2 型または名前空間名 'NetDefineSet' は名前空間 'StackAsterisk' に存在しません。アセンブリ参照が不足しています。
とか
0693デフォルトの名無しさん
2009/08/07(金) 12:04:490694デフォルトの名無しさん
2009/08/07(金) 12:16:19別スレッドでチェックしに行って適当にタイムアウトとかできるんじゃ?
0695デフォルトの名無しさん
2009/08/07(金) 13:22:57そういやなんかサンプルそのままじゃビルドできなかった記憶があるな
>The Code Projectによいサンプルがあったので拝借させていただき、それを元に書いてみました。
>元となったのは 「RawSocket Class-Create Network Monitoring (Packet Sniffing) Apps」 というものです。
って書いてあるしそっちも参考にするといい
0696デフォルトの名無しさん
2009/08/07(金) 14:39:340697デフォルトの名無しさん
2009/08/07(金) 14:49:45Frameworkが吸収するところじゃないのか
0698デフォルトの名無しさん
2009/08/07(金) 15:34:45大多数の他人はそう思わない
0699デフォルトの名無しさん
2009/08/07(金) 16:48:150700デフォルトの名無しさん
2009/08/07(金) 16:59:52実害は無いからとやかく言わない
0701デフォルトの名無しさん
2009/08/07(金) 17:06:23つうかふつうに固まるだろ・・・・
問題はみに行く時に固まるつうのが問題なわけで
なにかボタン押したときにチェック
↓
チェック中ですのダイアログ的なものと共に強制キャンセルボタン
↓
チェック開始(バックグラウンドワーカーでもなんでも)
↓
バックグラウンド終了前にキャンセルされたら
ナックグラウンドワーカー停止
こんなんでいいんじゃね?
成功のときはバックグラウンドの完了イベントかなんかで処理するとか
色々あると思うけど
0702デフォルトの名無しさん
2009/08/07(金) 17:25:470703デフォルトの名無しさん
2009/08/07(金) 18:37:58吸収してどうしろって?
別プロセスからの例外をプロセス間通信で受け取るの?
それをフレームワークでやれって?
0704デフォルトの名無しさん
2009/08/07(金) 19:01:230705デフォルトの名無しさん
2009/08/07(金) 20:19:40Form2 _form2 = new Form2(_form1);
としたとき、_form2.FormClosedのイベントハンドラで_form1.Close()するコードを書くと、
Form2.OnFormClosed()が何度も呼ばれる(つまりFormClosedイベントが何度も発生する)
ようなんだけど、これは仕様?バグ?
仕様だとしたらどう理解したらいいんだろう?
0706デフォルトの名無しさん
2009/08/07(金) 20:25:45って言えば分かる?
0707デフォルトの名無しさん
2009/08/07(金) 20:34:10そのレベルの話はOK
0708デフォルトの名無しさん
2009/08/07(金) 20:53:58止まるのはハンドルが消えるから
0709デフォルトの名無しさん
2009/08/07(金) 20:59:15現象の説明としてはそれでいいと思うんだけど、
俺が聞きたいのはそういうことじゃなくて、それが仕様なのか、
仕様だとしてそれに何らかの意味があるのかってこと。
FormClosedイベントの意味は、「Close()が呼ばれました」ではないはずだよね。
0710デフォルトの名無しさん
2009/08/07(金) 21:06:03> フォームが閉じられた後に発生します。
「Form.Closeが呼ばれました」でも大体いいんじゃないかな
ま、おいらはMSの人じゃないので意味とか答えられないけど
0711デフォルトの名無しさん
2009/08/07(金) 21:09:46それはさすがに読解力マズいんじゃないかと思うけど。。
0712デフォルトの名無しさん
2009/08/07(金) 21:50:300713デフォルトの名無しさん
2009/08/07(金) 21:52:550714デフォルトの名無しさん
2009/08/07(金) 21:55:570715デフォルトの名無しさん
2009/08/07(金) 22:07:36MSDNの説明から読み取れるのは
・ユーザ操作、Close()、Application.Exit()で発生しうる
・FormClosedが発生した時点ではフォームは閉じられている
の2点だけじゃね?
てか、説明が怪しいと感じたら英語版を読むといい
それでも怪しいときも多いけどな
0716デフォルトの名無しさん
2009/08/07(金) 22:20:48また毎回同じ回数なのか場合によって変わるのかどんな感じ?
0717デフォルトの名無しさん
2009/08/07(金) 22:33:34以下が問題を再現する最短のコード。
コンストラクタは省略してある。
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++);
}
}
0718デフォルトの名無しさん
2009/08/07(金) 22:53:53とりあえずDisposedイベントでForm1.Closeやるように変更したら
現象回避出来たぞ
0719デフォルトの名無しさん
2009/08/07(金) 23:00:06うん、それはわかるけど、
俺が知りたいのはこういうコードを書くと「何故」そんなことになってしまうか、なんだ。
普通に考えれば、OnFormClosedが何度も呼ばれるのは理解に苦しむと思うんだが。
0720デフォルトの名無しさん
2009/08/07(金) 23:00:45何がおかしいのかよくわからない
0721デフォルトの名無しさん
2009/08/07(金) 23:02:44まあ所持関係にあるForm同士として呼び出してるんだから
> _form2.Show(this);
Form1閉じる→Form2閉じる
っていうのは標準動作として組み込まれてる
逆方向の動きを追加したい場合(Form2閉じる→Form1閉じる)は
標準の動作と競合しないようにしなきゃ不具合が起きて当たり前
FormClosed()の時点ではForm同士の所持関係を破棄していないようなので
無限ループが起きる
Disposed()の時点でForm同士の所持関係を破棄しきったので
やりたい動作が実現できる
0722デフォルトの名無しさん
2009/08/07(金) 23:07:42と言いたい訳か。
んで_form2が完全に閉じた後だから、_form2_FormClosedが呼ばれても子フォームのCloseが呼ばれるのはおかしい、と
0723デフォルトの名無しさん
2009/08/07(金) 23:15:06this.BeginInvoke((MethodInvoker) (() => Close()));
親フォームが子フォームを閉じるための参照のコレクションを持ってて、
親フォームから登録を抹消するタイミングがFormClosedの後なんだろうな。
0724デフォルトの名無しさん
2009/08/07(金) 23:16:44>_form2が完全に閉じた後だから、_form2_FormClosedが呼ばれても子フォームのCloseが呼ばれるのはおかしい、と
いや、そこは必ずしもそうは思わないけど、>>717のコードの動作が「おかしい」と思う点は、
何度も言うけどOnFormClosedの呼ばれ方が、MSDNに書かれたFormClosedイベントの仕様に
反するように思える点。
0725デフォルトの名無しさん
2009/08/07(金) 23:17:10なんかそれタイミング次第で
うまく行ったり例外おきたり
危険な動作しそうな気がする
0726デフォルトの名無しさん
2009/08/07(金) 23:18:43その都度Shownイベントが発生したりはしないよね。
0727デフォルトの名無しさん
2009/08/07(金) 23:19:47Formのオーナーシップの関係で
Formクラスから子FormのCloseが呼び出されるってことでしょ
何も反してないよ
0728デフォルトの名無しさん
2009/08/07(金) 23:23:40だから、FormClosedイベントの意味、つまり仕様は、「Closeメソッドが呼ばれました」
ではないよね。少なくともMSDNライブラリを詠む限り、そうは読み取れない。
0729デフォルトの名無しさん
2009/08/08(土) 00:26:580730デフォルトの名無しさん
2009/08/08(土) 00:37:46こんなこと言いたくないが、馬鹿はすっこんでてくれよ。
二重の意味で日本語も読めないのかまったく……
0731デフォルトの名無しさん
2009/08/08(土) 00:40:59どう見てもお前の方が馬鹿だが
0732デフォルトの名無しさん
2009/08/08(土) 00:41:33お話になりません
0733デフォルトの名無しさん
2009/08/08(土) 00:59:09Closeを何度呼ぼうが、実際に閉じたタイミングで一度だけ発生する
と期待するのは普通の感覚。
MSDNの説明も普通に読めばそうだと期待する。
一度しか呼ばれない、とは明記されてないし結局仕様なんだろうとは思うけど。
0734デフォルトの名無しさん
2009/08/08(土) 01:05:380735デフォルトの名無しさん
2009/08/08(土) 01:14:25クラス単体の動作を説明してるのが基本であって
フレームワークの中でそのクラスがどう扱われてるかは
オマケ程度にしか説明されていない
っていうことをわかって無いから的外れなこと言い出すんだよね
0736デフォルトの名無しさん
2009/08/08(土) 01:28:44ほほう、「的外れ」とは?
具体的に何がどう「的外れ」だ、と?
いや、無理しなくていいよ。
そんな自分の頭で理解していることを表現しているとは思えない、
悪いけど意味不明な文章を書いているようじゃたぶん正面からの回答は無理だと思うから。
しかし、別に初心者が悪いと思わんけど(誰だって最初はそうだし)
知りもしないことに口出しして挙句に相手をいきなり罵倒する奴っていうのは
迷惑以外の何者でもないな本当。
初心者どころか自分でイベントを生成するコードすら書いたことすらないのが、
言っちゃ悪いがミエミエなのに。
まあそれ以前に日本語もまともに読めていないようだけどw
2chでこんなこと言ってみても仕方ないのは分かっているが、あまりに腹が立ったのでね。
0737デフォルトの名無しさん
2009/08/08(土) 03:20:050738デフォルトの名無しさん
2009/08/08(土) 04:57:360739デフォルトの名無しさん
2009/08/08(土) 06:37:29_form2_FormClosed() の処理が
if (e.CloseReason == CloseReason.UserClosing)
Close();
じゃないの点が問題なんだよ
何度も Form2 に FormClosed が送られてくるのも
あくまでも Form2.FormClosed イベントが終了していない段階で
Form1 を改めて閉じようとしているからループしてるに決まってるだろ
ユーザ操作以外ではどうせ親から Close が送られてくるから無視でいい
0740デフォルトの名無しさん
2009/08/08(土) 16:24:060741デフォルトの名無しさん
2009/08/08(土) 18:41:56また、
ラベルの上に小さめのテキストボックスを重ね、一つのコントロールにすることはできますか?
調べましたが分かりませんでした。
どなたか教えてください
(T_T;)。
0742デフォルトの名無しさん
2009/08/08(土) 19:08:280743デフォルトの名無しさん
2009/08/08(土) 19:45:28WindowsフォームアプリケーションでWPFのコントロールを使えるんだっけ…。
0744デフォルトの名無しさん
2009/08/08(土) 19:50:05ユーザ要求により Form2 に WM_CLOSE が送られ
その処理中に Form2 から Form1 に WM_CLOSE が送られ
Form1 が閉じる際に子ウィンドウに対して WM_CLOSE が送られ
その処理中に Form2 から Form1 に WM_CLOSE が送られ……
WM_CLOSE から発生する一連の処理が終了してない間に
改めて WM_CLOSE を流したらループするだろ
0745デフォルトの名無しさん
2009/08/08(土) 19:51:38Windows Forms の編集時にツールボックス見たら
WPF 相互運用機能グループに ElementHost あるでしょ
0746デフォルトの名無しさん
2009/08/08(土) 19:56:57あくまで.NET Frameworkの、いわゆる「イベントの連鎖」が起こってるだけ
(しかも仕様というよりバグが原因ぽい)だから、ちょっとその説明は違うと思うけど。
0747デフォルトの名無しさん
2009/08/08(土) 19:57:050748デフォルトの名無しさん
2009/08/08(土) 20:09:080749デフォルトの名無しさん
2009/08/08(土) 20:11:01Element(UIElement) を Host するから ElementHost。
0750デフォルトの名無しさん
2009/08/08(土) 20:14:18TextBoxやらはボーダーなしにして、
その親としてPanelを用意して、
そのPanelのPaintで枠を描画
0751デフォルトの名無しさん
2009/08/08(土) 20:15:37嘆かわしい
0752デフォルトの名無しさん
2009/08/08(土) 20:31:56だれかC#でiPhone開発してる人来ないかな・・・
0753デフォルトの名無しさん
2009/08/08(土) 20:34:520754デフォルトの名無しさん
2009/08/08(土) 20:44:260755デフォルトの名無しさん
2009/08/08(土) 21:12:16PanelにPaintができるの?
枠線入りの画像をパネルの背景にするってこと?
0756デフォルトの名無しさん
2009/08/08(土) 21:17:07もしWPFを使うなら,テキストボックス一つ一つをElementHostでホストするようなことはお勧めしない
ある程度の大きい範囲で丸ごとWPFにしてElementHostに乗せる
0757デフォルトの名無しさん
2009/08/08(土) 21:28:28具体的にどうやるの?
panel1_iventが出てきたけど…。
0758デフォルトの名無しさん
2009/08/08(土) 21:45:350759デフォルトの名無しさん
2009/08/08(土) 21:51:23もちろん初めにフォームを表示するときも呼ばれるな
0760デフォルトの名無しさん
2009/08/08(土) 21:51:350761デフォルトの名無しさん
2009/08/08(土) 22:14:24それらの全ての四辺を描画するならば、
重たくなりそう。
0762デフォルトの名無しさん
2009/08/08(土) 22:16:19ラベルやテキストボックスにbordercolorがないのが困る。
0763デフォルトの名無しさん
2009/08/08(土) 22:17:19エレメントホストはどれくらい重たいのかな。
今からやってみよ。
0764デフォルトの名無しさん
2009/08/08(土) 23:01:35なんかまともにレスする奴がいないんで見てられないからレスするけど、
そんなのは普通に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; }
}
0765デフォルトの名無しさん
2009/08/08(土) 23:02:47protected 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;
}
}
}
0766デフォルトの名無しさん
2009/08/08(土) 23:09:41細かいことだけど、WndProcよりもOnPaintのオーバーライドのほうが簡潔では?
もちろんsuper.OnPaint呼ぶ手間含んで。
0767デフォルトの名無しさん
2009/08/08(土) 23:09:50すごい。ありがとうございます。がんばって解読します。
この継承クラスをまた継承したら、命令を抑えてコーディングできますね。
※ なんで継承したら、bodercolorが出てくるんだろう---。
0768デフォルトの名無しさん
2009/08/08(土) 23:10:55やってみればわかるよ。
0769デフォルトの名無しさん
2009/08/08(土) 23:12:08それら全てに色枠線を描いたら、重たいのかな。
0770デフォルトの名無しさん
2009/08/08(土) 23:30:00ごめんなさい。言うとおりだった。
ググったらこんな記述も見つけた。PaintイベントがないならOnPaintもなくて当然か。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.textboxbase.paint.aspx
> TextBoxBase.Paint イベント
> コントロールが再描画されると発生します。このクラスでは、このイベントは使用されません。
0771デフォルトの名無しさん
2009/08/08(土) 23:35:450772デフォルトの名無しさん
2009/08/09(日) 07:46:49さんの記事に、
「using (Pen pen = new Pen(BorderColor)) 」
という行がありますが、using句は名前空間の定義のみに使用するわけではないのですか?
どういうケースでusing句を指定するケースがあるのでしょうか。
0773デフォルトの名無しさん
2009/08/09(日) 07:47:50MSDNくらい読めよクソタコ
0774デフォルトの名無しさん
2009/08/09(日) 07:54:42using (Graphics g = CreateGraphics())
{
using (Pen pen = new Pen(BorderColor))
{
}
}
だとネストが深くなるから
using (Graphics g = CreateGraphics())
using (Pen pen = new Pen(BorderColor))
{
}
の方がいいな。
0775デフォルトの名無しさん
2009/08/09(日) 07:56:28using (Graphics g = CreateGraphics(), Pen pen = new Pen(BorderColor))
0776デフォルトの名無しさん
2009/08/09(日) 09:16:17そうやって並べると見辛くないか? >>774でいいじゃん
0777デフォルトの名無しさん
2009/08/09(日) 10:00:280778デフォルトの名無しさん
2009/08/09(日) 10:26:241965年の出版でしかも純粋な美術書。でも、なぜフィボナッチ数の課題を
出されるのかピンとこないプログラマは一度目を通してみるとよい。
0779デフォルトの名無しさん
2009/08/09(日) 11:14:400780デフォルトの名無しさん
2009/08/09(日) 12:15:280781デフォルトの名無しさん
2009/08/09(日) 12:23:240782デフォルトの名無しさん
2009/08/09(日) 13:30:330784デフォルトの名無しさん
2009/08/09(日) 18:35:56コンパイル
0785デフォルトの名無しさん
2009/08/09(日) 19:08:36こうやると枠線だけ書いて、中の文字塗り潰してしまうイメージあったけど
これでいけるんだ
勉強になりました
0786デフォルトの名無しさん
2009/08/09(日) 19:13:38みんな、なんでそんなに詳しいの?
頭脳を分けてほしいよ。
0787デフォルトの名無しさん
2009/08/09(日) 19:14:550788デフォルトの名無しさん
2009/08/09(日) 20:23:350789デフォルトの名無しさん
2009/08/09(日) 20:27:500790デフォルトの名無しさん
2009/08/09(日) 20:33:280791デフォルトの名無しさん
2009/08/09(日) 20:37:31オーナードローじゃないぜ
0792デフォルトの名無しさん
2009/08/09(日) 20:44:390793デフォルトの名無しさん
2009/08/09(日) 21:05:54このロジックはどこに書くの?
デザイナーズcs?
それとも本体の方?
0794デフォルトの名無しさん
2009/08/09(日) 21:39:42SS見せてほしいんだけどw
0795デフォルトの名無しさん
2009/08/09(日) 22:21:54SSってなに?
0796デフォルトの名無しさん
2009/08/09(日) 22:24:170797デフォルトの名無しさん
2009/08/09(日) 22:26:350798デフォルトの名無しさん
2009/08/09(日) 22:28:15膨大な数のテキストボックスを早く負担なく描くには何かいいテクニックはありますか?
0799デフォルトの名無しさん
2009/08/09(日) 22:29:39なんでボーリングスコア表なんていんねん。
0800デフォルトの名無しさん
2009/08/09(日) 22:31:47マウスを使って一つずつペタペタ描く。
それしかないだろ。
本を見てもそう書いてた。
間違っていたらごめん。
0801デフォルトの名無しさん
2009/08/09(日) 22:40:380802デフォルトの名無しさん
2009/08/09(日) 22:45:24ジードって読むの?
初めて聞きました。
詳しく教えてください。
僕もマウスて配置していてくたびれました。
0803デフォルトの名無しさん
2009/08/09(日) 22:47:17DateGridView
0804デフォルトの名無しさん
2009/08/09(日) 22:48:40その本は何個のテキストボックスをポトペしていた?
10個超えてたらダウト
0805デフォルトの名無しさん
2009/08/09(日) 22:59:555つのコマンドボタン。
揃える技は書いてたけど、大量描画についてはコメントなし。
0806デフォルトの名無しさん
2009/08/10(月) 00:37:08結局自前で描画する予感
なら1枚絵で作ってしまえ!とか
0807デフォルトの名無しさん
2009/08/10(月) 00:42:530808デフォルトの名無しさん
2009/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";
}
0809デフォルトの名無しさん
2009/08/10(月) 01:39:290810デフォルトの名無しさん
2009/08/10(月) 01:41:46案1 人手で全て列挙を行う
案2 コンパイラの忠告を無視して後々のメンテナンスを全て投げきってもいいならリフレクション
後で人手で行った場合の数倍のツケを支払う覚悟があるなら
機械的にリフレクションを通してもいいかも
0811デフォルトの名無しさん
2009/08/10(月) 01:41:540812デフォルトの名無しさん
2009/08/10(月) 01:47:17案2の方法をお教えください。
0813デフォルトの名無しさん
2009/08/10(月) 01:48:25c# リフレクション フィールド 列挙
で出てきたの↓
http://dobon.net/vb/dotnet/programing/typegetmembers.html
0814デフォルトの名無しさん
2009/08/10(月) 01:50:23ありがとうございました。
0815デフォルトの名無しさん
2009/08/10(月) 02:11:580816デフォルトの名無しさん
2009/08/10(月) 02:29:09馬鹿のお前がいっても説得力がない。
0817デフォルトの名無しさん
2009/08/10(月) 02:31:24一旦リフレクション使って集計して
その後手作業でソース起こしてもいいかもね
0818デフォルトの名無しさん
2009/08/10(月) 07:04:010819デフォルトの名無しさん
2009/08/10(月) 09:10:28これはよくやる
自動生成しちゃえばいいんだよね
0820デフォルトの名無しさん
2009/08/10(月) 11:09:010821デフォルトの名無しさん
2009/08/10(月) 11:26:49日本語としては「ひちがつ」が正しいがレッドブックの「なながつ」も間違いではない
ただ朝鮮人や関西人が良く使う「しちがつ」は明らかに間違い
これを使っていると日本人である事を疑われるので気を付けるように
0822デフォルトの名無しさん
2009/08/10(月) 11:31:29なんか最近BOT多くね?
0823デフォルトの名無しさん
2009/08/10(月) 14:27:140824デフォルトの名無しさん
2009/08/10(月) 20:20:390825デフォルトの名無しさん
2009/08/11(火) 00:07:46constとリフレクションは非常に相性が悪い
0826デフォルトの名無しさん
2009/08/11(火) 01:13:45もしかしてCLI時点でconst修飾の名前ってきえちゃうの?
0827デフォルトの名無しさん
2009/08/11(火) 01:29:130828デフォルトの名無しさん
2009/08/11(火) 01:31:13だからリテラルにできない物はconst宣言できない
0829デフォルトの名無しさん
2009/08/11(火) 01:38:09型の定義としては残っているのでリフレクションで確認できる。
public static const field System.String const_test_1
0830デフォルトの名無しさん
2009/08/11(火) 01:40:05.field public static literal string const_test_1 = "aaa1"
0831デフォルトの名無しさん
2009/08/11(火) 01:57:240832デフォルトの名無しさん
2009/08/11(火) 02:26:21まあ気持ちは分かる
0833デフォルトの名無しさん
2009/08/11(火) 08:30:520834デフォルトの名無しさん
2009/08/12(水) 02:27:350835デフォルトの名無しさん
2009/08/12(水) 06:20:06class F<T> where T : System.Delegate
0836デフォルトの名無しさん
2009/08/12(水) 20:09:48一例として載ってる。
要するにわざと禁止しているものなので理由を考えて
みるといいと思うよ
0837デフォルトの名無しさん
2009/08/13(木) 15:52:09一定期間経過したフォルダを
DirectoryInfo.Delete(true)で削除しているんだが
毎日少しずつ削除時間が延びていくんだが
なんか理由知っている人いない?
削除の他にも処理をしているんだが
なぜか削除だけ時間がかかる
IOの問題なのかな?
ちなみに、、、
OS:windows 2003 server R2
Enterprise x64 Edition
Service Pack2
0838デフォルトの名無しさん
2009/08/13(木) 16:39:000839デフォルトの名無しさん
2009/08/13(木) 20:45:04そもそもログの量、大きさは同じくらいなの?
0840デフォルトの名無しさん
2009/08/14(金) 00:23:18毎日一定時間に処理をしてるんじゃないのか。
削除終了時に終了後から一定時間をセットするなら
削除処理にかかる時間分ずれていくだろ。
0841デフォルトの名無しさん
2009/08/14(金) 00:45:25vista + C# express edition + excel2007です
参照設定で参照の追加でcom タブでmicrosoft excel5.0をみると
microsoft excel5.0 ?????????? と出てるんですけど・・・
これって一体・・・・2007以前のexcel入れれば治るのでしょうか?
とても不安です・・・
壊れてるのかなC#・・・(涙
0842デフォルトの名無しさん
2009/08/14(金) 02:03:58最初は断片化かな?とか思ったけど、メモリリークな気もする。
C#はジェネリクスとnewで管理されているけど解放されないメモリが
簡単にできちゃうから、仮想メモリにガリガリアクセスして時間が
かかってしまう可能性も否めない。
Process Explorerあたりで確認して、GCのジェネレーション2が
異常にでかいサイズなら解放漏れ(ジェネリクスのClearやDisposeのし忘れ)を
確認してみたらどうだろう。
0843デフォルトの名無しさん
2009/08/14(金) 02:06:10気になる
これってアンマネージドで管理されているメモリの話?
それともマネージドだが古すぎてpermanent(永久?)領域に直ぐに移されちゃう話?
それとも両方混ざった話?
0844デフォルトの名無しさん
2009/08/14(金) 02:13:250845842
2009/08/14(金) 02:35:11ちょっと怖い書き方をしてしまったけど、要は使わないクラスがどっかで
参照されてるので消されずにメモリが圧迫されてるかも、という事です。
ソートとかで一時領域として使ってたDictionaryに、そのまま参照が残っちゃってて、みたいな。
開発中、デバッガ終了後なかなか処理が戻ってこない時はこの現象が起きてるか
疑ってみたほうがいいかも。と、経験者よりorz
0846デフォルトの名無しさん
2009/08/14(金) 05:20:44Directory.Delete(String, Boolean)を使ったらどうか。
0847841
2009/08/14(金) 08:32:260848837
2009/08/14(金) 11:20:52>>838
ディレクトリのサイズが32MBぐらいで
普通に"rmdir"コマンドで削除すると1分ぐらいです。
>>839
削除しているのは、数日経過したディレクトリなので
他の人は見てないです。
>>840
日付ごとにディレクトリを作成して
その配下に時間ごとのサブディレクトリを
作成してプロセスごとのログを出力しています。
"日付ディレクトリ"の日付を見て
数日経過していたら削除するという
処理を行っています。
>>842
自分も最初はメモリリークを疑っていました。
ページファイルが1日で5MBずつ増えていますが
そのせいで削除処理が約30秒も伸びるんでしょうか?
削除処理だけで、他の処理は遅くなっていないのも
気になっています。
>>846
毎回newしています。
解放処理は明示的に行っていないので
参照が残ってしまっているのでしょうか?
0849デフォルトの名無しさん
2009/08/14(金) 12:18:00>普通に"rmdir"コマンドで削除すると1分ぐらいです。
0850デフォルトの名無しさん
2009/08/14(金) 12:58:350851デフォルトの名無しさん
2009/08/14(金) 13:54:140853デフォルトの名無しさん
2009/08/14(金) 14:07:13エスパーさせんな
0854デフォルトの名無しさん
2009/08/14(金) 14:08:400855デフォルトの名無しさん
2009/08/14(金) 14:42:25ファイルの数があまりに多いと関連の処理がどんどん重くなる
確かWindowsのファイルテーブルてツリー構造してるの見た目だけで
実際はドライブごとに一つの表があるだけだから
ドライブ内のファイル/フォルダの数が多くなる度に
ファイル/フォルダ絡みのあらゆる動作が遅くなる
間違ってたらごめん
0856デフォルトの名無しさん
2009/08/14(金) 15:14:190857デフォルトの名無しさん
2009/08/14(金) 15:22:48フォルダの中身ごと削除の時点で全スキャンだし
0858837
2009/08/14(金) 15:58:22すみません。。
フォルダ数:約9500
ファイル数:約52500
膨大な数ですよね。
>>855
毎回削除する"フォルダ数"/"ディレクトリ数"は
変わらないのですが
それでも段々遅くなるのでしょうか?
0859デフォルトの名無しさん
2009/08/14(金) 16:07:16数日でそんなに溜まるログとか設計が狂ってる
0860デフォルトの名無しさん
2009/08/14(金) 16:10:390861デフォルトの名無しさん
2009/08/14(金) 16:18:10相当マシになるはず
0862837
2009/08/14(金) 17:51:15設計というよりも、そういう仕様なので
仕方ない部分もあるのですが・・・
アドバイスを参考にしたいと思います。
0863デフォルトの名無しさん
2009/08/14(金) 18:46:36というのなら、今まで消したファイルもスキャンしてるとかないか?
0864842
2009/08/15(土) 01:15:55>そのせいで削除処理が約30秒も伸びるんでしょうか?
>削除処理だけで、他の処理は遅くなっていないのも
>気になっています。
その、今の所、日を追うごとに増えているデータってのが
ページファイルだけなら疑ってみる価値はあるかと。
ファイル削除とページングでハードディスクへのリクエストがかち合って
ガリガリ言ってる時間が長くなれば可能性はあるかと。
削除プログラムが常駐プログラムなら一度再起動してみて速度をみてみるのはどうだろう?
それ以前にgen2の値はどうなんだろう?これでリークか否かの答えは出ると思うんだけど。
毎回起動なら、そのページファイルを増やしている別のプログラムをつきとめた方がいいかも。
なんにせよ、そのサーバはリークを起こしているっぽいw
0865デフォルトの名無しさん
2009/08/16(日) 12:42:56どのような方法が一番妥当ですか?
クライアントの隠れている部分も含めて画像変換したいので、
PrintScreenではだめです。
0866865
2009/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
すみませんでした。
0867865
2009/08/16(日) 13:04:11http://ufreyr.blog80.fc2.com/blog-date-200703.html
0868837
2009/08/17(月) 14:29:39遅くなりましたが、「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
これって、リークしているのでしょうか?
0869864
2009/08/17(月) 18:07:10削除プログラムに常に必要とされているメモリが64M弱が正しいならリークしてないです。
これが削除処理を実行する度に増えているなら、かなり怪しいです。
個人的な見解としてはファイルが何ギガあっても削除するだけに64Mは異常です。
CLR Profilerで何にメモリを使っているのか調べます。
更にいうと、64M程度で体感速度に差が出るとは考えづらいです。
他のヒープも合わせ削除処理中にムチャなメモリ確保がある可能性も視野に入れます。
ただし処理時間の原因がメモリリークであり、それが改善された場合、
これ以上削除時間が延びる事は無いはずなのでクレームが来るまで放置しますw
0870デフォルトの名無しさん
2009/08/17(月) 23:10:33特定の命令が呼び出されたら割り込みが入るまで待機ということをしたい。
それを実現するために、スクリプトを実行するごとにスレッドを呼び出してイベント来るまで待機ということをしているんだが、
これだと多数のユーザーがスクリプトを実行したときにリソースが枯渇しそうなことに気付いた。
スレッドプールで書き直したいんだが、ブロックするような処理をするのはまずいとMSDNに書いてあった.
これってイベントが来るまで待機するような処理も含まれるの?
0871デフォルトの名無しさん
2009/08/17(月) 23:44:280872870
2009/08/17(月) 23:55:180873デフォルトの名無しさん
2009/08/18(火) 00:22:37そのまえにペイソンとかいう言語はC#とどの程度相互運用できるんだ
0874デフォルトの名無しさん
2009/08/18(火) 00:28:520875デフォルトの名無しさん
2009/08/18(火) 00:59:190876デフォルトの名無しさん
2009/08/18(火) 01:07:010877デフォルトの名無しさん
2009/08/18(火) 01:46:040878デフォルトの名無しさん
2009/08/18(火) 10:24:410880デフォルトの名無しさん
2009/08/18(火) 17:25:17paythonって何だよ
ironpaythonって何だよ
0881デフォルトの名無しさん
2009/08/18(火) 17:36:430882デフォルトの名無しさん
2009/08/18(火) 20:44:150883デフォルトの名無しさん
2009/08/18(火) 20:46:14アイロンペイソンってサーバーで動かすPaythonスクリプトにもなれるの?
0884デフォルトの名無しさん
2009/08/18(火) 21:22:55>>870
マジレスしようと何度か読み直してみたがさっぱり意味が解らない。
とりあえず質問の内容は最後の2行のみ?
で、ブロックしそうなのはクライアント側?サーバ側?
っつか多分日本語でやりとりしてもらちがあかなそう。簡単なソース出して
これはおk?ってやった方が、キミとは上手くやっていけそうな気がする。
0885デフォルトの名無しさん
2009/08/18(火) 21:53:42}
とかってコード期待w
0886デフォルトの名無しさん
2009/08/18(火) 22:35:00亀だが・・・
64M程度ならドトネトでは普通じゃないかと思う
結局メモリ量は予約領域でもあるはずだから純粋に使用しているメモリというわけではないだろうし
0887870
2009/08/18(火) 23:54:18ソースをさらします。
サーバーが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<string, ManualResetEvent> ManualEvent = new Dictionary<string, ManualResetEvent>();
//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();
}
0888870
2009/08/18(火) 23:55:49×//別スレッドから呼び出し
○//同じクライアントから特定のパケットを受け取ると呼び出される(パケットを受け取る部分は非同期ソケットを使ってます)
0889デフォルトの名無しさん
2009/08/19(水) 00:08:34これに64Mはありえない。それからgen2は回収に何度か失敗している領域。
現在使用中かつ長い間確保されている可能性が高い。
とまぁ、レスの情報と自分の経験からの推測な訳です。はい。
本当に64Mが適正か否かは>>837氏のみが知る所でしょう。
0890デフォルトの名無しさん
2009/08/19(水) 19:00:23今ちょっと頼まれて
テキストボックスとボタンのフォームだけがあります。
そしてそれに必須入力チェック、桁数チェック、書式チェックと言う条件を作らないといけないのですが
当方初心者でまるでわかりません。
まず、True,Falseの場合に出すメッセージボックスを作ります。
そしてIF文でどっちに行くかを条件付けるんですが
どのようにして記述していけばいいのでしょうか・・・・
0891デフォルトの名無しさん
2009/08/19(水) 21:30:380892デフォルトの名無しさん
2009/08/19(水) 21:31:420893デフォルトの名無しさん
2009/08/19(水) 21:53:520894デフォルトの名無しさん
2009/08/19(水) 22:19:58アクセスではあるらしいね。
0895デフォルトの名無しさん
2009/08/19(水) 22:34:110896デフォルトの名しさん
2009/08/19(水) 22:46:10C#を始めて1年くらいで、2Dグラフィック周りを主にやってます。
最近、JAVAプログラムのオープンソフトでJDrafter(hhp://jdrafter.com/)とい
うソフトを発見したのですが、 このソフトは、イラレ感覚で2Dグラフィックを作成し、Javaの
オブジェクトとして保存できるため、Javaプログラムからの表示やアニメーションなどにも応
用できるようなのですが、 どなたか、C#でこんなプログラムをご存知の方いないでしょうか。
もしくは、オープンソフトなので、描画周りのクラスをC#に変換して利用できないか考え
ているところですが、どなたかその方法やこれに適したjava→C#変換ツールをご存知
の方があれば、ご教授をお願いします。
0897デフォルトの名無しさん
2009/08/19(水) 22:54:200898デフォルトの名無しさん
2009/08/19(水) 22:55:300899デフォルトの名無しさん
2009/08/19(水) 22:56:590900デフォルトの名無しさん
2009/08/19(水) 22:59:36フラットスタイル…
C♯にあるの?
0901デフォルトの名しさん
2009/08/19(水) 22:59:48javaに変えてもいいのですが、今までの資産や、C#の将来性を考えると簡単に
は決断できません。
ググってもみましたが、どうしてもわからないのでお尋ねしているところです。
0902デフォルトの名無しさん
2009/08/19(水) 23:01:03イラレ感覚がいいんならイラレ -> xaml のエクスポータ使えばー
0903デフォルトの名しさん
2009/08/19(水) 23:17:21ありがとうございました。
xamlテクノロジーは始めて知りました。(勉強不足ですみません。)
xamlについて調べて、フリーの(金がないので) ツールなんかがない
かいググります。どうもありがとうございました。
0904デフォルトの名無しさん
2009/08/19(水) 23:36:490905デフォルトの名無しさん
2009/08/19(水) 23:49:290906デフォルトの名無しさん
2009/08/20(木) 00:11:200907デフォルトの名無しさん
2009/08/20(木) 00:59:00Photoshop(.psd)やIllustrator(.ai)を直接取り込めるようになったBlend 3を使うのが楽だとは思うけど↓みたいなのもある。
XamlXporter for Illustrator
http://www.codeplex.com/Wiki/View.aspx?ProjectName=xamlxporter
>>903
Inkscapeがオススメ。日本語化されてて標準でXAML出力に対応してる。
0908デフォルトの名無しさん
2009/08/20(木) 02:14:500909デフォルトの名無しさん
2009/08/20(木) 06:44:320910デフォルトの名無しさん
2009/08/20(木) 07:02:50ユーザーコントロールでもコントロールテンプレートでも作れるはず
0911デフォルトの名無しさん
2009/08/20(木) 08:27:030912デフォルトの名無しさん
2009/08/20(木) 11:35:37VS2008のプロジェクトに*.iniファイルを含めて
プロジェクト出力として一緒に出力したいのですが、
クラスライブラリプロジェクトの場合うまくいきません。
これは仕様でなんでしょうか?
<<設定例>>
ファイルプロパティ
ビルドアクション:コンテンツ
出力ディレクトリにコピー:常にコピー
0913デフォルトの名無しさん
2009/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));
こういう雰囲気でいけそうな気がするのですが、わかりません。よろしくお願いします。
0914デフォルトの名無しさん
2009/08/20(木) 18:43:57単一ループ内でkeep-aliveを処理できるお手軽なアプローチ無いでしょうか?
// listner起動
while (true)
{
// Context取得 (ブロック)
// Request処理
// Response処理
if (Connection == close)
{
break;
}
}
と言う様な処理を行い、
要は、ソケットの接続〜切断のモデルと近似にしたいのです。
理由は、データ管理や前回のリクエスト/レスポンスに強く依存した処理の為、簡単に回したいと言う感じです。
アドバイスと慈悲を下さい。
0915デフォルトの名無しさん
2009/08/20(木) 18:52:23プロジェクト出力ってセットアッププロジェクトの話?
セットアッププロジェクトでDLLだけ配布するの?
>>914
プロトコルに何使うのさ
>>913
Excelの質問には答えられないけど、エラーの内容ぐらい書いた方がいいんでないか
0916デフォルトの名無しさん
2009/08/20(木) 18:55:59httpです
0917デフォルトの名無しさん
2009/08/20(木) 20:16:18HTTP で keep-alive でのみセッションが維持されるなんて
仕様外の特殊な事考えたりしてるなら
独自プロトコルでやった方がいい
0918デフォルトの名無しさん
2009/08/20(木) 22:27:310919デフォルトの名無しさん
2009/08/20(木) 22:37:11つまりソケットの接続〜切断のモデルと同じなんじゃね?
ソケットつかえばおk
0920デフォルトの名無しさん
2009/08/20(木) 23:46:05開発するアプリケーションの利用環境は、Win2003、Win2008、WinVistaなどを想定している開発です。
質問します。
C#でファイル名の整合性を確認する関数はあるでしょうか?
ファイル名に使えない文字を取得する、System.IO.GetInvalidFileNameChars()は知っていますが、これだと
CON, PRN, AUX, CLOCK$, NUL COM0, COM1, COM2, COM3……
のような文字列を調べることができません。
また、開発環境こそWinXP Proなんですけれども、開発するアプリケーションは
クライアント・サーバ方式のアプリケーションで、クライアントからサーバにファイルを作成する形式のものです。
サーバはWin2003かWin2008、クライアントはWinVistaかWinXPです。
そうなってくると、いったんクライアントでファイルを作成して、実際に有効なファイル名かどうかを
確認する手段もOSの差を吸収できるかどうかに疑問が生じます。
このような場合、一体どのようにしてファイル名として有効な文字列かどうか判断したらよいか
教えてください。
お願いいたします。
0921デフォルトの名無しさん
2009/08/20(木) 23:48:30質問させていただきたいのですが、sqrtやsinなどの数学系の関数を使うとき
Math.Sqrt(2.0)
といちいちMath.をつけるのが(複雑な式をコーディングするときにMathだらけになる)
嫌なのですがこれを書かないでいいようにするにはどうしたらいいのでしょうか。
多分Console.WriteをWriteだけにしたいというのと同じ意味だと思いますが。
よろしくお願いいたします。
0922920
2009/08/20(木) 23:54:54質問を取り消します。
0923デフォルトの名無しさん
2009/08/20(木) 23:56:21Math.Sinを呼び出すだけのローカル関数でも作っとけば
0924デフォルトの名無しさん
2009/08/20(木) 23:56:42開発効率が悪いからもっと便利なクラスを使いたいです
0925デフォルトの名無しさん
2009/08/20(木) 23:58:210926デフォルトの名無しさん
2009/08/21(金) 00:00:060927デフォルトの名無しさん
2009/08/21(金) 00:16:18それはそういうものなのですか。VC#で開発してるとあまりそういうことは
みんな面倒とは思わないためでしょうか?
いずれにせよ、手軽にできるわけではないんですね。ありがとうございました。
0928デフォルトの名無しさん
2009/08/21(金) 00:18:17Math って書くのが普通。とくに面倒じゃないよ。
0929デフォルトの名無しさん
2009/08/21(金) 00:36:50オブジェクト指向というのはそういうもの。
0930デフォルトの名無しさん
2009/08/21(金) 00:52:29Math.Sinをコンパクトに記述することを考えるより、
式そのものを簡単にすることをまず考えるべきだろうね。
数学の数式だって同じだと思うけど、式が複雑だっていうなら
いくつかの部分に分けて部分ごとに一時変数に入れるとかね。
まあ数式の場合と違って、数値計算の場合は演算誤差に対する配慮は
必要になるけど。
0931デフォルトの名無しさん
2009/08/21(金) 01:25:510932デフォルトの名無しさん
2009/08/21(金) 01:29:53とかできねーの?
0933デフォルトの名無しさん
2009/08/21(金) 01:30:22VC#っていうか、フレームワークの関数がいくつあると思ってるん?
全部一発で書けるようトップレベルに置いたらとんでもないことになる。
Mathだけ特別扱いなんて出来ないよ。
0934デフォルトの名無しさん
2009/08/21(金) 01:37:07そういうのは学生のうちに卒業しよう。
プロジェクトメンバーが迷惑するから。
0935デフォルトの名無しさん
2009/08/21(金) 01:41:10できるよ
0936デフォルトの名無しさん
2009/08/21(金) 01:44:440937デフォルトの名無しさん
2009/08/21(金) 02:17:220938デフォルトの名無しさん
2009/08/21(金) 06:34:370939デフォルトの名無しさん
2009/08/21(金) 07:35:53その書き方だと「面倒だなぁ……。よくみんな我慢してるよなw」って考えてるみたいだが、
こうやって分類されている方が、長い目で見れば便利なんだ。
このめんどくささはむしろ必要なめんどくささ。いずれわかるよ。
0940デフォルトの名無しさん
2009/08/21(金) 07:36:37Math.を省略したくなるような状況でそんなことしたら遅くなるからやめれ
0941デフォルトの名無しさん
2009/08/21(金) 08:03:24コードを読むときには何してるかわかるからいいと思うんだが。
というか実際のところたいした手間じゃないだろう。
0942デフォルトの名無しさん
2009/08/21(金) 08:07:180943デフォルトの名無しさん
2009/08/21(金) 08:47:450944>>913
2009/08/21(金) 10:39:22自己解決したので解決方法を。
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さんどうもです。
0945デフォルトの名無しさん
2009/08/21(金) 16:47:030946デフォルトの名無しさん
2009/08/21(金) 16:53:590947デフォルトの名無しさん
2009/08/21(金) 17:43:13ありがとうございます。>>945です
doubleを無理やりstring型にキャストしようとしてました^^;
0948デフォルトの名無しさん
2009/08/21(金) 17:44:050949デフォルトの名無しさん
2009/08/21(金) 17:51:22ただ、表示対象は対象クラスが保持するプロパティの一つに限定したいです。
後々にDataGrid から SelectedItems として、バインドしたクラスのデータを取得を考えます。
ここで、クラスをそのまま ItemsSource へ突っ込むと、クラス名が表示されてしまいます。
こういった場合、特に二行目の部分ではどんな風にすれば対象プロパティのみ表示可能でしょうか。
よろしくおねがいします。
0950デフォルトの名無しさん
2009/08/21(金) 18:04:560951デフォルトの名無しさん
2009/08/21(金) 18:07:19>ここで、クラスをそのまま 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
0952デフォルトの名無しさん
2009/08/21(金) 18:10:29WPF というか、 Silverlight でやってます。
>>951 では途中で送信してしまったので、続きです。
class foo
{
public int m_x;
public int m_y;
}
ここで、 foo というクラス名ではなく、数字の x を出力したい。
0953デフォルトの名無しさん
2009/08/21(金) 18:10:590954デフォルトの名無しさん
2009/08/21(金) 18:18:24それにしてもpublicなフィールドでm_って気持ち悪い命名規則だね。
0955デフォルトの名無しさん
2009/08/21(金) 18:27:16ありがとうございますっ!
そういうのを探していました。
とても助かりました。
0956デフォルトの名無しさん
2009/08/21(金) 18:51:190957デフォルトの名無しさん
2009/08/21(金) 18:53:43もとより人間が書くものじゃないんだろうけど
0958デフォルトの名無しさん
2009/08/21(金) 19:01:24アクセサって get とか set ですよね?
XAML と合わせて検索しても、どうにも分らないです。
すみません。
バインディングの記述に利用する識別子でしょうか?
>>957
未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。
慣れの問題でしょうか……。
0959デフォルトの名無しさん
2009/08/21(金) 19:20:53つかフィールドってバインディングできたっけ? プロパティじゃないとダメな気が
> 未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。
XAMLに記述するのはViewModelのクラスのだから問題ない
0960デフォルトの名無しさん
2009/08/21(金) 19:23:48>>927の考えは>>939やチミが勝手に心配しているような意味じゃないと思うぞw
別にクラスの中にしかメソッドが存在できないのがウザい、
というような意味のことは言ってないだろう。
っていうか、複雑な計算式をベタにコーディングしたら
>>927のように思うのはむしろ普通のこと。
実際見難くくてかなわんよ。
だから>>930のようにアドバイスするのが正しい。
しかし、今に始まったことじゃないけど本当シロートがシロートに講釈垂れる
図式が多すぎるなここ。
0961デフォルトの名無しさん
2009/08/21(金) 20:55:24>XAMLに記述するのはViewModelのクラスのだから問題ない
どうにもバインディングを勘違いしていました。
特に制約無く作ったデータでもバインディングは行えるものとして考えていました。
バインディングは特定のインタフェースを実装したクラスしか不可能なのですね。
0962デフォルトの名無しさん
2009/08/21(金) 21:01:05>バインディングは特定のインタフェースを実装したクラスしか不可能なのですね。
違う。
設計の問題で、バインディング自体にそういう制限は無い。
0963デフォルトの名無しさん
2009/08/22(土) 00:13:55このレベルの自分で頭使わないで文句言うタイプには「黙って書いとけ」が正しい。
0964デフォルトの名無しさん
2009/08/22(土) 00:39:36それぞれのメリット・デメリットを教えてください。
�@str.Equals("")
�AString.Equals(str, "")
�Bstr == ""
�Csrt.Length == 0
�D"".Equals(str)
0965デフォルトの名無しさん
2009/08/22(土) 00:45:34他は4以外objectで比較できちゃう
14はstrがnullのときを考慮しないといけない
でも大体はString.IsNullOrEmptyで片付けるかな
0966デフォルトの名無しさん
2009/08/22(土) 00:46:47俺は「str==""」が一番シンプルかつ直感的でいいと思うね。
1. 参照アドレスの比較と差別化するという意味合いはご尤もだが…。ここまでする必要あるかなぁ。
2. 冗長。
4. 使う場面による。文字列自体に着目した流れで来てるのか、
文字列の長さに着目した流れで来てるのか、というのが判断基準。
5. これは逆。どういう意図でこう書くんだろう。
0967デフォルトの名無しさん
2009/08/22(土) 00:58:15みたいなのがどっかに載ってた気がする(そして当然叩かれてた)
C#だと3かIsNullOrEmptyだよね。
0968デフォルトの名無しさん
2009/08/22(土) 01:05:590969デフォルトの名無しさん
2009/08/22(土) 01:14:50見かけるね。
というか、俺の見解では、そもそも==がデフォで参照等価の検査なのが直感的じゃない。
少なくともこれに関してはVBの方がまともに感じる。
つまり、参照等価の検査用には別の演算子を導入することにして、==の方は
値等価用にオーバーロードしないと使えない方が分かりやすい。
まあそれを言うと、そもそもC由来の=と==からして逆なんじゃないのかとも思うが…
0970デフォルトの名無しさん
2009/08/22(土) 01:34:350971デフォルトの名無しさん
2009/08/22(土) 01:40:470972デフォルトの名無しさん
2009/08/22(土) 01:42:520973デフォルトの名無しさん
2009/08/22(土) 02:14:56>5. これは逆。どういう意図でこう書くんだろう。
これはリテラルのequals()呼び出しだから、コンパイラが最適化してくれる
可能性がある、という説明で自分は納得した。
実際のところ本当かは検証したわけじゃないけど、どう再定義してるかわか
んないstrのequals()を呼び出すよりは速い可能性があるというだけで充分
に意味はあると考えてる。
0974デフォルトの名無しさん
2009/08/22(土) 02:22:55"".equals(str)がいいんだって言っていた。
でも、まともな意見の人は"".equals(str)に否定的な人が多いという印象。
0975デフォルトの名無しさん
2009/08/22(土) 02:25:370976デフォルトの名無しさん
2009/08/22(土) 02:29:39だろ。2 と 3 がほぼ同じ意味であることを除けば他は意味とか前提が
色々微妙に違う
0977デフォルトの名無しさん
2009/08/22(土) 02:57:02Tuple<Hoge,HogeHoge> tuple1,tuple2の比較したいときに、class でなくstructなら_t1,_t2が各々==でtrueの時tuple1==tuple2になるんだっけ?
classでEqualsとかoverrideするのめんどくさいよ(´д`)ママン…
属性とかの指定一発でやってくれ・・・
0978デフォルトの名無しさん
2009/08/22(土) 03:46:49俺も>>971と同じ書き方するな。
でも null と空文字列で特別に違う意味がなければ IsNullOrEmpty を使う。
0979デフォルトの名無しさん
2009/08/22(土) 05:58:42String.Equals(str,stringEmpty)
だな。
javaと違って参照でも'=='が使えるのは知ってるんだけどね。
0980デフォルトの名無しさん
2009/08/22(土) 06:46:21Equalsはタイプセーフではない。
Equalsをoverrideするなら==、!=もoverrideしなければならない。
a.Equals(b)はnullチェックが面倒なので、Object.Equals(a,b)が有効。
0981デフォルトの名無しさん
2009/08/22(土) 06:50:49ライブラリ製作者と使用者で意見が食い違うところか。
0982デフォルトの名無しさん
2009/08/22(土) 07:22:05"a"と'a'は違うのか?→〃
10と10は違うのか?→〃
しかし”参照”としての比較はドメインが”参照”に固定されているので混乱しない
値の比較はドメインが固定できないので混乱する
値の比較であーだこーだ言っていてもはじまらね
0983デフォルトの名無しさん
2009/08/22(土) 07:35:17http://msdn.microsoft.com/ja-jp/library/ms182279.aspx
それはそうと次スレは?
0984デフォルトの名無しさん
2009/08/22(土) 08:59:39>タイプセーフではない。(
値型以外では使うことはまずないけど
IEquatable<T>.Equals(T o)
>Equalsをoverrideするなら==、!=もoverrideしなければならない。
Stringのようにimutableでない限りは==や!=演算子のoverrideはするべきではない。
0985デフォルトの名無しさん
2009/08/22(土) 11:02:530986デフォルトの名無しさん
2009/08/22(土) 12:31:410987デフォルトの名無しさん
2009/08/22(土) 12:34:22http://pc12.2ch.net/test/read.cgi/tech/1250911923/
はい
0988デフォルトの名無しさん
2009/08/22(土) 12:44:02^^
0989デフォルトの名無しさん
2009/08/22(土) 13:00:550990デフォルトの名無しさん
2009/08/22(土) 13:09:55WinFormsはどうせ放置だろ
0991デフォルトの名無しさん
2009/08/22(土) 13:36:55せっかく枯れてきたのに手を入れられてもねぇ…
0992デフォルトの名無しさん
2009/08/22(土) 13:40:42困ると思うけど…
toolstrip関連はバグ多過ぎなんだよ本当。
0993デフォルトの名無しさん
2009/08/22(土) 16:49:170994デフォルトの名無しさん
2009/08/22(土) 17:41:230995デフォルトの名無しさん
2009/08/22(土) 17:55:110996デフォルトの名無しさん
2009/08/22(土) 17:59:180997デフォルトの名無しさん
2009/08/22(土) 18:08:110998デフォルトの名無しさん
2009/08/22(土) 18:58:16……見間違えか。
0999デフォルトの名無しさん
2009/08/22(土) 19:35:321000デフォルトの名無しさん
2009/08/22(土) 19:36:23C#, C♯, C#相談室 Part54
http://pc12.2ch.net/test/read.cgi/tech/1250911923/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。