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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
(#゚ー゚)つ < 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
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
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
素晴らしい!
ありがとうございます!
115112: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";
}
157152: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
コンポーネントなんだから自分の親が誰かくらいは知ってるんじゃないの
188183: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
プロセスのフック、なんてものはない。
別プロセスの何をフックしたいんだ?
240238:2009/10/24(土) 13:08:39
自己解決しました
241デフォルトの名無しさん:2009/10/24(土) 13:14:38
よかったね。
242238 :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
249デフォルトの名無しさん:2009/10/24(土) 23:19:50
LL じゃん。ウィンドウメッセージをフックしてくれよ。グローバルフックで。
250デフォルトの名無しさん:2009/10/24(土) 23:22:03
まぁ、意味がわかってないバカってことだな。
251243: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();
284281: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
ところで親ウィンドウが分からないとエラーメッセージ表示中に
裏のウィンドウ操作されちゃうけどそれはいいの?
287281:2009/10/30(金) 16:05:36
>>283さま

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

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

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


大感謝!!!
288281: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 とは並行操作できない処理 */
}

これで一発で通るよ
それ以上をやりたいならしらん
291281: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
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
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();
348346: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());
あんがと。
362354: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でやる方法がよく分からなかったです。
大きなビットマップを作る方法も合わせて具体的に教えてもらえませんか?

374371: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で扱えれば便利なのでそうしたいと思ってます。
376371: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つくってやれば。
379371: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
意味不明でしたね
継承されたフォームテンプレートがそんざいしないのですが
どうすれば表示されるようになりますか?
434433: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
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
445デフォルトの名無しさん:2009/11/10(火) 09:57:07
って非選択にしたあとの選択を1つ前にしたいのか
現在の場所調べてひとつ前にSelectしては?
446デフォルトの名無しさん:2009/11/10(火) 16:13:39
すみません。質問です。
TextBoxを作成すると、DataGridのマウスホイールでのスクロールが機能しなくなる問題がありました。
フォーカスを変えても変化が無いので、
MouseWheelというイベントを試してみようと思いましたが、再現する方法が難しく強引な様な気がして断念しました。
TextBoxのスクロール機能を停止させてDataGridのスクロールを有効にする方法を教えてください。
御願いします。
447446:2009/11/10(火) 18:00:55
灰色になったけど、Enabledてのがあった。。。すみません。ありがとうございました。
448デフォルトの名無しさん:2009/11/10(火) 18:15:32
状況がよくわからんのだよね。
確認できてないけどフォーカスだろ?
449446: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なんてツールボックスにも出てこない。
451446: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だけのままじゃ無理だろうな
506455: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
普通にハンドラでいいとおもう
511504: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
ん?ほんとか?
ネットワークだとうまくいかないのかな?
514504: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();
}
516504: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
キャスト
527519: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や==などを実装
}
533513: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という名前空間が付いているせいで利用され難い不思議なクラス。
645603: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としての出来が悪いってことになるからあたり前だとは思うが。
704デフォルトの名無しさん:2009/11/24(火) 06:46:04
for文ってwhile文とほとんどかわらないね。
for文いらないね。
705デフォルトの名無しさん:2009/11/24(火) 06:47:56
forでwhileと同等の事をやるのは簡単だけど、逆はめんどくさいだろw
706デフォルトの名無しさん:2009/11/24(火) 07:58:04
だよな。whileいらないじゃん!ならまだしも。
707デフォルトの名無しさん:2009/11/24(火) 08:29:06
命名規則でたまーにプライベートメソッドにCamel形式使ってる人いるけどなんでだろ?
708デフォルトの名無しさん:2009/11/24(火) 09:01:39
命名規則なんて現場やプロジェクトで色々あるがな
理由もそれぞれ
709デフォルトの名無しさん:2009/11/24(火) 09:03:22
プライベート変数はCamel式ってのを誤解釈したんじゃない?
って出典調べようとしたんだけどプライベートフィールドはCamel使ってくれってのは
MSDNのどこに書いてあったっけ・・・
710デフォルトの名無しさん:2009/11/24(火) 10:23:03
ソースの書き方までMSに指図される覚えはない。
711デフォルトの名無しさん:2009/11/24(火) 10:31:27
しかし、フレームワークにおけるクラスやメソッドの命名規則を無視して
自前のコードのみ勝手な命名規則を採用するのも考え物だ。
単純に美しくない。
712デフォルトの名無しさん:2009/11/24(火) 10:31:30
>>710
その通り
書きやすい読みやすいコードが一番
でも多くがMSに準拠する書き方をしているという現実

俺的に最初慣れないうちは読みにくかったけど慣れれば見やすかった
713デフォルトの名無しさん:2009/11/24(火) 10:39:17
これだね
http://msdn.microsoft.com/ja-jp/library/cc433241(VS.71).aspx

VS2010ではPascalで名前つけておくと検索が楽になるらしい
http://www.atmarkit.co.jp/fdotnet/scottgublog/20091030searchcode/searchcode.html
714623:2009/11/24(火) 11:40:54
環境は、
windowsXPsp3
word 2003


http://support.microsoft.com/kb/316384/
Visual C# を使用して Microsoft Word で新規文書を自動的に作成する方法

上記サイトを忠実に再現したら、

http://www1.axfc.net/uploader/File/so/34791.gif

というメッセージが表示されました。
グーグルで検索してみましたが解決できていません。
アドバイスをいただけないでしょうか、お願いします。
715デフォルトの名無しさん:2009/11/24(火) 12:59:55
見たことないエラーだなぁ…
ちなみにVisibleの所コメントアウトして実行したらどうなるんだろ・・・
716623:2009/11/24(火) 13:04:15
717623:2009/11/24(火) 13:21:23
スタート → microsoft office ツール → Microsoft office アプリケーションの回復

を実行すると、ダイアログ内に、「microsoft office word 実行中」っていう項目が生成されて、表示されています。
この項目が、上記ワードオートメーションプログラム(microsoft提供)を実行するたびに1つずつ増えていきます。

つまり、いまは、上記ワードオートメーションプログラムを3回実行したので
(もちろん、何れもoWord.visible=true;でつまづきましたが・・・)
アプリケーションの回復っていうダイアログ中のリストボックスには、
「microsoft office word  実行中」っていう項目が3つも生成されています。
718デフォルトの名無しさん:2009/11/24(火) 13:25:36
>>712
ぶっちゃけ無茶な書き方しろっていってるわけじゃないしな。
ガイドラインがあるならプロジェクトや客毎に毎回書き方変えさせられずに済む。
Cの時はほんと場所によって違いが激しすぎた。
719デフォルトの名無しさん:2009/11/24(火) 13:28:55
MSはなんでプロパティのバッキングストアの命名規則をちゃんと決めなかったのかが謎だ。
アンダーバー付けたりプロパティのCamel形式にしてみたりと人それぞれになってるよな。
720デフォルトの名無しさん:2009/11/24(火) 13:41:55
プロパティのバッキングストアってなに?
721デフォルトの名無しさん:2009/11/24(火) 13:45:45
>>714
>windowsXPsp3 
>word 2003 
の環境で、参照の追加はMicrosoft Word 1.1 Object Library

それでサンプルとの相異は
using Word = Microsoft.Office.Interop.Word;

using Microsoft.Office.Core;
に変更した。
これで動いてるよ。
722デフォルトの名無しさん:2009/11/24(火) 13:57:08
PIA絡みか・・・?
723デフォルトの名無しさん:2009/11/24(火) 14:01:29
>>720
private int age; // ← これ
public int Age { get { return age; } set { age = value; } };

バッキングフィールドとも呼ばれることがある。
724デフォルトの名無しさん:2009/11/24(火) 14:03:59
こんな記事もあるな
「m_」なんて付けることもあるのか・・・
http://dobon.net/vb/dotnet/beginner/namingrules.html#section3
725デフォルトの名無しさん:2009/11/24(火) 14:06:07
MSが公式にガイドラインを定めてるのはアセンブリの外から見えるものだけ
あくまでクラスライブラリのためのガイドラインだからな
726デフォルトの名無しさん:2009/11/24(火) 14:11:01
>>723
トン

>>724
m_ がついたコードはMSDNにもうじゃうじゃあるよ
アンダースコアで始まるのもあるし
何も付いてないのもあれば、thisで参照してるのもある
727623:2009/11/24(火) 14:15:36
>>721
でも、それをやると、

//Start Word and create a new document.
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();

で、Wordってなんですか?っていうエラーメッセージを大量に
受けていsまいます・・・。
728623:2009/11/24(火) 14:17:52
エラー 1 COM 参照 "VBIDE" の依存関係を決定できませんでした。タイプ ライブラリ/DLL の読み込みエラーです。 (HRESULT からの例外: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)) WindowsFormsApplication1


>>714だと、デバグ前にこんなエラーが出てしまいます・・。
これをきっかけとして何か糸口を見つけたいです・・・。
729デフォルトの名無しさん:2009/11/24(火) 14:23:29
>>727
これを
using Word = Microsoft.Office.Interop.Word; 
こうしてない?
using Word = Microsoft.Office.Core; 

