もう20時か、
2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50 [PR]萌えなネコ写真。[PR]  

C#, C♯, C#相談室 Part55

1 :デフォルトの名無しさん:2009/10/14(水) 23:23:45
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

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

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

その他テンプレ>>2-5くらい


2 :デフォルトの名無しさん:2009/10/14(水) 23:24:33
関連スレ

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

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

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

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

C#,C#の宿題片付けます。
http://pc12.2ch.net/test/read.cgi/tech/1197620454/

3 :デフォルトの名無しさん:2009/10/14(水) 23:24:49
参考リンク

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

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

pinvoke.net: the interop wiki!
http://pinvoke.net/
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/
WisdomSoft Microsoft .NET入門
http://wisdom.sakura.ne.jp/system/msnet/
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/

4 :デフォルトの名無しさん:2009/10/14(水) 23:24:56
質問する前に"必ず"WikiやFAQ集を参照し、同じような質問がないか確認してください。

初歩的な質問はPC初心者板で・・・
http://pc11.2ch.net/pcqa/
参考リンク(よく出てくる情報リンク)
Windows Vista Wiki
http://windowsvista.ms/index.php
Windows VistaFAQ
http://vistafaq.stdo.net/index.html
インストールから設定・活用まで〜 すべてが分かるWindows Vista大百科
http://journal.mycom.co.jp/special/2007/windowsvista/menu.html

5 :デフォルトの名無しさん:2009/10/14(水) 23:32:53
AMFをDecodeするプログラムを作りたいのですが、
何か良いサンプルが載っているサイトはないでしょうか?
JavaやPHPはよくみるのですが、.net系があまりなく。。

もしご存知の方がいましたらご教授ください。

6 :デフォルトの名無しさん:2009/10/15(木) 00:37:57
関連スレに追加
ASP.NET + Atlas or Ajax について
http://pc12.2ch.net/test/read.cgi/tech/1150036430/
Microsoft Silverlight その4
http://pc12.2ch.net/test/read.cgi/tech/1244812356/
Visual Studio 2010
http://pc12.2ch.net/test/read.cgi/tech/1231857024/

7 :デフォルトの名無しさん:2009/10/15(木) 00:54:14
WaitHandleのWaitOneメソッド第二引数のブーリアンって何に使うのでしょうか?
同期ドメインがよくわからなかったので、調べて見たんですが、
リモート処理のときだけ関係するものでしょうか

8 :デフォルトの名無しさん:2009/10/15(木) 01:02:22
剣の舞ですね

9 :デフォルトの名無しさん:2009/10/15(木) 01:07:05
>>7
http://msdn.microsoft.com/ja-jp/library/cxk374d9.aspx

10 :デフォルトの名無しさん:2009/10/15(木) 01:40:17
お前は一体何を表明したいんだ…


11 :デフォルトの名無しさん:2009/10/15(木) 01:46:07
ちなみに普通はfalseで構わない。
ContextBoundObjectの派生クラスを作って、
SynchronizationAttributeを適用した場合で、
そのオブジェクト内で同期済み実行時にWaitOneしたときに、
待機中の別のオブジェクトを待機解除するかどうか。
まあ、多分大抵は関係しないだろう。


12 :デフォルトの名無しさん:2009/10/15(木) 01:51:50
てよく見たらWaitOneの説明にそのまま載ってるじゃねーか…


13 :デフォルトの名無しさん:2009/10/15(木) 01:58:37
WaitOne(int)でいいじゃん

14 :デフォルトの名無しさん:2009/10/15(木) 02:40:37
>>1


15 :デフォルトの名無しさん:2009/10/15(木) 05:30:06
Producer-Consumerパターンはget,putするthreadを延々とループさせるわけど
これを終わらせるときはthreadをほっといても大丈夫?

16 :デフォルトの名無しさん:2009/10/15(木) 06:10:53
普通は、whileの条件とかで終了できるようにする。Abortするのはやめとけ

17 :デフォルトの名無しさん:2009/10/15(木) 06:12:44
Abortってどうしてだめなの?

18 :デフォルトの名無しさん:2009/10/15(木) 07:51:50
finally が実行されなかったりとか

19 :デフォルトの名無しさん:2009/10/15(木) 10:57:39
駄目とは言ってない。動作を完全に理解したうえで自己責任で使うならどうぞ

20 :デフォルトの名無しさん:2009/10/15(木) 11:50:16
まあ普通はやらんな

21 :デフォルトの名無しさん:2009/10/15(木) 13:09:50
Producer-ConsumerってAbort必須じゃなかったっけ?
その辺の解説サイトじゃAbortすら使って無いからリークしまくってるけど

22 :デフォルトの名無しさん:2009/10/15(木) 17:00:12
意味が分からん。
必須ってどういう事だよ。
インタラプトだって使えるし。


23 :デフォルトの名無しさん:2009/10/16(金) 10:54:37
イミディエイトウィンドウで表示したくない例外等を表示しないようにする方法はありますか?
所定のメソッドを実行すると例外が飛んできてそれが表示され鬱陶しくて

あと、デバッグ終了時にイミディエイトウィンドウがクリアされればいいと思うのですがそれに該当する設定が見あたりません

24 :デフォルトの名無しさん:2009/10/16(金) 12:09:35
ごめん意味が分からない。出力ウィンドウのこと?
それともイミディエイトウィンドウに出力をリダイレクトする設定にしてる?
どちらにしても例外が発生したら勝手に表示されるということはない。
どこかで握りつぶしてログ吐いてるんだろ。
その個所に自分で手を入れられないんだったらどうしようもない。

25 :デフォルトの名無しさん:2009/10/16(金) 12:11:40
いや、だからイミディエイトウィンドウだって
握りつぶすも何もデバッグ時に例外発生したらログがここに残るでしょ
これを指定した例外のみ表示させたくないの

26 :デフォルトの名無しさん:2009/10/16(金) 12:17:59
出力はされるけど通常はイミディエイトウィンドウじゃなくて出力ウィンドウだよ

Debugクラスのリスナを通さずに直接出力されてるみたいだから
VSの設定にないなら無理なんじゃないの

27 :デフォルトの名無しさん:2009/10/16(金) 12:24:12
うそーん
いやいやイミディエイトウィンドウだって
Consol.WriteLine系は出力だけど例外はイミディエイトウィンドウ
ほんとかと思って設定初期化で試したけどやっぱりそうだったよ

特定のメソッド使うと例外飛ぶから表示したくなかったんだけどなぁ
出来ないなら仕方ないか・・・

28 :デフォルトの名無しさん:2009/10/16(金) 20:12:00
メニューからツール-オプション-デバッグ-全般に「出力ウィンドウの文字を〜」ってのがあるんだけど関係ないよね。

29 :デフォルトの名無しさん:2009/10/16(金) 21:03:35
MessageBoxでMessageBoxIcon.Informationを指定した時のような音を
ボタンを押したときにメッセージボックスを出さずに鳴らしたいのですが
可能でしょうか?

30 :デフォルトの名無しさん:2009/10/16(金) 21:16:29
何だっけ… System.Media あたりに SystemSound とか
SystemSounds みたいなのない?

31 :デフォルトの名無しさん:2009/10/16(金) 22:05:20
>>30
おお!できました!
ありがとうございます!

32 :デフォルトの名無しさん:2009/10/16(金) 23:06:20
ポインタ型って何に使うんですか?
ポインタ使うので有用な処理ってどんなのがあります?

33 :デフォルトの名無しさん:2009/10/16(金) 23:08:38
P/Invoke
画像処理やゲーム等,パフォーマンスを要するもの

34 :デフォルトの名無しさん:2009/10/16(金) 23:08:43
API に渡すとき。

35 :デフォルトの名無しさん:2009/10/16(金) 23:13:01
今までポインタ使ったプログラムを作ったこと無いんですが
プログラマになるのなら必須事項ですかね?
避けて通れるなら難しいと聞くので触らないつもりなんですが・・・

36 :デフォルトの名無しさん:2009/10/16(金) 23:16:17
必要になったときに勉強すればいいよ。

37 :デフォルトの名無しさん:2009/10/16(金) 23:16:49
必要になったら勉強すればいいんじゃないの?

38 :デフォルトの名無しさん:2009/10/16(金) 23:17:00
C#がちゃんとわかってればそんなに難しいものでもない
C#ではなるべく使わない方がいいし使う必要に駆られることもまずないけど知識として知っておいて損はない

39 :デフォルトの名無しさん:2009/10/16(金) 23:20:28
なるほど、ありがとうございます

40 :デフォルトの名無しさん:2009/10/17(土) 08:01:50
よく使うデザパタとかある?
俺はSingleton,Adapter,Factoryはよく使うけどIteratorは全くと言っていいほど使わない

41 :デフォルトの名無しさん:2009/10/17(土) 08:32:08
Iteratorは言語にもう組込まれてると思っていい。
Observerなんかもイベント絡みでフレームワークが使ってる。

Visitor、State、Compositeパターンあたりは意識せずとも
使ってるんじゃないかなぁ?

42 :デフォルトの名無しさん:2009/10/17(土) 08:37:25
デザインパターンなんか糞の役にも立たないから勉強するだけ無駄。

43 :デフォルトの名無しさん:2009/10/17(土) 08:40:12
何かを悟ったような気になった勘違い中級者は黙っておれ

44 :デフォルトの名無しさん:2009/10/17(土) 08:50:55
Iteratorは仕組がわかってればいいと思うが。IEnumeratorの動きがわかる。

45 :デフォルトの名無しさん:2009/10/17(土) 09:37:42
>>42
それは、C#の場合言語に組み込まれてるからだって。
Javaなんてパターン覚えなきゃやってられないとか言うし。

46 :デフォルトの名無しさん:2009/10/17(土) 11:41:57
>>42
デザパタ知っておくと、必要になったときにライブラリに用意されているクラスを
探しやすかったり、自分で作りやすくなるから、大雑把に目的は知っておくべき。
実装方法は必要になったときに調べれば良い。

47 :デフォルトの名無しさん:2009/10/17(土) 12:45:47
無理矢理パターンにあてはめて使う必要はないんだよね。

覚えたての奴ってなぜかSingleton使いたがる・・・

48 :デフォルトの名無しさん:2009/10/17(土) 12:53:38
こんにちは。どなたかC♯でBMI計算プログラムをvisual studio 2008 もしくは2005 で作成してアップしてくださいませんか・・・?
そのプロジェクトフォルダ全部をアップお願いします。

49 :デフォルトの名無しさん:2009/10/17(土) 12:59:50
宿題スレ逝け

50 :デフォルトの名無しさん:2009/10/17(土) 13:08:02
tryでcatchした致命的エラーのチェックをしたいのですが、
擬似的に致命的エラーを出す方法はありませんか?

51 :デフォルトの名無しさん:2009/10/17(土) 13:15:20
throwですね、自己解決しました^^;

52 :デフォルトの名無しさん:2009/10/17(土) 13:23:29
throw

53 :デフォルトの名無しさん:2009/10/17(土) 13:28:19
>>47
それを言うなら「中二病の奴って〜」なんじゃないの?
君みたいのは見てるこっちが恥ずかしくなるよw

ちなみに、
>覚えたての奴ってなぜかSingleton使いたがる
そんな奴はまずいないと思うよw
あんなもの乱用のしようがないだろう。
そもそも、「覚えたて」も糞も、シングルトンなんてのは普通の知能があれば
誰でも自分で思いつくテクニックで、人に言われて覚えるものじゃない。

シングルトンの唯一の意義は、それに名前が与えられていること以上のものではないんだけどね。

54 :デフォルトの名無しさん:2009/10/17(土) 13:33:20
なんでここで中二病が出てくるのか

55 :デフォルトの名無しさん:2009/10/17(土) 13:47:48
あぁ、そうだ。>>53みたいなのを中二病っていうんだと思うよ。

56 :デフォルトの名無しさん:2009/10/17(土) 15:01:48
こんにちは。どなたかC♯でBMI計算プログラムをvisual studio 2008 もしくは2005 で作成してアップしてくださいませんか・・・?
そのプロジェクトフォルダ全部をアップお願いします。

57 :デフォルトの名無しさん:2009/10/17(土) 15:03:36
>>53
きも

58 :デフォルトの名無しさん:2009/10/17(土) 15:03:58
ちいい

59 :デフォルトの名無しさん:2009/10/17(土) 15:04:06
宿題スレ行け

60 :デフォルトの名無しさん:2009/10/17(土) 15:04:56
行きました

61 :デフォルトの名無しさん:2009/10/17(土) 15:05:31
>>56
同じような内容の文章を別スレでめ見ました
早く死んでいただけませんか?

62 :デフォルトの名無しさん:2009/10/17(土) 15:06:32
死にました

63 :デフォルトの名無しさん:2009/10/17(土) 15:06:36
>>60
じゃあここに来るなよカス

64 :デフォルトの名無しさん:2009/10/17(土) 17:02:53
>>53
きもい


65 :デフォルトの名無しさん:2009/10/17(土) 17:14:37
質問です。

C#にはC言語のprintfみたいにデータを編集して出力する関数とかメソッドはあるのでしょうか。
プログラミングC#第四版(オライリージャパン)を見ると、載ってない。
JAVAではVer.5あたりで導入されたが、C#ではどうなんでしょうか。

66 :デフォルトの名無しさん:2009/10/17(土) 17:18:05
Console.Writeじゃだめなん? printf形式の書式じゃないと駄目ってこと?

67 :デフォルトの名無しさん:2009/10/17(土) 17:29:17
>>65
ToStringで書式指定できるよ。

68 :デフォルトの名無しさん:2009/10/17(土) 17:33:06
printf()のかわりなら、writeやらstring.Formatがいいでしょ。

69 :デフォルトの名無しさん:2009/10/17(土) 20:49:36
>>66−68
回答ありがとうございます。

Cのprintf文は
printf("%d\t%d\n", fahr, celsius ) ;

以下のように記述できるのですね。大変参考になりました。

Console.WriteLine("{0}\t{1}" , fahr, celsius);
Console.WriteLine(fahr.ToString("D") + "\t" + celsius.ToString("D"));
Console.WriteLine(String.Format("{0}\t{1}", fahr, celsius));
回答ありがとうございました。


70 :デフォルトの名無しさん:2009/10/17(土) 20:56:38
>>69
もう少しちゃんと調べた方がいいぞ

71 :デフォルトの名無しさん:2009/10/17(土) 21:42:32
Console.WriteLineのオーバーロードは17つもある。

72 :デフォルトの名無しさん:2009/10/17(土) 21:46:39
じゅうななつ?

73 :デフォルトの名無しさん:2009/10/18(日) 00:04:09
とおあまりななつ

74 :デフォルトの名無しさん:2009/10/18(日) 04:39:12
セブンティーンつ

75 :デフォルトの名無しさん:2009/10/18(日) 08:56:54
最初からdefault引数実装し説けばいいものを・・・
へジスバーグのバカチンが。

76 :デフォルトの名無しさん:2009/10/18(日) 12:32:56
デフォルト引数は関係ない。TextWriter.WriteLineのオーバーロードに合わせてるだけ。
TextWriter.WriteLineのオーバーロードは引数の型ごとに処理を変えたり
ボックス化やparamsの配列作成などに伴うコストを避けたりするために沢山用意されてるんだと思う。

77 :デフォルトの名無しさん:2009/10/18(日) 12:52:46
tabControlでSizeModeをFixedにした時
tabPageのTextがタブ幅よりも長くなった時に末尾に"..."と表示させたいのですがどのように実装すればよいのでしょうか?

78 :デフォルトの名無しさん:2009/10/18(日) 14:46:34
オーナードローしてTextRendererを使う

79 :デフォルトの名無しさん:2009/10/18(日) 22:49:09
PictureBoxで表示させた画像の中をクリックした場所によって処理を変更することはできますか?

80 :デフォルトの名無しさん:2009/10/18(日) 22:51:26
そりゃ当然できるけどさ

81 :デフォルトの名無しさん:2009/10/18(日) 22:53:37
座標とって処理を分ければOK

82 :デフォルトの名無しさん:2009/10/18(日) 22:59:22
79に追記です、四角形の範囲指定だと、X,Y座標でif使って出来るのですが
円形でクリック処理を分ける場合はどうすればいいのでしょう?


83 :デフォルトの名無しさん:2009/10/18(日) 23:00:21
Regionつかえ

84 :デフォルトの名無しさん:2009/10/18(日) 23:02:01
>>82
円の方程式って中学数学だろw
そんな知識もないのにプログラムを書こうっての?

85 :デフォルトの名無しさん:2009/10/18(日) 23:04:33
円の方程式の知識なんか無くても大丈夫、いける、いける。
でも自分で調べられないと無理だぜ。

86 :デフォルトの名無しさん:2009/10/19(月) 01:48:34
円周の長さ=6×半径
ってやつのことですか?

87 :デフォルトの名無しさん:2009/10/19(月) 01:51:08
ここで聞くよりフォーラムで聞いた方がよくね?
○○つかえとかしか言わないしさ
あっちは回答者のレベルが高いからコードも提示してくれるよ

88 :デフォルトの名無しさん:2009/10/19(月) 01:57:38
これがゆとりか・・・

89 :デフォルトの名無しさん:2009/10/19(月) 01:57:48
○○でググればいいじゃない

90 :デフォルトの名無しさん:2009/10/19(月) 02:06:30
ゆとりとか関係ねーよ。
検索廚の方がほんとウザい

91 :デフォルトの名無しさん:2009/10/19(月) 03:02:33
いやお前の方が30倍ぐらいウザい

92 :デフォルトの名無しさん:2009/10/19(月) 08:26:51
これがにとりか・・・

93 :デフォルトの名無しさん:2009/10/19(月) 09:09:55
描写した図形にクリックイベントを付けるにはどうすればいいですか

94 :デフォルトの名無しさん:2009/10/19(月) 09:25:02
WPF にして Canvas と Ellipse 使ったら?

95 :デフォルトの名無しさん:2009/10/19(月) 10:12:21
>>94
ごめんなさい、解決したので既存の方法の
CreateGraphics.FillEllipseを使って図形を表示しているのですが、
別のウィンドウが描写した図形に重なると、そこに描写してあった図形が消えてしまいます
この対策はありませんか?

96 :デフォルトの名無しさん:2009/10/19(月) 10:15:18
Paint イベント内で描画してる?

97 :デフォルトの名無しさん:2009/10/19(月) 10:18:31
初歩的な質問ですいません

一つのメソッドに MouseEventArgs と通常の EventArgs を共存させることは不可能でしょうか?
Form1のClickイベントで、押されたマウスで分岐処理させようと思うのですが
MouseEventArgsでは無いのでe Button&MouseButtonsが使えません

98 :デフォルトの名無しさん:2009/10/19(月) 10:21:35
>>96
あー。。どうしてもPaintイベントを使わなくてはいけませんか?
ボタンで描写させたいのですが、どうすればいいでしょう?

99 :デフォルトの名無しさん:2009/10/19(月) 11:13:23
>>97
MouseClick使え

100 :デフォルトの名無しさん:2009/10/19(月) 11:13:53
WS_CLIPSIBLINGSスタイル追加してやるとか

101 :デフォルトの名無しさん:2009/10/19(月) 11:30:25
>>98
描画手順を持ったオブジェクトをListに格納しておくとかそういう方法を使う

102 :デフォルトの名無しさん:2009/10/19(月) 11:35:13
1秒間だけラベルを表示させておきたい時って皆どうしてる?
俺は1000msのタイマー一つ用意して、Tickにlbl.Visible=false;書いて
表示させるときにlbl.Visible=true;Timer.Enable=true;ってしてるんだけど
もっと良い方法無いかな

103 :デフォルトの名無しさん:2009/10/19(月) 11:47:42
>>101
詳しく教えて貰えませんか'

104 :デフォルトの名無しさん:2009/10/19(月) 13:46:45
>>102
それでいいんじゃね
ライブラリ化するほど汎用性があるコントロールとも思えんし

>>103
詳しくと言うほどのこともないけど
Graphicsを引数に取るDrawメソッドを持った抽象クラスを用意
その派生として四角とか丸とかを描画するクラスを作成
んでそれらをリストとして持っておく
Paintイベントでリストの内容を列挙して順番にDrawしていく
描画追加ボタンでリストに描画クラスのオブジェクトを追加しInvalidateで再描画要求

105 :デフォルトの名無しさん:2009/10/19(月) 15:13:16
103です
>>104の言ってる事が全く分からない・・・w
抽象クラス、描画するクラス作成までは分かるんだけど
リストとして持っておくって何?駄目だ・・・ググってくる

106 :デフォルトの名無しさん:2009/10/19(月) 15:18:40
やっと元の意味がわかった・・
別ウィンドウってそういう意味か。
Imageに関連付けしたBitmapに直接描けばよろしい

107 :デフォルトの名無しさん:2009/10/19(月) 16:02:37
DataGridViewのフォーカスの有るのセルの四角のラインを消す方法はありませんか?
出来れば具体的な方法をお願いします

108 :デフォルトの名無しさん:2009/10/19(月) 16:17:07
>>106
bitmap使わないと駄目ですかね'?

109 :デフォルトの名無しさん:2009/10/19(月) 16:19:08
>>107
こういうやつ?
ttp://dobon.net/vb/dotnet/datagridview/noforusframe.html

110 :デフォルトの名無しさん:2009/10/19(月) 16:20:45
>>108
paintがいやならそうなるかもね
再描画時に何を描いたか取っておくか、毎回描くかのどっちかしかないと思うよ

111 :デフォルトの名無しさん:2009/10/19(月) 16:22:51
再描画されたってのを取得するイベントは無いですよね?

112 :デフォルトの名無しさん:2009/10/19(月) 16:26:14
あ、されたってのじゃなくて再描画されるまえに呼ばれるイベントです
そんな都合のいいの無いですよね


