C#, C♯, C#相談室 Part39

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C♯, C#相談室 Part38
http://pc11.2ch.net/test/read.cgi/tech/1173763436/

過去スレは>>2-5あたり。
2デフォルトの名無しさん:2007/05/09(水) 00:49:29
3デフォルトの名無しさん:2007/05/09(水) 00:50:20
4デフォルトの名無しさん:2007/05/09(水) 00:51:13
5デフォルトの名無しさん:2007/05/09(水) 00:52:48
ふらっとC#, C♯, C#(初心者用) Part15
http://pc11.2ch.net/test/read.cgi/tech/1176387265/


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

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

MSDN2
http://msdn2.microsoft.com/ja-jp/library/default.aspx

pinvoke.net: the interop wiki!
http://pinvoke.net/

テンプレ終了
6デフォルトの名無しさん:2007/05/09(水) 00:58:12
この時間におつかれさん
7デフォルトの名無しさん:2007/05/09(水) 01:15:59
注:私の有意義な発言に対し、自分の理解不足を棚に上げ煽り、1行レス
で返す方が多いようですが、そのような方はスレの皆様を混乱させるだけでなく
スレの雰囲気を崩しかねないのでお黙り下さい。
また質問者は回答者に知識を披露する場を与える貴重な存在なので、
質問者を見下した回答、あまりにも儀礼を欠いた回答も厳重に禁止いたします。
忙しい中、少ない時間の合間を縫って質問しに来てるわけですので、
その辺ご承知下さい。なお、当方が質問に対して有意義な答えであると
判断した方には評価いたしますので各自よく調べ、よく考え正確な回答をするように。
8デフォルトの名無しさん:2007/05/09(水) 01:56:46
>>7まじ?
9デフォルトの名無しさん:2007/05/09(水) 03:27:01
昔はやったコピペだ
相手にすんな
10デフォルトの名無しさん:2007/05/09(水) 10:18:22
なんかC井も入れたくなるようなスレタイだな
11デフォルトの名無しさん:2007/05/09(水) 10:20:07
 C#
  ↑これって♯(シャープ)じゃなくて#(ナンバー)だよね。いいのかね。
