[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/28 05:52 / Filesize : 228 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part51



1 名前:デフォルトの名無しさん [2009/02/04(水) 23:26:55 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part50
pc11.2ch.net/test/read.cgi/tech/1229661915/l50

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

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

367 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 20:43:44 ]
>>361 こんなところに聞きにくるくらいなら自分で調べろ

368 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 20:54:53 ]
>>365
黙りま

369 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 21:33:36 ]
ここも素人ばかりですね
無駄口きいてないで少しは勉強したらどうですか?

370 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 21:37:21 ]
匿名性の弊害

371 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 21:42:49 ]
そもそもそんな大事なことをここで聞くな。
嘘だったらどうするんだ。
本家本元マイクロソフトさんに聞けばいいだろうに。

372 名前:マイクロソフト mailto:sage [2009/02/18(水) 21:48:31 ]
漏れも(゚听)ワカンネ

373 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 21:51:34 ]
Microsoft.Samples 名前空間すべてを対象にした EULA、なんてものはない。
ということで、各サンプルの EULA に従う必要がある。

374 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:36:34 ]
ぶつからないようにわざわざ名前付けてるのに
同じ名前付けてどうすんだよ

375 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:41:30 ]
>>367
それ言い出したらム板の存在価値が・・



376 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:47:59 ]
まぁでも、ライセンス関係は配布元に直接聞くほうが確実だしな。

377 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:54:43 ]
訴えられた後だと遅いしね

378 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:11:45 ]
すいません、ジェネリックに関しての質問です。

    public struct V2<T>{
        public T x;
        public T y;

        public V2( T x_, T y_ ){
            x = x_;
            y = y_;
        }

        public void Add( V2<T> v_){
            x += v_.x;
            y += v_.y;
        }
    }

このような構造体を作りたいのですが、Addメソッド内の
x、yそれぞれ加算しているところでコンパイルエラーとなってしまいます。

エラーの文言としては下記のものが出力されました。
「演算子 '+=' を 'T' と 'T' 型のオペランドに適用することはできません。」

これはTにどのようなものが指定されるか不明なので、
+=演算子が必ずしも使えない、よってこれをエラーとする。

このような理由でエラーが出ているのでしょうか?

また、宜しければ解決方法がございましたらお教えいただけたらうれしいです。

379 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:13:58 ]
現スレの過去レスくらいは読め
>>145-177あたり参照


380 名前:378 mailto:sage [2009/02/19(木) 00:19:42 ]
すいませんでした、早速読んできます。

381 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:27:14 ]
その辺F#は華麗に実現できるのでまじお勧め

382 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:34:10 ]
F#知らないんだけどどうやって実現してるの?
結局のところ,CLRで動かす以上は
・DynamicMethodを使ったコード動的生成やリフレクションなどによって動的に
・C++みたいにテキスト的に
の二つしか方法はないはずだけどどちらも華麗とは思えない

383 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:42:26 ]
動的言語向けにCLRを拡張するんだよ。

384 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:47:14 ]
DLRのことを言ってるなら,あれはCLRを拡張してるんじゃなくて
CLRの既存の機能を使用した単なるクラスライブラリにすぎないよ
>>382の上の方法に帰着する

385 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 08:05:50 ]
今、F# をちょっと試してみたけど、型推論してるだけだな。

コマンドラインの方は触ってないけど、Visual F# で試したら、
全然動的なことしてなかった。




386 名前:デフォルトの名無しさん [2009/02/19(木) 08:08:14 ]
F#はちゃんとTに足し算させられるの?

387 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 08:15:32 ]
手元にある F# の本の、ContentsとIndexをざっと眺めてみたけど、
ジェネリックス自体どこにもない。

>>381 に詳細聞きたい。

388 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 10:51:25 ]
基本的にはOCamlだから文法上の静的型付けで解決するのでって話だと思ってたけど
それともF#はILのジェネリクスを使うように拡張されてる?
だとしたら同じくエラーになる気がする

389 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 14:23:06 ]
System.Windows.Controls.TextBoxを160個並べて0.2秒に一回、Textに文字列を入れてるんですが
ときどきアプリ全体が劇重になってしまいます
Textに文字列を入れる部分だけコメントアウトすると重くなりません
これを回避する方法はあるでしょうか?
TextBoxを使ってると諦めるしかないのでしょうか?

390 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 14:32:53 ]
非同期でぐぐれ

391 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 14:36:50 ]
非同期処理してます

392 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 14:46:11 ]
GCの影響?

393 名前:デフォルトの名無しさん [2009/02/19(木) 16:00:15 ]
InvokeではなくBeginInvoke使ってみるといいんじゃね?


394 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 16:29:43 ]
TextBoxは重量級のコントロールだから160も並べたらそういうこともあるだろうな。
Labelじゃだめなん?

395 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 16:59:09 ]
上のほうでも出てるけど、文字の出力だけでいいなら
LabelかGDIでいんじゃない?



396 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:28:35 ]
Labelに変えたらスムースに動作するようになりました
ありがとうございました

でも右寄せ表示する方法が分からない
困った

397 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:41:09 ]
AutoSizeをfalseにしてTextAlignでいけない?

398 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:47:12 ]
右寄せの方法みつかった
Style style = new Style(typeof(ListBoxItem));
style.Setters.Add(new Setter(ListBoxItem.HorizontalContentAlignmentProperty,
HorizontalAlignment.Stretch));

ほんとWPFわけわからん
みなさん、ありがとうございました〜

399 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:56:58 ]
WPFかよ
プロパティでデザイン時にも指定できるからそこからわかるべ。

400 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 18:13:17 ]
そもそもItemsControlとか使ってバインディング
コードからコントロール生成しない
データソースを変更すれば勝手に表示が変わる

ってのがWPFの方向性

401 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 19:58:01 ]
ADOとベタベタ

402 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:30:16 ]
WPFで文字表示するだけならLabelよりもTextBlockのほうが軽いよ

403 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 23:06:40 ]
ありがとうございます
さっそく修正しました

404 名前:デフォルトの名無しさん [2009/02/20(金) 08:59:24 ]
結構みんなWPF使ってるものなの?

405 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 09:10:51 ]
使われてないよ



406 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 09:39:04 ]
デフォルトのスタックサイズを変更するにはどうすればいいですか?

407 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 09:58:52 ]
変更しなくていいよ

408 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 12:08:48 ]
わろたww

409 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 12:15:21 ]
わらわなくていいよ

410 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 12:25:07 ]
吹いたw

411 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 13:06:39 ]
汚いから拭いとけよ

412 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 13:08:07 ]
いっぱい釣れたぜ
ショボン

413 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 16:35:13 ]
キャッチしたらリリースしとけよ

414 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 20:20:11 ]
海外の掲示板で質問したらすぐに答えがもらえました
ここの馬鹿な人たちとは大違いですね^^;
もう2度と来ません
ノシ

415 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 20:21:40 ]
おまえだれ?



416 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 20:45:20 ]
おれおれ

417 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 20:46:23 ]
>>406
とりあえず、リンカで。

418 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 21:57:44 ]
シェイラのそっくりさん?

419 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 22:09:09 ]
>>417
根中 千恵子?

420 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 22:54:17 ]
海外の掲示板に質問書き込むスキルはあるのにググるスキルはなかったのか・・・

421 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 00:52:53 ]
この国の人ではないのかもしれん罠

422 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 01:30:42 ]
つまり海外って日本のことか

423 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 01:32:33 ]
2chを一つの国と考えてるかも試練

424 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 18:22:55 ]
C#で省略可能引数の既定値を指定する方法はありますか?
[opt]属性はOptionalAttributeを付けることで付けられるようですが

425 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 18:27:51 ]
引数のないメソッドでオーバーロードすればいいんでないの?



426 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 18:29:44 ]
>>424
(1) 素直にオーバーロードを使う
(2) 引数をNullableにする

427 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 18:35:19 ]
C#4.0をじっと待つ

428 名前:424 mailto:sage [2009/02/21(土) 18:43:53 ]
省略可能引数をC#で使いたいわけではなくて,
VBで省略可能引数にしたときの既定値のメタデータを付けたいだけなんです
リフレクションで既定値の取得もできるみたいですがやっぱり設定するのは無理なんですかね

429 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 18:53:19 ]
いや言ってる意味が。。

430 名前:423 mailto:sage [2009/02/21(土) 18:58:41 ]
ごめんなさい
VBで省略可能引数の既定値を設定した場合,
既定値の情報はメタデータとしてメソッドに付加されます。
それと同じ形式のメタデータをC#で付けたいということです。
具体的にはこういうILです
.param [1] = "既定値"

431 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 19:08:08 ]
リフレクタで言語をC#にして見てみたらどんな属性を付与しているのか分かるのでは?

432 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 19:12:59 ]
msdn.microsoft.com/ja-jp/library/system.runtime.interopservices.defaultparametervalueattribute.aspx
これとか違うの?

433 名前:424 mailto:sage [2009/02/21(土) 19:18:01 ]
>>432
[Optional, DefaultParameterValue("既定値")]でうまくいきました
ありがとうございます

434 名前:432 mailto:sage [2009/02/21(土) 19:19:19 ]
stackoverflow.com/questions/104068/how-do-vb-net-optional-parameters-work-under-the-hood-are-they-cls-compliant
正解っぽい。

435 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 19:21:30 ]
あ、解決済みか。
これやってもC#で省略可能引数が使えるわけじゃないみたいね。
でも、アセンブリをVBから呼び出す時には省略可能になる引数を持つメソッドを
C#で定義できるのは興味深い。



436 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 23:35:48 ]
逆の例もあるよ。
outはVBにないけど、Out属性付きのByRef引数はC#からout引数として扱われるというもの。

437 名前:435 mailto:sage [2009/02/21(土) 23:40:52 ]
あーなるほど、ByRefだけだとref引数扱いになるのか。

438 名前:デフォルトの名無しさん [2009/02/22(日) 01:49:55 ]
4.0の動的型付け変数と、3.0の暗黙的型付けって、どういうときべんりなの?
大幅に労力が削減されるような利用法が思い浮かばないんだけど。

439 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:02:04 ]
>>438
リフレクションやComInterop、やDLR対応の動的言語と相互運用する場合かな。
いろいろdymamicに期待してる人が要るけど、
dynamic型同士で + - * / などの演算はサポートされていないから、
プリミティブ型をdynamicにするのはナンセンス。


440 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:12:30 ]
>>439
多言語との相互運用という趣旨ならわかるけど、
静的言語として、こういうのを許容しちゃうのって、どうなんだろう
コンパイル時にはエラーにならなくて、実行時にしかエラーにならないんでしょ?

暗黙型付けも、自分で型をしっかり宣言して、それで使うということで、
ユーザの思い込みの余地を減らすことが大事ということで
静的言語のメリットがあると思ってたんだけど、
なんか曖昧的なものを受け入れるような気がしていやな感じがする。

441 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:18:27 ]
いやなのは使わなきゃいいだけ。


442 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:23:28 ]
使わなきゃいいって言われても、
自分だけで成り立つ世界じゃないからなぁ
嫌でも他人のソースを見ることになるわけで

443 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:32:26 ]
ヘジの言葉送ってやるよ。
「静的な型として動的な型を導入するんだ」

機能的には相互運用、さらに相互運用。プレゼンも基本それしか
出てこない。動的型前提な言語との相互運用、ライブラリを使う
ときに死ぬるんだよ現状。
しかも JavaScript だの IronPython だの DLR だの利用ケースが
増えていってやがる。

そういや雑談な話になるんだが、コンポーネントモデル周りは
ほとんど動的な要素で構成されてるよな。
なんでいまさら動的だからどうこうとかなるんだろうな

444 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:34:54 ]
今までだって動的なことできたわけでそれが楽になるだけ
C#はそんなに強い静的型付け言語じゃない

445 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:49:43 ]
そもそも相互運用するのが間違ってないか?
他方の言語は相互運用のために拡張して、他方の制限はない?
C#のいいところが失われているような気がするよ。



446 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:58:36 ]
糊言語に何をいまさら。
あとせっかく DLR で「汎用的な」動的型システムつくってくれる
んだから乗らん手はないし


447 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:02:18 ]
.NET使っておきながら動的はよくないやら相互運用が間違ってるやら

448 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:08:32 ]
それ結果論でしょ
動的言語をnetで使うためのものがDLRなんだから

449 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:17:38 ]
C#やjavaが複雑になって、新しい言語のダージリンdarjeelingができるわけですね
んで、それに対抗してC♭が開発されるわけです

それらの言語は多言語(特にC#)との相互運用性のために、
動的型型付けが導入されていきました。

そしてその間、ロシアはc++を使い続けました。

450 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:27:31 ]
var i = Class;
とかユーザ定義変換とかどうなるんだろ
あと、var j 、Class.Method(out j);とかあったらjは何型?

451 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:38:28 ]
>>450
コンパイルエラー

452 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:40:34 ]
>>449
個人的にヘジの言語設計者としてのすごいところは
ゴチャゴチャ要素を詰め込みまくって許容範囲内に
纏め上げる才能だと思う。

>>450
型システムとしては大きく変わらん。だからそれらはどれも
今までと同じように通らない。
簡単に言うと新しい dynamic 型という「静的型」が導入される
感じ。こいつはディスパッチ周りが特殊に扱われる。

453 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:48:47 ]
んで、後世に残るのは彼の手を離れたObjectPascalなんだろうな

454 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:53:19 ]
Option Explicit OFF Strict OFF/Infer OFFモードのVBも
dynamic対応してくれるのだろうか。
今は毎回律儀にリフレクション使ってるから遅くて遅くて。


455 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:57:59 ]
vbならどうだっていいでしょ なにやったって




456 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:05:00 ]
>>452
ごちゃごちゃ要素を詰めまくって、
複雑になった分の学習に必要な非生産性と、
複雑になった分の楽できるコーディングや設計による生産性の向上を比較したら、
どっちがどうなんだろう

学習はともかく、通常と比較したら生産性はどんだけあがんだろ

457 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:34:42 ]
心配は分かるがvarにしろdynamicにしろ絶妙にコントロールされてて、
想定以外の使い方をされないような工夫はしっかり施されている。
もしdynamicで四則演算の演算子が使えたり、
varがメンバやプロパティで使えたらそういう心配するような状態になるだろう。

458 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:41:15 ]
演算子のオーバーロードで崩壊してるじゃん
足し算なのに引き算とか可能だし (;゚д゚)ァ....

459 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:44:40 ]
gotoと同じく演算子のオーバーロードの乱用などは文法的に抑制しなくても、
常識的なプログラマーなら分かってるよね?といった風に信用してくれてる部分もある。
実際乱用されてるかい?
そういった部分も含めて絶妙と評価している。

460 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:46:51 ]
gotoはifだったりでけっこうできるけど
演算子は無いと面倒くさいJavaやってたからかな〜