113 :デフォルトの名無しさん:2009/10/19(月) 16:32:40
メモリリークしているようなのですが
あるオブジェクトが現在どこから参照されているのか調べる方法はありますか?

114 :デフォルトの名無しさん:2009/10/19(月) 17:06:32
>>109
素晴らしい!
ありがとうございます!

115 :112:2009/10/19(月) 20:48:05
112です、別の方法を思いついたので質問します
クリックした時にその座標の色を取得することは出来ませんか?
これが実現すれば出来そうです、やり方あれば教えて下さい。

116 :デフォルトの名無しさん:2009/10/19(月) 20:56:31
>>115
http://dobon.net/vb/dotnet/graphics/invokepaint.html
http://dobon.net/vb/dotnet/graphics/screencapture.html
で画面キャプチャして、マウスをクリックした位置のドットの色を得れば?

117 :デフォルトの名無しさん:2009/10/19(月) 23:00:37
backgroundworker がツールボックスにない。
どこにあるんだ!

環境
Visual C# 2008
Express Edition

118 :デフォルトの名無しさん:2009/10/19(月) 23:26:03
>>117
ツールボックスのコンポーネントの所にないかい?

119 :デフォルトの名無しさん:2009/10/19(月) 23:39:05
>>117
そんな子供騙しなおもちゃ、なくても困らないでしょ。
あれは言っちゃ悪いけどちょっと前ならVB厨って呼ばれた用な人たちのための
コンポーネントだと思うけど。

120 :デフォルトの名無しさん:2009/10/19(月) 23:58:11
あれで用が足りる時は普通に便利だと思うけど?


121 :デフォルトの名無しさん:2009/10/20(火) 00:01:17
便利に使える物は使ったらいい

122 :デフォルトの名無しさん:2009/10/20(火) 01:38:29
子供だましなおもちゃって
「オレはあんなもん無くても書けるぜすごいだろ!」
って言いたいの?

子供ですね。

123 :デフォルトの名無しさん:2009/10/20(火) 04:22:00
Xeno091017 正式版
http://koreawatcher.at.infoseek.co.jp/janexeno.htm
・正式版として最初のリリース。
・Jane終了時の挙動のみ091015試作品から変更された。
───────────────────────
予告どおり、正式版をリリースしました。×ボタンのツールチップ
ヒントに関して、真魚のソースを参考にして修正を試みました。
JaneNidaの開発は事実上終了です。2chの仕様変更などで
対応するかもしれません。

124 :デフォルトの名無しさん:2009/10/20(火) 05:54:15
Formにボタン等のコントロールを動的に生成した場合フォームを閉じれば
自動的にメモリは開放されるのでしょうか?


125 :デフォルトの名無しさん:2009/10/20(火) 06:18:24
される。

126 :デフォルトの名無しさん:2009/10/20(火) 07:12:39
>>125
朝一でありがとう。

127 :デフォルトの名無しさん:2009/10/20(火) 09:33:37
メモリリークって何で駄目なの?

128 :デフォルトの名無しさん:2009/10/20(火) 09:55:03
リソースは有限だから

129 :デフォルトの名無しさん:2009/10/20(火) 10:56:04
一度メモリリークなったらどうやって復旧するの?
再起動するしかない?

130 :デフォルトの名無しさん:2009/10/20(火) 11:00:44
プログラムの再起動ということならそう

131 :デフォルトの名無しさん:2009/10/20(火) 11:09:36
なら、今の所完全にメモリリークを発生させないようにすることは出来ないの?
一つ一つにtry-finallyでdisposeするとか?

132 :デフォルトの名無しさん:2009/10/20(火) 11:13:58
意図的に保持してるのかそうでないかは判別できないからね

133 :デフォルトの名無しさん:2009/10/20(火) 11:14:04
ListやDictionaryのように、メンバとしてアレイやリスト構造のデータを持ちながら、
list[10]のように、あたかも配列の要素を取り出すようにアクセスできる
・・・という機能を、自作クラスに持たせる方法ってありますか?


134 :デフォルトの名無しさん:2009/10/20(火) 11:20:27
ジェネリック

135 :デフォルトの名無しさん:2009/10/20(火) 11:44:32
インデクサ

136 :デフォルトの名無しさん:2009/10/20(火) 13:06:35
>>131
メモリリークをどういう意味で使ってる?


137 :デフォルトの名無しさん:2009/10/20(火) 13:44:18
>>118
http://uproda11.2ch-library.com/206356tyL/11206356.jpg
コンポーネントの項目が無い!

>>119
無くてもできるけど、
楽にできるならそっちのほうがいい。

138 :デフォルトの名無しさん:2009/10/20(火) 14:12:44
>>137
1. 新しいプロジェクトを追加し、[Windows フォーム アプリケーション] または [Windows フォーム コントロール ライブラリ] を選択します。
2. Windows フォーム デザイナ、ユーザ コントロール デザイナ、コンポーネント デザイナを開きます。
3. ツールボックスから任意のコンポーネントを配置します。

139 :デフォルトの名無しさん:2009/10/20(火) 14:28:12
画面はWPFじゃないか
ポトペタじゃなくてコードで作れ

140 :デフォルトの名無しさん:2009/10/20(火) 14:28:33
WPFのXAMLエディタではサポートしてないという話だろ。
手作業で書くしかない。

141 :デフォルトの名無しさん:2009/10/20(火) 15:22:48
>>138-140

>WPFのXAMLエディタではサポートしてないという話だろ。

よくわかった。

サンプルコードへのリンクも張っておきます。

【WPF】お手軽簡単別スレッド BackgroundWorker
http://pro.art55.jp/?eid=1180258


142 :デフォルトの名無しさん:2009/10/20(火) 15:48:30
BackgroundWorkerがコンポーネントなのがおかしいんだよな
タイマーやダイアログなんかはUIに密着に関係してるからまだわかる
データソースとは違ってデザイナが使えても何の意味もないし

143 :デフォルトの名無しさん:2009/10/20(火) 15:55:01
タイマーもコンポーネントだけど。


144 :デフォルトの名無しさん:2009/10/20(火) 16:01:21
タイマがUIに密着……?
それならBackgroundWorkerも同程度には「密着」してると思うが

145 :デフォルトの名無しさん:2009/10/20(火) 16:04:20
タイマーはWindowsのメッセージに依存してるからどうせUIの外では使えない
BackgroundWorkerはUIには全く依存してない
WPFでもそのまま使えるのがその証拠

146 :デフォルトの名無しさん:2009/10/20(火) 17:02:03
基礎的なことですが教えて下さい
Form1からForm2のフォームを呼び出し
Form2のボタンを押したらForm1で宣言した変数に数字を入れたいのですが
その場合Form2のButtonクリックイベントにどうやって書けばいいでしょう?

147 :デフォルトの名無しさん:2009/10/20(火) 17:15:21
>>145
タイマーがWindowsメッセージに依存してるからって
デザイナと何の関係がある?

あとコンポーネントタブにあるのは
Windowsじゃないサーバータイマーだぜ。


148 :デフォルトの名無しさん:2009/10/20(火) 17:19:23
タイマーはUIの外から使えないからコンポーネントでもおかしくないって?
どんな理屈だよ。
まあサーバータイマーはUIと関係なく使えるけどな。

TableAdapterもデフォルトはコンポーネントだな。


149 :デフォルトの名無しさん:2009/10/20(火) 17:42:07
>>146
Form1にpublicなメソッドなりプロパティなり作ってForm2から呼べばいい
Form2には事前にForm1のインスタンスを渡しておく。

150 :デフォルトの名無しさん:2009/10/20(火) 18:02:53
>>149
インスタンスがよく分かりません;
参考になるサイト有りませんか?

151 :デフォルトの名無しさん:2009/10/20(火) 18:25:14
>>150
初歩すぎるからどのサイトでもいいと思うが。
ちなみにForm1から見たForm1のインスタンスはthis

152 :デフォルトの名無しさん:2009/10/20(火) 18:38:32
Form2からForm1を呼びたい場合は、Form1側に

private static Form1 _form1Instance;
int form2count = 0;
public int form2ins
{
get
{ return form2count; }
set
{ form2count = value; }
}

これでいいんですかね?

153 :デフォルトの名無しさん:2009/10/20(火) 18:41:46
きも過ぎるだろ。

154 :デフォルトの名無しさん:2009/10/20(火) 18:52:48
Form2のコンストラクタにでも引数追加してやれば

155 :デフォルトの名無しさん:2009/10/20(火) 19:22:59
>>コンポーネントの人たち
そもそも、ツールボックスに表示されているのは殆どコンポーネントだし
[コンポーネント]にあるのは明確なカテゴリのない残り物

てか、適当な事書く前に.NETでのコンポーネントの定義を確認してくれよ

156 :デフォルトの名無しさん:2009/10/20(火) 20:59:56
>>152
きもすぎワロタw

//Form1.cs

public string Data
{
get;
set;
}
private void button1_Click(object sender, EventArgs e)
{
Form frm = new Form2();
frm.Show(this);
}
//Form2.cs
private void Form2_Load(object sender, EventArgs e)
{
var frm = this.Owner as Form1;
if (frm != null)
frm.Data = "kimosu";
}

157 :152:2009/10/20(火) 21:39:46
>>156
駄目だw理解出来ないw
var frm = this.Owner as Form1;
これは一体何してるの?

if (frm != null)してるなら、どのタイミングでfrmをdisposeすればいいの?
Form2のClosingでdisposeしとけばいい?
まさか俺はdisposeの意味を全く理解して無いだけか

get; set;
これってgetとsetの処理分けて書かないと駄目なんじゃないの?

多分スルーされて涙目になるんだろうけど、
誰でもいいから教えてよ;w;


158 :デフォルトの名無しさん:2009/10/20(火) 21:51:38
なんつーかまずはふらっと行ってこい。
get;set;については匿名係長でググれ

159 :デフォルトの名無しさん:2009/10/20(火) 21:54:18
というかForm2からForm1の値を弄るとかキモイな

160 :デフォルトの名無しさん:2009/10/20(火) 21:55:28
仕様からキモイから仕方ない。

161 :デフォルトの名無しさん:2009/10/20(火) 21:58:54
え?
じゃあ例えばForm2からForm1の背景色を変更するときとか普通はどうするの?


162 :デフォルトの名無しさん:2009/10/20(火) 22:02:51
イベント使う

163 :デフォルトの名無しさん:2009/10/20(火) 22:04:48
そんなイベントある?

Form2に設置したボタンを押された回数を
Form1で宣言した変数に入れたい時もイベントで出来るの?

164 :デフォルトの名無しさん:2009/10/20(火) 22:09:29
カウントしてけばいいんじゃね?

165 :デフォルトの名無しさん:2009/10/20(火) 22:09:33
その変数ほんとにForm1に宣言するのが自然ですか?
別の独立したクラスに持たせて,Form1とForm2の両方から参照した方がスマートではありませんか?

166 :デフォルトの名無しさん:2009/10/20(火) 22:11:13
フォームがクラスであるとこを理解できないのとグローバル変数が大好きなのが合わさるとごらんの有様だよ

167 :デフォルトの名無しさん:2009/10/20(火) 22:13:09
>>158
var frmは理解しました。
varってクラスの型なんですね

disposeの件は勘違いしてました。
今までのソース見てもそんなのしてねぇや、俺アホす

匿名係長でググってもめぼしい物が見つからない・・・

>>165
やべえ、感動した。
まだほんの小規模なツールしか作ったこと無くて、クラスも1つしか使ってなかった
そうか、それで別のクラス作ればいいのかw

168 :デフォルトの名無しさん:2009/10/20(火) 22:15:16
>>166
「Form1の変数を弄るためのイベント」みたいにForm1を意識して作るんだったら
直接Form2からForm1を触るのと変わらん
どうせ意識するんだったら意識する範囲を別のクラスに括り出す

169 :デフォルトの名無しさん:2009/10/20(火) 22:19:43
クラスの概念が理解出来てなかった
未だにnamespaceとかの概念も分からないわ
新規にクラス作るときは、Form1.csの中に書いても良いのかな?
namespace app1
{
public partial class Form1 : Form
{ public Form1 }
//ここに、public partial class aho{ }ってすればクラス追加したことになるの?
}
というか、ここで聞けるほど簡単な所でひっかかってるんじゃなさそうだから
ソースの構造体とかの概念を説明してるサイト無いのかな
ググってもサンプルとかはいくつも出てくるけど、そんなサイトのほうが少ないし
どうするかな・・・

