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


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

ふらっとC#,C♯,C#(初心者用) Part24



1 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:44:27 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

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

369 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:14:42 ]
いやー、訳分からんPG起動させるオマイラほんと関心するわww

370 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:20:19 ]
コントロールの再描画についての質問ですが、Control.Updateメソッドは
「再描画すべき所があればWindowsメッセージキューに即割り込んでPaintイベントを発生する」
という理解でいいんでしょうか?
いちおう↓とか読んだのですが、いまいちピンと来ないもので。
ttp://dobon.net/vb/dotnet/control/refreshupdateinvalidate.html

371 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:35:48 ]
>>369
訳分からんやつはそも参加しない話

そしてPGなんて略し方(笑)

372 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:09:26 ]
すいません質問です。
PointFの引数になぜPointを代入できるのは仕様でしょうか?


373 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:10:37 ]
修正してたら日本語がおかしくなってしまいました、すいません。

374 名前:デフォルトの名無しさん [2008/02/08(金) 23:14:32 ]
VC#2005で、プログラムを組んでいるのですが、
C言語で書いた関数(メソッド)を使いたいと思っています。
ですが、.Cファイルをコンパイル、リンクする方法がわかりません。
プロジェクトに.cファイルをぶち込むと、テキストファイル?として
認識され、うまくリンクされていません。
VC++だと.Cファイルも使えたのですが、C#ではできないのでしょうか?
.Cファイルをincludeする方法がありましたら、教えてください。

スレ違いでしたら誘導お願いします。

375 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:15:33 ]
VC#では_

376 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:21:38 ]
まずCOMとIDLを用意してください

377 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:23:15 ]
>>372
暗黙の型変換が出来るように演算子がオーバーロードされている。
public static implicit operator PointF(Point p)



378 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:26:38 ]
>>374
VC++でC向けのDLLとしてコンパイルしてC#からDllImport
またはC++/CLI

379 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:37:40 ]
Cのソースがそのまま使えるかもなんて発想はどこから来るんだ

380 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:40:20 ]
そんなに量が多くないんだったら手書きでC#に移植したら

381 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:41:03 ]
>>370
ほぼOKじゃね
メッセージキューに割り込むってか
WndProcを直接呼ぶ


382 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:41:30 ]
>>377
式で検索したら出てきました、ありがとうございました。
ということは内部で構造体を作り直してるのでやりすぎると遅くなりますね。

383 名前:374 mailto:sage [2008/02/09(土) 01:33:43 ]
レスくれた方、ありがとうございます。
簡単には、C#でCのファイルは使えないんですね。
DllImportでの使用か、C#で書き直すか(限りなく大量ですが。)
検討してみます。
VC++でプログラム組んだほうが早い気もするし、困ったもんです。
ありがとうございました。

384 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:58:47 ]
C++/CLIおすすめ
DLLコピーし忘れ事故を一番防止できると思う
プロジェクトに加えておけば勝手にコピーしてくれるし

385 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 02:01:17 ]
>>383
普通にDLL作ってC#から読ませるだけやがね

386 名前:370 mailto:sage [2008/02/09(土) 03:35:09 ]
>>381
"直接呼ぶ"というのはどういう意味ですか?
WndProcは「.NETの外から来るWindowsメッセージを.NETのイベントに置き換えるメソッド」なので
Updateメソッド→Windowsメッセージ(WM_PAINT?)→WndProcメソッド→Paintイベント
という流れなんでしょうか?
あと、Paintイベントを発行するOnPaintメソッドがありますが、これは上記には絡まないんですか??

Paintイベントが発行されるまでの流れが分からなくて混乱しています。。(まだこの辺理解するには早いのかも
質問ばかりですみません。

387 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 07:53:57 ]
>>386
何が流れているの?

データ?処理?他?



388 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 08:34:49 ]
public class A {
 何か処理

 class AData {
 }
}

みたいに、自クラス内のみ、もしくはそのファイル内でのみ使えて、
外部からは見えないクラスを使いたいのですが、
アクセスレベルはどのように書けば良いのでしょうか。

389 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:12:25 ]
private。
ちなみに、A、ADataとも、互いのprivateフィールドやメソッドにアクセス可。
ソースファイル単位のアクセスレベルはない。

390 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 10:53:43 ]
public class A {
 private void hoge() {
  AData data = new AData();
  data.ANum = 1;
 }

 private class AData {
  private int ANum;
  private AData(){}
 }
}

のように書いてみたんですが、

AData data = new AData();
data.ANum = 1;

この部分で両方ともアクセスできない保護レベルになってると怒られるんですが…。

391 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:06:28 ]
>>390
AData は Aから見て別クラスなんだから、メンバまで private にしたら当然見えない。
ADataはAのprivateクラスだから、Aの外からは見えないがADataそのものはAからは
見える。

ので、ANumをAから見たければ、こうする。

public class A {
 private void hoge() {
  AData data = new AData();
  data.ANum = 1;
 }

 private class AData {
  public ANum;
  public AData(){}
 }
}

392 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:29:24 ]
>>386
WndProcとPaintイベントの間にOnPaintが挟まる。
メッセージキューは、位置としてはWndProcより前にあるのだが、
(Updateのように)これを介さずWndProcへ送られる場合もあって、
それを381は直接呼ぶと表現しているんだろう。

393 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:48:46 ]
>>391
それをやると、アクセシビリティに一貫性がありません、ADataのアクセシビリティは
フィールド○○よりも低く設定されています。
と怒られてしまいます。

394 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:59:09 ]
>>393
>>391の通りならエラーにはならない
どこかでAData型をAの外に見せてるんだろ

395 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:03:07 ]
>>393
今適当にやったけど、普通にできるぞ。本当にそのエラーなのか?
  

396 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:05:54 ]
public class A {
 public AData data;//ここでエラー
 private void hoge() {
  data = new AData();
  data.ANum = 1;
 }

 private class AData {
  public int ANum;
  public AData(){}
 }
}
たぶんこうなってると推測
クラス外から見えない型のオブジェクトを公開しても外から触れないだろ

397 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:11:49 ]
オブジェクト思考じゃないかもしれないですけど、階層型の構造になったプログラムで、兄弟(同階層)のオブジェクトの状態を知りたいときはどうするべきでしょうか?
親から回すしかないですかね?



398 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:15:49 ]
子に親への参照を持たせるかな

399 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:18:28 ]
漠然としすぎててワカンネ
兄弟だろうと姉妹だろうと参照もてばいいんじゃねーの

400 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:30:28 ]
>>397
日本語でおk。

401 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:50:32 ]
オブジェクト思考がなんだか解らないから、
参照持たせた所で、それは「オブジェクト思考」じゃ無いって叩かれるのを避けたかったんじゃない?

オブジェクト思考がなんだか解らないの、声だけ大きいキチガイが身近に居るとか。


402 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:51:55 ]
>>398
それアリなの?おぶじぇくと思考的に

403 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:54:55 ]
Parent プロパティ
でMSDN引いてみれば

404 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:59:43 ]
>>352
もう少し隠蔽すべきデータかどうか考えてみたら?
他の鯖認証してるツールのアクセスログとか見てみな。

405 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:50:05 ]
オブジェクト思考ではなくオブジェクト指向な。

406 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:08:52 ]
>>390
これじゃだめなん?
private class AData {
private int aNum;
protected internal int ANum { get { return aNum; } set { aNum = value; } }
protected internal AData() { }
}
}

407 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:17:22 ]
本末転倒だな



408 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:21:10 ]
つーかC#の話題じゃなくてオブジェクト指向スレ行けよ

409 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:54:12 ]
なんで馬鹿ってのはすぐに「〜スレ行けよ」って言いたがるんだろうねw


410 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:02:59 ]
そりゃ自分に理解できないことは全部すれちがい

411 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:22:58 ]
何で直線バカって目先のことしか考えられないんだ
どうでもいい話は直ぐ飛びつくしキモいんだよな

412 名前:370 mailto:sage [2008/02/09(土) 16:30:52 ]
>>392
>WndProcとPaintイベントの間にOnPaintが挟まる。
Paintイベントは直接的にはOnPaintによって発行される、ということでしょうか
ということはもしかして「イベントHogeは常にOnHogeメソッドによって発行される」のですか?
もしそうならスッキリしますね。

そうすると、例えばpictureBoxインスタンスのPaintイベント処理は、
「pictureBox_Paintイベントハンドラを設定」と「overrideしたOnHogeの作成」
のどちらでも機能的に同じことができる、ということでしょうか?
(そういえば誰かが「同じことをするにも何通りものアプローチがあるから、1つに拘るな」と言ってたのを見た記憶が)

>>387
他のウィンドウに隠れて無効化されたコントロールを再描画する、という単純なものです。。。

413 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:17:26 ]
こんばんは

C#でメモリ確保の方法ってありますか?

指定したメモリ数を確保するツールを作りたいのです。
教えてください。

414 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:45:11 ]
確保してどうしようってんだ

415 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:49:13 ]
それで思い出したけどスタックアロケートみたいのあったよね、あれってなんだったんだか

416 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:01:14 ]
>>413
new

417 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:12:19 ]
クラスのフィールドを取得するとき、フィールドをpublicにするかプロパティを用意するかは、どうやって決めたらいいんですか?
チェックなどを設けずに単にset{ this.hoge=hoge; } get{ return hoge; }とするのでも、プロパティ使う意味あるんでしょうか?



418 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:15:21 ]
>>413
一昔前にあったメモリを強制的に確保して開放するメモリ掃除ツールの模倣?

Console.ReadLine();
byte[] buffer = new byte[1024 * 1024 * 256];
buffer[1234567] = 5; //最適化防止用

Console.ReadLine()を抜けるとタスクマネージャにおけるPF使用量が増える。
ただNT系でメモリ掃除効果があるかは知らん。用途勘違いしてたら無視してくれ。

419 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 02:35:00 ]
www.atmarkit.co.jp/fdotnet/onepoint/onepoint02/onepoint02_01.html
この記事を読んで一瞬でも難しいと思った自分は、まだまだ修行不足なんだろうなぁ…
返り血が構造体なプロパティや、構造体なコレクションのforeachなんかは
自分もそのうち使うと思うので注意だけど、他にも初心者は気をつけとけ!っていう所ありますか?

420 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 02:58:23 ]
>>419
> 構造体なコレクション
これ,できるのか・・・継承とか委譲とかはクラスにしかできないとおもてた

421 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 03:25:22 ]
>>419
フィールドやセッターならエラー吐いてくれるからまだいいけど、
破壊的なメソッド呼び出しはエラーにならずに
コピーに対して無意味な操作をしてしまうって方が厄介なんだよね。
これのせいで値型のメソッドはimmutableであるべきだとか
そもそもフィールド操作と区別がつかないプロパティのシンタクスが
問題なんだとか主張もあったりなかったり。

422 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 05:54:21 ]
あと値型でジェネリック系のコレクションを使う場合は
IEquatable<T>.Equals(T o)やIComparable<T>.CompareTo(T o)を
実装しないとパフォーマンスが非常に悪いことになる。


423 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 10:40:03 ]
初心者は構造体を使うな。


424 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:42:20 ]
>>415
unsafe { byte* buf = stackalloc byte[10]; }

425 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:09:39 ]
構造体なんて自作するもんじゃないやね

426 名前:sage [2008/02/10(日) 13:11:27 ]
データグリッドに以下の様な利用期間を表示しています
表示しているデータは、DBに対してSELECT文で SELECT data1,"〜",data2...で取得しています(data1,2はstring型 "〜"は表示上仕方なく)

開始日付 終了日付
20000101 〜 20000131
20010101 〜 20010131
20020101 〜 20020131
20030101 〜 20030131
20040101 〜 20040131

必要だと思うことが以下の3項目です
1、更新ボタンを押された際に開始、終了のどちらかがNULL場合はエラー
2、入力された値が日付で無い場合はエラー
3、開始日付<終了日付で無い場合はエラー

処理としては更新ボタンが押された際"DBのデータを削除後、画面情報をDBにINSERT"しようと考えています。
その際に"昇順、かつ終了日付<次の行の開始日付の様にZの様な並び"にソートする方法を調べていますが今一よく分かりません。
多次元配列で[0,2]と[1,0]を比較して逆なら行を入れ替えて・・・の様な作りになるのでしょうか・・・。

IComparableとArrayListを調べてるのですが基礎が無さ過ぎる為にかなりパニクってます;
C#が初めての言語で経験2週間の度素人です・・・よければ教えてください。
開発環境はVisualStudio2003になります。

427 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:59:23 ]
>>426
20020101 〜 20040131
20030101 〜 20030131
20020201 〜 20030115
こういうケースはどう並ぶの?