461 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:53:45 ]
信用、常識をプログラマーの運用に求めるなら、そもそも静的型付けである必要がないだろ
なにいってんだ?

462 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:59:06 ]
何が常識かは人によって違うからな
そのための強制約と考えるのは普通たよな

463 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 05:06:19 ]
だからさじ加減が絶妙といってるのさ

464 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 05:09:16 ]
>>459
つかまぁ、3.0 の丁寧な仕事といい社内で使いまくって叩いた上
出てくるんだろうなって感じがするよな


465 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 05:33:38 ]
そしてmultiple宣言をしたclassには多重継承が許可されます
c++との相互運用のために

その中では、ポインタの使用も可能です
c++との相互運用のために

代入演算子のオーバーロードも可能にし、
いまではc++と同じ実装になっていますが、問題は発生していません
なぜならみんなが常識的なプログラマなので乱用されてはいないからです。

めでたしめでたし



466 名前:デフォルトの名無しさん [2009/02/22(日) 05:37:12 ]
名文なので、さらしあげ

467 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 05:45:48 ]
代入演算子はキャストで良いだろ

468 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:11:03 ]
>>457
dynamicはインデクサも演算子もinvoke式もなんでもアリだよ

469 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:26:43 ]
ソースきぼう

470 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:29:54 ]
code.msdn.microsoft.com/csharpfuture
ここでダウンロードできるNew Features in C# 4.0

471 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:33:57 ]
とりあえずC#にほしいもの。
・多重継承orMixin
・friend
・C++ばりの変態テンプレート
・Lispばりのマクロ

472 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:35:02 ]
ありがとん、読んでみる


473 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:38:14 ]
dynamic<IHoge> hoge =
 IHogeを実装してないけどHogeという名前のメソッドを実装してる型のオブジェクト;
hoge.Hoge();
どうせならこんな感じでダックタイピングできるようにしちゃえばよかったのに

474 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:52:17 ]
>>468
これのことですな。
>dynamic d = GetDynamicObject(…);
>int i = d + 3; // calling operators

出来ないといったのは正確ではなかったので訂正する。
OKのパターン
dynamic d = "abc"; string i = d + "xxx"; // "xxx"のstringが+オペレータを持っている。

NGのパターン
dynamic d = 10; int i = d + 3; // integerはプリミティブなので+オペレータを持ってない
dynamic d = "abc"; dynamic d2 = "XYZ"; string i = d + d2; // dynamic同士の演算



475 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:59:20 ]
>dynamic d = 10; int i = d + 3;
これがなんでNGなのかわからない
>>470のドキュメントによると,コンパイルは通るはずだよね
実行時にエラーになるってこと?
試せないけど,今のExpression Treeの仕様から類推すると大丈夫そうな気がするんだが
あとStringの+は演算子オーバーロードじゃなくて言語組み込みだよ



476 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 12:00:56 ]
>>474
ちと保留、これだと下の説明が付かないですね。
>dynamic d = GetDynamicObject(…); 
>int i = d + 3; // calling operators 

DynamicObjectが+オペレータをサポートしていれば大丈夫なのか。
それともCTPではまだ未実装の機能なのか。
うむむ・・

477 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 12:03:32 ]
スレチ

478 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 13:54:58 ]
なんか、「善意の人間がミスを犯しにくいようなしくみを工夫すること」と、
「悪意の人間の犯罪行為を防止すること」の区別がつかない人が2人ぐらいいるなw

479 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 14:01:52 ]
この辺は難しいよね。
馬鹿基準に合わせると天才の要求仕様に満たなくなる。自分としては自由度を高めて使う側のスキルアップを要求する方がいい時も多々あるけれど

480 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 16:24:50 ]
そこで複雑になったC#に変わり、Darjeelingの登場ですよ
Sun様おながいします

481 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 16:38:39 ]
javaはjava teaではなくてjava coffeeが由来とされてるから、名前を付けるならTorajaがいいと思う。

482 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 16:44:42 ]
javaの場合はscalaがはっちゃけてるからそっち行く可能性はあるかも。
.NETはC#自身がはっちゃけてるからな。他の言語はニッチ狙いなのがおおいな。booとかF#とか。

483 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 19:26:02 ]
>>475-476
その話、英語のフィードバックサイトで出てたけど、
現CTP版では “まだ” できないって話だったと思う。

484 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 01:41:29 ]
>>482
まぁScalaは使ってみると「うーん」という感じが否めないけどな。
JavaやC#に比べると、細かい部分で文法に無理が出まくってる。

やっぱりなんだかんだ言っても言語設計者のセンスって大事だなと思う。

スレチすまん

485 名前:デフォルトの名無しさん [2009/02/23(月) 16:22:55 ]
ウイルスバスターみたいに1PC1ライセンスみたいな感じの
個別認証をやりたいんですけど、どんなふうに実装するのが
いいんでしょ…?




486 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 16:52:17 ]
ネット使ってサーバにアクティベーションするしかないんじゃないの?

487 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 16:54:34 ]
>>485
「みたい」の指すところが全然分からん。
まずは要件定義とは何かを知ることから始めよう。

488 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:05:45 ]
MACアドレスに対して認証キーを発行とかすればいいんじゃない。

489 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:36:40 ]
簡単なファイラーを作っていて
Windows Vistaなどの検索ボックスのように、
スペースで区切ったキーワードにヒットするファイルの一覧を取得したいのですが、
何かスマート(簡単な)方法はないでしょうか?

今のところ、ファイル名に対して、
スペースで区切られたキーワードの数だけstring.containsを行うくらいしか思いつかないんですが、
この方法だと大量のファイルがあった場合に処理が遅くなってしまうと思うので。
# どんな方法でもファイル数が多ければ多いほど時間は掛かると思いますが、もう少し高速に行える方法があればと考えています。

490 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:49:07 ]
>>489
正規表現をコンパイルしたら速いんじゃないか?知らんけどな
Regex.Match(input, "AAA|BBB|CCC", RegexOptions.IgnoreCase | RegexOptions.Compiled);

491 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:52:32 ]
入力内容は毎回変わるのにその正規表現をコンパイルしたら
検索のたびにメモリを食って解放されなくなるぞ

492 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:01:52 ]
ファイル数なんてどんなに多めに見積もっても百万のオーダーとかじゃないのかな?
だとしたらベタにやっても抽出する処理そのものには1秒掛からないんじゃないか。
むしろボトルネックは言うまでもないんだろうけどディスクアクセスって気がする。

493 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:11:15 ]
index seviceを使う。

494 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:23:49 ]
>>490-493
皆様ありがとうございます。

>>492
なるほど。
一度試してみてパフォーマンスをみることにします。

>>493
そんな方法があったとは思いつきませんでした。
軽くググってみると
209.85.175.132/search?q=cache:94DRo_UXXIEJ:repse.blogspot.com/2008/02/c_20.html+C%23+index+service&hl=ja&ct=clnk&cd=14&gl=jp&client=firefox-a
確かに…、少し調べてみようと思います。

495 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:37:43 ]
インデックスサービスってWindowsにある程度詳しいユーザはたいがい止めてるよ



496 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:51:30 ]
api公開されてアプリケーションから使えるあまり素性が怪しくない無料のエンジンって言うと選択肢それぐらいしかないんじゃない?

497 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 07:31:14 ]
ジェネリックコレクションの保存ってどうしたらいいんですか?

public class MyList<T> : List<T>
{
 public void Load(string fileName)
 {
  using (Stream stream = new FileStream(fileName, FileMode.Create))
  {
   using (BinaryWriter writer = new BinaryWriter(stream))
   {
    foreach (T item in this)
    {
     writer.Write(item);//コンパイルエラー
    }
   }
  }
 }
}

498 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 07:34:50 ]
シリアライザ

499 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 07:34:52 ]
>>497の補足
使いたいTはintやlongやdoubleなどの値型だけです。

500 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 07:40:15 ]
typeidでわけるしかない。

501 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 07:56:44 ]
おかげで道がひらけました
ありがとうございます

502 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 08:14:30 ]
>>497
無理やりだけど、

var write = typeof(BinaryWriter).GetMethod("Write", new[] { typeof(T) });
write.Invoke(writer, new object[] { value });


503 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 08:24:47 ]
LoadでWrite

504 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 11:45:19 ]
XmlSerializer使えよ

public void Save<T>(List<T> list)
{
byte[] bytes;
using (MemoryStream ms = new MemoryStream(0x10000))
{
new XmlSerializer(typeof(List<T).Serialize(ms, list);
bytes = ms.ToArray();
}

using (Stream stream = new FileStream(fileName, FileMode.Create))
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(bytes);
}
}

505 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 17:24:53 ]
>>497
Loadで保存w



506 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 18:45:49 ]
>>502が簡単でよさそうだがBinaryReaderでもやろうとすると面倒だな
なんでreadとwriteでこんなにも非対称なコードになるんだ

507 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 18:49:31 ]
objectで返したらボックス化が発生するからな
標準のライブラリでRead<T>//(注)プリミティブ型のみ
なんて素人臭いことするわけにもいかないし

508 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 18:56:57 ]
プリミティブ型じゃなくても、そんな大げさにならずに簡単にできるの?

509 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 19:11:28 ]
参照型のフィールドを含まない構造体限定なら
Marshal.StructureToPtrみたいな外道な方法を用いれば簡単にできる

510 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 19:13:19 ]
ふんじゃあ、素人臭くてもいいじゃんw


511 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:21:41 ]
他のアプリケーションのアイコン上に、あるテキストファイルをドラッグする処理(と同じ事)を
自作アプリケーション内で行いたいのですが、どのような方法があるのでしょうか・・・?
ドラッグ対象となるアプリケーションはコンソールアプリケーションです。
てぃんこでかい人よろしくおねがいします。


512 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:23:31 ]
Main() の String[] args から取れなかったっけ?

513 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:28:21 ]
その「他のアプリケーション」をプログラムから起動したいってことなら
System.DiagnosticsのProcess
エクスプローラで実行ファイルに何かのファイルをドロップするのは
その何かのファイルを引数に実行ファイルを起動するのと同じ

514 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:32:53 ]
>>513
とても有益なヒントありがとうございました。
ちんこもでかくてありがとうございました。
試行錯誤してみます。


515 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:42:24 ]
ちんこ小さいから回答できなかった



516 名前:511 mailto:sage [2009/02/24(火) 21:49:03 ]
うーーん。以下のようにしても
ファイルを指定せずに実行ファイルを起動したような動作になっちゃう・・・

proc.StartInfo.Arguments ="あるテキストファイルのパス";
proc.StartInfo.FileName ="受け取り側の実行ファイルのパス";
proc.Start();

517 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:51:11 ]
ちんこついてないから答えられない

518 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:51:29 ]
>>516
「あるテキストファイルのパス」に空白が含まれるなら、""で囲まないとダメ。
具体的には、
proc.StartInfo.Arguments = "\"あるテキストファイルのパス\"";

519 名前:511 mailto:sage [2009/02/24(火) 21:54:34 ]
こんな感じでしょうか?
""ではかこんでいます。

proc.StartInfo.Arguments = @"C:\sample.xml";
proc.StartInfo.FileName = @"C:\Document and setting\APPLE.exe";
proc.Start();

520 名前:511 mailto:sage [2009/02/24(火) 22:05:58 ]
>>518
あああいけました
いけました。ありがとうございました。
ちんこにもよろしくお伝えください。

521 名前:sage [2009/02/24(火) 23:19:27 ]
RichTextBoxのスクロールバーをつまみで移動させると
ピクセル単位で動くのですが、TextBoxのように行単位で動かせるような方法ないですか?

wawatete.ddo.jp/exec/program/cs/rtb_scrbarrtb
にあるような別途スクロールバーを作りたくなくて
RichTextBox備え付けのスクロールバーで実現したいのですが。。。

RichTextBoxのWndProcでつまみスクロールのイベントが来たら
SendMessage(rich1.Handle, EM_SCROLL, SB_LINEDOWN, 0)
で独自で1行スクロールとか試みたんですが、微妙にずれてしまって。。。

ちなみに上記URLと同じ目的ですが、RichTextBoxの左に
行番号を作りたいのですが、テキストが中途半端な表示されると
困るために、行単位でスクロールさせたい次第です。

教えてエライ人!

522 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:37:28 ]
>>521
ボクはGDI+を使って書いた

523 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:38:33 ]
さすがに行番行表示までやるならはじめから自前で作るべきだな

524 名前:521 mailto:sage [2009/02/24(火) 23:48:13 ]
>>522
kwsk・・・、じゃなくておさわりだけでもいいんで
どんな流れか教えてください。

因みに自分は、クライアント領域が表示されてる分だけ左側に
Labelを配置して、スクロールされたら配置されてる全Labelに
メッセージなげて、Label.Textを変えて行番号を表示する方式を
考えてました。

525 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:50:13 ]
>>506
Reader 側はもっと無理やりだけど、↓でできる。

var read = typeof(BinaryReader).GetMethod("Read" + typeof(T).Name, new Type[0]);
return (T)read.Invoke(reader, new object[0]);




526 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:53:45 ]
ググれ若人

527 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 00:49:32 ]
VS2008EEのC#でwebBrowser使ってpdfを表示したまま終了すると必ずエラー出すんだけど、これってどうにかできないの?
AdobeReader8ならエラー出なくて9だと出るって事はしばらくしたら改善される?

Delphi2006なら大丈夫だけどあっちはunicodeのテキスト読むのめんどいし、いい方法はないものかね?

528 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 01:10:55 ]
>527
別のページを表示してから終了とか頑張ってみたけどどうしようもなくて
終了時だけなのでエラーを握り潰して無視したよ。

529 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 10:04:22 ]
>>497
こんなのはどうかね
public abstract class ReaderWriter<T> : IDisposable
{
protected FileStream stream;
protected BinaryWriter writer;
protected BinaryReader reader;
public abstract void Write(T item);
public abstract T Read();
public virtual void Seek(long offset, SeekOrigin origin) { this.stream.Seek(offset, origin); }
public void Dispose()
{
if (this.reader != null) this.reader.Close();
if (this.writer != null) this.writer.Close();
if (this.stream != null) this.stream.Close();
}
}
public class IntReaderWriter : ReaderWriter<int>
{
public IntReaderWriter(string fileName)
{
this.stream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
this.reader = new BinaryReader(this.stream);
this.writer = new BinaryWriter(this.stream);
}
public override void Write(int item) { this.writer.Write(item); }
public override int Read() { return this.reader.ReadInt32(); }
}

530 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 10:05:22 ]
>>529の続き
public class MyList<T> : List<T>
{
public void Save(ReaderWriter<T> writer)
{
if (writer == null) return;
foreach (T item in this) writer.Write(item);
}
public void Load(ReaderWriter<T> reader, int count)
{
if (reader == null) return;
for (int i = 0; i < count; i++) this.Add(reader.Read());
}
}