正解はこっち。
using Microsoft.Office.Core; 
730623:2009/11/24(火) 15:22:16
>>729
正解の方です!

//using Word = Microsoft.Office.Interop.Word;

です。
731デフォルトの名無しさん:2009/11/24(火) 15:50:01
>>730
using以前に参照の設定間違っていない?
732デフォルトの名無しさん:2009/11/24(火) 15:59:00
XNAだかXMAだか使ってみたけど
明らかに普通にC#でポトペタでゲーム作るほうがいいね。
ラベル貼って
Label1.Textで簡単に文字書いたり
誰に話しかけますか?って書いてボタン三つ配置して
「Aさん」「Bさん」「Cさん」
ってやって入力するほうも楽。

XNAってなんなの。Hello Workって表示するだけですらわけわからんし。
733デフォルトの名無しさん:2009/11/24(火) 16:07:20
>>732
落ち着いてDirectX・XNAの概要だけでも読んでみては?

そのラベルを動かしたりするとWindowsFormではちらついたり色々するんだ

ひとまずそのレベルならWindowsFormでもいいと思うけど
動くものを作ろうと思ったり、キーパッドの入力を拾うとかしてみたくなった時に判ると思う

あと明らかにXBOXのソフトが作れる作れないってのは明確な差かな?
734623:2009/11/24(火) 16:34:51
>>731
http://kissho.xii.jp/1/src/1jyou97502.gif

ちゃんと参照していると思います。

というか、以前、WORD2003とC#をPIAでやるのを作っていたのですが、
そのプログラム、ずっと調子よかったのですが、急に動かなくなってしまったのです。
バグるところは、WORD文書を開くとこです。
try catchでエラーを吐くようにしているのですが、
ダイアログで、
「なんらかの原因でワード文書を開けませんでした。ごめんなさい。」っていうメッセージが
出てきてしまいます。
あぁなつかしいな、そういやそんなことも出力するようにしていたっけな。

だったのですが、それは前の職場での話でして、
今の職場にうつってきた当初も(少なくとも先週末まで)問題なく
利用できていました。

一つ気になっているのは、先週木曜日の時点では、
わたしが利用しているPCでは、をrd2007とをrd2003が共存している状態でした。
をrd2007は使わないので、その木曜日の時点でアンインストしました。
金曜は、もしかしたら、をrd2003を使用しなかったと思います。

なので、をrd2007をアンインストした時点で何らかの変化があったと
いうことしか考えられません。小出しにしてしまい申し訳ございません。

どうしたらよろしいでしょうか。
735623:2009/11/24(火) 16:46:26
とりあえずいま、木曜日に消したをrd2007を入れ直しております。
結果報告します。
736623:2009/11/24(火) 16:56:18
えっと、結果報告です。
とりあえず、わたしが4年前にVC#2005エクスプレスで作ったmysoft(PIA利用)は
(改めてインストールしたをrd2007ではなく、をrd2003が起動するような設定であっても)正常に動くようになりました。

Office2007をアンインストしたときに、まさかそれまで消すのかよ、といったような
ファイル削除があったということでしょうね・・・。

ここにいらっしゃる専門家の先生たちのご意見はいかがですか?
737623:2009/11/24(火) 17:01:01
microsoftのHPに掲載されているワードオートメーションのサンプルプログラム(>>714)も
無事、(をrd2003がデバッグ時に起動するように、予めをrd2003をスタートメニューからたどっていって起動しておいた)
問題なく実行されるようになりました。



ということで、
再現方法(たぶん);
をrd2003とをrd2007を共存状態にインストールしておく。
(このとき、2007を先に、2003を後にインストールする。)
をrd2007を削除する。
>>714を実行する。

解決方法:
をrd2007を入れ直す。

うぅ・・・なんか切ないです・・思いっきり対処療法でかこわるいです・。
738デフォルトの名無しさん:2009/11/24(火) 17:40:29
日本人なのか疑いたくなる文章だな
739623:2009/11/24(火) 17:41:47
>>738
もうすぐ参政権が手に入ります!
740デフォルトの名無しさん:2009/11/24(火) 17:46:12
>>732
XNAはゲーム作ったことある人じゃないとよくわかんないと思うよ。
まあターン制のゲームとかトランプみたいなのだったらWPFで作った方が楽かもね。
741デフォルトの名無しさん:2009/11/24(火) 18:19:16
ゲームには何をもっても代えられない"パフォーマンス"という神様がいるんだ
742デフォルトの名無しさん:2009/11/24(火) 18:34:22
デザイナで、一時的にそのコントロールを非表示にしたいのですが
可能ですか?
743デフォルトの名無しさん:2009/11/24(火) 18:47:03
というか開発環境で複数のOFFICを入れてて動かないとか笑える
基本動くだろうけどマイクロソフトは推奨しないって書いてあるだろうに・・・
きちんと説明書読まずにやるからだろ
プログラムもその勢いで作ってたらいつか大失敗すると思うぞ
744デフォルトの名無しさん:2009/11/24(火) 20:32:09
うるせーバカ
745デフォルトの名無しさん:2009/11/25(水) 02:15:07
メソッドの引数に中小クラスやインターフェースを設定することで
特定の行動を実装できるわけか。

class 自動販売機{
    public ジュース put(Money money){
        return 何かのジュース
    }
}

class ジュース{
}

class コーラ:ジュース
class ファンタ:ジュース

class Money{
}

こんな感じ?日常的に経験してる自動販売機にお金を入れてジュースを取り出す
という文章をそのまま素直にクラス化できるわけか。これがオブジェクト思考の力・・・すごいな
746デフォルトの名無しさん:2009/11/25(水) 02:27:55
その構造だと商品一つしか扱わない自販機になるぞw
客に出す商品を選ばせろw
747デフォルトの名無しさん:2009/11/25(水) 03:50:16
名前空間って含まれてるようなのが多いけど

たとえば
SystemとSystem.DrawingとSystem.Drawing.Design名前空間とか

これってSystem名前空間の中にDrawing名前空間が入っててさらにその中にDesign名前空間があるってこと?
748デフォルトの名無しさん:2009/11/25(水) 03:58:13
んなわけない
749デフォルトの名無しさん:2009/11/25(水) 06:11:12
>>745
その例だと抽象化されているのは引数でなく戻り値なわけだが
750デフォルトの名無しさん:2009/11/25(水) 07:58:15
>>745
オブジェクト指向の話題で荒れたスレがあったらコレ投下させてもらうわww
751デフォルトの名無しさん:2009/11/25(水) 08:32:39
>>747
そう解釈してもいいけど、

using System; ってやった状態で

new Drawing.Hogehoge() ってやってもエラーがでる。
752デフォルトの名無しさん:2009/11/25(水) 09:05:35
>>747
実際にはコンパイル後のアセンブリを見るとSystem名前空間とSystem.Drawing名前空間は全く別個に存在する。
でもC#ではNamespaceA.NamespaceBの中ではNamespaceAの中にあるクラスにクラス名だけでアクセスできる。
なので>>751の動作は単に名前が被る可能性を減らすためだと思われる。
だから,C#に限って言えばSystem名前空間にDrawing名前空間が含まれていると考えるのが正しいんだと思う。
753デフォルトの名無しさん:2009/11/25(水) 11:33:26
CLR的には名前空間というものが存在してる訳じゃなくて、
型には長い名前がつけられるというだけ。
まあ概念としては名前空間があると言えるけども。
754デフォルトの名無しさん:2009/11/25(水) 17:53:57
CLRにロードされたときの表現は知らんが
少なくともIL上は名前空間は存在する
755デフォルトの名無しさん:2009/11/25(水) 21:37:29
>>732
最近は「Hello Work」なのか。不景気だな。
756デフォルトの名無しさん:2009/11/25(水) 21:48:02
>>732,755
気付かんかったww
Hello Work 地味に時代を反映してていいな。
757デフォルトの名無しさん:2009/11/26(木) 01:16:04
double hoge = 1234.5678;
String.Format("hoge = {0}", hoge);

みたいな感じのを

+1234.5678
-1234.5678

とプラスの符号も表示させるにはどうすればいいの?
758デフォルトの名無しさん:2009/11/26(木) 01:20:54
カスタム数値書式指定文字列
でセクション区切り記号を使う
759デフォルトの名無しさん:2009/11/26(木) 07:48:14
VB.NETスレに書き込んで指摘をもらいまして、こちらで質問させてください。