170 :デフォルトの名無しさん:2009/10/20(火) 22:23:38
>169
ここで聞いちゃいけないほど簡単なことをきいてんだよお舞は(´・ω・`)

171 :デフォルトの名無しさん:2009/10/20(火) 22:24:39
>>169
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html
行ってらっしゃい
読破するまでは戻ってくるなよ

172 :デフォルトの名無しさん:2009/10/20(火) 22:26:29
どうも。読破するまで戻りません。
ありがとう

173 :デフォルトの名無しさん:2009/10/20(火) 22:30:52
>>167
君が特命係長のファンだというならば、
次は自動プロパティでぐぐることをお勧めいたします。

174 :デフォルトの名無しさん:2009/10/20(火) 23:07:04
ComponentModel.Componentのサブクラスの
BackgroundWorkerはどうやってWinFormのControlや
WPFのUIElementに同期してるんだろ。
コンストラクタなどでフォームのthisを渡しているふうでもないし、
DelegateのTargetを使ってるふうでもない。

175 :デフォルトの名無しさん:2009/10/20(火) 23:11:03
いや同期したら意味ないから
イベントは全部非同期コールバック

176 :デフォルトの名無しさん:2009/10/20(火) 23:15:11
まだ読み終わってないけど、>>173見て
最後一つだけ質問させてくだはい
class plex{
   private int clickcount=0;
   public int ClickCount
    {
      set { clickcount = value; }
      get { return clickcount; }
    }
}
---
Comp c = new Comp();

if (c!=null)
      { c.ClickCount++; //0に1追加
       MessageBox.Show(c.ClickCount.ToString()); } //毎回1が返される

何度setしてもカウントがgetするたびに0になってます
上手くsetされていないのかもしれないんですが、どこがおかしいか指摘もらえませんか?

177 :デフォルトの名無しさん:2009/10/20(火) 23:17:39
プロパティに++は使えない

178 :デフォルトの名無しさん:2009/10/20(火) 23:17:45
あ、class名はCompですね、書き間違えました

179 :デフォルトの名無しさん:2009/10/20(火) 23:20:15
++が使えないなら0が返るのでは?
c.ClickCount=c.ClickCount+1;
こうしてみましたけど、これでも毎回1しか返してきません

180 :デフォルトの名無しさん:2009/10/20(火) 23:23:04
Comp c = new Comp();をクラス直下に移動する

181 :デフォルトの名無しさん:2009/10/20(火) 23:23:14
エスパーしてみる。
おそらくButton_Clickなんかの中でnewしてるんでしょ。

var c = new Comp(); // ←新しく作ったので、値0から
   : なんか処理

var c = new Comp(); // ←また新しく作ったので、値0から

182 :デフォルトの名無しさん:2009/10/20(火) 23:25:55
一番いいのはイベントを飛ばすのだけれど、この分だとForm1のインスタンスを渡すのも辛そうだ。
staticなclassにpublicフィールドもta
せればいいと思うよ。

183 :デフォルトの名無しさん:2009/10/20(火) 23:26:14
>>180,181
見事、それが原因でした
そういうものなのね、少しそれも疑ったけれど
毎回clickcountに++されていってると思ってて
newごとにそうなるとは思わなかった。
ありがとうございます。

184 :デフォルトの名無しさん:2009/10/20(火) 23:28:24
>>175
説明が足りなんだ。DoWorkじゃなくて
ProgressChangedとRunWorkerCompletedのこと。


185 :デフォルトの名無しさん:2009/10/20(火) 23:28:26
>>177
嘘付くな

186 :デフォルトの名無しさん:2009/10/20(火) 23:31:49
小間苛やさしいなw

187 :デフォルトの名無しさん:2009/10/20(火) 23:32:52
>>184
コンポーネントなんだから自分の親が誰かくらいは知ってるんじゃないの

188 :183:2009/10/20(火) 23:34:17
あー・・・
>>176のソースで、
Comp c = new Comp();を使うと、clickcount=0になるんですよね?
この場合、値をリセットせずにプロパティを参照することはできませんか?

何度かそのフォームを表示させて、ボタンをクリックさせるたびに、
以前のクリックした回数は保持させておきたいのですがそんなことは出来ませんか?


189 :デフォルトの名無しさん:2009/10/20(火) 23:34:32
>>174
AsyncOperationつーもんがある

190 :デフォルトの名無しさん:2009/10/20(火) 23:40:07
>>188
毎回インスタンス生成してるんだから、カウントをリセットしているわけじゃなく、毎回新しいCompのプロパティを0→1にしている。

191 :デフォルトの名無しさん:2009/10/20(火) 23:47:26
>>184
WinFormsやWPFがグローバルなSynchronizationContextを提供してるみたい
Componentは特に関係なさそう

192 :デフォルトの名無しさん:2009/10/20(火) 23:47:54
>>190
あー、毎回1になる原理は分かりました。
しかし、毎回インスタンス生成しないと、参照出来ないのでは?

193 :デフォルトの名無しさん:2009/10/20(火) 23:54:27
>>189,191
ありがとう。AsyncOperationは少し調べてみます。


194 :デフォルトの名無しさん:2009/10/20(火) 23:56:03
>>192
レス全部読んでる?

195 :デフォルトの名無しさん:2009/10/21(水) 00:00:30
>>194
何か重要なレス見逃しました?
一応全部目を通してるんですが・・・

196 :デフォルトの名無しさん:2009/10/21(水) 00:02:15
>>195
>>180
Comp c = new Comp();
private void button1_Click(…

197 :デフォルトの名無しさん:2009/10/21(水) 00:08:26
変数のスコープをもっと考えなさいってこと。

198 :デフォルトの名無しさん:2009/10/21(水) 00:11:23
>194
そもそも読んだところで理解出来ないと思われ

199 :デフォルトの名無しさん:2009/10/21(水) 00:11:59
>>196
あ、じゃなくて、直下に移動させてその問題は解決したんですが
Form1からForm2出して、Form2のボタンをクリックすると、
>>176使ってclickcountにクリックした回数を++した後でForm2をClose
このあと、2回目以降にForm2を呼んだとき、
どうしても毎回Comp c = new Comp();通りますよね。
このときclickcountに格納された値も0になってしまうのを回避する方法は無いですか?

わかりづらくてすいません。

200 :デフォルトの名無しさん:2009/10/21(水) 00:29:15
生存期間を考えて、ふさわしい方法を考えようぜ

201 :デフォルトの名無しさん:2009/10/21(水) 00:44:51
おまえはもうこっちにいけ。
http://pc12.2ch.net/test/read.cgi/tech/1255658236/
スレを汚すな。バカチンが。

202 :デフォルトの名無しさん:2009/10/21(水) 01:05:20
はじめての言語がC#、いま2ヶ月たちました。
結構簡単ですね。簡単な業務用ツールいくつか作れました。

って感じがするw

203 :デフォルトの名無しさん:2009/10/21(水) 01:16:18
>>199だけ教えて貰えませんか
この方法あれば終われますので;

204 :デフォルトの名無しさん:2009/10/21(水) 06:39:16
あきらめろよ

205 :デフォルトの名無しさん:2009/10/21(水) 09:56:43
最初に答えるときに、ふらっと誘導しようと思ったんだが
ここまで引っ張るとは思ってなかったわ・・・

206 :デフォルトの名無しさん:2009/10/21(水) 12:22:52
HTMLをネット上から取得した場合
画像や、リンクがフルパスではなく

../img/image.jpg
/help.htm

のように、なっていることが多いのですが
これをどうにか、フルパス指定にする方法はないでしょうか

207 :デフォルトの名無しさん:2009/10/21(水) 12:27:01
base要素か現在のurlからUri作るだけ

208 :デフォルトの名無しさん:2009/10/21(水) 12:27:11
C#一切関係ないなそれ
BASEでも指定すればいいんじゃないの。何に使いたいのかは知らんけど

209 :デフォルトの名無しさん:2009/10/21(水) 12:48:36
>>207,208
ありがとうございます
教えていただいたもので考えた結果

string url="http://google.com";
Uri base=new Uri(url);

HTMLをサーバーから取得し、htmlというstring変数に入れる

html内を検索し、../や/で始まるものを置換するという方法で一応できる・・・のでしょうか
こういう処理しか思い浮かばなかったのですが
最初から、フルパスで取得したりはできないですよね・・・・
この処理すごく煩雑になると思うのですが、もうちょっとスマートな方法はないでしょうか?orz

210 :デフォルトの名無しさん:2009/10/21(水) 12:53:22
あ、ちなみにやりたいことは
ネットを見る際特定の広告などを表示しないなど、直接ではなく少し改変して表示するブラウザの作成です

211 :デフォルトの名無しさん:2009/10/21(水) 13:12:30
現在のページのUriはわかってるわけだから、
このタイプのコンストラクタを使う。
Uri (Uri baseUri, string relativeUri)

212 :デフォルトの名無しさん:2009/10/21(水) 13:42:37
>>211
それを調べてみたのですが
BaseUriの後にRelativeUriをくっつけてるだけですよね?
つまり、RelativeUri(/index.htmlなど)が分からなければいけないので
取得したソースから[/***.html]や[../***.jpg]などを検索、取得しRelativeUriにいれて一個ずつ置換しなければなりませんよね?
自分が勘違いしているだけかもしれませんが
そうなると、ソースの中から上記のものを取得しなければならない作業があるわけですが
それを簡単に行うことはできますでしょうか?
自分が考えついたのは
ソースないで「"../」や「"/」で始まる部分を検索し、そこを置換という方法だけだったのですが
すごく煩雑でしかも、/で始まらない場合には対応できないので
何か他にいい案がないものかな。と思いまして・・・

213 :デフォルトの名無しさん:2009/10/21(水) 13:48:50
正規化

214 :デフォルトの名無しさん:2009/10/21(水) 15:17:25
>>212
言ってる意味が分からないな。
urlを食わせればそのページからのリンクをフルパスで
一覧してくれる便利な関数やライブラリはないかという話なら標準のBCLにはない。
だいたい、相対URLが ../ や /で始まってるとも限らないだろ?


215 :デフォルトの名無しさん:2009/10/21(水) 15:23:35
それから、これはURLの正規化をしてくれるよ。
>Uri (Uri baseUri, string relativeUri) 

base=http://www.xxxx.com/xxx/yyy/aaaa.html
として
relativeUri=../zzz/xxx.html
なら、ちゃんとこうなる。
http://www.xxxx.com/xxx/zzz/xxx.html

relativeUri=/bbb.html
なら、こうなる。
base=http://www.xxxx.com/bbb.html


216 :デフォルトの名無しさん:2009/10/21(水) 17:54:17
リストビューで、非フォーカス時に選択されている行の背景色は淡いグレーですが、
まるでフォーカスが当たっているように青にするにはどうすれば良いでしょうか?

217 :デフォルトの名無しさん:2009/10/21(水) 18:05:59
グローバルな設定はできたと思うけど混乱するのでやめた方がいい
リストビューだけ変えるにはオーナードローしかないんじゃね

218 :デフォルトの名無しさん:2009/10/21(水) 18:14:15
フォーカスの外れたタイミングでSelectedItemsのBackColorとForeColorかえてやるとか

219 :デフォルトの名無しさん:2009/10/22(木) 20:37:24
すいません。教えてください。

クライアント複数(C#でWinアプリ)→サーバー(SqlServer2005Express)というアプリを作りたいです。
このアプリを配布する前提なのですが、どのように作成したらよいでしょうか。
「サービスベースのデータベース」で作成してサーバーでのデータベース運用にできるのでしょうか?
また、どのように配布するのでしょうか。

よろしくお願いいたします。


220 :デフォルトの名無しさん:2009/10/22(木) 21:47:28
>>219
1)ASP.NETでつくる。
2)WebServiceでプレゼンテーション層を作り、ClickOnceでクライアントに配布。

便乗で質問してよろしいでしょうか?
XmlWebサービスでDataTableを取得し、コンボボックスのデータソースにしようとしています。
DataTableを取得するまではできたのですがDataSourceにつっこんでも欲しい値がでません。
コンボボックスには〜.DataViewみたいな型情報が出てしまいます。
XmlWebサービスで取得する値は、DBからSelect文で1列だけ取得したものです。
for eachで値が取れていることは確認し、Items.Add()で追加することもできました。
だけど、ComboBox.DataSourece = datatable;の形で値を表示したいです。
なぜ正しくでないのか、そして正しくでる方法を知っている方がいましたら教えてください。

よろしくお願いします。

221 :デフォルトの名無しさん:2009/10/22(木) 21:49:59
>>220 はぜんぜんわかってないとみた。

222 :デフォルトの名無しさん:2009/10/23(金) 08:32:58
>>220
DisplayMember と ValueMember を指定


223 :デフォルトの名無しさん:2009/10/23(金) 12:17:45
>>222
thx。試してみるわ。


224 :デフォルトの名無しさん:2009/10/23(金) 15:50:21
すまん、どっかにオブジェクト参照残ってるぽくて、強制ガベコレしてもデストラクタまでこないんだがどんな風に掴まれてるのかオブジェクトグラフを辿る方法とかない?

225 :デフォルトの名無しさん:2009/10/23(金) 18:14:33
知るか禿げ

226 :デフォルトの名無しさん:2009/10/23(金) 21:33:32
アルゴリズムとデータ構造を勉強しようと思っているんだけれど、言語はC#でいいかな?
本はC言語の方が充実しているみたいだが、C#にも強くなりたいと思っているので。
他にC、Java、JavaScriptの文法ならわかる。

227 :デフォルトの名無しさん:2009/10/23(金) 21:35:18
>>226
今からC++覚える意義は何もないのでC#でいいよ

228 :デフォルトの名無しさん:2009/10/23(金) 21:36:10
Rubyがいいよ

229 :デフォルトの名無しさん:2009/10/23(金) 22:02:00
Haskellにしとけ

230 :デフォルトの名無しさん:2009/10/23(金) 22:12:56
>>228-229
ふざけんな

231 :デフォルトの名無しさん:2009/10/23(金) 22:17:11
ふざけんなとは、どういう意図で言ってるんだ?

232 :デフォルトの名無しさん:2009/10/23(金) 23:10:52
C#スレで別の言語すすめんな!スレ違い!って意味じゃないのかね。
まあ Ruby も Haskell も別にふざけた言語じゃないと思うけど。

ちなみにC#でアルゴリズムの勉強するとしても
Cとほぼ同じレベルの文法しかつかわないと思うよ。
使い方じゃなくて実装の方の勉強をするんでしょ?

233 :デフォルトの名無しさん:2009/10/23(金) 23:18:18
おまえに答えろと言ってねえよ
すっこんでろ

234 :デフォルトの名無しさん:2009/10/23(金) 23:19:46
>>232
うん。
使い方なら、(言語は何であれ)そもそもライブラリが充実しているのでそちらを使えるようになればいいと思っている。
目的はそのための基礎づくり。

235 :デフォルトの名無しさん:2009/10/23(金) 23:21:18
C#のすれでC#でいいかなとかもうばかかと

236 :デフォルトの名無しさん:2009/10/23(金) 23:42:15
なにこのうんこな流れ

237 :デフォルトの名無しさん:2009/10/24(土) 11:36:29
うんこは水に流すしかないな

238 :デフォルトの名無しさん:2009/10/24(土) 12:03:47
別のExeのプロセスをフックするにはどうしたらいいんでしょうか?


239 :デフォルトの名無しさん:2009/10/24(土) 12:40:01
プロセスのフック、なんてものはない。
別プロセスの何をフックしたいんだ?

240 :238:2009/10/24(土) 13:08:39
自己解決しました

241 :デフォルトの名無しさん:2009/10/24(土) 13:14:38
よかったね。

242 :238 :2009/10/24(土) 13:28:53
してません。
サブクラス化?って奴だと思うんですが、自身のウィンドウしかできないもので。


243 :デフォルトの名無しさん:2009/10/24(土) 13:32:41
>>238
おれは優しいので教えてあげる

API

244 :デフォルトの名無しさん:2009/10/24(土) 17:59:42
自己解決しました

245 :デフォルトの名無しさん:2009/10/24(土) 20:09:21
サブクラス化ってことは、ウィンドウメッセージね。
あれは C# じゃ無理。グローバルフックが必要だから。

246 :デフォルトの名無しさん:2009/10/24(土) 22:23:07
C#でグローバルフックできるよ。

247 :デフォルトの名無しさん:2009/10/24(土) 23:08:43
へー。どうやってやるの? LL じゃ意味がないのはわかってるよね?

248 :デフォルトの名無しさん:2009/10/24(土) 23:14:46
>>247
ggrks
http://www.google.co.jp/search?hl=ja&source=hp&q=C%23+%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E3%83%95%E3%83%83%E3%82%AF&lr=&aq=f&oq=

249 :デフォルトの名無しさん:2009/10/24(土) 23:19:50
LL じゃん。ウィンドウメッセージをフックしてくれよ。グローバルフックで。

250 :デフォルトの名無しさん:2009/10/24(土) 23:22:03
まぁ、意味がわかってないバカってことだな。

251 :243:2009/10/24(土) 23:25:50
おれのことスルーしてる?

252 :デフォルトの名無しさん:2009/10/24(土) 23:27:01
お前ははなから相手にされてない。

253 :デフォルトの名無しさん:2009/10/25(日) 03:31:57
>>251
おれは優しいので教えてあげる

帰れ

254 :デフォルトの名無しさん:2009/10/25(日) 16:07:14
ぐぐっても分からなかったんだけど、LLってなに?

255 :デフォルトの名無しさん:2009/10/25(日) 16:23:33
LightningLazer

256 :デフォルトの名無しさん:2009/10/25(日) 16:24:22
LoveLevolution

257 :デフォルトの名無しさん:2009/10/25(日) 16:46:29
>>254
WH_KEYBOARD_LL, WH_MOUSE_LL

258 :デフォルトの名無しさん:2009/10/25(日) 20:35:39
LowLevelHook

259 :デフォルトの名無しさん:2009/10/27(火) 15:50:20
体重が100kg以上だとLLサイズになる

260 :デフォルトの名無しさん:2009/10/27(火) 15:51:08
XLは?

261 :デフォルトの名無しさん:2009/10/27(火) 21:15:54
「列挙型はクラスではない」で合っていますか?
あと「文字列や配列はクラスである」という理解でいいんでしょうか?

値型となるのが数値、文字、真理値、構造体
参照型となるのが配列、文字列、クラス、インターフェース、デリゲート
列挙型は特定の数値しか取らない型定義だから、値型。つまり参照型のクラスではない
という論法。

262 :デフォルトの名無しさん:2009/10/27(火) 21:36:56
俺もそういう理解だけど、困ったこと無いからいいんじゃないかな?
間違ってるとして、困った事が起こるのはどんな時?教えて偉い人。

263 :デフォルトの名無しさん:2009/10/27(火) 21:41:09
配列はクラスかというとちょっと微妙だな
配列型の基底クラスであるArrayは確かにクラスだけど配列型そのものは
やっぱりクラスではなく配列型と呼ぶのが普通だろう
デリゲートだってDelegateはクラスだけどデリゲートそのものはデリゲート型と呼ぶだろ(実体はクラス)

264 :デフォルトの名無しさん:2009/10/27(火) 21:43:19
なんですかそのパンダは哺乳類と呼ぶべきで動物じゃない理論は

265 :デフォルトの名無しさん:2009/10/27(火) 21:50:56
動物か植物か矛盾だらけの世界〜♪とかいう歌を最近聴いた気がする。

System.EnumはSystem.ValueTypeを継承してるから値型の一種でいいと思うけど、
struct型の値型とは分類が違う。EnumはEnum型と呼ぶべきだろう。

266 :デフォルトの名無しさん:2009/10/27(火) 22:04:22
列挙型ってCLIのプリミティブ型に型情報をくっつけてるだけだよ
その意味ではInt32やCharなどと同じ

267 :デフォルトの名無しさん:2009/10/27(火) 22:09:04
ILで見ると分かりやすい。
public enum ABC { aa, bb, cc }
が、こうなる。
.class public auto ansi sealed ABC extends [mscorlib]System.Enum
{
  .field public specialname rtspecialname int32 value__
  .field public static literal valuetype ABC aa = int32(0x00000000)
  .field public static literal valuetype ABC bb = int32(0x00000001)
  .field public static literal valuetype ABC cc = int32(0x00000002)
}


268 :デフォルトの名無しさん:2009/10/27(火) 22:40:27
>>261
C#言語仕様14章より
列挙型とは、名前付き定数のセットを宣言する固有の値型 (4.1 を参照) です。

269 :デフォルトの名無しさん:2009/10/29(木) 17:49:39
C#でネット通信するとき
Webproxy=NULL;
にすると通信がすっごく早くなるのですが、これを使う(プロクシを使用しない)ことによる問題はありますか?
プロクシ通さないと繋がらないPCはおいといて、通常の環境での話です


あと、たとえばWebで
じゃんけんゲームをcgiで作ったとします

ボタンが3つあって、
Aを押すとグー
Bを押すとチョキ
Cを押すとパー

ボタンを押すと相手もランダムに手を出し勝負するという単純なものです


cgiの内部的には、Aというボタンが押された、という情報を受け取って表示をしていることは分かるのですが

C#のアプリ側で
そのAというボタンが押されたという情報を送って、帰ってくる結果を取得するにはどうすればいいのでしょうか?

WebBrowserを用いて直接ボタンを押す以外でです。
わかりにくかったらすいませんorz

270 :デフォルトの名無しさん:2009/10/29(木) 17:59:09
HTTPがわかればわかる

271 :デフォルトの名無しさん:2009/10/29(木) 18:05:58
申し訳ありません
説明不足でした

HTTP Header
というもので、どういう情報を送信すればいいかはわかってます
上のやつで
ボタンAが押された場合は
Agaosareta
という情報が送られるようになっています


でも、どうやって送信、取得すればいいのかがわからなくて・・・・・

272 :デフォルトの名無しさん:2009/10/29(木) 18:08:44
実際の通信の中身が知りたいのか、HTTPRequest等の使い方が知りたいのかどっちよ

273 :デフォルトの名無しさん:2009/10/29(木) 18:24:17
http://www.dotup.org/uploda/www.dotup.org315393.png
こんな感じです

おおげさですが
専用ブラウザみたいなものを作りたいといえば通じるようなきがします
元々はシンプルなものを、ローカル側で見やすくして表示するじゃんけんゲーム専用のブラウザを作りたいです

ブラウザなら、ボタンを押せば勝手に情報が送信されますよね?
そして、かえって来た情報を元にテキスト(勝ち負け)を表示


でも、それをローカルのアプリからやる方法がわからないんです
この絵で言うパー(じゃんけんの手を送信)を送信
と、結果を取得(じゃんけんの結果を取得)

がよくわかりません・・・
結果さえ取得できれば
勝ちならif(win)〜
負けならelse if(rose)〜

みたいにして結果のぺーじをかえればいいんだとは思いますが

274 :デフォルトの名無しさん:2009/10/29(木) 18:30:21
>>271 からPOSTするときの内容もわかってると思っていいの?
って面倒だからググってきた。
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/318webpost/webpost.html
こういうのでわかる?

275 :デフォルトの名無しさん:2009/10/29(木) 18:36:29
>>273
WebClient もしくは HttpWebRequest を使う(前者のほうが簡単)
http://www.atmarkit.co.jp/fdotnet/dotnettips/302wcget/wcget.html
ブラウザで表示するのとは別のアドレスを用意するか
送信する引数に勝敗だけ返してねーってフラグでも付けて送る
例えばGETでやるならこんな感じかね(非ブラウザからパーを送信)
http://www.hoge.co.jp/pss.cgi?value=paper&mode=client

CGI側は value の内容から勝敗を決定し単純に勝敗のみを文字で返す
クライアントはダウンロードした文字の内容で結果を判断する

WebClient wc = new WebClient();
byte[] data = wc.DownloadData("http://www.hoge.co.jp/pss.cgi?value=paper&mode=client");
Encoding enc = Encoding.GetEncoding("Shift_JIS");
string html = enc.GetString(data);
if (html == "勝ち") { } else { }

276 :デフォルトの名無しさん:2009/10/29(木) 18:37:02
>>274
まさにこれです
本当にありがとうございました

このじゃんけんゲームは自分で作ったので
それぞれ

paagaosareta
guugaosareta
tyokigaosareta

という内容を送信するということは分かってます

それを見てふ、と思ったのですが
googleで検索ボタンを押したときや、たとえば2chに書き込む情報を送るなんていう場合は
色々POSTされているんだと思いますが
そういうのを調べる方法はあるのでしょうか?

277 :デフォルトの名無しさん:2009/10/29(木) 18:44:52
FirefoxでHTTP Live Headersアドオン入れるのが手軽

278 :デフォルトの名無しさん:2009/10/29(木) 18:49:03
って中身もか、、、HTTPわかりゃいい、、、というかcgi書いてるなら中身わかると思うが

279 :デフォルトの名無しさん:2009/10/29(木) 18:52:51
いったいHTTPのことは分かってるのか分かってないのかどっちだ

280 :デフォルトの名無しさん:2009/10/29(木) 18:53:47
入門書の通り作っただけなのでさっぱりわかってません・・・・
動いた!わーい!

って感じです・・・・

281 :デフォルトの名無しさん:2009/10/30(金) 15:23:47
すいません。プログラマの熟練/猛者の方教えてください。

メインスレッド(フォーム表示関連)と
別スレッドからメッセージボックスを表示させたいのですが
メインスレッドのフォームの裏に隠れてしまう場合があり、困っております。

ググるとメインスレッドにイベントをあげてそっちで処理するとの方法がありましたが、
今の自分のプログラムではメインスレッドにてどのフォームが表示中か場合によって変わるため、
できれば別の方法で出来ないか模索しております。

メッセージボックス表示を暫定的でも最前列に持って行く方法は無いものなでしょうか?

セットアップパッケージを起こすまで全くこの問題に気づきませんでした
助けて、今日納めないといけないのだが・・・


282 :デフォルトの名無しさん:2009/10/30(金) 15:29:27
http://homepage3.nifty.com/midori_no_bike/CS/index.html?form.260

* Form を「モーダル ダイアログ」表示する
public class Form1
{
Form2 form2 = new Form2() ;
form2.ShowDialog() ;
:
:
form2.Dispose() ;
}
public class Form2
{
/* Form1 とは並行操作できない処理 */
}
*Form がアクティブか判定
// Form がアクティブか判定する
if (Form.ActiveForm == this)
{
// Form がアクティブ
}

// Form を最前面に移動し、その Form にフォーカスを移動する
this.Activate() ;

*Form を最前面に配置
// Form が常に最前面に表示されるように設定する
this.TopMost = true ;
// Note: TopMost を false に「再」設定すると、ToolTip が最前面に表示されなくなる
// 不具合がある?

これをMessageBoxにおきかえて考えればいいと思うんだがそういう話じゃなくて?

283 :デフォルトの名無しさん:2009/10/30(金) 15:48:03
>>281
以下のコードでテストした
オーナーが最前面なので裏に行くことは無いと思う
他にも常に最前面ウィンドウがあるとZオーダー次第で裏にいくのは変わらない
Thread thread = new Thread(new ThreadStart(delegate()
{
 using (Form ownerForm = new Form())
 {
  ownerForm.TopMost = true;
  MessageBox.Show(ownerForm, "test", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
 }
}));
thread.Start();


284 :281:2009/10/30(金) 16:00:41
>>282さま,
 回答有り難うございます。
>>283さま
 検証までして頂き感謝感激です

こちらも今検証させて頂いております。追ってご報告させて頂く所存です

今ちょっと気になっているのが、VS2008上では一切発生していなかったのが、
セットアップパッケージにしてでインストールし実行すると同現象が発生するようになった
理由がわからないのと、

それとメッセージボックスのタイプのも多種多様で至る所で使っているため、
出来ればそのままメッセージボックスはそのまま使いたいのですが、
これは282さまが張ってくださった
http://homepage3.nifty.com/midori_no_bike/CS/index.html?form.260
を改造して.以下にすればいけるのでしょうか?

(以下につづく)




285 :デフォルトの名無しさん:2009/10/30(金) 16:02:21
void this_activate()
{
// Thread のアタッチ
int fore_thread = GetWindowThreadProcessId(GetForegroundWindow(), IntPtr.Zero) ;
int this_thread = AppDomain.GetCurrentThreadId() ;
AttachThreadInput(this_thread, fore_thread, true) ;

// this をアクティブ
MesseageBox("ここを改造")

// Thread のデタッチ
AttachThreadInput(this_thread, fore_thread, false) ;
}



286 :デフォルトの名無しさん:2009/10/30(金) 16:05:02
>>285
ところで親ウィンドウが分からないとエラーメッセージ表示中に
裏のウィンドウ操作されちゃうけどそれはいいの?

287 :281:2009/10/30(金) 16:05:36
>>283さま

すいません。よくコードを読んでいませんでした。

ダミー(非表示)のフォームをたたき台にして、
その上にメッセージボックス表示させることで最前列にするわけですね!!!!

この方法が一番変更が容易そうなので、この方法で行く方向で検討させて頂きます。


大感謝!!!


288 :281:2009/10/30(金) 16:08:23
>>285
今はあきらめていますが、
裏のウインドウをを操作させない方法があるんでしょうか?

これは本当にモーダルにしないと駄目ですよね

289 :デフォルトの名無しさん:2009/10/30(金) 16:11:26
>>288
たまたまオブジェクトブラウザ眺めて見つけた Application.OpenForms を使ってみた
Form ownerForm = new Form();
ownerForm.TopMost = true;
if (Application.OpenForms.Count > 0)
{
 ownerForm.Owner = Application.OpenForms[0];
}
ownerForm.Owner.Invoke(new Action(delegate()
{
 using (ownerForm)
 {
  MessageBox.Show(ownerForm, "test", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
 }
}));


290 :デフォルトの名無しさん:2009/10/30(金) 16:11:53
>>288
ダミーフォームをたたき台にするなら

* Form を「モーダル ダイアログ」表示する
public class Form1
{
Form2 form2 = new Form2() ;
form2.ShowDialog() ;
form2.Dispose() ;
}
public class Form2
{
/* Form1 とは並行操作できない処理 */
}

これで一発で通るよ
それ以上をやりたいならしらん

291 :281:2009/10/30(金) 19:49:04
>>282〜290の皆様

皆様にピンチを救って頂いた281で御座います。

283さまのコードと同じ対応で、こちらでも問題の無いことが確認できましたので、
先ほどなんとかリリースすることが出来ました。

セットアップパッケージなんてすぐ出来るものと考えていたため、
時間をとっていなかったため、びびりまくっておりました。
次からは気をつけようと思います。

また289様/290様のコード勉強になります。

皆様、本当に有り難う御座いました。m(_ _)m



292 :デフォルトの名無しさん:2009/10/31(土) 00:23:22
C#で同一プロジェクト内でも[EditorBrowsable(EditorBrowsableState.Never)]がきくようにならないかねぇ
インテリセンスにズラズラ出てくるのがうざったいよ・・・

293 :デフォルトの名無しさん:2009/10/31(土) 14:49:05
1.3つのコンボボックス1〜3を縦に連ねる。
2.3列(列1、列2、列3)のデータセットを作成 。
データ型はvercher(20)です。
3.コンボボックス1のテキストをデータセットの列1に格納
  同様に、コンボボックス2、3の値をデータセットの列2、3に格納
4.データセットの内容をタブ区切りでテキストに書き出す。
5.そのテキストを各部門で活用。

としたいのですが、おかしな現象が生じます。

コンボボックス1に「集客力」と入れると、テキストに書き出されないんですが、
「集客」で入れると正常にテキスト出力がされます。

なぜ、「集客力」と集客で結果が異なるのでしょうか。
コンボボックスのテキストの利用に何かコツがあるのでしょうか?

よろしくお願いいたします。

294 :デフォルトの名無しさん:2009/10/31(土) 17:33:13
そのテキストは4で言うテキストなのか、コンボボックスのテキストなのか?
コンボボックスのテキストだとして、コンボボックス間の連動をどう設計してある
のか分からない。

295 :デフォルトの名無しさん:2009/10/31(土) 21:31:19
>>294さん、ありがとうございます。
申し訳ありません、コンボボックスが直接の原因ではなく、エンコード方法に起因しているのかもしれません。

タブ区切りのテキストを出力しようとしましたが、
Streamwriterのメソッドの中で、
encoding.default
のパラメーターを指定していました。
読むときも同じパラメーターでした。

それが原因なのかもと思いました。

タブ区切りでテキストを入出力するときは、皆さんはどのように記述されているのでしょうか?

296 :デフォルトの名無しさん:2009/11/01(日) 10:03:22
こっちで再現できるだけの材料をくれ・・・
タブ区切りなんてほとんど書かないけど、JoinしてWriteLineとかでいいんじゃ

297 :デフォルトの名無しさん:2009/11/01(日) 11:18:27
正常に出ないってのはどんな風に出ないんだ?
現象を正確に書くとこから始めようぜ。
まあ他にも不明点が大杉だが。


298 :デフォルトの名無しさん:2009/11/02(月) 03:56:49
IPCのサーバについての質問です。
クライアントから通信を受け取った後Application.Restart()すると、
通信終了処理のタイミングか、使用ポートが閉じられていないみたいで、
起動時にIPCポートが開けないとのエラーがでます。
で、ポートが開くまで待ってみようと、下のソースでループを掛けてみると、延々ループが回り続けます。
一度手動でアプリを終了させてから、再実行するとポートが開けるので、
キャッシュ辺りに実行開始時のポート状態を格納しているっぽいんですが、
このキャッシュをクリアする方法はありませんか?

もしくは、実行中に指定のIPCのポートが使用可能になったかどうかを調べる方法が知りたいです。

宜しくお願い致します。

while (true)
{
  try
  {
    IpcServerChannel ipcServerChannel = new IpcServerChannel("hoge");
    break;
  }
  catch (System.Runtime.Remoting.RemotingException ex)
  {
    continue;
  }
}


299 :デフォルトの名無しさん:2009/11/02(月) 04:19:02
難しい質問します。
今photoshopやpainterの様なソフトを作ろうとしていのですが、
すごい大きな画像(1200*1200*15*15くらい)のものを作るとメモリをすごく使います。
もちろんメモリ不足のエラーがでます。
しかしphotoshopなどで同じサイズで画像を描写などしてもあまりメモリを消費しません。
これはどういった操作を行っているのか分かる方いませんか?
またc#でも同じことができるのかも知りたいです。参考になる本などなんでいいので情報ください。
よろしくお願いします。

300 :デフォルトの名無しさん:2009/11/02(月) 04:32:31
小分け

301 :デフォルトの名無しさん:2009/11/02(月) 07:20:20
C# プログラマだと思い込んでいる、
ただの C# ユーザー、Visual Studio ユーザー
って多いよね。
プログラマではなく、ただの統合環境(IDE)ユーザーでしかない人。

IDEをそれなりに使いこなして、アプリっぽいものを作れる人と、
IDEがあってもなくても、アプリをガツガツ組める人とは
雲泥の差がある。

302 :デフォルトの名無しさん:2009/11/02(月) 07:35:57
770 名前:デフォルトの名無しさん[] 投稿日:2009/11/02(月) 06:24:27
Visual Basic プログラマだと思い込んでいる、
ただの Visual Basic ユーザー、Visual Studio ユーザー
って多いよね。
プログラマではなく、ただの統合環境(IDE)ユーザーでしかない人。

IDEをそれなりに使いこなして、アプリっぽいものを作れる人と、
IDEがあってもなくても、アプリをガツガツ組める人とは
雲泥の差がある。


303 :デフォルトの名無しさん:2009/11/02(月) 13:41:46
>>300
小分けは考えたのですが、そのためのライブラリがよく分からなかったので諦めてました。
ですので、もし分かるのであれば教えてください。
できるならC#でできる範囲でお願いします。

304 :デフォルトの名無しさん:2009/11/02(月) 14:00:58
ファイルマッピングでViewをこまめに設定とかか

305 :デフォルトの名無しさん:2009/11/02(月) 20:49:18
マネージドでファイルマッピングできるようになるらしいけど、いつ完成なのかなぁ。
.Net5.0 なのかな?まさか4.0?

306 :デフォルトの名無しさん:2009/11/02(月) 21:06:18
C# webBrowserのクッキーについて質問です。
webBrowserで開いたページのクッキーは、
AppData\Roaming\Microsoft\Windows\Cookies\*(IE8)
に保存されますが、この保存場所を変えるにはどうしたらいいでしょうか?

webBrowserで開いたクッキーは、終了と同時に削除したいからです。
よろしくお願い致します。



307 :デフォルトの名無しさん:2009/11/02(月) 21:16:09
>>306
IEコンポ使ってたら保存場所の変更はレジストリ弄る以外無理でしょ、たぶん。
保存される場所もVista移行は保護モードのON/OFFで変わるよ
終了時に消したいなら単純にAPIのDeleteUrlCacheEntryで消せば?
ただ普通のIEのCookieまで消えちゃうけどねw

308 :デフォルトの名無しさん:2009/11/02(月) 21:57:45
>>305
.NET Framework 4でやってくる。
http://msdn.microsoft.com/en-us/library/system.io.memorymappedfiles.memorymappedfile(VS.100).aspx

309 :デフォルトの名無しさん:2009/11/02(月) 23:33:10
>>308
おうっ来年。CreateFileMappingは使ったこと無かったんだ。
と、そもそも必要になるようなアプリは作ってなかったり。
ネタ考えとくか。

310 :デフォルトの名無しさん:2009/11/02(月) 23:37:33
memorymappedfileってなんですか?
どんな利点があるんですか?

311 :デフォルトの名無しさん:2009/11/02(月) 23:42:13
>>305
ファイルマッピングってC#で扱えないんじゃなかったけ?
ずーとwinAPIを使ってやるものだと思っていた。

312 :デフォルトの名無しさん:2009/11/02(月) 23:58:11
そうだよ。そんで、.NET 4.0 で新しくサポートされるようになった、ってこと。

313 :デフォルトの名無しさん:2009/11/03(火) 00:24:33
分からないことがあるのでぜひ力を貸してください。
2つのクラスc1,c2が以下のように定義されてるとします。

public class c1{
public Pen p{get;private set;}
public c1(){
p = new Pen(Color.Black);
}
}
public class c2{
public c2(){
c1 c = new c1();
c.p.Color = Color.White; ←
}
}

c2のインスタンスを作ると上記コードの'←'を実行した時点で
c.p.ColorがWhiteになっています。
c1の方でprivate setとしているのに、なぜWhiteになってしまうのでしょうか。
上記コードではPenを利用していますが、一般に内部に値型のプロパティを持っている
クラスならばこのようなことが起こるようです。
よろしくお願いします。

314 :デフォルトの名無しさん:2009/11/03(火) 00:51:04
>c.p.Color = Color.White; ←
これc1クラスのpにはsetしてないよ。
getしてるよ。
それで返ってきたPenのColorプロパティにColor.Whiteをsetしてる。


315 :デフォルトの名無しさん:2009/11/03(火) 00:58:11
知り合いに紹介してもらった女をどうするかはお前の勝手だ
知り合いは関係ない

316 :デフォルトの名無しさん:2009/11/03(火) 01:05:05
>>314
もしかしたら言葉足らずだったかもしれません;
私がやりたいのは、
>c.p.Color = Color.White; ←
この書き方が通らないようにprivate setと書いたのですが、
>>313のコードだと'←'を実行した後c.pのColorプロパティを見るとWhiteになってしまっているのです。
c.pに直接Penを入れるのは当然コンパイラがNGだと言ってくれるのですが。

317 :デフォルトの名無しさん:2009/11/03(火) 01:07:57
>>316
そりゃ、set できないのは c.p であって、
c.p を get した後にそこの Color 書きかえるのは自由。
private set はそのプロパティの中身を immutable にはできない。

318 :デフォルトの名無しさん:2009/11/03(火) 01:14:19
>>317
なるほど、分かりました。
このような場合にgetした中身に対してもsetできないようにすることは無理ですか?
もしそうなら根本的にPenをプロパティにすること自体をやめるしかないですよね。

319 :デフォルトの名無しさん:2009/11/03(火) 01:27:45
>>318
プロパティのゲッタでは、変更されても問題がない値を返すようにすればいいんだよ。
具体的にはクローンを返せばいい。

だけど、自分で利用するだけのコードなら普通はそこまで気を使う必要はないと思うけど。
そんなものがバグの原因になることは殆どないと思うし。

320 :デフォルトの名無しさん:2009/11/03(火) 01:36:21
>>319
なるほど!それいいですね。

>だけど、自分で利用するだけのコードなら普通はそこまで気を使う必要はないと思うけど。
>そんなものがバグの原因になることは殆どないと思うし。
そうなんですよね。
でもなぜかなーと疑問に思っていたら気になって寝られなくなってしまったのです。

お答えくださったみなさん(?)、夜分遅くにありがとうございました!

321 :デフォルトの名無しさん:2009/11/03(火) 02:05:57
プロパティでコピーを返すのはNG。メソッドにしろ

322 :デフォルトの名無しさん:2009/11/03(火) 02:36:11
>>321
もしかして
ttp://msdn.microsoft.com/ja-jp/library/0fss9skc.aspx
これのことをおっしゃってますか?

323 :デフォルトの名無しさん:2009/11/03(火) 02:57:01
プロパティでコピーを返すのがNGなら値型のプロパティは禁止だな

324 :デフォルトの名無しさん:2009/11/03(火) 05:23:54
この辺だな
ttp://msdn.microsoft.com/ja-jp/library/ms229054.aspx
ttp://msdn.microsoft.com/ja-jp/library/ms182181.aspx

325 :デフォルトの名無しさん:2009/11/03(火) 07:33:55
>>304
ありがとうございます。つまりC#だけでは大きなサイズを操作することは無理って事ですね。
残念です。


326 :デフォルトの名無しさん:2009/11/03(火) 10:00:51
無理じゃない、実際にやってる

327 :デフォルトの名無しさん:2009/11/03(火) 11:04:05
>>326
wib32apiを使わずにできるのですか?

328 :デフォルトの名無しさん:2009/11/03(火) 11:20:25
いったい何を言ってるんだ?

329 :デフォルトの名無しさん:2009/11/03(火) 11:37:09
>>327
「C#だけ」の見解の相違。
アンマネージドコードなapi呼び出しだってC#で書けるから、C#だけで書ける。

330 :デフォルトの名無しさん:2009/11/03(火) 13:56:09
>>324
ありがとうございます。参考にさせてもらいます。

331 :デフォルトの名無しさん:2009/11/03(火) 14:06:50
ただねえ、MSDNに書いてある「掟」にはそれを守るべき理由も一応書いてあるわけで、
つまりその理由に反しないのであれば形式上「掟」に反しても何の問題もないんじゃないかと
個人的には思うけどねえ。

Penのクローンなんてどう考えても問題ないでしょ。

それに、その「掟」は、あくまでクラスの利用者に、作ってる側が想定している
使い方を期待できない、甘えが許されないケースの「掟」なわけで、
利用者と使用者が同じケースなら配列をプロパティで返そうとなーんも問題ないんじゃないかと。

332 :デフォルトの名無しさん:2009/11/03(火) 14:33:12
その理屈ならクローン自体いらないじゃん
変更しないように気をつければいい
それにPenのクローンはアンマネージリソースも複製するから特に遅いしDisposeも必須
普通に考えればプロパティにするのは特に不適切なケース

333 :デフォルトの名無しさん:2009/11/03(火) 14:43:43
>>332
「変更は」したいケースなんでしょ。
例えば何かのオブジェクトが持ってるペンと、同じスタイルで色だけ変えた
ペンで描画したい、とか何とか。

>それにPenのクローンはアンマネージリソースも複製するから特に遅いしDisposeも必須
それはメソッドに変えたところで改善される問題じゃあないね。

プロパティではなくメソッドになっていることで、それがそれなりに「重い」処理であることを明示できる、
という考えかもしれないが、明示されたところで回避方法はないのだから何の意味もない。

334 :デフォルトの名無しさん:2009/11/03(火) 14:49:44
それなら使う側でクローンするべき
使う側でいったん一時変数に入れて後でDisposeしないといけないプロパティなんか常識外れにも程がある

335 :デフォルトの名無しさん:2009/11/03(火) 14:50:49
あ、いやまあメソッドになっていれば「繰り返し使う場合はキャッシュして使えよ」
っていうサインにはなるか……。

自分の書いたコードでも実装の詳細なんて数日で忘れちゃうことを考えれば、
確かにそういう意味ではメソッドの方が適切かもしれない。

ただ、個人的にはこんなものまでGetXXXなんてメソッドにするのは嫌いw

336 :デフォルトの名無しさん:2009/11/03(火) 14:53:52
>>334
Penに限れば確かにそうだねすまん。
Win9x以外はPenのDisposeを必ずしも呼ぶ必要はないって説も聞いたことはあるけど。

337 :デフォルトの名無しさん:2009/11/03(火) 15:06:51
PenのDisposeなんて呼んだ事無かった・・・
もちろんusingも使ってない・・・

338 :デフォルトの名無しさん:2009/11/03(火) 16:06:56
技術者なら掟は絶対に守るべきだけどな

339 :デフォルトの名無しさん:2009/11/03(火) 16:22:56
それは技術者じゃなくて、教条主義者とか村人の態度だと思う。

340 :デフォルトの名無しさん:2009/11/03(火) 17:50:51
とりあえず従っとけば嫌がられることもないんだし
わざわざ反抗する意味がわからない

341 :デフォルトの名無しさん:2009/11/03(火) 23:55:44
これから作る Windows7 向けアプリで WPF を使わないで Windows Form を使う理由ってありますか?

342 :デフォルトの名無しさん:2009/11/04(水) 00:16:53
ないんじゃないかな。
4.0 にならないと DataGrid 使えないとかそういう理由はあるけど、
それも来年の初めには解消されるしねぇ。

343 :デフォルトの名無しさん:2009/11/04(水) 00:38:23
WPFにはWinFormsの同名のそれとは比較にならない恐ろしく柔軟なListViewがあるので
データグリッドはいらないはずだったんだよ
まあ面倒でわかりづらかったけど

344 :デフォルトの名無しさん:2009/11/04(水) 02:14:16
>>339
技術者なら掟を守った上で、更に凄いものを作るべきであって、
決して掟を破るということはあってはいけない。

掟を破って作ったもので利用者が被害を被った場合、
裁判したら賠償させられるかもしらんぞ。

345 :デフォルトの名無しさん:2009/11/04(水) 02:30:13
掟って何だよ
ガイドラインの話が法の話に置き換わってるぞ


346 :デフォルトの名無しさん:2009/11/04(水) 02:38:15
DOSのアプリ作って、
一瞬、もじが表示されて、
すぐに消えてしまうんだけど

きえないようにするには、
どうしたらいいの?

347 :デフォルトの名無しさん:2009/11/04(水) 02:43:26
Console.ReadLine();

348 :346:2009/11/04(水) 02:45:49
わかったから
もうええわ

349 :デフォルトの名無しさん:2009/11/04(水) 03:08:37
どういたしまして

350 :デフォルトの名無しさん:2009/11/04(水) 03:17:06
>>345
ガイドラインだけじゃなく、標準(基準)のことだろ。
日本では標準から外れても動いていれば評価されるが、
海外では標準から外れると、例え素晴らしい動きをしても評価されないからな。

351 :デフォルトの名無しさん:2009/11/04(水) 03:50:31
それはない

352 :デフォルトの名無しさん:2009/11/04(水) 06:11:44
従うとは負けることなんだよ

353 :デフォルトの名無しさん:2009/11/04(水) 07:36:26
オレオレ言語でも作ってろ

354 :デフォルトの名無しさん:2009/11/04(水) 08:05:09
いろんなサイトで結果を出力する時に「Console.WriteLine()」を
使ってるんだけど、何度やっても何も起こりません。
わからないのでいつもMessageBox.Show()を使ってるのですが、
どうすれば正しい結果が得られるのでしょうか。

355 :デフォルトの名無しさん:2009/11/04(水) 08:41:59


356 :デフォルトの名無しさん:2009/11/04(水) 09:14:46
>>354
GUI が必須なのかどうかで回答変わるが。

GUI 必要ないならそもそもコンソールアプリで作れ。

そうでないなら、適当なデバッグ用のTextBlockでも用意して、
そいつに debugText.Text += "出力";

357 :デフォルトの名無しさん:2009/11/04(水) 10:10:29
>>354
VisualStudioでデバッグ中なら出力ウインドウに出てるよ

358 :デフォルトの名無しさん:2009/11/04(水) 11:05:12
>>326
方法としては大きく分けて、
winプロジェクトで作った物を使う。
c#のコードの中でwinapiを呼び出して使う。
の2種類だと思うのですが、後者でもbitmapを部分的に呼び出して、drawlineとかで線をひくことはできるのでしょうか?
今の所ブロック状にbitmapを分けて、描写したいブロックを呼び出して絵を描く、戻す。ということを考えているのですが、
関数の説明などを見ていてもいまいち掴めません。

359 :デフォルトの名無しさん:2009/11/04(水) 12:02:12
RijndaelManaged aes = new RijndaelManaged();
デフォルトで何ビットでしょうか?

360 :デフォルトの名無しさん:2009/11/04(水) 12:06:48
KeySize見ろよ

361 :デフォルトの名無しさん:2009/11/04(水) 12:37:22
>>360
MessageBox.Show(aes.KeySize.ToString());
あんがと。

362 :354:2009/11/04(水) 20:56:43
>>356
>>357
出力ウィンドウの存在を知りませんでした。
ありがとうございます!

363 :デフォルトの名無しさん:2009/11/05(木) 00:11:26
PreFilterMessageで拾えるウィンドウメッセージと
拾えないウィンドウメッセージがあるみたいだが、
どこかに一覧か法則が公開されてないのかな

364 :デフォルトの名無しさん:2009/11/05(木) 08:56:53
>>352
尾崎かよ

365 :デフォルトの名無しさん:2009/11/06(金) 00:14:36
クラスのインスタンスの内容が等しいことを調べるメソッドを教えてくれ。
面倒なのでpublicとか余計なの省略するが

class MyClass{
int x,y;
}

Main(){
Myclass m,n=new MycLass();
m.x=20; m.y=30; n.x=20; n.y=30;

if (m==n){
}

mやnは参照なので実行されない。全部のメンバが等しいことを調べるのはどうやりゃいい?

366 :デフォルトの名無しさん:2009/11/06(金) 00:18:45
>クラスのインスタンスの内容が等しいことを調べるメソッドを教えてくれ。

言ってることのお馬鹿具合とこの口調のギャップがなんかユーモラスだな。
体を張った新手のギャグのつもりだろうか

367 :デフォルトの名無しさん:2009/11/06(金) 00:21:57
だってさ、x=10;y=10;

if(x==y){

ってやったら実行されるじゃん。
xのアドレスとyのアドレスが違うから
if(x==y)が実行されなかったら困るだろ?

参照型だからってなんで実行されないんだよ!不便!

368 :デフォルトの名無しさん:2009/11/06(金) 00:22:16
等価性をいじりたいなら Equals、IEquatable<T>、GetHashCode
や operator==, != あたりの実装を自力でやれ。
でも Mutable なクラスに対してのソレは推奨されない。

というか例のようなのは struct にしろよ。真面目にやるんなら
こっちもそれやらないといけないけど


369 :デフォルトの名無しさん:2009/11/06(金) 01:38:58
>>367
そんなおバカなこと言っているのはお前だけだ
もう一度勉強しような?

370 :デフォルトの名無しさん:2009/11/06(金) 04:44:24
誰か>>358に答えてくれ。
今後者の方法でやってるんだけどcreatefilemappingを作ってから行き詰ってます。
そのあとに新しい大きなビットマップを作って、
viewして部分的に取り出して線とかイメージを描きたいと思っているんだけど、全く分かりません。
やはり.netのbitmapをファイルマップする事は無理なのでしょうか?

371 :デフォルトの名無しさん:2009/11/06(金) 05:37:37
createfilemappingなんているのかなぁ・・・
まあ、とりあえず単純に大きなBitmapから処理に必要なブロックを切り出して
Bitmap(略, IntPtr scan0) コンストラクタの scan0 にバイト配列食わせたら?
それかBitmapの一部を切り出して読み込むStreamクラス作って渡すとかさ
それが出来てから表示とか線の描画、テンポラリ、保存を順に解決してきなよ
質問の内容読んでも、どういう処理の流れで作ろうとしてるのかさっぱり読み取れん

372 :デフォルトの名無しさん:2009/11/06(金) 06:15:06
メモリマップドファイルって説明読むだけで今まで使う機会無かったんだけど、自前で読んで-書いて-とかやる場合と比べてメリットデメリットってあるもの?

素人考えだとあっちこっち読み書きしたいがメモリ使用量を抑えたい場合、自前でやる場合コンパクトにコントロールしやすそうだが。メモリマップドファイル使うとOSネイティブの実装として速いけど細かいコントロールはしにくそう?

教えてエロイ人。

373 :デフォルトの名無しさん:2009/11/06(金) 06:49:29
>>371
回答ありがとうございます。
普通にやると大きなビットマップを作った時点でメモリがオーバーしてしまう状態です。
filemapを作ったあとに大きなビットマップが作れない状態です。
>>それかBitmapの一部を切り出して読み込むStreamクラス作って渡すとかさ
これもfilemapを調べる前にやろうとしたのですが、bitmapでやる方法がよく分からなかったです。
大きなビットマップを作る方法も合わせて具体的に教えてもらえませんか?



374 :371:2009/11/06(金) 07:15:30
>>373
すまんが「大きなビットマップを作る」の意味が分からん
元がJpeg画像とかで、それをBitmapに変換してるのか?
それとも丸ごとBitmapクラスに突っ込んでインスタンスを作ろうとしてるのか?
出発点は巨大なBitmapファイルがディスクにあってそれの読み込みからじゃないのか?
処理の流れを説明してくれんと何が分からないのかが分からん

375 :デフォルトの名無しさん:2009/11/06(金) 07:35:58
こちらこそ申し訳ないです。以前の方と同じ人と思い説明を省いていました。
photoshopのような感じで新規作成で大きな画像(1200*1200*15*15くらい)を何枚も作って描写加工保存、再度開くという操作をしたいと思っています。
c#で作られているpaint.netで同じ事をやるとメモリオーバーで実行されませんが、photoshopだとできるので真似したいと思っています。
さらにcomicstudiominiというソフトだと大きな画像を作って扱っていても、メモリがphotoshopに比べてほとんど消費されません。
できるなら.netのbitmapで扱えれば便利なのでそうしたいと思ってます。


376 :371:2009/11/06(金) 07:57:57
>>375
そういうのをBitmapクラス介してやると逆に大変そうだけどどうなんだろ・・・
とりあえず、Bitmapクラスに表示用のデータを持ってそれをフォームに描画するのなら
必要最低限のサイズはフォームを最大化したときの表示サイズじゃないかい?
GCもBitmapクラスの内部もよく知らないから間違ってるかもしれんけど、
Bitmapクラスは内部で byte[] とかでデータ持ってて、それを確保するのに
連続した空きメモリーが必要になるんじゃないかね
そうだとすると、大きすぎるBitmapクラスを作ろうとすると、メモリーの空きが足りても
確保に失敗するケースも出てくるんじゃなかろうか
いずれにしても、画像と同じサイズのBitmapクラスを作ろうとするのは無理があるよ

377 :デフォルトの名無しさん:2009/11/06(金) 08:09:35
>>376
ということはほとんどの機能はwinの方で作った方がいいということ…ですよね?
win内で大きな画像をファイルマップか何かの状態で保持して、それをstretchか何かで表示サイズの画像が配列にして、
.netのimage系のクラスに渡して表示をさせる。って感じでしょうか?


378 :デフォルトの名無しさん:2009/11/06(金) 08:30:29
分割して扱えよ。縦横適当なサイズで区切って。
ファイルへの保存は分割したバイト列を扱えるように。表示とかは分割したバイト列から適当にBitmapつくってやれば。

379 :371:2009/11/06(金) 08:43:56
>>377
winの方?C++とかアンマネージのこと言ってるのかな?
メモリマップ使うならC#でもC++でも大差ないと思うけど、
扱いやすいクラス作って分割管理するしかないよ
まあC++のほうが画像加工するライブラリはいろいろありそうね
Bitmapクラス使いたいなら、そのとき表示編集したい部分だけを
Streamで渡してインスタンス作ってごにょごにょすればいいんじゃない
画像全体にエフェクト掛けたりするなら、byte[] のまま自分でゴリゴリやるしかない


380 :デフォルトの名無しさん:2009/11/06(金) 09:35:40
メモリマップドファイルのことを知らんで回答してる奴も多そうだ

381 :デフォルトの名無しさん:2009/11/06(金) 09:47:30
皆さんありがとうございます。
winはwin32apiのことです。
クラスの分割だと使っていないときにファイルに保存になる際にメモリの開放がGCまかせになるせいで不安なのと、
>>画像全体にエフェクト掛けたりするなら、byte[] のまま自分でゴリゴリやるしかない
と言うことを考えるとG単位で扱えるらしいwin32apiの関数の方がいいかなって思ってます。
ただこれだとc#内で書くより、win32のプロジェクトにまとめて作って、c#で呼び出した方がいいかなって思っています(できるか不安ですけど)

382 :デフォルトの名無しさん:2009/11/06(金) 10:28:55
>>381 のジレンマはC++/CLIで解決するとみた


383 :デフォルトの名無しさん:2009/11/06(金) 21:35:27
WebBrowserコンポーネントを使ってPOSTするには
Navigate2を使えと書いてあるのですが
Navigate2は一体何をusingすれば使えるようになりますか?
存在しませんといわれてしまいます

.NET2.0です

384 :デフォルトの名無しさん:2009/11/06(金) 21:52:29
ActiveXの方のWebBrowser

385 :デフォルトの名無しさん:2009/11/06(金) 22:08:19
WebBrowser.Navigate (String, String, Byte[], String)
WebBrowser.Navigate (Uri, String, Byte[], String)

386 :デフォルトの名無しさん:2009/11/06(金) 22:12:10
Postするだけなら HttpWebRequest使った記憶が俺にはある


387 :デフォルトの名無しさん:2009/11/06(金) 22:13:51
あごめん、Postして遷移か。
>>386 はスルーで

388 :デフォルトの名無しさん:2009/11/06(金) 22:15:37
>>384-386
解決しましたありがとうございました
同等の機能がNavigateでもしようできるのですね

重ねてもうしわけないのですが
デバッグ用にステータスをテキストファイルにログとして残そうと思っております
調べたところWebBrowserのステータスが変更されるたびにStatusTextChanged のイベントが呼ばれるとか
しかし、そのようなイベントは見あたらず色々調べてもそれが存在するからそれを仕えという記述しかありませんでした

using System.Windows.Forms;

の中にあるらしいのですがちゃんと宣言してもやっぱり存在しないと言われてしまいます
このかわりになるイベントもしくは、これを使う方法を教えていただけませんでしょうか

389 :デフォルトの名無しさん:2009/11/06(金) 23:02:09
確認したけど、普通にあるじゃん

390 :デフォルトの名無しさん:2009/11/06(金) 23:10:22
>>389
表示されないんです
また、手動で追加しても存在しないとおこられてしまいます
何がダメなんだろう・・・・

391 :デフォルトの名無しさん:2009/11/06(金) 23:20:53
Visual stdioのC#つかいづらいな。
EclipsってC#もできるの?

392 :デフォルトの名無しさん:2009/11/06(金) 23:21:11
イベント設定画面貼っときます
http://www.dotup.org/uploda/www.dotup.org336396.png
こんなかんじで表示されません・・・・

393 :デフォルトの名無しさん:2009/11/06(金) 23:25:34
デザイナでは表示されないようになってるからコードから追加する
このへん読め
http://msdn.microsoft.com/ja-jp/library/aa288460%28VS.71%29.aspx

394 :デフォルトの名無しさん:2009/11/06(金) 23:49:07
>>391
EclipseはもっぱらJavaでしか使わないのであれだが、
PHPやCはあってもC#は無かったかも。最近確認してないけど

なんなら SharpDevelopでも試してみたら?特に薦めるポイントは無いが

ちなみにVSのC#が使いにくいとか言ったら、VS2008C++なんて使えないぜ
かなり優秀だと思うVSC#

395 :デフォルトの名無しさん:2009/11/06(金) 23:51:50
VSの代わりにEclipsって時点で釣りだろw

396 :デフォルトの名無しさん:2009/11/06(金) 23:58:27
あたしが釣られたとわ‥w

397 :デフォルトの名無しさん:2009/11/07(土) 00:03:30
>>391
不満なら ReSharper でも試したら?

398 :デフォルトの名無しさん:2009/11/07(土) 00:14:54
>>393
それがわかるなら質問してないだろ
お前バカっていわれない?

>>392
そのイベントは初期搭載(デザイナでは表示されない)から自分で宣言する必要がある
宣言するのは
using System.Form;
の下に
public delegate void StatusTextChanged(object sender, EventArgs e);
って一文を追加するだけ
それだけで使えるようになるよ

399 :デフォルトの名無しさん:2009/11/07(土) 00:48:05
>>394
WindowsFormアプリケーション作るときなぜかしらんけど
Paticalだっけ?クラスを分割するやつ使われててソースコードが四つくらいにわけられない?
あれがなんかきもいんだよなぁ。

using Windows.Forms;

staticMain(){
Application.Run(new Form());

みたいなことをするだけのちょっとしたプログラムつくるも
デリゲートだのコンストラクタの設定だのがProgram.csとかForm.csとか一個のcsファイルでできるじゃんっていうのも
無駄にファイル多くなってキモイんだよね。

メモ帳でもいんだけど、行数が表示されないのが不便。

400 :デフォルトの名無しさん:2009/11/07(土) 00:54:05
>>399
デザイナの操作に連動して勝手に編集される部分のコードを
わざわざ見えるようにしてもアホが編集しちゃうだけだろ
そんで、勝手にコード壊された><って文句言われるくらいなら
触る必要が無いor触ってはいけないコードは隔離すべき

401 :デフォルトの名無しさん:2009/11/07(土) 01:02:48
structってなんで最初に変数設定できないの?

struct Person{
int age=0;
}

みたいなのができない。クラスだったらできるのに・・・
なんで?

402 :デフォルトの名無しさん:2009/11/07(土) 01:05:15
Formに限らず、クラスがデカい時等イニシャライズ処理やその他でパーシャルする事はたまにある

もちろん意味付け整理してクラスそのものを分割する事を検討するけどね

403 :デフォルトの名無しさん:2009/11/07(土) 01:06:28
>>401 宣言構文だからとか

404 :デフォルトの名無しさん:2009/11/07(土) 01:12:14
>>399
メモ帳でも書けるぐらいC#に習熟してるのに、なぜそんな事を言い出すのか理解に苦しむ。
嫌ならデザイナ使わず手書きすればいいだけの話だろ。簡単でしょ?

405 :デフォルトの名無しさん:2009/11/07(土) 01:14:27
>>401
http://msdn.microsoft.com/ja-jp/library/saxz13w4%28VS.80%29.aspx
>構造体のコピーは、コンパイラによって自動的に作成され、破棄されるので、既定のコンストラクタやデストラクタは不要です。
↓このことから
>・構造体では、既定のコンストラクタ (パラメータなしのコンストラクタ) やデストラクタを宣言できません。

つまり既定のコンストラクタは勝手に定義されるから、それと矛盾する記述を禁止しているんでしょ

406 :デフォルトの名無しさん:2009/11/07(土) 01:36:26
>>404
別にメモ超で書くのは熟練じゃないし。
俺は全部手書きでやりたいんだよ。
Point p=new Point(100,100);
Fomr1.Location=p;
Form1BacColor=Color.Black;
Form1>OnClick+ ner EvnetHandler(クリック);
とかな。足しかに自動入力してくれると楽だけど自分で全部管理しないと気持ち悪くて仕方ない。
本来10KBくらいの容量ですむものがslnファイルとかbinとrereaseに同じexe作られて50KBくらいの大容量になっちゃって気持ち悪いし。

407 :デフォルトの名無しさん:2009/11/07(土) 01:44:39
だから、黙ってそうすりゃいいのに・・・
何が言いたいんだろ

408 :デフォルトの名無しさん:2009/11/07(土) 01:52:41
メモ帳もVisualStudioも使いづらいから
もっと良いエディタないか聞きたいだけ

409 :デフォルトの名無しさん:2009/11/07(土) 02:20:31
notepad++

410 :デフォルトの名無しさん:2009/11/07(土) 02:23:30
>>408
使いやすい使いにくいは主観だから、具体的なこと言わずに喚いてもしょうがないよ
まあ、ファイルがいっぱいなのがキモイってのは分かったから、それだけ回答するが
Visual Studioでフォーム作るときは新規作成でクラスファイル追加して
Formの継承クラスにして後は全部手書きでコントロール配置できるよ
つまり全部手書きしたいのにデザイナ前提のWindows フォームを使おうとするのが悪い

411 :デフォルトの名無しさん:2009/11/07(土) 02:27:31
空っぽのプロジェクトに空のファイル追加してけばいいって話だ


412 :デフォルトの名無しさん:2009/11/07(土) 02:30:34
手書きでも追加できるって言うより、フォームデザイナが代わりに書いてくれてるだけって事
コントロール類もフォームも結局ただのクラスである事を思い出せば答えは簡単な話であった


413 :デフォルトの名無しさん:2009/11/07(土) 02:44:34
>>406
すまん「50KBの大容量」について書いてるの見落としてたな
少ないファイル数と容量を実現するには、VS立ち上げてプロジェクト一切作らずに
新規作成で空のファイル作ってコード書き終わったら名前をつけて保存
クラスはいくつでも1つのファイルに押し込めるから1個で大丈夫だよ
ビルドはコマンドラインで自分でやることになるけど
スタートメニューにある「Visual Studio 2008 コマンド プロンプト」を起動
>csc ファイル名.cs
でおk・・・と思ったがまだ容量に無駄があるな・・・
できればソースを保存するHDDをNTFSで再フォーマットして
その際にアロケーションユニットサイズを512にしよう
そうしないと1文字しか書いてないファイルでもほぼ4kbもの大容量が無駄になるよ

414 :デフォルトの名無しさん:2009/11/07(土) 03:24:15
WebBrowserコンポーネントを使用する場合
特定のURLをクリックしたときだけ違う動作をさせたいのですが
これから遷移するURLを取得する方法などはありますか?


移動してからのURL取得はできるのですが
移動前にはクリックしたURLを取得したりはできないのでしょうか
よろしくお願いします

415 :デフォルトの名無しさん:2009/11/07(土) 03:41:48
>>414
WebBrowser使ったこと無いからオブジェクトブラウザで眺めただけだけど
OnNavigatingでいけそうな気がするよ
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.webbrowsernavigatingeventargs.aspx
質問の意図がページ遷移ではなく、Aタグのクリック時ってことだとしたらこれじゃだめだけどね

416 :デフォルトの名無しさん:2009/11/07(土) 03:51:42
>>416
早速の回答ありがとうございました解決しました

続けて申し訳ないのですが
リファラを設定していて、トップページ以外からの遷移を拒否しているサイトに接続する場合
ボタンなどで、Navigateで遷移するとリファラがクリアされアクセスが拒否されてしまいます

リファラを自由に設定することはできないみたいなので
画面上のリンクを、クリックした扱い(リファラを持って)そのページを表示することはできないのでしょうか?
ヨロシクお願いします

417 :デフォルトの名無しさん:2009/11/07(土) 04:02:21
>>416
Navigate(string urlString, string targetFrameName, byte[] postData, string additionalHeaders)
additionalHeaders に "Referer: http://www.google.co.jp/\n" とかやったらいけそうじゃない?
相変わらずオブジェクトブラウザで眺めただけだから確認してないけどさ

418 :デフォルトの名無しさん:2009/11/07(土) 04:04:14
>>417
その方法だと、POSTになってしまいませんか?
GETでやる方法はないでしょうか

419 :デフォルトの名無しさん:2009/11/07(土) 04:08:25
自己解決しました
postdataをNULLにすればGETになりました
ありがとうございました

420 :デフォルトの名無しさん:2009/11/07(土) 05:42:09
webBrowser.Dcument.cookieってなんのために存在すんの?
Webriqとかに汎用できるのかと思ったらできないみたいだしさ

421 :デフォルトの名無しさん:2009/11/07(土) 09:41:43
>>420 HTML内に記述するJavaScriptでさわれるdocument.cookiesと同じ
むしろそれ。なので用途も同じ

そのDocumentが持ってるメンバは大体そのつもりで見てくと正体わかるよ。
ただしJavaScript側をまったく知らない場合、ちょっと判別や理解がしづらいかもしれない

422 :デフォルトの名無しさん:2009/11/07(土) 09:51:50
>>414 ついでにネタを一つ書いておくと、Navigateのタイミングだけでなく、
webBrowser.DocumentからJavaScriptで書くときの要領でDOMを辿り、
HtmlElementを特定してそれのClickイベントをハンドルするって方法もある。
ハンドラに来るsenderからUrlに限らず、「そのタグ」に書かれている全ての内容を引ける

詳しくはオブジェクトブラウザを見るか、インテリセンスで出てくる候補をつぶさに観察してください


423 :デフォルトの名無しさん:2009/11/07(土) 09:56:19
>>422
それめんどくさすぎないかい?
どのタイミングでハンドルする?DocumentComplete?
ページロード中にすばやくリンク押された場合を考えると
結局 WM_LBUTTONDOWN も処理しないとダメで厳しい気がするが

424 :デフォルトの名無しさん:2009/11/07(土) 10:06:04
>>423 あ、だからいつでもこの方法を推奨とまでは言わない。やりたい内容によるぜ

俺はDOMに慣れちゃってるので面倒とは思わないが、JavaScriptと同じノリでなんでも操作できるのが面白いかなと
なのでネタとして追記してみた。

使い道としては‥ 既存サイトを開いて一部を変更したり、ページ上のあるアクションのタイミングで
何かしたい場合に使う。なのでやりたい内容次第。

モデルが見えてるなら、かなり楽ちんなんだぜ

425 :デフォルトの名無しさん:2009/11/07(土) 10:14:23
書き漏れた。
DOMを辿るタイミングとしてはCompleteは見てるな。

以前に作ったのは、ファイルブラウザのような物を作って、適当にファイルを選択してショートカットキーを押すと
設定してある既存のうpロダページが立ち上がり、ボタン押下で
マルチパートPOSTするようなアプリケーション。

開いた任意ろだページのDOM辿って処理する流れにした。
流れ分かればわき道にそれずに書けるので逆に手早かったりもする

426 :デフォルトの名無しさん:2009/11/07(土) 10:20:05
>>424
なるほど、デリゲートをセットするタイミングの難しさがあるから
漏らさず拾うのは無理がある手法だけど、ネタとしてならありかね
TABLEのカラムクリックを拾ってソートしたりとか、
そういう目的のために使う分にはいいかもね

427 :デフォルトの名無しさん:2009/11/07(土) 10:30:18
>>426 そうそう!まさにそんな感じ。

ここんとここのスレでは WebBrowserコントロールの話が出てるので、選択肢の一つとしてあげてみた。
この方法の場合、JavaScript側で使うようなDOMの知識は必須


428 :デフォルトの名無しさん:2009/11/08(日) 00:55:06
質問させてください。
自作コントロールにあるプロパティをVC#のプロパティウィンドウに表示したいのですが
どうすればいいのでしょうか?
↓では出てきませんでした。
public static int Signedmitaina{
get{xxx}
}


429 :デフォルトの名無しさん:2009/11/08(日) 00:59:41
ごめん、よくわからない

430 :デフォルトの名無しさん:2009/11/08(日) 01:07:05
VisualC#2008で
継承ピッカーってどこにありますか?

431 :デフォルトの名無しさん:2009/11/08(日) 01:07:37
>>428
まずstatic消せ

432 :デフォルトの名無しさん:2009/11/08(日) 01:10:27
むむむ。言葉足らずですみません。
C#でユーザコントロールを作りました。
新たにウィンドウズフォームプロジェクトで、
フォームに自作コントロールを貼りつけました。
コントロールを選択するとプロパティウィンドウに継承元のプロパティが並ぶのですが、
自作コントロール専用プロパティをプロパティウィンドウに表示するコーディング方法が知りたいのです。

>>431
あら不思議、消したら現れました。
ありがとうございます。
まず、ということは、続きがあったりしますか

433 :デフォルトの名無しさん:2009/11/08(日) 01:11:41
意味不明でしたね
継承されたフォームテンプレートがそんざいしないのですが
どうすれば表示されるようになりますか?

434 :433:2009/11/08(日) 01:31:03
やっぱり意味不明だったのでちょっとスクショとりました
新しい項目で継承〜の項目が

こんな感じで表示されません
http://www.dotup.org/uploda/www.dotup.org340210.png


http://msdn.microsoft.com/ja-jp/library/cafzf1dy%28VS.80%29.aspx
[新しい項目の追加] ダイアログ ボックスを使用して、継承フォームまたは継承コントロールを Windows ベースのアプリケーションに追加する


どうすれば表示できるでしょうか

435 :デフォルトの名無しさん:2009/11/08(日) 01:32:39
早い話 コンストラクタでプロパティ決めたほうが早いと思わんかね

436 :デフォルトの名無しさん:2009/11/08(日) 02:14:05
>>435

437 :デフォルトの名無しさん:2009/11/08(日) 09:05:42
>>428
[プロパティ 属性]でくぐれ

438 :デフォルトの名無しさん:2009/11/08(日) 21:19:14
質問があります
Webページを閲覧する場合通常は、画像を読み込みつつ表示されていくと思います

現在
自前でWebClienteを用意し、Webページのソースを取得
画像をダウンロードし
ダウンロードしたソース内のURL置換を行い
ローカルに保存させた画像にパスを変更
WebBrwserコンポーネントにソースを投げて表示
という仕組みでうごいているのですが
ダウンロードを同期的に行っているため全てのダウンロードが終了するまでフリーズ状態となります
重い画像が使用されているページなどはフリーズ時間が長くなってしまうので
どうにか通常の場合のように読み込みつつ表示はできないものでしょうか

最初からURLだけNavigateにすればそれですむ話なのですが
よろしくお願いします

439 :デフォルトの名無しさん:2009/11/08(日) 22:07:10
>>438
WebClientの〜Asyncってメソッド使ってみたら?


440 :デフォルトの名無しさん:2009/11/09(月) 18:03:28
タブが選択されてるとてんてん表示されますよね?
あれを消す方法ってありませんか?

441 :デフォルトの名無しさん:2009/11/09(月) 18:35:57
わけわからん、タブコントロールのフォーカスレクトのことか?

442 :デフォルトの名無しさん:2009/11/09(月) 19:11:30
>>441
ありがとうございますそういう名前だったのですね
解決しました

続いて申し訳ないのですが

DeselectTabで右に移動はできるのですが
左に移動する方法ってありますか?

443 :デフォルトの名無しさん:2009/11/10(火) 09:54:04
DeselectTab見てみたけどインデックスや名前で直接指定するんじゃないの?
右も左も無いと思うけど。インデックス番号は0から始まる。

444 :デフォルトの名無しさん:2009/11/10(火) 09:55:48
誘導
ttp://pc12.2ch.net/test/read.cgi/tech/1257067411/

445 :デフォルトの名無しさん:2009/11/10(火) 09:57:07
って非選択にしたあとの選択を1つ前にしたいのか
現在の場所調べてひとつ前にSelectしては?

446 :デフォルトの名無しさん:2009/11/10(火) 16:13:39
すみません。質問です。
TextBoxを作成すると、DataGridのマウスホイールでのスクロールが機能しなくなる問題がありました。
フォーカスを変えても変化が無いので、
MouseWheelというイベントを試してみようと思いましたが、再現する方法が難しく強引な様な気がして断念しました。
TextBoxのスクロール機能を停止させてDataGridのスクロールを有効にする方法を教えてください。
御願いします。

447 :446:2009/11/10(火) 18:00:55
灰色になったけど、Enabledてのがあった。。。すみません。ありがとうございました。

448 :デフォルトの名無しさん:2009/11/10(火) 18:15:32
状況がよくわからんのだよね。
確認できてないけどフォーカスだろ?

449 :446:2009/11/10(火) 21:16:51
>>448
申し訳ないです。DataGridはフォーカスとは言わないかもしれないですが…。
Formの上にDataGrid(展開するとDataSourceが枠の縦幅を越えるのでスクロールが表示される)、
下にTextBox(マルチライン)を配置して
DataGrid或いはTextBox上でスクロール(ホイール)すると、
Form内のどの場所であってもTextBoxのみがスクロールされます。
DataGrid上をクリックしてもアクティブになるような事がないので、
どんな操作をしてもTextBoxしかスクロールせず困っていました。
EnabledでTextBoxを無効状態にすれば、スクロールも強制的に機能しなくなり、
DataGridのスクロールも機能するようになったという次第です。
釈然としませんが、MouseLeaveでEnabledを切り替えようかと検討していたところです。

450 :デフォルトの名無しさん:2009/11/10(火) 22:15:39
DataGridView試してみたら、そんなことは起きない。
2.0 以上ならDataGridView使いなよ。
うちの2008ExpressじゃDataGridなんてツールボックスにも出てこない。

451 :446:2009/11/11(水) 22:31:50
ttp://siranami73.yoka-yoka.jp/e105234.html
規制解除。DataGridViewでも駄目ですた。これかもしれない。。。

452 :デフォルトの名無しさん:2009/11/11(水) 22:47:05
むほ、うちはXPあぼんして今は7だしなぁ。
それで発生していないか、それともアプリからスクロールバー制御とかしてない
からなのか。

453 :デフォルトの名無しさん:2009/11/14(土) 16:36:14
32bitカラーのBitmapを縦横4倍拡大表示(面積比16倍)するのに
Graphics.DrawImage()を使っているのですが、もっと速い表示方法ないですか?
ドット補完なしカクカクのまま拡大で十分です
60fps出したいのに、40fpsくらいしか出ない
拡大せずに等倍だと60fps出ます

454 :デフォルトの名無しさん:2009/11/14(土) 18:42:05
>>453 事前に拡大しておくとか

455 :デフォルトの名無しさん:2009/11/14(土) 19:08:43
ファイルやディレクトリをエクスプローラへドラッグ&ドロップするには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/384expdragdrop/expdragdrop.html

この方法でエクスプローラへドラッグ&ドロップができるようになりましたが、
この中の図の説明にある通り、「なおエクスプローラでは、[Ctrl]キー+[Shift]キー
を押しながら、もしくは[Alt]キーを押しながらドラッグ&ドロップすると「リンク」
(=ショートカット)を作成することができるが、本稿の方法ではエラーが出るので
「DragDropEffects.Link」には対応しなかった」ことを確認。

DragDropEffects.Linkを設定してDoDragDrop()しても、エクスプローラにDropしたときに
エラーが出て「%1が見つかりませんでした」とメッセージされます。

DataFormats.FileDropフォーマットでfiles配列をDataObjectに載せる以外にほかのデータを
設定する必要があるのでしょうか?ご存知の方おられましたらよろしく。

456 :デフォルトの名無しさん:2009/11/14(土) 19:09:51
g.InterpolationMode = InterpolationMode.NearestNeighbor

457 :デフォルトの名無しさん:2009/11/14(土) 20:57:33
>>453
WPFかDirect3D

458 :デフォルトの名無しさん:2009/11/15(日) 22:55:41
VC++6からC#に宗旨替えしようと初めてVS2008触ってみたんですが
C#ってソリューションエクスプローラにメソッドやメンバ変数って表示されへんの?
さっき作ったばかりの関数名なんだっけ?と揮発性の高いオツムなんで
見えないと不安でしょうがない。
トシかなぁ・・・。

459 :デフォルトの名無しさん:2009/11/15(日) 22:58:10
ソリューションエクスプローラには表示されない。

460 :デフォルトの名無しさん:2009/11/15(日) 22:59:06
クラスビュー使え。

461 :デフォルトの名無しさん:2009/11/15(日) 23:03:59
C++では常に使うけどC#でクラスビューってそういえばほとんど使ってないわ
ソースの見通しがいいから必要性を感じない

462 :デフォルトの名無しさん:2009/11/15(日) 23:48:59
変数に'.'打つと補完出て、メソッド選んだら今度はオーバーロード選択できてと、
至れり尽くせりだしなぁ。VC#

463 :デフォルトの名無しさん:2009/11/16(月) 00:08:39
いたれりつくせりすぎて他の環境で生きていけなくなりそうで怖い
一種の囲い込みだよなw

464 :デフォルトの名無しさん:2009/11/16(月) 00:14:05
たまにC++やると面倒すぎて鬱になる。
俺の精神安定のためにもVS2010でもっと賢くなってくれ…。

465 :デフォルトの名無しさん:2009/11/16(月) 00:34:34
便利な開発環境が「あるのに使えない」状況に置かれたら辛いかもしれんけど、
そんなもんがないプラットフォームなんて組み込みなんかじゃざらにあるわけで、
それならそれで案外割り切ってコーディングできるもんだし、思ったほどストレスもないよ。

要は使えるはずのものが使えない不条理が辛いわけで。

切れないハサミならハサミで、それを工夫して使いこなす楽しみもないではないしね。
まあそれも程度問題だけどさ。

466 :デフォルトの名無しさん:2009/11/16(月) 21:12:48
eclipseでjava使ってるとレスポンスが悪くてイライラする
中途半端にVC#に似てるとダメだな

467 :デフォルトの名無しさん:2009/11/16(月) 21:23:38
えくりぷすじゃVSの快適さには遠く及ばんわな

468 :デフォルトの名無しさん:2009/11/16(月) 21:28:46
それが、世の中には Eclipse >>>> VS と信じて疑わないやつがいるんだよ・・・

469 :デフォルトの名無しさん:2009/11/16(月) 21:34:50
>>455
DataFormats.FileDrop の代わりに Shell IDList Array を DataObject に使う必要がある。
渡すデータは大層めんどくさい構造だが、
ttp://www.dotnetmonster.com/Uwe/Forum.aspx/dotnet-interop/3482/Drag-and-Drop
ここに作り方がコードで示されてた。

470 :デフォルトの名無しさん:2009/11/16(月) 21:40:00
eclipseのプラグインの種類が多いところは認めたい。


471 :デフォルトの名無しさん:2009/11/16(月) 21:42:52
>>470
それは認めるが、いくつかは入れないと開発すら始められないのはいただけない
プラグインの多さが標準のエクリプスの機能不足を証明しているのは皮肉なものだ

472 :デフォルトの名無しさん:2009/11/16(月) 21:42:55
しかし安全にアンインストールできるプラグインって都市伝説級。
pluginsとか消して回っても起動時エラー続出。

473 :デフォルトの名無しさん:2009/11/16(月) 21:50:35
VSしか使ったことないんだが、エクリプスってそんなに微妙なの?


474 :デフォルトの名無しさん:2009/11/16(月) 21:59:12
プラグインを一度いれたら外せないのは本当だけど、俺はeclipse派だわ。
楽だから。先にeclipseから入るとvsは別の意味でとろく感じる。


475 :デフォルトの名無しさん:2009/11/16(月) 22:03:01
>>474
>楽だから。別の意味でとろく
具体性がなさ過ぎてチラシの裏レベル

476 :デフォルトの名無しさん:2009/11/16(月) 22:03:13
コード補完はVS2003にも劣るレベル

477 :デフォルトの名無しさん:2009/11/16(月) 22:06:40
まぁいいんじゃね? ここは C# スレであって、Eclipse を語ろうスレじゃないし。

478 :デフォルトの名無しさん:2009/11/16(月) 22:13:51
>>475
そんなに怒るなよ。

479 :デフォルトの名無しさん:2009/11/16(月) 22:15:44
>>478
うぜえな、いちいち煽るなよ

480 :デフォルトの名無しさん:2009/11/16(月) 22:16:02
さっきから気になってたんだがeclipseにC#のプラグインなんてあるの?
ないならスレチをベラベラとなにをやってるの?

481 :デフォルトの名無しさん:2009/11/16(月) 22:20:00
>>480
しらねえ奴はすっこんでろw

482 :デフォルトの名無しさん:2009/11/16(月) 22:22:45
あるけどどう考えてもjavaの話

483 :デフォルトの名無しさん:2009/11/16(月) 22:24:26
C#使いたければVisual Studio使えってことですよ
馬鹿な人はそれがわからんのです

484 :デフォルトの名無しさん:2009/11/16(月) 22:30:06
SharpDevelopのことも、たまには思い出してあげてください・・・。

485 :デフォルトの名無しさん:2009/11/16(月) 22:32:54
VSにExpressEditionが出た時点で#devは……

486 :デフォルトの名無しさん:2009/11/17(火) 00:03:18
俺はphpでさえVSを使ってる

487 :デフォルトの名無しさん:2009/11/17(火) 00:35:53
#dev はどっちかってーと fork されたやつのほうが
うまくいってるよね

488 :デフォルトの名無しさん:2009/11/17(火) 01:20:04
ごめんなさいVisual Studio使ってないです。サクラエディタ + nantです。


489 :デフォルトの名無しさん:2009/11/17(火) 01:27:06
つまんね

490 :デフォルトの名無しさん:2009/11/17(火) 01:29:35
昔Javaやってた頃はEclipse使ってたけど、C#ならVS以外考えられないな。

491 :デフォルトの名無しさん:2009/11/17(火) 07:29:19
ちゃんと全部かかないと嫌だからVS使ってないな。
Windows アプリケーション作ろうとすると
Main関数とか勝手に書き込まれちゃうし。

static void Main(){
}

これとか、ボタンやフォームの位置やサイズはすべて自分でコードにちゃんと書かないとプログラミングしたっていう気がしない。

492 :デフォルトの名無しさん:2009/11/17(火) 07:37:04
趣味グラマならかまわんが、同僚とかだったら( ゚Д゚)<氏ね!って感じだな。

493 :デフォルトの名無しさん:2009/11/17(火) 07:40:06
>>491
またおまえかよ
先日やり方教わったばかりだろ
VS使って1から好きなだけ書けよ

494 :デフォルトの名無しさん:2009/11/17(火) 08:09:34
C#の追加されたdynamic機能めっちゃ使いやすいな。
dynamicを使えばジェネリックやvarによる型推論を使う必要が少なくなる。
早くC#4.0がベータ版じゃなくて正式実装されないかなー

495 :デフォルトの名無しさん:2009/11/17(火) 08:15:28
おまえ・・・
おまえも別の意味で同僚にいたら( ゚Д゚)<氏ね!って感じだな。

496 :デフォルトの名無しさん:2009/11/17(火) 08:16:47
DllImportも定数定義もなしにWIN32APIを素で叩けるようにして欲しい

497 :デフォルトの名無しさん:2009/11/17(火) 08:21:21
>>496
それはいやだ
宣言固定で引数がIntPtrだらけになるより
自分でオーバーロード書いてマーシャリングしてくれるほうがいい

498 :デフォルトの名無しさん:2009/11/17(火) 09:09:31
決定版のWin32API宣言集をMSが標準で用意してくれたらなーとはおもったことある

499 :デフォルトの名無しさん:2009/11/17(火) 09:16:21
Windows API Code Pack for Microsoft .NET Framework

500 :デフォルトの名無しさん:2009/11/17(火) 09:28:03
>>499
あったwwwwwwwww
マジありがとうwwwwwwwww

501 :デフォルトの名無しさん:2009/11/17(火) 13:41:59
byteの2次元配列をディープコピーしたいのですが、
forの二重ループするしかないですか?

502 :デフォルトの名無しさん:2009/11/17(火) 13:58:38
Buffer.BlockCopy

503 :デフォルトの名無しさん:2009/11/17(火) 14:31:02
サンクス!すごく速くなりました!

504 :デフォルトの名無しさん:2009/11/17(火) 17:28:18
同じアプリで複数の人がネットワーク上にある1つのファイルを編集する場合のファイルアクセスについて
誰かが開いていると他の人は読み取り専用で読み込むようにしたいです。
fileStream = new FileStream( loadPath, FileMode.Open, FileAccess.ReadWrite, FileShare.Read );
この記述でIOExceptionの例外を受け取ったら誰かが編集中と判断して
FileAccess.ReadWriteをFileAccess.Readに切り替えて読み込もうとしましたが出来ませんでした。
FileShare.Readを指定すれば読み取り専用で開くことは出来ると思ったんですが。
コピーを作成してそっちを読むという方法もありますが、できれば1つのファイルで完結させたんですが
何か方法はありますか?

505 :デフォルトの名無しさん:2009/11/17(火) 19:07:34
そりゃ、ShareReadだけのままじゃ無理だろうな

506 :455:2009/11/17(火) 22:01:53
>>469
おお。お答えありがとうございました!!早速見てみます!!またよろしくです!!


507 :デフォルトの名無しさん:2009/11/17(火) 22:04:11
StreamReaderって非同期のメソッド無いの?

508 :デフォルトの名無しさん:2009/11/17(火) 22:07:35
メソッド一覧ぐらい見ろ

509 :デフォルトの名無しさん:2009/11/17(火) 22:07:56
StreamReaderのメソッドは非同期操作の単位として小さすぎると思う
テキスト一行や数バイト読むためにいちいちスレッド起こすのか

510 :デフォルトの名無しさん:2009/11/17(火) 22:10:54
普通にハンドラでいいとおもう

511 :504:2009/11/18(水) 10:28:25
>>505のとおり、IOException例外を受け取ったあとの読み込みを
fileStream = new FileStream( loadPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite );
このようにしたところ上手く読み込めました。
しかし、最初にFileAccess.ReadWriteで読み込んでいた方のプロセスで書き込みを行おうとすると例外が発生し
別のプロセスで使用されているためプロセスはファイル○○○にアクセスできませんというメッセージが返ってきます。
最初に開いた人は読み書きできて、あとから開いた人は読み込みだけできるようにしたいんですが。
このままだと複数の人が開くと誰もファイルを更新できなくなってしまいます。
解決策があれば教えていただきたいです。

512 :デフォルトの名無しさん:2009/11/18(水) 11:02:36
実際にやってないから動くかどうかはわからんけど、FileSystemRights を調べてみては?

513 :デフォルトの名無しさん:2009/11/18(水) 13:17:42
>>511
ん?ほんとか?
ネットワークだとうまくいかないのかな?


514 :504:2009/11/18(水) 14:48:57
>>512
調べてみましたがFileSystemRightsだとファイルの一般的な排他制御での
一時的なロックという扱いには出来ないようですね。

>>513
ローカルでも無理なようです。
アプリを複製して同時起動し、ローカル内の1つのファイルにアクセスした場合も同じことが起きました。
IOException例外のあとの読み込みで中身をメモリにコピーしてからすぐに閉じることで一応解決はしましたが
開いたままにしておくと最初に読み書き両用で開いた方もアクセス出来なくなるようです。
本当はfileStreamに常にアクセスできるようにしておきたいんですが閉じるしか術はないみたいですね・・・

515 :デフォルトの名無しさん:2009/11/18(水) 15:48:39
ローカルでダメだったらどこかでプログラムを間違えてる
そんな馬鹿な、と思ってこれだけ書いて動かしてみたが問題なく動いた

private FileStream fileStream = null;
private void button1_Click(object sender, EventArgs e){
try {
fileStream = new FileStream("test.txt", FileMode.Open, FileAccess.ReadWrite, FileShare.Read);
} catch (IOException) {
fileStream = new FileStream("test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
}
}
private void button2_Click(object sender, EventArgs e){
fileStream.Write(Encoding.Default.GetBytes("aaaaaa"), 0, 6);
}
private void button3_Click(object sender, EventArgs e){
fileStream.Close();
}


516 :504:2009/11/18(水) 17:01:20
>>515
原因を特定できました。
更新処理で
fileStream.Close();
if ( File.Exists( savePath ) ) File.Delete( savePath );
m_fileStream = new FileStream( savePath, FileMode.CreateNew );
こんな風に書いていたんですがFile.Deleteは他のでFileStreamに読まれている時点で使えませんね。
button2_Clickの記述を見てそういえば・・・と。
すでにファイルがある場合にIOExceptionがスローされるのを避けるために事前に削除しようとしてましたが
FileMode.Createを指定すれば良かった事に気がつきました。
完全に自分の凡ミスでした。お騒がせしてすみませんでした。

517 :デフォルトの名無しさん:2009/11/18(水) 19:21:53
例外が出た時点でスタックトレースくらい確認しろよもうっ


518 :デフォルトの名無しさん:2009/11/18(水) 19:24:52
FileShare.Deleteというのがあってだな。
ってまあ今回はそもそも削除しようとするのが間違いだが。


519 :デフォルトの名無しさん:2009/11/19(木) 18:19:39
ジェネリックについての質問です。

制約をつけてで数値型(byte, sbyte, char, short, ushort, int, uint,
 long, ulong float, double)だけを指定してもらいたいと思っています。

System.ValueTypeは制約に出来ないとコンパイラにしかられてしまうのですが、
どのような指定の方法がございますでしょうか。

よろしくお願いいたします。

520 :デフォルトの名無しさん:2009/11/19(木) 18:25:13
IDictionaryクラスなど、KeyとValueがベアになっているクラスはたくさんあるけど、Keyの属性が(多次元配列のように)2つ以上あって、それに対してValueが1つつくようなクラスはないの?

521 :デフォルトの名無しさん:2009/11/19(木) 18:30:33
別のキーに対して同じValueを設定するのじゃだめなのかな?

522 :デフォルトの名無しさん:2009/11/19(木) 18:44:46
うん、キーを2次元配列みたくしてバリューを決定するみたいがいいかな。

523 :デフォルトの名無しさん:2009/11/19(木) 18:48:11
普通にKeyに多元配列なりなんなり指定すりゃいいんじゃない?
Key同士を比較したときに同じだって判断できりゃいいだけだし。

524 :デフォルトの名無しさん:2009/11/19(木) 18:51:50
なるほど。ありがとうございます。

525 :デフォルトの名無しさん:2009/11/19(木) 20:20:08
数値型から列挙型に変換する方法はありますか?


526 :デフォルトの名無しさん:2009/11/19(木) 20:36:54
>>519
無理

>>525
キャスト

527 :519:2009/11/19(木) 20:44:44
>>526
やはり無理でしたか。
where T : int... とかもだめだったので諦めがつきました。

528 :デフォルトの名無しさん:2009/11/19(木) 20:46:43
>>526
サンクス
ついでにもう一つ
C#は列挙型の継承は出来ますか?
検索しても出来ないとあるから無理かな…

529 :デフォルトの名無しさん:2009/11/19(木) 20:54:33
Enumの型に数値から変換する匿名メソッドとか無かったっけ。
なんか前に使ったぞ。

530 :デフォルトの名無しさん:2009/11/19(木) 21:11:27
うーん…
調べても列挙型の継承は出来ないっぽいなぁ
それ風のクラスを作るとしたらこんな感じ?

  public abstract class MyEnum{}

  public abstract class MyEnums {
    public static MyEnum foo;
  }

  public abstract class MyEnumChilds : MyEnums {
    public static MyEnum bar;
  }

先生方、いかがでしょう?

531 :デフォルトの名無しさん:2009/11/19(木) 21:11:39
IConvertible じゃ文字列とかも入っちゃって嫌なのかな?

532 :デフォルトの名無しさん:2009/11/19(木) 21:16:37
>>530
class MyEnum {
 public static readonly MyEnum Foo = new MyEnum(0);
 public static readonly MyEnum Bar = new MyEnum(1);
 private int value;
 private MyEnum(int value) { this.value = value; }
 //あとはEqualsやGetHashCodeや==などを実装
}

533 :513:2009/11/19(木) 21:17:49
すまん
クラスならvalueはいらんね
常に参照比較でおk

534 :デフォルトの名無しさん:2009/11/19(木) 21:22:23
>>532
なるほどなるほど…
とても勉強になりました
ありがとう!

535 :デフォルトの名無しさん:2009/11/19(木) 21:23:58
参照型=型安全なポインタ

536 :デフォルトの名無しさん:2009/11/19(木) 21:27:20
違います
参照というのはGCによって管理されたオブジェクトにアクセスするためのハンドルです

537 :デフォルトの名無しさん:2009/11/19(木) 21:32:22
ポインタとハンドルって本質的には違わないよ
ひょっとしてポインタ = メモリアドレス、とでも思ってるのかなw

538 :デフォルトの名無しさん:2009/11/19(木) 21:34:58
参照型は、& と言うアドレス演算子を使ってだな…ってここはC#のスレか

539 :デフォルトの名無しさん:2009/11/19(木) 21:37:34
CLIの用語上は意味が違う
GCによって移動されても追跡できるのがハンドル,そうでないのがポインタ

540 :デフォルトの名無しさん:2009/11/19(木) 21:39:01
同じかどうかってのは観点による。
みかたをかえれば
たとえばstr型もint型もdougle型ポインタ型もまったく同じだよ。
どれもメモリ上の数値でしかない。
同じように操作できちゃうと困るから違うようにみせかけて
人間が勝手に違うものとして認識してるだけ。根本的には
何もかもメモリ上の数値。

それをわからずに、一方的な観点でしかものをみられない人は
str型とint型は全然違うと思い込んでる。

541 :デフォルトの名無しさん:2009/11/19(木) 21:42:36
>>540
いや、そういう話をしてるわけじゃないから。

542 :デフォルトの名無しさん:2009/11/19(木) 21:44:18
>>541
そういう話だよ。みんな物を一方的な側面でしか見られないから
同じだとか同じでないとか決め付けたがる。
「何を中心として考えるか」で同じか違うかなんて変わってくるだろうが。

543 :デフォルトの名無しさん:2009/11/19(木) 21:46:01
>>540
なんかズレたお方。
本質的に違わない、とは、別の言い方をすれば機能的に等価だということ。

君が言ってるような青臭い話とは全然違うw

544 :デフォルトの名無しさん:2009/11/19(木) 21:47:18
えっと、>>532のような列挙型っぽいクラスのpublicフィールドを全て列挙するにはどうすればいいのでしょうか?


545 :デフォルトの名無しさん:2009/11/19(木) 21:48:48
C# リフレクション でググる
実はEnum.GetValues/GetNamesもリフレクションで実装されてる

546 :デフォルトの名無しさん:2009/11/19(木) 21:50:22
うんこ

547 :デフォルトの名無しさん:2009/11/19(木) 21:51:57
まあ、普通に使う分には参照型もポインタ型も大差は無いだろうけど
それでいいのか?

548 :デフォルトの名無しさん:2009/11/19(木) 21:52:26
>>542
いや、そういう話じゃないから・・・いやほんと。
間違いを指摘されたからって別に必死で自己弁護せんでもいいよ?



549 :デフォルトの名無しさん:2009/11/19(木) 21:54:09
C++/CLI使うなら明確に>>539のように違いを意識しないといけない
C#ならその違いが表に出てくることは普通ない

550 :デフォルトの名無しさん:2009/11/19(木) 21:54:55
>>540
見かたを変えてどうするよwww
なんのために誤解がなくなるよう厳密に仕様書で言葉定義してるのか考えてみな
素人さんか??


551 :デフォルトの名無しさん:2009/11/19(木) 21:57:01
>>545
ぬああ、、駄目だ
わけわかめになってきた

汎用性のある継承出来るEnumクラスって誰か作って無いのかな?

552 :デフォルトの名無しさん:2009/11/19(木) 22:00:08
Enumのことはおいといてもリフレクションは勉強しときなさい
乱用は良くないけど.NETのキモと言ってもいい非常に重要な機能だ

553 :デフォルトの名無しさん:2009/11/19(木) 22:00:18
>>544
その質問の答えではないけど、Enumにメソッドをくっつけたような事がしたいってことなら、
対象のEnumをprivateなフィールドに持って、implicitに相互変換可能な
イミュータブルなクラスを作るのが一番簡単でわかりやすいと思う。

554 :デフォルトの名無しさん:2009/11/19(木) 22:01:37
メソッドくっつけるだけなら拡張メソッド使えばいいだけ

555 :デフォルトの名無しさん:2009/11/19(木) 22:02:22
リフレクションってそんなに頻繁に使う機会ある??
開発ツールを作る時とかぐらいしかイメージわかない・・・

あとシリアライザみたいな「クラス」を弄る場合か。
皆様どんな時に使ってますん?

556 :デフォルトの名無しさん:2009/11/19(木) 22:03:20
enumの継承、もっと手軽に出来たら嬉しいよねえ。
ValueObjectなクラスの数を結構減らせるのに。

557 :デフォルトの名無しさん:2009/11/19(木) 22:06:32
C#5.0はEnumの継承が実装か・・・

558 :デフォルトの名無しさん:2009/11/19(木) 22:07:48
リフレクションは試験の時とか、PHPみたいに名前でクラスインスタンスを作成したい時とか

559 :デフォルトの名無しさん:2009/11/19(木) 22:09:43
あうあう、、、列挙型を継承したいだけなのにぃ・・・・

トップクラスのMyEnum.GetNames内でリフレクション使えばよいのん?
後は継承してオブジェクト追加するだけで汎用的に使える?
GetFieldって子クラスのフィールドまで走査してくれるのかな?

わけわかめ

560 :デフォルトの名無しさん:2009/11/19(木) 22:10:43
DIフレームワークとかがあれば事足りることも

561 :デフォルトの名無しさん:2009/11/19(木) 22:12:28
そもそも列挙型みたいにして何の意味があるの?
指定できる値が限られてるからこそ「列挙型」なんだよ?
派生クラスでどんな得体のしれない値が定義されるかわからないなら意味がないと思うんだけど?

562 :デフォルトの名無しさん:2009/11/19(木) 22:13:46
子クラスのフィールドも、じゃなくて親クラスのフィールドも列挙する

563 :デフォルトの名無しさん:2009/11/19(木) 22:18:31
>>561
パラメータを列挙型にしたい
数百あるパラメータが数十セット
各セットのパラメータ重複値は数百ある
だから継承して差分だけ追加して定義したい
個別に重複した列挙型を定義すると変更に弱い
こんな理由です

>>562
むむ?
ということは継承する度にGetNamesとかGetValuesとかを定義しないといけないのん?
ぬぬぬぬぬ・・・・

564 :デフォルトの名無しさん:2009/11/19(木) 22:21:52
>>561
よく考えてみると継承関係が逆じゃないと成りたたん気もするな・・・
enum A { A1, A2, A3 }
enum B : A { B1, B2, B3 }

A a = B.B1; // これだと a は A として評価しようがない???

やりたいことって

enum 野菜 {根菜, 葉菜, 果菜};
enum 根菜 : 野菜 {ゴボウ, ニンジン, ダイコン}
enum 葉菜 : 野菜 {ホウレンソウ, コマツナ}

野菜 a = 根菜.ゴボウ // a == 野菜.根菜
野菜 b = 葉菜.ホウレンソウ // b == 野菜.葉菜

とかなのかね?




565 :デフォルトの名無しさん:2009/11/19(木) 22:24:26
>>563
ってことは、部分的に定義出来ればいいってことか。
子クラスを親クラスに代入したりはしないのか・・・。

#include とか使えたらよかったのにね。

566 :デフォルトの名無しさん:2009/11/19(木) 22:29:55
だったら>>532方式に値列挙はリフレクションでOKじゃないの?
ベースクラスにメソッドいれとけば
派生クラスでは追加のEnum値書くだけでいいし。

567 :デフォルトの名無しさん:2009/11/19(木) 22:31:59
>>563
そんなに沢山あるんだったら,どうせメソッドを呼び出すときにその列挙体フィールドを直接引数に指定することはないだろ?
列挙型のソースを自動生成してしまうとか,
列挙型を使わずに文字列や数値にしておいて意味は外から後付けにするとか
そういうアプローチでいい気がする。
もし全ての値をhoge(A.A1)みたいな形で直接使うんだったら,一般論としては設計を見直すべき。

568 :デフォルトの名無しさん:2009/11/19(木) 22:43:28
>>564
とりあえずこんな感じで列挙出来ればいいです…
enum A = {A1, A2, A3}
enum B : A {B1, B2, B3}

foreach B myEnum in B.GetEnums {
  //Dictionary<B, string> params
  string tmp;
  if (params.TryGetValue(myEnum, tmp)){
    //A1,A2,A3,B1,B2,B3をkeyとした値について何か処理する
  }
}

>>566
もし上記のような動作をさせる場合
public MyEnum GetEnums()を継承するたびに追加定義するんですよね?
なんだか無駄なような気が・・・

>>567
文字列だとコンパイル時に不正な値かどうかわからにゃい
ほかにも色々問題が…

enum A {A1=0, A2=1, A3=2}
enum B {A1=A.A1, A2=A.A2, A3=A.A3, B1=4, B2=8}

みたいにするのも有りかなとおもったけど
これ書いた瞬間無いなと思いますた(´・ω・`)