static void Main(string[] args)
{
MyList<int> list = new MyList<int>();
using (IntReaderWriter writer = new IntReaderWriter("test.bin"))
list.Save(writer);
using (IntReaderWriter reader = new IntReaderWriter("test.bin"))
list.Load(reader, 100);
}
終わり

531 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 12:51:34 ]
型ごとにReaderWriter<T>実装しないといけないなら全く意味ないなそれ
普通にSaveInt32とか型ごとに保存・読み込みメソッドを定義するのと変わらん

532 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 13:53:57 ]
generic<typename TSrc, typename TDst>
where TSrc : value class where TDst : value class
void BlockCopy(
 array<TSrc>^ src, int srcOffset, array<TDst>^ dst, int dstOffset, int count) {
 using namespace System;
 pin_ptr<TSrc> pSrc = &src[0];
 Byte* pSrcByte = reinterpret_cast<Byte*>(pSrc);
 pin_ptr<TDst> pDst = &dst[0];
 Byte* pDstByte = reinterpret_cast<Byte*>(pDst);
 for (int i = 0; i < count; i++) pDstByte[srcOffset + i] = pSrcByte[dstOffset + i];
}
こういうのをC++/CLIで用意しておけば解決w

533 名前:デフォルトの名無しさん [2009/02/25(水) 14:35:22 ]
Application.DoEvents();
と等価の処理を別コードで書きたいんだけど
なにかいい方法はないかなぁ…
PeekMessageとかコレ系つかうとたまに応答なし
になってしまう。

timerとかBackGroundworkerだとプログラムが
みにくくなってしまうし悩んでます。


534 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:42:03 ]
AというクラスにAクラスを返す
例えば
public virtual A CreateA(){ return new A(); }
があります。
このAを継承した
BというクラスはこのCreateAをオーバーライドしてBを返すようにしたいのですが
こういう事はできますか?
CreateBを新たに作らないと駄目ですか?

535 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:46:45 ]
>>533
timerやbackgroundworkerで見にくくなる理由も不明だが、
Application.DoEvents()ではだめな理由も謎だな。



536 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:48:25 ]
>>534
class B : A {} だったら
public override A CreateA(){ return new B(); } でいいじゃね。
戻り値の型をBにしたいなら、CreateBを作ることになるだろうけど。

537 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:52:55 ]
そうですか…有り難うございます

538 名前:533 [2009/02/25(水) 14:58:27 ]
>>535
d.hatena.ne.jp/yaneurao/20081125
DoEventsを使うとたまに応答なしになったりひどい挙動を起こすことが
あるんですよ。
これを完全に回避したいんです。


539 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:00:24 ]
class Base{
  public virtual Base Create();
}
class Base<T>:Base where T:Base<T>, new(){
  public override Base Create(){
    return (Base)(new T());
  }
  public T Create(){return new T();}
}
こんな方法もあるかも。未テストかつ変態的なので動くか不明。

なお、使う時は
class B:Base<B>{
 ...
}
class C:Base<B>{
 ...
}
みたいにする。

540 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:00:40 ]
もう一つ良いですか?
同じクラスAに
class A
{
public const int i = 100;
public void D()
{
Console.Write(i);
}
}

とこれを継承したクラスB,に
public const int i=10;
としてBからDを呼び出すとiは10として処理されますか?
100として処理されますか。

541 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:03:18 ]
あ、間違った。
class Base{
  public virtual Base CreateBase();
}
class Base<T>:Base where T:Base<T>, new(){
  public override Base CreateBase(){
    return (Base)(new T());
  }
  public T Create(){return new T();}
}
みたいにメソッド名は変えなきゃ駄目だ。
後、使い方の方も(まあ気が付くと思うけど)
class B:Base<B>{
 ...
}
class C:Base<C>{
 ...
}
ね。

542 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:05:09 ]
>>540
それくらいなら、やってみりゃいいじゃん。

543 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:09:50 ]
>>538
等価のコードを書いたら結局Application.DoEventsと同じ作用をもたらすだろ
素直にイベント駆動の脳になれ

544 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:10:27 ]
>>540
やってみました
継承元の100が入ってきますね

どうにかして10にすることは出来ませんか?
>>539
やってみます

545 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:11:18 ]
virtualなプロパティにすればよろし



546 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:15:34 ]
>>545
できました有り難うございます。

547 名前:539,541 mailto:sage [2009/02/25(水) 15:44:40 ]
>>544
共通の基底クラスが必要なければ、

class Base<T> where T : Base<T>, new()
{
  public static T Create() { return new T(); }
}
class A : Base<A> { }
class B : Base<B> { }

でも可だと思う。A:Base<foo>と書く時のfooはAのみに制約されて、それ以外を書くとコンパイル
エラーではねられる。継承先のクラスのインスタンスをプロパティの設定などの処理とともに生成
するメソッドを持つクラスを作る(変態的だけど)わりと一般的なテクニック。

548 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:48:35 ]
>>547
成る程
よく分かりました
ついでにやっと何となくwhereが分かりました

549 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:49:24 ]
>>548
class B:Base<B>{}があると、class A:Base<B>はコンパイルエラーにならないので注意してね。

550 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 22:09:43 ]
>538
タイマーにしておけ。
見やすくなるように整理して書くだけだろ。

551 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 22:32:27 ]
処理内容にもよると思いますが、

void BigMethod()
{
...
    if (〜) { ...//百行くらい }
    else { ...//百行くらい }
...
}

よりも、

void BigMethod()
{
...
    if (〜) { Method1(...); }
    else { Method2(...); }
...
}

Method1(...);//百行くらい
Method2(...);//百行くらい
...

の方が大抵の場合で速くなるのはなぜでしょう?

552 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 22:38:57 ]
>>551
気のせいじゃね?

553 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 22:40:53 ]
↓のようなリストを作成しており、条件としてKeyだけを
用いてそれと一致するbdListのindexを取得したいのですが
foreachなどで一つ一つチェックするしかないのでしょうか。

BindingList<Data> bdList;

public class Data
    {
        private string _Key;
        private string _Value;
        private int _Count;
        public string Key
        {
            set { this._Key = value; }
            get { return this._Key; }
        }
        public string Value
        {
            set { this._Value = value; }
            get { return this._Value; }
        }
        public int Count
        {
            set { this._Count = value; }
            get { return this._Count; }
        }
    }

554 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 22:47:54 ]
>>553
リスト構造なら辿るしかないだろ

そういう意味じゃないならlinqとか

555 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:08:17 ]
>551
実行時に最適化されてるんだよ。
呼び出しの初回にメソッド全体がJITコンパイルされるか小さなメソッド単位でJITコンパイルされるかだよ。
細かなプロパティやメソッドの呼び出しなんか結構インライン展開されてるしある程度分割した方がいいと思うよ。

試しにBigMethod内で呼び出しているけど条件に合わなくて呼び出されない箇所で
参照してるアセンブリのメソッドを削除してdllを差し替えてそのまま実行すると
上はBigMethodメソッド呼び出しで実行される前のタイミングで落ちるけど、
下はMethod1かMethod2が不完全でも呼ばれなければ動いたりする。

>553
.Select((data, index) => new {Data=data, Index=index}).ToLookup(i => i.Data.Key).ToDictionary(i => i.Key, i.First().Index)["探したいキー"]
とでもすればいいんじゃないかな。
素直にforで辿った方がいいよ。



556 名前:553 mailto:sage [2009/02/25(水) 23:13:06 ]
>>554
有り難う御座いました。2005環境なのでLinqは使えません…。
.Containsや.IndexOfが内部的にforeachで回しているのであれば
諦めつくのですが、件数が増えてきたときに効率が悪いかと思いまして。
データ構造を見直した方がいいんですかね…。

557 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:13:35 ]
LINQ使う場合、
bdList.OfType<Data>.Where(d=>条件).Select(d=>bdList.IndexOf(d));
が書き方的には自然だけど、IndexOfのコストが絶対に問題になる。
Enumerable.Range(0,bdList.Count).Where(i=>bdList[i].Key==ほにゃらら);
とかすべき。

558 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:15:52 ]
そりゃ普通のリストならO(n)掛かるのはどうにもならんだろ。

559 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:17:52 ]
>>556
LINQ使えないのなら、
Enumerable.Range(0,bdList.Count).Where(i=>bdList[i].Key==ほにゃらら);
と同等の処理をforで書けば良いと思う。.Containsや.IndexOfがO(N)で嫌だという
感覚は正解で、インデックスによる参照がO(1)だから、そっちを使うべき。

560 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:31:07 ]
内部にDictionary<string, Data>持っとくとか

561 名前:553 mailto:sage [2009/02/25(水) 23:42:04 ]
親切に有り難う御座いました。
Dictionaryでもう少し効率良く出来るのであればそれも
視野に入れて色々試してみます。

562 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:43:42 ]
>>560
Dictionaryって、重複を許すモノホンのハッシュじゃないよね?

563 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:50:29 ]
ごめん、>>562はハッシュについて勘違いしていた。
それと、そもそも異なるValueに同じKeyが対応する事がないのなら、確かにDictionary一択だね。

564 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 02:16:03 ]
>>555
1回のみしか呼ばれないならJITコンパイル時の時間分だけ短縮しているというのは理解できるのですが、
BigMethod自体が複数回呼ばれる場合でも下の方が速いというのがちょっとわからないのですが…
呼び出し回数は、で、BigMethod1回につきMethod1またはMethod2が1回なのですが、
複数回呼ばれる間にどちらも呼ばれます。回数自体はそこまで多くなく、メソッド呼び出しのオーバーヘッド
は大きくないはずですが、なぜ分割した方が速くなるのでしょうか?
処理をメソッドに分割した方がうまく最適化されやすいのでしょうか?

565 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 03:28:31 ]
レジスタ変数をうまいこと選択できるとか?
いや知らんけど。



566 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 03:28:38 ]
>>564
基本的なことだけど速度計測の時に最適化が有効になってるか確かめた?

デバッグビルドは最適化が働かないよ。
リリースビルドでもF5実行の場合は最適化が抑止されるよ。

567 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 10:20:45 ]
初歩的な質問で恐縮ですが
C++のSTLとかアルゴリズムを利用したコードってC#でも使用できますか?

568 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 10:28:12 ]
コードってC++のソースコードなのかコンパイル済みのコードなのかどっちなんだ

569 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 10:28:33 ]
>>565
一応BigMethodをビルドしてからReflectorでILを見てみると、.maxstackの値が22から10に減っていました。

>>566
Debug、Releaseビルドどちらの場合でも分割している方が速かったです。
一応実行時はリビルドを実行してからVS上ではなく直接exeを起動して計測しています。

570 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 10:46:38 ]
>>568
どちらでも可能であればかまいません
C#でSTLを使いたいのです

571 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 10:47:56 ]
無理 テンプレートが使えないからな
C++/CLIでSTL/CLRでも使えば?

572 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 10:53:58 ]
C#使う以上は問答無用でSystem.Collections.Generic使え

573 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 11:16:30 ]
拝承

574 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 11:21:53 ]
調べてないのだけど、C++/CLIってunsafeキーワード書かなくても、
ポインター使ったプログラムを掛けるのかな?

575 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 11:24:05 ]
書けるよ。
manageとunmanageの区別は自分で意識してやらないとならんが。



576 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 11:31:35 ]
コンパイルオプションでポインタを使えなくすることもできるけどな

577 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 11:32:18 ]
pinできなくなるってこと?

578 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 12:05:27 ]
pin_ptrはできる。GCHandleType.Pinned使ったGCHandle.Allocと意味的に同じだし。
でもT*にキャストはできない。
pin_ptrからIntPtr作ることはできてMarshalでアクセスはできる。
つまりは/unsafe使わないC#とほぼ同じ。

579 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 12:52:53 ]
あくまで相互運用のためにあるので全部がC++/CLIのアプリケーションは作るな莫迦者って誰かが言ってたな

580 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 13:03:47 ]
MS自身そういうスタンスだからな
STL/CLRとかいう迷惑なものはなかったことにするべき
こんなもんがはびこったりしたら何のための.NETかわからなくなる

581 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 13:26:44 ]
いや、.NETのジェネリックは糞過ぎるから、
テンプレートとして使えるコレクションライブラリは欲しい。

582 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 13:40:18 ]
C++コードとの互換性を含めるべきだったんだよ、MSは!

583 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 15:01:34 ]
プリプロセッサで変態マクロが定義できる言語には二度と触りたくない。マクロのすごい版として
テンプレートを導入したC++は何をかいわんや。オブジェクト指向的な構造さえしっかりしていれば
むやみやたらな自由度なんていらない。.NETのジェネリックはコードが変態にならない点で優れて
いると思う。その分できない事が多すぎるというのは理解するが。

584 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 15:07:25 ]
そしてやっぱりダージリンの新開発待望論が高まる

585 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 22:47:21 ]
自分が書いたものですら、昔のものはまるで読めないような変態言語は勘弁して。



586 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 23:05:07 ]
今の仕事が左から流れてきたデータをより分けたり下から流れてきたデータと組み合わせたりして
右に流すようなやつなんだがLINQ使い倒せて実に気分がいい
趣味でいじる分にはピンと来ないgroup byとか爽快だ
だが後でメンテする人は果たして読めるんだろうかアレ
いやまあできる限り読みやすく書いてるつもりだが

でも最大の責任は同じ名前のクラス3つも4つも作った奴だから文句はそいつに言ってくれ
なんで一つのメソッド内に別々のInformationクラスが3つも出てくるんだ畜生

587 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 23:30:55 ]
ネームスペース別でも、機能が似たようなInformationが、
3つ同じ名前で実装されてるってか?w


588 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 23:46:17 ]
それは酷いww

589 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 00:09:44 ]
まさか担当者ごとにネームスペースを分けちゃいないだろうな。
Kaishamei.Suzuki.Information, Kaishamei.Sato.Information みたいな……

590 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 00:52:18 ]
苗字だけじゃなくちゃんと名前でわけてるわ!

591 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 07:51:01 ]
ならおk

592 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 09:05:09 ]
でも将来的に似てても一部違う機能を実装するならそれもありとかでは?
と素人が申しております

593 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 20:03:12 ]
便乗質問。

2chにはあまりこういう仕事してる人いないかもしれないけど、
例えばFooTech社のBAR1234というインターフェイスカード(DIOとか
モーションコントローラとかいろいろ)を操作するためのクラスライブラリを
作るときって、名前空間名はどうしてる?

FooTech.BAR1234 ?
MyCompany.BAR1234 ?
MyCompany.FooTech.BAR1234 ?

594 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 20:26:33 ]
三番目以外にする理由がわからない

595 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 20:41:43 ]
発注元にもよるんじゃ



596 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 01:49:05 ]
>593
3番目でやってるよ。
結局名前空間だけじゃなくアセンブリも分けてあって
プラグインのように呼び出せるようにしてある。