121:2007/05/09(水) 13:51:26
>>11
仕様書ではこれが正当なので先頭にしました。(参照: ウィキペディアとか
13デフォルトの名無しさん:2007/05/09(水) 20:07:06
C#勉強する前にC言語勉強したほうがいいのかな?
14デフォルトの名無しさん:2007/05/09(水) 20:36:10
別物です。ご自由に。
15デフォルトの名無しさん:2007/05/09(水) 20:36:56
ありがとうございました
16デフォルトの名無しさん:2007/05/09(水) 22:21:49
>>1
おつかれー
ありがとね
17デフォルトの名無しさん:2007/05/09(水) 22:39:54
そういえばいつの間にかスレタイに # 使えるようになってたんだな。
18デフォルトの名無しさん:2007/05/09(水) 22:41:44
C#相談室

1 名前:名無しさん♯ [] :2000/12/18(月) 13:06
作ってみました。

==========
使えない時期ってあったのか?
19デフォルトの名無しさん:2007/05/09(水) 22:53:26
#お知らせ# スレタイに#が使えるようになりました。
http://pc11.2ch.net/test/read.cgi/tech/1171342757/
20デフォルトの名無しさん:2007/05/09(水) 23:12:09
2スレ目見たら♯になってた。
一番最初に使える時期があって、
それから使えなくなって、
また使えるようになったのか。
21デフォルトの名無しさん:2007/05/10(木) 11:52:34
COMインターフェイスについて質問です。

IHoge hogeを複数のインターフェイスにキャストするとき、
たとえば

IFoo foo = (IFoo)hoge;
IBar bar = (IBar)hoge;

みたいにして使用した後、解放するときは
もとのhogeをReleaseComObjectするだけでいいの?
fooやbarに対してそうすると
"RCWから分離されたオブジェクトを操作できません"みたいな
例外が出るんですが。

キャストってQueryInterface相当じゃなかったの?
22デフォルトの名無しさん:2007/05/10(木) 21:48:19
RCW で一度ラップしてるってのがポイントだ。
23デフォルトの名無しさん:2007/05/11(金) 08:08:47
C/C++あがりのひとです。
C#では、#defineで値のある定数が定義できませんがそれに変わるものや方法はあるのでしょうか?
当方は、(ほぼグローバル)定数専用のクラスをおこしてそこにずらずらconstしてます。
定番の方法とか知りたいです。
24デフォルトの名無しさん:2007/05/11(金) 08:11:44
グローバルな定数を使わない
妥当なクラスに(静的かどうかは意味に合わせて)プロパティを用意する
25デフォルトの名無しさん:2007/05/11(金) 08:15:54
internal なら const つかってもいいし
値が絶対に変わることがないのなら public でもいい
26デフォルトの名無しさん:2007/05/11(金) 12:58:22
グローバル定数の代わりなら、列挙型使えばいいのではないか?
27デフォルトの名無しさん:2007/05/11(金) 13:13:41
便乗質問

>>24
> グローバルな定数を使わない
グローバルな定数は定義できない。
じゃないの?

> 妥当なクラスに(静的かどうかは意味に合わせて)プロパティを用意する
これは、>>23の言う、定数専用クラスもその一例。
ってことでOK?

それとも逆に、
定数専用クラス(静的クラス)も含め、グローバルに扱える定数は使わない。
「妥当なクラス」とは、個々のオブジェクトの独立性を保てる範囲である。
ってことになるのかしらん?
28デフォルトの名無しさん:2007/05/11(金) 16:25:29
C#ではグローバルスコープには名前空間とクラスしか書けないからグローバル定数はもともと存在しない。
29デフォルトの名無しさん:2007/05/11(金) 16:51:47
まあそんな理屈はどうでもいいよ
全部クラスに属してるから純粋なオブジェクト指向だ
っなんてのと一緒だな。
30デフォルトの名無しさん:2007/05/11(金) 18:10:27
public static class Global
{
public const int Teisuu = 5;
public static int Hensuu = 0;
public static string Mojiretsu = "";
}
31デフォルトの名無しさん:2007/05/11(金) 20:33:14
>>23
たとえば円周率πがどう定義されているかをMSDNで調べてみると参考になるかもしれない。
グローバル定数専用クラスも結構だが、名前空間(クラス名含む)を適切に定義できるかどうかがキモじゃないの。
性的なプロパティにするかどうかは意味次第ってことで。
32デフォルトの名無しさん:2007/05/11(金) 20:35:13
名前空間MyのクラスGlobalに定義でもしておけ。
33デフォルトの名無しさん:2007/05/11(金) 21:14:54
保守の面でも、ソリューションごとか、アプリごとに、なにかしらnamespaceつけるのが妥当だよな。
34デフォルトの名無しさん:2007/05/12(土) 00:37:00
>>23
普通は、関連のあるクラスの const メンバ変数で定義しとく。
どことも関連しなさそうなら設計が悪いかも。
まあ、定数専用のクラス作るのもいいんだけど。

で、もしなんだけど、public な定数でかつ、
仕様の変更に伴って変わる可能性のある定数なら、
できれば static なプロパティか、static readonly なメンバ変数にしといた方がいい。
const にすると、修正したときに利用側でも再コンパイルが必要になるから。

πみたいに仕様が変更されても絶対といっていいほど定数であるものとか
private な定数なら迷うことなく const でいいんだけど。
35デフォルトの名無しさん:2007/05/12(土) 03:13:09
DataSet.ReadXml()による更新以前と以後の差分をとりたいです。
(更新を判定できるRSSリーダをつくりたい)
まったく同じ内容のXmlで更新した場合、
DataSet.GetChanges(DataRowState.Added)で差分だけとりたいのに
全部とれてしまうのですがこれはなぜでしょう?
AcceptChanges()はGetChangesのあと実行しています。
36デフォルトの名無しさん:2007/05/12(土) 03:20:39
>>35ですが、わかりづらくて申し訳ありません。
現在のDataSetと同じ内容のXmlをReadしたとき、GetChanges()
したら空のDataSetが返ると期待しているのに、なぜだかすべての
テーブル内容が返ってくるということです。
37デフォルトの名無しさん:2007/05/12(土) 11:57:13
以前 内容1 DataRowState.Unchanged
以前 内容2 DataRowState.Unchanged
以前 内容3 DataRowState.Unchanged
以前 内容4 DataRowState.Unchanged
以前 内容5 DataRowState.Unchanged
以後 内容1 DataRowState.Added
以後 内容2 DataRowState.Added
以後 内容3 DataRowState.Added
以後 内容4 DataRowState.Added
以後 内容5 DataRowState.Added

こうなってるだけじゃなくて?
38デフォルトの名無しさん:2007/05/12(土) 15:27:21
>>36
同じ内容を再リードしてるんならそれで正しいと思うが?
全てを更新してるからな。
39デフォルトの名無しさん:2007/05/12(土) 16:03:37
VC#EEにdelphiにあるTChartのようなものはありますか?自分で作るの大変。
40デフォルトの名無しさん:2007/05/12(土) 16:05:51
c# グラフで検索。
41デフォルトの名無しさん:2007/05/12(土) 20:22:54
ご返事ありがとうございます。
>>37
Addedは新規に追加された場合ですよね。この場合は既存のRowを
上書き(Modify)することにならないかなと思っていたのです。
>>38
ReadXml()は一旦全部消去して作り直すということでしょうか。なら、
更新前と更新後のDataSetインスタンスを別に保持しておいて差分を
とろうと思います。片方のRowを片っ端からもう片方に上書きしたとき、
Unchanged(DataSet1だけのRow), Added(DataSet2だけのRow),
Modify(両方にあるRow)となると考えてよいでしょうか?
42デフォルトの名無しさん:2007/05/12(土) 21:03:31
「片っ端から上書き」って具体的にどうするつもりなんだろう?
PrimaryKeyがないテーブルにImportRowしていくなら結局>>37と同じ結果になるよ
43デフォルトの名無しさん:2007/05/12(土) 23:43:39
>>42
ありがとうございます。
「PrimaryKeyがない場合、テーブルに同じRowが重複して追加される」
(>>37は、XMLがもつRowは5個だが、重複して10個になっている状態)
という理解でよろしいでしょうか?
ReadXml()したとき、更新前と更新後でもRowの数が変わらなかったので、
「ReadXml()は既存のテーブル内容を破棄する」
ということではないのでしょうか?
「主キーを設定しRowの上書き途中でConstraintExceptionが投げられたとき、
そのRowの状態をModifyにする」これでうまくいくでしょうか?
44デフォルトの名無しさん:2007/05/13(日) 03:05:17
>>43
>「ReadXml()は既存のテーブル内容を破棄する」

DataSet ds = new DataSet();
XmlTextReader reader = new XmlTextReader("http://slashdot.jp/slashdot.rdf");
ds.ReadXml(reader);
reader.Close();
Console.WriteLine(ds.Tables["item"].Rows.Count);
reader = new XmlTextReader("http://slashdot.jp/slashdot.rdf");
ds.ReadXml(reader);
reader.Close();
Console.WriteLine(ds.Tables["item"].Rows.Count);

……破棄されてる?


>主キーを設定しRowの上書き途中で
上書きできるなら重複してることが既に分かっているわけで、
それを判別するためにはDataRowCollection.Findを使用済みなわけで、
nullが返ってきたRowが差分だってことで問題は解決されてない?
45デフォルトの名無しさん:2007/05/13(日) 09:38:54
>>44
おっしゃるとおりで解決しました。自分の馬鹿さ+睡眠不足で、
頭おかしくなってたみたいです。ありがとうございました。
46デフォルトの名無しさん:2007/05/13(日) 11:42:08

最初にAが入ってるところにさらにAを読み込んだ。
A → A+A
さて更新部分はどこ?
47デフォルトの名無しさん:2007/05/13(日) 14:32:03
は?
48デフォルトの名無しさん:2007/05/13(日) 15:23:17
なにその抽象的な
49デフォルトの名無しさん:2007/05/13(日) 15:35:05
なぞなぞなんじゃない?
答えはなんかの駄洒落だよ、きっと
50デフォルトの名無しさん:2007/05/13(日) 15:39:24
>>51の超能力に期待
51デフォルトの名無しさん:2007/05/13(日) 16:18:27
ずつーにバファリン♪
52デフォルトの名無しさん:2007/05/13(日) 20:54:41
Visual C# 2005 Express Editionを使用しています。
コンソールアプリケーションとしてある動作をするファイルを作成しました。
これをWindowsアプリケーション上にあるボタンクリックにより起動させるには
どのようにすればよいのでしょうか?

大まかなヒントだけでもかまいませんので、どうぞよろしくお願いします。
53デフォルトの名無しさん:2007/05/13(日) 21:01:29
大まかなヒント以前に質問が大まかすぎるっての。
取りあえず System.Diagnostics の Process クラス調べれ。
54デフォルトの名無しさん:2007/05/13(日) 21:49:16
>>53
さっそくどうもありがとうございます。
おかげさまで先に進めそうです。
55デフォルトの名無しさん:2007/05/13(日) 22:05:42
とりあえずふらっとすれレベルの質問だろそれ。
56デフォルトの名無しさん:2007/05/13(日) 23:33:13
どういう基準でふらっとスレと住み分けしてるの?
ここ: 言語は理解してるが使い方がわからない/自分で問題箇所を絞れる
ふらっと: 言語自体よくわかってない/何をどうしたらいいのか,何がいけないのかわからない
みたいな感じ?
57デフォルトの名無しさん:2007/05/13(日) 23:40:58
> ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
> 勇気をもって書き込んでください。

質問者次第って事で良いんじゃね
58デフォルトの名無しさん:2007/05/13(日) 23:58:48
俺様が見てウンザリする質問→ふらっと

ってことだろう
59デフォルトの名無しさん:2007/05/14(月) 00:42:01
知ってる人間なら分かりきったことでも。
質問者にとっては全く分からない、雲を掴むようなもので、
どういう質問の仕方をしたらいいのか分からないもんだよな。

2ちゃんの専門板はどこ行っても、素人お断りの雰囲気があるけどね。
60デフォルトの名無しさん:2007/05/14(月) 00:48:29
>>59
どんな地獄にも一人ぐらい仏はいるもんだ。

本当に初心者ゆえに(それなりに自分で理解する努力はしているにもかかわらず)
分からないと思われる質問なら回答してもらえる可能性は高いでしょ。

ただの怠惰な「どちて坊や」だから叩かれるか無視されるんだよ。
61デフォルトの名無しさん:2007/05/14(月) 02:01:35
いいじゃん怠惰だろうがなんだろうが。
それがイヤなら答えないだけだし。
実際、普段答えもしないくせにそういう「ルール」みたいな話になると
途端に饒舌になるやつの方がウザい。

他人が困ってても見向きもしないヤツに限って、自分のときは
「オレはこんなに大変だ」みたいにアピールしたり不満漏らしたり。
62デフォルトの名無しさん:2007/05/14(月) 02:24:15
>>61
お前ひょっとして今疲れてない?あまり無理はするなよ。
63デフォルトの名無しさん:2007/05/14(月) 07:27:52
何度も繰り返されてきた議論をまた同じように蒸し返す奴はウザイよね
64デフォルトの名無しさん:2007/05/14(月) 09:28:10
過去スレ読んでないだけだと思うよ。
というか、39スレも読むの大変だし。
65デフォルトの名無しさん:2007/05/14(月) 10:00:56
どこの質問スレも定期的にこんな感じになるね
66デフォルトの名無しさん:2007/05/14(月) 10:08:59
スルー。
それは精神がタフでないとできない。
知性が低いとできない。
勇気がないとできない。
おれにはできない。
67デフォルトの名無しさん:2007/05/14(月) 12:40:42
SQLserver2000のdatetime型にyyyy/mm/ddを書き込みたいですがうまくいきません
DateTime.ParseExactを使ってもうまくいきませんでした
教えてくださいお願いします。
datetime以外の部分はすべて順調です。
68デフォルトの名無しさん:2007/05/14(月) 13:41:39
DateTime.Parse(string + " 00:00:00")
にすると楽
69デフォルトの名無しさん:2007/05/14(月) 13:54:26
>>67
ParseExact使っているのは大変よろしい。
でも月はmmじゃなくてMM。mmは分です(minutes)。
7067:2007/05/14(月) 14:02:33
string WriteDate = DateTime.Today.ToString();
0:00:00ってのをヒントに上記のやつでいけました
もともとうえのでやってたんですけどSQLのinsertの部分で
'使うの忘れてたみたいです
ありがとうございました。
71デフォルトの名無しさん:2007/05/14(月) 14:04:01
SQL文にyyyy/MM/ddを追加したいってことだったのか
72デフォルトの名無しさん:2007/05/14(月) 14:06:49
'つけて無いのわすれてて軽くはまって
わけわからなくなってました
73デフォルトの名無しさん:2007/05/14(月) 23:59:14
>>67
というかMSSQLなら素直にパラメタライズクエリ使えよ
何やってんだ。

…ん?ひょっとしてWriteDateって挿入した日?なら
GETDATE()を使え
74デフォルトの名無しさん:2007/05/16(水) 19:00:37
TableAdapterでUpdateしたときに新規追加されるデータのAutoIncrementの値を取得したいんですが、どうすればいいんでしょう??
75デフォルトの名無しさん:2007/05/16(水) 19:04:07
hage
76デフォルトの名無しさん:2007/05/16(水) 20:11:06
>>74
ふらっとC#, C♯, C#(初心者用) Part15
http://pc11.2ch.net/test/read.cgi/tech/1176387265/977

マルチは死ね
77デフォルトの名無しさん:2007/05/16(水) 23:41:22
TableAdapterにAutoIncrementプロパティってあるの?

それにUpdateしたときに新規追加されるデータって表現はおかしくないかな?
78デフォルトの名無しさん:2007/05/17(木) 00:06:20
質問の意図も読み取れないバカは黙ってろ
79デフォルトの名無しさん:2007/05/17(木) 00:13:24
AutoIncrementがTrueかFalseか知りたいだけだろ?
80デフォルトの名無しさん:2007/05/17(木) 00:16:02
違うよバカ
81デフォルトの名無しさん:2007/05/17(木) 00:31:20
読み取れてるんなら、答えてやれよ。上級者。
82デフォルトの名無しさん:2007/05/17(木) 11:51:15
そんなんもわからんのなら辞めれば^^;
83デフォルトの名無しさん:2007/05/17(木) 23:08:13
空気悪い。
84デフォルトの名無しさん:2007/05/18(金) 21:48:57
ええい、しっかりせんかい
85デフォルトの名無しさん:2007/05/19(土) 15:02:33
>>74
データベースはSQLサーバー?
86デフォルトの名無しさん:2007/05/19(土) 15:39:33
C#というか.NETでローカルのDBとしてBase(OpenOfficeのデータベース)を
使う事ってできる?
Accessじゃないと駄目なのかな?
もしできるならやり方とか書いてあるサイトを教えてもらいたいです
87デフォルトの名無しさん:2007/05/19(土) 15:46:08
>86
ODBCのドライバとかないのか?
88デフォルトの名無しさん:2007/05/19(土) 22:49:34
.NETでRPCみたいなのってないの?SOAPみたいな重いのだけ?
89デフォルトの名無しさん:2007/05/19(土) 22:57:38
RPC と SOAP は同列に並べることはできんだろ
リモーティングになら IpcChannel が .NEt 2.0 で追加された
.NET 3.0 の WCF でも NamedPipe を使える
あとは MSMQ とかか?
90デフォルトの名無しさん:2007/05/20(日) 13:52:08
SOAPが重いって脳腐ってないか?
91デフォルトの名無しさん:2007/05/20(日) 14:20:14
発酵してるんだよ
92側近中の側近 ◆0351148456 :2007/05/20(日) 18:01:22
>>67,70
(っ´▽`)っ
っていうか、時分秒は入れなくていいのか?
datetime型なのに時分秒が入ってないと
後で困るかも。整列させるときとかね。

いっそのことvarcharでいいんじゃね?
時分秒が入ってないのはもうdatetimeとはいえないのでは?
93デフォルトの名無しさん:2007/05/20(日) 19:04:54
なんかアホな質問だったらごめんなさい。

lockについてなんですが、

クラスのオブジェクトにたいして読み書きするメソッドAdd(),Remove()と
読むだけのメソッドRead1(), Read2() とがありまして、

Add() や Remove() では他のメソッドと同期したいんですが、
Read1() ⇔ Read2() 間では排他にしたくないんです。

こういう場合ってどうしたらいいんでしょうか。
94デフォルトの名無しさん:2007/05/20(日) 19:18:56
ReaderWriterLock 使え
95デフォルトの名無しさん:2007/05/20(日) 19:23:18
C#で書かれたwindowsアプリのサンプルが
大量に載ってる教本ってないですかね?
サンプルプログラムではなく
アプリとしてのってるのがいいのですが、見つかりません。
VBAやperlではたくさんあるんですが・・・。

検索すると、カットシステムから出版されている
「.net FrameworkプログラミングテクニックVol3」っていうのが
かなり近い感じですが、もう読み終わってしまったので
更なるステップアップを目指しています。

オープンソースのフリーソフトを読むというのも考えたのですが、
解説があるのと無いのでは理解する速度が断然違いますし、
変な癖がついたりするのも怖いです(経験あります)

該当する書籍、資料などありましたら教えて頂けると幸いです<(_ _)>
96デフォルトの名無しさん:2007/05/20(日) 19:38:20
アプリならCodeProjectからダウンロードすればいいと思うが。
あれじゃ駄目か?
97デフォルトの名無しさん:2007/05/20(日) 20:53:16
>>94
ありがとうごさます。ばっちりでした
98デフォルトの名無しさん:2007/05/21(月) 00:18:21
TreeViewいじってて気付いたんですが、
TreeNodeのnodeがあったとして
普通にnode.Text = "hoge";ってやるよりも
いったんnodeを削除して同じ場所に新しい"hoge"ノードを作った方が
早いような気がします。
ただ、無限ループで繰り返して計測した訳ではないので
あくまでも「気がする」の域です。(こう書くと釣りっぽいですが(^^;
ちなみにBeginUpdate()は使っていません。
(できない場所だったので)

これって何か理由でもあるんですかね。
99デフォルトの名無しさん:2007/05/21(月) 00:39:58
クマー
100デフォルトの名無しさん:2007/05/21(月) 00:45:51
ビロニストが混じってるようだ。
101sage:2007/05/21(月) 00:54:16
こんな餌に俺が...
102デフォルトの名無しさん:2007/05/21(月) 01:35:33
>無限ループで繰り返して計測

さて、ここは無限ループでどうやって計測するのか議論するスレになりました。
しかも繰り返してですよお客さん
10395:2007/05/21(月) 02:54:25
>>96
レス遅れてすいません。
検索してみましたが、これはどういうサイトなんですか?
英語ダメなもんで orz

とりあえず、ソフトやコードのサンプルがたくさんあるようですが・・・。
想像していた物とは違いますが、これはこれで勉強になりそうです。
良いサイトを教えて下さりありがとうございます。
104デフォルトの名無しさん:2007/05/21(月) 05:28:34
英語がダメって小学生かよ。
105デフォルトの名無しさん:2007/05/21(月) 05:44:29
>>103
英語からの情報を諦めてたらプログラマとしての成長が早いところで頭打ちになるよ。
プログラミングの勉強と並行して英語もやった方がいい。
小説などと違って簡単な言い回しでの説明が多いからすぐ慣れると思うよ。
あとは単語を辞書で引いたりググったりすれば大丈夫。
.Netのクラスライブラリも日本語版と英語版があるから読み比べてみるといい。
106デフォルトの名無しさん:2007/05/21(月) 15:00:38
class Pair<T,U>があったときに
Pair<Pair<string,Pair<string,int>>,object>のようなものをC#(.NET)の正規表現で解析できるものでしょうか?
教えてエロイ人(´・ω・`)
107デフォルトの名無しさん:2007/05/21(月) 15:22:59
>>106
エロイ人ほど深読みしそうな書き方だけど、
class Pair<T,U>ってのは文字列?
string hoge = "class Pair<T,U>"; みたいな。

エロイ人は Type fuga = typeof( Pair<T,U> ); についての
パターンマッチの仕組みを聞かれている可能性を悩んでそうな希ガス。
108デフォルトの名無しさん:2007/05/21(月) 15:30:42
>>107 紛らわしくてすいません。
class Pair<T,U>という定義があるとして、
文法的にはPair<Pair<string,Pair<string,int>>,object>という書き方ができますよね?

ここでstring s="Pair<Pair<string,Pair<string,int>>,object>";
と与えられたときに、正規表現で解析をして各タイプパラメータを引っ張ってこれるかという話です。
一発でできなくても最初の評価でGroupとしてタイプパラメータを引っ張ってこれて、そこに対して再度解析を行うということでもかまいません。
109デフォルトの名無しさん:2007/05/21(月) 16:21:45
>>108
文字列の解析ね。
正規表現を使うことというのは条件なの?
普通に考えたらC#の構文解析器の該当部分をどこかからパクってくるのが正攻法な気がするけど、
エディタのマクロを組みたいとかそういう用途?

あと、ソースコード中のある箇所でAという型名に見えても、
using A=B; ってエイリアスされてるかもしれないから
厳密にはタイプパラメータとは言えないかもね。
実行中にその型名で検索しても何も見つからないってこともあるよ。

厳密な実装をやりたいのか、
誰かから引き継いだコードを泣く泣く書き換えたいだけなのかで答え変わりそうだね。
単にあるコードを解析したいだけなら、
いったんコンパイルしてリフレクションで解析でもいいだろうし。
110デフォルトの名無しさん:2007/05/21(月) 16:22:40
もちろん出来ない。
111109:2007/05/21(月) 16:24:54
ああそうか。usingのエイリアスを持ち出すまでもなく
ネームスペースや参照アセンブリが省略されてるから、
どっちにしろ型引数に書かれた文字列だけ得ても元の型は一意に定まらないね。
ややこしい例出してスマソ。
112デフォルトの名無しさん:2007/05/21(月) 16:35:47
>>108
正規表現の言語クラスでは再帰的表現を扱うことはできない。
今回の場合は、複数回パターンマッチを行うようにしても無理。
113デフォルトの名無しさん:2007/05/21(月) 16:38:38
>>109 いえ、とりあえず例に挙げたようなクラスで、元のGeneric型とそのタイプパラメータをタイプパラメータにGeneric型が入る可能性を考えた上でひっぱってきたいだけです。
その他の文法とかは考慮しませんし、エイリアス使ってる場合なども含めて厳密に型を引っ張ってこられるかは別問題です。
やりたいことを詳しく書くと上記の例に挙げたようなクラス名称を文字列として渡されたときに、元となるGeneric型やそのタイプパラメータを引っ張ってきて処理できるようにしたいんです。
もちろんアセンブリやネームスペースなども考慮しますが先に挙げた例は正規表現で再帰的な構造を含むものを処理できるかノ例としてあげたまでです。
正規表現の使用は絶対ではありませんが、構文解析よりはひとまず敷居が低いと使用を考えたまでです。
114デフォルトの名無しさん:2007/05/21(月) 16:42:10
>>112
そうですか・・・
だとすると構文解析的なものを考えないとだめそうですね。
115デフォルトの名無しさん:2007/05/21(月) 22:22:20
質問であります。
XMLシリアル化ってバージョントレラントなんだろうか?

「バージョントレラント」の厳密な定義とは違うかもしれませんが、
俺としては次の条件を満たせば必要十分なんですが。

(1) デシリアライズの際、XMLに、デシリアライズされるクラスが知らない
  フィールドやプロパティが記述してあっても例外にならない。

(2) デシリアライズの際、XMLに、デシリアライズされるクラスの本来シリアル化対象のはずの
  フィールドやプロパティが記述してなくても例外にならない。

簡単なコードでテストしてみると、どうもこれらの条件は満たしているっぽいのですが、
できれば何か裏づけが欲しいんですよね。

MSDNライブラリ見てもググって見てもどうも裏付けるような文章が見つからない。
↓の中氏の文章は(誌面の都合もあるんでしょうが)いまいち舌足らずだし。
http://www.microsoft.com/japan/msdn/netframework/skillup/core/article9.aspx
116デフォルトの名無しさん:2007/05/21(月) 22:48:38
(1)はともかく(2)は気持ち悪くないか?
117デフォルトの名無しさん:2007/05/21(月) 22:53:09
いや、バージョンアップ後も古いバージョンのデータが読めるためには必要な条件でしょう。
118デフォルトの名無しさん:2007/05/21(月) 22:56:40
そこからいけるリンク先に答え書いて内科医?
ttp://msdn2.microsoft.com/ja-jp/library/ms229752(VS.80).aspx
119デフォルトの名無しさん:2007/05/21(月) 23:00:38
書いてナイアルよ。。
120デフォルトの名無しさん:2007/05/22(火) 21:58:00
質問です。
time,Ampl
-1.0005e-06,0.000623049
-9.995e-07,0.000540041
-9.985e-07,0.000442385
・・・・
と数値が続いていくファイルでカンマより右の部分(Ampl)だけ抜き出すプログラムを作りました。
ファイルの内容をすべてstringにいれてから、要らない部分(カンマより左)をRemoveを使って消しつつ改行まで読み取る動作を繰り返すプログラムなのですが非常に遅いです。
より高速にする方法があれば教えてください
121デフォルトの名無しさん:2007/05/22(火) 22:00:46
一行ずつ読めば?
122デフォルトの名無しさん:2007/05/22(火) 22:04:45
遅いのはオブジェクトの生成を繰り返しているからだ。
後は自分で考えろ。
123デフォルトの名無しさん:2007/05/22(火) 22:06:04
一行読む>カンマまで消す でやってみます
124デフォルトの名無しさん:2007/05/22(火) 22:10:33
>>123
おいおいそんな下手なやり方じゃダメだよw

必ずしも一度に全部Stringにぶち込む必要はないが(不可能な場合もあるだろうし)
ファイルはチビチビ読まず一度にまとめて読む、という方針はむしろ正しい。

問題は読んだ後の処理にあると思われる。
String.Splitとか正規表現とか、いろんな方法を自分でいろいろ試してみるしかないよ。
125デフォルトの名無しさん:2007/05/22(火) 22:23:11
上手い具合に教えないとな。
Cだったら簡単なのに…c#は難しい!とか言われそう。
126デフォルトの名無しさん:2007/05/22(火) 22:28:58
なるほど、Splitよさそうですね!
とりあえずRemoveで消すという無駄な処理をなくしてみます。
どうもです。
127デフォルトの名無しさん:2007/05/22(火) 22:30:11
>>126
http://msdn2.microsoft.com/ja-jp/library/system.string(VS.80).aspx
Stringクラスは重要だから全てのメソッドに目を通しといたほうがいいよ。
128デフォルトの名無しさん:2007/05/22(火) 23:05:22
うそヒント scanf()
129デフォルトの名無しさん:2007/05/22(火) 23:17:25
regexで一気にマッチできるような気もするな・・・
130デフォルトの名無しさん:2007/05/23(水) 01:00:05
>>129
全読みしていいんならむしろ1行で

string r = Regex.Replace(input, @"^.*,(?<R>[^,]*)$", @"${R}", RegexOptions.Multiline);

適当に書いたんであっているか知らん。繰り返すんならCompiledつけたら早くなるかも
131デフォルトの名無しさん:2007/05/23(水) 13:41:23
昨日質問した者です。
>>130さんの正規表現をヒントに加工してからSystem.IO.StreamReaderで行読みするプログラムにしたら、かなり速くなりました。
ありがとうございました。
132デフォルトの名無しさん:2007/05/23(水) 14:26:50
GC.KeepAliveのサンプルのところがよくわからないのだけど、
http://msdn2.microsoft.com/ja-jp/library/system.gc.keepalive(VS.80).aspx

下の例で言えばhoge.func() を呼び出した直後から、
もうhogeは使われてないからGCされる可能性があるということなのでしょうか?
呼び出しが完了するまでも待たないなんてなんだか変な気もします。
{
  Hoge hoge = new Hoge();
  hoge.func();
 : // このあとhogeは使用されない・・・
}
133デフォルトの名無しさん:2007/05/23(水) 14:35:57
変な気もするけどそうなってんだからしょうがない。
134デフォルトの名無しさん:2007/05/23(水) 14:44:50
>>132
>なのでsひょうか?
違います。

そのURLの例が示しているのは、hogeのプロパティとして返された配列を利用している
最中にhogeがGCされて、hogeのファイナライザがその配列を変更してしまうというケース。
それ以上でもそれ以下でもない。
135デフォルトの名無しさん:2007/05/23(水) 14:54:17
>>134
クローンしてる。
public byte[] Hash { get { return (byte[]) hashValue.Clone(); }}
136デフォルトの名無しさん:2007/05/23(水) 15:09:55
ホントだ・・・と思って良く考えてみると
>public byte[] Hash { get { return (byte[]) hashValue.Clone(); }}
程度のプロパティ参照はJIT(にせよ何にせよ)コンパイル時にインライン化されるから、
hashValue 参照後 Clone が動くまでの間にファイナライザが動く可能性があるわけか。
>>132 のケースでも hoge.func がインライン化されるような物の場合には、実行中に
別スレッドでhogeがGCされる可能性もあるということか・・・
137デフォルトの名無しさん:2007/05/23(水) 18:59:06
なんで別スレッドとか出てくるのか意味がわからんw
インライン化されようがなんだろうが、自分のスコープ抜ける前に死ぬ訳がないと思うんだが。
138デフォルトの名無しさん:2007/05/23(水) 19:05:34
ローカルでのスコープてのはコンパイル時の概念
実行時には関係ないんだよ
139デフォルトの名無しさん:2007/05/23(水) 19:06:23
まあスレッドはあまり関係ないが
140デフォルトの名無しさん:2007/05/23(水) 19:11:52
>>138
なんか基本から勘違いしてない?
そんなわけないってw

MSDNライブラリに書いてある通り、GCが問題になるのは、
例えば変数がスコープ抜けた後もその変数への参照をアンマネージコードが
保持しているような場合だけだって。
141デフォルトの名無しさん:2007/05/23(水) 20:00:40
>>140
>MSDNライブラリに書いてある通り
msdn の↓の事例について話してるわけだが。
http://msdn2.microsoft.com/ja-jp/library/system.gc.keepalive(VS.80).aspx
142デフォルトの名無しさん:2007/05/23(水) 22:32:57
.net2です。
toolstrip(ツールバー)上に置いたコンボボックスをツールバーの
幅に合わせて、いっぱいまで広げたいのですが、簡単な方法は
ないでしょうか?

ステータスバー上のアイテムならばSpringプロパティがあるのですが。
143デフォルトの名無しさん:2007/05/23(水) 23:29:55
簡単なのはなさそう。
144デフォルトの名無しさん:2007/05/24(木) 00:20:38
>なんか基本から勘違いしてない?
>そんなわけないってw

知らないんなら適当なこというなよ。
ローカルのスコープは実行時には消滅する。
実行時にはメソッド全体でひとつのスコープ。

で、たとえローカル変数のスコープ内でも、最後にそのローカル変数を経由して
参照を使用した場所より後ろでは、その参照はGC対象になる。

さらにJIT最適化により、最後の参照しようが消滅する場合がある。
こうなると、最後のインスタンスメソッド呼び出し最中にはすでにGC対象となっている。
145デフォルトの名無しさん:2007/05/24(木) 00:23:41
世の中、詳しい人がいるもんだな。
146デフォルトの名無しさん:2007/05/24(木) 00:30:54
>>144
C#はスタックフレームとかは作られないの?
147デフォルトの名無しさん:2007/05/24(木) 00:43:28
作られる
148デフォルトの名無しさん:2007/05/24(木) 00:43:46
>>144
タイプミスのせいどうか何が言いたいのかよくわからないけど、
やはり何か勘違いしてるとしか俺には思えない。
149デフォルトの名無しさん:2007/05/24(木) 00:52:28
たとえば

メソッド()
{
Hoge hoge1 = new Hoge();

{ //ここからローカルのスコープ
Hoge hoge2 = new Hoge();

hoge2.Boke();
} //ローカルスコープ終了

hoge1.Bpke();
}

なんてメソッドがあったとして、内側のスコープは実行時にはなくなる。
メソッド全体のスコープしか残らないってのがスコープ云々の話。
150デフォルトの名無しさん:2007/05/24(木) 00:53:15
>>149
hoge1.Bpke();

hoge1.Boke();
の間違いね。
151デフォルトの名無しさん:2007/05/24(木) 00:58:38
で、
メソッド()
{
Hoge hoge = new Hoge();

hoge.Boke();

// いろいろ
}

ってメソッドがあったとして、hoge変数が示してるHogeインスタンスへの参照は、
最後のhoge.Boke()より後ろでは使われてないので、実行時には、
//いろいろ
部分ではすでにHogeインスタンスはGC対象になってる。

さらにJIT最適化により、Bokeがインライン展開されると、
hogeは暗黙のthis参照としてBokeに渡されなくなるため、
Boke実行中にすでにHogeインスタンスはGC対象になってしまう。


ってことを言ってんだ、どこを勘違いしてるのか言ってみろ。
152デフォルトの名無しさん:2007/05/24(木) 01:05:07
メソッドから抜けるまでは、hogeはスコープ内にいるはず、に見えるけど、
実際には最後の参照使用以降はもはや消えてるのと同じ、
hoge変数は消滅してるのと同じってこと。

また本来なら、hoge.Boke呼び出しで、hogeは暗黙のthis参照として
Bokeに渡されるので、Bokeから戻るまではGC対象にならないが、
JIT最適化によりBoke実行中にすでにGC対象になってしまう場合があるということ。
153デフォルトの名無しさん:2007/05/24(木) 01:06:06
そこまできつきつのチューンはしてないと思うけど
154デフォルトの名無しさん:2007/05/24(木) 01:25:02
スコープとか、インライン展開とか、関係の無い話をぐだぐだ言ってるからアホと思われてるんじゃないのか?
サンプルのコメント読めばなにがどうなってるかは明白だと思うんだがw
155デフォルトの名無しさん:2007/05/24(木) 01:36:56
説明してみろ。
なんでHash実行完了前にファイナライザが呼ばれる可能性があるのか。
サンプルのコメントだけでは説明がないだろうが。

だいたいスコープ云々の話を始めたのは俺じゃないわけだが。
おかしなこといってるやつがいるからそれを指摘しただけだよ。
そういう意味では>>149は確かに直接は関係ない話だけどね。

>>151以降は具体的に何が起こるのか説明しただけだ。
アホいうなら関係ないってちゃんと説明してみろ。
156デフォルトの名無しさん:2007/05/24(木) 01:39:26
ほいよ
// The Hash property is slower because it clones an array. When
// KeepAlive is not used, the finalizer sometimes runs before
// the Hash property value is read.
157デフォルトの名無しさん:2007/05/24(木) 01:51:11
いや、インラインは関係ないか。
this参照も最後に使われた以降は消滅するわけだから。
158154:2007/05/24(木) 02:03:40
つまり、あのリンク先の例での肝は ex.Hash; のHash呼び出しだが、
これのコードが、コメントに書かれた動作から推察するに
1.exからHashのアドレス取り出し
2.不要になったexをFinalizationキューに突っ込む
3.Hash処理呼び出し
こうなってるってことだろ

んで、タイミングによってはHash処理が終わる前にGCが動いてデータが読み出せないことがある、と

スコープもインライン展開も関係ないやろ?w
159デフォルトの名無しさん:2007/05/24(木) 02:08:56
もうええわ
160デフォルトの名無しさん:2007/05/24(木) 02:41:45
>>158
違うよ。
インスタンスメソッドではexはthis参照として渡されてる。
でも渡された側でexを使ってないから、JITコンパイルされた結果ではすぐにnullに設しなおされるってことだろ。
この時点でGC対象になり、さらにGCも走った場合、Fキューに入ってファイナライズが走る。

>スコープもインライン展開も関係ないやろ?w
動作時にはスコープは意味ないってのがもともとの話だしょ。
まあどうでもいいけど。

インラインは確かに関係ないな。
161デフォルトの名無しさん:2007/05/24(木) 02:51:57
GC.KeepAlive(ex);でexを使っちゃったら、ガベージされないのって当然じゃね???
正直かわりに Object dummy = ex; って書いておいても同じじゃないのコレ???

ワカランから詳しく説明きぼん。
あ、試してみればいいのか・・・自分で。
162デフォルトの名無しさん:2007/05/24(木) 02:53:11
って書いてから気づいた。最適化で除去されるのか。
163デフォルトの名無しさん:2007/05/24(木) 02:58:48
そう。
GC.KeepAliveは最適化で消されたりしないようになってる。
まあインスタンスメソッド呼び出しとかでもなんでもいいんだけどね。
164デフォルトの名無しさん:2007/05/24(木) 03:00:25
だから本当に必要なことってめったにない。
間違った(あるいは勘違いした)例は結構あるけど。
165デフォルトの名無しさん:2007/05/24(木) 03:06:16
案外GC.KeepAlive()の実装って単に

public int secret;
KeepAlive(Object obj) {
if ("".Equals(obj)) secret++;
}

みたいな感じだったりして。(試してない)
166デフォルトの名無しさん:2007/05/24(木) 03:09:27
む、ダメだ、Stringキャスト発生しそう・・・
どう作ればエレガントかな???
167デフォルトの名無しさん:2007/05/24(木) 03:11:45
>>164
ここなんかそうだね。Close呼んでるならKeepAliveいらないだろって。
間違いじゃないけど蛇足?
ttp://jeanne.wankuma.com/tips/process/mutex.html
168デフォルトの名無しさん:2007/05/24(木) 03:42:29
自分のプログラムから、自分のアイコンを変えたり、
デスクトップの壁紙を変えたりって事はできるのですか?
169デフォルトの名無しさん:2007/05/24(木) 03:42:50
はい。
170デフォルトの名無しさん:2007/05/24(木) 03:52:07
マジですか?
教えてください。
お願いします。
171デフォルトの名無しさん:2007/05/24(木) 03:55:52
いいえ。
172デフォルトの名無しさん:2007/05/24(木) 04:07:15
いやん!
173デフォルトの名無しさん:2007/05/24(木) 04:19:35
>>160でも渡された側でexを使ってないから、
まちがい、hashValueを使用していこう使ってないから、だな。

174デフォルトの名無しさん:2007/05/24(木) 04:22:38
>>167
そこ、以前はとてつもなく間違ってたけど、
今のはちゃんと理解してないな、レベルになったなw。

書いてておかしいと思うんだけどね。

// GC.KeepAlive メソッドが呼び出されるまで、ガベージ コレクション対象から除外される
GC.KeepAlive(hMutex);

// Mutex を閉じる (正しくは オブジェクトの破棄を保証する を参照)
hMutex.Close();

いやいや、おかしいだろw

175デフォルトの名無しさん:2007/05/24(木) 04:25:30
わろうたw
176デフォルトの名無しさん:2007/05/24(木) 09:10:26
すいません。わかりません。

public byte[] Hash { get { return (byte[]) hashValue.Clone(); }}

このコードが実行されてる最中に自身のファイナライザーが
呼ばれるかもしれないということですか?

thisを最後に使ったあとでGC対象になるってことですが、thisのメンバー
であるhashValueはClone()内で参照されているのに消えてしまうんですか?
それともこれはbyte[]だからこうなるという話ですか?






177デフォルトの名無しさん:2007/05/24(木) 09:36:09
>>176
public byte[] Hash { get { byte[] ret = (byte[]) hashValue.Clone(); ret[2] = hashValue[2]; return ret; }} 
または
public byte[] Hash { get { byte[] ret = (byte[]) hashValue.Clone(); GC.KeepAlive(this); return ret; }} 
といったふうにClone後にthisへアクセスすれば現象は発生しない。

これは予想なんだけどArray.Cloneが特別なのではないかと思える。
hashValueからClone先のArrayを作成してコピーする過程がアンマネージ的な手法で動作していて、
そこでthisが使われているとGCが判定できていないのではないだろうか。
178デフォルトの名無しさん:2007/05/24(木) 09:52:43
ちなみに csc /debug でコンパイルすると現象は起きなくなる。
これはJITでの最適化がOFFとなり、参照にnullを代入などしない限り
ファイナライズやGCはスタックの回収時以降となるため。

もし>>177 の仮説があってればMSDNのサンプルとしては特殊ケース過ぎる。
先に出ているMutexとKeepAliveの例の方がサンプルとしてベターだと思う。
179デフォルトの名無しさん:2007/05/24(木) 10:00:13
>>177
なるほど、そう解釈すればなっとくいきます。
180デフォルトの名無しさん:2007/05/24(木) 10:29:52
ちがうよ。
hashValueはGC対象じゃないよ。
hashValueが解放されるのが原因じゃなくて、
exの参照先が解放される際に、ファイナライズで消してしまうから。
原因はあくまでexの参照先の方。
181デフォルトの名無しさん:2007/05/24(木) 10:33:01
おまいら、変な想像で書きすぎだ
182デフォルトの名無しさん:2007/05/24(木) 10:50:49
http://blogs.msdn.com/cbrumme/archive/2003/04/19/51365.aspx
http://blogs.msdn.com/bclteam/archive/2005/03/16/396900.aspx

マネージコードの範囲内なら問題なかったと思い込んでたんだけど、
そうでもなかったっけこれ・・・。
183デフォルトの名無しさん:2007/05/24(木) 11:15:50
>>177
仮説が崩れた。このケースでも発生しとる。
public byte[] Hash { get {
    int length = hashValue.Length;
    byte[] x = new byte[length];
    for (int i=0; i<length; i++) x[i] = hashValue[i];
    // *1
    return x;
}}

*1 のところにGC.KeepAlive(this)やらx[5] = nValue を入れたら起きないが、
x[5] = hashValue[5] だと発生してる。 頭痛いなこれ。
184デフォルトの名無しさん:2007/05/24(木) 11:27:14
欠陥言語だな
185デフォルトの名無しさん:2007/05/24(木) 11:47:39
デストラクタで明示的に配列を消してるからあかんじゃないのか
186デフォルトの名無しさん:2007/05/24(木) 11:50:31
そうすると
コンストラクタ実行中にファイナライザーが呼ばれることもあり得る?
例えその結果を代入するコードを書いても。
187デフォルトの名無しさん:2007/05/24(木) 12:02:23
ふらっとの新スレがたっていないようなのでこちらにおじゃましました。
複数のボタンのクリックで同じ処理をする場合に、VBですと Handles を使って

Private Sub ButtonX_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click
MessageBox.Show("こんにちは")
End Sub

下記のように書けますが、C#では同じようなことはできますでしょうか?
ぜひよろしくお願いします。
188デフォルトの名無しさん:2007/05/24(木) 12:02:37
>>186
コンストラクタの完了前にファイナライザが実行される例。
ttp://d.hatena.ne.jp/NyaRuRu/20060626/p4

あと、結果を代入するかどうかよりも、
その後代入された値が使われるかどうかに着目すべき。
189デフォルトの名無しさん:2007/05/24(木) 12:17:51
>>187
ふらっとの新スレ
http://pc11.2ch.net/test/read.cgi/tech/1179313212/

button1.Click += new EventHandler( buttonX_Click );
button2.Click += new EventHandler( buttonX_Click );

デザイナでやるならドロップダウンから同じイベントハンドラを選択
190デフォルトの名無しさん:2007/05/24(木) 12:18:09
そもそもファイナライズなんてめったに書かんから
頭痛い影響なんてめったに発生しない。
アンマネージのラッパー使うときは起こりやすいが、
大抵using使えるからそれもめったに問題にはならない。
191デフォルトの名無しさん:2007/05/24(木) 12:38:25
>>183
とりあえずよほどの自信がない限り
ファイナライザ中でマネージオブジェクトの操作なんてしないのが得策かと。
頭痛いのはそういうことしちゃう人。

 return (byte[])hashValue.Clone();

こうやって書くからthis云々に思えるけど、
下のような意味だと思えば、フィールドにアクセスした直後からすでに
thisが不要になっていることが分かる。

 byte[] tmp = this.hashValue; // これ以降thisは不要
 // ここでfinalizerが実行されてもおかしくない
 byte[] tmp2 = (byte[]) hashValue.Clone();
 // returnにもthisは不要
 return tmp2;

>>185
正解。
192190:2007/05/24(木) 12:39:56
ごめんコードまちがえた。
正しくはこう。

 byte[] tmp = this.hashValue; // これ以降thisは不要
 // ここでfinalizerが実行されてもおかしくない
 byte[] tmp2 = (byte[]) tmp.Clone();
 // returnにもthisは不要
 return tmp2;
193デフォルトの名無しさん:2007/05/24(木) 12:49:17
そういう問題なの?
ファイナライザが実行されたってことはもうそのメモリにはアクセス
しちゃいけないってことじゃないの?

例外が起きてもおかしくないみたいな。
194デフォルトの名無しさん:2007/05/24(木) 12:51:00
>>189
レスいただきどうもありがとうございます。
ふらっとのスレは全角の#でも検索するべきでした。

それから、教えていただいた方法でできました、ありがとうございました。
助かりました。
195デフォルトの名無しさん:2007/05/24(木) 12:54:00
>>193
ファイナライザが実行されても、
メソッド自身やメソッド実行中のスタック変数のメモリ領域まで解放されるわけじゃないよ。

確かにC++でdelete this;やったことあるような人でないとわかりにくいかもね。
まあ一般には「自身がなければファイナライザを自分で書くな」でいいと思う。
196デフォルトの名無しさん:2007/05/24(木) 13:00:24
>>195
この例だと、hashValueってのはマネージヒープ上にあるんじゃないの?
197デフォルトの名無しさん:2007/05/24(木) 13:04:10
>>196
もしかしてあるクラスのインスタンスが解放されたら、
そのタイミングで全てのフィールドも解放されると思ってる?
そんなことはないんだけど。
198デフォルトの名無しさん:2007/05/24(木) 13:06:19
欠陥ちゃ欠陥だが、CLRがパフォーマンスを理由にあえてそうなってんだから仕方がない。
マネージコードの範囲内ならお行儀良くしていれば良いだけだし、
マネージラッパー書くならSafeHandle(これも万能には程遠いが)使いましょう、と。

>>196
そしてthisはそのメモリを参照しているだけ。
199デフォルトの名無しさん:2007/05/24(木) 13:18:40
>>197,198
ありがとう。やっとわかった。
200デフォルトの名無しさん:2007/05/24(木) 19:23:45
TextBoxに入力されるキーを見て、
それが特定のキーならデータがLinesプロパティに書き込まれるのを阻止したいんですけど、
どうすればいいかわかりません。
誰かご教授お願いします。
201デフォルトの名無しさん:2007/05/24(木) 19:29:14
GCの仕様を知らない馬鹿がいるスレはここですか?
202デフォルトの名無しさん:2007/05/24(木) 19:38:38
いるわけないだろそんなバカ
203デフォルトの名無しさん:2007/05/24(木) 19:43:37
どなたか>>115に関して分かる方いたらお願いします。
204デフォルトの名無しさん:2007/05/24(木) 20:06:21
205デフォルトの名無しさん:2007/05/24(木) 20:06:33
いるわけないだろそんなバカ
206デフォルトの名無しさん:2007/05/24(木) 20:49:06
>>204
KeyPressで捕らえたらe.Handledをtrueにすると反映を阻止できるんですね。
ありがとうございました。
207デフォルトの名無しさん:2007/05/24(木) 21:50:25
は?
208デフォルトの名無しさん:2007/05/24(木) 21:59:04
リンク先くらい見ろよ
209デフォルトの名無しさん:2007/05/25(金) 00:21:24
もしかしてREG_NONEってRegistryKeyクラス使って読めないの???
210デフォルトの名無しさん:2007/05/25(金) 01:19:29
211デフォルトの名無しさん:2007/05/25(金) 01:43:21
レスthx

ぶっちゃけ
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer

IconUnderline(REG_NONE)を読みたいんですよね……

どうも無理っぽいんでAPI使うしかないすかね?
またDllImportが増える。。
212デフォルトの名無しさん:2007/05/25(金) 01:52:40
調べたらREG_NONEのときはデータを無理やり文字列(StringBuilder)にして読もうとするらしい。。
素直にbyte[]で返してくれればいいのに プンプン
213デフォルトの名無しさん:2007/05/25(金) 14:34:41
ファイナライザーでAssertに引っかかっても、別スレッドのせいか
ダイアログが消えてしまいます。どうすればAssertの内容を確認できますか?
214デフォルトの名無しさん:2007/05/25(金) 14:35:26
↑書き忘れました。アプリ終了時の話です。
215デフォルトの名無しさん:2007/05/25(金) 19:51:56
private void listBox1_DragEnter(object sender, DragEventArgs e)
{
 e.Effect = DragDropEffects.All;
}

private void listBox1_DragDrop(object sender, DragEventArgs e)
{
 this.contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
}

ListBoxにD&Dしたときにコンテキストメニューを表示すると
タスクバーが表示するのですが、表示しないように出来ないでしょうか?
216デフォルトの名無しさん:2007/05/25(金) 23:42:05
DataGridView の DataSourece に DataTable を割り当てている状態で
DataTable のセルの値を一度に多数書き換えているんですが
値が書き換わるたびにDataGridViewがソートをしてしまうので非常に重くなってしまいます。

とりあえず、書き換える前にダミーとして空の DataTable を DataSource に割り当てて
書き換えが全て終わった後に、元の DataTable に割り当てなおすようにしてます。
これだと動作は軽くなるんですが、テーブルが一瞬空になってしまうので非常にかっこわるいのです。


DataSource を割り当てたまま DataGridView を一時的に更新停止させる方法はあるのでしょうか?
217デフォルトの名無しさん:2007/05/26(土) 00:08:26
>>215
以前間違えて別スレッドからcontextMenuStripを表示したとき
似たようなことになったが
218デフォルトの名無しさん:2007/05/26(土) 00:58:48
ListBoxを継承して
OnPaintメソッドをoverrideした
カスタムコントロールを作ったんだけどイベントが発生しないです。
なんで?
219デフォルトの名無しさん:2007/05/26(土) 01:06:20
くだすれでも恥ずかしくて聞けないような質問だなあ。。。
もっとも218にはそれが恥ずかしい質問だ、という認識すらないだろうけど
220デフォルトの名無しさん:2007/05/26(土) 01:07:04
ListBox は描画をシステムに丸投げしてるから。
ちゃんと ListBox.Paint にこのイベントは使われないって書かれてる。
221デフォルトの名無しさん:2007/05/26(土) 02:17:45
いい加減にしろ!!
222デフォルトの名無しさん:2007/05/26(土) 03:51:53
ThreadPoolで実行されているスレッドを全て強制終了させるにはどうしたらよいのでしょうか?
223デフォルトの名無しさん:2007/05/26(土) 04:09:52
Environment.Exit
まあThreadPool以外も強制終了されるけどなw
224デフォルトの名無しさん:2007/05/26(土) 04:14:26
↑そういった解答は出ると思ってました。

自分でスレッド管理します。
225デフォルトの名無しさん:2007/05/26(土) 04:34:55
ところでどういう場面で必要になるの?
226デフォルトの名無しさん:2007/05/26(土) 11:32:56
いい加減にしたいときだろ
227デフォルトの名無しさん:2007/05/26(土) 17:55:16
>>216
ソートを一時的にやめたら?
228デフォルトの名無しさん:2007/05/26(土) 21:06:24
素朴な質問だけど、private指定したプロパティって邪道?
要はクラス内部で使うGet,Setメソッドを変数風に定義しよう
としているんだけど。素直にメソッド使っとけって感じ?
229デフォルトの名無しさん:2007/05/26(土) 21:10:48
何の問題もない。
230デフォルトの名無しさん:2007/05/26(土) 21:25:51
多用はしないがときどき使うな
231デフォルトの名無しさん:2007/05/26(土) 21:31:06
全く邪道ではない。
ゲット セットのほうが邪道。
232デフォルトの名無しさん:2007/05/26(土) 21:39:11
C#3.0で自動プロパティが使えるようになったら使いまくるかも
233デフォルトの名無しさん:2007/05/26(土) 21:42:25
c#にはなんで(インデクサ以外の)引数付きプロパティがないんだろう
234デフォルトの名無しさん:2007/05/26(土) 21:48:56
インデクサで実現できるから
235デフォルトの名無しさん:2007/05/26(土) 21:54:27
>>234
脳が足りないお方か?
236デフォルトの名無しさん:2007/05/26(土) 22:03:53
インデクサが付いたインターフェイスを内部クラスで実装すればいいだろ
237デフォルトの名無しさん:2007/05/26(土) 22:32:31
意味がわからない
238デフォルトの名無しさん:2007/05/26(土) 22:41:59
それは頭が悪いだけだろ
239Anders Hejlsbergは神:2007/05/26(土) 23:04:40
神聖なCoBoLの血を引くDelphiを、そしてLispへと融合しつつあるC#を作ったAnders Hejlsbergは神。
240デフォルトの名無しさん:2007/05/26(土) 23:18:34
なんじゃそりゃ
241デフォルトの名無しさん:2007/05/26(土) 23:20:49
いや、Delphiはそんな血は引いてないからw
242デフォルトの名無しさん:2007/05/26(土) 23:25:49
>>233はVisual C++の
property String^ SampleProperty[int]
みたいなことが何でC#に無いかって訊いてるんだろ。
>>236は「最終的に欲しい型をインデクサで返す中間クラスを定義して
それを返すプロパティにすればいい」って言っている。

何で無いのかと訊かれれば、言語設計者の気まぐれじゃね?
243デフォルトの名無しさん:2007/05/26(土) 23:26:39
COBOLの血を引いてるなんて言ったらボコるぞ!
244デフォルトの名無しさん:2007/05/26(土) 23:27:48
引数付きプロパティをVBで組んで一度CLRにコンパイルしてから
C#で逆コンパイルするとどんなコードになるんだろう
245228:2007/05/26(土) 23:32:33
みなさん、レスどうもです。privateでの使い方って聞いた事なかったんで、
文法的にNGなのかと思っていたんですが、試しに書いてみたらすんなり
通ったんだけど、清く正しい書き方かどうか不安になったもんで。
246デフォルトの名無しさん:2007/05/26(土) 23:33:42
サポートされていないものを適切に逆コンパイルできるわけがなかろう
247デフォルトの名無しさん:2007/05/26(土) 23:39:33
>>245
VC#2005に付いてるスクリーンセーバスタートキットで
思いっきり使われてた記憶がある
248デフォルトの名無しさん:2007/05/26(土) 23:43:57
>>246
ILになったものをC#から参照するときどう見えるかは気になるな。
試してないけど
get_プロパティ名(引数)
というメソッドになるんじゃない?
249デフォルトの名無しさん:2007/05/26(土) 23:57:53
DLLにしてC#で使おうとするとどうなるんだろ
「この言語ではサポートされていません」みたいなエラーが出るのかな
250デフォルトの名無しさん:2007/05/26(土) 23:59:27
デフォルトプロパティならC#のインデクサと同じ構文でアクセスできるけど、
その他はアクセサメソッドを直に使うことになるね。
251デフォルトの名無しさん:2007/05/27(日) 00:18:16
>>242
>何で無いのかと訊かれれば、言語設計者の気まぐれじゃね?
気まぐれでは何なので予想してみる。
構文解析上うざいから?まぁなんにしろ評価してバランスがあわん
かったんだろう。
252デフォルトの名無しさん:2007/05/27(日) 00:23:31
言語設計者は間違いなく、俺たちより優秀な奴らがレビューして
決めているから、あきらめて使うしかないよ。
バージョン変わると新しくできる可能性があるかもれないが。
253デフォルトの名無しさん:2007/05/27(日) 00:29:09
>>248
それで正解。
VB で xx.NameProp(1) = "nnnnn"
C#だと xx.set_NameProp(1, "nnnnn");
254デフォルトの名無しさん:2007/05/27(日) 00:35:02
へジの趣味だろ
255デフォルトの名無しさん:2007/05/27(日) 00:40:15
バカなおまいらのためにヘジが気を使ってくれたというのに、おまいらときたら・・・
親の心子知らずとはこのことですな。
256デフォルトの名無しさん:2007/05/27(日) 01:17:19
indexが予約語になったらお前らのソースがコンパイルできなくなるから。
257デフォルトの名無しさん:2007/05/27(日) 01:20:27
258デフォルトの名無しさん:2007/05/27(日) 01:24:26
〜コレクションで実現できるからじゃないかな?
259デフォルトの名無しさん:2007/05/27(日) 01:30:09
そのコレクションを作るのが手間だというのは問題でそ
260デフォルトの名無しさん:2007/05/27(日) 01:51:24
シンタックスとしても仕組みとしても簡単に実現できたとして、
プロパティに引数なんて意味的に変だと思います。
"NameProp" 自体に引数1を渡したいなら「それってメソッドでは」ですし、
NamePropで取得するものに引数1を渡したいなら >>234
C#のインデクサは「そのオブジェクトそのものに引数を渡したい」という
意味が明確に出ていて美しいと思います。
261デフォルトの名無しさん:2007/05/27(日) 10:34:13
名前付きインデクサの話、過去にも何度か出てたな。
どういう結論だっけ、ちょっとうろ覚え。

とりあえず、構文的には、インデクサ自体が
RetType this[ArgType x]
なんだから、this のところを名前に変えるだけで何の苦労もないはず。

過去に出てた話で、俺の覚えてるのだと、
「コレクションを返すプロパティ」と
名前付きインデクサの区別付かないのを嫌ったんじゃないかって。

ヘジが名前付きインデクサなんかよりも
イテレータ構文の方に夢中だったってのもあると思う。
(まあ、イテレータの戻り値は IEnamerable であって、コレクションじゃないけど。)
262デフォルトの名無しさん:2007/05/27(日) 11:04:03
2.0のBackgroundWorkerでちょっとお尋ねしたいんですが、Windowsフォームに
BackgroundWorker開始用のボタン button1、キャンセル用のボタン button2、出力用のテキストボックス textbox1を
作成し、簡単なコードをいれて実行したのですがループの中に
System.Threading.Thread.Sleep(20);
といれておかないとフォームも正しく描画されず、また、キャンセルボタンを押してもスレッドが停止されないのですが
これはこういう仕様なのでしょうか。それとも、実装の仕方を間違えているのでしょうか。

コードは下記のとおりになります:

private void button1_Click(object sender, EventArgs e)
{
 backgroundWorker1.RunWorkerAsync();
}

private void button2_Click(object sender, EventArgs e)
{
 backgroundWorker1.CancelAsync();
}
263デフォルトの名無しさん:2007/05/27(日) 11:05:35
続き

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
 for(int i = 0; i < 23877; i++)
 {
  if(this.backgroundWorker1.CancellationPending)
  {
   e.Cancel = true;
   return;
  }
  
  //System.Threading.Thread.Sleep(20); ←最低でも20msSleepしないと描画されなかったり、キャンセルできなかったり
  backgroundWorker1.ReportProgress(i, i);
 }
}

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
 textbox1.AppendText("line: " + e.UserState.ToString());
}
264デフォルトの名無しさん:2007/05/27(日) 11:06:16
続き2

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
 if(e.Cancelled)
 {
  textbox1.AppendText("Cancelled!");
 }
 else
 {
  textbox1.AppendText("Done!");
 }
}
265デフォルトの名無しさん:2007/05/27(日) 11:09:55
生兵法はケガのもと、ということだろう。
なんで質問する前に自分で調べて考えようとしないのかな。
プログラマとして終わってるとおもうよそういう性格。
266デフォルトの名無しさん:2007/05/27(日) 11:14:31
くだらねぇ煽り入れてる暇があるなら答えてやりな。
267デフォルトの名無しさん:2007/05/27(日) 11:16:44
死んでもイヤだね。
でも別にお前さんが答えることまでは止めないよ。
268デフォルトの名無しさん:2007/05/27(日) 11:16:53
以下、オマエモナーループ
269デフォルトの名無しさん:2007/05/27(日) 11:17:19
>>265
調べてもわからないから聞いているんですが・・・。
DOBONさんや、MSDNでは

重い処理 = System.Threading.Thread.Sleep(10000);

という扱いになっているのでなんとも・・・。
270デフォルトの名無しさん:2007/05/27(日) 11:18:03
>>265
>>267
なんだわからないだけかw  おまえみたいなゴミは死んだほうがマシだな
271デフォルトの名無しさん:2007/05/27(日) 11:18:39
>>262
MSDNにあるサンプルと見比べてみ。
それでもわかんなかったら、相当に注意力が欠如してる。
272デフォルトの名無しさん:2007/05/27(日) 11:23:54
>>269
本当に調べてわからないならプログラミングなんてやらない方が自分のためだと思う。
いや本当に煽りとか悪意とか抜きで、むしろ善意で言ってるつもりだけど。
273デフォルトの名無しさん:2007/05/27(日) 11:26:31
>>272
いるいる、おまえみたいなやつ。
さっさと答えいえばいいのに関係ないことねちねちいう馬鹿w
274デフォルトの名無しさん:2007/05/27(日) 11:37:59
>>273
せめて自分の言葉を自分自身に向けたら?w
脳の不自由なお方だねえ。
275デフォルトの名無しさん:2007/05/27(日) 11:40:28
>>271
ttp://msdn2.microsoft.com/ja-jp/library/system.componentmodel.backgroundworker(VS.80).aspx

MSDNのサンプルをみながら、処理部分を別ループにだしてみたりいろいろしてみたんですが
textbox1.AppendTextのみ描画されて、ボタンは描画されないままでした(上の結果と同じ)

ちょっと煮詰まってきたので休憩してから再度取り組んで見ます。
276デフォルトの名無しさん:2007/05/27(日) 11:41:27
>>274
はぁ? おまえ小学校からやりなおしたほうがいいぞw
277デフォルトの名無しさん:2007/05/27(日) 11:43:27
荒れてますね
278デフォルトの名無しさん:2007/05/27(日) 11:48:21
>>275
何も学ばずに再度取り組んでも絶対に同じこと。
君はそもそもスレッドの概念がまったく理解できてないんだろ。
せめて@ITやCodeZineの解説に書いてあることぐらい理解してからでなきゃ
何やったって意味ないね。

BackgroundWorkerってのは(個人的には存在意義が疑問だが)
スレッドを簡単に使うためのものであってスレッドを理解してない人間でも
スレッドを使えるようにするものではないんだよ。
279デフォルトの名無しさん:2007/05/27(日) 11:50:45
>>278
荒れるだけだし勿体つけずに教えてやれよ。
280デフォルトの名無しさん:2007/05/27(日) 11:54:13
>>278
何も学ばずにって、教えてくださいっていっても>>265とか>>271とか
答えと関係ないレスしか返ってこない世の中じゃ・・・。
281デフォルトの名無しさん:2007/05/27(日) 11:54:37
お前が教えてやれよw
282デフォルトの名無しさん:2007/05/27(日) 11:58:05
つまりここに分かる奴はいないわけだw
283デフォルトの名無しさん:2007/05/27(日) 12:07:00
そういうことになってもいいなw
284デフォルトの名無しさん:2007/05/27(日) 12:07:31
それ、.NETのバグだよ
285デフォルトの名無しさん:2007/05/27(日) 12:08:30
自分じゃ教えられないから他人に教えてやれよって怒ってたのかよw
286デフォルトの名無しさん:2007/05/27(日) 12:16:51
できない奴のパターン

自分では分からない質問が投稿されるが、かっこよく答えてみたいと思う。

「自分で調べろ」と一人前ぶっていってみる。

「調べてもわからない」から教えてくださいと返ってきていい気になる。

「サンプルと比べろ」とさもわかったかのように言って見るも、自分も必死に探す。

自分が挫折しかけたので「わからないなら諦めろ」と煽ってみる。

サンプルを張られ、みてみるがサンプルすら理解できない。

「理解してないなら意味がない」といって見る。

まわりに「おまえ本当はわかってないだろ」と突っ込まれる ← いまここ
287デフォルトの名無しさん:2007/05/27(日) 12:48:38
>>262のコードはなんら間違ってないが、描画は時間のかかる処理ってことを忘れてないか。
おまえさんのコードだとBackgroundWorkerは黙々と処理をこなしていくが、backgroundWorker1_ProgressChangedの
処理が追いつかずに、処理待ち状態(キューにスタックされた状態)になる。
つまり、スタックされた描画処理のほうにマシンパワーをとられてしまいスレッドの意味がなくなってしまうというわけ。
その描画に使われる時間が>>262のマシンだと20ミリ秒なんだろう。
288デフォルトの名無しさん:2007/05/27(日) 12:53:51
>>278は見当違いもいいところだなw ワロスw
スレッドの概念を学んでから氏んだほうがいいw
289デフォルトの名無しさん:2007/05/27(日) 12:54:13
>>287
適当なこと言うなよ。
>>262のコードは、単にシンタックスレベルでの誤りがないというだけ。
意味論的には、こんなコードならBackgroundWorker(というかスレッド)を使う意味がない。

要はスレッドが何か分かっていない、ということだ。
スレッドが何か分からずにどうしてそれを使おうと思うのかは不可解な点だが。
290デフォルトの名無しさん:2007/05/27(日) 12:55:22
>>289
おまえBackgroundWorkerわかってる?
291デフォルトの名無しさん:2007/05/27(日) 12:59:23
292デフォルトの名無しさん:2007/05/27(日) 13:00:24
278 289 涙目

そして必死の一言↓
293デフォルトの名無しさん:2007/05/27(日) 13:01:26
ど、ど、どうていちゃうわ!
294デフォルトの名無しさん:2007/05/27(日) 13:02:17
ワロス
295デフォルトの名無しさん:2007/05/27(日) 13:04:07
またいつものヤツが暴れてるかよ…
296デフォルトの名無しさん:2007/05/27(日) 13:04:55
>>289
ん?
では具体的にどこが間違っているか指摘してみ。
できないなら黙れ。
297デフォルトの名無しさん:2007/05/27(日) 13:08:26
ねぇ、なんでこの時期に湧く訳?
298デフォルトの名無しさん:2007/05/27(日) 13:09:45
抽象論ではぐらかそうとしてるな。久々にワロタ。
299デフォルトの名無しさん:2007/05/27(日) 13:09:53
注:私の有意義な発言に対し、自分の理解不足を棚に上げ煽り、1行レス
で返す方が多いようですが、そのような方はスレの皆様を混乱させるだけでなく
スレの雰囲気を崩しかねないのでお黙り下さい。
また質問者は回答者に知識を披露する場を与える貴重な存在なので、
質問者を見下した回答、あまりにも儀礼を欠いた回答も厳重に禁止いたします。
忙しい中、少ない時間の合間を縫って質問しに来てるわけですので、
その辺ご承知下さい。なお、当方が質問に対して有意義な答えであると
判断した方には評価いたしますので各自よく調べ、よく考え正確な回答をするように。
300デフォルトの名無しさん:2007/05/27(日) 13:11:22







301デフォルトの名無しさん:2007/05/27(日) 13:12:30
>>289まだー?
302デフォルトの名無しさん:2007/05/27(日) 13:15:11
これはひどいwwwww
303デフォルトの名無しさん:2007/05/27(日) 13:16:20
方法論的にはProgressChangedの処理が終わるまで
MonitorとかでDoWorkを待機させればいいわけ?
304デフォルトの名無しさん:2007/05/27(日) 13:18:18
>>296
>>289で必要十分だと思うが敢えて言葉を替えるなら、
これでは実質的に(バックグラウンドではなく)UIスレッドで処理を実行しているのと
何も変わらない、ということ。

まあ、>>289に納得できないのなら言葉を替えようが同じことだろうけど
305デフォルトの名無しさん:2007/05/27(日) 13:21:27
>>304
もしかして本気でBackgroundWorkerわかってない?
306デフォルトの名無しさん:2007/05/27(日) 13:22:10
結局、DoWorkで時間がかかる処理をやってないから意味がない
って言ってるだけだろ
なんでわざわざややこしくする
307デフォルトの名無しさん:2007/05/27(日) 13:22:13
念のためもう少し補足すると>>262のコードなら、
UIスレッドでビジーループまわしてApplication.DoEventsしてるのと等価になってしまうね。
308デフォルトの名無しさん:2007/05/27(日) 13:27:15
>>306
言いたいことは分かるけど、それが問題の本質じゃないだろう。
より正確に、頻繁にControl.BeginInvokeしてるのと同じだから問題だ、
と言いたいのなら同意するよ。
309デフォルトの名無しさん:2007/05/27(日) 13:36:17
話はわかったがそれは>>287が言ってることだろ
310デフォルトの名無しさん:2007/05/27(日) 13:44:04
で、どうすれば・・?
311デフォルトの名無しさん:2007/05/27(日) 13:45:34
このスレでは「どうすればいい」という具体的な答えは書き込めません。
全員知ったかなのでえらそーなことを回りくどく書くだけです。
312デフォルトの名無しさん:2007/05/27(日) 13:48:33
289で必要十分だなんて、そっちのほうが心配になりました。
313デフォルトの名無しさん:2007/05/27(日) 13:52:41
で、>>287の言うとおりでどうにもならないの?
314デフォルトの名無しさん:2007/05/27(日) 13:54:12
どうにもならないとは言ってない
315デフォルトの名無しさん:2007/05/27(日) 13:57:01
>>263の //System.Threading.Thread.Sleep(20);
のタイミングで「時間のかかる処理」を実行すればいいだけ
>>287が,0から23877までの数字を表示することを「時間のかかる処理」と
認識してるならそれは間違い。
316デフォルトの名無しさん:2007/05/27(日) 13:57:05
で、どうすれば・・?
317デフォルトの名無しさん:2007/05/27(日) 13:58:30
>>315
わかってないね、あんたもw

そこで「時間のかかる処理」を実行しても、Sleepをいれなきゃ描画されないの。
ためしにやってみ。
318デフォルトの名無しさん:2007/05/27(日) 14:01:15
で、どうすれば・・・?
319デフォルトの名無しさん:2007/05/27(日) 14:02:17
Sleepいれるか、頻繁に描画するのやめればいい
320デフォルトの名無しさん:2007/05/27(日) 14:08:33
>>263の23877が「兄さんバナナ」というのが問題。
321デフォルトの名無しさん:2007/05/27(日) 14:15:10
アッー!
322デフォルトの名無しさん:2007/05/27(日) 16:07:19
もうスルーしてくれよ。
ウザいよあいつ。
323デフォルトの名無しさん:2007/05/27(日) 16:58:56
>>215です。

>>217
SharpDevelop1.1と.NET Framework1.1を入れて
Context Menu StripじゃなくContext Menuで同じ事をすると
タスクバーは表示されませんでした。

どうやらContext Menu Stripのバグのようです。
324デフォルトの名無しさん:2007/05/27(日) 18:01:17
ReportProgressって同期?非同期?どっちだっけ?
普通に考えたら非同期だとは思うけど

もし普通に思いつくような実装なら、ペンディングされた分は省かれるだろうしな…
まあとりあえずレポート上げるのはせめて100ms程度は間隔空くぐらいのが無難だろ。

もし同期だったりペンディングされてる分も省かれないんなら、(そんな実装ではないとは思うが)
レポート間隔をきちんと空けないと、スレッドの意味なしになったり処理と描画が破綻しかねない。
325デフォルトの名無しさん:2007/05/27(日) 18:05:20
あぁもちろん例え非同期の実装だとしてもある程度空けるべきなのは同じだが
326デフォルトの名無しさん:2007/05/27(日) 19:34:27
>>287で答えで正解だろ。
ReportProgressは非同期だろうが、描画であぼんしてるとおもわれ。
327デフォルトの名無しさん:2007/05/27(日) 20:49:47
ふらっと向きの質問かもしれないけど
ReportProgress内でUIスレッドで処理されるのものが多い場合、
処理しきれないメッセージは破棄されるの?
Application.DoEventsするとスタックオーバーフローしたりするじゃないですか
328デフォルトの名無しさん:2007/05/27(日) 20:55:14
ReportProgressはどうも単にスレッドの切り替えでProgressChangedを発火するだけっぽいから
どんどんたまっていってしまいそうだな。
単純に描画がまったく間に合わなくなる。

非同期ではあるがペンディングになった分は省かれたりしない。
329デフォルトの名無しさん:2007/05/27(日) 20:57:19
あぼんとかなんとか、大まかというかガサツな思考だなそれ。
だから違うって何度も言ってるだろうに

バックグラウンドの処理が所期のパフォーマンスを上げない、ということを
問題にしているのであればそういう回答でもいいかもしれないが、
はて、262はそう言ってるのかえ?w

262の「問題」とは、別スレッドでやってるバックグラウンドの処理にSleepをかまさないと
UIのレスポンスが停止する、というものでしょうが。
330デフォルトの名無しさん:2007/05/27(日) 20:57:21
ReportPrrogressは十分に間隔をあけて呼べ。
ProgressChangedでの描画ではあまり重いことはするな。
以上。
331デフォルトの名無しさん:2007/05/27(日) 21:00:25
>>329何いってんのかよくわからんが、
描画処理がたまって操作を受けつけるまで時間がかかってしまうってこったろ。
つまりキャンセルとかもすぐにはできない、あたりまえ。

ってか>>262だとあっという間に全部ReportProgressを実行しきって処理も完了してしまう。
そのあと、一生懸命たまった分の描画を行っている。

キャンセルする暇なんかねーよ、当たり前。
332デフォルトの名無しさん:2007/05/27(日) 21:02:40
あ、何万回もやってんだっけか、それならあっという間には終わらんかもしれんが、
まあ起こってることはおんなじようなもんだ。
333デフォルトの名無しさん:2007/05/27(日) 21:03:58
>>327
その場合はたぶんスレッドプールにキューされるまで待たされるんだろうね。
確認したわけじゃないが。
334デフォルトの名無しさん:2007/05/27(日) 21:04:25
ProgressChangedの処理のためのメッセージがあっという間に大量にたまってしまうから、
キャンセルなんて押してもずっと順番待ちの後ろになってしまうってことね。
すでに全部ReportProgressし終わってたら、もうキャンセルもできないわな。
335デフォルトの名無しさん:2007/05/27(日) 21:06:39
>>329
おまえもう出てこなくていいよw
頭悪すぎる
336デフォルトの名無しさん:2007/05/27(日) 21:08:24
ってか>>329誰に言ってんだ?ってかどれに言ってんだ?
337デフォルトの名無しさん:2007/05/27(日) 21:08:54
クロールとかスキャンとかしてる最中に
そのファイルパスを表示したいじゃないですか。
どうせどんな動体視力の持ち主でも見えないけど。

label1.Text = "C:\hoge\hoge";
とか
lable2.Text = iCounter.ToString();
とかやるじゃないですか。

プログレスバーも表示したいじゃないですか。
progressBar11.Increment();

非力なマシンだったら破綻するわけですか?
338デフォルトの名無しさん:2007/05/27(日) 21:12:37
>>336
329の直近で「あぼん」というワードが出てくるスレ。
というか、本気で聞いているなら・・・いや何でもないw
339デフォルトの名無しさん:2007/05/27(日) 21:12:49
非力じゃなくても破綻する(間隔が短すぎたらの話)。
直接描画したら多少はいけるかもね。

通常の操作で描画させる限り、ある程度間隔をあけないと破綻する。
340デフォルトの名無しさん:2007/05/27(日) 21:13:37
>>338あん見落としてたのん
341デフォルトの名無しさん:2007/05/27(日) 21:17:43
>>337
ああいうのはそもそも「ハングアップせずにちゃんと動いてるよ」という
ポーズ以上のものではないんだよ。
だから当然(普通は)馬鹿正直に全部表示したりしないよ。

俺はそもそもBackgroundWorkerなんて初心者に中途半端に媚びた「いらない子」
だと思ってるんで余計にそうおもうんだけど、こういう処理はスレッドをクラスで
ラップしてUIスレッド側からタイマイベントか何かでプロパティ経由で
状態をアクセスするようにした方がむしろ直観的なように思う。
342デフォルトの名無しさん:2007/05/27(日) 21:20:19
それをちゃんとできないのがいっぱいいるから、
簡単にできるようにBackgroundWorkerつけたんだろ。

簡単という意味では悪いもんではないと思うが。
まあそれでも使いこなせないのはいっぱいいそうだな。

下手にラップしてるおかげで、余計になにも考えずに使って
破綻する原因にはなってるかもしれん

343デフォルトの名無しさん:2007/05/27(日) 21:33:32
>>323
タスクバーが表示される、ってのは意味不明でしかない。
タスクバーはデフォルトでは常に表示されてるものじゃないのか。
344デフォルトの名無しさん:2007/05/27(日) 21:33:44
なにこの気持ち悪いレスの嵐w

初心者が質問したら「プログラミングやめろ」とか次元の違う答えを返し、
そもそも質問の本質とは異なるところで「これは重い処理ではない」と揚げ足取りをし、
原因がわかったところで「だからこういう機能はいらないのに」とか意味不明なことを語りだし
さらには解決したことをねちねちと「そこが問題ではない」と穿り返す。
345デフォルトの名無しさん:2007/05/27(日) 21:40:21
>>343
ContextMenuStripってのは普通のウィンドウだから
なんかの拍子でたまにタスクバーにボタンが表示されたりするんだよ。
特殊なことしないとそうならないけど。
346デフォルトの名無しさん:2007/05/27(日) 21:41:16
周りの空気読めてないプログラマっておおいからな。
むしろ、読めるほうが少ないw
347デフォルトの名無しさん:2007/05/27(日) 21:43:40
草生やしてるのは同一人物?
348デフォルトの名無しさん:2007/05/27(日) 21:45:45
>>343
まぁ>>215を試してからレスしろって事だな。
解決策は知らんけど。w
349デフォルトの名無しさん:2007/05/27(日) 21:47:32
試しても異常な点は見られなかったわけだが。
350デフォルトの名無しさん:2007/05/27(日) 21:48:24
異常な点は見つからなかったとかえらそうだな。
眼科いけよ。
351デフォルトの名無しさん:2007/05/27(日) 21:48:26
今夜はこのスレですか。いつもお疲れ様です
352デフォルトの名無しさん:2007/05/27(日) 21:49:18
ここの平均年齢って何歳なんだろうな
353デフォルトの名無しさん:2007/05/27(日) 21:52:15
小学三年生です。
354デフォルトの名無しさん:2007/05/27(日) 21:57:31
単純に平均とっても意味なさそう
355デフォルトの名無しさん:2007/05/27(日) 22:35:27
それでは分散もお願いします><
356デフォルトの名無しさん:2007/05/27(日) 22:49:55
いや、ここは個人の偏差値を言ってもらおうか
357デフォルトの名無しさん:2007/05/27(日) 23:03:39
じゃあ俺65くらいがいい
358デフォルトの名無しさん:2007/05/27(日) 23:06:04
俺は34で
359デフォルトの名無しさん:2007/05/28(月) 16:17:20
けんかするのやめろよ。
頼むからこういうスレくらいはマターリ進行しようぜ。
360デフォルトの名無しさん:2007/05/28(月) 17:30:59
質問スレは荒れる
361デフォルトの名無しさん:2007/05/28(月) 17:36:17
荒れるっていうか、馬鹿ばっかだし。

まさに

344 名前:デフォルトの名無しさん [sage] 投稿日:2007/05/27(日) 21:33:44
なにこの気持ち悪いレスの嵐w

初心者が質問したら「プログラミングやめろ」とか次元の違う答えを返し、
そもそも質問の本質とは異なるところで「これは重い処理ではない」と揚げ足取りをし、
原因がわかったところで「だからこういう機能はいらないのに」とか意味不明なことを語りだし
さらには解決したことをねちねちと「そこが問題ではない」と穿り返す。
362デフォルトの名無しさん:2007/05/28(月) 18:38:18
質問者が低姿勢で逆切れしないかぎり、そうそう荒れないんだけどな。
上級者きどり回答者どうしがケンカを始めるときもあるが。
363デフォルトの名無しさん:2007/05/28(月) 18:59:42
はいはいまんこまんこ
364デフォルトの名無しさん:2007/05/28(月) 19:09:18
荒れる荒れないの話題でスレを荒らさないでください><
365デフォルトの名無しさん:2007/05/28(月) 19:33:16
何かあるとすぐプログラマ止めろとか素っ頓狂なことを抜かす
約一名の人がいなくなれば荒れないと思います><;
366デフォルトの名無しさん:2007/05/28(月) 20:49:48
367デフォルトの名無しさん:2007/05/28(月) 20:50:34
自己中荒らしはこちらへ。
隔離スレ

C♯, C#相談室 Part34
http://pc11.2ch.net/test/read.cgi/tech/1162467959/
368デフォルトの名無しさん:2007/05/28(月) 21:04:41
質問者が高飛車で逆切れしないかぎり
369デフォルトの名無しさん:2007/05/28(月) 22:35:20
ツールチップをプログラマ側のタイミングで表示するにはどうすればいいの?
370デフォルトの名無しさん:2007/05/28(月) 22:43:52
プログラマ側のタイミング、とは?
371デフォルトの名無しさん:2007/05/28(月) 22:49:17
あっちこっちのスレで意味不明の質問ばかりしてる奴って同一人物?
372デフォルトの名無しさん:2007/05/28(月) 22:58:33
少なくとも同一レベルの頭脳を持つ人物
373デフォルトの名無しさん:2007/05/28(月) 23:05:33
ひょっとして369 = 371?
だとしたらせっかく善意で聞いてるのに煽りか何かだと思ったのかな?w

>>369のような文章で自分の疑問が伝わると本気で思っているのなら
(まあ思っているから、かくのような粗末な文章を書くのだろうが)
ちょっと知的レベルに問題あるぞ。
374デフォルトの名無しさん:2007/05/28(月) 23:12:34
どいつもこいつも意味不明。
誰一人、読む人間のことを考えて文章を書いちゃいない。

俺もだけど。
375デフォルトの名無しさん:2007/05/28(月) 23:35:39
>>369
ToolTipのメンバをMSDNでよく眺めてみな。特にメソッド
376デフォルトの名無しさん:2007/05/29(火) 00:04:25
ツールチップのような極めて機能が限定されているもので
タイミングといえば「表示」しかないような気がするのだが…
オレがエスパーなのか?
377デフォルトの名無しさん:2007/05/29(火) 00:34:06
質問者に意味不明なところを確認しても答えない質問者はスルーしたほうがいい。
378デフォルトの名無しさん:2007/05/29(火) 01:27:25
>>369程度の意味が汲めないようなら外に出るのやめた方が良いと思うよ。
379デフォルトの名無しさん:2007/05/29(火) 02:43:21
Showメソッドのオーバーロードを調べろ

の一行で済むのにね
380デフォルトの名無しさん:2007/05/29(火) 03:05:36
ListViewで簡易エクスプローラを作成したいんですが、ファイルの種類の名称は
どのように取得すればよいか教えてください><
「テキストファイル」とか「ファイルフォルダ」とか
381デフォルトの名無しさん:2007/05/29(火) 03:18:39
Shell32をCOMから叩けばいいと思うよ。

http://www.atmarkit.co.jp/fdotnet/dotnettips/591mp3tags/mp3tags.html
382デフォルトの名無しさん:2007/05/29(火) 08:12:00
>>379
ツーツチップが「何か」を知っていて、かつ実際に使ったことがあれば、
そんなに単純には考えないはずだと俺は思うけどね。
383デフォルトの名無しさん:2007/05/29(火) 10:43:37
>>382
でたw 俺様ルール。
プログラマによくいるんだよね。俺の常識=世間の常識とかおもってる馬鹿。
それにおまえがどう思ってるとかいちいち書かずに、渋らずに質問に答えりゃいいのに。

質問したやつが何をもとめているかを考えてみろよ。
おまえが思ってることを知りたかったら「>>382の思いを語れ」ってレスつくだろw
>>344を100回読んで半年ROMれや
384デフォルトの名無しさん:2007/05/29(火) 10:49:09
バカさらしあげ
385デフォルトの名無しさん:2007/05/29(火) 10:50:49
↑馬鹿が自分で「さらしあげ」^^