569 :デフォルトの名無しさん:2009/11/19(木) 22:54:19
GetType().GetFields() でいいからGetEnums()みたいなのはベースクラスだけあればおk

570 :デフォルトの名無しさん:2009/11/19(木) 22:54:46
コード生成でもしちゃえば?
T4 テンプレートとか結構使いやすいよ。

571 :デフォルトの名無しさん:2009/11/19(木) 22:59:39
全部ひっくるめてEnumにして、マスクのバイト配列でも用意した方が良さそうな気もする。

572 :デフォルトの名無しさん:2009/11/19(木) 22:59:50
T4とかだっせえよw
あんなもん使えるか
素直にコード書いた方がマシだろ

573 :デフォルトの名無しさん:2009/11/19(木) 23:05:47
>>569 ベースクラスでGetType("Base")とかやっちゃうの???


574 :デフォルトの名無しさん:2009/11/19(木) 23:10:23
なんでGetType()にパラメータつけるん?
typeof() とごっちゃになってない?

575 :デフォルトの名無しさん:2009/11/19(木) 23:14:40
数百のenumとか意味あるのかなw
数はともかく、>>563を読んでも必要性が俺には腑に落ちない。

仮にそんな「互いに一部の名前が重複する値の集合」が複数必要だとしても、
素直に「コピペ継承」した方が分かりやすいんじゃないのかな。