597 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 05:22:52 ]
仮面さんとこから転記

名前空間のネーミング方法
CompanyName.TechnologyName[.Feature][.Design] というパターン。

例: Uchukamen.MultiMedia.Movie.Viewer
.NET Framework 名前空間で使用されている名前は使わない。
Class Console →だめ。
意味的に適切な場合は、複数形の名前空間名を使用する。
例: Collections
例外: 省略形 System.IOs 誤 → System.IO 正。
名前空間とクラスに同じ名前を使用しない。

namespace MySystem;

class MySystem; // 誤り。名前空間とクラスに同じ名前を使用しない。


598 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 07:02:32 ]
趣味で作ってる場合CompanyNameはどうすればいいんだ・・・
本名使うには抵抗が・・・

599 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 07:11:28 ]
趣味ならウェブサイト名とか。公開しないなら個人名でもいいだろう。

600 名前:デフォルトの名無しさん [2009/02/28(土) 08:09:42 ]
600

601 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 10:23:05 ]
趣味やオープンソースならプロジェクト名だけでいいと思う

602 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 11:56:24 ]
メッセンジャーを作ろうと思うのですが、
どうやったらインターネット越しの相手と通信できますか?

603 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 12:22:53 ]
キミニハムリダ

604 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 14:00:03 ]
カムサハムニダ

605 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 14:03:22 ]
ヨンドンサリの



606 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 14:18:49 ]
UPnPでポートをあけてpushできるようにして、
マイクから音声を取得するようにして、
その音声を圧縮して、tcpかudpで送って、それを受信側で元に戻して再生するお

UPnPつかわないで擬似的にpushしてるソフトあるけど
どうやってんだろ

607 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 14:23:27 ]
擬似的なpushって受信側からのポーリングじゃね

608 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 14:28:51 ]
>>599
ニックネーム

609 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 18:26:02 ]
>>608
じゃおれの場合はHannsamubo-iにすればいいのか

610 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 22:06:48 ]
おまえ、ハンサムボーイって呼ばれてるのか
イジメじゃないか

611 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 22:17:46 ]
>>610
ごめんごめんhandsomeboyの間違いだった

612 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:21:45 ]
>>598
GUID

613 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:43:04 ]
>>612
おまえとは仕事したくないなwwwww

614 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:56:29 ]
むしろうちに欲しい

615 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:57:34 ]
仕事欲しい



616 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:58:37 ]
彼女欲しい

617 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 02:04:12 ]
仕事さえあれば彼女ができる自信はある

618 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 02:35:51 ]
いたって簡単なことだが、ずっと家に居たって何も始まらない。
2chなんてすぐに断って家を発って職安に行くんだ。

619 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 02:38:30 ]
いやーん

620 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 03:52:57 ]
>>618
じゃあ一緒に行こうか

621 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 15:47:48 ]
現地集合な

622 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 16:54:25 ]
NEETでなぜ悪いっ

623 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:03:45 ]
悪いに決まってるだろJK
親や周りの人に負担ばかりかけて
無駄に消費するだけして
周囲や社会には何も貢献してないんだから

624 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:34:33 ]
>親や周りの人に負担ばかりかけて
>無駄に消費するだけして
>周囲や社会には何も貢献してないんだから
まさに2ちゃんねるにレスすることとまったく同じだな

625 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:13:01 ]
ばーか
上の世代が貯金ばかりして経済が停滞してるというのに
ニートはそれを消費に回して経済活性化に寄与してるんだよ




626 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:19:21 ]
>>622
.NETでなぜ悪いっ

に見えた

627 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:36:07 ]
悪いに決まってるだろJK
メモリやディスクに負担ばかりかけて
無駄にリソースを消費して
周囲や社会には何も貢献してないんだから

628 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 20:45:01 ]
>メモリやディスクに負担ばかりかけて
>無駄にリソースを消費して
>周囲や社会には何も貢献してないんだから
まさに2ちゃんねるにレスすることとまったく同じだな

629 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 20:51:56 ]
NEET、NEETを語る

630 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 10:40:11 ]
NEETな午後3時

631 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:04:39 ]
TCPListenerを使って接続を受け付けるために、
BeginAcceptTcpClientで接続を受け付けています。

while (isAlive == true)
{
tcpListener.BeginAcceptTcpClient(new AsyncCallback(TCPListenAcceptCallback), tcpListener);

autoResetEventTCPReceive.WaitOne();
}

ここで、プログラムを終了させるためにisAliveをfalseにしているのですが、
BeginAcceptTcpClientでブロックされてしまい、プログラムがいつまでも終了
しない状態になってしまいます。

そもそもプログラムの終了方法が悪いのかもしれませんが、
何か良い方法があれば教えてください。

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

632 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:30:17 ]
せっかくBegin使ってるのにその直後に無限待機しちゃ意味無いじゃん
適当にWaitOneにタイムアウト秒数与えなよ

633 名前:631 mailto:sage [2009/03/02(月) 22:02:43 ]
>>632
ありがとうございます。
WaitOneにタイムアウトを持たせることで解決しました。
# 若干プログラムの終了まで時間が掛かりますが、問題になる範囲ではないですよね?

634 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:29:23 ]
CLR ProfilerでFormアプリケーションのメモリ生成を見ようとしいます。CLRプロファイラのメインフォームからアプリケーションをスタートするとアプリケーションはスタートするんですが、
"Waiting for application to start common language runtime" とでたままプロファイラがアプリケーションにアタッチできません。
デバッガーで見るとCLRProFiler.MainForm.WaitForProcessToConnectの中のpipe.Readで毎回IO.Exceptionが発生しています。
例外内容は"プロセスがパイプの他端を開くのを待っています。"とのこと。
ぐぐってみると同じような現象が出ているのはあったんですが、サービスで発生した場合でアイデンテイティをシステムで立ち上げるとかうんたら。
forums.asp.net/p/368720/372560.aspx
アプリケーションの場合にどうするのかわかりません・・・
securityがらみぽいのですが、これは環境がVistaだからでしょうか。

635 名前:634 mailto:sage [2009/03/03(火) 12:30:25 ]
事故解決。
CLRProfiler.exeをエクスプローラから右クリで管理者として実行でいけました(=゚ω゚)ノ
でもタスクマネージャーでワーキングセットが500Mぐらい食って減らないもののプロファイルしたかったんだがProfilerでみても、10Mぐらいしかアロケートしてないといわれる・・・
見方が悪いんだかよくわからん。逝ってくるノシ



636 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 14:39:07 ]
出来上がったexeをバイナリエディタで覗くとプロジェクトのフルパスが埋め込まれちゃってるんだけど、消す方法ある?


637 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 14:53:06 ]
バイナリエディタがあるなら消せるだろ。

638 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 14:53:12 ]
プロジェクトのじゃなくてpdbファイルのじゃね?
pdbファイルの出力ならプロジェクトのプロパティでビルドの詳細設定>デバッグ情報あたりで制御できる

639 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 17:05:04 ]
>>637
消して動作に影響あるかもしれんのじゃないか?


640 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 21:28:21 ]
ハッシュで弾かれないか?

641 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 21:58:53 ]
pdbはデバッグ用だろ

642 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:52:45 ]
>636
デバッグビルドしてない?と思ったけど
VS2005かVS2008からReleaseビルドでもpdbを作るのがデフォルトになってるんだった。
ビルドの詳細設定から出力のデバッグ情報をnoneに変更する。

643 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 07:37:47 ]
おお本当だ
Release設定のデバッグ情報noneで埋め込まれなくなった
みんなありがとう

しかしこれ気付かずにそのままリリースしたら、プロジェクトのフォルダに個人名使ってたら色々と問題になりそうじゃない?


644 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 07:45:30 ]
普通の観察力があれば気づく

645 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 07:48:19 ]
dotfucator使ってればその辺の情報は消えてるだろ



646 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 08:57:50 ]
"要.NET Framework3"でググって出てきたのをいくつか見てみたけど消してる人は少ないな


647 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 09:13:34 ]
普通はexe(dll)と設定ファイル以外出さないでしょ

648 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 10:47:53 ]
pdbファイルがどうこうの話じゃなくて、本名バレしてる人いるんじゃね?って話
本名でユーザー作っててマイドキュメントの下にプロジェクト置いてたらアウアウ


649 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 11:07:34 ]
そういう事故がままあるからうちではユーザー名に本名を使わなくなった

650 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 11:20:06 ]
タスマネのユーザー名を消さずにスクショうpしてあうあうとかリアルにあるからな

651 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 14:12:41 ]
ユーザ名は嫁の名前使ってます。

脳内嫁ですが。

652 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 14:44:15 ]
>>646
蛇足だが、100%アンマネージドなVC++アプリでも
デフォルトのリリースビルドの設定だとPDBのパスが埋め込まれるのは同じ。

653 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 15:27:08 ]
リリースするときって、msbuildとか使ってバッチビルドするもんでしょ

654 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 16:27:40 ]
高度な話題禁止!

655 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:05:03 ]
高度な話はしてないので続けてOK



656 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:43:50 ]
>>653
おれはいまだにGNUのmake

657 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 03:35:05 ]
俺は何も考えずにReleaseに切り替えてリビルドして出来上がったexeを配布してるな

658 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 12:01:20 ]
うちは専用のビルド用PCでやってるんで個人名とか入らない。

659 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 12:13:36 ]
レポジトリにコミットしたらHudsonが自動ビルドしてくれる

660 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 19:33:22 ]
VS2008のC#でプログラムを組んでいます。

たくさんの線や長方形、円をアルファ値30%ぐらいで重ね合わせて描画しています。
これを印刷しようとして躓いてしまいました。
プリンタへは、きれいに印刷できました。でも、プリンタドライバ型のPDF出力を行うと、
不完全なディザみたいになってしまいます。どうも、PDF自体が半透明な描画ができないようです。

それで、いったんBitmapに描画してから、プリンタに転送しようとしました。
サイズが小さいときにはこれでPDF出力もうまくいったのですが、A3サイズになると、プリンタの
解像度と用紙サイズでBitmapを作成しようとした時点でエラーになってしまいました。
縦横のピクセルサイズが大きすぎるのだと思います。

こんなときはどうすればいいのでしょうか。やっぱりバンディングみたいにすこしずつ処理でしょうか。



661 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:08:52 ]
>>660
大きすぎるならそのBitmapを縮小すれば良いんじゃね?

662 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:36:47 ]
A3が11.7" x 16.5"で、300dpiだと3500px x 5000pxあたりか。

そのくらいでエラーになるのはおかしい。

663 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:23:44 ]
本当に仮想プリンタのせいだとしたら、
まず仮想プリンタを変えて試すべきじゃないんだろうか?

フリーのだけでも数種類あったはずだよね?

664 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 22:24:47 ]
ありがとうございます。
>>662
仮想プリンタ側で4800dpiみたいな設定ができて、C#プログラムの中からはこれが
そのまま解像度として見えています。
現実的には、600dpiぐらいで良いので、それぐらいで考えてみます。

>>663
Primo、BullZip、Acrobat Pro(これは評価版)を試してみたのですが、色のアルファ
ブレンドはうまくできませんでした。

665 名前:661 mailto:sage [2009/03/08(日) 23:02:24 ]
>>664
おいてめーw形式だけでも俺様に礼の一文を書けwww



666 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:11:08 ]
>>665
ああっすみません。
4800dpi→600dpiは>>661さんのご提案を取り入れての判断でした。

667 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:43:20 ]
その程度のことで礼を求めるなよ
だせえ

668 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 00:24:11 ]
さすが大物さんは違いますね。
まあ会社でも鼻つまみ者だろうけどw

669 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 00:48:19 ]
中学生でも思いつくようなアドバイスで霊を要求するってw

670 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 01:20:05 ]
661は馬鹿なの?

671 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 01:39:59 ]
うん

672 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 02:35:30 ]
冗談もわかんねーのかよwお前らほんと低脳だなwww

673 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 02:42:08 ]
そんなに悔しかったのか(プ

674 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 02:52:26 ]
雑誌のグラビア写真でも300dpiくらいだよな


675 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 09:25:54 ]
661が馬鹿なのはどうでもいい
それより664が大人なのが重要

こんな人間に私はなりたい



676 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 14:04:49 ]
C# Express2008にてC#を勉強中です。
質問なのですが、ToolStrip上にtoolStripLabelを置いて、そのバックカラーを
変更したいのですが、BackColorプロパティーをいじっても変化ありません。
他のどこをいじれば変更できるのでしょうか?
そもそも、変更できない?


677 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 14:49:38 ]
あんまり簡単ではないがToolStripRendererの派生クラスで制御できる
一通りヘルプの解説読んでググってみたりしても"さっぱり"理解できないのなら手を出すには早いかもね

678 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 14:56:15 ]
Visual Styleに依存するのでむやみに変更するのは非推奨

679 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 15:28:37 ]
皆様、ありがとうございます。

なるほど、そのtoolStripLabelが乗ってるtoolStripのRendererModeで動作が変わるんですね。
RendererModeをSystemにしたら変更が反映されました。
ありがとうございます。



680 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:47:19 ]
ボタンクリックイベントとかで一時的に使ったBitmapとかImageってそこの処理抜ける前にDisposeした方がいいの?
それともそのスコープ抜けたときに勝手に開放してくれる?


681 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:53:40 ]
Disposeしたほうがいい

682 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:24:03 ]
一時的に作ってローカルな範囲だけで使って
外に漏らしてないと断言できるならならあえてDisposeしない理由がない

683 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:47:50 ]
>>680
using使おうや


684 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 18:24:21 ]
usingといえば、StreamReaderが元のStreamまで根こそぎ閉じるの勘弁して欲しいな

685 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 19:46:42 ]
複数のオブジェクト間で受け渡したりするときはTextReaderを通すことが多いからな



686 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 19:53:39 ]
>>684
なんで合理的な仕様じゃん。
そう思えないなら、ふらっとスレの議論じゃないけどDispoeのそもそもの意義が
わかってないんでしょ。

687 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:52:53 ]
実際のとこスコープ外れたオブジェクトって即時消去されずに残ってるもんなの?
例えばこういう場合に明示的にDisposeするべきなのか、しなくてもいいのか迷う

private void hogehoge(string fname)
{
  Bitmap bmp = new Bitmap(fname);
  this.pictureBox0.Image = (Image)bmp.Clone();
  //bmp.Dispose();
}


688 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:54:48 ]
そんなに頻繁に呼ばれないのならしなくても問題にはならないだろうけど
できるのにわざわざしない意味がない

689 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:01:27 ]
>>688
できるのにしないのは、C#ってそもそもそういう部分を気にせずにコーディングできるのが強みだから
使わなくなった変数やオブジェクトはGCで自動的に開放してくれるからC++みたいにメモリ管理で苦労しなくていいって触れ込みだった気がする


690 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:10:08 ]
GCはオブジェクトの生存範囲が分からない場合には有効だけど
>>687ではusingを書くか書かないかだけの違いだろ