428 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:00:46 ]
>>426
「表示」だけじゃ無いんだよな?日付入力して更新ということであれば

1.チェックの1〜3でOKならTMPテーブルに書き込む
2.TMPに書き込めたらcommitして元データ削除
3.TMPから元テーブルにコピー
4.元テーブルからSQLで読み込み(ここでソート)

どうしても配列でソートなら「配列、ソート」でぐぐるか本嫁、基本だから

排他が気になるけど全デリート全インサートなん?

429 名前:419 mailto:sage [2008/02/10(日) 14:01:16 ]
レスありがとうございます。せいぜい気をつけるしかないってことですね。
そういえば、C#のjavaより良い点の一つが、値渡しができる構造体って教わりましたよ。
なんとか使いこなせるよう頑張ろう。

430 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:10:29 ]
構造体を使うときに気をつけないといけないのはボクシング
こんなこというと,そんなもん大したコストじゃないだろとか言われそうだから先に言っとくけど,
構造体はそんなもんが問題になるような状況で使うもの

431 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:11:56 ]
>>429
何が頑張ろうだ、頑張るのはお前だw

432 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:13:09 ]
>>431
日本語って難しいよな

433 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:13:22 ]
>>431
君頭悪いでしょw

434 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:13:34 ]
読解力がないだけ

435 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:14:58 ]
>>431
同意

436 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:15:05 ]
>>430
なんか言ってること変じゃないか?w
よくわかってないのなら無理しない方がいいと思うよ

437 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:15:40 ]
>>435
同意?



438 名前:430 mailto:sage [2008/02/10(日) 14:19:21 ]
構造体はそんなもんが→構造体はその程度のコストが
これでいいか?

439 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:23:39 ]
よくないでしょw
ボクシングは構造体にまつわる問題だ、と自分で言ってるのに、
どうして「ボクシングが問題になるような状況で」構造体を使うんだよw

440 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:25:43 ]
そうじゃなくて構造体の一番の意義は、
たとえば配列の要素にアクセスするような場面における参照型のオーバーヘッドを
回避することでしょ。

441 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:42:26 ]
>>439
GC負荷を減らしたいときに構造体が活用できることがある。
でも構造体を使うときはボクシングに気をつけないとかえってGC負荷を増やしてしまう。
だからGC負荷を減らしたいときは、ボクシングに気をつけながら構造体の活用を考えよう。

というような話を>>430はしたいのだろう。

442 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:49:39 ]
構造体でボクシング利用するような事例ってどんなのだ?

443 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:52:35 ]
ボクシングってなーに?

444 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:55:33 ]
>>430はボクシングしないように構造体を使わないと早くならんぞといっているだけだろ
俺はほぼ全てのケースで構造体使っても早くならんと思ってるけどな

445 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:55:41 ]
構造体のアップキャスト

446 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:57:15 ]
>>442
例えば構造体のToStringをオーバーライドしてないとき。

public struct Hoge
{
  public int Fuga;
}

Hoge hoge = new Hoge();
string str = hoge.ToString(); // ←ここでボクシングがおきる

他にもIEquatable<T>を実装させずにDictionaryのキーにしたときとかボクシング起きまくり

447 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:04:16 ]
>>444
構造体は速くするためというよりは遅くならないための仕組みな気がするね。

>>446
>他にもIEquatable<T>を実装させずにDictionaryのキーにしたときとかボクシング起きまくり

GetHashCodeのオーバーライドも忘れずに。



448 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:40:00 ]
>>446みたいなのって単なる設計のミスだと思うんだけど。

449 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:56:38 ]
static string ToString(ValueType this);//ValueTypeは参照型
こんなメソッドを呼び出してることに相当するわけだから

450 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:06:28 ]
>>448
>>449
C#コンパイラが出力したIL見てみれば分かるけど
.NET 2.0以降ではconstrainedプレフィックスが使えるようになったので
ValueType.ToStringの呼び出しそのもののボクシングは回避できるようになった。
その意味では設計で対処されてる。

ただ、ValueType.ToStringが中でbase.GetType().ToString()を呼んでいるので
そこでボクシングとかGCヒープアロケーションは起きる可能性が高い。

451 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:28:54 ]
GetTypeって実際は何をやってるんだろうなあ

452 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 17:13:59 ]
試してみたけどGetTypeにもToStringにもヒープアロケーションはあるみたいだね

static void Main(string[] args)
{
for (int i = 0; i < 10000000; ++i)
{
Type t = i.GetType();
}

Console.WriteLine(GC.CollectionCount(0));
Console.WriteLine(GC.CollectionCount(1));
Console.WriteLine(GC.CollectionCount(2));
}

458
2
1

GetType→ToString

1206
2
1

ToStringはstringを作るわけだから当たり前だけど

453 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 17:53:12 ]
ToStringは使用頻度が低いから特に問題にはならないと思うが、
ハッシュや比較はコレクションで大量に使うからきちんと実装しといたほうがいい。
IEquatable<T>やIComparable<T>などを実装しないならジェネリックでないコレクションを使ったほうが、
ボクシングの回数は少なくて済むから逆にパフォーマンスもいいんだよね。


454 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 18:06:28 ]
今さらながら
プログラミング.NET Framework第2版
を買いました。
もう4月までずっと春休みなので
休み中に読破しようかな〜

455 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 18:09:55 ]
大学生は暇でいいですなー

456 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 18:37:24 ]
あの本は勉強になるな

457 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 18:39:23 ]
>>454
この業界来ないように他業種の勉強しておいた方がいいと思うよ



458 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 19:28:08 ]
コレクションで使う場合はハッシュと比較が影響を与えやすい。
ほかに、領域確保の効率が悪くなることで参照型より負荷が高くなることもある。


459 名前:デフォルトの名無しさん [2008/02/10(日) 19:28:52 ]
第3版はいつ出るんだろ?

460 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 19:37:27 ]
>>457
微妙に同意してしまうのだがw

461 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 20:01:22 ]
>>460
激しくだろ?

462 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:02:03 ]
まああれだ、不幸な奴ってのは不幸な理由を自分の置かれた環境に求めたがる、
という例の恥ずかしい法則でしょ
たとえば職業とかさw

お前が不幸なのはそれはお前だからだ、というのが真実なのにねw

463 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 08:22:09 ]
タブページをSelectedIndexの変更で切り替えると、切り替え先のチェックボックスが何故か押されてしまいます。(しかも2番目)
クリックで切り替えたときは何も起こらないのですが、何か原因があるのでしょうか?

464 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:13:36 ]
自己解決しました

465 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:14:29 ]
質問はするが、解決結果をフィードバックする気はないと

466 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:31:27 ]
なんかのイベントでChecked = true;って自分で書いたんだろ

467 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:48:18 ]
とあるネイティブWin32アプリの拡張dllをC#で書くことって可能ですか?
つまりC#(.NET)でアンマネージなDLLの開発が出来るかということだと思うんですが・・。
因みにWin32アプリの方をCOM対応にするとかはなしで。



468 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:54:25 ]
C#でアンマネージドなDLLは作れないけど、CLRの機能としてマネージド関数をアンマネージドの世界に公開することは出来る。
ただ、多くの場合まともに動かないから、素直にC++/CLIでラッパDLLを書いたほうがいい。

ここで気をつけなければならないのが、一つのプロセスには一つのCLRしかロードできないということ。
つまり、そのプロセスに別のバージョンのCLRを使うモジュールがロードされていると正常に動かない可能性がある。

469 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 13:23:56 ]
やっぱり難しいですか。
C++はかなり苦手なんだけど、ラッパDLLがいいんなんですね。
念のため調べたいので、どっかにCLRでマネージドを公開するいい例が無いでしょうか・・?


470 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 13:28:03 ]
ラッパより糖衣だろう

471 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 13:28:58 ]
>>469
support.microsoft.com/default.aspx?scid=kb;ja;815065

472 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 13:34:32 ]
ILかw
これはひどい

473 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 13:39:54 ]
>>471
逆PInvokeはさすがに知らんかった。
どの言語から使いたいのかわからないけどCOMが一番取り回しが楽だよ。
登録の問題はSxSで回避できるし。

474 名前:467 mailto:sage [2008/02/11(月) 13:51:19 ]
もう圧倒的にCOMがいいのは重々承知なんですが、
OpenSource系のWin32だし苦手なC++なので手が入れられないんですよね。
逆アセンブリ?もちょっと・・


475 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 13:57:48 ]
じゃあやっぱりC++/CLI

476 名前:467 mailto:sage [2008/02/11(月) 14:03:55 ]
ですよねー。それがいいみたいですね。
よく分かってないので、C++/CLIでのラッパーの作り方とか調べてみます。


477 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:59:09 ]
そこらへんくわしい書籍ないかな?
あんまり見かけない気がする
てかC++/CLI関係の本がないか。。。



478 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 16:24:41 ]
装飾付きRTFファイルに装飾付きRTFデータを追記する方法で困っています

装飾部分が毎回同じ(黄色のハイライトのみ)なので単純合体の方法で
現存のRTFファイルをテキスト読込し最後の2行の終了部を削る
追加するRTFデータをRTFファイル出力してからテキスト読込して
最初の2行の装飾部を削ってテキストを合体させテキスト出力する

そのくらいしか思いつきません
他によい方法はありますでしょうか?

479 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 16:39:30 ]
フォームにリッチテキストボックスを2つ置いて、起動時に引数でファイル読込して
片方に追加させファイルに書込んで終了する単独ソフトを作った方がいいのかなあ

480 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 19:46:07 ]
Qtで作成させたウィンドウのイベントをフックするプログラムを作りたいのですが、
スパイ++で覗いたところ、QWidgetというクラスで、キャプションはlbOKというオブジェクトです
このlbOKをクリックするイベントを送りたいのですがどうしたらいいでしょうか?
ウィンドウハンドルやウィンドウProcなども分かっています
よろしくお願いいたします

481 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 19:58:02 ]
実際にクリックしてみてどんなメッセージが飛んでるか、
Spy++で調べて、SendMessageで再現すればいいよ。

482 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 19:59:07 ]
>>480
SendMessage, BM_CLICK

483 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 20:09:20 ]
>>481
>>482
なるほど参考になりました
SendMessageですね!!
さっそくSpy++で調べてやってみます!!

484 名前:デフォルトの名無しさん [2008/02/11(月) 21:28:58 ]
Vistaの「Task Dialog」で
OPENFILENAME構造体のFlugsにEnableTemplateHandle、またはEnableHookを選択するとXP以前の外観に戻ってしまうんです。
ダイアログボックスをカスタマイズするには、ウィンドウメッセージをフックする必要があるので、EnableHookを必ず選択しないといけなく新しい外観のままカスタマイズすることはできないのです

C++では使えないようなんですが
ttp://msdn2.microsoft.com/ja-jp/library/43xtah3y.aspx
C#ではどうなんでしょう
おねがいします。

485 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 21:42:45 ]
ものすごい初心的な質問だと思うんですが

ボタンだけを配置したフォームでキーイベントを受け取りたいのですが
どうすれば良いのか教えてください

486 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 22:55:36 ]
結局はゆうが細かったということで

487 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:55:49 ]
ContextMenuStripでShow()した時に、
ContextMenuStripが閉じるまでShow()から制御が戻らないようにしたいんだけど、
どうすればよい?

TrackPopupMenu()みたく、メニュー側でモーダルループ持たせたいんだけど。。。



488 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 05:27:39 ]
HttpWebRequestを用いて通信したとき、
200successや404notfoundなどの
コードはどのように取得したらいいのでしょうか?
よろしくお願いいたします。

489 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 08:52:18 ]
>>488
HTTPの応答時のステータスコードを取得する
ttp://dobon.net/vb/dotnet/internet/httpstatuscode.html

490 名前:デフォルトの名無しさん [2008/02/12(火) 09:00:56 ]
>>488
HttpWebResponse.StatusCodeとHttpWebResponse.StatusDescriptionに
はいってんじゃね?

404だと例外放るからWebExceptionキャッチして、webException.Response
をHttpWebResponseにキャストして、同様にStatusCodeなんかを見る。

491 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 12:47:34 ]
>>489
>>490
ありがとうございます
HttpWebResponseにキャストしなくちゃいけなかったんですね
大変助かりました

492 名前:デフォルトの名無しさん [2008/02/12(火) 15:07:00 ]
PDFファイルの中の文字を検索とかってできるんかね?

493 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:35:42 ]
ネットの海からライブラリを探すしかない

494 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:43:15 ]
仕様は公開されてるから自分でできるよ