WindowsサービスにIPCサーバーさせてるんですが、IPCクライアントから接続すると、 「IPCポートに接続できません。アクセスが拒否されました。」と出ます。
TCPの時は問題なかったのですが、IPCだとACL設定がいるようで、その方法がわか りません。
誰にでもアクセス許可させたいんですが、どのようにACL設定したらよいのでしょうか。
下記のようにしてダメでした。
SecurityIdentifier allUserSid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
DiscretionaryAcl dacl = new DiscretionaryAcl(false, false, 1);
dacl.AddAccess(AccessControlType.Allow, allUserSid, -1, InheritanceFlags.None, PropagationFlags.None);
CommonSecurityDescriptor securityDescriptor = new CommonSecurityDescriptor(
false, false,
ControlFlags.GroupDefaulted | ControlFlags.OwnerDefaulted | ControlFlags.DiscretionaryAclPresent,
null, null, null, dacl);
App.configに何か書くサイトもありましたが、Expressで空のプロジェクトから自前でW indowsサービスにしたので、App.configがなく、自前で下記を追加したら「'application'
のスキーマ情報が見つかりませんでした。」と怒られました。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown mode="SingleCall" type="Server.MyRemoteObject, Server" objectUri="MyRemoteObject.rem" />
</service>
<channels>
<channel ref="ipc" portName="MyIpcChannel" authorizedGroup="Users"/>
</channels>
</application>
</system.runtime.remoting>
</configuration>
どうしたらよいのか教えてください...
760デフォルトの名無しさん:2009/11/26(木) 09:02:15
>>757
String.Formatでは無理

hoge.ToStringつかえ
761デフォルトの名無しさん:2009/11/26(木) 09:06:47
>>760
String.FormatはToStringを呼び出してるだけなんだが
762デフォルトの名無しさん:2009/11/26(木) 09:21:43
DoDragDrop()の返り値について質問させてください。

コントロールAからBへのドラッグ&ドロップが目的で、
以下のように実装しました。

コントロールAで、
・DoDragDrop(xxxx, DragDropEffects.All)を実行 …(1)
コントロールBの、
・DragOverイベントでDragDropEffectsをDragDropEffects.Moveに変更
・DragDropイベントで処理を行う …(2)

(2)の処理内容によって、(1)の返り値が変化してしまいます。
・処理を行わない → 返り値:DragDropEffects.Move
・処理を行う → 返り値:DragDropEffects.All

第2引数に指定した「DragDropEffects.All」が返されることが
あるのですが、そうなる条件がわかりません。

DoDragDropの返り値が変更されている箇所やタイミングを特定する
方法はないでしょうか?
763デフォルトの名無しさん:2009/11/26(木) 09:24:58
+−表示用のプレースホルダはなかったかな〜