↓悔しさの一言
386デフォルトの名無しさん:2007/05/29(火) 11:57:16
C#でマンコを開発したいのですがどうすればいいですか?
387デフォルトの名無しさん:2007/05/29(火) 14:43:32
そんな事より俺のアナルにコショウ瓶をぶち込んでくれないか?
388デフォルトの名無しさん:2007/05/29(火) 16:35:49
>>386
Manko
{
System.Console.Write("マンコ完成");
}
389デフォルトの名無しさん:2007/05/29(火) 17:48:26
>>388
コンパイル通らないんじゃね?
390デフォルトの名無しさん:2007/05/29(火) 18:03:10
public class Manko
{
391デフォルトの名無しさん:2007/05/29(火) 18:16:40
ゆとり世代のバカっぷりは半端じゃないな。
392デフォルトの名無しさん:2007/05/29(火) 18:33:24
ゆとり世代とか言ってるが、ゆとり教育っていうのは
(本格的に始まったのは中曽根内閣以降だが)70年代から始まってることを
知らないお前さんも十分馬鹿だろうw

まあまず間違いなく、その意味ではお前さんだって「ゆとり世代」なんだよw
知らぬは本人ばかりなり。

いや勘違いしてもらっては困るが、383以降の愚劣なレスを書いてる人間を
肯定しているわけではないからね。
393デフォルトの名無しさん:2007/05/29(火) 19:00:13
ゆとり教育=ゆとり世代ではないですよ。
394デフォルトの名無しさん:2007/05/29(火) 19:03:16
そりゃあそうだろう。
要するに「ゆとり世代」みたいな言葉を好んで使う人間のメンタルというのは
「自分以外はみんな馬鹿」だからな。

いや、厳密にはちょっと違う。
こうい人間のメンタルをより厳密に言えば、『「自分以外はみんな馬鹿」だと思いたい』だな
395デフォルトの名無しさん:2007/05/29(火) 19:07:12
解釈が特殊すぎて着いていけません。
396デフォルトの名無しさん:2007/05/29(火) 19:11:10
>「自分以外はみんな馬鹿」
そうじゃなくて「お前そんな事も知らないのかよ」だよ。
397デフォルトの名無しさん:2007/05/29(火) 20:12:19
>>392 = >>394
でたw 俺様ルール。
プログラマによくいるんだよね。俺の常識=世間の常識とかおもってる馬鹿。
それにおまえがどう思ってるとかいちいち書かずに、渋らずに質問に答えりゃいいのに。

質問したやつが何をもとめているかを考えてみろよ。
おまえが思ってることを知りたかったら「>>394の思いを語れ」ってレスつくだろw
>>344を100回読んで半年ROMれや
398デフォルトの名無しさん:2007/05/29(火) 20:23:22
意味がわからない。
399デフォルトの名無しさん:2007/05/29(火) 20:28:25
というか、>>397は寂しい奴が構ってほしさネタでやってるとかではなく
どうも本格的に頭おかしい気がする。

なるほど、俺様ルールが悪いんだと仮定しよう。(俺は認めないがね)
しかし、「俺様ルール」というのはまさに397の書いているようなことなはずだが、
そんな簡単な理屈も分からないのだろうか。

というか、質問した奴って誰なんだろう?w
400デフォルトの名無しさん:2007/05/29(火) 20:29:48
この話どーでもよくね?
401デフォルトの名無しさん:2007/05/29(火) 20:30:32
うん。
402デフォルトの名無しさん:2007/05/29(火) 20:34:20
せめてC#語でやろうぜ
403デフォルトの名無しさん:2007/05/29(火) 21:46:49
まーた騒いでるのかw
404デフォルトの名無しさん:2007/05/29(火) 22:03:36
>>386
一瞬、コンマを空目しちゃったんだろうと勘違いして
随分、2ちゃんに毒されちまったなぁとか思っちまったじゃねぇか。
405デフォルトの名無しさん:2007/05/29(火) 22:11:16
>>387-390をみてふと思ったんだが
manko.Insert(chinko);と
chinko.Insert(manko);のどっちが自然?
406デフォルトの名無しさん:2007/05/29(火) 22:13:41
前者
407デフォルトの名無しさん:2007/05/29(火) 22:21:07
前者なら コンテナ.Insert(要素); と同じ形になる。
408デフォルトの名無しさん:2007/05/29(火) 22:54:30
>>405
両方とも不自然。
He.Insert(凸,凹)
409デフォルトの名無しさん:2007/05/29(火) 23:19:03
>>408
それじゃHeに属さない凸を指定できてしまうだろw
410デフォルトの名無しさん:2007/05/29(火) 23:22:42
>>399
おまえあたまおかしくね?
411デフォルトの名無しさん:2007/05/29(火) 23:22:49
God.Connect(凸,凹);
412デフォルトの名無しさん:2007/05/29(火) 23:23:39
>>410
しーっ、かまっちゃいけません
413デフォルトの名無しさん:2007/05/29(火) 23:24:14
>>409
Heに属してなくてもいいじゃないか。
414デフォルトの名無しさん:2007/05/29(火) 23:25:18
>>409
またイチャモンつける
氏ねよ
415デフォルトの名無しさん:2007/05/29(火) 23:27:09
やだよ
416デフォルトの名無しさん:2007/05/29(火) 23:27:32
>>415
まじきもーい
417デフォルトの名無しさん:2007/05/29(火) 23:28:41
それは偏見だ
418デフォルトの名無しさん:2007/05/29(火) 23:28:51
>>415
まじくさーい
419デフォルトの名無しさん:2007/05/29(火) 23:29:55
>>416
まじやばーい
420デフォルトの名無しさん:2007/05/29(火) 23:31:00
とりあえずおまえは消えろ、な。
空気よめてなさすぎなんだよw
友達いねーだろ? いい加減気付けよ ↓
421デフォルトの名無しさん:2007/05/29(火) 23:35:25
知ってるよん
422デフォルトの名無しさん:2007/05/29(火) 23:36:33
やっべ!こいつまじ臭い↑
なにこの体臭。おまえ風呂はいってんのか?
2chで必死になってる暇があったら日光浴して殺菌しろよ。
脳みそだけじゃなく全体的に腐ってんぞ
423デフォルトの名無しさん:2007/05/29(火) 23:44:13
>>421,422
いい加減やめたら。
ロムってたけどうざくなってきた。

取り敢えず どれが自分のレスか書いたら?
その中で自分の代表作のレスあげてほしいな。
424デフォルトの名無しさん:2007/05/29(火) 23:45:46
>>423
自作自演ってたのしい?
425デフォルトの名無しさん:2007/05/29(火) 23:48:42
もちろん
426デフォルトの名無しさん:2007/05/30(水) 01:13:11
現在Visual Studio 2005 C#にてプログラムを作成しているのですが、スレッドからのフォームの作成は不可能なのでしょうか?

下記のような感じでプログラムを作ったのですが、子フォームの枠が出たままフリーズしてしまいます。どうしてもスレッドからフォームを新規作成したいのですが、何かやり口はあるのでしょうか?

private void MainForm_Load(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
// DoWorkイベントハンドラ
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (m_Done)
{
// ここで、なんらかの処理をして条件に合えばフォームを作成
if( .....)
{
Form_Child fc = new Form_Child();
fc.show();
}
}
}
427デフォルトの名無しさん:2007/05/30(水) 01:15:50
どうしてもって言われても必然性感じられんし。
なんでメインスレッドで表示させちゃいかんの?
428デフォルトの名無しさん:2007/05/30(水) 01:21:16
具体的には、チャットのプログラムを作成してまして、DoWorkのメソッド内でメッセージを常時待ち受けて、会話開始のメッセージがきたらチャットウィンドウを新規作成するようにしたいのです・・
429デフォルトの名無しさん:2007/05/30(水) 01:37:26
ListBoxに表示している項目の行区切りに
線を描画したいです。

Paintイベント無いみたいだし、なんか方法ない?
430デフォルトの名無しさん:2007/05/30(水) 01:37:32
if(.....)のスコープ抜けたらfcへの参照が消えるけど?

たしかに必然性が感じられない
そのフォームの扱いに困るし
メインスレッドに通知してそっちで作った方がいいっしょ

LimeChatとやらのモドキを作ってる方ですか?
431デフォルトの名無しさん:2007/05/30(水) 01:38:17
>>429
DrawItemイベント
432デフォルトの名無しさん:2007/05/30(水) 01:58:23
>>428
チャットウィンドウの作成をメインスレッドに委託すればOK


delegate void DelegateShowFormChat();

class Chat
{
Form form;
public Chat(Form form)
{
this.form = form;
Thread t = new Thread(Run);
t.Start();
}

void Run()
{
DelegateShowFormChat dele = new DelegateShowFormChat(ShowFormChat);
form.Invoke(dele); // メインスレッドに委託
}
void ShowFormChat()
{
FormChat formChat = new FormChat();
formChat.Show();
}
}

上手いやり方かどうかはわからないけど
これをメインフォームから
Chat chat = new Chat(this);
で呼び出せば別スレッドからメインスレッドにウィンドウを作らせることが可能
433デフォルトの名無しさん:2007/05/30(水) 02:03:56
TabControl.ShowToolTips = true;
とした場合、ツールチップの表示時間とかは細かく設定できないんでしょうか?
434デフォルトの名無しさん:2007/05/30(水) 07:05:13
>>432
ありがとうございます。ちょっと試してみます。
435デフォルトの名無しさん:2007/05/30(水) 10:52:33
WeakReference(object, true) がどういう動作をするのか教えてください。
MSDNにそれらしい記述はあるのですが、何を書いてあるのかさっぱりです。
>WeakReference オブジェクトは、終了後にターゲットへの参照を維持するかどうか、
>つまり、弱い参照によりターゲットの再生を追跡するかどうかを指定できます。
>再生を追跡しない弱い参照は、"短い弱い参照" と呼ばれます。
>再生を追跡する弱い参照は、"長い弱い参照" と呼ばれます。
436デフォルトの名無しさん:2007/05/30(水) 10:55:25
分からないなら使わないほうがいい
それに使う場面なんて通常はないし
437デフォルトの名無しさん:2007/05/30(水) 13:19:15
あるクラスを指しているTypeがあるとしてそのクラスがあるInterfaceを継承しているか調べたいんですが、エレガントな方法ありますか?
それらしいメソッド見つからなくてIsSubClassOf試してみたけど撃沈・・・orz
438デフォルトの名無しさん:2007/05/30(水) 13:58:47
ファイナライザで復活したオブジェクトをさらに追跡すりかどうか
普通は使う必要はない
439デフォルトの名無しさん:2007/05/30(水) 14:10:40
>>437
オブジェクトじゃなくTypeとinterfaceを調べるなら、スマートな方法はなさそうです。
Type#GetInterfaces使うしかないっかな。

>>438
普通じゃないケースというのは具体的にどういう時使うのだろう?
440デフォルトの名無しさん:2007/05/30(水) 14:32:11
>>439
.NETじゃなくてJavaの話だけど、
GC有りの言語で特殊な参照が役に立つ例。
ttp://blogs.wankuma.com/kacchan6/archive/2007/04/17/71882.aspx
441デフォルトの名無しさん:2007/05/30(水) 14:42:07
>>440
話題になってるのは単純な弱参照のことじゃなくて長い弱参照。
GCの対象になってファイナライザが動いて、それでいてメモリがまだ回収されてないときに
強参照が回復するとオブジェクトが復活するってことだよな。
使い道が不明だなこりゃ。
442デフォルトの名無しさん:2007/05/30(水) 18:09:32
>>437
typeof(ISample).IsAssignableFrom(type)は?
443デフォルトの名無しさん:2007/05/30(水) 18:16:59
>>442 m9(゚д゚)っ ソレダッ!!
444デフォルトの名無しさん:2007/05/30(水) 19:13:57
MAKEINTRESOURCEマクロをC#で使用するにはどうすればいいのでしょうか?
P/Invokeに使用する構造体のLPTStrなフィールドに数値を入れるのに必要です。
とりあえずはそのフィールドをintにすれば動くのですが。
445デフォルトの名無しさん:2007/05/30(水) 19:28:25
MAKEINTRESOURCEって単にcharポインタへのキャストでないの?
446デフォルトの名無しさん:2007/05/30(水) 19:29:41
wcharの場合もあるのか・・・
447デフォルトの名無しさん:2007/05/30(水) 20:07:35
>P/Invokeに使用する構造体P/Invokeに使用する構造体
どれのこと?

c#でIDなんか使わないと思うが?
448444:2007/05/30(水) 20:31:43
CMINVOKECOMMANDINFOです。
IContextMenu.QueryContextMenuで得たメニューをTrackPopupMenuで表示して
返ってきたコマンドIDをCMINVOKECOMMANDINFO.Verbに入れて
IContextMenu.InvokeCommandするのに必要です。

Verbフィールドは
[MarshalAs(UnmanagedType.LPTStr)] public string Verb;
今のところこれをintにしている…。
449デフォルトの名無しさん:2007/05/30(水) 21:31:01
high-order word が0なら数字と解釈されるんでそ>MAKEINTRESOURCE
コマンドID入れるならIntPtrでOKじゃない?

昔書いたC#のソースだと
TrackPopupMenuの戻り値から1引いて(indexになおす?)
0xFFFFとANDとってた
450デフォルトの名無しさん:2007/05/30(水) 21:33:48
#define MAKEINTRESOURCE(i) (LPTSTR) ((DWORD) ((WORD) (i)))

これだけだから上手いことやったら?
451444:2007/05/30(水) 21:42:49
public static string MakeIntResource(int n){
    return Encoding.Default.GetString((BitConverter.GetBytes(n)));
}

これでいけそうな気がしたが上手く動かないな…。
変換後のバイト列は確かに同じなんだけど…。
マーシャリングが上手くいってないのか?
452444:2007/05/30(水) 21:44:25
ああ、リロードすべきだった。
もうちょっと悩んでみる。
IntPtrでも用は足りるんだけど、スマートじゃないかなと思った…。
453デフォルトの名無しさん:2007/05/30(水) 21:45:22
基本的な勘違いがありますよ…

文字とポインタ。
454デフォルトの名無しさん:2007/05/30(水) 21:54:10
>IntPtrでも用は足りるんだけど、スマートじゃない

何でそう思うの?
455444:2007/05/30(水) 21:59:36
TrackPopupMenuの返り値から-1するのは
QueryPopupMenuのidCmdFirst引数の分を引くからだと思う。

>>453
ああ、そうか、おぼろげながら分かってきた(ような)。
変換した文字列へのポインタを渡しちゃってるわけか。
456444:2007/05/30(水) 22:11:34
他の構造体だとLPTStrが出てきたら脊椎反射的に
MarshalAs(ryしてたから変に感じたのかもしれない…。
この場合マーシャリングするとアレだと分かったのでIntPtrでいきます。
457デフォルトの名無しさん:2007/05/30(水) 22:56:10
>>437
type.FindTypes(Module.FilterTypeName, "InterfaceName")
もしくは
type.FindTypes(object.ReferenceEquals, interfaceType);
てな感じとか
458デフォルトの名無しさん:2007/05/30(水) 22:57:46
IntPtrなのはポインタだからというよりLPだから
intだとアウト
459デフォルトの名無しさん:2007/05/30(水) 22:59:43
っとと
>type.FindTypes(object.ReferenceEquals, interfaceType);
type.FindTypes(object.Equals, interfaceType);
の方が普通だな。
460デフォルトの名無しさん:2007/05/30(水) 23:03:58
じゃねー
FindTypesじゃなくてFindInterfacesの間違い。
461デフォルトの名無しさん:2007/05/30(水) 23:04:07
>>458
試したのか?

多分、構造体の定義変えれば全く問題ないはず。
462デフォルトの名無しさん:2007/05/30(水) 23:08:50
static bool IsImplemented(Type @interface, Type @class) {
return Array.IndexOf(@class.GetInterfaces(), @interface) >= 0;
}
463デフォルトの名無しさん:2007/05/30(水) 23:20:13
struct fooのstatic foo operator+(foo,foo)を定義して、
foo x=new foo(),y=new foo();
x=x+y;
としても、xにoperator+ x,yの演算結果は入るんですが、どうも変です。

デバッガで追跡してみると、
x=x+y;//ここまでは大丈夫
foobar();//ここでxの内容が何故か元に戻る

operator+内部では、新しいインスタンスを生成し(new foo())、それに演算結果を格納、
そのインスタンスを返しています。

C#はGCが付いていると訊いたので、メソッド外部へインスタンスをたらい回しにしても
参照は消えていないのでoperator+で宣言した実体は生きているはずですし、
演算前のxも消えるはずです。何でこんな事になってしまうんでしょうか。
もうやだ。みんな死ねばいいのに。
464デフォルトの名無しさん:2007/05/30(水) 23:24:11
>>463
必要な情報が抜けすぎです。
取り敢えずfoobar()ってなに?
465デフォルトの名無しさん:2007/05/30(水) 23:29:12
foobarはなんでも良い処理。
VSのデバッガで追うと、x=x+y;の次の行にいった時点でxが元に戻る。
466デフォルトの名無しさん:2007/05/30(水) 23:31:59
>>463

答え以前に structが何か理解していないな。
参照型じゃないぞ。
467デフォルトの名無しさん:2007/05/30(水) 23:33:13
それ言ってることがおかしいぞ。
x=x+y;
が実行された時点でデバッガは次の行にいってる。
この時点で新しいxの内容が表示される。

もうちと正確に表現してくれ。

468デフォルトの名無しさん:2007/05/30(水) 23:34:13
>>463
その質問の仕方じゃ、人様にお前さんがこさえたバグを
エスパーしろと言っているのと同じだと思う。

問題を再現可能な最小のコードを提示しようよ。
469デフォルトの名無しさん:2007/05/30(水) 23:34:35
>演算前のxも消えるはずです。

代入されるの間違いじゃないか?
470デフォルトの名無しさん:2007/05/30(水) 23:36:45
>type.FindInterfaces(object.Equals, interfaceType);
便利になったもんだ。
471デフォルトの名無しさん:2007/05/30(水) 23:49:17
>>461
64bitだとまずくね?
472デフォルトの名無しさん:2007/05/31(木) 00:02:30
まずい
473デフォルトの名無しさん:2007/05/31(木) 00:04:32
八名信夫か
474デフォルトの名無しさん:2007/05/31(木) 00:05:10
>>463
なんで構造体を既定のコンストラクタでnewしてんの?
意味分かって書いてるならいいんだけど。
475デフォルトの名無しさん:2007/05/31(木) 00:06:34
にわかっぽいね。
476デフォルトの名無しさん:2007/05/31(木) 00:14:29
コードうpれ

returnに変なもん渡してんじゃないの?
引数を内部で書き換えて終了させてるとかw
477380:2007/05/31(木) 00:16:02
>>381
さんくすこ!!
478デフォルトの名無しさん:2007/05/31(木) 04:15:05
List<double> で降順ソートしたいんですが、これって比較関数を自分で作らないとダメなんですか。
C++のstd::greater<double>()みたいなのはないんでしょうか。
479デフォルトの名無しさん:2007/05/31(木) 04:32:59
list.Sort(new Comparison<double>(delegate(double x, double y){return y.CompareTo(x);}));
480デフォルトの名無しさん:2007/05/31(木) 04:39:23
>>479
ありがとうございます。助かります。
481デフォルトの名無しさん:2007/05/31(木) 10:41:37
速度が必要ないときやメンドクサイときは
Sort()→Reverse()
482デフォルトの名無しさん:2007/05/31(木) 11:44:05
>>435
class Hello {
 bool finalized = false;
 public Hello() { Console.WriteLine("init"); }
 ~Hello() { finalized = true; Console.WriteLine("fin"); }
 public bool Finalized { get { return finalized; }}
 public void ReInit() {
  if (finalized) { finalized = false; GC.ReRegisterForFinalize(this); Console.WriteLine("re-init"); }
 }
 public void Say() { Console.WriteLine("Alive : {0}", !finalized); }
}

class TestWR {
 WeakReference wr = new WeakReference(new Hello(), true);
 void InvokeWR() {
  Hello h = (Hello) wr.Target;
  if (h == null) { h = new Hello(); wr = new WeakReference(h, true); }
  else if (h.Finalized) h.ReInit();
  h.Say();
 }
483デフォルトの名無しさん:2007/05/31(木) 11:56:04
むしろ単純に逆順ならそれが一番速い。
比較関数自作の場合は別だが
484デフォルトの名無しさん:2007/05/31(木) 11:56:59
>>482 の解説
ファイナライザでアンマネージドリソースを開放したがメモリは回収していない状態で、
そのメモリを再利用してオブジェクトを復活させるのに使用する。
一度ファイナライザが動くと次回のGCで即メモリが回収されてしまうので、
最初期化でGC.ReRegisterForFinalize(this)を使い今一度ファイナライザが動くように設定するのがポイント。
485デフォルトの名無しさん:2007/06/01(金) 10:42:11
GetHashCode()の実装で困っています。プロパティが持つ値すべてを
比較して一意性を持たせたいのですが、どんな手法を使うべきでしょうか?
例えば、string型でもint型でもすべてbyte[]型に変換してXORする、
といったやり方はどうでしょうか?
486デフォルトの名無しさん:2007/06/01(金) 11:35:09
>>485
オーバーライドしなくてもインスタンスごとに
GetHashCode()の戻り値は違うけど、
わざわざオーバーライドする必要はあるの?
487デフォルトの名無しさん:2007/06/01(金) 12:31:32
参照型に、値型のような一意性を持たせたいのです。
インスタンスのアドレスじゃなくてプロパティの値を見て。
488デフォルトの名無しさん:2007/06/01(金) 12:34:36
最初から値型で定義すればいいかもしれないんだけど、
値型プロパティだけじゃなくて配列の中身なんかの参照型の中身も見て
Hash求めたいって場合もあるから、
実装の定番のやり方を知っておきたいなと思いまして。
489デフォルトの名無しさん:2007/06/01(金) 12:34:55
そりゃ値等価で比較したいなら必要だろ。
ハッシュはバラケてるほうが良いのは確かだがハッシュの計算に時間がかかったら本末転倒。
極端な話、等価であれば同じ値であることを保障すればいいので、
一律同じ値を返しても、パフォーマンス以外支障はない。
490デフォルトの名無しさん:2007/06/01(金) 12:50:09
目的はDictionary使って値等価の参照型インスタンスを高速検索
することです。だからハッシュがばらけててくれないと困ります。。
プロパティを変更したときにハッシュを再計算させて、キャッシュに
残しとけばGetHashCode()ではそれを返すだけだから速度は解決のような。
別の値でおんなじハッシュになったらどうするんでしょうか?リストで
連結して、それらをEquals()で比較?
491デフォルトの名無しさん:2007/06/01(金) 14:05:16
あるTypeがあったとしてobjectをそのTypeでキャストしたいとしたらどうしたらいいんでせう?
教えてエロイ人。
492デフォルトの名無しさん:2007/06/01(金) 14:12:23
object instance=new Type();
((Type)instance).Method();
493デフォルトの名無しさん:2007/06/01(金) 14:26:37
>>492 すまん質問がおかしかった。
ついでに事故解決しますた。

>あるタイプを表わすSystem.Type t;があったとしてobjectをそのtでキャストしたいとしたらどうしたらいいんでせう?
>教えてエロイ人。
494デフォルトの名無しさん:2007/06/01(金) 14:28:14
質問の意味はわかったがそれをどうやって事故解決したの?
495デフォルトの名無しさん:2007/06/01(金) 14:28:41
あーいらつく
496デフォルトの名無しさん:2007/06/01(金) 15:21:45
System.Convert.ChangeType
です。
けれども少なくともEnumの場合は
(EnumType)(System.Int32)0と
Convert.ChangeType(typeof(Enumtype),0)では動作が違うようです。
後者ではInvalidCastExceptionがでます。
497デフォルトの名無しさん:2007/06/01(金) 16:05:16
test
498デフォルトの名無しさん:2007/06/01(金) 16:41:04
failed.
499デフォルトの名無しさん:2007/06/01(金) 16:49:35
>>490
そういう用途の場合だと、自分はシングルトンパターンを使って
値等価のインスタンスはひとつしか作成しないようにします。
シングルトンパターンが使いにくい場合もあるかもですが…
500デフォルトの名無しさん:2007/06/01(金) 16:54:20
メンバの値変更できないじゃないか
501デフォルトの名無しさん:2007/06/01(金) 16:57:00
>>490
普通にプロパティのハッシュを求めてシフトしながらxorとればいいでしょ。
ハッシュの衝突は気にしなくてよい。
502デフォルトの名無しさん:2007/06/01(金) 16:58:29
>>499
Stringのようなオブジェクトを作りたいって話だとおもうんだが、シングルトンじゃ無理だろ。
503デフォルトの名無しさん:2007/06/01(金) 17:27:52
レミングトンなら?
504デフォルトの名無しさん:2007/06/01(金) 20:34:45
GetHashCode()についてお尋ねした者です。レス頂いた皆様有難うざいました。
>>499様 singletonてよりflyweightfactor?それもいい。参考になります^^
>>489>>501様 かっこよいです。貴方のようなスーパーハカーになりたいお。
505デフォルトの名無しさん:2007/06/01(金) 21:18:16
ココで質問する内容じゃないと思うよ。
506デフォルトの名無しさん:2007/06/01(金) 21:21:56
507デフォルトの名無しさん:2007/06/01(金) 21:47:42
困ります って書く奴は幼稚に見える。
勝手に困ってろ。
508デフォルトの名無しさん:2007/06/01(金) 22:01:10
アンカーもなしにそんな大深度レスつけられてもなあ・・・
509デフォルトの名無しさん:2007/06/01(金) 22:01:27
一般的ならハッシュなら
↓から読んでいけば?
ttp://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E9%96%A2%E6%95%B0
510デフォルトの名無しさん:2007/06/01(金) 23:48:40
キーに使うならイミュータブルにしたほうが安心だと思うよ。
まあできないこともあるだろうし仕方ないけどね。

※絶対おかしな使いかたしてトラブるやつが出てくるんだ…
511デフォルトの名無しさん:2007/06/02(土) 17:00:15
連結リストを作ってみた
list_data.next -> .next -> .next -> [null]

これを解放するときは先頭の
 list_data = null;
を実行するだけでいいのかな?
512デフォルトの名無しさん:2007/06/02(土) 17:06:53
他の箇所から参照されていなければそのうち解放される。
513デフォルトの名無しさん:2007/06/02(土) 17:58:03
>>512
dクス
514デフォルトの名無しさん:2007/06/02(土) 18:19:05
現実問題としては参照消すために null を代入することってまずないよな
515デフォルトの名無しさん:2007/06/02(土) 18:23:03
VB6じゃ Set obj = Nothing よくやってたけどね
516デフォルトの名無しさん:2007/06/02(土) 19:17:09
それは参照カウントを使っていたからこそ必要だったこと
517デフォルトの名無しさん:2007/06/02(土) 19:37:09
>>515
vbモジュールに参照を置いてしまうようなプログラムも少なくなかったからね。
消し忘れるぐらいならなんにでもNothingをぶち込めとかの程度の低いコーディングルールがまかり通っていた。

.NETのGCだと循環参照もスパッと消えていい感じ。
相互に参照をもってる双方向のリストも問題なく消える。
518デフォルトの名無しさん:2007/06/02(土) 21:20:16
不要なGC世代の昇格を防ぐ、とういう意味では
無駄では無くも無いような気がしないでも無いような
519デフォルトの名無しさん:2007/06/02(土) 21:24:35
世代に影響が出ることなんてほとんどないから気にしなくていい
どうせ大抵はスタックに一つ参照がとられるだけかフィールドとして親と寿命は共にするかのどっちかだ
メソッドの途中ですら使わないオブジェクトは GC 対象になるし
520デフォルトの名無しさん:2007/06/03(日) 02:39:09
GCは優秀な子
521デフォルトの名無しさん:2007/06/03(日) 03:57:43
ミッションちゃんの事だから、やっぱり「狩らなきゃ・・・狩らなきゃ・・・」みたいな脅迫観念があるんだろうか。
522デフォルトの名無しさん:2007/06/03(日) 04:20:25
???
523デフォルトの名無しさん:2007/06/03(日) 22:40:40
ADO.NETでデータベースプロバイダに依存しないデータ取得コードを作成したいと思っています。

SQLの条件を書くのに便利そうだと思って、DbParameterなどを調べて使っていたのですが
よくよく調べてみると、パラメータ化の書式が違うようです。

DbParameterなどは「データベースプロバイダに依存しないデータ取得コード」には
結局使えないということで理解はあっているでしょうか?
524デフォルトの名無しさん:2007/06/03(日) 22:59:45
「データ取得コード」がどういうものを指しているのかわからないが、
プロバイダに依存しないデータ取得メソッドレベルの話ならラップするだけじゃねーの?
525デフォルトの名無しさん:2007/06/04(月) 00:50:05
ImmとかTFSとかとにかくそこらへんのクラスはあるですか
526デフォルトの名無しさん:2007/06/04(月) 01:04:24
ない
APIでドゾ
527デフォルトの名無しさん:2007/06/04(月) 01:13:56
>>525
強いて言えばWPFに多少入ってる。
でも激しくラップされた高レベルAPIばかりだから
ネイティブAPIの代わりにはならんよ。
528デフォルトの名無しさん:2007/06/04(月) 03:12:20
sdffsdfsdfadfsdfwefdfssdfsdfawsefsdfsfsdfsdfsfsfsfsdf
529デフォルトの名無しさん:2007/06/04(月) 04:04:19
.NET遅い。なんかムカついてきた。
530デフォルトの名無しさん:2007/06/04(月) 08:51:11
>>529
遅いの君のせい
531デフォルトの名無しさん:2007/06/04(月) 10:39:19
>>530
素人は黙ってたほうがいいよ。
532デフォルトの名無しさん:2007/06/04(月) 10:41:55
負け惜しみ乙
533デフォルトの名無しさん:2007/06/04(月) 11:03:39
速いと思う奴はいないわな。
534デフォルトの名無しさん:2007/06/04(月) 11:08:21
Javaに比べたら遅いとは思わないが、C++Nativeに比べたら、明らかに遅い。
そんなことは初めから分かってることだ。
535デフォルトの名無しさん:2007/06/04(月) 11:11:11
ムカつくほど遅いというのは何なんだろう・・・
メモリが少ないのかな
536デフォルトの名無しさん:2007/06/04(月) 11:53:49
大抵アルゴリズムが悪いんだよな。そういうのは。
537デフォルトの名無しさん:2007/06/04(月) 12:01:38
昔、VBで遅いっつうから見てみたら
プロパティの値変更をループの中に入れてるのがあった
で、それが実態はプロシージャだったもんだから・・
Windowのサイズ変更とかだったかなあ、最後に一回呼べば済むようなやつね。
538デフォルトの名無しさん:2007/06/04(月) 12:45:51
>>534 遅いのはGDI+じゃまいか?
アルゴリズム的なのはそれほど遜色ないと思うが。
539デフォルトの名無しさん:2007/06/04(月) 12:58:18
どうせ、グラフィックスならダブルバッファも行わないで遅い遅い、
言ってるんだろうな。
540デフォルトの名無しさん:2007/06/04(月) 13:01:36
ループの中でオブジェクトの不必要な生成・破棄を繰り返してる
とか? string something += ....なんてやると…
541デフォルトの名無しさん:2007/06/04(月) 13:46:58
ダブルバッファしても遅いだろ。
.NETが速いっていう感性になりてーよ。
そういう奴ってなんにも不満がなくて、幸せそう。
542デフォルトの名無しさん:2007/06/04(月) 13:48:10
速いとは誰も言ってなかろう。
543デフォルトの名無しさん:2007/06/04(月) 13:49:05
DrawingとFormsは確かに遅い。
544デフォルトの名無しさん:2007/06/04(月) 13:50:33
.NETが速くもないが遅くもないっていう感性になりてーよ。
そういう奴ってなんにも不満がなくて、幸せそう。
545デフォルトの名無しさん:2007/06/04(月) 13:59:07
Java、VB6からの移行組みはそれほどでもないだろうが、
C++からの移行組みは文句のひとつもいいたくなるだろうな。
ましてや遅いのがスキルのせいにされてはな。
546デフォルトの名無しさん:2007/06/04(月) 13:59:51
プロパティとフィールドとでそんなに速度違うもの?
自動プロパティがでてきてフィールド使う機会が減りそうだから心配。
あと、自動プロパティって○○Changedに勝手にアクセスしてくれるかね?
547デフォルトの名無しさん:2007/06/04(月) 14:16:49
プロパティはJITコンパイル時にかなり最適化されるから、パフォーマンスにはほとんど差異はないはず。
自動プロパティがPropertyChangedイベントを呼んでくれるって話は聞いたことがないな。

ところで、2.0からは○○Changedイベントは非推奨になってるよ。
548デフォルトの名無しさん:2007/06/04(月) 14:22:34
VB6のプロパテーの話だろ
549デフォルトの名無しさん:2007/06/04(月) 14:23:09
もし、本当に遅いのなら、そのクリティカルな部分だけC++で書けばいいだけ
550デフォルトの名無しさん:2007/06/04(月) 14:50:36
別にC++で書かなくても、アンセーフにして書けばいいだろう。
わざわざ、DLL呼ぶのは冗長だな。
551デフォルトの名無しさん:2007/06/04(月) 14:51:18
>>547
INotifyですね。教えてくれてありがとう。
55274:2007/06/04(月) 14:52:22
>>77
AutoIncrement の Ture/False を取得したいんではなく、
実際にIncrementされた値(元々1とかだったらInsert後は2になっているとかの2の部分)が知りたいわけです。

DataSet に NewRow した後に Updateかけて新規追加するか
TableAdapterにInsertして新規追加するです。

質問の仕方がごっちゃになってました、スマソ

>>85
SQLiteです。
ADO.NET 2.0 Provider for SQLite 使ってます。
553デフォルトの名無しさん:2007/06/04(月) 15:05:12
>>541

何をやったらどういう風に遅かったのか言ってもらわんことには
議論のしようがない。
554デフォルトの名無しさん:2007/06/04(月) 15:08:25
640*480の面積をダブルバッファで塗りつぶすと
20FPSくらいしかでない
555テスト:2007/06/04(月) 15:12:17
テスト
 
$amp;
556テスト:2007/06/04(月) 15:13:20
&
557テスト:2007/06/04(月) 15:14:21
  aaa
558デフォルトの名無しさん:2007/06/04(月) 15:18:49
20FPSでは、ゲームには使えないな。
最低でも30FPSは確保できないと。
ゲームではXNA使わないと無理か。
559デフォルトの名無しさん:2007/06/04(月) 15:28:03
ラスタオペレーションろくに無いしな
560デフォルトの名無しさん:2007/06/04(月) 15:35:16
とりあえず、Formsの代わりにWPF使えれいいか。
2000に対応してないのが痛いが、業務アプリでは
WPFで十分通用するからな。
561デフォルトの名無しさん:2007/06/04(月) 16:49:05
>>560
WPFも遅いですよ(´・ω・`)
562デフォルトの名無しさん:2007/06/04(月) 17:39:51
別に初期起動が遅いのは、メモリにプログラム読み込むから仕方ない。
アプリ起動後遅いのは、クリティカルになる可能性があるが、
業務アプリ程度なら、それほど気にならない。
563デフォルトの名無しさん:2007/06/04(月) 18:53:43
60fps以上出るDirectXアプリC#で普通に作っているけど?
564デフォルトの名無しさん:2007/06/04(月) 19:01:19
なんという読解力のなさ・・・
565デフォルトの名無しさん:2007/06/04(月) 19:43:49
.Netが遅いということに対して速いPC用意するのはなしな。
昔のJava厨みたいだから。
566デフォルトの名無しさん:2007/06/04(月) 19:46:39
>>565
いや、今のJava厨も全然変わってないよ。

JavaでC++並みの実行速度を出すPGを組むスレ Part2
http://pc11.2ch.net/test/read.cgi/tech/1180877520/
567デフォルトの名無しさん:2007/06/04(月) 19:49:04
.NETが遅いんじゃなく、Formが遅いから、DirectXは高速
568デフォルトの名無しさん:2007/06/04(月) 19:52:41
裸のC#そのものは遅くないんでしょ?
569デフォルトの名無しさん:2007/06/04(月) 20:02:32
なんでFormsは遅いの?Swingと同じミスを犯したの?
570デフォルトの名無しさん:2007/06/04(月) 20:12:45
>>569
Formsが遅いのはコントロール毎にPaintを呼んでいるから。
571デフォルトの名無しさん:2007/06/04(月) 20:15:18
なんで、ってそもそもそんなに遅くも重くもないけど。。
確かにWinアプリの起動は遅いんだけど、それも2.0から少し速くなった感じがするし。
572デフォルトの名無しさん:2007/06/04(月) 20:16:35
>>570
それWindows Formに限らないから。
恥ずかしい奴だなw
573デフォルトの名無しさん:2007/06/04(月) 20:21:46
>>572
つWPF
574デフォルトの名無しさん:2007/06/04(月) 20:23:25
WPFって実質、速いPC用意するのと変わらないじゃん。
575デフォルトの名無しさん:2007/06/04(月) 20:27:54
3Dグラフィックス使えるPCじゃないと意味無いな。
576デフォルトの名無しさん:2007/06/04(月) 20:33:24
パーツショップで売っててDirect3D対応してない商品を教えてくれw
577デフォルトの名無しさん:2007/06/04(月) 20:37:14
世の中自分と同じパソヲタばかりだと思ってるなら立派な精神病だよw
チップセット内臓のVGA使ってる奴だっていっぱいいるんだけど。
そうでなくてもノートPCとかね
578デフォルトの名無しさん:2007/06/04(月) 20:42:36
それでも一応動くだろ
579デフォルトの名無しさん:2007/06/04(月) 20:43:22
企業は自宅でPC所有するわけじゃないんだ。
そんな簡単に新しいPC調達できるわけ無いだろう。
580デフォルトの名無しさん:2007/06/04(月) 20:44:03
>企業は自宅でPC所有するわけじゃないんだ

日本語でおk
581デフォルトの名無しさん:2007/06/04(月) 20:56:31
そんなことより、ListViewのDetailsでMSのいうとおりにカラムヘッダクリックでソートできるようにしたんだが、
クリックした瞬間描画がクリアされて、1秒後に結果が表示される。
移植前のWTL前はクリック直後に即表示だったんで、1秒も我慢ならんのだが、
クリックした瞬間描画がクリアにならないようにするにはどうしたらいいか教えて。
582デフォルトの名無しさん:2007/06/04(月) 20:57:39
別にWPFはそんなにスペックいらんだろ
3Dとか使わなきゃ
583デフォルトの名無しさん:2007/06/04(月) 21:03:19
そもそもGDIが遅いからDirectXが出来たのが10年以上前の話
584デフォルトの名無しさん:2007/06/04(月) 21:41:48
>>581
コードうp
うちのpen4 2.4Gじゃそんなことにならん。
件数が多いのか?
585デフォルトの名無しさん:2007/06/04(月) 21:52:37
だから「遅い」って言うやつは具体例を挙げろと何年言わせるんだ。
586585:2007/06/04(月) 21:53:26
あ、>585は>>581じゃなくてゲーム厨のほうな。
587デフォルトの名無しさん:2007/06/04(月) 22:07:33
>>584
class ListViewItemComparer : System.Collections.IComparer{
 public void SetColumn(int col);
 public int Compare(object x, object y){
  return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
 }
}
col保持部分ちょっと省略したけど、これをListViewItemSorterに設定して、
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
((ListViewItemComparer)this.listView1.ListViewItemSorter).SetColumn(e.Column);
}
してるだけ。件数は500件ぐらい。カラム数は14。pne2.6G。
588デフォルトの名無しさん:2007/06/04(月) 22:08:49
>>585
そんなムキにならんでもいいだろうに。
要するになんにか心に不安を抱えてる人間なんだと思うよ。

不安な人間というのは自分の知らない人や物を否定したがるもんなんだよ。
2chだったら極東スレだのハングルスレだの見れば実例にあふれてる。

イジーライダーって映画にも「アメリカ人は口を開けば自由というが、本当に自由な
連中を見ると嫌悪する」って台詞が出てくるな確か。
589デフォルトの名無しさん:2007/06/04(月) 22:41:55
>>587
揚げ足取りにしかなってないかも知れないけど、それってサンプル通りじゃないよね

それだとColumnClickのイベントハンドラでListViewのSort呼ばないとダメなんじゃないの?
590デフォルトの名無しさん:2007/06/04(月) 22:46:57
勝手にソート呼んでくれてるよ。
ListViewItemSorterを設定したら勝手にソートするってMSのサイトに書いてあった。
それより、知りたいのは、クリックした瞬間描画がクリアにならないようにする方法。
591デフォルトの名無しさん:2007/06/04(月) 22:49:57
だからListViewItemSorterをセットしてないでしょ。
それとも>>587はコピペミス?
592デフォルトの名無しさん:2007/06/04(月) 22:51:16
>>591
>col保持部分ちょっと省略したけど、これをListViewItemSorterに設定して、
593デフォルトの名無しさん:2007/06/04(月) 22:52:33
>>591
バカか?揚げ足とりしようとして失敗したの?
594デフォルトの名無しさん:2007/06/04(月) 22:57:45
>>592
俺が誤解してるのかも知れないけど、
MSDNライブラリのここの「メモ」にある

>ListViewItemSorter プロパティの値を設定すると、Sort メソッドが自動的に呼び出されます。

とは、ListViewItemSorterのセッターがコールされると、後続してSortメソッドが
呼び出される、という意味ではないのかな?

http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.listview.listviewitemsorter(VS.80).aspx

あとここのサンプルコードにはこうも書いてある
// Set the ListViewItemSorter property to a new ListViewItemComparer
// object. Setting this property immediately sorts the
// ListView using the ListViewItemComparer object.
595デフォルトの名無しさん:2007/06/04(月) 23:01:44
とりあえず、質問者は回答者の回答を試してみれば?
596デフォルトの名無しさん:2007/06/04(月) 23:04:09
>>594
たぶんそれだった思う。
でも、Sortメソッドを全く呼んでないけど、ソートはされてるので、そう理解した。
597デフォルトの名無しさん:2007/06/04(月) 23:05:29
>>595
回答?まだ一つも回答されてないよ?
598デフォルトの名無しさん:2007/06/04(月) 23:22:24
GDI 遅い の検索結果 約 27,800 件中 1 - 100 件目 (0.11 秒)
599デフォルトの名無しさん:2007/06/04(月) 23:23:10
ttp://lamoo.s53.xrea.com/develop/gdiplus/gdiplus_blt_old.html
GDI/GDI+のビットマップ転送能力(第1稿)
600デフォルトの名無しさん:2007/06/04(月) 23:25:03
Sort()し忘れたら、勝手にSort()呼んでくれるのか。
ListViewは至れり尽くせりだな。
601デフォルトの名無しさん:2007/06/04(月) 23:31:39
必死にGDI+でDDB扱う方法探してるんだがやはり無理だったのか。
orz
602デフォルトの名無しさん:2007/06/04(月) 23:38:03
>>601
今更DDB使って高速化してもVista以降のWDDMだとにCPU処理されてDIB相当になるよ。
603デフォルトの名無しさん:2007/06/04(月) 23:43:08
>>596
やっぱりSort呼ばないとダメだと思うよ。
それが遅い原因かどうかはともかく。

>>594の「メモ」は英語では
>When you set the value of the ListViewItemSorter property, the Sort method is called automatically.
となっている。

どぼん氏のところのサンプルでも、>>587のコードのようにListViewItemSorter のセッタを呼んでない場合には
ちゃんとSortメソッドを呼んでいるようだ。
604デフォルトの名無しさん:2007/06/04(月) 23:56:44
10倍遅いってw
605デフォルトの名無しさん:2007/06/05(火) 00:07:20
当たり前だ。DIBからDDBに変換してるんだから。
606デフォルトの名無しさん:2007/06/05(火) 00:13:46
CodeZineでListViewのソート周りの記事公開されてたんだな・・・
ttp://codezine.jp/a/article/aid/1333.aspx
607デフォルトの名無しさん:2007/06/05(火) 00:22:37
585 名前:デフォルトの名無しさん[sage] 投稿日:2007/06/04(月) 21:52:37
だから「遅い」って言うやつは具体例を挙げろと何年言わせるんだ。
608デフォルトの名無しさん:2007/06/05(火) 00:26:25
>>603
ありがとう。ビンゴじゃないけど、わかりました。
昇順、降順機能を追加したとき、Sortingプロパティを設定してました。
Sortingプロパティを設定してもSort()が呼ばれるみたいです。
609デフォルトの名無しさん:2007/06/05(火) 01:49:28
遅い早いネタは質はともかくもりあがるな
610デフォルトの名無しさん:2007/06/05(火) 14:15:44
せっかく苦労して作っても、「遅い。いらない(あるいは作り直せ)」と言われたら最悪だからね。
611デフォルトの名無しさん:2007/06/05(火) 14:33:40
っつーか、作ってから「遅い」って言う時点でセンスの問題としか…
612デフォルトの名無しさん:2007/06/05(火) 14:37:41
まあプロファイラでチューニングすりゃいいしな
613デフォルトの名無しさん:2007/06/05(火) 16:54:42
問題はそんな簡単ではない。
614デフォルトの名無しさん:2007/06/05(火) 17:11:41
そうだよな。センスの問題だよな。
遅いと感じないセンスの持ち主は顧客、ユーザーとしては最高だ。
悪く言えば、鈍感、のろまなんだけど。
615デフォルトの名無しさん:2007/06/05(火) 17:32:23
キミが書くプログラムは何でもかんでも遅くなるんだな
616デフォルトの名無しさん:2007/06/05(火) 17:35:25
>>614
そういう口調で話すキモイ奴が今オレの横にいる
617デフォルトの名無しさん:2007/06/05(火) 18:44:05
C++で書くと劇速なんだけど、C#で書くと劇遅なんだよ。
別に理由は分かってるよ。25年もコード書いてるから。
ただ愚痴りたかっただけ。
618デフォルトの名無しさん:2007/06/05(火) 18:46:36
>25年もコード書いてるから
それって相当な負け組みなんじゃ…
いるのか?ずっとコーダのまま、そんなやつ。
619デフォルトの名無しさん:2007/06/05(火) 18:48:11
どんなプログラムで劇遅なのか知りたいのだが?
Formsが遅いのか?それとも、ロジックの実行速度が遅いのか?
620デフォルトの名無しさん:2007/06/05(火) 18:49:42
IL 使ってるからだろ
621デフォルトの名無しさん:2007/06/05(火) 18:50:28
↑ミロ
622デフォルトの名無しさん:2007/06/05(火) 18:50:49
.Netが遅いと認めたくないのは、昔のJava厨と同じ心境なんだろうね。
ただ、Javaと同じ間違いをしなければいい。
未だにデスクトップアプリでJavaが全く普及してない事実をよく考えないとね。
623デフォルトの名無しさん:2007/06/05(火) 18:54:37
Java アプリのデザインってダサ(ry
624デフォルトの名無しさん:2007/06/05(火) 18:55:22
処理速度を比較したサイトがあったけど
625デフォルトの名無しさん:2007/06/05(火) 18:56:07
ちょっと待てよ。昔、Javaブームってあったよな。C#ブームってあったか?
626デフォルトの名無しさん:2007/06/05(火) 18:59:11
627デフォルトの名無しさん:2007/06/05(火) 19:00:11
>>625
MSのこれからの戦略次第でC#ブームは来る。
Javaブームは、言ってみればITブームに乗って偽装請負会社とSIの小銭稼ぎに利用されただけ。
628デフォルトの名無しさん:2007/06/05(火) 19:01:34
これから来ると思い続けて早5年・・・
629デフォルトの名無しさん:2007/06/05(火) 19:04:22
じゃあ、.Netのデスクトップアプリは普及してるか?
まさか、Javaが敬遠された理由、遅い、もっさりしているとか同じ理由で普及してないんじゃないのか?
630デフォルトの名無しさん:2007/06/05(火) 19:09:36
遅さとかより.NET FrameworkやらJREやらをインストールしなければならないというのが面倒
.NET Frameworkは、最近Windowsに標準搭載されているからその点有利になってきていると思うが
631デフォルトの名無しさん:2007/06/05(火) 19:10:04
Java もインストールしなきゃダメだぜ。最近は。
632デフォルトの名無しさん:2007/06/05(火) 19:10:43
昔はWin95も遅い、メモリ食いと言われたが今となったら軽いOSの部類。
あと10年待てばOK。
633デフォルトの名無しさん:2007/06/05(火) 19:10:47
あ、JRE って書いてあるわ。
.NET のところだけ見て反射でレスしてもうた。
634デフォルトの名無しさん:2007/06/05(火) 19:10:58
日本語読めないのですか
635デフォルトの名無しさん:2007/06/05(火) 19:12:40
自分の周りだと、元々VC++でやっていたところはどんどんC#に置き換わっていってるけど。
636デフォルトの名無しさん:2007/06/05(火) 19:13:09
デスクトップアプリはユーザがMFCを基準にして、性能を見ているから、
ランタイムを使うアプリからすると厳しいな。
初期起動でメモリにアプリを割り当てるのに時間がかかり、
Formsだと描画速度が劇遅でユーザが不満に思うのも無理がない。
637デフォルトの名無しさん:2007/06/05(火) 19:13:47
TwinTail便利だよ
638デフォルトの名無しさん:2007/06/05(火) 19:14:55
隣に比べるものがあるとダメだな。
639デフォルトの名無しさん:2007/06/05(火) 19:49:32
非同期化やらUIが固まらないことを徹底してみたらええ感じですよ
やるのも楽ですし。
640デフォルトの名無しさん:2007/06/05(火) 20:35:40
フレームワークの品揃えじゃないかな
ちょっと凝ったことしようと思えばAPIの宣言からってVBと同レベじゃん
641デフォルトの名無しさん:2007/06/05(火) 21:44:41
ちょっとラップしてやれば気になるようなことじゃないよ
642デフォルトの名無しさん:2007/06/05(火) 21:46:07
>>618
単に趣味でプログラムやってるかもしれないだろ
というかC#な時点でその可能性が高いだろ
というかそういう考えが出る618は仕事でやってたりする?
643デフォルトの名無しさん:2007/06/05(火) 21:46:18
unsafeだし
644デフォルトの名無しさん:2007/06/05(火) 21:46:45
何でも包み込もうとすると、C++みたいにごちゃごちゃになってしまう。
645デフォルトの名無しさん:2007/06/05(火) 21:47:53
P/Invokeの宣言を集めたアセンブリを標準で入れといてくれたらいいのに
646デフォルトの名無しさん:2007/06/05(火) 21:48:40
>>636
不満を感じてるのは作り手だけで実際使ってる方は思うほど気にしてない罠
647デフォルトの名無しさん:2007/06/05(火) 21:51:36
>>642
ほっとけw
不幸な奴というのはえてして不幸の原因をお門違いのものに求めるものなんだ。
防衛機制という心理的メカニズムだな。

642は不幸の原因を自分がプログラマであることに求めてしまったから、
642の中では不幸とPGが同値なんだろう
648デフォルトの名無しさん:2007/06/05(火) 22:02:26
>>645
MS自身DllImportを使いまくって.NET Frameworkのライブラリを実装してるわけだから
.NET FrameworkのライブラリのDLLの中に大量に含まれてるよ
そういうのは全部internalになってるけどw
649デフォルトの名無しさん:2007/06/05(火) 22:03:16
VB6とかのシステムがアホみたいに残ってるから
これから仕方なく.NET系VBへの以降が増えてくる。
世の中VB技術者が数だけはアホみたいに多いしな。

んで、.NET系トンでもシステムが爆産されて.NET使えねー扱いと
orz
650デフォルトの名無しさん:2007/06/05(火) 22:24:31
>>649
C#.NETだけだと、人数は少ないけど品質は最低限保証されるのができていたが、
VB.NETが参入してきて、人数が激増で品質はガタ落ちorz
651デフォルトの名無しさん:2007/06/05(火) 23:07:40
>>649
VB6の遺産をむりやり使おうとしてるプロジェクトの悲惨さは目も当てられないよな。
でかいプロジェクトだと仕方ないのかもしれないが・・・

>>650
VB.NET自体は悪くないと思う。
ただ、技術者の質がな・・・・
652デフォルトの名無しさん:2007/06/06(水) 00:24:10
あのさー、C++なんかと比べる時点でそいつがバカなだけじゃねーの?
その昔にアセンブラとC言語を速度比較してたのと同じじゃねーか。

どう考えても、今一番求められてるのは「開発コスト」だろ。
それも知らずにC#に手を出す意味がわからん。

開発コストを考える必要のない、誰も使わないフリーウェア作成が趣味のプログラマーは
最初からC++やってればいい。
653デフォルトの名無しさん:2007/06/06(水) 00:27:24
オレも会社で「.NETって遅いの?」って聞かれるけど
「速くはないが十分な速度。でも処理速度より開発効率が優先されてる」
って答えてる。

でも実際速度で困ったことはないけどな…
いったいみんな何作ってんの?
654デフォルトの名無しさん:2007/06/06(水) 00:28:56
グリッドで10万件を表示するのが遅くて困ってまつ(><)
655デフォルトの名無しさん:2007/06/06(水) 00:29:38
↑実際こんなこと言ってるバカが多いんだろなw
656デフォルトの名無しさん:2007/06/06(水) 00:33:11
何でソートして上のほうの1000件ぐらいで絞らないんだろうね。
馬鹿だらけ。

業務で使っているDBは表示部で絞ってるよ。
657デフォルトの名無しさん:2007/06/06(水) 00:33:33
10万件表示とかバカだなwwwwwww
658デフォルトの名無しさん:2007/06/06(水) 00:41:39
.NETが遅いとかいう奴に限ってExcelをなんちゃってDBに使ってたりするしな。
Excel 2007で65535行超えられるようになったらしいんだけど
絶対予想の斜め上を行く奴が出てくるぜ。
659デフォルトの名無しさん:2007/06/06(水) 00:44:34
ファイルサイズの限界が待っているなw
660デフォルトの名無しさん:2007/06/06(水) 02:29:08
.NET遅くないという奴って顧客なら大歓迎だが、開発者なら一緒に仕事したくないな。
661デフォルトの名無しさん:2007/06/06(水) 02:58:46
C++で10万件データをListViewで表示しても劇速だよ。仮想リストビューだけど。
Oracleからのデータ取得に配列アクセスできるし。
662デフォルトの名無しさん:2007/06/06(水) 03:04:39
で?
663デフォルトの名無しさん:2007/06/06(水) 04:01:32
10万件のデータに使われるメモリは、気にしなかったのか?
664デフォルトの名無しさん:2007/06/06(水) 06:05:36
なんか、新しいバージョンのc#だと、音楽が鳴らせるらしいじゃないですか?

これって、ダイレクトxのラッパーなのですか?
それともウイン32apiを使ってるのですか?
665デフォルトの名無しさん:2007/06/06(水) 07:01:52
古いバージョンのC#でも、音楽が鳴らせます。
666デフォルトの名無しさん:2007/06/06(水) 07:19:51
どうやって?
667デフォルトの名無しさん:2007/06/06(水) 07:25:42
>>666
フナムシでもお前よりは頭を使いそうな気がする。
668デフォルトの名無しさん:2007/06/06(水) 08:04:46
君は好戦的で性格の汚い奴だな。
もしかして、dllインポートとかの事を言ってるのか?
669デフォルトの名無しさん:2007/06/06(水) 08:38:23
上でダブルバッファを使えばましになるみたいなことがあったので、
Bitmapを用意し、DrawImageしたんですが、パフォーマンスがでません。
DrawImage以外でBitmapをPictureBoxに速く転送する方法ってありますか?
670デフォルトの名無しさん:2007/06/06(水) 08:53:31
ダブルバッファ=二度手間
671デフォルトの名無しさん:2007/06/06(水) 09:46:56
DrawImageって内部では何やってんのかね
BitBlt呼んだら変わるかね
672デフォルトの名無しさん:2007/06/06(水) 10:40:03
>>666
StartSound()とかStopSound()とかを使うんですよ。
673デフォルトの名無しさん:2007/06/06(水) 10:54:48
>>672
いや、俺の古いバージョンってのはもっと前のバージョンの話なんだけど、
まあ、良いです。
もともと、詰まらんことを聞いただけなので、
すんませんでした。
674デフォルトの名無しさん:2007/06/06(水) 11:39:26
>>669
BitBltの方が速い
675デフォルトの名無しさん:2007/06/06(水) 12:23:32
>>669
いやドトネトの世界でダブルバッファって言えば、
普通は君が言ってるような自前の実装じゃなくてコントロール自体のダブルバッファリングの機能を
使うことになるんじゃないの?
676デフォルトの名無しさん:2007/06/06(水) 12:35:59
struct data
{
double arary[256];
};
というC言語での構造体を、P/Invokeを用いてC#に渡したいのですが
C#で同じ構造体をつくるにあたって、double array[256]は
どう定義すればよいでしょうか?よろしくお願いします。
677デフォルトの名無しさん:2007/06/06(水) 12:42:11
MSDNライブラリ読もうよ
http://msdn2.microsoft.com/ja-jp/library/eshywdt7(VS.80).aspx
678デフォルトの名無しさん:2007/06/06(水) 13:01:30
ライブラリも読まないなんて・・・
679デフォルトの名無しさん:2007/06/06(水) 13:04:25
いままでの経験でつまみ読みでいけるだろうと思って読むが、
基本的な単語の定義が違いすぎて、混乱して、どうしよもなくて、
鬱になりそうで、ここで相談してるんじゃないの?
680デフォルトの名無しさん:2007/06/06(水) 13:33:52
BitBltで試した事はあるが
APIの呼び出しコストのせいか更に遅くなった
681デフォルトの名無しさん:2007/06/06(水) 13:34:33
すいません。少しは調べたのですが
[ MarshalAs( UnmanagedType.ValByArray, SizeConst=n )]
だと構造体のポインタが宣言できなくて。すでに鬱です。

682デフォルトの名無しさん:2007/06/06(水) 13:38:53
DDBまで手出さないとね
683デフォルトの名無しさん:2007/06/06(水) 13:41:51
遅くなるのはキャッシュを行っていないだけなんじゃないか?
APIレベルの話ではないと思うが。
684デフォルトの名無しさん:2007/06/06(水) 13:45:42
>>681
使っているのがC# 2.0なら固定サイズバッファとか。
ttp://msdn2.microsoft.com/ja-jp/library/zycewsya(VS.80).aspx

ただ、悪いことは言わないから
まずIntPtrで構造体の先頭アドレスだけ受け取って、
ちまちまとMarshal.ReadByteやMarshal.Copyで何とかする技術を
身につけておいたほうがいいと思うよ。
たくさんコード書かないといけないかもしれないけど、
とりあえず動くものは確実に作れる。
んで、ドトネトの世界にある程度なれてから見直せばいい。


属性使ったマーシャリングサポートは、わかれば一発なことも多いけど
悩めばわかるというものでもないので、わからないときにどうしようもいかなくなる。
属性によるマーシャリングは、上級者向けショートカット記法と思ったほうが良い。
685676の者です:2007/06/06(水) 14:29:55
固定サイズバッファでうまくいきました。地獄に仏です。
助言まで頂いてなんとお礼を言えばよいやら。
本当にありがとうございます。
686デフォルトの名無しさん:2007/06/06(水) 18:12:22
デバッグ中に"現在のメソッドのコードが最適化されているため、式を評価できません"とでてウオッチができないことがあるんですが、なんざんしょ?
全部デバッグコードなんですが。
687デフォルトの名無しさん:2007/06/06(水) 18:14:42
そのままの意味だろ。
Debugモードでの最適化をオフにしてみれば?
688デフォルトの名無しさん:2007/06/06(水) 18:29:01
>>687 プロジェクトのプロパティ、ビルドタブ内のコード最適化は関連するプロジェクトですべて未チェックです。
689デフォルトの名無しさん:2007/06/06(水) 20:09:23
当方、職場のPCがスタンドアロン環境なんですが、
ヘルプ使うたびに困っています
ドトネトになってからオンラインで使うのが前提のようですが、
msdnライブラリってインストール出来る無償版ないのでしょうか?
690デフォルトの名無しさん:2007/06/06(水) 20:22:39
691デフォルトの名無しさん:2007/06/06(水) 20:26:40
692667:2007/06/06(水) 20:34:52
>>668
ごめん、本当はただ誰かをフナムシって罵りたかっただけなんだ。俺の発言は忘れてくれ。
693デフォルトの名無しさん:2007/06/06(水) 20:42:21
俺はフナムシ以下だよ。フナムシのように動き(仕事)は早くないし、
フナムシのように掃除がうまいわけでもないし、
彼女いないからフナムシのように子供だってつくれない。

…アメーバ以下かもな。
694デフォルトの名無しさん:2007/06/06(水) 20:51:58
>>693
アメーバに謝れ
695デフォルトの名無しさん:2007/06/06(水) 20:56:07
ごめんなさいごめんなさいごめんなさい。
アメーバは偉大なサービスですよニコニコ
それに、以下じゃなくて正確には未満だな。
こういうズボラさがバグを生むんだよ。
ループ条件で以下と未満を間違えて
OutOfRangeExceptionって感じだな。
俺はOutOf人生Exceptionだがなw
tryも彼女をcatchする元気もない。
いつもfinally一直線だけど、深夜に
会社のCloseをし忘れるおばかさん♪
だってチンポをusingしたことないんだもの。
やっほ〜〜おちんちんしゅぽしゅぽ見てママ
696デフォルトの名無しさん:2007/06/06(水) 21:01:40
仕切りなおし。
697デフォルトの名無しさん:2007/06/06(水) 21:02:41
ハイ次の方〜
698デフォルトの名無しさん:2007/06/06(水) 21:34:22
みなさん、冷たいのな。
コールドスタンバイね。
俺の息子はホットスタンバイ。
スレ違い哀しいお。
息子といえば俺に隠し子ハケーン。
ハグはないのにバグだらけ。
虫未満の俺様には出来すぎた
ムスコでした。使えないけど、
愛おしくて潰せない。

こんなオヤジギャグを聞かされながら
毎晩殺伐と残業する人生にEndInvoke
ごめん。他スレ逝ってきます。

このカキコを覗いてる会社様
精神病認定よろしく。
699デフォルトの名無しさん:2007/06/06(水) 21:36:18
次の患者さんどうぞ〜
700デフォルトの名無しさん:2007/06/06(水) 22:04:48
いや、患者はもういいって
701デフォルトの名無しさん:2007/06/06(水) 22:06:39
【DVD】ラーゼフォン 第08話 「凍る聖夜」(640x480 DivX502).avi
702デフォルトの名無しさん:2007/06/06(水) 22:07:32
GC.Collect();
703664:2007/06/06(水) 23:50:07
>>692
。・゚・(つД`)・゚・。
704デフォルトの名無しさん:2007/06/07(木) 01:10:42
でもフナムシってなかなかいいフォルムしてるよな
705デフォルトの名無しさん:2007/06/07(木) 05:56:46
D&Dのドロップの処理でその処理が重い処理の場合、
ドラッグソースのアプリまで固まってしまうんですが、
こういう場合、とりあえずドロップはすぐリターンして
次のターンで実行すると思うんですが、そのやり方の
定石ってあるでしょうか?
706デフォルトの名無しさん:2007/06/07(木) 07:59:32
別スレッドにしてDoDragってよびだせないっけ?適当なかきこだから間違ってたらす万。
707デフォルトの名無しさん:2007/06/07(木) 08:15:18
どうみても海ゴキブリですw
708デフォルトの名無しさん:2007/06/07(木) 13:13:11
Delegateって保存かのうかね?
中のインスタンス情報とかメソッドシグネチャとか引っ張って来れれば力技ででも何とかなるんだが。
ゆくゆくはイベントを保存したい
709デフォルトの名無しさん:2007/06/07(木) 14:49:59
>>705
次のターンで実行するって意味不明だけど
エフェクト返す前に非同期でやるんじゃね
710デフォルトの名無しさん:2007/06/07(木) 15:06:58
スレッド起動するか、メッセージポストしてそこでやるか、じゃないかなあ
711デフォルトの名無しさん:2007/06/07(木) 15:31:43
単純に考えて、delegateにメソッド突っ込んだだけでも
インスタンスへの参照になるわけだから、メソッドがstaticでなければ
インスタンスを保存するしかないね。
それともメンバポインタめいた事をしたいのかね?
Managed C++でもつかってろ。
712デフォルトの名無しさん:2007/06/07(木) 17:37:22
普通にシリアライズ出来ただろ
それが意味あるかはまた微妙ではあるが
713デフォルトの名無しさん:2007/06/07(木) 17:58:00
>>708
コマンドパターンとかファンクタという言葉を調べてみると幸せになれるかもしれない
714デフォルトの名無しさん:2007/06/07(木) 18:03:33
ここはATHLのすれMFCはすれ違い
715デフォルトの名無しさん:2007/06/07(木) 19:30:26
TextBox1と2に西暦を入力して、それを取得してOracleに接続、
SQLでDataGridに取得した範囲を表示させたいのですが・・・・

できますかね?
716デフォルトの名無しさん:2007/06/07(木) 19:33:01
できます。
717715:2007/06/07(木) 19:38:04
どうやったら出来ますか?
718デフォルトの名無しさん:2007/06/07(木) 19:39:11
逆に何ができなくて悩んでいるのか聞きたい
719デフォルトの名無しさん:2007/06/07(木) 19:39:21
それはC#や.NET自体とは関係ないからこのスレで聞くようなことじゃない
720715:2007/06/07(木) 20:20:24
一応、C#でプログラムしてるんですが・・・どこで聞けばよかったでしょ?
721デフォルトの名無しさん:2007/06/07(木) 20:23:19
>>719
>>718

何が分からんのか分からんのじゃ答えようがねぇ
722デフォルトの名無しさん:2007/06/07(木) 20:24:06
どこまでやってどこが分からないか、書いたコードのどこがおかしいのかの質問を書き込めば
ここでOK

各ステップすっ飛ばして全部分かりませんと言うなら
ここはスレ違い
723デフォルトの名無しさん:2007/06/07(木) 20:24:12
719 じゃなかった……
724715:2007/06/07(木) 20:33:01
ええと、DataTime.Parseを使って日付を取得したものをTextBox1と2に設定しました。

それから、OleDbAdapterをDataSetにセット、DBに接続してSQLのSELECT構文を使ってDataGridに表示させようとしてます・・・。

こんな感じでいいのかな・・・・?初心者丸出しでスミマセン。
725デフォルトの名無しさん:2007/06/07(木) 20:35:55
それで、どこが分からないのでちゅか〜?
726715:2007/06/07(木) 20:38:58
TextBox1と2の範囲の西暦をSQLに反映させて表示のさせかたがわかりません・・・。
727デフォルトの名無しさん:2007/06/07(木) 20:43:48
C++++
728デフォルトの名無しさん:2007/06/07(木) 20:49:30
ふらっとスレの496っぽいな。なんでこっちに来たのか分からん。
729デフォルトの名無しさん:2007/06/07(木) 20:52:24
>>726
それで、どんなコード書いたのボク?
最初から順番に落ち着いてはなちてみまちょうね〜
730デフォルトの名無しさん:2007/06/07(木) 21:09:14
dataAdapter.SelectCommand.Parameters.AddWithValue("パラメータ名", date1);
731デフォルトの名無しさん:2007/06/07(木) 21:19:35
明治の生まれから見ればみなゆとり
732デフォルトの名無しさん:2007/06/07(木) 21:55:00
どこが分からないのか、ちょっとうまく言えないのかな〜
それじゃしょうがないねボク〜
うんうんむずかしいよね〜
いちどママにごそうだんして、れんらくちょうに書いてもらってね〜
じゃあまたね〜☆
733デフォルトの名無しさん:2007/06/07(木) 22:15:22
質問者に問題があるのはわかるが、他人の非をこうもバカにする奴も…
734デフォルトの名無しさん:2007/06/07(木) 22:28:31
スレ違いだがマジレスしとくか

エスパーじゃないと、こんな事はわかりません!
1. textBox1/textBox2 にどのように SQL 文から得た結果を入れようとしているのか
2. そもそも textBox1.Text に入れようとしてるのか?
3. つーか、DataSet なのか? OracleClient 使ってるのか? もしかして ODBC とか?
4. てか、ToString() とか分かってるか?

Oracle なら SELECT 文で取り出すときに to_char(date_field, ’yyyy') してたら
DateTime として取り出すことにならない事とか分かるだろう
そういった情報すら一切出さずに「できません」「わかりません」とか言ったところで
他の人が「何故こんなこともできないのか」と分かる訳ないだろう

「こういう目的があって、こういうコードを書いてみたけどうまくいかない」というのと
「こういう目的が達成できない。できるのか?」じゃ大きく違う

後者じゃ、できるできないしか言いようがないし
どうやればできるのか、なんてのは答えが数多ある

他の部分でも処理に使うから日付型として取得する場合もあれば
他では使わないからそのまま取得する方が楽 & アプリ側の処理量が減るということで
to_char() する場合もあるかもしれない

そういう前後の状況なども考えずに >>715 のような聞き方をしたところで
>>716 のような答えになるのは当たり前
735734:2007/06/07(木) 22:32:34
>>733
基本的には同意だけど

学生さんとかだったらかわいそうだが
C# + Oracle という構成は、普通業務だろ
そう考えると、その程度もできないしヘルプすら調べられないなら
給料もらう資格すらないと思った方がいいとは思う
736デフォルトの名無しさん:2007/06/07(木) 22:40:54
>1. textBox1/textBox2 にどのように SQL 文から得た結果を入れようとしているのか

お前も質問100回読み返すくらいの努力はしようぜ……
737デフォルトの名無しさん:2007/06/07(木) 22:42:59
その質問はどうせ、新人文系だろうな。
738デフォルトの名無しさん:2007/06/07(木) 23:02:23
書き方からして多分リアル中学生or高校生…

ふらっと c#は初心者用ですからそっちに移ったら良い。
あとなあ、おまえさんは一からプログラム作るレベルじゃない。
他人の作ったプログラム読むか、初心者用の本読んで勉強したほうがいい。

739デフォルトの名無しさん:2007/06/07(木) 23:04:48
>ええと、DataTime.Parseを使って日付を取得したものをTextBox1と2に設定しました。
>それから、OleDbAdapterをDataSetにセット、DBに接続してSQLのSELECT構文を使ってDataGridに表示させようとしてます・・・。

んーなんだ、もそっと日本語分かりやすく書いてけれ。
740デフォルトの名無しさん:2007/06/07(木) 23:06:40
半年ROMってろ ←嘘
741デフォルトの名無しさん:2007/06/07(木) 23:10:08
>>738
無駄無駄
たぶん昨日ふらっとスレにいた496だ
ブッ飛んだ質問してたからな
742デフォルトの名無しさん:2007/06/07(木) 23:11:24
       _,,-'' ̄ ̄`-、
       /        \
      ,/           \
     /   ―  ―     ヽ
    lヽ  - 、 ! , _     |
    |r――-、_⊥ ,――'-、 |,-,    
    |::::::::::::::::/ |ヽ:::::::::::::::|-|'イ!|  
     ト、__,,/:  |: `、__,,/ ,|ソ/    
     .|    、_ j| _,、     ,|-'
     |   /lll||||||||||l`、   ,|
     `i ,|||' ̄= ̄`|||、 / ト、
     「|ヽ|ll||||||||||||||||| /i |::::\
    /:::::\`!!||||||||||||!!'   |::::::::\
   /::::::::::::::`ー-、.._ i     |::::::::::::::\
  /:::::::::::::::::::::::::::::::::::`ー-、. |::::::::::

 ハント・シロムッテロ[Hunt Siromuttero]
      (1955〜 アメリカ)
743デフォルトの名無しさん:2007/06/07(木) 23:12:23
496だとしたら質問しっぱなしで消えるからあまり期待するなよw
744デフォルトの名無しさん:2007/06/07(木) 23:13:35
DataTime.Parse 例外をちゃんと拾っているだろうか。

BETWEEN @f1 AND @f2
745デフォルトの名無しさん:2007/06/07(木) 23:19:17
>>742
この手の奴って色々あるんだなぁ

でもググレカスのインパクトが強すぎて後はどれもイマイチだな
746デフォルトの名無しさん:2007/06/07(木) 23:21:35
>>744
いいひとだな。君は。
この汚らしい流れの中でひとり輝いているよ。
747デフォルトの名無しさん:2007/06/07(木) 23:23:08
こんなとこでROMっててもなあw
回答者のクオリティとかじゃなくて、限定された問題に
ピンポイントで答えるためのスレだから横から読んでてもあんまりためにならないよ
748デフォルトの名無しさん:2007/06/07(木) 23:25:21
他の人がどんな質問の仕方して、どんな答えが来ているか見るだけも
勉強になるのでは?
2ch見始めてから1年くらいカキコできなかった俺が言う。
749デフォルトの名無しさん:2007/06/07(木) 23:29:17
こういう中学生じみたくだらないスレの流れもいいが(俺は好かないが)、
どうもここのところ良貨が悪貨に駆逐されてないか?

まともなレベルのPGは呆れて来ないようになってきている気がする。
少しはアホなレスは控えた方がいいんじゃないの?
このままのトレンドで行くと困ったときに質問するチャンネルが一つ減るぞ。
750デフォルトの名無しさん:2007/06/07(木) 23:29:34
        ,.,.::;:::;:;:::;::;.,.、
        /;::;::;:;:::;:;::;:;:;::;)._
      ,...;::;:" ´ ` ー" ヽ:;:ヽ
      ,:;::;           ヽ:;ヽ
     {:ミ            ミ;:.,
     ;:;:;:            i:;:ノ
     i;:;i ;;iiiiillllllll)  (llllllllliii;; l:;::;}
    r^ミ  /_(;;)ゝヽ / <(;;)_ゝ ミ
    i ^ヽ.    ̄ l l   ̄   /^i
    ヾ i: .   , i j 、    .:./^ i
     ヽi: : :   ^`-'^   . :./-'/
     _| i:. :.: .:_.:_.:_:._:. :. :. .:.lー'"
    /ヽ .: .:...´ニニニ`. :i..:/
  /   ヽ :.ヽ.: .: :. : .:. .:.i/
       ヽ . :.ヽ、: .:_:ノ/

     コ・チミルナ [Co Chimirunna]
    (1902〜1959 キューバ共和国)
751デフォルトの名無しさん:2007/06/07(木) 23:31:24
自分がどんな状況にいるか説明できない質問者、というのも困りもの。
回答者もあれだが、質問者のレベルがスレのレベルということもあるのでは
752デフォルトの名無しさん:2007/06/07(木) 23:48:32
現在、Delphiを使っていて、ちょっとC#も使ってみようかと思っているものです。

C#のGUIコントロールは、UNICODEに対応しているのでしょうか?

また、国際化対応のためのコンポーネントなどがありますでしょうか?
GetText相当のものでもあればよいのですが・・・。
753デフォルトの名無しさん:2007/06/07(木) 23:51:20
>>713
それはeventとかを使わず独自のファンクターでsubscribeをしろということかね?
754デフォルトの名無しさん:2007/06/07(木) 23:54:17
>>752
yes

コンポーネントは必要なし。
フレームワークでおk
755デフォルトの名無しさん:2007/06/07(木) 23:57:07
また、だんだんフナムシって罵りたくなって北。
756デフォルトの名無しさん:2007/06/07(木) 23:59:37
姉妹スレです。
仲良く使ってね。

ふらっとC♯, C#(初心者用) Part16
ttp://pc11.2ch.net/test/read.cgi/tech/1179313212/

カモこいや。カモーン
757デフォルトの名無しさん:2007/06/08(金) 00:17:49
>>753
そんなことしたからといってできるとは思えない
758デフォルトの名無しさん:2007/06/08(金) 00:22:33
やっぱ国際化ってサテライトアセンブリでやるのかな。
簡単なのでいいけど、ユーザーによってはテキストで(ini or xml )
言語ファイル作れとか言うから困る
そっちのほうがユーザーが編集できるメリットはあるんだろうけど
759デフォルトの名無しさん:2007/06/08(金) 00:29:50
>>757 リフレクションでメソッドインフォなりメソッド名などなどから復活とかならなんとかなるかと。
まぁせいげんもあるけれど。
760デフォルトの名無しさん:2007/06/08(金) 00:56:46
>>754
サンクス。
安心して、つこーてみるす
761デフォルトの名無しさん:2007/06/08(金) 01:03:41
>>760
後のほうは嘘じゃないかな?
762デフォルトの名無しさん:2007/06/08(金) 06:17:46
>>753
保存のレベルがどこまでかだが
他プロセスなりで復元可能なレベルでシリアライズしたいなら
EventArgs に SerializableAttribute が付いている訳だから
この辺りをうまく使ってコマンドパターン化してみるのは手かも

delegate 自体を保存して他プロセスで復元となると
無名関数をシリアライズするとか
動的に IL を生成してアセンブリとして保存するとかも
できないことはないが……
763デフォルトの名無しさん:2007/06/08(金) 06:18:29
>>761
特別なコンポーネントを組み込む必要なしに
フレームワークレベルでサポートしてるだろ
764デフォルトの名無しさん:2007/06/08(金) 08:44:23
>>762
やりたいことは独自のシリアライズFWでデリゲート呼び出しもシリアライズすることです。
いまちょっとみていたらDelegateからMethodInfoとれるので保存できそう。
ただDelegate保存できるようにすると少しややこしいことになりそう。
その場で知り合図して使う分にはいいけれど、オブジェクトの永続化として考えるとスキーマの変更以外にメソッドの変更や匿名メソッドの取り扱いを変えるだけで再生ができなくなるか。
でもDelegate保存できないと再生のあとにDelegateの復元作業を各クラスがしないといけなくなるのでまんどくさい。
765デフォルトの名無しさん:2007/06/08(金) 08:50:51
>>763
.NET Frameworkレベルでサポートされてる?
766デフォルトの名無しさん:2007/06/08(金) 13:08:28
>>765
文字列リソースが入ったサテライトアセンブリを
現在のカルチャ/UI カルチャを元に自動的に選択して
適切な文字列を選択したり、ニュートラルに落としたりするのは
.NET Framework レベルの仕事以外の何だと思うの?
767デフォルトの名無しさん:2007/06/08(金) 16:39:44
>>766
おお、そこまでやってくれるんだ。教えてくれて、ありがとう。
768デフォルトの名無しさん:2007/06/08(金) 20:57:03
メインのフォームが閉じるボタンを押しても、閉じてくれない
ことがあります。closingやclosedは呼ばれてるんですが、
表示されたままで、それ以降はなにをしても無反応です。

無反応といっても完全に固まってるわけではない状態です。

たまにしか起こらないんですが、どういう原因があるのでしょうか?
769デフォルトの名無しさん:2007/06/08(金) 21:00:17
FormClosingでe.Cancel = true;にしてるとか
770デフォルトの名無しさん:2007/06/08(金) 21:01:36
>>769
それは確認しましたが問題ありませんでした。
771デフォルトの名無しさん:2007/06/08(金) 21:18:12
tabcontrolにtabpageが30個くらいあって、マルチラインなし
で使っています。
今選択中のタブのインデックスを0として、
selectedtabを一番右に設定すると左のほうのタブ
が描画されないです。invalidateやvisibleをいじっても
だめなんですがどうすればいいでしょうか?
772デフォルトの名無しさん:2007/06/08(金) 21:25:08
>>768
スレッドが動きっぱなしになってるのかもよ。
773デフォルトの名無しさん:2007/06/08(金) 21:28:59
ComboBoxのドロップダウンが表示されてるときにxボタンクリックしてるとか
774デフォルトの名無しさん:2007/06/08(金) 21:36:19
>>771
それ俺も困ってるんだわw
とりあえず、タブのAppearanceをNormalにすると直るんだよな
775768:2007/06/08(金) 21:36:24
>>772
スレッド関係は使ってないと思います。

>>773
メインのフォームにコンボボックスはないので多分関係ないと
思います。
776デフォルトの名無しさん:2007/06/08(金) 22:04:22
>>768
何かを開放し忘れてるんじゃ・・・

他のフォーム呼び出したりしてない?
777768:2007/06/08(金) 22:29:41
>>776
開放し忘れているかはわからないんですが、
closingで自分が持ってるメンバーに対してはnullをセット
して様子をみましたが、やはり発生するようです。

他のフォームはダイアログ(showdialog)として呼び出したりしています。

あとやるとすればデザイナが作ったメンバーのすべてnullをセット
してみることも考えましたが、それはまだやっていません。
778デフォルトの名無しさん:2007/06/08(金) 22:37:40
>>777
まあ確実にいえるのは「普通は」そんなことは起こらないから。
なにか妙なことをやっているのは確かだということだね。

まあ、フォアグラウンドのスレッドが稼動しているときの症状そのもののように聞こえるね。
779デフォルトの名無しさん:2007/06/08(金) 23:25:25
>>777
このスレの510あたりから読んでみて
780デフォルトの名無しさん:2007/06/08(金) 23:32:06
このフナムシが!
781デフォルトの名無しさん:2007/06/08(金) 23:32:24
なんのこっちゃw

そんなほのめかすような書き方は自信のなさの現われだろうけど、
自信がないのならむしろ黙っているべきだと思うぞ。
782デフォルトの名無しさん:2007/06/08(金) 23:59:41
>>781
例えほぼ無意味な一言レスでも、彼らにとっては貴重な発言の場
許してやって下さい
783780:2007/06/09(土) 00:06:22
>>781-782
俺のこと言ってんのか?
俺はフナムシって罵らずにはいられない、ビョーキの人だから気にせんでくれ。
784デフォルトの名無しさん:2007/06/09(土) 00:09:31
いや悪いボケ老人の繰言みたいなレスは最初から眼中に入ってない。
ほのめかし、というのは当然779のことだ
785780:2007/06/09(土) 00:15:04
>>784
お前、なにげ酷い奴だな。
周りの人から性格悪いって言われない?
786デフォルトの名無しさん:2007/06/09(土) 00:40:02
フナムシお触り禁止
787デフォルトの名無しさん:2007/06/09(土) 01:25:36
またいつもの奴かよ
788デフォルトの名無しさん:2007/06/09(土) 05:57:59
>>768
GUIスレッドのMainの前に[STAThread]は入ってる?
789デフォルトの名無しさん:2007/06/09(土) 19:42:17
Unionないの?
790デフォルトの名無しさん:2007/06/09(土) 19:49:24
あるよ。
791デフォルトの名無しさん:2007/06/09(土) 19:52:44
interop以外の目的では使うなよ
792デフォルトの名無しさん:2007/06/09(土) 22:48:58
TCPListenerクラスのコンストラクタにIPアドレスが必要な意味がいまいちわからん
クライアントなら接続先IPアドレスがいるだろうが、
サーバは接続される側なのになんでIPアドレスを指定するんだか
793デフォルトの名無しさん:2007/06/09(土) 22:56:10
よくわからずにカキコ
NICが2つあるばあい、識別するため
794デフォルトの名無しさん:2007/06/09(土) 23:20:31
Loopback かどうかも指定できるしな。
795デフォルトの名無しさん:2007/06/09(土) 23:24:30
マニュアル読めよ
796デフォルトの名無しさん:2007/06/09(土) 23:50:39
>>789
ない
797792:2007/06/10(日) 00:14:59
>793-794
なるほど。そんなシチュエーションは考えてなかった。

>795
どうして手持ちのヘルプには「IPアドレスを指定しないコンストラクタは非推奨になりました」ぐらいしか書いてないんだぜ?
798デフォルトの名無しさん:2007/06/10(日) 00:31:43
なんという前衛的な日本語の使い方だぜ?
799デフォルトの名無しさん:2007/06/10(日) 00:35:43
どうして田舎の方言かも知れないぜ?
800デフォルトの名無しさん:2007/06/10(日) 00:45:05
1000年前に、798のような文章を書けば、おなじ事言われたでしょ?
801デフォルトの名無しさん:2007/06/10(日) 00:47:55
>>800
自分の書いた内容がおかしくないか確かめたほうがいいぜ?
802デフォルトの名無しさん:2007/06/10(日) 01:37:36
もうええわ
803デフォルトの名無しさん:2007/06/10(日) 01:40:20
ほんまによういわんわ
804デフォルトの名無しさん:2007/06/10(日) 02:20:20
805デフォルトの名無しさん:2007/06/10(日) 02:52:48
元ネタ知らずに使ってたわ
806デフォルトの名無しさん:2007/06/10(日) 10:46:58
これはなつかしいw
807デフォルトの名無しさん:2007/06/10(日) 16:28:49
ハッシュで、

ht("aaa") = ("a", "b", "c", 0, 1, 2);
Console.WriteLine( ht["aaa"][3] );

みたいな、キーに対して値が配列でもてるようなのあると便利なんだけど、
そんなうまい話はないですかね?
808デフォルトの名無しさん:2007/06/10(日) 16:38:04
値の同一性判定次第だが普通に可能
809デフォルトの名無しさん:2007/06/10(日) 16:41:30
Dictionary<string, object[]>

普通は配列のところを構造体にでもするんじゃね
810デフォルトの名無しさん:2007/06/10(日) 17:07:55
ありがとうございます!

Dictionary<string, object[]>

object[]部分を構造体にしたほうがいいんですか?
とりあえず、配列のままちょっとがんばってみます
811デフォルトの名無しさん:2007/06/10(日) 22:03:51
それ以前の段階で頑張らないといけないな。
812デフォルトの名無しさん:2007/06/11(月) 01:05:13
どーゆーこと?
813デフォルトの名無しさん:2007/06/11(月) 01:15:08
ほのめかし知ったかはヌルーがオヌヌメ
814デフォルトの名無しさん:2007/06/11(月) 01:52:19
Dictionary<string, List<string>> とか
Dictionary<string, Dictionary<string, List<string>>> とか
やろうと思えばいくらでもできる訳だが

System.Collections.Generic 以下とかを眺めてみるといいんじゃまいか
815デフォルトの名無しさん:2007/06/11(月) 02:44:50
どう見てもVariant配列だかんな
816デフォルトの名無しさん:2007/06/11(月) 10:51:34
C++上がりなC#初心者なんですが、流れを読まずに質問失礼。
C#でウィザードダイアログを実現するには、パネルなどでCPage相当のものを作ってやるという形になるのでしょうか。
ざっと見たところ用意されていないようなので。。
817デフォルトの名無しさん:2007/06/11(月) 13:49:01
>>816
まずそのCPageというのを説明したほうがいいと思うぞ。
818デフォルトの名無しさん:2007/06/11(月) 15:23:34
>>817
すいません。CPageじゃなくてCPropertyPageクラスでした。
プロパティシートのウィザードモードみたいなクラスは用意されてないのかなと思った次第です。
819デフォルトの名無しさん:2007/06/11(月) 15:28:35
node数が100000を越える無向グラフを作っているんですが、
パフォーマンス向上の為、node同士をつなげるedgeの参照などに
C/C++スタイルのポインタを使用し、更に簡潔なコードなのでメモリ管理をプログラマ側で行いたいのですが、
unsafe CNode* pNode; などとするとやっぱりCS0208で弾かれます。
C/C++を使わないで済む、何か巧い方法はないでしょうか?
820デフォルトの名無しさん:2007/06/11(月) 15:34:24
naiyo
821デフォルトの名無しさん:2007/06/11(月) 15:35:14
それC++スタイルのポインタにすることでどれほどスピード稼げるの?
822デフォルトの名無しさん:2007/06/11(月) 15:43:18
う〜ん、マイルド。
823デフォルトの名無しさん:2007/06/11(月) 16:03:36
C++/CLIでがんばるお
824デフォルトの名無しさん:2007/06/11(月) 16:55:13
>>819
参照型の変数ってポインタみたいなもんじゃん。
何が不満?
GC?
825デフォルトの名無しさん:2007/06/11(月) 17:06:23
>>824
Cで使うようなポインタでシコシコやった方がGC任せより早いって事だろ
826デフォルトの名無しさん:2007/06/11(月) 17:11:25
>>818
TabCotrol, TabPage
827デフォルトの名無しさん:2007/06/11(月) 18:33:16
C# でコーディングし、要所だけ C/C++ で記述する方法が知りたいのですが、
どんなキーワードでぐぐればいいんでしょうか/どんな手がかりで調べればいいんでしょうか。
828デフォルトの名無しさん:2007/06/11(月) 18:47:14
>>827
C++ CLI
829デフォルトの名無しさん:2007/06/11(月) 20:40:47
そんなこと質問するような人には必要ないことは間違いない
830デフォルトの名無しさん:2007/06/11(月) 20:53:08
同じソースにC#とC++は混在できるのか?

Cでコーディングして要所だけasmキーワードを使っていたMMX時代がなつかしい
831デフォルトの名無しさん:2007/06/11(月) 20:56:44
混在できない
Visual Studioでは別々のアセンブリにして参照設定することになると思う
832デフォルトの名無しさん:2007/06/11(月) 20:56:47
できません
833デフォルトの名無しさん:2007/06/11(月) 20:58:59
ファイル分ければ混在は可能だけど、同一ファイル内に C# と C++ を混在させるのは出来ないかと。
834デフォルトの名無しさん:2007/06/11(月) 21:00:13
マージしろ
835デフォルトの名無しさん:2007/06/11(月) 21:04:27
中途半端にC++なんて言わずにIL書いちゃえ
混在できないこともないし
836デフォルトの名無しさん:2007/06/11(月) 21:05:21
C/C++を使わないで済む、何か巧い方法はないでしょうか?

C# でコーディングし、要所だけ C/C++ で記述する方法が知りたいのですが、

その間およそ3時間
837デフォルトの名無しさん:2007/06/11(月) 21:06:09
窓の杜で見たんですけど、
エクスプローラのツールバー作るのってどうやるんですか><
C#かVB.NETで作ってるみたいなんです
838デフォルトの名無しさん:2007/06/11(月) 21:10:48
839デフォルトの名無しさん:2007/06/12(火) 16:43:01
VisualStudio2005 proの開発環境の質問をしてよろしいでしょうか?

エディタ上で、右のタブに移る、左のタブにうつる、というショートカット設定は可能でしょうか?
ウインドウ,次のドキュメントウィンドウ(Ctrl+F6)では、開いた順?か何かよくわからない順番で、
切り替わってしまいます。

普段、Borland製品を使っていまして、VS.netを使ってみたら、
挙動が違っていたので困ってしまいました。

840デフォルトの名無しさん:2007/06/12(火) 18:13:58
ここは言語のスレであって製品のスレではないのでこちらへー

Visual Studio 2005スレ Part21
http://pc11.2ch.net/test/read.cgi/tech/1180692040/
841デフォルトの名無しさん:2007/06/12(火) 18:28:18
>>840
了解しました。
そちらに移ります。
誘導ありがとうさんです。
842デフォルトの名無しさん:2007/06/12(火) 20:44:49
C#未経験です・・GUIやりたいんですけど作成手順の入門ページってないんでしょうか??
843デフォルトの名無しさん:2007/06/12(火) 20:47:56
素直にWPFを待つか、切り捨てられる可能性があるFormsをするのかによる。
また、ASP.NETならそれほど、変更が加えらないと思うので良い。
844デフォルトの名無しさん:2007/06/12(火) 21:02:20
あんまり深く考えないで
はじめはVisual C# Express Edition落として遊んでみたらいいんじゃない?
845デフォルトの名無しさん:2007/06/12(火) 22:05:15
.netでwin32のPostMessage相当のことはできるのでしょうか?
846デフォルトの名無しさん:2007/06/12(火) 22:08:58
それで何を実現したいかによる
847デフォルトの名無しさん:2007/06/12(火) 22:14:04
[DllImport("user32.dll", SetLastError = true)]
private static extern int PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);

かな?
848デフォルトの名無しさん:2007/06/12(火) 22:17:41
>>847
それ「相当」違うw
849デフォルトの名無しさん:2007/06/12(火) 22:21:00
BeginInvokeってことかいな?
850デフォルトの名無しさん:2007/06/12(火) 22:46:07
>>846
実現したいのはスレッドを用いない非同期実行です。
851デフォルトの名無しさん:2007/06/12(火) 22:48:05
>>849
それでした。ありがとうございます。
852デフォルトの名無しさん:2007/06/12(火) 22:48:41
べつのぷろせすかな
853デフォルトの名無しさん:2007/06/12(火) 22:52:07
>>850
使ってるんじゃね?
854デフォルトの名無しさん:2007/06/12(火) 22:56:05
>>854
MSDNには
>コントロールの基になるハンドルが作成されたスレッド上で、指定したデリゲートを非同期的に実行します。
とあるので、別スレッドで呼ばれることはないってことでいいんですよね。

855デフォルトの名無しさん:2007/06/12(火) 23:03:05
つーか別スレッド『から』使うものだよ?
856デフォルトの名無しさん:2007/06/12(火) 23:03:20
なかなかフナムシって罵るタイミングが掴めない。(´・ω・`)
もうちょっと馬鹿な発言ぷり〜ず!
857デフォルトの名無しさん:2007/06/12(火) 23:07:08
>>855
MSDNには
>コントロールのハンドルを所有しているスレッドからでも呼び出すことができます。
と書いてあるので、同じスレッドでも問題ないですよね。
858デフォルトの名無しさん:2007/06/12(火) 23:12:46
全然問題ないよ。
でもそれ非同期っていわないから。
859デフォルトの名無しさん:2007/06/12(火) 23:13:29
>>856なんかはかなり馬鹿な発言だと思うぜ
860デフォルトの名無しさん:2007/06/12(火) 23:17:58
>>858
非同期は非同期でしょ。
ただ自分にむかって自分で仕事をキックしてるだけの話
861デフォルトの名無しさん:2007/06/12(火) 23:18:21
>>858
非同期とはいわないんですか?でも同期でもないですよね?
なんて呼ぶのが正解なんですか?
862デフォルトの名無しさん:2007/06/12(火) 23:20:41
自スレッドにBeginInvoke発動!!!

自スレッドで作業中……

自スレッドで作業中……

自スレッドで作業中……

終わった!

さてBeginInvokeの次の行と。


って感じの理解でおk?
これって同期じゃね?
863デフォルトの名無しさん:2007/06/12(火) 23:20:49
あちこちのサイト見ているが デリゲートのBEGININVOKEはスレッドプール使ってるって
書いてある。途中で方式変わったのかな?

でも同一スレッドで非同期処理なんて変だと思わないか?

864デフォルトの名無しさん:2007/06/12(火) 23:23:06
自スレッドにBeginInvoke発動!!!

さてBeginInvokeの次の行と。

自スレッドで作業中……

自スレッドで作業中……

自スレッドで作業中……

終わった!

こうですよね。
865デフォルトの名無しさん:2007/06/12(火) 23:23:26
Control.BeginInvoke はデリゲートの BeginInvoke とは関係ないぞ
866デフォルトの名無しさん:2007/06/12(火) 23:23:44
>>862
だから非同期じゃん。

同期というのはBeginInvokeによって引き起こされる処理の完了に「同期して」
次の処理が実行されるような場合のことを言うんだよ。
867デフォルトの名無しさん:2007/06/12(火) 23:26:04
BeginInvokeはスレッドプール使ってる

終了
868デフォルトの名無しさん:2007/06/12(火) 23:27:29
>>866
頭大丈夫?
869デフォルトの名無しさん:2007/06/12(火) 23:27:40
>>866
理解した
870デフォルトの名無しさん:2007/06/12(火) 23:37:48
自スレッドにBeginInvoke発動!!!

さてBeginInvokeの次の行と。

メソッド内の作業中……

とりあえずスレッドのキューが空になったぞ

BeginInvokeの方を作業中……

BeginInvokeの方を作業中……

終わった!

でいいんでしょうかや?
なんかふらっと逝くべきですね
871デフォルトの名無しさん:2007/06/12(火) 23:50:27
Control.BeginInvokeはべつものじゃないか。

それに翻訳の問題ありそうな気がする。

同期呼び出し Invoke
872デフォルトの名無しさん:2007/06/12(火) 23:57:11
>>.863 ここで話してるのはControlのBeginInvoke 

>>861 そこでいっている例についてだけ言うなら同期でよろし。まあまり深く考える必要はない
873デフォルトの名無しさん:2007/06/13(水) 00:14:17
ControlのBeginInvokeだと使いどころが違いそうな気がする。
どちらかというとContorolのいじるために使うんじゃないの?

ttp://uchukamen.com/Programming/Asyncro/
874856:2007/06/13(水) 00:16:35
>>868
そのセリフは寧ろ、俺にかけて欲しかった。
875デフォルトの名無しさん:2007/06/13(水) 00:23:39
普通はコントロールを別スレッドからいじる為に使うが、
後で実行するために使うこともできるってだけの話。
876873:2007/06/13(水) 00:24:05
ゴメ 上のほう読んでなかった…


>>874
かける言葉が見当たらない…
877デフォルトの名無しさん:2007/06/13(水) 00:40:54
構ってちゃんは放置で
878デフォルトの名無しさん:2007/06/13(水) 00:45:34
C#を開発メインで使っている企業を知りませんか?
出来れば、C#メインで仕事がしたいと考えているのですが、
アバナードならC#メインで仕事できますかね?
879デフォルトの名無しさん:2007/06/13(水) 00:48:05
マ板で聞くべし。
まともな返事は来ないだろうけど。
880デフォルトの名無しさん:2007/06/13(水) 01:11:52
>>878 ぶっちゃけうちの会社では新規はC#でしかやってない。
既存の延長のやつはC++だけど。金融系。
881デフォルトの名無しさん:2007/06/13(水) 01:41:26
すいません素朴な質問です。
参照型変数ががptr(ポインタ)と略される要領で、ほかにも略記号ってどんなのがありますかね
コンストラクタとかインスタンスとか構造体とかあるんじゃないかなーってふと思いまして
882デフォルトの名無しさん:2007/06/13(水) 01:57:26
>参照型変数ががptr(ポインタ)と略される

ってのはC++とかと比べたときのメタファーにすぎない(とか書くと突っ込まれそうだけど)
少なくとも略記号じゃないよ

コンストラクタとかにもそんなのないよ
883デフォルトの名無しさん:2007/06/13(水) 02:07:18
現在Javaを『やさしいJava』という本で学んでいるのですが、JavaとC#って同時に勉強すると
混乱しますでしょうか?
884デフォルトの名無しさん:2007/06/13(水) 02:08:05
命名規則の雰囲気で区別できる
885デフォルトの名無しさん:2007/06/13(水) 02:08:16
そんなの頭のレベルの問題だろうが。
人に訊くことじゃねえだろ・・・。
886デフォルトの名無しさん:2007/06/13(水) 02:13:09
>>884-885
ありがとうございました。
887デフォルトの名無しさん:2007/06/13(水) 02:36:29
>>886
どういたしまして
888デフォルトの名無しさん:2007/06/13(水) 08:44:53
>>882
ありがとうございましすー。
別に誰かに見せるわけでもないし、
特にないならコメントは勝手に自分だけわかるように略記して問題ないですね
889デフォルトの名無しさん:2007/06/13(水) 08:46:49
>>878

JR束はwin鯖+C#がおおいぞ。えきねっとなんかそうだと思う。
新幹線の運行管理にまで使っているらしい。束の情報子会社なんてどお?
そんな新幹線、個人的には(((((((( ;゚Д゚))))))))ガクガクブルブルガタガタブルブルだが
890デフォルトの名無しさん:2007/06/13(水) 10:00:32
クライアントとしてはいいと思うよ
うちもDBにC++とjavaだったけど端末なんてWinばっかだし
C#でできるものはそっちでやるようにしてるとこ
891デフォルトの名無しさん:2007/06/13(水) 10:44:23
log4netで質問があります。
現在ログ出力自体はできているのですが、
ログの出力先・ファイル名の設定を
xmlでは無くiniファイルで設定したい、
という要望があります。

ソースを改造する手もありますが、
もっと簡単に実現できないものでしょうか。
892デフォルトの名無しさん:2007/06/13(水) 11:12:09
Processで質問です

Processで起動したプログラムが異常終了したとき
Microsoftに送信しますか?だとかデバッグする?みたいに
聞いてくるウィンドウがでますよね?

あのウィンドウをでなくして、エラーを起こしたプログラムが即終了するようにする
方法ってありますか?
893デフォルトの名無しさん:2007/06/13(水) 11:38:40
>>892
Application.Run(new Form1());

をtry..catchで囲めばいいんじゃないっけ…(自信はない)。
894デフォルトの名無しさん:2007/06/13(水) 11:40:01
>>892は他のプロセスの場合が異常終了した場合のことを言ってるのだろだろ
仮にそうでなくとも>>893のは問題外
895デフォルトの名無しさん:2007/06/13(水) 11:46:59
あれは設定でオフにできるけど、自分が作ったやつだけ止めたいってことじゃないの?
896デフォルトの名無しさん:2007/06/13(水) 12:14:49
>>893-895
情報ありがとうございます

program1.exe
program2.exe

があって、program1.exeからProcessでprogram2.exeを呼び出すんですが
program2.exeがエラー起こしておわっちゃうと、ウィンドウがでてそこで
program1が延々と待ってしまうので、それを避けたいのです
今のところ思いつくのはprogram2のなかでtryつかっちゃうことですが
それだと自分がつくったものじゃないときに対応できないので
program1側でなんとかできないかなと思って

>>895さん、設定でオフってWindowsの設定でできるんでしょうか?
それでもOKです
どうすればいいんでしょ?おしえてください
897デフォルトの名無しさん:2007/06/13(水) 12:32:39
898デフォルトの名無しさん:2007/06/13(水) 12:36:02
オフにするのは、マイコンピュータのプロパティの詳細設定のエラー報告を設定するんだけど
プログラムからならサービスの[Error Reporting Service]を止めちゃうとか
899892:2007/06/13(水) 12:54:51
>>897
ありがとうございました
希望通りになりました

>>898
新たな情報ありがとうございます
プログラムでコントロールできるんですね
でもボクの能力の限界を超えているようです
やりかたわかんないTT
900デフォルトの名無しさん:2007/06/13(水) 13:03:09
>>899

Process myExe = Process.Start("sc stop ersvc");
myExe.WaitForExit();

これでどう?やったことねえけどwwwww

コマンドプロンプトで
sc stop ersvc
とうてばXPなら[Error Reporting Service]をとめれる
901892:2007/06/13(水) 14:11:02
>>900
だめでした・・・
902デフォルトの名無しさん:2007/06/13(水) 14:12:08
まあサービスはアドミン権限いるだろうし、いきなり止めるのもあれだからなあ
903デフォルトの名無しさん:2007/06/13(水) 14:13:04
>>896
そのものずばりのAPIがあったはずだから探してみれ
904デフォルトの名無しさん:2007/06/13(水) 14:23:26
プロセス内からはSetErrorModeで設定できたんじゃないかな。
外部からは知らんけど、プロセス起動時に設定できてもいいような気はする。
905904:2007/06/13(水) 14:28:31
なんだ、デフォルトで継承されるのかこの設定。
それはそれでなんつーかアレだけど。
ttp://msdn2.microsoft.com/en-us/library/ms680621.aspx
>A child process inherits the error mode of its parent process

というわけで自分のプロセスでこれ設定して子プロセス起こせば
それで解決じゃね?
906892:2007/06/13(水) 15:19:13
>>905
情報ありです
下のようなことやってみたけどだめでした
897さんの方法でいっときます
ではでは〜


using System.Runtime.InteropServices;
・・・
[DllImport("kernel32.dll")]
extern static uint SetErrorMode(uint uMode);
・・・
uint oldmode = SetErrorMode(0x0001とかいろいろ);
・・・
Process p = Process.Start("・・・・");
p.WaitForExit();
・・・
SetErrorMode(oldmode);
907デフォルトの名無しさん:2007/06/13(水) 15:38:44
あれ?継承クラスからだとベースクラスで宣言してるイベントRaiseできないんだっけ?
908デフォルトの名無しさん:2007/06/13(水) 16:42:47
無理
public event EventHandler MyEvent;
protected void OnMyEvent(object sender, EventArgs e){略}
のパターンに従え
909デフォルトの名無しさん:2007/06/13(水) 17:55:30
WinXP VS2005 C# で質問があります。
Cのprintf("%3d",hoge)のような処理は、どのようにすれば実現できます
でしょうか?
string.Format("{0:000}",hoge)だと"0"が含まれてしまいますし、
ブランクは設定できないようですし、ワタシとても困てるね。
宜しくお願いします。
910デフォルトの名無しさん:2007/06/13(水) 18:04:55
右詰め3桁数字なら、{0, 3} じゃないか?
911909:2007/06/13(水) 18:10:51
>>910
できました…
こんな簡単に…
ありがとうございます
912デフォルトの名無しさん:2007/06/13(水) 20:39:38
てすと
913デフォルトの名無しさん:2007/06/13(水) 20:41:26
>>911
ちったぁ、ドキュメント読め! そこのフナムシ!
914デフォルトの名無しさん:2007/06/13(水) 20:49:44
なんか下水の底のリケッチアが騒いでるな
915デフォルトの名無しさん:2007/06/13(水) 22:15:48
>>913
うぜーし、つまらん。どかいけ、カス。
916913:2007/06/14(木) 01:33:50
>>914-915
俺、頭おかしいから無駄に罵ってるんだけど、
君たちも頭おかしい子?
917デフォルトの名無しさん:2007/06/14(木) 01:39:28
自分で自分を罵ればいいじゃん
918デフォルトの名無しさん:2007/06/14(木) 01:51:42
フナムシお触り禁止
919デフォルトの名無しさん:2007/06/14(木) 08:35:59
>>916
空気嫁よ。
920デフォルトの名無しさん:2007/06/14(木) 10:28:25
>>913はやればできる子
921デフォルトの名無しさん:2007/06/14(木) 11:52:09
やればできるは、できないと同義。
922デフォルトの名無しさん:2007/06/14(木) 11:59:14
そうでもない
やってないことは確かだが
923デフォルトの名無しさん:2007/06/14(木) 15:30:00
int も double も入れられる配列を作ろうとして、

ValueType[] a = new int[] { 0, 1, 2 };

としましたが、暗黙的に変換できませんと、エラーがでました。
こういうことってできないですか?
924デフォルトの名無しさん:2007/06/14(木) 15:41:40
ValueType[] a = new ValueType[] { 0, 1, 2 };
じゃないの?
925デフォルトの名無しさん:2007/06/14(木) 15:45:33
int も double も入れられる配列って何に使うの?
別の配列にするより、いちいち要素ごとに型の心配する方が面倒だと思うんだけど
926デフォルトの名無しさん:2007/06/14(木) 16:19:45
>>925
スクリプト言語だと、あたり前にできたりするが、C#はできない。
そういうこと。
927デフォルトの名無しさん:2007/06/14(木) 16:24:01
整数もdoubleであらわしゃいいじゃん。
928デフォルトの名無しさん:2007/06/14(木) 16:24:56
スクリプト言語だからじゃないだろ
929デフォルトの名無しさん:2007/06/14(木) 16:29:01
C#で書かれたHTTPD(Webサーバ)って何かありませんか?
昔見たことがあるのですが、ブックマークしてなくて忘れてしまいましたorz
930デフォルトの名無しさん:2007/06/14(木) 16:32:39
普通はオブジェクトの配列にしてしまうだろう。
object [] a = new object[] { 1, 2, 3, 4.2, "abc" }
objectをValueTypeにしてもboxingは発生してる。
違いは上の例でstringがエラーになる程度のこと。
オブジェクトの配列はリフレクションでよく見かけるね。
931デフォルトの名無しさん:2007/06/14(木) 17:02:54
struct Int32OrDouble{
int intValue;
double doubleValue;
bool isInt;
}//無駄が多すぎるな。もうちょっといいアイデアない?
932デフォルトの名無しさん:2007/06/14(木) 17:12:10
>>931
object でよくね?

どうしてもというなら、
[StructLayout(LayoutKind.Explicit)] と [FieldOffset(0)] 属性使えば
C の union みたいな事できる。
933デフォルトの名無しさん:2007/06/14(木) 18:39:32
934デフォルトの名無しさん:2007/06/14(木) 19:41:28
int と double なら double に統一すれば精度的にも問題ないな
935デフォルトの名無しさん:2007/06/14(木) 19:49:19
>>931
それをインターフェイスにして、

* intを引数にとるコンストラクタから作る実態はintの構造体と

* doubleを引数にとるコンストラクタから作る実態はdoubleの構造体

の二つにインプリメントさせればいいんじゃない?
936デフォルトの名無しさん:2007/06/14(木) 20:54:16
それじゃ意味ないだろ、この流れでは。
937デフォルトの名無しさん:2007/06/14(木) 20:58:40
この流れってどんな流れよ
938デフォルトの名無しさん:2007/06/14(木) 21:09:51
効率悪くて無駄が多いのが嫌って流れじゃなかったの?
939デフォルトの名無しさん:2007/06/14(木) 21:38:49
>>923はたぶん、>>807だ。
940デフォルトの名無しさん:2007/06/14(木) 22:21:11
ジェネリックじゃいかんの?
941デフォルトの名無しさん:2007/06/14(木) 22:24:19
>>940
是非とも実現してみてくれ。
942デフォルトの名無しさん:2007/06/14(木) 22:24:39
C#ってなんで
int i;
{
 int i;
}
ってできないの?
943デフォルトの名無しさん:2007/06/14(木) 22:24:48
944デフォルトの名無しさん:2007/06/14(木) 22:26:58
>>942
意味不明。

名前が被ってるってことか?
一番目と2ばんめのiの区別はどうするつもりだ
945デフォルトの名無しさん:2007/06/14(木) 22:28:56
ここはふらっとじゃない。
946デフォルトの名無しさん:2007/06/14(木) 22:29:15
>>942
どう考えてもバグの温床だろ
947デフォルトの名無しさん:2007/06/14(木) 22:38:34
すみません。C#で前回にSimpleCalcというソリューションをつくりまして
それを開こうとおもって、SimpleCalc.slnファイルをクリックしたらソリューションは
開けましたが、ソースコードの画面で、フォームのデザイン画面の表示の仕方がわかりません。

おしえてください。よろしくお願いします。
948デフォルトの名無しさん:2007/06/14(木) 22:38:48
>>944
意味不明ってなんだよ。
Cでは
int testfunc(int n){
 int i=n*n,j=n+n;
 if(n%2){ return n; }
 {
  int i=n*n*n;
  if(i%5==0){ j+=n; }
 }
 return j;
}
としてもエラーにはならない。
C++でメンバ関数の引数名とメンバそのものが被ってもエラーにならないのと同じだ。
949947:2007/06/14(木) 22:40:03
自己解決しました。すみませんでした。
950デフォルトの名無しさん:2007/06/14(木) 22:40:36
>>948
そのコード意味不明。
951デフォルトの名無しさん:2007/06/14(木) 22:42:39
>>947
ソリューションエクスプローラーから対象のものをダブルクリックで開かない?
右クリックでデザイナの表示でもいいが
952デフォルトの名無しさん:2007/06/14(木) 22:42:53
>>948
this

>>942
ちゃんと内容書けよ。
ここはエスパー養成所じゃないんだ。
953デフォルトの名無しさん:2007/06/14(木) 22:43:50
>>948
それIDEでエラーなくコピペできる?
954デフォルトの名無しさん:2007/06/14(木) 22:44:21
>>950
例だから意味なんてない。
俺は子スコープで名前が同じ変数を使いたいだけなんだ。
for(int i=0;i<hoge;i++){
 for(int i=0;i<huga;i++){//実行回数が問題でトップレベルのforなんて関係ないね
  func();
 }
}
955デフォルトの名無しさん:2007/06/14(木) 22:44:44
>>952
エスパーを召還してるのは942じゃなくてアンタでしょw
>>942は別に意味不明じゃないぞ
956デフォルトの名無しさん:2007/06/14(木) 22:47:21
.Net厨はCさえ書けないゆとりという事が証明された。
957デフォルトの名無しさん:2007/06/14(木) 22:47:25
>>954
>>946
終了。

続きは高校卒業してからな。
958947:2007/06/14(木) 22:48:03
>>951 
回答ありがとうございました。
959デフォルトの名無しさん:2007/06/14(木) 22:58:35
>>957
なんで俺が高校生って分かったの?
嘘だけど。
960デフォルトの名無しさん:2007/06/14(木) 22:59:28
中学生かと思った
961デフォルトの名無しさん:2007/06/14(木) 23:00:37
おーい、フナムシの出番だぞ〜
962デフォルトの名無しさん:2007/06/14(木) 23:34:25
うるせぇ、フナムシぶつけんぞ!!
963デフォルトの名無しさん:2007/06/14(木) 23:36:23
ふらっとより低レベルなスレw
964デフォルトの名無しさん:2007/06/15(金) 01:42:09
Cを知らないことを白状するけど、
>>954みたいな書き方をCでしたとき
スコープの外のiを中で使いたいときはどうすんの?
つーか使えないこと前提なの?
965デフォルトの名無しさん:2007/06/15(金) 02:02:29
使わないことを前提にシャドウしてるんだろ。
使う必要があるなら別の名前にする。
966デフォルトの名無しさん:2007/06/15(金) 04:20:13
あんなコード書いたら即日首にするよ
967デフォルトの名無しさん:2007/06/15(金) 11:00:58
小一時間問い詰める
968デフォルトの名無しさん:2007/06/15(金) 12:07:22
{
 int i;
}
{
 int i;
}
したいときはある。
969デフォルトの名無しさん:2007/06/15(金) 12:10:26
>>968
それだったら問題なく出来るんじゃね?
970デフォルトの名無しさん:2007/06/15(金) 12:11:25
それはスコープ外れてからの宣言だし何の問題もないでしょ。
971デフォルトの名無しさん:2007/06/15(金) 17:16:54
つか、for(int i; ...) { ... } for(int i; ...) { ... } がそれでしょ。
何も問題ない。
972デフォルトの名無しさん:2007/06/15(金) 17:22:16
そのfor文の int がそのスコープの中に入ったのは後になってからだけどな。
973デフォルトの名無しさん:2007/06/15(金) 17:22:53
スコープじゃねー、ブロック
974デフォルトの名無しさん:2007/06/15(金) 17:43:39
そりゃC++だけだ
975デフォルトの名無しさん:2007/06/15(金) 17:44:35
あー、ここC#スレだっけ
976デフォルトの名無しさん:2007/06/15(金) 19:07:01
C++ の最初の規格ができた時には既にスコープの中に入ってたらしいがな。
入ってなかったのは初期のドラフト時代のみらしい。
977デフォルトの名無しさん:2007/06/15(金) 22:35:23
VC++1.0の時は入ってなかったな
978デフォルトの名無しさん:2007/06/15(金) 23:08:07
アホみたいな話題で盛り上がってないで次スレ〜
979デフォルトの名無しさん:2007/06/15(金) 23:40:54
フナムシってそこはかとなくキモいよね。
980デフォルトの名無しさん:2007/06/16(土) 01:13:58
・goto文でもりあがったことがある
981デフォルトの名無しさん:2007/06/16(土) 14:23:37
VCが仕様をみたしてなかったんでは。
ところで
{
int i;
}
{
{
int i;
}
}
これもできないよね。
982デフォルトの名無しさん:2007/06/16(土) 14:27:09
できるだろ。
983デフォルトの名無しさん:2007/06/16(土) 14:30:02
>>981
>VCが仕様をみたしてなかったんでは。
当時のこと知らないなら黙ってろ。
まだ策定されてなかったんだよ。
984デフォルトの名無しさん:2007/06/16(土) 14:36:40
あれできた

>>983
知らないけど、割と最近までそういう製品だった印象があるよ
985デフォルトの名無しさん:2007/06/16(土) 14:39:05
境目は1998年だね。
986デフォルトの名無しさん:2007/06/16(土) 14:39:34
おい、フナムシども! 次スレにはこっちのスレを流用するぞ!

C♯, C#相談室 Part34
http://pc11.2ch.net/test/read.cgi/tech/1162467959/
987デフォルトの名無しさん:2007/06/16(土) 14:40:07
VC6 だと for (int i の i のスコープは外に出るな
だがここは C# スレだ
988デフォルトの名無しさん:2007/06/16(土) 14:40:09
>>984
それはVC++6.0の話だね。
あれはコンパイルスイッチをつけないと、新しい仕様にならなかった。
989デフォルトの名無しさん:2007/06/16(土) 14:55:50
MSは特にそうなのだが、互換を考えずに後から追加になった仕様や標準にはどこも冷淡だからね。
forに関しては使いたければこうすればいいということだったが未だに理屈が分からん。
#define for(x) if(0);else for(x)

あとC#に話を戻すけどC++から削った要素に8進数表記がある。
これに対する苦情はあまり聞かないけどどう?
010 はCだと8 だが C#だと10になる。
0377が使いたくてしょうがない人とか居る?
990デフォルトの名無しさん:2007/06/16(土) 15:02:13
>>989
ゼロが頭につくと8進表記扱いになるって知らなきゃ
即バグに繋がるような問題だしねぇ。
991デフォルトの名無しさん:2007/06/16(土) 15:10:24
化石級のunixエンジニアにはオクタルに染まってるのもいたが最近はみない。
992デフォルトの名無しさん:2007/06/16(土) 15:14:50
そもそも8進数の利点が分からん
16進や2進ならバイト表現に便利なのはわかるんだが
993デフォルトの名無しさん:2007/06/16(土) 15:16:09
8進表記ってもともとの目的は何なの?
ニブルが3ビットでバイトが6ビットみたいな環境とかでもあったんかな
994デフォルトの名無しさん:2007/06/16(土) 15:17:55
昔は24/36bitワードマシンとかあったじゃん。
995デフォルトの名無しさん:2007/06/16(土) 15:18:35
属性だろ
996デフォルトの名無しさん:2007/06/16(土) 15:18:45
2進数と16進数の中間。ビット表現に使う
数字だけで使えるしね
997デフォルトの名無しさん:2007/06/16(土) 15:18:49
二進数表記ってどうやればいいの?
列挙型で使いたいんだが
998デフォルトの名無しさん:2007/06/16(土) 15:19:10
ここでロートルの俺が一言。
昔はCPUの命令体系が8進数ベースだったんじゃよ。
999デフォルトの名無しさん:2007/06/16(土) 15:20:53
>>997
リテラル二進表記はない。
16進で書いて後ろにコメント付けとけ。
1000デフォルトの名無しさん:2007/06/16(土) 15:20:57
>>997
boolを32個ならべる

それはそれとして
卵かけ御飯をおいしくいただく
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。