495 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:55:27 ]
PDFってバイナリでしょ?
画像も入るからむずかしくね?

496 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:56:11 ]
そういやGoogleボットはPDF内もクロールしてるな
できるんじゃね
PDFのgrep作ったら俺にもちょうだい

497 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 17:05:22 ]
>>495
バイナリエディタで見ればわかるが、少なくとも文字はただのテキスト。



498 名前:デフォルトの名無しさん [2008/02/12(火) 17:27:13 ]
UserControlでスムーズスクロールを実装するにはどうやればいいのでしょうか?


499 名前:デフォルトの名無しさん [2008/02/12(火) 18:06:14 ]
ああ、つまりアレか
PDFファイルを開いて文字列だけ正規表現か何かで抜き出せばいいのか

500 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:27:22 ]
画像と画像じゃない部分は区別しなくていいの?w
ダメだろそんなルーズな方法

501 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:42:02 ]
pdfのライブラリでテキストだけ抜き出せるべ

502 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:18:19 ]
バイナリから文字列っぽい部分拾ってくるだけなら、ただのstringツールだ

503 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:24:58 ]
PDF -> テキスト ならTeXについてくるツールでいいんじゃね

504 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:14:16 ]
携帯から失礼します

GameState = Title;

switch (GameState)
{
  case Title:
  処理
  if("Aを押したら")
  {
  GameState = Main;
  }
break;

case Main:
処理
  break;
}

こんな感じのプログラムを打っているのですが、実行結果が少しおかしいのです。

タイトル画面からAを押したらメイン画面に移行します。しかし、メイン画面での処理が始まりません。

試しにGameStateにMainを入れて始めたら、メイン画面の処理が行われました。

ちなみに、タイトル画面にメイン画面の処理を全て入れてタイトル画面→メイン画面と移行させたらメイン画面の処理が行われました。

しかし、タイトル画面ではタイトルの処理だけ、メイン画面ではメインの処理だけさせたいのでこれでは意味がないのです。

説明下手で申し訳ないです。何か分かりましたら教えて頂けないでしょうか?

505 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:20:14 ]
>>504
breakしてんだから始まるわけないじゃん
処理のフローをちゃんと見直せ

506 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:29:16 ]
アフォすぎてワラタ

507 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:38:51 ]
PDFのフォーマットは失禁するほど複雑だし(1300ページ超)、文字列も何種類かあるし、
自前で解析なんてやってられない



508 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:39:28 ]
なんでPDFなんてできたんだ

509 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:45:06 ]
お答えありがとうございます。アホな質問に答えて頂き感謝します。

しかし、break文を消した所、

コントロールはひとつのcaseラベル(case 0)から別のラベルへ流れ落ちることはできません。

と、エラーが出ました。恐らく

case Title

処理

case Main

と書いてあるためだと思われますが、これだ


ここまで書いて思ったのですが、なんか質問する以前の問題のような気がしました。もっと勉強し直して来ます……すいませんでした

510 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:12:19 ]
>>509
だからフローを見直せって
switchの使い方がおかしいんだろ

511 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:17:44 ]
>>510
はい、もう一度見直します。もっとじっくり考えます。今日はこれが出来るまで寝ないつもりで頑張ります。

512 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:21:23 ]
C#以前に構造化プログラムを理解してないんだろ
初心者はif while以外使うな
これだけでプログラム書ける

513 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:25:24 ]
今時構造化プログラミングが何かすらソフトウェア工学で教えなかったりするらしいな

514 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:36:53 ]
それってまずいだろw
構造化プログラムが書けなきゃOOPなんて絶対むりやん

515 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:45:56 ]
そもそもソフトウェア工学学んだりしてるやつがほとんど居ないだろ
独学も含めてな

516 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 04:33:15 ]
なんとか無事に出来ましたので報告します。やはりswitch文の使い方に問題がありました。

今思うとなんでこんなことを、と恥ずかしさで死にそうです。しかし、今回の経験を通してswitch文だけではなく、enum型、メソッドの使い方を学びました。

こんだけ必死になったのも、自分の醜態を晒したからだと思いますw これからも日々精進で頑張ります。

長々となりましたが、自分のしたいことが出来ましたので報告とさせて頂きました。色々とお見苦しい所があったかと思います。失礼しました。

517 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 04:38:38 ]
うん、良い子だ



518 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 04:47:40 ]
俺ん時はソフトウェア工学教える授業でちゃんとあったんだよな
んで、人伝に聞いただけなんだけどJava使っていきなりOOPだとか
って考え直したらソフトウェア工学自体やってねえだけか

519 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 04:48:47 ]
>>516
解決してよかったね

520 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 09:52:19 ]
三十郎か

521 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 10:30:13 ]
>>516
報告乙。恥ずかしさを思い出して氏ね。

522 名前:484 mailto:sage [2008/02/13(水) 12:38:08 ]
その後いろいろ調べてみたところ、Vistaで利用できる新しいファイルダイアログボックスをカスタマイズするには、
COMベースのAPIを利用する必要があるということがわかりました

C++での利用例を参考に(この時点では表示できている)、C++のヘッダーファイルを読み、C#で実装しました
そして、コンパイルし動かしてみると、メモリアクセス違反が発生し、ダイアログが表示されません
どうしてなんでしょうか?

ソースコードは
www.uploda.org/uporg1248711.zip.html
開発環境はVS2005Pro
最新のMicrosoft Windows SDK for Windows Vistaが必要だと思います。
もちろん、Vistaでのみの動作です。
お願いします

523 名前:484 mailto:sage [2008/02/13(水) 12:44:54 ]
すいません、アップロードに失敗したのでこちらをお願いします。
www.uploda.org/uporg1248719.zip.html

524 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 14:23:08 ]
>>513
順次構造・繰り返し構造・分岐構造やフローチャート程度のものなら高校でやるよ。
工業系でない一般高校でも。

525 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 14:51:28 ]
>>524
まじ?一体いつから・・・
俺ん時はなかったな

526 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:49:29 ]
くだ質でスンマセンですが
List<hoge>fuga1と
List<hoge>fuga2が
含まれるリストが同じか否かを知るには、どうやればいいですか?

527 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 16:24:39 ]
>>526
Enumerable.SequenceEqual



528 名前:526 mailto:sage [2008/02/13(水) 16:51:15 ]
>>527
C#3.0まだ勉強してないです・・・
とりあえずカッコ悪いけどforeachで回します

529 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 17:50:38 ]
カウンタ使わないと無理じゃないの?
それならforのほうが

530 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 18:30:05 ]
えっ?

531 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:21:46 ]
^^;

532 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:34:39 ]
>>526
まずは要素数を比較
一致するならリストをソートして先頭から順に一致するか検査

533 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:48:25 ]
>>532
ソートしたらO(n logn)になっちゃうやん

534 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:49:25 ]
順序も含めて「同じ」かもしれないだろ

535 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:59:29 ]
>>532
アフォ過ぎてお茶吹いたwww

536 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 20:06:13 ]
順序無視ならHashSet<T>が使えるな

537 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 20:14:51 ]
使ったこと無いけど、Dictionaryのキーだけバージョンか



538 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 20:21:22 ]
うるせー
ソートして何が悪い
俺はソートが好きなんだよ

539 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 20:22:29 ]
HashSetは集合演算用だろ
よくしらんけど

540 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 20:37:11 ]
>>536
同じ要素が複数あったらダメダな

541 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 20:41:05 ]
集合演算したいだけならふつうのSetがあるだろ

542 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 20:41:37 ]
>>538
ププププ

543 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 20:43:39 ]
fuga1.TrueForAll(fuga2.Contains)
みたいなことやるよりはマシか

544 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:06:24 ]
>>533>>535
アホは君らだ。

545 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:25:31 ]
そーっとしとこう

546 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:34:35 ]
マジレスしてい〜い?

547 名前:526 mailto:sage [2008/02/13(水) 23:00:19 ]
スンマセン自分のせいでスレのふいんきが
結局どんなのが良いんですかね?

ソートしちゃうのが一番単純ですが、ソートに使えそうなフィールドがない場合や
IComparable付けてない場合だと駄目ですよね??
fuga1.TrueForAll(fuga2.Contains)はいいかなと思ったんですが、駄目なんですか?



548 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:06:45 ]
つかそもそもソートしていいの?

549 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:11:55 ]
重複はあるの?

550 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:26:42 ]
>>547
問題を具体的に示しなよ。
正解教えてあげるからさ。

551 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:29:19 ]
>>546
 *      *
  *     +  いいよん
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *


552 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:31:16 ]
最近のC#erってのはアルゴリズムもわかっとらんのか

553 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:35:55 ]
いやここ初心者スレだし

554 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:36:58 ]
ttp://www.atmarkit.co.jp/fdotnet/technology/idnfw11_index/index.html
この辺読んでるんだが、アセンブリの厳密名とか署名とか、なんか色々面倒くさいと感じた。
当分気にしなくてもいいんだろうか。

555 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:38:20 ]
つまり回答者のお前らも初心者だったのか

556 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:40:21 ]
悔しさが滲み出る良レス

557 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:40:42 ]
>>547
それじゃ一方が他方の部分集合であることしか分からんじゃん。
それに、O(n^2)



558 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:45:36 ]
ソートした後の結果が同じかどうか知りたいのであれば
最初からListを使うべきではないんだと思うな
SortedListあるいはDictionaryあたりを使うべきなんじゃないかね

559 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:48:16 ]
(・∀・)ニヤニヤ

560 名前:526 mailto:sage [2008/02/13(水) 23:53:15 ]
>>548
>つかそもそもソートしていいの?
「いい」というのは、「並びが変わってしまっていい」という意味ですか?
対象のリストは大丈夫です。必要ならソート用Listをコピーして用意すればいいと思いますが

>>549
ないです。ある場合はまた面倒なんでしょうかね・・・?

>>557
重複がないので↓で大丈夫だと思うのですが?(というか大丈夫でした)
bool b;
if(fuga1.Contains==fuga2.Contains) { b = fuga1.TrueForAll(fuga2.Contains); }


>>552さんのいうとおりアルゴリズムの基本もちゃんと分かってない阿呆なので、この辺で失礼します。
ありがとうございました。

561 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:54:05 ]
ソートなんかしたらO(n logn)で無駄だろ
普通に要素比較しろ

562 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:54:23 ]
>>557
二つのリストの長さは等しいの?

563 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:56:27 ]
>>561
アホ。

564 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:00:44 ]
何なのこの流れ

565 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:05:29 ]
要素数はいくつなんだ?
100とかじゃないよな?

566 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:06:12 ]
>>563
いや、アホはお前だろw

567 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:09:15 ]
質問者も逃げ出したのか



568 名前:526 mailto:sage [2008/02/14(木) 00:11:20 ]
スンマセン、>>560はfuga1.Contains==fuga2.Containsはミスです。

ふと思ったんですが、Listをコピーしておいて(←参照型だから軽いですよね)、
ContainsがtrueだったらRemoveしておけば多少早くなりませんか?

bool b = true;
if (fuga1.Count == fuga2.Count)
{
foreach (hoge f in fuga1)
{
if (fuga2.Contains(f))
{
fuga2.Remove(f);
}
else
{
b = false;
break;
}
}
}
else
{
b = false;
}

重複の場合はどうしょ・・・・

569 名前:526 mailto:sage [2008/02/14(木) 00:12:19 ]
しまったスペースが
お見苦しくてスマンセン

570 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:17:20 ]
>>568
二つのリストに同じ要素が入っているとしても順番までも同じとは限らないの?

571 名前:526 mailto:sage [2008/02/14(木) 00:25:17 ]
>>570
順番は違います(とくに規則性はないです)
順番が一意に決まってるのならもっと早い方法があるってことですか?

572 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:26:39 ]
うん

573 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:36:47 ]
ハッシュテーブルに突っ込めばいいじゃん。

574 名前:デフォルトの名無しさん [2008/02/14(木) 00:38:43 ]
wpfでfarameを使ってwebページにnavigateした後にそのページのDOMを取得するには
どうしたらいいんでしょう。windows.formsのwebbrowserでdocumentを取るみたいに
したいんですが。

575 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:43:52 ]
>>574
WPFって何なのですか?
新規作成のメニューにあって気になってたんですが・・・・

576 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:47:33 ]
WPF は流石にぐぐったらいくらでも情報出てくる。

577 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 01:03:31 ]
概要さらっとぐらい教えてくれたっていいのに・・・
まあいいか、自分で調べるわ



578 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 01:32:54 ]
どう考えても調べたほうが速いし正確

579 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 01:45:48 ]
大体解ったのでもういいです
channel9.msdn.com/screencasts/thailandscreencast.wmv


580 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 03:49:37 ]
WPF 結構色々できますね、XMLのドキュメントはバイナリー化されているんだ、なるほど。
やっていたらもう四時になっしまった、寝なきゃ・・・


581 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 05:01:10 ]
regsvr32使って登録したアンマネージドなDLLは,
そのまま[DllImport]で呼べると思ってたんだけど
DLLが見つかりませんって実行エラーがでる...

これってどうやればいいんですか?
DLLはいろんなファイルや他のDLL参照してるから
今のフォルダ構成から動かせられないって制限付きなんですが...

582 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 05:51:47 ]
てs

583 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 05:55:50 ]
>>581
DLLが見つからないんじゃない?

584 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 06:05:27 ]
regsvr32ならCOM呼び出しになる
参照設定で追加

585 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 06:19:26 ]
C#を使い、.net無し環境で動くまともなプログラムは作れますか?

586 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 06:31:21 ]
なにをしてまともと言うのか

587 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 06:58:01 ]
えっと、HelloWorldくらいなら出来る、とかそういうレベルではなく
普通に配布されているようなユーティリティのようなものを作れるのかなと
WinAPIを直接触ってしまったらしまったでC#でやる意味もない気もしますし

自分でもうまくまとまらないですすみません



588 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 07:08:28 ]
Linuxへの移植も可能っぽいし(framework部は動かないが)、やろうと思えばできるんじゃない
つかC#から.net切ったら何も残らないと思うのだが

589 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 07:09:29 ]
なるほど・・・C/C++をやってきての段階なので、ちょっと概要を調べつくしつつ
使い分けできるようにしていきたいと思ってます、ありがとう

590 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 07:19:00 ]
むり

591 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 07:21:20 ]
>>590
安価つけよう、なぜか>>589-590で笑っちまった

592 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 07:47:20 ]
いや無理じゃないぜ
C#単体では動かないが

593 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 08:35:40 ]
むりなものはむり

594 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:07:26 ]
Windows限定なら.NETFrameworkなし環境用のexeを作るツールがある

でも借りたPCで.NETインスコ不可等の事情がない限り、そのまま配布してほしいな

よく考えてみたらスレ違いな気がする…

595 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:08:45 ]
ngenは意味ないしなぁ
ネイティブコンパイラなんてあったっけ

596 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:13:37 ]
gugurekasu

597 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:44:14 ]
>>588
てか、そこは「Linux 版の .NET 環境もあるよ」と教えるべきでは。

>>595
www.remotesoft.com/

でも、言語仕様の時点で .NET Framework の存在を仮定してる言語のネイティブコンパイラ使ってもなぁ。




598 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 10:09:07 ]
>>597
念のために言っておくと .NET Framework の存在は仮定してない。
# C# が必要とする BCL は Micro Framework に比べてもはるかに小さいし、アセンブリやリフレクションの概念さえない。
ただし、RTTI や GC を含む基本的な言語システムはどうしても必要になってくるけど。

599 名前:デフォルトの名無しさん [2008/02/14(木) 10:23:30 ]
TextBoxでマルチラインを有効にした状態で行間設定はできないのでしょうか?
行間がビチビチで読みにくいのですが。


600 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 10:48:15 ]
>>597
monoって今ぶっちゃけどうなんすか?
専用スレが寂れまくってますが。

601 名前:581 mailto:sage [2008/02/14(木) 10:51:26 ]
>584

参照設定でDLLを追加してみましたが,同じ結果でエラーが出ました

追加情報: System.Web.Services.Protocols.SoapException: サーバーは要求を処理できませんでした。 ---> System.DllNotFoundException: DLL '***.dll' を読み込めません: 指定されたモジュールが見つかりません。 (HRESULT からの例外: 0x8007007E)

Webサービスで参照させているのが影響してたりしますでしょうか...?
(テスト環境はローカル)

参照の追加ダイアログで確認する限り,DLLへのパスはあっています


602 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 10:58:44 ]
ソケットでサーバーで接続元のIPアドレスとポート番号を取得するにはどうすればいい?

603 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 11:24:11 ]
Socket クラス使ってんなら RemoteEndPoint があるだろ

604 名前:デフォルトの名無しさん [2008/02/14(木) 13:56:30 ]
>>600
anonsvn.mono-project.com/Mono-1.2.6_openSUSE-10.3.i686.iso.torrent

605 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:02:22 ]
>>604
踏むのが怖い

606 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:04:59 ]
torrentだから例え踏んでもその先に行けないだろう、キミは

607 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:05:39 ]
C#伸びていくのかねぇ



608 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:11:18 ]
なんだかんだある程度広がるのは確実だろうなぁ
VSのC#への偏向具合もあるし、MSは.NETひいてはC#を当分主軸として動きそうだし

609 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:16:39 ]
なんだかんだだよななんだかんだ
なんだかんだWindowsシェア広いし

俺としてはASPが強力だと思えるからWindowsサーバがどれくらい増えるか気になる

610 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:28:36 ]
vista以降は.NET標準で入ってるから、windowsが廃れない限り確実に伸びるんじゃないですかね?

611 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:06:37 ]
windowsサーバをまともに構築する苦労というかは結構でかい気がするな

というのも初心者がWindowsサーバ構築して公開して悲惨なことになっているのを見てだけど

612 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:14:53 ]
そんなんOS問わずだと思うが

613 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:17:34 ]
そうかねぇ、初心者が構築したってんだからそうでもないだろ

linuxなんて最初からセキュリティ割とがちがちだし

614 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:19:08 ]
初心者のLinuxサーバ構築よりマシかと、動いたところでいっぱいいっぱいで
もう触らないとか、目も当てられない状況になる事多々ありなんですが
素敵な踏み台サーバーは勘弁、某大学とかとかwww

615 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:19:48 ]
WindowsServerがセキュリティは上だよ。

616 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:21:31 ]
初心者linuxサーバはインスコから合わせて解説通りやる
ポート開放やデフォのセキュリティからちょこっと解放したり

Windowsは普通にデフォのWin環境で鯖構築するから目も当てられない
これくらいは常識以下

某大学は偶然狙われただけだろう、狙われればどこも同じなんて状況だよ
そんな悲惨なのが溢れてる
まあそういうとこは大学のページほどアクセスやらされ辛いわけだがな

617 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:22:41 ]
WinXPやなんかで公開するのか?
そりゃ見事にアウトゾーンだがまあ初心者ならやるか・・



618 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:23:07 ]
えー、めんどくさくなって全部ONにしてtelnetポート開けっぴろげだぜベィベー
とかよ

619 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:30:03 ]
想像だけで語るスレはここですか?

620 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:41:44 ]
WindowsServerは、馬鹿が使っても大丈夫なようになっているから、
生半可な知識でLinux鯖立てる人より安全。
なぜなら、彼らはOSのバージョンアップのやり方を知らないから。makeも知らない。
だから、人件費が削減できて、結果的に(フリーのLinuxより)Windowsを買った方が安くつく。
だから売れる。商売が成り立つ。もちろん知識のある人の多い会社はわざわざOSを買ったりしないが。
WinならWindowsUpdate一発だから。GUIだから馬鹿でもやれる。
大学のサーバは本当にひどい。
VineLinux3.2(M大、N大)とか、PHP3系(S大、W大)とか、普通に使っているし。
証明書なしで学外からパスワードを入力させる。うちの大学のことだが。
でもさすがにWinXPで鯖立てる大学は知らない。犯罪だしな。

621 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:45:03 ]
犯罪にはならないよ

622 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:45:38 ]
XPで鯖立てたら犯罪って。中途半端な知識だなぁ。

623 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:48:43 ]
ヒント:同時接続数

624 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:50:11 ]
wwwwwwwwwwwwwwww

625 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:51:09 ]
大学は本当にヤバイですよ
このスレで質問してるような自分が相当できる人だと思われてる・・・

626 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:53:23 ]
で、C#の質問はまだ?

627 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:54:15 ]
×大学は本当にヤバイですよ
○私の大学は本当にヤバイですよ



628 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:57:27 ]
>>627
俺の大学、高木先生に「この大学に入学するな」リストに入ってるwww

629 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:58:46 ]
どこ?

630 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:01:49 ]
ttp://takagi-hiromitsu.jp/diary/20071201.html

631 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:05:30 ]
間違えた。
ttp://takagi-hiromitsu.jp/diary/20071117.html

632 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:06:52 ]
スラドで話題になってた奴か

633 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:11:48 ]
やべ、俺の大学もリストアップされてるwww

634 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:16:00 ]
どこ?

635 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:49:31 ]
法政

636 名前:デフォルトの名無しさん [2008/02/14(木) 20:59:55 ]
wpfで作られるWindow1クラスのクラス名とかWindow1.xamlのファイル名とか
リファクタリングしてもxamlの方が更新されなくて、いちいち手動で直さないと
いけないのがすごく面倒くさいんですが、なんか良い方法ってあるんでしょうか?

それとも、Window1でそのまま使った方が良いのかな…。なんか気分が悪い。

637 名前:デフォルトの名無しさん [2008/02/14(木) 21:04:32 ]
デフォルト設定ならWindows Serverの方が圧倒的に堅い。
素人が余計な事をしなければ、ある程度のセキュリティを確保できる。
が、ガチガチのセキュリティを確保しようとすると、やれレジストリだ何だと鬼のように難しい。
そしてちょっと凝った事をしようとすると「動かん」「バグですか」となる。

一方、デフォルトのLinuxはオープン。来る者拒まずな感じ。
そのかわりガチガチにするのは楽。
素人が訳も解らずにネット上の「入門」とか言ってるサイトに転がってる設定ファイルをコピペ
するだけでも、それなりになる。
そして自分が何をやったのか、訳も解ってないのに偉そうになる。



638 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 21:12:15 ]
>>637
それはもう常識でしょう、語らなくてもいいです、スレ違い(笑

639 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 22:57:56 ]
なんでサーバの話してんの?

640 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 23:01:10 ]
少しくらいログ読めば?

641 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 23:17:01 ]
UIのコンテナ関係の質問です。
元のコンテナをDisableにすると中のコントロールも灰色になってしまうのですが、
これを自前でドローする以外で回避するにはどうしたらいいでしょうか?

642 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 00:14:04 ]
自前ドローだけで回避できるのか?
WS_DISABLEDが伝播してきてるんじゃないのかね

643 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 02:41:57 ]
>>641
見たこと無いな、そんな機能
色は変えなくてもDisable?
それでなけれぱ、一旦コンテナから離して、優先順位を上にしてしまうのが楽チンそうな気がする。

644 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 10:02:09 ]
ちょっと教えて下さい。
HttpRequest/HttpResponceを使ってWebサーバと通信して居ます。
WebサーバからCookieが送られて来るのですが、JavaScript中に埋め
込まれて送られてきます。
HttpResponceで受け取ったデータの中を舐めても良いのですが、もっ
とスマートにCookieを取り出したいのですが、何か良い方法は無いで
しょうか?
ちなみに、IEがDocument Setting\ユーザ名\Cookieに保存するCookie
ファイルを直接読み出す方法を考えて見たんですが、ログインユーザ
を意識しないでやる方法を探して居ます。
何か良い方法は無いものでしょうか?

645 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 10:23:20 ]
>>644
Cookies

646 名前:デフォルトの名無しさん [2008/02/15(金) 11:18:22 ]
DateTime型のToString()メソッドで、XML SchemaのdateTime型(CCYY-MM-DDTHH:MM:SSZ)形式を
一発で出す方法は無いでしょうか?

DateTime dt = DateTime.Now();
dt.ToString("s");

でCCYY-MM-DDTHH:MM:SSまでは出る事がわかったのですが。
(タイムゾーンが出ないです)

TimeSpanを使って長ったらしい内容にしないと無理でしょうか?
後々、バグの原因になりそうなので簡潔に書いておきたいのですが。

647 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 11:35:15 ]
dt.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss':'zzz");
とか?



648 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 12:15:14 ]
つーかDateTime構造体にタイムゾーン情報って含まれてたっけ?
単なるlong値じゃねーの

649 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 12:17:49 ]
UTCかGMTかの区別は入ってるよ。
あとは実行した環境のタイムゾーン見ればよし。

650 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 12:18:09 ]
UTCかローカルタイムか、ね

651 名前:デフォルトの名無しさん [2008/02/15(金) 12:48:47 ]
>>647
XMLスキーマのdateTimeってGMT+タイムゾーンだからそれじゃダメじゃね?

>>648
.NET2.0から仕様が変わってタイムゾーンを保持するようになった