とりあえずこれで
{0:+#0.0000;-#0.0000}
764デフォルトの名無しさん:2009/11/26(木) 09:40:30
>>759
>「'application' のスキーマ情報が見つかりませんでした。」
は無視してよい。
765デフォルトの名無しさん:2009/11/26(木) 11:48:25
>>762
最後に設定したDragEventArgs.Effectの値が返るだけのはずだが
処理って何よ

> DoDragDropの返り値が変更されている箇所やタイミングを特定する
> 方法はないでしょうか?
ないな
766762:2009/11/26(木) 17:35:48
大変申し訳ありません。私の実装がダメダメでした。
>>762の質問は取り消させてください。

>>765さんに言われて処理を見直したところ、
Dropのイベントハンドラの関数内で、例外が発生していました。
(2)の処理が最後まで実行されてなかった為に762の現象に
なってしまっていました。

お時間とらせてしまいすいません。
767デフォルトの名無しさん:2009/11/27(金) 07:42:27
hoge
768デフォルトの名無しさん:2009/11/27(金) 16:10:22
static な Abs関数を作成して使えよwwwww
retrun math.abs みたいに記述して
お前のハイなセンスにジャストなミートすると思うんだよ
769デフォルトの名無しさん:2009/11/27(金) 16:16:39
>>757

C系の書式なら一文字追加でできる
770デフォルトの名無しさん:2009/11/27(金) 16:36:34
藪からスティック
771デフォルトの名無しさん:2009/11/28(土) 12:27:20
次のようなタイプ付き関数で、座標[nx,ny]の時だけ1にするというシンプルな関数を考えると
1を代入する部分で、int型を型T1に暗黙変換できませんとでます。
これはどうしたら解消できるのでしょうか?

public void setInitialValue<T1>(int nx, int ny, T1[] pict )
{
int j = 0;
for (int jy = 0; jy < ny; jy++)
{
for (int jx = 0; jx < nx; jx++)
{
if( jx == nx && jy == ny ) img[j++] = 1;
}
}
}
772デフォルトの名無しさん:2009/11/28(土) 12:30:02
http://msdn.microsoft.com/ja-jp/library/3707x96z%28VS.80%29.aspx

ここ見ても
/cscみたいにコマンドプロンプトでしかdllの作成方法書いてないんだけど
Visual Studioでdllを作成するにはどうやるの?
773デフォルトの名無しさん:2009/11/28(土) 12:35:36
>>771
そりゃT1にintを代入できるなんてそのコードからじゃまったく伝わらないから
Func<int, T1>な第4引数でも用意すれば?

>>772
/target:libraryへのリンクを踏んでみるんだ
774771:2009/11/28(土) 12:40:04
>>773
そこを何か技があるのかなーってオモテ。
例えば

img[j++] = (T1)1;

みたいなことが出来れば簡単じゃないか。
775デフォルトの名無しさん:2009/11/28(土) 12:43:30
じゃないかとか言われても知らんがな
776デフォルトの名無しさん:2009/11/28(土) 12:46:43
>>771
・img[j++]ってどこから沸いて出てきたの?
・何を目的にGenericを導入したのか説明して。
T1の具体的な型はこの関数の使い手が指定するワケだけど、例えば
setInitialValue<DateTime>として指定した場合、(pictがimgのタイポだと
仮定して)imgの型はDateTime[]になる。つまり「img[n]に1を代入する」という
考えそのものが破綻する。
何でも入る箱が欲しいならobject[]を使うべきだし、フラグを立てるのが
目的なら別の手段を考えるべき。
777771:2009/11/28(土) 12:53:21
>>776
imgはpictの間違いでした。
pictは使い手によってintであったり、float、doubleでもある。
つまり数値限定である。
778デフォルトの名無しさん:2009/11/28(土) 12:55:10
であるといわれてもコンパイラさんは知らんこと
779771:2009/11/28(土) 12:56:59
そこをなんとか技を使ってお見逃しを(´・ω・`)
780デフォルトの名無しさん:2009/11/28(土) 12:57:07
ジェネリックでは無理。object[]を使う必要がある。
そして普通はそんなことはしない。
共用体(構造体)を作って演算子オーバーロードという手もあるけど君にはまだ難しいと思う。
781デフォルトの名無しさん:2009/11/28(土) 12:57:41
>>777
public void setInitialValue<T1>(int nx, int ny, T1[] pict, T1 one)
782デフォルトの名無しさん:2009/11/28(土) 13:03:24
dynamic one = 1;
img[j++] = (T1)one;
783デフォルトの名無しさん:2009/11/28(土) 13:10:56
>777
無理。
Genericの仕様上T1を「何らかの数値」に限定する手段が無い。
そして、型が未定の変数に対して1を設定する手段も無い。

[対策案]
・この関数でGenericを使うのは止めて、素直にdoubleやdecimalで組む。
・>781
・>782(未来の姿)
784デフォルトの名無しさん:2009/11/28(土) 13:11:34
img[j++] = (T1)Convert.ChangeType(1, typeof(T1));
785デフォルトの名無しさん:2009/11/28(土) 13:21:59
お、>784いいですね。
ただ、>782もそうだけど、T1に数値以外のデータ型も指定できてしまい、
その際は基本的に実行時例外が発生してしまうので設計を見直した方が
良いとは思う。
786デフォルトの名無しさん:2009/11/28(土) 13:23:21
jxもjyも、nxとnyに到達しないんじゃないの?
787デフォルトの名無しさん:2009/11/28(土) 13:26:09
ほんとだw
788デフォルトの名無しさん:2009/11/28(土) 14:26:44
where T : Numeric みたいなのが出来たらいいのにね。
前にここか初心者スレで出てた加減算が出来ねーってのでも思ったけど。
789デフォルトの名無しさん:2009/11/28(土) 14:31:54
それにはまず、全ての数値型がNumericを継承したオブジェクトでなきゃならんのだけどな
790デフォルトの名無しさん:2009/11/28(土) 14:42:38
Int32 とかが IComparable 実装してるように
INumeric みたいなのも実装してくれてりゃいいだけじゃん?
791デフォルトの名無しさん:2009/11/28(土) 16:51:22
数値同士の演算結果がどうなるかは言語仕様によって違うから
実行時に全てを解決するジェネリックでは無理だ
Int32などが演算子オーバーロードを持たないのもそれが理由
792デフォルトの名無しさん:2009/11/28(土) 17:04:19
ちなみにdynamicはどうかというと、たとえば
「floatとintの掛け算はこういう動作、足し算はこう、floatはdoubleに変換可能・・・」
のような実行時のルールがMicrosoft.CSharp.dllで定義されてる。
同様にVBならVB、PythonならPythonのルールもあって、それぞれの言語仕様に合った動作をするようになってる。
793デフォルトの名無しさん:2009/11/28(土) 20:05:57
いや統一しろよ
794デフォルトの名無しさん:2009/11/28(土) 20:46:06
dynamicは本気で気持ちわるい仕様だと思う・・・
795デフォルトの名無しさん:2009/11/28(土) 20:48:44
DLRとかCOMとのinterop目当てだと思えば、割と悪くない文法だけどもね。
796デフォルトの名無しさん:2009/11/28(土) 21:18:14
そのうち何でもかんでもdynamicにするような奴も増えるにちがいない
797デフォルトの名無しさん:2009/11/28(土) 21:19:16
それ俺だ
798デフォルトの名無しさん:2009/11/28(土) 21:21:43
dynamicとvarで充分じゃない?
いや真面目な話。
799デフォルトの名無しさん:2009/11/28(土) 21:28:43
>>796
それはないんじゃないかな。
C# はインテリセンス前提なことを考えると、補完候補出てこない dynamic は使いにくいだけ。

>>798
普通の用途ではね。
だから、DLR との連携用、あるいは、JSON とか XML とかの読み書き用。
800デフォルトの名無しさん:2009/11/28(土) 21:41:52
まあまともにコーディングしてたら
引数を dynamic にするなんてことはやらないだろうしなぁ。
801デフォルトの名無しさん:2009/11/28(土) 21:52:25
したとしてもなぁ・・・・

余りに自由すぎる動きは逆に後でわかりづらくなることもある気がするし・・・
改修とかのときに結局何が起きるかわからなくて怖い代物は回避したくなるしさ
802デフォルトの名無しさん:2009/11/28(土) 21:53:12
ShDocVw で本来は IHTMLDocument とかのオブジェクトが
.NET 4.0 の tlbimp だと object から dynamic になっていたのは感動した
803デフォルトの名無しさん:2009/11/28(土) 22:04:26
dynamic使ったとしてもだ、どのみち期待するメソッドがなかった場合の異常系の処理
かかなきゃいけなくなるから長いスパンでの使用はむずかしいんじゃね?

XMLの要素アクセスが楽になるやつは結構いいと思ったけど。
804デフォルトの名無しさん:2009/11/28(土) 22:07:13
>>802
インテリセンスが欲しいからさっさとキャストすると思うんだがな……
805デフォルトの名無しさん:2009/11/28(土) 22:14:59
>>804
mshtml の dll がでかすぎるから…
と思ったが .NET 4.0 だとラッパライブラリで使っているクラスとメンバだけを
exe に埋め込んでくれちゃうんだよね
806デフォルトの名無しさん:2009/11/28(土) 22:20:31
.NET 4.0 だと
IWebBrowser2 ie = new InternetExplorerClass();
ってコードがコンパイルできなくて
IWebBrowser2 ie = new IWebBrowser2();
のように interface を new するとコンパイルできる。
Reflector で見てみると Activator.CreateInstance で
InternetExplorerClass のインスタンスを作るコードに
置き換わっているみたいだけど、
C# の言語的に interface を new するのってOKなのかな?
807デフォルトの名無しさん:2009/11/28(土) 22:22:30
なんじゃそりゃ・・・
808デフォルトの名無しさん:2009/11/28(土) 22:40:23
前々からCoClass属性の付いたinterfaceに対してはinterfaceをnewできたよ?
809デフォルトの名無しさん:2009/11/29(日) 08:52:10
言語的にどうよって話じゃない?

810デフォルトの名無しさん:2009/11/29(日) 09:05:01
RCWの仕様だな
811デフォルトの名無しさん:2009/11/29(日) 10:51:05
>>793

元の言語と互換性なくなるだろ
812デフォルトの名無しさん:2009/11/29(日) 12:00:21
少なくともECMAのC#言語仕様には記述されてない動作だな
MSの独自拡張というなら確かにそうだけどどうせMSが仕様だろ
813デフォルトの名無しさん:2009/11/29(日) 13:12:52
普通のインターフェースでNew書いてフックする方法はないものか?
814デフォルトの名無しさん:2009/11/29(日) 13:38:01
csc.exeの代替を作ればいい
815デフォルトの名無しさん:2009/11/30(月) 10:35:47
配列から派生するってできませんか?
816デフォルトの名無しさん:2009/11/30(月) 10:36:37
おっとスレ間違えた
あっちで聞きます
817デフォルトの名無しさん:2009/11/30(月) 13:59:38
C#でバイナリなどのファイルをシーケンシャルに読み出しながら何らかの処理を行う場合、
かつ解析速度はディスクからの読み取りよりは速いがそれほど余裕はない場合、
出来るだけ最速で処理するにはどんな風にするのがいい?
818デフォルトの名無しさん:2009/11/30(月) 14:06:17
普通に読みとって解析すりゃいいんじゃないの?
読みとりをバッファリングするってのが常套手段ではあるけど。
819デフォルトの名無しさん:2009/11/30(月) 14:12:28
スレッドだな
820デフォルトの名無しさん:2009/11/30(月) 14:14:18
マルチスレッドだな
821デフォルトの名無しさん:2009/11/30(月) 14:16:11
例えばそのバッファサイズをどの程度にするかとか、
読み取りと解析を別スレッドにするべきかそれは意味がないかとか、
結局OSの先読みスレッドとの連携になるので、
その辺との絡みでどんなやり方が最も効率よく処理できるのか。

下手をするとディスク読み取りに間が出来てパフォーマンスが大幅に落ちてしまうから。
822デフォルトの名無しさん:2009/11/30(月) 14:17:52
さらにマルチコアとそうでない場合でアプローチは全く変わるのか。
823デフォルトの名無しさん:2009/11/30(月) 14:18:53
俺ならパフォーマンスなど気にしない
動けばよい
824デフォルトの名無しさん:2009/11/30(月) 14:33:50
実際に問題になるほど遅かったらどうするの?
まあそうなってから考えるのがパフォーマンスの基本なんだけどな
825デフォルトの名無しさん:2009/11/30(月) 14:42:24
メソッドの先頭で変数宣言するのがカッコいいとか思ってた時期が俺にもありました
826デフォルトの名無しさん:2009/11/30(月) 18:18:07
ぶっちゃけプロトタイプつくって測定してみるのがはやいんじゃないのかねぇ
解析処理と読み込み処理の中身によって変るだろうし
それだけの情報じゃ一般論の展開も難しい気がする
827デフォルトの名無しさん:2009/11/30(月) 19:15:24
ファイル処理はAPIのオーバーヘッドが大きいから
パフォーマンス重視なら自前で巨大なバッファを取って
読み書きの回数を減らすのがセオリーだってばっちゃが
828デフォルトの名無しさん:2009/11/30(月) 19:29:00
それがそもそも誤解だよ
いやもちろん完全に間違いではないんだけどな
829デフォルトの名無しさん:2009/11/30(月) 19:50:28
>>817
スループット重視なら妙な工夫はせずにベタにやるのが一番。
スレッドとか書いてる奴の意見は無視していいと思う。
830デフォルトの名無しさん:2009/11/30(月) 20:16:49
DBからSqlAdpterを使用してSchemaも取得しDataSetに格納→
DataSetをTableに格納し、DataGridViewで表示→
レコードの修正、削除、更新→
確定ボタン(SqlAdpter.Update()?)押下→
修正データをDBに反映(sqlReaderを使う?)→
修正したレコード数をMsgBoxに表示

の一連の流れを知りたいのですが何か参考になるサイトか
よろしければサンプルコードを教えて頂けませんか?

ググって以下のサイトなどを参考にしているのですが何が何やらさっぱりで困ってます。

http://msdn.microsoft.com/ja-jp/library/haa3afyz(VS.80).aspx

http://support.microsoft.com/kb/311274/ja

http://d.hatena.ne.jp/twisted0517/20090406/1239001472
831デフォルトの名無しさん:2009/11/30(月) 20:46:42
DataSet 作って DataTable 作って
SqlDataAdapter 作って SqlCommandBuilder 作って
SqlDataAdapter の Fill でデータ読み込んで
DataGridView の DataSource に DataTable 突っ込んで
修正確定するとき SqlDataAdapter の Update 呼んで終わり。

…ん?DataSet 要るか?
832デフォルトの名無しさん:2009/11/30(月) 21:08:05
Fillで読み込む先がDataSetでは?
833デフォルトの名無しさん:2009/11/30(月) 21:36:46
>>831
>>832

回答ありがとうございます

>DataSet作ってDataTable作って
>SqlDataAdapter作ってSqlCommandBuilder作って
>SqlDataAdapterのFillでデータ読み込んで
>DataGridViewのDataSourceにDataTable突っ込んで
>修正確定するときSqlDataAdapterのUpdate呼んで終わり。
上記、大変参考になりました

>Fillで読み込む先がDataSetでは?
DBManagerからDataSetを受け取り、Tableに格納してDataGridViewのDataSourceに格納しています


あと、修正したレコード数をどうやって算出すればいいでしょうか?
元のDBと修正後のDBでなんらかの比較処理か何か必要とは思うのですが・・・

メッセージボックスで
追加 2レコード
削除 1レコード
修正 2レコード
計   5レコード
のようなメッセージを出したいのですが

834デフォルトの名無しさん:2009/11/30(月) 21:47:51
大方のケースではDataTableにFillで事足りるんだよなぁ。
正直、DataSetの存在意義がよくわからん。
ADO.NETやデータバインド周りの仕様を無駄に汚してるだけのような気がしてならない。
835デフォルトの名無しさん:2009/11/30(月) 22:00:20
プログラミング初心者の学生です。質問させてください。
開発環境はC#(3.5)+VS2008です。

アルバイトでPowerPointオートメーション(?)を用いる、
ClickOnceでIEから呼べるWindowsフォームアプリケーションを作っています。
PowerPointオートメーション(?)を使うために外部参照として
Microsoft PowerPoint [Version] Object Libraryを設定すれば
良いというのは理解できたのですが、この[Version]の部分が、
ターゲットとなるクライアントPCにインストールされている
PowerPointのバージョンごとに異なっています。
(具体的にはXP,2003,2007の3バージョンを考慮する必要があります)
Office 2007 Professionalがインストールされている開発環境で
[Version]=12.0として参照を追加してビルド・発行したアセンブリ(?)では、
下位のバージョンがインストールされている環境で実行することができず、
要求を満たすことができません。

そのため、実行時にターゲットにインストールされているPowerPointの
バージョンを取得し、動的に参照を追加するような設計にはできないか、と
考えています。
以上のような要求は.NETアプリケーションでは作成可能でしょうか。
よろしくお願いたします。

(メンテナンス不能なActive Xコントロールの置き換えです。助けてください)
836デフォルトの名無しさん:2009/11/30(月) 22:15:23
できません。VB で CreateObject しましょう。
837デフォルトの名無しさん:2009/11/30(月) 22:48:29
>>836
VBでできてC#にできない事は原則無い。
遅延バインディングはちょっと面倒臭いけどな。
838デフォルトの名無しさん:2009/11/30(月) 22:50:08
リフレクションでレイトバインドするくらいなら、C# 4.0 を待つか、VB を使うよ。俺は。
839デフォルトの名無しさん:2009/11/30(月) 22:53:33
リフレクションがどんなに面倒でもVBだけは生理的に受け付けない。
というのは俺だけじゃないはず。C#4.0早く来い。
840デフォルトの名無しさん:2009/11/30(月) 22:53:46
wshでやるのがいいって結論に達した
841デフォルトの名無しさん:2009/11/30(月) 22:56:01
まとめると、リフレクション使うか他言語使えってことか
842デフォルトの名無しさん:2009/11/30(月) 22:56:08
それもありだね。エラー処理とかが面倒だけど。
843デフォルトの名無しさん:2009/11/30(月) 22:57:57
あとは、ClickOnce の差分ダウンロード機能を使って、それぞれのバージョンに対応した
アセンブリをダウンロードする、なんてのもありかな。
844デフォルトの名無しさん:2009/11/30(月) 22:58:08
>>833
DataGridView上から諸々変更されたデータ行の更新状況を確認するならこんな感じで

ttp://www.yel.m-net.ne.jp/~oss/Tips/ADO/Tips_03001.htm

(ちょっと挙げたサンプルの例がよくない?ゴメンよw )
845デフォルトの名無しさん:2009/11/30(月) 23:04:21
>>835
>[Version]=12.0として参照を追加してビルド・発行したアセンブリ(?)では、
>下位のバージョンがインストールされている環境で実行することができず、
エクセルだと一部のメソッド以外バージョン違ってても動くんだけど、
パワポは事情が違うのかね。

いや全然アドバイスになってなくて申し訳ないw
846デフォルトの名無しさん:2009/12/01(火) 08:46:41
>>832
DataSet の中の DataTable。

>>834
>正直、DataSetの存在意義がよくわからん。
DataRelation 使わないなら、単なる DataTable のコレクションでもよかばい。
847デフォルトの名無しさん:2009/12/01(火) 10:46:15
>>834
複数のテーブルをまとめたい時に使うのがデータセットだと思っとけばいい
テーブルが1つしかないとセットの意味が薄れる
848デフォルトの名無しさん:2009/12/01(火) 11:53:55
質問
値型のNullable型への値やnullのセットは
アトミックにならない?
もっと言うと、同期化せずに値をセットした場合、読みだし側で不整合が発生する可能性はある?
もちろん対象の値型はアトミックなサイズのもの。

テスト&ゲットの機能がないからどっちにしてもだめか…

結局bool型変数などを別に持たんとだめかな。
849デフォルトの名無しさん:2009/12/01(火) 12:05:47
>>845
ClickOnceで発行してテスト用のクライアントPCで実行しようとしたのですが、
アセンブリがGACにありませぬ警告が出て起動すらできませんでした。
必須コンポーネントから除外する設定をやってもどうも上手く動かんしorz
850デフォルトの名無しさん:2009/12/01(火) 13:13:49
プラグイン的な感覚でやれば?

各バージョン用のDLLに対しインターフェイスだけ共通化しといて参照するDLLはレジストリなり参照して切り替える
呼び出しは全てインターフェイス経由

とかどうだろ?
代わりに各バージョン用のDLL全部クライアントに入れることにはなるけど・・・
851デフォルトの名無しさん:2009/12/01(火) 13:48:48
>>848
かわりにStrongBox<T>でも使えば
852デフォルトの名無しさん:2009/12/01(火) 19:33:41
>>849
それって単にIDEが自動生成するラッパークラスが入ったアセンブリ(Interop.xxx.dllみたいな感じの
ファイル名のあれ)をexeと一緒に配布してないだけじゃないの?
853デフォルトの名無しさん:2009/12/01(火) 22:04:48
1:nのデータ構造が存在するなら、テーブル+リレーションなんてまどろっこしい
方法じゃなく、自前でエンティティオブジェクト作った方が取り扱いが楽で融通も
効くんじゃないかと思ってしまう。
レコード単位のステータス管理を自動でしてくれるとかの利点は解るんだけど。
シンプルなマスタメンテアプリとかだったら楽チンで良いのかも知れん。
854デフォルトの名無しさん:2009/12/02(水) 11:57:29
>>852
んー、ちょっと設定見直してみます。。。

えっと、質問なんですが
レイトバインディングを使ってOfficeオートメーションを
利用する場合に、
MsoTristate.msoFalseとか
PpSaveAsFileType.ppSaveAsHTML
とかの値を使うためにはどうすればいいんでしょうか。。。
855デフォルトの名無しさん:2009/12/02(水) 12:06:40
自分で定義する
856デフォルトの名無しさん:2009/12/04(金) 19:06:30
>>855
それでいくことにしました。

質問です。
ClickOnceで発行したアプリケーションがインストールされている状況で、
ActiveXのようにページ遷移と同時に起動するようにすることはできますか?
(「<a href="...">ここをを押して起動</a>」のような二度手間を避けたい。)
857デフォルトの名無しさん:2009/12/04(金) 20:04:56
>>856
スタートメニューに登録するのはダメなの?
858デフォルトの名無しさん:2009/12/04(金) 20:28:36
>>857
Webシステムの一部として利用しているActiveXの置き換えなので。。。

あと、ClickOnceを起動したIEのウインドウを操作できる必要がありますorz
859デフォルトの名無しさん:2009/12/04(金) 20:41:46
つーか、ActiveX で作れよ。
860デフォルトの名無しさん:2009/12/04(金) 20:48:07
>>858
ClickOnce発行時に生成されるhtmlファイルに
javascriptを仕込めば出来るんじゃないかなと妄想。
861デフォルトの名無しさん:2009/12/05(土) 00:25:04
>>859
今後の保守性を考えてC#で作りたいのです。
今のActiveXコンポーネントはATLで書かれてて、
x64版Windowsじゃなぜか動かない。
外注製らしくメンテナンスできる人がいない。(ドキュメントも無い)

C#じゃないと困る、のです。
862デフォルトの名無しさん:2009/12/05(土) 01:16:09
メンテナンスできる人がいないようなモジュールを使っときなが保守性とか言われてもなあ…
説得力が皆無ですよ
863デフォルトの名無しさん:2009/12/05(土) 01:21:39
モノによるけど、C# でも ActiveX コンポーネントが作れるだろ。
864デフォルトの名無しさん:2009/12/05(土) 02:31:51
メンテナンスできる人が居ないせいで困った事になった(仕様変更に対応できないとか?)ので
作り直す羽目になったって話しだろ。

痛い目にあってる分だけ教訓としての説得力があると思うけどw
865デフォルトの名無しさん:2009/12/05(土) 06:53:45
学生バイトらしいから
C#でやれと言われたか自分からC#でやると言ってしまったかして
C#じゃないと困るんだろう

あとはまあC++使えないとか
866デフォルトの名無しさん:2009/12/05(土) 08:08:01
作るものに対して言語(開発ツール)を選ぶのがプロ
C#しかできないからとC#でできるものを作るなんてのは
サンデープログラマのみ許される。
867デフォルトの名無しさん:2009/12/05(土) 08:14:48
↑イミフ
868デフォルトの名無しさん:2009/12/05(土) 08:19:56
頭悪
869デフォルトの名無しさん:2009/12/05(土) 08:24:31
そうっすか。じゃあプロ(笑)さんいろんな言語でがんばってくださいね^^;
870デフォルトの名無しさん:2009/12/05(土) 08:27:48
当たり前だろ。必要ならいくらでも勉強するのがプロ。
871デフォルトの名無しさん:2009/12/05(土) 08:38:47
>869
職業プログラマならニーズに合わせた多言語習得なんか当たり前だろ。
ユーザから見れば使用言語なんぞどうでもいいんだし。
考え方が甘っちょろいな。学生さんか?
872デフォルトの名無しさん:2009/12/05(土) 08:41:57
>>871
はいはい。がんばってね。
873デフォルトの名無しさん:2009/12/05(土) 08:53:06
馬鹿は反省しないから馬鹿っつうことで放置推奨
874デフォルトの名無しさん:2009/12/05(土) 08:54:02
>>872
おまえもがんばれよ。マジで。
875デフォルトの名無しさん:2009/12/05(土) 08:57:37
>>874
何をがんばれというのかわからないが、とにかくがんばるよw
応援ありがとうw
876デフォルトの名無しさん:2009/12/05(土) 08:58:26
本当に困ったときは別のHPで質問するのが一番。
昔ここで質問したけど、嘘教えられたからな。何人も答えておいて誰も間違いに気づかず、知ったかぶりで進行していった。
877デフォルトの名無しさん:2009/12/05(土) 08:59:37
2ちゃんなんてニートの集まりだな
878デフォルトの名無しさん:2009/12/05(土) 09:02:23
>>876
単に質問がくだらなすぎて初心者にウソをおしえて遊んでただけだろ
879デフォルトの名無しさん:2009/12/05(土) 09:10:35
>>878
たぶん違うな。いま答えをみる限り、半分は無知が頑張った。もう半分は説明不足。
その半分っていうのは、回答者の意見が曖昧だから正解とも間違いとも取れる意見。
逆に別のHPの回答者はレベルが違うよ。まぁ2chと比べちゃいけないけど。
880デフォルトの名無しさん:2009/12/05(土) 09:12:58
そもそも本当に困ったときに頼るものが2chしかないって時点で終わってるな。
誰か信頼できるやついねーのかよ。
881デフォルトの名無しさん:2009/12/05(土) 09:15:50
本当に困っていないから2chで質問したんだろ?何いってんの。
882デフォルトの名無しさん:2009/12/05(土) 09:19:43
ちょっと困ってるけど、別にたいした問題でもないときに利用するんだろう
883デフォルトの名無しさん:2009/12/05(土) 09:20:45
>879
回答者はボランティアなんだから、「詳細な説明が出ないから」と不満を垂れるのは
お門違いだと思う。ヒントが貰えただけ有難いだろ。
よく知らないで回答しちゃう人が居るのはしょうがない。いろんなレベルの人が
見てるんだから。取捨選択しろよ。
884デフォルトの名無しさん:2009/12/05(土) 09:25:48
>>879
2ch含めてネット掲示板に過度の期待を寄せるのは止めた方がいい。
回答者は正確な解答を返す義理がそもそも無いんだから。
嘘を教えられた、不正確だったと憤っても、そもそもそんな訳のわからん相手に
頼った質問者が悪い。
885デフォルトの名無しさん:2009/12/05(土) 09:29:07
ニーズにあわせた多言語習得はあたりまえといえども
自分の中で枯れた言語で出来ないか検討するのもあたりまえ
886デフォルトの名無しさん:2009/12/05(土) 09:34:30
自分の中で枯れたものより対象を作成するのに一番枯れたもの使うのがプロ
887デフォルトの名無しさん:2009/12/05(土) 09:38:21
ここはMSC#限定ですか?monoC#もOK?
888デフォルトの名無しさん:2009/12/05(土) 09:42:17
質問は自由よ ただし答えられる人がいるかどうかは運次第
MONOスレも建ってるけど見事に過疎ってんね
889デフォルトの名無しさん:2009/12/05(土) 09:56:55
グローバリゼーション
890デフォルトの名無しさん:2009/12/05(土) 11:46:25
>>862,864
ActiveXコンポーネントは
自分が作ったわけじゃないのですが(;´Д`)
ActiveXに限らずこの会社のコードはひど・・
>>863
この会社、ASPだけじゃなくサーバー納入もやってるので
ActiveXはこの際切りたいっていう要望もあるんですよね。。。
ただ、ClickOnceで現状と同程度のユーザビリティを満たせない場合は、
C#でActiveXコントロールを作る方向も考えます。
>>864
SEさんからは「C#で作って」って言われてます。
(この会社の別部署ではASP.NETのソリューションを
 扱ってるのでC#プログラマならたくさん居るから。)
自分は私用ではC++を使ってますが、ATLを覚えるのは時間かかりますし、
自分がやめたらまたメンテできない状態になるので・・・×

>>866
プログラマにも単価ってものがありまして。。。
優秀な人を雇うのにはそれなりにお金がかかるみたいです。
そこらへんも考えて「そこそこのコーダー」でも容易に保守できる
ってのが求められてるんです。

>>876
匿名掲示板以外だと書き込むの恥ずかしいんです。。。
891デフォルトの名無しさん:2009/12/05(土) 11:55:31
恥ずかしいのか!視ね
892デフォルトの名無しさん:2009/12/05(土) 11:58:59
>>890
「そこそこのコーダー」

まったくそのとおりだよな。
そこそこの能力はあるが、安く働いてくれる人
高い能力があるが、安く働いてくれない人


プロならいろんな言語使えて当然!とか全くイミフだ。
犬小屋作成者に向かって、ビルの建築方法しらないやつはプロじゃねぇ!つってるようなもん。バカすぎるw
893デフォルトの名無しさん:2009/12/05(土) 12:02:40
ノコギリとトンカチしか入ってない道具箱はしょぼいって事だ
犬小屋程度しか作れない奴はプロじゃないし
894デフォルトの名無しさん:2009/12/05(土) 12:03:34
プロじゃないよ?プロになる必要性がないひとに向かって
プロなら○○は当然!とか言うのはイミフ。
895デフォルトの名無しさん:2009/12/05(土) 12:06:30
そもそも犬小屋しか作れないなら、家の建築は断れよ
896デフォルトの名無しさん:2009/12/05(土) 12:08:11
スレ違いの話を延々と繰り返すプロ(笑)

ム板でプロ云々と語る人には馬鹿しか居ないと思う。
マ板に行け馬鹿。
897デフォルトの名無しさん:2009/12/05(土) 12:08:18
金貰って仕事してるのに「プロじゃないよ?」とかどんだけ
898デフォルトの名無しさん:2009/12/05(土) 12:08:49
今、読み返したら学生バイトか
犬小屋程度でもしょうがないな
899デフォルトの名無しさん:2009/12/05(土) 12:09:33
ここのプロ(笑)さんたちはたくさんの言語使ってがんばってね。
やたらプロ(笑)にこだわる人って世の中にはプロ(笑)じゃなくても安く働いてくれる人を募集してることも
多いってことを知らないんだろうなぁ。
900デフォルトの名無しさん:2009/12/05(土) 12:10:39
そういう所と一緒にしないでもらいたい
901デフォルトの名無しさん:2009/12/05(土) 12:11:42
安いやつじゃ結局何もつくれないじゃん
現にそこの学生のバイトくん
902デフォルトの名無しさん:2009/12/05(土) 12:13:47
ActiveXのメンテができるやつがひとりしかいない会社って。。。
903デフォルトの名無しさん:2009/12/05(土) 12:13:50
低い所に目線がある奴は低い所しか見えないわけだ
904デフォルトの名無しさん:2009/12/05(土) 12:15:22
犬小屋を作ってる人に向かって
「ビルを作れないやつはプロじゃない」とイミフなことを叫ぶ連中が多いのがこのスレ。
905デフォルトの名無しさん:2009/12/05(土) 12:16:47
作るのは犬小屋だったっけ?
906デフォルトの名無しさん:2009/12/05(土) 12:18:38
要件を満たすにはビルを作らないといけないのに
犬小屋をつくる力しかないのにビルを作りたいっていってるから
ビルを作るには勉強しよねって言ってるんだろ
907デフォルトの名無しさん:2009/12/05(土) 12:23:00
>>906
ActivXだけなんで
明らかにビルを作る必要はないですが。
C#しか知らないやつは犬小屋作成者な。
いろんな言語を知ってるやつがビル建築家な。

C#だとActiveXが不可能ならともかくできるのに他言語を勉強させる意味がない
908デフォルトの名無しさん:2009/12/05(土) 12:24:07
発言ぶれまくりwww
909デフォルトの名無しさん:2009/12/05(土) 12:24:28
>>901
いや一応、現在試作してるClickOnceアプリケーションでも
既存のActiveXコンポーネントと(ユーザーから見ると)
同じような動きをするように色々と工夫してるんですがあ。。。

ただ、サーバーサイドスクリプトが現状より複雑になるのと、
SHDocVwを使ってIEのウインドウを弄くるので、
どんな環境でもちゃんと動いてくれるか不安なのが問題点なのですが。
910デフォルトの名無しさん:2009/12/05(土) 12:24:56
まあしかしソフトは力業で作るってことが出来ちゃうのが怖いところ。
911デフォルトの名無しさん:2009/12/05(土) 12:26:06
どう考えてもVC++でActiveXコントロールを作るのが適している
場面なのにC#でごまかそうとするのはプロとは呼べない
912デフォルトの名無しさん:2009/12/05(土) 12:27:38
ビル建てるのは金がかかるから、でかい犬小屋を建てるつもりなんですよね。
迷惑するのはクライアントなんですが。
913デフォルトの名無しさん:2009/12/05(土) 12:28:05
プログラマーがプロじゃなかったらグラマーになっちまうだろうが!
914デフォルトの名無しさん:2009/12/05(土) 12:30:11
つーか、そのSEがバカなんだよな
何が最適かも見極めることができない。
だから下のレベルがいつまでも低いまま。
単価は安いほうがいいだろうがモノには限度ってものがある。
915デフォルトの名無しさん:2009/12/05(土) 12:34:03
こんなゴミプログラマが崇高なC#を使っているかと思うと反吐が出るな
916デフォルトの名無しさん:2009/12/05(土) 12:35:08
とりあえず>899や>904の頭が悪い事はよくわかった。
浅薄な考えでいい加減な物を作ることが、結果としてコストダウンを塗り潰すほど
大きな損失になる事を理解していない。
917デフォルトの名無しさん:2009/12/05(土) 12:38:45
>>916
うんうん。899や904ってか俺一人だから。
ヨシヨシ、高い給料でがんばってね><
918デフォルトの名無しさん:2009/12/05(土) 12:40:25
C#しかできないからコンプレックスの塊なんだな
919デフォルトの名無しさん:2009/12/05(土) 12:43:23
>>917
ニート乙
920デフォルトの名無しさん:2009/12/05(土) 12:43:46
こんな無能な奴がプロジェクトの旗振り役になったらと思うとぞっとする。
経営層への受けはよさそうだけど、アウトプットは出せそうもないな。
921デフォルトの名無しさん:2009/12/05(土) 12:47:08
底辺職の諸事情なんかには興味がないので
スレタイ通りC#の話をしてくださいね
922デフォルトの名無しさん:2009/12/05(土) 12:49:42
とりあえずうちの会社がそんなじゃなくてよかった^^
変な会社も世の中にはあるんすね。俺ならすぐ辞めるな。
923デフォルトの名無しさん:2009/12/05(土) 12:50:16
底辺職の諸事情なんかどうでもいいわ、マジで。
ム板いけや。
924デフォルトの名無しさん:2009/12/05(土) 12:51:15
×ム板
○マ板
925890:2009/12/05(土) 12:56:57
もう、この業界でやってける気がしない。
俺は死んだほうがいいのかな。
926デフォルトの名無しさん:2009/12/05(土) 12:57:47
>>925
どうみても偽物でワラタ
927デフォルトの名無しさん:2009/12/05(土) 12:59:15
>>925
死ななくて良いからここはム板ってことを理解してくれ。プログラム技術とは関係ない愚痴とかはマ板いってくれ。
http://pc11.2ch.net/prog/
928890:2009/12/05(土) 13:21:25
スレチかもしれないんですが、
ActiveXとClickOnceを比べたときの互いの長所・短所を
教えてもらえませんか?
どちらも.NET Framework2.0(C#)で開発するとします。
主な利用目的はローカルにあるWord/Excel/PowerPointファイル
などのローカルのファイルをサーバー(CMSみたいなもの)
で利用できる形式のWebコンテンツへ変換することです。
929デフォルトの名無しさん:2009/12/05(土) 13:53:07
>>883
>ヒントが貰えただけ有難いだろ。
何様wwwヒントにすらなっていないってアレは。むしろ足を引っ張られて時間を無駄にしたから。
まぁ2ch自体自意識過剰な奴が多いから仕方ないんだろうけどさ。
890は本気で困っているならここでやらない方がいいよ。言い訳は上手い人たちだらけで、のんびりまったりやるスレだから。
ビルなんて作れないのにビルが作れると勘違いしている人が多い。せいぜいプレハブ小屋程度なのにビルが作れると思ってる、
くらいのレベルなんだよ。ビルが作れる人たちから見れば。
実際質問に対して文句ばかり言ってまともな回答できていないだろ?
ネットなんだし他のサイトで質問しても匿名と同じ。IDが必要なら捨てIDを作ればいいだけだし。
930デフォルトの名無しさん:2009/12/05(土) 14:36:14
俺はVC++でActiveX一択
他の選択肢は無い
C#でやるならそれに適した環境が整ってから
931デフォルトの名無しさん:2009/12/05(土) 14:51:24
ActiveXっていうだけでVC++が最適と言い切っちゃうとか
どんだけ短絡的な思考してるんだwまったくアホどもめw
932デフォルトの名無しさん:2009/12/05(土) 14:51:35
>929 >何様www
一般論で話をしたつもりだったが喧嘩腰だな。
一方的に頼る側がガタガタ文句言うのは常識的に言って筋違い。
足を引っ張られるのは情報の取捨選択をしなかった当人の責任だ。

そんな糞みたいな書き込みしてる暇があったら質問の回答書けば?
933デフォルトの名無しさん:2009/12/05(土) 14:55:18
匿名掲示板での質問者が回答にブー垂れるとか、それこそ 何様www だろ
934デフォルトの名無しさん:2009/12/05(土) 14:55:46
一般論ではなく、個人の論です
935デフォルトの名無しさん:2009/12/05(土) 14:57:43
ぶーたれるって死語だね
936デフォルトの名無しさん:2009/12/05(土) 15:02:07
>>935
え、マジ?www
俺結構言っちゃうけど。やべえ
937デフォルトの名無しさん:2009/12/05(土) 15:04:31
「私の質問に真摯な回答をするのがあなたたちの責任です」
権利の主張が過ぎるのがゆとりクオリティ。
938デフォルトの名無しさん:2009/12/05(土) 15:05:39
伸びてるなと思って来てみればアホがわいてるなw
押しつけがましい回答者が居座ってるときに質問してしまったようでご愁傷様w
いっつもいるんだよな。
政治的事情も考慮せずに、ただ自分好みの方法を質問者に押しつけようとするやつ
その上、自分好みの方法が受け入れられないと、こんどはバックグラウンドにある
組織の批判を始めたりして結局、何の助けにもならないっつう迷惑な回答者
まあ、いまの雰囲気じゃ挽回は無理なので、教えてgooにでもいきなさいw
939デフォルトの名無しさん:2009/12/05(土) 15:09:29
ここは技術系スレなので政治的事情は考慮する必要はない
政治的事情を考慮したいなら情報システム板に行け
940デフォルトの名無しさん:2009/12/05(土) 15:09:49
Silverlight4なら.NET不要で配布も超手軽で
Office操作もできてC#4.0でdynamicも使えて最強
941デフォルトの名無しさん:2009/12/05(土) 15:11:18
>>940
そうそう。そういうのが出てきてから移行すべきで
今のところはVC++一択
942デフォルトの名無しさん:2009/12/05(土) 15:13:49
いつまでVC++ごり押ししてんだよ低能w
943デフォルトの名無しさん:2009/12/05(土) 15:14:53
つか.NETでActiveXとか言ってる人にもっと技術情報を出して貰いたいんだが。
あんまり実施例として聞かない話だよな。
944デフォルトの名無しさん:2009/12/05(土) 15:15:53
>942
文句は具体的な代替案とセットでお願いします。
945デフォルトの名無しさん:2009/12/05(土) 15:17:01
こんなありがたいサンプルまである
http://www.ujasiri.com/prglib/vc/ppt/vc_ppt.html
946デフォルトの名無しさん:2009/12/05(土) 15:17:03
MSとしてはSilverlightを推していきたいところだから
サポートも望めないわな
947デフォルトの名無しさん:2009/12/05(土) 15:20:24
そうそう
managedDirectXとかどうなっちゃったか考えてみろ
948デフォルトの名無しさん:2009/12/05(土) 15:25:59
http://www.codeproject.com/KB/cs/CreateActiveXDotNet.aspx
はろーわーるどに毛の生えたレベル
これ作るのに言語から習得し直してC++やるのはねぇ
949デフォルトの名無しさん:2009/12/05(土) 15:28:58
ClickOnceってただのアプリケーション配布手段じゃなかったっけ?
なんでActiveXと同列に語られてんの?
じぶんとしてもSilverlight使えばいいと思う。
950デフォルトの名無しさん:2009/12/05(土) 15:32:53
言語の習得コストを無視する体育会系も多いよな。
そういう体質がデスマを招くわけなんだけど
951デフォルトの名無しさん:2009/12/05(土) 15:33:56
すばらしいなSilverlight4
さっすく勉強しよっと
952デフォルトの名無しさん:2009/12/05(土) 15:35:35
SilverlightでOfficeなどのCOM操作ができるようになるのは次のバージョン4から
VS2010ベータで作れるけどさすがにそれはちょっとw
まあ要件はSilverlight4のデモに使えそうなくらいぴったりなんだけどな
953デフォルトの名無しさん:2009/12/05(土) 15:36:10
つか、クライアントサイドの話が中心になってるんだけど、>928の話からすると
変換はサーバサイドで実装するのが常道なんじゃないの?
変換ロジックがサーバサイドにあると仮定すると、クライアントなんて
ActiveXだろうが、ClickOnce配布のアプリだろうが、Silverlightだろうが、
好きなの使えば良いと思うんだよ。
ActiveX云々の話が目的にどう絡んでくるのか見えないな。
954デフォルトの名無しさん:2009/12/05(土) 15:36:43
Silverlight4って仕様側は.Net不要なんだっけか?
てかなんでVS2008じゃ出来ないんだよぉ…
955デフォルトの名無しさん:2009/12/05(土) 15:39:31
たった今VC++ or Sliverlight4の二択になった。
956デフォルトの名無しさん:2009/12/05(土) 16:16:44
xbapのことも時々でいいから思い出してください
957デフォルトの名無しさん:2009/12/05(土) 17:02:16
4のアウトオブブラウザで
958デフォルトの名無しさん:2009/12/05(土) 17:17:12
おれもサーバーサイドを推す。

まぁ、サーバーサイドで Office をオートメーションするのはサポート外なんだけど。
959デフォルトの名無しさん:2009/12/05(土) 17:30:34
サーバーサイドでオフィスってライセンス大丈夫なの?
960デフォルトの名無しさん:2009/12/05(土) 17:31:19
もうクライアントのofficeVer意識するのは疲れたお
961890:2009/12/05(土) 17:32:50
サーバーはLinux+Apache+PHP・・・(;´Д`)
ロジックをできる限りサーバーサイドに持ってきたいのも
事実なんですけど、PHPに巨大なロジック持たせたくないんです。
ASP.NETだったらいかに楽だったか。

ActiveXの置き換えは自社パッケージの時期バージョンからなんで、
Silverlight4のリリース時期次第では、Silverlight開発も通せるかも。
別部署のパッケではずっと前からクライアント側をSilverlightにしてるし。

Silverlightの入門ってどこ見たらいいでしょうか。。。
962デフォルトの名無しさん:2009/12/05(土) 17:38:40
そういや新しいOfficeってサーバーサイドになるんだっけ?

963デフォルトの名無しさん:2009/12/05(土) 17:46:22
>>959
クライアントにオフィス入ってないとダメw
964デフォルトの名無しさん:2009/12/05(土) 17:58:34
>>962
クライアントとサーバーの両方
965デフォルトの名無しさん:2009/12/05(土) 18:53:59
オフィス文書の変換をクライアントサイドで、ってどういう仕組みに
なるのか想像もつかんな。

変換ロジック自前で書いたりしないだろうし。
もしや変換のためのライブラリ/アプリを全ユーザに事前インストールさせる、
なんて仕様?

現状、具体的にどんな操作でどうやって変換してるのかが凄く気になる。
966デフォルトの名無しさん:2009/12/05(土) 19:06:49
なんだか力技で処理してる悪寒
967デフォルトの名無しさん:2009/12/05(土) 19:23:41
インターネッツに繋がっていないときはエクセルとか使われへんのん?
968デフォルトの名無しさん:2009/12/05(土) 19:53:15
イントラ上のサーバに載せるんとちゃうの?
969デフォルトの名無しさん:2009/12/05(土) 20:53:50
スタンダロンの場合はどうなんね?
970デフォルトの名無しさん:2009/12/05(土) 20:59:06
大阪に帰れ
971デフォルトの名無しさん:2009/12/05(土) 21:00:04
Web版は無償版だよ。
普通のOfficeは普通にアプリケーション。
972デフォルトの名無しさん:2009/12/05(土) 21:18:38
Web版はレンダリングにSilverlight使うそうな
973デフォルトの名無しさん:2009/12/05(土) 21:21:09
WEB版はgoogleドキュメントみたいになるってことかな。
Azure
974デフォルトの名無しさん:2009/12/05(土) 21:23:21
googleと競合させてくるわけか・・・
どうなるんだろう
975デフォルトの名無しさん:2009/12/05(土) 21:55:14
???梅???
976デフォルトの名無しさん:2009/12/05(土) 23:10:43
アプリケーションのウィンドウの一番左上の所(タイトルバー含む)
のスクリーン座標を取得したいのですがどうすればいいでしょう?

FormのLocation.Xだとかをしてもタイトルバーの位置は分かりませんでした。
(当たり前)

977デフォルトの名無しさん:2009/12/05(土) 23:13:05
>>976
PointToScreen
978デフォルトの名無しさん:2009/12/05(土) 23:22:42
>>977
PointToScreenはやってみたのですが
Formをもとにしたクライアント座標の変換であって
ウィンドウの(0,0)のスクリーン座標は取得できませんでした。
979デフォルトの名無しさん:2009/12/05(土) 23:24:10
いったい何がしたいんだろう
980デフォルトの名無しさん:2009/12/05(土) 23:27:31
ちなみにProcess.GetCurrentProcess().MainWindowHandleをWinAPIに放り込んでも無理でした
981デフォルトの名無しさん:2009/12/05(土) 23:32:40
>>978
すまん。知りたい座標を勘違いしてた。

つ Form.Bounds.Location
982デフォルトの名無しさん:2009/12/05(土) 23:45:44
ありがとうございます
ちゃんと取得できました
983デフォルトの名無しさん:2009/12/06(日) 01:58:53
AxWMPコンポーネントUIに、ContextMenuStripを関連付けさせたいのですが、
AxWMPのプロパティ、ContextMenuStripで設定するだけでは、
デフォルトのWMPコンテキストメニューが表示されてしまいます。
どうすれば望む動作が出来ますか?
984デフォルトの名無しさん:2009/12/06(日) 13:42:07
Formに複数のコンポーネントを配置してOnResizeが走る度にコンポーネントの大きさも調整しているんですが
ウィンドウの左を掴んでリサイズするとコンポーネントがリサイズされる時にうねうねして気持ち悪いんですと思ったんですけど
どうやら僕の作ったプログラム特有の現象ではないみたいなのでやっぱりどうでもいいです。
985デフォルトの名無しさん:2009/12/06(日) 13:49:46
うねうねてw
986デフォルトの名無しさん:2009/12/06(日) 14:51:09
>>984
dockやanchorをうまく使うようにするべきだろうね。
987デフォルトの名無しさん:2009/12/06(日) 14:51:22
アンカーやドックでは出来ない配置なのか?
確かに自由度は低いけど大抵用は足りると思うが。
988デフォルトの名無しさん:2009/12/06(日) 14:57:39
できない配置だから使ってないんだよ^^
989デフォルトの名無しさん:2009/12/06(日) 15:16:51
いってごらん、使えないから使ってないんじゃないの^^
990デフォルトの名無しさん:2009/12/06(日) 15:27:08
組み合わせればかなりのことはできるね。
991デフォルトの名無しさん:2009/12/06(日) 15:29:44
dockはパネルとうまく組み合わせるのが肝
992デフォルトの名無しさん:2009/12/06(日) 16:37:58
できないっつうと、複数コントロールを均等比率で拡大・縮小するとか?
993デフォルトの名無しさん:2009/12/06(日) 16:48:14
そうだよ。
994デフォルトの名無しさん:2009/12/06(日) 17:32:57
オレはDockは基本的に使わないことにしてるな
安易に使うとちらつく原因になって後々困る
995デフォルトの名無しさん:2009/12/06(日) 17:46:26
WPF使っとけ
996デフォルトの名無しさん:2009/12/06(日) 17:52:13
まだまだXPが主流で描画もっさりのWPFにはいけない
997デフォルトの名無しさん:2009/12/06(日) 18:11:34
リサイズの必要があるなら
多少ちらついても楽するにはDock使うね
998デフォルトの名無しさん:2009/12/06(日) 23:38:30
>>983
enableContextMenuをfalseにしといて、
MouseUpEventでContextMenuStrip.Showで直接表示させる
999デフォルトの名無しさん:2009/12/06(日) 23:51:25
>>998
なるほど!それは思いつかなかったです;
1000デフォルトの名無しさん:2009/12/06(日) 23:55:33
1000get
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。