691 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:10:13 ]
using!using!

692 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:54:24 ]
メモリで大きな画像を持ってると大変なことになりそうだしな 特にサーバなんかでは
必要無くなったら破棄するのが良いよ

693 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 22:08:44 ]
>>687
.NETのBitmapは参照用途のつもりでもファイルをロックしてしまう
この例では pictureBox0 にクローンしたものを
わたしているから bmp は不要なんだが、Disposeしないと
GCが動くタイミングまで(いつかは不明)ファイルがロックされたままとなり、
結果、ファイルを削除あるいは移動しようと失敗してしまうことがありうる
よって、Disposeしとくべき


694 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:38:22 ]
質問です。

開発上、とあるライブラリを仕様せよとの指令が下りました。

APIマニュアルはそれなりに整備されています。

しかしメソッドはプロパティーにアクセスした時に、
発行しうるExceptionの記述がまったく無いマニュアルでした。

そこでどのようなExceptionが発生するのか調査したいのですが、
ソースを直接参照できないため行き詰っております。

このような場合は、どのような調査を行ったほうが良いでしょうか・・・


695 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:42:46 ]
逆コンパイル



696 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:47:10 ]
C#をC++に変換してくれるツールないっすか?

697 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:47:44 ]
ないよ

698 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:54:11 ]
C#からC++/CLIへの変換なら簡単なのだけどねぇ

Instant C++ (C# Edition) ってのがあるけど、どの程度使える代物なのかは知らん

699 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:26:12 ]
>>695
アドバイスありがとうございます。

C# 逆コンパイルで引っかかったものに Reflector というものがあるのですが、
こちらはこの手の会席で使う定番ツールみたいですね。

700 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:39:19 ]
このサイトってどうなの?

++C++;// 未確認飛行 C
ttp://ufcpp.net/

701 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:46:02 ]
普通に良いサイト

702 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 11:23:56 ]
>>693
.NET3.5はその辺大丈夫みたいよ
3.0からなのか3.5からなのかはわからないけどロックされることがなくなったっぽい


703 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 15:19:06 ]
一度MemoryStreamにコピーすれば問題ない。

704 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:32:35 ]
>>702
むしろロックしない仕様の方に問題があると思うんだが。。
ロックしない仕様の方を大丈夫と表現する感覚が理解できない。

705 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:37:50 ]
本来,メモリに読み込むときにしかファイルアクセスはいらないだろ



706 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:42:25 ]
メモリを占有するのが嫌だからファイルをロックするんだよw
何言ってんだか。

707 名前:デフォルトの名無しさん [2009/03/13(金) 09:16:06 ]
質問です
メンバ変数hogeとコンストラクタやメソッドhoge()があるとき
this.a = foo;
とやると曖昧と言われてエラーが出るのですが
名称変更せずにこれを解決する方法はないでしょうか?

708 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 09:31:12 ]
hogeはどこいった
どこに何があるのか分からん
曖昧と言われてエラーって台詞そのものが曖昧

709 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 09:36:47 ]
707
なにがなんだかわからない

710 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 09:47:16 ]
>>707
ぐだぐだ言わずにソースコード出せよ
お前の稚拙な説明では意味不明だ

711 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 10:19:15 ]
>>707
吹いたwww

712 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 11:14:40 ]
>>707
ワロタ
赤くしとこ

713 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:31:09 ]
うわー恥ずかしい

class hoge
{
int hoge;

public hoge()
{
}
public void hoge()
{
}

public void hoge(int foo)
{
this.hoge = foo;//エラー
}

}

こんな感じなのですが

714 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:35:31 ]
それthis.hoge = foo;の行がなくてもコンパイルエラーになる
名前変える以外にない

715 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:43:43 ]
・メンバ名と型名を同じにはできない
・メソッドのオーバーロード以外で同じ名前のメンバが複数存在することはできない



716 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:50:35 ]
サンクス

717 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:59:09 ]
それを眺めていてふと思ったんだが
class Hogeで、
public static implicit operator Hoge(int intValue)
 return new Hoge(intValue);
でHoge hoge = 1;みたいにしてインスタンスの生成が可能で、

public static implicit operator int(Hoge hoge)
 return hoge.IntValue;
で、int a = hoge;みたいな定義型変換ができるけど、

インスタンスを生成しないで代入するhoge = 1;ってできたっけ
代入演算子はオーバーロードできないから無理なんだっけ?

718 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 13:05:27 ]
hogeにインスタンスが入ってるかどうかにかかわらず
hoge = new Hoge { intValue = 1; };と同じ
新しくインスタンスを作らずにintValueだけ変えるのは無理

719 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 13:10:19 ]
さんくす。なら
hoge.IntValue = 1;
とか
hoge.SetInt(1);
とかしかないのか。
どっちかというこ後者かな?


720 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 14:07:25 ]
public void this(int hoge)

721 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 22:15:09 ]
あれ?そうだっけ?

public static implicit operator Hoge(int value)

じゃなかったっけ?

Hoge a = 1;

こう使いたいんでしょ?
XNamespace かなんかで使ってるように

722 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 22:18:11 ]
あごめん、勘違いしてた。生成しないでか。

723 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 22:23:47 ]
ようはseal型にどれだけ近づけるかと、
ポインタ的な操作(delegate等)をどう簡単に実装するかのジレンマだな

724 名前:デフォルトの名無しさん [2009/03/14(土) 08:16:03 ]
TextBox1に入力された数字をInt型のRAMに取り込むにはどうすればいいんでしょうか?

725 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 08:51:16 ]
int n = Convert.ToInt32(TextBox1.Text);



726 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 08:52:52 ]
ありり

727 名前:デフォルトの名無しさん [2009/03/14(土) 17:27:22 ]
Textboxに数字のみ入力させようと思い、以下のイベントハンドラーとプログラムを用意しました。
するとコンパイルエラーが発生し困っています。
エラーメッセージも以下に用意しました。
私が用意した文のどこがおかしいのでしょうか?



this.textBox2.KeyPress += new System.EventHandler(this.textBox2_KeyPress);

private void textBox2_KeyPress(object sender,
System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar < '0' || e.KeyChar > '9')
{
e.Handled = true;
}
}

デリゲート 'System.EventHandler' に一致する 'textBox2_KeyPress' のオーバーロードはありません。 (CS0123) - C:\Users\masamune\Documents\SharpDevelop Projects\Hello\MainForm.Designer.cs:74,30


728 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:32:39 ]
>>727
KeyPressEventArgs

EventArgs

729 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:34:20 ]
> this.textBox2.KeyPress += new System.EventHandler(this.textBox2_KeyPress);

ここがおかしい。

普通に KeyPress イベント作って、Designer.cs の中身を確認してみれば
いいと思うよ。

730 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:38:49 ]
エラーメッセージの通り。
 
そういうエラーメッセージが出たら、とりあえずMSDNで
System.EventHandlerを検索する。
 
msdn.microsoft.com/ja-jp/library/system.eventhandler(VS.80).aspx
 
デリゲートのシグネチャが
public delegate void EventHandler (
    Object sender,
    EventArgs e
)
であると書いてある。で、textBox2_KeyPressメソッドはこの
シグネチャと一致していない(第二引数の型が一致しない)。
 
そこを直すとまたエラーメッセージが出ると思うので、そのエラー
に関連すると思われるトピックをMSDNで調べる。これを繰り返す。

731 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:43:26 ]
>>728
>>729

即レスあざーす。
早速試してみます。

Cを数年かじっている経験から感覚的に進めてたら急に壁が出来てしまってw

732 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:44:04 ]
>>730

あざーす

733 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:44:09 ]
あざーす、って何?

734 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:47:32 ]
Azure の開発コード名

735 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:55:34 ]
アザトースのことだろ



736 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:56:34 ]
ASUSだろ

737 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:03:28 ]
パチンコのCMでもりゆきの格好してる奴だよ

738 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:10:01 ]
others
つまり(お前の意見じゃあてにならないから)他の意見くれってことだろ

739 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:32:44 ]
>>734-738
ボケのレベルが低い。
俺様がまぢレスしてやる。







安産です。



740 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:34:28 ]
一番レベル低い奴が満を持して登場

741 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:34:49 ]
うん?

742 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:35:59 ]
安産ですとか勝訴ですとかこの手のギャグに弱い

743 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 03:38:24 ]
それってギャグなの?

744 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 09:20:26 ]
最近VB.NETからC#に移行しようとしているものですが質問です

C# の public static class というのはVBで言うところの public shared class みたいなもので
ほぼVB.NETのモジュール的な考え方でいいんでしょうか?

745 名前:デフォルトの名無しさん [2009/03/15(日) 09:45:37 ]
SQL SERVER 2005 とか2008のDB作成するときにでてくるパスの変更部分

テキストボックスの横にボタンがあって、1つのセルに組み合わさったようなものをC#で作成したいんですが
何か簡単な方法はありませんか?

Cellを継承して自作するしかないんでしょうか?



746 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:18:35 ]
>>744
たとえば、System.Mathクラスは
public static class なんだけど、じゃあMathクラスはVB.NETのモジュール的なもの?
君のいうところのVB.NETのモジュールが何を指すのか分からんので答えようがないが。
普通に"静的クラス C#"でググったほうが早いよ

747 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:28:01 ]
>>746
VBとC#の両方知ってる人なんて山ほどいるんだから、知らなければ
黙ってればいいと思うんだが。

おれは、ぐぐって
www.rocksthoughts.com/blog/archive/2008/03/11/extension-method-implementation-differences-between-c-and-vb.net.aspx
これ見て、ふうんと思ったが、<Extension()>なんてアトリビュート
知らないから、コメントしなかった。

748 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:33:18 ]
>>747
偉い偉い立派だよ君
レスしなければもっと偉かったのにね!

749 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:52:28 ]
>>747
おいおい、2つのコードやページのタイトルを見ればExtensionが属性がなんなのか想像がつくだろうに。

750 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 12:07:30 ]
>>748,749
746さん、ちーす


751 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 12:10:50 ]
何このスレ・・・

752 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:13:27 ]
>>749
そりゃ想像はできるさ。ぐぐって見つけて概要を想像したのを、
そのままここに書いたらただの知ったか妄想じゃないか。
要するに、ちゃんとした回答ができればいいけど、
できないから書かなかったということ。

その次にこのスレに来たら、変な回答しかついてなかったから、
あえて留保(=言い訳)付でリンクを提示した。
リンクは提示したんだから、質問者が読みたければ、それを読んで
自分で判断すればいい。

753 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:21:39 ]
ExtentionAttributeなんかC#しかやってない奴はあんまり知らんだろうな

754 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 14:30:03 ]
>>752
というかそもそも元の質問が拡張メソッドの話でないのだから、
蛇足になる拡張メソッドについて言及しているところは避けようよ。

>>744
少なくとも構文上は、ほぼVB.NETのモジュールのような存在という考え方でいい。
細かい話をすれば、C#の視点から見たVB.NETのModuleとは、
単にStandardModule属性付きの静的クラス。

そもそもVB.NETでClassにSharedは付けられない気がするけど。

755 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 14:33:43 ]
>>752
ごちゃごちゃ言わずに、
黙ってればいいのに



756 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:51:03 ]
オマエモナー

757 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 19:11:22 ]
まぁまぁ、ぬるぽぬるぽ

758 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 19:18:01 ]
がっ

759 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 00:29:10 ]
Type 型のインスタンスからその型のデフォルト値を取りたいんだがどうすればいい?
つまり default(T) みたいなことをしたいんだが。

760 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 00:48:09 ]
Assembly.GetAssembly(typeof(T)).CreateInstanceで行けるかな。試してないけど。

761 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:13:14 ]
>>760
それだとインスタンスを生成するのでだめなんだ。

762 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:16:05 ]
intとかstringとかdatetimeでもデフォルト値ってとれたっけ

763 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:18:46 ]
>>762
数値や列挙型だと0、参照型だと null、構造体 T だと new T() と同じになる。

764 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:24:40 ]
インターフェースの場合とか、列挙体の場合とか考えると、結構ややこしいな。

765 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:26:49 ]
これでいけるんじゃまいか。
object o = t.IsValueType ? Activator.CreateInstance(t) : null;



766 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:27:37 ]
Nullable<T>は?

767 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:39:06 ]
>>766
Activator.CreateInstance()がnullを返す。

768 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:42:27 ]
>>765でいけたよ。サンクス。

769 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:47:55 ]
SortedList<double, int> 型でデータがあるとして、
入ってるキーのうち「X以下で最大の数」ってのを
2分法で求めたいんだが自分で書くしかない?
そういう関数があってもよさそうなもんだが。

770 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:57:34 ]
そんな関数大量に作られても邪魔だろ。

771 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 23:35:23 ]
>>769
ttp://msdn.microsoft.com/ja-jp/library/system.array.binarysearch(VS.80).aspx

772 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 23:51:44 ]
>>771
あんがと

773 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 01:33:53 ]
>>771
特定の値を探すんならそれでいいだろうけど、
X以下で最大の数 みたいに特殊な条件で検索するには向かないのでは

Array.BinarySearchでなくとも、List.BinarySearchやSortedList.ContainsもO(log n)

774 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 01:50:51 ]
じゃあどうすればいいの

775 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 01:58:37 ]
自分で書けばいいじゃないか



776 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 08:41:16 ]
>>773
汎用性を求めているわけじゃないんだから、
Xのインデックスを求めてそこから範囲指定BinarySearchじゃないかな

777 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:55:39 ]
ちょっとC#ってくくりじゃない質問なんですけど、
ブログとかに使われるWEB認証の歪んだ数字の画像なんだけど
あれってそのURLにアクセスする度に表示される画像変わるじゃん。

サーバー側はどうやって自分が出力した画像に書いてあるナンバーと
クライアントが打ち込んだ数字のナンバーが合致しているかを認証するんだろう。

この仕組みご存じの方居ますか?

778 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:02:28 ]
データベースに保存しとくだけ。

779 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:12:10 ]
データベースに保存(笑)

780 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:18:26 ]
すれち

781 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:29:27 ]
>>777
usernameごとに認証ナンバーを発行してるだけ

782 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:36:11 ]
大体はセッションに保存じゃね?
詳細はCAPTCHAでググるよろし

783 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:48:42 ]
>>781
あー、なるほど。
納得!

じゃあ認証されないって事は
やっぱりリクエスト2回投げちゃってるのかなー。

>>782
有益な情報ありがとう。
調べてみます。

784 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 20:17:52 ]
PHPのpreg_replace_callback()みたいな実装ってある?
正規表現で複雑な処理がしたくて・・・

785 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 20:27:02 ]
>>784
string str = Regex.Replace(
 input,
 @"\d+",
 (m) => Int32.Parse(m.ToString()).ToString("000")
);




786 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 20:33:53 ]
>>784
re.sub()のreplに関数を渡すという話ではなくて?