652 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 13:06:17 ]
>>644
HttpWebRequest/HttpWebResponseではJavaScriptが動作しないので、
埋め込まれていたら無理。
IEで利用しているCookieを取得するには、InternetGetCookie。

653 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 13:51:37 ]
>>651
なら 'GMT'zzだね。

654 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 13:54:03 ]
'Z'

655 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 14:10:52 ]
DateTimeはカスタムクラスを作っておいて必ずそれを呼ぶ様にした方がいい。
特にDBとか使ってるときにDB側の日付型の違いで地獄に堕ちるのを防いでくれる。

656 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 14:26:17 ]
>DB側の日付型の違い
これって結構あるものなんですか?標準と微妙に違ってたり、とか?

657 名前:デフォルトの名無しさん [2008/02/15(金) 14:36:05 ]
フォームの質問です。

メインウィンドウからダイアログ1を開く→OK押す(ダイアログ1消える)→ダイアログ2が起動
(重い処理なのでプログレスバー表示)→完了(ダイアログ2消える)→メインウィンドウに戻る

をしたいのですが、1を消すタイミングでclose()、dispose()してるにも関わらず
ダイアログ2が終わるまで1のダイアログが残ってしまいます。(1の上に2が重なってるイメージ)
どうやれば、1のダイアログをすぐに消すことが出来るんでしょうか。





658 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 14:38:22 ]
親ウィンドウをdisposeって普通しないんじゃ?
最小化すればいいんでないの

659 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 14:40:35 ]
>>656
selectした際に特に変換せずに抜き出すと、各社ばらばら。
あと内部保持形式がUTCだったり設定依存だったりと。
俺は日付に関する値でも迷わずvarcharにしている。
で、どうしてもという時は、where句で必要に応じてvarchar -> dateとかキャストして使うようにしている。

660 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 14:45:12 ]
>>658
良く嫁

661 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 15:08:45 ]
>>659
すごいですね・・・DBやったことないんで知りませんでした
地獄には堕ちたくないですよねやっぱ

662 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 15:10:05 ]
重い処理とやらをUIスレッドでやってるだけじゃね?

663 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 15:10:29 ]
SQL92準拠にしとけばいい

664 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 15:19:41 ]
>>657
ダイアログ2を開く処理はどこに書いてる?
ダイアログ1のOKボタンのハンドラに書いてないか?

665 名前:デフォルトの名無しさん [2008/02/15(金) 15:22:06 ]
>>663
そんなの関係ねぇ〜

666 名前:657 [2008/02/15(金) 16:28:57 ]
>664
処理の流れは、

1.メインウィンドウ
ダイアログ1を開く処理(xxx.ShowDialog())
2.ダイアログ1
処理 (DialogResult.OKを返す)
3.メインウィンドウ
DialogResult.OKを受け取った後、ダイアログ1を閉じる処理 (close()、dispose())
4.メインウィンドウ
ダイアログ2を開く処理(yyy.ShowDialog())
5.ダイアログ2
処理 (処理後にclose()、dispose())

5でダイアログ2が消えると同時に3のclose()が働いてるようです。
因みに3の直後でmessagebox.show()でメッセージを表示すればダイアログ1は消えます。


667 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 16:43:11 ]
再描画



668 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 18:02:16 ]
DateTimeにnullが代入できないのはどうにかならんのだろうか
nullに相当する時間をきめてやるとか、処理がめんどい

669 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 18:17:58 ]
Nullable<DateTime>

670 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 18:36:22 ]
DateTime.MinValueでいいんじゃね

671 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 18:40:08 ]
Nullableと?って何が違うの?

672 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 18:43:09 ]
同じ。

673 名前:デフォルトの名無しさん [2008/02/15(金) 19:42:34 ]
DateTimeをクラス化すればいい

674 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 20:35:05 ]
>>669
ジェネリックかじってたけどこれは知らんかった

>>670
それも考えたけどフレムワクのバージョンとか
環境の違いで値が変わる可能性がないとは言い切れない
とか妄想したんで使ってない

>>673
その考えはなかった

675 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:35:36 ]
>>671
構文糖衣ってやつ。

676 名前:644 mailto:sage [2008/02/15(金) 23:42:22 ]
>>645,652
回答ありがとうございます。早速試して見ます。

677 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:45:01 ]
>>675
クラス型と値型との違いはないの?



678 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:51:49 ]
>>677
T?に対応するのはNullable<T>構造体だよ。
だからどっちも値型。

679 名前:デフォルトの名無しさん [2008/02/16(土) 00:58:29 ]
monoからDateTime.cs引っ張ってきてクラス化してみようと思ったが面倒なんで途中でやめた

680 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:01:14 ]
世界がお前の偉業を待ち望んでる
最後までやれ

681 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:06:41 ]
>>678
なるほどなー
Nullableって使いやすくて大好きさ

682 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 12:50:26 ]
2つのIEnumeratorを並行して列挙したいんだけど
自分で列挙子を直接操作する以外の方法ある?

683 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:00:14 ]
>>682
> 並行して列挙
って何?

684 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:05:41 ]
ZipWithみたいなのが欲しいってこと?
ttp://blogs.wankuma.com/mnow/archive/2008/01/24/119056.aspx#119332

685 名前:682 mailto:sage [2008/02/16(土) 13:19:55 ]
>>684
うん
.NET3.5も含めて,標準の方法はないということでいいのかな

686 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:23:31 ]
>>685
であれば残念ながら標準では無いですな。
必要なら作るしかない。

ちなみにMicrosoft Parallel Extensions to .NET Framework 3.5の中にも
internalメソッドでZipWithが入ってる。
標準で入れてくれてばいいのに。

687 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:32:58 ]
Haskell を馬鹿にするわけじゃないけど、
zip with って名前が何だかださくない?



688 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:05:04 ]
WriteLineみたいな英単語の先頭ごとに大文字にするクラス名・メソッド名の記法はなんていうの?
ハンガリアン記法で調べてかかったページを見ても書いてないんだけど。

689 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:22:11 ]
>名前付けのガイドライン

690 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:34:52 ]
>>688
CamelCaseと言います。
ttp://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%83%A1%E3%83%AB%E3%82%B1%E3%83%BC%E3%82%B9

JIS X 3015だと「らくだ形式」って訳されてますな。

691 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:37:15 ]
違わないか?w

692 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:45:17 ]
"名前付けのガイドライン"でググってMSDNで確認した、後に
>690のリンクに飛んだら、吹いた。

MSとWikiPediaならどっちもどっちだけど、 書いてる奴マジやる気ないんだな。

693 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:46:53 ]
「Pascal 形式」じゃねーの?
少なくともハンガリアン記法は関係ない

694 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:52:32 ]
ハンガリアンはMS自らによって完全否定されました

695 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:02:38 ]
>>693
「Pascal 形式」であってるよ。

ttp://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%83%A1%E3%83%AB%E3%82%B1%E3%83%BC%E3%82%B9
>
>アッパーキャメルケース (UCC)、またはパスカルケース(PascalCase)
> 複合語の先頭を、大文字で書き始める。
> つづり例:CamelCase
>
>ローワーキャメルケース (LCC)、または単にキャメルケース
> 複合語の先頭を、小文字で書き始める。
> つづり例:camelCase

696 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:13:07 ]
微妙に話が変わるけどReSharper 4.0でCompletion with CamelHumpsが入るっぽいな。

たとえば"SqlBulkCopy"というメソッドを"SBuC"みたいな書き方で補完できるらしい。
ttp://www.jetbrains.net/confluence/display/ReSharper/ReSharper+4.0+EAP+Notes#ReSharper4.0EAPNotes-CompletionwithCamelHumps


697 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:26:38 ]
なにそれ気持ち悪い



698 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:28:12 ]
ハンガリアンは誤解された形で広まってしまっただけで、
元々の考えは別に悪い物ではない。

699 名前:デフォルトの名無しさん [2008/02/17(日) 05:08:52 ]
独自の設定ファイルを簡単に読み書きできるクラスってないでしょうか。
また設定ファイルの一部はデータグリッドに表示して編集もしたいです。


700 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 05:22:32 ]
独自のファイルを操作するクラスは独自に作るんじゃないのか?

701 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 09:36:59 ]
List<Hoge> listの中身をランダムにソートしたいです。

list.Sort( delegate( Hoge a, Hoge b ) {
 return rand.Next( -1, 2 );
} );

のように、ランダムに-1〜1が返るようにして実装したつもりなのですが、動かすと
Array.Sort が x. CompareTo(x) を呼び出したときに、IComparer または依存する IComparable メソッドは 0 を返しませんでした。
という例外が発生します。
どこが悪いのでしょうか?

702 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 10:24:55 ]
比較関数は推移性とかを満たしていることが前提だからな

703 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 11:09:15 ]
>>699
DataSetとか。
でも、保存するのが単純な値などかによっても善し悪しあるから、
素直に2.0以降は独自クラス作ってシリアライズのが楽。


704 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 11:10:32 ]
>>701
エラーは、自分自身との比較は0を返せって意味だけど、
そもそもソートの比較関数は、例えばA<BでB<Cのとき、A<Cでなければならかなかったはず。
答えがランダムじゃだめだと思う。

一旦別のリストにコピーしてから、
そのリストの添え字をRandom.Nextで生成してAddしていけば?

705 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 11:40:16 ]
>>701
ランダム並べ替えが目的なら、昔からある定番アルゴリズムを使えばよし。
Sortメソッドは、一定のルールに基づいて並べ替えを行うメソッドなので、ランダム並べ替えに使うのは良くない。コードを読む人が混乱する。

static void Shuffle<T>(ref IList<T> list)
{
Random r = new Random();

for (int i = 1; i < list.Count; i++)
{
int j = r.Next(list.Count);
T tmp = list[ i ];
list[ i ] = list[ j ];
list[ j ] = tmp;
}
}

706 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 11:41:43 ]
>>701
「i番目の要素をi以上配列の長さ未満のランダムな要素と交換する」をすべてのiについて行えばシャッフルできるはず。

ところで、
Enumの名前とプロパティの名前をできるだけ同じにしたいときがあるんですがどうしてます?
↓こういう場合です。
class MyIO
{
enum MyIOMode
{
Syncronized,
Asyncronized
}

public MyIOMode MyIOMode { get; set; }

MyIO()
{
MyIOMode = MyIOMode.Asyncronized;
}
}
System.IO.FileModeみたいに複数のクラスで使われるならenumを名前空間に直接書いてもいいんですが、
そのクラスでしか使わないとなるとクラスの中に書きたいと思うのです。

707 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 11:44:45 ]
>>705
ref にする意味ってあるの?



708 名前:705 mailto:sage [2008/02/17(日) 11:48:40 ]
すまん。refは不要というか不可だ。

709 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:02:17 ]
>>705
for (int i = 1 だとまずくね?
Count=1 や 2 なら問題ないけど Count=3 だと
リスト先頭だった要素は Shffule 後にも先頭にいる確率が 4/9 になる

710 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:09:57 ]
>>706
MSのガイドラインによると,ネストした型を外に見せるのは推奨されない
外に書いていい

711 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:24:01 ]
>>710
そんなガイドラインあったっけ?
っていうか.NETのライブラリだって普通にネストした型を公開してるよね。
たとえばListViewItemCollectionなんてそのはずだけど

712 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:47:31 ]
>>711
msdn2.microsoft.com/ja-jp/library/ms229027(VS.80).aspx
コレクション系は例外に当たるみたい(List<T>+Enumeratorとか)

713 名前:712 mailto:sage [2008/02/17(日) 13:00:34 ]
親とデザイン的に強く結び付いてるときは(親のprivateメンバにアクセスするとか)
稀に入れ子の型にすることもあるってことかな
単に親でしか使われないからというだけではなく

714 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 13:07:51 ]
というより当該のガイドラインそのものが合理的根拠がない「俺様ルール」か、
それが言いすぎならせいぜい「村の掟」に過ぎないってことじゃないの?

715 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 13:19:19 ]
それを言うなら名前付けの規則とか
名前空間をあんまり深くしすぎるなとかだって同じだろ
単にMSの好みだから従わなくていいと言ってしまえばそれまで

716 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 13:43:17 ]
変なプログラムの例ならCプログラミング診断室を読むといいよ

717 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:06:20 ]
Cプログラミング診断室で昔何度か探し回ったものの書籍紹介しかなくて泣いたのはいい思い出

ちょっと下にスクロールするだけだったと思わなかったのは俺だけかなぁ



718 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:15:49 ]
君だけだろwwwww

719 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:18:56 ]
俺だけか…てかあそこ読む意味をあんま理解してない辺りまだまだですね、すみません

