C#, C♯, C#相談室 Part46
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/04/22(火) 00:31:59c++厨の嵐はスルー汁。
前スレ
C#, C♯, C#相談室 Part45
http://pc11.2ch.net/test/read.cgi/tech/1200911737/
その他テンプレ>>2-5くらい
0002デフォルトの名無しさん
2008/04/22(火) 00:45:01http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
ふらっとC#,C♯,C#(初心者用) Part23
http://pc11.2ch.net/test/read.cgi/tech/1200033660/
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/
0003デフォルトの名無しさん
2008/04/22(火) 00:46:21http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
.NET Framework SDK (2.0)
http://msdn2.microsoft.com/ja-jp/library/ms310244.aspx
MSDN Visual C# Express Edition フォーラム
http://forums.microsoft.com/msdn-ja/ShowForum.aspx?ForumID=187&SiteID=7
Visual Studio ユーザーグループ
http://vsug.jp/
@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/index.html
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
0004デフォルトの名無しさん
2008/04/22(火) 00:47:59ではよろしく。
0005デフォルトの名無しさん
2008/04/22(火) 00:59:18戻りをラムダ式として結果待ちをインターロックにしたのがポイントです
今後アウトオブオーダーにするとか、いろいろ展開が考えられるので。
これはLINQで使われた式木をみてふと思いついたんですよ、
プロセス代数なんかとも相性がいいと思います。
http://ja.wikipedia.org/wiki/%E8%A1%A8%E7%A4%BA%E7%9A%84%E6%84%8F%E5%91%B3%E8%AB%96
今は戻り値をラムダ式としてありますが、もしラムダプロパティーみたいなものが言語上にできると
普通にコードしているだけで、並列化するライブラリーがバリバリできるのではと思っていたりします。
これはもうひとつ問題があって、並列化するかどうかは使う側ではなく、クラスを作る側に主導権を持たせたいというのもあるので
スレッドセーフかどうかなんて、使う側は意識したくないですから。
0006デフォルトの名無しさん
2008/04/22(火) 01:03:28乙
0007デフォルトの名無しさん
2008/04/22(火) 01:04:280008デフォルトの名無しさん
2008/04/22(火) 12:12:59C#でやってる初心者用サイトはないかな?
少しググってみたが無さげで、C++サイトを見ながらやるしかないかなーという感じだが、
もしどこかいいところ知ってたら教えてくれまいか
0009デフォルトの名無しさん
2008/04/22(火) 14:58:570010デフォルトの名無しさん
2008/04/22(火) 15:12:55諦めろ。
最低でもC#のメモリモデルとマーシャリングは理解してないと無理。
初心者のやるこっちゃない。
素直にC++でやっとけ。
あと本当に初心者なら、CLIでやるのも絶対無理だから予め忠告しておく。
0011デフォルトの名無しさん
2008/04/22(火) 15:18:42それが理解できるなら、逆に問題なと見当たらない訳でw
という事はどう転んでも駄目な物は駄目という事だなw
0012デフォルトの名無しさん
2008/04/22(火) 16:08:07適当に感じのつかめる教材があればいいかなと思ったんだがw
C++ソース見ながらまったりやってくわ、トンクス
C++は業務で使っとるから趣味でまで使う気なす(´・ω・`)
0013デフォルトの名無しさん
2008/04/22(火) 16:20:280014デフォルトの名無しさん
2008/04/22(火) 16:55:27C#オンリーがC++へ行くなら困難は多いだろうが・・・
0015デフォルトの名無しさん
2008/04/22(火) 22:29:450016デフォルトの名無しさん
2008/04/23(水) 00:28:58「使いこなす」or「やめる」しか言わないヤツってバカなの?
0017デフォルトの名無しさん
2008/04/23(水) 01:39:54そうすればC#から使う方法もすぐわかりますとしか言えないのに、初心者用を紹介してくれだからな。
逆にC++で使う方法が分かっていて、C#からどう呼び出すのといわれれば一瞬で解決だろ?
tlbimp 使って必要なライブラリを.NET参照できるようにして、DirectXの型を自分の好みの型にマッピングする。
あとは、C++の使い方をどういう風に変換したかは自分がやったんだから、自分自信で全部わかりきれる状況にあるはずだ。
ここで、彼にはいったい何が必要なんだ?
おれたちにできることなど何もないだろ、それともここでC++やらCOMやらATLの勉強でもする気か、スレ違いだ。
0018デフォルトの名無しさん
2008/04/23(水) 10:23:19>>8はサイト知ってたら教えろって言ってるだけだろ。
何でお前らは「お前には無理」とか言って話があさっての方向に進むの?
0019デフォルトの名無しさん
2008/04/23(水) 10:35:00じゃあ一言でいってやるよ、執拗で回りくどい煽りと荒らし行為がウゼーんだよ
0020デフォルトの名無しさん
2008/04/23(水) 10:38:400021デフォルトの名無しさん
2008/04/23(水) 12:38:528が煽り荒らしの類には見えないんだけど。
過剰反応なんじゃねーの
0022デフォルトの名無しさん
2008/04/23(水) 12:48:57ならきっとウソツキだな
0023デフォルトの名無しさん
2008/04/23(水) 12:54:120024デフォルトの名無しさん
2008/04/23(水) 13:17:31おい適当な自演認定すんなよ、俺は21だがそれ以前に俺のレスはねーよ
って言ってもID無いし信じられんわな
8がこんなに叩かれてんのが疑問だったから21のレスをしただけ
0025デフォルトの名無しさん
2008/04/23(水) 13:31:530026デフォルトの名無しさん
2008/04/23(水) 15:23:48本人納得して帰ってるんだからほっといてやれよwww
0027デフォルトの名無しさん
2008/04/23(水) 15:59:00程度の問題は知らんけど
煽り荒らしに見えなかったから俺は19のレスが気になったの。
0028デフォルトの名無しさん
2008/04/23(水) 19:46:250029デフォルトの名無しさん
2008/04/24(木) 00:16:030030デフォルトの名無しさん
2008/04/24(木) 09:58:040031デフォルトの名無しさん
2008/04/24(木) 12:38:56InfoseekのWebメールサービスでリロードとかするとStackOverflowExceptionで落ちるようになったガッデム。
IE(6)だと落ちないのに。
てことでだれか試してみてくれませんかね。
[STAThread] unsafe public static void Main(string[] args) {
Form form = new Form();
WebBrowser browser = new WebBrowser();
browser.Dock = DockStyle.Fill;
form.Controls.Add(browser);
form.Load += delegate {
browser.Navigate("http://email.www.infoseek.co.jp/login_form.php");
};
Application.Run(form);
}
ログイン画面でリロードするだけで落ちる。
0032デフォルトの名無しさん
2008/04/24(木) 12:45:28確認してないがlivedoorニュースでも落ちるみたい。
スレイプニルのスレや公式サポートでも話題になってるみたいだけど
犯人はflashみたい。
0033デフォルトの名無しさん
2008/04/24(木) 12:59:200034デフォルトの名無しさん
2008/04/24(木) 13:08:24情報ありがと。
確かに ActiveX 実行禁止すれば落ちなくなるみたいだ。Flash のせいっぽい。
0035デフォルトの名無しさん
2008/04/24(木) 23:12:420036デフォルトの名無しさん
2008/04/25(金) 00:08:00便乗するがあの迷惑メールフィルタの弱さをなんとかしてほしい。
0037デフォルトの名無しさん
2008/04/25(金) 00:16:04>>36
ここで言うなよw
0038デフォルトの名無しさん
2008/04/25(金) 01:54:48int x;
public int X{
get{ return X;}
}
インテリセンス氏ねと思った
0039デフォルトの名無しさん
2008/04/25(金) 02:18:350040デフォルトの名無しさん
2008/04/25(金) 08:16:090041デフォルトの名無しさん
2008/04/25(金) 08:50:070042デフォルトの名無しさん
2008/04/25(金) 09:27:460043デフォルトの名無しさん
2008/04/25(金) 09:45:15それはsetとgetがそろってないと出来ないのよね。
0044デフォルトの名無しさん
2008/04/25(金) 11:21:350045デフォルトの名無しさん
2008/04/25(金) 12:02:240046デフォルトの名無しさん
2008/04/25(金) 12:54:32internal bool IsLink { get; private set; }
おまけにインテリセンスで小文字と大文字並んで表示されるからややこしい。
ついでに内部フィールドが必要な場合は
<![CDATA[public $type$ $property$ {
get {return _$property$; }
set {
if (value == _$property$) return;
_$property$=value;
$end$
}
}
private $type$ _$property$;
]]>
こんなコードスニペットを作ったら、馬鹿みたいに楽になった。
0047デフォルトの名無しさん
2008/04/25(金) 22:03:040048デフォルトの名無しさん
2008/04/25(金) 23:19:500049デフォルトの名無しさん
2008/04/25(金) 23:30:54どこの一般?
0050デフォルトの名無しさん
2008/04/25(金) 23:35:130051デフォルトの名無しさん
2008/04/25(金) 23:46:050052デフォルトの名無しさん
2008/04/26(土) 03:45:20巨大な値型も、コピーのコストが大きいからチェックした方がいいのかもしれない。
小さな値型や参照型なら、代入のコストよりチェックのコストの方が大きいような気がする。
0053デフォルトの名無しさん
2008/04/27(日) 10:40:54直接C#から変更ってできますかね?
0054デフォルトの名無しさん
2008/04/27(日) 10:42:040055デフォルトの名無しさん
2008/04/27(日) 10:45:320056デフォルトの名無しさん
2008/04/27(日) 10:53:44というか時間がかかるような処理をプロパティにするなよ
とりあえず巨大な値型であっても代入のコストよりはチェックのコストの方が大きい
0057デフォルトの名無しさん
2008/04/27(日) 11:07:04わざわざ不要なチェックを入れることはないというだけの話だからな
値が変化したときに何らかの処理やイベントを発生させるとか
GUI関連でどうしても時間がかかるプロパティが必要とか
そういうプロパティが多いからひな形として全部チェック入れちゃえ!とかそういうことなら話は別
0058デフォルトの名無しさん
2008/04/27(日) 11:13:54大体のことはP/Invokeでなんとかなる
0059デフォルトの名無しさん
2008/04/27(日) 15:38:21>事前の最適化は百害あって一利なし
賛成
>とりあえず巨大な値型であっても代入のコストよりはチェックのコストの方が大きい
今のPCはメモリーアクセスが最もパフォーマンスに深刻な問題を与えるから(分岐など比較にならない)、そんな事はないが
チェック時点でデータ読み出して比較とかすれば、意味無いので否定はしない。
比較するならまずハッシュ値で比較してから本番の比較をしないとパフォーマンス向上の意味はない。
もちろんハッシュ値の計算を高速にする必要もある。
0060デフォルトの名無しさん
2008/04/28(月) 08:27:31Aを押せば先頭がAのアイテムにジャンプするのは分かるが、この挙動は意味分からん
0061デフォルトの名無しさん
2008/04/28(月) 09:45:440062デフォルトの名無しさん
2008/04/28(月) 13:19:55ありがとうございました。
参考
ttp://apis.jpn.ph/fswiki/wiki.cgi?page=Programing%2FAsciiCode
0063デフォルトの名無しさん
2008/04/30(水) 08:32:59++
++
ほら
0064デフォルトの名無しさん
2008/05/01(木) 01:17:48Wikipediaを見たんですね
わかります
0065デフォルトの名無しさん
2008/05/01(木) 02:53:04> 「COOL」(C like Object Oriented Language:Cライクなオブジェクト指向言語。
> クール)だった。だが、すでにほかの製品で使われているなどの理由で、
> この名前は採用されなかった。
>
> ほかの案として、「EC」(イーシー)、「C2」(シー・スクウェア)、「C3」(シー・キューブ)、
> また音楽の要素を取り入れて「C#」、元素の名前から「Cs」(シー・セシウム)などが
> 出てきた。「C#」を近くでよーく見ると、「C++++」に見える。そのような理由で最終的に
> 「C#」という名前に落ち着いた。
http://www.atmarkit.co.jp/fdotnet/insiderseye/20060215cscommunity/cscommunity_01.html
0066デフォルトの名無しさん
2008/05/01(木) 08:21:06コピペ君ってただのコピペに存在意義があると思ってるのかねひょっとして。
まあ普段無能で役立たずだと人に思われてるから、こんな「せせこましい」ことでもして
人に自分の価値を認めてもらいたいんだろうなw
0067デフォルトの名無しさん
2008/05/01(木) 12:14:530068デフォルトの名無しさん
2008/05/01(木) 16:37:27// 何箇所も変更場所があるのは好ましくない
class MyComponent1
{
string myProperty = "初期文字列";
[DefaultValue("初期文字列")]
public string MyProperty { get { return myProperty; } set { myProperty = value; } }
public MyComponent1() { }
}
// リファクタリングで MyProperty を書き換えると GetProperty("MyProperty") に変更が入らない
// 結局複数個所を書き換える方が見通しがいい
class MyComponent2
{
string myProperty;
[DefaultValue("初期文字列")] // ここを書き換えたら myProperty の初期値にも反映したい
public string MyProperty { get { return myProperty; } set { myProperty = value; } }
public MyComponent2()
{
var defaultValue = typeof(MyComponent2).GetProperty("MyProperty").GetCustomAttributes(typeof(DefaultValueAttribute), false)[0];
myProperty = defaultValue.ToString();
}
}
0069デフォルトの名無しさん
2008/05/01(木) 18:09:05string myProperty = DefaultMyProperty;
[DefaultValue(DefaultMyProperty)]
public string MyProperty {...}
0070デフォルトの名無しさん
2008/05/01(木) 21:45:22こういうユーティリティクラスを作っておくとか。
ttp://d.hatena.ne.jp/NyaRuRu/20071228/p2
public static class Reflector
{
static PropertyInfo GetPropertyInfo(this Expression expression)
{
var findprop = default(Func<Expression, PropertyInfo>);
findprop = expr =>
{
switch (expr.NodeType)
{
case ExpressionType.Lambda:
return findprop((expr as LambdaExpression).Body);
case ExpressionType.Quote:
return findprop((expr as UnaryExpression).Operand);
case ExpressionType.MemberAccess:
return (expr as MemberExpression).Member as PropertyInfo;
default:
return null;
}
};
return findprop(expression);
}
public static PropertyInfo Property<TArg, TResult>(Expression<Func<TArg, TResult>> expr)
{
return expr.GetPropertyInfo();
}
}
使い方。
var defaultValue = Reflector.Property((MyComponent2 comp) => comp.MyProperty).GetCustomAttributes(typeof(DefaultValueAttribute), false)[0];
これでリファクタリングしても一緒に名前が変わるはず。
0071デフォルトの名無しさん
2008/05/02(金) 01:54:18アトリビュートには const メンバーが使えるんだ、気付かなかった。
>>70
ありがとうございます、今回は単純なので const でいこうと思いますが、大変参考になりました。
これは、ものすごく応用範囲が広いと思います、今後何かと役に立ちそうです。
0072デフォルトの名無しさん
2008/05/02(金) 18:22:19どうしたら良いですか?
プロパティの項目を見てもListViewItemSorterが無いのですが。
0073デフォルトの名無しさん
2008/05/02(金) 18:35:15インターフェイスだから、本体を実装しないと設定できないので、デザイナにあっても意味がないんですよ。
実際に使ってみると分かるよ。
0074デフォルトの名無しさん
2008/05/02(金) 22:40:32レイヤの順序を操作する方法とかあるのでしょうか?
テンプレート読込み後に文字描画しても、その逆でも同じように隠れますが。
0075デフォルトの名無しさん
2008/05/03(土) 11:10:42MSは.NETをいいかげん諦めたらいいのに。
Javaはほぼ全てのOSでサポートされてるから、仮想マシンという考え方が現実に役に立ってるが、
.NETのCLRはXP以降のWindowsでしか完全に動作しないし、
処理が重くなる以外、糞の役にも立っていない。
VistaがLonghornと呼ばれてた頃は、.NETがネイティブAPIになり、
Win32APIはなくなるとかいわれて、騙されて慌てて.NETを始めた犠牲者が、
騙されたことに気づいた今でもモッサリプログラムを作り続けてると思うとうんざりする。
結局Win32で作られた軽快なアプリ資産があるかぎりWin32APIは永遠になくすことができないし、
そのために.NETは永遠に脇役でモッサリのまま。
これが現実。
738 名前:デフォルトの名無しさん :2008/05/02(金) 20:26:23
.NETの元凶は、遅くなるだけで存在意義がないCLRにあるんだから、
MSは.NETのクラスライブラリと完全互換のネイティブC#を出せばいいんだよ。
開発プラットホームのスタンダード争いは完全にJavaに敗北したんだから、
もうJavaと張り合うためにバーチャルマシンに拘る必要はない。
速くて快適なEXEを作れる言語の方が誰にとっても実利的だろ。
そして.NET Frameworkにはひっそりと死んでもらうと。
大体、ビルゲイツが一線を退いてからのMSはVistaとか.NETとか失敗だらけで見てられない。
顧客(開発者、ユーザ)を苦しめることばかりしている。
0076デフォルトの名無しさん
2008/05/03(土) 11:45:53そんな元スレで失笑買ってたレスをこぴってこなくても
0077デフォルトの名無しさん
2008/05/03(土) 12:08:59C# に移行してから: DWORD や LPSTR がない?
一体どういうこっちゃ。 ('A`)
0078デフォルトの名無しさん
2008/05/03(土) 12:40:410079デフォルトの名無しさん
2008/05/03(土) 13:00:340080デフォルトの名無しさん
2008/05/03(土) 13:46:10if(pHandle == NULL) // 失敗時の処理
{
cout << "Cannot Open Process !" << endl;
exit(-1);
}
buf = (LPSTR)malloc(READ_SIZE); // バッファの確保
ReadProcessMemory(pHandle,Adr,buf,READ_SIZE,NULL);
CloseHandle(pHandle);
fp = fopen("Result.bin","wb");
fwrite(buf,READ_SIZE,1,fp);
free(buf);
に相当する操作をC#でAPIを使わずに書きたいんだけど、どうすればいいんでしょうか?
0081デフォルトの名無しさん
2008/05/03(土) 13:46:13詳細希望
0082デフォルトの名無しさん
2008/05/03(土) 13:57:53無理
0083デフォルトの名無しさん
2008/05/03(土) 13:59:26ここ
http://pc11.2ch.net/test/read.cgi/tech/1207063618/
0084デフォルトの名無しさん
2008/05/03(土) 14:01:44WinFormsの中でだって大量に使われているのに
0085デフォルトの名無しさん
2008/05/03(土) 14:08:060086デフォルトの名無しさん
2008/05/03(土) 14:18:03要は楽をしたいだけ。API を使ってごちゃごちゃやらなきゃいけないんじゃC#に移行した意味がない。
0087デフォルトの名無しさん
2008/05/03(土) 14:28:040088デフォルトの名無しさん
2008/05/03(土) 14:30:160089デフォルトの名無しさん
2008/05/03(土) 16:25:50XMLに入っている大量のデータ(IDと名前)を読み込んで、
プログラムに入力されたIDとマッチさせて名前等のデータを表示させたいのですが
どのようなアプローチをするのがいいのでしょうか?
検索は何度でも行えるようにしたいので、その都度ファイルにアクセスするのは効率が悪そうだし
かといって膨大なデータを全て配列等に格納するのも資源の無駄遣いのような気がして悩んでいます。
XMLの構造は
<Person>
<ID>774</ID>
<Name>Hiroyuki</Name>
</Person>
が延々と続いたものです。
0090デフォルトの名無しさん
2008/05/03(土) 16:31:47内部でXMLとして保持する意味なんて無いっしょ。
0091デフォルトの名無しさん
2008/05/03(土) 16:39:40>検索は何度でも行えるようにしたいので、その都度ファイルにアクセスするのは効率が悪そうだし
2回目以降はキャッシュに載ってると思うけど。
結局OSのディスクキャッシュと同じものを作ることになるんじゃない?
もちろんアプリケーションサイドでやればOSのディスクキャッシュより効率は良くなるだろうけど
費用対効果考えて判断すればいいんじゃなかろうか。
OSのディスクキャッシュよりもヒット率の低いデータをメインメモリにため込むのはよろしくないと思う。
0092デフォルトの名無しさん
2008/05/03(土) 16:51:40データをメモリに展開しない方向で考えてみます。
0093デフォルトの名無しさん
2008/05/04(日) 02:38:280094デフォルトの名無しさん
2008/05/04(日) 07:21:32Visual Studio 2005で作成しWebサイトの作成をしているのですが、
aspx側のJavaScriptで記述されたfunctionを、cs側のイベントの途中で記述して
呼び出したいのですが、どうしても方法を思い出せません。
順番としてはボタン等によるイベント→aspx画面表示→JavaScript呼び出しよるアラーム等
でできるはずなのですが、どなたかわかる方いらっしゃいましたらご教授をお願いしたいです。
0095デフォルトの名無しさん
2008/05/04(日) 12:57:440096デフォルトの名無しさん
2008/05/04(日) 18:18:27VC++Ver6ではDefWindowProc を追加するのは仮想関数のオーバーライド
ってところでやってましたが、C#では同様なことをするにはどうすれ
ば追加できますか?
どちら様かご教示のほど、よろしくお願いしますm(__)m
0097デフォルトの名無しさん
2008/05/04(日) 18:37:320098デフォルトの名無しさん
2008/05/04(日) 18:56:54早速の回答、ありがとうございます。
開発環境の使い方がいまいちわからないのですが、
オーバーライドするときは対象の関数を自分でタイプするような
かたちなのでしょうか?それともどこかのメニューから追加でき
るのでしょうか。
申し訳ありませんが、よろしくお願いします。
0099デフォルトの名無しさん
2008/05/04(日) 19:02:54選らんでエンターでメソッド雛形出来る
0100デフォルトの名無しさん
2008/05/04(日) 20:46:10実装できました。
どうもありがとうございましたm(__)m。
0101デフォルトの名無しさん
2008/05/05(月) 23:10:36C#のSerialPortクラスにあるWriteメソッドを使って
蛍光表示管にデータ送信をしているのですが
送信途中でブルースクリーンが表示されてWindowsが落ちてしまうことがあります。
一度のデータ送信で300bytes弱、
それを延々と繰り返すようなプログラムを書いています。
そのループ中に、Windowsが落ちることがある、という状態です。
なぜブルースクリーンが出るのか、
どうすれば、ブルースクリーンが出なくなるか、が分かりません。
教えて下さい!
0102デフォルトの名無しさん
2008/05/05(月) 23:20:32大体、複数のPCで試したのか?落ちるコードは?ふざけてんの?
0103デフォルトの名無しさん
2008/05/05(月) 23:21:10っていうか、だからとりあえずチミの環境でその現象が起こる最小のコードを晒そうよ。
0104デフォルトの名無しさん
2008/05/05(月) 23:54:22その辺素人なんでよく分からんけど。異常な電圧がかかってるとか?
0105デフォルトの名無しさん
2008/05/05(月) 23:59:250106デフォルトの名無しさん
2008/05/06(火) 02:48:34十中八九そうだろうね
ただ、「デバイス、ドライバ、etc.が異常である」とOSが判断した結果なわけだから
ソフトウェア的な要因も無きにしも非ず。2000/XPならほぼ無いと思うけど
0107デフォルトの名無しさん
2008/05/06(火) 03:43:510108デフォルトの名無しさん
2008/05/06(火) 04:57:100109デフォルトの名無しさん
2008/05/06(火) 05:42:360110デフォルトの名無しさん
2008/05/06(火) 06:51:11システムプロパティの[詳細設定]の[起動と回復]の
[自動的に再起動する]にチェックが入ってるからだろ。
大抵のエンドユーザーはブルースクリーン出たら再起動するだけで、
内容見てもわけわかんないんだから
Microsoftは親切にデフォルトで[自動的に再起動する]にチェックが入ってる。
0111デフォルトの名無しさん
2008/05/06(火) 16:37:590112デフォルトの名無しさん
2008/05/06(火) 16:44:37string value = "";
arg.Where(((s ,i) => { value += s + i.ToString() ; return false; })).Count();
Console.Write(value);
こういうことってやっておkですか?
0113デフォルトの名無しさん
2008/05/06(火) 17:05:360114デフォルトの名無しさん
2008/05/06(火) 17:11:240115デフォルトの名無しさん
2008/05/06(火) 18:44:140116デフォルトの名無しさん
2008/05/06(火) 19:10:55{
public object o { get; private set; }
public newobj(object o)
{
this.o = o;
}
}
例えばこんなクラスがあったとして
object[] arg = new object[3] {1,2,3};
newobj[] list = new newobj[arg.Count()];
arg.Where((obj, i) => { list[i] = new newobj(obj); return false; }).Count();
こんなことできたら便利だなと思いましたが確かにキモイですね。
素直にfor文使います
0117デフォルトの名無しさん
2008/05/06(火) 19:12:460118デフォルトの名無しさん
2008/05/06(火) 19:27:19せいぜいSelect
0119デフォルトの名無しさん
2008/05/06(火) 19:37:010120デフォルトの名無しさん
2008/05/06(火) 19:41:32>>112は
var arg = new [] { "a", "b", "c" };
var value = arg.Aggregate(new StringBuilder(), (b, i) => b.Append(i));
Console.WriteLine(value.ToString());
>>116は
var arg = new [] { 1, 2, 3 };
var list = arg.Select(i => new newobj(i)).ToArray();
と書くな。
副作用を目的としたWhereなんて嫌すぎる。
0121デフォルトの名無しさん
2008/05/06(火) 19:55:47こういったメソッドも用意されていたのですね。
SQL?の知識が無いためSelectの使い方がよく解らなかったのですがそういう風に使えるんですね。
Aggregateはヘルプ見たのですがいまいち使い方わからなっかのですが便利そうですね。様々な使い方できそうです。
皆様どうもありがとうございました。
0122デフォルトの名無しさん
2008/05/06(火) 20:00:10112の方、仕様満たせてないぞ
0123101
2008/05/06(火) 21:11:59レスありがとうございます。
>>110の設定は知りませんでした…ありがとうございます。
・ブルースクリーンのエラー内容を見たところ、以下の通りでした。
STOP: 0x000000D1 (0x00000000, 0x00000002, 0x00000000, 0xBABC9185)
vrcomIT2k.sys Address BABC9185 base at BABC8000, DateStamp 3ec3702e
http://www.uploda.org/uporg1408089.jpg.html
(FYI:
>>106「デバイス、ドライバ、etc.が異常である」ということで思い出したのが、
PCのUSB端子から、蛍光表示管メーカーが用意している仮想COMドライバを使って
蛍光表示管にデータ送信している、ということをやっています。
もしかしたら本件と関係があるかもしれないので、書いておきます。)
他PCでの再現性については、PCを1台しか持っておらず、
申し訳ないのですがすぐ確認できる状況にはありません。
最小のコードについては、現在調査中です。再現ができ次第、UPしたいと思います。
0124デフォルトの名無しさん
2008/05/06(火) 21:41:38臭いな。というかたぶんこれだろう。
0125デフォルトの名無しさん
2008/05/06(火) 22:50:39エラー内容みるかぎり、蛍光管メーカーに問い合わせるのが正解かと
ここで聞いても、運よく同じメーカー同じドライバで同じトラブルに見舞われている人以外には分からないかと。
とりあえずは、ドライバがそのOSに対応しているのか、そのへんから全部チェックしてみたらどうだ?
2kとかついてるから、Windows2000専用とかそういうのないか?
0126デフォルトの名無しさん
2008/05/07(水) 00:06:52念のためmemtest86かけてみたら?まあ、そのエラーでブルースクリーンは
シリアル周り(ハードウェアモデムとか)のエラーとしてすっごくありふれた
ものだから、たぶんドライバの問題だろうね。
0127デフォルトの名無しさん
2008/05/07(水) 18:53:43たまに起動してるだけでブルスク(0x9C)になることがあるぜ。
まあ原因は安物メモリのせいかもしれないが。
0128デフォルトの名無しさん
2008/05/07(水) 21:46:290129デフォルトの名無しさん
2008/05/07(水) 21:59:120130デフォルトの名無しさん
2008/05/08(木) 13:50:15そりゃそうだろ。
メモリアクセスしないアプリがあったら見てみたい物だ。
0131デフォルトの名無しさん
2008/05/08(木) 21:42:280132デフォルトの名無しさん
2008/05/08(木) 21:47:010133デフォルトの名無しさん
2008/05/08(木) 21:50:470134デフォルトの名無しさん
2008/05/08(木) 22:08:250135デフォルトの名無しさん
2008/05/08(木) 22:20:160136デフォルトの名無しさん
2008/05/08(木) 22:25:290137デフォルトの名無しさん
2008/05/08(木) 23:13:000138デフォルトの名無しさん
2008/05/08(木) 23:43:390139デフォルトの名無しさん
2008/05/09(金) 06:10:530140130
2008/05/09(金) 12:01:020141デフォルトの名無しさん
2008/05/09(金) 12:17:29何か良い方法はありませんでしょうか?
0142デフォルトの名無しさん
2008/05/09(金) 12:19:480143デフォルトの名無しさん
2008/05/09(金) 13:03:350144デフォルトの名無しさん
2008/05/09(金) 13:06:51System.Collections.ArrayList array = new System.Collections.ArrayList();
array.Add(new { X = 3, Y = 4 });
array.Add(new { X = 5, Y = 6 });
this.dataGridView1.DataSource = array;
動作します、原因はArrayListに追加した要素が、プロパティーではなくフィールドになっていたとか、そんなオチでは?
0145デフォルトの名無しさん
2008/05/09(金) 21:58:270146デフォルトの名無しさん
2008/05/09(金) 22:10:190147デフォルトの名無しさん
2008/05/10(土) 00:22:23自動プロパティを使うのを諦めてフィールドを手書きするのが悔しい
0148デフォルトの名無しさん
2008/05/11(日) 06:34:59{
public uint Id;
public uint Fixed;
public byte[] Array;
};
switch (WParam.ToInt32()){
case 0x1200:
COPYDATASTRUCT cds = (COPYDATASTRUCT)Marshal.PtrToStructure(LParam, typeof(COPYDATASTRUCT));
T_INFO_DATA a = (T_INFO_DATA)Marshal.PtrToStructure(cds.lpData, typeof(T_INFO_DATA)); ←ここでエラー
〜
WM_COPYDATA受信時に上記のような処理を行うと下記のエラーメッセージが出ます。
保護されているメモリに読み込みまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。
誰かどのように修正すれば直るのか教えてください。
構造体Arrayの中に入ってる配列数は48個です。
これ以外の構造体(配列を使っていない構造体)の受信は正常に取得できます。よろしくおねがいします。
0149デフォルトの名無しさん
2008/05/11(日) 07:55:28C側のイメージとしては
struct T_INFO_DATA
{
DWORD Id;
DWORD Fixed;
BYTE * Array;
}
となっているわけですが、問題ないのですか?
0150デフォルトの名無しさん
2008/05/11(日) 07:59:51+アルルファ
byte [] Array の位置にはポインタが入っているわけでなく、メモリーブロックへのハンドルが入っています。
byte [] オブジェクトを確保して、そこに格納する必要があるのではとか?
ぱっとみ思いつく限り
0151デフォルトの名無しさん
2008/05/11(日) 09:48:21int とか IntPtr にして MarshalAs でなんとかできないかな。
0152デフォルトの名無しさん
2008/05/11(日) 09:55:02http://download.microsoft.com/download/4/f/d/4fd49a94-8772-4bd0-88ca-bf46e2d029fc/WHITEPAPERS/Accessing%20the%20eID%20Middleware%20from%20.NET%20(Version%201.0).doc
0153デフォルトの名無しさん
2008/05/11(日) 12:07:22あと、Arrayというメンバは名前をhMemとかに変えろ。
0154デフォルトの名無しさん
2008/05/11(日) 13:16:46むしろキモイ
0155デフォルトの名無しさん
2008/05/11(日) 13:23:41すぐAPIに渡すものなら、APIの引数名に合わせた方がわかりやすいだろ?
0156デフォルトの名無しさん
2008/05/11(日) 13:34:180157デフォルトの名無しさん
2008/05/11(日) 13:38:40Win32APIはともかく、デバイス屋が提供している制御用のAPIなんて
意味不明すぎる命名がされてること多いし。
0158デフォルトの名無しさん
2008/05/11(日) 13:45:03「C# 入門」でぐぐって一番上。
0159148
2008/05/11(日) 17:40:01C側のイメージだと、
struct T_INFO_DATA
{
DWORD Id;
DWORD Fixed;
BYTE Array[48];
}
という認識です。
ポインタを送るほうがいいのでしょうか?
0160デフォルトの名無しさん
2008/05/11(日) 19:23:15構造体メンバの固定長配列は、
unsafe 限定で fixed って構文がある。
http://ufcpp.net/study/csharp/sp_unsafe.html#fixed
0161デフォルトの名無しさん
2008/05/12(月) 13:42:03[StructLayout(LayoutKind.Sequential)]
public struct T_INFO_DATA {
public uint Id;
public uint Fixed;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=48)]
public byte[] Array;
};
なお、コンパイルは通してないからこのままでOKかどうかの保証はない。
あとは調べてくれ。
0163デフォルトの名無しさん
2008/05/13(火) 15:55:00RS232C通信のプログラムを作っているのですが、
デバックの効率化のために実際の通信内容を別Windownにてモニタリング
できないか検討してます。
本当はStreamにフックするだけで使えるものが他のデバックにも使えて
望ましいのですが、そんな便利なクラスってないれすか?
0164デフォルトの名無しさん
2008/05/13(火) 16:02:31自分がやるとしたら、Streamクラスから派生したクラスにフックコードを挿入したアダプタクラスを作って
RS232C通信をアプリ側でフックする
引き続いてWCFを使ってプロセス間通信ができるように、サービスを作って
別ウインドウで作ったデバッグウインドウは、そのサービスに接続して、状況を読み取るといった形式にすると思う。
ついでに、通信情報以外の各種情報もモニターできるようにするかな。
0165デフォルトの名無しさん
2008/05/13(火) 16:09:14NTで動いてたから、今でも使えるとは思うが何って言ったっけな。
0166デフォルトの名無しさん
2008/05/13(火) 16:12:25キーボードフックを筆頭に。
0167163
2008/05/13(火) 16:38:31レス有難う御座います。
アダプタクラスですか・・
腑抜けの私には、むりっぽそうですw。
申し訳ない、追加で質問なんですが、
フックがだめなら、
またStreamの中身を盗見することって難しいのでしょうか?
普通に考えると
ReadStreamは一度読み取ると消えちゃうし、
WriteStreamはそもそも読めないですよね。
これができれば、何とか簡易もどきが作れそうな気がするのですが
0168デフォルトの名無しさん
2008/05/13(火) 16:47:43中身みるよりアダプタの法がよっぽど楽だ、Streamクラスの抽象関数オーバーロードして、呼び出しをそのままReadStreamなりWriteStreamなりに渡せば以上終了だぞ。
0169デフォルトの名無しさん
2008/05/13(火) 16:53:10いい機会だからデザインパターンを勉強しような
0170163
2008/05/13(火) 16:57:26そうですか。了解です。
普段は組み込み関連の仕事が多いもので、
不慣れな環境なんで、他に良い手がないか、
無駄に時間をつぶして調べ回っていました。
アダプタ法で頑張ってみます。
勉強になります。有難う御座います!!
0171163
2008/05/13(火) 17:20:28SerialPortクラスのBaseStreamメンバはReadOnly・・・
Streamの継承クラスを渡せない・・
早くもだめぽw
そうすると専用のStreamReadrとWriterを自作するのが王道でしょうか?
それとも、SerialPortクラスを継承してメソッドを書き換えるか・・
>>169さん
アドバイス有難う御座います
今度本を買ってきます。
デザインパターンの根本的なところを理解していないのに、
何か作ろうとするから、いつもメタメタになる・・
0172デフォルトの名無しさん
2008/05/13(火) 17:39:58自分で頭をひねって考えるのが重要。
class MyStream : Stream
{
Stream rs232 = ここで、BaseStream を突っ込む
override 関数各種() { rs232.同名の関数() ; }
}
基本は、こうやって作る。とにかくオブジェクト図を描くこと。
オブジェクト間のメッセージ(関数の呼び出し)の接続が最少になるのはどういう時かよく考えること。
さっさとオブジェクト指向アプローチをおぼえて、古いやり方は捨てること。
0173163
2008/05/13(火) 17:55:08有難う御座います。
コードまで書いて頂き、お時間を取らせてしまって、
すいません。
なるほど!!、こうすればBaseStreamそのものがReadOnlyでも制御できる。
こうすれば、デフォルトのStreamReaderが使いまわせる。
つくづく自分の頭の固さが嫌になります。
>とにかくオブジェクト図を描くこと。
>オブジェクト間のメッセージ(関数の呼び出し)の接続が最少になるのはどういう時かよく考えること。
>さっさとオブジェクト指向アプローチをおぼえて、古いやり方は捨てること。
こういった、アドバイス非常にありがたいです。!!
自分でもあがいてはいるのですが、
周りにこういった話が出来る人がいないんです。
オブジェクト図ですね。書きまくって見ます!!
0174163
2008/05/13(火) 18:04:07まだいらっしゃるかな・・
>オブジェクト間のメッセージ(関数の呼び出し)の接続が最少になるのはどういう時かよく考えること。
もしよろしければ、この部分についてもう少し解説していただけないですか?
これは、どんなときに考えるのでしょうか。
クラスの責務の振り分け/分割時?
またメッセージの接続が最小になると、どんな良いことがあるのでしょうか?
質問ばかりですいません。
0175デフォルトの名無しさん
2008/05/13(火) 18:11:30インスタンスが主役であって、クラスはオマケ。継承がウンタラとかいう連中もいるが間違っているから相手にするな。
今四つのインスタンスがあるとする、それぞれ A , B , C , D
粒度が細かすぎて取り扱いにくいので、二つにまとめてみようと考えてみる。
インスタンスAがBを呼び出すなら
A --関数名--> B
と書いてみる。
まとめる方法は[A,B,C] [D]がよいか[A,B] [C,D]がよいか。
呼び出しが最少になるような図を考えてみよという事。
適当に矢印書きまくって、最小になるように分離してみるといい。
あとは応用。
0176デフォルトの名無しさん
2008/05/13(火) 18:56:57っていうか、それに類するような主張をこれまでに聞いたことがないよ。
0177デフォルトの名無しさん
2008/05/13(火) 19:06:450178デフォルトの名無しさん
2008/05/13(火) 19:12:020179デフォルトの名無しさん
2008/05/13(火) 19:16:530180デフォルトの名無しさん
2008/05/13(火) 19:21:470181デフォルトの名無しさん
2008/05/13(火) 20:35:08オブジェクト指向を扱っているサイトにいってみたら?
そうすれば無知も治るよ
0182デフォルトの名無しさん
2008/05/13(火) 20:39:210183デフォルトの名無しさん
2008/05/13(火) 20:40:36今から15年前くらいは、確かにそういう事になっていたが、そのまま固まったか?
0184デフォルトの名無しさん
2008/05/13(火) 20:43:19でないと、デザインパターン意味や使い方など理解に及ぶことはできないし、上の例だって発想することすら難しいだろう。
0185デフォルトの名無しさん
2008/05/13(火) 20:46:440186デフォルトの名無しさん
2008/05/13(火) 20:50:18オブジェクト指向イコールJavaと言ってもいい程だよ。
0187デフォルトの名無しさん
2008/05/13(火) 20:52:15今のライブラリは当たり前にその設計思想が入っているからな、知らないと使い方分らんだろ。
0188デフォルトの名無しさん
2008/05/13(火) 20:53:17ゴールじゃねぇよ、LINQとか見てみろ
0189デフォルトの名無しさん
2008/05/13(火) 20:54:350190デフォルトの名無しさん
2008/05/13(火) 20:55:05お前はパソコンに文字を表示させるとき、直にVGAのメモリを書き換えるのか?違うだろう。
ドライバやらOSやらGDI+やらライブラリ郡など抽象化されたものを通してアクセスし表示させるだろう。
オブジェクト指向はインスタンス(実体)を直接操作せず、抽象化して利用しやすくする手法。
インスタンスがメインなわけがない。
0191デフォルトの名無しさん
2008/05/13(火) 20:55:55ゴールなんて関係ないこと持ち出して自ら否定して
結局何が言いたかったのかね。
0192デフォルトの名無しさん
2008/05/13(火) 20:56:37ヒント:言葉遊び
0193デフォルトの名無しさん
2008/05/13(火) 20:56:38そうだな、もう永久にそう思っていろよw
0194デフォルトの名無しさん
2008/05/13(火) 20:59:04そんな考えでも君のプログラムがちゃんと動くならそれでいいよ
それはそれで正しいわけだから
0195デフォルトの名無しさん
2008/05/13(火) 21:00:26悪いコード:動かないコード
0196デフォルトの名無しさん
2008/05/13(火) 21:05:01インスタンスが主役 に一致する日本語のページ 約 1,790 件中 1 - 10 件目 (0.06 秒)
0197デフォルトの名無しさん
2008/05/13(火) 21:11:37どっちも主役です(ゆとり教育的発想)
0198デフォルトの名無しさん
2008/05/13(火) 21:34:08あそこは>>175的なトンチキな自説をぶってるアホが延々同じネタをループしてて楽しいと思うよ。
俺は正直吐き気がするけどねああいうの。
ちなみに>>190は半分はいいこと言ってると思うんだよね。
OOPというアイデアの肝は、>>190の言う抽象化(より正確には仮想化と言うべきだと思うけど)された
仮想機械をより直感的に表現するコーディング手法ということだと思う。
ただ「実体=インスタンス」ってのは全然意味不明だが。
0199デフォルトの名無しさん
2008/05/13(火) 21:36:290200デフォルトの名無しさん
2008/05/13(火) 21:43:41LINQはオブジェクト指向とはまた別だろ。
関数型プログラミングのほうが近い。
0201デフォルトの名無しさん
2008/05/13(火) 21:45:09たとえば、C++でいう所の仮想テーブルは、virtual などなくても class のみで作り出すことができる。
これは非常に重要なことで、仮想テーブルは書き換えられないが、自分で作った仮想テーブルは書き換えられる。
このような実装は、Strategyパターンと呼ばれる。
つまり、classを使った抽象化は実は必要なく、ただ『頻繁に出てくるので言語上にvirtualとして実装しておくと便利であるという程度の意味』しかないのだ。
オブジェクト指向を理解する上で、この点について理解しているかどうかは決定的だ。
理解せずクラスと継承を中心に置くとやれる事が一気に限定されてしまうのだ。
さらには、継承には各種問題点も指摘されてり、特に深い継承は良くないと最近はされている。
また原則、継承を考える前にインターフェイスを検討するべきとされている。
参考コーディング規約
http://www.kawabata.com/dotnet/CodingStdCS.pdf
参考サイト
http://www.objectclub.jp/
0202デフォルトの名無しさん
2008/05/13(火) 21:49:06話の文脈を読まなきゃ。
>>190の言う「実体」とは「クラスによって抽象化される前の何者か」。
たとえばGDIならビデオカードやプリンタのハードウェアのことを「実体」といっている。
少なくとも話の前半ではね。
0203デフォルトの名無しさん
2008/05/13(火) 21:51:16それって結局、包含と委譲のことだろ。クラス対インスタンスという話ではない。
継承だけがクラスの特徴ってわけじゃないぞ。
0204デフォルトの名無しさん
2008/05/13(火) 21:51:26確かに変だな。
0205デフォルトの名無しさん
2008/05/13(火) 21:53:21つってもインスタンスを大量生産するための鋳型以上の意味もないだろ?
0206デフォルトの名無しさん
2008/05/13(火) 21:55:38ひょっとしてインターフェイスと書くところをインスタンスにしてしまって
引っ込みが付かなくなったとか。それなら文脈があうが・・・
0207デフォルトの名無しさん
2008/05/13(火) 21:57:38インターフェイスもインスタンスの一つと見なしてよいものだよ。
インターフェイスは取得するものだ。
0208デフォルトの名無しさん
2008/05/13(火) 21:58:17またまた荒れるような書き方をするな。
0209デフォルトの名無しさん
2008/05/13(火) 21:59:06誰か頭のいい人ドラゴンボールに例えてくれよ
0210デフォルトの名無しさん
2008/05/13(火) 22:00:060211デフォルトの名無しさん
2008/05/13(火) 22:27:530212デフォルトの名無しさん
2008/05/13(火) 22:30:200213デフォルトの名無しさん
2008/05/13(火) 23:10:090214デフォルトの名無しさん
2008/05/14(水) 01:52:33サイヤ人→クラス
悟空→インスタンス
0215デフォルトの名無しさん
2008/05/14(水) 01:57:380216デフォルトの名無しさん
2008/05/14(水) 04:08:510217デフォルトの名無しさん
2008/05/14(水) 06:42:59インスタンスが主役ということでおk、みたいな話か?
0218デフォルトの名無しさん
2008/05/14(水) 06:58:38明らかに不自由な設計やコーディングをしているのは明白なのだが
目が見えていないので、それを理解するのが困難になっているような気がする。
0219163
2008/05/14(水) 09:30:42すこしスレが荒れ気味ですが、これは私の無知を175さんが丁寧に
ご指導してくださった点から始まっているかと思います。
原因は私にあります。スレを汚して申し分けありません。
最近良く思うのですが、OOPの浸透が何故遅いかと、
1)基本概念と実装に大きな開きがありすぎる。
2)考え方に様々な歴史や諸説があり、人や本によって解釈が異なる。
(人によって解釈が異なるのは、読んだ本の年代が大きく依存しているんでしょうか・・)
の2点に集約してるかと思います。
OOPが不慣れなものにとっては
具体的な実装論はなかなか本の中には出てこず、
また、こーいう現場的な定石というのか考え方が定まらなくて、
悩んでいることが多いんです。
だから、175さんを始め皆様より貴重なアドバイスを頂いた件は、
非常に感謝しております。
インスタンスの件は、2論に分かれているかと思いますが、
これは馬鹿な私にでも分かるように説明した為の、言葉の綾かと思います。
長文になってしまい申し訳ありません。
とても勉強になりますた。
皆様を師匠と仰ぎ、また伺わせて頂きます!!
0220デフォルトの名無しさん
2008/05/14(水) 12:43:48を体得するのがいいと思うよ。っていうかそれが一番重要。
大して難しいことじゃないから使ってれば自然とわかるよそれは。
くれぐれもOOPを外から強制された義務的なものに過ぎない、などと考えないこと。
便利だから使われてるんだよ。
OOPが浸透してないとは俺には思えないけど、もしそうであるのなら
それはOOPが「つかえねえ」からじゃなくてこの業界に馬鹿が多いからだよw
0221デフォルトの名無しさん
2008/05/14(水) 14:16:24UDPで受信したメッセージをテキストBOXに表示する処理の方法論です。
今は、UDP受信を別スレッドで受信して。セマフォー同期ででString変数に渡し。
フォームのプロセスで、タイマー関数からセマフォーを同期で文字列を受け取って
テキストBOXに表示しています。
しかし、今一つスマートでないような気がしてなりません。もっと良い方法がないでしょうか?
0222デフォルトの名無しさん
2008/05/14(水) 14:38:370223デフォルトの名無しさん
2008/05/14(水) 15:20:18ダメみたいな感じでした。
問題点1 Invokeスレッドが終了しない。
問題点2 結局、セマフォーで受信の確認を取るので処理的に同じ。
ただし、使い方が悪いのかもしれない。
別スレッドから、フォームに非同期イベントが出せればいいのだけど、その方法を知らない。
きっと有るような気がします。すごく初歩的な機能かも知れない…
0224デフォルトの名無しさん
2008/05/14(水) 15:36:47Invoke スレッドて何?
0225デフォルトの名無しさん
2008/05/14(水) 16:14:15んなこと言ったら、余計意味不明な説明が始まりかねん
で、結論
Invokeの意味を理解できてない
Invokeの使い方が間違っている
0226デフォルトの名無しさん
2008/05/14(水) 16:18:18>Invokeの意味を理解できてない
その可能性もある。
>Invokeの使い方が間違っている
この問題にInvokeが適用できない。又は、別つの方法があるが使用したくない。
ちなみに、Invokeの中は一つのスレッドであることは理解していますよね?
0227デフォルトの名無しさん
2008/05/14(水) 16:54:08Control.Invokeが解っていないなら、
http://codezine.jp/a/article.aspx?aid=139
0228デフォルトの名無しさん
2008/05/14(水) 17:32:06出来ました。 結論:Control.Invokeが解っていなかった。無知でした。
申し訳ありません。そしてありがとうございました。
0229デフォルトの名無しさん
2008/05/14(水) 21:33:170230デフォルトの名無しさん
2008/05/14(水) 23:31:56定数宣言
public enum 定数
{
MASU = 81,
}
変数の定数宣言
public const int MASU = 81;
この場合、配列列データ_創る場合。
private int[] tbl = new int[定数.MASU];
と
private int[] tbl = new int[MASU];
どちらも同じに見えるのですが。前者を使用したほうがベターですか?
前者の方が速いですか?
0231デフォルトの名無しさん
2008/05/14(水) 23:37:250232デフォルトの名無しさん
2008/05/14(水) 23:46:140233デフォルトの名無しさん
2008/05/14(水) 23:58:18速さは一緒
値自体に意味があるならenumじゃなくてconstの方が適切
でもpublicならconstじゃなくてstatic readonlyにした方がいい
0234デフォルトの名無しさん
2008/05/15(木) 00:14:07知らなかった知識です、ありがとうございます。
0235デフォルトの名無しさん
2008/05/15(木) 00:35:48ちゃんと調べて使い分けるようにした方がいい
0236デフォルトの名無しさん
2008/05/15(木) 02:28:29どこがどう違うかを書いた方がいい
0237デフォルトの名無しさん
2008/05/15(木) 02:44:410238デフォルトの名無しさん
2008/05/15(木) 02:48:180239デフォルトの名無しさん
2008/05/15(木) 03:26:42メモリの節約。
0240デフォルトの名無しさん
2008/05/15(木) 03:30:000241デフォルトの名無しさん
2008/05/15(木) 06:17:51constをアセンブリやnetmoduleまたがりで参照した場合、副作用がある。
S.DLLでpublic const A = 10
M.EXEで S.Aの表示 10
public const A = 99 に変更してS.DLLだけを再コンパイル。
M.EXEを再コンパイルしない限り結果は10のまま。
0242デフォルトの名無しさん
2008/05/15(木) 07:48:45数学定数みたいに、絶対に値が変わることがないもの以外は、static readonlyにしたほうが無難。
あとはSizeとかDateTimeみたいに初期化の必要なものを、定数っぽく扱いたいときに。
0243デフォルトの名無しさん
2008/05/15(木) 09:05:11constはコンパイル時に値が確定される定数、readonlyは書き込み不可な変数。
見えてくる違いとしては、constはコンパイル時に評価されるので使える範囲がちょっと広い。
定数式しか許されない属性指定内部やswitchのcase句にも使用可能。これらに使用される場合境界越えで
あってもconstにする必要がある。
ちなみにenumの個々の値はconstなのでenumを等価に置き換えるならconstになる。
0244デフォルトの名無しさん
2008/05/15(木) 09:25:480245デフォルトの名無しさん
2008/05/15(木) 09:27:540246デフォルトの名無しさん
2008/05/15(木) 10:09:30これは知らなかった。勉強になる
0247デフォルトの名無しさん
2008/05/15(木) 14:15:350248デフォルトの名無しさん
2008/05/15(木) 14:33:21まあ上から順番に比較するような仕様のやつもあるが。
0249デフォルトの名無しさん
2008/05/15(木) 17:34:500250デフォルトの名無しさん
2008/05/15(木) 18:23:060251デフォルトの名無しさん
2008/05/15(木) 22:20:360252デフォルトの名無しさん
2008/05/15(木) 23:37:20みたいに連番で並んでると
それを関数ポインタの配列みたいにしてジャンプすることが出来る
だから定数じゃないとどうしようもない
0253デフォルトの名無しさん
2008/05/16(金) 02:00:260254デフォルトの名無しさん
2008/05/16(金) 08:37:300255デフォルトの名無しさん
2008/05/16(金) 10:48:23バグを引き起こしかねない問題を含まない限り、自由度は高いに越したことはないよ
C#は新規なんだから、switch case の構文にこだわるべきじゃないとは思った
もともと、switch は C の特殊 goto label の構文な訳だし、考え方が古臭すぎる。
for 文からの脱出に break を使いたくても、switchにとられてしまうとかダサいと思うので。
0256デフォルトの名無しさん
2008/05/16(金) 11:37:150257デフォルトの名無しさん
2008/05/16(金) 11:38:59この辺何とかならなかったのか。
C、C++からの移行を意識してるならswitch caseと別の構文にすればいいしな
0258デフォルトの名無しさん
2008/05/16(金) 11:57:33stringにもswitchは使える
その場合はif(str=="a") /*case a*/ else if(str=="b") /*case b*/ else if…
みたいなコードにコンパイルされる
0259デフォルトの名無しさん
2008/05/16(金) 16:01:00たくさんあるとDictionaryを使うらしいぞ
0260デフォルトの名無しさん
2008/05/16(金) 18:35:220261デフォルトの名無しさん
2008/05/16(金) 18:49:50IDEサポートを謳ってる言語なんだから
0262デフォルトの名無しさん
2008/05/16(金) 19:29:25自動生成のプロパティにつけても自動生成される変数には付加されないみたいです。
0263デフォルトの名無しさん
2008/05/16(金) 19:54:51C++にもあるよ。
てかそれなら両方サポートすればいいじゃん。
0264デフォルトの名無しさん
2008/05/16(金) 20:02:54> 自動実装するプロパティ (C# プログラミング ガイド)
>
> 自動実装したプロパティでは、属性は使用できません。プロパティのバッキング フィールドで属性を使用する必要がある場合は、通常のプロパティを作成します。
0265デフォルトの名無しさん
2008/05/16(金) 20:05:390266デフォルトの名無しさん
2008/05/16(金) 21:21:12これ2年前に第4版が出たのが最後で、C#2.0対応とかVS2005対応とか書いてるよね
もう今はC#3.5とかVS2008もでてるけど、近いうちに第5版とか出たりしそうかな?
それとも第4版の内容でまったく問題ない?
0267デフォルトの名無しさん
2008/05/16(金) 21:27:060268デフォルトの名無しさん
2008/05/16(金) 21:32:470269デフォルトの名無しさん
2008/05/16(金) 21:39:45まあ、そうだね。サンクス
>>268
ごめん、嘘ついた。NET Framework 3.5でもC#は3.0のままです
ちょっと調べてたら原書のProgramming C# 3.0ってのは去年末にでてるんだな
日本語版でないかなー
0270デフォルトの名無しさん
2008/05/16(金) 23:43:57今は猫と初めてを併用して学習中
0271デフォルトの名無しさん
2008/05/17(土) 01:02:270272デフォルトの名無しさん
2008/05/17(土) 02:10:19DataGridViewで自動カラム生成機能ってありますけれど
あれのカラムのフィールド名はこちらから指定できないんでしょうか?
(特にReflectionを使った手法で)
プロパティに属性つけるとかしたら上手くいくんじゃないかと思ってるんですが…
ご存知の方いましたらお教えください。
0273デフォルトの名無しさん
2008/05/17(土) 03:11:04カラムのフィールド名って具体的に何を指してる?
デザイナで列を追加したときにフォームに作られる
Column*フィールドの名前のことか?
0274デフォルトの名無しさん
2008/05/17(土) 06:16:50すいません、あまりにも説明不足でした。
フォームのカラムのヘッダに表示される文字列のことです。
プロパティ名がそのまま文字列変換されて表示されているようなので
多分どこかで設定できるんではと思っているのですが…
0275デフォルトの名無しさん
2008/05/17(土) 07:41:53var e1 = ...; // 元のデータソース: IEnumerable<Hoge>
var e2 = e1.Select(x => new { Bar = x.Foo, ... });
0276デフォルトの名無しさん
2008/05/17(土) 08:36:22ちょっと調べてみます。ありがとうございます。
0277デフォルトの名無しさん
2008/05/18(日) 16:45:58ラムダはデリゲートになおせばいいよ
0278デフォルトの名無しさん
2008/05/18(日) 16:47:000279デフォルトの名無しさん
2008/05/18(日) 16:50:05http://msdn.microsoft.com/ja-jp/library/bb548891.aspx
3.5からだった
0280デフォルトの名無しさん
2008/05/18(日) 22:57:120281デフォルトの名無しさん
2008/05/19(月) 06:12:120282デフォルトの名無しさん
2008/05/19(月) 14:21:56別スレッド(固定周期)でDBの値を引いてきて、Form(メインスレッド)のラベル.Text属性に値を設定する
という処理を行なっていますが、
表示されるのは最初だけで、その後DBの値を変えてもラベルの値が変更されません。
どうしたらいいかご教授ください。
0283デフォルトの名無しさん
2008/05/19(月) 14:29:09>>227と同じかな?
0284デフォルトの名無しさん
2008/05/19(月) 19:18:45Closeを呼び出す順番ってどうすればいいの?
ついでに、フィールドで持っているストリームをメソッド内のローカルの
BinaryReader/BinaryWriterに食わせた場合、仮にメソッド内でClose呼んだりusingを使ったり
することを避けたとしてもBinaryReader/BinaryWriterがGCに回収されるタイミングで
ストリームも強制的に閉じられてしまうんだろうか?
0285デフォルトの名無しさん
2008/05/19(月) 20:14:51もっと良い方法または、ライブラリにこれと同様なことをするための物はあるのでしょうか?
static Func<TResult> SetArg<T1,TResult>(Func<T1,TResult> f,T1 a1)
{
return () => f(a1);
}
...
static Func<TResult> SetArg<T1,T2,T3,T4,TResult>(Func<T1,T2,T3,T4,TResult> f,T1 a1,T2 a2,T3 a3,T4 a4)
{
return () => f(a1,a2,a3,a4) ;
}
0286デフォルトの名無しさん
2008/05/19(月) 20:50:34>static Func<TResult> SetArg<T1,TResult>(Func<T1,TResult> f,T1 a1)
>{
> return () => f(a1);
>}
ライブラリに同等のものはないしもっと良い方法もない。
でもここにあげられたSetArgメソッドを使うぐらいなら
a1 => f(a1)
と毎回インラインで書けば十分だと思うよ。
0287デフォルトの名無しさん
2008/05/19(月) 20:57:42今までC++使っていた人?
C++がstd::bind1stやstd::bind2ndをありがたがって使っているのは
今までC++に簡潔なラムダ式が存在しなかったという特殊事情もあるので
C# 3.0で無理してまねる必要は無いと思うよ。
C#だとSetArgみたいなのを作ってもインライン展開されないしね。
0288デフォルトの名無しさん
2008/05/19(月) 20:59:060289デフォルトの名無しさん
2008/05/19(月) 21:00:24解ればそんなに難しくない
0290デフォルトの名無しさん
2008/05/19(月) 21:10:48Disposeは複数回呼び出されても大丈夫だから,続けて呼びさえしていれば問題ないんじゃね
BinaryReaderやBinaryWriterはファイナライザを実装してないから
それらがGCされるときにストリームが勝手に閉じられることはないよ
ストリームへの参照がどこかで繋がってる限りは大丈夫
0291デフォルトの名無しさん
2008/05/19(月) 21:44:31ありがと。
0292デフォルトの名無しさん
2008/05/19(月) 21:55:05実はそれがちょっとまずかったので、関数化したという事情があるんです、たとえば。
List<Func<int>> list ;
for(int i=0;i<100;i++)
{
Func<int> tmp = () => i + 5 ;
list.Add(tmp) ;
}
とすると、プログラムする側の気持ちとしては i には 1 , 2 , 3 , 4 , 5 となって欲しいのですが
計算が遅延しますので、i = 100 , 100 , 100 ... となってしまいます。
0293デフォルトの名無しさん
2008/05/19(月) 22:29:400294デフォルトの名無しさん
2008/05/19(月) 22:31:290295デフォルトの名無しさん
2008/05/19(月) 22:34:250296デフォルトの名無しさん
2008/05/19(月) 22:39:050297デフォルトの名無しさん
2008/05/19(月) 22:40:44List<Func<int>> list ;
for(int i=0;i<100;i++)
{
var j=i;
Func<int> tmp = () => j + 5 ;
list.Add(tmp) ;
}
こうすればお望みの動作にならんかったっけ?見検証ヾ(゚д゚;) スッ、スマソ。
0298デフォルトの名無しさん
2008/05/19(月) 22:44:05別の詳細表示フォームの表示を更新する、といったことをしています。
何も選択していないときは、詳細表示では何も表示したくないので全て消去しているのですが、
ItemSelectionChangedイベントは、選択が切り替わるときに「選択解除」と「選択」の2つのイベントを発生させます。
そのため「表示の解除⇒再表示」となってしまい、妙なチラツキが発生してしまっています。
1回目の解除用のItemSelectionChangedイベントでは、次に選択が入るかどうかが分からないので、
どうやってチラツキを抑えようか困っています。
この問題を改善する方法はないでしょうか?
0299デフォルトの名無しさん
2008/05/20(火) 01:04:48こういうので良いんじゃない?
var list = Enumerable.Range(0, 100).Select(i => (Func<int>)(() => i + 5)).ToList();
0300デフォルトの名無しさん
2008/05/20(火) 01:25:06SelectedIndexChanged使えば?
0301デフォルトの名無しさん
2008/05/20(火) 02:04:34やり方はそれでOK
そのコード自体はNullReferenceExceptionになるけどなw
てか、C#でラムダ式に(パラメータ以外の)変数を入れる場合は、
基本的にスコープを最小限して、参照型ならコピーを使うというのは
for文の条件に不動小数点数を使わないのと同じくらい常識だと思う
あと、ラムダ式をごちゃごちゃ弄る場合は式木使った方がいいと思う
MSDNのどこかに載ってるExpressionVisitor使えばいろいろ出来る
0302デフォルトの名無しさん
2008/05/20(火) 02:15:360303デフォルトの名無しさん
2008/05/20(火) 03:25:22それも試してはいるのですが結果は一緒でした。
マニュアルには複数選択のListViewの場合は削除と追加の時に呼ばれるとありますが、
これはMultiSelect=falseの設定でも同じ仕様で動いていました。
何か設定が足りないのでしょうか?
(アイテム選択状態)
⇒別のアイテムを選択する
⇒ListView.SelectedIndexChangedが呼ばれる(選択要素数を確認すると要素数0)
⇒ListView.SelectedIndexChangedが呼ばれる(選択要素数を確認すると要素数1)
SelectedItemsだけでなく、SelectedIndicesの内容も同様です。
0304デフォルトの名無しさん
2008/05/20(火) 03:43:33そのタイミングでだけ消せば
0305デフォルトの名無しさん
2008/05/20(火) 08:46:40何も選択してないときの処理を別コントロールにフォーカスが移ったらって条件にすれば?
0306デフォルトの名無しさん
2008/05/20(火) 09:09:56一画面でどれくらいの個数までが実用的な範囲なのでしょうか?
イベントをとりたいのでマーカーとして貼り付けたいのですが、
個数が多いとパフォーマンスが落ちそうで…
0307デフォルトの名無しさん
2008/05/20(火) 09:51:26で、君の環境で試したらいくつでパフォーマンスが落ちたんだい?
0308デフォルトの名無しさん
2008/05/20(火) 11:06:46非同期で、サービスプログラムの状態を知りたいんだけど、
1.別スレッドで周期的にサービスプログラムの状態を監視し、表示する。
以外に何かよい方法ありませんか?
0309デフォルトの名無しさん
2008/05/20(火) 11:23:040311デフォルトの名無しさん
2008/05/20(火) 13:51:11そのPanelの上に同じようにPanelを重ねていって場面ごとに最前面にしたいんだけど、
Panelの大きさって全く同じじゃないとだめなのね。
大きさが違うとPanelの中のPanelって事になっちゃうみたい。
それとBringToFrontで最前面にするよりVisibleですかそうですか。
0312デフォルトの名無しさん
2008/05/20(火) 13:59:090313デフォルトの名無しさん
2008/05/20(火) 14:03:50相手が固定ならそれないりの方法あると思うけど、
それが何かは場合によるから、普通にポーリングでいいんじゃないかな。
サービスへの通知みたいに取れることを期待している?
0314デフォルトの名無しさん
2008/05/20(火) 14:28:44試してないけど、ツリーで位置を確認して移動すれば解決する事じゃないの?
0315314
2008/05/20(火) 14:31:16いやわかった。
最前面に置いたPanelが小さいと、下のPanelが見えるって事なのかな
だから最前面以外のVisibleをfalseにしなきゃいけないんだなっていうことを言いたいのかな
だとすればそれは当然。
0316デフォルトの名無しさん
2008/05/21(水) 13:58:12そだよ。でもデザイン的にタブが無い操作って事。
>>315
見えるっていうか、大きいPanelに小さなPanelが乗っかっちゃうと、小さなPanelをVisibleをtrueにしても大きなPanelがfalseなので結局表示されないって事なんだ。
たとえばPanel1とPanel2があって、Panel1に重なって小さなPanel2があったとします。
んで別のところにある二つのボタンでPanel1とPanel2を切り替えるために
private void button1_Click(object sender, EventArgs e)
{
panel1.Visible = true;
panel2.Visible = false;
}
private void button2_Click(object sender, EventArgs e)
{
panel1.Visible = false;
panel2.Visible = true;
}
こんな風に書くじゃないですか。
ところがPanel2はPanel1の中のパネルと判断されて表示されないわけです。
ちなみにPanel2が完全にPanel1に含まれていなくても大きさに関係なくPanel1上のものと判断されてしまうのです。
なので大きさも位置も完全に同じにしないと別々のパネルだと判断されないって事でした。
そして大きさも位置も完全に同じでもPanelをBringToFront()で最前面にしようとしてもダメでした。
0317デフォルトの名無しさん
2008/05/21(水) 15:58:37それこそ>>314で直るはずだろ
今VS起動できないから具体的になんて名前のウインドウだったか忘れたけど
ツリー表示でPanel2がPanel1の子になってるはずだからD&Dして兄弟にしてやればいい
0318デフォルトの名無しさん
2008/05/21(水) 16:45:12そんなツリーがあるんだ!?
従属関係を指定できれば解決する簡単な問題だったので疑問でした。
探してみます!
0319デフォルトの名無しさん
2008/05/21(水) 16:57:260320デフォルトの名無しさん
2008/05/21(水) 17:11:00今ちょうど検索してて見つからなくて困ってたんだけどありがとう!!!
あった!
0321デフォルトの名無しさん
2008/05/21(水) 17:23:16>>317のように親子を兄弟にすると位置自体も変わってしまう。
まあでも確認できるだけでもかなり便利になりました。
0322デフォルトの名無しさん
2008/05/21(水) 18:33:33そもそも、間違ってPanel2をPanel1に入れてる時点で自分に非があるのに
あたかも処理系やIDEが悪いかのような論調で書かれも困る
結論としては、デザイン時にコンテナを意識してないお前が悪い
てか、コンテナ意識しないとAnchorやDock使えんだろ
0323デフォルトの名無しさん
2008/05/21(水) 19:15:490324デフォルトの名無しさん
2008/05/21(水) 19:22:47って事だろ。
何の役にも立たないレス。
0325デフォルトの名無しさん
2008/05/21(水) 22:12:34どう考えても
>親子を兄弟にすると位置自体も変わってしまう。
という頭の悪い考えに対する返答だろ。
コントロールの位置座標というのはコンテナに対する相対座標なんだから、
親コンテナが変われば当然Form上における絶対座標は変わるに決まってる。
そんなことも理解できない馬鹿はおとなしくWPFアプリケーションで視覚的に
階層構造を指定できるものを使っておけということ。
フォームデザイナに頼りっぱだからそうなる。
コード上で親コンテナ.Controls.Add()で追加していけば思うような構成にするのは極めて容易い
0326デフォルトの名無しさん
2008/05/22(木) 00:40:500327デフォルトの名無しさん
2008/05/22(木) 01:03:26Controls.Removeしてから別のコントロールにAddすればいいんじゃないか
0328デフォルトの名無しさん
2008/05/22(木) 01:11:25変更後親コンテナ.Controls.Add(子);
0329デフォルトの名無しさん
2008/05/22(木) 01:17:28Panel2はFormの子にしたい場合はコードからしか設定できないってことでしょうか??
0330デフォルトの名無しさん
2008/05/22(木) 01:32:280331デフォルトの名無しさん
2008/05/22(木) 01:33:190332デフォルトの名無しさん
2008/05/22(木) 01:35:01というよりも、最初にPanelを同一の親コンテナの中に重ねて配置したいという時点で、
デザイナで作成するのではなく、最初からコード上でNew Panel()して
それをControlsに追加していくようにすべき。
デザイナ上でそれやろうとすると、親切にもDesigner.cs上のコードは
最前面にあるコンテナ内にコントロールを配置しようとしてくれちゃうから希望通りにならない。
ためしにpanel1とpanel2をForm上に重ねるように配置して、
片方のBackColorをBlackにして、Button1のClickイベントで交互にBringToFrontするように
してみたが、問題なく入れ替わったぞ。お前のやりたいことはまさしくこれのことだと思うが。
0333デフォルトの名無しさん
2008/05/22(木) 01:35:39シングルトンで実装するのが普通なんでしょうか?
それとも1度開いたらHide()で見えなくするだけ?
よろしくお願いします。
0335デフォルトの名無しさん
2008/05/22(木) 01:37:380336デフォルトの名無しさん
2008/05/22(木) 01:43:58そんなこと出来るんですかー。
>>331
ドキュメントアウトライン見ながら方向キーで調節したり、
Locateを手打ちしたりして注意しながら配置すれば出来るんですけど、
マウス操作だと親子関係が、ドキュメントアウトラインで親子関係を変えると位置が、それぞれ変わっちゃいますね。
特に後者の挙動は意味不明ですw
せっかくのGUIデザイナなのに感覚的に操作出来ないのは面倒ですね。。
0337デフォルトの名無しさん
2008/05/22(木) 01:50:42どうしてもデザイナにこだわるならExpressionBlend使ってWPFアプリ作れっての。
あれだとお前のやりたいことが全部感覚的にできるぞ。
あと、
>特に後者の挙動は意味不明ですw
>>325を百回読め。コンテナが変われば位置が変わるってことが理解できない頭なら
プログラミングなんて向いてないからやめておけ。
0338デフォルトの名無しさん
2008/05/22(木) 01:51:51最前面にあるコンテナの子にしてくれるのは感覚的にも動作的に問題ないけど
ドキュメントアウトラインで親子関係解消すると位置が変わっちゃうのは意味不明だけどね。
他の操作でその位置に出来るのになぜ変わるのかと。
>>335
あら不思議!
ありがとー。
0339デフォルトの名無しさん
2008/05/22(木) 01:56:38親コンテナが変われば相対座標が変わるって言いたいんだろうけど
それは問題になってないんですぅ。
GUIで親子関係を解消したら新親の座標に変換してくれたほうが直感的です。
しかもマウス操作したら旧親の子になってしまう座標ならなおさらです。
0340デフォルトの名無しさん
2008/05/22(木) 12:38:53何を言ってるんだか意味不明な気がする。
0341337
2008/05/22(木) 13:59:41いや、まあもう何も言わんからおとなしくWPFで作ったら?
君の言うGUIデザイナを使って「直感的」に作成できるからさ。
ツールに文句つけるわりには、それを解消したツールがあってもそっちを使おうとしないんだねぇ。
WPFとかXAMLの勉強するのは嫌だけどWPF&XAMLの機能を求めているわけだ。
だだをこねている子供にしか見えん。
0342デフォルトの名無しさん
2008/05/22(木) 15:05:590343デフォルトの名無しさん
2008/05/22(木) 15:25:580344デフォルトの名無しさん
2008/05/22(木) 15:27:590345デフォルトの名無しさん
2008/05/22(木) 15:28:400346デフォルトの名無しさん
2008/05/22(木) 15:33:200347デフォルトの名無しさん
2008/05/22(木) 16:05:450348デフォルトの名無しさん
2008/05/22(木) 18:38:280349デフォルトの名無しさん
2008/05/22(木) 18:41:120350デフォルトの名無しさん
2008/05/22(木) 19:41:280351デフォルトの名無しさん
2008/05/23(金) 02:41:060352デフォルトの名無しさん
2008/05/23(金) 02:47:330353デフォルトの名無しさん
2008/05/23(金) 07:08:570354デフォルトの名無しさん
2008/05/23(金) 07:12:31WPFは爆死の臭いしかしない
0355デフォルトの名無しさん
2008/05/23(金) 08:49:13Form1.cs[デザイン]を開いて
そこにDataGridViewを張り付けて
そのあとに
Form1.Designer.cs
の
System.Windows.Forms.DataGridView
を
MyNameSpace.MyDataGridView
に書き換えるとかそういうことをするんですか?
そんなはず無いと思うので正しいやりかたを教えてください。
0356デフォルトの名無しさん
2008/05/23(金) 08:52:300357デフォルトの名無しさん
2008/05/23(金) 09:01:20出てますね...
ありがとうございます。
0358デフォルトの名無しさん
2008/05/23(金) 13:55:25以下のコードを実行すると、クラスAのセッターを使ってAのプライベート変数に2を代入したいにも関わらず
既定値の0が用いられてしまいます。
警告内容は以下の通りです。
「フィールド 'NAME1.A.x' は割り当てられません。常に既定値 0 を使用します。」
また、付随する質問ですが、void func_A( temp ) { x... }をvoid func_A( temp ) { X... }とすればきちんと2がセットされます。
クラス内であるにも関わらずセッターXを用いる必要があるのはなぜでしょうか。
なお、コンパイル環境はVisual C# Express Editon 2008です。
0359KKK
2008/05/23(金) 13:56:15はじめましてRayです。
私は大学4年生ですが、最近は大学は週に一回くらいしか行かないのですが、
就活の準備など、家にいることが多くなりました。
しかし、斜め向かいに住んでいる茨城という若い夫婦が嫌がらせをしてきます。
�@近所をうろ�Aしたり、家の窓から私の部屋を覗いてきて、部屋に「○○の本がある」などと近所のほかのオバサンに報告したり、
�A布団たたきでものすごい音で布団をいつまでもたたきます。
(体格がいいオバサンなので、すごい音がします;;)
�B私が家にいるのを知っていて近所のオバサンと大きな声で悪口を言ってきます
(「Rayが就職なんかできるわけないじゃない!」など・・)
�C茨城(夫)は部屋を覗くだけでなく、夜になると咳払いなどをしていつまでも近所をうろついています。
気持ち悪いので、弁護士や市の職員に相談しましたが、なか�A証拠が取れなく、裁判まで持ち込めない状況です。
�D車のエンジンをいつまでもかけ、うるさくする。
とにかく精神的にも滅入っていて、解決したいのですが、できない状況です。
ほかの近所のオバサンも私が困っているのを見て喜んでいるみたいです。
なんとかしたいので、誰か相談にのってくださぃ。
アドバイス待ってます。
0360358のつづき
2008/05/23(金) 13:56:37class A {
// メンバ
private x; ← ここで警告が出る
// メソッド
public void func_A( temp ) { x... }; ← ここでx=0として計算してしまう
// アクセッサ
public X { get; set; }
}}
0361358のつづき
2008/05/23(金) 13:57:37using System.Collections.Generic;
・
・
・
using NAME1
namespace ConsoleApp {
class Main {
static void Main(string[] args) {
// クラスAを配列としてインスタンス化、xに2をセット
n ;
A[] arrayA_ = new A[ n ];
for ( int i = 0; i < n; i++ ) {
arrayA_[ i ] = new A();
arrayA_[ i ].X = 2;
}
// メソッドの呼び出し
temp;
for ( int i = 0; i < n; i++ ) {
arrayA_[ i ].func_A( temp );
}
}}}
0362デフォルトの名無しさん
2008/05/23(金) 13:58:590363358
2008/05/23(金) 14:16:40public double X { get; set; }
です。アクセッサの表記は、.NETのver2かver3でこのように書けるので、それを利用してます。
0364デフォルトの名無しさん
2008/05/23(金) 14:27:19どうして X が x を知ってる?
0365358
2008/05/23(金) 14:49:06>自動実装したプロパティでは、属性は使用できません。
>プロパティのバッキング フィールドで属性を使用する必要がある場合は、通常のプロパティを作成します
に関連がありそうだとは思うのですが、意味がよくわかりません・・・。
0366デフォルトの名無しさん
2008/05/23(金) 14:56:540367デフォルトの名無しさん
2008/05/23(金) 14:58:31private double _X;
みたいなのが内部で自動生成されて
public double X {
get { return _X; }
set { _X = value; }
}
0368358
2008/05/23(金) 15:03:32class{
double x;
double X{get;set;}
}
と書くのは誤りで、
class{
double x{get;set;}
}
と書けばよいということですか?
0369デフォルトの名無しさん
2008/05/23(金) 15:37:57プログラム全体でエンコーディングをしているする方法はないですか?
0370デフォルトの名無しさん
2008/05/23(金) 15:46:03private double x;
と
public double X { get; set; }
は別物だよ。
xをプロパティとしたいなら
public double X { get{return x;} set{x=value;} }
自動プロパティを使いたいならprivate double x;は消して
public double X { get; set; }だけにして、Xを変数のように使えばいいよ。
ただその場合はprivateではないけどね。
0371デフォルトの名無しさん
2008/05/23(金) 15:59:52CreateStreamReaderAsShiftJIS/CreateStreamWriterUTF8メソッドでも用意しとけば?
0372デフォルトの名無しさん
2008/05/23(金) 17:04:01Webbrowserコンポーネント(Webbrowser1)でgoogleを表示しておいて、
ソフトのTextBox(TextBox1)に検索ワードを入力して、Button(Button1)を押したら、
Webbrowser側に検索ワードが読み込まれて自動で検索するようにしたいんですが、
どのようにすればいいか検討がつきません。
開発環境はVisualstudio2005、言語はC#です。
0373デフォルトの名無しさん
2008/05/23(金) 17:07:41httpで通信するってんじゃだめかい?
0374デフォルトの名無しさん
2008/05/23(金) 17:10:13事前にgoogleを表示しとく意味があるのか?
取り敢えず適当にgoogleで検索して検索結果画面のURL調べれ
あとSystem.Web.HttpUtilityのUrlEncodeとUrlDecode調べれ
0375デフォルトの名無しさん
2008/05/23(金) 17:11:44webにいろいろと自動入力するシステムを作らないといけなくなりまして。
たとえばブログにあらかじめTextboxに入れておいたIDとパスを入れて自動ログインするとか
そういったものなんですけど、webのフォームに、Textboxから値を入れる方法が知りたくて、
Googleはそのたとえのつもりでした。
http通信?の意味がよくわからないんですが、ソフト内のブラウザ上で表示させる必要はあります。
0376デフォルトの名無しさん
2008/05/23(金) 17:13:21Googleっていうたとえが悪かったですね。ごめんなさい。
>>375で書いたように、Webサイト上のフォームにソフトのTextBoxで記載したワードを記入するのが目的です。
0377デフォルトの名無しさん
2008/05/23(金) 17:27:16その内容を反映させては。
0378デフォルトの名無しさん
2008/05/23(金) 17:30:01こんなの厨房でも出来るぞ
0379デフォルトの名無しさん
2008/05/23(金) 17:39:43どのメソッドを使えばいいかわからなかったので、ググってみたらできそうです、ありがとうございます。
>>378
HTTP POSTで検索したらそれらしいのがでてきました。ありがとうございます。
0380デフォルトの名無しさん
2008/05/23(金) 17:40:120381デフォルトの名無しさん
2008/05/23(金) 17:41:46おそらくやりたいことは
public double X { get; private set; }
これだけでいいと思われる。
これでXのセッターはprivateになる。
0382デフォルトの名無しさん
2008/05/23(金) 17:43:52そのとおりです小学校3年生です。
バカな質問してすいませんでした。
0383デフォルトの名無しさん
2008/05/23(金) 17:46:22小学生に失礼だ
0384デフォルトの名無しさん
2008/05/23(金) 17:48:58自動プロパティのセッタゲッタの片方だけのプロテクションを帰ることは出来ないよ。
0385デフォルトの名無しさん
2008/05/23(金) 17:52:20いきなりどうしたの?
俺ができてるからそう書き込んでるんだけど。
0386デフォルトの名無しさん
2008/05/23(金) 17:54:35public Foo Foo{ get; private set; }
だな
普通のプロパティなんてかったるくて書いてられん
0387デフォルトの名無しさん
2008/05/23(金) 17:55:26知ったか?
それとも何か他に深い意味があるの?
0388358
2008/05/23(金) 18:08:21ありがとうございました。
0389デフォルトの名無しさん
2008/05/23(金) 18:15:11まあ、解決したならそれでいいけど、これでいいよ。
private void button1_Click(object sender, EventArgs e)
{
HtmlElement input = webBrowser1.Document.All.GetElementsByName("q")[0];
HtmlElement form = webBrowser1.Document.All.GetElementsByName("f")[0];
input.SetAttribute("Value", textBox1.Text);
form.InvokeMember("submit");
}
>>378
ログイン処理とかだと、ログイン前のセッションクッキー引き回しとか、
JavaScriptによるワンタイムキーの生成とかが必要になると、そのへんは
ブラウザに任せた方がはるかに簡単。
0390デフォルトの名無しさん
2008/05/23(金) 18:34:21ttp://dobon.net/vb/dotnet/internet/webrequestpost.html
ここを参考にしたけどだめみたいなんだ。
たとえば
ttp://suddenattack.redbanana.jp/
ここに自動ログインするためにはどうしたらいいのかな?
0391デフォルトの名無しさん
2008/05/23(金) 19:21:51検索してもわからず、困っていたところでした。
("q")と("f")のところにhtmlからそのフォームのnameをもってきたらいいということですか?
やってみます!またできたら報告しますね。
0392デフォルトの名無しさん
2008/05/23(金) 19:28:24面倒くさいんですけどん。
0393デフォルトの名無しさん
2008/05/23(金) 19:29:590394デフォルトの名無しさん
2008/05/23(金) 19:31:53サンクスです。
こんなのがあったんですね。
0395デフォルトの名無しさん
2008/05/23(金) 19:43:160396デフォルトの名無しさん
2008/05/23(金) 20:38:55やろうと思えばできる。
IDとパスのINPUTタグのIDを調べ>>389のようにIDとパスを入力し、
こいつらを管轄するフォームでsubmitする。
ヒント:javascriptを実行してからsubmitを行う。
0397デフォルトの名無しさん
2008/05/23(金) 20:52:21そのフォームがもってるある型の変数全部の値を一括で変更
する方法はありますか?
おねがいします。
0398デフォルトの名無しさん
2008/05/23(金) 20:56:160399デフォルトの名無しさん
2008/05/23(金) 20:58:34javascriptは全然わからないから詰まってます。
submit()を実行すると無限に更新されるみたいなのですが・・・。
htmlソースみるとLoginLeftFormCheck()を呼び出してるみたいなのですが関係ないですかね。
0400390
2008/05/23(金) 21:04:58public Form1()
{
InitializeComponent();
webBrowser1.Url = new Uri("http://suddenattack.redbanana.jp/index.asp");
}
private void button1_Click(object sender, EventArgs e)
{
HtmlElement id = webBrowser1.Document.All.GetElementsByName("user_id")[0];
HtmlElement pass = webBrowser1.Document.All.GetElementsByName("user_pwd")[0];
id.SetAttribute("Value", "aaaaa");
pass.SetAttribute("Value", "bbbbbb");
}
こんな感じでフォームに文字が入りました。
あとはログインボタン押して、ゲームスタートボタン押すだけなんですが・・・
0401デフォルトの名無しさん
2008/05/23(金) 21:05:33いやそいつを実行するの。
0402デフォルトの名無しさん
2008/05/23(金) 21:06:25ログインボタン、エンターキーおしたらいけないの?
0403デフォルトの名無しさん
2008/05/23(金) 21:06:26JavaScriptもわからないようならC#とか無理だから諦めろ。
なでしこでもやってろ
0404デフォルトの名無しさん
2008/05/23(金) 21:06:59>>396→>>399
0405390
2008/05/23(金) 21:11:35実行するってことはInvokeMember("LoginLeftFormCheck")ってことですかね?
>>402
フォーム上ならエンターキーでもログインできます。
0406401
2008/05/23(金) 21:28:18COMコンポーネントのMicrosoft Web Browserコントロールと、Microsoft.mshtmlというライブラリでしか
俺はできないんだ。(メソッドやら何やらがわかりやすい。)
Microsoft.mshtmlは.NetFramework1.0にしかついてこんのだ。
で、このMicrosoft.mshtmlを使ったやり方で説明すると、
・・・・・
Dim id As mshtml.HTMLInputElement = doc.getElementById("ID_user_pwd")
id.value = "id"
Dim pwd As mshtml.HTMLInputElement = doc.getElementById("ID_user_pwd")
pwd.value = "password"
doc.parentWindow.execScript("LoginLeftFormCheck()") ' LoginLeftFormCheck()を実行
pwd.form.submit() ' フォームをsubmit(これはInvokeMemberでできるとおもわれ)
これでログインできる。
ゲームのスタートボタンはFlashであるために、プログラム上で操作する方法があるかもしれないが、
俺は残念ながらわからんかった。
まえ、ガンストの自動ログインツールを作成したときは、画面にブラウザを貼り付けて、
ゲームのスタートボタンが確実に見えるサイズに広げて、APIでマウスを操作するプログラムを書くという
逃げ道でやった。
0407デフォルトの名無しさん
2008/05/23(金) 21:52:19Microsoft Visual C# 2008 Express EditionをSDKとSQL Serverつきでインストールしました。
しかし何をどう作っていったらいいかわかりません。
プログラム経験はPHPでWebプログラム(こちらは趣味で3年以上やっていて2ch風掲示板ぐらいのものは作れます)、
あとオブジェクト指向の勉強にJavaを少しいじった程度です。
Javaでは簡単なファイル操作から、オブジェクトの継承や例外処理など基本的な勉強しかしていません。
Webプログラムはイメージ的にわかるので、ASP.NETあたりはなんとか理解できると思うのですが、
Windowsアプリケーションとなると右も左もわかりません。
まずは何をやったらいいのでしょうか?
0408デフォルトの名無しさん
2008/05/23(金) 21:54:250409デフォルトの名無しさん
2008/05/23(金) 21:55:56スレチこっちで質問しなおせ
ttp://pc11.2ch.net/test/read.cgi/tech/1160209713/
ttp://pc11.2ch.net/test/read.cgi/tech/1208248879/
0410407
2008/05/23(金) 22:04:58とりあえずWebアプリケーションでいうチャットやカウンターのような位置づけなものを作ってみたいです。
(ようするに簡単なものです)
おそらくメモ帳のようなものになるのでしょうか?
ペイントのようなものも作ってみたいですが、メモ帳に比べると難易度はあがりそうですね。
簡単なテーブルゲームなんかも作ってみたいですが、アルゴリズムの勉強はしてないので少し厳しそうです。
>>409
了解です。そちらで質問しなおします。
0411390
2008/05/23(金) 22:15:45どうもありがとうございます。
webBrowser1.Url = new Uri("javascript:" + Uri.EscapeDataString("LoginLeftFormCheck();"));
で無理やり実行してみたらfalseが返ってきちゃいました。
マウス操作も考えたんですけど、ブラウザやマウスが勝手に動く様が見えちゃいますよね。。
0412397
2008/05/23(金) 22:32:25型情報でインタンスの値は取り出せないのではないでしょうか?
もう少しキーワード教えてください。
0413デフォルトの名無しさん
2008/05/23(金) 22:43:15FieldInfoから値取得できる
0414401
2008/05/23(金) 22:51:20いや、LoginLeftFormCheckは単に実行するだけでOK。
submitすりゃ、ログインされる。
javascriptは多分InvokeScriptでできない?
マウスは勝手に動くようにみえちゃう。これは仕方ない。
0415デフォルトの名無しさん
2008/05/23(金) 23:23:57>>409
0416デフォルトの名無しさん
2008/05/23(金) 23:34:100417デフォルトの名無しさん
2008/05/23(金) 23:36:310418デフォルトの名無しさん
2008/05/23(金) 23:44:16>(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
C#プログラマの雑談スレなんて限定的には書いてないけど?
しかもスレタイは「相談室」だぞ
0419397
2008/05/23(金) 23:44:32ありがとうございます。
0420デフォルトの名無しさん
2008/05/23(金) 23:55:28鳥解析4649
0421デフォルトの名無しさん
2008/05/24(土) 00:04:490423デフォルトの名無しさん
2008/05/24(土) 01:53:52C#、.NET(ただし、C#を使っている前提)に関することで、
主にふらっとだとアレな話題や雑談とかのスレ
と、俺は解釈してる
ここで質問すること自体は悪いとは思わないが、
ふらっとの方がより適切だとも思ってる
0424デフォルトの名無しさん
2008/05/24(土) 04:07:26回答者も初心者スレにいなかったら結局このスレに質問しに来るのでは?
たらい回しはいかんよ。
0425デフォルトの名無しさん
2008/05/24(土) 04:09:08こっちでの質問はOOPとか言語仕様なりの高度な質問になる感じ
0426デフォルトの名無しさん
2008/05/24(土) 04:11:33元の趣旨はそうだが実情は逆
0427デフォルトの名無しさん
2008/05/24(土) 04:44:53質問者が初心者と自覚した場合ふらっとに行けばいいと思うよ。
ただそれだけ。
0428デフォルトの名無しさん
2008/05/24(土) 04:57:34みんなわかってるはずだ
0429デフォルトの名無しさん
2008/05/24(土) 05:05:02心配無用。
どうせ皆も両方見てるんでしょ。
0430デフォルトの名無しさん
2008/05/24(土) 05:42:36で、もし削ったとしたら初心者隔離スレも欲しくなるよな。
ここまで言えばわかるよな。
0431デフォルトの名無しさん
2008/05/24(土) 10:55:500432デフォルトの名無しさん
2008/05/24(土) 12:40:47>質問者が初心者と自覚した場合ふらっとに行けばいいと思うよ。
えてしてその主観が間違ってるから問題になるんだが。
0433デフォルトの名無しさん
2008/05/24(土) 15:28:08だからもう喧嘩するな
0434デフォルトの名無しさん
2008/05/24(土) 17:44:1296なら95、98なら100、53なら55、42なら40
と言うふうにしたいのですが、どうすればいいでしょうか?
0435デフォルトの名無しさん
2008/05/24(土) 17:46:22Process process = new Process() ;
process.StartInfo.FileName = "hoge.exe" ;
process.Start() ;
こんな風に実行することが出来るようなのですが、
外部アプリケーション側に文字列を複数与えたいのです。
その場合呼び出す側と呼び出される側はどのような準備をすればいいのでしょうか?
0436デフォルトの名無しさん
2008/05/24(土) 17:49:25問題を定義しなおしてから来い。
>>435
Process.Start(hoge.exe,"arbitrary string");
0437デフォルトの名無しさん
2008/05/24(土) 17:52:060438デフォルトの名無しさん
2008/05/24(土) 17:53:32int number;
number = 適当な数値;
if (number % 10 < 4) number = number - (number % 10);
else number = number + 10 - (number % 10);
適当に今思いついたがこんなんで良いか?
0439デフォルトの名無しさん
2008/05/24(土) 17:58:080440435
2008/05/24(土) 18:00:09文字列を複数渡したいのですが
Process.Startの第二引数はstring[]でもいいのですか?
それと受け取る側はどうすればいいのでしょう?
0441デフォルトの名無しさん
2008/05/24(土) 18:01:03ありがとうございます。
さっそく導入してみたのですが、これだとただの10ずつになってしまうのですが……。
っと書いていたら439の返事がきました。
ありがとうございます。
こういうのも四捨五入というのですか……。
勉強になりました。
0442デフォルトの名無しさん
2008/05/24(土) 18:02:00無理。記号を決めてそれを受け取る側で改行と見なすくらいしかない
0443デフォルトの名無しさん
2008/05/24(土) 18:02:40if (number % 10 < 5) number = number - (number % 10)+5;
else number = number + 10 - (number % 10);
でいいんじゃね?
0444デフォルトの名無しさん
2008/05/24(土) 18:02:43もうちょっとテストして、また報告させていただきます。
本当にありがとうございました。
0445デフォルトの名無しさん
2008/05/24(土) 18:04:33>>443
ありがとうございます。
それでいけそうです。
これまたもう少しテストしてきます。
0446デフォルトの名無しさん
2008/05/24(土) 18:06:56int mod = x % 5;
x += mod > 2 ? 5 - mod : -mod;
0447デフォルトの名無しさん
2008/05/24(土) 18:08:21string一つだけなのですか。
受け取る側はどうすればいいですか?
受け取る側はコンソールではなくフォームアプリケーションです。
0448デフォルトの名無しさん
2008/05/24(土) 18:17:35スペース区切りとかで渡して、
splitで分割するなりすればいいんじゃね?
0449デフォルトの名無しさん
2008/05/24(土) 18:19:37ありがとうございます。
>>443さんの方法だと、きりのいい数字だとちょっとおかしくなるようでした。
446さんの方法は私程度にはどういう処理をしているのかさっぱりなのですが、
問題なく使えます。
みなさん本当にありがとうございました。
0450435
2008/05/24(土) 18:30:42コンソールと変わらずにエントリポイントから受け取ればいいんですね。
0451デフォルトの名無しさん
2008/05/24(土) 18:40:20AutoNullpoOudaki gattu = new AutoNullpoOudaki();
gattu.Execute();
0452デフォルトの名無しさん
2008/05/24(土) 19:11:50ttp://ufcpp.net/study/csharp/sp3_expressionsample.html
ここで書いてあるような子としてみたかったんだが、CodeDom.GetExpressionFromとか見あたらず、いろいろググってもそれらしいのにたどり着けず・・・
CodeDomでFuncを返すメソッドを持つクラスをコンパイルして実行して呼び出せば出来無くないんだけれどもう少しまともな方法で・・・
0453デフォルトの名無しさん
2008/05/24(土) 19:31:07そのページにある「ソース一式」のところからソース落して、
中身の「MyMath\CodeDom.cs」の中にその GetExpressionFrom の実体がある。
0454デフォルトの名無しさん
2008/05/24(土) 19:32:55「CodeDomでFuncを返すメソッドを持つクラスをコンパイルして実行して呼び出せば」
をやってるだけ。
もう少しまともな方法、確かに欲しいよね。
0455デフォルトの名無しさん
2008/05/24(土) 19:47:03さんくすこ。
てっきり.NET3.5以降で追加されたのかと思ってた・・・orz
CocoaのようなKVCとかやるためにリフレクションからコード生成→lambdaにしてそれなりに高速にアクセスみたいなことしたかったんだが・・・
場合によって、無理やりコンパイルでlambda変換するようにしようかな・・・
あぁ書いてて思ったが、式ツリー手動でいじくればいいのか。よくわからんがやってみるノシ
0456デフォルトの名無しさん
2008/05/24(土) 20:04:19もし適切なところが他にありましたら誘導お願いします(´・ω・`)
ボタン押したらwavファイルをプログラムに埋め込んで、ボタン押されたらそれを再生させたいんですが、上手く再生されません。
hi.wavが再生させたいファイルです。
private void button1_Click(object sender, EventArgs e)
{
System.Reflection.Assembly a = System.Reflection.Assembly.GetExecutingAssembly();
string file = a.GetName().Name + ".hi.wav";
System.IO.Stream s = a.GetManifestResourceStream(file);
SoundPlayer player = new SoundPlayer(s);
player.Play();
}
サンプルを見ながらこのようなソースを組んで、
プロジェクトのプロパティのリソースのところにhi.wavを追加して、
Persistenceを「.resxに埋め込まれました」に設定しました。
しかし、動かしてみると標準のビープ音しかなりません。
デバッガで見ると、sがnullのままのようで、ファイルを読み込んでいないようです。
埋め込み方が間違ってるんでしょうか・・・。
よろしくお願いします(´・ω・`)
0457デフォルトの名無しさん
2008/05/24(土) 20:26:10SoundPlayer player = new SoundPlayer("path");
player.PlaySync();
0458デフォルトの名無しさん
2008/05/24(土) 20:37:51なぜか読み込んでくれずにエラーが起きてしまいます
どうしたらよいのでしょうか
0459456
2008/05/24(土) 20:42:51ありがとうございます。実際にwavファイル置いてパス指定して音を鳴らすことは問題なくできるんですが、
埋め込めたら良いなぁ・・・ってことなんです。
もしかして、埋め込みは無理ってことですか?
0460デフォルトの名無しさん
2008/05/24(土) 20:42:50これがクエリ式のパーサ持ってたと思う。使い回せるかも。
ttp://www.codeplex.com/nlinq
使い方は"poorman's linq"でぐぐる。
0461デフォルトの名無しさん
2008/05/24(土) 20:45:46取りあえずエラーとやらに付随してるメッセージを読み上げるといいよ
0462デフォルトの名無しさん
2008/05/24(土) 20:46:10OSにスウェーデン語パックを導入しる
0463デフォルトの名無しさん
2008/05/24(土) 20:48:49今からググってきます。ありがとうございました
0464デフォルトの名無しさん
2008/05/24(土) 22:09:12出力の種類を「クラスライブラリ」としてあるプロジェクトを、スタートアッププロジェクトに設定した他のプロジェクトに参照させるにはどうすればよいのでしょうか。
そのままusingしようとしても「名前空間がない」と言われてしまいます。
0465デフォルトの名無しさん
2008/05/24(土) 22:12:54ソリューションエクスプローラで参照したいプロジェクトを右クリックして
参照の追加 → プロジェクト
0466デフォルトの名無しさん
2008/05/24(土) 22:16:17今更だけど、要は「5の倍数への丸め」、もしくは「丸め幅5での丸め」でしょ?
個人的には汎用的なこれを使いたいところ
var y = (int)Math.Round((decimal)x / n) * n;
まあ、整数型に限定してもこんなところじゃないか
var y = (x + (n / 2)) / n * n;
因みに、後者はaway from zeroだが、前者はRound()のmode指定で選択可
対象が整数値で、かつ丸め幅が奇数ならどちらでも同じ
0467デフォルトの名無しさん
2008/05/24(土) 22:37:56ありがとうございます。
0468デフォルトの名無しさん
2008/05/24(土) 22:54:56もしかしたら、Compact Frameworkじゃ違うかもしれないけど
多分、その方法はファイルをresxに埋め込まない古いやり方。
wavファイルをプロジェクトに追加して
ビルドアクションを「埋め込まれたリソース」にすれば、
その方法で鳴る筈。
んで、2005以降は、リソースエディタを使ってresxに埋め込んで、
"HI"がリソース名になったとしたら、
System.IO.Stream s = Properties.Resources.HI;
SoundPlayer player = new SoundPlayer(s);
player.Play();
で一応鳴る。
でも、ストリームのWAVEデーターの再生は、
GC絡みで問題があるらしい。
詳しくはこれを。
ttp://dobon.net/vb/dotnet/programing/playembeddedwave.html
0469デフォルトの名無しさん
2008/05/24(土) 23:05:15ボールが画面外に飛び出してしまうのです。どうにかなりませんか?
ちなみにソースはこれ
http://www.borujoa.org/upload/source/upload18960.txt
0470デフォルトの名無しさん
2008/05/24(土) 23:24:400471デフォルトの名無しさん
2008/05/24(土) 23:27:03ソース見て吹いたw
0472デフォルトの名無しさん
2008/05/24(土) 23:31:36こういうifの書き方好きなの?
0473デフォルトの名無しさん
2008/05/24(土) 23:31:590474デフォルトの名無しさん
2008/05/24(土) 23:32:510475デフォルトの名無しさん
2008/05/24(土) 23:56:200476デフォルトの名無しさん
2008/05/24(土) 23:59:51例えば、unsigned intなら0か4294967295を返せる、といったような。
変数の型の範囲を超えるような値が格納されそうになった場合、エラーを出すような関数を作ろうと思っているので。
0477デフォルトの名無しさん
2008/05/25(日) 00:03:330478デフォルトの名無しさん
2008/05/25(日) 00:19:230479デフォルトの名無しさん
2008/05/25(日) 00:24:16C#や.NET Framework向けのwebスクレイピングライブラリはないですか?
検索してたのですが、なかなか見つからないや・・・
0480デフォルトの名無しさん
2008/05/25(日) 00:24:270481デフォルトの名無しさん
2008/05/25(日) 00:24:56いやいや、476はMaxValue/MinValueを知った上でそういう関数が欲しいんじゃなくて、
ただ単に MaxValue/MinValueの存在を知らないだけじゃないかと。
0482デフォルトの名無しさん
2008/05/25(日) 00:27:410483デフォルトの名無しさん
2008/05/25(日) 00:28:51MS は文法のゆるい HTML を機械処理するのはあまり好きじゃないみたい。
HTML2XHTML みたいなものを通して文法の正しい XML にした上で、
XmlReader やら LINQ to XML でアクセスするのがいいかと。
↓でそういうことやってるんだけど、
http://d.hatena.ne.jp/uesama99/20080219/1203394007
HTML2XHTML が微妙臭い。
0484デフォルトの名無しさん
2008/05/25(日) 00:29:53しっかり読んでなかったw
それはちゃんと、「C# は C/C++ とは違いますよ」誘導してやろうよ。
0485デフォルトの名無しさん
2008/05/25(日) 00:52:32ありがとうございます。
>>481
その通りです。低レベルすぎてすみません。
>>482
C#ではUInt32って書くんですね。ありがとうございます、勉強になりました。
0486デフォルトの名無しさん
2008/05/25(日) 01:45:22クッキーとか面倒なところを良きにはからってくれるのはないっぽいですね。
LLと組み合わせるしかないか・・・
GUI楽したいので.NET使いたかったけど、うまくいくかなあ
とりあえうずありがとう。
いろいろ試してみます
0487デフォルトの名無しさん
2008/05/25(日) 07:57:54プロパティタブをいくつか追加したりしてるんだが
ボタンに使われる画像の色が PropertyTab.Bitmap で retuen した Format32bppArgb の画像と微妙に違う
見た感じは大体同じなんだが、実際のRGBを調べるとほんの少しずれてたりする
何か色数の制限があるのなら、それに合わせた画像にするんだけど分かる人いる?
0488456
2008/05/25(日) 08:59:21ありがとうございます。
ビルドアクションを「埋め込まれたリソース」には一応変更していたんですが、鳴りませんでした。
・・・とおもったら、hi.wavが(.resxに埋め込む操作したとき)Resourceフォルダの中に入ったままビルドアクションを変更していたので、
常識的に考えて鳴りませんね。プロジェクトのディレクトリ直下に移して無事鳴りました。
あと、
System.IO.Stream s = Properties.Resources.HI;
SoundPlayer player = new SoundPlayer(s);
player.Play();
も、そのサイトを見つけたときにやってみたんですが、
CompactだとProperties.Resources.hiがstreamじゃなくてbyte[]を返してくるんで使えませんでした。
・・・って思ってたんですが、
byte[] hibyte = Properties.Resources.hi;
MemoryStream s = new MemoryStream(hibyte);
player.PlaySync();
すればすむ話ですねo. . ...rz
昨日の数時間は何だったんだ・・・
1日置くと急に分かったりするもんですね(´・ω・`)
本当にありがとうございました。
0489456
2008/05/25(日) 09:03:19MemoryStream s = new MemoryStream(hibyte);
SoundPlayer player = new SoundPlayer(s);
player.PlaySync();
の誤りです。すいません。
あと、>>456ではPlay()使ってますが、
特に非同期再生が必要なわけではないので、GC絡みのを回避するためにもPlaySync()を使おうと思います。
0490デフォルトの名無しさん
2008/05/25(日) 11:27:09ネットの初心者向けサイトを見ながらC#をやっていたんですがそろそろきつくなってきました
とくにデリゲートをイベントハンドラとして実装するところと、イテレータがよくわかりません
初心者から中級者にレベルアップするために買うべき本を教えてください
0491デフォルトの名無しさん
2008/05/25(日) 14:11:02空のプロジェクトに参照をDLLを追加し、Class.csファイルを作り、メインメソッドに
DxLibrary.DxLib_Init();
と書いただけなのですが、
DLL 'DxLibDll.dll' を読み込めません: 指定されたモジュールが見つかりません。 (HRESULT からの例外: 0x8007007E)
と出てしまいます。
DLLはあらゆる場所に配置して試したのですが、
やはり同じようにエラーがでます。
何か特別な書き方が必要なのでしょうか?
0492デフォルトの名無しさん
2008/05/25(日) 14:17:45使い方も丁寧に書かれてる
0493デフォルトの名無しさん
2008/05/25(日) 14:19:29ありがとうございます。
いつのまにか出てたのですか!?
なぜエラーが出たのかは未だ不明ですが、早速使ってみたいと思います。
0494デフォルトの名無しさん
2008/05/26(月) 15:17:262つのスレッドでそれぞれフォームを作成し表示します。
このとき、これらフォームの表示順位(重なり)を
コントロールすることは可能でしょうか?
なんか、デバッカ上とSetup後のプログラムで表示順がことなって
メッセージボックスが隠れたりする・・
0495デフォルトの名無しさん
2008/05/26(月) 17:06:52struct A{
public fixed double b[123];
};
でいけますが、
構造体の中で2次元配列メンバを持たせるために
struct A{
public fixed double b[123][234];
};
などとやってもエラーになります。
構造体の中で2次元配列メンバを持たせることは可能でしょうか?
0496デフォルトの名無しさん
2008/05/26(月) 17:10:31とりあえず以下HPを参考にし、隠れていたダイアログが表示されるようになりました。(暫定対応ですが・・)
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34347&forum=7&start=0
端的に言うと、複数のアプリをダブルクリックしたときと同じで、
後から立ち上げた方が優先されて表示される。のと同じみたいです。
お騒がせしました。
0497デフォルトの名無しさん
2008/05/26(月) 17:17:20fixedである以上は無理
0498デフォルトの名無しさん
2008/05/26(月) 18:17:56クラスの配列をインスタンス化するのにforを使って次のようにやってるんですが、
もしもっとスタンダードな方法があったら教えてください。
for文の中でインスタンス化すると、スコープから出ると消えちゃうような感覚がして気持ち悪いんです。
classA{}
A[] a = new A[n]
for(int i = 0; i < n; i++){
a[i] = new A();
}
0499デフォルトの名無しさん
2008/05/26(月) 18:20:500500デフォルトの名無しさん
2008/05/26(月) 18:21:08> for文の中でインスタンス化すると、スコープから出ると消えちゃうような感覚がして気持ち悪いんです。
この感覚を何とかしたほうがいい
0501デフォルトの名無しさん
2008/05/26(月) 18:23:51A[] a = new A[n] ← classA型の変数を宣言
a[i] = new A(); ← 実際に代入
つまり、for文の中では代入行為しかやってないから消えない、ということですか?
0502デフォルトの名無しさん
2008/05/26(月) 18:29:29GCってのは「参照できる限りは消えない」
例えばnが1なら、forを抜けても a[0]を参照できるでしょ?
で、参照できるので消えない。
0503デフォルトの名無しさん
2008/05/26(月) 18:34:420504デフォルトの名無しさん
2008/05/26(月) 19:18:270505デフォルトの名無しさん
2008/05/26(月) 19:20:450506デフォルトの名無しさん
2008/05/26(月) 19:30:39スコープの話をしてると思うんだが。
0507デフォルトの名無しさん
2008/05/26(月) 20:26:570508デフォルトの名無しさん
2008/05/26(月) 23:14:090509デフォルトの名無しさん
2008/05/26(月) 23:16:050510デフォルトの名無しさん
2008/05/26(月) 23:36:550511デフォルトの名無しさん
2008/05/26(月) 23:37:370512デフォルトの名無しさん
2008/05/26(月) 23:41:060513デフォルトの名無しさん
2008/05/27(火) 00:18:08できてないできてない。
0514デフォルトの名無しさん
2008/05/27(火) 00:46:13static void Main() {
Hoge hoge = new Hoge();
hoge.Foo(); // hogeが参照されるのはここが最後
// 時間のかかる処理
}
hogeがまだスコープ内にあるにもかかわらず、時間のかかる処理の最中にGCされることがある。
0515デフォルトの名無しさん
2008/05/27(火) 00:50:360516デフォルトの名無しさん
2008/05/27(火) 00:53:200517デフォルトの名無しさん
2008/05/27(火) 01:00:18ここの真ん中くらいの「補足:ニュースグループ・・・」あたりにその例が出てる。
KeepALiveを使ってる箇所。
0518デフォルトの名無しさん
2008/05/27(火) 01:14:44「ふらっとC#,C♯,C#(初心者用) Part22」
ttp://pc11.2ch.net/test/read.cgi/tech/1197802312/850-877
>876 名前: 875 [sage] 投稿日: 2008/01/08(火) 00:46:17
>>>850
>あーもしかしてと思ってと思って>>875のコードから
>GC.KeepAlive(func); 抜いたら確かにAccessViolationExceptionおきるね。
>言ってるのはこれのことじゃろか。
>
>P/Invokeにデリゲートを渡す場合、そのデリゲートの寿命管理は.NET側の責任。
>実は元のるびま記事にも書いてある。
>ttp://jp.rubyist.net/magazine/?0021-RubyWithCSharp#fm05
0520デフォルトの名無しさん
2008/05/27(火) 02:21:58厳密には関係なくないとしてあえて言うと、
new A[n]したオブジェクトはA[] aの寿命(参照が外れるまで)生きてる。
0521デフォルトの名無しさん
2008/05/27(火) 05:51:20ちょっと難しい質問だとなかったかのようにスルーするお前らワロスw
0522デフォルトの名無しさん
2008/05/27(火) 08:25:46最近はROM主体だが、お前の発言が一番醜く見える。
そんなに無視されたのがくやしいのか? ちなみにどの質問なのか示してみ。
0523デフォルトの名無しさん
2008/05/27(火) 08:56:450524デフォルトの名無しさん
2008/05/27(火) 09:04:01それはスコープが終了するとGCされるから、プログラマの責任でスコープを終了させんな、って話だ。
0525デフォルトの名無しさん
2008/05/27(火) 09:12:10わざわざROM主体とか前置きしないとレスできないのかよw
0526デフォルトの名無しさん
2008/05/27(火) 09:14:26>>525のレスは理解出来るが、別に言い訳に使ってないじゃん
まあ、無駄な前置きではあるけど
0527デフォルトの名無しさん
2008/05/27(火) 09:40:12まあ、第三者を装ってるあたりはみっともないな
0528デフォルトの名無しさん
2008/05/27(火) 10:23:17それはるびまの記事の話だろう。
あのスレの>>875はこんなコード。GC.KeepAliveを抜いたらクラッシュする。
static void Main(string[] args)
{
VALUE state = 0;
Ruby.ruby_init();
const string funcdef =
"def foo\n" +
"s=\"FOO\"+nil\n"+
"end";
Ruby.rb_eval_string_protect(funcdef, ref state);
VALUE hoge = Ruby.rb_intern("hoge");
Ruby.CallbackArg0 func = arg => Ruby.rb_funcall(Ruby.Qnil, hoge, 0, 0);
VALUE result = Ruby.rb_protect(func, Ruby.Qnil, ref state);
GC.KeepAlive(func);
}
0529デフォルトの名無しさん
2008/05/27(火) 13:20:13アンマネージ側で不要になるまでGC対象にならないようにしとかなきゃならない。
てだけの話?
0530デフォルトの名無しさん
2008/05/27(火) 13:41:36そういうこと。
他にも、インライン展開されたコンストラクタが完了する前にファイナライザが実行されることすらあるよ。
この場合もアンマネージな世界のハンドルの早すぎる解放であぼんする場合がある。
0531デフォルトの名無しさん
2008/05/27(火) 13:44:199割9分そういう理解でOK。>>514もアンマネージなmutexやロックのためのファイルを
開いたままにする場合などに影響が出る。
アンマネージが関係しないケースはまれなのだが、なぜかそのレアケースが、
MSDNに載ってたりする。サンプルソースは2種類あるが最初のほう。
http://msdn.microsoft.com/ja-jp/library/system.gc.keepalive(VS.80).aspx
0532デフォルトの名無しさん
2008/05/27(火) 14:44:450533デフォルトの名無しさん
2008/05/27(火) 15:07:42フラグやEventを使ってスレッド自身にそうさせるのが基本。
0534デフォルトの名無しさん
2008/05/27(火) 16:06:120535デフォルトの名無しさん
2008/05/27(火) 16:10:550536デフォルトの名無しさん
2008/05/27(火) 16:12:20お前が関係ない話してレスが流れたんだろ。
自分で見返せ。
0537535
2008/05/27(火) 16:19:20えーと、俺はこのスレには初めて書いたものだが
流れがわからんからアンカーつけてくれないか?
どの質問の話かわからないから、答えようが無いわ。
0538デフォルトの名無しさん
2008/05/27(火) 16:22:12そこのサンプル例1の解説が不正確で、プロパティの取得処理が
時間のかかる処理のためデストラクタが先に動いてしまうと読めるがそれは誤り。
もしそうであれば.NETのGCなんて安心して使えない。
それはデストラクタの使い方に重大な欠陥があるために発生する。
具体的にはExampleクラスのデストラクタで他のクラス、
この場合hashValueが参照を持つArrayクラスの後処理を書いたらいかんということ。
マネージドだけの場合は基本的にKeepAliveのことは考えなくてよい。
0539デフォルトの名無しさん
2008/05/27(火) 16:57:120540デフォルトの名無しさん
2008/05/27(火) 17:11:04ファイナライズメソッドの実行順序には何の保証もないという話。
だと思うけどリンク先見てないから確かなことは分からん。
0541デフォルトの名無しさん
2008/05/27(火) 17:11:27メンバに参照型を持つ場合でも、オブジェクトとして独立してるので
デストラクタが動くタイミングやメモリが回収されるタイミングは不順。
順番が必要な場合はDispose(true)のパターンを使う。
0542デフォルトの名無しさん
2008/05/27(火) 17:13:17解放された後っていうか自分で解放してんじねーかよw
って話だったかも…
0543デフォルトの名無しさん
2008/05/27(火) 17:48:04半年ROMれ。
0544デフォルトの名無しさん
2008/05/27(火) 18:08:24それはない
0545デフォルトの名無しさん
2008/05/27(火) 19:47:370546デフォルトの名無しさん
2008/05/27(火) 21:16:530547デフォルトの名無しさん
2008/05/28(水) 00:24:52フォームを2つ使うアプリを作っています。
メニューはメイン側にはありますが、サブ側は何もありません。
で、サブ側にフォーカスがある時に、メイン側のメニューのショートカットを叩いても、
フォーカスがサブ側にあるため、イベントが発動してくれません。
出来ればこのショートカットを共有したいと思っています。
サブ側でもOnKeyDownなんかで同じ関数を呼ぶようにすれば可能といえば可能ですけれど、
あまりにも美しくないなと思ってます。何か上手い方法は無いでしょうか?
0548デフォルトの名無しさん
2008/05/28(水) 00:38:50ルートのフォームまでで処理されなかったイベントがアプリケーションのハンドルで処理されるというのが正しい形だと思う。
0549デフォルトの名無しさん
2008/05/28(水) 00:47:270550デフォルトの名無しさん
2008/05/28(水) 00:50:05>>548
そもそもメインのフォームでイベントを処理している、ってのがおかしいってことですかね?
メインにしろサブにしろ、フォームはイベントを発行するだけで、
その実際の処理はアプリケーション級のオブジェクトがハンドルするわけですか。
0551デフォルトの名無しさん
2008/05/28(水) 07:35:330552デフォルトの名無しさん
2008/05/28(水) 11:10:54最初に起動された方に渡したいです。
ttp://dobon.net/vb/dotnet/process/checkprevinstance.html
ここにVB.NETでのやり方が書いてあり、C#でも似たようなことは出来ると思ったんですが
Microsoft.VisualBasic.ApplicationServices
これが存在しないエラーというが発生しました。
C#だと別のプロセスにデータを渡したりって事が無理なんでしょうか?
0553デフォルトの名無しさん
2008/05/28(水) 11:20:520554デフォルトの名無しさん
2008/05/28(水) 11:21:180555デフォルトの名無しさん
2008/05/28(水) 11:31:31>>554
参照追加したらありました。
たんにusingを記述するだけじゃダメだったんですね。
これでなんとかなりそうです。
ありがとうございました。
0556デフォルトの名無しさん
2008/05/28(水) 11:37:44ここでも聞いてるやついるな。
当たり前すぎて書かないからなー、普通。
0557デフォルトの名無しさん
2008/05/28(水) 14:13:090558デフォルトの名無しさん
2008/05/28(水) 19:16:030559デフォルトの名無しさん
2008/05/28(水) 19:17:310560デフォルトの名無しさん
2008/05/28(水) 21:55:060561デフォルトの名無しさん
2008/05/28(水) 22:15:37っていうかSystem.Arrayなんかそんなによく使うか?
IList使えよ
0562デフォルトの名無しさん
2008/05/28(水) 22:20:42依存した最適化がかかってるからだ、
ってどっかにあった希ガス。
0563デフォルトの名無しさん
2008/05/29(木) 10:14:13C#では初期化以外にもメソッド呼び出したり処理を始めちゃってもいいの?
0564デフォルトの名無しさん
2008/05/29(木) 10:15:320565デフォルトの名無しさん
2008/05/29(木) 10:30:200566デフォルトの名無しさん
2008/05/29(木) 10:51:19C#では出来るよ
0567デフォルトの名無しさん
2008/05/29(木) 11:03:33してもいいけど、内容によっては立ち上がりが異常に時間がかかるプログラムになる。
その場合、最小限の初期化コンストラクタとクラス初期化メソッドを作る場合もある。
0568デフォルトの名無しさん
2008/05/29(木) 11:53:48そのためのサンプルとか無いでしょうか?
具体的には
フォームにメニューがいくつかあって
ツールボックスがあって
左側にはエクスプローラ的な表示があって
下側にはテキストのログウィンドウがあって
残りの領域にはMDIの子フォームを生成するようなGUIです。
いかがでしょうか。
0569デフォルトの名無しさん
2008/05/29(木) 14:01:250570デフォルトの名無しさん
2008/05/29(木) 14:09:140571デフォルトの名無しさん
2008/05/29(木) 14:14:20試してあげるから
0572デフォルトの名無しさん
2008/05/29(木) 17:24:150573デフォルトの名無しさん
2008/05/29(木) 18:41:080574デフォルトの名無しさん
2008/05/29(木) 18:43:22すげーなこれw
0575デフォルトの名無しさん
2008/05/29(木) 19:49:33凄いが、これを駆使したプログラムを少人数で作る気になれない。
0576デフォルトの名無しさん
2008/05/29(木) 20:04:01made in Japan!
0577デフォルトの名無しさん
2008/05/29(木) 21:52:40WPF版がほしい。
0578デフォルトの名無しさん
2008/05/29(木) 22:24:21お前はこっち池カス
WPF(XAML,XBAP,.NET3.5)GUIプログラミング
http://pc11.2ch.net/test/read.cgi/tech/1211453941/
0579デフォルトの名無しさん
2008/05/30(金) 05:22:08Win32APIのCreatePipe, WriteFile, ReadFileを用いてプロセス間通信をしようとしています
このとき、立ち上げた子プロセスはコマンドを標準入力から読み込みんで処理をし、
結果を標準出力へコマンドごとに出力し、入力にEOFが来たら終了、みたいなプログラムです
ここで、子プロセスがEOFを認識してくれず、子プロセスが終了してくれません
なにかいい方法があるのでしょうか?
それともWin32APIの質問ということでよその板の方がいいでしょうか?
やっていること:
ハンドルを用意
親プロセスが無名パイプを作成する
パイプの一端のハンドルAを継承可能にする
STARTUPINFO構造体のhStdInputに継承可能にしたパイプのハンドルAを指定
CreateProcess()
継承可能にしたパイプのハンドルAを閉じる
パイプの閉じていない方のハンドルBにWriteFile()
ハンドルBを閉じる ←ここで子プロセスに終了してもらいたい
よろしくお願いします
0580デフォルトの名無しさん
2008/05/30(金) 06:02:320581デフォルトの名無しさん
2008/05/30(金) 06:08:55C#でパイプをやるためにWin32APIを使うことにしました
0582デフォルトの名無しさん
2008/05/30(金) 06:18:59Process.StandardInput
この辺使う
0583デフォルトの名無しさん
2008/05/30(金) 06:59:47他プロセスの標準入出力を通した通信は明示的なパイプ以外に用意されていたのですね
自分で調べてた限りでは見つかってなかった情報なのでとても助かりました
試してみます
ありがとうございました
0584デフォルトの名無しさん
2008/05/30(金) 10:37:20このようにファイルの最終更新時間を取得すると、
そのファイルのプロセスが使用中のままになるのですが、
CloseやDisposeのようにすぐに開放させるにはどうすればいいのでしょうか?
0585デフォルトの名無しさん
2008/05/30(金) 11:06:440586584
2008/05/30(金) 11:10:07File.GetLastWriteTimeのせいじゃありませんでした。
File.GetLastWriteTimeタンごめんんささい。
0587File.GetLast
2008/05/30(金) 22:49:580588デフォルトの名無しさん
2008/05/31(土) 00:36:30| 問 1
|(ア) (イ) (ウ) (エ) (オ)
|�D �D �D �D �D
|�C �C �C �C �C
|�B �B �B �B �B
|�A �A �A �A �A
|�@ �@ �@ �@ �@
0589デフォルトの名無しさん
2008/05/31(土) 00:37:340590579
2008/05/31(土) 05:59:48ちょっとはまった点としては、
改行コードをWriteしてもフラッシュされない
→出力がほしい時はちゃんとフラッシュ
子プロセスのStdinに対するエンコーディングはProcessStartInfoから設定できない
→StandardInput.BaseStreamを取得して新しくStreamWriterを作る
ぐらいでした
当初の問題だったEOF云々は、Process.StandardInputのストリームを閉じると
問題なく処理されました
求めていた処理を考えていたやりかたよりずっと簡単に得られたので大満足です
0591デフォルトの名無しさん
2008/05/31(土) 17:29:19VisualC#のデバッグモードで動かしていると、画面上の指定部分をキャプチャする関数の中で使っている、Graphics.GetHdc()の部分で、
「ArgumentExceptionはハンドルされませんでした。 使用されたパラメータが有効ではありません」
のメッセージがでて止まってしまいます。10回に1回くらいの頻度かな。
ローカル画面で変数の値をチェックしても、キャプチャ範囲に異常な値は無く(bmpのサイズなど正常)、何でこうなるのか心当たりがありましたら指摘してもらないでしょうか。
#複数の呼び出し元から、この関数が同時に呼び出されているときにこんなことおこるのかな・・・?
ちなみに、キャプチャやってる関数を下に貼り付けてみます。
-----------
public Bitmap CapturePartFromA(int[] capval)
{
//capval[] はキャプチャ範囲を収めた配列。ここでは[3]と[4]のみ利用
Bitmap bmp;
//座標系を変換する関数の戻り値保存用
int[] xxx = new int[4] { 0, 0, 0, 0 };
IntPtr hWnd = FindWindow("A Game", null);
RECT winRect2 = new RECT();
GetWindowRect(hWnd, ref winRect2);
//座標を変換する関数(クライアントの原点←→デスクトップの原点)
xxx = ConvertCoordinates(capval);
bmp = new Bitmap(capval[3], capval[4]);
Graphics g = Graphics.FromImage(bmp);
IntPtr hDC = g.GetHdc(); //←ここで 例外頻発
IntPtr winDC = GetDC(hWnd);
BitBlt(hDC, 0, 0, bmp.Width, bmp.Height, winDC, xxx[0], xxx[1], SRCCOPY);
g.ReleaseHdc(hDC);
g.Dispose();
ReleaseDC(hWnd, winDC);
return bmp;
}
0592デフォルトの名無しさん
2008/05/31(土) 17:44:08チートスレ池
0593デフォルトの名無しさん
2008/05/31(土) 19:41:13こんな所に来るな。
0594デフォルトの名無しさん
2008/05/31(土) 22:52:580595デフォルトの名無しさん
2008/06/01(日) 15:20:56評:もっとオブラートに包んだ質問のやりかたを覚えましょう。
0596デフォルトの名無しさん
2008/06/01(日) 19:22:520597デフォルトの名無しさん
2008/06/01(日) 19:27:520598デフォルトの名無しさん
2008/06/01(日) 19:48:59誰かできた人いる?
UserAgentとかいじってもなぜかはじかれる。
同じアプリでほかのhttpsサイトとかはログインできるんだけどなぁ。
0599デフォルトの名無しさん
2008/06/01(日) 20:02:320600591
2008/06/01(日) 20:49:22自助努力するしかないですね。
どうもでした。
0601デフォルトの名無しさん
2008/06/01(日) 20:49:250602デフォルトの名無しさん
2008/06/01(日) 22:21:28しているのですが。漢字が正しく表示できません。何かのコード指定だと思うのですが、
探してみたのですが見つからず。よろしければ教えてください。
C++の手順
WSAStartup(MAKEWORD(2,0), &wsaData);
sock = socket(AF_INET, SOCK_DGRAM, 0);
addr.sin_family = AF_INET;
addr.sin_port = htons(XXXXX); // 送信先のポート番号
addr.sin_addr.S_un.S_addr = inet_addr("XXXXXXXX"); // 送信先のIP
sendto(sock, str2.c_str(), str2.size(), 0, (struct sockaddr *)&addr, sizeof(addr));
closesocket(sock);
WSACleanup();
必要であればC#受け側も出します。
ちなみにc++側のプロジェクトの文字コードを有る分変えても変わりませんでした。
0603デフォルトの名無しさん
2008/06/01(日) 22:25:330604デフォルトの名無しさん
2008/06/01(日) 22:26:42大方StreamReaderをEncoding未指定でnewしてんだろ
0605デフォルトの名無しさん
2008/06/01(日) 22:32:39思いのほかはまるよ。
0606デフォルトの名無しさん
2008/06/01(日) 22:33:57サーバー側のエラーで帰ってきてログイン不可能。
エラーコードが書いてあるけど、意味がわからないので対応が難航してる。
0607デフォルトの名無しさん
2008/06/01(日) 22:36:26そのエラーコードを書けってことじゃないのか?
イミが分からないとか、技術ある人は作ってみ?とか
根本的にダメダメwww
0608デフォルトの名無しさん
2008/06/01(日) 22:38:180609デフォルトの名無しさん
2008/06/01(日) 22:40:27オマエには無理って事で終了
0610デフォルトの名無しさん
2008/06/01(日) 22:42:59マニュアルある人ならわかるかもしれん。
今ゆうちょダイレクトメンテ中でエラーコード再取得できなかった。
0611デフォルトの名無しさん
2008/06/01(日) 22:43:26お前には聞いてないってw
0612デフォルトの名無しさん
2008/06/01(日) 22:45:14enc = System.Text.Encoding.UTF8;
// enc = System.Text.Encoding.Unicode;
// enc = System.Text.Encoding.BigEndianUnicode;
localPort = XXXXX;
udp = new System.Net.Sockets.UdpClient(localPort);
コメント部分を追加してみましたが変えましたが、半角英数もまともに表示できなかったです。
元々はUTF8でした。 何がいけないのだろう?
0613デフォルトの名無しさん
2008/06/01(日) 22:45:510614デフォルトの名無しさん
2008/06/01(日) 22:47:030615デフォルトの名無しさん
2008/06/01(日) 22:50:06ここで聞く前に、先ず質問の仕方を勉強してきてね
0616デフォルトの名無しさん
2008/06/01(日) 22:51:200617デフォルトの名無しさん
2008/06/01(日) 22:52:55キメェw
0618デフォルトの名無しさん
2008/06/01(日) 22:55:16どこでひっかかってるの?
今確認しようとしたら、ちょうどサービス停止中だな。
0619デフォルトの名無しさん
2008/06/01(日) 23:03:10System.Net.Sockets.UdpClient udp;
private Button button1;
System.Text.Encoding enc;
enc = System.Text.Encoding.UTF8;
// enc = System.Text.Encoding.UTF7;
// enc = System.Text.Encoding.ASCII;
// enc = System.Text.Encoding.Unicode;
// enc = System.Text.Encoding.BigEndianUnicode;
localPort = XXXXXX;
udp = new System.Net.Sockets.Udp
System.Net.IPEndPoint remoteEP = null;
byte[] rcvBytes = udp.Receive(ref remoteEP);
string rcvMsg = enc.GetString(rcvBytes);
udp.Close();
バッファーを見たら、シフトJISが送られてくるようでした。
わからない…orz
0620デフォルトの名無しさん
2008/06/01(日) 23:05:29udp = new System.Net.Sockets.UdpClient(localPort);
0621デフォルトの名無しさん
2008/06/01(日) 23:08:290622デフォルトの名無しさん
2008/06/01(日) 23:11:500623デフォルトの名無しさん
2008/06/01(日) 23:17:29IDない板だから、釣りや煽りに反応するのはやめましょう。
質問者の暴言は、たいてい騙り。
もちろん、ときどきとんでもない質問者もいるが、いずれにせよ放置で。
0624デフォルトの名無しさん
2008/06/01(日) 23:19:150625デフォルトの名無しさん
2008/06/01(日) 23:23:40すみません、どの記号がどの文字コードかの知識が不足しています。orz
0626デフォルトの名無しさん
2008/06/01(日) 23:55:123人くらいで通報すれば目付けられるから
0627デフォルトの名無しさん
2008/06/02(月) 01:27:360628デフォルトの名無しさん
2008/06/02(月) 06:31:070629デフォルトの名無しさん
2008/06/02(月) 06:59:26出来ましたありがとうございます。
0630デフォルトの名無しさん
2008/06/02(月) 08:16:510631デフォルトの名無しさん
2008/06/02(月) 12:59:43お騒がせしました。
0632デフォルトの名無しさん
2008/06/02(月) 13:09:14>>615
0633デフォルトの名無しさん
2008/06/02(月) 13:35:310634デフォルトの名無しさん
2008/06/02(月) 13:39:210635デフォルトの名無しさん
2008/06/02(月) 15:04:41いや、頭だろ・・・
0636デフォルトの名無しさん
2008/06/02(月) 17:46:07意外とはまるからやってみぐらいの勢いだったんだが。
それを勘違いしたこまったちゃんが質問の仕方が悪いだの、態度が悪いだのってこんな匿名掲示板で言われてもなw
0637デフォルトの名無しさん
2008/06/02(月) 17:48:37ヨチヨチwww
0638デフォルトの名無しさん
2008/06/02(月) 17:51:25明らかに誰か作って教えてくれってスタンスだったけどなw
ヨチヨチwww
0639デフォルトの名無しさん
2008/06/02(月) 17:55:30興味なかったらいいけど。
0640デフォルトの名無しさん
2008/06/02(月) 19:57:56嵌るとかは単純に質問者の技術力不足だと思う
0641デフォルトの名無しさん
2008/06/02(月) 20:16:54俺はそもそも技術者じゃないから技術力不足は認めるよ。
ネットショップを経営しててそれに必要な入金チェックをちょっと作ってみようかなって思っただけだし。
0642デフォルトの名無しさん
2008/06/02(月) 20:24:42無理にC#を使う必要性はない。
0643デフォルトの名無しさん
2008/06/02(月) 20:32:460644デフォルトの名無しさん
2008/06/02(月) 20:35:080645デフォルトの名無しさん
2008/06/02(月) 20:36:300646デフォルトの名無しさん
2008/06/02(月) 20:47:33Python調べてみよう。Excelファイルいじくれるライブラリもあるといいけど。
C#始めて1ヶ月だけどフリーで開発環境まで全部まとめてインストールできるのが楽ではじめたんだよね。
今度は今手作業で集計してるバイトの勤怠管理でも作ってみるか。
0647デフォルトの名無しさん
2008/06/02(月) 21:08:480648デフォルトの名無しさん
2008/06/02(月) 21:21:13ゆうちょに粘着している奴が悪くしてんじゃね?
0649デフォルトの名無しさん
2008/06/03(火) 00:14:43ヨチヨチwww
0650デフォルトの名無しさん
2008/06/03(火) 00:21:490651デフォルトの名無しさん
2008/06/03(火) 00:52:270652デフォルトの名無しさん
2008/06/03(火) 02:16:25ListViewのdetail表示時に行間を広くするにはどうしたらいいのでしょうか?
0653デフォルトの名無しさん
2008/06/03(火) 02:42:12出来なかったらごめん。
0654デフォルトの名無しさん
2008/06/03(火) 09:19:230655デフォルトの名無しさん
2008/06/03(火) 12:20:340656デフォルトの名無しさん
2008/06/03(火) 13:35:14>初心者スレで同様の質問をしたのですが、相手にされなかったのでこちらで再度お聞きします。
馬鹿じゃないの?
まじめな話。
0657デフォルトの名無しさん
2008/06/03(火) 14:07:08クリックされた箇所に丸印を描画するようなプログラムを作るとしたとき。
Click()イベントで、クリックされた箇所を記憶し
Invalidate()でPaint()イベントを呼び出してクリックされた箇所を描画する。
という動きになるのでしょうか?
0658デフォルトの名無しさん
2008/06/03(火) 15:01:120659デフォルトの名無しさん
2008/06/03(火) 15:19:56UserControlじゃなくて、ただのControlからの継承でいい。
0660デフォルトの名無しさん
2008/06/03(火) 17:57:36>>659
どうもありがとうです。
ところで、趣旨が変わるんですが
折れ線(複数)グラフを書きたいのです。
ひとつの表示窓に複数のラインを書きたいのです。
そのライン単位でオブジェクトにしたいのですが、
(1)そのラインオブジェクトはControlから派生させて自分でライノブジェクト自身で描画させるべきでしょうか。
(2)それとも単なる(Control派生ではなく)オブジェクト化して、親表示窓Controlに個別に描画ルーチンを呼ぶ形にするべきでしょうか?
一般的にどうなのかなと思いまして。
(1)だったら、表示窓側の親オブジェクトは特に何も考えずに子が思いのままに描画する。
と思っていたのですが、背景処理が手間かと思えてきました。
子に当たるラインオブジェクトを描画すると親部分を上書きするからです。
リージョンを切れば親の描画部分を塗りつぶさなくても描けそうですが、折れ線なのでPATHが複雑になりすぎるかと思います。
(2)だったら特に背景塗りつぶし過ぎに関しては何も考えなくてよいのですが、
Paintルーチンで子オブジェクトにGrapicsオブジェクトを渡すサブルーチンコール形式になると思うのですが、なんだか嫌なのです。
一般的にこういうことをやりたい場合にはどうしますか?
変なことを言っているようだったら指摘してください。
0661デフォルトの名無しさん
2008/06/03(火) 18:02:280662デフォルトの名無しさん
2008/06/03(火) 19:57:030663デフォルトの名無しさん
2008/06/03(火) 20:56:090664デフォルトの名無しさん
2008/06/03(火) 21:37:460665デフォルトの名無しさん
2008/06/03(火) 21:39:160666デフォルトの名無しさん
2008/06/03(火) 22:37:230667デフォルトの名無しさん
2008/06/03(火) 22:45:33ZedGraphとかNplotを仕事(商用)として使ってる人いますか?
0668デフォルトの名無しさん
2008/06/03(火) 23:25:12面倒だね。
0669デフォルトの名無しさん
2008/06/04(水) 00:59:590670デフォルトの名無しさん
2008/06/04(水) 01:18:500671660
2008/06/04(水) 10:13:48ZenGraphとかNplotとかあるんですね。
これらを使うかどうかはともかく、これらの実装を参考にさせてもらいます。
どうもありがとう。
0672デフォルトの名無しさん
2008/06/04(水) 20:17:36Man,Woman,Noneを考えます。
Man,Woman,NoneはPersonクラスのstaticなメソッドを介して生成されるものとします。
Man,Woman,Noneのコンストラクタのアクセシビリティをそれぞれ
public,protected,privateにしております。
publicなManは生成されます。
protectedなWoman,privateなNoneは生成できません。
こういうときはコンストラクタのアクセシビリティをinternalにすればいいようです。
こういうinternalの使い方は正しいでしょうか?
0673デフォルトの名無しさん
2008/06/04(水) 20:20:56単一プロジェクトなら無意味
0674デフォルトの名無しさん
2008/06/04(水) 20:29:340675デフォルトの名無しさん
2008/06/04(水) 20:49:20やりたいこととは違うと思うがクラス自体を見えなくすればコンストラクタの隠蔽は不要になる。
public enum PersonType { Man, Woman, None };
public class Person {
public static Person GetInstance(PersonType x) {
switch (x) {
case PersonType.Man: return new Man();
case PersonType.Woman: return new Woman();
default: return new None();
}
}
private class Man : Person { public Man() {} }
private class Woman : Person { public Woman() {} }
private class None : Person { public None() {} }
}
class Startup {
static void Main() {
Person man = Person.GetInstance(PersonType.Man);
Person woman = Person.GetInstance(PersonType.Woman);
Person none = Person.GetInstance(PersonType.None);
}
}
0676デフォルトの名無しさん
2008/06/04(水) 20:53:360677デフォルトの名無しさん
2008/06/04(水) 20:56:410678デフォルトの名無しさん
2008/06/04(水) 21:22:410679デフォルトの名無しさん
2008/06/04(水) 21:31:51主にテスト用途だけどFriend Assemblyってのがある。
通常はprivateな型やメソッドをテストするのに使う。
0680デフォルトの名無しさん
2008/06/04(水) 21:57:45コレって変だと思うのはオレだけ?
0681デフォルトの名無しさん
2008/06/04(水) 22:03:44Comparer<T>.Defaultとか例を挙げたらキリがない
0682デフォルトの名無しさん
2008/06/04(水) 22:10:23Stream.Null(実際の型はStream+NullStream)とか
0683デフォルトの名無しさん
2008/06/04(水) 23:40:00君だけではないよ。
Factoryってこうやらないだろ?
0684デフォルトの名無しさん
2008/06/04(水) 23:59:22一応MS的にはこういうのも「ファクトリメソッド」と呼ぶらしい
0685デフォルトの名無しさん
2008/06/05(木) 00:09:09GetEnumerator()の実装例でyield returnを使わないケースで内部クラスを使っている
なおC#の内部クラスはJavaのstaticな内部クラスと同等だから誤解のないよう
0686デフォルトの名無しさん
2008/06/05(木) 01:55:39気持ち悪い。
0687デフォルトの名無しさん
2008/06/05(木) 03:35:19ただ、拡張可能なようにBuilderやStrategyパターンで作ってゆくと、
クラスやインターフェイスの数がすごいことになるから過剰な汎用化には反対したい。
0688デフォルトの名無しさん
2008/06/05(木) 04:39:40皆さんはC#とかってどうやって勉強してるんですか?
こないだはじめたんだけど、資料が少なくて、学習がすすみません。
いい勉強法とかオススメの書籍があれば教えてください。
ちなみに今は実際にソフトウェア作ってみて、わからないことがあったら調べて・・・って感じです。
0689デフォルトの名無しさん
2008/06/05(木) 07:52:470690デフォルトの名無しさん
2008/06/05(木) 08:05:320691デフォルトの名無しさん
2008/06/05(木) 08:47:31の質問とかぶると思うのですが。
オープンなC#ソースでストラテジーパターンを実現しているらしき所を見かけたので、
newのコストについて教えてください。
【ソース概要】
・クラスConcreteAとConcreteBは同じParentStategyクラスの派生。
・それぞれのクラスには違う条件でこの方法で状態遷移する。
void override update(){
・・・
if(hoge<hage)
{parentStategyInstance = new ConcreteA()}
else
{parentStategyInstance = new ConcreteB()}
・・・
}
・update()は頻繁に発生する。
・各コンストラクタはメンバを一つ更新する一行のみ。
・ガベコレでメモリ使用量のコストが無いことは解ったつもり。
C++ならキャスト一択の所と思うのですが、JITのおかげでこの書き方が
実は最高にスマートって事になっちゃいないか知りたいんです。
※JITのおかげさまで、簡単にベンチテストが作れない事が問題なんです><
※オブラートに包んだ所にミソがありそうなら、どんどん公開します。 O!S!I! O!S!I!
0692デフォルトの名無しさん
2008/06/05(木) 09:07:150693デフォルトの名無しさん
2008/06/05(木) 09:08:560694デフォルトの名無しさん
2008/06/05(木) 09:14:220695デフォルトの名無しさん
2008/06/05(木) 09:19:380696デフォルトの名無しさん
2008/06/05(木) 09:27:05私もそう言う事が聞きたかったので、ありがとうございました。
是非参考になるサイトをご紹介頂きたくお願い致します。 m(_ _)m
0697デフォルトの名無しさん
2008/06/05(木) 09:28:56ドローイングエリアをうまくクリックしてくれません。
どなたか、どうすればいいのか教えていただけませんでしょうか?
[StructLayout(LayoutKind.Sequential)]
public struct RECT {
public int left;
public int top;
public int right;
public int bottom;
}
const uint WM_LBUTTONDOWN = 0x201;
const uint WM_LBUTTONUP = 0x202;
public void RemotePaint() {
IntPtr hWnd;
string sClassName = "MSPaintApp";
string sWindowText = null;
sClassName = "AfxFrameOrView42u";
sWindowText = null;
hWnd = FindWindowEx(hWnd, IntPtr.Zero, sClassName, sWindowText);
SetForegroundWindow(hWnd);
RECT winRect = new RECT();
GetWindowRect(hWnd, ref winRect);
System.Threading.Thread.Sleep(1000);
PostMessage(hWnd, WM_LBUTTONDOWN, 100, 100);
System.Threading.Thread.Sleep(500);
PostMessage(hWnd, WM_LBUTTONUP, 100, 100);
}
0698デフォルトの名無しさん
2008/06/05(木) 10:39:13サブクラスのコンストラクタが動く前に
オーバーライドされた仮想関数が呼び出されるわけで
ちょっと気持ち悪いですね。
0699デフォルトの名無しさん
2008/06/05(木) 10:41:09あまりにも頻繁にUpdateが呼ばれるならやや効率は悪いだろうな。
でも多分誤差レベル。
大抵ほかの処理でそれ以上にメモリ使ってるだろうから。
ただ、作りとしてはぱっとしないな。
0700デフォルトの名無しさん
2008/06/05(木) 11:18:52ぶっちゃけそこなんです。
上の話の終わり方だと、ConcreteAとConcreteBを継承した大きなクラスを作って
処理部分だけ、switchかdelgate型で置き換え可能にする。
・JITはswitchが強いってことは何処までか?
・一つの処理がどの程度長いとdelgate型が有利になるか?
でバッチテストが作れるなと思ってました。
っていうか、そういうテストした人の本や社員のサイトがあっても良いなと。
これも「ぱっとしないな」と思ってくれたら、むしろ愉快なんですけどね。
あと
>大抵ほかの処理でそれ以上にメモリ使ってるだろうから。
は
私の
>・ガベコレでメモリ使用量のコストが無いことは解ったつもり。
への返事でそんなに深い意味は無いですよね?
※最大メモリ使用量より速度優先
※速度ねらいで、ConcreteA、ConcreteBに変数名の重複を許さないぐらい程度は妥協範囲。
0701デフォルトの名無しさん
2008/06/05(木) 11:22:090702デフォルトの名無しさん
2008/06/05(木) 11:25:280703デフォルトの名無しさん
2008/06/05(木) 11:32:07delegateは捨てましょう。
…C的には、関数ポインタよりnewが早i(ry
JITのnewまわりの最適化を見られれば、それでも疑問は解決できます。
0705デフォルトの名無しさん
2008/06/05(木) 11:45:56ミスリードです>< すいません。
最初に戻ると、元parentStategyInstanceを持ってるクラスを作った時に、
デリゲート型のオブジェクトをnewできます。
あとは
if(hoge<hage)
{exceDelege = ConcreteAexceDelege}
else
{exceDelege = ConcreteBexceDelege}
あと、
>※速度ねらいで、ConcreteA、ConcreteBに変数名の重複を許さないぐらい程度は妥協範囲。
これ、 ConcreteA、ConcreteBでずらずら並んで、20個ぐらいあったら一気に話が不毛になるな。('A`)
0706デフォルトの名無しさん
2008/06/05(木) 11:51:10if(hoge<hage)
{exceDelege = ConcreteAexceDelege}
else
{exceDelege = ConcreteBexceDelege}
よりも >702は
if(hoge<hage)
{exceDelege = new exceDelegater(ConcreteAexce)}
else
{exceDelege = new exceDelegater(ConcreteAexce)}
0707デフォルトの名無しさん
2008/06/05(木) 12:05:13未割り当て領域へのポインタをオブジェクトサイズ分進めるだけだぞ。
もちろん頻繁にnewすればGC起動の機会を与えることになるから、
パフォーマンスを気にするならインスタンスのキャッシュは基本ではあるが。
0708691
2008/06/05(木) 12:34:44>696 >700-701 >703 >705-706
まで私ですね。
>ConcreteA、ConcreteBでずらずら並んで、20個ぐらい
は失言でしたが、>707にはそこまで考慮して貰ってありがとうございます。
「インスタンスのキャッシュは基本」
これを確認出来て良かったです。
ソースの出所が良い所ぽかったので、>704みたいな事は無いか色々勘ぐったんです。
<ちら裏>
switchしかりnewも、CLRやJITの最適化って非線形で決めてナシなんだな。
皆さん好きですか?
私は、規模が変わるたびにバッチテスト・ベンチマークテストする事になりそうで('A`)
0709デフォルトの名無しさん
2008/06/05(木) 12:51:30そんな細かい話ではない。
0710デフォルトの名無しさん
2008/06/05(木) 12:53:58どこででた話?
それかひょっとして非常に使用頻度の低いデリゲートの話?
0711デフォルトの名無しさん
2008/06/05(木) 12:56:14毎日好きな言語で遊んで、顧客が限定してきた時だけC#って奴と差がないじゃん。
0712デフォルトの名無しさん
2008/06/05(木) 13:03:290713デフォルトの名無しさん
2008/06/05(木) 13:05:09何のことを言ってるんだ?
0714デフォルトの名無しさん
2008/06/05(木) 13:06:11>そんな細かい話
って言い捨てること。
0715デフォルトの名無しさん
2008/06/05(木) 13:18:25プロならコストと効率を考えて、大して効果の上がらない箇所の最適化に
拘って労力を注ぐくらいなら、もっと他にすることがあるだろうと思うがな
そういうところをいじくり倒せるのはむしろ趣味で遊んでる奴のほうじゃね
0716デフォルトの名無しさん
2008/06/05(木) 13:25:04>プロならコストと効率
そりゃどの言語でもそうだよ。
話をループさせてることに気付いてる? 会話下手?
俺は優しいから"C#でのコストと効率"の経験って解釈してあげるよ。
0717デフォルトの名無しさん
2008/06/05(木) 13:28:38煽る以外に言い返す言葉が見つからないならレスするなよ
0718デフォルトの名無しさん
2008/06/05(木) 13:33:190719デフォルトの名無しさん
2008/06/05(木) 13:46:50whileで最後まで読んで、もう一度whileで読みたいのですが、
どうすればいいんでしょうか。
0720デフォルトの名無しさん
2008/06/05(木) 13:52:18こういうこと?
streamReader.BaseStream.Seek(0, SeekOrigin.Begin);
0721デフォルトの名無しさん
2008/06/05(木) 13:54:51アウトラインのことなら、編集 - アウトラインで
0723デフォルトの名無しさん
2008/06/05(木) 14:16:28そんな細かい話を気にする必要があることだってあるが、
現実には引っかかるのはもっと別のところであることがほとんど。
もっと気をつけるべきとこは他にいっぱいある。
ってだけの話、無意味とは言わん。
0724デフォルトの名無しさん
2008/06/05(木) 14:19:08俺、>709って初見じゃないもん。 定期的に湧く厨だと思った。
0725デフォルトの名無しさん
2008/06/05(木) 14:19:37だから処理効率より設計の方を重視する方がいい、ほとんどの場合は。
0726デフォルトの名無しさん
2008/06/05(木) 14:24:24誰かさんはこの程度でベンチテスト毎回やるんだと言ってるから相当優先度が高いんだろ
解ってるとは思えん
0727デフォルトの名無しさん
2008/06/05(木) 14:29:50どうやら読み込みに失敗している環境があるらしいのです。
if (File.Exists(Directory.GetCurrentDirectory() + "\\" + "data.xml") == true)
{
Type[] et = new Type[] { typeof(Data) };
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(ArrayList), et);
using (System.IO.FileStream fs = new System.IO.FileStream(Directory.GetCurrentDirectory() + "\\" + "data.xml", System.IO.FileMode.Open))
{
DataList = (ArrayList)serializer.Deserialize(fs);
}
}
そこでまず、本当にXMLファイルの読み込みに失敗しているのかメッセージボックスでチェックしたいのですが、
try
{
using (System.IO.FileStream fs = new System.IO.FileStream(Directory.GetCurrentDirectory() + "\\" + "data.xml", System.IO.FileMode.Open))
{
DataList = (ArrayList)serializer.Deserialize(fs);
}
}
catch
{
MessageBox("読み込み失敗");
}
こんな風に書いちゃってもいいのでしょうか?
0728デフォルトの名無しさん
2008/06/05(木) 14:32:37だいたい、その辺りにC#の用途の向き不向きボーダーラインがあるんかな。
More Effective C++みたいなイメージでは不毛と。
0729デフォルトの名無しさん
2008/06/05(木) 15:00:24肝心の例外情報握り潰したら話にならんだろ
つか今時CurrentDirectoryかよ
0730デフォルトの名無しさん
2008/06/05(木) 15:02:22try .. catchのヘルプに戻ろう。
0731デフォルトの名無しさん
2008/06/05(木) 15:35:17まさかレジストリやマイドキュメントに保存するのか?W
0732デフォルトの名無しさん
2008/06/05(木) 15:39:090733デフォルトの名無しさん
2008/06/05(木) 15:46:27カレントは起動方法によって変わるから問題だろ
元々そういう仕様なら関係ないけど
0734デフォルトの名無しさん
2008/06/05(木) 15:46:320735デフォルトの名無しさん
2008/06/05(木) 15:49:56そこは
throw; //スルー
だろ。
俺は敗者だ。 だけどなんかスッキリした。
質問者おいてこぼりだが、確かに>728の模範解答は期待。
0736727
2008/06/05(木) 15:54:41usingステートメントをtryで囲んでもいいのかな?と思ったのです。
読み込み失敗時の例外情報はヘルプでFileStreamを調べたのですが例外の種類がわかりませんでした。
例外の種類はどうやって調べたらいいんでしょうか?
0737デフォルトの名無しさん
2008/06/05(木) 16:00:52起きる例外はMSDNに載ってると思うけど。
0738デフォルトの名無しさん
2008/06/05(木) 16:13:54try
{
using (System.IO.FileStream fs = new System.IO.FileStream(Directory.GetCurrentDirectory() + "\\" + "data.xml", System.IO.FileMode.Open))
{
DataList = (ArrayList)serializer.Deserialize(fs);
}
}
catch(System.Exception e)
{
MessageBox(e.ToString());
}
としましたが、usingをtryで囲ってもいいのかが知りたいです。
0739デフォルトの名無しさん
2008/06/05(木) 16:15:360740727
2008/06/05(木) 16:31:25usingステートメントって例外が起きた時にステートメント内のdisposeを保証してくれるんですよね。
なのでtry句が複雑にネストしてしまう気がしたからです。
例外が自分の環境でも再現出来ればいいのですが、
他人の環境なので再現できないので、メッセージボックスを仕組んで原因を調べようかなと思いました。
0741デフォルトの名無しさん
2008/06/05(木) 16:43:550742デフォルトの名無しさん
2008/06/05(木) 16:45:18try {
readonly System.IO.FileStream fs = new System.IO.FileStream("data.xml", System.IO.FileMode.Open);
try { DataList = (ArrayList)serializer.Deserialize(fs); }
finally { fs.Dispose(); }
} catch(System.Exception e) {
MessageBox(e.ToString());
}
usingではcatchしてないからDeserializeで例外が起きた場合は外側のtry-catchブロックが補足する。
問題になるとすればcatchの段階でまだ開いている状態のfsにアクセスしたい場合。
Deserializeとfs.Dispose()の両方で例外が起きた場合。
こういったことが気になるなら、usingを使わずtry-catch-finally構造に変える。
0743デフォルトの名無しさん
2008/06/05(木) 16:50:38コンソールアプリならカレントディレクトリは普通に使う。
GUIの場合は意味がない。
exeのあるディレクトリがカレントディレクトリであると考えているなら明らかに間違い。
Directory.GetCurrentDirectory() + "\\" + "data.xml",
この部分は余計。相対パスならカレントからの相対パスになるので
"data.xml"
だけでで十分。
0745デフォルトの名無しさん
2008/06/05(木) 17:21:07>Deserializeとfs.Dispose()の両方で例外が起きた場合。
キャッチされるのは後からの例外の方だったよね?
0746デフォルトの名無しさん
2008/06/05(木) 20:00:17フォーム上に画像を表示するプログラムを書きたいのですが、
イベントとして、フォームが表示されたと同時に描画したいのです。
このような場合、イベントはどのように記述すればよいのでしょうか。
もしくは、イベントを使わない方法があればそちらもご教授ください。
0747デフォルトの名無しさん
2008/06/05(木) 21:01:16GUIとは何の関係もないオブジェクトAが居ますが
デバッグ用途でGUIのとあるメッセージウィンドウに文字列を出力させたいとします。
オブジェクトAのようなGUIに無関係なオブジェクトが大量に居るような場面で
それらの出力文字列をGUIのとあるメッセージウィンドウに文字列を出力させたいわけですが。
どうやってそのオブジェクト達とメッセージウィンドウ間をインターフェイスさせればよいでしょうか?
Qtをちょこっと触ったことがあるのですが、その場合はsignal/slot機構を使って、わりと簡単に実現できたのですが
C#の場合はsignal/slotの代わりにeventを使うことになるかと思います。
eventの型となるdelegateをどこで宣言するかなぁ〜と考えるのですが、
どこにも宣言したくありません。
どうすればいいですか?
0748デフォルトの名無しさん
2008/06/05(木) 21:50:020749デフォルトの名無しさん
2008/06/05(木) 22:16:430750デフォルトの名無しさん
2008/06/05(木) 23:15:02逆に言えば、カレントディレクトリがexeのあるディレクトリであることを
プログラム側で保障すれば問題ないということでもある
まあ、その場合でも相対パス使うだろうから、
Directory.GetCurrentDirectory()は不要だけどな
0751デフォルトの名無しさん
2008/06/05(木) 23:18:57Open/Saveダイアログを使うとカレントディレクトリが動いたりしなかったっけ。
以前はまった記憶がある。
0752デフォルトの名無しさん
2008/06/05(木) 23:37:16自分はDelegate<Result,Param1>とか宣言しといて全部それつかってる。
おかげでFuncとどう整合性とろうか思案中だがなぁorz
0753デフォルトの名無しさん
2008/06/05(木) 23:42:080754デフォルトの名無しさん
2008/06/05(木) 23:59:490755デフォルトの名無しさん
2008/06/06(金) 00:05:31こんなの作っとけば
0756750
2008/06/06(金) 00:07:58確かに、FileDialog使うときは
RestoreDirectory = true
にしないとまずいな
てか、既定値がfalseとかありえん
0757デフォルトの名無しさん
2008/06/06(金) 00:48:22世の中そうもいかんこともあるのよ。
リモーティングとか。
0758デフォルトの名無しさん
2008/06/06(金) 01:29:58まさにこういう使い方をするために、宣言時に識別子を省略出来たらいいのに。
0759デフォルトの名無しさん
2008/06/06(金) 04:03:17それは知恵が足りないだけ。
できるよ。
0760デフォルトの名無しさん
2008/06/06(金) 07:08:25どうすればよいのでしょうか。
0761760
2008/06/06(金) 07:46:58Icon.Save()でバイナリデータを得て、それを分割した上でIconコンストラクタに与えればいいですね。
もっとスマートな方法がありそうな気もしますが、とりあえずそれでいきます。
0762デフォルトの名無しさん
2008/06/06(金) 09:30:470763747
2008/06/06(金) 12:09:04>>イベントハンドラはEventHandler<TEventArgs>使え
どうもです。
こういうのがあるんですね。
ただこれだとEventArgsカスタムクラスをどこかで定義しなければならないです。
EventArgsカスタムクラスに依存するのがなんだかシャクなんで。
たとえば
talkerインターフェイスを用意するとして
interface ITalkter{
public delegate void printf(string fmt,prams object[] args);
}
こういうことができたら、
ITalkerを継承したクラスを作ってしまえばそれでOKなんですけど
ITalkerインターフェイスに依存するのは納得できるんで。
ただ、interfaceでは型宣言出来ないらしく。。。
なんで出来ないんだろう。。。。
ちなみにtalkerは大量に居ます。
listenerは1個だけっていう想定。
何かいい方法はありませんか。
0764747
2008/06/06(金) 12:19:13public event void delegate(object sender,params object[] arg) printf;
のような感じで
名無しの型を宣言すると同時に変数定義みたいなことができたらそれだけでいいですね。
こういうことって可能なんでしょうか?
0765デフォルトの名無しさん
2008/06/06(金) 12:25:10string PrintString{ get; }
}
こうとか
interface ITalkter{
void Print(Action<string> print);
}
こうとか
interface ITalker{
void Print(IListener listener);
}
こうとかじゃだめなの?
0766デフォルトの名無しさん
2008/06/06(金) 12:46:170767デフォルトの名無しさん
2008/06/06(金) 13:27:34talkerの役割がよくわからないな。
実際に表示する部分なのか、それともメッセージを発行する元なのか?
それからdelegateをeventと1対1で作らなければいけないとか思ってないか?
0768デフォルトの名無しさん
2008/06/06(金) 14:49:41P/InvokeでExtractIconExとか。
0769デフォルトの名無しさん
2008/06/06(金) 17:41:02オブジェクトAの中に
public event Action<string, object> printf;
を実装する。
これならカスタムクラス使わんで済むでしょ。
0770デフォルトの名無しさん
2008/06/06(金) 23:54:33デリゲートを使うにはデリゲート型が事前に作成されている必要がある
また、匿名メソッドやラムダ式を使った場合でも、型が自動的に作成されることはない
なので、君がやりたいと考えていること(デリゲートを使用して云々)は恐らく不可能
まあ、本来の目的からすると、出力タイミングをGUI側で制御するなら>>765
オブジェクト側で制御するなら
interface ITalker {
void SetPrintCallback(Action<string> print);
}
もしくは
interface ITalker {
void SetListener(IListener listener);
}
>>769
void (object sender, T e) where T : EventArgs
に合致しないデリゲートをイベントにするのはやめれ
# MSのガイドラインなんて知らん、というなら止めはしないが
さらに言うと、
・デリゲート型の名前のサフィックスは EventHandler
・第2パラメータの型(上記 T)の名前のサフィックスは EventArgs
・2つのパラメータ名は上記の通り(sender, e)
0771デフォルトの名無しさん
2008/06/07(土) 00:33:510772デフォルトの名無しさん
2008/06/07(土) 00:55:010773デフォルトの名無しさん
2008/06/07(土) 06:58:460774デフォルトの名無しさん
2008/06/07(土) 07:01:030775デフォルトの名無しさん
2008/06/07(土) 07:01:240776デフォルトの名無しさん
2008/06/07(土) 07:03:46スレ一覧にListViewを使ってるんだ。
ListViewItemCollectionにAddRangeが無くてforeachでスレデータ回してアイテム作ってAddさせてるんだが
どうにも低速なんだ。
AddRangeの代わりになるものは回してAdd以外ないだろうか。
0777デフォルトの名無しさん
2008/06/07(土) 07:19:170778デフォルトの名無しさん
2008/06/07(土) 07:20:04やってる。
0779デフォルトの名無しさん
2008/06/07(土) 07:53:101000件くらいになりそうなときはVirtualModeにしてるけど、Compactじゃ使えないのか
0780デフォルトの名無しさん
2008/06/07(土) 07:55:152chの板のスレ一覧データだし、700項目くらいPCでやった場合ドパァッって表示されるんだがなあ。
VirtualはCFからは使えないな。
0781デフォルトの名無しさん
2008/06/07(土) 08:36:090782デフォルトの名無しさん
2008/06/07(土) 08:56:030783デフォルトの名無しさん
2008/06/07(土) 09:15:580784デフォルトの名無しさん
2008/06/07(土) 09:17:250785デフォルトの名無しさん
2008/06/07(土) 11:12:31ここまで大量のデータが取り扱われるとは考えられなかったからだと思う。
0786デフォルトの名無しさん
2008/06/07(土) 11:29:200787デフォルトの名無しさん
2008/06/07(土) 11:41:020788デフォルトの名無しさん
2008/06/07(土) 11:54:230789デフォルトの名無しさん
2008/06/07(土) 11:56:340790デフォルトの名無しさん
2008/06/07(土) 11:56:350791デフォルトの名無しさん
2008/06/07(土) 11:58:450792デフォルトの名無しさん
2008/06/07(土) 12:00:20画面ちらつくぞ
0793デフォルトの名無しさん
2008/06/07(土) 12:20:11例えば、20進んで一瞬停止して、15進んで一瞬停止して、の繰り返しでいいのか
0794デフォルトの名無しさん
2008/06/07(土) 12:26:270795デフォルトの名無しさん
2008/06/07(土) 12:32:280796デフォルトの名無しさん
2008/06/07(土) 12:37:460797デフォルトの名無しさん
2008/06/07(土) 12:40:120798デフォルトの名無しさん
2008/06/07(土) 12:48:39リアルにやるならtをタイマーを使って現実時間とぴったり合わせりゃいい
0799デフォルトの名無しさん
2008/06/07(土) 14:58:070800デフォルトの名無しさん
2008/06/07(土) 15:15:33v0 : 初期速度
g : 重力加速度(約-9.8)
p(t) : 初期時刻からの経過時間tの時の位置
p(t) = p0 + v0*t + 0.5*g*t*t
0801デフォルトの名無しさん
2008/06/07(土) 15:23:500802デフォルトの名無しさん
2008/06/07(土) 15:44:46それをwhileに入れれば出来そうだけど、ジャンプ中も左右移動したい
0803デフォルトの名無しさん
2008/06/07(土) 15:46:520804デフォルトの名無しさん
2008/06/07(土) 15:55:23new Timer( () =>
{
位置更新
描画
});
void KeyDown(...)
{
switch(key)
case ←:
左にちょっとずらす
...
}
こんな感じで出来るのかな
普通は
while(true)
{
入力ゲット
位置更新
描画
時間が来るのを待つ
}
こんな感じなのかな
よく知らん
0805デフォルトの名無しさん
2008/06/07(土) 16:46:12物理的に表現したいならこんな感じです
a:加速度 v:速度 p:位置 dt:微小時間
とすると、こういう微分方程式が成り立ちます
v(t)/dt = a
p(t)/dt = v(t)
dtはゲームなら1フレームの時間(約16.7ms)と考えるのが普通です
この式を例えば前進差分(ぐぐってね)で微分項を近似するとこうなります
( v(t+dt) - v(t) ) / dt = a
( p(t+dt) - p(t) ) / dt = v(t)
t+dt時間における速度と位置を知りたいので式を変形します
v(t+dt) = dt * a + v(t)
p(t+dt) = dt * v(t) + p(t)
この式をゲームのプログラムなんかではこう表現します
void Update( float dt )
{
velocity += dt * acceleration;
position += dt * velocity;
}
で、左右移動したいとき、というのは速度に値が加えられている状態なんで、
velocityに対して基本速度を加えておけばOKです
0806デフォルトの名無しさん
2008/06/07(土) 16:51:23スレ違いにもほどが
0807デフォルトの名無しさん
2008/06/07(土) 19:23:48横への移動を表す加速がY方向へは関係しないとき、XとYは独立して扱えるからよい子のみんなは気をつけよう。
0808デフォルトの名無しさん
2008/06/07(土) 19:40:070809デフォルトの名無しさん
2008/06/07(土) 21:07:23ベクトル型を使うのが普通なんで
0810デフォルトの名無しさん
2008/06/08(日) 10:51:160811デフォルトの名無しさん
2008/06/08(日) 11:54:090812デフォルトの名無しさん
2008/06/08(日) 17:17:44リストには追加するのに非表示にするという、一見無意味な操作なのですがそうしたいのです。
0813デフォルトの名無しさん
2008/06/08(日) 18:36:00ListViewのColumnHeaderで特定のカラムだけWidth=0にすることが出来ませんか?
リストには追加するのに非表示にするという、一見無意味な操作なのですがそうしたければそうすることもできるでしょう。
0814デフォルトの名無しさん
2008/06/08(日) 19:05:09非表示にしたいカラムだけ幅調整不可って出来ますか?
Widthを0にしただけでは幅調整されて見えてしまうので・・・。
0815デフォルトの名無しさん
2008/06/08(日) 20:00:43そのオブジェクトをListViewに追加すれば?
0816デフォルトの名無しさん
2008/06/08(日) 20:12:260817デフォルトの名無しさん
2008/06/08(日) 21:27:03なるほど。ありがとうございます。
>>816
Tagは使ったこと無いので調べてきます。
ListViewの方ではなくListViewItemの方ですよね?
0818デフォルトの名無しさん
2008/06/08(日) 22:33:03そこで非表示にしたいカラムが幅調整されそうになったら制限すればいい。
0819デフォルトの名無しさん
2008/06/08(日) 22:34:14なるほどありがとうございます。
Tagを使ったものがまさに用途にあった使い方でした。
0820デフォルトの名無しさん
2008/06/09(月) 10:09:010821デフォルトの名無しさん
2008/06/09(月) 12:07:210822デフォルトの名無しさん
2008/06/09(月) 12:16:03メソッド呼び出しを別スレッドにして、メインスレッドでキー入力を
待てばいいんじゃない? 全然はずしてたらご免。
0823デフォルトの名無しさん
2008/06/09(月) 12:17:01全然外してるかも。
0824あにす ◆sGTL1yK0.6
2008/06/09(月) 18:46:26外してるかな…。
0825デフォルトの名無しさん
2008/06/10(火) 05:54:09for (int i=0; i<1000; i++) Hoge((a) => a + 1);
のようなコードは次にように最適化されるようだ。
HogeDelegate f = null;
for (int i=0; i<1000; i++) {
if (f == null) { f = (a) => a + 1; }
Hoge(f);
}
0826デフォルトの名無しさん
2008/06/10(火) 06:30:01ということは>>702はデマってことか
0827デフォルトの名無しさん
2008/06/10(火) 07:01:430828デフォルトの名無しさん
2008/06/10(火) 11:32:48以下のようにListのSyncRootで排他処理を行っている最中に
Listの実体を入れ替えた場合、
この排他でLock開放待ちをしていたほかのスレッドはどうなるのでしょうか?
lock (((ICollection)(mylist).SyncRoot)[
if(xxx){
mylist = new List();
}
}
0829デフォルトの名無しさん
2008/06/10(火) 12:23:17mylistの置き換えより先に別スレッドがmylist.SyncRoot取得してたら古い方でロック待ちするし
置き換え後にSyncRoot取得したら新しい方でロック待ちする
古い方でロック待ちに入ったらロック取得したスレッドのlockステートメント終了でロックに入る
新しい方ならロックされてないから待たないでそのままロック取得するだろう
0830828
2008/06/10(火) 12:45:29コレでは排他処理の意味をなさない。
わかりました!!有難う御座います。
0831デフォルトの名無しさん
2008/06/10(火) 21:33:470832デフォルトの名無しさん
2008/06/10(火) 21:51:45保持しても意味がないものが入ってるかもしれないから
0833デフォルトの名無しさん
2008/06/10(火) 22:53:070834デフォルトの名無しさん
2008/06/10(火) 23:06:12なんかSqlCommandSetってのが昔はあったらしいけど、今は隠されてしまったみたいだし、
ていうか、
var cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandText = "begin transaction;" +
"insert into t values(1,2,3);" +
"insert into t values(2,3,4);" +
....
"commit transaction;";
みたいにカンマで区切っただけのSQL文でも一応できたみたいなんだけど、
C#/ADO.NET2.0/SQL Serverでほかの人はどういう風にバッチ処理してるのか知りたいです。
0835デフォルトの名無しさん
2008/06/10(火) 23:19:110836デフォルトの名無しさん
2008/06/10(火) 23:21:230837デフォルトの名無しさん
2008/06/10(火) 23:30:44お返事ありがとうございます。
ところで、クライアント側でユーザーが複数項目を選んで、
編集して、それで更新みたいな処理の流れだと、可変引数が
使えないストアドでは対応しきれないのでわないでしょうか?
0838デフォルトの名無しさん
2008/06/10(火) 23:40:52えーと……ゼルダの伝説?
それはともかく、C#のバージョンが分からんが3.0ならLINQがおすすめ
GUIでD&Dするだけでエンティティクラスが作れて、デフォルトでトランザクション処理
LINQ to SQLがSQL Server限定なのがあれだけど
0839デフォルトの名無しさん
2008/06/11(水) 14:58:07「バッチ処理のパラメータを格納しておくテーブル」を作るという手もある。
そのテーブルにINSERTしてからバッチ用のストアドプロシージャを起動して、
ストアドの中でテーブルを読み込んで、それを元に処理を行う。
結果のサマリーも格納するようにすれば、バッチ処理の履歴も兼ねることができる。
0840デフォルトの名無しさん
2008/06/11(水) 20:40:20ちなみに.NET Framework 2.0を使っています。
System.Runtime.InteropServices.COMExeption(0x80040154):CLSID{00024500-0000-0000-C000-000000000046}を含むコンポーネントのCOMクラスファクトリを取得中に、次のエラーが発生しました。:80040154
3台あるPC(XP)で1台で起こりますがその原因が分かっておりません。
作成したプロジェクトのbin\release以下には3個のCOMと関係がありそうなDLLがあります。
・Interop.Excel.dll
・Interop.Microsoft.Office.Core.dll
・Interop.VBIDE.dll
これら3個を
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
を使って登録しても結果は同じです。
どういった原因が考えられるでしょうか?
0841デフォルトの名無しさん
2008/06/11(水) 21:21:57「00024500-0000-0000-C000-000000000046 80040154」でググって
最初に出てきたところに書いてあった事例がまさにそうだっただけだけど。
http://forums.msdn.microsoft.com/en-us/netfxbcl/thread/5a338c18-b2e5-44b5-b15a-530d99a34656/
0842840
2008/06/11(水) 21:26:24Excelがインストールされていない環境では、COMを通じたエクセルファイルの操作というのはやはり出来ないものでしょうか?
というのは、
動作確認をした3台のうち
1台にだけExcelをインストールしていたつもりだったのですが、実際には2台にインストールされており、
上記の
System.Runtime.InteropServices.COMExeption(0x80040154):CLSID{00024500-0000-0000-C000-000000000046}を含むコンポーネントのCOMクラスファクトリを取得中に、次のエラーが発生しました。:80040154
このエラーはエクセルがインストールされていないパソコンでだけ起こっていました。
レジストリのCLSIDに無理やりエクセルを登録たところエラーが変わって
System.IO.FileNotFoundException: CLSID {00024500-0000-0000-C000-000000000046} を含むコンポーネントの COM クラス ファクトリを取得中に、次のエラーが発生しました: 80070002。
場所 NFSAutoGui.Tettou.product(String path)
こういうことになってしまいました。
FileNotFoundExceptionってようするにExcel.exeが見つかりませんよ、ということかと思いますが。
ということで
Excel.exeがインストールされていない状態では、COMを通じたエクセルファイルの操作というのはやはり出来ないものでしょうか?
0843デフォルトの名無しさん
2008/06/11(水) 21:31:00そりゃ、できんわな。それができたら、みんなExcel買ってくれなくなってMSが困っちゃう。
0844デフォルトの名無しさん
2008/06/11(水) 21:36:37>>843
どうも。。。
インストールしてないつもりのPCで動いたと思ってたんで動くかと思っていました。
アホ過ぎ。
ところで
Excelのバージョン10が開発マシンに入っております。
COMの参照設定で、Microsoft Excel 10.0 Object Library のバージョン1.4を設定しているのですが、
これで配布した場合って、Excelのバージョン10.0が入っていないと動かないんですかね?
Excel 2007しか入っていないようなPCでは動かないんですか?
0845デフォルトの名無しさん
2008/06/11(水) 21:43:55だって、そのExcelファイルの操作って、
Excelが持っている機能を呼び出しているだけだ。
普段目にするUIはExcelの1つの顔にすぎない。
0846デフォルトの名無しさん
2008/06/11(水) 21:59:28YES
0847デフォルトの名無しさん
2008/06/11(水) 22:01:050848デフォルトの名無しさん
2008/06/11(水) 22:10:55でバージョン依存したくないならせめてVB.NETにしとけ
0849デフォルトの名無しさん
2008/06/11(水) 22:15:410850デフォルトの名無しさん
2008/06/11(水) 22:19:02そういうことですね。
>>846
了解しました。
>>847
一応タスクマネージャのプロセスタブにEXCELは居ないので大丈夫かと...
ところで、
開発マシンにEXCEL10しか入っていませんが、
その他のバージョンのEXCELも扱いたい場合に必要になってくるのが
PIAとかいうものなのでしょうか?
0851デフォルトの名無しさん
2008/06/11(水) 22:40:520852デフォルトの名無しさん
2008/06/11(水) 22:42:040853デフォルトの名無しさん
2008/06/11(水) 23:58:05たとえば("d")ならカルチャによって変わりますが、
カスタム書式の("yyyy/MM/dd")も環境によって変わるようです。
どんな環境で変わるんでしょうか??
0854デフォルトの名無しさん
2008/06/12(木) 00:37:13質問の意味がよくわからないけど「カルチャが異なる環境で変わる」ということが聞きたいのかな。
CurrentThreadのCurrentCultureとかCurrentUICultureとかを色々変えながら動かしてみると
わかりやすいかもしれない。
わかりにくいかもしれない。
0855デフォルトの名無しさん
2008/06/12(木) 00:37:53"/" はカルチャ依存の日付区切り文字だし、
この世には和暦とかヒジュラ暦とかあるだろ。
0856デフォルトの名無しさん
2008/06/12(木) 00:47:15ありがとうございます。
"/"はカルチャ依存なのですね。
カスタム書式なら"/"も表示してくれると思っていたのですが、それすらも期待してはいけないのですね。
自分の環境では再現できない&相手の環境がよくわからないので質問しました。
では"yyyyMMdd"ならどの環境でも期待通り"20080612"になることを前提にしていいのでしょうか?
0857デフォルトの名無しさん
2008/06/12(木) 01:11:03>>855の最後の行を読んで下さい><
DateTimeFormatInfo.InvariantInfoわたしとけばいいよ。
0858デフォルトの名無しさん
2008/06/12(木) 01:17:15CultureInfo ci = new CultureInfo("ja-JP", true);
ci.DateTimeFormat.Calendar = new JapaneseCalendar();
Thread.CurrentThread.CurrentCulture = ci;
Console.WriteLine(DateTime.Now.ToString("yyyyMMdd")); // 200612
Console.WriteLine(DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo)); // 20080612
0859デフォルトの名無しさん
2008/06/12(木) 01:17:26なるほどありがとうございました!
yyyyでも和暦だと20とかになるんですね。
DateTimeFormatInfo.InvariantInfoで解決しました。
0860デフォルトの名無しさん
2008/06/12(木) 01:18:12ありがとうございました。勉強してみます。
0861デフォルトの名無しさん
2008/06/12(木) 04:18:07非表示にする方法はあるだろうか?
それともHtmlView.dllをラップしたほうが賢明だろうか
0862デフォルトの名無しさん
2008/06/12(木) 11:14:25IDisposableを実装したほうが良いクラスの判断でまよっています。
クラスA DataSetをプロパティとして保持
クラスB stringをプロパティとして保持
クラスC byte配列をプロパティとして保持
クラスAはDisposeメソッドを用意してデストラクタから呼び出していますが、
クラスBとCもDisposeを用意したほうが良いでしょうか?
また、stringやbyte配列はDisposeメソッドがないので、どうやってメモリを解放するのかもわからないです。
0863デフォルトの名無しさん
2008/06/12(木) 11:38:410864デフォルトの名無しさん
2008/06/12(木) 11:48:12Disposeを持つクラスをメンバとして持つ時だけで良い。
それ以外ではメモリの開放はGCにまかせた方が一般的にパフォーマンスは高い。
なんとなくメモリは少ないほうがいいよね的な考えしかないなら逆効果にしかならんよ。
性能を犠牲にしてでもどうしても局所的にワーキングセットの縮小をせまられるのなら
参照をnullにしてGC.Collectを呼び出す。
0865862
2008/06/12(木) 12:58:06ありがとうございます。
なるほど、ではどうしても実装するならクラスAだけで
良いのですね。
Webアプリなのですが、特定のページにアクセスが集中し
使用メモリが大きくなってしまうので、できるだけ解放できるところは
解放したかったのです。
処理終了時にGC.Collectを呼び出すことにします。
0866デフォルトの名無しさん
2008/06/12(木) 13:22:051 デストラクタ(ファイナライザ)があればそれを実行する
2 メモリの回収
Disposeは1を代行するもので、メモリの回収はあくまでもGCが行う。
0867デフォルトの名無しさん
2008/06/12(木) 14:22:22RichTextBoxに画像を挿入したいんですが、無理?
0868デフォルトの名無しさん
2008/06/12(木) 14:27:550869デフォルトの名無しさん
2008/06/12(木) 14:35:42サンプルコード貼ってある所知りませんか?
0870デフォルトの名無しさん
2008/06/12(木) 14:41:090872デフォルトの名無しさん
2008/06/12(木) 23:05:15じゃあデストラクタが実行されるタイミングってスコープを抜けた瞬間とは限らないの?
0873デフォルトの名無しさん
2008/06/12(木) 23:10:280874デフォルトの名無しさん
2008/06/12(木) 23:13:38全然関係ない。スコープと一致させたいときにはusingを使わないといけない。
逆に言えばそれがIDisposeとusingの存在意義。
>>873
まあC# 1.0のころはデストラクタって言っていたはずだし、いいじゃないか。
0875デフォルトの名無しさん
2008/06/12(木) 23:16:20種も仕掛けもない本当にただの普通のメソッド
0876デフォルトの名無しさん
2008/06/12(木) 23:18:110877デフォルトの名無しさん
2008/06/12(木) 23:20:350878デフォルトの名無しさん
2008/06/12(木) 23:56:46class DispBase : IDisposable {
~DispBase() { Dispose(false); }
public void Dispose() { Dispose(true); System.GC.SuppressFinalize(this); }
public virtual void Dispose(bool disposing) {
if (disposing) { }
}
}
GCとの関係といえばこの命令だけ。
System.GC.SuppressFinalize(this);
後片付けが終わったからファイナライザは呼び出さなくていいとGCに指示している。
これでファイナライザは呼び出されなくなる。
0879デフォルトの名無しさん
2008/06/13(金) 00:03:21こういうでたらめやって事態を悪化させやがるんだよな…
GC呼ぶなんてやめとけよ、特にWebではな…
0880デフォルトの名無しさん
2008/06/13(金) 00:05:540881デフォルトの名無しさん
2008/06/13(金) 00:07:23セッションにでっかいオブジェクトの参照抱え込んだままで、GC.Collect呼びまくるとかやってそう
0882デフォルトの名無しさん
2008/06/13(金) 00:08:020883デフォルトの名無しさん
2008/06/13(金) 00:12:21メモリとか異様に気にするのにセッションとかは湯水のように平気で使うのな。
0884デフォルトの名無しさん
2008/06/13(金) 00:21:120885デフォルトの名無しさん
2008/06/13(金) 00:27:41もう少しスマートにできなかったものか。
0886デフォルトの名無しさん
2008/06/13(金) 18:37:51下記プログラムを実行すると。
=====================
static void Main(string[] args)
{
StreamWriter sw = new StreamWriter("test.txt",false,Encoding.GetEncoding(932));
sw.WriteLine("{0,10} => {1}","ABCD",1234);
sw.WriteLine("{0,10} => {1}","あいうえ",1234);
sw.Close();
}
=====================
結果として
=====================
ABCD => 1234
あいうえ => 1234
=====================
こういった出力になります。
説明を添えると、
ABCDの前に半角スペース文字6文字
あいうえの前に半角スペース文字6文字。
という出力結果になります。
理想としては、
ABCDとあいうえの右端をそろえたいので
あいうえの前に半角スペース文字2文字が入って欲しいのです。(あいうえは8文字とみなす。)
そのようなことは可能でしょうか?
どのようにすれば可能でしょうか?
0887デフォルトの名無しさん
2008/06/13(金) 21:34:01ここに、UnicodeにおけるCJKの表示幅の規定があるから、
適当に文字列の表示幅を計算して残りを埋めれば良い
0888デフォルトの名無しさん
2008/06/14(土) 06:42:57つまり、いわゆる全角文字を半角文字2文字分として処理したいってことか?
Encoding.GetByteCount()で、各文字コードにおけるバイト数が得られるから、
Shift-JISにおけるバイト数を使ってスペースの文字数を計算すればいいだろう。
こんな感じで。
Encoding sjisEnc = Encoding.GetEncoding(932);
string text = "あいうえ";
string space = new String(' ', 10 - sjisEnc.GetByteCount(text));
Console.WriteLine("{0}{1} => {2}", space, text, 1234);
0889デフォルトの名無しさん
2008/06/15(日) 14:35:46必須にする方法教えて下さい。
0890デフォルトの名無しさん
2008/06/15(日) 15:12:290891デフォルトの名無しさん
2008/06/15(日) 17:16:120892デフォルトの名無しさん
2008/06/15(日) 17:17:380893デフォルトの名無しさん
2008/06/15(日) 20:01:44ってかVSスレで聞いたら?
0894デフォルトの名無しさん
2008/06/15(日) 20:03:22すまぬかった
0895デフォルトの名無しさん
2008/06/16(月) 12:56:58using System;
using System.Collections.Generic;
delegate int getItem();
class DelegateTest
{
public static void Main()
{
List<int> liList = new List<int>();
getItem a = new getItem(A);
a += new getItem(B);
a += new getItem(C);
liList.Add(a());
}
static void A(){return 1;}
static void B(){return 2;}
static void C(){return 3;}
}
この様なプログラムを走らせてliListに[1,2,3]が入って欲しいのです。
(当然ながらというか、)実際には[3]しかはいりません。
マルチキャストデリゲートにしたのは実行したいメソッドの数が実行時にしか分からず
できればif文分岐を少なくしたいと思ったからなのですが、
やはりメソッドを一つ一つ実行しなければ無理でしょうか?
もしくはメソッドの戻り値をリストにして、そのリストを次のメソッドの引数をリストにして、最後にaddrangeでしょうか?
何か上手いテクニックがあれば、どなたかご教授下さい。
0896デフォルトの名無しさん
2008/06/16(月) 13:04:030897デフォルトの名無しさん
2008/06/16(月) 13:09:340898デフォルトの名無しさん
2008/06/16(月) 14:14:43複数の、戻り値を持つデリゲートを一括で管理したい場合は、
マルチキャスト- ではなく、デリゲートのコレクション/リスト などを使う
例えば、こんなふうに
var funcs = new List<Func<int>> { A, B, C };
var values = funcs.Select(f => f()).ToList();
あと、A,B,Cはvoidじゃなくてintな
>>897
それだと、仕様外の操作(複数追加、Insert、Clear、etc.)まで出来てしまうのであまり良くない
自分しか触らないから何でもいいっていうなら構わないけど
0899デフォルトの名無しさん
2008/06/16(月) 15:34:56List<getItem> evlist = new List<getItem>();
public event getItem ItemsEvent {
add { evlist.Add(value); }
remove { evlist.Remove(value); }
}
this.ItemsEvent += () => 1;
this.ItemsEvent += () => 2;
this.ItemsEvent += () => 3;
evlist.Select(f => f()).ToList();
0900デフォルトの名無しさん
2008/06/16(月) 19:01:37コレクションをそのまま渡すんじゃなくて,値を登録するためだけのクラスを作って引数に渡す
0901900
2008/06/16(月) 19:05:54マルチキャストは使うのはあんまり良くないかも
0902895
2008/06/16(月) 20:14:14とりあえずはコレクションを引数に渡すやり方で実装できました。
ラムダ式を使った方法を教えてくださった898,899さんのやり方は
ちょっと理解ができませんでした・・・申し訳ありません。
デリゲートのコレクションは使ったことがないので勉強してみたいと思います。
0903デフォルトの名無しさん
2008/06/17(火) 01:28:26メッセージループが競合してどうすりゃいいか、分からんのだが・・・。
0904デフォルトの名無しさん
2008/06/17(火) 01:32:330905デフォルトの名無しさん
2008/06/17(火) 02:39:480906デフォルトの名無しさん
2008/06/17(火) 02:53:11ご想像通りメッセージループを自前のものに置き換えるしかない。
0907デフォルトの名無しさん
2008/06/17(火) 03:09:540908デフォルトの名無しさん
2008/06/17(火) 03:26:33メッセージディスパッチャに関してはP/Invokeで動くというか、
普通にITfMessagePump::GetMessage[A,W]でメッセージ取ってきて
P/InvokeでDispatchMessageすればおk。
必要ならWinFormのApplicationクラスのソースでも眺めて見れ。
折角公開されたんだし。WPFももう公開されたんだっけ?
WPFアプリケーションでWinFormsを併用するときのドキュメントも参考になるかも。
というかメッセージディスパッチャにWPFのApplicationクラスを使いつつ
WinFormsを表示するのが楽かもしれんな。XP以降専用になっちまうが。
あとはExecutionContextの実装もちゃんとやっておくとベター。
0909907
2008/06/17(火) 03:29:53SynchronizationContextの間違い。すまそ。
http://msdn.microsoft.com/ja-jp/library/system.threading.synchronizationcontext.aspx
0910デフォルトの名無しさん
2008/06/17(火) 03:31:08909==908ね。
0911908
2008/06/17(火) 04:00:28一応動くことは動くみたい。
この方法ならWPFのSynchronizationContextが使われるので
SynchronizationContextはそのままでOK、なはず。
---------------
// PresentationFramework.dll
// System.Windows.Forms.dll
// WindowsBase.dll
using System;
static class Program
{
[STAThread]static void Main(){ new CustomApplication().Run(); }
}
public class CustomApplication : System.Windows.Application
{
protected override void OnStartup(System.Windows.StartupEventArgs e)
{
base.OnStartup(e);
var form = new System.Windows.Forms.Form()
{
Width = 640,
Height = 480,
Text = "Test Window",
};
form.Disposed += (_o, _e) => this.Shutdown();
form.Show();
}
}
0912デフォルトの名無しさん
2008/06/17(火) 04:03:10ありがと。
Application.csは見ていて、FPushMessageLoopでGetMessageWしてるのは確認したんだが、
ThreadContextの処理と整合性を取りつつも、
ITfMessagePump::GetMessageする確実な手段が分からなくてね。
ThreadContext周りの処理はinternal/privateがひしめいていて、
うかつに手を出せないし、お手上げ状態。
WPFは要件的に採用は厳しいかな。
いずれにせよ、overrideなり、Filter的なものでGetMessegeを自前の処理を行う仕組みはなさそうだね。
>普通にITfMessagePump::GetMessage[A,W]でメッセージ取ってきて
>P/InvokeでDispatchMessageすればおk。
おkな理由を教えてもらえると嬉しいな。
0913デフォルトの名無しさん
2008/06/17(火) 04:24:01>おkな理由を教えてもらえると嬉しいな。
PresentationFramework.dllが中でやっていることがまさにそれだから、で説明になる?
System.Windows.Threading.Dispatcher.PushFrameImplおよび
System.Windows.Threading.Dispatcher.GetMessageと全く同じことをすれば動く。
で、納得してもらえるんだろうか……
0914デフォルトの名無しさん
2008/06/17(火) 10:36:47このコールバック中にEndReadで例外が発生したらアプリが強制終了してしまう。
この例外をメインスレッド、少なくとも呼び出したスレッドで処理するにはどうすればよろしいでしょうか?
0915デフォルトの名無しさん
2008/06/17(火) 10:42:520916デフォルトの名無しさん
2008/06/17(火) 14:27:34Windowsアプリなら、Control.BeginInvokeでEndRead呼べば
発生する例外もメインスレッドの管轄になるはず
ただ、例外チェインの最後のエラーしか取れないかも
コンソールアプリならしらね
0917デフォルトの名無しさん
2008/06/18(水) 10:06:15下記のxmlファイルtest1.xmlを作成しました。
test1.xml
<?xml version="1.0" encoding="utf-8" ?>
<Items>
<Item ID="001">
<Name>aaaa</Name><Age>10</Age>
</Item>
<Item ID="002">
<Name>bbb</Name><Age>20</Age>
</Item>
</Items>
test1.xmlのデータを下記のプログラムで読み込みました。
001 XmlDocument xmlDoc = new XmlDocument();
002 xmlDoc.Load("c:\\test1.xml");
003
004 string wID = "002";
005 XmlNode xmlNode = xmlDoc.SelectSingleNode("//Items/Item[@ID='" + wID + "']");
006 string wName = xmlNode.SelectSingleNode("//Name").InnerXml;
007 string wAge = xmlNode.SelectSingleNode("//Item/Age").InnerXml;
私の予想ではwNameには"bbb"、wAgeには"20"が入ると思っていたのですが
実際にはwNameには"aaa"、wAgeには"10"が入ります。
プログラムの005行目の処理でxmlNodeには確かに<Name>bbb</Name><Age>20</Age>が抽出されています。
006-007行目で、そこから更に//Nameを抽出したのにwNameに"bbb"が入らず"aaa"が入ってしまうのは何故ですか?
また,このような絞込みっぽい処理を行うには、どのようにすれば良いでしょうか。
0918デフォルトの名無しさん
2008/06/18(水) 10:10:560919917
2008/06/18(水) 10:17:43Σ(゚д゚lll)
//はずしたら上手くいきました。
なぜこういう事になるのか勉強して出直してきます。
ありがとうございました。
0920デフォルトの名無しさん
2008/06/18(水) 19:16:35キーワードでas base isとかがかぶったらどういう回避方法があるんでしょうか。
0921デフォルトの名無しさん
2008/06/18(水) 19:21:070922デフォルトの名無しさん
2008/06/18(水) 19:28:480923デフォルトの名無しさん
2008/06/18(水) 19:36:16またソースに手を入れて変更しないとダメなんでしょうか。
0924デフォルトの名無しさん
2008/06/18(水) 19:51:530925デフォルトの名無しさん
2008/06/18(水) 20:38:42特にc#は独自のキーワード名が多いみたいですけど。
0926デフォルトの名無しさん
2008/06/18(水) 20:41:35関数名のAPIの方を変更できないし泣きませんか?
そうするとC#で作る気力も無くなるんですけど。
0927デフォルトの名無しさん
2008/06/18(水) 20:43:58子供に生まれてこなくて良かったとか言い出す奴らは
来てもらわなくてもいいよ
0928デフォルトの名無しさん
2008/06/18(水) 20:48:49まともにプログラミングの話を出来ないなら、別にいいですよ。
噂どおり、C#の人はC++厨房と変わらないようですねw
0929デフォルトの名無しさん
2008/06/18(水) 20:53:56他言語からの移植なんてそう簡単にはいかんよ
0930デフォルトの名無しさん
2008/06/18(水) 20:54:39同じ言語の世代間の違いならコンパイルオプションや
pragmaのようなコンパイル指令で逃げるのだろうけど、
他言語からの場合は良識に任せるしかないな。
移植を前提にしたコードでbaseとかinとかselfとか変数に
使ってたらそういう名前を使った奴がアホだろ。
0931デフォルトの名無しさん
2008/06/18(水) 20:56:23まあ、>>927みたいなしきり屋がいるようなところじゃ、こっちの方がよくわかんないけど。
ここでは>>927みたいなしきり屋に従わなければいけないのですか?
0932デフォルトの名無しさん
2008/06/18(水) 20:58:36フルすぎるネタで若い子にはわからないぞ;;
0933デフォルトの名無しさん
2008/06/18(水) 21:05:04はいはい、とっとと噂を流す仕事に戻ってね。
0934デフォルトの名無しさん
2008/06/18(水) 21:05:46ttp://jp.youtube.com/watch?v=YaCkfvm3Oyw
0935デフォルトの名無しさん
2008/06/18(水) 21:16:13Cならともかく、C#みたいなしんまい言語を前提にコードかけるかよw
in selfとかをキーワードに設計する方が多言語からの移植を考えないようなアホじゃないのか。
おまえはいつも、次の言語のキーワードとぶつからないように考えながら書いてるのか?アホはおまえだなw
0936デフォルトの名無しさん
2008/06/18(水) 21:18:57Javaの世界ではC#の奴はめちゃ嫌われてるよ。
演算子オーバーロード―がどうとかうるさいしww
VBほどじゃないけど(笑)
0937デフォルトの名無しさん
2008/06/18(水) 21:21:33嫌われてるからJavaやれってか?
そんな気を使わなくてもC#一筋なやつの方が少ないだろ
0938デフォルトの名無しさん
2008/06/18(水) 21:26:140939デフォルトの名無しさん
2008/06/18(水) 21:26:540940デフォルトの名無しさん
2008/06/18(水) 21:28:490941デフォルトの名無しさん
2008/06/18(水) 21:31:26ていうか独自キーワードってなんだよ。
Javaのキーワードが他の言語からの移植を考えて決められてるなんて初耳だ。
0942デフォルトの名無しさん
2008/06/18(水) 21:33:07Javaを使い続ければすむことじゃないのか?
0943デフォルトの名無しさん
2008/06/18(水) 21:51:19CLIだとどうなってるんだろ?
0944デフォルトの名無しさん
2008/06/18(水) 21:59:50C#出たときあちこち馬鹿にしまくったくせに掌反してパクり始めた奴らだろ?
そりゃあんだけ醜態晒せば嫌って、なかったことにでもせんとなwwww
まあそれはいいとして @ つければキーワードとして扱われなくなるよ。VBなら[]で囲むんだっけかな
相互運用のためにその手の機能を持つことが推奨されてる。ちなみにCILは「どんな識別子でも」持てるから
限界はあるんだけどな
0945デフォルトの名無しさん
2008/06/18(水) 22:06:130946デフォルトの名無しさん
2008/06/18(水) 22:07:262.0以降に追加されたキーワードは全て文脈次第だし
0947デフォルトの名無しさん
2008/06/18(水) 22:09:250948デフォルトの名無しさん
2008/06/18(水) 22:14:03いちいち覚えるのとか別に苦痛じゃないんだけど、なんかMSに束縛されてるみたいで嫌じゃないか?
まあ、変なところがあったらコンパイラが叱ってくれるからいいんだけど…
0949デフォルトの名無しさん
2008/06/18(水) 22:17:230950デフォルトの名無しさん
2008/06/18(水) 22:19:51java使ったことないんでしらんけど。
そもそも多言語移植の時に変数名そのままで移植できなきゃやだやだやだ
なんてバカかよ。ほとんど意味ないと思うんだが。
そこまでしたいならまずjavaの段階で適宜リファクタリングして移植すりゃ
いいことなんじゃねーの?
0951デフォルトの名無しさん
2008/06/18(水) 22:21:05アホがjavaからC#へ移植を試みて文句言ってる
のに食いついたって感じ?
暇だなぁ、お前等
0952デフォルトの名無しさん
2008/06/18(水) 22:23:010953デフォルトの名無しさん
2008/06/18(水) 22:26:150954デフォルトの名無しさん
2008/06/18(水) 22:26:25インターフェイスとか抜きで特定の名前(引数)のメソッドの呼び出しに変換される機能
foreach→GetEnumerator()とかコレクション初期化子→Add(引数任意)とかクエリ式とか
0955デフォルトの名無しさん
2008/06/18(水) 22:28:08get set partial where yield value と後はC#3.0で導入されたクエリキーワードぐらいだよな。
>忘れちゃうキーワード
explicit implicit stackalloc unchecked volatile あたりは時々忘れそうになる。
0956デフォルトの名無しさん
2008/06/18(水) 22:30:410957デフォルトの名無しさん
2008/06/18(水) 22:30:570958デフォルトの名無しさん
2008/06/18(水) 22:32:24java5にも同じのあるじゃないか
Iterable/Iteratorでfor ( : ) をお忘れではないか
0959デフォルトの名無しさん
2008/06/18(水) 22:35:22C#のはダックタイピング的なのでちょっと違う。
多分>>954はその事を知ってて書いてる。
0960デフォルトの名無しさん
2008/06/18(水) 22:52:380961デフォルトの名無しさん
2008/06/18(水) 22:53:33ええ!それは忘れないだろ。
それ、使わないならC#言語じゃなくてもいいでない?
ん・・・このスレのレベルは、理解に苦しむ・・
0962デフォルトの名無しさん
2008/06/18(水) 22:57:03了解、インターフェイスがなくてもメソッドの名前が一致してればOKという話か。
usingはなぜかIDisposable.Dispose()でないと受け付けない。
これもメソッドの名前だけで使わせて欲しいよ。
0963デフォルトの名無しさん
2008/06/18(水) 22:57:17リファレンスのキーワードの項に、
>>955のとクエリキーワードは載ってるけど、add/removeが載ってない
中の人にも忘れられてる?
0964デフォルトの名無しさん
2008/06/18(水) 23:03:230965デフォルトの名無しさん
2008/06/18(水) 23:03:480966デフォルトの名無しさん
2008/06/18(水) 23:07:130967デフォルトの名無しさん
2008/06/18(水) 23:08:34WinFormでもWPFでもコントロールのイベントはカスタムしてるのがほとんどだぜ
0968デフォルトの名無しさん
2008/06/18(水) 23:11:150969デフォルトの名無しさん
2008/06/18(水) 23:13:490970デフォルトの名無しさん
2008/06/18(水) 23:17:46というかあいつら基本的に自分たちでだいぶ使ってから出すから
まぁそんなもんかという気はする。
0971デフォルトの名無しさん
2008/06/18(水) 23:32:38中途半端に付けるくらいならクエリ式なんて無くてよかった
メソッド形式だけだとどうしてもインパクトに欠けるからなあ
0972デフォルトの名無しさん
2008/06/18(水) 23:32:420973デフォルトの名無しさん
2008/06/18(水) 23:35:19JavaやC++とくらべて進んでるところは
0974デフォルトの名無しさん
2008/06/18(水) 23:38:100975デフォルトの名無しさん
2008/06/18(水) 23:42:530976デフォルトの名無しさん
2008/06/18(水) 23:45:46ジェネリックがなかったころだから。
0977デフォルトの名無しさん
2008/06/18(水) 23:48:390978デフォルトの名無しさん
2008/06/18(水) 23:49:20どこがどうキモイかを気がついてないようだけどw
0979デフォルトの名無しさん
2008/06/18(水) 23:54:12何言ってる?
現在進行形でキモクなってんだよっ
0980デフォルトの名無しさん
2008/06/19(木) 00:01:560981デフォルトの名無しさん
2008/06/19(木) 00:07:15釣り糸をたらして誰かがボロを出すのを待ってるんですね。
わかります。
0982デフォルトの名無しさん
2008/06/19(木) 00:11:34VBでやってくれ
0983デフォルトの名無しさん
2008/06/19(木) 00:48:530984デフォルトの名無しさん
2008/06/19(木) 09:17:540985デフォルトの名無しさん
2008/06/19(木) 10:36:58Linq for SQLはORMであることを前面に出してアピールしたほうが健全だと思える。
これをごちゃ混ぜにしてLinqと呼んでるからユーザーが混乱する。
0986デフォルトの名無しさん
2008/06/19(木) 10:40:390987デフォルトの名無しさん
2008/06/19(木) 13:27:120988デフォルトの名無しさん
2008/06/19(木) 21:35:51デリゲートとExpessionTreeが同じ文法で書けるのが実に素敵。
0989デフォルトの名無しさん
2008/06/19(木) 23:22:50エラーダイアログ出して、ユーザーが編集していた更新内容を
まるっと破棄してしまうと、なんか文句言われそうなんですが・・・
0990デフォルトの名無しさん
2008/06/20(金) 09:37:29あと匿名型を普通に引数とか戻り値に使えるようにしてくれ
0991デフォルトの名無しさん
2008/06/21(土) 02:06:08もうちょっとシンタックスシュガーが( ゚д゚)ホスィ…
0992デフォルトの名無しさん
2008/06/21(土) 03:05:49合成関数とか、任意の引数のバインディングとか
expr1.ComposeWith(expr2)
expr1.BindSecond(3)
てな感じで使ってる
0993デフォルトの名無しさん
2008/06/21(土) 10:15:580994デフォルトの名無しさん
2008/06/21(土) 10:57:29それ以外は生の処理でもできそうだけど
0995デフォルトの名無しさん
2008/06/21(土) 12:08:20たいていのプログラマは間接的な恩恵しかない。
0996デフォルトの名無しさん
2008/06/21(土) 12:46:310997デフォルトの名無しさん
2008/06/21(土) 17:15:23最低限必要なのはどのファイル(※)でしょうか?
※ Windowsフォームアプリケーションで新規作成した場合に
作成されたファイルを下記のリストにしてみました(第二階層まで)
test.sln
test.suo
2008/06/21 17:07 <DIR> bin
2008/06/21 17:07 <DIR> obj
2008/06/21 17:07 <DIR> Properties
2008/06/21 17:04 374 Form1.cs
2008/06/21 17:04 1,338 Form1.Designer.cs
2008/06/21 17:04 546 Program.cs
2008/06/21 17:07 3,622 test.csproj
2008/06/21 17:07 74 test.csproj.user
0998デフォルトの名無しさん
2008/06/21(土) 17:22:012008/06/21 17:07 <DIR> bin
2008/06/21 17:07 <DIR> obj
は全部消していい。
あとはtest.csproj.userくらいか
0999デフォルトの名無しさん
2008/06/21(土) 17:35:18削除&プロジェクトファイルを開く、で削除可否を確認しました。
下記リストの状態でプロジェクトが開くのを確認。
教えて頂いたファイルからさらにtest.suoを削除しています。
ありがとうございます。
消さなかったファイル・フォルダ
test.sln
2008/06/21 17:07 <DIR> Properties
2008/06/21 17:04 374 Form1.cs
2008/06/21 17:04 1,338 Form1.Designer.cs
2008/06/21 17:04 546 Program.cs
2008/06/21 17:07 3,622 test.csproj
消したファイル・フォルダ
test.suo
2008/06/21 17:07 74 test.csproj.user
2008/06/21 17:07 <DIR> bin
2008/06/21 17:07 <DIR> obj
1000デフォルトの名無しさん
2008/06/21(土) 17:52:53http://pc11.2ch.net/test/read.cgi/tech/1214038282/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。