787 名前:デフォルトの名無しさん [2009/03/17(火) 20:40:06 ]
円を描画をしたいです。
プロパティからインスタンスを作成したいのですがどのコンストラクタを選べばいいのでしょうか?

788 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:12:37 ]
C#語でおk

789 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:20:07 ]
System.Drawing.Graphics

790 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:25:18 ]
最近やけに日本語でおkレベルの質問が目に付くな

791 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:28:26 ]
クラスのオブジェクトを作成したらインスタンスですか?
クラスのインスタンスを作成したらオブジェクトと同じで、インスタンスはオブジェクトということでいいでしょうか。
クラスは型で作成したらオブジェクトですか?

792 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:29:24 ]
ワッケワッカラン♪

793 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:39:49 ]
誰かスレのためにクラス・コンストラクタ・メソッド・インスタンスをわかり易くまとめろよ。
そういう基本的な部分があいまいな人かなりいると思うぞ。
俺は今から風呂入ってくる。

794 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:41:09 ]
そうだな
風呂でじっくり纏め上げて来い

795 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:47:35 ]
さすがにそのレベルは半年ROMってろカスとしか言えんわ



796 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:02:35 ]
でも自分がその半年ROMってろのカスのレベルの時に
半年ROMってろカスって言われたらむかつくだろ?

797 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:07:46 ]
半年ROMる暇があったら、まともな本を読んで理解を深めてください。

798 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:21:49 ]
C#以前の問題だろ…

799 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:26:46 ]
でも半年ROM中にまともな本読んで理解を深めていて質問したくなったら困るだろ?

800 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:32:09 ]
円を書きたいんです。
描画の仕方詳しく教えて下さい。
ぐぐってもうまくいきません

801 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:33:00 ]
日本語でおk

802 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:33:41 ]
>>800
よくわからないけど、これを試してみたら?
youryella.wankuma.com/Library/Extensions/Control/Default.aspx

803 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:40:35 ]
>>800
Console.WriteLine("○");

804 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:41:44 ]
>>801>>803は質問にすら答えられない低脳かつ荒らしかつ穀潰しかつNEET

805 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:51:04 ]
まずは質問の仕方を勉強してからこようね^^



806 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:54:50 ]
質問に答えられなかったらレスしなくていいんだよ^^

807 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:59:28 ]
>>800
Rect theRect;
PenSize(2,2);
SetRect(theRect,20,20,70,70);
FrameOval(theRect);

808 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:05:18 ]
800は釣りだろ

809 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:09:53 ]
ttp://developer.apple.com/DOCUMENTATION/mac/QuickDraw/QuickDraw-60.html#MARKER-9-90

810 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:11:13 ]
スレ違いのレスをしてる荒らしがたくさんいまちゅね

811 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:16:46 ]
>>810
でもさ、>>800みたいな超基本みたいな質問する人ってなんだかな、って気がしない?
こんなことぐらい、本の4,5冊でも見れば簡単にわかるだろうに。

812 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:23:03 ]
そしてこれをきっかけに初心者スレが建ち
そこで同じようなレスが繰り返され
さらなる初心者スレが建つことが繰り返されるのであった

813 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:34:40 ]
>>811
4,5冊もいらんだろw

もし4,5冊読まないと分からないような問題だとしたら
ここで質問するべき問題だと思うんだが。

814 名前:786 mailto:sage [2009/03/17(火) 23:38:25 ]
すまない…Pythonスレと間違えてたw

815 名前:デフォルトの名無しさん [2009/03/17(火) 23:57:19 ]
APIを叩いたことないやつはこれだから困る



816 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 00:02:32 ]
ニーモニックを知らない若造が何を言うか

817 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 00:14:11 ]
>>803はとんち的には100点

818 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 00:29:40 ]
>>817
実際にそれが現実解ってこともなくはないしなw

819 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 00:42:54 ]
お前ら冷たすぎ

>>800
円を描画するんなら、Controlの派生クラスの中でGraphicsクラスを使えばいい。
例えばこんな感じ。
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawString("円", Font);
}

820 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 00:43:54 ]
下らないネタをいつまでも引っ張りすぎ

821 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 12:55:10 ]
略して下ネタ

822 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 09:26:04 ]
ManagedDirectXつかってシューティングを作っているのですが、
何らかの描画命令(たとえばfont.DrawText)を1フレームに300回くらいやると、
描画命令の増加に従って徐々にFPSが落ちていきます。
描画命令をコメントアウトすると治るのでそれ以外が原因になっているとは考えにくいです。
また、テクスチャの有無やアルファの有効無効、頂点数にも影響されないようです。
デバイスの初期化はこうやっています
Direct3D.PresentParameters param = new PresentParameters();
param.Windowed = true;
param.SwapEffect = SwapEffect.Discard;
param.MultiSample = MultiSampleType.EightSamples;
device = new Direct3D.Device(0,Microsoft.DirectX.Direct3D.DeviceType.Hardware, wind,CreateFlags.HardwareVertexProcessing, param);
device.RenderState.CullMode = Cull.None;
device.RenderState.Lighting = false;
device.RenderState.AlphaBlendEnable = true;
device.SetTextureStageState(0, TextureStageStates.AlphaOperation, (int)Microsoft.DirectX.Direct3D.TextureOperation.Modulate);
device.SetTextureStageState(0, TextureStageStates.AlphaArgument1,(int)Microsoft.DirectX.Direct3D.TextureArgument.TextureColor);
device.SetTextureStageState(0, TextureStageStates.AlphaArgument2,(int)Microsoft.DirectX.Direct3D.TextureArgument.Current);
device.RenderState.SourceBlend = Blend.SourceAlpha;
device.RenderState.DestinationBlend = Blend.InvSourceAlpha;
D3DTex.Direct3DDevice = device;
verts = new CustomVertex.TransformedColoredTextured[10];
vertexBuffer = new VertexBuffer(typeof(CustomVertex.TransformedColoredTextured), 5000, device, 0, CustomVertex.TransformedColoredTextured.Format, Pool.Managed);
sprite_ = new Sprite(device);
ClientSize_ = wind.ClientSize;
どうかご教授願います。

823 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:09:17 ]
多数の描画すれば、描画待ちでフレームレートが
悪化するのは、この手の処理では常識だと思います。

824 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:12:52 ]
あとfont.DrawTextは重い

825 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:36:57 ]
>>823
それはそうなんですが、表示してるのはただのスプライト(4頂点)なんです。
C2DにGeforce8600GTをつんでいるのに400スプライトで15FPSもでないのできっと何かが悪いのだとは思いますが・・・。
スプライトの描画部はこうなってます。これより前にテクスチャの設定や頂点の設定があります。
Draw2Dは使っていません。

triは描画する三角形の数で四角いスプライトなので通常2を設定。
if (device == null) return;
GraphicsStream stm = vertexBuffer.Lock(0, 0, 0);
stm.Write(verts);
vertexBuffer.Unlock();
device.SetStreamSource(0, vertexBuffer, 0);
device.VertexFormat = CustomVertex.TransformedColoredTextured.Format;
device.DrawPrimitives(ptype, 0, tri);
cPolygon += tri;



826 名前:デフォルトの名無しさん [2009/03/19(木) 11:46:11 ]
スプライト一枚ごとにそんなことやってたら遅いに決まってる
可能な限り同じテクスチャでまとめて書き込んでまとめて描画しろ

827 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:46:41 ]
GraphicsStream stm = vertexBuffer.Lock(0, 0, 0);
stm.Write(verts);
vertexBuffer.Unlock();

↑この処理を400回やってるなら重くなって当り前かと
DrawPrimitiveで描いてるって事はGRAMをロックしてんだろ?

何れにせよDrawPrimitivesを数百回呼び出したら重い
数百枚のスプライトをオンメモリ上に1つのプリミティブで作成しといて
CPU側で座標指定してDrawPrimitiveUpとかやれば大分違うと思う

Managed DirectXはよく知らないけど

828 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:48:20 ]
DrawTextなどを300回って書いといてそりゃねーだろ

バッチ処理は基本だが、にしても遅すぎるな
マネージコードのGCが暴れている可能性もあるからCLRProfilerとかで要調査

829 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:48:51 ]
お、便乗しよっと

「メモリのロック」の意味がよくわかりません
必要な呪文程度に思ってます
このロックとは具体的にはどういう動作をしてるんでしょうか?


830 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:51:28 ]
>>826-827
なるほど。
DrawPrimitivesの小口多数実行とDrawTextのやりすぎの複合要因だったんですね・・・。
テクスチャごとに1回ずつDrawPrimitivesを実行し、DrawTextの使用を見直してみます。

お答えくださった皆様、本当にありがとうございました。
改良に取り組んでみます!

831 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 12:06:36 ]
>>829
そこ今から俺が触るからおまえら触るなよ!!
ってこと

832 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 12:14:45 ]
少し便乗して

テクスチャ毎に描画というのは各頂点をGraphicsStreamに書き込んで

DrawPrimitives(PrimitiveType.TriangleList,0,(描画するテクスチャの場所*2));
で良いのですか?

833 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 13:12:45 ]
>>831
ググればすぐにわかるだろうにw
ttp://www.stackasterisk.jp/tech/dotNet/csharp07_04.jsp


834 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 13:29:17 ]
メモリのロックってマルチスレッド絡みの処理だったのかw
理解しました、ありがとう

835 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 20:17:12 ]
下記いずれかのデータを大量にListに格納する場合、速度面等からいうと
どちらを選択した方が良いのでしょうか。格納するデータが増えることは
無いので拡張性を考慮する必要はありませんが、ググってもイマイチ分からず…。

・KeyValuePair<string,string>
・Key,Valueのstringを持ったクラス



836 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 20:30:13 ]
Dictionary

837 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 20:32:15 ]
なんで実測してみないんだ?

838 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 21:06:17 ]
大量のデータから対象を素早く取り出したいならHashtable一択
.NET2.0以降のHashtable実装はDictionaryクラス

詳しく知りたいなら「データ構造とアルゴリズム」でぐぐればいいよ

839 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 21:16:08 ]
まあ待てインデックスでのアクセスだけでいいのかも知れん
簡単にHashtable/Dictionaryを挙げるのは早計だ

840 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 21:19:07 ]
>>839
>>835

841 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 21:22:40 ]
純粋に>>835の質問に答えると後者だな
KeyValuePairは構造体だから出し入れ遅いよ

842 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 07:57:03 ]
2147483647個以上の値を格納できるListみたいなのは
自作するしかない?

843 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:01:54 ]
DB使えよwwww

844 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:12:59 ]
本当にそんな物が必要なのかどうか検討するところからだな。

845 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:16:32 ]
今List型で動いてるプログラムがあるんだが、
「メモリを50GB積むからこのデータを処理できるようにしてくれ」
って要求が来たんだ。



846 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:21:31 ]
50Gとかw

847 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:43:44 ]
単純計算で一オブジェクトあたり25b使えるわけだけど、
そのやり方は上手くいかないと思うわwww

IList<T>インターフェイスを提供するDBオブジェクト自作したほうがいいよwww

848 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:50:10 ]
>>847
DBってディスクに書き込むイメージがあったんだがそうでもない?
金(50GBのメモリ分)がかかっても速いほうがいいんだが。

849 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:53:55 ]
でかいRAMDISKつくってそこにDBおけばいいんじゃね?

850 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 08:57:42 ]
DBについて勉強してくる
ありがと。

851 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 11:43:19 ]
でもどっかの企業が全部オンメモリにするデータベースを運用しているっていう話を聞いたことがある。

852 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 11:44:45 ]
そりゃおらくる

853 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 11:54:42 ]
SQLiteやMySQLがオンメモリモードもってたとおもった。

854 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 12:45:42 ]
配列なら添え字にlongが使える。
このため64bitの.NET Frameworkなら4GB越えの配列を扱える。
32bitの.NET Frameworkでもlongが使えるが、intの範囲を使い切る前にmemory不足に陥る。
64bitの.NET FrameworkならListなどのコレクションもトータルで4GB以上使えるが、
添え字がint限定なのでそれが上限になる。


855 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 13:51:31 ]
すべてのユーザーが毎回50GB相当のデータを要求するわけではないんでしょ
OSのディスクキャッシュとかDBのメモリキャッシュに50GBメモリを活用してもらえば、
十分なパフォーマンスが出ると思うがね



856 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 14:23:45 ]
>>855
十分なパフォーマンスが要件ではなく、
メモリで動作することなんじゃね?
要件定義を間違えるとそうなる。

857 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 14:41:19 ]
しかし、仕事でDBを使うはいつものことだが、21億件のデータを突っ込んだことはないなw
一体何をしようとしてるんだ。

858 名前:842 mailto:sage [2009/03/20(金) 14:56:58 ]
シミュレーション系です。

859 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:46:13 ]
あー・・・ってそういうのもC#でやるもんなのか

860 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:51:47 ]
ものにもよるだろうけど生産性との兼ね合いでそれもありじゃね?
まぁ自分的にはF#を使いたいと子だが

861 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 22:06:16 ]
要素へのアクセスが添字だけですむなら、ただの配列の方がいいけどね。
普通にC#で書いたプログラムを、64bit環境で実行すればよい。

862 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 23:18:41 ]
円をformの中でピンポンの様に動かしたいんですがどうすればよいのかご教授下さい。
周期的に座標を変化させていけばいいのか、他になにか方法があるのか・・
現在までのソースを示しておきます。
namespace circ
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();

}

void MainFormPaint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;

Pen pen = new Pen(Color.Green, 1);
g.DrawEllipse(pen, 60, 60, 30, 30);

}
}
}


863 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 23:40:59 ]
何言ってんのお前?

864 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:08:26 ]
>>862
Forms アプリなら Timer 使え。


865 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:52:33 ]
Managed DirectXでコーディングしていrのですが、
ランタイムが入っていない場合の動作を定義するにはどうしたらよいのでしょうか?

FileNotFoundExceptionがthrowされることはわかったのですが、
どの時点でtry catchするべきかよくわかりません・・・。

using System・・・
(略)
using Microsoft.DirectX.Direct3D;
using Direct3D = Microsoft.DirectX.Direct3D;

    Direct3D.Device = null;
try
{
    Direct3D.Device = new Direct3D(なんとか);
}
catch(Exception e)
{
    System.Diagnostics.Debug.MessageBox.Show(e.ToString());
}
のような書き方をすると、
newをしくじった時のcatchはできるんですがDevice型自体を宣言できなった時にcatchするにはどのようにコーディングすればよいのでしょうか?



866 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:59:06 ]
System.Reflection.Assembly.GetModule()

867 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:00:56 ]
>>866
うおおおお
ああああありがとう!!!