720 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:42:17 ]
>>717
え?ちょw今知ったwww本借りてきたのにwwwww

721 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:21:58 ]
定数文字列を格納する一番(?)スマートな手段というのはどんなものなのでしょうか?

現状
struct hoge{
 const string piyo = "abcde";
 const string fuga = "abcde";
 const string hogehoge = "abcde";
 const string piyopiyo = "abcde";
 const string fugafuga = "abcde";
       :
}
といった具合にだーっと書いています、文字列定数の数は50個程度、文字列長は10~300文字程度です
調べれば定数と言えばconstと出てくるのでこれで通していたのですが
もっと良い手段があるのではないかと思い質問しました。
それではよろしくお願いします

722 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:24:30 ]
>>721
リソースとして埋め込むかテキストファイルにでも書いておいたらいいんでない?

723 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:47:36 ]
>>721
.NET Frameworkの中では
SR.GetString("キー文字列")
みたいにしてるよ
そういう風にしとくと後で実装変えられて便利

724 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:01:01 ]
Icon ico = Properties.Resources.IconFile1;
以上の部分で、以下のようなエラーが出ます
エラー CS0103: 名前 'Properties' は現在のコンテキスト内に存在しません。

以前までは正常に動いていたためどこかを変えてしまったせいかとも考えたのですが
エラー文から見るにPropertiesが無いといっているように思えます
しかし、ソリューションエクスプローラから見るとProperties/Resources/IconFile1はしっかり存在します

こういった場合はどういう間違い・おかしな部分が考えられるのでしょうか?


725 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:24:31 ]
>>724
開発しているのにまずエラーコードやエラーメッセージでググらずに2chに書き込んでる部分かな

726 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:30:00 ]
>>725
なにを根拠に言っているか笑えてきますが既に検索済みです。

727 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:30:34 ]
ああゆう断定形はネタだよ、ガチで言っちゃってるやつはすぐふぁびょるから見もの



728 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:22:34 ]
バルーンを手動で表示させると、最初だけふきだしの先っぽが違う方向に出るのは何故なんだぜ?
ツールチップに関するコードは↓のみなんだけど、回避する方法は無いものか…

toolTip1.Active = false;
if( textBox1.Text.Length > 5 ){
  toolTip1.Active = true;
  toolTip1.Show( "hoge", textBox1 )
}

729 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 10:30:35 ]
ツンデレ

730 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 12:15:37 ]
ArrayListで2つのコレクションがあるんだけど、どちらもPointerなのね
この2つのコレクションに含まれてる要素で、重複するものだけを取り出したいんだけど、どうやればいいんでしょ?
たとえば、
1つめのコレクションhoge1には、{P1, P2, P3, P6, P7, P8 }
2つめのhoge2には{P2, P7}
とあるとき、P2とP7だけ取り出したいんです
foreach( Point p in hoge2)
{
  if( hoge1.Contain(p))
  {
    point.add(p)
  }
}
とやったら、if分のところで、比較ができないというエラーが出マスタ
今回、ジェネリックは使わないので、ArrayListでお願いしますm(__)m

731 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 12:58:58 ]
日本語でおkっていうか。
Pointer って何? そういうクラスってことでいいの? だとしたらポインタとごっちゃになるろくでもない名前だけど。
比較ができないってエラーメッセージはググった限り .NET のエラーメッセージには存在しないようだけど?

732 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 13:49:25 ]
>>731
スマソ Point型と間違えたわ
2つのコレクションは、どちらもPoint型変数が入ってるのよ


733 名前:730 mailto:sage [2008/02/18(月) 14:10:04 ]
もっと調べたら、ObjectとPointが比較できないとか、明示的なキャストが必要です、とか出てきマスタ。

734 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 17:03:21 ]
.NET Framework 2.0かそれ以下かでArrayList.Containsの挙動が違うらしいが。
1.xならContains使わずにループでunboxingして比較するしかないんじゃない?

735 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 17:30:49 ]
ArrayList はジェネリックじゃないから、Contain() の引数は Object 型でないとダメだぞ。
Add() する時にもちゃんと Point から Object にキャストしてるんでしょ?


736 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 20:24:08 ]
どうもありがとう

>>734
ソースコードはC#1.0のときに書かれたものですが、.今はNET2.0で使ってます

>>735
Add()するときはObjectにして加えてます。
なるほどそうか。
Contein()の引数を、Point型のままにしてますた。
Object型にキャストしてから引数に使えばいいんだ・・・。

やってみます。
どうもありがとうございます。

しかし、受け継いだソースがC#1.0向けに書かれたソースなので、
ArrayListを全部ジェネリックに書き換えるのが手間だと思っていたけど、
結局書き換えた方が後々楽な気がしてきた・・・orz

737 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:07:39 ]
>>736
アップキャストしてどうすんだよ
ポリモルフィズムを理解してないんじゃねーの?



738 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:21:04 ]
>>735


739 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:52:22 ]
ぽまいら、変数とかの命名でプレフィックスとかつけてまつか?


740 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:59:30 ]
必死になっていい単語思いつかないときに時々使う

741 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:59:33 ]
どっちでもいいけどクラス外から見えるメンバにプレフィックス付けたら死刑

742 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:03:04 ]
クラス外から見えるメンバって静的メンバ定数のことか?
それ以外にまさかないよね?

743 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:08:24 ]
アクセス制御とstaticかどうかは関係ないだろ

publicフィールドはゆるさーんて言いたいだけ?

744 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:13:52 ]
public フィールドなんてキチガイしか書かんだろ。
構造体ならともかく。

745 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:16:27 ]
メンバって言ってるんだからC#の世界ならパブリックメソッドとプロパティとイベントでしょ。

個人的にはいまだに型名にプリフィクスつけるよ。
少数派なのは認識してるが、やっぱり構造体、クラス、列挙体がぱっと見ただけで
区別つく方が好都合な場面が多い。
特にクラスのつもりで構造体扱っちゃうような「致命的な凡ミス」を防げる蓋然性があがるし。

746 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:18:40 ]
オレはC#の場合はプロトタイプや使い捨てのプログラムでは書く

命名規則はプロパティと同様にしておいて、

class Hoge{
public int Foo;
}

必要になったら

class Hoge{
private int foo;
public int Foo{ get{return foo;} set{foo=value;} }
}
あまりオススメはしない


747 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:38:37 ]
プレフィックスつけるってそもそも設計ミスじゃない?
つーかVBer以外で使う人いるの?
結構人見てきたけどVBerだけだったよ。



748 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:42:24 ]
まあ関連するプロジェクトが全て自分の管理下にあるならリネームなんて一発だしな。
リフレクションで型名とかメソッド名が文字列に埋め込まれてると痛いが。

749 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:50:45 ]
>>736
私は、キャストが手間という理由でジェネリック使いまくり。
違う型のリストが複数あるとき、インテリセンスで要素の型が判別できるのが特に嬉しい。

>>737
ArrayList はポリもーフィズムとアップ・ダウンキャストを前提に使うものなのでは。
初心者用スレだし、一応ツッコミ。


750 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:52:14 ]
メソッドやプロパティのほとんどを日本語にしているから
プレフィックスがないと入力が不便。


751 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 23:21:15 ]
プレフィックスが教えてくれるのは変数の型だけだぜ!!

って誰かが言ってたな。

752 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 23:29:43 ]
前に見た糞プロジェクトで、フィールドに普通に名前つけて
プロパティ名が全部p_なんちゃらとかなってて思わずワロタよ

753 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 23:30:03 ]
.NET Frameworkのクラスライブラリのソースコードのメンバ変数はプリフィックスだらけ

754 名前:デフォルトの名無しさん [2008/02/18(月) 23:55:21 ]
>>753
privateなフィールドなら好きにすればいいが、public メンバにやったら殺す

755 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:04:58 ]
>>751
元々のハンガリアンは変数の型をプレフィックスにするんじゃないぜ!!
って、Joelが言っている。
local.joelonsoftware.com/mediawiki/index.php/%E9%96%93%E9%81%95%E3%81%A3%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E8%A6%8B%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B

756 名前:デフォルトの名無しさん [2008/02/19(火) 00:16:12 ]
>>744

publicなフィールドってやっぱだめ?
set getでフィールド渡すだけだと、いちいちプロパティの宣言するのが面倒くさくて
ついついやっちまうんだけど。

757 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:19:24 ]
C#3.0の自動プロパティで駆逐されると信じたい
public int MyProperty { get; set } これだけ



758 名前:デフォルトの名無しさん [2008/02/19(火) 00:20:31 ]
重い処理を行うプログラムがあり、BackgroundWorkerを使ってるんですが、
画面への出力にはDoWorkからフォーム操作を行おうとすると「あるスレッドで作成された
コントロールに対して、別のスレッドのコントロールを親にすることはできません。」と出ます。

それは分かるんですが、フォームへの描画自体に時間がかかる場合、その処理自体を
バックグラウンドで行うにはどうやれば良いのでしょうか。

759 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:21:22 ]
バッファに書き込んどけ

760 名前:758 [2008/02/19(火) 00:43:11 ]
説明が抜けてましたが、実際は子ウィンドウから処理を実行し、親ウィンドウに
複数のウィンドウ(タブ)を追加するといった処理をしたいです。(タブを追加する処理が重い)
バッファに書き込む方法はSetStyle()だと思うんですが、どうも親ウィンドウのフォームでは
SetStyle()が指定できないようでした。。

761 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:55:36 ]
Bitmapに描いとくってことだろ

762 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:38:40 ]
プレフィックスつけてるひと、けっこういるのね
型名とかコントール名とか、どうやって省略したらいいか困るときがある

int int_x=0;
string str_name = "taro";
textbox tbx_input = new textbox();

みたいな感じで頭に三文字略称をつけろとかいう
つまんないローカルルールが社内で流行ってて
しかも人によって略称が違うときがあって逆に混乱するという
ちゃんと取り決めしてないのにプレフィックスつけろって…
プレフィックス一覧とかあると助かるんだけど、いいのが ない


763 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:54:45 ]
ないと思うけどlong int_x = 0;

764 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:55:16 ]
var int_x = 0;

765 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:55:18 ]
コントロールはわからないでもないけど
その他の型名を付けることに関しては全く無意味だと思う

766 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:23:59 ]
VS2005でSocket通信を行っているのですが、LANケーブルを抜かれた等の経路切断の検出方法に困っています。
調べたところ、TCP KeepAliveを使えば出来そうな気配なのですが、C#用の資料が全然見つかりません。

資料もしくはサンプルのポインタを教えてください。

私が調べたかぎりでは
ttp://vsug.jp/tabid/63/forumid/45/threadid/8051/scope/posts/Default.aspx
がかなり近いケースで、ほぼ要求事項は同じです。(違いは私はクライアント側になります)

たしかにこのSetSocketOptionを設定しても、検出はできませんでした。
// KeepAliveの設定
_tcpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, 30000);

レス3番目の方法はどこにどう実装していいものやらわからず、またどうやって検出するのかもわからない状況です。
必要あればサンプルも貼ります。

767 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:32:52 ]
>>766
TCPに任せちゃうんじゃなくて,自分でソケットをラップした通信ライブラリを作ってそこでACKみたいなのをやりとりすれば
直ぐ確認できるはず



768 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:45:01 ]
>>757
それをプロパティにするとなんかメリットあるの?
いつもpublicフィールドにしちゃうけど

769 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 08:23:15 ]
>>762
型名っていうかクラスと構造体とenum(とそれぞれのインスタンス)を
区別するためだけ、なんだけどね

要はクラスならcを頭につけるとかそういうやつ

770 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:37:26 ]
描画をバックグラウンドって、
描画からみの処理自体を細切れにしてやるしかないな。


771 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:41:50 ]
>>768
あとで実装変えられる

772 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:51:58 ]
>>771
あーやっぱめんどくさいからpublicフィールドで十分かな(´・ω・`)

773 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:53:02 ]
propコードスニペット使えよ

774 名前:デフォルトの名無しさん [2008/02/19(火) 11:14:22 ]
プロパティーを使っておくと、リフレクションを使ったライブラリやコードを組むときに便利だよ
C#3.0から導入される匿名型は自動的にプロパティーとして実装される事もあるし、とりあえず以下の例を見てもらえれば解る。
Button と DataGridView コントロールをフォームに置く。
以下のコードを実行する、C#は日本語でもコードできるのでそのままいけます、DataGridViewのタイトルに注目、プロパティーの名前がそのまま出る。

class 行の定義 { public int 行番号 { get; set; } public string 内容 { get; set; } }
ボタンのイベントに対して
行の定義[] データテーブル = new 行の定義[] {
new 行の定義() { 行番号 = 1 , 内容 = "ABC" } ,
new 行の定義() { 行番号 = 2 , 内容 = "DEF" } ,
new 行の定義() { 行番号 = 3 , 内容 = "GHI" } ,
};
dataGridView1.DataSource = データテーブル;

775 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:16:41 ]
>>774
それぐらいだともはやこれでいい気がするけどな。

dataGridView1.DataSource = new []
{
 new { 行番号 = 1 , 内容 = "ABC" } ,
 new { 行番号 = 2 , 内容 = "DEF" } ,
 new { 行番号 = 3 , 内容 = "GHI" } ,
};

776 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:25:40 ]
2008は、発売されてまだ日が経っていないので、まだ知らない人いるかなと思ってそう書いたんですが・・・
とふと気付くとプロパティーを省略形にしていたorz
C#3.0では、get; set; と書くと、自動的に中身が作られます。

777 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:39:29 ]
ああ駄目だ、配列の初期化までC#3.0になっているorz
もう戻れないな……



778 名前:766 mailto:sage [2008/02/19(火) 11:54:56 ]
>>767
御返事ありがとうございます。

> TCPに任せちゃうんじゃなくて,自分でソケットをラップした通信ライブラリを作ってそこでACKみたいなのをやりとりすれば
> 直ぐ確認できるはず
自分でそこまでできるスキルがありませんorz サンプルがあれば頑張って追いかけてみるんですが素で書くのは無理そうです。。。

サーバ側が自分でいじれればアプリ側でチェックかけるのですが、サーバ側は担当外なので変更不可です。。。

779 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 12:48:55 ]
となるとネットワークインタフェイスと会話する必要がありそうだね
こっちは門外漢なのでヒントだけおいておきますね
support.microsoft.com/kb/239924/ja

780 名前:766 mailto:sage [2008/02/19(火) 13:38:53 ]
>>779
ヒントありがとうございます。レジストリいじるですか。。。ちょっと気が引けますけど試してみます。

781 名前:デフォルトの名無しさん [2008/02/19(火) 15:11:44 ]
>>776

おおお、そうなのか!
2008のpropスニペットで{get;set;}としか入らないから
なんじゃこりゃ…と思っていたところ。

782 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 15:25:50 ]
VS2005(C#2.0)です。
インスタンスを文字列で生成するには
Activator.CreateInstance(Type.GetType("クラス名"));
で生成するのは判ったんですが、"クラス名"が存在しているかどうか(生成可能かどうか)を
事前に判断するにはどうしたらいいでしょうか?

データを読んでいって、専用の派生クラスがあればそれで、
無ければ汎用の基底クラスで生成しようと思ってるんです。

ご教示よろしくお願いします。

783 名前:782 mailto:sage [2008/02/19(火) 15:37:05 ]
あ、GetTypeしたときにnullかどうか、
もしくはCreateInstanceして例外をキャッチすればいいのか。

784 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 15:44:07 ]
>>746
よくPGの人は、HogeとかHogehogeとかFooとかって書いてるけど、なんでへんてこりんな単語を使うの?
ホゲ、ホゲホゲ、ホゲ、フーーー!とかってカタカナで書くと、ぬこが喧嘩してるのかと思う

785 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 15:48:04 ]
>>760
最初からタブを用意しておいてHideにしておき、必要が出たらVisibleにするのはどうなの?

786 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 16:27:27 ]
すいません質問です。

列挙型の変数でToString使用しようとすると、『使用しないでください』、といったポップアップの説明が出ます。
代替としてSystem.Enum.Parseを使えと言ってますが、
現在の値の文字列を取得したいので、GetNameのような気がしますがどうでしょうか?

787 名前:デフォルトの名無しさん mailto:age [2008/02/19(火) 17:07:01 ]
すいません、質問です。

複数条件を確認する場合のif文の書き方について教えてください。
こんな感じで書きたいのですが、C#の場合はエラーとなってしまいます。
C#ではどのように書いたらよいのでしょうか。

if((a=="")or(b="")){

}else{

}

いくつか検索をしてみたのですが、かっこのなかの条件が一つの場合の
例しかヒットしませんでしたのでここで質問をしてみました。
どうぞよろしくお願いします。



788 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:08:31 ]
>>787
||

789 名前:デフォルトの名無しさん mailto:age [2008/02/19(火) 17:12:09 ]
>>788
ありがとうございました。

790 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:46:22 ]
>>784
ja.wikipedia.org/wiki/Hoge


791 名前:デフォルトの名無しさん [2008/02/19(火) 18:27:11 ]
2008ってVistaから搭載されてるガジェット作れるようになった?

792 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 18:48:46 ]
>>784
メタ変数ってやつだよ

793 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 19:23:06 ]
>>790
日産フーガって・・・メタ構文変数だったのか

794 名前:デフォルトの名無しさん [2008/02/19(火) 21:27:36 ]
質問です。DBにA列とB列があり

A   B
----------
1 日本
1   東京
1   大阪
2   アメリカ
2 ニューヨーク
3   中国
3 北京

のような形で格納されています。

これをGridに表示させる際に

1 日本   東京     大阪
2 アメリカ ニューヨーク
3 中国   北京

といった形で出力したいのですが、どのようにコードを組んだらいいのか
悩んでおります。

何か良い方法などありますでしょうか?

795 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:32:27 ]
while(Aカラムが存在するまで):
Aカラムに該当するレコードを配列に格納
while(配列が存在するまで):
配列からBカラムを抽出
end
end

796 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:36:28 ]
>>794
こんな感じ?
var table = new[]{
 new { A = 1, B = "日本" }, new { A = 1, B = "東京" },
 new { A = 1, B = "大阪" }, new { A = 2, B = "アメリカ" },
 new { A = 2, B = "ニューヨーク" }, new { A = 3, B = "中国" },
 new { A = 3, B = "北京" } };

var q = from x in table group x.B by x.A;

foreach (var x in q)
{
 Console.Write(x.Key);
 foreach (var y in x) Console.Write("\t{0}", y);
 Console.Write("\n");
}

797 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:43:16 ]
データの持ち方を間違ってる。
テーブル構造を見直すか、アプリ側で処理する。



798 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:56:55 ]
テーブル構造を指摘する人って・・・

799 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:05:52 ]
RDBの場合レコードの並びは保証されてないから国名をどうやって判定するのよ
前ブランクのあるなしかい?


800 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:11:11 ]
国コード 国名  地域名
1     日本   東京

普通こんな感じにしないか

801 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:12:44 ]
まあ、それ言い出したら >>800 のテーブルも正規化されてないでしょ。
そこはスルーでいいんじゃないかと。

802 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:23:58 ]
>>800
気持ちはわかるが、国コードと国名が冗長な気がする

803 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:40:35 ]
つか日本なら普通、国コードは81だろ

804 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:43:17 ]
+81

805 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:38:27 ]
42にすれば全て解決

806 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:40:24 ]
むしろカラム一枚で
81<>jp<>tokyo
みたいにすれば最強。
で、レコード一枚でケツに繋げていくの。

807 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 09:59:09 ]
.NET Frameworkのバージョンが異なるアセンブリ間で
StringやImage等のオブジェクトをやりとりするのは問題ないのでしょうか?



808 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 14:43:16 ]
意味ワカンネ


809 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 14:45:03 ]
具体的にどういう状態?

810 名前:807 mailto:sage [2008/02/20(水) 15:05:03 ]
// .NET Framework2.0で作ったアプリ
System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom(他の人が.NET Framework3.5で作ったDLL);
Hoge hoge = (Hoge)asm.CreateInstance(DLLが公開しているクラス名);
string str = hoge.Name;
Image img = hoge.GetImage();

と、違うバージョンで作られたStringやImageを使っても大丈夫なのかなと。

811 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 15:08:38 ]
そもそも同一プロセスに異なるバージョンのCLRはロードできないんじゃなかったっけ。
リモート使った場合は余計にシラネ。

812 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 15:14:47 ]
2.0-3.5はCLRが同じバージョンだから問題ないはず。
2.0/3.0にSP1を当てておけばより確実だと思う。

813 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 19:34:41 ]
>>797-802
分類基準は一番最初の数値じゃないのかな?
昔のコボラーさんたちが良く使うで、国番号でソートしておいて、国番号が変わったところで切り出すという常套手段。
C#でやるなら 796 だね、これなら番号がソートできないデータ型でもいける、データ構造を変えるなら二重テーブル、XMLを取り扱う気分で。

814 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 19:40:18 ]
C#2.0での質問ですが、
ジェネリックのコレクションにadd()メソッドで加えたデータを、データグリッドに表示させる方法を教えてください


815 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:33:08 ]
>>813
そういうレベルの話じゃなくてRDBの行に順序なんてない(ORDER BY
でも同順位内は不定)ので「初めに返ってくる」とか「一番上」とかは
不定。意味ないから同じ順で返ってくること多いが毎回ランダムで返って
来ても正しい動作。

つーわけで質問のテーブルだと格納する情報が足りないので不可能が
答えになってしまい >>797 みたいな答えしかできないと

816 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 21:13:08 ]
>>814
追加するデータのメンバーはフィールド?、それともプロパティー?
表示されるのはパブリックなプロパティーのみだよ 774 を参考にしてみて。
それでも解らなかったら詳細をどうぞ。

>>815
回答する側で勝手に必要条件やしてませんか?
……わかんないけど

817 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 21:25:50 ]
>>810
なんかこわいっすね、一旦シリアライザでシリアライズしてから渡したほうが無難そうな予感がする。
バイナリフォーマッタ辺りでやれば大きくパフォーマンスも落ちないだろうし、自分ならそっち方面を狙いたいですね。
もし使うなら、こいつです
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter



818 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 00:24:12 ]
>>817
怖いって……
実行エンジンのバージョンとコンパイルされたアセンブリのバージョンと
ごっちゃにするなよ
つーかBinayFormatterこそめちゃくちゃバージョン依存だろう
xmlの方がまし


819 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 00:42:08 ]
じゃあbyte[]やchar[]に変換したら

820 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:21:14 ]
>>818
おぃおぃ(^^;

821 名前:814 [2008/02/21(木) 01:40:00 ]
>>816
C#2.0で、クラスを
class 行の定義
{
  int _行番号
  string _内容
  public int 行番号
  {
   get{ return _行番号;}
    set{ _行番号 = value;}
  }
  public string 内容
   {
   get{ return _内容;}
   set{ _内容 = value; }
}
とした場合、C#2.0で、行の定義クラスを配列として使う方法が分かりません。
この方法(クラスのインスタンスを配列として使う方法と、その場合の初期化)を教えてください

行の定義[] データテーブル = new 行の定義[]();
としてもエラーが出てしまうし、
行の定義[] データテーブル = new 行の定義();
としてもエラーが出てしまいます



822 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:49:06 ]
>>821
横やりだけど、()がいらない
行の定義[] データテーブル = new 行の定義[];

初期化をいれるなら
行の定義[] データテーブル = new 行の定義[]
{
new 行の定義( 初期化内容 ) ,
new 行の定義( 初期化内容 ) ,
...
};
"new 行の定義"でコンストラクタでメンバを初期化する機能は2.0には無いので、引数付きコンストラクタを作っておく必要がある。

823 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 07:08:39 ]
行の定義[] データテーブル = new 行の定義[要素数];

824 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 13:34:30 ]
話を通じさせる為にも3.0に移行がお勧めだな、VS2008はなぜかVS2005より軽量と出来が良いので買い替え時としては悪くないし

825 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 14:24:46 ]
でもお客に.Net3.5Frameworkを入れさせないといけないでしょ。OSも未だにXP止まりだし。
2.0でさえやっと普及した段階なのに、作りやすいからという理由だけで3.5を入れさせるわけにもいかず・・・。

826 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 14:32:05 ]
見積もり作り直してみたら?
その分時間かかるけどな!!

827 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 14:38:42 ]
>>825
じゃあしょうがないね。
ちなみにXPでも動く .Net3.5Framework はウインドウズアップデートでどうぞ。
客にやらせてもこの程度なら差し支えないかと、面倒ならインストーラーにぶち込んでもいいと思うけど。
これもClickOnceを使っているなら、意識する必要ないかもね。
インストーラーは開発前に吟味しておくとこういう時にいい結果を生むので手抜きはしないように。



828 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 15:13:05 ]
>>825
C# 3.0/.NET Framework 3.0/3.5を使うかどうかは別として、
VS 2008は.NET Framework 2.0用のアプリケーションも書ける。

829 名前:デフォルトの名無しさん [2008/02/21(木) 16:25:33 ]
Form1の上にForm2を表示しようとしています。
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
form2.Show(this);
}
とすれば、一応表示されるのですが
タスクバーにForm2のアイコンが表示されるのです。
アイコン表示しなくするにはどうすればいいのでしょうか?

830 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:27:20 ]
Form のメンバ一覧をじっくり眺めてみるんだ

831 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:30:01 ]
>>830
ShowIconってあるじゃないっすか
ありがとうございます

832 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:08:36 ]
>>821
配列版は出ているので、ジェネリックのコレクション版で System.Collections.Generic.List 版でも作っておきます。
class 行の定義 {
 int f1;
 string f2;
 public int 行番号 { get { return f1; } set { f1 = value; } }
 public string 内容 { get { return f2; } set { f2 = value; } }
 public 行の定義(int a1, string a2) { 行番号 = a1; 内容 = a2; }
}
実行するコード
System.Collections.Generic.List<行の定義> table = new List<行の定義>();
table.Add(new 行の定義(1, "ABC"));
table.Add(new 行の定義(2, "DEF"));
table.Add(new 行の定義(3, "GHI"));
dataGridView1.DataSource = table;
これなら2.0でも大丈夫……だと思う

833 名前:814 mailto:sage [2008/02/21(木) 19:43:48 ]
>>822>>832
ありがとうございます。勉強になります

>>832のコードを試してみたところ、2.0でそのまま動きました。
配列よりジェネリックのコレクションの方が勝手がいいので、すごい参考になります。

834 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:51:19 ]
>>833
という事は、追加削除もしたいと?
ならDataSourceにtableを直接セットせずにBindingSourceでアダプタをかましてからセットすると追加なども可能になるよ、参考までに。

835 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 00:18:56 ]
基底クラスのコンストラクタを呼び出すときに,派生クラスのコンストラクタの引数をそのまま渡さずに
ちょっと処理をしてその結果を渡したいんだけど,一つの式で書けるなら
メソッド呼び出しも含めて実質何でもできると考えていいの?

836 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 01:04:07 ]
メソッド呼び出しは出来る
メソッド呼び出せばなんでも出来る

837 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:09:27 ]
画像を分割するのってどうやれば良いんだ?
パズル的なのを作りたいんだが…



838 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:19:45 ]
Bitmap作ってGraphics.DrawImage

839 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:25:29 ]
DrawImageか、dクス

840 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:12:22 ]
ColorをXmlSerializerからデシリアライズしたいです。
とりあえずひな形を作るためにシリアライズしたのですが、<PackedValue>4278848010</PackedValue>
というものが吐かれていました。
RGB+αとPackedValueの相互変換ができれば解決すると思うのですが、
ググってもよく分かりませんでした。
相互変換のやり方を教えていただけると助かります。
よろしくお願いいたします。

841 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:17:33 ]
FromArgbだろどうせ

842 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:46:35 ]
>>841
RGB=10,10,10のColorをデシリアライズして出てきたPackedValueが
4278848010で、
同じColorをToArgbして表示してみると、-16119286だったんですが…

843 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:50:26 ]
つFF0A0A0A = 4278848010

844 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:52:20 ]
各整数型の値域は把握しとくといいぜ

845 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:55:07 ]
16進数も分かってないバカがプログラム書くな

846 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:03:54 ]
ここ初心者用。

847 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:11:58 ]
初心者用はC#という意味だろw



848 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:13:20 ]
つか、なんでARGBはint扱いなんだと思う。
取り扱いが面倒くさすぎ。
Color.FromArgb(0xFF0a0a0a)とか書けないから、いちいち
Color.FromArgb(0x0a, 0x0a, 0x0a)って書いてる。

Cの書き方に慣れてないから知らないだけなのかな。
ひょっとしてもっといい書き方あるんですか?

849 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:14:52 ]
unchecked((int)0xXXXXXXXX))
うん余計面倒だな

850 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:17:16 ]
>>848
intの方が楽でええがな
ビット演算子だけで扱えるし

851 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:17:48 ]
uintはCLSに準拠しないからとかなんとか

852 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:44:03 ]
>>847
このスレではいじめ禁止

853 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:50:04 ]
>>848
WinAPIがそういう仕様だから、互換の関係しょうがないだろうと思う
最近HDR(輝度レンジの大きいRGB表現)が登場してRGBが浮動小数点表現になってきつつあるので、どこかの段階で作り変える必要はあるかもしれない。

854 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:50:55 ]
静的型チェックがしっかりしていて,なおかつ実務で使える機能がお多くて,さらにとっつきやすくて,その上曲がりなりにもネイティブで実行される
これだけ長所があるのに何を今更

855 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:54:57 ]
>>853
848の不満はAPIとは関係ないよ uintじゃ無いのが面倒ってだけだから
それにAPIとの互換を重視するならABGRじゃないと駄目だし
今更GDI+拡張するとも思えん
WPFならすでに各色floatで表現できる

856 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:34:21 ]
今はxvYCCとか色々あるからなぁ

857 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 21:19:36 ]
標準はRGBの方がいいよ、その他は特種扱いで
プログラムがややこしくなりすぎリる



858 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:32:56 ]
タブページへの描画について質問です(検索してもうまく答えが見つからないのでキーワードだけでもいいです)

private TabControl tabControl1;
private TabPage tabPage1;
private TabPage tabPage2;
以上のように宣言をし、定義しています。
tabPage1にはリストビューを使ってデータの一覧を表示しており、うまくいっています
(このようにして→this.tabPage1.Controls.Add(this.listView1);)
tabPage2には円グラフを描きたいのですがうまく行きません。

Graphics g = tabPage2.CreateGraphics();
g.DrawLine(new Pen(Color.AliceBlue), 30, 30, 100, 100);
まずは上記のようにして線を引いてみようと思ったのですが失敗してしまいます。
どういった方法があるのでしょうか?

859 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:56:34 ]
クラスライブラリのプロジェクトを作り、プロジェクトのプロパティから
署名→アセンブリの署名にチェック→キーファイルを新規作成(パスワード保護無し)してkeyfile.snkを作成
として署名しました。
このクラスライブラリの公開キートークンを知りたいのですが、IDE上から調べる方法はあるのでしょうか?
VC#2008Expressです。

860 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:05:16 ]
>>858
どこでDrawLineを呼んでるのかと
どのように失敗してるのかがよく分からないんだけど

多分、tabpage2のOnPaint()をoerrideするか、Paintイベントで書くかしてないんじゃないの?

例えば
tabPage2.Paint += new PaintEventHandler(tabPage2_Paint);

void tabPage2_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawArc(Pens.Black, 10, 10, 100, 100, 0, 90);
}

861 名前:デフォルトの名無しさん [2008/02/24(日) 04:12:20 ]
linqとかほとんど誰も使わないような構文を言語に組み込むくせに
何で正規表現リテラルが言語仕様に無いんだよ。

この言語設計者ってアホなの?

862 名前:デフォルトの名無しさん [2008/02/24(日) 05:59:55 ]
Connector/NETの5.0だとパラメータのプレースホルダとしての接頭辞に「?」しか使えなかったけど
5.2にしてみたら「@」も使えるっぽくなっているんですが
一時変数として「@」を使っていたところまでプレースホルダと判定されちゃってエラーに;;
この対処法をご存知の方いませんでしょうか?

863 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 06:22:28 ]
>>861
俺はバリバリ使ってるが・・・

864 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 06:34:11 ]
スクリプト言語ではないから、正規表現をライブラリに投げるのは正しいと思う

865 名前:デフォルトの名無しさん [2008/02/24(日) 06:54:19 ]
C#つかうより断然Bccのほうがいいだろ 過去のソースも使えるし ドットNetなしで動くし
あと開発環境が重すぎ

866 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 07:01:57 ]
BCCがいいのは認める
だけど.NET使ったら戻れないな

867 名前:デフォルトの名無しさん [2008/02/24(日) 07:08:46 ]
C#は、デルファイ言語、ボーランドC++のパクリだろ それにC++言語の方が有名



868 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 07:53:47 ]
有名(笑)

869 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 08:52:44 ]
>>867
それを作ってた開発者が
C#を開発したんじゃなかったっけ

870 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:09:15 ]
定期的にその話題でてくるなぁ。

Anders Hejlsbergね。
元ボーランド社員のDelphi開発者。
現MS Technical Fellow。C#開発者で、.NET Frameworkの設計にも深く関わってる。

871 名前:デフォルトの名無しさん [2008/02/24(日) 10:06:22 ]
.NET Remotingを使ってメッセージ通知をしあうプログラムを書いているのですが、
サーバーとなっている方の親クラスに通知する方法が思いつきません。

下記のようにやってみたのですが、これだと呼出毎にインスタンスが出来てしまって
イベントの意味がなくなってしまいます・・・

なにか良い方法はないでしょうか?

// server
class MsgServer : MarshalByRefObject
{
public event EventHandler CallRecv = null;
public string Recv(string message)
{
if (CallRecv != null) CallRecv(this, new EventArgs());
}


872 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:34:48 ]
俺の場合は、知らせたいクラスのオブジェクトはひとつしか作らなかったから
staticでインスタンスを持っておいて、それにアクセスした。

873 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:06:06 ]
>>861
stringの拡張メソッドにMatchでもつけてみたらどうだ

874 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:09:40 ]
LINQで正規表現を組み立てられないかな

875 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:19:02 ]
「デルファイ言語」

876 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:32:24 ]
むしろ正規表現はExpressionTreeに組み込める気がする
今の実装はどうなってるんだろうね

877 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:46:27 ]
>>876
正規表現のコンパイルオプション次第で、LCG使ってIL出力して高速化できた気がする。
あの部分のソースコードも公開されたのかな。後で見てみるか。



878 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:22:54 ]
質問です。

HttpRequestHeaderで既に定義されている環境変数(User-Agentなど)を
HttpWebRequest.Headersに直接指定したいのですが、

---
このヘッダーは、適切なプロパティを使用して変更しなければなりません。
パラメータ名: name
---

このようなエラーが出てしまって出来ない状況です。
WebClientでは可能なのですが、HttpWebRequestのほうが細かいことができる感じなので
どうにかして指定する方法はないものでしょうか?

具体的にはtextBoxにベタ書きしてある複数行のリクエストヘッダを直接指定しようとしています。

どうかご教示お願い致します。

879 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:34:32 ]
諦めれ

880 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:25:15 ]
Web認証してログインするクライアントソフトを作っているのですが、
HttpWebResponseで返されたHTMLに含まれているボタンを押すには
どうすればいいでしょうか?

具体的にはHTMLソース上で
<input type="submit" name="login" value="ログイン" accesskey="s" />
と書かれているボタンオブジェクトです。

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

881 名前:デフォルトの名無しさん [2008/02/25(月) 01:30:49 ]
>>880
<input type="submit" name="login" value="ログイン" accesskey="s" />
を包んでる<form …>タグはどうなってるの?
そこに書いてあるmethodによって、actionに書いてあるURLへのデータの送り方が変わってくる。

「HTML フォーム cgi」とかで検索するともっと詳しく分かるかもね。

882 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:33:06 ]
>>881
ありがとうございます

<form action="xxxxxxxxx/index.php" method="post" style="margin-bottom:0px;">
と書いてあるのでPostメソッドでしょうか?

883 名前:デフォルトの名無しさん [2008/02/25(月) 01:37:19 ]
@IT:.NET TIPS WebRequest/WebResponseクラスでPOSTメソッドによりデータを送信するには? - C# VB.NET
www.atmarkit.co.jp/fdotnet/dotnettips/318webpost/webpost.html


884 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 02:23:42 ]
なんでこういう所に出すのにusingすら使わないんかねぇ・・・

885 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 02:44:19 ]
>>883
それでやってみましたが、もとのログイン画面に戻ってきてしまいますね・・・
念のため、fiddlerでブラウザが送信しているPOSTメッセージをキャッチして
比較してみたのですが、同じものを送ってるんですが・・・・

Windowsアプリのように、Clickイベントを送ることはできないのでしょうか?

886 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 02:55:50 ]
普通にHTTP POSTで送れると思うのだが。

887 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 03:09:27 ]
すみません
送信文字列に「&」が含まれていたようで、
それを個別に%26に変えないといけないようでした
お騒がせしました
ありがとうございました



888 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 10:27:06 ]
フォームの上に表示される青いバー(最大化ボタンとかあるやつ)を
消すにはどうすればいいでしょうか?

889 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 10:29:51 ]
FormBorderStyle.Noneにするとか
ControlBoxとTextをなくすとか
Regionでクライアント領域だけにするとか






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<190KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef