C#, C♯, C#相談室 Part52
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/04/01(水) 10:15:52前スレ
C#, C♯, C#相談室 Part51
http://pc12.2ch.net/test/read.cgi/tech/1233757615/
Visual C# 2008 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
その他テンプレ>>2-5くらい
0002デフォルトの名無しさん
2009/04/01(水) 10:16:30ふらっとC#,C♯,C#(初心者用) Part39
http://pc12.2ch.net/test/read.cgi/tech/1237051173/
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/04/01(水) 10:16:47MSDNライブラリ
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/
0004デフォルトの名無しさん
2009/04/01(水) 10:17:03初歩的な質問は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
0005デフォルトの名無しさん
2009/04/01(水) 13:37:140006デフォルトの名無しさん
2009/04/01(水) 14:12:43C#3.0対応のデザインパターンの解説書かサイトで、
日本語で書かれているのってないですかね?
英語なら、オライリーからC#3.0のデザインパターン本が出てたのですが。
0007デフォルトの名無しさん
2009/04/01(水) 14:23:360008デフォルトの名無しさん
2009/04/01(水) 19:29:46死ぬの?
0009デフォルトの名無しさん
2009/04/01(水) 19:32:36ひどいフシアナ
0010デフォルトの名無しさん
2009/04/01(水) 20:02:02どういう方法が一番よいでしょう?
0011デフォルトの名無しさん
2009/04/01(水) 20:22:020012デフォルトの名無しさん
2009/04/02(木) 00:28:39こいつはろくなコード書けないんだろうな
0013デフォルトの名無しさん
2009/04/02(木) 01:33:130014デフォルトの名無しさん
2009/04/02(木) 07:42:58英語ドキュメントを読むコツは、最初は辞書を引かない事
高卒レベルの英語で、おおまかな部分は読める
一度通して読んだあと、大体ネックになる重要単語が見えてくるはずだから、
その時辞書を引いて調べればいい
英語が苦手っていう奴は英語をすべて日本語に訳してから理解しようとしている
英語は英語として理解するのが簡単
0015デフォルトの名無しさん
2009/04/02(木) 09:07:42どもでした!
0016デフォルトの名無しさん
2009/04/02(木) 15:37:51★「完全無所属」実は「自民支部長」…千葉知事当選の森田氏
http://tsushima.2ch.net/test/read.cgi/newsplus/1238600250/
・千葉県知事選で100万票余を獲得して初当選した元衆院議員の森田健作氏(59)が、
現在も東京都の自民党支部長を務めていたことがわかった。
森田氏は、政党と距離を置く「完全無所属」をアピールして無党派層の支持を集めており、
一夜明けた30日の記者会見で「近く支部を解散したい」との考えを明らかにした。
森田氏が支部長を務めるのは、自民党東京都衆議院選挙区第2支部(東京都中央区)。
森田氏が参院議員だった1995年1月に設立された。衆院議員に転じた森田氏が2003年
10月に辞めた後も、支部は存続している。
収支報告書によると、支部長の登録は本名の「鈴木栄治」。04〜07年には計1億6185万円の
企業・団体献金を受け、同時期に計1億5030万円を、同支部と同じ事務所で、森田氏が代表を
務める資金管理団体「森田健作政経懇話会」に寄付していた。
使途については、「知事選には使っていない。知事選に無所属での出馬を決意する前に、
自民党候補の応援などのために使った」と釈明した。
http://www.yomiuri.co.jp/politics/news/20090330-OYT1T00515.htm
0017デフォルトの名無しさん
2009/04/02(木) 16:30:20朝日新聞の中の人ですか、携帯からご苦労様です。早くアク禁解除されるといいですね。
0018デフォルトの名無しさん
2009/04/04(土) 02:38:58現在ファイルから配列に格納するところで躓いています。
図形1=X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5.....................
図形2=.....
これを[図形][座標点][X,Y]という形に格納する形式です List_POS[0][1][0]で例外が出てしまいます
どうしたらいいのでしょうか? ジャグ配列なら実現できたのですがListにしてワーカースレッドから動的に追加もしたいので
int a=0,b=0,c=0;
int line_count = arrText.Count;
public List<int[]>[] List_POS = new List<int[]>[line_count];//第一要素を可変長にしたい
for (int i = 0; i < List_POS.Length; i++)
List_POS[i] = new List<int[]>(new int[][] { new int[2] });
foreach (string sOutput in arrText){// 一行ずつ読み込んで,各行をsplitメソッドで分ける
string temp = (string)arrText[a]; // string型にキャスト
string[] temp2 = temp.Split(',');// splitメソッドで文字列アレイにして数える
int col_count = temp2.Length; // 列数を数えているだけ
string[] temp_line = sOutput.Split(',');
for(int i=0;i<temp_line.Length;i++){
for(int k=0;k<2;k++){
i = i + k;
List_POS[a][b][c]=Convert.ToInt32(temp_line[i]);
c++;
}
c = 0;
b++;
}
b = 0;
a++;
}
0019デフォルトの名無しさん
2009/04/04(土) 02:42:58int[][]をオブジェクトにしてもいいような気もする
0020デフォルトの名無しさん
2009/04/04(土) 04:40:03List_POS[0][0] しか作ってないのに、List_POS[0][1] にアクセスしたら
当然例外になるわな
> 第一要素を可変長にしたい
はずなのに二番目を List にしてるのは何で? (多分、>>19と同じ)
図形数を可変にするんじゃないの?
あと、要素(element)ってコレクションの中身のことだから
0021デフォルトの名無しさん
2009/04/04(土) 13:49:36public List<int[][]> List_POS;
int a=0,b=0,c=0;
int line_count = arrText.Count;
List_POS; = new List<int[][]>();
foreach (string sOutput in arrText){
string temp = (string)arrText[a]; // string型にキャスト
string[] temp2 = temp.Split(',');// splitメソッドで文字列アレイにして数える
int col_count = temp2.Length; // 列数を数えているだけ
List_POS[a] = new List<int[][]>(col_count/2);//XYで2つ使うため一行を2で割る
string[] temp_line = sOutput.Split(',');
for(int i=0;i<temp_line.Length;i++){
List_POS[a][b]=new List<int[][]>(2);
for(int k=0;k<2;k++){
i = i + k;
List_POS[a][b][c]=Convert.ToInt32(temp_line[i]);
.....
0022デフォルトの名無しさん
2009/04/04(土) 13:55:450023デフォルトの名無しさん
2009/04/04(土) 18:03:01List_POS[a] = new List<int[][]>(col_count/2);
こんなんコンパイル通らないでしょ
List_POSに入るのがList<int[][]>
List_POS[a]に入るのはint[][]
List_POS[a][b]に入るのはint[]だよ
0024デフォルトの名無しさん
2009/04/04(土) 18:21:31の演算結果が
0xEDB88320
となるのはなぜ?
VB.NETだと1になるんだけど
0025デフォルトの名無しさん
2009/04/04(土) 18:32:47VBのほうが謎だ。
0026デフォルトの名無しさん
2009/04/04(土) 18:38:14VBの^は冪乗、C#の^はビット毎の排他的論理和。
0027デフォルトの名無しさん
2009/04/04(土) 19:02:40そうでしたか、ありがとう。
0028デフォルトの名無しさん
2009/04/05(日) 00:15:19rcm.List_POS.Add(new int[col_count / 2][]);
rcm.List_POS[a][b]=new int[2];
こういう風に修正したら通りました
二行目もできるかどうか試してみます。
0029デフォルトの名無しさん
2009/04/05(日) 09:56:34あんたさ、もっと読みやすさを心がけてかいてよ
せっかくオブジェクト指向言語使ってんだからさ
このプログラムを保守するはめになったやつのことも考えようぜ
0030デフォルトの名無しさん
2009/04/05(日) 10:35:07図形クラス作るのが普通じゃね?
0031デフォルトの名無しさん
2009/04/05(日) 11:36:19オブジェクト指向関係ないと思うよ
OO厨なら仕方ないが
0032デフォルトの名無しさん
2009/04/05(日) 13:10:160033デフォルトの名無しさん
2009/04/05(日) 13:19:04オブジェクト指向のパッケージ化だけ考えても
データと振る舞いを結び付け、可読性を向上してるだろ
納得できる理由を書いてみろ
0034デフォルトの名無しさん
2009/04/05(日) 13:26:25・再利用を謳っているために,同じ"ような"コードがあるか探さないといけない.
それを怠ると車輪の再発明の連続
・目的のために様々な手段が用意されすぎている
・>>33みたいな奴がOOPLすごいよ!クラスで設計図が継承で再利用!しかも大規模開発に剥いているよ!
って幻想を吹き込んでくる
0035デフォルトの名無しさん
2009/04/05(日) 13:28:03OOはパラダイムなので「可読性の向上」まではどう考えても含んでいない
なのに>>33が可読性の向上とか言い出している辺りが幻想,ね
0036デフォルトの名無しさん
2009/04/05(日) 13:45:570037デフォルトの名無しさん
2009/04/05(日) 16:55:47他のマシンの利用可能メモリなどを取得したいのですが、
どのようにしてとればいいのか、教えてくだされ(;´д⊂)
Processなら、 Process.GetProcessesとかでとれるんですが。。。
0038デフォルトの名無しさん
2009/04/05(日) 17:02:07なんかずいぶん無茶なこと言ってるぞ。
アプリケーションが自前でロードバランスするのか。
もちろん実験ならいいんだけど、背景は何?
0039デフォルトの名無しさん
2009/04/05(日) 17:11:08何がやりたいのかさっぱりわからんけど
各々のマシンで動かすアプリがそれぞれのメモリ残量を返すようにすればいいんじゃねーの?
0040デフォルトの名無しさん
2009/04/05(日) 17:18:470041デフォルトの名無しさん
2009/04/05(日) 18:09:50004237
2009/04/05(日) 18:13:52ええっと、説明不足でした^^;
分散処理をしたくて、
本マシンから、重い処理だけを社内LANネットワークにつながった他のマシンで処理させる感じです。
で、その他のマシンっていうのが複数台あり、パフォーマンスに余裕があるものを選択するというものでした。
LANにつながった他のマシンの現在のメモリ使用量などを調べる方法があったら欲しいとおもったのです。
さすがにむりなのかな?^^;
0043デフォルトの名無しさん
2009/04/05(日) 18:15:35構造化で思い出したんです。↓
http://plaza.rakuten.co.jp/u008expert/
そう言えば二次元のGenericリストとか、
var gl0 = new List<List<int>>();
その他、色々と複雑なデータ構造を簡単に作れます。↓
var gl1 = new List<Dictionary<string,int>>();
var gl2 = new Dictionary<string, List<string>>();
var gl3 = new SortedDictionary<string,
SortedDictionary<string, List<int>>>();
なんで本とかで、あまり紹介されないのでしょうかねぇ。
(・・?
メモリを無茶苦茶食うとか…
スピードがえらく遅いとか…
C#を使う人はLispのような入れ子構造が嫌いとかぁ?^m^
何がネックになっているのでしょうか
ご存知の方は教えて下さい。m(__)m
0044デフォルトの名無しさん
2009/04/05(日) 18:18:370045デフォルトの名無しさん
2009/04/05(日) 18:22:070046デフォルトの名無しさん
2009/04/05(日) 19:33:31誇らしげに言うようなことじゃない
0047デフォルトの名無しさん
2009/04/05(日) 19:36:35ttp://plaza.rakuten.co.jp/u008expert/
こいつに悪意をもつものの仕業に違いない
0048デフォルトの名無しさん
2009/04/05(日) 19:54:37DirectoryEntry使ってiPlanetのディレクトリ更新しようとしていて
ユーザーとかのプロパティを見る参照は上手くいくんだが
プロパティ変更してCommitChanges呼ぶとエラーになる。
ADだと上手くいくんだけど、iPlanetが特殊なんかな。それとも
DirectoryEntryがPureなLDAP話さないでAD固有な話し方してるからかな。
0049デフォルトの名無しさん
2009/04/05(日) 20:11:48当たり前のことすぎて触れることじゃない。
0050デフォルトの名無しさん
2009/04/05(日) 20:13:09#1 > LANにつながった他のマシンの現在のメモリ使用量などを調べる方法
#2 WANにつながった他のマシンの現在のメモリ使用量などを調べる方法
#3 近所につながった他のマシンの現在のメモリ使用量などを調べる方法
そんな複雑なケースに対応するようにAPIが提供されているわけではありません
というわけで,マシンの現在のメモリ使用量(?????どんなの想像してる?シングルプロセス,シングルコアなマシンでの使用量?)を取得する
のと,TCP/IPかなんか使って通信するものを組み合わせればいいんでねーの?
0051デフォルトの名無しさん
2009/04/05(日) 20:13:55さらにList<MyClass>にした方がいいことが多いから
List<Dictionary<string,int>>は使われない
0052デフォルトの名無しさん
2009/04/05(日) 20:14:17むしろ"abc"[0]とか,トリッキーなコードになってしまうような気がする
0053デフォルトの名無しさん
2009/04/05(日) 20:33:08各PCでそういうサービスを立ち上げておけばOKだね
0054デフォルトの名無しさん
2009/04/05(日) 20:55:29http://d.hatena.ne.jp/seki-moto/20081014/wmi2
0055デフォルトの名無しさん
2009/04/06(月) 08:03:03ある程度C#についてオブジェクト指向とか綺麗なコードの書き方含めて載ってる本ないですか?
独習C#か、プログラミングC#がそれっぽい雰囲気出てたんだけど……。
洋書でも可です。
0056デフォルトの名無しさん
2009/04/06(月) 08:33:42アマゾンカテゴリランキングの1〜100位探してみろよ
0057デフォルトの名無しさん
2009/04/06(月) 09:18:36まああっちはレビューも書いてあるしなあ。
0058デフォルトの名無しさん
2009/04/06(月) 09:56:42サンクス。
C#クイックブックもよさげかな……。
今度本屋で見て見よう。
0059デフォルトの名無しさん
2009/04/06(月) 10:05:290060デフォルトの名無しさん
2009/04/06(月) 10:36:11うまく本の当り掴めるようになりたいもんだ・・・技術書安くないもんなあ
0061デフォルトの名無しさん
2009/04/06(月) 10:37:290062デフォルトの名無しさん
2009/04/06(月) 12:17:170063デフォルトの名無しさん
2009/04/06(月) 12:36:240064デフォルトの名無しさん
2009/04/06(月) 14:34:280065デフォルトの名無しさん
2009/04/06(月) 15:26:55継承元のTextAlignとかを使う側に見せないようにするとかは簡単に出来ますか?
Internalとかで上書きしてやればできそうだけど、なんかスマートでない気がするし・・・
継承という以上仕方がないとは思っていますが
0066デフォルトの名無しさん
2009/04/06(月) 15:38:44っていう話に落ち着くぜ
0067デフォルトの名無しさん
2009/04/06(月) 16:08:04アクセサを作るのが普通なんじゃない?
#言語仕様とは別のデザパタのdelegationって奴になるのか?
継承してるのに使えないとかはOOの性質上無理だと思うけど。
0068デフォルトの名無しさん
2009/04/06(月) 16:11:45>>67
ですよね
今作られている既存のカスタムコントロールがそう作られていて大きく変えないようにするにはどうかなと考えていたんですが・・
おとなしく新しく作り直してそっちに変更するように要望をかけるとします。
0069デフォルトの名無しさん
2009/04/06(月) 17:12:190070デフォルトの名無しさん
2009/04/06(月) 17:34:53継承元で出来る事が継承先で出来なくなるのは有り得ない。
0071デフォルトの名無しさん
2009/04/06(月) 17:35:33別物として扱いたいってことか。
セットされた値を何かしらの方法で計算して表示するコントロールでほとんどラベルなんだけど、
表示されてるテキストは直接書き換えはさせたくないみたいな。
0072デフォルトの名無しさん
2009/04/06(月) 17:39:20件名:[C#]コントロールのプロパティ固定(継承)
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=42032&forum=7
セッターを空のメソッドでオーバーライドして殺してるみたい。
質問の内容自体に対する評価はここと似たようなもんだな。
0073デフォルトの名無しさん
2009/04/06(月) 17:43:110074デフォルトの名無しさん
2009/04/06(月) 17:54:04「ググれカス」
0075デフォルトの名無しさん
2009/04/06(月) 18:16:56洋書でいいなら、中国語でいい本がある
0076デフォルトの名無しさん
2009/04/06(月) 18:18:010077デフォルトの名無しさん
2009/04/06(月) 18:23:40。 。
。 。 。 。 ゚
。 。゚。゜。 ゚。 。
/ // / /
( Д ) Д)Д))
0078デフォルトの名無しさん
2009/04/06(月) 18:29:530079デフォルトの名無しさん
2009/04/06(月) 18:35:29008073
2009/04/06(月) 18:39:47これ誰だよw
C#じゃないみたいなんで、他所のスレ探します
0081デフォルトの名無しさん
2009/04/06(月) 18:43:39「正当な」方法でどうやって情報取得するかきっちり書いてあるんだから。
0082デフォルトの名無しさん
2009/04/06(月) 18:44:58教えて下さい
0083デフォルトの名無しさん
2009/04/06(月) 18:48:530085デフォルトの名無しさん
2009/04/06(月) 18:58:28中国無理っす
0086デフォルトの名無しさん
2009/04/06(月) 19:00:20いい加減にしてください・・・誰なんですか・・・
0087デフォルトの名無しさん
2009/04/06(月) 19:07:160088デフォルトの名無しさん
2009/04/06(月) 19:16:560089デフォルトの名無しさん
2009/04/06(月) 19:22:050090デフォルトの名無しさん
2009/04/06(月) 19:29:15ttp://domworld.cool.ne.jp/mst/index.cgi?mode=mstinit
↑のページを完全に読み込みたいんですが、javascript?のところで途中で止まってしまいます
MessageBox.Show( webBrowser.Document.GetElementsByTagName( "html" )[0].OuterHtml );
でHTMLを表示してもソースと違っていてどうにもなりません
対処法があれば教えてください
あとソースとwebBrowserのhtmlが違う理由をわかる方いたら併せてお願いします
0091デフォルトの名無しさん
2009/04/06(月) 20:07:24User-Agentあたり見て出力内容わけてたりしてな。
0092デフォルトの名無しさん
2009/04/06(月) 20:13:43ううむ。折れんところで試してみたが、一応完全に?読めたけど。
0093デフォルトの名無しさん
2009/04/06(月) 20:15:57> ソースとwebBrowserのhtmlが違う理由
ブラウザがパースしたDOMをテキスト表現にしているからだとおも
0094デフォルトの名無しさん
2009/04/06(月) 20:54:33レスありがとうございます
WebBrowser.Document.All.GetElementsByName("id")[0].SetAttribute( "Value", "name" );
のように入力してログインまで持って行きたいんですが
>>92
正確ではありませんでした
すみません
DOM解析済みのHTMLでFrameを取りに行ってるみたいなんで無理みたいですorz
WebBrowserコントロールからフレームを利用したのページのHTMLソース取得方法
ttp://social.msdn.microsoft.com/Forums/ja-JP/vsgeneralja/thread/41e23caf-05d6-4dff-b5a1-9b1ecb12b4ed/
0095デフォルトの名無しさん
2009/04/06(月) 22:15:40がんばればできる。
0096デフォルトの名無しさん
2009/04/08(水) 14:17:00操作する際に、そこでApplication.DoEvensを実行すると、コントロールが壊れる?みたいなのですが、なぜでしょうか?
具体的にいうと、別スレッドでビジーループを回して待機していたタイマーからイベントが飛び、Control.BeginInvokeで
メインスレッドにて登録されたデリゲートを実行するようになっており、デリゲート内にApplication.DoEventsがあると、
別ウインドウで操作していたHScrollBarが壊れ、Dock.FillしていたはずのコントロールがHScrollBar部分をドラッグ
することによりリサイズできてしまう、という具合です。
サンプルプロジェクト:
ttp://www1.axfc.net/uploader/He/so/214358
pass: invoke
サンプルプロジェクトのProcessingWindowのStartボタンをクリックした後、ControlWindowのスクロールバー右を
連打するとスクロールバーが壊れます。
一応メインスレッド上でタイマーのビジーループを回すか、Application.DoEventsを取り除くことにより回避できますが、
前者だと何もしてなくてもCPUを食ってしまうし、後者だと重い処理を行っているときにUIの更新ができなくなってしまう
のでできれば別スレッドからBeginInvokeしたときにApplication.DoEventsを実行したいのですが…
0097デフォルトの名無しさん
2009/04/08(水) 16:04:51009896
2009/04/08(水) 17:32:32こちらでは、スクロールバーの右の矢印部分を連打(結構なスピードで)すると簡単に発生するのですが…
スクロールバーの描画が破綻した後、右矢印部分になぜか点々(サイズ変更可能なウインドウに表示されてたり
するアレ)が表示されます。
こうなると、スクロールバーは完全に機能しなくなり、スクロールバーのあった部分は再描画が無効になります。
0099デフォルトの名無しさん
2009/04/08(水) 18:07:52俺も結構な速度でやってみたんだけどな
それこそクリックしたら画面の女の子脱ぎますよと言われたくらいの速度でw
ほぼ同じ環境の後輩に同じことやらしてみたけど症状が出てない
一応環境
VISTA BUSINESS SP1(エアロ有効)
VS2008 Professional上でデバッグ実行
0100デフォルトの名無しさん
2009/04/08(水) 18:23:43>>98
こういうケースでは、スリープを追加するなどして
"連打" ではなく、一回のクリックで問題を再現させることを目指すと、原因がわかったりするよ。
例えば、DoEvents()の後にThread.Sleep(100);と書き、スクロールバーを右クリックしてみるといい。
運良くこっちと似た環境ならば、100%の確率でスタックオーバーフローするので
スタックトレースを見れば原因がわかるはず。
ディスプレイドライバのせいだったりして
ハードウェアアクセラレータ無効にすると治るとかない?
010296
2009/04/08(水) 18:44:52こちらでは速めのダブルクリック程度の速度でも発生するのですが…
こちらの環境は
Geforce 9600GT 512MB
XP 32bit
VS2008 Pro
です。
>>100
スタックオーバーフローするのは、BeginInvoke内でdoEventがtrueになる前に何度もBegineInvokeが
実行されてしまうのが原因でした。これについては、Invokeの前にdoEventをtrueにすることにより解決できましたが、
スクロールバーが壊れるのとは別問題のようです。
>>101
ハードウェアアクセラレータは切ってみましたが、特に関係があるわけではないようです。
ドライバも最新のものにしてみましたが、改善しませんでした。
0103デフォルトの名無しさん
2009/04/08(水) 20:38:210104デフォルトの名無しさん
2009/04/08(水) 21:12:13うーん。自分の環境だと再現しないので勘になっちゃうけど。
DoEvents でもたぶん BeginInvoke なキューを処理する気がするから
このコードだと一度間に合わなくなればそれより優先度の低いメッセージは
まったく処理されなくなる希ガス
あとそもそも精度 100μs なんて無理って話は突っ込んでおいたほうが
いいのかな
0105デフォルトの名無しさん
2009/04/08(水) 21:35:32環境によって差が出てるということは、
Control.BeginInvokeの発行間隔が処理時間より短いせいだと思う。
前の処理が終わらないうちに次のBeginInvokeが実行されないようにするか、
同期型のControl.Invokeにする。
あとはDoEventではなくpictureBox1.Updateを使うべきだろう。
010696
2009/04/08(水) 22:10:18それだと、タイマーのインターバルをゆっくりにすれば発生しないはずですが、それでも発生しますし、
インターバルが短くても、Application.DoEventsを取り除くと発生しなくなります。
また、フラグを立てて(バグってたけど)同時に何度もBeginInvokeされないようにはしているので、
>>102の通り、別問題な気がします。
>>104
>>100μsなんて無理
確かに精度はよくないのですが、実際に使うときには最短で200μs程度のインターバルで使用するので、
その間隔で使用する分には何とか使用できる程度の精度は出るようです。
>>105
このサンプルでは、画面の更新しかしていないためそれでもいいのですが、実際はボタン操作や
テキスト操作なども反映させるため、Application.DoEventsを使いたいのです。
0107デフォルトの名無しさん
2009/04/08(水) 22:29:01描画はImageプロパティは使用せずに、Paintイベントで描画するようにすれば?
GraphicsオブジェクトはPaintイベントの引数eにe.Graphicsがあるからこれを使用して描画する
0108デフォルトの名無しさん
2009/04/08(水) 22:31:40DoEventsはプロセスすべてのイベントを処理するから重いんだよ。
0109デフォルトの名無しさん
2009/04/08(水) 23:03:360110デフォルトの名無しさん
2009/04/08(水) 23:34:43この方法でいけるはず。
基本はControl.InvokeもApplication.DoEventsも使わないことだな。
if (!abort)
{
//c.BeginInvoke(busyMethod);
Tick(this, EventArgs.Empty);
}
//pictureBox1.Image = image;
using (Graphics g = pictureBox1.CreateGraphics())
{
g.DrawImage(image, 0, 0);
}
Draw(count);
count++;
//Application.DoEvents();
0111デフォルトの名無しさん
2009/04/09(木) 00:08:41なんか分かってるのか分かってないのかよく分からんコードだな、というのが率直な感想。
なぜそうしているのか理由や必然性がわからない部分が多すぎる。
ちょっとVB上がりのコピペプログラマの臭いがする。
つーか、せいぜい70hzでしか更新されない画面をusオーダーで更新して(そもそも不可能だけど)
なんか意味あるのかなw
0112デフォルトの名無しさん
2009/04/09(木) 01:04:43テキストの更新をするだけならInvaridateで十分なのですが、ボタン操作やメニュー、ショートカットキー等々の
UIの操作を行った際に発生するイベントを処理するためにDoEventsを差し込んでいます。
そういう意味で、ボタン操作やテキストの更新と書きました。
>>111
VBの方はほとんど触ったこと無いですw
実際に使用する際には画面更新中に発生したTickの回数分だけ処理をとばすようにはするのですが、
その前にタイマーがちゃんと動作するかどうかを確認している際に発生したのがこの現象です。
サンプルの方はDock.Fillなはずのコントロールがリサイズできてしまうということを確認してもらうために
余計にコントロールを追加していたり、タイマーが回っているのを視覚的に確認するために画面更新していたり
しますが、実際にはウインドウにHScrollBarを貼り付けても発生しますし、TickのDrawを中身空っぽのforを
10万回回した後にDoEventsするだけでも発生します。
0113デフォルトの名無しさん
2009/04/09(木) 01:13:01本当にこれで処理大丈夫なの?
0114デフォルトの名無しさん
2009/04/09(木) 01:29:36あほな自家製タイマーがメッセージループを占有しなければ、
>UIの操作を行った際に発生するイベント
はdoeventsなんか呼ばなくてもちゃんと処理されるのだけどね。
メッセージループ経由でのUIの更新は動画のような短時間での更新向きではない。
なんかWin3.1のころのメッセージループのアイドルにバックグランド処理をやらせる
のを念頭に置いたりしてないか。
0115デフォルトの名無しさん
2009/04/09(木) 02:46:550116デフォルトの名無しさん
2009/04/09(木) 09:13:24ちょwww
スレッド分けてる意味のないコードになってるってことじゃないのか…・
0117デフォルトの名無しさん
2009/04/09(木) 09:16:13valid
Invalid
Invalidate
な
2回以上同じところを間違えると馬鹿みたいだぞ
0118デフォルトの名無しさん
2009/04/09(木) 09:50:340119デフォルトの名無しさん
2009/04/09(木) 11:49:46作りこみがVBにしかみえない
0120デフォルトの名無しさん
2009/04/09(木) 12:17:54どの辺が違うんですか?素で気になります。
初心者の書き方っぽいだけでVBが悪いわけじゃないのか
VBを使うと必然的にそうなるのかよく分からない。
もしかして.netのVBを指している訳じゃない?
0121デフォルトの名無しさん
2009/04/09(木) 13:26:42.NETでDoEventsを使っているなら9割がた間違った使用法と考えるべき。
何のためのスレッドかぜんぜん理解していないようだし、
Control.BeginInvokeが何をしているかも理解してないな。
0122デフォルトの名無しさん
2009/04/09(木) 17:33:25012396
2009/04/09(木) 20:24:27・Application.DoEventsは、処理中に発生したイベントをすべて処理する
・スレッドは重い処理などをバックグラウンドで処理させたり、処理を並列して行うことにより高速化を図る
・Control.Invokeは別スレッドからのUIの操作をUIを持つスレッドに行わせ、BeginInvokeは処理の完了を
待たずに制御を戻し、処理の状況を確認するためのIAsyncResultを返す
と理解しているのですが、違うのでしょうか?
もし違うのであれば、参考となるページでもいいので教えていただきたいのですが…
0124デフォルトの名無しさん
2009/04/09(木) 20:26:590125デフォルトの名無しさん
2009/04/09(木) 23:46:32VB6はバックグラウンド処理用にスレッドを自由に起動できなかった。
全部の処理はUIスレッドで実行するしかなかった。
だからビジーループ的な処理があると、それを実行している間はUIが
必然的に応答できなくなる。(だってその処理は、プロセス中の唯一のスレッドである
UIスレッドで実行しているのだから。)
その問題をやり過ごす(根本的解決ではない)ためにDoEventsは使われた。
ビジーループの中でDoEventsを実行してやると、その時点でキューにたまっていた
ウィンドウメッセージが全て処理される。つまりユーザー目線では、UIが操作に反応する。
自由にスレッドを起動できるドトネトではわざわざUIスレッドでビジーループを
書く必要がないから、わざわざApplication.DoEventsを使用する理由は普通ないはず。
0126デフォルトの名無しさん
2009/04/10(金) 00:05:44バックグラウンドのスレは高速化じゃなく、ユーザへのレスをよくするのが目的では?
0127デフォルトの名無しさん
2009/04/10(金) 00:59:330128デフォルトの名無しさん
2009/04/10(金) 01:48:030129デフォルトの名無しさん
2009/04/10(金) 01:54:500130デフォルトの名無しさん
2009/04/10(金) 01:58:000131デフォルトの名無しさん
2009/04/10(金) 02:26:08013296
2009/04/10(金) 02:37:10では、今回のように別スレッドからBeginInvokeなどが連続して呼ばれて結果的にビジーループ
のようになってしまうような処理の場合、どのようにしてイベントを処理すればいいのでしょうか?
タイマーの精度をあきらめる(そもそも無茶らしいですが)として、
while (!abort)
{
while (doEvent && !abort)
{
Thread.Sleep(1);
}
...
Thread.Sleep(1);
}
としてもTickの内容が重たいとビジーループになってしまうのですが…
ここまでするくらいならSystem.Windows.Forms.Timerかなんかを使ってTickで処理時間分Intervalから引いていった方が
いいような気もしますがw
0133デフォルトの名無しさん
2009/04/10(金) 02:41:48UIが属していないスレッドがいくらビジーループになっても構わないのでは?
あと草が邪魔
0134デフォルトの名無しさん
2009/04/10(金) 09:00:49呼び出す度に重い処理のスレッド作るとか
0135デフォルトの名無しさん
2009/04/10(金) 09:23:03そんな重そうな処理でもなさそうだし
Invokeの中身を高速化するために、画像を先に作っといてInvokeで呼び出されている関数内で転送するだけにするとか
以上ド素人の意見でした。
0136デフォルトの名無しさん
2009/04/10(金) 10:29:340137デフォルトの名無しさん
2009/04/10(金) 10:48:24でソースを動的にコンパイルした場合、そのソースの中から
アプリ本体のクラスを使うことはできるのでしょうか?
0138デフォルトの名無しさん
2009/04/10(金) 10:55:39普通に出来るでしょ
参照アセンブリに追加すれば
コンパイルする前に参照するアセンブリをロードしなきゃいけないんだったかな
適当にそのアセンブリのクラスを使えばロードされる
0139デフォルトの名無しさん
2009/04/10(金) 10:59:48CompilerParametersに参照をしたら出来るんじゃなかったっけ?
よく憶えてないけど
0140デフォルトの名無しさん
2009/04/10(金) 11:13:08わざわざdoevents使うなんて
実質シングルスレッドで動かしてますよと公言するよーなもん
0141デフォルトの名無しさん
2009/04/10(金) 19:58:48言ってることがよく分からないんだけど、
例えば仮に1msの処理時間が必要な処理があるとして、
この処理を同一のスレッドで1ms未満のインターバルで繰り返すことは
太陽を西から昇らせる以上に不可能だ、というのはOK?
失礼だがなんかこのあたりの当たり前のことを理解してない気もするんだが。
0142デフォルトの名無しさん
2009/04/10(金) 20:30:55まずその処理が1msで終了するのか勘定してみるといい。
スレッド起動から勘定するんだぞ。
0143デフォルトの名無しさん
2009/04/10(金) 20:57:310144デフォルトの名無しさん
2009/04/10(金) 21:09:470145デフォルトの名無しさん
2009/04/10(金) 21:13:000146デフォルトの名無しさん
2009/04/10(金) 22:32:310147137
2009/04/11(土) 01:44:04CompilerParameters.ReferencedAssemblies.Add("EXEファイル名");
でできました。ありがとうございます。
0148デフォルトの名無しさん
2009/04/11(土) 04:43:38ドロップダウンの表示幅を表示するテキストに合わせて伸縮させることは難しいでしょうか
0149デフォルトの名無しさん
2009/04/11(土) 08:12:32015096
2009/04/11(土) 12:52:55>>132で言ってるのは、別スレッドからTick終了後に間隔を開けずにまたTickが呼ばれるため、結果的に
UIを持つスレッドがビジーになってしまう、ということです。
>>141
そこについては理解しています。
上の方にも書きましたが、BeginInvokeが何度も呼ばれないようにフラグを立てています。
ですが、
Tick Tick
├───┤ ├───┤
├─────┤├─────┤├─────┤...
インターバル ↑ インターバル ↑ インターバル
↑:Tick呼び出し
となればTickとTickの間にほかのイベントを処理することが可能なのですが、今回の場合
Tick Tick
├─────────┤├─────────┤
├─────┤├─────┤├──┤├─────┤├──┤...
インターバル ↑ インターバル 待機 ↑ インターバル 待機
となってしまい、結果的にUIスレッドがビジーになってしまうため、ということを言いたかったのです。
わかりにくくてすいません。
>>146
BeginInvokeやInvokeでUIを持つスレッドに処理を任せても壊れてしまうのでしょうか?
別スレッドからUIを直接操作すると壊れる、ということは実験したことがあるのですが…
0151デフォルトの名無しさん
2009/04/11(土) 12:55:05結果的にUIスレッドがビジーになってしまうため、 → ×
結果的にUIスレッドがビジーになってしまう → ○
です。
0152デフォルトの名無しさん
2009/04/11(土) 13:44:310153デフォルトの名無しさん
2009/04/11(土) 15:00:31まず、設計が滅茶苦茶。原因は知識不足にあるのは明白なので、
勉強しろ(ここで問答しても埒が明かない)としか言えない
とりあえず、コードの不備だけ指摘すると、
UIスレッドでdoEvent=trueにしてるから、BeginInvokeが複数回呼ばれる可能性がある
タイミングによって、上記が全て完了する前にdoEvent=falseになっていることがある
その場合、更にBeginInvokeが複数回呼ばれる
で、暫くすると...\(^o^)/
0154デフォルトの名無しさん
2009/04/11(土) 15:34:36遅くなりましたけど、ありがとうございました。
オーナードローでいろいろ調べてやってみます。
0155デフォルトの名無しさん
2009/04/11(土) 15:44:18それにdoEventはBeginInvokeする前に設定しなきゃいかんだろ。
もっと言えばInvoke使えばフラグはいらない。
0156デフォルトの名無しさん
2009/04/11(土) 15:52:22やってるわけだが、Bitmapの描画はスレッド側、
つまりBeginInvoke呼び出し前に処理していいだろう。
何のためのスレッドだよ。BeginInvokeの中身は軽くしなきゃ。
0157デフォルトの名無しさん
2009/04/11(土) 16:00:08> UIスレッドでdoEvent=trueにしてるから、BeginInvokeが複数回呼ばれる可能性がある
その点については、本人は治したと言ってるが、本当に治っているかどうか怪しいな
0158デフォルトの名無しさん
2009/04/11(土) 16:15:55直接スクリーンに描くにせよ、イメージにいったん描いて画面に転送するにせよ、
普通はPanelか何かにGraphices#drawImageを使うぞ。
そうすればControl.Invoke自体いらなくなる。
0159デフォルトの名無しさん
2009/04/11(土) 16:20:26ただし、バックグラウンドで生成した画像を表示する必要があるなら
PictureBoxを使ってもやってることは変わらないかも
0160デフォルトの名無しさん
2009/04/11(土) 16:25:47動画のようなアニメーションにOnPaint、Invalidate、Updateはつかわんだろう。
はなはだ効率が悪いのに。
016196
2009/04/11(土) 16:41:50C#の勉強もかねて自分用の動画編集ソフトを作成しています。
>>153,155
その点については、>>100で指摘を受けてTick呼び出し前にdoEventをtrueにするように修正しましたが、
現在Invokeに置き換えて様子を見ています。
>>156
最終的な目標としては、もう一つスレッドを立ててそこでイメージを生成するようにしたいと考えています。
しかし、まだタイムラインのUIに手をつけたばかりなので、とりあえずTick内でイメージを生成するようにしていました。
>>157
上記の通り、Tickの前にdoEventをtrueにするようにし、BeginInvokeが重複して呼ばれることがないことを
確認しましたが、volatileをつけていなかったため、偶然だったのかもしれません。
>>158,159
PictureBoxよりもPanelに描画する方がいいのでしょうか?
OnPaintやControl.CreateGraphicsで直接描画するのとPictureBox.Imageにイメージをセットするのは
ほとんど変わらないものだと思っていたのですが…
016296
2009/04/11(土) 16:48:26>>156の部分の追記
ただ、ファイルアクセスがネックになってイメージの生成が遅れた場合に>>150の図のようになってしまうので、
これについてもどうにかしたいのですが…
0163デフォルトの名無しさん
2009/04/11(土) 16:50:27だったら、100マイクロ単位のタイマーなんてぜんぜん必要ねーじゃねーかよ。
なぁ、どっからマイクロ秒なんてものが必要と思ったんだ?
0164デフォルトの名無しさん
2009/04/11(土) 16:55:160165デフォルトの名無しさん
2009/04/11(土) 23:11:580166デフォルトの名無しさん
2009/04/11(土) 23:15:520167デフォルトの名無しさん
2009/04/11(土) 23:16:040168デフォルトの名無しさん
2009/04/11(土) 23:23:40偽物乙w
>>165
DirectXにあまり期待してはならない。
しかも自分しか使わないソフトならいざ知らず、
ビデオカードによってはアレだ
0169デフォルトの名無しさん
2009/04/11(土) 23:37:22偽装するなら名前欄に番号でも入れるよ
017096
2009/04/11(土) 23:38:5330fpsで1フレーム辺り33.333...msで、再生していると徐々にずれてくるかなと思ったのですが、
どうにか100μs単位まで行かなくてもいけそうになりました。
ただ、どちらにしてもやり方的には変わらないので、根本的には解決できてないです。
>>164
DirectShowは、DirectShow.NETを触ったりしましたがさっぱりわかりませんでした。
いろんなDirectShow関連のサイトも行ってみましたが、全く歯が立ちませんでした orz
>>165
DirectXや3Dは全く触ったことがなく、調べてみるとほとんどC++みたいなのですが、
.NET上から触ることはできるのでしょうか?
0171デフォルトの名無しさん
2009/04/11(土) 23:44:32managed directx
0172デフォルトの名無しさん
2009/04/12(日) 00:13:36わかる?編集ソフト内での再生は映像と音声の同期さえあってれば適当な再生速度で十分なわけ。ミリ単位で十分なわけ。
そもそもあんたはマイクロ秒のズレなんてわかるんかよ。
ミリ秒単位でやったとしても1時間のもので40秒しかズレねーんだよ。
ファイルさえきっちり作成できればいいの。
後は、再生ソフトの役目なんだよ。
0173デフォルトの名無しさん
2009/04/12(日) 00:18:50まあまあ。
それはそのソフト作る側の考え方によるだろ。
自分がそういうふうに作れって言われたわけじゃないんだからおちつけ。
0174デフォルトの名無しさん
2009/04/12(日) 00:22:160175デフォルトの名無しさん
2009/04/12(日) 01:11:12そうか?
サンプル分かり易いと思うし、それにCodePlexにTimeLine.NETとかSplicerとかいった編集用のライブラリとかある。
0176デフォルトの名無しさん
2009/04/12(日) 01:17:58納期が決まってるとか予算が決まってるならともかく
趣味レベルなら別にかまわんのじゃ?
編集ソフト内の再生ズレ、なくせるんだったらなくした方がいいと思うし。
0177デフォルトの名無しさん
2009/04/12(日) 08:15:18そういえばみんな言語始めるとき勉強はなにからやってるんだろう
俺は新しい言語をやる時に
画面のコントロールの簡単な使い方
標準的なファイルの入出力
簡単な入力チェック系
データベースの 接続・追加・更新・削除
位からやってる
あとはWEBかクライアントに合わせて色々やること増えるけど
0178デフォルトの名無しさん
2009/04/12(日) 08:33:540179デフォルトの名無しさん
2009/04/12(日) 10:15:50今時だと、>>177 で出てるネタを押さえるようないいサンプルアプリが欲しいなぁ。
0180デフォルトの名無しさん
2009/04/12(日) 11:39:50テトリスやリバーシみたいな簡単なゲームを作る事にしてる。
ある程度、実用 ( 娯楽 ) 性があるものを作成すると、理解が早い気がする。
0181デフォルトの名無しさん
2009/04/12(日) 12:35:22だれるもんね。
Web サービスのクライアントなんて
結構実装簡単だし、すぐ使えるからよさげじゃない?
REST API 公開してるサービスめちゃめちゃ多いし。
0182デフォルトの名無しさん
2009/04/12(日) 13:54:16徐々にずれるのが嫌なら再生開始時からの経過時間を使って、
間隔を調整すればいいだろ。
018396
2009/04/12(日) 14:26:29>そもそもあんたはマイクロ秒のズレなんてわかるんかよ。
30fps時の端数分(333μs)ずつずれていくと、100フレームほどで1フレーム遅れる計算になります。
数秒再生して1フレームも遅れるのは結構致命的だと思うのですが…
>>175
C++やDirectX、COMを触ったことがないからだと思いますが、何が何だかさっぱり…
ISampleGrabberからIBaseFilterへとか、継承しているわけでもないのになぜキャストできるのでしょうか?
同じメソッドを実装するだけでキャストできるのかと思い、テスとしてみたのですが当然できるはずもなく。
Splicerはおもしろそうですね。
>>182
現在はTickが呼ばれるたびに誤差を計算して次に加算するように変更したので、多分μs単位で
いじらなくてもあまりずれないようにはなっていると思います。
0184デフォルトの名無しさん
2009/04/12(日) 17:54:19>OnPaintやControl.CreateGraphicsで直接描画するのとPictureBox.Imageにイメージをセットするのは
>ほとんど変わらないものだと思っていたのですが…
Control.CreateGraphicsを使えば別のメソッドから使えるというのがメリットなのよ。
GUIはGUIスレッド以外から扱ったらいけないと思い込んでるようだけどこれは例外。
つまり、メッセージループを使ったりBeginInvokeを使ったりする必要がない。
メッセージループのことは気にせずに、
独自のスレッドで連続して処理問題ないということ。(普通はプライオリティを若干下げてやる。)
OnPaintやPictureBoxなどに処理を任せるのは画面が無効になったときの再描画の処理を
やってくれるからであって、短いサイクルで描画を繰り返す場合は、その必要性がない。
Control.CreateGraphicsを使えばInvalidateやUpdateを呼ばなくても指定したタイミングで描画することが出来る。
0185デフォルトの名無しさん
2009/04/12(日) 19:18:43そんなトンデモ説を得意げに言っちゃだめw
最初の行の「別のメソッドから」は「別のスレッド」と言いたかったんだろうが、
そんな話見たことも聞いた事もない。
Control.CreateGraphicsを使う場合のメリットは、Invalidate⇒OnPaintという
通常の処理に比べてオーバーヘッドが少ないことなんじゃないの?
逆にデメリットは、描画処理を呼ぶトリガーをOnPaintに一本化できないことでしょ。
もっとも、>>96のように短い一定時間ごとに必ず描画するのならダーティー化
された場合のことを考えなくていいからデメリットと言えないんだろうけど。
0186デフォルトの名無しさん
2009/04/12(日) 19:30:050187デフォルトの名無しさん
2009/04/12(日) 19:36:55すまん確かにそうだったw
グラフィック関連長いこと触ってないんで忘れてたよ。
0188デフォルトの名無しさん
2009/04/12(日) 20:13:37http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9025.txt
注、Stopのときの再描画処理としてpicturebox1にPaintイベントを追加している。
0189デフォルトの名無しさん
2009/04/12(日) 20:55:18複数のスレッドからimageを使うことになるので、
lockはvoid Draw(int rad)全体にかけたほうがよかった。
だた、startフラグで制御してるのでただし実行に影響はないはず。
0190デフォルトの名無しさん
2009/04/13(月) 17:01:47SuspendLayoutとかの呼び出しをやった方がいいんだろうか?
位置を移動させるとかの場合は効きそうだけど今一歩やるべきかどうかの判断がつかないんだが・・・
今はおまじない的にやってるけども
0191デフォルトの名無しさん
2009/04/13(月) 21:34:500192デフォルトの名無しさん
2009/04/14(火) 20:34:17これ見てみw
国会の無駄な手当てでお手盛り人件費じゃぶじゃぶの実態w
この経済危機に税金をなんでこういう公務員、国会職員に税金くれてるの?
↓
衆議院議員 渡辺周氏「呆れ返る国会のムダ呆れ返る国会のムダ」
http://www.choujintairiku.com/watanabes.html
内閣の閣議でどれだけお手盛り大盤振る舞い、浪費が行われているかわかるね。
これが自民党−麻生内閣の実態!!
0193デフォルトの名無しさん
2009/04/14(火) 20:39:03text/plainでくれ
0194デフォルトの名無しさん
2009/04/14(火) 21:25:000195デフォルトの名無しさん
2009/04/14(火) 21:26:06分からないことがあったらまたおいで
がんばってね
0196デフォルトの名無しさん
2009/04/14(火) 22:06:03いつかは教えられる側にまわれるよう精進します。
0197デフォルトの名無しさん
2009/04/14(火) 23:00:27いるんですが、クライアントからデータを検索する必要があります。検索条件
によっては、戻り値のデータが数万件になることもあります。
そこで、WCFのバインディングのmaxReceivedMessageSizeを大きくして対処
しようと思ったのですが、途中でキャンセルできる必要とサーバのメモリを
節約する必要が生じました。
どのように実装するのがいいでしょうか?
現在の処理)
1. クライアントが検索条件を指定してサーバを呼ぶ
2. サーバは検索条件によって、SQL Serverの複数のテーブルを検索し、複数
レコードからオブジェクトを組み立てる
3. オブジェクトの配列(やツリー構造)が出来上がったらクライアントに返す
案)
1. サーバはDataReaderでデータベースを検索しているので、一定レコード数
ごとに結果をクライアントにレコード単位でコールバックする。オブジェクト
はクライアント側で組み立てる。
2. DataReaderからデータを読みつつ、一定オブジェクト数ごとに結果をクラ
イアントにコールバックする。ただし、各オブジェクトの大きさはそれぞれ違
うので、オブジェクトの数ではメモリ使用量は計れない。
3. クライアントでデータ取得依頼だけして、数秒おきにサーバに結果を取りに
行く。
4. 戻り値はStreamとし、オブジェクトが出来るたびにStreamにオブジェクトに
入れ、クライアントはそのたびにオブジェクトをデシリアライズする。ただし、
DataReaderを読みつつStreamにオブジェクトを入れる方法がまだ分かってない。
よろしくお願いします。
0198デフォルトの名無しさん
2009/04/14(火) 23:06:000199デフォルトの名無しさん
2009/04/14(火) 23:15:400200デフォルトの名無しさん
2009/04/14(火) 23:18:27ページングとは、
1. クライアントで検索依頼
2. クライアントから1ページ目要求
3. データがなくなるまで、2をnページ繰り返し
ということでしょうか?
サーバで全データをメモリに読み込むことは出来ないので、データベース上に
昇順でユニークなIDが必要になるという理解であってますか?
0201デフォルトの名無しさん
2009/04/14(火) 23:20:070202デフォルトの名無しさん
2009/04/14(火) 23:21:31すみません。具体的に御願いできますか?非同期でクライアントから依頼して
サーバから非同期でコールバックするという意味でしょうか?
だとすると>>197の案1, 2ですよね
0203デフォルトの名無しさん
2009/04/14(火) 23:23:35サーバーでのクエリ実行を非同期にする。
で、適宜タイムアウト。件数が多すぎるとき? シラネ。
0204201
2009/04/14(火) 23:23:55TOP 句
ttp://msdn.microsoft.com/ja-jp/library/ms189463.aspx
ROW_NUMBER 関数
ttp://msdn.microsoft.com/ja-jp/library/ms186734.aspx
0205デフォルトの名無しさん
2009/04/14(火) 23:25:22上限件数は指定できます。ただ、最初の件数以降の次のデータを指定するのは
難しい状況です。ユニークで昇順なキーがないので。
データが多いからといって、途中で検索をやめてしまうのはだめです。
ただ、サーバがメモリ不足で落ちるのは駄目ですが、クライアントがメモリ不足
で落ちるのはまだ許容範囲です。
0206デフォルトの名無しさん
2009/04/14(火) 23:28:130207デフォルトの名無しさん
2009/04/14(火) 23:30:37ROW_NUMBER知りませんでした!!使えそうですね。ちょっとこれから調べてみます。
>>206
申し訳ないです。エラーで結果が出ないのはいいのですが、結果が正しくないの
は一番やってはいけないことなので、あのような書き方になってしまいました。
0208デフォルトの名無しさん
2009/04/14(火) 23:31:17TOP でも 3 回(だっけ?)組み合わせればここからここまでっての
一応できるんだよ。
まぁ天啓にあった某関数と同じ機能な ROW_NUMBER サポして
くれたからこれでよくなったけど
0209デフォルトの名無しさん
2009/04/14(火) 23:58:260210デフォルトの名無しさん
2009/04/15(水) 00:08:13なるほど。
0211デフォルトの名無しさん
2009/04/15(水) 21:30:23大丈夫かな?
0212デフォルトの名無しさん
2009/04/15(水) 22:49:05タスクトレイに格納した状態で再生できるサウンドAPIを探しています。
再生させる際、タスクトレイに格納された状態で、ボリューム調整を行いたいです。
始め、System.Media.SoundPlayerを利用したのですが、音量調整ができませんでした。
次に、Microsoft.DirectX.DirectSound.SecondaryBufferを利用したのですが、タスクトレイに入った状態では再生できませんでした。
上記には勘違いがあるかもしれません。
その点の指摘も含め、分かる方よろしくお願いします。
開発環境:
VisualStudio2008
WindowsXP
0213デフォルトの名無しさん
2009/04/15(水) 22:56:040214デフォルトの名無しさん
2009/04/15(水) 23:03:290215デフォルトの名無しさん
2009/04/15(水) 23:07:58協調レベルは真っ先に疑いました。
CooperativeLevel.Normal
CooperativeLevel.Priority
CooperativeLevel.WritePrimary
全部試しましたが、ダメでした。。。
フォームを表示すると鳴るんですけど、何故でしょうね。。。
0216デフォルトの名無しさん
2009/04/15(水) 23:14:06今このようなコードを書いています。
thisがいけないんですかね?
表示しているのはフォームではなく、NotifyIconですからそのownerを指定???
う〜む。やっぱり分からないです。。。
0217212 215 216
2009/04/15(水) 23:29:32自己解決しました。
BufferDescription の GlobalFocus を true にする事で鳴りました!
0218デフォルトの名無しさん
2009/04/15(水) 23:31:14http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200511/05110065.txt
0219デフォルトの名無しさん
2009/04/16(木) 16:45:54VS2008で参照を追加したとき.csprojに
processorArchitecture=x86
などと書かれる情報のことです。
ildasmでマニフェストは見てみたのですが、それらしき情報は見つからなかったです。
よろしくお願いします。
0220デフォルトの名無しさん
2009/04/17(金) 05:03:440221デフォルトの名無しさん
2009/04/17(金) 20:13:06どうしようもないんでしょうか?
といってもたかだか*.csファイル数126個、全45109行なんですが。
ユーザーコントロールも10個くらい作ってますが、それも関係してるのかな。
0222デフォルトの名無しさん
2009/04/17(金) 21:33:29(WidgetLibrary.Widgetクラスは別プロジェクトでdllとして作成)これだとWidgetLibrary.Widgetの名前が解決できないのでビルド
できません。ビルドできない原因は何でしょうか?
namespace ConsoleApplication1
{
public class Loader
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += FindAssm;
Program.Go();
}
static Assembly FindAssm(object sender, ResolveEventArgs args)
{
string simplename = new AssemblyName(args.Name).Name;
string path = @"c:\sample\" + simplename + ".dll";
if (!File.Exists(path)) return null;
return Assembly.LoadFrom(path);
}
}
public class Program
{
public static void Go()
{
WidgetLibrary.Widget w = new WidgetLibrary.Widget(1, "a");
w.widgetDisplay();
}
}
}
0223デフォルトの名無しさん
2009/04/17(金) 21:41:29と思う。
0224デフォルトの名無しさん
2009/04/17(金) 21:41:440225デフォルトの名無しさん
2009/04/17(金) 21:45:01任意のフォルダにDLLを配置するのが目的なら、GACに登録した上で参照設定するのが王道。
.NET Frameworkに含まれるDLLは、ローカルコピーしなくても参照できるだろ。
それは.NET FrameworkのDLLが特別扱いされているわけじゃなくて、それらが
GACに登録されているから。
自作のDLLもGACに登録すれば同様に扱える。
0226デフォルトの名無しさん
2009/04/17(金) 21:58:34>>223
参照設定を追加するとプライベートアセンブリになってしまうので回避したいのです。
>>224
解決策でした。
>>225
GACに登録せずに任意のフォルダに置くことは不可能ということでしょうか??
このソースは C# 3.0 IN A NUTSHELL の558ページのコードを確認したくて
書いたものです。
0227デフォルトの名無しさん
2009/04/17(金) 22:20:42洋書は製本がイマイチなのが多くて困る
0228デフォルトの名無しさん
2009/04/17(金) 22:28:17と思う。
0229デフォルトの名無しさん
2009/04/17(金) 22:43:09できました。
どうもありがとうございました。
0230デフォルトの名無しさん
2009/04/17(金) 23:57:22GACとは、Global Assembly Cacheの略で、システムワイドに.NETのアセンブリを
登録しておくキャッシュ。概念としてはUNIX系のOSでldconfigすると、システム
ワイドに利用するダイナミックライブラリがld.soに登録されるのと似ている。
0231デフォルトの名無しさん
2009/04/18(土) 05:25:56おまえgoogle先生だろw
0232デフォルトの名無しさん
2009/04/18(土) 13:04:23状況に合わせたコンテキストメニューを作れみたいになっていたと
記憶してるんですが、
ContextMenuStripだと、ToolStripMenuItemにCloneMenuがないので、
これはどう解釈したらいいんでしょうか?
デザイン時にパターンの数だけ作り付けのContextMenuStripを
用意しとくんですか?
0233デフォルトの名無しさん
2009/04/18(土) 20:48:31残しておきたいです
どうすればいいのでしょうか?
0234デフォルトの名無しさん
2009/04/18(土) 20:52:43それだけで回答すると、
そりゃあんたの作り方次第としか言いようがない。
0235デフォルトの名無しさん
2009/04/18(土) 21:02:42作り方が悪かったですorz
OnActivatedを初めてFormが表示されるときにだけ呼ばれると勘違いしてました…
0236デフォルトの名無しさん
2009/04/18(土) 22:06:350237デフォルトの名無しさん
2009/04/18(土) 22:51:48これをZキーが押されている時にAが押されていることを知りたいのですがどうすればいいでしょうか?
0238デフォルトの名無しさん
2009/04/18(土) 23:06:290239デフォルトの名無しさん
2009/04/18(土) 23:12:15いまだにキーボードから数値を入力させて、それを表示する程度のものの自己流改変なのですが、なぜか二つ目を入力した後にエラーが起きて止まってしまいます。
それと、途中でプログラムの流れを止める方法がわからないので、それも出来れば教えていただけませんでしょうか?
とりあえず理想としては、エンターを押してからもう一度押す迄
変数X + 1の答えを変数Xに代入し続けるようなプログラムが作りたいのです。
一応、ソースを書いておきます。
#include <stdio.h>
int main(void)
{
int PS;
float PS2;
float PS3;
printf("まずは整数を入力してください。");
scanf("%d",PS);
printf("次は、小数を入力してください。");
scanf("%f",PS2);
printf("最後にもう一度、小数を入力してください。");
scanf("%f",PS3);
int end;
printf("では、なにか数字を入力してエンターを押すと、結果が表示されます。");
scanf("%d",end);
0240デフォルトの名無しさん
2009/04/18(土) 23:13:35すれ違い
0241デフォルトの名無しさん
2009/04/18(土) 23:13:52printf("最初の整数は %d ですよね?",PS);
;
printf("そして次は少数一回目は %f ですよね?",PS2);
;
printf("そして最後は、 %f となっておりますよね?",PS3);
;
int red;
printf("最後に、面白いものを見せましょう。適当に数字を入れてエンターを押してください。");
scanf("%d",red);
printf("exeファイルのダブルクリックをしていなければ、適当に入れてもらった数字を足した数を「%d」内に表示しておきます。では、さようなら。",end + red);
return 0;
}
最後のprintf()が終わっても自動的に閉じないようにするには、いったいどうすればいいのでしょう?
0242239,241
2009/04/18(土) 23:15:53スレ名をチラっとしかみていませんでした。本当に申し訳ありません。
0243デフォルトの名無しさん
2009/04/18(土) 23:36:08変な言語だな。
C#って手続き型のプログラムができないのか。
不便な言語だな。
C#って関数に省略可能な引数を使えないのか。
代替手段としてオーバーロードしないといけないのか。
馬鹿げた言語だな。
C#ってswitch文でbreak無しで下に降りることができないのか。
気が狂ったような言語だな。
それと、0かそうでないかを評価できないのか。
初期化する前の不定値を参照するのはコンパイルエラーか。
0244デフォルトの名無しさん
2009/04/18(土) 23:46:36他のは賛同しかねるが。
0245デフォルトの名無しさん
2009/04/18(土) 23:49:30swichでのフォールスルーに関しては議論が分かれるとこだろう。
C#ではステートメントを含まない場合にのみ許可されている。
gotoステートメントによってラベル付きステートメントに直接移動する事もできるけど滅多に使われない。
0246デフォルトの名無しさん
2009/04/18(土) 23:58:26初心者は恐ろしいことするよなぁ
0247デフォルトの名無しさん
2009/04/19(日) 00:00:320248デフォルトの名無しさん
2009/04/19(日) 00:37:30ぼろい言語だな。.Netでしか通用しないノウハウだな。
C++ならC言語のノウハウは生かせるから、VC++やC++Builderで、MFCやVCLの知識は無いけども、
イベントハンドラにC言語のコードを差し込んで、単にGUIの画面を借りるだけのスタイルで、
普段コマンドプロンプトのプログラムしか作らない俺でも、Windowsプログラムを作れたぞ。
0249デフォルトの名無しさん
2009/04/19(日) 00:49:140250デフォルトの名無しさん
2009/04/19(日) 01:10:240251デフォルトの名無しさん
2009/04/19(日) 01:14:240252デフォルトの名無しさん
2009/04/19(日) 01:14:350253デフォルトの名無しさん
2009/04/19(日) 01:17:500254デフォルトの名無しさん
2009/04/19(日) 01:39:12VB6人やMS-Office VBA人は差分学習ですぐにVB.netやれるし、
(中途半端に似ててかえって混乱するとかいうのはデマ)
.Netしか通用しないノウハウのC#を学習する意味不明。
0255デフォルトの名無しさん
2009/04/19(日) 01:42:37C.StdIO.Printf() とか用意してある
0256デフォルトの名無しさん
2009/04/19(日) 01:42:570257デフォルトの名無しさん
2009/04/19(日) 02:07:22ところがどっこい。
.NETのサンプルがC#だけで出て来る例というのがよくあるため、
VBの人もC++の人もC#のサンプルを見て自分の言語に移す羽目に。
ここから蛇足。一昔前だったら、Cで書かれたWinAPIのサンプルを
VBへ移したり、C++ならクラスでラップしてみたりしていたわけで、
時代が移ってもやっていることに変わりはないのさ_| ̄|○
0258デフォルトの名無しさん
2009/04/19(日) 02:09:540259デフォルトの名無しさん
2009/04/19(日) 02:10:41じゃあdelphiしか選択肢がないな
0260デフォルトの名無しさん
2009/04/19(日) 02:14:420261デフォルトの名無しさん
2009/04/19(日) 03:24:35要は君はコピペグラマってこと?
だったら.NETの問題っていうより君自身の問題なんじゃないの?
普通はサンプルの考え方を拝借することはあってもコードをそのまま引っ張る
なんてしないよ。
0262デフォルトの名無しさん
2009/04/19(日) 03:47:00サンプルを理解するくらいなら特にC#の知識を持ち合わせていなくても問題ないだろう。
もっとも、VB.NETやC++/CLIからもうちょっと手を伸ばせばC#にも手が届くだろうとは思う。
手が届くというだけではC#を学習する理由にはならないから、254への答えでは無いけどな。
0263デフォルトの名無しさん
2009/04/19(日) 08:38:490264デフォルトの名無しさん
2009/04/19(日) 08:53:42もういないだろうけどscanfの引数は取得したい値を格納する変数のポインタを入れなきゃだめだよん
0265デフォルトの名無しさん
2009/04/19(日) 10:09:380266デフォルトの名無しさん
2009/04/19(日) 10:47:06なんで一行読み込みがgnuのgetlineしかねーんだよ・・・標準で作れよ
メモリ確保こわい
って感じ
0267デフォルトの名無しさん
2009/04/19(日) 18:12:40getopt に頑張ってもらうか適当な設定ファイル読ませるようにしちゃうなぁ。
つか C# 関係ないな。
0268デフォルトの名無しさん
2009/04/20(月) 02:23:310269デフォルトの名無しさん
2009/04/20(月) 11:37:481.lock(独自のロックオブジェクト)
2.lock(対象.SyncRoot)
3.Queue.Synchronized(対象)
とか考えられるんですが
使い分けの方法がわからない
1・・・コレクションだけではなくその他の変数やオブジェクトもロックしたいときにまとめて一回でやりたいから使うかなと
2、3 この違いは一体何なのか教えてほしいです。
そして Queue.Synchronized でMSDN調べたら
同期されている (スレッド セーフな) Queue ラッパーを返します
とありますが、型が同じということだけはわかりますがこれはコピーされたオブジェクトなのかそれとも元の本体そのものなのか・・・
予想すると
3のラッパーはオブジェクトのディープコピーをかえしてきて読み取り専用的に扱う
削除なんかは3の操作ではできないから1,2の方法を使って要素を削除したり
こんな考え方でいいのでしょうか?
0270デフォルトの名無しさん
2009/04/20(月) 21:40:44.Net Reflector
0271デフォルトの名無しさん
2009/04/20(月) 22:08:110272デフォルトの名無しさん
2009/04/21(火) 05:09:560273デフォルトの名無しさん
2009/04/21(火) 05:15:22うん
0274デフォルトの名無しさん
2009/04/21(火) 05:20:350275デフォルトの名無しさん
2009/04/21(火) 08:45:40どっちかっていうと1.2.が似てて、3.が違うよ
3はクラスメソッドがスレッドセーフになったコレクション。
Dequeue()やEnqueue()はスレッドセーフで実行できるけど、
列挙処理中はSyncRoot等でロックしないと別スレッドでの変更に対応できない
あとラッパーっていうのは元のオブジェクトに
新しい機能をかぶせるテクニックの総称だから元の本体だね
削除も普通にできる
0276デフォルトの名無しさん
2009/04/21(火) 08:49:30{
get
{
if (this._syncRoot == null)
{
Interlocked.CompareExchange(ref this._syncRoot, new object(), null);
}
return this._syncRoot;
}
}
0277デフォルトの名無しさん
2009/04/21(火) 11:09:13>>275
列挙している間に別スレッドからの追加・削除処理が入る場合は基本ロックが必要そうですね・・・
そこまで処理速度が必要そうなわけでもないので、ひとまずロックさせて使ってみようと思います。
>>276
結局は内部で専用のロックオブジェクトを提供してくれているだけという感じでしょうか
0278デフォルトの名無しさん
2009/04/21(火) 13:29:20どこにいったんだろう?
VisualStudioのライブラリソースコード表示の説明リンクを次から1の直下に張り付けておいたら良いと思う。
誰か場所知っていたらリンク張って欲しいです。
>>277
実はソースコードみた方が圧倒的に正確だしてっとりばやい、凄い単純な実装なんで。
http://www.microsoft.com/downloads/details.aspx?FamilyID=8c09fd61-3f26-4555-ae17-3121b4f51d4d&DisplayLang=en
とりあえず VisualStudio からではないですが、ソースコードです。
ダウンロードしてgrepして探してみてください。
0279デフォルトの名無しさん
2009/04/21(火) 18:40:07配列化して(一列に並べて)、各変数に代入するメソッドを変数の個数だけ実行したいのですが、
デリゲートを使うとオーバーロードできないため、Object型を渡して判別するという事も考えたのですが納得できません。
unsafeのポインタを使うべきなのでしょうか。
0280279
2009/04/21(火) 18:52:28foreach (string tmp in bufStr)
{
str = DataTypeCheck(tmp);
if (str == null)
{
//・・ここでメソッドを呼び出してそれぞれ代入
}
else if (str == "case1")
{
//・・代入する変数のリストを作成
}
else if (str == "case2")
{
}
}
データ(string[])は以下のようになっており
case1
a
b
case2
・・・
この場合はa,bをcaseに応じた変数に格納します。
0281デフォルトの名無しさん
2009/04/21(火) 19:23:47Func<T>でも使えばいいんじゃね
privateなメソッドなら型制約とかもいらんっしょ
0283デフォルトの名無しさん
2009/04/22(水) 19:00:44CLRにマネージされてるかどうかってのはつまりどういう事なの?
0284デフォルトの名無しさん
2009/04/22(水) 19:12:250285デフォルトの名無しさん
2009/04/22(水) 19:23:50C++なんかだと、COMやスマートポインタを使って、リファレンスカウンタで生存管理をしているんだが
この方式だと、参照がなくなると同時に解放処理がされる。
対して、ガベージコレクタを使った.NETでは解放処理はメモリーが尽きたとき。
で、C++では参照がなくなると同時に解放処理を行う事を前提に組んであるケースが多いんだ。
だからC++の場合ちゃんとリファレンスカウンタで管理されているファイルシステムオブジェクトなどはこのタイミングでClose処理もされるのでCloseを忘れていても大丈夫
アンマネージをラップしたクラスを作るとこれが問題になることがある、これ明示的に開放する関数がDisposeだよという意味。
あくまでもラップした先のオブジェクトの解法、ラッパ事態はマネージドなので、ガベージコレクタで解放される。
たとえば.NETでStream系のオブジェクトでこれを忘れていると、Closeしわすれているとガベージコレクタで回収されるまでOpenされっぱなし。
0286デフォルトの名無しさん
2009/04/22(水) 19:42:28CLRの関与していないところで確保したもの。主にWin32ハンドルとか。
0287デフォルトの名無しさん
2009/04/23(木) 13:27:12いいんですかね…。基本的にマネージド以外の方法で取得したものは
全て何かしらの処理を加えた方がいいんでしょうか。
0288デフォルトの名無しさん
2009/04/23(木) 13:35:57アンマネージドリソースの解放ってのはIntPtr.Zeroを変数に代入することじゃないぞ
CloseHandleとかDeleteObjectとかのAPI関数呼び出しのことだぞ
処理した方がいいかどうかじゃない、必要な手順で解放する必要がある
もちろんシステムグローバルな値とかでその必要が無いものもあるがな、ウィンドウハンドルみたいな
0289デフォルトの名無しさん
2009/04/23(木) 14:14:380290デフォルトの名無しさん
2009/04/23(木) 22:32:210291デフォルトの名無しさん
2009/04/23(木) 22:37:01Netの標準コントロールとしては提供されていないのでしょうか?
市販コントロールには似たようなものがあるようなのですが。
よろしくお願いします。
0292デフォルトの名無しさん
2009/04/23(木) 22:48:190293デフォルトの名無しさん
2009/04/23(木) 23:42:08devexpressの試用版DLしたとこ。
0294デフォルトの名無しさん
2009/04/24(金) 00:05:34残念です。Microsoftも便利な部品はどんどん使えるようにして欲しいですね。
0295デフォルトの名無しさん
2009/04/24(金) 00:11:37どんどんしてるんだけど、今、SilverlightとかASP.NETとかの優先順位がむちゃくちゃ高いから、
VS風ドックコントロールは、ちょっとやそっとの要望あっても当分後回しになると思う。
0296デフォルトの名無しさん
2009/04/24(金) 08:36:28API直接操作するなら、APIの仕様通りに使わないとアカンで
マネージド側の特徴もちゃんと考慮して、アンマネージドの処理がアンマネージドの仕様に合うように。
0297デフォルトの名無しさん
2009/04/24(金) 09:05:35http://anchorage.2ch.net/test/read.cgi/bizplus/1240524654/
0298デフォルトの名無しさん
2009/04/26(日) 16:20:35同じ性質を持ったオブジェクトの中にオブジェクトを上限なく動的に入れる方法はありませんか?
0299デフォルトの名無しさん
2009/04/26(日) 16:29:210300デフォルトの名無しさん
2009/04/26(日) 16:32:520301298
2009/04/26(日) 16:56:29ありがとうございます。そこまで複雑な事ではないです。
0302デフォルトの名無しさん
2009/04/26(日) 17:06:030303デフォルトの名無しさん
2009/04/26(日) 17:09:44とでもやって多めに確保しとけ
0305デフォルトの名無しさん
2009/04/26(日) 18:35:030306デフォルトの名無しさん
2009/04/26(日) 18:35:51ということで、これでぐぐってみてください。
0307デフォルトの名無しさん
2009/04/27(月) 08:52:010308デフォルトの名無しさん
2009/04/28(火) 00:51:39タスクバーの右クリックでのシステムメニューは下のURL等を見て表示できるようになったんですが、最小化などが無効になったままです。
これは何かメッセージを処理したりすれば有効にさせることなど出来るのでしょうか?
最大化などもFormのWindowStateをNormalのまま最大化らしくふるまうように無理くりやっています。
もしくはこんな風な独自のウィンドウを作る時の従うべき方針などあれば是非是非エロイ人
0309308
2009/04/28(火) 01:11:26とかをCreateParamsのStyleに追加したら最小化も表示されたっす。
0310デフォルトの名無しさん
2009/04/28(火) 01:39:19var webControl=new WebControl()
webControl.Draw(graphics);
みたいな感じで。
0311デフォルトの名無しさん
2009/04/28(火) 01:44:28実行時にvba内のブレークポイントで処理を止めるには
どうしたらいいんでしょうか。
0312デフォルトの名無しさん
2009/04/28(火) 02:05:10でやってみていかがでしたか?
0313デフォルトの名無しさん
2009/04/29(水) 18:41:06{
[DllImport("libmecab.dll")]
extern static int mecab_new2(string arg);
[DllImport("libmecab.dll")]
extern static string mecab_sparse_tostr(int m, string str);
[DllImport("libmecab.dll")]
extern static void mecab_destroy(int m);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int mecab = mecab_new2("");
string s = mecab_sparse_tostr(mecab,textBox1.Text);
mecab_destroy(mecab);
textBox2.Text = s;
}
}
これがXPでは動くのだけど、Vistaでは動かない。
mecab_sparse_tostr(mecab,textBox1.Text); で
System.AccessViolationException はハンドルされませんでした。
Message="保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。"
がでる。
意味がわからない。なぜ?
0314デフォルトの名無しさん
2009/04/29(水) 18:51:150315デフォルトの名無しさん
2009/04/29(水) 18:55:02http://mecab.sourceforge.net/libmecab.html
0316デフォルトの名無しさん
2009/04/29(水) 18:55:190317デフォルトの名無しさん
2009/04/29(水) 18:58:360318デフォルトの名無しさん
2009/04/29(水) 20:04:16それはさすがに大丈夫だった。
また、Mecabインストール時についてくるEXEは、普通に動きます。
0319デフォルトの名無しさん
2009/04/29(水) 20:06:300320デフォルトの名無しさん
2009/04/29(水) 20:37:13いま実際に動かしてみた
返値がStringだとマーシャラがギブアップするみたい
IntPtrで受けてMarshal.PtrToStringAnsiとかで文字列変換すべし
0321デフォルトの名無しさん
2009/04/29(水) 21:21:300322デフォルトの名無しさん
2009/04/29(水) 21:28:24エラーが出る原因だけど、あくまで推測レベルだが
返値にStringを指定した場合UnmanagedType.BStrならSysFreeStringが、
それ以外ならLocalFreeだかCoTaskMemFreeだかが自動的に呼び出されたはずなんで
メモリ周りの保護の強化との兼ね合いと思われる
0323デフォルトの名無しさん
2009/04/29(水) 22:10:13ありがとう。XP、Vista両方動いた。
0324デフォルトの名無しさん
2009/04/30(木) 09:23:570325デフォルトの名無しさん
2009/04/30(木) 11:46:100326デフォルトの名無しさん
2009/04/30(木) 14:35:300327デフォルトの名無しさん
2009/04/30(木) 19:31:39○コンポーネントは機能が洗練されているほど良い。
0328デフォルトの名無しさん
2009/04/30(木) 21:23:180329デフォルトの名無しさん
2009/04/30(木) 21:52:400330デフォルトの名無しさん
2009/04/30(木) 22:54:12選択された行をタブ区切りでクリップボードに転送してみようと思っているのですが
簡単な方法もしくは、一般にListViewからクリップボードへの定型的なやり方ってありますか?
0331デフォルトの名無しさん
2009/04/30(木) 23:02:530332デフォルトの名無しさん
2009/05/01(金) 02:27:08const int data[] = {1, 2, 3, 4};
のようにやっていたのを
C#で書き直したいんだけど、
const int[] data = {1, 2, 3, 4};
とか
const int[] data = new int[]{1, 2, 3, 4};
って書くと文句言われる。
int[] data = {1, 2, 3, 4};
なら、文句言われなくなるんだけど、
C#でconst配列の初期化ってどうすればいいの?
0333デフォルトの名無しさん
2009/05/01(金) 02:29:31dataそのものへの代入不可ならreadonly
要素の変更不可ならReadOnlyCollection<T>でラップ
0334デフォルトの名無しさん
2009/05/01(金) 02:31:200335デフォルトの名無しさん
2009/05/01(金) 11:22:09配列の要素に書き込めます
0336デフォルトの名無しさん
2009/05/01(金) 11:37:53>const int data[] = {1, 2, 3, 4};
は要素の書き換え可なの?
0337デフォルトの名無しさん
2009/05/01(金) 12:22:30それは
int const data[] = ...
と同義だから、constはintに掛かってて、要素は書き換えられない。
0339337
2009/05/01(金) 13:40:55リンケージ変わったりとか?
0340デフォルトの名無しさん
2009/05/01(金) 14:16:41専門のスレで聞いた方が良いで
0341デフォルトの名無しさん
2009/05/01(金) 14:21:46readonly System.Collections.ObjectModel.ReadOnlyCollection<int> data = Array.AsReadOnly(new int[] { 1, 2, 3 });
こうかな、使ったことないんで自分で確かめてくれ。
0342デフォルトの名無しさん
2009/05/01(金) 14:23:280343デフォルトの名無しさん
2009/05/01(金) 16:36:37CrossThreadMessagingExceptionが投げられるのですが、どのように回避するのが良いでしょうか?
0344デフォルトの名無しさん
2009/05/01(金) 16:42:060345デフォルトの名無しさん
2009/05/01(金) 17:48:18ThreadStateException
{"スレッドが実行中か、または終了しています。再起動できません。"}
が投げられます。
一度Abort()したスレッドを再開するにはどうすればよいでしょうか?
毎回new Threadをし直す必要があるのでしょうか?
できれば、new Threadはアプリ起動時に1度だけで済ませたいです。
0346デフォルトの名無しさん
2009/05/01(金) 18:00:27つーかAbortなんか使っちゃダメ SuspendとかResumeとかも禁止
フラグとかでスレッド自身が自分の状態を管理するようにする
別にThread作りなおしてもかまわんとは思うが
0347デフォルトの名無しさん
2009/05/01(金) 18:08:39スレッドの待機をメッセージが無い.NETでどうするか疑問だった
マジでみんなフラグ管理で逃がしてるの?
0348デフォルトの名無しさん
2009/05/01(金) 18:48:39Resume、Suspendは「使用しないでください」と書いてありますが、Aboteには書いていません。
何故、Abortを使うのはダメとおっしゃっているのでしょうか?
0349デフォルトの名無しさん
2009/05/01(金) 18:52:430350デフォルトの名無しさん
2009/05/01(金) 18:56:26メモとかに書いてるっしょ どこで終了するか分からないからオブジェクトが不完全な状態になりうるとか
更には確実に終了されるかどうか保証できないとか実にやばそうな匂いが漂ってくる
0352デフォルトの名無しさん
2009/05/01(金) 19:26:48ヘルプの解説見ろよ……
0353デフォルトの名無しさん
2009/05/01(金) 19:35:28ヘルプの解説でも、
SuspendとResumeの項には
「メモ : このメソッドは,互換性のために残されています。」
「[ObsoleteAttribute("Thread.Resume has been deprecated. Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources. http://go.microsoft.com/fwlink/?linkid=14202", false)] 」
とありますが、
Abortの項にはありません。
詳しくはヘルプをご覧ください。
0354デフォルトの名無しさん
2009/05/01(金) 20:21:44再開は Thread.Interrupt() で ThreadInterruptedException をスローさせる。
0355347
2009/05/01(金) 21:40:05Thread.Interruptのコード例でsleepSwitchフラグの位置がイマイチ納得いかなかったけど
>>354に書いてあるように使うよ
0356デフォルトの名無しさん
2009/05/01(金) 22:04:03一般にはフラグは使わない、イベントやセマフォやミューテックスの類を使って制御する。
フラグは簡単にミスするしバグりやすいよ、CPUパワーは無駄にするし、スレッドの実行優先順位も狂って非効率になる。
0357デフォルトの名無しさん
2009/05/01(金) 22:10:400358デフォルトの名無しさん
2009/05/01(金) 22:25:42デバッガで確認したけど、Thread.SpinWait(10000000);の行には行かないね。
シングルコアだとJoin呼ぶまでスレッド動かないからだね。
試しにInterrupt()のあとでThread.Sleep()入れてメインスレッドをスリープ待機に
入れちゃうとThread.SpinWait(10000000);がThreadInterruptedException起こすし。
マルチコアだと動かないんじゃないか?このサンプル。
0359デフォルトの名無しさん
2009/05/01(金) 22:48:07メモリ操作オンリーの計算なら止めてしまっても問題ないと思うが
普通にいろいろなリソースを操作しているなら勝手なタイミングで止められたらマズくね?
もちろん上記のような特殊な状況があるならそれこそSuspendしちまっても全然問題ないと思われますけど。
普通の状況では、イベントを確認して問題なければそこで止める。
0360デフォルトの名無しさん
2009/05/01(金) 23:04:40問題ないかを確認するのはInterruptする側でしろということじゃないかな。
0361デフォルトの名無しさん
2009/05/01(金) 23:07:19普通に使うものじゃない
0362デフォルトの名無しさん
2009/05/01(金) 23:09:020363デフォルトの名無しさん
2009/05/01(金) 23:11:25スレッド自体、使わない人は使わないんだし。
0364デフォルトの名無しさん
2009/05/01(金) 23:11:48結局フラグ的な使い方をすることになりそうな気がする。
0365デフォルトの名無しさん
2009/05/01(金) 23:13:55フラグだとvolatile付け忘れたり、メモリーバリア忘れたり、素人には難しいぞ。
0366デフォルトの名無しさん
2009/05/01(金) 23:23:06そういえばBackgroundWorkerの実装をみると
volatileもmemorybarrierも使ってなかったのを思い出した。
0367デフォルトの名無しさん
2009/05/01(金) 23:24:28セマフォはマルチスレッド用のカウンタですから
0368358
2009/05/02(土) 03:35:46>入れちゃうとThread.SpinWait(10000000);がThreadInterruptedException起こすし。
起きない。そもそも待機してない風?
>スレッドを iterations パラメータで定義した時間の間待機させます。
ってヘルプにあるのに・・・ある・・・定義した時間って単位はいくらだ?フェムト秒?
Causes a thread to wait the number of times defined by the iterations parameter.
・・・誤訳かよ!
待機とブロックと中断の用語がなんか変な気もするし。日本語ヘルプはだめすぐる。
0369デフォルトの名無しさん
2009/05/02(土) 03:40:54Azure SDKのdevelopment fabric上でWCFサービスを動かすと、
127.0.0.1からはアクセスできるのに、自分のホスト名から叩くとアクセスできなくて、
俺の設定ミスなのかAzure SDKのバグなのか分からないんだけど。
解決策を知ってる人がいたら教えて欲しい。
0370デフォルトの名無しさん
2009/05/02(土) 03:56:030371デフォルトの名無しさん
2009/05/02(土) 03:56:30リスナーでIPAddress.Anyとすべきところがそうなってないとか
0372デフォルトの名無しさん
2009/05/03(日) 10:20:58自分のプログラムが悪いとはこれっぽっちも考えてないのね
0373デフォルトの名無しさん
2009/05/03(日) 11:22:10「俺」って言うのは日本語で「自分」を示す一人称の一つだよ。
0374デフォルトの名無しさん
2009/05/03(日) 11:42:240375デフォルトの名無しさん
2009/05/03(日) 11:44:410376デフォルトの名無しさん
2009/05/03(日) 12:15:09そうでなけりゃ、自分のプログラムミスを設定ミスと言い直してごまかす人か?
0377デフォルトの名無しさん
2009/05/03(日) 12:58:12>>370
がんばってみたんだけど無理だった。。
とりあえず、MS提供のサンプルで同じことが起こるのは確認済み。
別環境でやっても同じく。
>>371
なるほど。そういうオプションがあるのか。
IISでその辺設定するにゃどうしたらいいんだろ。調べてみますわ。
>>372
ランタイムの初期化って設定って言いませんかねぇ。
あと、言うの忘れてたけど.svc使ってIISの機能でホスティングさせてたんで。
0378デフォルトの名無しさん
2009/05/03(日) 13:43:49そういう大事なことは先に言えよな。
あとはトランスポートになに使ってるかかな、BasicHttpBindingとかそんなの。
0379377
2009/05/03(日) 14:05:03バインディングはBasicHttpBindingにしてる。
ウィザードのデフォルトはWebHttpBindingだけど、
それだとそのまま使うとなんか例外投げたので。
とりあえず、MSの開発者側も認識している既知の問題としては、
WCFアプリをAzureにうpすると、自分のホスト名を、
ユーザが使うロードバランサのアドレス(tp://***.cloudapp.net/)ではなく、
分散環境内でアプリが実際にロードされている鯖(tp://[guid].cloudapp.net)のもの
として認識してするせいで、それをendpointとしてWSDLを生成してしまう、
というのはどっかで見かけたけど、それがこの問題とも関連しているのかよく分からない。
0380デフォルトの名無しさん
2009/05/03(日) 14:06:36http://code.msdn.microsoft.com/wcfazure/Wiki/View.aspx?title=KnownIssues
0381デフォルトの名無しさん
2009/05/03(日) 14:10:18http://wcfazure.cloudapp.net/
http://wcfazure.cloudapp.net/ConsoleCalculator/Service.svc
けど、ローカルで動かす分には鯖名自体は(もちろん)合ってるから関係ないはずではあるんだけど。
0382デフォルトの名無しさん
2009/05/04(月) 15:59:03後者なら127.0.0.1(localhost)しか受け付けない。
タスクトレイにASPNET開発サーバーアイコンが表示されているようなら後者。
IISで動いているなら、コンピューターの管理からIISの設定を確認する。
まずWEBサイトの識別のIPアドレスで「未使用のIPアドレスすべて」になっているかどうか。
ここが127.0.0.1になっていればそれでしか繋がらない。
次にこのアプリの仮想ディレクトリを確認でセキュリティ関係に矛盾がないか確認。
よくやってしまうのが、統合認証+匿名認証の設定になっていて、
WEBで公開しているディレクトリにIUSR_xxxxのアクセス許可がないケース。
統合認証で認証された場合は問題ないが、匿名の場合にアクセス拒否を食らう。
0383デフォルトの名無しさん
2009/05/04(月) 17:09:52ありがとう。
いま、手元に環境がないので、後日確認してみて報告しますわ。
0384デフォルトの名無しさん
2009/05/04(月) 18:30:41条件に合った行から連続する3行とかを取得するにはどうすれば良いのですか。
初歩的かもしれませんが、ご教示願います。
0385デフォルトの名無しさん
2009/05/04(月) 18:32:17とりあえず下の場合の動作は?
テキスト
1234
1234
1234
abcde
abcde
abcde
条件: 1234
0386デフォルトの名無しさん
2009/05/04(月) 18:37:32条件に一致した行のインデックスとって自分でそこから2行読めば?
0387デフォルトの名無しさん
2009/05/04(月) 18:41:590388デフォルトの名無しさん
2009/05/04(月) 18:42:02int flag = -1;
foreach (string line in lines)
{
if (条件に合ってる行の場合)
{
flag = 0;
}
if (flag =! -1)
{
result.Add(line);
flag++;
if (flag > 3)
{
flag = -1;
}
}
}
0389デフォルトの名無しさん
2009/05/04(月) 18:50:200390デフォルトの名無しさん
2009/05/04(月) 19:08:04IEnumerable<string> Grep(IEnumerable<string> source, string pattern, int after) {
int n = 0;
foreach (var line in source) {
if (line.Contains(pattern)) n = after + 1;
if (n > 0) {
n--;
yield return line;
}
}
}
0391デフォルトの名無しさん
2009/05/04(月) 19:25:31bbbが条件だとして、そこから3つを取得
string[] list = { "aaa", "bbb", "ccc", "ddd", "eee" };
var result = list.SkipWhile(s => s != "bbb").Take(3);
0392デフォルトの名無しさん
2009/05/04(月) 19:44:160393384
2009/05/04(月) 20:03:011234
aaa
bbb
ccc
2345
ddd
eee
fff
のようになっていまして、ReadLineで順に読んでいって、1234を発見したときに、
aaa、bbb、cccの3行を取得するようにしたいです。
1234の行は取得できるのですが、その次の行を読んでbreak;の方法がいまいちわかりません。
0394デフォルトの名無しさん
2009/05/04(月) 20:10:11ReadLine();
ReadLine();
ReadLine();
じゃだめなの(;´Д`)
0395デフォルトの名無しさん
2009/05/04(月) 20:10:391234が2回以上あらわれることはあるか、
また1234に続く3件のうちに1234が含まれていた場合の扱いは?という確認だろ。
そういうことはありえないという条件でもよいのだが。
その条件が確定すれば簡単だよ。
0396デフォルトの名無しさん
2009/05/04(月) 20:16:30検索する行(この場合は1234)は、他の行には一切ありません。
>>394さんの3回記述をするのは、次の2行も取得できるということですか?
Webはいろいろ調べてみたのですが、1行ずつ読み込む方法しか書いてなかったもので。
0397デフォルトの名無しさん
2009/05/04(月) 20:30:440398デフォルトの名無しさん
2009/05/04(月) 20:31:520399デフォルトの名無しさん
2009/05/04(月) 20:33:15いやまて391は流石に役に立たないだろう根本的な部分で
0400384
2009/05/04(月) 20:41:24スルーするつもりはありませんでしたのでご容赦ください。
今>>394の方法でやってみたところ、思った通りの挙動が確認されました。
まだ本片手で勉強している最中ですので、このような質問内容になったことをお詫びいたします。
みなさん、ありがとうございました。
0401デフォルトの名無しさん
2009/05/04(月) 20:59:57今まで読んだ行の位置からスタートして
次読み込む行を調べて
その行に移動して
その行に書いてあることを読んで
今読んだ行を覚えておいて
読んだ内容を返す
っつー動作をするんじゃね?
0402デフォルトの名無しさん
2009/05/05(火) 17:19:160403デフォルトの名無しさん
2009/05/07(木) 00:49:522.0や3.0, 3.5って企業や業務アプリで使ってないノア?
0404デフォルトの名無しさん
2009/05/07(木) 00:52:120405デフォルトの名無しさん
2009/05/07(木) 00:53:080406デフォルトの名無しさん
2009/05/07(木) 01:03:040407デフォルトの名無しさん
2009/05/07(木) 01:10:240408デフォルトの名無しさん
2009/05/07(木) 01:22:03--
.NET Framework 3.5 Client Profile
3.5 SP1のサブセット
インストール可能な環境は
Windows Server 2003; Windows Server 2008; Windows Vista; Windows XP(SP2以降)
であるが、さらに次の条件が付加されるため実質XP(SP2以降)だけが対象となる。
フルセットの.NET Frameworkが導入されていないこと。(2.0以降だけでなく1.1や1.0も!)
フルセットの.NET Frameworkがすでに導入されている場合に
Client Profileのインストーラは3.5SP1フルセットのインストールを行う。
0409デフォルトの名無しさん
2009/05/07(木) 01:40:150410デフォルトの名無しさん
2009/05/07(木) 01:41:200411デフォルトの名無しさん
2009/05/07(木) 02:18:570412デフォルトの名無しさん
2009/05/07(木) 02:19:210413デフォルトの名無しさん
2009/05/07(木) 03:58:32めんどくさいからだれか知ってたらサンプルのページ紹介か作ってくれw
サードパーティはバグに引っぱられるからかるからなるだけ使いたくねえ…
もう和暦とか辞めればいいのに
西暦で統一してぇ・・・
0414デフォルトの名無しさん
2009/05/07(木) 04:07:320415デフォルトの名無しさん
2009/05/07(木) 07:10:320416デフォルトの名無しさん
2009/05/07(木) 11:28:41過去に作った分にまで遡及させるのは無理だから
実際に和暦が消えるのは数十年後よ。
0417デフォルトの名無しさん
2009/05/07(木) 11:37:040418デフォルトの名無しさん
2009/05/07(木) 11:59:10お寺の過去帳データベースを作ったときはまいったな。
0419デフォルトの名無しさん
2009/05/07(木) 13:47:29海外ローカルも含めて国際カレンダークラスみたいなもの。
0420デフォルトの名無しさん
2009/05/07(木) 13:50:57六曜や月齢はないが。
0421デフォルトの名無しさん
2009/05/07(木) 17:17:40役所が一生懸命使ってる限りは無理だろうけどさ
0422デフォルトの名無しさん
2009/05/07(木) 17:36:57昭和何年何月何日は存在しないから入力できないようにしてくれとか
結果的にあってんだからいいんだよ!
0423デフォルトの名無しさん
2009/05/07(木) 18:14:23ユリウス暦からグレゴリウス暦の移行期は国ごとに日付が違うし、ユリウス暦の初期は閏年が
いつだったのかわからないし、ユリウス暦導入前は最高神祇官が勝手に閏年を決めるし、一方
ギリシアではポリスごとに暦が違うし……
日本だって南朝と北朝で暦が違っていたり、暦書がなくて暦を復元できない時代があったり、
ああもう面倒くせえ
0424デフォルトの名無しさん
2009/05/07(木) 18:16:23さきの過去帳DBなんだけど、古いのはもう計算じゃ出せなくてテーブルで持つしかなかった。
古いのは書き写したときのミスとかいろいろあってもう記述がいい加減なんだよね。
咸豊とか中国の元号が出てきたときにはもう勘弁してください状態だった。
南北朝や九州年号はさすがになかった・・
0425デフォルトの名無しさん
2009/05/07(木) 19:35:09”和暦のカレンダー”だけでここまで穿り返すとはwww
0426377
2009/05/07(木) 19:43:50今日いろいろ調べてみた。
結果としては、Development Fabricは内部でASP.NET開発サーバを使っているのではないか、
という感触を持った(サービスが自分をホストしている鯖の情報を取る方法を知らないので確定的ではないけど)。
AzureのドキュメントにはIISを使ってるって書いてあるし、ASP.NET開発サーバアイコンも表示されていないんだけど、
IISにアクセスログを吐かせてみても、127.0.0.1:81を叩くときだけログに残らないし、
よく考えると、80番の設定で起動してるのに81番で起動するのは、IIS以外に鯖を起動した上でホストしている証拠かな、と。
そうなると、ホスト名がつかえないのは、現状では「仕様」ということになるんだと思う。
とりあえず、CTPの文字が外れるまではこのままなんだろうなぁ、というオチにしておく。
みんな、いろいろ教えてくれてありがとう。
0427デフォルトの名無しさん
2009/05/07(木) 20:20:27HTML文からタグのみを取り出す関数はありませんか?
逆に言うと、HTML文のタグ以外を削除するような関数
のことですが。
0428デフォルトの名無しさん
2009/05/07(木) 20:32:180429デフォルトの名無しさん
2009/05/07(木) 20:34:59正規表現使えばタグの抽出だけなら比較的簡単だ
>>428
XHTMLじゃない限りほぼパース不可能だよ
0430デフォルトの名無しさん
2009/05/07(木) 20:35:480431デフォルトの名無しさん
2009/05/07(木) 20:56:100432デフォルトの名無しさん
2009/05/07(木) 21:04:57普通に多用していいもの?
0433432
2009/05/07(木) 21:42:450434デフォルトの名無しさん
2009/05/08(金) 00:20:25http://msdn.microsoft.com/ja-jp/library/system.windows.forms.htmldocument.all.aspx
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.htmlelement.tagname.aspx
0435デフォルトの名無しさん
2009/05/08(金) 00:26:09標準でwebスクレイピングライブラリとか作られんかのう
0436デフォルトの名無しさん
2009/05/08(金) 00:31:130437デフォルトの名無しさん
2009/05/08(金) 00:31:510438デフォルトの名無しさん
2009/05/08(金) 00:34:010439デフォルトの名無しさん
2009/05/08(金) 00:37:25んじゃ、これ。
http://htmlagilitypack.codeplex.com/
0440デフォルトの名無しさん
2009/05/08(金) 00:38:35プログラムをバイナリエディタでみたところプログラム内にフォルダ名が書き込まれているのですが、
ビルド時、かきこまれないようにするにはどうすればいいですか?
0441デフォルトの名無しさん
2009/05/08(金) 00:38:55相対パス使うか、定義ファイルにパス書くか、レジストリにパス書く。
0442デフォルトの名無しさん
2009/05/08(金) 00:39:43リリースビルド & .pdb を作らないようにすればいいんじゃなかったっけ?
0443デフォルトの名無しさん
2009/05/08(金) 00:40:43ビルドー詳細設定でデバッグ情報をnoneにしたらいけました
あせった><
0444デフォルトの名無しさん
2009/05/08(金) 00:48:430445デフォルトの名無しさん
2009/05/08(金) 02:31:26思ったものの、よく勉強してみたら、現行暦がいかに単純で合理的か納得したw
0446デフォルトの名無しさん
2009/05/08(金) 06:10:15日本の季節感にはまったくあってないけどな
昔は一番寒い時期が1月1日で新年を迎えると暖かくなる一方だった
戦争に負けたアジアは所詮白人のおまけということだな
0447デフォルトの名無しさん
2009/05/08(金) 07:14:01おじいちゃん乙
0448デフォルトの名無しさん
2009/05/08(金) 07:21:58中国行って旧正月でも祝ってればいいんじゃない
0449デフォルトの名無しさん
2009/05/08(金) 07:22:24ひな祭り、七夕、盂蘭盆会などなど。
0450デフォルトの名無しさん
2009/05/08(金) 10:56:450451デフォルトの名無しさん
2009/05/08(金) 12:22:220452デフォルトの名無しさん
2009/05/08(金) 23:07:530453デフォルトの名無しさん
2009/05/08(金) 23:17:290454デフォルトの名無しさん
2009/05/09(土) 13:32:15for i=0 to 4
label(i)="abc"
next
みたいな
ループの添字で複数の連番的なオブジェクトを指定するにはどうしたらいいのでしょうか
オブジェクトに番号振るっていう状態をどういうのかがわからなくて調べられないです
1日いろいろ探してみましたが思いつく宛が詰まってしまったのでヒントが欲しいです
0455デフォルトの名無しさん
2009/05/09(土) 13:35:240456デフォルトの名無しさん
2009/05/09(土) 15:23:130457デフォルトの名無しさん
2009/05/09(土) 21:20:30フォームのテキストラベルにH2Oと入れたいんだけど2を下付きにするにはどうすればいいのですか?
Hのラベル、2のラベル、Oのラベルを3個並べてお茶を濁してきたけど、詳しい方どうか教えてください。
0458デフォルトの名無しさん
2009/05/09(土) 21:23:570459デフォルトの名無しさん
2009/05/09(土) 21:30:230460デフォルトの名無しさん
2009/05/09(土) 21:30:36U+2082 ₂ SUBSCRIPT TWO
0461デフォルトの名無しさん
2009/05/09(土) 22:04:02文字を書いてつくったイメージを貼り付ければいいじゃん
0462デフォルトの名無しさん
2009/05/09(土) 23:36:39な なるほど!thx
0463デフォルトの名無しさん
2009/05/09(土) 23:44:440464デフォルトの名無しさん
2009/05/09(土) 23:48:550465デフォルトの名無しさん
2009/05/12(火) 11:40:49DrawItem()でDrawString()すれば良いんだけど。
ComboBoxの数が多いのでユーザコントロールにするとしたら
どこでDrawString()すればいいんだろう?
OnDrawItem()で直接書いちゃっていいのかな?
0466デフォルトの名無しさん
2009/05/13(水) 23:19:390467デフォルトの名無しさん
2009/05/14(木) 01:11:13OnDrawItemでいいよ。
0468デフォルトの名無しさん
2009/05/14(木) 09:36:16OnDrawItem()でうまくいきました。
ついでに背景色とかも変更してみます。
0469デフォルトの名無しさん
2009/05/14(木) 16:20:55GetFilesみたいにリストを作って返すのではなくWin32APIのFindFirstFile/NextFile相当のものが使いたいんですが。
0470デフォルトの名無しさん
2009/05/14(木) 17:01:050471デフォルトの名無しさん
2009/05/14(木) 17:08:210472デフォルトの名無しさん
2009/05/14(木) 17:18:480473デフォルトの名無しさん
2009/05/14(木) 17:29:260474デフォルトの名無しさん
2009/05/14(木) 17:30:22.NET Framework 4.0 のGetFiles
0475デフォルトの名無しさん
2009/05/15(金) 02:24:16その手のライブラリなど、ご存知の方いますでしょうか? Reflection で自前
で再帰するしかない?
0476デフォルトの名無しさん
2009/05/15(金) 02:42:10まぁ実装してもたいした手間じゃな下げだけど。
0477デフォルトの名無しさん
2009/05/16(土) 13:13:47>実行時の object 階層を値込みで表示用の tree にまとめ上げたいんだけど、
object階層の意味がよく分からないけど、
Visual Studioのウォッチウィンドウみたいな感じで
インスタンスの情報を展開してくれるのが欲しいってこと?
だったらオブジェクト参照が循環している場合もあるので注意かな。
シリアライザ/デシリアライザみたいにグラフとして扱うか、
ウォッチウィンドウみたいにクリックするまで子ノードの評価を行わないといった
工夫が必要になると思う。
0478475
2009/05/16(土) 16:25:07いや、それが結構面倒くさい。CodeProject はなさそうでした。
>>477
なるほど、シリアライズして XML を使うのもありですね。
どうもありがとう。
0479デフォルトの名無しさん
2009/05/16(土) 16:58:37048090
2009/05/16(土) 20:36:16ユーザコントロールを作成していますが、
既存の型を使用した場合は問題ないのですが、enum型を定義して
使用すると、このコントロールを使用するプログラムで
デザイン時に初期値を選んだ場合は問題ないのですが他の候補(この場合type2)を
セットすると
「'System.Windows.Forms.Control.ControlCollection' に 'xxxComboBox' の
定義が含まれておらず、型 'System.Windows.Forms.Control.ControlCollection' の
最初の引数を受け付ける拡張メソッドが見つかりませんでした。
using ディレクティブまたはアセンブリ参照が不足しています。」のエラーになります。
0481デフォルトの名無しさん
2009/05/16(土) 20:39:20ソースはこんな感じです。
namespace Controls
{
public partial class xxxComboBox : ComboBox
{
public enum DrawingMode : int
{
type1 = 0,
type2 = 1
}
private DrawingMode _ItemDrawingMode;
[Category("Custom")]
[DefaultValue(typeof(DrawingMode), "type1")]
[Browsable(true)]
public DrawingMode ItemDrawingMode
{
get { return _ItemDrawingMode; }
set { _ItemDrawingMode = value; }
}
0482デフォルトの名無しさん
2009/05/16(土) 20:40:31[Category("Custom")]
[DefaultValue(typeof(Color), "White")]
[Browsable(true)]
public Color FirstBGColor
{
get { return _FirstBGColor; }
set { _FirstBGColor = value; }
}
public xxxComboBox()
{
InitializeComponent();
_ItemDrawingMode = DrawingMode.type1;
_FirstBGColor = Color.White;
}
...
}
使用する側では参照設定にこのdllを指定しています。
FirstBGColorプロパティは他の色に変更しても正しくビルド・実行できます。
DraingModeのプロパティをtype2に変更してビルドすると上記の
エラーがでます。
エラー箇所を見ると
this.xxxComboBox1.ItemDrawingMode = Controls.xxxComboBox.DrawingMode.type2;
の行が解決できないようです。
using Controls;を加えても同じです。
ControlCollectionに追加するにはどのメソッドを使用すればいいのでしょうか?
0483デフォルトの名無しさん
2009/05/16(土) 22:32:52this.xxxComboBox1.ItemDrawingMode = 1;
にしたらエラーでないよね?
0484デフォルトの名無しさん
2009/05/16(土) 22:41:13this.Controls は Control.ControlCollection クラスのインスタンスだろ
0485480
2009/05/17(日) 08:30:40ありがとうございます。
this.xxxComboBox1.ItemDrawingMode = 1; は型が違うのでエラーになります。
呼び出し側でusing Controls;を定義して、コードで(例えばForm1_Load内で)
xxxComboBox1.ItemDrawingMode = xxxComboBox.DrawingMode.Type2;
のように書けば、正常にビルド・実行可能です。
ただし、先程書いたようにデザイナからプロパティ値を変更すると
エラーになります。ControlCollectionにxxxComboBoxを追加して
導出してやらないといけないのかと思いますが、やり方が分かりません。
0486デフォルトの名無しさん
2009/05/17(日) 09:23:29せめてライブラリ名.Controlsに
0487480
2009/05/17(日) 11:08:57そうだよな、namespaceの名前を変えよう・・・
ということでControlsからmalib.Controlsにnamespaceを変更したら
ちゃんと動作しました。
0488デフォルトの名無しさん
2009/05/20(水) 21:40:44今C#の勉強の意味もこめてC#のいろんな機能をフルに利用するつもりで
ちょっとしたプログラムを作っているんだが
本当にC++、Javaから発展してきた言語とは思えん。
まず、DataGrid使って表を作る。
row.SetValues(1,2,3)とやることで、一行のデータを一気に入れられる。
そこで一行全部の背景色をつけたいと思った。
SetValuesと同じように、row.SetStyle(style)とやりたかったが、
残念ながらSetStyleはセルごとしかなかった。
DataGrid(正確にはDataGridViewRow)になんでSetStyleが無いんだよ!って
怒るような事例なのに、拡張メソッドを使うことで継承を利用せずに
いとも簡単にrow.SetStyle()を付け加えることができるとはw
0489デフォルトの名無しさん
2009/05/20(水) 23:09:50それでC#にケンカ売ってるつもり?
まさかそんなわけないよねwww
0490デフォルトの名無しさん
2009/05/20(水) 23:13:11メロンパン言語だ
0491デフォルトの名無しさん
2009/05/20(水) 23:25:010492デフォルトの名無しさん
2009/05/20(水) 23:36:570493デフォルトの名無しさん
2009/05/21(木) 00:24:35C# の話じゃなくてフレームワークの話だな
0494デフォルトの名無しさん
2009/05/21(木) 00:25:41C#はソースが読みやすいとか、一貫した仕様でスッキリしてて覚えやすいとか色々あるけど、
何よりVSっていう最強のIDEが付っきりで開発支援してくれるのが最大のアピールポイントだと思う。
VSが無ければ他の言語でいいけど、一回VS+C#で慣れると他の言語やる時にかなりメンドクサイ。
・・・あれ、ここって相談室だよな?
0495デフォルトの名無しさん
2009/05/21(木) 00:34:350496デフォルトの名無しさん
2009/05/21(木) 00:42:090497488
2009/05/21(木) 00:44:37> コンポーネントと言語をごっちゃにして、的外れだけどな。
言っとくけど、言語の話だよ。
mix-inといえばわかるかな?
(標準ライブラリの)クラスに、メソッドを後付できる。
という言語仕様。
0498デフォルトの名無しさん
2009/05/21(木) 00:47:05ってことを言ってるんだと思うよ。
0499デフォルトの名無しさん
2009/05/21(木) 00:48:35他の人「そうだな」
で終わってくれればいいのに、
コンポーネントとかWinFormsの話だなとか
間違ったこと言い出すからレスせざるを得なかったんだよw
0500デフォルトの名無しさん
2009/05/21(木) 00:49:48あきらかに主題の文章量と副題の文章量の比がおかしいww
おまえは女かwwwwww
0501デフォルトの名無しさん
2009/05/21(木) 00:51:06先に言っとく。基地外(500など)は無視したほうがいいよw
0502デフォルトの名無しさん
2009/05/21(木) 00:52:42おけw
間違ったことを何も言っていないのに、
なんで変なやつがまとわりついてくんだか。
こちとら本格的にC#はじめて五日目だ。なめんじゃねーぞw
0503デフォルトの名無しさん
2009/05/21(木) 00:54:310504デフォルトの名無しさん
2009/05/21(木) 01:01:24最近みんなジェネリック、ジェネリックって言って僕を呼んでくれないんです。
昔はあんなにちやほやされてたのに・・・。
これから僕はどうしていけばいいんでしょうか。
0505デフォルトの名無しさん
2009/05/21(木) 01:02:54それでは次の型どうぞ〜
0506デフォルトの名無しさん
2009/05/21(木) 01:42:30public Form1()
{
InitializeComponent();
webBrowser1.Navigate("http://www.google.co.jp");
}
たったこれだけの実装ですが、googleのページがすぐに表示されるときと
ずっとまっ白でまったく表示されない時があります。
環境は、XPProSP2、IE6です。
どなたか解決方法を知りませんか?
0507デフォルトの名無しさん
2009/05/21(木) 01:47:340508デフォルトの名無しさん
2009/05/21(木) 01:48:230509デフォルトの名無しさん
2009/05/21(木) 01:54:11ボタンをひとつつけて、その中でNavigateしても状況はかわりません。
非常に安定しないんです。
0510デフォルトの名無しさん
2009/05/21(木) 01:56:19目的のページを表示するんが一般じゃなかったっけ?
0511デフォルトの名無しさん
2009/05/21(木) 02:04:35書き忘れましたが、それも試して効果はありませんでした。
public Form1()
{
InitializeComponent();
webBrowser1.Navigate("about:blank");
webBrowser1.Navigate("http://www.google.co.jp");
}
0512デフォルトの名無しさん
2009/05/21(木) 02:06:140513デフォルトの名無しさん
2009/05/21(木) 02:13:33自分でもかなり調べてダメだったので、諦めることにします。
ありがとうございました。
0514デフォルトの名無しさん
2009/05/21(木) 02:51:04起動時にNavigateするようにした時に稀にあった。
とりあえず、起動時にいきなりNavigate使う時はコンストラクタじゃなくてLoadイベントなり登録してそこでやった方がいいと思う。
それでこの症状が直るわけではないと思うけど。
0515デフォルトの名無しさん
2009/05/21(木) 12:03:16webBrowserだけじゃなくて
IE6のそのものが、ずっと真っ白のままで表示されないことがあるんだが・・・
AVGのリンクスキャナを停止してからは少しマシになったかも?
普段はChromeを使っているから見なかったことにしてるけど。
0516デフォルトの名無しさん
2009/05/21(木) 14:18:15何度やっても問題なく表示されるな。
環境はXPProSP2、IE6、VS2008Pro
0517デフォルトの名無しさん
2009/05/21(木) 14:49:260518デフォルトの名無しさん
2009/05/21(木) 15:58:51ウィルス対策ソフトは切ってます。
>>516
ほんの2日ほど前まで私もその環境でしたが、なぜか動きません。
XPProSP3、IE8、VS2008Exにしましたが、改善はありません。
>>517
ちょっと見てきます。
0519デフォルトの名無しさん
2009/05/21(木) 16:02:12System.Windows.Forms.WebBrowserはコントロール上に乗って無くても大丈夫なように作られてるけど一応
0520デフォルトの名無しさん
2009/05/21(木) 16:23:25■PG
public Form1()
{
InitializeComponent();
Console.WriteLine("IsBusy:" + webBrowser1.IsBusy);
webBrowser1.Navigate("about:blank");
webBrowser1.Navigate("http://www.yahoo.co.jp/");
Console.WriteLine("IsBusy:" + webBrowser1.IsBusy);
}
■出力
IsBusy:False
'Test.vshost.exe' (マネージ型): 'C:\WINDOWS\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll' が読み込まれました
IsBusy:False
■結果
画面まっ白
>>514
LoadイベントでやってもThread.sleep(5000)をnavigateの前後に入れてもまっ白になることが多々ありました。
0521デフォルトの名無しさん
2009/05/21(木) 18:07:170522デフォルトの名無しさん
2009/05/21(木) 22:09:230523デフォルトの名無しさん
2009/05/21(木) 22:32:090524デフォルトの名無しさん
2009/05/21(木) 22:49:46DropDownItemsに追加したToolStripMenuItemのイメージ余白の消し方を教えてください。
1階層目はShowImageMarginをFlaseにすれば消せるのですが
2階層目以降のToolStripMenuItemは余白が出たままになってしまいます…。
0525デフォルトの名無しさん
2009/05/22(金) 01:41:24文字化けしない方法をどなたか教えてください orz
0526デフォルトの名無しさん
2009/05/22(金) 01:44:570527デフォルトの名無しさん
2009/05/22(金) 01:46:460528デフォルトの名無しさん
2009/05/22(金) 02:00:25こんななりました。。
?慣???麩????????????弊(ry
0529デフォルトの名無しさん
2009/05/22(金) 02:26:540530デフォルトの名無しさん
2009/05/22(金) 03:09:18[DllImport("libmecab.dll")]
extern static int mecab_new2(string arg);
[DllImport("libmecab.dll")]
extern static IntPtr mecab_sparse_tostr(int m, byte[] str);
[DllImport("libmecab.dll")]
extern static void mecab_destroy(int m);
int mecab = mecab_new2("");
this.textBox2.Text = Encoding.Default.GetString(Encoding.Convert(Encoding.UTF8, Encoding.Default, Encoding.Unicode.GetBytes(
Marshal.PtrToStringUni(mecab_sparse_tostr(mecab, Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(
this.textBox1.Text))))))).Replace("\n", "\r\n").Replace("\r\r\n", "\r\n");
mecab_destroy(mecab);
0531デフォルトの名無しさん
2009/05/22(金) 06:06:520532デフォルトの名無しさん
2009/05/22(金) 06:24:150533デフォルトの名無しさん
2009/05/22(金) 14:52:19printPreviewDialog1.ShowDialog();
こう書いても何故かthisと重なって表示してくれない
大きさは反映されるのに位置が自動的に決定されてしまう
解決方法知ってる方いたら教えてください
0534デフォルトの名無しさん
2009/05/22(金) 15:08:590535デフォルトの名無しさん
2009/05/22(金) 15:32:250536デフォルトの名無しさん
2009/05/22(金) 15:40:11PrintPreviewDialog..::.StartPosition プロパティ
0537デフォルトの名無しさん
2009/05/22(金) 15:49:14ありがとうございました
0538デフォルトの名無しさん
2009/05/22(金) 15:55:42ワロタ
気持はわかる
0539デフォルトの名無しさん
2009/05/23(土) 18:31:310540デフォルトの名無しさん
2009/05/24(日) 01:39:480541デフォルトの名無しさん
2009/05/24(日) 11:01:56ユニークな仕事だなw
0542デフォルトの名無しさん
2009/05/24(日) 12:58:030543デフォルトの名無しさん
2009/05/24(日) 14:30:220544デフォルトの名無しさん
2009/05/24(日) 16:14:58なぜか一瞬だけ、選択していないアイテムに破線が出るので消したいと思っています
0545デフォルトの名無しさん
2009/05/24(日) 16:45:38独自描画にすれば消せるんじゃないかな。
0546デフォルトの名無しさん
2009/05/26(火) 10:30:51勝手に消されると状況によってはユーザーが混乱すると思うが
それでもいいなら>>545の言うようにオーナードローしては。
0547デフォルトの名無しさん
2009/05/29(金) 20:30:10このようなValueを表示するラベルを貼りました。
スペースの後に増減する数字を代入していくのですが、どうやるのがいいのですか?
"Value: "が無い場合は単純で、
labal.Text += i.ToString();
でよかったのですが、、
0548デフォルトの名無しさん
2009/05/29(金) 20:45:57labal.Text += i.ToString(); = labal.Text = labal.Text + i.ToString();
0549デフォルトの名無しさん
2009/05/29(金) 20:49:05string.Format
0550デフォルトの名無しさん
2009/05/29(金) 22:01:44label.Text = "Value: 0"
else if
....
0551デフォルトの名無しさん
2009/05/30(土) 17:38:53未来永劫そのままなの?
0552デフォルトの名無しさん
2009/05/30(土) 17:59:09嫌なら新しい言語作るしか。
0553デフォルトの名無しさん
2009/05/30(土) 18:11:25はじめの頃のC#ではキーワードを少なくすることが重視されてたみたいだし
0554デフォルトの名無しさん
2009/05/30(土) 18:23:57の舐めた仕様よりはマシになってるとは思う。
0555デフォルトの名無しさん
2009/05/30(土) 18:34:15同感。同じことを2度書くのは無駄だよな
もう.ctorでいいのに
0556デフォルトの名無しさん
2009/05/30(土) 18:39:31あの構文は変えようがないでしょ。
C# 開発者的に、C++ との互換性重視しすぎて失敗したなぁと思う部分もちらほらあるみたいなんで、
今よりさらにもうちょっと .NET が普及したら、その辺りなおした新言語を作るのもありかもしれないけど。
0557デフォルトの名無しさん
2009/05/30(土) 18:43:240558デフォルトの名無しさん
2009/05/30(土) 18:44:46var Font = new Font();
0559デフォルトの名無しさん
2009/05/30(土) 18:45:32var使う事自体が冗長
0560デフォルトの名無しさん
2009/05/30(土) 18:50:41いやー、var は要るよ。
宣言と代入は分けたい。
new なくすとすると、例えばどういう構文?
C++ のスタック割り当て時みたいに、クラス名() だけとか?
0561デフォルトの名無しさん
2009/05/30(土) 18:53:180562デフォルトの名無しさん
2009/05/30(土) 18:55:01それはなぁ、型名と同じ名前のプロパティ定義できる C# だと文法的にあいまいになりそう。
0563デフォルトの名無しさん
2009/05/30(土) 18:57:39font = Font() なんて認めたら、多分、後から機能足せなくて泣く。
0564デフォルトの名無しさん
2009/05/30(土) 19:13:550565デフォルトの名無しさん
2009/05/30(土) 19:16:03それ出来るとIntelliSenseの暴発を招くから、今の型推論によるvarでの定義がバランス的にちょうどいい。
0566デフォルトの名無しさん
2009/05/30(土) 19:16:07C#の原型とどめないような改変が許されるんなら別にどっちでも。
0567デフォルトの名無しさん
2009/05/30(土) 19:19:120568デフォルトの名無しさん
2009/05/30(土) 19:31:220569デフォルトの名無しさん
2009/05/30(土) 19:50:07同感、C#は強く強くインテリセンスを意識した文法であって欲しい。
でないと、今のライブラリでさえ全体を憶えきれないのにこういうサポート外されたら気絶する。
0570デフォルトの名無しさん
2009/05/30(土) 21:19:51前に来た時はDが話題だったような…
0571デフォルトの名無しさん
2009/05/30(土) 22:39:220572デフォルトの名無しさん
2009/05/30(土) 22:43:12JavaScriptは十分はやってるだろ
0573デフォルトの名無しさん
2009/05/30(土) 22:47:18$a = [xml]"<data>foo</data>"
$a.
で候補にdataが出てくるんだぜ。
ソースコードじゃなくプロンプトで実行しながらじゃないと駄目だけど。
0574デフォルトの名無しさん
2009/05/30(土) 23:02:46という本で、FormのLoadイベントはコンストラクタ完了よりも先に実行される(ことがある?)
とか書かれてるんだけどほんとにあるの?
どうもこの本思い込みで書いてるような部分も見られてちと怪しんだが…
0575デフォルトの名無しさん
2009/05/30(土) 23:31:51親フォームが呼ばれてLoadされることが危惧されている。
0576デフォルトの名無しさん
2009/05/30(土) 23:38:37設計が甘いのでは?
0577デフォルトの名無しさん
2009/05/30(土) 23:44:140578デフォルトの名無しさん
2009/05/30(土) 23:47:51ってどういう状態かわからん…
0579デフォルトの名無しさん
2009/05/30(土) 23:49:480580デフォルトの名無しさん
2009/05/30(土) 23:51:200581デフォルトの名無しさん
2009/05/31(日) 00:11:54うろ覚えだけど、
Win32だと、CreateWindow()内で、WM_CREATEを直接呼び出してたような気がする
(CreateWindow()の復帰値はWM_CREATEの復帰値に依存する)
なので、
- C#のFormのコンストラクタ内で内部的にCreateWindowの呼び出しを行う
- FormのLoadはWM_CREATEに相当する
の2つの条件が成り立てば
>FormのLoadイベントはコンストラクタ完了よりも先に実行される
は、成り立つかもしれない
0582デフォルトの名無しさん
2009/05/31(日) 00:19:12でも、普通しねえよなぁ、こんなことwww
0583デフォルトの名無しさん
2009/05/31(日) 00:19:31そんなこと考えるまでもなくマネージドだけで成立するよ、意味があるかどうかは別として
public class Form1 : Form {
public FFFF() {
Ctrl ctrl = new Ctrl();
this.Controls.Add(ctrl);
ctrl.Do();
Debug.WriteLine("Ctor");
}
protected override void OnLoad(EventArgs e) {
Debug.WriteLine("OnLoad");
base.OnLoad(e);
}
}
public class Ctrl : Control {
public void Do() {
Form form = this.FindForm();
if (form != null) form.Show();
}
}
相互参照はやっかいだね
0584デフォルトの名無しさん
2009/05/31(日) 00:22:05public partial class Form1 : Form {
public Form1() {
InitializeComponent();
MessageBox.Show("end of init");
}
private void timer1_Tick(object sender, EventArgs e) {
Visible = true;
}
private void Form1_Load(object sender, EventArgs e) {
MessageBox.Show("Form.Load");
}
}
}
でタイマのintervalは1。
0585デフォルトの名無しさん
2009/05/31(日) 00:31:27コンストラクタでこんなことしていいんか
0586デフォルトの名無しさん
2009/05/31(日) 00:38:47しないように修正するべきだろう。
0587デフォルトの名無しさん
2009/05/31(日) 00:39:330588デフォルトの名無しさん
2009/05/31(日) 00:46:510589デフォルトの名無しさん
2009/05/31(日) 00:46:50しかし、デリゲートの非同期実行でEndInvokeせずに、なんと例外が無視されてしまうのだ!!
みたいなこといって、非同期実行するメソッド内で即座にコントロールにInvokeして、これで例外をとれる
っておまえそれ非同期実行の意味全然ないだろうがよとか、こんなの見るとなんか書いてあることが信用できない。
0590デフォルトの名無しさん
2009/05/31(日) 01:04:13と書いてあるのか?
0591デフォルトの名無しさん
2009/05/31(日) 01:11:440592デフォルトの名無しさん
2009/05/31(日) 01:17:580593デフォルトの名無しさん
2009/05/31(日) 01:39:23http://mag.autumn.org/Content.modf?id=20090526140144
0594デフォルトの名無しさん
2009/05/31(日) 02:11:24Formは2回以上ShowDialogすると動作保証されない
だった気がするけどな。
ナレッジに出てなかったっけな…
0595デフォルトの名無しさん
2009/05/31(日) 07:20:32「転送接続からデータを読み取れません: ブロック不可のソケット操作をすぐに完了できませんでした。」
というエラーが出て、例外が発生してしまいます。
誰かこのエラーの解決方法をご存じないでしょうか?
よろしくお願いします。
0596デフォルトの名無しさん
2009/05/31(日) 07:30:320597デフォルトの名無しさん
2009/05/31(日) 07:48:28XPのコネクション制限には引っかからない程度でも発生するんですよね…
# 10本くらいConnectが発生すると5本目くらいからエラーが発生→例外→…という感じで
0598デフォルトの名無しさん
2009/05/31(日) 09:22:230599デフォルトの名無しさん
2009/05/31(日) 09:51:460600デフォルトの名無しさん
2009/05/31(日) 13:22:180601デフォルトの名無しさん
2009/05/31(日) 14:13:55いやがらせとして残されたりして。
0602デフォルトの名無しさん
2009/05/31(日) 14:15:20これWM_CREATE代わりなんだ、確かにShowDialogするごとに呼び出されるね、名前が悪いよな。
0603デフォルトの名無しさん
2009/06/01(月) 12:05:26rubyでいうところの,Narray
pythonでいうところのNumPy
のような配列の形で演算してくれるクラスライブラリはありますか?
0604デフォルトの名無しさん
2009/06/01(月) 12:21:34コンセプトがまるで違うけれども、あえて言えばLINQがそのような処理を担当するライブラリと言えるかと思われます。
だけれども、そういう操作そのものを求めるとちょっと、というかまったく違うものかも
やりかたとしては二つのシーケンスを一つのシーケンスにまとめる、そこに select なりで全体に演算を施す、といった具合。
0605デフォルトの名無しさん
2009/06/01(月) 12:46:05でも、.NET向けってのは商業ものしか知らんわ。
BLAS系の.NETバインディングは探せばありそうだけど。
0606デフォルトの名無しさん
2009/06/01(月) 12:53:14詳細はまだ調べてないけど、.NET で線形代数を助けてくれるライブラリなら
Math.NET があるみたい。
http://mathnet.opensourcedotnet.info/
0607デフォルトの名無しさん
2009/06/01(月) 13:01:57そうですか?むしろ汎用度の高いライブラリだと思うんですけどね。
自分は今は線形代数周りは全部LINQで構築してしまいましたけど
0608デフォルトの名無しさん
2009/06/01(月) 13:04:410609デフォルトの名無しさん
2009/06/01(月) 13:04:55実数上の線形空間はもちろん、複素数でも有限体でもいけるし、いっそ関数を基底とかも。
まぁなんかそんな感じてす
0610デフォルトの名無しさん
2009/06/01(月) 13:15:52mapもあるしリスト演算(コンベア的な)もつかえるし
そういういみじゃん
0611デフォルトの名無しさん
2009/06/01(月) 13:26:560612デフォルトの名無しさん
2009/06/01(月) 18:04:30例外が発生してしまいます。
↓こんな列挙型です。
public enum ActionType
{
[XmlEnum(Name = "Single")]
One,
[XmlEnum(Name = "Double")]
Two,
[XmlEnum(Name = "Triple")]
Three
}
なにか方法などありますでしょうか?
0613デフォルトの名無しさん
2009/06/01(月) 18:10:140614デフォルトの名無しさん
2009/06/01(月) 18:15:120615デフォルトの名無しさん
2009/06/01(月) 22:20:33漏らしたくない場合は以下のMyCallBackのような処理であってる?
public delegate bool CallBack();
[DllImport("hoge.dll")]
private static extern int Hoge(CallBack callback);
static void MyCallBack()
{
// このメソッド内で発生した例外を hoge.dll に漏らしたくない
RuntimeHelpers.PrepareConstrainedRegions();
try {
// hoge
} catch (Exception e)
Console.WriteLine(e);
}
}
static void Main()
{
Hoge(new CallBack(MyCallBack));
}
0616デフォルトの名無しさん
2009/06/01(月) 22:25:23アンマネージコードに渡したデリゲートはstaticフィールドに入れとかないとGCされて死亡
0617デフォルトの名無しさん
2009/06/01(月) 22:25:31常にコンソール出力だけでOKなら別にいいかもだけど。
0618デフォルトの名無しさん
2009/06/01(月) 22:29:47>常にコンソール出力だけでOKなら別にいいかもだけど。
おっと、CERじゃこんなのは無理か。
ってその前にコンソール出力も無理なんじゃないか?
0619デフォルトの名無しさん
2009/06/01(月) 22:37:08例外握りつぶしてしまっていいのか
0620デフォルトの名無しさん
2009/06/01(月) 22:45:50>static void MyCallBack()
>Hoge(new CallBack(MyCallBack));
返り値違うぞ
0621デフォルトの名無しさん
2009/06/01(月) 23:07:24GCHandleいじるのが作法上正しいのでは
0622デフォルトの名無しさん
2009/06/01(月) 23:22:17このコードだと問題ないけどね。
もちろんこういう構造じゃない場合は問題あるので考慮は必要。
0623デフォルトの名無しさん
2009/06/01(月) 23:29:05非同期にコールバックされたり戻ったあとも向こうで関数ポインタ保持されたりしたら死ぬ
0624デフォルトの名無しさん
2009/06/01(月) 23:59:450625デフォルトの名無しさん
2009/06/02(火) 00:11:12何も判断できない
0626デフォルトの名無しさん
2009/06/02(火) 00:31:25{
Hoge(new CallBack(MyCallBack));
}
だから後でコールバックされるような使い方じゃないと「想定したら」、だよ。>このコードだと問題ない
0627デフォルトの名無しさん
2009/06/02(火) 07:29:09てめー勝手に都合の良い想定をするのは愚の骨頂じゃないか
0628デフォルトの名無しさん
2009/06/02(火) 09:57:11PCのメモリも640KBで十分だし。
0629デフォルトの名無しさん
2009/06/02(火) 11:05:07まあ別に軽く突っ込んでみただけで、ホントにそれでいいとは思ってないよ。
0630デフォルトの名無しさん
2009/06/02(火) 11:28:47いつまでそんなネタひっぱってんだよ化石
0631デフォルトの名無しさん
2009/06/02(火) 19:10:23P/Invokeでは特に
0632デフォルトの名無しさん
2009/06/02(火) 19:10:470633デフォルトの名無しさん
2009/06/02(火) 19:27:060634デフォルトの名無しさん
2009/06/02(火) 19:33:360635デフォルトの名無しさん
2009/06/02(火) 19:44:12工夫のしようがないよね
hogeのインターフェイスを変更可なら色々出来るが
0636デフォルトの名無しさん
2009/06/02(火) 22:18:06いやまずあり得ないね。
まあ意味ないしどうでもいいけど。
0637デフォルトの名無しさん
2009/06/03(水) 17:19:43ネットワーク経由で送られてくるバイトストリームがあるとして、あるバイト位置まで読み進めないと
どんなフォーマットのパケットが来てるか分からないという形態のプロトコルを処理する場合、C#的には
どう書くとするとスマートなんでしょうか?
結果的には、パケットの種類に応じた構造体として後の処理で使えるようになればいいです。
C言語だと共用体を使うとスッキリ書けますが、C#でFieldOffsetを使うのは何となく邪道な気がします。
0638デフォルトの名無しさん
2009/06/03(水) 17:46:280639デフォルトの名無しさん
2009/06/03(水) 18:08:37何で邪道なんだろ
どうしても嫌ならビットシフトやらこねくり回せば?
0640デフォルトの名無しさん
2009/06/03(水) 18:15:36データの種類が判明してから適宜変換して使うとか?
0641デフォルトの名無しさん
2009/06/03(水) 19:44:55バッファと実インスタンスを分けて書くしかないんじゃないかなぁ
0642デフォルトの名無しさん
2009/06/03(水) 19:45:46ある時点でpush backできるストリームを使うか作る
0643デフォルトの名無しさん
2009/06/03(水) 20:48:33普及度とか今後を見たときに覚えておくと便利ですか?
0644デフォルトの名無しさん
2009/06/03(水) 20:51:46今後は、まあ、CやC++は上級者のための代物になりつつあるから
今からC,C++を一からやるよりは良いんじゃないかね。
0645デフォルトの名無しさん
2009/06/03(水) 21:12:48まぁ、C#じゃなくてもJavaでもRubyでもErlangでも好きなものを使えばいいと思うが。
0646デフォルトの名無しさん
2009/06/03(水) 21:17:40C#は確かに使いやすくなっているようなイメージがあるのですが
CやC++でしかできなくて、C#じゃできない事ってあるんですか?
0647デフォルトの名無しさん
2009/06/03(水) 21:22:530648デフォルトの名無しさん
2009/06/03(水) 21:39:34.NET言語だから移植性に難
0649デフォルトの名無しさん
2009/06/03(水) 22:03:330650デフォルトの名無しさん
2009/06/03(水) 22:08:270651デフォルトの名無しさん
2009/06/03(水) 23:02:14OS関係の高度な操作とかは、C#では茨の道かも。
特定のCPUに特化したプログラムの作成とかも難しい感じ。
0652デフォルトの名無しさん
2009/06/03(水) 23:42:57昔C++で今はC#メインだが、コンパイル速度が激速な点が一番うれしい。
0653デフォルトの名無しさん
2009/06/03(水) 23:53:16C#だけで充分だね。
0654デフォルトの名無しさん
2009/06/04(木) 06:39:100655デフォルトの名無しさん
2009/06/04(木) 08:06:22たいてい1.0とかそれのCTPの頃からC#の記事書いてるし、
その人らは予想してただろ。
0656デフォルトの名無しさん
2009/06/04(木) 08:08:06.NET 2.0とVS2005が出た時に、熱心に布教してたMS見て試しに使ってみたら意外と良くて、そこから徐々に乗り換えた。
>>654
VistaがまだLonghornと呼ばれていた頃
Win32を置き換える!とか言って浮き足立ってたなぁ
>Longhorn登場時期と予想されている2006年、PCは4〜6GHz/2コアのCPUを搭載し、メモリ2Gバイト超、HDD1Tバイト超
2003年の記事眺めてて噴いたw 今だからこそ言える。ねーよwww
0657デフォルトの名無しさん
2009/06/04(木) 11:41:06>昔C++で今はC#メインだが、コンパイル速度が激速な点が一番うれしい。
C#が速いというよりもC++が致命的に遅いというのが実態な気がする。
いずれにしても、ある程度の規模を超えたらC++のコンパイル時間・リンク時間は実用的でないです
特にリンクが遅いのが余りに致命的
0658デフォルトの名無しさん
2009/06/04(木) 11:47:56Core2辺りで一応達成といえるんじゃないかな、Pen4と同クロック比較で2倍程度(当時のCPUの想定はPen4クラスだと思われる)
メモリは一応2Gにはなった、HDD1Tバイト超だけが実現されていないかと
しかし、必要ない人には今の時点でもHDDは余っているだろうね
0659デフォルトの名無しさん
2009/06/04(木) 14:18:04ヘッダ書き換えた時のコストがあまりにもひどいと思うよ。
0660デフォルトの名無しさん
2009/06/04(木) 14:20:34それに関しては、分散コンパイルを使えば……、あんまり解決してないけど一応解決する
けれどもリンクはもう完全にお手上げ
0661デフォルトの名無しさん
2009/06/04(木) 14:27:540662デフォルトの名無しさん
2009/06/04(木) 15:06:120663デフォルトの名無しさん
2009/06/04(木) 15:08:35ゲームの一ジャンル。欧米で今一番はやってる形態
0664デフォルトの名無しさん
2009/06/04(木) 15:12:380665デフォルトの名無しさん
2009/06/04(木) 17:06:53フレーム・パー・セコンド
0666デフォルトの名無しさん
2009/06/04(木) 17:52:15普通に3Dの画面がサクサク動いてて驚いた
0667デフォルトの名無しさん
2009/06/04(木) 18:33:59これ?
http://www.innoveware.com/quakelight.html
0668デフォルトの名無しさん
2009/06/04(木) 18:55:11そういうコストを減らすために
ヘッダの依存を分散させる設計が必要
そのコストが高いってことは設計が悪いってことだ
ヘッダのあるプログラミング言語的には
0669デフォルトの名無しさん
2009/06/04(木) 19:14:070670デフォルトの名無しさん
2009/06/04(木) 21:22:45それが最近の統計情報によると、ヘッダの重複コンパイルがコンパイル時間の8割がたを占めていて
ぶっちゃけヘッダ別けファイル別けするよりも、全ヘッダ・ソースを一つに結合してコンパイルしたほうがマシって状況にあるらしい。
さらに、リンクファイルに無闇に外部参照ラベルが出現している上、それがCからの名残でツリー構造ではなく名前空間にヘッダやらフッタやら特殊規則の名前やらが無節操にぶちまけられてまともに検索もできない有様。
古すぎるんだ、技術的に……
昔はこれでよかったんだよ、むしろこうする事により高速なコンパイルが期待できたんだ、だけどこの方法は数が増えるとコンパイル時間が爆発的に増えるんだ。
ちょっともうスレとは関係なさすぎますね、自粛します。
0671デフォルトの名無しさん
2009/06/04(木) 21:55:00しばらくは問題にならなかったんだな、しかしDiskIOその他は倍々ゲームパフォーマンスアップはしなかったので次第に問題が表面化してきたと。
0672デフォルトの名無しさん
2009/06/04(木) 23:53:55ヘッダに全部コードを書いて、ソースはそいつをインクルードしてるだけってソフトがあったんだが、
それが理由なのか。
0673デフォルトの名無しさん
2009/06/05(金) 00:56:58割り切って全部ヘッダにしただけやないですかね。
C++ は重複の多さもあるけど、コンパイル時に色々やりすぎって
話もあるんではなかろうか。
0674デフォルトの名無しさん
2009/06/05(金) 01:45:06SQLiteがやってる。
0675デフォルトの名無しさん
2009/06/05(金) 02:10:54使う事があるのはmonoだけですか?
0676デフォルトの名無しさん
2009/06/05(金) 02:48:540677デフォルトの名無しさん
2009/06/05(金) 02:58:36C++のコンパイル速度の遅さは文法の複雑さが主な原因。
0678デフォルトの名無しさん
2009/06/05(金) 03:10:57VC++はリンク時の最適化というのがあって、
それ使えば全部ひとまとめにしたのと同じような効果が得られる。
まあこれ使うとさらにリンク時間が長くなるんだが。
0679デフォルトの名無しさん
2009/06/05(金) 03:47:29SIMDが使える環境では使うようにJITコンパイルされる。
Mono.SIMDはSIMDによる"手動の最適化"を"マネージコードだけ"で行えるのが武器。
.NETでやるには部分的にC++/CLIを用いてネイティブで実装する必要がある。
0680デフォルトの名無しさん
2009/06/05(金) 03:53:06入力中にバックグラウンドでコンパイルしてるんじゃないかと疑ってしまったぞ。
0681デフォルトの名無しさん
2009/06/05(金) 07:14:37VBにしてもJavaにしてもこんなもんじゃね?
デルファイとかさらに早いし
>>677
無意味なコンパイルだと思われる、一度コンパイルし結果が得られるはずであっても、直前のヘッダファイルが変更されると
全部コンパイルし直さない限り、そのままでいいか確定しないからな。
コンパイルの流れがちゃんとすれば、C++よりはるかに複雑な構造は取り扱えるし、C#だって今となってはC++と比較して遜色ないくらい複雑な内容をもっているし。
0682デフォルトの名無しさん
2009/06/05(金) 07:21:48この原因を作り出しているのがプリプロセッサで、C系のプリプロセッサの仕組みは今となっては非常にマズイという事になっている。
それとincludeされるファイルがincludeし始めると、対象が指数関数的に増えるのも問題。
C#の場合はどんなに複雑でも、各ファイルが独立しているので、コンパイル時間は線形的にしか増えない。今の言語はほとんどこのスタイル。
0683デフォルトの名無しさん
2009/06/05(金) 09:43:480684デフォルトの名無しさん
2009/06/05(金) 11:11:08十分デカイって、特に何か処理のする事がない、ただラベルの付け合わせだけのリンクでさえボロボロのC++においては
0685デフォルトの名無しさん
2009/06/05(金) 11:25:48かれこれ40年越し、そろそろ半世紀前から使われてきた技術だ、さすがに熟成通り越して酢になってますよ。
今でも実用的に使われているというのはそれだけでも凄い事なんですけどね。
0686デフォルトの名無しさん
2009/06/05(金) 12:04:10実際にバックグラウンドコンパイルを研究する価値はあるんじゃないか?w
というか、きっと誰かしてる。
0687デフォルトの名無しさん
2009/06/05(金) 13:55:370688デフォルトの名無しさん
2009/06/05(金) 15:35:15追い詰まっていると思われ
0689デフォルトの名無しさん
2009/06/05(金) 19:08:53ていうか書いた奴が
インテリセンスで即反映、コードチェックも即掛かる
なんだからバックグラウンドってーか入力がある度にやってるんじゃないか
0690デフォルトの名無しさん
2009/06/05(金) 20:20:30ブログでも今までのを捨てて新しくしたと言っていたし。
まあそれでもC#には敵わないが。
0691デフォルトの名無しさん
2009/06/05(金) 21:33:22さすがにもうC++ではやりきれない
0692デフォルトの名無しさん
2009/06/07(日) 09:41:03それは悲しいことだな
0693デフォルトの名無しさん
2009/06/07(日) 10:08:200694デフォルトの名無しさん
2009/06/07(日) 10:44:080695デフォルトの名無しさん
2009/06/07(日) 10:47:450696デフォルトの名無しさん
2009/06/07(日) 11:18:04向いてるところに生産性の悪いC++使うことないともゆーとろーが
0697デフォルトの名無しさん
2009/06/07(日) 13:28:22C++でスレッド管理めんどくさすぎ、やってられない
結局やりきれずにシングルスレッドで書いてC#より遅くて使い物にならん事多々あり
0698デフォルトの名無しさん
2009/06/07(日) 13:29:49いまならC++/CLIつかってその部分だけ書くのが便利かもと思ってる。
C#でちょっとした画像処理をポインタを使用して書いた時は、
unsafeがいちいちめんどくさくてストレスがたまったよ。
0699デフォルトの名無しさん
2009/06/07(日) 13:34:34ちょっとコード書き足すだけだし
0700デフォルトの名無しさん
2009/06/07(日) 13:35:430701デフォルトの名無しさん
2009/06/07(日) 13:36:11C#にもあれくらい簡単に使えるのが欲しい。
というわけで、.NET 4.0の並列化関係のライブラリに期待している。
0702デフォルトの名無しさん
2009/06/07(日) 13:37:340703デフォルトの名無しさん
2009/06/07(日) 13:43:00寛容なC#ユーザーはC++を使う人を一々否定しないって顔しとけよ
0704デフォルトの名無しさん
2009/06/07(日) 13:43:16いや、アンセーフじゃないC++は普通に業務でつかってるかよ。
書くのは全くだるくはないが、ヘッダの依存関係を解決する方が面どくさい。
0705デフォルトの名無しさん
2009/06/07(日) 13:44:290706デフォルトの名無しさん
2009/06/07(日) 14:15:56ってクラスがあって、
コンストラクタが
public DoubleList () { }
こうなってる場合は
みたいなクラスを作った場合には、 new DoubleList()
が呼ばれた時点でList<double>が作られますよね?
ここで Listのコンストラクタのうち、引数としてcapacityをとるものを
DoubleListのコンストラクタとしても用意したいのですが、どうしたらいいでしょうか?
0707デフォルトの名無しさん
2009/06/07(日) 14:24:58}
0708デフォルトの名無しさん
2009/06/07(日) 14:25:230709デフォルトの名無しさん
2009/06/07(日) 14:29:44using DoubleList = List<double>;
0710706
2009/06/07(日) 14:31:20それです!ありがとうございました。
>>709さん
doubleの可変長配列に各種メソッドの追加、演算子のオーバーロード等がしたくて
DoubleListなんて作ってました。
皆様ありがとうございました。
0711デフォルトの名無しさん
2009/06/07(日) 14:39:09ならば、定石としてはコンポジションをとるべきである、多態性を目的としない機能追加を伴う導出は悪だ。
0712デフォルトの名無しさん
2009/06/07(日) 14:41:540713デフォルトの名無しさん
2009/06/07(日) 15:27:51C++使う人を否定してるってよりは、
仕事でいやいやC++使ってる自分を否定したいんでは。
0714デフォルトの名無しさん
2009/06/07(日) 16:17:41演算子のオーバーロードというのだから、線形代数系の何かだと思われるが。
相手がList<double>限定では汎用度が低すぎるしな、double [] にも適用したいだろう。
特にIList系より抽象度が低くてよいのなら、IEnumerable<T>ベースで作ってやればLINQの恩恵にもあずかれるだろうし。
0715デフォルトの名無しさん
2009/06/07(日) 20:13:25VS2008で、#regionで閉じられたソースを一気に全部開きたいのですが、
何かショートカットキーはあるのでしょうか?
0716デフォルトの名無しさん
2009/06/07(日) 20:31:320717デフォルトの名無しさん
2009/06/07(日) 20:48:09ありがとうございます。
CTRL+M系で色々できるんですね。
0718706
2009/06/07(日) 22:30:26コンポジションって
public class DoubleList{
private List<double> list;
}
ってメンバ変数にしちゃうってことですよね?
その場合ってインデクサとかList<double>のうちすべてを自分でDoubleListに実装するってことですか?
手間ばかりであまりご利益が感じられないのですが。
0719デフォルトの名無しさん
2009/06/07(日) 22:56:24コンポジションが嫌なら、Collection<double>からの派生にすればいい。
こいつの派生なら許せる。
0720デフォルトの名無しさん
2009/06/07(日) 23:10:14継承は、依存関係が強くなりすぎるのが嫌われる。
手間はかかるけど、我慢してコンポジションにする人多い。
自分も、手間掛ける時間あるならそうする。
0721デフォルトの名無しさん
2009/06/07(日) 23:12:280722デフォルトの名無しさん
2009/06/07(日) 23:47:39List<double>がダメでCollection<double>は許せるとか
意味不明
0723デフォルトの名無しさん
2009/06/08(月) 00:19:20実装変えるたびに継承関係が変わったら話にならない。
0724デフォルトの名無しさん
2009/06/08(月) 00:28:40中の実装ってどこを指してんの?
0725デフォルトの名無しさん
2009/06/08(月) 06:41:210726デフォルトの名無しさん
2009/06/08(月) 07:41:27CollectionはList実装であることに依存しない、つー話じゃないの
0727デフォルトの名無しさん
2009/06/08(月) 09:09:07以下のような話はわかる?
・.NET においては List って時点で配列リストの事を指してる
・List を継承するってのは「配列リストで実装します」と宣言するようなもの
・後からアルゴリズム変えたい(連結リストにしたり両端キューにしたり)場合があると困る
・コンポジションで作ってれば後から変えるのも自由
0728デフォルトの名無しさん
2009/06/08(月) 09:27:330729デフォルトの名無しさん
2009/06/08(月) 13:32:30クラスの継承は多態性が必要になった時に使う、しかし可能な限りインターフェイス継承。
100の屁理屈より100の実践、守ってやっていれば、なぜそうすることが良いか自然に分かる。
0730デフォルトの名無しさん
2009/06/08(月) 13:46:19public class DoubleList : IList<double> {
private List<double> list;
}
こうすべきだな、他に必要なインターフェイスがあるならそれも加えておく。
最新のVS2008ならIList<double>と書けば、此処をクリックしろとマークがでるので、それをクリックして必要なスタブを全部生成すると便利だ。
こうやってList<double>の『実装に依存』させるのではなく、List<double>の『インターフェイスに依存』させるのだ。
0731デフォルトの名無しさん
2009/06/08(月) 14:00:53すげー、こんなのあったのか
0732デフォルトの名無しさん
2009/06/08(月) 14:08:45既に完成しているクラスをそのまま利用しつつ、共通項目を共通した方法で取り扱えるようにするという事。
改造する行為はバグを誘発しやすいんだな、なにしろ作った本人どういう手順で改造して欲しいまではあまりドキュメンテーションしないししきれないからね。
ブラックボックスをこじ開けるような行為はしない方が良いのです。
0733デフォルトの名無しさん
2009/06/08(月) 16:04:05(スコア:5, 参考になる)
0734デフォルトの名無しさん
2009/06/08(月) 17:49:24設計方法としてもオブジェクト指向の初歩なので、こういうのを知らなかったなら、一度一からオブジェクト指向を勉強するのがいい。
導出が分かればオブジェクト指向などというメチャクチャなのが時折いるが、あなんのは絶対に駄目だからな。
0735デフォルトの名無しさん
2009/06/08(月) 18:04:240736デフォルトの名無しさん
2009/06/08(月) 18:24:45少なくとも
System.Collections.ObjectModel.Collection<T>
はIListを実装した配列リストなんだが
Collectionも配列リストだ
クラスとインターフェイスと一般的な概念をぐちゃぐちゃにして話してないか?
インターフェイスはIをつける
一般的な概念はそれとわかるような文脈で書いてくれ
頼むから
0737デフォルトの名無しさん
2009/06/08(月) 18:28:10Listにしかないメソッドを使いたいとかいうのもあるんじゃないか
Find系とか。doubleだしな
なんで>>730みたいにIListで十分と思えるのかがわからん
もしかしてIListはListの公開メソッド/プロパティ全部カバーしてると思ってる?
>>734
まったくだな
MSDNも見ずに一般論だけで偉そうに講釈垂れるのは
ハタ迷惑なアホだな
0738デフォルトの名無しさん
2009/06/08(月) 18:31:49>Listにしかないメソッドを使いたいとかいうのもあるんじゃないか
それは完全に間違っているような気が……
>もしかしてIListはListの公開メソッド/プロパティ全部カバーしてると思ってる?
そういう問題ではないだろうという気が……
危険だ
0739デフォルトの名無しさん
2009/06/08(月) 18:33:27「List<T>にしか無いメソッド」も実装すればいいじゃない
0740デフォルトの名無しさん
2009/06/08(月) 18:33:470741デフォルトの名無しさん
2009/06/08(月) 18:38:42特にビデオ物、流してみておくだけでも思わぬ拾い物が多い。
0742デフォルトの名無しさん
2009/06/08(月) 18:43:21StackがVectorから派生してるとかいうバカ設計なんだよなw
Stackなのにランダムアクセスできるwww
0743デフォルトの名無しさん
2009/06/08(月) 18:51:36処理系によるけど、コールスタックに積んだ引数とか、
普通にSP使ってランダムアクセスする場合の方が多い気がするのだが。
べつに、スタックだからって必ずいちいちpopしなきゃダメってこたないよ。
0744デフォルトの名無しさん
2009/06/08(月) 18:55:24一般的なスタックの概念から外れてるんじゃないかい?
>>727みたいな話になるけども
0745デフォルトの名無しさん
2009/06/08(月) 19:02:05それならStackなんていらない
リストで代用できるしその方が速い
0746デフォルトの名無しさん
2009/06/08(月) 19:03:38あー、そうだった。
でもまぁ、この話って、インターフェースプログラミングのお作法以前の話として、
C#のコレクションの分類に一貫性がないというか滅茶苦茶なのが一番の癌なんじゃないかなぁ。
IListってのがあったら、普通Listはその直系の具象実装だと思うわなぁ。
0747デフォルトの名無しさん
2009/06/08(月) 19:04:26おお怖い。
0748デフォルトの名無しさん
2009/06/08(月) 19:06:010749デフォルトの名無しさん
2009/06/08(月) 19:06:18まあね
0750デフォルトの名無しさん
2009/06/08(月) 19:08:38コールスタックって、スタックの第一級の応用例じゃないのかね。
>>745
適当だけど、
int sp = 0;
int[] stack = new int[100];
void push(int i) { stack[sp++]; }
int pop() { return stack[sp--]; }
みたいなノリの実装だったら、少なくともpush(), pop()はlistより高速なんでないかね。
ランダムアクセスのオーダーもListと等価になるし、特にListのが優位な点も見当たらないが。
0751デフォルトの名無しさん
2009/06/08(月) 19:09:08上のFindの話もそうなんだけど、ああいうメソッドがコレクションについているべきではないと思われるし。
0752デフォルトの名無しさん
2009/06/08(月) 19:11:370753デフォルトの名無しさん
2009/06/08(月) 19:13:100754デフォルトの名無しさん
2009/06/08(月) 19:13:11そのへんは相当シビアな速度求められるところだから
[]演算子で先頭アドレス基準にアドレス計算しなおすだけで
ふざけんなって言われるよ
0755デフォルトの名無しさん
2009/06/08(月) 19:14:140756デフォルトの名無しさん
2009/06/08(月) 19:15:35JavaやC#といった言語はオプティマイズ問題とインターフェイスの問題はきれいに切り分けられるように工夫された言語なんだから、ごっちゃにするなよ。
0757デフォルトの名無しさん
2009/06/08(月) 19:17:43コールスタックの話題だろ?
>>750が持ち出してるのは
0758デフォルトの名無しさん
2009/06/08(月) 19:19:01C/C++で組み込みのリアルタイムシステムを書いてるならともかく、
JavaとかC#で、そのレベルのチューニングを要求するのはナンセンスな気がするのだが。
そもそも、中間言語レベルでも整数のインクリメントなんて1opじゃないのかね。
0759デフォルトの名無しさん
2009/06/08(月) 19:20:56で、コールスタックになったら問題が何か変わるわけ?
スタックフレームの知識はあるよ、アセンブラやってたから、心配せずに言ってみな。
0760デフォルトの名無しさん
2009/06/08(月) 19:22:56ん?
Stackでランダムアクセスをしちゃいけない理由ってのがあるか否かって話じゃないの?
ちなみに、CPUレベルの話なら、pushとpopはほぼノーコストでしょ。
JavaやC#の話をしてるなら>>758。
0761デフォルトの名無しさん
2009/06/08(月) 19:25:500762デフォルトの名無しさん
2009/06/08(月) 19:31:02push()とpop()とpeek()が使える、Listの特殊な場合がStack、って分類なだけでしょ。
実装的にもアルゴリズムのオーダー的にも差異はほぼ無いわけだし。
アセンブラレベルでpushとpopを特別扱いしてるのは、詳しくは知らないけど、
それこそコールスタックで使うとか歴史的理由とかその辺じゃないの?
0763デフォルトの名無しさん
2009/06/08(月) 19:32:06差異がないってw
0764デフォルトの名無しさん
2009/06/08(月) 19:37:16あんま関係ないけど、呼び出しスタックはダイクストラという偉い人がスタックはハードウェア化すべきだとのたまわったので、以後のCPUでは多く採用された。
構造化プログラミングの提唱者の人ね、その後RISCという方法が主流になって再び捨てられた。
歴史的にはそんな感じ
0765デフォルトの名無しさん
2009/06/08(月) 19:38:13実際、Javaではそのように扱っていて、特に問題は起きてないわけだが。
逆に、「ランダムアクセスができるものはスタックとは呼ばない」という定義が
一般的だと主張するなら、それを示してくれ。
「○○という計算機科学の教科書に書いてあった」とかそういうのでもいいよ。
0766デフォルトの名無しさん
2009/06/08(月) 19:39:15そーか、それは知らなかった。勉強になったよサンクス。
0767デフォルトの名無しさん
2009/06/08(月) 19:40:24同じなら二つもいらない
0768デフォルトの名無しさん
2009/06/08(月) 19:41:44無意味なところに話を持っていくなぁ
0769デフォルトの名無しさん
2009/06/08(月) 19:53:06というのに異論がある人がいるとは思わなかったじぇ。
0770デフォルトの名無しさん
2009/06/08(月) 19:57:24というだけのことなのに…
0771デフォルトの名無しさん
2009/06/08(月) 20:01:45じゃあ、コールスタックはおかしくないのか、というところに話が戻るわけだが。
0772デフォルトの名無しさん
2009/06/08(月) 20:08:31実装からインターフェイスを分離独立せよ、これがわからんやつはプログラマ廃業したほうがいい。
0773デフォルトの名無しさん
2009/06/08(月) 20:21:28他の言語でも、むしろ配列の操作の一部としてpush(), pop()がついてるのが普通みたいだね。
0774デフォルトの名無しさん
2009/06/08(月) 20:22:57以前C++で書いた関数を利用するにはどうすればいいですか?
0775デフォルトの名無しさん
2009/06/08(月) 20:23:420776デフォルトの名無しさん
2009/06/08(月) 20:26:31そんな結論になるおまえにびっくりだ
0777デフォルトの名無しさん
2009/06/08(月) 20:29:08Introduction to algorithms
Stacks
The order in which plates are popped from the stack is the reverse of the order in which they were pushed onto the stack,
since only the top plate is accessible.
0778デフォルトの名無しさん
2009/06/08(月) 20:29:12今すぐネットを切断するんだ、そして冷水を浴びろ、それで利用方法を思いつけるはずだ。
0779デフォルトの名無しさん
2009/06/08(月) 20:30:16C#みたいに、配列とスタックを全く違うものとして扱う言語の方が特殊なんじゃないの。
多くの言語では、スタック操作は配列が提供する機能の一部として扱っているようだが。
0780デフォルトの名無しさん
2009/06/08(月) 20:32:22まさか、サイズ不定の場合はリンクリストにするのが普通だろ、こんなの常識
0781デフォルトの名無しさん
2009/06/08(月) 20:34:54スタックポインタでランダムアクセスっぽくしてるのは
ランダムアクセスというよりPeekの操作に該当するんじゃないかな
0782デフォルトの名無しさん
2009/06/08(月) 20:36:10おまえさんは抽象的に考えるということを一度勉強すべきだな
0783デフォルトの名無しさん
2009/06/08(月) 20:38:180784デフォルトの名無しさん
2009/06/08(月) 20:39:46こんなところでグダまいてないでさっさとゲーム作れw
0785デフォルトの名無しさん
2009/06/08(月) 20:42:33俺も真っ先にブックサーチでそれを探したけど、
「(カフェテリアで使っているばね式なお皿のスタックは)一番上のお皿のみが
アクセス可能なので、スタックにpushしたお皿は逆順でpopしてくる」としか書いてないよね?
どこにも、「スタックから一番上以外のお皿を取り出してはいけない」とは書かれていないと思うのだけれど。
>>780
なんで突然Linked Listの話が出てくるのか分からないんだけど、
一応聞いておくけど、Linked Listをランダムアクセスしたときの計算量は?
0786デフォルトの名無しさん
2009/06/08(月) 20:43:02SDKなら.NET3.5用のがすでにあるが、一体何を言いたいんだ?
0787デフォルトの名無しさん
2009/06/08(月) 20:45:53お前プログラマやめた方がいいと思うよ、マジで、才能ないから。
0788デフォルトの名無しさん
2009/06/08(月) 20:46:37どういう突っ込みか理解できないんだけど。
0789デフォルトの名無しさん
2009/06/08(月) 20:46:45煽りはいいので、論理的な反論をヨロシク
0790デフォルトの名無しさん
2009/06/08(月) 20:49:090791デフォルトの名無しさん
2009/06/08(月) 20:51:050792デフォルトの名無しさん
2009/06/08(月) 20:51:22明示的には書いてないが、その例えと同様に定義しているはずだが。
というのは、その先でキューをスタックで実装しろという問題がある。
意図から考えてランダムアクセスができるはずがない。
0793デフォルトの名無しさん
2009/06/08(月) 20:55:360794デフォルトの名無しさん
2009/06/08(月) 20:55:44余りにひどス
0795デフォルトの名無しさん
2009/06/08(月) 20:56:240796デフォルトの名無しさん
2009/06/08(月) 20:57:49Figure 10.1では、まさに配列で実装したスタック(An array implementation of a stack S)を
例示として出してるように見えるわけだが。
その問題は、「キュー(の操作)をスタック(の操作のみ)で実装しろ」という以上の意味はないんじゃね。
飯食ってくるのでちょっと返事遅れる。
0797デフォルトの名無しさん
2009/06/08(月) 21:04:05だって、これを見た初学者が
「スタックは配列とは関係ありません。サイズフリーなリンクリストで実装するのが正統(キリッ」
とかいう謎の主張を真に受けたりしたら嫌じゃん。
0798デフォルトの名無しさん
2009/06/08(月) 21:10:27いや、だからその実装を抽象化したのがstackなんだろう。
stackと配列+インデックスは別物。カプセル化されてるだろ
0799デフォルトの名無しさん
2009/06/08(月) 21:22:470800デフォルトの名無しさん
2009/06/08(月) 21:24:260801デフォルトの名無しさん
2009/06/08(月) 21:25:210802デフォルトの名無しさん
2009/06/08(月) 21:26:16C++の中の人も大変だなw
0803デフォルトの名無しさん
2009/06/08(月) 21:33:16仮にそうだとしても、配列由来の操作を隠蔽しなければならない確固たる理由はなくね?
事実、C#以外の多くの言語では、スタック操作は配列操作の一部として扱われているわけで。
0804デフォルトの名無しさん
2009/06/08(月) 21:45:280805デフォルトの名無しさん
2009/06/08(月) 21:47:56反対の、IStackやIQueueがあって、IListがその2つ(やその他)を継承するという作りのほうが自然に感じる。
0806デフォルトの名無しさん
2009/06/08(月) 21:48:310807デフォルトの名無しさん
2009/06/08(月) 21:52:42class ListStack : IList , IStack ←ないけど
class Stack : IStack ←ないけど
どちらも実装は同じでもいいだろう、しかし使う側がちゃんと考えて配列アクセスが不要ならStackを使うとしてくれるとListStackとStackの実装は後で変えることもできる。
基礎ライブラリなので変えることはしないだろうが、実際の開発ではこれが決定的な差になる。
0808デフォルトの名無しさん
2009/06/08(月) 21:57:02それだと、スタック操作を定義しないListが作れないような
0809デフォルトの名無しさん
2009/06/08(月) 21:57:51class ListStack : IList , IStack {
List list;
各種実装
}
class Stack : IStack {
ListStack list;
IStack で公開されるメンバーのみ公開しておく
}
これならListより配列の方が効率的だからという理由で後から object [] といった具合に変えて高速化する事も可能だろう。
上のDoubleListの例でいえば、Listを継承してしまうとListの機能に固定されてしまう訳だ。
0810デフォルトの名無しさん
2009/06/08(月) 22:30:22>>806
一番詳しい所は、Parallel Extensionsチームのブログ
日本語で詳しく書いてある所は知らない。
0811デフォルトの名無しさん
2009/06/08(月) 23:30:12>>810を見て初めて存在に気づいたw
0812デフォルトの名無しさん
2009/06/08(月) 23:49:31ただbeta1だけにそもそも手を出さないのが正解かもしれんな。
0813デフォルトの名無しさん
2009/06/08(月) 23:55:20配列由来の操作を隠蔽しなかったら
他の実装に変えられなくなるじゃん。
0814デフォルトの名無しさん
2009/06/09(火) 01:41:17GUIを楽に実装したいのでPropertyGrid を使いたいです。
しかし、なんせ汎用エディタなので、設定の項目は xml で定義できるようになっているため、
設定項目をまとめたものをクラスとして定義して PropertyGridに渡す」ということができません。
そういう場合でも PropertyGrid を使う事はできますか?
もしくは、空のクラスをつくって、設定ファイルに従って動的にプロパティを追加..
といったことができれば素直に PropertyGrid を使う事ができて楽なんですけど...
0815デフォルトの名無しさん
2009/06/09(火) 01:51:26なんで汎用的だと設定項目がxmlになるのかよくわからん
IXmlSerializerとかなかったっけ
0816デフォルトの名無しさん
2009/06/09(火) 01:54:030817デフォルトの名無しさん
2009/06/09(火) 02:15:42ようするに
項目名(プロパティ名)とその型(整数、文字列、実数)が設定ファイルで定義されている
↓
設定をロードするまでプロパティの個数も名前も型もわからない
↓
ソースコード上でクラスを定義できない
↓
だから PropertyGridもつかえない?? ←ここが問題
こういう目的で PropertyGridをつかうにはどうすればいいのでしょう?
もしくは、動的にクラスのプロパティを追加したり削除したりするにはどうすればいいのでしょう?
0818デフォルトの名無しさん
2009/06/09(火) 02:40:53設定項目をxmlで記述するとして,
その設定項目を実際に反映させるのは誰の役目?
プラグイン方式にするのだったら設定項目を集めたクラスを,プラグイン側で公開するようにすればいいだけなんだけど
0819デフォルトの名無しさん
2009/06/09(火) 03:45:21その結果、TypeConverter を継承した MyPropConverter をつくり、
[TypeConverter(typeof(MyPropConverter))]
class Hoge{}
という空っぽの Hoge クラスのインスタンスを PropertyGrid.SelectedObject に指定することにより、
好きなだけ任意のプロパティ項目を表示できるようになりました。しかし...
たとえば
オブジェクトAを選択すると、設定テキストAの内容をつかってプロパティを表示、
オブジェクトBを選択すると、設定テキストBの内容をつかってプロパティを表示、
オブジェクトCを選択すると ... するというようにしたいのですが、
すると、いま選択されているのが AなのかBなのか、なんなのかを MyPropConverterが知る必要があります。
(オブジェクトの種類によって GetProperties の戻り値を帰る必要があるため)
これはどのように指定すれば良いのでしょう?
理想をいえば、MyTypeConverter のコンストラクタでそのまま設定テキストを渡して解析させ、
結果に応じて GetProperties の戻り値をかえたいです。しかしそのようにすると、
propertyGrid.SelectedIndex = new Hoge(); の行で実行時エラーになります。問題はそもそも
MyPropConverterのコンストラクタの呼び出し元はどこなのか?ということですが....
0820デフォルトの名無しさん
2009/06/09(火) 04:11:56ほれ
http://msdn.microsoft.com/ja-jp/library/system.reflection.emit.typebuilder.aspx
これなら何でもできるぞ
0821デフォルトの名無しさん
2009/06/09(火) 08:50:01Size 10, 10
Width 10
Height 10
それに似た感じで
Cube 10, 10, 10
X 10
Y 10
Height 10
を作るにはどうしたらいいですか?
0822デフォルトの名無しさん
2009/06/09(火) 08:59:28クラス/構造体の作り方が分からないのか?
0823デフォルトの名無しさん
2009/06/09(火) 09:17:26クラスの中に構造体が入りません
0824デフォルトの名無しさん
2009/06/09(火) 09:20:04struct Point { public int X, Y }
Point Size { set; get; }
}
0825デフォルトの名無しさん
2009/06/09(火) 09:27:10C/C++が混ざってるぞ
0826デフォルトの名無しさん
2009/06/09(火) 09:38:41いや、Y の後ろの ; 忘れてる以外は C# 的に問題ない。
コンパイル通るぞ。
0827デフォルトの名無しさん
2009/06/09(火) 09:57:300828デフォルトの名無しさん
2009/06/09(火) 10:01:050829デフォルトの名無しさん
2009/06/09(火) 10:07:12ごめんPoint型のSizeは盲点だった
public struct Cube {
private int width, height, length;
public int Width { get { return this.width; } }
public int Height { get { return this.height; } }
public int Length { get { return this.length; } }
public Cube(int width, int height, int length) {
this.width = width;
this.height = height;
this.length = length;
}
}
0830デフォルトの名無しさん
2009/06/09(火) 10:08:44クラスと同じ
>>828
何で入らないと思ったのかkwsk
0831デフォルトの名無しさん
2009/06/09(火) 10:39:17とりあえず仕組みは分かりました
ありがとうございます!
0832デフォルトの名無しさん
2009/06/09(火) 10:58:240833デフォルトの名無しさん
2009/06/09(火) 11:36:21外にまたそれ用のWidth、Height、Lengthのプロパティも作るなら構造体の中にプロパティじゃなくて変数だけでよくない?
と思い始めてるけど勘違いしてるのかな
0834デフォルトの名無しさん
2009/06/09(火) 12:10:44イミフ。set書け
>外にまたそれ用のWidth、Height、Lengthのプロパティも作るなら構造体の中にプロパティじゃなくて変数だけでよくない?
プロパティが何のためにあるか理解してないようだな。
0835デフォルトの名無しさん
2009/06/09(火) 12:24:54なるべくコンパクトでオーバーヘッドの少ない方法がいいのだけど、自前でByte用の
リングバッファクラス作った方がよい?
0836デフォルトの名無しさん
2009/06/09(火) 12:51:550837デフォルトの名無しさん
2009/06/09(火) 12:59:37相手PCからほぼ間断なく来るバイト列を読み込みながら、パケットとして処理出来るまで溜め込んで
パケットを解析して次の処理に渡します。
パケットのサイズは200バイト未満で可変です。
パケット間は区切り文字も何もなくダラダラと流れてきますが、途中○バイト目がパケットサイズに
なっているので、それを頼りにパケットを解析します。
0838デフォルトの名無しさん
2009/06/09(火) 13:24:360839デフォルトの名無しさん
2009/06/09(火) 13:59:320840デフォルトの名無しさん
2009/06/09(火) 14:16:41Queueは大袈裟っつーか使い道が違うんじゃないかな
NetworkStreamから1バイトずつ読み取るつもりなわけでもあるまい
0841デフォルトの名無しさん
2009/06/09(火) 15:05:23デフォルト設定では Google になっていて、これまでは必ずGoogleに飛んでいた
のですが、ここ数日設定していないのに、Bing に飛んでしまいます。
WebBrowser.GoSearch メソッドを使うとこのBingが自動的に選ばれてしまうのを
これまで通り正しくIEのデフォルトの検索ページに飛ばせるように戻せないでしょうか?
できましたら、変更の仕方を教えていただきたく、何卒よろしくです。
0842841
2009/06/09(火) 15:07:120843841
2009/06/09(火) 15:11:43すみませんでした。。。申し訳ありません。。。
0844デフォルトの名無しさん
2009/06/09(火) 15:38:00単にキューでバイト配列を管理したらいいんじゃない?
0845デフォルトの名無しさん
2009/06/09(火) 15:45:01深く考えずに単一バッファにして追記していって消費したバイト分を前にずらすという力技でもいけちゃいそう。
サーバの話なら論外だけど。
0846デフォルトの名無しさん
2009/06/09(火) 16:32:02public NetworkStream ns;
public Queue<Byte> ReadQueue = new Queue<Byte>();
Byte[] ReadData = new byte[512];
public Test(string hostname, int port)
{
tcp = new TcpClient(hostname, port);
ns = tcp.GetStream();
ns.BeginRead(ReadData, 0, ReadData.Length, CBRead, ns);
}
private void CBRead(IAsyncResult ar)
{
NetworkStream ns = (NetworkStream)ar.AsyncState;
Int32 cnt = ns.EndRead(ar);
for (int i = 0; i < cnt; i++)
{
ReadQueue.Enqueue(ReadData[i]);
}
ns.BeginRead(ReadData, 0, ReadData.Length, CBRead, ns);
}
Queueを使ってやりたいことは大体こんな感じです。
延々とバックグラウンドで受信しているイメージです。
パフォーマンス的にどうなのかなあ、自前リングバッファの方がいいのかなあと言う疑問でした。
ちょっと質問からずれるのですが、連続してストリームを処理する場合のBeginReadの
使い方ってこれであってます?
0847デフォルトの名無しさん
2009/06/09(火) 16:34:52static void Main(string[] args)
{
test("192.168.1.100", 10001);
while (true)
{
while (wl.ReadQueue.Count > 0)
{
Byte b = wl.ReadQueue.Dequeue();
Console.Write(b.ToString("X2"));
}
}
}
0848デフォルトの名無しさん
2009/06/09(火) 16:47:38そしてCBRead()の最後がキモい
だれも止められないじゃん
0849デフォルトの名無しさん
2009/06/09(火) 16:55:12どうしてもバッファから取り出した分を詰める作業が必要なのでMemoryStreamはちょっと。
最後キモイですか。
我ながらこりゃあいいやと思ったんですが、どうしましょうか。
0850デフォルトの名無しさん
2009/06/09(火) 17:08:55もしかして>>846は肝心の”取り出した分を詰める作業”が書かれていない?
しかも,そもそもTCPなんだからByte型のデータを自前でバッファする必要性をあまり感じないんだが.
むしろQueueに突っ込むのは,データストリームから取り出した使えるデータの方がヨサゲ
0851デフォルトの名無しさん
2009/06/09(火) 17:13:56少なくともバイト数が分かる仕様ぽいから、
受信スレッドがひたすらまとまり単位でバイト配列に取り出してバイト配列をキューに追加
処理スレッドがキューからひたすら取り出して処理すればいいような気がする。
ああ、スレッド間の同期はちゃんとやってね。
0852デフォルトの名無しさん
2009/06/09(火) 17:15:440853デフォルトの名無しさん
2009/06/09(火) 19:30:09亀だけどサンクス
思ったより知りたいことが書いてあったので為になった!
0854デフォルトの名無しさん
2009/06/09(火) 20:41:04AssemblyName asmName = new AssemblyName("myAsm");
AssemblyBuilder asmBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.Run);
ModuleBuilder modBuilder = asmBuilder.DefineDynamicModule("myModule");
TypeBuilder typeBuilder = modBuilder.DefineType("myClass", TypeAttributes.Public, typeof(object));
typeBuilder.DefineField("x", typeof(int), FieldAttributes.Public);
typeBuilder.DefineField("y", typeof(int), FieldAttributes.Public);
Type mytype = typeBuilder.CreateType();
return Activator.CreateInstance(mytype);
}
という動的クラスのインスタンスを返す関数を作って
propertyGrid.SelectedObject = GetMyObject();
とやってみましたが、プロパティグリッドにはなにも表示されません。
GetMyObject() の戻り値をみてみたところ、クラス名 myClass で
メンバ x, y も存在し、意図したとおりのクラスとインスタンスが
生成されているように見えるのですが、プロパティグリッド反映されないのはなぜなのでしょうか?
0855デフォルトの名無しさん
2009/06/09(火) 20:45:430856デフォルトの名無しさん
2009/06/09(火) 20:46:320857デフォルトの名無しさん
2009/06/09(火) 20:53:34objectじゃなくてもいいんだった
0858デフォルトの名無しさん
2009/06/09(火) 20:56:330859デフォルトの名無しさん
2009/06/09(火) 20:57:59基本的には読み書き可能なプロパティを定義しないと。
0860デフォルトの名無しさん
2009/06/09(火) 21:04:18ILGeneratorで生成しないといけないので超面倒だぜ
0861デフォルトの名無しさん
2009/06/09(火) 21:12:530862デフォルトの名無しさん
2009/06/09(火) 21:15:020863デフォルトの名無しさん
2009/06/09(火) 21:25:16DataTableに一行目とかに読み込んで、DataRowView(DefaultViewでもいい)を取り出して、
1行目をPropertyGridにバインドすれば簡単なことならできる。
これで事足りれば、新しいクラスを作ったりTypeDescripter絡みを自分で処理する必要はない。
0864デフォルトの名無しさん
2009/06/09(火) 21:30:300865デフォルトの名無しさん
2009/06/09(火) 21:31:390866デフォルトの名無しさん
2009/06/09(火) 22:34:41ListViewのList表示で横スクロールするときになめらかにスクロール
させたいんだけど、どうすればいいんでしょうか。
エクスプローラみたいなスクロールじゃなくてFileVisorみたいなスク
ロールといえばイメージ伝わるかな。
ListBoxに無理矢理描画しようかとも思ったけど面倒だし、うまい方法
はないでしょうか。よろしくお願いします。
0867デフォルトの名無しさん
2009/06/09(火) 22:37:220868デフォルトの名無しさん
2009/06/10(水) 07:38:42カプセル化って隠すという意味ですよね?
デリゲートが何でカプセル化になるのか今一ピンとこないんですが
0869デフォルトの名無しさん
2009/06/10(水) 08:09:36多分違う
0870デフォルトの名無しさん
2009/06/10(水) 08:19:230871デフォルトの名無しさん
2009/06/10(水) 08:29:560872デフォルトの名無しさん
2009/06/10(水) 08:41:450873デフォルトの名無しさん
2009/06/10(水) 09:16:07カプセル化として見れば隠してる
0874デフォルトの名無しさん
2009/06/10(水) 09:51:36雑だが
Commandパターン
クロージャ
0875デフォルトの名無しさん
2009/06/10(水) 10:27:40複数のメソッドが登録できるあたり、発想は明らかにクロージャー等ではないし、今ではクロージャー化しつつあるけど
0876デフォルトの名無しさん
2009/06/10(水) 10:38:35IDEの支援を想定した文法とか、常識的にはこの文法冗長でだるいだろう普通やめるだろうというのが平気で入っている。
0877デフォルトの名無しさん
2009/06/10(水) 11:08:08それがすべてじゃないと思うよ。
0878デフォルトの名無しさん
2009/06/10(水) 11:10:29パターンとしてよく必要になるんだけど>>876の言うように面倒だから言語に取り込んだ
0879デフォルトの名無しさん
2009/06/10(水) 16:45:29new Thread
ThreadPool.QueueUserWorkItem
BackgroundWorker
delegate.BeginInvoke
…ほかにもある?
なんか色々あって混乱するけど、どういう場合にどれを使えばいいの?
0880デフォルトの名無しさん
2009/06/10(水) 16:49:47ttp://codezine.jp/article/detail/144?p=1
0881デフォルトの名無しさん
2009/06/10(水) 17:25:53ありがとう、でももうちっと最近の記事じゃないとBackgroundWorkerとか扱ってないかも
private void BackgroundStart()
{
Action act = () =>
{
while (true)
{
Thread.Sleep(50);
Console.WriteLine("にゃー!");
}
};
act.BeginInvoke(null, null);
}
static void Main(string[] args)
{
BackgroundStart();
while (true)
{
Thread.Sleep(50);
Console.WriteLine("わんわん!");
}
}
今はこんな感じで書いてるけど、可読性いいのかこれ?
BackgroundWorkerはいろいろリッチだけど、使うの難しそう。
0882854
2009/06/10(水) 17:31:56最後にひとつ。
動的に作ったクラス、のインスタンスのプロパティに値を設定するには
どうすればよいですか?
もしくは、PropertyGird をプログラム側から操作して、PropertyGrid.SelectedObject
のプロパティを変更することはできますか?
0883デフォルトの名無しさん
2009/06/10(水) 17:44:41プロパティを生成できた奴がそんな質問をするなんて考えられないと思うんだが
0884デフォルトの名無しさん
2009/06/10(水) 17:48:080885デフォルトの名無しさん
2009/06/10(水) 21:30:56AA作成支援ソフトっぽいもの作ってまして
標準環境(http://www.geocities.co.jp/HeartLand-Yurinoki/1836/mona_font_settei.html)
で指定した文字列の表示幅を取得する方法を探してます
Graphics.MeasureStringや
TextRenderer.MeasureTextなんかを使えばいけるんだと思うんですが
どーにもIE標準環境の作り方がわかりません(Graphicsオブジェクトどーやってもってくるの?)
おせーてくださーい
0886デフォルトの名無しさん
2009/06/10(水) 21:37:540887デフォルトの名無しさん
2009/06/10(水) 21:48:230888885
2009/06/10(水) 22:50:23てっきりGraphicsオブジェクトのプロパティに大きく依存するのかと思ったんですが
今メンバ見てもそれっぽいもの無いみたいですね。。
例えば下の二つの文字列
「ああああああ」
「..............................」
を長さ測定関数に渡した時に同一の値が帰ってくるような
状態をとりあえず目指していろいろやってるんですが
なかなかうまくいかないですね・・・
とりあえずもうちょっと調べてみますー
0889デフォルトの名無しさん
2009/06/10(水) 23:12:030890デフォルトの名無しさん
2009/06/10(水) 23:33:33なんとかできたっぽいです
同じフォントでも環境によって表示のされ方違うのかと思ってました
レスくれた方ありがとでしたー
0891854
2009/06/11(木) 00:54:54リフレクターというヒントをくれたかた、どうもありがとう
Type type = (Type)MyClass;
type.GetProperty("x").SetValue(propertyGrid.SelectedObject, 1234, null);
いままでずっと C をやっていて C# も .Net おとといはじめたばかりなので、
ヒントがなければライブラリのどこに何があるかさっぱりわかりませんでした。
どうもありがとう!
0892デフォルトの名無しさん
2009/06/11(木) 01:01:32お役に立てて光栄です
0893デフォルトの名無しさん
2009/06/11(木) 07:42:510894デフォルトの名無しさん
2009/06/11(木) 08:25:30> Action act = () =>
なんぞこれ
0895デフォルトの名無しさん
2009/06/11(木) 08:38:370896デフォルトの名無しさん
2009/06/11(木) 13:05:26actという名前の変数はAction型
() => {...} はAction型のリテラル(ラムダ式)で,空の引数を受け取って何かしてる
0897デフォルトの名無しさん
2009/06/11(木) 17:52:31(c_c#)
0898デフォルトの名無しさん
2009/06/11(木) 22:31:350899デフォルトの名無しさん
2009/06/11(木) 22:56:39//(c_c#)
でOK
0900デフォルトの名無しさん
2009/06/11(木) 22:57:170901デフォルトの名無しさん
2009/06/11(木) 23:33:060902デフォルトの名無しさん
2009/06/11(木) 23:42:170903デフォルトの名無しさん
2009/06/12(金) 11:28:580904 ◆BOHwjyHW6o
2009/06/12(金) 12:24:43質問させてください。
今、S/C間の通信プログラムを書いています。
--------
//↓サーバー側プログラム
this.mListener = new TcpListener(IPAddress.Any, 58201);
this.mListener.Start();
clTCPClient = this.mListener.AcceptTcpClient();
--------
//↓クライアント側プログラム
TcpClient tcp = new TcpClient();
tcp.Connect("�@", 58201);
--------
�@をlocalhostにすると接続が確認できます。
�@をグローバルIPにすると接続できなくなります。
SocketExceptionが出ました。
ErrorCodeは10061
エラーメッセージは「対象のコンピュータによって拒否されたため、接続できませんでした。�@:59201」と出ました。
ttp://www.navnav.jp/port/
ココでポートの解放チェックを行いました。
結果、ポートは空いていました。
(ポート解放用と思われる接続もサーバー側のAcceptTcpClientでキャッチできました)
�@をグローバルIPにして接続を行いたいのですが、どうすれば良いでしょうか?
また、何を確認すべきでしょうか?
環境は以下の通りです。
・PCは1台でテストしています。(OSはXP)
・Visual Studio 2008 で開発を行っています。
・ウィルスバスターは終了させた状態です。
・ルーターはフレッツ光のCTUです。
・ハブはBUFFALOのAirStationをルーターOFFモードで利用しています。
正しくは、
「対象のコンピュータによって拒否されたため、接続できませんでした。�@:58201」
です。
よろしくお願いします。
0907デフォルトの名無しさん
2009/06/12(金) 12:33:040908デフォルトの名無しさん
2009/06/12(金) 12:37:08ルータの内側にいるのに,外側のIPに接続しようとしてる?
ルータの実装によるけど,ふつーはつなげないんじゃないかな
0910777
2009/06/12(金) 13:12:08したいのですが、ヘルプ通りnullを渡すとエラーになります。
他にどんな方法があるんでしょうか?
0912デフォルトの名無しさん
2009/06/12(金) 13:19:59strbld.AttachDBFilename = "";
0913910
2009/06/12(金) 13:24:23やっぱりそれしかないんですね。
最終的な文に"AttachDbFilename=;"が入っちゃうんで消せないかなと
思ってたんですが、そうしておきます。ありがとう。
返答ありがとうございます。
色々試行錯誤しているのですが、結局駄目でした。
localhostで作業を進め、サーバー立ては次の機会に行います。
ありがとうございました。
0915デフォルトの名無しさん
2009/06/12(金) 15:13:460916デフォルトの名無しさん
2009/06/12(金) 16:13:14専用ルーターだから。
0917デフォルトの名無しさん
2009/06/12(金) 19:44:54そういうルータ越しの環境だと、自分とこからグローバルIPアドレスでルータを越えてまた自分とこにくる通信は無理だと思う。
クライアントを別の回線(携帯とか友人宅・会社・学校)からやってみたらどう?
0918デフォルトの名無しさん
2009/06/12(金) 22:28:23単体テストの機能を始めて使ってみたのですが、これには
「あるディレクトリ以下にある全てのデータファイルでテストを実施する」
という総当り的な、機能は付いているのでしょうか?
csvで、テストケースを一個一個作成していくのも面倒なので、個人的にはデータファイルを作って、
それをあるディレクトリ以下に放り込めば、勝手にテストしてくれるような機能を期待していたのですが……
やはり、自前で作るしかないですかねぇ。とはいっても、自前で作ってるのは、すでにあって、
今回はそれを既製品に移行しようという話なので、自前で作る云々になると話がズレて来るんです。
どなたか回答をお願いします。
0919デフォルトの名無しさん
2009/06/12(金) 22:45:39「光モデム」−「ルーター(ヤマハ)」−「サーバーやらクライアントやら」
って構成でグローバルIPアドレス指定で内部のクライアントからサーバー見えてるよ
0920デフォルトの名無しさん
2009/06/12(金) 22:50:220921デフォルトの名無しさん
2009/06/12(金) 23:13:48SqlConnectionStringBuilder strbld = new SqlConnectionStringBuilder();
strbld.AttachDBFilename = "";
↓
SqlConnectionStringBuilder strbld = new SqlConnectionStringBuilder();
strbld.Remove("AttachDBFilename");
0922デフォルトの名無しさん
2009/06/13(土) 21:45:53付けるにはどうしたらいいか知りたく。
「共有フォルダ」の一覧を得るには
System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_Share");
これでいいという情報は得ましたものの、これでなくてDirevtoruInfoのAttributes
のように高速で一発でわかる方法があれば尚ありがたく。
またアイコンに手のマークを付けるにはどのようにするものでしょう、
ご指導をいただきたく。
0923デフォルトの名無しさん
2009/06/13(土) 21:52:29まっとうにやるなら、NetShareEnum() だな。それほど遅くない。
オーバーレイは ImageList_SetOverlayImage() とかで。
0924デフォルトの名無しさん
2009/06/13(土) 22:23:34おお!!そういう方法があったのですか!
ありがとうございます。勉強してみます!!
助かりました!
0925デフォルトの名無しさん
2009/06/14(日) 21:21:26C# 2005 のWebBrowserクラスを使ってサイトからデータを読み出してます。
使い回す必要があるので、何度もnavigateを呼び出していると、
メモリの使用量がどんどん増えてって困ってます
using を使って、きれいにしているはずなんですが、何か対処方法あるのでしょうか?
0926デフォルトの名無しさん
2009/06/14(日) 21:50:01とりあえずWindowsの管理ツールやプロファイラで調べてみろ
0927デフォルトの名無しさん
2009/06/14(日) 22:07:19マネージ部分はやっぱりいつガベージコレクションの対象になるかは
保証されてないんじゃなかったっけ。
違ったかな。
0928デフォルトの名無しさん
2009/06/14(日) 22:15:05ブロック出た途端に解放したきゃ明示的にGCしろよ
0929925
2009/06/14(日) 22:50:12それでも増え続けてるので、どこかで握ったままなのかなと思ってました。
とりえあず、GCで開放してみます。
0930デフォルトの名無しさん
2009/06/14(日) 22:59:010931デフォルトの名無しさん
2009/06/14(日) 23:05:09ついでに言うと.Navigate()のその挙動は完全に仕様。
0932デフォルトの名無しさん
2009/06/14(日) 23:25:10オレから解決案は出ないけど(^^;
0933デフォルトの名無しさん
2009/06/14(日) 23:34:190934デフォルトの名無しさん
2009/06/14(日) 23:47:561+1=2って考えた人マジ天才
0935デフォルトの名無しさん
2009/06/14(日) 23:54:240936デフォルトの名無しさん
2009/06/14(日) 23:58:05ってのと、
using を使って、きれいにしている
ってのから判断するに
一度 navigate 呼び出すために毎回新規にオブジェクト作ってるんじゃないのか。
0937デフォルトの名無しさん
2009/06/15(月) 10:04:46このサイト使ってC#習ってる人いる?
0938デフォルトの名無しさん
2009/06/15(月) 11:59:12931が何のことを言っているのかは知らないが
JavaScriptで循環参照したりとかActiveXでもリークするでしょ
どんなページって具体的に言うと日本の某動画サイトとかな
0939デフォルトの名無しさん
2009/06/15(月) 12:24:18C#を学びたいのに、何故ASP.NET?
0940デフォルトの名無しさん
2009/06/15(月) 14:14:01あそこのスクリプトはレベルが低いと思う・・・
0941デフォルトの名無しさん
2009/06/15(月) 15:22:12今まで使う機会がなかったからきちんと勉強していない。
何か良書はある?
0942デフォルトの名無しさん
2009/06/15(月) 15:35:030943デフォルトの名無しさん
2009/06/15(月) 16:04:39一般的な方法は無いんじゃね?
もしくはもっと大きめのところで捕まえる
http://jehupc.exblog.jp/9247467/
1. Application.ThreadExceptionイベントの活用
2. Thread.GetDomain().UnhandledExceptionイベントの活用
0944デフォルトの名無しさん
2009/06/15(月) 16:16:08メンバを検索するツールを自作する
0945デフォルトの名無しさん
2009/06/15(月) 16:44:31> 1. Application.ThreadExceptionイベントの活用
> 2. Thread.GetDomain().UnhandledExceptionイベントの活用
どうも非同期デリゲートはどちらも効かないようなのです。
0946デフォルトの名無しさん
2009/06/15(月) 16:49:02なんか凄い方法が見つかった
http://d.hatena.ne.jp/zecl/20071216/p2
0947デフォルトの名無しさん
2009/06/15(月) 17:03:30thx
C# In a Nutshell見ながら作ってみる。
0948デフォルトの名無しさん
2009/06/15(月) 18:34:51http://blogs.msdn.com/nakama/archive/tags/WindowsForms/default.aspx
この辺にヒントがあるかも
0949デフォルトの名無しさん
2009/06/15(月) 18:52:16自分は、アダフターになるデリゲートを準備して、EndInvoke側で処理している。
処理の完了を確認してデータを受け取る際に、その発生した例外をくるんでデリゲート実行中例外として再送出。
var sync = obj.BeginInvoke( ThreadUtil.Adp(呼び出したい関数) ) ;
・・・
obj.EndInvoke(sync);
で、この後objから結果を読みだすプロパティーから再送出されるイメージ。
ThreadUtil.Adp を全部で書くと結構ながながとしたので、想像で分かればここまでとさせてください。
ご参考までに
0950デフォルトの名無しさん
2009/06/15(月) 18:56:220951デフォルトの名無しさん
2009/06/15(月) 19:41:220952デフォルトの名無しさん
2009/06/15(月) 20:25:52EndInvoke以外に何かあるのかっていうか普通はEndInvoke必須なんだから
0953949
2009/06/15(月) 20:26:04namespace InvokeExtensions
{
using System.ComponentModel;
using System.Threading;
[global::System.Serializable]
public class InvokeException : Exception
{
public InvokeException() { }
public InvokeException(string message) : base(message) { }
public InvokeException(string message, Exception inner) : base(message, inner) { }
protected InvokeException(
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
: base(info, context) { }
}
public interface IAsyncResult<TResult> : IAsyncResult
{
TResult Result { get; }
void ThrowException();
}
0954949
2009/06/15(月) 20:28:25{
// 同様に複数引数版も用意
public static IAsyncResult<object> BeginInvoke(this ISynchronizeInvoke o, Action a)
{
return BeginInvoke<object>(o, () => { a(); return null; });
}
public static IAsyncResult<TResult> BeginInvoke<T1, TResult>(this ISynchronizeInvoke o, Func<T1, TResult> f, T1 a1)
{
return BeginInvoke<TResult>(o, () => f(a1));
}
public static IAsyncResult<TResult> BeginInvoke<TResult>(this ISynchronizeInvoke o, Func<TResult> f)
{
var r = new ResultClass<TResult>() { o = o };
r.s = o.BeginInvoke(new ThreadStart(() => { try { r.r = f(); } catch (Exception e) { r.e = e; } }), null);
return r;
}
class ResultClass<TResult> : IAsyncResult<TResult>
{
public ISynchronizeInvoke o;
public IAsyncResult s;
public Exception e;
public TResult r;
public TResult Result { get { o.EndInvoke(s); ThrowException(); return r; } }
public void ThrowException() { if (e != null) throw new InvokeException("Invokeデリゲート内例外", e); }
public object AsyncState { get { return r; } }
public WaitHandle AsyncWaitHandle { get { return s.AsyncWaitHandle; } }
public bool CompletedSynchronously { get { return s.CompletedSynchronously; } }
public bool IsCompleted { get { return s.IsCompleted; } }
}
}
}
0955949
2009/06/15(月) 20:30:35var sync = obj.BeginInvoke(関数);
try
{
sync.Result;
}
catch (InvokeException msg)
{
例外処理
}
こんな感じで受け止められます。
0956デフォルトの名無しさん
2009/06/15(月) 20:44:46try
{
var result = obj.EndInvoke(sync);
}
catch (??Exception ex)
{
例外処理
}
でダメな理由を教えてくれたまえ。
0957デフォルトの名無しさん
2009/06/15(月) 20:50:00ひどうきしょりになつてないよね
0958デフォルトの名無しさん
2009/06/15(月) 20:53:510959デフォルトの名無しさん
2009/06/15(月) 20:59:230960デフォルトの名無しさん
2009/06/15(月) 21:00:27??ってどういう意味?はじめてみる
0961デフォルトの名無しさん
2009/06/15(月) 21:02:340962949
2009/06/15(月) 21:07:46ああ、言われてみれば例外受け止めるだけならそれだけで十分ですね
こちらは、スレッドを立てるのと同時にスレッド間の通信経路を確保する必要があって、実際はもっと大規模な物になっています。
便利になってしまったので、こればっかり使っていたので……
0963デフォルトの名無しさん
2009/06/15(月) 21:13:15??演算子ってマイナーだよな。::演算子の次くらいに
0964デフォルトの名無しさん
2009/06/15(月) 21:15:430965デフォルトの名無しさん
2009/06/15(月) 21:16:12ここは??が使えると頭にすぐ浮かぶかどうか
0966デフォルトの名無しさん
2009/06/15(月) 21:16:470967デフォルトの名無しさん
2009/06/15(月) 21:24:480968デフォルトの名無しさん
2009/06/15(月) 21:26:330969デフォルトの名無しさん
2009/06/15(月) 21:26:49わざわざ演算子追加するほどのことなのかなあ
名前空間エイリアスよりも型名エイリアスの方が遥かに衝突しやすくて問題だろ
0970デフォルトの名無しさん
2009/06/15(月) 21:29:26自信をもって名前空間の文法作ったら抜けがあったというオチでC++っぽく解決されたものかと。ちょっとカッコワルイ
0971デフォルトの名無しさん
2009/06/15(月) 21:31:490972デフォルトの名無しさん
2009/06/15(月) 21:35:44あえて言えば、結果(=戻り値+例外)と、同期処理の分離が悪いという所かね。
例外が結果ではなく、同期側にくっついている上、使用者からみて直接必要とは思えない呼び出し先のオブジェクトが要求されている。
ライブラリの設計が悪いと言えるかもしれない。
0973デフォルトの名無しさん
2009/06/15(月) 21:41:240974デフォルトの名無しさん
2009/06/15(月) 21:45:150975デフォルトの名無しさん
2009/06/15(月) 22:18:22同じ名前の型や名前空間が他にあったとしても名前空間や型名のエイリアスが
常に優先されるから問題にならなくね?
DLLに名前空間エイリアスを付ける場合は変更が利かないから::使うようにしないとまずいだろうけど
それ以外で問題になるケースってある?
0976デフォルトの名無しさん
2009/06/15(月) 22:28:05http://msdn.microsoft.com/ja-jp/library/c3ay4x3d.aspx
0977デフォルトの名無しさん
2009/06/15(月) 22:34:54ジェネレータが global:: よく使ってるね。
まぁ常識的にそんなかぶらない気もするけど、かぶ
ればこれがなければどうしようもないのは確かかも
なぁ
0978デフォルトの名無しさん
2009/06/15(月) 22:35:510979デフォルトの名無しさん
2009/06/15(月) 22:35:550980デフォルトの名無しさん
2009/06/15(月) 22:51:38public partial class Hoge:HogeHoge
って宣言が8カ所にあったんだが、お舞ら的にどうよ(´・ω・`)
俺的にはありえなかった。
0981デフォルトの名無しさん
2009/06/15(月) 22:55:54きっと何かのツールで自動生成してるんだよ。
それか、拡張メソッド定義用のクラスは結構ばらばらに書いたりするけど。
0982デフォルトの名無しさん
2009/06/15(月) 22:56:320983デフォルトの名無しさん
2009/06/15(月) 22:58:010984デフォルトの名無しさん
2009/06/15(月) 22:59:59気がするからまぁいいんじゃないかって思うがアクセス修飾子と
継承元は一箇所でいいんじゃないかな
0985デフォルトの名無しさん
2009/06/15(月) 23:10:210986デフォルトの名無しさん
2009/06/15(月) 23:12:22パーシャル連発することはあるわ
なんかまずい?
0987デフォルトの名無しさん
2009/06/15(月) 23:12:440988デフォルトの名無しさん
2009/06/15(月) 23:32:490989デフォルトの名無しさん
2009/06/15(月) 23:36:000990デフォルトの名無しさん
2009/06/15(月) 23:36:20ネストするのは他に公開しないため
0991デフォルトの名無しさん
2009/06/15(月) 23:37:070992デフォルトの名無しさん
2009/06/15(月) 23:37:52あと外側クラスの private メンバを見れる
0993デフォルトの名無しさん
2009/06/16(火) 00:07:58後者のメリットが大きいね。
C++ でいう、friend 的な関係のものに使用できる。
0994デフォルトの名無しさん
2009/06/16(火) 01:11:540995デフォルトの名無しさん
2009/06/16(火) 13:43:25そういるルールだからです。
「ぬーやる」バーガーはしってますか?
0996デフォルトの名無しさん
2009/06/16(火) 18:51:30現場であまり使う機会がないですがみなさんどうですか
0997デフォルトの名無しさん
2009/06/16(火) 19:02:22使い方複数あるし
どっちかincludeにした方がいいね
0998デフォルトの名無しさん
2009/06/16(火) 19:07:13使い方が複数あるのなんか他のキーワードにもある
0999デフォルトの名無しさん
2009/06/16(火) 19:07:201000デフォルトの名無しさん
2009/06/16(火) 20:04:20というわけで1000。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。