868 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:33:51 ]
>>862
ピンポンの動きはよく分からんが、
こんな感じのものを作りたい?
using System;
using System.Drawing;
using System.Windows.Forms;
namespace circ {
public class MainForm : Form {
Timer timer;
int x;
int y;
public MainForm() {
Paint += new PaintEventHandler(MainForm_Paint);
timer = new Timer();
timer.Tick += new EventHandler(timer_Tick);
timer.Interval = 500;
timer.Enabled = true;
}
void MainForm_Paint(object sender, PaintEventArgs e) {
e.Graphics.DrawArc(Pens.Green, x, y, 10, 10, 0, 360);
}
void timer_Tick(object sender, EventArgs e) {
x = (x + 10) % Width;
y = (y + 20) % Height;
Invalidate();
}
}
}

869 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 10:09:56 ]
>>868
ありがとう御座います。

動きの基本はそれです。
頂いたソースをベースに以下の仕様を考えています。

@スタート時、円は二個
A円の動きは直線
Bスタート時二個円の直進方向は異なる
C壁にぶつかって跳ね返る
D二個の円がぶつかると円が1個増える。
E増えた円も直線動作を行う。
F繰り返し

円同士がぶつかる判定と円を増やしていくにはどうしたらいいんでしょうか?




870 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 10:18:29 ]
1.お互いの円の中心が半径の2倍より近づいていたら衝突したと見なす
2.円をList<円>等で保持しておいて、衝突したら新しい円を追加する

871 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 11:10:16 ]
なんつーかやりたいこととやれることのギャップが激しすぎるんじゃねーの?
全部ココで質問するつもりか?

872 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 11:14:12 ]
このスレの連中はみんな初心者だろ

873 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 11:21:49 ]
ふらっとすれもうなくなったんだっけ?

874 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 11:23:28 ]
あるよ

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

875 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:46:36 ]
まさかとは思うがこれ宿題じゃないだろうな



876 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:47:58 ]
宿題スレもあるね!

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


877 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:48:18 ]
宿題じゃなく春休みの課題です

878 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:58:29 ]
どう見ても宿題です。有り難うございました。

879 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 17:01:24 ]
質問です。課題と宿題の違いってなんですか?

880 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 18:36:28 ]
辞書ひけやゴミ

881 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:20:32 ]
Tooltipの表示タイミングはそのままに、Tooltip.Showを使わずに
表示位置を制御する方法はないでしょうか。
↓でも議論されていますが、具体的な方法が分かりません…。

ttp://bbs.wankuma.com/index.cgi?mode=al2&namber=1692&KLOG=10

882 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:39:38 ]
デフォルトだと、マウス位置がベースになるんだっけか。
となると、それを誤魔化すか、デフォルトの動作をフックして、
位置を指定して表示するしかないでしょ。

883 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:51:50 ]
Showを使っても問題ないんですが、表示タイミングだけは
準拠したいという所なんです…。良い方法ないものでしょうか。

884 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:59:44 ]
表示されるタイミングで、何かのメッセージが来るだろうから、
そいつを握りつぶしつつ、Show() すればいいんじゃね?

885 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:38:37 ]
今ラジアンで角度を処理するクラスを作っているのですが、次のような動作をさせたいんです
1.値を代入したときは値を正規化してからいれる(負値だったら正値に、2π以上だったら2πで剰余算)
2.値を参照するときはそのまま参照
3.floatと同じように扱える
プロパティを使って実装すると次のようになりますが
  class RegularizedAngle
  {
    private float InAngle;
    public float Angle
    {
      get { return Angle; }
      set
       {
         //Angleが負値だったら正値に
         if (Angle < 0) Angle = PIx2 + Angle;
         //Angleが2π以上だったら2πで剰余算
         Angle %= (float)(Math.PI * 2f);
       }
    }
   }
これを普通のfloatと同じように扱いたいんです。
たとえば
RegularizedAngle Ang = (float)(Math.PI * 2f);   //すなわち6.28・・・の代入
Ang += 1;                         //代入したとき内部で正規化がおこなわれて1になる。

Ang += Ang;
//これで2になる?こんなかんじで見た目を組み込み型みたいにしたいんです。
しかし上記のプロパティをつかった方法だとアクセスするときに
Ang.Angle としなければなりませんし、宣言するときにはnewが必要です
組み込み型へのオーバーライドとかでできるのでしょうか?





886 名前:885 mailto:sage [2009/03/22(日) 13:54:58 ]
>>885
ですがすいません。初心者スレに移動します。
>>885は無視してください。

887 名前:デフォルトの名無しさん [2009/03/23(月) 01:16:27 ]
C#でrubyのWWW::Mechanizeみたいなネットワーク系のライブラリありますか?

888 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 01:48:39 ]
Mechanizeがネットワーク系とは思わないが、
あとC#じゃなくて.NETのコンポーネントだけど
System.Windows.Forms.WebBrowserが同等かな。
(もしくはWPFでそれに相当する物)
もちろんもっと低レベルのものもあります。

889 名前:887 [2009/03/23(月) 02:04:56 ]
ありがとうございます
見てみます

890 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 18:23:08 ]
Vista、VisualStdio2008で開発しているのですが、

hProcess.PriorityClass = ProcessPriorityClass.BelowNormal;

このように外部プロセスの優先度を変更しようとするコードをF5「デバッグ開始」で実行すると、エラーが発生し、
エラーメッセージは「アクセスが拒否されました。」となっています。
また、Ctrl+F5「デバッグなしで開始」で実行すると、問題なく動きます。
デバッグありでこのコードを動かすことはできないのでしょうか?

891 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 20:14:28 ]
>>890
とりあえず VS(devenv) を昇格起動してみな

892 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 20:50:03 ]
>>891
レスありがとうごいます。
昇格起動とは管理者権限で実行ということでしょうか?

AdministratorでログインしUACをオフ、devenv.exeを右クリックから管理者として実行を選択しましたが、
依然として「アクセスが拒否されました」になってしまいます。。。

893 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 20:58:17 ]
>>892
ありゃ、とりあえず昇格すれば大丈夫だった気がするが。
まぁ駄目ならしゃーない。利便性落ちるけどこの手で。
プロジェクトの Properties
 → デバッグ
 → Visual Studio ホスティングプロセスを有効にする
のチェックをはずす。デバッグなしでいけるならこれでどうよ。
これで駄目ならセキュリティとかゾーンの設定見直してとしか
いえん

894 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 21:12:13 ]
>>893
ホスティングプロセスのチェックを外したところうまく動きました。
現在のところホストプロセスを無効にしても、あまり問題はないようなのでこれでいこうと思います。
ありがとうございました。

895 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 00:31:48 ]
APIスレの方が良いのかもしれませんが、教えて下さい。
WndProcでWM_KEYDOWNが発生したときに、
StrKey = new StringBuilder();
GetKeyNameText(msg.LParam, StrKey, StrKey.Capacity);
として押されたキー名を取得しているのですが、例えば「Ctrl+A」の時など
StrKeyにCtrlが入ってしまい、「A」が取得できません。
※AやShift+A、Alt+Aの時などは普通に拾えます。

WParamにはAを示す値(65)が入っているので何か方法はあるのでは
無いかと思っているのですが…。宜しくお願いします。



896 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 08:59:45 ]
と、思いましたが、色々調べたところGetKeyboardStateで
Ctrl+A押下時のイベントが発生していないようでした。
Ctrl+B等は問題無いのですが…。TextBoxを継承しているのが問題なのか…。
もう少し色々調べてみます。失礼しました。

897 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 10:34:41 ]
SelectAllのショートカットになってるからじゃ?
ShortCutsEnabledをFalseにしてみるとか

898 名前:895 mailto:sage [2009/03/24(火) 11:23:25 ]
解決しました。↓が参考になりました。
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/243winkeyproc/winkeyproc.html
結果的に、WndProcで行っていた処理をProcessCmdKeyに移すだけで
解決できました。失礼しました。

899 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:33:54 ]
スレ汚しの質問すみません。
ブラウザの仕組みについてなんですが

ブラウザはどうやって同一タイミングでターゲットURLのHTTP情報、
さらにHTTPを解析してその先にある画像データの取得を一意的に行っているのでしょうか。
それをC#でIEコントロールを用いずに実現する方法はありますか?

たとえば今HttpWebRequestを使って試しているのですが
これでは1インスタンスにつき HttpWebRequest req = new HttpWebReqest.Create(url);
といった具合に一つのURLしか指定できません。

これによってサイト全体のHTTPをゲットする事が出来るのですが
1画像を取得しようと思った時には、その画像のURLをもって別インスタンスでCreateしなければならないんですが

一つのリクエストで全ての画像、サイト全体のHTTPを取得する方法はありませんか。
どなたか知恵をお貸しください。

900 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:40:52 ]
無理
自分で作るか誰かが作ったのを使うしか。
サイト全部取得は場所によってはアクセス遮断されるかも。

901 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:49:55 ]
一つのリクエストである必要性がどこにあるのか
って単に手抜きたいだけか

902 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:57:49 ]
>>901
セッション管理を行っているサイトにリクエストした場合に
1セッションと認めさせたいからです。

903 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 12:01:39 ]
ブラウザだって一つのリクエストで全部取ってきてるわけじゃないんだから
// KeepAliveで接続自体は一つかもしれんが
セッションとは関係ねーよ

904 名前:899 mailto:sage [2009/03/25(水) 12:03:05 ]
というか、セッション管理をしているサイトというのは
やはりリクエストごとに別セッションと認識する物なんでしょうか。

要は1セッションと認めさせる事が出来、なおかつIEコントロールを使わない方法があれば
HttpWebRequest以外でもなんでもいいんですが・・・><;

905 名前:899 mailto:sage [2009/03/25(水) 12:04:35 ]
>>903
ああ!やはりそうなんですね!
一つのリクエストじゃないのですねー。
keepAliveを使えば接続は一つになるのか〜!ふむふむ!




906 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 12:41:57 ]
取り敢えず適当なパケットモニタでも入れて送受信の様子を眺めてれば

907 名前:899 mailto:sage [2009/03/25(水) 13:40:04 ]
>>906
なるほど・・・!
それは思いつきませんでした!
ありがとうございます!やってみます。

908 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 17:34:36 ]
出来るだけ高速なファイル処理がやりたいのですが教えてください。
現在

[serializable]
public class A
{
 public int id;
 public datetime date;
 public long data;
 public long data2;
}

のようなクラスが存在し、これを50mSec程度の間隔で追記だけを行います。

このファイルには60万件のクラスAが入る可能性があります。
このとき出来るだけ高速に書き込む方法を教えて頂きたいのです。

また、この書きこんだクラスAの入ったバイナリファイル(60万件)を
例えば List<A> にデシリアライズ?してやるにはどうすればいいのでしょうか?

909 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 17:37:38 ]
DB使えよ、ってのは駄目なのか

910 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 17:52:59 ]
シリアライズせずにそのままバイナリデータを書き込んで、
読み込み時にbinaryReaderで読み込見ながらAddしたほうがいいような・・・

911 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 18:06:25 ]
その程度のクラスなら、自前でバイナリシリアライズを実装すれば十分な速度が得られそうだ。
俺ならSQLite使うけど。

912 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 18:38:42 ]
>>909-901
レスありがとうございます。

DBに関してはちょっと使えないのです。
>>910と>911を組み込んでみてチェックして速度が出る方を選んでみます。
ありがとうございました。



913 名前:デフォルトの名無しさん [2009/03/25(水) 20:49:33 ]
WebBrowserで表示しているコンテンツ内のボタンをクリックして
何かの動作が始まって、それが何かのエラーを起こして制御が
返ってこない場合があり、その結果アプリケーション本体がハング
アップしてしまうことがときどきありました。こういうケースでもその
状態から復帰して他の作業ができるようにしたいのですが良い方法
があれば教えて頂きたく。何卒よろしく。

914 名前:デフォルトの名無しさん [2009/03/25(水) 20:57:08 ]
WebBrowser内のコンテンツ上でボタンクリックなどでスクリプトか何か
なのか、あるいは返信待ちなのか、何らかの動作をしているときに
エラーが起きて制御が返って来ないまま、アプリケーション全体が
キーもマウスも受け付けなくなる時があり、対策をどうするべきかわからず
困っております。WebBrowserの外からそうした動作を監視していて
一定時間たったらどうなったか調べるなどといったことをするべきなのか、
あるいはなんらかの方法でそういう応答なしになった状態から復帰可能
なのか、わかっていないのですがアドバイスもしくはご解説をいただけたら
ありがたく。よろしくお願いします!

915 名前:913, 914 mailto:sage [2009/03/25(水) 21:03:02 ]
すみません、JaneDoeStyle使っているのですが、書き込みした後で
何度かリロードして確認しても反映されておらず、しかも書き込みした
内容がエディタに残らなかったため、同じ質問を再度書いて送信して
こうなってしまいました。再掲申し訳ありません。



916 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 00:20:58 ]
Formを半透明にすることなどは簡単に出来るのですが
半透明のグラデーションは出来ますか?
具体的に言うと、四角いフォームの場合一番上が不透明で
下に行くに従って透明度が増していく感じのフォームを作りたいのです。
よろしくお願いします。

917 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 01:08:16 ]
Layered Window と UpdateLayeredWindow 使う方法が思いつくけど、
Form じゃ無理かなぁ。いや、無理というより意味がないというか…。

918 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 01:10:09 ]
>>916
www.codeproject.com/KB/miscctrl/AlphaForm.aspx

919 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 01:53:37 ]
XmlReaderで現在の行数を取得することって出来ませんか?


920 名前:デフォルトの名無しさん [2009/03/26(木) 03:25:35 ]
質問です。
XmlSerializerを用いて、プログラム内のオブジェクト構造を元に
データの保存と読込を行っています。

このXmlSerializerで、同じオブジェクトを指す複数の参照変数を
シリアライズすると、シリアライズ化されたデータには
その参照数分のデータが重複して書き出されてしまいます。
このオブジェクトを、実際にシリアライズによって書き出されるデータは一つだけとし、
デシリアライズの際に参照変数群へ同じインスタンスへの参照が入るようにしたいです。

一応、あまり良い方法ではないと思うのですが、
複数参照されるオブジェクトは専用にシリアライズされるコンテナに全て格納、オブジェクトのID付けをし、
複数参照されるオブジェクトの変数と対に、そのオブジェクトのIDを持つシリアライズ対象なプロパティを定義し、
そのIDプロパティのsetterにおいてIDを元に、既にデシリアライズされているコンテナから該当オブジェクトを
取り出して変数にセットする、という方法をこれまで取っていました。

これを行うもっと正しい感じの方法はありますでしょうか?ヒントだけでも頂けると有り難いです。

921 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 09:02:37 ]
>>920
とりあえずIXmlSerializableを実装して同じことを行えば隠蔽できる
もっと賢いやり方があったら俺も知りたいな

922 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 08:50:14 ]
>>919
IXmlLineInfoにasキャストしてみる

