1 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:15:52 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part51 pc12.2ch.net/test/read.cgi/tech/1233757615/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>2-5 くらい
2 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:16:30 ] 関連スレ ふらっとC#,C♯,C#(初心者用) Part39 pc12.2ch.net/test/read.cgi/tech/1237051173/ Visual Studio 2008 Part 15 pc12.2ch.net/test/read.cgi/tech/1233853864/ WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3 pc12.2ch.net/test/read.cgi/tech/1231506876/ 【VB.NET】LINQ友の会【C#, C♯, C#】 pc12.2ch.net/test/read.cgi/tech/1202568694/ C#,C#の宿題片付けます。 pc12.2ch.net/test/read.cgi/tech/1197620454/
3 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:16:47 ] 参考リンク MSDNライブラリ msdn.microsoft.com/ja-jp/library/ @IT Insider.NET www.atmarkit.co.jp/fdotnet/ Insider.NET 会議室 ディレクトリ www.atmarkit.co.jp/fdotnet/index/bbs/ MSDN フォーラム forums.microsoft.com/MSDN-JA/default.aspx?SiteID=7 pinvoke.net: the interop wiki! pinvoke.net/ 宇宙仮面の C# プログラミング / C# Programming ukamen.hp.infoseek.co.jp/ WisdomSoft C#入門 wisdom.sakura.ne.jp/programming/cs/ WisdomSoft Microsoft .NET入門 wisdom.sakura.ne.jp/system/msnet/ どっとねっとふぁん dotnetfan.org/ 緑のバイク 初めてのC# 〜 覚え書き 〜 homepage3.nifty.com/midori_no_bike/CS/ どぼん!の .NET Tips dobon.net/vb/dotnet/
4 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:17:03 ] 質問する前に"必ず"WikiやFAQ集を参照し、同じような質問がないか確認してください。 初歩的な質問はPC初心者板で・・・ pc11.2ch.net/pcqa/ 参考リンク(よく出てくる情報リンク) Windows Vista Wiki windowsvista.ms/index.php Windows VistaFAQ vistafaq.stdo.net/index.html インストールから設定・活用まで〜 すべてが分かるWindows Vista大百科 journal.mycom.co.jp/special/2007/windowsvista/menu.html
5 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 13:37:14 ] 1おつ
6 名前:デフォルトの名無しさん [2009/04/01(水) 14:12:43 ] 乙です。 C#3.0対応のデザインパターンの解説書かサイトで、 日本語で書かれているのってないですかね? 英語なら、オライリーからC#3.0のデザインパターン本が出てたのですが。
7 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 14:23:36 ] >>1 乙
8 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 19:29:46 ] 誘導くらいしろよはげ 死ぬの?
9 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 19:32:36 ] >8 ひどいフシアナ
10 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 20:02:02 ] TreeView で現在選択されているのが、最下段ノードであるかどうかを取得するには どういう方法が一番よいでしょう?
11 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 20:22:02 ] GetNodeCount
12 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 00:28:39 ] >>8 こいつはろくなコード書けないんだろうな
13 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 01:33:13 ] ID出ない板で荒らし、かっこいいです
14 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 07:42:58 ] >>635 英語ドキュメントを読むコツは、最初は辞書を引かない事 高卒レベルの英語で、おおまかな部分は読める 一度通して読んだあと、大体ネックになる重要単語が見えてくるはずだから、 その時辞書を引いて調べればいい 英語が苦手っていう奴は英語をすべて日本語に訳してから理解しようとしている 英語は英語として理解するのが簡単
15 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 09:07:42 ] >>11 どもでした!
16 名前:デフォルトの名無しさん [2009/04/02(木) 15:37:51 ] ★「完全無所属」実は「自民支部長」…千葉知事当選の森田氏 tsushima.2ch.net/test/read.cgi/newsplus/1238600250/ ・千葉県知事選で100万票余を獲得して初当選した元衆院議員の森田健作氏(59)が、 現在も東京都の自民党支部長を務めていたことがわかった。 森田氏は、政党と距離を置く「完全無所属」をアピールして無党派層の支持を集めており、 一夜明けた30日の記者会見で「近く支部を解散したい」との考えを明らかにした。 森田氏が支部長を務めるのは、自民党東京都衆議院選挙区第2支部(東京都中央区)。 森田氏が参院議員だった1995年1月に設立された。衆院議員に転じた森田氏が2003年 10月に辞めた後も、支部は存続している。 収支報告書によると、支部長の登録は本名の「鈴木栄治」。04〜07年には計1億6185万円の 企業・団体献金を受け、同時期に計1億5030万円を、同支部と同じ事務所で、森田氏が代表を 務める資金管理団体「森田健作政経懇話会」に寄付していた。 使途については、「知事選には使っていない。知事選に無所属での出馬を決意する前に、 自民党候補の応援などのために使った」と釈明した。 www.yomiuri.co.jp/politics/news/20090330-OYT1T00515.htm
17 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 16:30:20 ] >>16 朝日新聞の中の人ですか、携帯からご苦労様です。早くアク禁解除されるといいですね。
18 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 02:38:58 ] k個あってn角形の3次元配列を作成していまして 現在ファイルから配列に格納するところで躓いています。 図形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++; }
19 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 02:42:58 ] List<int[][]>にすればいいんじゃない? int[][]をオブジェクトにしてもいいような気もする
20 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 04:40:03 ] >>18 List_POS[0][0] しか作ってないのに、List_POS[0][1] にアクセスしたら 当然例外になるわな > 第一要素を可変長にしたい はずなのに二番目を List にしてるのは何で? (多分、>>19 と同じ) 図形数を可変にするんじゃないの? あと、要素(element)ってコレクションの中身のことだから
21 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 13:49:36 ] いろいろ混乱してとりあえず 整理のためにこんな感じなのかなとコードを書いてみます public 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]); .....
22 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 13:55:45 ] なんつーキモキモ変数名
23 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 18:03:01 ] public List<int[][]> List_POS; List_POS[a] = new List<int[][]>(col_count/2); こんなんコンパイル通らないでしょ List_POSに入るのがList<int[][]> List_POS[a]に入るのはint[][] List_POS[a][b]に入るのはint[]だよ
24 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 18:21:31 ] 0xEDB88320 ^ 0 の演算結果が 0xEDB88320 となるのはなぜ? VB.NETだと1になるんだけど
25 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 18:32:47 ] なぜも何も普通だろ。 VBのほうが謎だ。
26 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 18:38:14 ] >>24-25 VBの^は冪乗、C#の^はビット毎の排他的論理和。
27 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 19:02:40 ] >>26 そうでしたか、ありがとう。
28 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 00:15:19 ] >>23 なるほど rcm.List_POS.Add(new int[col_count / 2][]); rcm.List_POS[a][b]=new int[2]; こういう風に修正したら通りました 二行目もできるかどうか試してみます。
29 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 09:56:34 ] >>28 あんたさ、もっと読みやすさを心がけてかいてよ せっかくオブジェクト指向言語使ってんだからさ このプログラムを保守するはめになったやつのことも考えようぜ
30 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:35:07 ] 3次元配列ってところがダメだよな。 図形クラス作るのが普通じゃね?
31 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 11:36:19 ] コードの読み易い、読み難いってのは オブジェクト指向関係ないと思うよ OO厨なら仕方ないが
32 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 13:10:16 ] 同意
33 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 13:19:04 ] なんで関係ないのかと オブジェクト指向のパッケージ化だけ考えても データと振る舞いを結び付け、可読性を向上してるだろ 納得できる理由を書いてみろ
34 名前:デフォルトの名無しさん [2009/04/05(日) 13:26:25 ] ・継承によるコードの隠蔽,初期化の順番の制約がわけわからんになりやすい ・再利用を謳っているために,同じ"ような"コードがあるか探さないといけない. それを怠ると車輪の再発明の連続 ・目的のために様々な手段が用意されすぎている ・>>33 みたいな奴がOOPLすごいよ!クラスで設計図が継承で再利用!しかも大規模開発に剥いているよ! って幻想を吹き込んでくる
35 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 13:28:03 ] >>33 OOはパラダイムなので「可読性の向上」まではどう考えても含んでいない なのに>>33 が可読性の向上とか言い出している辺りが幻想,ね
36 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 13:45:57 ] OO=可読性の向上ではないが、>>21 のコードが見難く、保守のし難いコードであるのは事実。
37 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 16:55:47 ] 複数台マシンがあって、使用メモリが少ない方で処理を行うようにしたいのですが、 他のマシンの利用可能メモリなどを取得したいのですが、 どのようにしてとればいいのか、教えてくだされ(;´д⊂) Processなら、 Process.GetProcessesとかでとれるんですが。。。
38 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 17:02:07 ] >>37 なんかずいぶん無茶なこと言ってるぞ。 アプリケーションが自前でロードバランスするのか。 もちろん実験ならいいんだけど、背景は何?
39 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 17:11:08 ] >>37 何がやりたいのかさっぱりわからんけど 各々のマシンで動かすアプリがそれぞれのメモリ残量を返すようにすればいいんじゃねーの?
40 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 17:18:47 ] まずはOOじゃなくて構造化プログラミングをば
41 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 18:09:50 ] その前に2chを卒業
42 名前:37 mailto:sage [2009/04/05(日) 18:13:52 ] >>38 ,39 ええっと、説明不足でした^^; 分散処理をしたくて、 本マシンから、重い処理だけを社内LANネットワークにつながった他のマシンで処理させる感じです。 で、その他のマシンっていうのが複数台あり、パフォーマンスに余裕があるものを選択するというものでした。 LANにつながった他のマシンの現在のメモリ使用量などを調べる方法があったら欲しいとおもったのです。 さすがにむりなのかな?^^;
43 名前:デフォルトの名無しさん [2009/04/05(日) 18:15:35 ] >40 構造化で思い出したんです。↓ 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
44 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 18:18:37 ] 宣伝乙
45 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 18:22:07 ] 誰でも知ってるから。
46 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 19:33:31 ] そんな取り回しの悪い複雑なものを作って喜んでるのは初心者くらいなもの 誇らしげに言うようなことじゃない
47 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 19:36:35 ] これはどう見ても釣り ttp://plaza.rakuten.co.jp/u008expert/ こいつに悪意をもつものの仕業に違いない
48 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 19:54:37 ] 何処に書けばいいのか分からんかったんだけど、 DirectoryEntry使ってiPlanetのディレクトリ更新しようとしていて ユーザーとかのプロパティを見る参照は上手くいくんだが プロパティ変更してCommitChanges呼ぶとエラーになる。 ADだと上手くいくんだけど、iPlanetが特殊なんかな。それとも DirectoryEntryがPureなLDAP話さないでAD固有な話し方してるからかな。
49 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 20:11:48 ] >>43 当たり前のことすぎて触れることじゃない。
50 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 20:13:09 ] >>42 #1 > LANにつながった他のマシンの現在のメモリ使用量などを調べる方法 #2 WANにつながった他のマシンの現在のメモリ使用量などを調べる方法 #3 近所につながった他のマシンの現在のメモリ使用量などを調べる方法 そんな複雑なケースに対応するようにAPIが提供されているわけではありません というわけで,マシンの現在のメモリ使用量(?????どんなの想像してる?シングルプロセス,シングルコアなマシンでの使用量?)を取得する のと,TCP/IPかなんか使って通信するものを組み合わせればいいんでねーの?
51 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 20:13:55 ] Dictionary<string,int>をラップして分かりやすいクラスにして さらにList<MyClass>にした方がいいことが多いから List<Dictionary<string,int>>は使われない
52 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 20:14:17 ] >>43 むしろ"abc"[0]とか,トリッキーなコードになってしまうような気がする
53 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 20:33:08 ] >>50 各PCでそういうサービスを立ち上げておけばOKだね
54 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 20:55:29 ] というわけでWMIでリモートのPC参照すれば可能かも d.hatena.ne.jp/seki-moto/20081014/wmi2
55 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 08:03:03 ] C#の本の質問もここでいいのかな? ある程度C#についてオブジェクト指向とか綺麗なコードの書き方含めて載ってる本ないですか? 独習C#か、プログラミングC#がそれっぽい雰囲気出てたんだけど……。 洋書でも可です。
56 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 08:33:42 ] >>55 アマゾンカテゴリランキングの1〜100位探してみろよ
57 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 09:18:36 ] 身も蓋もないなw まああっちはレビューも書いてあるしなあ。
58 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 09:56:42 ] >>56-57 サンクス。 C#クイックブックもよさげかな……。 今度本屋で見て見よう。
59 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 10:05:29 ] レビューはあんまあてにならないだろw
60 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 10:36:11 ] ここでの評価もあてにならんからどっこいどっこいだ うまく本の当り掴めるようになりたいもんだ・・・技術書安くないもんなあ
61 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 10:37:29 ] 図書館おいしいです
62 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 12:17:17 ] 洋書でいいなら、googleやSafariで立ち読みすればいい。
63 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 12:36:24 ] もちろん、座って読んでもOKだ
64 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 14:34:28 ] だがうんこ座りはご遠慮いただきたく。
65 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 15:26:55 ] 例えばLabelを継承した独自のカスタムコントロールで 継承元のTextAlignとかを使う側に見せないようにするとかは簡単に出来ますか? Internalとかで上書きしてやればできそうだけど、なんかスマートでない気がするし・・・ 継承という以上仕方がないとは思っていますが
66 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 15:38:44 ] なんで機能を継承してるのに隠蔽する必要があるの? っていう話に落ち着くぜ
67 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 16:08:04 ] そういう場合って継承するんじゃなくインスタンスをプライベートに持って アクセサを作るのが普通なんじゃない? #言語仕様とは別のデザパタのdelegationって奴になるのか? 継承してるのに使えないとかはOOの性質上無理だと思うけど。
68 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 16:11:45 ] >>66 >>67 ですよね 今作られている既存のカスタムコントロールがそう作られていて大きく変えないようにするにはどうかなと考えていたんですが・・ おとなしく新しく作り直してそっちに変更するように要望をかけるとします。
69 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 17:12:19 ] TextAlignは見えるけど,機能上使えない,っていう特殊化ならアリ
70 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 17:34:53 ] 継承はis aの関係が基本で、決してカスタマイズ/再利用じゃないからね。 継承元で出来る事が継承先で出来なくなるのは有り得ない。
71 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 17:35:33 ] 既存のコントロールを内包してるけど、 別物として扱いたいってことか。 セットされた値を何かしらの方法で計算して表示するコントロールでほとんどラベルなんだけど、 表示されてるテキストは直接書き換えはさせたくないみたいな。
72 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 17:39:20 ] ググったら似たような質問あったよ 件名:[C#]コントロールのプロパティ固定(継承) www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=42032&forum=7 セッターを空のメソッドでオーバーライドして殺してるみたい。 質問の内容自体に対する評価はここと似たようなもんだな。
73 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 17:43:11 ] youtubeとかニコニコの動画のダウンロードってどうやるの?
74 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 17:54:04 ] 一度言ってみたかった・・・ 「ググれカス」
75 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 18:16:56 ] >>55 洋書でいいなら、中国語でいい本がある
76 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 18:18:01 ] グぐってきました・・・で、動画のurlの特定ってどうやるんですか?
77 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 18:23:40 ] >>76 。 。 。 。 。 。 ゚ 。 。゚。゜。 ゚。 。 / // / / ( Д ) Д)Д))
78 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 18:29:53 ] C#に特定した話じゃないなあそれ
79 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 18:35:29 ] ・・・もういいです・・・使えない人たちですね
80 名前:73 mailto:sage [2009/04/06(月) 18:39:47 ] >79 これ誰だよw C#じゃないみたいなんで、他所のスレ探します
81 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 18:43:39 ] 取り敢えず公式見てこいよ。 「正当な」方法でどうやって情報取得するかきっちり書いてあるんだから。
82 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 18:44:58 ] 公式はどこにあるのですか? 教えて下さい
83 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 18:48:53 ] そりゃニコニコやyoutubeのトップから辿れよ
84 名前:73 mailto:sage [2009/04/06(月) 18:53:18 ] >>81 ありがとう調べてみます >>82 だから誰だよww
85 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 18:58:28 ] >>75 中国無理っす
86 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 19:00:20 ] >>80 ,84 いい加減にしてください・・・誰なんですか・・・
87 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 19:07:16 ] これが無職いたのよいところ
88 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 19:16:56 ] ここまで全部俺の(ry
89 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 19:22:05 ] もう私のために争うのはやめて!
90 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 19:29:15 ] WebBrowser Controlでの質問です ttp://domworld.cool.ne.jp/mst/index.cgi?mode=mstinit ↑のページを完全に読み込みたいんですが、javascript?のところで途中で止まってしまいます MessageBox.Show( webBrowser.Document.GetElementsByTagName( "html" )[0].OuterHtml ); でHTMLを表示してもソースと違っていてどうにもなりません 対処法があれば教えてください あとソースとwebBrowserのhtmlが違う理由をわかる方いたら併せてお願いします
91 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 20:07:24 ] 違っていてってどう違ってるのかぐらい教えてくれよ。 User-Agentあたり見て出力内容わけてたりしてな。
92 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 20:13:43 ] >>90 ううむ。折れんところで試してみたが、一応完全に?読めたけど。
93 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 20:15:57 ] >>90 > ソースとwebBrowserのhtmlが違う理由 ブラウザがパースしたDOMをテキスト表現にしているからだとおも
94 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 20:54:33 ] >>91-93 さん レスありがとうございます 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/
95 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 22:15:40 ] >>94 がんばればできる。
96 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 14:17:00 ] 現在大体100μs単位で動くタイマーを作成しているのですが、別スレッドからControl.BeginInvokeでコントロールを 操作する際に、そこで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を実行したいのですが…
97 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 16:04:51 ] とりあえず俺の環境では起きないんだが
98 名前:96 mailto:sage [2009/04/08(水) 17:32:32 ] >>97 こちらでは、スクロールバーの右の矢印部分を連打(結構なスピードで)すると簡単に発生するのですが… スクロールバーの描画が破綻した後、右矢印部分になぜか点々(サイズ変更可能なウインドウに表示されてたり するアレ)が表示されます。 こうなると、スクロールバーは完全に機能しなくなり、スクロールバーのあった部分は再描画が無効になります。
99 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 18:07:52 ] >>98 俺も結構な速度でやってみたんだけどな それこそクリックしたら画面の女の子脱ぎますよと言われたくらいの速度でw ほぼ同じ環境の後輩に同じことやらしてみたけど症状が出てない 一応環境 VISTA BUSINESS SP1(エアロ有効) VS2008 Professional上でデバッグ実行
100 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 18:23:43 ] >>97 のPCで問題を再現するには超人的なスピードでの連打が必要なんだよ、きっと。 >>98 こういうケースでは、スリープを追加するなどして "連打" ではなく、一回のクリックで問題を再現させることを目指すと、原因がわかったりするよ。 例えば、DoEvents()の後にThread.Sleep(100);と書き、スクロールバーを右クリックしてみるといい。 運良くこっちと似た環境ならば、100%の確率でスタックオーバーフローするので スタックトレースを見れば原因がわかるはず。
101 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2009/04/08(水) 18:25:08 ] >>98 ディスプレイドライバのせいだったりして ハードウェアアクセラレータ無効にすると治るとかない?
102 名前:96 mailto:sage [2009/04/08(水) 18:44:52 ] >>99 こちらでは速めのダブルクリック程度の速度でも発生するのですが… こちらの環境は Geforce 9600GT 512MB XP 32bit VS2008 Pro です。 >>100 スタックオーバーフローするのは、BeginInvoke内でdoEventがtrueになる前に何度もBegineInvokeが 実行されてしまうのが原因でした。これについては、Invokeの前にdoEventをtrueにすることにより解決できましたが、 スクロールバーが壊れるのとは別問題のようです。 >>101 ハードウェアアクセラレータは切ってみましたが、特に関係があるわけではないようです。 ドライバも最新のものにしてみましたが、改善しませんでした。
103 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 20:38:21 ] ほんとだうちの環境でも壊れたぞ。
104 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 21:12:13 ] >>102 うーん。自分の環境だと再現しないので勘になっちゃうけど。 DoEvents でもたぶん BeginInvoke なキューを処理する気がするから このコードだと一度間に合わなくなればそれより優先度の低いメッセージは まったく処理されなくなる希ガス あとそもそも精度 100μs なんて無理って話は突っ込んでおいたほうが いいのかな
105 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 21:35:32 ] >>96 環境によって差が出てるということは、 Control.BeginInvokeの発行間隔が処理時間より短いせいだと思う。 前の処理が終わらないうちに次のBeginInvokeが実行されないようにするか、 同期型のControl.Invokeにする。 あとはDoEventではなくpictureBox1.Updateを使うべきだろう。
106 名前:96 mailto:sage [2009/04/08(水) 22:10:18 ] >>104 ,105 それだと、タイマーのインターバルをゆっくりにすれば発生しないはずですが、それでも発生しますし、 インターバルが短くても、Application.DoEventsを取り除くと発生しなくなります。 また、フラグを立てて(バグってたけど)同時に何度もBeginInvokeされないようにはしているので、 >>102 の通り、別問題な気がします。 >>104 >>100 μsなんて無理 確かに精度はよくないのですが、実際に使うときには最短で200μs程度のインターバルで使用するので、 その間隔で使用する分には何とか使用できる程度の精度は出るようです。 >>105 このサンプルでは、画面の更新しかしていないためそれでもいいのですが、実際はボタン操作や テキスト操作なども反映させるため、Application.DoEventsを使いたいのです。
107 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 22:29:01 ] DoEventsでやらずに、ピクチャーボックスのInvalidateメソッドを実行し、 描画はImageプロパティは使用せずに、Paintイベントで描画するようにすれば? GraphicsオブジェクトはPaintイベントの引数eにe.Graphicsがあるからこれを使用して描画する
108 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 22:31:40 ] テキスト操作も更新するときはそいつのInvaridateを実行。 DoEventsはプロセスすべてのイベントを処理するから重いんだよ。
109 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 23:03:36 ] μsはmsの間違いだと思う。
110 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 23:34:43 ] 排他とかInvalidateでの再描画とかいくつか考慮は必要なのだが、 この方法でいけるはず。 基本は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();
111 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 00:08:41 ] >>96 なんか分かってるのか分かってないのかよく分からんコードだな、というのが率直な感想。 なぜそうしているのか理由や必然性がわからない部分が多すぎる。 ちょっとVB上がりのコピペプログラマの臭いがする。 つーか、せいぜい70hzでしか更新されない画面をusオーダーで更新して(そもそも不可能だけど) なんか意味あるのかなw
112 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 01:04:43 ] >>110 テキストの更新をするだけならInvaridateで十分なのですが、ボタン操作やメニュー、ショートカットキー等々の UIの操作を行った際に発生するイベントを処理するためにDoEventsを差し込んでいます。 そういう意味で、ボタン操作やテキストの更新と書きました。 >>111 VBの方はほとんど触ったこと無いですw 実際に使用する際には画面更新中に発生したTickの回数分だけ処理をとばすようにはするのですが、 その前にタイマーがちゃんと動作するかどうかを確認している際に発生したのがこの現象です。 サンプルの方はDock.Fillなはずのコントロールがリサイズできてしまうということを確認してもらうために 余計にコントロールを追加していたり、タイマーが回っているのを視覚的に確認するために画面更新していたり しますが、実際にはウインドウにHScrollBarを貼り付けても発生しますし、TickのDrawを中身空っぽのforを 10万回回した後にDoEventsするだけでも発生します。
113 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 01:13:01 ] どんなに Interval の数値大きくしてもCPU使用率が上に張り付くんだけど 本当にこれで処理大丈夫なの?
114 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 01:29:36 ] >>112 あほな自家製タイマーがメッセージループを占有しなければ、 >UIの操作を行った際に発生するイベント はdoeventsなんか呼ばなくてもちゃんと処理されるのだけどね。 メッセージループ経由でのUIの更新は動画のような短時間での更新向きではない。 なんかWin3.1のころのメッセージループのアイドルにバックグランド処理をやらせる のを念頭に置いたりしてないか。
115 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 02:46:55 ] マイクロ秒とかそもそもリアルタイムOSじゃないWindowsには過酷すぎる要求ではないか
116 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 09:13:24 ] >>112 ちょwww スレッド分けてる意味のないコードになってるってことじゃないのか…・
117 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 09:16:13 ] >>112 valid Invalid Invalidate な 2回以上同じところを間違えると馬鹿みたいだぞ
118 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 09:50:34 ] 根本的にわかってないようだな
119 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 11:49:46 ] vb触った事無いらしいが 作りこみがVBにしかみえない
120 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 12:17:54 ] VBっぽい作り込みとC#っぽい作り込みって具体的に どの辺が違うんですか?素で気になります。 初心者の書き方っぽいだけでVBが悪いわけじゃないのか VBを使うと必然的にそうなるのかよく分からない。 もしかして.netのVBを指している訳じゃない?
121 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 13:26:42 ] VB6っぽいというべきだろうな。 .NETでDoEventsを使っているなら9割がた間違った使用法と考えるべき。 何のためのスレッドかぜんぜん理解していないようだし、 Control.BeginInvokeが何をしているかも理解してないな。
122 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 17:33:25 ] 誰かFormとマルチスレッドとConrol.BeginInvokeについて説明してやれよ
123 名前:96 mailto:sage [2009/04/09(木) 20:24:27 ] >>121 ・Application.DoEventsは、処理中に発生したイベントをすべて処理する ・スレッドは重い処理などをバックグラウンドで処理させたり、処理を並列して行うことにより高速化を図る ・Control.Invokeは別スレッドからのUIの操作をUIを持つスレッドに行わせ、BeginInvokeは処理の完了を 待たずに制御を戻し、処理の状況を確認するためのIAsyncResultを返す と理解しているのですが、違うのでしょうか? もし違うのであれば、参考となるページでもいいので教えていただきたいのですが…
124 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 20:26:59 ] そこまでわかってれば、DoEventsを使う必要には迫られないはずだが
125 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 23:46:32 ] >>123 VB6はバックグラウンド処理用にスレッドを自由に起動できなかった。 全部の処理はUIスレッドで実行するしかなかった。 だからビジーループ的な処理があると、それを実行している間はUIが 必然的に応答できなくなる。(だってその処理は、プロセス中の唯一のスレッドである UIスレッドで実行しているのだから。) その問題をやり過ごす(根本的解決ではない)ためにDoEventsは使われた。 ビジーループの中でDoEventsを実行してやると、その時点でキューにたまっていた ウィンドウメッセージが全て処理される。つまりユーザー目線では、UIが操作に反応する。 自由にスレッドを起動できるドトネトではわざわざUIスレッドでビジーループを 書く必要がないから、わざわざApplication.DoEventsを使用する理由は普通ないはず。
126 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 00:05:44 ] >>123 バックグラウンドのスレは高速化じゃなく、ユーザへのレスをよくするのが目的では?
127 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 00:59:33 ] マルチコア(CPU)なら、マルチスレッドは高速化に寄与するよ。
128 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 01:48:03 ] もちろん、複数スレッドで同時に仕事をやらせればの話だけどね。
129 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 01:54:50 ] そもそも、高速化 = レスポンスとスループットの向上 と考えれば間違ってないでしょ
130 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 01:58:00 ] レスポンスとスループットはトレードオフになることが多いよ。
131 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 02:26:08 ] やりかたによるけど反応返ってこなくなるもんな。
132 名前:96 mailto:sage [2009/04/10(金) 02:37:10 ] >>125 では、今回のように別スレッドからBeginInvokeなどが連続して呼ばれて結果的にビジーループ のようになってしまうような処理の場合、どのようにしてイベントを処理すればいいのでしょうか? タイマーの精度をあきらめる(そもそも無茶らしいですが)として、 while (!abort) { while (doEvent && !abort) { Thread.Sleep(1); } ... Thread.Sleep(1); } としてもTickの内容が重たいとビジーループになってしまうのですが… ここまでするくらいならSystem.Windows.Forms.Timerかなんかを使ってTickで処理時間分Intervalから引いていった方が いいような気もしますがw
133 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 02:41:48 ] UIに限って言えば UIが属していないスレッドがいくらビジーループになっても構わないのでは? あと草が邪魔
134 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 09:00:49 ] よくわからんけど、多重呼び出しにならないよう待たせるか、 呼び出す度に重い処理のスレッド作るとか
135 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 09:23:03 ] どうせDOEVENTやってんだから普通にInvokeでやってみれば? そんな重そうな処理でもなさそうだし Invokeの中身を高速化するために、画像を先に作っといてInvokeで呼び出されている関数内で転送するだけにするとか 以上ド素人の意見でした。
136 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 10:29:34 ] そもそも96はどんなソフトを作ろうとしてんだ?
137 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 10:48:24 ] CodeDomProvider.CompileAssemblyFromSource() でソースを動的にコンパイルした場合、そのソースの中から アプリ本体のクラスを使うことはできるのでしょうか?
138 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 10:55:39 ] >>137 普通に出来るでしょ 参照アセンブリに追加すれば コンパイルする前に参照するアセンブリをロードしなきゃいけないんだったかな 適当にそのアセンブリのクラスを使えばロードされる
139 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 10:59:48 ] >>137 CompilerParametersに参照をしたら出来るんじゃなかったっけ? よく憶えてないけど
140 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 11:13:08 ] >>132 わざわざdoevents使うなんて 実質シングルスレッドで動かしてますよと公言するよーなもん
141 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 19:58:48 ] >>132 言ってることがよく分からないんだけど、 例えば仮に1msの処理時間が必要な処理があるとして、 この処理を同一のスレッドで1ms未満のインターバルで繰り返すことは 太陽を西から昇らせる以上に不可能だ、というのはOK? 失礼だがなんかこのあたりの当たり前のことを理解してない気もするんだが。
142 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 20:30:55 ] >>141 まずその処理が1msで終了するのか勘定してみるといい。 スレッド起動から勘定するんだぞ。
143 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 20:57:31 ] >>142 ?
144 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 21:09:47 ] >>142 ??
145 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 21:13:00 ] >>142 ???
146 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 22:32:31 ] UIスレッド以外からUIを操作すると壊れるってのも理解してないような気がする
147 名前:137 mailto:sage [2009/04/11(土) 01:44:04 ] >>138 >>139 CompilerParameters.ReferencedAssemblies.Add("EXEファイル名"); でできました。ありがとうございます。
148 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 04:43:38 ] ComboBoxコントロールなんですけど ドロップダウンの表示幅を表示するテキストに合わせて伸縮させることは難しいでしょうか
149 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 08:12:32 ] オーナドローでググれば一撃
150 名前:96 mailto:sage [2009/04/11(土) 12:52:55 ] >>133 >>132 で言ってるのは、別スレッドからTick終了後に間隔を開けずにまたTickが呼ばれるため、結果的に UIを持つスレッドがビジーになってしまう、ということです。 >>141 そこについては理解しています。 上の方にも書きましたが、BeginInvokeが何度も呼ばれないようにフラグを立てています。 ですが、 Tick Tick ├───┤ ├───┤ ├─────┤├─────┤├─────┤... インターバル ↑ インターバル ↑ インターバル ↑:Tick呼び出し となればTickとTickの間にほかのイベントを処理することが可能なのですが、今回の場合 Tick Tick ├─────────┤├─────────┤ ├─────┤├─────┤├──┤├─────┤├──┤... インターバル ↑ インターバル 待機 ↑ インターバル 待機 となってしまい、結果的にUIスレッドがビジーになってしまうため、ということを言いたかったのです。 わかりにくくてすいません。 >>146 BeginInvokeやInvokeでUIを持つスレッドに処理を任せても壊れてしまうのでしょうか? 別スレッドからUIを直接操作すると壊れる、ということは実験したことがあるのですが…
151 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 12:55:05 ] >>150 結果的にUIスレッドがビジーになってしまうため、 → × 結果的にUIスレッドがビジーになってしまう → ○ です。
152 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 13:44:31 ] あんたはどんなアプリを作ろうとしてんだ
153 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 15:00:31 ] >>96 =150=151 まず、設計が滅茶苦茶。原因は知識不足にあるのは明白なので、 勉強しろ(ここで問答しても埒が明かない)としか言えない とりあえず、コードの不備だけ指摘すると、 UIスレッドでdoEvent=trueにしてるから、BeginInvokeが複数回呼ばれる可能性がある タイミングによって、上記が全て完了する前にdoEvent=falseになっていることがある その場合、更にBeginInvokeが複数回呼ばれる で、暫くすると...\(^o^)/
154 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 15:34:36 ] >>149 遅くなりましたけど、ありがとうございました。 オーナードローでいろいろ調べてやってみます。
155 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 15:44:18 ] doEventフラグがlockまたはvolatileで宣言されてない。 それにdoEventはBeginInvokeする前に設定しなきゃいかんだろ。 もっと言えばInvoke使えばフラグはいらない。
156 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 15:52:22 ] もひとつ、BeginInvokeでBitmapに描画、PictureBoxに設定、DoEventsの呼び出しを やってるわけだが、Bitmapの描画はスレッド側、 つまりBeginInvoke呼び出し前に処理していいだろう。 何のためのスレッドだよ。BeginInvokeの中身は軽くしなきゃ。
157 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 16:00:08 ] >>153 > UIスレッドでdoEvent=trueにしてるから、BeginInvokeが複数回呼ばれる可能性がある その点については、本人は治したと言ってるが、本当に治っているかどうか怪しいな
158 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 16:15:55 ] アニメーションを表示するのにpictureboxを使うものなのか? 直接スクリーンに描くにせよ、イメージにいったん描いて画面に転送するにせよ、 普通はPanelか何かにGraphices#drawImageを使うぞ。 そうすればControl.Invoke自体いらなくなる。
159 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 16:20:26 ] 普通はOnPaint、Invalidate、Updateを使うだろうな ただし、バックグラウンドで生成した画像を表示する必要があるなら PictureBoxを使ってもやってることは変わらないかも
160 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 16:25:47 ] >>159 動画のようなアニメーションにOnPaint、Invalidate、Updateはつかわんだろう。 はなはだ効率が悪いのに。
161 名前:96 mailto:sage [2009/04/11(土) 16:41:50 ] >>152 C#の勉強もかねて自分用の動画編集ソフトを作成しています。 >>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にイメージをセットするのは ほとんど変わらないものだと思っていたのですが…
162 名前:96 mailto:sage [2009/04/11(土) 16:48:26 ] これだとさっきと言いたいことが変わってる orz >>156 の部分の追記 ただ、ファイルアクセスがネックになってイメージの生成が遅れた場合に>>150 の図のようになってしまうので、 これについてもどうにかしたいのですが…
163 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 16:50:27 ] アプリ見て大体想像していたが、動画編集アプリかよw だったら、100マイクロ単位のタイマーなんてぜんぜん必要ねーじゃねーかよ。 なぁ、どっからマイクロ秒なんてものが必要と思ったんだ?
164 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 16:55:16 ] DirectShow使えばいいじゃん・・・
165 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:11:58 ] もうそこまでやるならDirectX使うべきだな
166 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:15:52 ] WinFormsでリアルタイムで動画イメージ生成して描画とかさすがにありえんわ
167 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:16:04 ] 勉強にケチつけないでいただきたい
168 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:23:40 ] >>167 偽物乙w >>165 DirectXにあまり期待してはならない。 しかも自分しか使わないソフトならいざ知らず、 ビデオカードによってはアレだ
169 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:37:22 ] 偽者とは違う 偽装するなら名前欄に番号でも入れるよ
170 名前:96 mailto:sage [2009/04/11(土) 23:38:53 ] >>163 30fpsで1フレーム辺り33.333...msで、再生していると徐々にずれてくるかなと思ったのですが、 どうにか100μs単位まで行かなくてもいけそうになりました。 ただ、どちらにしてもやり方的には変わらないので、根本的には解決できてないです。 >>164 DirectShowは、DirectShow.NETを触ったりしましたがさっぱりわかりませんでした。 いろんなDirectShow関連のサイトも行ってみましたが、全く歯が立ちませんでした orz >>165 DirectXや3Dは全く触ったことがなく、調べてみるとほとんどC++みたいなのですが、 .NET上から触ることはできるのでしょうか?
171 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:44:32 ] >>170 managed directx
172 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 00:13:36 ] あのさ、編集ソフト内での再生ズレを考える必要ないの。(程度によるのは当然) わかる?編集ソフト内での再生は映像と音声の同期さえあってれば適当な再生速度で十分なわけ。ミリ単位で十分なわけ。 そもそもあんたはマイクロ秒のズレなんてわかるんかよ。 ミリ秒単位でやったとしても1時間のもので40秒しかズレねーんだよ。 ファイルさえきっちり作成できればいいの。 後は、再生ソフトの役目なんだよ。
173 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 00:18:50 ] >>172 まあまあ。 それはそのソフト作る側の考え方によるだろ。 自分がそういうふうに作れって言われたわけじゃないんだからおちつけ。
174 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 00:22:16 ] これが落ち着かずにいられるかって!
175 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 01:11:12 ] >>170 そうか? サンプル分かり易いと思うし、それにCodePlexにTimeLine.NETとかSplicerとかいった編集用のライブラリとかある。
176 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 01:17:58 ] >>172 納期が決まってるとか予算が決まってるならともかく 趣味レベルなら別にかまわんのじゃ? 編集ソフト内の再生ズレ、なくせるんだったらなくした方がいいと思うし。
177 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 08:15:18 ] C#の勉強もかねて・・・・ そういえばみんな言語始めるとき勉強はなにからやってるんだろう 俺は新しい言語をやる時に 画面のコントロールの簡単な使い方 標準的なファイルの入出力 簡単な入力チェック系 データベースの 接続・追加・更新・削除 位からやってる あとはWEBかクライアントに合わせて色々やること増えるけど
178 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 08:33:54 ] またHello Worldからかよorz
179 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 10:15:50 ] 昔よくやってたのはラインアート作るとか。 今時だと、>>177 で出てるネタを押さえるようないいサンプルアプリが欲しいなぁ。
180 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 11:39:50 ] 俺の場合は、初めに電卓、次にタイマー等が用意されてるなら、 テトリスやリバーシみたいな簡単なゲームを作る事にしてる。 ある程度、実用 ( 娯楽 ) 性があるものを作成すると、理解が早い気がする。
181 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 12:35:22 ] たしかに作ってて多少モチベが上るようなのじゃないと だれるもんね。 Web サービスのクライアントなんて 結構実装簡単だし、すぐ使えるからよさげじゃない? REST API 公開してるサービスめちゃめちゃ多いし。
182 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 13:54:16 ] >>170 徐々にずれるのが嫌なら再生開始時からの経過時間を使って、 間隔を調整すればいいだろ。
183 名前:96 mailto:sage [2009/04/12(日) 14:26:29 ] >>172 >そもそもあんたはマイクロ秒のズレなんてわかるんかよ。 30fps時の端数分(333μs)ずつずれていくと、100フレームほどで1フレーム遅れる計算になります。 数秒再生して1フレームも遅れるのは結構致命的だと思うのですが… >>175 C++やDirectX、COMを触ったことがないからだと思いますが、何が何だかさっぱり… ISampleGrabberからIBaseFilterへとか、継承しているわけでもないのになぜキャストできるのでしょうか? 同じメソッドを実装するだけでキャストできるのかと思い、テスとしてみたのですが当然できるはずもなく。 Splicerはおもしろそうですね。 >>182 現在はTickが呼ばれるたびに誤差を計算して次に加算するように変更したので、多分μs単位で いじらなくてもあまりずれないようにはなっていると思います。
184 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 17:54:19 ] >>161 >OnPaintやControl.CreateGraphicsで直接描画するのとPictureBox.Imageにイメージをセットするのは >ほとんど変わらないものだと思っていたのですが… Control.CreateGraphicsを使えば別のメソッドから使えるというのがメリットなのよ。 GUIはGUIスレッド以外から扱ったらいけないと思い込んでるようだけどこれは例外。 つまり、メッセージループを使ったりBeginInvokeを使ったりする必要がない。 メッセージループのことは気にせずに、 独自のスレッドで連続して処理問題ないということ。(普通はプライオリティを若干下げてやる。) OnPaintやPictureBoxなどに処理を任せるのは画面が無効になったときの再描画の処理を やってくれるからであって、短いサイクルで描画を繰り返す場合は、その必要性がない。 Control.CreateGraphicsを使えばInvalidateやUpdateを呼ばなくても指定したタイミングで描画することが出来る。
185 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:18:43 ] >>184 そんなトンデモ説を得意げに言っちゃだめw 最初の行の「別のメソッドから」は「別のスレッド」と言いたかったんだろうが、 そんな話見たことも聞いた事もない。 Control.CreateGraphicsを使う場合のメリットは、Invalidate⇒OnPaintという 通常の処理に比べてオーバーヘッドが少ないことなんじゃないの? 逆にデメリットは、描画処理を呼ぶトリガーをOnPaintに一本化できないことでしょ。 もっとも、>>96 のように短い一定時間ごとに必ず描画するのならダーティー化 された場合のことを考えなくていいからデメリットと言えないんだろうけど。
186 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:30:05 ] 一応、Control.CreateGraphics はスレッドセーフだと言っておこう
187 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:36:55 ] >>186 すまん確かにそうだったw グラフィック関連長いこと触ってないんで忘れてたよ。
188 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:13:37 ] >>96 に最小限の修正を加えてろだに上げてみた。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9025.txt 注、Stopのときの再描画処理としてpicturebox1にPaintイベントを追加している。
189 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:55:18 ] 188です。lockの位置を間違ってた。 複数のスレッドからimageを使うことになるので、 lockはvoid Draw(int rad)全体にかけたほうがよかった。 だた、startフラグで制御してるのでただし実行に影響はないはず。
190 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 17:01:47 ] WinアプリでDataGridViewの行を大量に追加・削除するときって SuspendLayoutとかの呼び出しをやった方がいいんだろうか? 位置を移動させるとかの場合は効きそうだけど今一歩やるべきかどうかの判断がつかないんだが・・・ 今はおまじない的にやってるけども
191 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 21:34:50 ] データソースをViewから切り離してから追加・削除すると速いかも
192 名前:デフォルトの名無しさん [2009/04/14(火) 20:34:17 ] これ見てみw 国会の無駄な手当てでお手盛り人件費じゃぶじゃぶの実態w この経済危機に税金をなんでこういう公務員、国会職員に税金くれてるの? ↓ 衆議院議員 渡辺周氏「呆れ返る国会のムダ呆れ返る国会のムダ」 www.choujintairiku.com/watanabes.html 内閣の閣議でどれだけお手盛り大盤振る舞い、浪費が行われているかわかるね。 これが自民党−麻生内閣の実態!!
193 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 20:39:03 ] >>192 text/plainでくれ
194 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 21:25:00 ] なんだかんだで結構親切に教えてくれるおまえらが好き。
195 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 21:26:06 ] どういたしまして 分からないことがあったらまたおいで がんばってね
196 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 22:06:03 ] ありがとう。 いつかは教えられる側にまわれるよう精進します。
197 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:00:27 ] 今、クライアント(C#)-WCF-サーバ(C#)-SQL Serverなアプリケーションを作って いるんですが、クライアントからデータを検索する必要があります。検索条件 によっては、戻り値のデータが数万件になることもあります。 そこで、WCFのバインディングのmaxReceivedMessageSizeを大きくして対処 しようと思ったのですが、途中でキャンセルできる必要とサーバのメモリを 節約する必要が生じました。 どのように実装するのがいいでしょうか? 現在の処理) 1. クライアントが検索条件を指定してサーバを呼ぶ 2. サーバは検索条件によって、SQL Serverの複数のテーブルを検索し、複数 レコードからオブジェクトを組み立てる 3. オブジェクトの配列(やツリー構造)が出来上がったらクライアントに返す 案) 1. サーバはDataReaderでデータベースを検索しているので、一定レコード数 ごとに結果をクライアントにレコード単位でコールバックする。オブジェクト はクライアント側で組み立てる。 2. DataReaderからデータを読みつつ、一定オブジェクト数ごとに結果をクラ イアントにコールバックする。ただし、各オブジェクトの大きさはそれぞれ違 うので、オブジェクトの数ではメモリ使用量は計れない。 3. クライアントでデータ取得依頼だけして、数秒おきにサーバに結果を取りに 行く。 4. 戻り値はStreamとし、オブジェクトが出来るたびにStreamにオブジェクトに 入れ、クライアントはそのたびにオブジェクトをデシリアライズする。ただし、 DataReaderを読みつつStreamにオブジェクトを入れる方法がまだ分かってない。 よろしくお願いします。
198 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:06:00 ] 普通に API (鯖側)のほうでページングに対応すれば?
199 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:15:40 ] どっちも非同期で実装すればいいんじゃね?
200 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:18:27 ] >>198 ページングとは、 1. クライアントで検索依頼 2. クライアントから1ページ目要求 3. データがなくなるまで、2をnページ繰り返し ということでしょうか? サーバで全データをメモリに読み込むことは出来ないので、データベース上に 昇順でユニークなIDが必要になるという理解であってますか?
201 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:20:07 ] SQL で指定できるでしょ。上限件数
202 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:21:31 ] >>199 すみません。具体的に御願いできますか?非同期でクライアントから依頼して サーバから非同期でコールバックするという意味でしょうか? だとすると>>197 の案1, 2ですよね
203 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:23:35 ] WCF でのサービスメソッド呼び出しを非同期にする。 サーバーでのクエリ実行を非同期にする。 で、適宜タイムアウト。件数が多すぎるとき? シラネ。
204 名前:201 mailto:sage [2009/04/14(火) 23:23:55 ] あー、説明不足かもしれんので一応。 TOP 句 ttp://msdn.microsoft.com/ja-jp/library/ms189463.aspx ROW_NUMBER 関数 ttp://msdn.microsoft.com/ja-jp/library/ms186734.aspx
205 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:25:22 ] >>201 上限件数は指定できます。ただ、最初の件数以降の次のデータを指定するのは 難しい状況です。ユニークで昇順なキーがないので。 データが多いからといって、途中で検索をやめてしまうのはだめです。 ただ、サーバがメモリ不足で落ちるのは駄目ですが、クライアントがメモリ不足 で落ちるのはまだ許容範囲です。
206 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:28:13 ] ダメです、とか、なんでえらそうなの?
207 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:30:37 ] >>204 ROW_NUMBER知りませんでした!!使えそうですね。ちょっとこれから調べてみます。 >>206 申し訳ないです。エラーで結果が出ないのはいいのですが、結果が正しくないの は一番やってはいけないことなので、あのような書き方になってしまいました。
208 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:31:17 ] >>205 TOP でも 3 回(だっけ?)組み合わせればここからここまでっての 一応できるんだよ。 まぁ天啓にあった某関数と同じ機能な ROW_NUMBER サポして くれたからこれでよくなったけど
209 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:58:26 ] カーソル付きのDBMSならHTTP鯖のセッション情報にカーソル情報書き込んでしまえばいいと思った
210 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 00:08:13 ] >>209 なるほど。
211 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 21:30:23 ] OLAPに対応してるのってMSSQL2008からだよね。 大丈夫かな?
212 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 22:49:05 ] 質問失礼します。 タスクトレイに格納した状態で再生できるサウンドAPIを探しています。 再生させる際、タスクトレイに格納された状態で、ボリューム調整を行いたいです。 始め、System.Media.SoundPlayerを利用したのですが、音量調整ができませんでした。 次に、Microsoft.DirectX.DirectSound.SecondaryBufferを利用したのですが、タスクトレイに入った状態では再生できませんでした。 上記には勘違いがあるかもしれません。 その点の指摘も含め、分かる方よろしくお願いします。 開発環境: VisualStudio2008 WindowsXP
213 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 22:56:04 ] なんで既にタスクトレイさんがわるものなのぉぉおwwww
214 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:03:29 ] SetCooperativeLevelが不適切なだけじゃね?
215 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:07:58 ] ありがとうございます。 協調レベルは真っ先に疑いました。 CooperativeLevel.Normal CooperativeLevel.Priority CooperativeLevel.WritePrimary 全部試しましたが、ダメでした。。。 フォームを表示すると鳴るんですけど、何故でしょうね。。。
216 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:14:06 ] SetCooperativeLevel(this, CooperativeLevel.Priority); 今このようなコードを書いています。 thisがいけないんですかね? 表示しているのはフォームではなく、NotifyIconですからそのownerを指定??? う〜む。やっぱり分からないです。。。
217 名前:212 215 216 mailto:sage [2009/04/15(水) 23:29:32 ] すいません。 自己解決しました。 BufferDescription の GlobalFocus を true にする事で鳴りました!
218 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:31:14 ] なーんか似た内容の人が居たらしい hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200511/05110065.txt
219 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 16:45:54 ] 指定したアセンブリのプロセッサアーキテクチャを調べるにはどうすればいいでしょうか? VS2008で参照を追加したとき.csprojに processorArchitecture=x86 などと書かれる情報のことです。 ildasmでマニフェストは見てみたのですが、それらしき情報は見つからなかったです。 よろしくお願いします。
220 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 05:03:44 ] プログラムでやるなら、Assembly.ReflectionOnlyLoadFromで読み込んでAssemblyName.ProcessorArchitectureで
221 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 20:13:06 ] なんかプロジェクトの規模が大きくなるにつれてIDEが激しく重くなるんですが どうしようもないんでしょうか? といってもたかだか*.csファイル数126個、全45109行なんですが。 ユーザーコントロールも10個くらい作ってますが、それも関係してるのかな。
222 名前:デフォルトの名無しさん [2009/04/17(金) 21:33:29 ] exeとは異なる任意のフォルダにdllファイルを置きたいため以下のプログラムを書きました。 (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(); } } }
223 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:41:29 ] 参照設定で追加していないのでメタデータを参照できないのが原因 と思う。
224 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:41:44 ] 自分で言っているように「WidgetLibrary.Widgetの名前が解決できないので」だろ。
225 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:45:01 ] >>222 任意のフォルダにDLLを配置するのが目的なら、GACに登録した上で参照設定するのが王道。 .NET Frameworkに含まれるDLLは、ローカルコピーしなくても参照できるだろ。 それは.NET FrameworkのDLLが特別扱いされているわけじゃなくて、それらが GACに登録されているから。 自作のDLLもGACに登録すれば同様に扱える。
226 名前:デフォルトの名無しさん [2009/04/17(金) 21:58:34 ] レスありがとうございます。 >>223 参照設定を追加するとプライベートアセンブリになってしまうので回避したいのです。 >>224 解決策でした。 >>225 GACに登録せずに任意のフォルダに置くことは不可能ということでしょうか?? このソースは C# 3.0 IN A NUTSHELL の558ページのコードを確認したくて 書いたものです。
227 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 22:20:42 ] あの本の綴じ込みはすごくいいね 洋書は製本がイマイチなのが多くて困る
228 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 22:28:17 ] 参照しているアセンブリのプロパティでローカルコピーをオフにすればよい と思う。
229 名前:デフォルトの名無しさん [2009/04/17(金) 22:43:09 ] >>228 できました。 どうもありがとうございました。
230 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 23:57:22 ] GACって何のことか全く知らない俺が、ぐぐる前に適当に妄想してみる。 GACとは、Global Assembly Cacheの略で、システムワイドに.NETのアセンブリを 登録しておくキャッシュ。概念としてはUNIX系のOSでldconfigすると、システム ワイドに利用するダイナミックライブラリがld.soに登録されるのと似ている。
231 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 05:25:56 ] >>230 おまえgoogle先生だろw
232 名前:デフォルトの名無しさん [2009/04/18(土) 13:04:23 ] 1.1のContextMenuって、MenuItem.CloneMenuを使用して 状況に合わせたコンテキストメニューを作れみたいになっていたと 記憶してるんですが、 ContextMenuStripだと、ToolStripMenuItemにCloneMenuがないので、 これはどう解釈したらいいんでしょうか? デザイン時にパターンの数だけ作り付けのContextMenuStripを 用意しとくんですか?
233 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 20:48:31 ] Timerで回しているときにint(値型?)の配列が画面最小化すると消えてしまうのですが 残しておきたいです どうすればいいのでしょうか?
234 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 20:52:43 ] >>233 それだけで回答すると、 そりゃあんたの作り方次第としか言いようがない。
235 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 21:02:42 ] >>234 作り方が悪かったですorz OnActivatedを初めてFormが表示されるときにだけ呼ばれると勘違いしてました…
236 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 22:06:35 ] それなんてLoadイベント
237 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 22:51:48 ] 例えばZキーが押された状態でAを押してもOnKeyDownが発生しません。 これをZキーが押されている時にAが押されていることを知りたいのですがどうすればいいでしょうか?
238 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:06:29 ] e.Handled = true;でいけました
239 名前:デフォルトの名無しさん [2009/04/18(土) 23:12:15 ] 先日、C言語の勉強を始めた者です。まだまだ参考書の始めの方なのですが、エラーが起きてよくわからないことになってしまいました。 いまだにキーボードから数値を入力させて、それを表示する程度のものの自己流改変なのですが、なぜか二つ目を入力した後にエラーが起きて止まってしまいます。 それと、途中でプログラムの流れを止める方法がわからないので、それも出来れば教えていただけませんでしょうか? とりあえず理想としては、エンターを押してからもう一度押す迄 変数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);
240 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:13:35 ] >>239 すれ違い
241 名前:デフォルトの名無しさん [2009/04/18(土) 23:13:52 ] printf("最初の整数は %d ですよね?",PS); ; printf("そして次は少数一回目は %f ですよね?",PS2); ; printf("そして最後は、 %f となっておりますよね?",PS3); ; int red; printf("最後に、面白いものを見せましょう。適当に数字を入れてエンターを押してください。"); scanf("%d",red); printf("exeファイルのダブルクリックをしていなければ、適当に入れてもらった数字を足した数を「%d」内に表示しておきます。では、さようなら。",end + red); return 0; } 最後のprintf()が終わっても自動的に閉じないようにするには、いったいどうすればいいのでしょう?
242 名前:239,241 [2009/04/18(土) 23:15:53 ] 申し訳ございません。 スレ名をチラっとしかみていませんでした。本当に申し訳ありません。
243 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:36:08 ] C#ってヘッダーファイルが無いのか。 変な言語だな。 C#って手続き型のプログラムができないのか。 不便な言語だな。 C#って関数に省略可能な引数を使えないのか。 代替手段としてオーバーロードしないといけないのか。 馬鹿げた言語だな。 C#ってswitch文でbreak無しで下に降りることができないのか。 気が狂ったような言語だな。 それと、0かそうでないかを評価できないのか。 初期化する前の不定値を参照するのはコンパイルエラーか。
244 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:46:36 ] 省略可能な引数は確かにほしいな。 他のは賛同しかねるが。
245 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:49:30 ] 省略可能な引数はC#4.0で追加される。 swichでのフォールスルーに関しては議論が分かれるとこだろう。 C#ではステートメントを含まない場合にのみ許可されている。 gotoステートメントによってラベル付きステートメントに直接移動する事もできるけど滅多に使われない。
246 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:58:26 ] >>239 初心者は恐ろしいことするよなぁ
247 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:00:32 ] セグメントエラーです。。。
248 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:37:30 ] C#はC言語の標準関数を使えないんだろ。 ぼろい言語だな。.Netでしか通用しないノウハウだな。 C++ならC言語のノウハウは生かせるから、VC++やC++Builderで、MFCやVCLの知識は無いけども、 イベントハンドラにC言語のコードを差し込んで、単にGUIの画面を借りるだけのスタイルで、 普段コマンドプロンプトのプログラムしか作らない俺でも、Windowsプログラムを作れたぞ。
249 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:49:14 ] 釣りたいならもっと勉強してから出直してきな
250 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:10:24 ] >>243 と >>248 は逆に、C/C++ への皮肉だと思う。
251 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:14:24 ] C#でC言語の標準関数を使った事がある俺は神か
252 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:14:35 ] ある意味釣られたってわけだなw
253 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:17:50 ] ああ、msvcrt*.dllの関数も呼べるよな
254 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:39:12 ] C++人はマネージ拡張C++に手を伸ばせば同じことができるし、 VB6人やMS-Office VBA人は差分学習ですぐにVB.netやれるし、 (中途半端に似ててかえって混乱するとかいうのはデマ) .Netしか通用しないノウハウのC#を学習する意味不明。
255 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:42:37 ] C互換ライブラリとかどこかにあったりしないかな。 C.StdIO.Printf() とか用意してある
256 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:42:57 ] 第二段来ました
257 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:07:22 ] >>254 ところがどっこい。 .NETのサンプルがC#だけで出て来る例というのがよくあるため、 VBの人もC++の人もC#のサンプルを見て自分の言語に移す羽目に。 ここから蛇足。一昔前だったら、Cで書かれたWinAPIのサンプルを VBへ移したり、C++ならクラスでラップしてみたりしていたわけで、 時代が移ってもやっていることに変わりはないのさ_| ̄|○
258 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:09:54 ] しっ、話しかけちゃいけません!
259 名前:デフォルトの名無しさん [2009/04/19(日) 02:10:41 ] >>254 じゃあdelphiしか選択肢がないな
260 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:14:42 ] kylixってどこいったん?
261 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 03:24:35 ] >>257 要は君はコピペグラマってこと? だったら.NETの問題っていうより君自身の問題なんじゃないの? 普通はサンプルの考え方を拝借することはあってもコードをそのまま引っ張る なんてしないよ。
262 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 03:47:00 ] そりゃそうだ。だいたい、C#に癖のある構文なんてそんなに無いから、 サンプルを理解するくらいなら特にC#の知識を持ち合わせていなくても問題ないだろう。 もっとも、VB.NETやC++/CLIからもうちょっと手を伸ばせばC#にも手が届くだろうとは思う。 手が届くというだけではC#を学習する理由にはならないから、254への答えでは無いけどな。
263 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 08:38:49 ] >>239 が一瞬HLSLに見えた
264 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 08:53:42 ] あんな見え見えの構ってちゃんの相手してやるんなら>>239 に答えてやればよかった もういないだろうけどscanfの引数は取得したい値を格納する変数のポインタを入れなきゃだめだよん
265 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 10:09:38 ] 一章とかでscanf()してる入門書とかあるからなあ
266 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 10:47:06 ] いまだにCやるときはscanfを使う俺 なんで一行読み込みがgnuのgetlineしかねーんだよ・・・標準で作れよ メモリ確保こわい って感じ
267 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 18:12:40 ] fgets して sscanf するのが面倒だから getopt に頑張ってもらうか適当な設定ファイル読ませるようにしちゃうなぁ。 つか C# 関係ないな。
268 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 02:23:31 ] たまに使うVC++でgetline()を使おうとして、「あれ?」と思う俺。
269 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 11:37:48 ] Collection系(例えばQueue)でロックされた状態で処理を行いたいとき 1.lock(独自のロックオブジェクト) 2.lock(対象.SyncRoot) 3.Queue.Synchronized(対象) とか考えられるんですが 使い分けの方法がわからない 1・・・コレクションだけではなくその他の変数やオブジェクトもロックしたいときにまとめて一回でやりたいから使うかなと 2、3 この違いは一体何なのか教えてほしいです。 そして Queue.Synchronized でMSDN調べたら 同期されている (スレッド セーフな) Queue ラッパーを返します とありますが、型が同じということだけはわかりますがこれはコピーされたオブジェクトなのかそれとも元の本体そのものなのか・・・ 予想すると 3のラッパーはオブジェクトのディープコピーをかえしてきて読み取り専用的に扱う 削除なんかは3の操作ではできないから1,2の方法を使って要素を削除したり こんな考え方でいいのでしょうか?
270 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 21:40:44 ] >>269 .Net Reflector
271 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 22:08:11 ] ソース公開されてるからReflector使わんでもええやん
272 名前:デフォルトの名無しさん [2009/04/21(火) 05:09:56 ] ReflectorとReflectionは違うものですか?
273 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 05:15:22 ] >>272 うん
274 名前:デフォルトの名無しさん [2009/04/21(火) 05:20:35 ] ツールか。新しい機能かとオモタ
275 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 08:45:40 ] >>269 どっちかっていうと1.2.が似てて、3.が違うよ 3はクラスメソッドがスレッドセーフになったコレクション。 Dequeue()やEnqueue()はスレッドセーフで実行できるけど、 列挙処理中はSyncRoot等でロックしないと別スレッドでの変更に対応できない あとラッパーっていうのは元のオブジェクトに 新しい機能をかぶせるテクニックの総称だから元の本体だね 削除も普通にできる
276 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 08:49:30 ] object ICollection.SyncRoot { get { if (this._syncRoot == null) { Interlocked.CompareExchange(ref this._syncRoot, new object(), null); } return this._syncRoot; } }
277 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 11:09:13 ] 説明ありがとうございます。 >>275 列挙している間に別スレッドからの追加・削除処理が入る場合は基本ロックが必要そうですね・・・ そこまで処理速度が必要そうなわけでもないので、ひとまずロックさせて使ってみようと思います。 >>276 結局は内部で専用のロックオブジェクトを提供してくれているだけという感じでしょうか
278 名前:デフォルトの名無しさん [2009/04/21(火) 13:29:20 ] Shared code , Shared source といった類のキーワードでgoogle先生に聞けば以前はあっさり見つかっていたのに・・・ どこにいったんだろう? VisualStudioのライブラリソースコード表示の説明リンクを次から1の直下に張り付けておいたら良いと思う。 誰か場所知っていたらリンク張って欲しいです。 >>277 実はソースコードみた方が圧倒的に正確だしてっとりばやい、凄い単純な実装なんで。 www.microsoft.com/downloads/details.aspx?FamilyID=8c09fd61-3f26-4555-ae17-3121b4f51d4d&DisplayLang=en とりあえず VisualStudio からではないですが、ソースコードです。 ダウンロードしてgrepして探してみてください。
279 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 18:40:07 ] 条件によって異なる複数の変数(string或いはint)を 配列化して(一列に並べて)、各変数に代入するメソッドを変数の個数だけ実行したいのですが、 デリゲートを使うとオーバーロードできないため、Object型を渡して判別するという事も考えたのですが納得できません。 unsafeのポインタを使うべきなのでしょうか。
280 名前:279 mailto:sage [2009/04/21(火) 18:52:28 ] すみません。具体的に言うと foreach (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に応じた変数に格納します。
281 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 19:23:47 ] 具体的といいつつ酷く分かりづらいな Func<T>でも使えばいいんじゃね privateなメソッドなら型制約とかもいらんっしょ
282 名前:279 mailto:sage [2009/04/21(火) 19:53:25 ] >>281 説明下手で、すみません。 ググりましたが、おそらくお察しの通りです。 感謝いたします。m(_ _)m
283 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 19:00:44 ] Dispose()のCLRにマネージされていないデータを解放するという説明を読んで思ったのだけど、 CLRにマネージされてるかどうかってのはつまりどういう事なの?
284 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 19:12:25 ] ざっくりいってIDisposableがマネージド、IntPtrがアンマネージド
285 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 19:23:50 ] >>283 C++なんかだと、COMやスマートポインタを使って、リファレンスカウンタで生存管理をしているんだが この方式だと、参照がなくなると同時に解放処理がされる。 対して、ガベージコレクタを使った.NETでは解放処理はメモリーが尽きたとき。 で、C++では参照がなくなると同時に解放処理を行う事を前提に組んであるケースが多いんだ。 だからC++の場合ちゃんとリファレンスカウンタで管理されているファイルシステムオブジェクトなどはこのタイミングでClose処理もされるのでCloseを忘れていても大丈夫 アンマネージをラップしたクラスを作るとこれが問題になることがある、これ明示的に開放する関数がDisposeだよという意味。 あくまでもラップした先のオブジェクトの解法、ラッパ事態はマネージドなので、ガベージコレクタで解放される。 たとえば.NETでStream系のオブジェクトでこれを忘れていると、Closeしわすれているとガベージコレクタで回収されるまでOpenされっぱなし。
286 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 19:42:28 ] >>283 CLRの関与していないところで確保したもの。主にWin32ハンドルとか。
287 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 13:27:12 ] IntPtrにAPIで取得したハンドルなんかもIntPtr.Zeroとかやった方が いいんですかね…。基本的にマネージド以外の方法で取得したものは 全て何かしらの処理を加えた方がいいんでしょうか。
288 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 13:35:57 ] 意味が分からん アンマネージドリソースの解放ってのはIntPtr.Zeroを変数に代入することじゃないぞ CloseHandleとかDeleteObjectとかのAPI関数呼び出しのことだぞ 処理した方がいいかどうかじゃない、必要な手順で解放する必要がある もちろんシステムグローバルな値とかでその必要が無いものもあるがな、ウィンドウハンドルみたいな
289 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 14:14:38 ] 請求書捨てても借金ちゃらにならない感じ
290 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 22:32:21 ] あとIntPtrを生で使うんじゃなくてSafeHandle使え
291 名前:デフォルトの名無しさん [2009/04/23(木) 22:37:01 ] VisualStudio2008のツールボックスで使われているみたいな、プッシュピンで表示/非表示を切り替えられるGUIは、. Netの標準コントロールとしては提供されていないのでしょうか? 市販コントロールには似たようなものがあるようなのですが。 よろしくお願いします。
292 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 22:48:19 ] 標準には無い
293 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 23:42:08 ] オレそれ市販の買おうか真剣に悩んでる。 devexpressの試用版DLしたとこ。
294 名前:デフォルトの名無しさん [2009/04/24(金) 00:05:34 ] >>292 ,293 残念です。Microsoftも便利な部品はどんどん使えるようにして欲しいですね。
295 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 00:11:37 ] >>294 どんどんしてるんだけど、今、SilverlightとかASP.NETとかの優先順位がむちゃくちゃ高いから、 VS風ドックコントロールは、ちょっとやそっとの要望あっても当分後回しになると思う。
296 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 08:36:28 ] >>287 API直接操作するなら、APIの仕様通りに使わないとアカンで マネージド側の特徴もちゃんと考慮して、アンマネージドの処理がアンマネージドの仕様に合うように。
297 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 09:05:35 ] 【知的財産】中国:ITソースコード強制開示強行へ・制度を5月に発足…国際問題化の懸念 [09/04/24] anchorage.2ch.net/test/read.cgi/bizplus/1240524654/
298 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 16:20:35 ] 質問ですが、Flashのムービークリップの様に、 同じ性質を持ったオブジェクトの中にオブジェクトを上限なく動的に入れる方法はありませんか?
299 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 16:29:21 ] List<T> じゃあかんの?
300 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 16:32:52 ] 表示上のオブジェクトという話かな?XAMLでどうよ。
301 名前:298 mailto:sage [2009/04/26(日) 16:56:29 ] >299-300 ありがとうございます。そこまで複雑な事ではないです。
302 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 17:06:03 ] じゃあどういうことよ、なのよ
303 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 17:09:44 ] int[] array = new int[999999]; とでもやって多めに確保しとけ
304 名前:デフォルトの名無しさん [2009/04/26(日) 17:11:07 ] >>301 むしろ>>298 の説明のほうがそれいじょうに複雑なことではあります
305 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 18:35:03 ] Compositパターンのことを言ってるんじゃないの?
306 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 18:35:51 ] 「コンポジットパターン」と言いたいんじゃないかな? ということで、これでぐぐってみてください。
307 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 08:52:01 ] このスレはやさしいエスパーが多いな
308 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 00:51:39 ] FormBorderStyle.Noneにして標準のタイトルバーとか表示させないで独自のものを表示したりしています。 タスクバーの右クリックでのシステムメニューは下のURL等を見て表示できるようになったんですが、最小化などが無効になったままです。 これは何かメッセージを処理したりすれば有効にさせることなど出来るのでしょうか? 最大化などもFormのWindowStateをNormalのまま最大化らしくふるまうように無理くりやっています。 もしくはこんな風な独自のウィンドウを作る時の従うべき方針などあれば是非是非エロイ人
309 名前:308 mailto:sage [2009/04/28(火) 01:11:26 ] さーせん、const int WS_MINIMIZEBOX = 0x20000; とかをCreateParamsのStyleに追加したら最小化も表示されたっす。
310 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 01:39:19 ] Graphicsに任意のControlを描画することって出来ます? var webControl=new WebControl() webControl.Draw(graphics); みたいな感じで。
311 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 01:44:28 ] Excel 2003 vbaの関数をC#から呼んでるんですが 実行時にvba内のブレークポイントで処理を止めるには どうしたらいいんでしょうか。
312 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 02:05:10 ] >>310 でやってみていかがでしたか?
313 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:41:06 ] public partial class Form1 : Form { [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="保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。" がでる。 意味がわからない。なぜ?
314 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:51:15 ] そのメカブってどこからもってきてんのよ
315 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:55:02 ] これ。 mecab.sourceforge.net/libmecab.html
316 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:55:19 ] オレも何かメカブそば食いたくなったわw
317 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:58:36 ] 実はVista x64版だったというオチ、とか
318 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 20:04:16 ] >>317 それはさすがに大丈夫だった。 また、Mecabインストール時についてくるEXEは、普通に動きます。
319 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 20:06:30 ] とりあえずpInvoke行って宣言正しいかみてこようず
320 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 20:37:13 ] >>313 いま実際に動かしてみた 返値がStringだとマーシャラがギブアップするみたい IntPtrで受けてMarshal.PtrToStringAnsiとかで文字列変換すべし
321 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 21:21:30 ] ref string でもいけそうな気がする。
322 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 21:28:24 ] 返値にrefは使えない エラーが出る原因だけど、あくまで推測レベルだが 返値にStringを指定した場合UnmanagedType.BStrならSysFreeStringが、 それ以外ならLocalFreeだかCoTaskMemFreeだかが自動的に呼び出されたはずなんで メモリ周りの保護の強化との兼ね合いと思われる
323 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 22:10:13 ] >>320 >>322 ありがとう。XP、Vista両方動いた。
324 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 09:23:57 ] DataGridviewって動的列つかったCross集計もできないし機能ショボスギですね 代わりにMSレポートのマトリックス使ってますが将来DataGridviewにGrapeCityのGridみたいな機能が付加されることはないでしょうか
325 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 11:46:10 ] 高機能すぎると独禁法が面倒なんだ
326 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 14:35:30 ] コンポーネントは機能が少ないほど良い。
327 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 19:31:39 ] ×コンポーネントは機能が少ないほど良い。 ○コンポーネントは機能が洗練されているほど良い。
328 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 21:23:18 ] >>326 機能ゼロが最高だよね。
329 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 21:52:40 ] せめてAlt+F4で終了する機能ぐらいはつけてくれ
330 名前:デフォルトの名無しさん [2009/04/30(木) 22:54:12 ] ListView を View == Details で使っていて、 選択された行をタブ区切りでクリップボードに転送してみようと思っているのですが 簡単な方法もしくは、一般にListViewからクリップボードへの定型的なやり方ってありますか?
331 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 23:02:53 ] 1パターンしかないと思うが 細かい差異はあるかも知れんけど
332 名前:デフォルトの名無しさん [2009/05/01(金) 02:27:08 ] C++で const 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配列の初期化ってどうすればいいの?
333 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 02:29:31 ] そんなもの無い dataそのものへの代入不可ならreadonly 要素の変更不可ならReadOnlyCollection<T>でラップ
334 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 02:31:20 ] private readonly int[] data = new int[] {1,2,3,4};
335 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 11:22:09 ] >>334 配列の要素に書き込めます
336 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 11:37:53 ] >C++で >const int data[] = {1, 2, 3, 4}; は要素の書き換え可なの?
337 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 12:22:30 ] >>336 それは int const data[] = ... と同義だから、constはintに掛かってて、要素は書き換えられない。
338 名前:デフォルトの名無しさん [2009/05/01(金) 13:03:46 ] スレ違いだが、 >>336 要素の書き換えは不可。 >>337 前半がウソ。それは同義ではない。
339 名前:337 mailto:sage [2009/05/01(金) 13:40:55 ] ごめん適当に書いたんだけど、C++とCで違いがあるの? リンケージ変わったりとか?
340 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 14:16:41 ] static または auto に宣言しているなら変わらないかと、つか C# スレですが 専門のスレで聞いた方が良いで
341 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 14:21:46 ] >>335 readonly System.Collections.ObjectModel.ReadOnlyCollection<int> data = Array.AsReadOnly(new int[] { 1, 2, 3 }); こうかな、使ったことないんで自分で確かめてくれ。
342 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 14:23:28 ] 読み取り専用その他、各種アダプタ類は、class に static 関数として定義されている事が多いんで、いろいろ見てくらはい。
343 名前:デフォルトの名無しさん [2009/05/01(金) 16:36:37 ] メインのフォームから別スレッドを起動して、そのスレッドからフォームのテキストボックスにアクセスすると CrossThreadMessagingExceptionが投げられるのですが、どのように回避するのが良いでしょうか?
344 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 16:42:06 ] コントロール スレッド でぐぐれ
345 名前:デフォルトの名無しさん [2009/05/01(金) 17:48:18 ] スレッドをAbort()した後に、同じスレッドをStart()すると、 ThreadStateException {"スレッドが実行中か、または終了しています。再起動できません。"} が投げられます。 一度Abort()したスレッドを再開するにはどうすればよいでしょうか? 毎回new Threadをし直す必要があるのでしょうか? できれば、new Threadはアプリ起動時に1度だけで済ませたいです。
346 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 18:00:27 ] メッセージどおり、Abortしたら再起動はできない つーかAbortなんか使っちゃダメ SuspendとかResumeとかも禁止 フラグとかでスレッド自身が自分の状態を管理するようにする 別にThread作りなおしてもかまわんとは思うが
347 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 18:08:39 ] 自分も独学でフラグで誤魔化したので、 スレッドの待機をメッセージが無い.NETでどうするか疑問だった マジでみんなフラグ管理で逃がしてるの?
348 名前:デフォルトの名無しさん [2009/05/01(金) 18:48:39 ] >>346 Resume、Suspendは「使用しないでください」と書いてありますが、Aboteには書いていません。 何故、Abortを使うのはダメとおっしゃっているのでしょうか?
349 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 18:52:43 ] >>348 マジ?どこどこ??
350 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 18:56:26 ] >>348 メモとかに書いてるっしょ どこで終了するか分からないからオブジェクトが不完全な状態になりうるとか 更には確実に終了されるかどうか保証できないとか実にやばそうな匂いが漂ってくる
351 名前:デフォルトの名無しさん [2009/05/01(金) 19:14:36 ] >>349 Visual C# Express 2008のインテリセンス >>350 そうは書いていないようです
352 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 19:26:48 ] インテリセンスて ヘルプの解説見ろよ……
353 名前:デフォルトの名無しさん [2009/05/01(金) 19:35:28 ] >>352 ヘルプの解説でも、 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. go.microsoft.com/fwlink/?linkid=14202 ", false)] 」 とありますが、 Abortの項にはありません。 詳しくはヘルプをご覧ください。
354 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 20:21:44 ] Thread.Sleep() に Timeout.Infinite を渡す。 再開は Thread.Interrupt() で ThreadInterruptedException をスローさせる。
355 名前:347 mailto:sage [2009/05/01(金) 21:40:05 ] さんくす Thread.Interruptのコード例でsleepSwitchフラグの位置がイマイチ納得いかなかったけど >>354 に書いてあるように使うよ
356 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 22:04:03 ] >>347 一般にはフラグは使わない、イベントやセマフォやミューテックスの類を使って制御する。 フラグは簡単にミスするしバグりやすいよ、CPUパワーは無駄にするし、スレッドの実行優先順位も狂って非効率になる。
357 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 22:10:40 ] 再開はそれでいいんだけど休止をどう伝えるのかイメージつかないんですが
358 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 22:25:42 ] >Thread.Interruptのコード例でsleepSwitchフラグの位置 デバッガで確認したけど、Thread.SpinWait(10000000);の行には行かないね。 シングルコアだとJoin呼ぶまでスレッド動かないからだね。 試しにInterrupt()のあとでThread.Sleep()入れてメインスレッドをスリープ待機に 入れちゃうとThread.SpinWait(10000000);がThreadInterruptedException起こすし。 マルチコアだと動かないんじゃないか?このサンプル。
359 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 22:48:07 ] >>357 メモリ操作オンリーの計算なら止めてしまっても問題ないと思うが 普通にいろいろなリソースを操作しているなら勝手なタイミングで止められたらマズくね? もちろん上記のような特殊な状況があるならそれこそSuspendしちまっても全然問題ないと思われますけど。 普通の状況では、イベントを確認して問題なければそこで止める。
360 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:04:40 ] Sleepする前にInterruptされていたら停まらないでThreadInterruptedException起こすし 問題ないかを確認するのはInterruptする側でしろということじゃないかな。
361 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:07:19 ] なんつーか、AbortにしてもInterruptにしても、これらの操作はスレッドに対する最終手段だぜ 普通に使うものじゃない
362 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:09:02 ] 同期を使わないなんてアリエナイ。
363 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:11:25 ] いや、開発するアプリの種類によるか・・・ スレッド自体、使わない人は使わないんだし。
364 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:11:48 ] スレッドの外部から停止再開させたいなら、同期オブジェクトを使おうが 結局フラグ的な使い方をすることになりそうな気がする。
365 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:13:55 ] >>364 フラグだとvolatile付け忘れたり、メモリーバリア忘れたり、素人には難しいぞ。
366 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:23:06 ] ManualResetEvent だともろフラグだ。 そういえばBackgroundWorkerの実装をみると volatileもmemorybarrierも使ってなかったのを思い出した。
367 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:24:28 ] つかEventはマルチスレッド用のフラグですから セマフォはマルチスレッド用のカウンタですから
368 名前:358 mailto:sage [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. ・・・誤訳かよ! 待機とブロックと中断の用語がなんか変な気もするし。日本語ヘルプはだめすぐる。
369 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 03:40:54 ] WCFとかAzureの質問ってここでしていいのかな。 Azure SDKのdevelopment fabric上でWCFサービスを動かすと、 127.0.0.1からはアクセスできるのに、自分のホスト名から叩くとアクセスできなくて、 俺の設定ミスなのかAzure SDKのバグなのか分からないんだけど。 解決策を知ってる人がいたら教えて欲しい。
370 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 03:56:03 ] 切り分けしようぜ
371 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 03:56:30 ] 手元に無いんで試してないがエスパーしてみると リスナーでIPAddress.Anyとすべきところがそうなってないとか
372 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 10:20:58 ] >設定ミスなのかAzure SDKのバグ 自分のプログラムが悪いとはこれっぽっちも考えてないのね
373 名前:デフォルトの名無しさん [2009/05/03(日) 11:22:10 ] >>372 「俺」って言うのは日本語で「自分」を示す一人称の一つだよ。
374 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 11:42:24 ] 設定ミスと考えてるってことはプログラムは悪くないと思ってるってことだろ
375 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 11:44:41 ] 設定はプログラムでするだろ
376 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 12:15:09 ] 何言い返してんだよ、本人か? そうでなけりゃ、自分のプログラムミスを設定ミスと言い直してごまかす人か?
377 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 12:58:12 ] あ、回答どうも。 >>370 がんばってみたんだけど無理だった。。 とりあえず、MS提供のサンプルで同じことが起こるのは確認済み。 別環境でやっても同じく。 >>371 なるほど。そういうオプションがあるのか。 IISでその辺設定するにゃどうしたらいいんだろ。調べてみますわ。 >>372 ランタイムの初期化って設定って言いませんかねぇ。 あと、言うの忘れてたけど.svc使ってIISの機能でホスティングさせてたんで。
378 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 13:43:49 ] WCFはIISでホスティングさせているか否かでだいぶ違うから、 そういう大事なことは先に言えよな。 あとはトランスポートになに使ってるかかな、BasicHttpBindingとかそんなの。
379 名前:377 mailto:sage [2009/05/03(日) 14:05:03 ] 失礼(´・ω・`) バインディングはBasicHttpBindingにしてる。 ウィザードのデフォルトはWebHttpBindingだけど、 それだとそのまま使うとなんか例外投げたので。 とりあえず、MSの開発者側も認識している既知の問題としては、 WCFアプリをAzureにうpすると、自分のホスト名を、 ユーザが使うロードバランサのアドレス(tp://***.cloudapp.net/)ではなく、 分散環境内でアプリが実際にロードされている鯖(tp://[guid].cloudapp.net)のもの として認識してするせいで、それをendpointとしてWSDLを生成してしまう、 というのはどっかで見かけたけど、それがこの問題とも関連しているのかよく分からない。
380 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 14:06:36 ] ちなみにこれ。 code.msdn.microsoft.com/wcfazure/Wiki/View.aspx?title=KnownIssues
381 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 14:10:18 ] 内部識別子でWSDLを公開している様子 wcfazure.cloudapp.net/ wcfazure.cloudapp.net/ConsoleCalculator/Service.svc けど、ローカルで動かす分には鯖名自体は(もちろん)合ってるから関係ないはずではあるんだけど。
382 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 15:59:03 ] まずはIISで動かしているのかASP.NET開発サーバーで動かしているのか確認かな。 後者なら127.0.0.1(localhost)しか受け付けない。 タスクトレイにASPNET開発サーバーアイコンが表示されているようなら後者。 IISで動いているなら、コンピューターの管理からIISの設定を確認する。 まずWEBサイトの識別のIPアドレスで「未使用のIPアドレスすべて」になっているかどうか。 ここが127.0.0.1になっていればそれでしか繋がらない。 次にこのアプリの仮想ディレクトリを確認でセキュリティ関係に矛盾がないか確認。 よくやってしまうのが、統合認証+匿名認証の設定になっていて、 WEBで公開しているディレクトリにIUSR_xxxxのアクセス許可がないケース。 統合認証で認証された場合は問題ないが、匿名の場合にアクセス拒否を食らう。
383 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 17:09:52 ] >>382 ありがとう。 いま、手元に環境がないので、後日確認してみて報告しますわ。
384 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 18:30:41 ] C#でテキストを1行ずつ読み込み、条件に合った行を取得するような簡単なものを組んでいるのですが、 条件に合った行から連続する3行とかを取得するにはどうすれば良いのですか。 初歩的かもしれませんが、ご教示願います。
385 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 18:32:17 ] >>384 とりあえず下の場合の動作は? テキスト 1234 1234 1234 abcde abcde abcde 条件: 1234
386 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 18:37:32 ] >>384 条件に一致した行のインデックスとって自分でそこから2行読めば?
387 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 18:41:59 ] なんかJavaより面倒そう
388 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 18:42:02 ] var result = new List<string>(); int flag = -1; foreach (string line in lines) { if (条件に合ってる行の場合) { flag = 0; } if (flag =! -1) { result.Add(line); flag++; if (flag > 3) { flag = -1; } } }
389 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 18:50:20 ] =! だと・・・?
390 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 19:08:04 ] grepと同じ挙動ならこんな感じか IEnumerable<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; } } }
391 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 19:25:31 ] >>384 bbbが条件だとして、そこから3つを取得 string[] list = { "aaa", "bbb", "ccc", "ddd", "eee" }; var result = list.SkipWhile(s => s != "bbb").Take(3);
392 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 19:44:16 ] linqを使いたいお年頃なんですね
393 名前:384 mailto:sage [2009/05/04(月) 20:03:01 ] 返事が遅くなりました。 1234 aaa bbb ccc 2345 ddd eee fff のようになっていまして、ReadLineで順に読んでいって、1234を発見したときに、 aaa、bbb、cccの3行を取得するようにしたいです。 1234の行は取得できるのですが、その次の行を読んでbreak;の方法がいまいちわかりません。
394 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:10:11 ] もし1234が見つかったらのifステップ中は ReadLine(); ReadLine(); ReadLine(); じゃだめなの(;´Д`)
395 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:10:39 ] >>393 1234が2回以上あらわれることはあるか、 また1234に続く3件のうちに1234が含まれていた場合の扱いは?という確認だろ。 そういうことはありえないという条件でもよいのだが。 その条件が確定すれば簡単だよ。
396 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:16:30 ] すみません。おそらくすごい初歩的なことだと思います。 検索する行(この場合は1234)は、他の行には一切ありません。 >>394 さんの3回記述をするのは、次の2行も取得できるということですか? Webはいろいろ調べてみたのですが、1行ずつ読み込む方法しか書いてなかったもので。
397 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:30:44 ] >>385 はスルーですかそうですか
398 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:31:52 ] >>391 はスルーですかそうですか
399 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:33:15 ] >>398 いやまて391は流石に役に立たないだろう根本的な部分で
400 名前:384 mailto:sage [2009/05/04(月) 20:41:24 ] >>385 を書かれた時点で自分の伝えたいことが伝わってないことがわかり、をれを参考にして例示を上げてみました。 スルーするつもりはありませんでしたのでご容赦ください。 今>>394 の方法でやってみたところ、思った通りの挙動が確認されました。 まだ本片手で勉強している最中ですので、このような質問内容になったことをお詫びいたします。 みなさん、ありがとうございました。
401 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:59:57 ] ReadLine()は 今まで読んだ行の位置からスタートして 次読み込む行を調べて その行に移動して その行に書いてあることを読んで 今読んだ行を覚えておいて 読んだ内容を返す っつー動作をするんじゃね?
402 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 17:19:16 ] ちなみに和布蕪(めかぶ)は, 作者の好物です.
403 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 00:49:52 ] .net framework って、普通1.1なの? 2.0や3.0, 3.5って企業や業務アプリで使ってないノア?
404 名前:デフォルトの名無しさん [2009/05/07(木) 00:52:12 ] 使っていいよ。
405 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 00:53:08 ] 2.0は十分なシェアあるだろうが可能な限り低いバージョンでやるべきだろ
406 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 01:03:04 ] ほとんど2.0じゃないかな。1.1まではベータ版みたいなものだし。
407 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 01:10:24 ] FrameworkClientProfileで開発しとけば色々便利
408 名前:デフォルトの名無しさん mailto:sage [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フルセットのインストールを行う。
409 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 01:40:15 ] 3.5 SP1
410 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 01:41:20 ] 3.5 SP1 フルインストールってすごい長いんだよな・・・
411 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 02:18:57 ] >>394 で正解とか他の解答者がさすがにかわいそうすぎたw
412 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 02:19:21 ] Silverlightで皆幸せ
413 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 03:58:32 ] 和暦のカレンダーコントロールが必要になった めんどくさいからだれか知ってたらサンプルのページ紹介か作ってくれw サードパーティはバグに引っぱられるからかるからなるだけ使いたくねえ… もう和暦とか辞めればいいのに 西暦で統一してぇ・・・
414 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 04:07:32 ] 天皇制がある限り無理
415 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 07:10:32 ] 面倒だけどそんなに手間じゃないよな
416 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 11:28:41 ] まあ、「今後は」西暦に統一したとして、 過去に作った分にまで遡及させるのは無理だから 実際に和暦が消えるのは数十年後よ。
417 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 11:37:04 ] 太陽暦移行後だけでいいなら簡単だろうな。
418 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 11:59:10 ] 普通は平成、昭和、大正、明治をサポートすれば大丈夫なんだろうけど、 お寺の過去帳データベースを作ったときはまいったな。
419 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 13:47:29 ] 和暦とか旧暦とか六曜とか月齢とかまとめて計算してくれるクラス欲しいな 海外ローカルも含めて国際カレンダークラスみたいなもの。
420 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 13:50:57 ] 暦計算だけならCalendarクラス使えばいいだろう。 六曜や月齢はないが。
421 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 17:17:40 ] 和歴はあってもイイけど業務で使うのは辞めて欲しい 役所が一生懸命使ってる限りは無理だろうけどさ
422 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 17:36:57 ] 和暦に命をかけてるんじゃないかってほどこだわってた客がいたな 昭和何年何月何日は存在しないから入力できないようにしてくれとか 結果的にあってんだからいいんだよ!
423 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 18:14:23 ] 世界のローカル暦サポートなんて、Unicodeの比じゃない難事業だぞ。ヨーロッパ各国に限っても、 ユリウス暦からグレゴリウス暦の移行期は国ごとに日付が違うし、ユリウス暦の初期は閏年が いつだったのかわからないし、ユリウス暦導入前は最高神祇官が勝手に閏年を決めるし、一方 ギリシアではポリスごとに暦が違うし…… 日本だって南朝と北朝で暦が違っていたり、暦書がなくて暦を復元できない時代があったり、 ああもう面倒くせえ
424 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 18:16:23 ] 旧暦の暦の正当性は閏月とかあってとてもじゃないけど保障できない。 さきの過去帳DBなんだけど、古いのはもう計算じゃ出せなくてテーブルで持つしかなかった。 古いのは書き写したときのミスとかいろいろあってもう記述がいい加減なんだよね。 咸豊とか中国の元号が出てきたときにはもう勘弁してください状態だった。 南北朝や九州年号はさすがになかった・・
425 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 19:35:09 ] さすがだな、おまえらw ”和暦のカレンダー”だけでここまで穿り返すとはwww
426 名前:377 mailto:sage [2009/05/07(木) 19:43:50 ] >>382 今日いろいろ調べてみた。 結果としては、Development Fabricは内部でASP.NET開発サーバを使っているのではないか、 という感触を持った(サービスが自分をホストしている鯖の情報を取る方法を知らないので確定的ではないけど)。 AzureのドキュメントにはIISを使ってるって書いてあるし、ASP.NET開発サーバアイコンも表示されていないんだけど、 IISにアクセスログを吐かせてみても、127.0.0.1:81を叩くときだけログに残らないし、 よく考えると、80番の設定で起動してるのに81番で起動するのは、IIS以外に鯖を起動した上でホストしている証拠かな、と。 そうなると、ホスト名がつかえないのは、現状では「仕様」ということになるんだと思う。 とりあえず、CTPの文字が外れるまではこのままなんだろうなぁ、というオチにしておく。 みんな、いろいろ教えてくれてありがとう。
427 名前:デフォルトの名無しさん [2009/05/07(木) 20:20:27 ] すみません、 HTML文からタグのみを取り出す関数はありませんか? 逆に言うと、HTML文のタグ以外を削除するような関数 のことですが。
428 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 20:32:18 ] 安易に考えたらXML名前空間の機能使って取り出すとか?
429 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 20:34:59 ] 関数はないな 正規表現使えばタグの抽出だけなら比較的簡単だ >>428 XHTMLじゃない限りほぼパース不可能だよ
430 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 20:35:48 ] 酷いHTML読まされる事考えるなら、MSHTML使うのが一番楽じゃないかね
431 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 20:56:10 ] SgmlReader っていうのもある。
432 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 21:04:57 ] CommitChanges()はパフォーマンス面で悪かったりする? 普通に多用していいもの?
433 名前:432 mailto:sage [2009/05/07(木) 21:42:45 ] ああスレ間違えた
434 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 00:20:25 ] >>427 msdn.microsoft.com/ja-jp/library/system.windows.forms.htmldocument.all.aspx msdn.microsoft.com/ja-jp/library/system.windows.forms.htmlelement.tagname.aspx
435 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 00:26:09 ] System.Windows.FormsのHTML DOMはWebBrowserなしだと普通には作れないのが難 標準でwebスクレイピングライブラリとか作られんかのう
436 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 00:31:13 ] 寺とかちょっとした歴史の勉強だなw
437 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 00:31:51 ] プログラムにフォルダ名が入っているのですが、いれないようにするにはどうすればいいですか?
438 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 00:34:01 ] SilverLight
439 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 00:37:25 ] >>435 んじゃ、これ。 htmlagilitypack.codeplex.com/
440 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 00:38:35 ] すんません、書きなおします プログラムをバイナリエディタでみたところプログラム内にフォルダ名が書き込まれているのですが、 ビルド時、かきこまれないようにするにはどうすればいいですか?
441 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 00:38:55 ] >>437 相対パス使うか、定義ファイルにパス書くか、レジストリにパス書く。
442 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 00:39:43 ] >>440 リリースビルド & .pdb を作らないようにすればいいんじゃなかったっけ?
443 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 00:40:43 ] あ、ありがとうございます ビルドー詳細設定でデバッグ情報をnoneにしたらいけました あせった><
444 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 00:48:43 ] ビルドーってディルドーに似てる
445 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 02:31:26 ] 2000年問題に対応したとき、「なんでこんなややこしい閏年の置き方をするんだ!」とか 思ったものの、よく勉強してみたら、現行暦がいかに単純で合理的か納得したw
446 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 06:10:15 ] >>445 日本の季節感にはまったくあってないけどな 昔は一番寒い時期が1月1日で新年を迎えると暖かくなる一方だった 戦争に負けたアジアは所詮白人のおまけということだな
447 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 07:14:01 ] >>446 おじいちゃん乙
448 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 07:21:58 ] >>446 中国行って旧正月でも祝ってればいいんじゃない
449 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 07:22:24 ] そのせいで地方によってはいくつかの行事は月遅れでやることが多いけどな。 ひな祭り、七夕、盂蘭盆会などなど。
450 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 10:56:45 ] なんか思いっきりスレチ方向へ進んでないか?ww
451 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 12:22:22 ] じゃあディルドーの話に戻そう
452 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 23:07:53 ] 三叉路まで戻って別の違う道に進んだみたいな。
453 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 23:17:29 ] ディルドゥーなら喜んで食いついたのに
454 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 13:32:15 ] vbでいうところの for i=0 to 4 label(i)="abc" next みたいな ループの添字で複数の連番的なオブジェクトを指定するにはどうしたらいいのでしょうか オブジェクトに番号振るっていう状態をどういうのかがわからなくて調べられないです 1日いろいろ探してみましたが思いつく宛が詰まってしまったのでヒントが欲しいです
455 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 13:35:24 ] 配列に入れておいて、あとは同じように。
456 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 15:23:13 ] ありがとうございます
457 名前:デフォルトの名無しさん [2009/05/09(土) 21:20:30 ] 質問です フォームのテキストラベルにH2Oと入れたいんだけど2を下付きにするにはどうすればいいのですか? Hのラベル、2のラベル、Oのラベルを3個並べてお茶を濁してきたけど、詳しい方どうか教えてください。
458 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 21:23:57 ] そうやるしかない
459 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 21:30:23 ] 自前で描画するしかないな Paintイベント使って
460 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 21:30:36 ] >>457 U+2082 ₂ SUBSCRIPT TWO
461 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 22:04:02 ] >>457 文字を書いてつくったイメージを貼り付ければいいじゃん
462 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 23:36:39 ] H₂0 な なるほど!thx
463 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 23:44:44 ] リッチテキスト
464 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 23:48:55 ] ₀₁₂₃₄₅₆₇₈₉
465 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 11:40:49 ] ComboBoxの項目の表示色を項目内容によって変えるとき DrawItem()でDrawString()すれば良いんだけど。 ComboBoxの数が多いのでユーザコントロールにするとしたら どこでDrawString()すればいいんだろう? OnDrawItem()で直接書いちゃっていいのかな?
466 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 23:19:39 ] その前にやってみれば?
467 名前:デフォルトの名無しさん [2009/05/14(木) 01:11:13 ] >>465 OnDrawItemでいいよ。
468 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 09:36:16 ] ありがとう。 OnDrawItem()でうまくいきました。 ついでに背景色とかも変更してみます。
469 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 16:20:55 ] 指定したディレクトリ以下のすべてのファイルを効率的に列挙していく場合どのクラス、メソッド使うのがいいですか? GetFilesみたいにリストを作って返すのではなくWin32APIのFindFirstFile/NextFile相当のものが使いたいんですが。
470 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 17:01:05 ] Linq
471 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 17:08:21 ] FindFirstFile/NextFile
472 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 17:18:48 ] .NETは非コンテナに対するイテレータが弱すぎる
473 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 17:29:26 ] yieldがありゃ十分だろ
474 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 17:30:22 ] >>469 .NET Framework 4.0 のGetFiles
475 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 02:24:16 ] 実行時の object 階層を値込みで表示用の tree にまとめ上げたいんだけど、 その手のライブラリなど、ご存知の方いますでしょうか? Reflection で自前 で再帰するしかない?
476 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 02:42:10 ] CodeProjectとか探せばありそうな予感。 まぁ実装してもたいした手間じゃな下げだけど。
477 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 13:13:47 ] >>475 >実行時の object 階層を値込みで表示用の tree にまとめ上げたいんだけど、 object階層の意味がよく分からないけど、 Visual Studioのウォッチウィンドウみたいな感じで インスタンスの情報を展開してくれるのが欲しいってこと? だったらオブジェクト参照が循環している場合もあるので注意かな。 シリアライザ/デシリアライザみたいにグラフとして扱うか、 ウォッチウィンドウみたいにクリックするまで子ノードの評価を行わないといった 工夫が必要になると思う。
478 名前:475 mailto:sage [2009/05/16(土) 16:25:07 ] >>476 いや、それが結構面倒くさい。CodeProject はなさそうでした。 >>477 なるほど、シリアライズして XML を使うのもありですね。 どうもありがとう。
479 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 16:58:37 ] ソースいじくれるのならExpandObjectConverterでPropertyGridとかがお手軽じゃね
480 名前:90 mailto:sage [2009/05/16(土) 20:36:16 ] すいません、教えてください。 ユーザコントロールを作成していますが、 既存の型を使用した場合は問題ないのですが、enum型を定義して 使用すると、このコントロールを使用するプログラムで デザイン時に初期値を選んだ場合は問題ないのですが他の候補(この場合type2)を セットすると 「'System.Windows.Forms.Control.ControlCollection' に 'xxxComboBox' の 定義が含まれておらず、型 'System.Windows.Forms.Control.ControlCollection' の 最初の引数を受け付ける拡張メソッドが見つかりませんでした。 using ディレクティブまたはアセンブリ参照が不足しています。」のエラーになります。
481 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 20:39:20 ] 名前を間違えました。90のかた申し訳ありません。 ソースはこんな感じです。 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; } }
482 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 20:40:31 ] private Color _FirstBGColor; [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に追加するにはどのメソッドを使用すればいいのでしょうか?
483 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 22:32:52 ] 使う側を this.xxxComboBox1.ItemDrawingMode = 1; にしたらエラーでないよね?
484 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 22:41:13 ] 何もおかしなことはない。エラーメッセージの通り this.Controls は Control.ControlCollection クラスのインスタンスだろ
485 名前:480 mailto:sage [2009/05/17(日) 08:30:40 ] >>483 , 484 ありがとうございます。 this.xxxComboBox1.ItemDrawingMode = 1; は型が違うのでエラーになります。 呼び出し側でusing Controls;を定義して、コードで(例えばForm1_Load内で) xxxComboBox1.ItemDrawingMode = xxxComboBox.DrawingMode.Type2; のように書けば、正常にビルド・実行可能です。 ただし、先程書いたようにデザイナからプロパティ値を変更すると エラーになります。ControlCollectionにxxxComboBoxを追加して 導出してやらないといけないのかと思いますが、やり方が分かりません。
486 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 09:23:29 ] 名前空間にglobal::Controlsなんてのはやめようよ せめてライブラリ名.Controlsに
487 名前:480 mailto:sage [2009/05/17(日) 11:08:57 ] お騒がせしました。解決しました。 そうだよな、namespaceの名前を変えよう・・・ ということでControlsからmalib.Controlsにnamespaceを変更したら ちゃんと動作しました。
488 名前:デフォルトの名無しさん [2009/05/20(水) 21:40:44 ] この言語笑うしかないわw いい意味で。 今C#の勉強の意味もこめてC#のいろんな機能をフルに利用するつもりで ちょっとしたプログラムを作っているんだが 本当にC++、Javaから発展してきた言語とは思えん。 まず、DataGrid使って表を作る。 row.SetValues(1,2,3)とやることで、一行のデータを一気に入れられる。 そこで一行全部の背景色をつけたいと思った。 SetValuesと同じように、row.SetStyle(style)とやりたかったが、 残念ながらSetStyleはセルごとしかなかった。 DataGrid(正確にはDataGridViewRow)になんでSetStyleが無いんだよ!って 怒るような事例なのに、拡張メソッドを使うことで継承を利用せずに いとも簡単にrow.SetStyle()を付け加えることができるとはw
489 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 23:09:50 ] >>488 それでC#にケンカ売ってるつもり? まさかそんなわけないよねwww
490 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 23:13:11 ] C#はあれだよあれ メロンパン言語だ
491 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 23:25:01 ] どう見ても誉めてるじゃん
492 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 23:36:57 ] コンポーネントと言語をごっちゃにして、的外れだけどな。
493 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 00:24:35 ] うん C# の話じゃなくてフレームワークの話だな
494 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 00:25:41 ] C#じゃなくてWinFormsの話だな。 C#はソースが読みやすいとか、一貫した仕様でスッキリしてて覚えやすいとか色々あるけど、 何よりVSっていう最強のIDEが付っきりで開発支援してくれるのが最大のアピールポイントだと思う。 VSが無ければ他の言語でいいけど、一回VS+C#で慣れると他の言語やる時にかなりメンドクサイ。 ・・・あれ、ここって相談室だよな?
495 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 00:34:35 ] C#ならまずdelegateを褒めたいな。リスナめんどい。
496 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 00:42:09 ] Enumerable.DistinctにはなぜFunc<TSource, TSource, bool>を受け取るオーバーロードがないんだ
497 名前:488 mailto:sage [2009/05/21(木) 00:44:37 ] >>492 > コンポーネントと言語をごっちゃにして、的外れだけどな。 言っとくけど、言語の話だよ。 mix-inといえばわかるかな? (標準ライブラリの)クラスに、メソッドを後付できる。 という言語仕様。
498 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 00:47:05 ] 拡張メソッドは便利だな、で終わる話なのに、つらつら書かれても・・・ ってことを言ってるんだと思うよ。
499 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 00:48:35 ] 俺「拡張メソッドは便利だな」 他の人「そうだな」 で終わってくれればいいのに、 コンポーネントとかWinFormsの話だなとか 間違ったこと言い出すからレスせざるを得なかったんだよw
500 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 00:49:48 ] >>497 あきらかに主題の文章量と副題の文章量の比がおかしいww おまえは女かwwwwww
501 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 00:51:06 ] >>499 先に言っとく。基地外(500など)は無視したほうがいいよw
502 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 00:52:42 ] >>501 おけw 間違ったことを何も言っていないのに、 なんで変なやつがまとわりついてくんだか。 こちとら本格的にC#はじめて五日目だ。なめんじゃねーぞw
503 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 00:54:31 ] それでは次の型どうぞ〜
504 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 01:01:24 ] System.Collections在住 : ArrayList さん 最近みんなジェネリック、ジェネリックって言って僕を呼んでくれないんです。 昔はあんなにちやほやされてたのに・・・。 これから僕はどうしていけばいいんでしょうか。
505 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 01:02:54 ] つまらん それでは次の型どうぞ〜
506 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 01:42:30 ] ブラウザの機能が安定しません。 public Form1() { InitializeComponent(); webBrowser1.Navigate("www.google.co.jp "); } たったこれだけの実装ですが、googleのページがすぐに表示されるときと ずっとまっ白でまったく表示されない時があります。 環境は、XPProSP2、IE6です。 どなたか解決方法を知りませんか?
507 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 01:47:34 ] つける薬は無い
508 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 01:48:23 ] ロード後に Navigate しても状況は一緒?
509 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 01:54:11 ] ロード後にというのがよくわかりませんが、 ボタンをひとつつけて、その中でNavigateしても状況はかわりません。 非常に安定しないんです。
510 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 01:56:19 ] ウェブブラウザーコントロールは一度「about:blank」を表示してから 目的のページを表示するんが一般じゃなかったっけ?
511 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 02:04:35 ] >>510 書き忘れましたが、それも試して効果はありませんでした。 public Form1() { InitializeComponent(); webBrowser1.Navigate("about:blank"); webBrowser1.Navigate("www.google.co.jp "); }
512 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 02:06:14 ] じゃあ、無理じゃね? 素直にリロードしてもらえよ。
513 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 02:13:33 ] わかりました。 自分でもかなり調べてダメだったので、諦めることにします。 ありがとうございました。
514 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 02:51:04 ] 前にAxWebBrowser使ってた時に俺もそんなことあったな。Navigateするタイミングだと思うんだけど。 起動時にNavigateするようにした時に稀にあった。 とりあえず、起動時にいきなりNavigate使う時はコンストラクタじゃなくてLoadイベントなり登録してそこでやった方がいいと思う。 それでこの症状が直るわけではないと思うけど。
515 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 12:03:16 ] >>506 webBrowserだけじゃなくて IE6のそのものが、ずっと真っ白のままで表示されないことがあるんだが・・・ AVGのリンクスキャナを停止してからは少しマシになったかも? 普段はChromeを使っているから見なかったことにしてるけど。
516 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 14:18:15 ] >>506 とおんなじコードで試してみたけど、 何度やっても問題なく表示されるな。 環境はXPProSP2、IE6、VS2008Pro
517 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 14:49:26 ] webBrowser1.BusyがTrueのときそうなるんじゃないか?
518 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 15:58:51 ] >>515 ウィルス対策ソフトは切ってます。 >>516 ほんの2日ほど前まで私もその環境でしたが、なぜか動きません。 XPProSP3、IE8、VS2008Exにしましたが、改善はありません。 >>517 ちょっと見てきます。
519 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 16:02:12 ] 取り敢えず514な System.Windows.Forms.WebBrowserはコントロール上に乗って無くても大丈夫なように作られてるけど一応
520 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 16:23:25 ] >>517 ■PG public Form1() { InitializeComponent(); Console.WriteLine("IsBusy:" + webBrowser1.IsBusy); webBrowser1.Navigate("about:blank"); webBrowser1.Navigate("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の前後に入れてもまっ白になることが多々ありました。
521 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 18:07:17 ] Shownを使え
522 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 22:09:23 ] IE でダメなら、WebBrowser でもダメだろよ。
523 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 22:32:09 ] ReadStateがcompleteになるまで待ったほうがいいんじゃないかな?
524 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 22:49:46 ] ContextMenuStripに追加したToolStripMenuItemの DropDownItemsに追加したToolStripMenuItemのイメージ余白の消し方を教えてください。 1階層目はShowImageMarginをFlaseにすれば消せるのですが 2階層目以降のToolStripMenuItemは余白が出たままになってしまいます…。
525 名前:デフォルトの名無しさん [2009/05/22(金) 01:41:24 ] >>313 さんのMecabの返り血をAnisで受けると文字化けするんですけど、 文字化けしない方法をどなたか教えてください orz
526 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 01:44:57 ] キャー!
527 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 01:46:46 ] PtrToStringAuto だとどうなる?
528 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 02:00:25 ] >>527 こんななりました。。 ?慣???麩????????????弊(ry
529 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 02:26:54 ] Shift_JIS(CP932)をUTF-8と誤認識してるんじゃね。
530 名前:デフォルトの名無しさん mailto:sage [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);
531 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 06:06:52 ] これはひどいコード・・・
532 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 06:24:15 ] なんのためのマーシャリングなのかって感じだな
533 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 14:52:19 ] printPreviewDialog1.Bounds = this.Bounds; printPreviewDialog1.ShowDialog(); こう書いても何故かthisと重なって表示してくれない 大きさは反映されるのに位置が自動的に決定されてしまう 解決方法知ってる方いたら教えてください
534 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 15:08:59 ] ウィンドウの初期位置を指定するプロパティがあるからそれをManualだったかなんかにする
535 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 15:32:25 ] PrintPreviewDialogにStartPositionプロパティは無いみたいです
536 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 15:40:11 ] .NET Framework クラス ライブラリ PrintPreviewDialog..::.StartPosition プロパティ
537 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 15:49:14 ] インテリセンスに出ないので無いと思ってましたが頑張って手打ちしたら出来ました ありがとうございました
538 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 15:55:42 ] >頑張って手打ち ワロタ 気持はわかる
539 名前:デフォルトの名無しさん [2009/05/23(土) 18:31:31 ] >>424 クソワロタ
540 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 01:39:48 ] 笑い事じゃねえよ!
541 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 11:01:56 ] いや、声出して笑っちゃったよw ユニークな仕事だなw
542 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 12:58:03 ] たぶん日本で唯一だy。食いっぱぐれなくていいな。
543 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 14:30:22 ] \拍手を打つ仕事があるときいてやってきました/
544 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 16:14:58 ] ListBoxの、選択されたアイテムを囲っている破線を消したいのですが可能でしょうか? なぜか一瞬だけ、選択していないアイテムに破線が出るので消したいと思っています
545 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 16:45:38 ] >>544 独自描画にすれば消せるんじゃないかな。
546 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 10:30:51 ] その破線はキーボードフォーカスの存在を見せるためにある。 勝手に消されると状況によってはユーザーが混乱すると思うが それでもいいなら>>545 の言うようにオーナードローしては。
547 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 20:30:10 ] label.Text = "Value: "; このようなValueを表示するラベルを貼りました。 スペースの後に増減する数字を代入していくのですが、どうやるのがいいのですか? "Value: "が無い場合は単純で、 labal.Text += i.ToString(); でよかったのですが、、
548 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 20:45:57 ] >>547 labal.Text += i.ToString(); = labal.Text = labal.Text + i.ToString();
549 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 20:49:05 ] >>547 string.Format
550 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 22:01:44 ] if(i==0) label.Text = "Value: 0" else if ....
551 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 17:38:53 ] コンストラクタ名のとこにクラス名書かなきゃならないという無様な仕様は 未来永劫そのままなの?
552 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 17:59:09 ] そりゃ、そんな根幹にかかわるところ変更はできないだろ。 嫌なら新しい言語作るしか。
553 名前:デフォルトの名無しさん [2009/05/30(土) 18:11:25 ] 不自然かもしれないけどC++やJavaで十分に受け入れられてるからな はじめの頃のC#ではキーワードを少なくすることが重視されてたみたいだし
554 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:23:57 ] Javaの、ソースファイル名とpublicクラス名を同じにしとかないとエラーだよーん。 の舐めた仕様よりはマシになってるとは思う。
555 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:34:15 ] >>551 同感。同じことを2度書くのは無駄だよな もう.ctorでいいのに
556 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:39:31 ] まあ、元々がC++プログラマーを逃がさないようにする目的があったから、 あの構文は変えようがないでしょ。 C# 開発者的に、C++ との互換性重視しすぎて失敗したなぁと思う部分もちらほらあるみたいなんで、 今よりさらにもうちょっと .NET が普及したら、その辺りなおした新言語を作るのもありかもしれないけど。
557 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:43:24 ] Font Font = new Font
558 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:44:46 ] >>557 var Font = new Font();
559 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:45:32 ] newはインテリセンスがなきゃ発狂する構文だが、あるから我慢できるレベル。 var使う事自体が冗長
560 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:50:41 ] >>559 いやー、var は要るよ。 宣言と代入は分けたい。 new なくすとすると、例えばどういう構文? C++ のスタック割り当て時みたいに、クラス名() だけとか?
561 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:53:18 ] Python みたいに font = Font() とか書けたら嬉しさのあまり自決する
562 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:55:01 ] >>561 それはなぁ、型名と同じ名前のプロパティ定義できる C# だと文法的にあいまいになりそう。
563 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:57:39 ] 後からの拡張とか考えると、new とか var とかの構文解析の起点になる部分は削らない方がいい。 font = Font() なんて認めたら、多分、後から機能足せなくて泣く。
564 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 19:13:55 ] 結局コンストラクタの構文は無駄?必要?
565 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 19:16:03 ] >>561 それ出来るとIntelliSenseの暴発を招くから、今の型推論によるvarでの定義がバランス的にちょうどいい。
566 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 19:16:07 ] 今のC#の方向性考えると必要。 C#の原型とどめないような改変が許されるんなら別にどっちでも。
567 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 19:19:12 ] キーワードconsを導入すれば万事解決
568 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 19:31:22 ] ぶっちゃけなれればどうでもいい
569 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 19:50:07 ] >>565 同感、C#は強く強くインテリセンスを意識した文法であって欲しい。 でないと、今のライブラリでさえ全体を憶えきれないのにこういうサポート外されたら気絶する。
570 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 21:19:51 ] 何でPythonがはやってるんだ? 前に来た時はDが話題だったような…
571 名前:デフォルトの名無しさん [2009/05/30(土) 22:39:22 ] 個人的にはもう少し型を意識したJavaScriptのような言語がはやって欲しいな。
572 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 22:43:12 ] >>571 JavaScriptは十分はやってるだろ
573 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 22:47:18 ] PowerShellいいぞ。PowerGUIのコード補完との相性もかなり良好。 $a = [xml]"<data>foo</data>" $a. で候補にdataが出てくるんだぜ。 ソースコードじゃなくプロンプトで実行しながらじゃないと駄目だけど。
574 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:02:46 ] 「C# .NETアプリケーション開発 徹底攻略 C# 3.0/.NET Framework 3.5対応」 という本で、FormのLoadイベントはコンストラクタ完了よりも先に実行される(ことがある?) とか書かれてるんだけどほんとにあるの? どうもこの本思い込みで書いてるような部分も見られてちと怪しんだが…
575 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:31:51 ] InitializeComponents で子コントロールにプロパティを設定する際に、子から 親フォームが呼ばれてLoadされることが危惧されている。
576 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:38:37 ] そのフレームワークいいのかな 設計が甘いのでは?
577 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:44:14 ] 甘いねぇ。
578 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:47:51 ] >子から親フォームが呼ばれてLoadされる ってどういう状態かわからん…
579 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:49:48 ] んーマルチスレッドと例外絡みのこと書いてあるとこもでたらめだしなー
580 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:51:20 ] ちゃんと引用したらいいと思うよ
581 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 00:11:54 ] >>574 うろ覚えだけど、 Win32だと、CreateWindow()内で、WM_CREATEを直接呼び出してたような気がする (CreateWindow()の復帰値はWM_CREATEの復帰値に依存する) なので、 - C#のFormのコンストラクタ内で内部的にCreateWindowの呼び出しを行う - FormのLoadはWM_CREATEに相当する の2つの条件が成り立てば >FormのLoadイベントはコンストラクタ完了よりも先に実行される は、成り立つかもしれない
582 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 00:19:12 ] 子が初期化待たないで親を Visible = true したら起きた。 でも、普通しねえよなぁ、こんなことwww
583 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 00:19:31 ] >>581 そんなこと考えるまでもなくマネージドだけで成立するよ、意味があるかどうかは別として 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(); } } 相互参照はやっかいだね
584 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 00:22:05 ] namespace WindowsApplication1 { public 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。
585 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 00:31:27 ] その前に コンストラクタでこんなことしていいんか
586 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 00:38:47 ] そもそもそんなこする方がやばいんだから しないように修正するべきだろう。
587 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 00:39:33 ] フォームをNewしたらいきなり表示されるとか、冗談ではないわ。
588 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 00:46:51 ] しないように済む方法を指導しないテキストがクズだな。
589 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 00:46:50 ] 引用した方がいいんだが、何せ立ち読みで読んだだけなんで、すまんね。 しかし、デリゲートの非同期実行でEndInvokeせずに、なんと例外が無視されてしまうのだ!! みたいなこといって、非同期実行するメソッド内で即座にコントロールにInvokeして、これで例外をとれる っておまえそれ非同期実行の意味全然ないだろうがよとか、こんなの見るとなんか書いてあることが信用できない。
590 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 01:04:13 ] あー、エスパーすると、非同期実行すると例外取れないから同期しましょう、 と書いてあるのか?
591 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 01:11:44 ] そういうこと
592 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 01:17:58 ] その本でスレッド周りに何書いてあるのか、ちょっと気になってきたww
593 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 01:39:23 ] 意外と好評な書評も。 mag.autumn.org/Content.modf?id=20090526140144
594 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 02:11:24 ] んー今はどうかわからんけど、 Formは2回以上ShowDialogすると動作保証されない だった気がするけどな。 ナレッジに出てなかったっけな…
595 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 07:20:32 ] C#で複数接続ができるサーバーを作成しているのですが、多くの接続を受け付けると、 「転送接続からデータを読み取れません: ブロック不可のソケット操作をすぐに完了できませんでした。」 というエラーが出て、例外が発生してしまいます。 誰かこのエラーの解決方法をご存じないでしょうか? よろしくお願いします。
596 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 07:30:32 ] XPのコネクション制限に引っ掛かってるとか。
597 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 07:48:28 ] >>596 XPのコネクション制限には引っかからない程度でも発生するんですよね… # 10本くらいConnectが発生すると5本目くらいからエラーが発生→例外→…という感じで
598 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 09:22:23 ] サーバOSやTCP/IP Pacherとかで制限ない状態で試してみれば?
599 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 09:51:46 ] その前にプログラムを
600 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 13:22:18 ] 自分以外のコネクションが5〜6個あるんでしょ?
601 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 14:13:55 ] VistaSP2と2008サーバでは撤廃されたっていうからXPでもパッチこないかな・・・ いやがらせとして残されたりして。
602 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 14:15:20 ] >>593 これWM_CREATE代わりなんだ、確かにShowDialogするごとに呼び出されるね、名前が悪いよな。
603 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 12:05:26 ] C#というか.netで使える rubyでいうところの,Narray pythonでいうところのNumPy のような配列の形で演算してくれるクラスライブラリはありますか?
604 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 12:21:34 ] >>603 コンセプトがまるで違うけれども、あえて言えばLINQがそのような処理を担当するライブラリと言えるかと思われます。 だけれども、そういう操作そのものを求めるとちょっと、というかまったく違うものかも やりかたとしては二つのシーケンスを一つのシーケンスにまとめる、そこに select なりで全体に演算を施す、といった具合。
605 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 12:46:05 ] 数値演算ライブラリが欲しいと言ってるのに、linq挙げるってのはないだろw でも、.NET向けってのは商業ものしか知らんわ。 BLAS系の.NETバインディングは探せばありそうだけど。
606 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 12:53:14 ] >>603 詳細はまだ調べてないけど、.NET で線形代数を助けてくれるライブラリなら Math.NET があるみたい。 mathnet.opensourcedotnet.info/
607 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 13:01:57 ] >>605 そうですか?むしろ汎用度の高いライブラリだと思うんですけどね。 自分は今は線形代数周りは全部LINQで構築してしまいましたけど
608 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 13:04:41 ] そもそもLINQってのはテクノロジー()笑の名前であって、ライブラリの名前ではないと思うんだが。
609 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 13:04:55 ] LINQのコンセプト、モナドと抽象線形空間の相性がいいというか…… 実数上の線形空間はもちろん、複素数でも有限体でもいけるし、いっそ関数を基底とかも。 まぁなんかそんな感じてす
610 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 13:15:52 ] LINQは集合演算 mapもあるしリスト演算(コンベア的な)もつかえるし そういういみじゃん
611 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 13:26:56 ] LINQtoObjectによる各種演算処理からLINQtoSQL or LINQtoXMLと次々と同一コンセプトでつながっていくのも気持ちいいしね。
612 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 18:04:30 ] 列挙型を含んだクラスをシリアライズしようとすると 例外が発生してしまいます。 ↓こんな列挙型です。 public enum ActionType { [XmlEnum(Name = "Single")] One, [XmlEnum(Name = "Double")] Two, [XmlEnum(Name = "Triple")] Three } なにか方法などありますでしょうか?
613 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 18:10:14 ] 例外の詳細ぐらい書けよ
614 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 18:15:12 ] IXmlSerializableを実装しろ
615 名前:デフォルトの名無しさん mailto:sage [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)); }
616 名前:デフォルトの名無しさん [2009/06/01(月) 22:25:23 ] それはいいけど渡し方がダメ アンマネージコードに渡したデリゲートはstaticフィールドに入れとかないとGCされて死亡
617 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:25:31 ] エラー時コールバック(イベント)でも登録できるようにするべきじゃないかな。 常にコンソール出力だけでOKなら別にいいかもだけど。
618 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:29:47 ] >エラー時コールバック(イベント)でも登録できるようにするべきじゃないかな。 >常にコンソール出力だけでOKなら別にいいかもだけど。 おっと、CERじゃこんなのは無理か。 ってその前にコンソール出力も無理なんじゃないか?
619 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:37:08 ] なんかイマイチやりたいことが伝わってこない 例外握りつぶしてしまっていいのか
620 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:45:50 ] >public delegate bool CallBack(); >static void MyCallBack() >Hoge(new CallBack(MyCallBack)); 返り値違うぞ
621 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 23:07:24 ] >>616 GCHandleいじるのが作法上正しいのでは
622 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 23:22:17 ] >アンマネージコードに渡したデリゲートはstaticフィールドに入れとかないとGCされて死亡 このコードだと問題ないけどね。 もちろんこういう構造じゃない場合は問題あるので考慮は必要。
623 名前:デフォルトの名無しさん [2009/06/01(月) 23:29:05 ] 問題ないかどうかはHogeの中身による 非同期にコールバックされたり戻ったあとも向こうで関数ポインタ保持されたりしたら死ぬ
624 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 23:59:45 ] 非同期にコールバックする頃にはプログラム終了してるんじゃないかな、この場合
625 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 00:11:12 ] この場合ってhogeの中身が何も書いてないんだから 何も判断できない
626 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 00:31:25 ] static void Main() { Hoge(new CallBack(MyCallBack)); } だから後でコールバックされるような使い方じゃないと「想定したら」、だよ。>このコードだと問題ない
627 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 07:29:09 ] ホゲが何者かわからん状態で てめー勝手に都合の良い想定をするのは愚の骨頂じゃないか
628 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 09:57:11 ] 未来永劫大丈夫。 PCのメモリも640KBで十分だし。
629 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 11:05:07 ] 別に普通の想定だろ。 まあ別に軽く突っ込んでみただけで、ホントにそれでいいとは思ってないよ。
630 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 11:28:47 ] >>628 いつまでそんなネタひっぱってんだよ化石
631 名前:デフォルトの名無しさん [2009/06/02(火) 19:10:23 ] 登録しといて後で呼び出してもらう形の方が想定としては一般的だと思うんだが P/Invokeでは特に
632 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 19:10:47 ] 未来永劫ひっぱるぜ
633 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 19:27:06 ] だから、このコードだと、なんだろ?
634 名前:デフォルトの名無しさん [2009/06/02(火) 19:33:36 ] Hogeが非同期ならこのコードでも死ぬよ
635 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 19:44:12 ] CallBackが引数無い、返り値はbool、例外は関数の外に出したくない 工夫のしようがないよね hogeのインターフェイスを変更可なら色々出来るが
636 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 22:18:06 ] >>634 いやまずあり得ないね。 まあ意味ないしどうでもいいけど。
637 名前:デフォルトの名無しさん [2009/06/03(水) 17:19:43 ] ちょっと相談させて下さい。 ネットワーク経由で送られてくるバイトストリームがあるとして、あるバイト位置まで読み進めないと どんなフォーマットのパケットが来てるか分からないという形態のプロトコルを処理する場合、C#的には どう書くとするとスマートなんでしょうか? 結果的には、パケットの種類に応じた構造体として後の処理で使えるようになればいいです。 C言語だと共用体を使うとスッキリ書けますが、C#でFieldOffsetを使うのは何となく邪道な気がします。
638 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 17:46:28 ] 自分なら迷わずFieldOffsetを使うけど、なぜそれが邪道なのかはわからん。
639 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 18:08:37 ] >>637 何で邪道なんだろ どうしても嫌ならビットシフトやらこねくり回せば?
640 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 18:15:36 ] 指定位置までMemoryStreamに入れといて データの種類が判明してから適宜変換して使うとか?
641 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 19:44:55 ] >>637 バッファと実インスタンスを分けて書くしかないんじゃないかなぁ
642 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 19:45:46 ] >>637 ある時点でpush backできるストリームを使うか作る
643 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 20:48:33 ] 経験者に聞きたいのですが、C#はC++やCに比べて使いやすいでしょうか? 普及度とか今後を見たときに覚えておくと便利ですか?
644 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 20:51:46 ] 段違いで使いやすい。 今後は、まあ、CやC++は上級者のための代物になりつつあるから 今からC,C++を一からやるよりは良いんじゃないかね。
645 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 21:12:48 ] C/C++で書く経験自体はしておいた方がいいと思うけど、実用的にはC#のが楽。 まぁ、C#じゃなくてもJavaでもRubyでもErlangでも好きなものを使えばいいと思うが。
646 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 21:17:40 ] レスありがとうございます。 C#は確かに使いやすくなっているようなイメージがあるのですが CやC++でしかできなくて、C#じゃできない事ってあるんですか?
647 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 21:22:53 ] 大きく見ればデバイスドライバとかシステムフックとかぐらいか
648 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 21:39:34 ] >>646 .NET言語だから移植性に難
649 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 22:03:33 ] cしらないとdllimportかけないじゃん
650 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 22:08:27 ] 全部やっといた方がいい
651 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:02:14 ] >>646 OS関係の高度な操作とかは、C#では茨の道かも。 特定のCPUに特化したプログラムの作成とかも難しい感じ。
652 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:42:57 ] そういう、プリミティブなことをするか、組み込みなどで選択肢が少ないこと、よほどの高速性(これもものによっては関数型のほうが速い場合もあるが)でなければ生産性などなど考えたらC++というのは選択肢にはあがらんなぁ・・・ 昔C++で今はC#メインだが、コンパイル速度が激速な点が一番うれしい。
653 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:53:16 ] Windows上で動く普通のアプリを作るだけなら C#だけで充分だね。
654 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 06:39:10 ] C#がここまで評価される言語になると誰が予想しただろう
655 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 08:06:22 ] そりゃ、C# でググって出てくる上位サイトは たいてい1.0とかそれのCTPの頃からC#の記事書いてるし、 その人らは予想してただろ。
656 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 08:08:06 ] .NET 1.0の頃は見向きもせずC++使ってた。 .NET 2.0とVS2005が出た時に、熱心に布教してたMS見て試しに使ってみたら意外と良くて、そこから徐々に乗り換えた。 >>654 VistaがまだLonghornと呼ばれていた頃 Win32を置き換える!とか言って浮き足立ってたなぁ >Longhorn登場時期と予想されている2006年、PCは4〜6GHz/2コアのCPUを搭載し、メモリ2Gバイト超、HDD1Tバイト超 2003年の記事眺めてて噴いたw 今だからこそ言える。ねーよwww
657 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 11:41:06 ] >>652 >昔C++で今はC#メインだが、コンパイル速度が激速な点が一番うれしい。 C#が速いというよりもC++が致命的に遅いというのが実態な気がする。 いずれにしても、ある程度の規模を超えたらC++のコンパイル時間・リンク時間は実用的でないです 特にリンクが遅いのが余りに致命的
658 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 11:47:56 ] >>656 Core2辺りで一応達成といえるんじゃないかな、Pen4と同クロック比較で2倍程度(当時のCPUの想定はPen4クラスだと思われる) メモリは一応2Gにはなった、HDD1Tバイト超だけが実現されていないかと しかし、必要ない人には今の時点でもHDDは余っているだろうね
659 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 14:18:04 ] >>657 ヘッダ書き換えた時のコストがあまりにもひどいと思うよ。
660 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 14:20:34 ] >>659 それに関しては、分散コンパイルを使えば……、あんまり解決してないけど一応解決する けれどもリンクはもう完全にお手上げ
661 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 14:27:54 ] 今や、マネージコードで書かれたFPSなんかが出てきても、驚くほどのことじゃないな。
662 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 15:06:12 ] FPSって何?
663 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 15:08:35 ] ファーストパーソンシューティング ゲームの一ジャンル。欧米で今一番はやってる形態
664 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 15:12:38 ] ファーストパーソンズシュータアァー!
665 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 17:06:53 ] 空気よまずに、、、 フレーム・パー・セコンド
666 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 17:52:15 ] そういや、Silverlight3で書かれたFPSのデモがあったな 普通に3Dの画面がサクサク動いてて驚いた
667 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 18:33:59 ] >>666 これ? www.innoveware.com/quakelight.html
668 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 18:55:11 ] >>659 そういうコストを減らすために ヘッダの依存を分散させる設計が必要 そのコストが高いってことは設計が悪いってことだ ヘッダのあるプログラミング言語的には
669 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 19:14:07 ] template…
670 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 21:22:45 ] >>668 それが最近の統計情報によると、ヘッダの重複コンパイルがコンパイル時間の8割がたを占めていて ぶっちゃけヘッダ別けファイル別けするよりも、全ヘッダ・ソースを一つに結合してコンパイルしたほうがマシって状況にあるらしい。 さらに、リンクファイルに無闇に外部参照ラベルが出現している上、それがCからの名残でツリー構造ではなく名前空間にヘッダやらフッタやら特殊規則の名前やらが無節操にぶちまけられてまともに検索もできない有様。 古すぎるんだ、技術的に…… 昔はこれでよかったんだよ、むしろこうする事により高速なコンパイルが期待できたんだ、だけどこの方法は数が増えるとコンパイル時間が爆発的に増えるんだ。 ちょっともうスレとは関係なさすぎますね、自粛します。
671 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 21:55:00 ] 倍々ゲームでコンパイル時間が増えていたが、それでもコンピュータのパフォーマンスも倍々ゲームで増えていたので しばらくは問題にならなかったんだな、しかしDiskIOその他は倍々ゲームパフォーマンスアップはしなかったので次第に問題が表面化してきたと。
672 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:53:55 ] >>670 ヘッダに全部コードを書いて、ソースはそいつをインクルードしてるだけってソフトがあったんだが、 それが理由なのか。
673 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 00:56:58 ] それはアレやないすかね、テンプレートの扱いがややこしいので 割り切って全部ヘッダにしただけやないですかね。 C++ は重複の多さもあるけど、コンパイル時に色々やりすぎって 話もあるんではなかろうか。
674 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 01:45:06 ] ひとまとめにしたほうがコンパイラも最適化を聞かせやすい品。 SQLiteがやってる。
675 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 02:10:54 ] .NetFrameworkのJITってSIMDを使わないんですか? 使う事があるのはmonoだけですか?
676 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 02:48:54 ] せいぜいmovqくらいじゃね
677 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 02:58:36 ] >>673 C++のコンパイル速度の遅さは文法の複雑さが主な原因。
678 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 03:10:57 ] >>674 VC++はリンク時の最適化というのがあって、 それ使えば全部ひとまとめにしたのと同じような効果が得られる。 まあこれ使うとさらにリンク時間が長くなるんだが。
679 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 03:47:29 ] >>675 SIMDが使える環境では使うようにJITコンパイルされる。 Mono.SIMDはSIMDによる"手動の最適化"を"マネージコードだけ"で行えるのが武器。 .NETでやるには部分的にC++/CLIを用いてネイティブで実装する必要がある。
680 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 03:53:06 ] むしろC#のコンパイル速度が速すぎる。 入力中にバックグラウンドでコンパイルしてるんじゃないかと疑ってしまったぞ。
681 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 07:14:37 ] >>680 VBにしてもJavaにしてもこんなもんじゃね? デルファイとかさらに早いし >>677 無意味なコンパイルだと思われる、一度コンパイルし結果が得られるはずであっても、直前のヘッダファイルが変更されると 全部コンパイルし直さない限り、そのままでいいか確定しないからな。 コンパイルの流れがちゃんとすれば、C++よりはるかに複雑な構造は取り扱えるし、C#だって今となってはC++と比較して遜色ないくらい複雑な内容をもっているし。
682 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 07:21:48 ] >全部コンパイルし直さない限り、そのままでいいか確定しないからな この原因を作り出しているのがプリプロセッサで、C系のプリプロセッサの仕組みは今となっては非常にマズイという事になっている。 それとincludeされるファイルがincludeし始めると、対象が指数関数的に増えるのも問題。 C#の場合はどんなに複雑でも、各ファイルが独立しているので、コンパイル時間は線形的にしか増えない。今の言語はほとんどこのスタイル。
683 名前:デフォルトの名無しさん [2009/06/05(金) 09:43:48 ] 構文解析やコード生成自体はそんなに大したコストじゃないよ
684 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 11:11:08 ] >>683 十分デカイって、特に何か処理のする事がない、ただラベルの付け合わせだけのリンクでさえボロボロのC++においては
685 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 11:25:48 ] C言語とオブジェクトファイルをリンクするldの方式は1960年代の技術だからな、C++も基本的にはこの考え方を踏襲しているわけで かれこれ40年越し、そろそろ半世紀前から使われてきた技術だ、さすがに熟成通り越して酢になってますよ。 今でも実用的に使われているというのはそれだけでも凄い事なんですけどね。
686 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 12:04:10 ] >>680 実際にバックグラウンドコンパイルを研究する価値はあるんじゃないか?w というか、きっと誰かしてる。
687 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 13:55:37 ] たしかにコーディング中の入力待ちアイドルタイムって長いもんな
688 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 15:35:15 ] これからのC++ではC#やVBがIntelliSenseを使うための情報収集をする時間でコンパイルか…… 追い詰まっていると思われ
689 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 19:08:53 ] >>686 ていうか書いた奴が インテリセンスで即反映、コードチェックも即掛かる なんだからバックグラウンドってーか入力がある度にやってるんじゃないか
690 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 20:20:30 ] C++も使うが、Visual Studio 2010はびっくりするほどIntelliSenseが効くようになったのが凄い。 ブログでも今までのを捨てて新しくしたと言っていたし。 まあそれでもC#には敵わないが。
691 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 21:33:22 ] 個人的にはできる限り早い段階でC++よりC#へ移行させてほしいと願うばかり さすがにもうC++ではやりきれない
692 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 09:41:03 ] C#で十分にできることを、C++でやってるんだとしたら、 それは悲しいことだな
693 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 10:08:20 ] 激しく計算するような分野じゃC#は使えないよ
694 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 10:44:08 ] GUIと通信部分をC#で書いて、計算はworkstationでやってるけど?
695 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 10:47:45 ] いいんじゃない
696 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 11:18:04 ] だから向き不向きあるゆーとろーが 向いてるところに生産性の悪いC++使うことないともゆーとろーが
697 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:28:22 ] 激しく計算するような分野だが、C#に変えちまったけどな C++でスレッド管理めんどくさすぎ、やってられない 結局やりきれずにシングルスレッドで書いてC#より遅くて使い物にならん事多々あり
698 名前:デフォルトの名無しさん [2009/06/07(日) 13:29:49 ] いまならC++を使う状況はメモリを直接参照して変更するような処理かな? いまならC++/CLIつかってその部分だけ書くのが便利かもと思ってる。 C#でちょっとした画像処理をポインタを使用して書いた時は、 unsafeがいちいちめんどくさくてストレスがたまったよ。
699 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:34:34 ] C#のunsafeでだるいならC++でもだるいだろう。 ちょっとコード書き足すだけだし
700 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:35:43 ] C++スレで存分に語れよ
701 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:36:11 ] C++のほうもOpenMPはだいぶ楽だと思う。 C#にもあれくらい簡単に使えるのが欲しい。 というわけで、.NET 4.0の並列化関係のライブラリに期待している。
702 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:37:34 ] OpenMPは総合力に掛ける、使いどころが限定的すぎる。
703 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:43:00 ] そんな最強言語決定戦みたいなのは厨二に任せて、 寛容なC#ユーザーはC++を使う人を一々否定しないって顔しとけよ
704 名前:デフォルトの名無しさん [2009/06/07(日) 13:43:16 ] >>699 いや、アンセーフじゃないC++は普通に業務でつかってるかよ。 書くのは全くだるくはないが、ヘッダの依存関係を解決する方が面どくさい。
705 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:44:29 ] だからC++スレで存分に語れよ
706 名前:デフォルトの名無しさん [2009/06/07(日) 14:15:56 ] public class DoubleList : List<double> ってクラスがあって、 コンストラクタが public DoubleList () { } こうなってる場合は みたいなクラスを作った場合には、 new DoubleList() が呼ばれた時点でList<double>が作られますよね? ここで Listのコンストラクタのうち、引数としてcapacityをとるものを DoubleListのコンストラクタとしても用意したいのですが、どうしたらいいでしょうか?
707 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:24:58 ] public DoubleList(int capacity) : base(capacity) { }
708 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:25:23 ] public クラス名() : base(スーパークラスの引数) {}
709 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:29:44 ] 少しエスパーしてみた、本当に欲しいのはこっちか?、ちがってたらまぁ適当にやってくれ。 using DoubleList = List<double>;
710 名前:706 mailto:sage [2009/06/07(日) 14:31:20 ] >>707 ,708さん それです!ありがとうございました。 >>709 さん doubleの可変長配列に各種メソッドの追加、演算子のオーバーロード等がしたくて DoubleListなんて作ってました。 皆様ありがとうございました。
711 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:39:09 ] >>710 ならば、定石としてはコンポジションをとるべきである、多態性を目的としない機能追加を伴う導出は悪だ。
712 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:41:54 ] extention method もあるな
713 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 15:27:51 ] >>703 C++使う人を否定してるってよりは、 仕事でいやいやC++使ってる自分を否定したいんでは。
714 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 16:17:41 ] DoubleListだが、こいつはIList<T> に対するアダプターパターンで解決するのが基本かと。 演算子のオーバーロードというのだから、線形代数系の何かだと思われるが。 相手がList<double>限定では汎用度が低すぎるしな、double [] にも適用したいだろう。 特にIList系より抽象度が低くてよいのなら、IEnumerable<T>ベースで作ってやればLINQの恩恵にもあずかれるだろうし。
715 名前:デフォルトの名無しさん [2009/06/07(日) 20:13:25 ] スレ違いかもしれませんが・・・ VS2008で、#regionで閉じられたソースを一気に全部開きたいのですが、 何かショートカットキーはあるのでしょうか?
716 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 20:31:32 ] Ctrl+M, M
717 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 20:48:09 ] >716 ありがとうございます。 CTRL+M系で色々できるんですね。
718 名前:706 mailto:sage [2009/06/07(日) 22:30:26 ] >>711 ,712さん コンポジションって public class DoubleList{ private List<double> list; } ってメンバ変数にしちゃうってことですよね? その場合ってインデクサとかList<double>のうちすべてを自分でDoubleListに実装するってことですか? 手間ばかりであまりご利益が感じられないのですが。
719 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:56:24 ] >>718 コンポジションが嫌なら、Collection<double>からの派生にすればいい。 こいつの派生なら許せる。
720 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:10:14 ] >>718 継承は、依存関係が強くなりすぎるのが嫌われる。 手間はかかるけど、我慢してコンポジションにする人多い。 自分も、手間掛ける時間あるならそうする。
721 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:12:28 ] コンポジションを作るプログラム書けばいいじゃん、すぐ終わるよ
722 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:47:39 ] 設計屋のオナニーって感じだな List<double>がダメでCollection<double>は許せるとか 意味不明
723 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 00:19:20 ] Collectionは中の実装に依存しないから。 実装変えるたびに継承関係が変わったら話にならない。
724 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 00:28:40 ] >Collectionは中の実装に依存しないから。 中の実装ってどこを指してんの?
725 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 06:41:21 ] 言ってることが滅茶苦茶だな
726 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 07:41:27 ] >>724 CollectionはList実装であることに依存しない、つー話じゃないの
727 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 09:09:07 ] >>724 以下のような話はわかる? ・.NET においては List って時点で配列リストの事を指してる ・List を継承するってのは「配列リストで実装します」と宣言するようなもの ・後からアルゴリズム変えたい(連結リストにしたり両端キューにしたり)場合があると困る ・コンポジションで作ってれば後から変えるのも自由
728 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 09:27:33 ] is-implemented-in-terms-of関係
729 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 13:32:30 ] グダグタ言わずにインターフェイスは多重継承可、クラスの継承はまずしなくても十分に汎用性が取れないか検討してから クラスの継承は多態性が必要になった時に使う、しかし可能な限りインターフェイス継承。 100の屁理屈より100の実践、守ってやっていれば、なぜそうすることが良いか自然に分かる。
730 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 13:46:19 ] >>718 public class DoubleList : IList<double> { private List<double> list; } こうすべきだな、他に必要なインターフェイスがあるならそれも加えておく。 最新のVS2008ならIList<double>と書けば、此処をクリックしろとマークがでるので、それをクリックして必要なスタブを全部生成すると便利だ。 こうやってList<double>の『実装に依存』させるのではなく、List<double>の『インターフェイスに依存』させるのだ。
731 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 14:00:53 ] 「インターフェースの明示的な実装」 すげー、こんなのあったのか
732 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 14:08:45 ] 結局のところ継承ってのは既に完成しているクラスを改造する行為で、コンポジションとインターフェイスにすると言う事は、 既に完成しているクラスをそのまま利用しつつ、共通項目を共通した方法で取り扱えるようにするという事。 改造する行為はバグを誘発しやすいんだな、なにしろ作った本人どういう手順で改造して欲しいまではあまりドキュメンテーションしないししきれないからね。 ブラックボックスをこじ開けるような行為はしない方が良いのです。
733 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 16:04:05 ] >>730 (スコア:5, 参考になる)
734 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 17:49:24 ] こういう初歩的なのはMSDNで3分でわかる○○等でやっているから見ておくといい 設計方法としてもオブジェクト指向の初歩なので、こういうのを知らなかったなら、一度一からオブジェクト指向を勉強するのがいい。 導出が分かればオブジェクト指向などというメチャクチャなのが時折いるが、あなんのは絶対に駄目だからな。
735 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:04:24 ] なにいってんだかわかんねw
736 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:24:45 ] >>726-727 少なくとも System.Collections.ObjectModel.Collection<T> はIListを実装した配列リストなんだが Collectionも配列リストだ クラスとインターフェイスと一般的な概念をぐちゃぐちゃにして話してないか? インターフェイスはIをつける 一般的な概念はそれとわかるような文脈で書いてくれ 頼むから
737 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:28:10 ] とりあえず大元の質問者がList<double>から継承するっていうんなら、 Listにしかないメソッドを使いたいとかいうのもあるんじゃないか Find系とか。doubleだしな なんで>>730 みたいにIListで十分と思えるのかがわからん もしかしてIListはListの公開メソッド/プロパティ全部カバーしてると思ってる? >>734 まったくだな MSDNも見ずに一般論だけで偉そうに講釈垂れるのは ハタ迷惑なアホだな
738 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:31:49 ] >>737 >Listにしかないメソッドを使いたいとかいうのもあるんじゃないか それは完全に間違っているような気が…… >もしかしてIListはListの公開メソッド/プロパティ全部カバーしてると思ってる? そういう問題ではないだろうという気が…… 危険だ
739 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:33:27 ] >>737 「List<T>にしか無いメソッド」も実装すればいいじゃない
740 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:33:47 ] 深いオブジェクト指向の知識など要らないとは思うけれど、必要最低限の知識はもっていてもらいたいものです……
741 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:38:42 ] MSDNは短い割にはポイント絞った良いセミナーやるからな、見ておいて損は無いよ。 特にビデオ物、流してみておくだけでも思わぬ拾い物が多い。
742 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:43:21 ] そういやjavaとか StackがVectorから派生してるとかいうバカ設計なんだよなw Stackなのにランダムアクセスできるwww
743 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:51:36 ] >>742 処理系によるけど、コールスタックに積んだ引数とか、 普通にSP使ってランダムアクセスする場合の方が多い気がするのだが。 べつに、スタックだからって必ずいちいちpopしなきゃダメってこたないよ。
744 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:55:24 ] >>743 一般的なスタックの概念から外れてるんじゃないかい? >>727 みたいな話になるけども
745 名前:デフォルトの名無しさん [2009/06/08(月) 19:02:05 ] >>743 それならStackなんていらない リストで代用できるしその方が速い
746 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:03:38 ] >>736 あー、そうだった。 でもまぁ、この話って、インターフェースプログラミングのお作法以前の話として、 C#のコレクションの分類に一貫性がないというか滅茶苦茶なのが一番の癌なんじゃないかなぁ。 IListってのがあったら、普通Listはその直系の具象実装だと思うわなぁ。
747 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:04:26 ] 明示的にスタックとしているのにインデクサでアクセスされたらたまらんな。 おお怖い。
748 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:06:01 ] まずいとおもったから作りなおしたんでしょ。1.2だかで
749 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:06:18 ] >>746 まあね
750 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:08:38 ] >>744 コールスタックって、スタックの第一級の応用例じゃないのかね。 >>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のが優位な点も見当たらないが。
751 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:09:08 ] C#のコレクションはLINQと相まって、もういっぺん見直した方がいいとは思う 上のFindの話もそうなんだけど、ああいうメソッドがコレクションについているべきではないと思われるし。
752 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:11:37 ] Find系は以前からあるから、新加入のLINQと役割的に競合してるわけね
753 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:13:10 ] 一発で決まる綺麗な実装は難しいね、LINQの汎用性ときたら半端じゃない。
754 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:13:11 ] >>750 そのへんは相当シビアな速度求められるところだから []演算子で先頭アドレス基準にアドレス計算しなおすだけで ふざけんなって言われるよ
755 名前:デフォルトの名無しさん [2009/06/08(月) 19:14:14 ] SilverlightではLINQと被ってるのはごっそり削られました
756 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:15:35 ] >>754 JavaやC#といった言語はオプティマイズ問題とインターフェイスの問題はきれいに切り分けられるように工夫された言語なんだから、ごっちゃにするなよ。
757 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:17:43 ] >>756 コールスタックの話題だろ? >>750 が持ち出してるのは
758 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:19:01 ] >>754 C/C++で組み込みのリアルタイムシステムを書いてるならともかく、 JavaとかC#で、そのレベルのチューニングを要求するのはナンセンスな気がするのだが。 そもそも、中間言語レベルでも整数のインクリメントなんて1opじゃないのかね。
759 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:20:56 ] >>757 で、コールスタックになったら問題が何か変わるわけ? スタックフレームの知識はあるよ、アセンブラやってたから、心配せずに言ってみな。
760 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:22:56 ] >>757 ん? Stackでランダムアクセスをしちゃいけない理由ってのがあるか否かって話じゃないの? ちなみに、CPUレベルの話なら、pushとpopはほぼノーコストでしょ。 JavaやC#の話をしてるなら>>758 。
761 名前:デフォルトの名無しさん [2009/06/08(月) 19:25:50 ] だからランダムアクセスできたら何のためにリストとは別にスタックがあるのかわからなくなるだろ
762 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:31:02 ] >>761 push()とpop()とpeek()が使える、Listの特殊な場合がStack、って分類なだけでしょ。 実装的にもアルゴリズムのオーダー的にも差異はほぼ無いわけだし。 アセンブラレベルでpushとpopを特別扱いしてるのは、詳しくは知らないけど、 それこそコールスタックで使うとか歴史的理由とかその辺じゃないの?
763 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:32:06 ] >>762 差異がないってw
764 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:37:16 ] >>762 あんま関係ないけど、呼び出しスタックはダイクストラという偉い人がスタックはハードウェア化すべきだとのたまわったので、以後のCPUでは多く採用された。 構造化プログラミングの提唱者の人ね、その後RISCという方法が主流になって再び捨てられた。 歴史的にはそんな感じ
765 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:38:13 ] >>763 実際、Javaではそのように扱っていて、特に問題は起きてないわけだが。 逆に、「ランダムアクセスができるものはスタックとは呼ばない」という定義が 一般的だと主張するなら、それを示してくれ。 「○○という計算機科学の教科書に書いてあった」とかそういうのでもいいよ。
766 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:39:15 ] >>764 そーか、それは知らなかった。勉強になったよサンクス。
767 名前:デフォルトの名無しさん [2009/06/08(月) 19:40:24 ] だから.NETのStackではあえて差異をつけてるんだろ 同じなら二つもいらない
768 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:41:44 ] >>765 無意味なところに話を持っていくなぁ
769 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:53:06 ] Stackでランダムアクセスができるのはおかしい というのに異論がある人がいるとは思わなかったじぇ。
770 名前:デフォルトの名無しさん [2009/06/08(月) 19:57:24 ] できたら意味がない というだけのことなのに…
771 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:01:45 ] >>769-770 じゃあ、コールスタックはおかしくないのか、というところに話が戻るわけだが。
772 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:08:31 ] IListインターフェイス付きのコレクションと、そうでないコレクションは実装は同じでも設計レベルでは分けて考えろという事。 実装からインターフェイスを分離独立せよ、これがわからんやつはプログラマ廃業したほうがいい。
773 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:21:28 ] 0xcc.net/blog/archives/000043.html 他の言語でも、むしろ配列の操作の一部としてpush(), pop()がついてるのが普通みたいだね。
774 名前:デフォルトの名無しさん [2009/06/08(月) 20:22:57 ] Visual C# 2008 EEで開発しています。 以前C++で書いた関数を利用するにはどうすればいいですか?
775 名前:デフォルトの名無しさん [2009/06/08(月) 20:23:42 ] 書き直しましょう
776 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:26:31 ] >>773 そんな結論になるおまえにびっくりだ
777 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:29:08 ] >>765 Introduction 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.
778 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:29:12 ] >>774 今すぐネットを切断するんだ、そして冷水を浴びろ、それで利用方法を思いつけるはずだ。
779 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:30:16 ] >>776 C#みたいに、配列とスタックを全く違うものとして扱う言語の方が特殊なんじゃないの。 多くの言語では、スタック操作は配列が提供する機能の一部として扱っているようだが。
780 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:32:22 ] >>779 まさか、サイズ不定の場合はリンクリストにするのが普通だろ、こんなの常識
781 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:34:54 ] 俺アセンブラはMIPSアセンブラしか知らないけど スタックポインタでランダムアクセスっぽくしてるのは ランダムアクセスというよりPeekの操作に該当するんじゃないかな
782 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:36:10 ] >>781 おまえさんは抽象的に考えるということを一度勉強すべきだな
783 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:38:18 ] 2010年に.NET2.0SDKに置き換わるものが出るの?
784 名前:デフォルトの名無しさん [2009/06/08(月) 20:39:46 ] >>781 こんなところでグダまいてないでさっさとゲーム作れw
785 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:42:33 ] >>777 俺も真っ先にブックサーチでそれを探したけど、 「(カフェテリアで使っているばね式なお皿のスタックは)一番上のお皿のみが アクセス可能なので、スタックにpushしたお皿は逆順でpopしてくる」としか書いてないよね? どこにも、「スタックから一番上以外のお皿を取り出してはいけない」とは書かれていないと思うのだけれど。 >>780 なんで突然Linked Listの話が出てくるのか分からないんだけど、 一応聞いておくけど、Linked Listをランダムアクセスしたときの計算量は?
786 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:43:02 ] >>783 SDKなら.NET3.5用のがすでにあるが、一体何を言いたいんだ?
787 名前:デフォルトの名無しさん [2009/06/08(月) 20:45:53 ] >>785 お前プログラマやめた方がいいと思うよ、マジで、才能ないから。
788 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:46:37 ] >>782 どういう突っ込みか理解できないんだけど。
789 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:46:45 ] >>787 煽りはいいので、論理的な反論をヨロシク
790 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:49:09 ] なんだか足し算できない子供が偏微分方程式を教えろと言っているような様相だなw
791 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:51:05 ] と、高卒が申しております。
792 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:51:22 ] >>785 明示的には書いてないが、その例えと同様に定義しているはずだが。 というのは、その先でキューをスタックで実装しろという問題がある。 意図から考えてランダムアクセスができるはずがない。
793 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:55:36 ] ひどいパラノイアだな
794 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:55:44 ] 素直にオブジェクト指向の教科書買って、一週間程度でいいから読めよと…… 余りにひどス
795 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:56:24 ] 質問者不在の不毛なやりとりだな・・・
796 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:57:49 ] >>792 Figure 10.1では、まさに配列で実装したスタック(An array implementation of a stack S)を 例示として出してるように見えるわけだが。 その問題は、「キュー(の操作)をスタック(の操作のみ)で実装しろ」という以上の意味はないんじゃね。 飯食ってくるのでちょっと返事遅れる。
797 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:04:05 ] >>795 だって、これを見た初学者が 「スタックは配列とは関係ありません。サイズフリーなリンクリストで実装するのが正統(キリッ」 とかいう謎の主張を真に受けたりしたら嫌じゃん。
798 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:10:27 ] >>796 いや、だからその実装を抽象化したのがstackなんだろう。 stackと配列+インデックスは別物。カプセル化されてるだろ
799 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:22:47 ] なあ、スレチじゃない?
800 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:24:26 ] いつものC++の頭おかしい人では、ほんと困ります
801 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:25:21 ] うん。スレ違いです。
802 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:26:16 ] C++のスレもヤツと思わしき書き込みでメチャメチャになってるんだが C++の中の人も大変だなw
803 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:33:16 ] >>798 仮にそうだとしても、配列由来の操作を隠蔽しなければならない確固たる理由はなくね? 事実、C#以外の多くの言語では、スタック操作は配列操作の一部として扱われているわけで。
804 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:45:28 ] ゲームプログラムなら俺に聞けスレも悲惨な有様だね、死んでしまえばいいのに
805 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:47:56 ] 自分は、VectorからStackが派生しているJavaは気持ち悪いと思う。 反対の、IStackやIQueueがあって、IListがその2つ(やその他)を継承するという作りのほうが自然に感じる。
806 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:48:31 ] framework 4.0 の並列処理機能についてMSをのぞいて詳しく書いてあるサイトでわかりやすいところない?
807 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:52:42 ] 継承しないで、独立の実装されるのが理想だと思うな。 class ListStack : IList , IStack ←ないけど class Stack : IStack ←ないけど どちらも実装は同じでもいいだろう、しかし使う側がちゃんと考えて配列アクセスが不要ならStackを使うとしてくれるとListStackとStackの実装は後で変えることもできる。 基礎ライブラリなので変えることはしないだろうが、実際の開発ではこれが決定的な差になる。
808 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:57:02 ] >>805 それだと、スタック操作を定義しないListが作れないような
809 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:57:51 ] 作りとしてはこんな感じかな class ListStack : IList , IStack { List list; 各種実装 } class Stack : IStack { ListStack list; IStack で公開されるメンバーのみ公開しておく } これならListより配列の方が効率的だからという理由で後から object [] といった具合に変えて高速化する事も可能だろう。 上のDoubleListの例でいえば、Listを継承してしまうとListの機能に固定されてしまう訳だ。
810 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:30:22 ] ふらっとが落ち着いたと思ったら、今度はこっちが荒されてて笑った >>806 一番詳しい所は、Parallel Extensionsチームのブログ 日本語で詳しく書いてある所は知らない。
811 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:30:12 ] あまりの流れに素で>>806 をスルーしてたw >>810 を見て初めて存在に気づいたw
812 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:49:31 ] うん、確かに分かりやすく記述してあるな。 ただbeta1だけにそもそも手を出さないのが正解かもしれんな。
813 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:55:20 ] >>803 配列由来の操作を隠蔽しなかったら 他の実装に変えられなくなるじゃん。
814 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:41:17 ] 現在、とある目的のための汎用エディタをつくっているのですが、 GUIを楽に実装したいのでPropertyGrid を使いたいです。 しかし、なんせ汎用エディタなので、設定の項目は xml で定義できるようになっているため、 設定項目をまとめたものをクラスとして定義して PropertyGridに渡す」ということができません。 そういう場合でも PropertyGrid を使う事はできますか? もしくは、空のクラスをつくって、設定ファイルに従って動的にプロパティを追加.. といったことができれば素直に PropertyGrid を使う事ができて楽なんですけど...
815 名前:デフォルトの名無しさん [2009/06/09(火) 01:51:26 ] 何に対して汎用的なのかサッパリーで なんで汎用的だと設定項目がxmlになるのかよくわからん IXmlSerializerとかなかったっけ
816 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:54:03 ] できます
817 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 02:15:42 ] すみません、まぎらわしい書き方でしたね。XMLうんぬんは全然関係なくて、 ようするに 項目名(プロパティ名)とその型(整数、文字列、実数)が設定ファイルで定義されている ↓ 設定をロードするまでプロパティの個数も名前も型もわからない ↓ ソースコード上でクラスを定義できない ↓ だから PropertyGridもつかえない?? ←ここが問題 こういう目的で PropertyGridをつかうにはどうすればいいのでしょう? もしくは、動的にクラスのプロパティを追加したり削除したりするにはどうすればいいのでしょう?
818 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 02:40:53 ] なんかnotepad++とかeclipseみたいな感じか 設定項目をxmlで記述するとして, その設定項目を実際に反映させるのは誰の役目? プラグイン方式にするのだったら設定項目を集めたクラスを,プラグイン側で公開するようにすればいいだけなんだけど
819 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 03:45:21 ] TypeConverter を継承して、好き勝手な property を登録するという方法でやてみました。 その結果、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のコンストラクタの呼び出し元はどこなのか?ということですが....
820 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 04:11:56 ] >>819 ほれ msdn.microsoft.com/ja-jp/library/system.reflection.emit.typebuilder.aspx これなら何でもできるぞ
821 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 08:50:01 ] プロパティの中にプロパティが入ってるやつ Size 10, 10 Width 10 Height 10 それに似た感じで Cube 10, 10, 10 X 10 Y 10 Height 10 を作るにはどうしたらいいですか?
822 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 08:59:28 ] 何が分からないのか分からない クラス/構造体の作り方が分からないのか?
823 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:17:26 ] それは分かりました クラスの中に構造体が入りません
824 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:20:04 ] class Hoge { struct Point { public int X, Y } Point Size { set; get; } }
825 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:27:10 ] >>824 C/C++が混ざってるぞ
826 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:38:41 ] >>825 いや、Y の後ろの ; 忘れてる以外は C# 的に問題ない。 コンパイル通るぞ。
827 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:57:30 ] XとYのsetとgetはどこに書くのですか?
828 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:01:05 ] 構造体の中にプロパティが入らないからわけわからん・・・・
829 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:07:12 ] >>826 ごめん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; } }
830 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:08:44 ] >>827 クラスと同じ >>828 何で入らないと思ったのかkwsk
831 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:39:17 ] 最後にreturn this;入れるのかな? とりあえず仕組みは分かりました ありがとうございます!
832 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:58:24 ] この後この構造体使うプロパティ作ったんだけどビルドでIDE落ちる
833 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:36:21 ] え、これ構造体の中のプロパティって全部使えないの?? 外にまたそれ用のWidth、Height、Lengthのプロパティも作るなら構造体の中にプロパティじゃなくて変数だけでよくない? と思い始めてるけど勘違いしてるのかな
834 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:10:44 ] >え、これ構造体の中のプロパティって全部使えないの?? イミフ。set書け >外にまたそれ用のWidth、Height、Lengthのプロパティも作るなら構造体の中にプロパティじゃなくて変数だけでよくない? プロパティが何のためにあるか理解してないようだな。
835 名前:デフォルトの名無しさん [2009/06/09(火) 12:24:54 ] NetworkStream読み出し用のバッファとして、Queueクラス使うのって大げさすぎる? なるべくコンパクトでオーバーヘッドの少ない方法がいいのだけど、自前でByte用の リングバッファクラス作った方がよい?
836 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:51:55 ] そのbyte列ってどういう用途に使って、どのくらいのサイズがあるの?
837 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:59:37 ] >>836 相手PCからほぼ間断なく来るバイト列を読み込みながら、パケットとして処理出来るまで溜め込んで パケットを解析して次の処理に渡します。 パケットのサイズは200バイト未満で可変です。 パケット間は区切り文字も何もなくダラダラと流れてきますが、途中○バイト目がパケットサイズに なっているので、それを頼りにパケットを解析します。
838 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 13:24:36 ] TypeDescriptorから深い世界へどうぞ。
839 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 13:59:32 ] なんかここ最近どっかのスレで見たことあるような質問だな・・・
840 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 14:16:41 ] >>837 Queueは大袈裟っつーか使い道が違うんじゃないかな NetworkStreamから1バイトずつ読み取るつもりなわけでもあるまい
841 名前:デフォルトの名無しさん [2009/06/09(火) 15:05:23 ] WebBrowser.GoSearch メソッド で、IEのデフォルトの検索ページに飛ばしています。 デフォルト設定では Google になっていて、これまでは必ずGoogleに飛んでいた のですが、ここ数日設定していないのに、Bing に飛んでしまいます。 WebBrowser.GoSearch メソッドを使うとこのBingが自動的に選ばれてしまうのを これまで通り正しくIEのデフォルトの検索ページに飛ばせるように戻せないでしょうか? できましたら、変更の仕方を教えていただきたく、何卒よろしくです。
842 名前:841 [2009/06/09(火) 15:07:12 ] OSはWindowsXpSP3、.NETはVer2.0です。よろしくお願いします。
843 名前:841 [2009/06/09(火) 15:11:43 ] ああ!!わかりました、標準の検索ページ自体が書き換えられていました。 すみませんでした。。。申し訳ありません。。。
844 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 15:38:00 ] バイト数が送られてくるならリングバッファとかじゃなくて、 単にキューでバイト配列を管理したらいいんじゃない?
845 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 15:45:01 ] 受信単位の内部バッファをQueueで溜め込むのは普通にありだろう。 深く考えずに単一バッファにして追記していって消費したバイト分を前にずらすという力技でもいけちゃいそう。 サーバの話なら論外だけど。
846 名前:デフォルトの名無しさん [2009/06/09(火) 16:32:02 ] tcpClient tcp; public 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の 使い方ってこれであってます?
847 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 16:34:52 ] Mainが無かったです static 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")); } } }
848 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 16:47:38 ] もうQueueなんて使わないでMemoryStreamに流し続ければいいんでない? そしてCBRead()の最後がキモい だれも止められないじゃん
849 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 16:55:12 ] >>848 どうしてもバッファから取り出した分を詰める作業が必要なのでMemoryStreamはちょっと。 最後キモイですか。 我ながらこりゃあいいやと思ったんですが、どうしましょうか。
850 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 17:08:55 ] んーいまいちQueueの用途がわからない もしかして>>846 は肝心の”取り出した分を詰める作業”が書かれていない? しかも,そもそもTCPなんだからByte型のデータを自前でバッファする必要性をあまり感じないんだが. むしろQueueに突っ込むのは,データストリームから取り出した使えるデータの方がヨサゲ
851 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 17:13:56 ] だよね 少なくともバイト数が分かる仕様ぽいから、 受信スレッドがひたすらまとまり単位でバイト配列に取り出してバイト配列をキューに追加 処理スレッドがキューからひたすら取り出して処理すればいいような気がする。 ああ、スレッド間の同期はちゃんとやってね。
852 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 17:15:44 ] その場合は簡単なブロッキングキューを作ればよりシンプルになるかも。
853 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 19:30:09 ] >>810 亀だけどサンクス 思ったより知りたいことが書いてあったので為になった!
854 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:41:04 ] public static object GetMyObject() { AssemblyName 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 も存在し、意図したとおりのクラスとインスタンスが 生成されているように見えるのですが、プロパティグリッド反映されないのはなぜなのでしょうか?
855 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:45:43 ] だってobjectだもの
856 名前:デフォルトの名無しさん [2009/06/09(火) 20:46:32 ] 肝心のプロパティを定義してないじゃないか
857 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:53:34 ] そうだった objectじゃなくてもいいんだった
858 名前:デフォルトの名無しさん [2009/06/09(火) 20:56:33 ] プロパティグリッドで使うだけなら本当に型を生成しなくてもTypeDescriptorで簡単にプロパティを追加できるよ
859 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:57:59 ] >>856 の書いてるように、フィールドでは駄目だよ。 基本的には読み書き可能なプロパティを定義しないと。
860 名前:デフォルトの名無しさん [2009/06/09(火) 21:04:18 ] プロパティを定義するならアクセサメソッドの実装を ILGeneratorで生成しないといけないので超面倒だぜ
861 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:12:53 ] まあぶっちゃけDataSetに読み込んでDataRowViewを使えばいいんじゃないかなw
862 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:15:02 ] ここまでしてpropertygrid使う意味があるのだろうか
863 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:25:16 ] 自分で作ることと総合的に考えれば、圧倒的に楽になる可能性はあるよ。 DataTableに一行目とかに読み込んで、DataRowView(DefaultViewでもいい)を取り出して、 1行目をPropertyGridにバインドすれば簡単なことならできる。 これで事足りれば、新しいクラスを作ったりTypeDescripter絡みを自分で処理する必要はない。
864 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:30:30 ] 1行に1文字以上typoがあるはつは信用ならにゃい
865 名前:デフォルトの名無しさん [2009/06/09(火) 21:31:39 ] CLR型やアセンブリを作り捨てしたらメモリリークするぞ
866 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 22:34:41 ] ちょっと教えてください。 ListViewのList表示で横スクロールするときになめらかにスクロール させたいんだけど、どうすればいいんでしょうか。 エクスプローラみたいなスクロールじゃなくてFileVisorみたいなスク ロールといえばイメージ伝わるかな。 ListBoxに無理矢理描画しようかとも思ったけど面倒だし、うまい方法 はないでしょうか。よろしくお願いします。
867 名前:デフォルトの名無しさん [2009/06/09(火) 22:37:22 ] WPFに移行する
868 名前:デフォルトの名無しさん [2009/06/10(水) 07:38:42 ] 今勉強中なんですけど カプセル化って隠すという意味ですよね? デリゲートが何でカプセル化になるのか今一ピンとこないんですが
869 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:09:36 ] >カプセル化って隠すという意味ですよね? 多分違う
870 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:19:23 ] どのメソッドを呼び出すか?を隠してる
871 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:29:56 ] 隠してない
872 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:41:45 ] ある意味隠してる
873 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 09:16:07 ] アクセス制限として見ると隠してないが、 カプセル化として見れば隠してる
874 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 09:51:36 ] >>868 雑だが Commandパターン クロージャ
875 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 10:27:40 ] ヘジたん的にはデザイナでコントロールクリック一発、それそこに書けを実現するための部品の一つでしかないんだろうな。 複数のメソッドが登録できるあたり、発想は明らかにクロージャー等ではないし、今ではクロージャー化しつつあるけど
876 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 10:38:35 ] 小理屈よりも、まずやりたい事ありきというC#の考え方は嫌いじゃないです IDEの支援を想定した文法とか、常識的にはこの文法冗長でだるいだろう普通やめるだろうというのが平気で入っている。
877 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 11:08:08 ] カプセル化も大きなウェイトを占める概念の一つであって それがすべてじゃないと思うよ。
878 名前:デフォルトの名無しさん [2009/06/10(水) 11:10:29 ] オブジェクト指向的にはメソッド一つだけのインターフェイスと等価 パターンとしてよく必要になるんだけど>>876 の言うように面倒だから言語に取り込んだ
879 名前:デフォルトの名無しさん [2009/06/10(水) 16:45:29 ] 非同期実行する場合に new Thread ThreadPool.QueueUserWorkItem BackgroundWorker delegate.BeginInvoke …ほかにもある? なんか色々あって混乱するけど、どういう場合にどれを使えばいいの?
880 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 16:49:47 ] どうぞ ttp://codezine.jp/article/detail/144?p=1
881 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 17:25:53 ] >>880 ありがとう、でももうちっと最近の記事じゃないと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はいろいろリッチだけど、使うの難しそう。
882 名前:854 mailto:sage [2009/06/10(水) 17:31:56 ] どうもありがとう filed ではなくて property をつくったら見事意図したとおりにできました! 最後にひとつ。 動的に作ったクラス、のインスタンスのプロパティに値を設定するには どうすればよいですか? もしくは、PropertyGird をプログラム側から操作して、PropertyGrid.SelectedObject のプロパティを変更することはできますか?
883 名前:デフォルトの名無しさん [2009/06/10(水) 17:44:41 ] リフレクションを使う プロパティを生成できた奴がそんな質問をするなんて考えられないと思うんだが
884 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 17:48:08 ] わざとだろ、自分で考えろ以上終了だな
885 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:30:56 ] ボスケテー AA作成支援ソフトっぽいもの作ってまして 標準環境(www.geocities.co.jp/HeartLand-Yurinoki/1836/mona_font_settei.html ) で指定した文字列の表示幅を取得する方法を探してます Graphics.MeasureStringや TextRenderer.MeasureTextなんかを使えばいけるんだと思うんですが どーにもIE標準環境の作り方がわかりません(Graphicsオブジェクトどーやってもってくるの?) おせーてくださーい
886 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:37:54 ] onpaintとかのじゃだめなのかな?
887 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:48:23 ] 普通にControl.CreateGraphicsでもいいしGetDCしたのからFromHdcでもいいし
888 名前:885 mailto:sage [2009/06/10(水) 22:50:23 ] 何が文字列の表示幅を決定している要因なのかよく理解していないものでして てっきりGraphicsオブジェクトのプロパティに大きく依存するのかと思ったんですが 今メンバ見てもそれっぽいもの無いみたいですね。。 例えば下の二つの文字列 「ああああああ」 「..............................」 を長さ測定関数に渡した時に同一の値が帰ってくるような 状態をとりあえず目指していろいろやってるんですが なかなかうまくいかないですね・・・ とりあえずもうちょっと調べてみますー
889 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:12:03 ] フォントだよ
890 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:33:33 ] あー なんとかできたっぽいです 同じフォントでも環境によって表示のされ方違うのかと思ってました レスくれた方ありがとでしたー
891 名前:854 mailto:sage [2009/06/11(木) 00:54:54 ] 以下のようにしたらうまくいきました リフレクターというヒントをくれたかた、どうもありがとう Type type = (Type)MyClass; type.GetProperty("x").SetValue(propertyGrid.SelectedObject, 1234, null); いままでずっと C をやっていて C# も .Net おとといはじめたばかりなので、 ヒントがなければライブラリのどこに何があるかさっぱりわかりませんでした。 どうもありがとう!
892 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:01:32 ] どういたしまして お役に立てて光栄です
893 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 07:42:51 ] 質問者の笑顔のために
894 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 08:25:30 ] >>881 > Action act = () => なんぞこれ
895 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 08:38:37 ] lambda式でしょ。
896 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 13:05:26 ] >>894 actという名前の変数はAction型 () => {...} はAction型のリテラル(ラムダ式)で,空の引数を受け取って何かしてる
897 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 17:52:31 ] C#のAAはこれでおk? (c_c#)
898 名前:デフォルトの名無しさん [2009/06/11(木) 22:31:35 ] C#の式として有効なものしか認めない
899 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:56:39 ] >>897 //(c_c#) でOK
900 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:57:17 ] "(c_c#)"
901 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 23:33:06 ] (^c_^#)
902 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 23:42:17 ] (T_T)=>("^A^")
903 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 11:28:58 ] */
904 名前: ◆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」と出ました。
905 名前: ◆BOHwjyHW6o mailto:sage [2009/06/12(金) 12:26:01 ] ポートが空いていないのだろうと思い、 ttp://www.navnav.jp/port/ ココでポートの解放チェックを行いました。 結果、ポートは空いていました。 (ポート解放用と思われる接続もサーバー側のAcceptTcpClientでキャッチできました) @をグローバルIPにして接続を行いたいのですが、どうすれば良いでしょうか? また、何を確認すべきでしょうか? 環境は以下の通りです。 ・PCは1台でテストしています。(OSはXP) ・Visual Studio 2008 で開発を行っています。 ・ウィルスバスターは終了させた状態です。 ・ルーターはフレッツ光のCTUです。 ・ハブはBUFFALOのAirStationをルーターOFFモードで利用しています。
906 名前: ◆BOHwjyHW6o mailto:sage [2009/06/12(金) 12:28:30 ] すいません。エラーメッセージ間違いました。 正しくは、 「対象のコンピュータによって拒否されたため、接続できませんでした。@:58201」 です。 よろしくお願いします。
907 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 12:33:04 ] どこか上流でファイアウォールでも動いているんじゃない?
908 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 12:37:08 ] ん? ルータの内側にいるのに,外側のIPに接続しようとしてる? ルータの実装によるけど,ふつーはつなげないんじゃないかな
909 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2009/06/12(金) 12:41:36 ] NAPTしてるのを適切に処理してないって落ちじゃないの
910 名前:777 mailto:sage [2009/06/12(金) 13:12:08 ] SqlConnectionStringBuilderでAttachDBFilenameだけをクリア したいのですが、ヘルプ通りnullを渡すとエラーになります。 他にどんな方法があるんでしょうか?
911 名前:910 mailto:sage [2009/06/12(金) 13:13:29 ] 申し訳ない。 >>910 の名前間違いです。777ではありません
912 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:19:59 ] SqlConnectionStringBuilder strbld = new SqlConnectionStringBuilder(); strbld.AttachDBFilename = "";
913 名前:910 mailto:sage [2009/06/12(金) 13:24:23 ] >>912 やっぱりそれしかないんですね。 最終的な文に"AttachDbFilename=;"が入っちゃうんで消せないかなと 思ってたんですが、そうしておきます。ありがとう。
914 名前: ◆BOHwjyHW6o mailto:sage [2009/06/12(金) 13:41:29 ] >>907-909 返答ありがとうございます。 色々試行錯誤しているのですが、結局駄目でした。 localhostで作業を進め、サーバー立ては次の機会に行います。 ありがとうございました。
915 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 15:13:46 ] 試行錯誤ってルーターを別の機種にするしか無いんじゃ・・・
916 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 16:13:14 ] フレッツ光のCTUは変更できないよ。 専用ルーターだから。
917 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 19:44:54 ] >>905 そういうルータ越しの環境だと、自分とこからグローバルIPアドレスでルータを越えてまた自分とこにくる通信は無理だと思う。 クライアントを別の回線(携帯とか友人宅・会社・学校)からやってみたらどう?
918 名前:デフォルトの名無しさん [2009/06/12(金) 22:28:23 ] VS2008Pro、WinXPPro、C#で開発しています。 単体テストの機能を始めて使ってみたのですが、これには 「あるディレクトリ以下にある全てのデータファイルでテストを実施する」 という総当り的な、機能は付いているのでしょうか? csvで、テストケースを一個一個作成していくのも面倒なので、個人的にはデータファイルを作って、 それをあるディレクトリ以下に放り込めば、勝手にテストしてくれるような機能を期待していたのですが…… やはり、自前で作るしかないですかねぇ。とはいっても、自前で作ってるのは、すでにあって、 今回はそれを既製品に移行しようという話なので、自前で作る云々になると話がズレて来るんです。 どなたか回答をお願いします。
919 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:45:39 ] 自分の場合、ひかりone(旧テプコひかりからの移行なのでちょっと構成が違う)で 「光モデム」−「ルーター(ヤマハ)」−「サーバーやらクライアントやら」 って構成でグローバルIPアドレス指定で内部のクライアントからサーバー見えてるよ
920 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:50:22 ] >>914 はflet'sつまりntt製のモデム兼ルータってことじゃないかと
921 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 23:13:48 ] >>913 SqlConnectionStringBuilder strbld = new SqlConnectionStringBuilder(); strbld.AttachDBFilename = ""; ↓ SqlConnectionStringBuilder strbld = new SqlConnectionStringBuilder(); strbld.Remove("AttachDBFilename");
922 名前:デフォルトの名無しさん [2009/06/13(土) 21:45:53 ] フォルダが「共有フォルダ」かどうかを知ってアイコンに手のマークを 付けるにはどうしたらいいか知りたく。 「共有フォルダ」の一覧を得るには System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_Share"); これでいいという情報は得ましたものの、これでなくてDirevtoruInfoのAttributes のように高速で一発でわかる方法があれば尚ありがたく。 またアイコンに手のマークを付けるにはどのようにするものでしょう、 ご指導をいただきたく。
923 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 21:52:29 ] 別管理なんだから、なんたらInfo からじゃ取れないだろ。 まっとうにやるなら、NetShareEnum() だな。それほど遅くない。 オーバーレイは ImageList_SetOverlayImage() とかで。
924 名前:デフォルトの名無しさん [2009/06/13(土) 22:23:34 ] >>923 おお!!そういう方法があったのですか! ありがとうございます。勉強してみます!! 助かりました!