576 :デフォルトの名無しさん:2009/11/19(木) 23:15:07
なんでそこまで列挙型にこだわるのかわからない
GetValuesとか使うならどうせコンパイル時チェックも効かないしディクショナリと同じだろ

577 :デフォルトの名無しさん:2009/11/19(木) 23:15:51
>>569
具体的にはどうするの??????
いろいろやってみたけど良い方法が思いつかない

  public class MyEnum {
    private int value;
    protected MyEnum(int value) { this.value = value; }
    protected abstract Type GetMyEnumType();
    public static List<MyEnum> GetEnums() {
      List<MyEnum> list = new List<MyEnum>();
      //Type t = this.GetType(); //静的メソッドだから出来ない
      foreach (FieldInfo fi in t.GetFields()) {
        if (fi.IsPublic) {
          list.Add((MyEnum)Activator.CreateInstance(fi.GetType()));
        }
      }
      return list;
    }
  }

  public class MyEnumA : MyEnum {
    protected MyEnumA(int value) : base(value) { }
    public static readonly MyEnumA Foo = new MyEnumA(0);
    public static readonly MyEnumA Bar = new MyEnumA(1);
  }  

578 :デフォルトの名無しさん:2009/11/19(木) 23:17:17
だよな。this.GetType()できひんよねえ。