923 名前:デフォルトの名無しさん [2009/03/27(金) 10:40:24 ]
>>914の件、どなたかアドバイスかヒントでもいただけたらありがたく。

924 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 10:46:18 ]
32bit環境でつくってたプログラムのソースを64bit環境にもちこんでコンパイルして実行した場合、
挙動が異なったりする可能性はありますか?

925 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 10:48:34 ]
ありまqす。



926 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 10:48:35 ]
>>922
出来ました
しかしインターフェイスにキャストしてどうしてちゃんと行番号が取得できるんですか?

927 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 10:49:40 ]
そうできてるから。

928 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 10:56:53 ]
>>927
そうですか
有り難うございます。


929 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:00:32 ]
class Foo {}
interface IHoge { void f(); }
class Bar : Foo, IHoge { public void f() {}}

Fooだと思ってるものがBarだったとしたら

930 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:03:12 ]
>>924
同じソースならどちらの環境でコンパイルしても同じアセンブリが出来る。
どちらのCLRで動かすかが問題でそこで挙動が異なる場合がある。

931 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:04:16 ]
>>930
ありがとうございます
intとか要注意ってことですか?

932 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:06:52 ]
>>931
intは64bit環境でも32bitで固定。違いが出るのはIntPtr。

933 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:08:55 ]
なるほど、ありがとうございました

934 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 20:21:50 ]
>>932
製品開発統括部ブログだったかな?
WinXP64はintもlongで扱ってると書いていたよ。

935 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 20:29:52 ]
>>934
URLプリーヅ



936 名前:デフォルトの名無しさん [2009/03/27(金) 20:31:00 ]
>>934
System.Int32が64ビットだっていいたいわけ?

937 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 20:31:56 ]
>>935
前に探した時、アドレスが変わる前の記事だったようで見つからなかった

938 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 21:35:09 ]
x64は64bit演算のほうが1バイト命令が長い、
ポインタ64、整数32でやる気満々のCPUだからそれはないと思うな。
03 c8      add   ecx, eax
48 03 c8  add   rcx, rax

VC++も int = long = 32bit, long long = 64bitだし。


939 名前:920 mailto:sage [2009/03/28(土) 03:16:33 ]
>>921
亀レスですみません。
なるほとIXmlSerializableという手がありましたね、すっかり忘れていました。
これを使って解決する機構をGenericsを使って汎用化できるものとして作ってみたいと思います。

940 名前:デフォルトの名無しさん [2009/03/28(土) 04:07:45 ]
Windows.Formsについて質問です。

親子関係になっているコントロールにおいて、
親コントロールで子コントロールのイベントを捕獲する方法を知りたいです。
例えば、子コントロールの中にマウスカーソルがあって、
クリックされると通常は子コントロール側のClickedイベントが発生してしまいますが、
それよりも先に親コントロール側でClickedイベントが発生して欲しいのです。

暫定的な対処として、対象コントロールの子コントロール全てを再帰的に探索して
それらのイベントハンドラに、イベント発生を中継通知するメソッドを登録しています。
が、これでは結局通知のみであってイベント発生自体の順序は変わらないし、
またControlAddedイベントでも、追加されたコントロールに対して更に処理を行っており、
こんな力技な方法、絶対間違っているのでは・・と思っています。

941 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 10:41:13 ]
子.Click += new System.EventHandler(親_Click);
子.Click += new System.EventHandler(子_Click);
てこと?


942 名前:デフォルトの名無しさん [2009/03/28(土) 21:23:54 ]
朝生 「不可解な逮捕 東京地検 どうなる?小沢民主党」 (2009年03月28日)
Part1 -75分-
www.megavideo.com/?v=TBA1379H
Part2 -75分-
www.megavideo.com/?v=JDBPR8XN

943 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 21:35:40 ]
>>940
WPFをつかう

944 名前:デフォルトの名無しさん [2009/03/29(日) 13:08:28 ]
質問です。
これまで以下のように VB6 の ADODB.Recordset Seek メソッドで .mdb 検索を行っていました。

rs.Seek Array(1006, 10), adSeekFirstEQ


C# で再現する場合、
Seek メソッドの第1引数「Array メソッド」に相当するオブジェクトは何なのか教えてください。

945 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 13:27:57 ]
>>944
データベースへのアクセスモデルからしてまるで変わっちゃってて、
ADOのことはよくわからないからズバリそのものな答えはちょっとわかんない。

Array 相当のものだったら、 new int[] とか new[] { 1006, 10 } とかで作れる。

キーに一致する最初の値をとりたいんだったら、LINQ to SQL 使って
var keys = new[] { 1006, 10 };
var firstEq = table.First(x => keys.Contains(x));
とかでいけると思う。




946 名前:944 [2009/03/29(日) 13:53:30 ]
>>945
ありがとうございます。
やってみましたが仰るとおり

List<object> values = new List<object>();
values.Add(1006);

object[] array = values.ToArray();
rs.Seek(array, SeekEnum.adSeekFirstEQ);


上記のように配列をそのまま渡すことで通りました、ただし値が単一の場合のみ。
下記のようにキー値を複数設定すると「パラメータが間違っています」っておこられる

values.Add(1006);
values.Add(10);


どうしたらいいんだろな_| ̄|○

947 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 13:56:29 ]
new object[] { 1006, 10 }

じゃダメなんけ?

948 名前:944 [2009/03/29(日) 14:07:52 ]
>>947
スマソ。
テーブル名、インデックス名のパラメータを間違えてただけだった。

キー値が複数の場合でもバッチリいけたわ。
ありがとう、無事解決です。

949 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 05:47:23 ]
ところで、
++
++
で、#ちゅう事なん(´・ω・) スカ?

950 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 06:25:37 ]
>>949
アンダース・ヘルスバーグはそう言ってる。

951 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 09:19:47 ]
そんなこじゃれた名前つけるから検索しにくくなるのだ

952 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 14:23:11 ]
.NETよりはまし。.NETの検索し難さといったら…

953 名前:デフォルトの名無しさん [2009/03/30(月) 14:24:12 ]
でもCとかDよりいいよね

954 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 14:29:13 ]
Bも忘れないであげて

955 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 17:53:03 ]
VisualC#2008をインストールして、動作確認の為にWindowsFormsApplication1を
作成したのですが、デバッグ実行すると(0xc0000005)で終了してしまいます。
デバッグなしで実行だと、普通にウインドウが表示されます。

どうやら、プロジェクト名の長さが11文字以上だとこういう現象になるようです。
プロジェクト名が10文字以内というのは、ちょっと不便なのでなんとかしたいの
ですが、対策をご存知の方がいましたら教えてください。



956 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 17:53:44 ]
今の今まで
C,C++,C#相談室
だと思ってた

957 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 18:17:06 ]
昔はスレタイに # の文字入れると#が消えちゃってたから
しつこく入れるようになったんだっけかw

958 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 19:11:59 ]
検索用じゃね?

…と思ったら、1つ目と3つ目がどちらも ASCII のナンバ記号だった。

959 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 20:04:35 ]
いつもは3つ目が全角のナンバー記号だよ。
次スレ立てる人は気をつけて。

960 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 22:46:02 ]
この Part51 でそろそろ終わりにしようぜ

961 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 22:52:12 ]
2ヶ月で1スレ消費するようなペースって事は需要はあるのだろう。
Part51にもなって「そろそろ終わりに・・」ってのは今更すぎないかw

962 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 22:53:50 ]
>>960
来なけりゃいいんじゃね?

963 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 00:36:10 ]
スレタイに#を3パターンで書くのをこのスレで終わりしないかといってると上の流れを見ると思うのだが
俺がイカれてるのかな。そう解釈する俺が狂ってるだよなやっぱりそうとしか思えないうん

964 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 00:51:31 ]
他のC#スレも数パターン使ってるとこあるし、検索用に残しといていいんじゃね?

965 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 01:44:20 ]
ところでおまいらC#で組んだもの、何に利用してるの? 仕事?




966 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 01:51:26 ]
研究
まあ仕事だけど

967 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 01:52:50 ]
俺は趣味でちまちま作ってる。
自分専用の痒い所に手が届くような小規模アプリが殆ど

968 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 02:27:50 ]
C#で孫の手つくれんの?

969 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 02:30:22 ]
つまんないよ

970 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 02:49:21 ]
つまらないものを面白くするのがプログラミングだろjk

971 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 03:14:15 ]
窓の手ってそういう意味だったのか!素で気付かなかった

972 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 07:47:06 ]
C井でいいんじゃね?

973 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 08:29:31 ]
思いっきり仕事だな。
来月あたりに客先とおしてそのユーザーに公開される(´・ω・`)

974 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 08:57:55 ]
趣味コードは全部C#。
仕事だと、社内ツールの類はC#で書いてる。


975 名前:デフォルトの名無しさん [2009/03/31(火) 10:08:11 ]
質問です。
PropertyGridで入れ子になっていて展開可能な項目を自動で展開したいです。
まずExpandAllGridItemsメソッドを調べてみましたが、これはカテゴリの展開専用で意味がありませんでした。
次に、GridItem.Expandedプロパティを見つけ、おおこれこそ捜し求めていたものと歓喜したのですが・・・
PropertyGridからGridItemの一覧を得る方法が分かりません。
SelectedGridItemがあって、なぜGridItemsが無いのでしょうか。



976 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 10:30:55 ]
SelectedGridItemからParentたどってけば

977 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 11:12:02 ]
Public Type Struct1
  Member1 As String
  Member2 As Byte
  Member3 As Byte
  Member4(20) As String
  Member5(20, 1340) As Byte
End Type

Declare Function ExpFunc1 Lib "Library1.dll" _
  (ByRef a_Struct1 As Struct1, _
  ByVal a_iNumber1 As Long, _
  ByVal a_iNumber2 As Long) As Long

ソースのない「Library1.dll」とそれを利用するための
上のようなVB6のサンプルがあるんですが、
これをC#(2008/.NET3.5)で利用するにはどう書いたら
いいんでしょうか?

よろしくお願いします。

978 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 12:49:26 ]
>>972
++
ナ+
になっちまう

979 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 13:02:09 ]
>>977
C#で参照してみれば?
ラッパクラ出来てインテリセンスきくんじゃないかな?

980 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 13:19:21 ]
>>979
---------------------------
Microsoft Visual C# 2008 Express Edition
---------------------------
'Library1.dll' への参照を追加できませんでした。
ファイルがアクセス可能で、有効なアセンブリまたは
COM コンポーネントであることを確認してください。
---------------------------
OK
---------------------------

COMじゃないとNGっぽいですね。

981 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 13:22:24 ]
DllImportでぐぐればいいんじゃね

982 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 13:23:49 ]
>>980
ごめん、VB6のDLLかと思ってた
VB6はDLLはCOMになるから

そういうことならReflection使ってみては?
色々他にもあると思うけど

983 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 13:25:08 ]
動的に呼び出しさせて何をさせようというんだ俺は・・・
疲れてんだな

984 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 17:19:48 ]
>>977
2次元配列のマーシャリングってできたっけ?>識者

985 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 17:35:29 ]
2次元配列はやったことないけど出来るはずだと思う



986 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 17:43:20 ]
うお、今調べたら出来ないようだった、もうしわけない。
対策はいろいろあるそうだが、ストレートには出来ないそうだ。

987 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 18:18:17 ]
とりあえずVB6の知識をひけらかすか

Public Type Struct1 
  Member1 As String 'BSTR
  Member2 As Byte '1バイト
  Member3 As Byte '1バイト
  Member4(20) As String 'UTF16な文字が20文字
  Member5(20, 1340) As Byte 'Option Base 0なら21×1341バイト
End Type

何の役にたつかはしらん

988 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 18:44:38 ]
>>987
>UTF16な文字が20文字 はこれじゃね?
Member4 As String * 20 

Member4(20) As String はStringの配列21 (Option base によるけど)

989 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 18:52:13 ]
立てれなかったから誰か任せた

C#, C♯, C#相談室 Part52
------------
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part51
pc12.2ch.net/test/read.cgi/tech/1233757615/

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

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

990 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 18:53:17 ]
「ふらっと」と「VS2008」スレが新スレになってるので更新。
>>3>>5はそのままでおkかな?
-----
関連スレ

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

Visual Studio 2008 Part 15
pc12.2ch.net/test/read.cgi/tech/1233853864/

WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
pc11.2ch.net/test/read.cgi/tech/1231506876/

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

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

991 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 18:53:59 ]
>>987,988
参考になります。
Option Base は無指定ですので、0ですかね。

UnmanagedType.BStr をヒントにもう少しトライしてみたいと思います。

992 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 19:15:52 ]
VB、C#混合になってしまうが
VB6で>>877の標準モジュールを含むプロジェクトを作って
VB.NETのアップグレードウイザードにかける。

やってみたがTODOが残るな・・・これもで手を入れないといけないようだ。


993 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 19:18:16 ]
VB6もC#も中途半端な知識しか持っていないけどこんな感じではないのか、と質問していい?
unsafe struct Struct1
{
[MarshalAs(UnmanagedType.LPStr)]
string Member1;
byte Member2;
byte Member3;
[MarshalAs(SizeConst = 21)]
string Member4[];
fixed byte Member5[21 * 1340];
};

[DllImport("Library1.dll")]
static extern int ExpFunc1(ref Struct1 a_Struct1, int a_iNumber1, int a_iNumber2);

unsafeが嫌なら
[MarshalAs(UnmanagedType.U1, SizeConst = 21 * 1341)]
byte Member5[,];
としてMember5 = new byte[21, 1341];

994 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 22:01:27 ]
>>988
そうだった
すっかり知識が抜け落ちてて愕然

995 名前:977 mailto:sage [2009/04/01(水) 09:48:39 ]
UnmanagedType.LPStrとか
UnmanagedType.BStrとか
UnmanagedType.ByValArrayとか
いろいろ試しましたが、どうにもうまく行かないので、
もう諦めてVB6でラップDLL作ってそれをC#で参照して
使うことにしました。
VB6のデバッガでもう少し粘るといいのかもしれませんが
これで妥協しました。

いろいろありがとうございました。



996 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 09:55:35 ]
MSDN見たか?まあ解決したならいいか

997 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:17:26 ]
C#, C♯, C#相談室 Part52
pc12.2ch.net/test/read.cgi/tech/1238548552/

998 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:58:25 ]
>>996
MSDNは 見まくり ですね。。

解決というか 逃げ ですけど、とりあえず
やれることはやれるようになったので。

VB6側の状況がよくわからずに
やみくもにやってもダメですね。
暇ができたら、ダミーの Library1.dll を作って
VB6から呼んでみて、中がどうなってるのか
確認してから再挑戦してみたいと思います。

999 名前:デフォルトの名無しさん [2009/04/01(水) 12:33:10 ]
MSDNよりPInvoke

1000 名前:デフォルトの名無しさん [2009/04/01(水) 13:14:28 ]
1000いただきまーす♪

1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<228KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef