8 :
デフォルトの名無しさん :2007/07/19(木) 20:52:22
おつりんこ
おっちゃん
C#の未初期化変数検出機能が微妙に邪魔になる場合があるんだけどどうしたらいいかな? LargeStruct hoge; bool ok = false; try { ok = PossiblyThrowsError(out hoge); } catch { } if (!ok) hoge = new LargeStruct(); この時点でhogeが未初期化ってことになってるため利用できない。 宣言時に初期化するしかないのかな?
else句でも追加しとけ。
12 :
10 :2007/07/20(金) 02:42:18
hogeの初期化に決まってるだろ。
>>10 finallyで初期化しろよ。ばっかじゃねえの。
>>10 PossiblyThrowsErrorが呼ばれる前に非同期例外が発生すると
hogeが未初期化のままcatch以降に流れうるので、
一応コンパイラの言ってることは正しい。
まあ非同期例外というと、キャッチしても再送されるThreadAbortExceptionとか
そもそもキャッチできなくなってしまったStackOverflowExceptionとか
ろくでもないのばっかりだけどな。
>>15 bool PossiblyThrowsError(out LargeStruct hoge) { throw new Exception(); }
非同期例外に限らないだろ。
何も難しいことはない。 cache節の中にも初期化処理書けばいい。
typo ○cache ×catch
20 :
15 :2007/07/20(金) 02:52:18
>>16 あー、throwの場合はoutの初期化強制されんのだっけか。
なんか勘違いしてたっぽ。thanks。
21 :
10 :2007/07/20(金) 02:52:27
>>13 それだと全く意味がないと思うんだが・・・
>>14 finallyに移したところで状況は全く変わらないかと。
>>15 うーんそう言われてみればたしかにそうかも・・・
しかしそんな万に一つも起こらないケースのために二重初期化を強制されるのは
納得がいかないが・・・まあ仕方ないのかなあ。
例外拾った場合も、hoge = new LargeStruct(); すればいいんじゃないのかね
LargeStruct hoge; try { PossiblyThrowsError(out hoge); } catch { hoge = new LargeStruct(); } こう?
24 :
10 :2007/07/20(金) 03:01:45
ああそうか、例外が発生したってsuccess=falseだから
いずれにせよ初期化はされるんだ。
ってことはやっぱ二重初期化は本来必要ないってことだよね?
>>21 の後半は取り消しで。
>>18 >>22 LargeStruct hoge;
bool ok = false;
try {
ok = PossiblyThrowsError(out hoge);
} catch { ok = true; hoge = new LargeStruct(); }
if (!ok) hoge = new LargeStruct();
ってことっすね。失敗時の初期化が二箇所に分かれるのは気持ち悪いけど、
これしかなさそうですね。
なんでokとかifが要るの?
26 :
10 :2007/07/20(金) 03:12:28
>>25 まあこういうメソッドがあったらという仮定というか前提の上での話なんで。
PossiblyThrowsErrorがfalseを返した場合、hogeは何らかの初期化がなされてるとはいえ
何が入ってるかはわからないので初期化しておきたいという話です。
例外が投げられた場合と偽が返った場合の二つを失敗とみなすなら初期化が二箇所に分かれるのは止むをえんだろうな。 まあ、実際にそういうメソッドがあるなら設計を見直したほうがいいと思うが。
>>10 LargeStruct hoge = null;
>>28 値型だから
LargeStruct? hoge = null;
じゃないと駄目。
>>10 やっぱりPossiblyThrowsErrorが例外を投げるのが諸悪の根源じゃねw
例外投げるか bool&out 構造にするかのどっちかにはっきりするべきだな
>>30 値型かそしたらこれで初期化。
LargeStruct hoge = new LargeStruct();
いやでもこういう設計が必要なケースはあるんじゃないか? 想定範囲内のエラーでは例外はコストが高いのでfalseを返し、 想定しないエラーはより情報の多い例外を使う、とか?
TryGetValueでいいわな 関係ないけどLargeStructという名前にすごく違和感を感じる
>>33 structをnewで初期化するはそれで正しいのだろうけどひどく違和感がある。
=で代入してないんだよなそれ。
LargeなStructならClass使うべきじゃね?
>>24 hoge を if の中で宣言するんじゃだめなのか?
if の中でしか初期化しないものを、if(!ok) 以外の時にも使うとは思えない。
>>34 例外処理である try の中でさらに例外起こすような処理してるのも気持ち悪いけど。
>>37 そう思う。
struct にするのは、せいぜい十数バイトくらいまでだと思う。
ところでstructを使うメリットは
PODとしてP/invokeで使える
41 :
デフォルトの名無しさん :2007/07/20(金) 15:39:36
string.Emptyと""って何が違うんですか
42 :
デフォルトの名無しさん :2007/07/20(金) 15:52:45
>>24 もしホントにそれだけの処理なら、
try {
if (!PossiblyThrowError(out hoge))
throw new Exception("hoge is not initialized");
} catch {
hoge = new LargeStruct();
}
でいいんじゃない?
全然関係ない話で申し訳ないが質問。 System.Windows.Forms.ListViewのオーナー描画に関して DrawListViewSubItemEventArgsで、DrawText()で描画したテキストの位置と DrawDefaultプロパティをtrueに設定して描画されたテキストの位置が異なるんですよ。 オーナー描画している行もデフォルトで描画されたものとテキストの位置と 同じ位置に描画して欲しいんですが、どうすればよいのでしょうか?
45 :
44 :2007/07/20(金) 19:36:11
なんか書き忘れていた。 開発環境はVisualStdio2005 OSはWindowsXP 知りたいことはオーナー描画時にDrawDefaultプロパティを使用せずに デフォルトと同じ描画を行うにはどうすればよいのか、ということです。
>>44 ReflectorでListViewの実装を覗けば
自己責任で
>>45 スタイルで位置が変わるんじゃないの?
ウィンドウ枠とか...
なんか、TreeViewでの描画ロジックとか専用のAPIがあったような気が・・・
vista対応で困っているのでどなたかアドバイスお願いします。
VS2003 C# framework1.1の環境でwindowsアプリを開発しているのですが、
Vistaでのみ二重起動されたときに先に起動していたプログラムをアクティブにする処理で例外が発生します。
ソースはほぼ下記のサイトのままです。
ttp://jeanne.wankuma.com/tips/process/activewindow.html どうやらProcess.GetProcessesByName()ですべてのProcessを取得しようとするとUAC制御に引っかかるみたいです。
ユーザーが実行しているプロセスだけ取得する方法や、他に指定のプロセスをアクティブにできる方法がございましたら
教えていただけると幸いです。
なんでいまどき1.1?
環境を自分で選べることの方が珍しい
52 :
デフォルトの名無しさん :2007/07/21(土) 09:57:32
C#を使って、非.netアプリを作ることは出来ますか?
54 :
デフォルトの名無しさん :2007/07/21(土) 10:09:12
使えねー言語だな。
むしろ.netが使えないC#なんて・・・
56 :
デフォルトの名無しさん :2007/07/21(土) 10:12:16
そうじゃなくて、.netアプリも非.netアプリも両方できたら使えるだろ。
そのためにキモイ拡張しまくったら結局C++/CLIと同じになっちゃうよ
自分はネイティブアプリ作成にはVC++使ってる .NetアプリはVC#使ってる
59 :
デフォルトの名無しさん :2007/07/21(土) 12:11:58
単なるプログラミング言語なんだから、.netに依存しないバイナリをコンパイルできてもいいだろ。
C#の言語としての簡素さを実現するために裏でどんだけの 仕事をしているのか想像つかんのかしら。 intひとつとってもそこにある型情報をどこで管理してるんでしょーね。
>49 1.1だとなんでもないと思うような処理が内部でUACに引っかかるものを使ってるので2.0にするだけで解決するよと思うよ。 取りあえず2.0を使うよう指定したアプリケーション構成ファイルを配置して実行してみたら? SendKeyなんかはUACに引っかかるものの修正パッチが出てたのでがんばって指摘してけばパッチが出るのかもしれんがVistaをターゲットにするなら1.1を捨てた方が早い。
char**型の引数をもつ関数をP/Invokeしたいのですが、 C#側での定義がわかりません。StringBuilder[]で試してみたのですが、 正しく渡せていないようです。ご存知の方、ご教授お願いします。
ref StringBuilderは?
今度会社で今までVC+6で作成していたアプリを VC#に以降することになりました。 ぶっちゃけVC#でVCの機能であぼ〜んされて まんま移行できなくなる機能とかってありますか? それともVC#で今までのコードをまんま移行できるくらい 問題ありませんか? (それでしたら導入の意味ないだろって突っ込まれそうですが 馬鹿な顧客が新しいもの好きで深い考えなしに要求してきたのです)
>>62 データの型(char**)だけ書かれてもエスパーにしか解答できないでしょ。
char**で渡すデータの意味がわからないと。
>>64 まんま移行って何?
もとのコードのままVC#で再コンパイルって事?
コードは書き直さないといけないよ
C/C++とC#は別の言語
>>64 VC++で作ってた部分をネイティブdllにまとめて
エントリポイントをC#から呼び出すだけでいいんじゃね
>>63 >>65 説明が不足しており、もうしわけありません。
main(int args, char** argv)に渡すやつです。
ですから、参照渡しではなく文字列配列です。
すいません、どうもありがとうございました。 C#が基本的にC++の拡張というわけではないんですね。 誰だVCとC#は同じようなもんだって言ってた奴は・・・
>>69 それC++/CLIの間違いじゃないの?
C++を拡張したVC++2005で使える新言語
[In, Out] string[] argvじゃね?
違います。どうにもC#らしいです。 まあ将来を見据えてのことでもらしいんですが。 ちょっとだけ独習したんですが クラスやらなにやらの概念はそれほど違ってないっぽいですが。 後、MFCなどの利用もやろうと思えば今まで通り利用できるんですよね? C#習熟者から見てものっそい冗長なことしてるって思われるだけで
MFC使ってる部分は.NetFrameworkのクラスに書き換えたほうがいい
移行するなら手で100%書き直し以外にはありえない
何のMFCのクラス使ってるの?
どっちみちネイティブC++のクラスは使えないよ
ほとんどです。API関数はそれほどでもないですが。 応用がきくとかいう考えは止めたほうがいいってことですね。 なんかスレ荒らしみたいになってしまってすみませんでした。
81 :
デフォルトの名無しさん :2007/07/21(土) 15:46:13
さてさて、C# だけれども。Java を意識しまくった言語だというのは あちこちで言われているみたいね。 Java との比較としていくつかのポイントがあるんだけど、 そのなかでも delegate というのがどうにも乱暴な機能だなぁと思います。 つーか、言語設計者は何考えてんだと突っ込みたくなるね。
俺を雇えば万事解決するんだが
ま、Java もクロージャ導入予定だがな
10年以上前のまつもとゆきひろ氏の発言。
現状のJava VS Rubyの状況の伏線と思うと興味深い。
ttp://java-house.jp/ml/archive/j-h-b/001862.html >Javaでは無理なんじゃないでしょうか?
>
>こういうのを「オブジェクト指向的に美しく」実現するには(私の
>思い付く方法は),
> * 特異メソッド(特定のオブジェクトにメソッドを定義する)
> * クロージャ(手続きをオブジェクト化する)
>がありますが,どちらもJavaにはありません(よね).
>
>JVMのコードを吐くschemeの計画などあるようですから,それがで
>きれば後者は実現できるかも知れませんね.
>
> まつもと ゆきひろ /:|)
すっかりJavaを追い越しちゃって最近はJavaに意識されてるからな
「ひろみちゅdelegateを語る」、の巻。
ttp://java-house.jp/ml/archive/j-h-b/019802.html >次に、"delegate" という言語機能そのもののセンスの悪さについて考えてみ
>ましょう。
>
>(中略)
>
>以下、もしこの予想が当りなら、ですが、
>
>なんとまあセンスの悪い言語設計でしょう。こういうのが本当に有効なのなら、
>言語とは別のレベルでフレームワークとして用意すべきではないでしょうか。
>プリプロセッサにしてもいいし、開発環境が自動生成するのでもいいし、rmic
>のようにスタブジェネレータを併用してもいいでしょう。
>
>そんなんでは世の unsophisticated people が便利じゃないと感じるだろうか
>ら、レベルが違うものを言語の中にごちゃ混ぜに入れ混んでしまったのでしょ
>うか。やはり「unsophisticated peopleに媚びた設計」か?
>
>そもそもまともな言語設計者ならポリシーが許さないとおもうんですが、
>もしかして、Hejlsberg 氏自身が unsophisticated なのかな。
>
>(中略)
>
>高木 浩光@電子技術総合研究所
>
http://www.etl.go.jp/~takagi/ (工事中)
>#「ms.com」は米国モルガンスタンレー証券のドメイン名です。
>言語とは別のレベルでフレームワークとして用意 されてんじゃね?
なんとまあセンスの悪い文章でしょう。
コピペ君って本当馬鹿だよな。 別に他人の意見を参照することが悪いとは言わないが、(むしろ好ましいが) ただコピペして何の意味があるのかね。 他人の威を借りて自分を大きく見せてるつもりか。 だとしたら情けない心情だよなw
うん
ふらっとレベルの質問の後は厨レベルの言語比較か ・・・夏だな
高木はいつ見ても痛いな
さんざんjavaの真似だといい続けて、javaに無い機能については汚い、いらない言い続けて、 結局javaに導入されまくってるのは悪い冗談かと思ったわ
>以下、もしこの予想が当りなら、ですが、 仮定してまで批判したいものだったのかね
批判大好きですから^^ tp://takagi-hiromitsu.jp/diary/
99 :
デフォルトの名無しさん :2007/07/21(土) 16:50:05
>>99 >でもどんな関数でも delegate に利用できるわけじゃないんだよね。
>始めにこれに気付いたときはびっくりした。
>ちょっと勘弁してくれ、と思ったね。
>プロパティを delegate に利用できないなら、
>結局プロパティより getter/setter を使うほうが有利になっちゃうってことだよね。
>これじゃ本末転倒じゃないの。
Hoge x;
Action<int> setter = i => x.IntProp = i;
Func<int> getter = () => x.IntProp;
まあ一段ラップされるからあんまり綺麗じゃないけど。
生暖かく見守ろうよ。
delegateに限らず、知らん人間が一方的に話した内容なんて 普通「ふ〜ん、そういう意見もあるのね」で終わりじゃねーの?
privateメソッドか匿名メソッドを書いて間に挟めばいいだけじゃないの? プロパティって外からはフィールドのように見せるのが目的なんだから突然メソッドに変身するのは変だろ
何でそんな変態プログラムがすきなんだろうね。 普通にデリゲートで出来ることだけやればいいのに。
とりあえずヘジより
>>99 のリンク先が馬鹿なのは確か
delegate int Getter(); int X{get{return 1;}} Getter f = new Getter(get(this.X)); こんな感じにすればいいの?
リフレクションでいいよ。
Getterって文字見るだけど嫌だ。
日本語でおk
見るだけど
Graphics.DrawString メソッド (String, Font, Brush, PointF, StringFormat) ってStringFormatにStringAlignment.Far(右寄せ)を指定すると 勝手にPointFが左上隅ではなくて、右上隅になるんだな 良いお節介だけど俺が文字列の幅求めた意味がねえええ
>>99 ワロタ
ってかプロパティに使えないから馬鹿って言ってるのかよ。
プロパティはそもそもスマートフィールドのような目的が主であって、
デリゲートが主に対象とする「処理」を行うものじゃないだろうに。
>>99 馬鹿というより、知識が5年は遅れてるな。日付を思わず確認して
しまうぐらいに。
その辺の時期は皆C#をよく知らずに書いてたからさ、結構いい加減なのよ
>>111 RectangleFを受けるオーバーロードがあるでしょ
>>111 値型を渡してるのに呼び出し先で元の値が変わるわけないでしょ。
いや誤爆じゃない。 でもすまん、PointFで指定した位置が描画される文字列の右上隅になる、 という意味で111は書いているみたいだね。
せっかく頑張って幅求めて右寄せコード書いたのにこれで一発じゃねーかウワワーン と、いいたいんじゃないの? そうなら良いお節介の使い方が怪しいから分かりにくいのだと思われ
119 :
111 :2007/07/22(日) 00:47:02
縦横のStringAlignmentに応じてPointFの示す位置が変わるようだ StringAlignment.Centerだと中央になる このほうが便利だけど、MSDNには「PointFは左上隅」としか書いてないもんでね 左上隅だと思い込んでいたので、必死で位置の計算見直してたw
120 :
111 :2007/07/22(日) 01:04:56
うんまあ、ちょっと仕様に感心したのでつい書き込んでしまった 文字の右端を目標に合わせたかったんだけど 描画には左上隅が必要だというから、文字の幅を求めて左上隅を計算したのに PointFはStringAlignmentに応じて示す位置が変わってくれるというオチだった
縦書きとか右からとかサポートはしてるけど やっぱりMSも左横書きのことが念頭にあるんでしょう。 イスラエル人とかアラブ人から俺のアプリ文字表示が変だよとか メールくるけどどうしたらいいのか検討もつかない
>>99 増えてるワロタ
なんとなくこいつのスタンスが分かる
こいつはあれか。 例えばjavaのインターフェースと検査例外は相性悪いから設計したやつは馬鹿とか 配列とArrayListがあっても使い分けなきゃならないから 配列設計したやつは馬鹿とかいうのか
そもそも機能自体もちゃんと理解せずに書いてるしな。
下らん。 言っちゃ悪いが、よくいるキチガイヲッチ大好き人間ってキチガイの「類友」 にしか俺には思えんよ。 なんにしろ、どこかにヲッチスレみたいのがあるだろうからそっちでやれよ。
ないよ
>パンおいしいねん! まで読んだ。
msdnのコントロールの継承のチュートリアル見ながら ValueButtonLibを書いてるとおりに作ったのに toolboxには何にも追加されない。 なんでだろ、なんでだろ・・・・・・・・・・
ValueButtonのデザイナ画面のままじゃないか? フォームとか他のデザイナを開いてみろ
130 :
128 :2007/07/22(日) 23:50:49
自己解決しました。 作ったコントロールのdllを、toolboxの参照で加えてなかったからでした。
C#ってどこまで言語仕様で決められてるの? System名前空間のないC#の実装ってありうるの?
>>131 すべてのオブジェクトがSystem.Objectの派生である以上は
System名前空間の無い実装はありえないと思うんだけども。
>>131 ECMA, JISはタダで読めるんだから読んでみれば?
134 :
131 :2007/07/23(月) 00:35:08
気になって言語仕様のドキュメント見てみたら 「objectはSystem.Objectの別名である」とか普通に書いてあるね
メインのフォームをLoadイベントが完了するまで非表示にしたいのですが exeのショートカットで「実行時の大きさ」を最大化にすると、 コンストラクタでVisible=falseにしたり、CreateParamsで WS_VISIBLEを削除しても、Loadイベントの時にはすでに表示されて しまいます。 これを非表示にするにはどうすればいいのでしょうか? お願いします。
136 :
デフォルトの名無しさん :2007/07/23(月) 13:16:46
現在、業務アプリケーションをサーバに置いて、 複数のユーザがリモートデスクトップでサーバに 接続してサーバ側で利用する形態になっています。 そこで、ユーザがサーバからログオフせずにリモート デスクトップを切断した際、アプリケーションを終了 させたいのですがリモートデスクトップのセッションが 切断された時にアプリケーションに通知されるのでしょうか? ご存知の方がいらっしゃいましたら教えて下さい。
>>136 このあたりかなぁ。どっちにしろP/Invokeを使うことになる。
WTSQuerySessionInformation
138 :
デフォルトの名無しさん :2007/07/23(月) 14:46:50
>>137 どうもありがとうございます。
「WTSQuerySessionInformation」を手がかりに調べてみたいと思います。
あるForm(フロートフォーム)のOwnerプロパティにほかのForm(オーナーフォーム)をセットしてShowしてもフロートフォームがオーナーフォームの背面に行ってしまうことがあるんだが,何故でせう・・・ フロートフォームはToplevelです。 オーナーフォームをAlt+Tabなどで一度背面に持っていってフロートフォームを表示しなおすと前面に出てきます。
140 :
139 :2007/07/23(月) 16:58:58
フロートフォームが後ろに表示される場合、ほかのアプリをクリックしてアクティベートした後、オーナーフォームをアクティベートするとフロートフォームも前面に出てきます。
Showするときにowner指定したらどう?
>>135 >exeのショートカット
ってなんだっけ?
>>141 Showする前にSetWindowPosでSWP_NOMOVE|SWP_NOSIZE|SWP_NOACIVEで手前に持ってくるようにしたらとりあえず前に出てきました。
でもOwnerに親ウィンドウのハンドルが設定されてるのに(Spyでみた)手前に来ないことってあるんですかね
>>139 具体的なコードを示してくれんと何とも言えんけど
解決したのならもういいか。
>>144 大きいアプリケーションで出たものなので依存関係の切り分けまでできていないのでコード出せません(´・ω・`)
とりあえずさしあたってのトラブルは回避できそうですが、問題(Ownerに設定されてるのに前面に出てこないこと)自体が解決されてるわけでもなす・・・
なんか気持ち悪い。
>>143 それって必ず再現するの?
それと子ウィンドウを表示するタイミングは?
最大化するのはその親ウィンドウ?
実際見てない漏れたちからすれば調べるところはいっぱいあるんだが
147 :
145 :2007/07/23(月) 21:32:35
>>146 1.必ず再現します。
2.キーイベントで。
3.最大化は今回関係ないです。たとえば500,500の大きさのオーナーウィンドウから1000,100の大きさのフロートウィンドウを表示しようとするとオーナーウィンドウの後ろにフロートウィンドウがはみ出して表示される感じです。
SetWindowPosすることで前面には出るようになりましたが。
コード切り出そうかと思ってちょっと見てみたんですが、いろいろと食い込んでるのでちょっと難しそうです・・・(ノД`)
Ownerセットされながら前面に表示されるないのは何か見落としがあるんですかね?
form2.Show(this); とか
そんな馬鹿なことしないだろw
150 :
デフォルトの名無しさん :2007/07/23(月) 22:16:18
Win95のときはドライバのバージョンによってそんな動きもあったが・・・
フロートフォームってなんだ?
152 :
デフォルトの名無しさん :2007/07/23(月) 22:41:09
ドキュメントコメントからHTMLなどへの変換にはNDocとかありますけど、 それとは別に、特定の形式で書いた仕様書から、整形したHTMLや、 ドキュメントコメントつきの未実装コードを生成してくれるツールってないでしょうか? できる人はXSLTあたりでサクッとやっちゃうんでしょうか?
スレタイよんでね。 unixの人に聞いたら?
154 :
146 :2007/07/23(月) 23:11:32
>>147 じゃあ2のキーイベントやめてボタンで表示とかに変えてみて。
156 :
デフォルトの名無しさん :2007/07/24(火) 11:44:22
WindowsFormのTabControlでMultilineをtrueにすると、タブの複数行表示が可能になりますが、 実際にタブの数が増えて複数行になった場合に、上の行に存在するタブを選択すると、 そのタブがアクティブになると同時に、タブの上下が入れ替わってしまいます。 つまり、常に下の行のタブがアクティブになるように、自動的に入れ替えが発生します。 このタブの上下の入れ替えを抑制して、最初に作られたままのタブ順序を維持することは 不可能なのでしょうか?
自分でタブコントロール作ればおk
>>156 冷静に考えてみ、それってどういうビジュアルにするつもりよw
まあクリックしたタブの位置がその場で移動しちゃうから違和感あるが どれも同じ動作するから慣れてもらうほうがいいぜ
160 :
156 :2007/07/24(火) 12:55:27
実は、ブラウザのようなものを作っている最中なのです。
Donut系は、開くサイトが増えても、
>>156 のようになっていて、タブの位置は変わりません。
ちなみに、IE7だと、タブの制御はどうなっているのでしょうか?入れ替わります?
とりあえず、Multilineをfalseにしてしのぎつつ、解決策を探します・・・。
ぶっちゃけ独自のコントロール作ったほうが幸せになれると思う。
162 :
156 :2007/07/24(火) 13:08:34
確かに、CodeProjectにいくつかカスタムコントロール出ているので、 その辺りを参考にした方が良い気がしてきました。 タブ列の右端に「閉じる」ボタンを置いたほうがスマートな気もしてきたし。
つーかタブブラウザはほとんど2段にならんよ 横スクロールするだけ。数が増減するタブは 多段に向いて無いと思う
多段か一列かはユーザーに選択肢を与える方がいいな
タブブラウザはいい加減ツリーブラウザに進化して欲しい。 表示面積を食うのが難点だが。
>>166 ツリーが好きな人っているんだねw
まあ好き嫌いは横においても、ツリーはドキュメントの選択には向かないと思うけどな。
何で? タブはリニアなコンテナで、ツリーは階層化されたリニアなコンテナなだけだぞ?
そうかな? 複数選択したりいろいろ違うと思うがな?
どういういみ?
その次の世代の有向グラフブラウザに挑戦だ!!
172 :
困っております :2007/07/25(水) 00:20:11
C#のことをほとんど知らず、質問するのも申し訳ないのですが コマンド形式の実行ファイルの作成のために VC6++からCOMを使用して、C#のDLLの関数に 結果格納用の変数(BTSTR型)を引数に渡して、やり取りしたいのですが コンパイルすらとおりません。 関数の型は以下の通りです。 UINT GetVersion(BTSTR *Version); 当方としては、bstr_tで変数を作り、 引数に渡せばよいのかと思い 以下のように、色々試してはみたのですが、 コンパイルエラーが発生してしまいました。 bstr_t bVersion pp->GetVersion(&bVer); BTSTRの受け渡しはどのように行うべきなのでしょうか。 また受け取ったBTSTRをchar型の変数に変換することも可能なのでしょうか 分かる方がおりましたら御教授をよろしくお願い致します。
ごめん質問の全体像が見えないや… c#でとらぶってるの?それともc++ コンパイルエラーってどんな内容?
174 :
困っております :2007/07/25(水) 00:45:59
>>173 「型が変換できません」という引数の型と一致してない
ときにでるようなエラーが出ます。
そもそも、Cでしか作成したことが
ないので、BTSTR型がどういうものか
理解していないのが悪いのですが、CからC#の関数
にアクセスせざるえなくなり・・・
受け渡しはむりなのでしょうか?
申し訳ありませんがお願い致します。
C#っていうよりCOMの話じゃね? そもそもコンパイルできないんじゃC#とはますます関係ない
BTSTR? BSTRでしょ。 BSTR bVer = NULL; pp->GetVersion(&bVer); bstr_t bstrVer(bVer);
177 :
困っております :2007/07/25(水) 07:11:42
>>176 ご回答の方法を試してみます
有難うございました。
マルチするなとは言わんがそれなりの筋は通せと思う今日この頃
179 :
C ◆N1mkQ4hBnU :2007/07/25(水) 11:24:20
突然に失礼します。 HTMLのFORMからの情報をC#で受け取りたいのですが、どうしても出来ません。 よろしくお願いいたします。 =====HTMLデータ===== <HTML><BODY> <FORM action=aaa.exe method=port> <SELECT name="data">; <OPTION value="1">1 <OPTION value="2">2 </SELECT> <INPUT type=submit value="表示"> <INPUT type=hidden name=srt value=0> ID:<INPUT type=text name=user> </FORM> </BODY></HTML> =====C#データ(aaa.cs)===== using System;using System.IO;using System.Data;using System.Web;using System.Web.UI; public class view{ public static void Main() { string data0 = HttpContext.Current.Request["data"]; Console.WriteLine("Content-type: text/html\n"); Console.WriteLine("<HTML><BODY>"); Console.WriteLine(data0); Console.Write("</BODY></HTML>\n"); } } 自分が作ったものは以上です。間違いだらけだとは思いますが、教えてください。よろしくお願いいたします。
CGIをわざわざC#で作るのか!C#使うならASP.NETを使えよ。 趣味でやってるなら止めないが仕事ならよしたほうがいい。
趣味でも止めたほうが。
>>179 ウェブサーバとCGIって標準入出力でやり取りするんじゃなかったっけ?
HttpContextには何にも入っていないのあたりまえだと思うけれど…。
C#でCGIなんて考えたこともなかったもんで間違ってたらスマソ。
いや、、、標準入力取れればOKだよ、POSTも
185 :
デフォルトの名無しさん :2007/07/25(水) 12:12:46
LANクリップボードというソフト経由でクリップボードに入ってくる画像データを取得できません。
http://quickware.a-quest.com/lanclip/about.htm if (data.GetDataPresent(DataFormats.Bitmap)) {
Image img = (Image) data.GetData(DataFormats.Bitmap, true);
// img の値が null に
}
アクセサリのペイントやワードパッドでは取得・表示できるのですが、
上記のコードでは失敗します。なぜでしょうか??
186 :
179 :2007/07/25(水) 12:35:26
大変お騒がせしました。 無事解決しました。ありがとうございます。 System.IO.ConsoleのInとOutを使ったら、うまくいきました。 大変失礼いたしました。
classとinterface使い分けるの嫌気さしてきた('A`) ダイヤモンド継承とかの話うまく考慮すればclassもinterfaceを使い分ける必要がどこにある?多重継承orMIXINできないとめんどくさいんじゃ《゚Д゚》ゴラァァァァァァァァァァァァア!!
>>185 Clipboard.GetImageは?
そのソフト、シェアウェアだから試す気にはならんが クリップボードビューワで形式確認してみたら
190 :
デフォルトの名無しさん :2007/07/25(水) 15:15:35
>>188 申し遅れました。
事情がありまして、.NET1.1で書いてますのでGetImageは存在しません
191 :
デフォルトの名無しさん :2007/07/25(水) 15:23:54
>>189 DIB BITMAPの可能性が高いようなので、下記のようにしてみたのですが、これもダメでした・・・
Image img = null;
if (data.GetDataPresent(DataFormats.Dib)) {
try {
img = (Image) data.GetData(DataFormats.Dib, true);
}
catch {
MemoryStream mem = (MemoryStream)data.GetData(DataFormats.Dib);
img = Image.FromStream(mem);
}
}
JavaのDaoパターンをC#のウィンドウアプリに適応するのってどうなの? トランザクション管理が難しそうで結局Daoオブジェクトにビジネスロジック実装して本末転倒になりそうなんだけど・・・●rz
今時C#ってwwwwwwwwwwwwww
194 :
デフォルトの名無しさん :2007/07/25(水) 16:31:32
>>191 じゃぁDataFormats.EnhancedMetafileかな
>>192 君の言うJavaのDaoパターンというのが何をイメージしてるかはよくわからないけど、
プラットフォーム依存がでる部分じゃないと思うぞ?
DataSetがどうこうと言いたいのかも知れないがあれも必須じゃない。
196 :
デフォルトの名無しさん :2007/07/25(水) 18:30:01
>>194 VisualStudioでウォッチすると、下記のようになっていて、
GetDataPresent(DataFormats.EnhancedMetafile)としてfalseになってしまいます。
なんなのでしょうかね
-data.GetFormats() {Length=4} string[]
[0] "DeviceIndependentBitmap" string
[1] "System.Drawing.Bitmap" string
[2] "Bitmap" string
[3] "Format17" string
C#あんま使わないのにC#知らないと.net関連の本が読めないから困る
C#1.1 の範囲なら大して特徴もない言語だろ ほかの .NET 対応言語知ってればやりたいことは読めるもんだ 読もうともしない奴もいるけどな
自分.NET言語はC#以外全然やらんけどサンプルコードとかがVB.NETとかC++/CLIで書かれてても読むよ 書けなくても使うクラス・メソッドとか使用手順とかは読み取れる 逆は難しいのか?
C#なんてなにも難しいことないと思うんだけどな。 罠っぽい構文なんてないし。
>>201 3.0はすばらしくキモイ(罠っぽい)書き方がいっぱいできますよ。
2.0まではjavaのパクリって感じだったけど3.0の変態っぷりは最高!
つーかみんな3.0入れてるの?
VS いらねと思って再頒布ファイルだけと思ったらインストーラがエラー吐くので放置
来年くらいにはC#4.0の情報も出てくるのかな この調子で突っ走ってほしい
?
>>205 3.0 なんて、2.0 の正式版が出た瞬間に仕様公開されたもんね。
来年には 4.0 の話出てもおかしくはない。
>>207 いや、C# 3.0の最初のドラフト公開はC# 2.0正式版出荷前のはず。
ぶっちゃけC#3.0のキモイ書き方を使いこなす自身あるんだが、それをすると他の人が理解できないコードになってしまいます('A`)
あんなんLINQ以外で使いたくないなぁ
ところでキモイ書き方ってのはどの辺指してんの? LINQ? ラムダ式? var?
個人的にvarはキモいな。LINQを実現するために仕方なく実装したんだろうけど。
varってコンパイル時に右辺値の型に置き換えられるだけだよ
ふらっとと同じ話題になってるな
>>213 まあ、その通りなんだけど、
左右両辺に冗長に型を書くことが、人的エラー耐性につながったりもするから。
右辺が単純にnewしてるだけの場合は使いたいと思う。 右辺がファクトリーとかの関数だったらしっかり型で定義したい。 前者の場合VBだと今でもやれてるんだけどね。 Dim xxx As New ABC()
>>216 それは、でもなぁ、VS 使ってると、
ABC xxx = new まで打ったらあとはインテリセンスが効くしね。
エディタで書いてると、確かにたまにそういう機能欲しくなるけど。
foreachはvar使いたい どうせスコープ限られてるし
んー自分はvar多用したい。 同じ定義を2個も書くのが耐え切れん。
var 機能はいいんだけど foreachコードスニペットのデフォルト変数がvarでかぶるのがやだなぁ
まぁどんなモノにも長所・短所があって 長所のうちどれをセレクトするかの違いだね
他人のソースで、stringとStringを使い分けているものがあるのですが、 どういう意図でstringとStringを使い分けているのでしょうか? どうやら、クラス内やメソッド内のローカル値ではstringで定義し、 メソッド定義の際の返り値になるものでは意図的にStringを使っているようなのですが・・・。 こういう記述をすることで、何かメリットあります? string str = "Hello"; String str = "Hello"; こういう初期化で始まるなら、どっちも同じですよね?
どういう意図って、そんなもの書いた人間に聞けよ…
自分はstaticメソッドを呼び出す時Stringを使う。
String.Format()とかString.IsNullOrEmpty()とか。
>>222 の場合だったらstringで統一。
しばらく見ていたのですが、Stringの方は激しく連結しまくっているので、 どうやら、そもそもStringBuilderを使うべきじゃないのかと・・・。 もしかして、激しく文字列連結するときの速度定価は、 string > String > StringBuilderだったりするのでしょうか・・・。 まぁ、だからといってStringを使う理由は、相変わらず分かりませんが。 元のがJavaからの移植で、たまたまそのままっていう線もありそうですな。
>>224 どうも有り難うございます。
参考になります。私も気にせずにstringで統一する方向にします。
あほなことを想像で言ってても得る物はない
using String = MyString; class MyString { public static implicit operator MyString(string s){ return new MyString(s); } MyString(string s){ } }
そもそもintとかstringとかは無くしてしまえばよかったのに
>>225 ( ⌒ ) ポッポー
l | /
⊂(#・∀・) String == string, Int32 == int,
/ ノ∪ もうやってらんないっすよ!!
し―-J |l| |
人ペシッ!!
(_)
)(__)(_
⌒) (⌒
⌒Y⌒
本とかMSDNすら調べようとしない人が多いのに驚く
いまさらそんなのに驚いてる人が居ることに驚く
ふらっと込みでいうと、ここ数週間で3度目だぜ(string Stringネタ) いくらなんでも非道いだろ とおもつた
string = System.String , int = System.Int32 using System が抜けてる場合、 System.StringとかSystem.Int32 とか書かないとコンパイルエラーになる。
javaみたいに全部 using Graphics = System.Drawing.Graphics; using TextReader = System.IO.TextReader; … みたいに書いてる人っているのかな
もうテンプレに入れとけよ
まとめWikiとか無いの?
つーかStringとstringの違い? プログラム作っていったらイヤでも違いが分かると思うけど・・・。 C#は大文字と小文字を使い分けてなきゃいけないのに 何故そういった疑問を持つのか分からない。
うん?
こ?
いや、だから人のソースで使い分けているものがあったから、 自分の知らない用法でもあるのかと思って聞いただけじゃん。 文句があるなら、スルーすれば良いのに、みんな耐性ないよね。 いかにも、相手を探してますって感じ。 ほんと昼間っから見てる人は戦闘種族多いよね。
なぐるよ
アクセサのgetとsetで違う型とか指定できたり・・・しないよね
無理
そんなもん出来てもやりとうないだろうw
>>244 キャストしないといけないけど
class Class1{ public int MyProperty { get { return 0; } } }
class Class2 : Class1 { public new string MyProperty { set { } } }
何それうっざいw
>>247 そういうとんち的なの全然思いつかんかったわ
get_MyProperty や set_MyProperty を違う型で手作業で実装してみたらどうなるんだろう
251 :
244 :2007/07/27(金) 20:25:50
boolのプロパティを持つクラスのBindingListをグリッドにバインドしたときに意味の分かる文字に変換したかったんだよね。 getで文字列を返せたとしてもXML化するときにboolで保存できないからどうせ意味無かったです、ごめんなさい。_ト ̄|●
>>250 MSDNのPropertyBuilderのサンプルコードをいじってみたらこんなプロパティができた
.property class string CustomerName
{
.get instance string CustomerData::get_CustomerName()
.set instance void CustomerData::set_CustomerName(int32)
}
もちろんC#からアセンブリを参照して使おうとするとコンパイルエラー
>>250 無理。
アクセサメソッドは作れても、propertyとしてくっ付けることができない。
Objectにしちゃえばいいじゃない
>>238 で、Stringとstringの違いって何?
>string は、.NET Framework の System.String のエイリアスです。
ってことはわかったんだけど違いがわからん。
>>238 >C#は大文字と小文字を使い分けてなきゃいけないのに
なぜこれを持ち出すのかがわからない
string って書いてあったらそこのところが global::System.String に置換されると思えばいい
>255 エイリアス
エイリアスなんだから違いはないだろ まぁ普通各言語の型を使うよな
エイリアスだといっても、定数に使えるという点で特別だから
定数?
if (int.Parse("12345")==1) どう見ても特別だろ
ホニャァ?
>>262 何が言いたいのかわからん
どう見てもとか言ってないで説明してよ
265 :
262 :2007/07/27(金) 22:27:10
すまん例が悪かった "12345"がSystem.String型になって、1がSystem.Int32型になるのは それらが特別扱い(あくまでC#の言語上の話ね)されてるから、って言いたかっただけ
全く意味が分からん。
>>265 それがエイリアスと何の関係があるのかね
[C#] int ↓ [.NET Framework] System.Int32 ↑ [VB] Integer っつーだけじゃん。
269 :
268 :2007/07/27(金) 22:37:50
途中で切れた。 .NETは異なる言語のアセンブリでも使用できるので、共通のデータ型が必要。 で、 「C#という言語」では string という文字列型が内部的に 「共通ランタイムライブラリ」の String と同じになってるだけ。
intがSystem.Int32の、stringがSystem.StringのエイリアスだというのはC#の言語仕様だよ
何このレベル低いスレwwwwwwwwwwwwwwwwwwwwwwwwwww 俺wwwがwwwもwwwっwwwとwww下wwwげwwwてwwwやwwwるwww
しかし、定数に使えるっていうのは意味不明でしかないな。
意味不明だが気になる
是非
>>260 には恥をかきながらもまた出てきて欲しい
どこのふらっとスレデスカ?ここは。
System.Delegateはデリゲート型ではありません
なにを言っているんだ
ネタをやるなとは言わんが、つまらないネタ(語義矛盾だが)ならやらないでくれよまったく
int.Parse は書けるのに enum.GetValues って書けないぞ とか言ってみるテスト
まあマジレスすると、enumは型のエイリアスじゃないからな
int.ParseとかEnum。GetValuesとか必須というかあると便利なんだが他にもいろいろとこんなん出来たんだとか、こんな風にやれば出来たんだというものがまだまだたくさんある予感。
281 :
デフォルトの名無しさん :2007/07/28(土) 00:17:45
VBでのプログラム終了のEndはC#では何にあるのでしょうか?
}
>>string は、.NET Framework の System.String のエイリアスです。 >ってことはわかったんだけど違いがわからん。 何がわかったんだw エイリアスだよ、見た目が違うだけだよ。 見た目以外は違わんてこったよ。
>>283 それ以外にも違いがあるかのような発言をしてる奴が居るから混乱してるんだろう
いろんな言語使うプログラマが母国語も使えないなんてw
すみません。母国語は朝鮮語なもんで。
100円玉を「コイン」と呼んでも「硬貨」と呼んでも100円玉が100円玉であることは変わらない
>>222 ライブラリ化を意図してるとか?
外部に公開するところは、言語に依存しない表現にしておきたいってことじゃないの。
コンパイルしたら言語に依存も糞もないだろ
あきれたw
260じゃないが。 定数(式)は割りかし重要な概念だしCLR的には確かにintやらは 扱いが変な感じになっているので総出で馬鹿にせんでも。 この例なら一緒、エイリアスでいいんだけど。 C#的に「どちらもOK」ではないのはenumの型指定ぐらいか
うんこちんちん
enum はキーワードであってエイリアスじゃねえんだよ 他にも class と Class は別物だし delegate と Delegate も…
Class ってなんかあったか?
知ったか多すぎワロタ
.NETFramework Programing だっけか? ていう本を読めばいいと思うよ
298 :
デフォルトの名無しさん :2007/07/28(土) 11:13:24
結局invokeってなんなの? デリゲートを発動させるだけ? わっかんね
何のinvokeかくらい家よ。
メソッドAをBeginInvokeを使って非同期で処理したい場合、メソッドAからコールするメソッドB、メソッドCについても BeginInvokeが必要なのでしょうか? メソッドA →メソッドB →メソッドC
302 :
デフォルトの名無しさん :2007/07/28(土) 12:04:35
いや、invokeでググっても〜のinvoke,・・・のinvokeって出てくるけど invoke自体の存在理由、活用法がわからんねぇ プログラミング.NET Framework[第二版]をめんたま擦れるくらい 読めってことか? めんどくせーよ
>>302 使う必要のないものを知る必要はないだろ。
304 :
300 :2007/07/28(土) 12:23:14
<ぐち> ToolStripItemCollection.AddRangeはなんで配列を引数にとるんだ・・・ 別に配列に特化した処理してるわけじゃないしIList<T>でいいじゃないか 導入されたの2.0からなんだし。 </ぐち>
System.Windows.Forms だから
>>306 kwsk
理由になってないように見える
ほかのがそうだったからそれとの整合性のためってことでしょ Menu.MenuItemCollection.AddRange とか WPF の方は割り切って AddRange なんかそもそも無いな
>AddRange なんかそもそも無い なお悪い気がするが・・・
305みたいな意見はたぶんたまたま自分が使ってる場面での使い勝手を前提としたものだね。 配列になってる最大の理由はたぶん初期化されたインスタンスが 一番簡潔に書けるからじゃない? まあでも確かに、それならIEnumerable<T> でかまわないような気がしないでもない。
enumはそれ自体の話じゃないよ。 enum Foo : System.Int32 {...} とかやってみ?
312 :
311 :2007/07/28(土) 15:06:57
>>310 配列ってのはIList<T>の部分集合なわけで、引数として配列を受け取るのは
意味もなく利用範囲を狭めてるだけだよ。
IList<T>として宣言したって配列を渡すことはできる。
内部でArrayクラスのメソッドを使ってるならわかるけど、forで回してるだけみたいだし。
でも IDE は IEnumerable<ToolStripItem> よこせって言われても困ると思うんだ
普通にToolStripItem[]わたせばいいじゃん。リテラルあるんだし。
List<ToolStripItem>でつくっといてToArrayするだけでは?
そのレベルのことが分からない奴はいないと思うけどw
すげーつまらない話題だと思うんですが、 stringて引数に渡す場合新たにコピーされるんですよね? A(string str){}で渡すより、A(IList<string> list, int index:リスト内のインデックス){} で渡したほうがコスト小さいのでしょうか?
コピーなんざされねえよ
一応、参照はコピーされるけどなw
それ言ったら殆どコピーだろww
322 :
デフォルトの名無しさん :2007/07/28(土) 17:41:45
文字列型以外のプリミティブ型は、値型、構造体としてスタックに置かれる
スタックにおかれるって決まってるんだっけ そりゃ実際スタックに置かれるんだろうけどさ
複合型のメンバは型の一部としてヒープにおかれることもあるよ。 (そういう意味ではない?)
配列の要素だって、それどころかボクシングするだけでヒープ行きだぜ
松井ゴーーーーーーーーーーーーーーーーーーーーーーーール!!!!
>>290 おまえにはドキュメントを作るという考え方が無いのか?
せっかくの.NET Frameworkなのに、ライブラリのドキュメントを
特定言語に依存したものにするのか?
あと、ドキュメントでなくても。 他言語の使用者がコードを読んで、引数とか返り値の仕様が分かるというのもあるしね。
>>327 普通、ドキュメントはアセンブリのメタデータを使って作成しないか?
文脈読まずにレスするアホが沸いたな
C#コンパイラでXMLドキュメント生成したらちゃんとSystem.Int32になるぞ
てす
333 :
デフォルトの名無しさん :2007/07/30(月) 08:37:49
全然詳しくないので質問させてください。 いつも仕事中にWebばかり見てる派遣クンが 「C#がプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」 と言っています。 でもうちの会社ではプログラムを書いた人がデバッグして原因を調べるのが当たり前です。 頑固な派遣クンをどうやって説得したらいいでしょうか?
斬る
>C#がプログラムどおりに動かない これを額面どおりに受け取るなら確かに派遣クンの責任ではない
説得は時間の無駄だろ 辞めてもらえ
このコピペまだまだ反応する人居るんだね
>いつも仕事中にWebばかり見てる派遣クンが に一致するページは見つかりませんでした。
335デフォルトの名無しさん2007/07/30(月) 00:54:56
全然詳しくないので質問させてください。
いつも仕事中にWebばかり見てる派遣クンが
「Win32APIがプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」
と言っています。
彼のWindowsプログラムが動かないのを調べるのは誰の仕事なのでしょうか?
341デフォルトの名無しさんsage2007/07/30(月) 01:07:17
この
>>335 のネタどこが元ネタなんだろな。
知る限りの最古はここなんだが。
ttp://pc11.2ch.net/test/read.cgi/tech/1182351826/387- 387デフォルトの名無しさん2007/07/22(日) 15:38:01
全然詳しくないので質問させてください。
仕事全然できない派遣クンが
「DirectXがプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」
と言っています。
原因を調べるのは誰の仕事なのでしょうか?
Google様に捕らえられてないって事は随分最近のネタくさいな
重度2ch患者は昨日あった事でもずいぶん前にあったように感じるらしい
一週間も経っていればそうとう昔の出来事に感じるんだろうな
俺から見たら、平日昼間からそういうくだらない調査を一生懸命やってる 奇特なお方だって十分に「重度2ch患者」に見えるけどなw なによりその「自分で自分に突っ込む能力の欠如」って「重度2ch患者」とやらの 顕著な特徴じゃないか?w
それに突っ込むお前もかなりきてるけど
スルーできないなら2chなんか見るなよwww
とりあえず夏休みのせいにしとこうぜ
夏休み 暇をもてあました学生もこのスレみてるんだぜ
delegate の第4回が来てたけどだいぶトーンダウンしてるな
GetInvocationListも知らないアホはほっとけよ。
そんな便利なメソッドあったのか・・・アホでサーセンwww
言語のバージョンアップで言語仕様の変わらない言語って何?
何をバージョンアップするんだよ・・・
本人に聞けよ
バージョンだけ上がって変更無し?ワロスwww
Brainfuck
355 :
759 :2007/07/31(火) 17:43:02
質問です。 タブは追加した順番に左から右に配置されますよね。 途中のタブを削除すると 削除したタブの右側のタブは全て左に詰められて再描写されますよね。 新しくタブを追加すると、一番右に表示されますよね。 この動きを別のコントロールで再現したいのですが、 どういうアルゴリズムを使えばよろしいでしょうか。 ユーザコントロールを上下に並べて表示し、 とあるイベントで削除されたコントロールの下にあるコントロールは 上に詰めて表示する。 新規にコントロールが追加された場合は一番下に表示する。 コントロールは最大3つ。 コントロールの数によってフォームのSize.Yを変更する。 というストーリーです。 タブの描写のアルゴリズムが分かれば全て解決するので、 だれか教えてください。
FlowLayoutPanelを使えば自動でやってくれると思うけど
タブの描写のアルゴリズムもなにも、 普通のIListで管理するだけじゃない?
>>346 馬鹿馬鹿しいな。
ただのキモイやつにしか見えん。
それぐらいのアルゴリズムが思いつかない人は自分でコントロール作ろうとしちゃいけないと思う(´・ω・`)
360 :
355 :2007/07/31(火) 19:10:05
>>356 .NET1.1なんでFlowLayoutPanelは使えないです。
>>357 IListでできました。
内部で管理してくれてるんですね。
ありがとうございます。
>>359 それぐらいとはどれくらい?
「答えてくれる人」からしてみれば質問はすべて"それぐらい"にあてはまる。
質問スレの意味がわかってないのでは?
なんでIListを使ったらできたのかが理解できない コントロールのレイアウトのアルゴリズムについての質問だったんじゃないのか? IListはほとんど関係ないと思うんだが
確かに「それぐらい」が通ったらこのスレの存在意義が無いよなw
>>360 自分でコントロールを作ろうとしている人にとって当たり前だろうと思うぐらいが"それぐらい"ですが( ゚Д゚)ナニカ?
アルゴリズムなんて言葉が蛇足だっただけだろ
アルゴリズムなんて高尚なもんじゃないだろこれ
さぁいつもの調子にもどってきました
別にアルゴリズムに高尚な意味はないよ。 t = a; a = b; b = t; てのもアルゴリズムだし。
いや普通アルゴリズムといえば多少なりとも難解な価値ある手続きのことをさすんじゃまいか
いや、勝手に意味を付加するなよ
>>363 一個人にとっての当たり前が他人にとっての当たり前じゃないから
人間は戦争するんだろうな。
戦は個人でするものじゃないだろうw というか、糞みたいな話題が話したければ他所行けよ。
ちょwww まじでみんな他所いったの?wwww ぼくちんさみしいおwwww
キミはひとりじゃないお
ああ、看板を営業中にかえるのを忘れてたよ
がめんに「はろーわーるど」ってだすにはどうすればいいの?
マジックで書けばいいんだよ
油性で書いたら消えない!
モニタにサランラップ貼ればいい
あたまいいな
夏休みはすげぇな。 正直こんなにガキが沢山いるとは思わなかった…
このスレのこと言ってるなら普段と変わらないと思うが。
夏だなぁ厨なんかほっとけよ
プログラムのバージョン管理とかってどうやってやってます?
普通にVSS
ラップスキャンを思い出した。
svn、トータスがあるんでDev以外も触れるから。
VSSはMSも駄目出ししてたよw
全くの初心者ですが、囲碁のソフトを作っています。 Form1にグラフィックを利用して碁盤を描きました。 マウスの左クリックで、交点に碁石を置きたいのですが、どのようにすればいいのでしょうか? マウスの左クリックのイベントのキャッチは以下でいいと思うのですが、碁石(stone.bmp) をどのように描画すればいいのかが分かりません。 マウスポインタの位置は、e.Location で取れそうです。 private void Form1_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { ・・・ } }
マウスカーソルでクリックされた交点の求め方がわからないの? 碁盤の目の間隔を使って計算するしかないだろ 碁盤の目のまま考えてるからややこしい 描画位置が半目ずれたオセロだと思えばいい
1.マウス座標から碁盤座標に変換 2.碁盤座標から石の描画座標に変換 碁盤のサイズ・碁盤の位置・目の間隔・碁石のサイズはわかってるよね?
ラップスキャンってまだやってる人いるのかね?
描画方法を聞いてるんじゃないの? Form1_MouseClickでは盤面データを更新したのちInvalidate()を呼ぶ。 でOnPaintをオーバーライドしてそこで盤面データにもとづいて描画する。 盤面データはint[19,19]みたいな感じになるかな。 ビットマップの描画はPaintEventArgs.Graphics.DrawImageあたりを使えばいいでしょ
>>390-391 ありがとうございます。
わかりました。
碁石のイメージを描いたり、消したりするのはどうするのでしょうか?
描くのは、これでいいのでしょうか?
Graphics.DrawImage (Image, Point)
すこしは自分で努力しろ、このフナムシ!
>>393 丁寧な回答ありがとうございます。
DrawImageでよかったんですね。
知らない用語も多いので調べてみます。
ググってサンプルプログラムを読むとか MSDNライブラリでGraphicsクラスについて調べるとか インテリセンスで出てくるメソッドとその説明から目的のもの使えるか想像するとかできないのかね
そういう愚痴はスレ違い
教えてください。 リッチテキストボックスを使ってワードパッドと同等の機能を持たせた プログラムを作ったのですがワードパッドにある、挿入→オブジェクト の機能も付けたいのです。方法があったら教えて下さい。
ごめん俺には無理だ。
401 :
デフォルトの名無しさん :2007/08/03(金) 09:01:05
キチガイの俺様がティラノサウルスでオナニーしつつ401get
時の哲学者が脱出しながら09:25:00get
時の哲学者が脱出しながら09:25:00get
汗臭い自宅警備員が台風の予兆に苛まれつつ適当な番号をゲット
ComboBoxのSelectedValueを選択時点で変更させる手段ってないもんかね? Leaveしないと変わらないみたいでイマイチ
それ本当に確認したのか? まあそういう2分で確認できることを怠る奴は何やってもダメだと思うよw
それダウンロードできるか本当に確認したか? まあそういう(
キーワードは「ほげ」
410 :
デフォルトの名無しさん :2007/08/03(金) 22:55:18
万が一あなたの愛用のテキストエディタがC#やVB.NETで書き直されたらどうする?
Reflectorで覗いてみる
NGenでコンパイル
413 :
デフォルトの名無しさん :2007/08/04(土) 12:05:08
C#の勉強の一環として、ダイアログ(フォーム)を一個表示して、 その中でキャラクタが動く簡単なゲームを作ろうと思います。 キャラクタはキーボードで操作します。ユーザの操作に関係なく動く敵(タイマ割り込み)は想定しません。 こういった場合、Formクラスのソースコードでキー入力イベント処理を行うべきでしょうか。 それともMain()メソッド内でスレッドを生成してキー入力待ちを行うべきでしょうか。 どちらでも動作はすると思うのですが、 個人的に前者はFormという表示を担うクラスに メインロジックが入ってくるのが気にくわないんです。 でもウィザードはそのように生成しますし、 そちらが正しいんでしょうか?
>そちらが正しいんでしょうか? 正解なんてない
>>414 正解はあるだろw
まともなプログラマでViewにロジック書け、といってる奴見たことないが。
>>413 ウィザードは単に「ハリボテ」( = GUI部品)の状態を制御するコードを生成しているだけで、
ロジックなんて書かないと思いますが。。
スレッドとか言ってるあたり、クラスをまともに理解してるとは思えないが……。
非同期な入力をスレッドに担当させるとかは別にありじゃね
ゲームならキーイベントで直接キャラクタの位置を変えるんじゃなくて とりあえず「キーが押されてる」フラグを立てといて フレーム毎に移動させるのが普通じゃないの?
OSが返すキーコード自体が「フラグ」なのになんでさらにユーザーコードの中で フラグを立てる必要があるんだよアホか。
ゲーム造ったことのない奴は黙ってろ
void Update(){ if (isRightKeyPress) character.X += 1; 再描画(); } こういうのを一定時間ごとに呼び出す感じ
おまえらゲームごときに必死すぎワロス
ゲームすら語れないカスは黙ってろ
時代はアナログゲームだろ。
425 :
413 :2007/08/04(土) 14:04:27
多数の回答、ありがとうございます。
勉強なので
>>421 で教えていただいた方法を含め、
いろいろ試してみようと思います。
ただ、やはりMVCは分けたいな、とも思いますねえ。
staticなMain()メソッド以外にControlがあるのかはわかりませんが・・・。
HWスプライト機能がある昔のゲーム機でもなけりゃ、(その場合だって冷静に考えると変だが) 座標が変化したときだけ描画って処理はありえないでしょ。 そんなのゲームなんて20年以上作ってない俺だってわかるよ。
ありえるだろ ゲームなんて色々あるわけだし マインスイーパで定期的な処理や入力のポーリングなんてしてないだろ
何意味不明なこと言ってるんだ? だから入力のポーリングなんざosの仕事だっつーにw それと、Winの描画の基本も知らないのかね君は
お前はDirectXとか知らんのか・・・
なんでこう自信満々なんだろうな 自分の知らないことがあるかもしれないって思わないのかね
知ってる知らない以前に、描画とキー入力とキャラの描画が密に結合するような 設計は今時ありえない。 というか、80年代にアセンブラでコード書いてた時代だってありえないよ そんな設計は。
具体的にどういうことを言ってるのかわからん
>>421 はキーが押されてなくても座標が変わらなくても再描画されるよ
ローグみたいのならキー操作即ち描画だな。
○○○○も知らないのかね君は
>>413 ダイアログって言ってるからc++使い?
>>431 設計の話は設計の話でしょ。
Win描画の基本がどうのこうのとは別問題。
ゲームは大体使い捨てだから 設計考えるより書いたほうが速いよ…
ファミコンの時代なら別だが今のご時世で使い捨てはねえよ
439 :
デフォルトの名無しさん :2007/08/06(月) 15:29:34
C#のソースを見ていて namespace ServerAppTest { [TestFixture] public class MaxDataSizeRecorderTest { } というのが出てくるのですが[TestFixture]って何ですか? []が何を表すのかわかりません。検索して調べるためにキーワードを教えて下さい。
Attribute 属性 カスタム属性
ふらっとレベルの質問だ( ´ー`)フゥー...
443 :
デフォルトの名無しさん :2007/08/06(月) 16:24:58
テンプレートクラスをキャストしたいのですが、うまくできません。 あるインターフェース IMyInterface と、それを実装したクラス MyClass1 と MyClass2 があります。 このクラスのリスト List<MyClass1> と List<MyClass2> を、List<IMyInterface> を引数とするメソッドへ渡したいのですが、 これは許されないようです。 MyClass1[] や MyClass2[] を IMyInterface[] へキャストすることはできるようなのですが、同じようにテンプレートクラスを キャストすることはできるでしょうか。
_
テンプレートではなくジェネリックと呼べよ
OfType<T>
リリースビルドをしても、使用してない関数も含まれちゃいますよね? そういう関数を除外する属性ってありますでしょうか?
448 :
デフォルトの名無しさん :2007/08/06(月) 16:58:37
449 :
443 :2007/08/06(月) 17:00:09
>>444 むりっすか・・・
本当は呼び出される側のメソッドの引数は IList<IMyInterface> とか IEnumerable<IMyInterface> とかで受け取りたいのですが、
こういうのはできないんですね・・・
>>445 あ、こういうのはジェネリックって言うんですか。
勉強になりました。ありがとうございます。
>>446 .NET 3 からのものみたいですね。
2 くらいでなんとかしたいです。すみません。
C#君ってうちのこと嫌いなん?(;_;)
452 :
C# :2007/08/06(月) 18:03:41
君誰? やだ、気持ちわるーいwギャハハハwww
>>449 IEnumerable<TDst> 変換<TSrc, TDst>(IEnumerable<TSrc> enumerable)
where TSrc : TDst
{ foreach (TSrc item in enumerable) yield return item; }
454 :
デフォルトの名無しさん :2007/08/06(月) 18:17:37
C#.NETにおいて, ボタンをクリックするとイベントが起こる を一括して行いたいのですが・・・ button1についてのプログラム button2についてのプログラム button3についてのプログラム ・・・・・ ではなくて, ボタンについてのプログラム スイッチで,button1だったらケース1 button2だったらケース2 というようにしたいのですが,どのように プログラムすればいいのでしょうか? 初歩的な質問ですみません よろしくお願いします。
全部のハンドラを同じにすればいいべや
switchは直接使えないだろ Nameを使えばswitch使えるけどそれはまずいからif(sender==…){…}else if…でやるしかない
スイッチ使いたかったら Button b = (Button)sender; として switch(b.Text) switch(b.Name) switch((string)b.Tag) この辺つかえばいける
458 :
443 :2007/08/06(月) 18:49:04
>>453 それ面白いですね!
とても参考になります。ありがとうございます。
>>447 C# 3.0のpartial methodならそういう用途に使える、
というネタは置いておいて
標準でそういう機能は無いので
アセンブリ編集ツールを探したり作ったりが正攻法だと思う。
ILMergeのたぐいね。
AbstractIL使ったら楽に作れそうだが……
FxCop は未使用のメンバを警告してくれるよ
>>456 >Nameを使えばswitch使えるけどそれはまずいから
これってなぜ?俺は頻用しているし、優秀そうな人のコードでも使われていた(だから真似したんですがw)。
例えば、リファクタリングして名前が変わったらどうなる?
>>456 ifだらだらは美しくないのでDelegateぶっこんどいて_dic[sender]()だな。
>>462 const string使うとかはどうですか?いざとなりゃ全文置換すりゃいいわけだし。
それにそれをいったらPropertyChangedとかDataBindingも同様じゃん。
MSがメタプログラミングっぽいの薦めてるっぽいから、その流れに沿おうと思ってたんだけど。
465 :
464 :2007/08/06(月) 22:21:45
「っぽい」連発してごめんなさいw 自信のなさの表れです。
>>464 いざとなったら全文置換っていったって、
何ヶ月もたって「その」必要性を忘れてたら、あるいは最初から知らなかったらどうするの?
もちろんそれ以外他に方法がなければ、そういうリスクを犯すのも仕方がないかもしれないが、
必要もないリスクを犯すのは下策じゃないかな
>>463 そのやり方を、もう少し教えてくださいませんか?
俺はそんなくだらないことに策を弄せようとせず、ベタにやった方が いいと思うけどね。 100も200もコントロールがあるのなら話は全然別だろうけど
なんつうかGUIは基本的に使い捨てだしねぇ
数ヶ月もたってからコントロールの名前なんかリファクタするかよ
>>469 たぶんその考えが根本的に間違ってるんだと思うよ
>>462 Button b = (Button)sender;
switch(b.Name){
case button1.Name :
break;
}
って書いておけば安心じゃないの?
>>472 定数値じゃないと無理だろ?
多分それコンパイルもできないぞ
>>473 あ、ごめん。button1ってのはフォームにおいてあるボタンね。
>>454 のやつ。
private void button_Click(object sender,EventArgs e) {
Button b = (Button)sender;
switch(b.Name){
case this.button1.Name :
break;
}
}
>>474 言ってる意味がわからないんだが
thisはあっても無くてもコンパイルできなかったし
ふらっと以下だな
フォーム上のボタンを、デザイナで作ったダミーボタンのクローンとして いくつもコピーしたいのですが、CloneメソッドやSerializeメソッドがないため コピーできません。何か簡単でいいアイデアないでしょうか?
478 :
477 :2007/08/07(火) 08:56:46
ボタン自体をコピー出来なくても プロパティ全てをコピー出来ればそれでいいんですが 一つ一つコピーするしかないでしょうか
ボタンを継承しろ
>>477 WPFならスタイル書いといてボタンに登録するだけだよ!
482 :
デフォルトの名無しさん :2007/08/07(火) 12:12:39
481 ありがとう。 しかし、とりあえずの所敷居が高くてスタイルは使っていません UI自体はBlend使っていますが スタイルを適用するとプッシュダウン時の外観が設定出来なったので… なので、今回は単純に配置したボタンのマージン等の情報をコピーしたいんです
>>483 あなたはまずC#の入門サイトを探す事から始めた方がいいんじゃないか?
Stock.csとAskPriceChangedEventArgs.csはサンプルコード通り。 StockDisplayを、以下のように修正して、 class StockDisplay { public void Notify(object sender, AskPriceChangedEventArgs e) { Console.WriteLine("The new ask price is:" + e.AskPrice); } } MainClass.csに下記行のどちらかを追加ですよね。 //stock.AskPriceChanged += stockDisplay.Notify; stock.AskPriceChanged += new Stock.AskPriceChangedHandler(stockDisplay.Notify); 上記2行はどちらでも動くような気がしますが、後者の方が正しいんですよね?
オブジェクトパターンとは目新しい
>>485 文法と動作の点ではどちらも同じ程度に正しい。
どう書きたいか、書くべきか意見はあるかもしれないが、それは思想的なものでしかない。
前者は2.0から使えるようになったような・・・記憶はあいまいだが
C#からファイル名と行番号を指定してVisualStudioにソースを表示させたいんですが、どうしたらよいんでしょう(´・ω・`)
C#のプログラムから、VSのエディタにタグジャンプしたい、ということ?
オートメーション
一行糞レスはいりません><
>>492 こらこら、思っても言ってはいけません。
ネットは社会の縮図です。現実の社会に必要とされていない人間なんて居ないのです。
(棒読み)
しかし質問の内容からすると、コマンドラインからVSを起動できて、引数にファイル名と行数とか、
そういうVSの起動方法があればOKってこと?
でも、プロジェクトとして開かないと意味無いような気もするけれど、もしかしてそっちなのかな。
いずれにしても、私にはさっぱり分かりませんが・・・。
まあ一行レスクンがいらないのはまったく同意だけど、
同じかより以上に
>>489 みたいのもイラネエな俺は
以下質問禁止
以下つっこみ禁止
string file = "ファイルパス"; string line = "50";//行数 EnvDTE80.DTE2 dte2; dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.8.0"); dte2.ExecuteCommand("File.OpenFile", file); dte2.ExecuteCommand("Edit.GoTo", line);
天才がキタ━━━━(゚∀゚)━━━━ッ!!。なるほどー。
神光臨!!!!!!!!!!!!!!!!!
コロンブスの卵といわれればそのとおりだけど、 コードみちゃうとなんてことないね
すごいな。EnvDTE80名前空間なんてはじめて知った。 その程度使いこなせる人はどれくらいいるんだ?
vs2003で動きません>< は禁止。
VSに付いてたペラい本に書いてなかったっけ?
つーかVSのポスターいらないよな。 誰かやめろって言わないのかな〜
>>506 俺(俺たち?)はデバッガーじゃない。
お前のソース全部見て教えてやる気にはならない。
もっとスマートにやれ。
↑意味不明
>>506 エスパー回答
インターネット接続が不安定。
で、それに対応するようにコードが書かれていない。
510 :
506 :2007/08/07(火) 22:06:10
>>507 何が言いたいのか分かりません・・・。
教科書通りのプログラムで非同期が出来ないのは
WebClicentのバグなのかと思って投稿したのですが
何に気がさわったのでしょうか?
>>510 zip落としたり解凍したりコード全部眺めたりするのはマンドクセ
まるなげしてんじゃねーぞこのクソハゲ
質問は要点を3行でまとめろ低能
ってことじゃない?
おれはそんな酷いことは言わないよ。ただスルーするだけ。
教科書のコードってのは、例外処理を始めとして極限まで省いてる最低限しかないコードだぞ。
コントロールのバグを疑う前に自分のコードを疑えよ……
515 :
507 :2007/08/07(火) 22:13:52
ウチでは再現できないので答えられないけど 数行のコードでウダウダ言ってる奴は本当にプログラマーなのか?
そもそもダウンロードしないと数行かどうか分からないわけで
>e.Errorが呼ばれたり ふらっと向けだな。 でも住人も態度も同じ。
つまり落としもせずに文句を言っているのかw
落とす気になりませんなあ。 ちなみにユーザー名はなに?
button1をクリックするたびにイベントが積ってくぞ
522 :
デフォルトの名無しさん :2007/08/07(火) 22:24:15
質問です。 ソースコード数万行、数十万行のプログラム書いたことある? 皆さん、数千行程度のプロトタイプ位のアプリしか作成したことないのかな? って感じるところがあったもんで・・・ 行数が多いからすごい、すごくないの議論をするつもりではありません。
>モデムの電源を切って実行するとたまに反応無しになってしまいます。 モデムの電源切ってインターネットに繋がるの? >その後、e.Errorが呼ばれたり名前が解決できなかったりエラーもバラバラのようです。 バラバラでも全部書いたら? 多分、名前が解決できなかったりとあるからネットに正しく繋がってないんじゃないかな? >モデムの電源を切っていてもキャンセルボタンを押せたり、 意味不明
だからなんなの?
wcをフィールドでもったほうがいくない?
>>523 ネットに繋がってないときにキャンセルが出来るときと出来ないときがあるのです。
エラーは書いてあるとおり、e.Errorと名前の解決が出来ないです。
つまりエラーの内容が一定ではないのです。
バラバラと書いたのは伝わりにくかったかも知れません。
名前の解決が出来ない ↓ DNSにアクセスできてない。 ↓ ネットに上手く繋がってない。
数行ならそのまま貼れよ
いや、すうぎょうじゃないおy
>ソースコード数万行、数十万行のプログラム書いたことある? 開発の仕事ならないなあ。 仕事での開発じゃせいぜい月数千行くらいじゃないの? したら100ヶ月もかかっちゃうよ
え、一人で作るんじゃない? そんなの数十万行のプログラムとか自慢げに言うことじゃないしなあ まあそうでなくとも自慢げにいえるプログラムなんてそうそうないけどな
533 :
デフォルトの名無しさん :2007/08/07(火) 22:47:08
けど、数十行程度のサンプルプログラムをwwwに公開して あたかも、C++が出来ますなんてひといっぱいいんじゃんw
VBAで数十万行のソースかいてたら本当に尊敬するわ。
まあ数十行ならエッセンスの詰まったすごいコードはあるけどね。 もちろんそれが完成したプログラム、ではないけど。 くそソースはそらもう腐るほどあるが
以前一緒にCOBOLの仕事してた奴のコーディング量は凄かった ループとか普通の制御構造も使わずにひたすらコピペでまっ平らな処理書いてた そんなんで「今日は何千ステップも作って疲れたぜ」とか言っててもう・・・
>ループとか普通の制御構造も使わず なにその縛りプレイ
539 :
デフォルトの名無しさん :2007/08/08(水) 00:35:56
>>537 なんでそんな極端な例をもってくるかな?
けっきょく、サンプルプログラム程度しか書いたこと無いんでしょw
なにその無意味なつっかかり
>522を要約すると 数十万行のプログラム → 凄いプログラム 数千行のプログラム → プロトorサンプル程度のプログラムwwwっうぇwww >行数が多いからすごい、すごくないの議論をするつもりではありません とか言いながらそういう議論をしていることにも気付いてないのか・・・
議論をするつもりではありません = 異論は認めません
普通夏が来るならふらっとだろ・・・
コードを書く2000行くらいのプログラムを書いて約5万行のコードを書いた事ならあるな 全体で8万行くらいのプログラムの一部だけど
>>475 ボタンの名前が違ったりとかじゃないの?
そもそもどういうエラーがでるの?
というかみんなは
>>454 みたいな事をしたいときに
ハンドラを同じにして
>>474 の書き方しないのけぇ?
したくならないからなぁ
>ハンドラを同じにして
>>474 の書き方しないのけぇ?
おまえはいったいどこのコンパイラを使ってるんだw
VBっておちじゃないだろな
エラー CS0150: 定数値が必要です。 エラー CS0150: 定数値が必要です。 エラー CS0150: 定数値が必要です。 エラー CS0150: 定数値が必要です。 エラー CS0150: 定数値が必要です。 エラー CS0150: 定数値が必要です。
>>545 エラー 1 定数値が必要です。
caseのラベルの部分でこのエラーが出る
>>545 実際にコード書いて試してみなよ
コンパイルできるんならそのコードを晒してみせてよ
551 :
506 :2007/08/08(水) 02:18:56
結局試した人はいないのか そのくせアレコレ書きもむとは 口先ばっかのとんだスレですな
552 :
545 :2007/08/08(水) 02:22:34
>>547-550 あ、ほんとだw
コンパイル通ったのは気のせいだったみたい。
ごめんなさい。
ふらっと行けよ。君らの居場所はここじゃない。
DTE80、いろいろ面白そうなObjectあるね。何かやるのに便利かも。オートメーションってところがなんか('A`)マンドクセそうだが。
オートメーションってところはマンドクセじゃなくて普通に便利そうだろwww だが、実際にどれくらい効率UPするかは疑問だけどね。
いや、C#からだとメソッドの呼び出しとか('A`)マンドクセくなかった?普通の.NETみたいな感じで呼べたっけ? ちょっといじってから股報告するノシ
pathからドライブ文字の取得方法ってありますでしょうか? たとえば C:\ から "C"という文字列だけを取り出したいのですが。。。
strig drv; string root = Path.GetPathRoot( path ); if( !String.IsNullOrEmpty( drv ) ) drv = root[0].ToString();
ひどいまちがい string drv; string root = Path.GetPathRoot( path ); if( !String.IsNullOrEmpty( root ) ) drv = root[0].ToString();
FormのVisibleがfalseのままで位置を変更できないでしょうか? VisibleがfalseだとTopとLeftを変更しても意味がないようです。
>>561 普通に Visible が false でも変更できるよ
一度もShowしてない状態で位置を変更するなら Form の StartPosition が Manual にする必要があるけどね
>>562 ありがとうございます。
>StartPosition が Manual にする必要
この通りでうまくいきました。
564 :
デフォルトの名無しさん :2007/08/08(水) 18:56:13
任意の型Tをstringに変換するにはToStringを使えばいいんですが、 その逆で、stringから任意の型Tのインスタンスを作るのに便利なクラスとかはないでしょうか? 自前でやるなら、型TからParseメソッドを検索するとかでできるかなと思うんですが、 もしFrameworkにそういうクラスがあれば、そっちを使いたいと思いまして。
Tyoe
Typeでそんなことできたっけ?
TypeConverter
>>564 出来るけどやめたほうがいい。
レベルが上がったら試してみればいい。
createObjectだったら話は別だが。
デザイナ関連でよく使われるしそんなに大したものでもない
>>568 でおk
TypeConverterっていうのは文字通り「変換屋」のベースクラスに過ぎず、 変換方法を自分で実装するんだぞw
自動でやってくれたら革命起こるぞ プログラマ不要時代の到来w
575 :
558 :2007/08/08(水) 20:41:50
576 :
564 :2007/08/08(水) 20:46:11
TypeDescriptor.GetConverter(typeof(Color)).ConvertFromString("Red") とかすればいいわけですね。 自前構造体では、TypeConverterの派生クラスを実装して、 TypeConverterAttributeつけると。 intとかにはTypeConverterAttributeがないようなので、 統一的に扱えないのが少し残念ですが。。。 ありがとうございました。
だからんなことしなくてもType.GetTypeとリフレクションの組み合わせで 普通にできるって
"Red"とかParseとか言ってるから、 インスタンスが作りたいだけじゃなくて同時にメンバに値を入れたいんだろ
>564 任意の型にToStringを何も考えずにやるのはやめた方がいい。 DateTimeみたいにフォーマットとか指定しないと地域と言語のオプションに依存するのがあったりして挙動が変わったりする。 たまにtipsとしてエクスプローラなどの日付の形式を変えるものが紹介されてたりするし。 日付の形式を和暦で元号付きとかにしてみるのがおすすめ。 まぁ表示用だけならかまわないんだが元に戻す変換もやろうとしてるみたいだし。
業務連絡 つりはするーしろ
TypeConverterとstringひとつのコンストラクタとParse検索のあわせ技で
だからTypeConverterって線はありえんだろうw 本当にコード書いてる人間か?
しつこいな、なんで? 何つかったって似たようなもんだろ。 ああ、Type.GetTypeとリフレクションの組み合わせか そうかそうか なんのこっちゃ
まさか任意の型では使えない(実装しなきゃならんから) ありえんとか言ってるのか? じゃあ実装しなくても任意の型対称にできる方法を出してくれ
ああ、Type.GetTypeとリフレクションの組み合わせか そうかそうか なんのこっちゃ
リフレクションだけで一般的にやれたらそれこそ
>>572 だぞ
>本当にコード書いてる人間か? コード書かない人間がTypeConverterなんか知ってるのか!!
なんだ今日は撤退が早いな…
Button button = 神<Button>("クリックされたらメッセージボックスでHello World!と表示するボタン");
>>564 何がしたいのかわからんが文字列でのシリアライズみたいのしたいんだったら作ったよ。
C++ようにはVCCodeModelとかあるみたいなんだが、C#にはないの? それともデフォルトのCodeModelで全部間に合うってことかね? ためしてみようとおもったけどComえらー(なんたらREJECT)が出たので検証できず・・・orz
なんたらってシネヨ。
Dictionaryをグリッドとかにバインドするうまい手段はないもんかね
最初からDataTable使えばすむこと
UIスレッドで処理を実行するためにControl.BeginInvokeやControl.Invokeがありますが、 ウインドウのインスタンスが特定できない場合にも使えるようなメソッドってありますか? System.Windows.Forms.Timerを使えばできなくもないですが、やや面倒なので。
>>597 UI スレッドってのはウィンドウにひもづいてるわけで、
「どのウィンドウの UI スレッドに処理させたいのか」が
不明では何もしようがないよ・・・
ないと思うけどな。 普通にテキトーなコントロールをスレッド使うクラスに渡せばいいじゃん。 ライブラリ作ってるとかで(くだらない体裁上の問題だとは思うが)どうしても そういう泥臭いのがいやという事情なら、後々他で使うことも考慮して ダミーの非表示フォームでもシングルトンで作ってそれを利用するとか。 ダミーフォームのインスタンスはApplication.Idleとかで作成すればいい。
600 :
597 :2007/08/09(木) 19:00:43
>>598 メッセージループはウインドウの存在に関わらず存在するんで無理ではないような。
>>599 やっぱないですかね。
適当なコントロールを渡すのが嫌という訳ではなくて
任意の時点で必ず存在しているコントロールというものがないんです。
ダミーフォームっていうのも手ですがそれならTimer使ってやったほうがよさげですね。
どういう状況なんだろ
>>600 ふつーーーーーに、ダミーフォームをメインスレッドで作って、それをメインスレッドを体現するオブジェクトとして扱えばいいと思うけれど。
FACADEで隠せば何も問題がない。
599書いたのは俺だけど、さすがにダミーのフォーム(別にボタンでもラベルでもいいんだが、本当は。。) を作るのがそんなにフツーのこととも思えないよw
いやごく普通のテクニークだろ
全てのフォームは同じスレッドで作成して if(Application.OpenForms.Count>0) Application.OpenForms[0].Invoke(hoge); じゃだめなの?
フォーム数がゼロの時はどうなるんだよw
WPF なら Application に Dispatcher があるんだがな
フォーム数0の時にInvokeが必要なコントロール操作ってなにがあるんだ?
MessageBox.Showとかワーカースレッドでやるとまずくなかったか?
フォームが無かったりタスクバー使用してないアプリでメッセージボックス出されると腹立つ
>>607 Dispatcherて何さ?あと英単語の間に空白いれてるのはなぜ?
Wikipedian の嗜み
>>611 >英単語の間に空白いれてるのはなぜ?
× IamJapanese.
○ I am Japanese
614 :
デフォルトの名無しさん :2007/08/10(金) 01:32:41
>>605 所詮C#なんておこちゃま言語使ってるのに
hogeなんてunixを恰も知ってるような単語を使うのは止めましょう
英単語の間じゃなくて
日本語とアルファベットの間ってことかな?
俺は Wikipedia とかない頃から space よくいれる。
文字によってはくっついて読みづらかったりするからね。
>>614 次から foo にしますね。
wikipediaはそういう書き方は禁止されてると思ったが・・・
MSDNはスペース入ってるな
間延びしてマヌケに見えるだけ。 加えてバッドノウハウだし。
バッドノウハウねぇ・・・
等幅フォントだと間延びして間抜けに見えるので プロポーショナルフォントでコードを書いてみよう
>>619 元々、和欧文字間の1/4スペースがちゃんと空けられずに表示されてしまう
ことから来てるものなんだが、
これをバッドノウハウと言わずしてなんという?
ていうかなんでいきなりそんなどうでもいい話題?
こういう話題になると必ずハッスルする奴が出てくるな
おなぬーのやり方に凄いポリシー持ってそうな香具師だな
つーかここをおなぬー公開場だと思ってんじゃね
http://blogs.wankuma.com/tatsumihr/articles/79793.aspx このサイトを参考に、アプリケーション構成ファイルに独自セクションと独自エレメントを追加
しようとしているのですが、わからないことがあります。
このサイトの例は
<myCustomSection>
<myChildSection />
<myChildSections>
<myChildSection />
<myChildSection />
</myChildSections>
</myCustomSection>
と、myCustomSectionの子のmyChildSectionsがmyChildSectionのコレクションになってますが、
<myCustomSection>
<myChildSection />
<myChildSection />
<myChildSection />
</myCustomSection>
と、myCustomSectionが直接myChildSectionのコレクションとなるようにしたいです。
そこでわからないのが、<configSections>の<section>のtype属性で指定するハンドラの作り方です。
サイトをみると、セクションを定義するハンドラはConfigurationSectionクラスを継承し、
コレクションであるにはConfigurationElementCollectionを継承してコレクション独自のメソッドを
オーバーライドする必要があるようですが、それぞれ継承しているのがインタフェースではなくクラス
であるため、多重継承ができず、セクションを定義するハンドラかつコレクションというのが
できないように思えます。
上記のような構成ファイルを作るには、どうすればいいのでしょうか。
よろしくお願いします。
628 :
デフォルトの名無しさん :2007/08/10(金) 22:19:49
C#ってどんな局面で必要になりますか? 内の部署はWINアプリは相変わらず、VC++MFCです。
VC#2005Express(無料)落として簡単なアプリ作ってみ
.NET指定の案件が来たとき
C#は.NETでベストな選択。 .NET以外は使えないの2択。
っ F#
内の部署は全部C#.NETです。 でもWinFormsは糞です。
Activator.CreateInstanceで動的にインスタンスを生成するクラスを指定しようとしているのですが、 そのときに必要なキャストも動的にやりたいです void func ( string classname, Type type ) { 何か = ( classname ) Activator.CreateInstance( type ); } みたいな感じで… キャストするクラス名を動的に決めるのってどうやればいいんでしょうか?
635 :
デフォルトの名無しさん :2007/08/10(金) 23:35:12
簡単なアプリ作るなら確かに簡単だが、お金を頂くアプリだと 標準のコンポーネントなんてほぼ使えないからほとんど一から 書き起こすことになるそうなるとVC++MFCもVC#も大して変わらん そのくせ、遅い とてもじゃないが、業務用では無理
>>634 キャストって何か考えてみろ。
まあジェネリック使えばできる。
いやごめんできんわww 動的に文字列で指定だったな、すまんw
>>635 え?業務アプリこそC#だと思うのだが…
業務用ってなんのこと?
業務用じゃなくて、入力系アプリだと無理だと言ってるんだろう。 入力系アプリにエフェクトやアニメーションなんかいらないからな。
>634 普通の特定のインターフェースや基底クラスを持つクラスのインスタンスを動的に作るんだろ? キャストする型名もその時点で決まってるのだから動的に型名を指定するなんて状況にはならないだろ?
>>641 この間リフレクションでenumのフィールドか何かに対して何か処理したいときに何か対照の型に変換したらすっきりするという状況あったんだが・・・
他の逃げ方あったので忘れた。その場で型変換して使うというよりも動的に相手の型のインタフェースに合わせるために変える必要があるみたいな。
643 :
デフォルトの名無しさん :2007/08/11(土) 07:16:44
C#で業務用アプリ作んなきゃいけないんだけど ユーザ環境にACCESSがインストールされてなくても ADO使ってMDBにアクセス出来ますか?
644 :
デフォルトの名無しさん :2007/08/11(土) 08:29:06
その程度のこともわからない人が作ったアプリケーションを お金を出して買う気にはなれん
うむ
>>644 こういうことだけを書きに来る人って生きてる価値ないよな
へむ
メンバに持ってるマネージオブジェクトに対してDisposeを呼ぶだけの目的でIDisposableを実装する場合 (アンマネージリソースは直接持ってない)、ファイナライザは実装しなくてもいいの?
うん。
てかファイナライザで何する気だw
コピペ君って馬鹿だな、まで読んだ。 コピペ君っていうのは、ひょっとしてコピペするだけで、人は俺様の考えを 読み取ってくれるだろう、あるいは読み取るべきだ、とでも思ってるのかなw
使いどころ間違えてるよ。
うむ
「コピペ君って馬鹿だな、まで読んだ。 」がコピペである件について
ガベコレされてるか確かめるのはファイナライザにWriteLineメソッドでも書けばよかったね
ドラッグ&ドロップについて質問です。 自コントロール内のオブジェクトを外にドラッグドロップするにはDoDragDropメソッドを 使うと思うんですが、例えば書庫内のファイルをエクスプローラにドロップする場合のように、 ドロップした時に何らかの処理(この場合一時ファイルとして解凍する)を行いたいときは どうすればよいのでしょうか?
まずヘルプでドラッグとか調べてみろ
D&Dを受け付けるコントロールのDragDropイベント
660 :
657 :2007/08/11(土) 18:09:51
>>658 え、どの辺に載ってます?
一応DoDragDropとかOnDragDropとかは調べたつもりなんですが。
>>659 ドロップ先が自分のアプリの管轄とは限らないんで。
相手がドロップを受け取る直前直後に何かしたいってこと?
662 :
657 :2007/08/11(土) 18:42:02
そうです。
>書庫内のファイルをエクスプローラにドロップする場合 こういうのってブラウズしてる時点でテンポラリフォルダに解凍してんじゃね? もしファイルをエクスプローラにドラッグするなら すくなくともパス等をDataObjectに入れとかなきゃいけないのでは そうでないと受ける側がeffectきめらんないでそ
665 :
657 :2007/08/11(土) 19:53:12
>>664 あ、まさにこれです。どうもありがとうございます。
できる
MDAC居るだろ
いらないよ Frameworkのみ
2000はMDACのインストールが必要 XP以降は不要
671 :
666 :2007/08/12(日) 02:52:19
672 :
666 :2007/08/12(日) 02:53:56
VisualStudio2005でRADを使いながらGUIプログラミングをしているのですが、 GUIのプログラムを長くしてなかったため(してたときも初心者でした)、 ソースコードがスパゲッティになってしまいます。 一応オブジェクト指向や、テストなど一通り学んだつもりだったので、 足りない物を探して、MVCかPACといわれるものではないかと思ったのですが、あってますか? また、それらを学ぶための良い本などありましたら、是非教えてください。お願いします。
コンポーネント単位で独立してさえいれば中はどうでもいいと思うよ
Formsはイベントドリブンだから完全なMVCじゃないよ。 WPFだと、XAMLだけでViewを定義することも可能だからMVCモデルも イベントドリブンも可能
スパゲッティと オブジェクト指向、MVC、PACとの関連性がわかんね それ以前のもんだいじゃね
完全なMVCなんてどうでもいい
MVCがどうのとか言うのは、まともなモノが作れるようになってからでいい。
WPFでStrutsの様なMVCモデルを実現するフレームワークは無いのかな? 自分で作るのはとてつもなく面倒なんだけど。
それって何がうれしいわけ?
681 :
673 :2007/08/12(日) 21:43:15
>>674 コンポーネント単位っていうのは、つまりForm単位ってことですか?
今はとりあえず単一のFormでプログラムをしてますんで、独立してると思います。
>>675 WPFですか、本格的にMVCを勉強するならやってみようと思います。
>>676-678 まだ経験がないため、うまく作れるよう手法を探してたのですが、
MVCなど以前の問題ということなら、どのように勉強すればいいですか?
682 :
デフォルトの名無しさん :2007/08/12(日) 21:43:27
欲しいものは自分で作る それがこの世の掟
そして車輪を再開発すると・・・
>>681 >コンポーネント単位
ユーザコントロールも積極的に使う
WPFでは推奨されないらしいけどw
とりあえず
>>673 はOOPがよくわかってないんだろうから、まずOOPの考え方を
理解するのが先決だと思うよ。
たぶん、クラスによる役割分担も考えず、VB的に全部の処理をFormのに書いてるんだろうけど、
OOPがほんのちょっと理解できればそんな馬鹿なことはやれって言われても
したくなくなるよ。
それはそもそもOOPがどうとか以前の問題だろう。
俺のFormは700行ある
Java のコードをC#に変換しようと思い、調べてみると
Java Language Conversion Assistant 3.0というのがVisutla Sudio 2005
に入っていて、JavaのコードをC#に変換できると書いてありました。
さっそく使ってみようとすると、メニューの「ファイル→開く」あたりに
それらしき機能が見あたりません。
(MSのサイトには、「ファイルメニュー→開く→変換」で実行する、とあります)
下のページでは、セットアップ中にJava Language Conversion Assistantを
入れるか選択できると書いてありますが、インストールはほぼ全自動で、
インストールする機能の選択はできませんでした。
このJava Language Conversion Assistantというのは、VS2005の
Express Editionでは利用できないのでしょうか?
http://msdn2.microsoft.com/ja-jp/vstudio/Aa718346.aspx >How to install the Java Language Conversion Assistant 3.0:
>For customers using Visual Studio 2005, the official release of the
>Java Language Conversion Assistant 3.0 can be selected for installation
> during the setup of Visual Studio 2005.
よろしくお願いします
それ以前に、対応する Java のバージョンは大丈夫かい? 無理だろうけど。
APIが違うのに変換できるのか、 J#と言う落ちじゃないよな?
>>690 もちろん、そういうオチ。バージョン見れば自明だけど。
>>681 >まだ経験がないため、うまく作れるよう手法を探してたのですが、
さしあたってCode Complete第2版〈上〉かな
基本的な技法が網羅されている
最初から、全部を読んだり、全てをやろうとする必要はなく、
スパゲティになる原因で心当たりのありそうなところを重点的にやるのが良と思われる
>>689 はい。自分が変換したいJavaのコードはJLCAで変換できるそうです。
>>690 ↑の英文サイトみてもらうとわかりますけど、JavaからC#に変換する
ツールですよ。対応する.net frameworkの機能に置き換えてくれます。
MicrosoftがC#に移行してもらうためにつくったツールなので
JavaでもJ#のコードでも大丈夫みたいです。
>>691 バージョン見れば自明とはどういう意味でしょうか?
Express Edition は厳密には Visual Studio ではなくて言語別の製品、Visual C# だしな。 乗ってなくても不思議はない。 J# は J2EE1.3 の独自実装ライブラリを含む、 言語というよりは .NET Framework の副次的なフレームワーク。 想像だけど、自分のコード分は C# に翻訳してくれて、使うライブラリは J# のなんだろうね。
>Express Edition は厳密には Visual Studio ではなくて言語別の製品 Visual Studioは言語だったんだ
別言語、じゃないぞ。VC#やらVBやらのそれぞれ言語別の製品、だぞ。
J#でクラスライブラリとしてビルドしてC#から呼び出すとか
>>694 >>699 ありがとうございます。
もう一度ISOファイルを落として再インストールしてみましたがやはり
Expressはインストール機能の選択不可でしたので、Java Language
Conversion Assistantは利用できなさそうです。
さらに、JLCAはVisual Studio 2008からはサポートされないそうです。
>>699 コード変換ができないとなると、J#でアセンブリを作るしかないですかね。
J#でdllへコンパイルすることはできました。
ただC#からそのアセンブリを使う方法がわからず、SDKを読んでいましたw
アセンブリを作ってC#からそれを利用する場合、
Java(J#)側のコードを大きく書き換える必要はないという理解で
あっていますでしょうか?
クラスのアクセスレベルはpublicになってる?
複数のIEnumerable<T>を連結する方法について、(1)と(2)に効率の違いはありますか? また、これよりもいい方法はないでしょうか? (1)List<T>をつくって追加していきそれを返す。 (2) public MultipleEnumerable<T> : IEnumerable<T> { List<IEnumerable<T>> List{get;set;} public IEnumerator<T> GetEnumeratot() { foreach(IEnumeratble<T> enu in this.List) foreach(T value in enu) yield return value; }
IEnumerable<T>を実装したラッパーを 自分が一番いいと思うように手で書けばいいんじゃね
スペルミスが多いな
ある文字列がローカル変数に入ってるんだけど、これをストリーム経由で呼び出せないかな? XmlTextReader で XML を処理するんだけど、その XML がファイルに入ってるんじゃなくて 変数に入ってる。一度ファイルに吐き出してから読みだすこともできると思うけど、直接 変数から読みだしたいなと思ったんだけど、こういうの出来る?
StringReader
質問。WebBrowserクラスのInvokeScriptで、数値や文字列が戻り値の場合は簡単に扱えるけど、 オブジェクトの場合はどうやって操作すればいいんだ? 例えば、JavaScriptで function hoge() { return new Array( 1 , 2 ,3 ,4 , 5 ); } って宣言していて、このほげが返す配列の中身にアクセスするにはどうすれば・・・。
709 :
デフォルトの名無しさん :2007/08/14(火) 20:25:59
>>708 この程度のことが分からない奴がUNIXを触っていたとは思えんが
なぜhogeなんですか?
どうでもいいだろそんな事
>>709 お前なんか勘違いしているぞ。
それともわざと書いてるのか?
712 :
708 :2007/08/14(火) 21:11:47
hogeの中身をJSONにした場合は取得できました function hoge() { return { name:"hoge",id:50 }; } VBですまそ。 Dim obj As Object = WebBrowser1.Document.InvokeScript("hoge") Dim name As String = obj.GetType().InvokeMember("name", Reflection.BindingFlags.GetProperty, Nothing, obj, Nothing).ToString() Dim id As Integer = CType(obj.GetType().InvokeMember("id", Reflection.BindingFlags.GetProperty, Nothing, obj, Nothing), Integer) 結果はnameがhoge,idが50 MSDNライブラリに「GetTypeしてInvokeMemberしろ!」書いてあったので、 とりあえずフラグをGetFieldにしたら例外を投げられてしまい、 GetPropertyに変更したら値を取得できました。 ただ、名前を特定できるメンバならともかく配列の場合はどうすれば・・・。
0 とか 1 とかのメンバ名でアクセスできるんじゃね
714 :
708 :2007/08/14(火) 21:29:05
.NET CF 2.0 上の c# ですが、XML で文字列を取得して、それを ラベルとかに貼り付けていますが、「〜」という文字が化けてしまいます。 デバッガで変数内の「〜」をみるとちゃんと入っていますが、PPC 上では文字が□になっています。 どうしてでしょうか?
フォント
>>715 「〜」はFULLWIDTH TILDEだったり、WAVE DASHだったりするから。
同じ文字を意図してるのに ベンダによってコードポイントが違う。
「あらかじめ文字列とメソッドがペアになっていて、“何か”に文字列を与えるとペアになったメソッドが呼ばれる」 抽象的すぎて申し訳ないのですが、この“何か”を実現する構文ってありませんか? 例えば文字列"hoge"とメソッドpiyo()がペアだったとき、 array["hoge"]; method("hoge"); などとすることで piyo(); と書いたときと同じ結果が得られる ということをやりたいのです。 最初はswitch-case文でやっていたのですが、さすがに冗長になりすぎてしまいました。 そこで、もっと優れた方法があるはずだと思ったしだいです。 よろしくお願いします。
なんでこんなに文字列好きって多いんだろうな Dictionary<string, MethodInvoker> でも使ってれば?
デリゲートでいいじゃん
あるTypeのdefault名値をobject型でいいんでとりたいんだが、いいほうほうある? MakeGenericMethodとか使ってゴリゴリやれば取れそうなんだけど、微妙に遅そう。
動的言語でも自作してるんかね。 普通はキーが string で値がデリゲートの Dictionary 使うか。
default名値ってナニ?
>>721 static object GetDefaultValueOf(Type type)
{
return type.IsValueType ? Activator.CreateInstance(type) : null;
}
725 :
721 :2007/08/16(木) 17:40:39
>>724 あーそれでいいんかな・・・
こんなんしといたけどそっちのほうが早そうだ。
static MethodInfo _defaultValueMI;
static Dictionary<Type, object> _typeToDefaultValueDic = new Dictionary<Type, object>();
static DBStorageUtil() {
_defaultValueMI= typeof(DBStorageUtil).GetMethod("GenericDefaultValue", BindingFlags.Static|BindingFlags.NonPublic);
}
static object GenericDefaultValue<TYPE>() {
return default(TYPE);
}
static public object DefaultValue(Type type) {
object value;
if (!_typeToDefaultValueDic.TryGetValue(type, out value)) {
value = _defaultValueMI.MakeGenericMethod(type).Invoke(null,null);
_typeToDefaultValueDic.Add(type, value);
}
return value;
}
static object GenericDefaultValue<TYPE>() { return default(TYPE); } だけとか static object GenericDefaultValue<TYPE>() where TYPE : new() { return new TYPE(); } だけではなんでだめなのか
ああTypeで指定したいからか、ちゃんちゃん
ほんと、文字列でのメタ操作とリフレクションの質問多いな。 業務用で多用するものかね?デバッグやりづらいと思うんだけど。
実際に直接的に扱うのは基盤部分だと思うけどね。 業務では知らないうちに知らないとこで使われてるくらいだろ。
>>728 業務じゃ使わないとおもう
最初に設計されているからね。
分けのわからん素人か、トリッキーなコードが好きな人しか使わないよ。
フレームワーク作る人なら多分使うよ
まあ大抵はクラスの文字列指定くらいですむ使い方が多いな。
すいません、C#でレポート機能を使ってみたいのですが、なぜか他のPCでバイナリを実行すると、下のエラーが出て 実行できません・… 別途何かファイルを用意しないといけないのでしょうか? System.IO.FileNotFoundException: ファイルまたはアセンブリ 'Microsoft.ReportViewer.WinForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。 ファイル名 'Microsoft.ReportViewer.WinForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' です。
「レポートと ReportViewer コントロールの配置」
735 :
デフォルトの名無しさん :2007/08/18(土) 21:31:20
くっそー悔しいからチラ裏みたいなことだけど書く ボタンをおすと、ファイルダイアログとかフォントダイアログが 開くある親ダイアログを作ってた。 いつのまにかどのダイアログボタンでOKをおしても、親のダイアログが 閉じてしまう。DialogResultはCancel。 なんかスレッドまわりで変なことしてないか小一時間悩んだあげく、 Designer.csみたらすべてのボタンに .DialogResult = System.Windows.Forms.DialogResult.Cancel; が勝手についてた。 たのむよデザイナorz
736 :
デフォルトの名無しさん :2007/08/18(土) 23:32:12
VC#のIDEが.NETでかかれていない理由はなんですか?
>>736 それはよくある質問
よくある回答
MSに聞け
企業秘密ですぅ
想定される用途が違うから。
C#コンパイラがC#でかかれていない理由はなんですか?
逆アセンブルされちゃうから
C#には自己記述能力がないのですか?
チューリング完全
C#やJavaはネイティブ対応してないから書かれていないだけ。
>>736 Visual C# 2005やVisual Basic 2005のプロジェクトプロパティを表示して
おもむろにそこをSpy++で見てみると……
というかプロジェクトプロパティが表示されるまでなまら時間がかかる理由は、
よせばいいのにWinForms使ったからというのがもっぱらの噂。
746 :
デフォルトの名無しさん :2007/08/19(日) 00:52:01
>>740 あなたバカですか?
その質問とおまえの質問が等価とでも?hw
>>745 あと、WinFormsのデザイン画面でデザイン中のウィンドウを描画してる部分は.NETで動いてるよ。
考えてみれば当たり前の話だけど。
他にはIDEのマクロが(.NETの)VBで書かれてるとか。
749 :
デフォルトの名無しさん :2007/08/19(日) 01:15:44
釣りと分かってて釣られてやんのw
>>740 例えばIntelliSenseサポートのためとかかな?
MSのC#コンパイラには、メモリ常駐するモードがあって、
IDEでコード書いているときに常に裏で動きながらIntelliSenseをサポートしている。
IntelliSenseをサポートするためには、
不完全な文の処理とかIDEとの通信とか余計な機能が必要になるので、
高速化のためにメモリ常駐までやるそうな。
コンパイラもC#で書いた方がMSとしては楽なんだろうが、
速度のためには開発コストが余計にかかっても良いと判断したんだろう。
ちなみにC# 3.0に付属するExpression Treeの実行時コンパイラは完全マネージド実装。
多分C#で書かれてる。
あとはMonoのC#コンパイラもC#で書かれてる。
ttp://anonsvn.mono-project.com/viewcvs/trunk/mcs/mcs/ 余談ついでにNemerleコンパイラをソースからビルドするにはNemerleコンパイラが必要。
ttp://nemerle.org/
コンパイラをその言語でつくったら コンパイラをコンパイルするときどうすんの? 別の言語であらかじめコンパイラをコンパイルしとくわけですか?
予め既にコンパイラが存在する別の言語でコンパイラを作成しておく。
.NETのクラスライブラリは大体C#で書かれてるんだっけ
>>753 SSCLIのsscli20\clr\src\bcl\以下のクラスもC#で書かれてるね。
System.Int32とかSystem.VoidとかもC#で書かれてる。
(プリミティブ型そのものじゃなくてboxingされた参照型状態のSystem.Int32の方)
ttp://research.microsoft.com/sscli/ 例えばSystem.Voidはこう定義されてる。
namespace System {
using System;
[Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public struct Void
{
}
}
755 :
754 :2007/08/19(日) 10:40:32
boxingされた参照型状態ってのは嘘か。 単に.NETの構造体としてのInt32を定義してるだけだな。 [Serializable, System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)] [System.Runtime.InteropServices.ComVisible(true)] public struct Int32 : IComparable, IFormattable, IConvertible , IComparable<Int32>, IEquatable<Int32> { internal int m_value; public const int MaxValue = 0x7fffffff; public const int MinValue = unchecked((int)0x80000000);
既出で初歩な質問かもしれませんが、 たとえば、テキストオブジェクトが100個あって、それぞれ txt_00〜txt_99 まで連番の名前が付いている場合、あるボタンがクリック されたときに、それぞれの値のチェックをして、その結果で Visibleを制御したいようなとき、100回も同じような 処理をするのは無駄なので For で回してオブジェクト を操作したいのですが、どのようにすれば、idの一部だけ 異なるオブジェクトを、オブジェクトとして操作できるように 取得できますか?
つ【List】
>>756 こういうことでいいのかな?
panel1 に TextBox が100個あるとして、TextBoxの値が"visible"の時だけ表示させるコード
for (int i = 0; i < 100; i++)
{
TextBox tb = (TextBox)panel1.Controls["txt_" + i.ToString("00")];
if (tb == null) continue;
tb.Visible = tb.Text == "visible";
}
TextBox100個デザイナで並べるやつがいたら色んな意味で凄いな
さすがにコードで配置するでしょ でも100個ぐらいならデザイナでもコピペでいけるが プロパティ弄るのがきついな
範囲選択でいいよ。
そもそもWinFormでコントロール100個並べたら表示が重くてやってられなさそうだ
Formなんであそこまで遅くなるの? 自分で作ったライブラリだと100並べようが1000個並べようが速度ほとんど変わらないのに。
764 :
756 :2007/08/19(日) 16:48:56
>>758 そんな感じのことがやりたいです。
(書いた後に思いついたのですが、Javascriptでいう、getElementsById です)
教えていただいた方法でやってみたのですが、Controls[int]らしく、文字列で
指定できないと怒られてしまいました。
環境を書き忘れてましたが、ASP.NET 2.0 上で開発しています。
Windows.Form と Web.UI では違うんでしょうか?
>>759 今回は例えで100と書きましたが、以前VBScript時代に200表示したことも
あります。
(設定画面でそうしてくれと言われたので。ハイスペックを要求するページでした)
中に自動でテキストボックスを並べるコントロールを作るべき
>>764 >環境を書き忘れてましたが、ASP.NET 2.0 上で開発しています。
>Windows.Form と Web.UI では違うんでしょうか?
全然違うのでその書き忘れは正直ヒドイ。
いまどきのブラウザはテキストボックスだろうがボタンだろうが自前描画しているので
数を増やしたからといって表示がそこまで遅くなることはないし。
騙された
>>762 や
>>763 に謝れw
System.Web.UIならFindControlでええんやないの
768 :
756 :2007/08/19(日) 18:27:27
>>766 Windows.Formではコーディングしたことがないので、それほど違うとは思って
いませんでした。(といっても.NET自体ほとんど使ったことがないですが)
申し訳ないです。
>>767 FindControlでいけました。ありがとうございます。
769 :
デフォルトの名無しさん :2007/08/19(日) 20:11:39
private A a; public A Value { get { return a; } set { a = value; } } これを public A Value; にするべきでないのはなぜ?
マイクロソフト様がそのようにしてはならないと仰っているから。
カプセル化について調べつつネットワークの海を漂ってください
クラスとかメソッドはpublicにして良いのに なんで変数だけプロパティ経由じゃないとダメなのか謎
クラスやメソッドだって必要の無いものはなるべく厳しいアクセスにすべきだろ
値・データを保持するだけのクラスならpublicフィールドにする事は有る
775 :
デフォルトの名無しさん :2007/08/19(日) 20:39:16
>>772 アクセッサの事かな?
内容を直接見られないようにするのと
値が変更された際の処理の記述が簡単になるからでよいのかしら…
>>774 いいえ。どうしてもフィールドをpublicにしたい場合は、構造体をお使いください。
>>776 構造体も使うよ
コピーじゃなく参照で扱いたい時はクラスにする
>>776 おかしなことを言うな。
真似する馬鹿がでるだろ。
とりあえず適当に作るときは全部public。 そのうち、暇なときとか他の人に見せるときにいそいそとプロパティ化している。
理由はいろいろあるが、フィールドがインターフェイスに出来ない、 継承してoverrideできないという理由が結構大きい。 リモート呼び出しがインターフェイス限定といってみるとわかるかなぁ。
782 :
デフォルトの名無しさん :2007/08/19(日) 21:21:10
>>772 そもそもダメってことはないんだけどね。
publicでフィールド公開しても別にいいんだよ。
それで本当に問題がないと確証できるのならね。現在も将来も。
>>780 自分は他人に見せないものでも初めからプロパティで書くなぁ
半年後やら1年後やらにソースを見るかもしれない自分のために
>>783 VSつぢおのIDEがもうちょっとつかいやすければ、たとえば複数のフィールドに対して、まとめてチェックボックスとかでget,set分けたプロパティの生成ができたりするならやるんだけどね・・・
785 :
デフォルトの名無しさん :2007/08/19(日) 21:33:19
すんまそん、教えてください。 オンライン上のjpegファイルをWindowsフォームで表示したいのですが、 これって、一度ダウンロードしてローカルにファイル化した後に Streamで開いて読み込みしなきゃダメでしょうか? ファイル化しないでそのままメモリに貯めて表示ってできないでしょうか?
HttpWebResponse.GetResponseStream
788 :
デフォルトの名無しさん :2007/08/19(日) 21:48:04
>>786 自分の用途ではConnectStreamでよかったっぽいです。
ありがとうございました。
>>781 正直リモート呼び出しでプロパティアクセスはどうかと。
まあリモートといってもいろいろなわけではあるけども。
790 :
デフォルトの名無しさん :2007/08/19(日) 22:52:28
Magic Docking フリーなら許せたが、金とってあの程度か・・・
ここはC#のスレです。
C#, C♯, C# 音楽スレかも
C minor
794 :
デフォルトの名無しさん :2007/08/20(月) 02:24:29
VC#で書いたアプリってVB6でかかれたものより遅いって本当? 昔は速度や柔軟性を求めるならVC++ 動けば良いハリボテならVBなんて言われてたけど VC#はなんと言われるのかな?
#♯ ナンバーとシャープって微妙に違うんだな
見た目はナンバー 読みはシャープ その名はC#
むかしから#includeは「シャープインクルード」って読んでたし違和感は無いかな
このスレタイ考えた奴すげーなw ちゃんと検索に引っかかりやすいようになってるw
C#は入門にはもってこいですか?
Formsの表示が遅いのは事実。 なにせ、コントロールすべてそれぞれが描画制御を行っているからな。 コントロールの数が多くなればなるほど、あほみたいに遅くなる。
>>800 いいんじゃね
簡単に環境が整えられるし
すぐに目に見えるものが作れて挫折しにくそうだし
VB.NETやJavaもすぐ使えるようになるし
そうだね
804 :
デフォルトの名無しさん :2007/08/20(月) 23:11:11
あるクラスAがあり、Aにある属性aを追加したい そのとき、 ・Aから派生させてクラスAAを作成し、そのクラスにaを追加する ・クラスBを作成しそのBの中にAのインスタンスを保持させ、さらにaを追加する どちらのほうがいいのでしょうか?
804はどういう回答を望んでいるんだろうか ケースバイケースって言って欲しいのかなw
属性aというのはプロパティのことでいいの? C#では属性っていうと具体的に別の概念を指すから注意 回答しようがないからどうでもいいところに突っ込んでみたw
Aに追加したいのなら1番目じゃないの? 2番目じゃAに追加したとはいえない気がする。
>>804 class AA : A {
private object a = new object();
}
class B{
private A instance = new A();
private object a = new object();
}
このどっちが良いかってことだよね?
>>805 が言うとおりケースバイケースだけど、
一般的に、集約で片付けれるものは集約で。
が原則〜みたいなことを本で読んだような。
しかし、aがAに密接に関連する情報ならば、
下の構造でやるのは嫌かな〜って感じ。
インターフェースもわすれないでくださいね。
810 :
デフォルトの名無しさん :2007/08/21(火) 00:17:46
MDIでちょっとしたアプリを作成中です。 親ウィンドウのActivateMdiChildプロパティを 子ウィンドウの型にキャストしようとするとビルドエラー発生 ((FrmMyChildWindow)ActivateMdiChild).hoge();
あたりまえ
型が違うのにエラーは発生しなければおかしいわな。 奇抜なコードを書こうと考えないほうが身のためだぞ。 人に迷惑かけるだけでなく、何時までたってもきれいなプログラミングができないから。
というか何がしたかったんだろうか
public Form ActiveMdiChild { get; } というか、定義よく見ろw
ActivateMdiChildプロパティのForm型をFrmMyChildWindowにキャストしてhoge()を呼びたいと 考えたんじゃないか?
>>804 AAなりBが、「Aとして振舞いたいか?」で決める。
振舞いたいなら上、そうじゃないなら下
EffectiveC++みたいなC#の本があれば
そういうことについての指針みたいなのが書いてあると思うけど。
GUIのコンポーネントに機能を加えて、既存のコンポーネントを使いやすくしたい
なんてときは上
ファイルを開いて処理して必要なデータを読み込んで構造体に設定する
なんてときは下(これは無意識にやってるとは思うけど)
Javaみたいに例外を必ずCatchさせるなり Throwsつけさせるなりするようなコンパイルオプションとかないの?
Java設計の一番の失敗と言ってもいいくらい、検査済み例外は糞 そういうわけでC#にはそんなもの実装されてない。
どれくらい糞かなんてどうでもいいんだけど なぜ糞かが知りたい
ざっと読んだ あとでまた読んで咀嚼する サンクス
ふつうにFormを表示して、左上隅を左上と右下に縮めたり広げたりすると縮めたときに一瞬縮める前の大きさで描画されてから縮めた後のあるべき大きさになりますよね? これを防ぐ方法ってあるんでしょうか? それらしいメッセージ、 WM_SIZE, WM_WINDOWPOSCHANGING, WM_WINDOWPOSCHANGED, WM_EXITSIZEMOVE などみてみたんですが期待した動きになりません・・・(´・ω・`)
Vista買え
VC#で、あるプロジェクトProjectXを作成中、大幅な変更をしたいが 元に戻すため別プロジェクトとして保存ってできないの? わざわざVC#閉じて、フォルダごとコピペしてんだけど面倒
827 :
デフォルトの名無しさん :2007/08/22(水) 11:07:44
TCPで通信するのにNetworkStreamを使っているのですが サーバ側のRead処理よりも速い速度でクライアント側でWriteされた場合に クライアント側で AAAAAAA BBBBBBB CCCCCCC と3回に分けてWriteされたのに サーバ側でReadするタイミングが遅いために 1回のReadで AAAAAAABBBBBBBCCCCCCC と全部取れてしまい3回のWriteがあった事が判断できません (1つのデータとしてしまう) こういう場合に、ちゃんと3回のWriteがあって AAAAAAA BBBBBBB CCCCCCC と分けて受信する方法は無いのでしょうか?
固定長で通信しているのか?
829 :
デフォルトの名無しさん :2007/08/22(水) 11:44:03
TCPなんだからプロトコル作ってやりとりするしかないだろ
831 :
デフォルトの名無しさん :2007/08/22(水) 11:59:24
>>830 そうですよね・・・
何らかのルール決めないとダメですよね
有難うございました。
AsyncOperationManagerやSynchronizationContextについて詳しいサイトか本か、 ご存知ないでしょうか? MSDNライブラリの記述だけでは、どうにも使いこなせるようにはならない気が・・・。 なんか、サンプルとか沢山あったりしないですかねぇ。
>>833 そうですよね、普通、これで十分な情報なのですよね、きっと。
スレッドと非同期デリゲートについて始めから勉強しなおします。
ありがとうございました。
まあ、十分かどうかは人によるけど、 この手のは個人のホームページのネタになりにくいから、 GUIとかに比べて情報を探しにくいのは確か。
通信処理はWCFがでるから、多少はわかりやすくなると思うよ。
フォームに直接絵を描くのと ピクチャーボックスを貼ってそこに描くのとでは速さに違いとかあるですか?
Formはコントロールそれぞれが描画処理行うから、フォームに直接絵を描くほうが速い。
>>834 ヘルパーを使わない場合はどうするかの例があれば何をやってるかがわかりやすいのだけどね。
>>837 貼ったピクチャーボックスに描くのはあまり意味がないだろ
ピクチャーボックスを継承して描けば、独立してどこにでも貼り付けられて便利
>>827 の
>サーバ側でReadするタイミングが遅いために
ってのは誤解だよね?
誤解だねぇ タイミングとは関係ない
本当?
EventHandler<TEventArgs>を使うなら EventHandler(非ジェネリック)も使わずにEventHandler<EventArgs>を使うべき?
別にどっちでもいいよ。一緒だし
>>844 writeで送信したデータとreadで読み込んだデータが1対1で対応する
っていう書き込みに見えたので、そうだっけ?と。
TCPはレコード境界っていうのを保存しないって思ってたもので。
違ってたらごめん。
いやそもそも日本語w
827はRead/Writeが対になると思ってたようだな
Read/Writeだけで通信制御できるなら、米国でソケット通信専用のプログラマーがいなくなるよ。
FormのBorderStyleにNoneを設定してSize(0,0)をSizeにセットした場合に、Sizeが0,0にならずに2,2になってしまうんだが、 こういう仕様? 多分、枠がらみなんだろうけど、BorderStyle.Noneだし・・・
>>851 理由は大体想像つくじゃん。
フォームのサイズはクライアントサイズにもろもろ(Paddingとかタイトルバーとか)
足したものとして実装されてるんでしょ。
っていうかどーでもよくないかw
>>852 いや、動かない人にとっちゃどーでもよくないだろ。
なんのこっちゃw
WebBrowserにフォーカスが当たってる間メニューのショートカットキーがつかえないのは何とかならないのか
>>855 WebBrowserを継承したクラスを作って
PreProcessMessageをオーバーライドすればキーダウンを拾えるから
そっから頑張ってくれ。
public override bool PreProcessMessage(ref Message msg)
{
const int WM_KEYDOWN = 0x100;
if (msg.Msg == WM_KEYDOWN)
{
}
return base.PreProcessMessage(ref msg);
}
857 :
デフォルトの名無しさん :2007/08/24(金) 15:36:14
1)新規フォルダを Directory.CreateDirectory("tmpdir") する 2)そのフォルダの中に大量のファイルを作成したり別の場所からコピーしたり中身を書き換えたりする(外部ツール等も使用) 3)終了後に Directory.Delete("tmpdir",true) する …すると、3)で、稀に例外が発生します。 誰かがロックをかけている(フォルダを使用中)のためフォルダを削除できないそうです。 例外を catch して何度かリトライすると(数秒〜十数秒)削除できます。 おそらく、2)で誰かが悪さをしている(裏でプロセスが動いている)ようなのですが、 どのプロセスがフォルダをロックしているか調べる方法はありますか?
ディレクトリをクローズ
アンチウィルスとかじゃね? 一般に誰がロックしてるのか取るのは無理 タスクマネージャでIO読み取り/書き込みでも眺めるとか
Linuxならfuser、XP Professionalならopenfilesっていうコマンドがあるみたいだけど フォルダもわかるんだろうか。
アンチウィルスがロックしたりするのか?
C#ってヘッダファイルないから クラス内にすべて書いてしまうと、数千行のクラスだと見づらくなるりますよね みなさんどうしています?
>>862 ヘッダファイル関係ない
君が知ろうとしないだけ
知ろうとしてるじゃないかw 折りたたみとかパーシャルクラスとか そもそもあんまり馬鹿でかくなるようならクラス分けるとか
そのための #region そのための partial
さすがに数千行は引くな でもXMLドキュメントだけ非表示には時々したくなる まともに書くと長くなるからなー
おまえらどんだけ小規模なんだよ もしかして、サンプルコードを動かして満足して あかも分かったような顔でWebで講座なんて公開してる連中なのかしらん?w
クラスは増えるけどメソッドは増えないもん
今、手元にあるソースちらっと見てみたら、 そうとう詰め込んだ感あるクラスでも650行だな。 まあでも、WSDL から自動生成したクラスとかは1ファイルで1万行弱あったけど。
クラスが数千行行く奴の特徴。 機能をメソッドに分けない。 オブジェクト指向を理解していない。
フリーソフト公開しているけど 大規模なものだと数千行のcsファイルがいくつもあるな。 まぁ、右上のドロップダウンからメソッドを探せるので特に困ったりはしないよ。
XMLドキュメントは便利なんだが、継承クラスに似たようなコメント書くのメンドイです。
親のコメントの継承がしたいだけど無理かね?皆さんはコピペでやってる?
あと、クイックインフォでsummaryタグ以外表示されないのももったいなくね?
結局コード定義ビューア使うハメになる。
>>862 ヘッダファイルはみづらいよ。せっかくクラスダイアグラムや、クラスビューなんかあるんだから、
それを使うべきでは?遅いのが難点だけど。
>>871 まさかとは思うが、イベントハンドラに全部書くタイプ?
ヘッダファイルとか行ってる奴は、インタフェースを知らないのか?
あ、あともう一個質問。シンボル参照の検索あるじゃないですか?(Find All Reference) これも相当便利なんだけど、継承元のシンボルまで検索してくれるのがタマにキズ。 例えば、classAを継承したToString()のみを検索したいのに、 シンボル検索したらすべてのobject.ToString()が検索されてしまう。 検索範囲を限定することってできないのでしょうか?
インターフェイスをヘッダと同じに考えてるアフォがいるみたいだねw
>>873 > 親のコメントの継承がしたいだけど無理かね?皆さんはコピペでやってる?
include 要素ってのもあるが……
>>875 何で唐突にインターフェイスが出てくるんだw
巨大クラスをヘッダファイルに分割する、って発想はそんなに変じゃないと思う。
「ヘッダファイル」という言葉の響きに引きずられると変に聞こえるが、
だったらアセンブラの「インクルードファイル」だと思えばいい。
>>874 汎用性のないちょっとした処理ならイベントハンドラに直接記述するよ。
無意味にメソッド増やすだけになるからね。
デザイナ使わずにコントロール配置しているから
それだけで千行ぐらいあるな。
>デザイナ使わずにコントロール配置しているから それはなぜ?
#regionはものすごく便利な機構だとは思うんだが、惜しむらくは インデントがきかないから入れ子をわかりやすく表現できないのが難点だよなあ
数千行で多いって言っている人って 直接エディタをスクロールさせながら目で探したり、 キーワードで検索して見つけたりしているの? ドロップダウンリストでメソッドへ飛んだり、 コンテキストメニューの定義へ移動・参照の検索は利用していないの?
>>881 レイアウトが複雑になってくると細かい設定が大変じゃない?
フォーム単位じゃなくてパネル単位でデザインできたらまだマシなんだが
1クラスに数千行書くようでは、保守担当者がかわいそう。 ちゃんと設計してるのか?
>>883 またアホなこと言うなあ。
そんなの当然のように利用するだろw
そんな機能利用したって行数の多さに起因する「見通しの悪さ」の改善には
たいして寄与しないぞ
まぁウェブサイトのレイアウトもアプリ使わずに HTMLとCSSをエディタで弄って作るような人間だから偏屈なのかもしれないw
>>886 例えばちょっと高機能なユーザーコントロール書いてみ?
1000行2000行なんてすぐだよ。
もちろんインナークラスや外のクラスに機能を分割するなんて普通にやってもね。
>>886 フリーで公開しているソフトってはじめから言ってるでしょw
俺しか見ないよw
Blob アンチパターンってやつか
みんなカリカリはよくない。牛乳のもー。
>>878 ありがとう。格好いいよ!愛してる!LOVE!
>>882 ああわかる。階層管理はしたい。ツリービューアをつけてほしいですね。
あと
>>876 は解決策ないっすか?皆さんも結構悩みの種になるんじゃないかと思うのだが。
grepとかで代用してんのかな?
ユーザコントロールなら、特にクラス分けるだろう。 外部から受けるデータをインターフェイスにするべきだし、 共通機能(イベント等)は親クラスを作って継承させる。 基本APIを見ればわかる思うが。
>>892 コントロールを動的に配置する場合の位置・サイズとか。
ガッチガチにレイアウトするなら別だけど。
TooBar とかちょい古いコントロールってデザイナで貼り付けること出来ますか?
今書いてるアプリの最大のクラスは12500行ヽ(´▽`)ノ
そのようなコントロールは存在しません
コメント(ドキュメント)やスペース空けるための改行を含めるか含めないかで
行数は2・3割変化しそうだな。
>>897 おまいがチャンピオンだw
>>898 l が抜けてました。
ToolBarね。
行数増やすより設計でプログラム効率良くすること考えような。
で、ちゃんとしたアプリとかつくってんの?
おれはFormsは捨てました。 WPFとSilverLightに期待。
>857 Vistaだったらconimeがそのフォルダをブロックしてたりとか。 とりあえずProcessExprolereとか使えば?
>>901 ママのミルクでも飲んどけや。 …すみません嘘ですごめんなさいパシってきます。
>>878 改めてありがとうございました。ただ、直接csファイルをincludeできないようで使いづらいみたいです。
今後の発展に期待かな。もう変態的言語仕様の増強はいいからIDEの増強きぼんぬ。
webのサンプル動かして喜んでる奴等からみると 数千行ソースなんて信じられないんだろなw
行数で喜んでいるうちは素人。 効率よく設計して短いソースに仕上げることが出来たら本当のプロフェッショナル。
さっきから効率効率って頭の悪い奴がいるね 効率が重要なのは自明のこと。 こういう奴ってzipなんかで同じバイナリの圧縮を繰りかえせば 無限大の情報も1バイトになるとか思ってそうw
んでも、所詮マ自体が使い捨ての駒。技術なんて極めてプロっても無意味よん。 人事や総務が最強なのです。
APIを使えば短くなるのに、長々とソースにロジック書く奴が多いからな。
>>908 llinuxのソースでも読んでみなよ
まぁ、読めないだろうけどw
ネイティブとオブジェクト指向のソースコードを同一に考えている池沼がいるスレはここですか?
ネイティブとオブジェクト指向って対立するものなのかよw
ここフラットじゃないよ?
>>882 スペースとか入れとけばいいんじゃね。出来なかったっけ?
#region main
#region sub
>>916 確認してみた。
半角スペースだと縮めたときに省略されちゃうけど全角スペースだと大丈夫だったよ。
なんかキモイやつが沸いてるな
regionは名称で階層表現すればいいと思うよ。 #region class #region Field #region method #region staticmethod #region dinamicmethod といった感じで入れ子すれば問題ない。
dinamic ねえ
スペルミスはご愛嬌w
dは動的"douteki"のd sは静的"seiteki"のs
dは童貞のd sはセックスのs
二番煎じほどつまらんものはないな
.NET のWINDOWSアプリを業務で開発してるしてる人いますか? ソースが簡単に見えてしまう欠点はどうされています? 私の部署はまだMFCが現役です。 .NETでの開発を示唆すると、必ず ・速度が遅い。 ・ソースが読めてしまう。 ・大量メモリを消費 等々、ディメリットを挙げだすと枚挙に暇が無い感が多い .NET
うちのレベルのプログラムのコードなんざわざわざ覗く奴はいねえよ、 の一言で一同納得するだろw 速度とメモリ消費に関してはたぶん誤解。 ただWinフォームのロードは確かに遅い。
>>927 誤解?
パソコンを使う人がすべて君みたなヲタクではないんですよ
.NETについて延々語り、遅いわけではない、メモリ食うわけではない
なんて説明は正に愚の骨頂
そう感じさせることに問題があるといっているのですよ
なら使わなければいいよ
バリバリ業務開発してる、というかほぼ.NETオンリー。 メモリは誤解だが、速度はマジ遅いわ。 WinForms死ねや。 よく客が使ってくれてて文句も言ってこないが。
>>930 MFCで開発すより、.NETで開発することのメリットはなんですか?
と問われたらどうします?
そんな5年遅れのこと聞く奴は、どうせ何使おうとまともな「開発」なんて できるはずがないと思う。
まともかどうかは別として一応金もらってやってる おまえらみたく趣味=プログラミングみたいなヲタクの遊びではないよw
下手なプロより趣味グラマの学生のがずっとコード書けることが多いんだがな
その程度の「使ってみればわかる」ことを自分で調べもせずに 職業人を気取るつもりかよw バイトの学生クンいかの職業倫理だな
三流請負システム屋なんてそんなもんだよ 昔COBOLやVBでやってたような下らない請負業務システムを 今はドトネトでやってんだろ 何の自慢にもなりゃしねえ
プログラマやってる奴ってのは案外パソヲタ少ないと思う。 多いのは他分野の落ちこぼれのデモシカ組だと思う。 っていうか、俺がそうだけどw
>>926 この指摘内容だと、C/C++からJavaへの移行時に言われていた話とまったく
同じなので、Javaをキーワードにぐぐると参考になるかも。
>>928 と同じようなことをJavaも言われ続けたけど、現在のシェアを見れば
Javaが圧倒的だし。
まあ、デスクトップサイドではサーバサイドとかなり条件違うってこともあるけど、
WinFormsとか。これさえ乗り切れば...
Javaはクライアントではダメダメでしょ サーバーサイドかiアプリ ドトネトはそーすっと、Winでしか動かないのが問題になってくる Monoとかも一応あっけどな OS依存のVM言語なんてよく考えたらナンセンス極まりない
クライアントも事例が少ないってだけで、Eclipseみたいな成功例もある。 もっともEclipseもUIのコアがネイティブでかなり頑張ってるのは確かだけど。
お前Mono使ったことないだろ。 一応の言葉で一蹴するとは。
>>941 ごめん使ったことねぇ
Mono使うぐらいなら素直にJavaを選ぶわ
お前さん、Monoでシステム提案できるか?
>926 ならアセンブラで書けばいいんじゃね?
Winで動けば十分だよな
なんでMicrosoft.Windows.FormsじゃなくてSystem.Windows.Formsなんだろう Systemに入れるならWindowsを外してSystem.Formsとかにすればよかったのに
商標登録されたWindowsではなく システム側で動く窓のようなWindow形状のクラス群の意味で"Windows"なんだろうよ。
言語仕様はJavaより全然いいしクラスライブラリの質はMFCみたいな糞とは
大違いだが
まぁ色々問題はあらぁな
>>944 んなことはない
携帯、組込みといったジャンルに広がらなくなるし
鯖でも大分限定されてくる
C#は言語の素性的にはなかなか素晴らしいのに勿体無い
論理的にはプラットフォームネイティブではないUIの土台(つまりForm)も 存在しうるからでしょ。 現にwebフォームがあるじゃん
SDKドキュメントのSystem.Windows.Formsの1行目にこう書いてある System.Windows.Forms 名前空間には、Microsoft Windows オペレーティング システムで利用できる、豊富なユーザー インターフェイス機能を十分に活用する Windows ベースのアプリケーションを作成するためのクラスが含まれています。 まあ要するにMSがDQNっつーことでいいですか
どこが「要するに」なわけ?w
コピペ君って馬鹿だな、まで読んだ。
ただの雑談スレになってるなw
>>950 次スレよろ
その文もコピペなんだよな
>>951 .NETランタイム標準のSystem名前空間を平然とそういうモノで汚してるあたりがアホ
ECMA標準なんてただのポーズってことだよ
WPFをSystem.Windows名前空間に持ってきてるのはもっと意味わからん System.Windows.PresentationFoundationとかMicrosoft.Wpfとかでよかったんじゃないのか
最近C#の勉強を始めたのですが SystemやSystem.IO等の名前空間のコード?って見る事できますか? どんな感じに宣言してるか見たいのですが
reflector
宣言見るだけなら右クリック→定義へ移動で出てくるけどな
sscli という CLI の参考実装ソースもある
962 :
958 :2007/08/25(土) 15:30:45
お陰様で見る事ができました。ありがとうございますm(_ _)m 思ったより複雑で、見てはいけない物を見てしまったような気分です なんとか理解できるように頑張りますw
本当に見てはいけないものだったりする
なんか楽しかったみたいだな、乗り遅れたか
一目で見渡せないサイズのソースファイルは保守性を著しく損なう 二百行超えたら分割するべき パーシャルクラスにするかクラスを分けるか、まあなんでもいい。 一目で見渡せるかが問題だ
sscliは非常に参考になるぞ。
Cygwinコンパイラ使ってたんだけど、time.hのclock_tの挙動がおかしい。 MinGWにコンパイラ移したところ正常に表示されるようになった。 どうやらライブラリーのtime.hがおかしかったようだ。 こんなアホな理由で3日間悩んだ俺って・・・
ゴバーク?
WinForms遅いっていわれてるけど、WPFはどうなの?論外?
あのUIを見て速いとおもうか・・・
いやまあ、重そうな感じはするけど。 DirectXのおかげでビデオカードのパワー借りれるっていうし、 やりようによってはWinFormsよりいいんじゃないかと淡く期待してる。
とりあえず、ボタンを100*100並べても全然ちらつかないよ。描画方式変わったから。 Vista以外は初回起動が絶望的だけど(二回目以降も結構)
WPFはアニメーション系のエフェクトをやらせると2D3D問わず重い。普通の表示だと軽快。 ただWinFormをリプレースするにはVB2008BetaのWPFエディタは工夫の余地あり。 WinFormと違ってかなり細かいところまで作りこんでもスピードがほとんど落ちないのがいい。 いまのところ、作りこみたい人向きだと思う。
それならMFCでも同じ
じぇんじぇん違うわ
コントロールそれぞれにハンドルがないんだよね確か。 まあ、速度はともかくとして、製作は楽でしょうか? 描写速度とか美しいビジュアルよりも、開発時間が短いことのほうが重要だったりする。 WinFormsよりかかかるんなら、悩みません?
それは慣れの問題
nativeなwindowではないってことけ? 発想はJavaのlightweight componentと同じで、描画をD3Dでやっちょるって 理解でいい? そこまでやって遅いってのも何か空しいものがあるな
今のところはXAMLを直接エディットして作ってゆく感じで、 GUIでらくらく開発というのからは程遠い職人の世界。 表示はすぐに反映されるからいいけど、XAMLPADで作るのと違いが感じられん。 VS2008のIDEの作成チームは苦労してそう。 2007が2008になったのは正直この部分が遅れてるからだと思われる。
出来上がったアプリの操作性が WinForms のほうが Windows アプリっぽくて使いやすい WPF だと Web アプリみたいな操作性でなんかいまいち
いろんなUI操作系ツールが使えなくなるぜ
あたらしく、WPF対応ツールを買いなおすんだ。
UI操作系ツールてどんなのがある?
マウス移動とか自動入力とかラベルコピーとかいろいろ
Spy++も使えなくなるのか
DirectXのラッパーだからな、今までのツールが使えなくなることは当然考えられる。
VC#EEってデバック中でやたらおちるな
落ちたこと無いけど
2008bata2はやたらと落ちるけどね。
やたら落ちるよね。 というかデバッグやろうとすると、Don'tなんちゃら〜とかいう警告がでてきて その後、バイナリに上書き(ビルド)できなくなる。
XPだと日本語表示がすごく汚くなるなあ>WPF しかもシステムの設定でアンチエイリアス切っても無視するという・・・
>>990 一回もないけど?
OS再インストール推奨。
WPFってweb系との融合が目的なのでしょうか?
>>993 プレゼンテーション層を独立してプログラミングするための技術。
なるほど 日曜PGだから、プレゼンテーション層を独立してプログラミングしたことないや。 したことある人は挙手!
俺のプレゼンテーション層はprintf()だぜえ
Form1.Designer.csにコントロールの座標やら何やらがごちゃごちゃ書かれてるのは変だから 分離しようってだけの自然な流れ
>Form1.Designer.csにコントロールの座標やら何やらがごちゃごちゃ書かれてるのは変だから え? 本気で言ってるのかな
本気ですとも 反論があればどうぞ
キモイ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。