579 :デフォルトの名無しさん:2009/11/19(木) 23:20:13
>>575
とある集合に追加すべき項目が出来た時の修正が困難
その集合を使ってる物全てにペースト、ペースト、ペースト・・・・
継承したEnumなら該当する集合に項目を追加するだけ
便利だよー

>>576
全然違うよー
文字列なんかで指定したら使う側からしたらインテリセンスきかないし
バグの温床になる可能性が…

580 :デフォルトの名無しさん:2009/11/19(木) 23:23:30
そもそもその集合をベースと派生部分で分離出来るんじゃないのかね?
何をしようとしてるのかわかんないからなんとも言えないけど。



581 :デフォルトの名無しさん:2009/11/19(木) 23:24:26
あー、GetEnums()はスタティックだったか。
Enum のつもりのものを new するのも変か。

582 :デフォルトの名無しさん:2009/11/19(木) 23:27:04
Enum問題とはちょっと離れるけど、静的クラスで自分自身のクラスを取得する方法ってどうやるんだ・・・???


583 :デフォルトの名無しさん:2009/11/19(木) 23:27:23
そんな巨大で多数の列挙型を直接普通のコードから使うのかよw
さすがにそれは設計が酷すぎる

584 :デフォルトの名無しさん:2009/11/19(木) 23:28:45
>>579
機械生成はダメなん?
どっちにしても public static readonly A1 = new A(); とか百も手打ちしたりはしないでしょ?


585 :デフォルトの名無しさん:2009/11/19(木) 23:29:41
>>579
ちょっと怒らないから何を作ろうとしてるのかオジサンに教えてみなさい。

586 :デフォルトの名無しさん:2009/11/19(木) 23:32:38
>>577
へんな抽象メソッドはいってるね
もう一つのパターンの残党です
それはこんな感じでしてみたんだけど同じく怒られた

  public abstract class MyEnum {
    private int value;
    protected MyEnum(int value) { this.value = value; }
    protected abstract Type GetMyEnumType();
    public static List<MyEnum> GetEnums() {
      List<MyEnum> list = new List<MyEnum>();
      //Type t = GetMyEnumType(); //静的メソッドだから抽象化出来ない
      foreach (FieldInfo fi in t.GetFields()) {
        if (fi.IsPublic) {
          list.Add((MyEnum)Activator.CreateInstance(fi.GetType()));
        }
      }
      return list;
    }
  }

  public class MyEnumA : MyEnum {
    protected MyEnumA(int value) : base(value) { }
    protected override Type GetMyEnumType(){
      return typeof(MyEnumA); //親に子のTypeを通知してみるが…
    };
    public static readonly MyEnumA Foo = new MyEnumA(0);
    public static readonly MyEnumA Bar = new MyEnumA(1);
  }  

587 :デフォルトの名無しさん:2009/11/19(木) 23:36:17
>>582
typeof?
動的にそれが出来れば言う事なしなんだけど…

>>583
設計は関係ないw
このケースは文字列で指定するのが普通ですとか言われたら何も言えないけど…

>>584
機械生成???なんじゃらほい??
定義はわりと長くなっても平気だったりするから手打ちでも気にならなかったり…

>>585
とある機械のラッパークラス…

588 :デフォルトの名無しさん:2009/11/19(木) 23:42:36
>>587
コードの機械生成。
機械のラッパークラスってことはなんらかの仕様をそのまんまEnumに投影してるってことなんだろし
それをテキストファイルに落しこんどくわけ。

で、それを読みこんで enum を書き出すプログラムを作っといてビルド時に自動的に実行されるようにしとく。
もちろん納品するときはそのプログラムとテキストファイルも一緒に入れるわけよ。

どうしても横一列に沢山の値を定義しなきゃいけないときとかよくやる手だよ。



589 :デフォルトの名無しさん:2009/11/19(木) 23:46:04
>>588
なるほど、、
ふむふむ…

590 :デフォルトの名無しさん:2009/11/19(木) 23:49:29
結局・・・
・ベースクラスに Type を引数に取る GetEnums() を作って A.GetEnums(B)とか B.GetEnums(B)とかする。
・EnumUtilクラスとかのヘルパークラス作って GetEnums(Type x) を実装、EnumUtil.GetEnums(B)とかする。
・サブクラスでも GetEnums() をコピペ実装する。
メソッドが改修されることはないからデメリットはコードが増えるぐらい。
・コピペ。コンパイラになんぞたよってられっかい!!
・仕様見直し。ある意味前向きな対処だと思うけどなぁ。
・機械生成。力技だけど発展させれば仕様書からそのままコード生成とか出来るからよさげじゃね?

さあ選べ。

591 :デフォルトの名無しさん:2009/11/19(木) 23:53:29
static にするとこんなんしかできなかった。
パラメータ付きの所で具体的な列挙をすればおk

class hoge
{
  static public Type GetEnums() { return GetEnums(typeof(hoge)); }
  static public Type GetEnums(Type t) { return t; }
}

class fuga: hoge
{
 static public Type GetEnums() { return GetEnums(typeof(fuga)); }
}


592 :デフォルトの名無しさん:2009/11/19(木) 23:55:15
どう見てもEnumの機械生成でいいだろ。

593 :デフォルトの名無しさん:2009/11/20(金) 00:47:12
ありがちなパターンだと表から生成

594 :デフォルトの名無しさん:2009/11/20(金) 00:47:22
ロマンがない

595 :デフォルトの名無しさん:2009/11/20(金) 06:25:03
ロマンなんかいりません。エロイ人にはそれがわからんのです。

596 :デフォルトの名無しさん:2009/11/20(金) 06:31:42
>>582
log4net使ったstaticクラスのロガー取得部分でもググってみ

597 :デフォルトの名無しさん:2009/11/20(金) 06:43:16
>>451
遅レスだけど、それだったらhotfixがでてる
http://support.microsoft.com/kb/959540/en-us/

それかsp4を待つか(でるのか?w)

598 :デフォルトの名無しさん:2009/11/20(金) 19:22:04
ガベージコレクタンがメモリ内をお掃除してくれてるおかげで
きれいになってるよ。ポインタはメモリ内を汚す悪いやつだ。

599 :デフォルトの名無しさん:2009/11/20(金) 19:42:06
>>598
誤爆か? ポインタの話は初心者スレで盛り上ってたはずだが

600 :デフォルトの名無しさん:2009/11/22(日) 09:37:05
Graphics#DrawString() を使って縦書き描画をすると、
ローマ数字が90度回転して描画されてしまうのですが、
どうしたら良いでしょうか?

[ソース]
Graphics g = pictureBox1.CreateGraphics();
String drawString = "あいうえおTUV";
Font fnt = new Font("@MS ゴシック", 16, FontStyle.Bold);
StringFormat sf = new StringFormat();
sf.FormatFlags = StringFormatFlags.DirectionVertical;
g.DrawString(drawString, fnt, Brushes.Black, 0.0F, 0.0F, sf);

fnt.Dispose();
g.Dispose();

601 :デフォルトの名無しさん:2009/11/22(日) 09:47:01
マルチすんじゃねぇっっっ、そもそもマルチ元の48の回答も見てないだろお前。

602 :デフォルトの名無しさん:2009/11/22(日) 10:58:05
まぁ48のやり方じゃできないんだけどな。
マルチは良くないな

603 :デフォルトの名無しさん:2009/11/22(日) 12:18:21
「アイコンとマニフェスト」で指定したアイコンをNotifyIconでも使用したいのですが、
プロジェクトにアイコンを追加してビルドアクションを「埋め込まれたリソース」に変更、
追加したアイコンを「アイコンとマニフェスト」に指定するとビルド後のバイナリサイズが
アイコン1個分多く増えてしまいます。

※アイコン無しバイナリ50KBとして100KBのアイコンx2で250KBのバイナリが作成される

同じアイコンを使用しているためアイコンは1つだけ追加したいのです。
何か良い方法はないでしょうか?

「埋め込まれたリソース」にしないで「アイコンとマニフェスト」で指定したアイコンを
プログラムから読めれば良いのですが・・・。

604 :デフォルトの名無しさん:2009/11/22(日) 12:54:05
結局リソースとして格納されてる ただしWin32ネイティブのリソース
なのでWin32APIのLoadIcon/LoadImage関数を使えばロードできる
問題は/win32iconだとリソース番号/リソース名が明示できないことだな
一応0x7F00になってるみたいだけど保証はできない
EnumResourceNamesで列挙してみるのもいいけど一つしか埋め込まれない保証もないな 大丈夫だと思うけど
一番確実なのはrc.exe使ってリソースファイル作って設定することだが

605 :デフォルトの名無しさん:2009/11/22(日) 14:20:15
CSVデータから、高速に多次元配列を作るにはどうしたらいいでしょうか?
"000111","abc","123","あいうえお"
"000112","def","3718","かきくけこさしすせそ"


と並んだデータを
[000111][abc][123][あいうえお]
[000112][def3718][かきくけこさしすせそ]


として配列にしたいんですが、データのサイズが4万行程度*複数ファイルあり、かなり時間がかかります。
しかも頻繁に参照しないといけないので、毎回読み出すわけにもいかず困ってます。

606 :デフォルトの名無しさん:2009/11/22(日) 14:48:42
>>605
データ変換の論理が全く意味不明
なんで、片方は2つのフィールドを1つにしている?

607 :デフォルトの名無しさん:2009/11/22(日) 14:56:10
そこはただのタイプミスでしょ常識的に考えてw
っていうか、>>605は結局何を聞きたいのかね。

これは俺の持論だけど、こういう文章推敲できない人は、
プログラミングの適性もえてして低い。

608 :デフォルトの名無しさん:2009/11/22(日) 15:00:22
>>605
まずデータ中の"は、どうエスケープされてる?
""か?それとも\"?
という所から聞かないと分からん。

CSVなんか簡単、枯れ果ててライブラリとかあるんでしょ。
なんて思ってるとえらい目にあうのよ。

むしろXMLの方が簡単なんだよね。規格化されてるから。

609 :デフォルトの名無しさん:2009/11/22(日) 15:06:30
それでも何故か量産されているvalidどころかwell-formedにもなってないxmlファイル

610 :デフォルトの名無しさん:2009/11/22(日) 15:14:28
>>608
> まずデータ中の"は、どうエスケープされてる?
特に指定されていないければ、RFC4180に従って処理するのが普通だろ

611 :デフォルトの名無しさん:2009/11/22(日) 15:15:07
エスケープの問題に関しては、
現状で既に動いてるのがあるんだから
自力でパースしてるかデータとして存在してないのではないかと。
そこは飛ばしてもいいと思う。

あと多次元配列にしたいといってるんだから
{{"000111", "abc", "123", "あいうえお"},
{"000112", "def", "3718", "かきくけこさしすせそ"}}
こういう意味じゃないかな?


612 :デフォルトの名無しさん:2009/11/22(日) 15:18:01
まずは時間がかかってるのがパースなのかオブジェクト生成なのか切り分け

613 :デフォルトの名無しさん:2009/11/22(日) 15:55:06
しかし、高速に読めるんだったら、2次元配列に入れる必要も無いな
そしてどうせ読み込むなら配列よりDataTableやListの方が便利だな

614 :デフォルトの名無しさん:2009/11/22(日) 15:59:00
>>612
パースしてる部分とオブジェクト生成部分を
それぞれループでぶん回せは分かるね。

データが定型的で、"とか改行とかを考える必要が無いならその処理を省けるし、
最初の列がただの数字の羅列("000111")と決まりきっているなら
行頭からの文字数で直接指定とかも考えられるw
汎用性はまるで無いけど、いちいちデリミタを検索よりは早いだろう。

全体の行数列数が決まってるならオブジェクト生成部分で早くできるかも。

>>607
他のみんなが(下手だなと思いながらも?)それなりに
(どうやって投げ返せばいいのか分からないけど)ボールを投げ返しているのに、
君だけボールとミットを地面に叩き付けて、お前は下手糞だ、となじってる様に見えるんだけど。

615 :デフォルトの名無しさん:2009/11/22(日) 16:02:46
RFC4180に準拠となると、改行コードもデータ中に許可しなきゃならんが宜しいか?

616 :デフォルトの名無しさん:2009/11/22(日) 16:05:09
remove

617 :デフォルトの名無しさん:2009/11/22(日) 16:05:34
>605
具体的にフィールド何個のデータが合計何レコードあって、それに何秒かかってるから困る、
ぐらいの情報は出して貰わないと、君が遅いといってる時間が本当に遅いのかどうかも不明。
もちろん改善できるかどうかも不明。

つか、この程度の処理じゃ何一つ難しい内容は登場しないと思うんだけど。。。
何が解らないのかが解らないな。CSVの厳密なパースをしたい場合はちょっと面倒だけど。

多次元配列にする理由もわからんし。
頻繁にアクセスするという話から察して、本当に必要なのはディクショナリじゃ
ないのかとエスパーする。

あと、もし業務でやってるんだとしたら、依頼元なり上司なりに「スキル不足でできません」と
ちゃんと言ってね。力技でいい加減なものを作られるぐらいなら「僕にはできません」と
言って貰った方が、依頼元から見れば1000倍マシだから。

618 :デフォルトの名無しさん:2009/11/22(日) 16:12:25
質問主は逃げたかな?
もしかしたら、使うCSVを毎回読み込むか、最初に使わないものも含めて全部読み込んでおくか
の2種類しか思いつかなかったから全部読み込むのを速くしたかった、と言うことかもしれんね。

619 :デフォルトの名無しさん:2009/11/22(日) 16:14:22
>>617
そういう話題はマ板でやれば?
ボールを返すにしてもデッドボールを狙ってるでしょ。
君の身に着けた知識は相手を傷つけるのが目的なの?

620 :デフォルトの名無しさん:2009/11/22(日) 16:17:59
バカは相手にすんな

621 :デフォルトの名無しさん:2009/11/22(日) 16:18:12
レベルの低い質問には食いつきがいいなw

622 :デフォルトの名無しさん:2009/11/22(日) 16:25:09
>>619
>そういう話題はマ板でやれば
最後の3行に関しては仰るとおりだ、悪いね。
「できます」の回答の後でとんでもないコードを上げてくるマが
よく居て、質問者もそういう手合いに見えたから、つい。
自分にできない事を請け負うのは悪事だということを、知識のついでに
理解して欲しかっただけ。おしまいにするよ。

623 :デフォルトの名無しさん:2009/11/22(日) 16:31:02
>>622
いあいあ、こちらこそどうも。
トゲのついたボールをあなたに投げてしまったと思ってますので。

624 :デフォルトの名無しさん:2009/11/22(日) 16:40:50
きも

625 :デフォルトの名無しさん:2009/11/22(日) 16:49:05
虎視眈々と初心者がくるのを待ってるんだろうな。
そして初心者が(上級者にとってくだらない)質問をしたら
待ってましたとばかりにバカにする。

プログラマなんて他人をバカにするのが大好きなやつばっかだよ。

626 :デフォルトの名無しさん:2009/11/22(日) 16:53:06
プログラマに限らず質問スレはだいたいそんな感じだな

627 :デフォルトの名無しさん:2009/11/22(日) 16:53:10
>>625
自己紹介お疲れ様

628 :デフォルトの名無しさん:2009/11/22(日) 17:19:27
>625
そういう悪意満々の目線で状況を見てるお前が一番ヒネてるよ。
過去にスキル不足の指摘でもされて逆恨みしてんの?

629 :デフォルトの名無しさん:2009/11/22(日) 17:24:47
>>625
こういう奴もなんだかね。

俺個人の見解を言えば、「××の質問スレ」なんだから××に関する知識や技能の
低さを責めるのか酷だとは思うが、>>605のように質問の意図が読み取れない文章を
書く人間(こういう人は、要は横着なんだと思うが)は責められて当然だろう。

630 :デフォルトの名無しさん:2009/11/22(日) 17:39:04
>>629
うるせーよカス

631 :デフォルトの名無しさん:2009/11/22(日) 17:45:03
>>630
まぁ、とりあえずそんな真っ赤にならずにない知恵絞って解決策探してやろうぜ

632 :デフォルトの名無しさん:2009/11/22(日) 17:48:47
>631
そのためにも最低限の情報を出せという流れな訳だが、本人まだ居るのか?

633 :デフォルトの名無しさん:2009/11/22(日) 18:08:41
csv関係のはそれはもう面白いぐらい車輪の再開発されてる部分だしなぁ。
なんで標準で用意しないんだろう?標準仕様がないわけでもないのに。

634 :デフォルトの名無しさん:2009/11/22(日) 18:13:00
たかが4万行くらいでそんなに遅くなるかなあ

635 :デフォルトの名無しさん:2009/11/22(日) 18:21:43
2次元配列をどうやって作ってるかにもよるな。
まあ2次元配列なんか使うなってのが正直なところだが。


636 :デフォルトの名無しさん:2009/11/22(日) 18:35:00
>>633
TextFieldParserがある Microsoft.VisualBasic.dllにだけど

637 :デフォルトの名無しさん:2009/11/22(日) 18:42:25
ADOでCSV読めるよね

638 :デフォルトの名無しさん:2009/11/22(日) 18:45:51
>>636
超絶に利用し辛い名前空間だなそれwwwwww


639 :デフォルトの名無しさん:2009/11/22(日) 19:33:08
String の split じゃ非力?

640 :デフォルトの名無しさん:2009/11/22(日) 19:39:09
うん非力
テキストの解析って意外に簡単なんだけど慣れが必要なんだよな

641 :デフォルトの名無しさん:2009/11/22(日) 20:03:09
>>636をみてぐぐったけど参考になりますわ
http://www.atmarkit.co.jp/fdotnet/dotnettips/487csvparser/csvparser.cs


642 :デフォルトの名無しさん:2009/11/22(日) 20:03:19
>>633
XML に移行してほしかったんだろ。


643 :デフォルトの名無しさん:2009/11/22(日) 20:06:54
つか.NETで標準サポートされてるフォーマットテキストの形式ってXMLだけだからな
CSVとかサポートしだしたらキリがない

644 :デフォルトの名無しさん:2009/11/22(日) 20:10:15
>>638
便利なのに、VisualBasicという名前空間が付いているせいで利用され難い不思議なクラス。

645 :603:2009/11/22(日) 20:10:31
>>604
遅くなりましたが大変参考になりました。

LoadImageでリソースを読み込もうとしましたが、
MAKEINTRESOURCEマクロで躓いて成功していません。
リソース番号もわからないので今の自分のスキルでは
出来ないと判断しました。

結局、NotifyIcon用のアイコンを16x16のみにして
サイズを減らすことで無理矢理解決することにしました。

ありがとうございました。

646 :デフォルトの名無しさん:2009/11/22(日) 20:14:12
>>640
字句解析のステートマシン作りだもんね。
一度作り方覚えちゃえばなんちゅうことないんだけど。


647 :デフォルトの名無しさん:2009/11/22(日) 20:24:55
ファイナライザの中で他のオブジェクトにアクセスすると,そのオブジェクトが今回のGCの対象に
入っている場合は復活するらしいけど,この復活したオブジェクトって
既にファイナライザが呼び出されている可能性があるというだけで他は変化していないと考えていいの?

648 :デフォルトの名無しさん:2009/11/22(日) 20:49:45
TextFieldParserってRFC準拠のCSV読み込めるんだっけ?

649 :デフォルトの名無しさん:2009/11/22(日) 20:56:40
RFC読みゃわかるけど別にきっちり定義してるわけじゃないんだよな。
最大公約数的な仕様を書いておきますよーぐらい。
http://www.ietf.org/rfc/rfc4180.txt

で、ちゃんとTextFieldParserはレコード中の改行も処理してくれるみたいよ。




650 :デフォルトの名無しさん:2009/11/22(日) 21:19:33
>>636
TextFieldParserっていろいろ罠があって使い物にならないと思うが、
それを薦めるならせめて一言あってもいいんじゃなかろうか

651 :デフォルトの名無しさん:2009/11/22(日) 21:22:27
罠があるの?

652 :デフォルトの名無しさん:2009/11/22(日) 21:30:33
>>650
罠についてkwsk

653 :デフォルトの名無しさん:2009/11/22(日) 21:33:50
ただいま罠を検索中です
しばらくお待ち下さい…

654 :デフォルトの名無しさん:2009/11/22(日) 21:37:27
「TextFieldParser 罠」だと見つからなかった・・・


655 :デフォルトの名無しさん:2009/11/22(日) 21:48:38
ただいま英語で検索中です。
しばらくお待ち下さい…
words is 「TextFieldParser wana」「TextFieldParser trappu」 etc...

656 :デフォルトの名無しさん:2009/11/22(日) 21:51:56
trappu ってなんだ

657 :デフォルトの名無しさん:2009/11/22(日) 21:55:04
これだけ居ながら茶化すだけで誰もしらんのか
自分で試せ

レス番,メール,本文
"648","sage","TextFieldParserってRFC準拠のCSV読み込めるんだっけ?"
"649","sage","RFC読みゃわかるけど別にきっちり定義してるわけじゃないんだよな。
最大公約数的な仕様を書いておきますよーぐらい。
http://www.ietf.org/rfc/rfc4180.txt

で、ちゃんとTextFieldParserはレコード中の改行も処理してくれるみたいよ。"
"650","sage",">>636
TextFieldParserっていろいろ罠があって使い物にならないと思うが、
それを薦めるならせめて一言あってもいいんじゃなかろうか"


658 :デフォルトの名無しさん:2009/11/22(日) 21:56:02
1up 1up 罠に落ちそう

659 :デフォルトの名無しさん:2009/11/22(日) 21:59:47
知らねえから聞いてるのに「茶化すだけで誰もしらんのか自分で試せ 」って…
なんか会話が成立しない人だな。
アスペルガーって言うんだっけこういうの

もちろん説明するのが嫌なら嫌でいいと思うんだが、だったらこんなスレに
わざわざ居なくていいだろうによ。


660 :デフォルトの名無しさん:2009/11/22(日) 22:02:42
RFCとかいうtorappuを見たいのですが異国語がわかりますん
英語は得意なのに中々英語で書かれてる文章ってないんですよね…
かなぴぃ

661 :デフォルトの名無しさん:2009/11/22(日) 22:22:31
真面目に罠ってなんのことなんだ?


662 :デフォルトの名無しさん:2009/11/22(日) 22:30:44
""内の改行コードがエスケープされないって事じゃない?
なんにしろ、もったいぶるような事じゃないな。
異常性格な人としか思えん。

663 :デフォルトの名無しさん:2009/11/22(日) 23:19:14
>>659
グダグダ文句言ってないで657のデータでやってみりゃいいじゃん
5,6行のコードも書けないの?

664 :デフォルトの名無しさん:2009/11/23(月) 10:00:38
普段、質問者が1から10まで全部聞こうとすると叩くくせに
自分にはすいぶん甘いんだなw

665 :デフォルトの名無しさん:2009/11/23(月) 10:09:24
それがプログラマーの生態ってやつよ

666 :デフォルトの名無しさん:2009/11/23(月) 10:17:28
プログラマーの性格の悪さは異常

667 :デフォルトの名無しさん:2009/11/23(月) 10:29:40
それが○○○○の生態ってやつよ

668 :デフォルトの名無しさん:2009/11/23(月) 10:54:50
>>666
なんか常に喧嘩腰だよね。

669 :デフォルトの名無しさん:2009/11/23(月) 11:04:35
マ板に行け馬鹿共

670 :デフォルトの名無しさん:2009/11/23(月) 11:22:44
プログラマの人としての浅さは異常

671 :デフォルトの名無しさん:2009/11/23(月) 11:27:46
自己紹介するスレはここですか?

672 :デフォルトの名無しさん:2009/11/23(月) 13:53:41
>>671
ブログラマについて語るスレ

673 :デフォルトの名無しさん:2009/11/23(月) 14:23:07
レス乞食・・・しかも最低ランクの雑魚

674 :デフォルトの名無しさん:2009/11/23(月) 15:12:28
RFCの通りには読めない場合があるって話なのか?
そもそもどこにもRFC準拠なんて書いてないし、
仕様に書いてある通りに動くんだろ?

まあ強いて言うなら、パフォーマンスはあまりよくなかったはず。


675 :デフォルトの名無しさん:2009/11/23(月) 15:21:50
>>674
まだ言ってんのかよw
口で説明してもらわないとわからないんでちゅか?
どうして自分で動作確認しないでちゅか〜?

676 :デフォルトの名無しさん:2009/11/23(月) 15:33:31
誰と戦っているんだろう・・・

677 :デフォルトの名無しさん:2009/11/23(月) 15:50:53
大人が幼児相手に幼児語を使うのは日本だけらしいね

678 :デフォルトの名無しさん:2009/11/23(月) 15:54:12
もちもちパパでちゅよー

679 :デフォルトの名無しさん:2009/11/23(月) 16:46:46
違うんなら違うって書けよ。
どんな罠で使いもんにならないんだよ。

仕様通りに動かないとか仕様が使いものにならないとか
パフォーマンスが使いものにならないほど悪いなら分かるが。

はっきり言われなきゃ分かんないんだよ。


680 :デフォルトの名無しさん:2009/11/23(月) 17:02:08
ほのめかしってたちが悪いよね

681 :デフォルトの名無しさん:2009/11/23(月) 17:12:26
>>679
質問する態度じゃねえなw
試した結果や、自分の考えを示した上で
質問者に相応しい文体で再挑戦しようね

682 :デフォルトの名無しさん:2009/11/23(月) 17:13:32
スレッドプールにプロセッサ数を超えるアイテムを突っ込んだときって
プロセッサがアイドル状態じゃなくても、突っ込んだ分スレッドは動き出す?
それともアイドル状態になるまでは動き出さないとか
あるいは何らかの調整が入るとか
その辺どうなってるのか知らない?
最小スレッド数まではすぐに動き出すような気もしないでもないが。

あ、動き出すってのは、スレッドがスケジュール対象になるって意味ね。


683 :デフォルトの名無しさん:2009/11/23(月) 17:14:40
質問w

684 :デフォルトの名無しさん:2009/11/23(月) 17:15:16
プリエンプティブな形でスライスされるんじゃね?

685 :デフォルトの名無しさん:2009/11/23(月) 17:16:32
ヒント:
とかやる奴と一緒で、自信がないんでしょw

いや自信がないのならないでいいと思うんだが、それならそれで「自信はないが・・・」
と前置きして説明する程度のコミュニケーション能力が欠如していると言った方が
適切かもしれない。

686 :デフォルトの名無しさん:2009/11/23(月) 17:29:39
>>685
おまえ教えて欲しくてしかたないんだろw
それなら相応の態度を取れ、そうじゃないならスルーしろよ

687 :デフォルトの名無しさん:2009/11/23(月) 17:29:56
>>684
それは、投入された分動き出すって意味だよね?
※まだ作成されてないスレッドが作成されるまでのタイムラグは別として

となると、重いタスクと軽いタスクの同時処理で、重いタスクを優先させたいとき、
重いタスクを先に投入するって方法だとあまり上手くいかないのかな。

何がしたいかって言うと、例えばフルパワーで2秒かかるタスクが一つと、
1秒かかるタスクが2つあるとき、
2コア環境でスループットを最大化するには、
2秒かかるタスクと1秒のタスク一つをまず処理開始して、
1秒のタスクが終わり次第残りの1秒のタスクを処理開始する必要がある。

もしプロセッサがアイドルになるまでスレッドがスケジュールされないなら、
重いタスクから順にプールに突っ込むだけで、それなりに上手く動く事になる。

全部スケジュールされてしまうなら、そういう単純な方法ではすまなくなる。
っつか面倒過ぎるから
.NET4のタスクパラレル機能を待つのが賢明か…


688 :デフォルトの名無しさん:2009/11/23(月) 17:31:20
教えてほしい≠まともなこと言ってるのか確認したい


689 :デフォルトの名無しさん:2009/11/23(月) 17:33:58
>>685
ずばり教えてもらわないとわからないほど無能なら、質問時にそう書いとけって話

690 :デフォルトの名無しさん:2009/11/23(月) 17:34:41
たぶんいちばーん最初の質問者と関係無いところで戦ってるよね、この人ら。


691 :デフォルトの名無しさん:2009/11/23(月) 17:35:30
>>687
TPL、.NET 3.5 でも使えるβもあるっちゃあるよ。

692 :デフォルトの名無しさん:2009/11/23(月) 17:38:05
まあそうなんだけどね、なんせβだし、
今のスレッドプールで上手く動くなら、
できれば余計なものは持ち込みたくないからね〜


693 :デフォルトの名無しさん:2009/11/23(月) 18:52:23
確か空行の扱いと、後は空白文字のトリムが柔軟性に欠けるってのはあったな。
他には?こんなもん?


694 :デフォルトの名無しさん:2009/11/23(月) 19:01:03
スレッドって最初に動いたCPUにぶら下がりっぱなし?
んな訳ないと思うんだが。

695 :デフォルトの名無しさん:2009/11/23(月) 19:09:04
>>694
言ってることが意味不明すぎる。

696 :デフォルトの名無しさん:2009/11/23(月) 19:09:21
それなら空行のあるデータには使えないってはっきり言えばいい話だと思うが、
いろいろってことは他にも罠があるのか?
なんでもったいぶるのかよう分からん。


697 :デフォルトの名無しさん:2009/11/23(月) 19:10:38
>>694
んな訳ないが、お前は一体唐突に何を言ってるんだ?


698 :デフォルトの名無しさん:2009/11/23(月) 19:12:34
>>687の前提通りにいくわけねーじゃんって言いたいんじゃないかなぁ。
2秒の処理が片側プロセッサで処理し続けるわけないみたいな。
どっちにしてもよくわかんない。


699 :デフォルトの名無しさん:2009/11/23(月) 19:14:38
どこに2秒の処理が片側プロセッサだけで動くような前提が書かれてるのか教えてもらいたい。


700 :デフォルトの名無しさん:2009/11/23(月) 19:19:30
読解力ねーのな・・・

701 :デフォルトの名無しさん:2009/11/23(月) 19:21:33
>>700
誰に言ってるのかわかんねーよ

>>687は、1秒のタスクが一つずつスケジュール開始されるようにすれば、
2秒のタスクはほぼ全力で動き続けることができるってことを言ってるだけ。
一つのプロセッサだけとかそういうことではない。
スケジュール対象のスレッドが2つなら、OSがうまくプロセッサを活用してくれる。
もちろん一つのプロセッサになるとは限らんが、割とそうなった気がする。
効率よく動かそうとすると自然にそうなるからだと思うが。


702 :デフォルトの名無しさん:2009/11/23(月) 19:24:09
アンカー付けなければ簡単に手の平返しが出来て便利だお

703 :デフォルトの名無しさん:2009/11/23(月) 19:30:58
まともにアクティブな(スケジュール対象の)スレッド数がプロセッサ数以下なら。
そのスレッドはほぼ全力で動けるようにOSがうまくスケジューリングしてくれたはずだよ。
まあそうでなきゃOSとしての出来が悪いってことになるからあたり前だとは思うが。


172 KB [ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]

■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
会社で使えない奴、それはワタシ/アイツ [プログラマー]

新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :


read.cgi ver 05.0.7.8 2008/11/13 アクチョン仮面 ★
FOX ★ DSO(Dynamic Shared Object)