1 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 11:07:29 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part25 pc11.2ch.net/test/read.cgi/tech/1204104280/
2 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 11:08:00 ] 参考サイト。まずはここで検索してから。(次のスレ立てる人は追加していただけるとありがたいです) google.com/ homepage3.nifty.com/midori_no_bike/CS/ www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html dobon.net/vb/dotnet/ jeanne.wankuma.com/tips/ www.labasp.net/CsharpNote/
3 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 11:08:46 ] >>950 を踏んだ人は新スレを立てて下さい。 >>950 が無理な場合、話し合って新スレ立てる人を決めて下さい。 誰も建てないので立てました。
4 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 11:09:40 ] C#, C♯, C#相談室 Part45 pc11.2ch.net/test/read.cgi/tech/1200911737/ C♯, C#相談室 Part34 pc11.2ch.net/test/read.cgi/tech/1162467959/ 【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】 pc11.2ch.net/test/read.cgi/tech/1162950198/ Windows Live プログラミング pc11.2ch.net/test/read.cgi/tech/1188112572/ 初心者のためのプログラミング言語ガイド Part7 pc11.2ch.net/test/read.cgi/tech/1200807067/
5 名前:デフォルトの名無しさん [2008/03/23(日) 11:13:44 ] このスレの住人なら知っていますね、あの糞開発ツールのことを ・自分のプログラムのバグなのかコンパイラのバグなのかわからない ・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している ・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている ・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる 糞だけど、政治的な理由で無理やり使わされているんですよね。 もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。 ・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。 ・糞開発ツールを使わせる上司の下では働けません、と上司の上司に直訴しましょう。 ・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。 バグレポートなどしてはいけません。改善要求などもってのほかです。 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。 ・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」 なんて話が出たら力強く机を叩き、会議室を出ましょう。 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。 糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
6 名前:デフォルトの名無しさん [2008/03/23(日) 11:43:10 ] 俺はあの開発ツール使ったら背が5cm伸びて 彼女もできました。宝くじにも当たってびっくり 今更ながらにあのツールのすごいパワーを感じてます
7 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 11:57:18 ] >>5 eclipse にだって良い所は沢山あるんだぞ、そんなに悪く言うな
8 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 11:57:29 ] 俺は糞開発ツール使ったら欝病になって 離婚しました。会社も解雇されてびっくり 今更ながらに糞開発ツールのすごいネガティブパワーを感じてます
9 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 12:05:24 ] なんだこの流れw
10 名前:デフォルトの名無しさん [2008/03/23(日) 12:10:26 ] >>3 乙です 次のスレ建てから、それは 1 に書いておきませんか? >>950 を踏んだ人は新スレを立てて下さい。 >>950 が無理な場合、話し合って新スレ立てる人を決めて下さい。 それと、スレの流れは速い訳では無いので 980 でもいいかと。
11 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:40:11 ] C# 4.0の情報ってない?
12 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:43:56 ] >>11 blogs.msdn.com/charlie/archive/tags/Future+Focus/default.aspx
13 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:57:21 ] 仕様追加じゃなくてVBみたいに仕様変更されるようになることはないよね?
14 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:02:27 ] 早く言語仕様をくれ 妄想してハァハァしたい
15 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:03:37 ] 消極的なDLRサポートじゃね
16 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:06:20 ] ヘジがそんなつまらないことをするはずがない
17 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:08:12 ] \ │ / / ̄\ ─( ゚ ∀ ゚ )─ \_/ / │ \ ○○○ ○○○ ○,,・ω・○ ○・ω・,,○ ○○○ ○○○ o o〜(,_uuノ とuu_,)ノ FREE TIBET
18 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:22:14 ] >>13 アセンブリ単位ならバージョン混在可能だし、それを想定してコードを書きたいところ。 ヤバイ仕様は、拡張すれば当然出現するし、しかしそれを放置しないでサクサク修正して欲しいな。 どこかのタイミングでdelegateは廃棄してラムダ式で統一して欲しいとか、今でも思うし。
19 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:26:36 ] Expression TreeはなかったことにしてDLRに統合してほしい
20 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:38:54 ] 互換を維持するあまりC++の様になったら悲惨だからな
21 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:40:47 ] 別に匿名メソッドはあっても害はないんじゃないのか
22 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:46:58 ] というか後で無かったことにするためにあんな面倒な記述にしたとしか思えない
23 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:47:58 ] 同じ機能を持つ別のものが複数個あるのは、コードを書くときに混乱に繋がるから良くないと思うな。 既に憶えている人には良いが、新しくC#を憶える人がC#の歴史を勉強しないとならないという事態になってしまう。 それは良くない、気付けば使える人間はオッサンばっかりという事態に陥るから。
24 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:53:39 ] >>22 ヘジたんの関数型に対する知識が微妙だっただけでは、匿名でないdelegateにしても コンテナになっていて複数個のメソッドが登録できるとか 実用的な機能はコレだって言われれば至極なっとくできるが、美しくは無いような。 この理屈不要実用一点張りがC#のいいところだと思うんで。
25 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:01:11 ] delegateがコンテナである必要なんかあるのかね delegateがコンテナであっても別に問題ないというのはすごいことなような気はするが
26 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:03:13 ] 確かにマルチキャストはいらない気がするな イベントの後ろにだけ別途コンテナ用意すればいい
27 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:04:13 ] >>25 何回でもコード書きやがれ、使いやがれ、頭で考えるな!!
28 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:07:50 ] イベントであっても2つ以上メソッドを登録したことは無いな
29 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:12:31 ] 自分でデリゲートを結合することなんて滅多にないし イベントハンドラを登録・結合するコードはどうせコンパイラが自動生成するんだから 全くメリットを感じない
30 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:16:04 ] タスクシステムを作る場合に楽じゃない? 効率はともかく。
31 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:18:06 ] 使い込みが足らないから理解が迷走するんだよ、例えばフォームのクローズイベントをキャッチしたいコントロールは一体何個あるよ?
32 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:20:27 ] デリゲートとイベントをごっちゃにしてはいけない コンテナを別にすればいいだけのこと
33 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:21:45 ] >>32 そんな事はあとから考えればいいの、今必要なのは何か、これが一番大事。
34 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:29:36 ] フォームのクローズイベントをキャッチするために Closedにいくつも+=するなんてことはないだろう 一個のメソッドを書いて、その中に必要な処理を書いていくだろう
35 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:32:56 ] イベントの呼び出し対象が複数指定できるのはいいけど, その実装のためにデリゲート自体にコンテナを持たせる必要はない コンパイラが生成するイベントの実装コードをちょっと変えればコンテナは分離できる
36 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:33:14 ] >>34 登録されるコントロールが自ら登録するんだよ、アホ
37 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:40:00 ] >>36 Framework内部のことであれば好きなように実装すればいいだろう Formが子Controlの仮想OnClosedメソッドでも呼び出すのが自然だと思うがね Controlは木構造でありAddしたときに親Formがあるかどうかはわからんのだし
38 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:41:53 ] >>37 イベントとしてクローズを挙げたのは一例に過ぎないぞ 大体だ、何か有るたびにFormにコード書きまくらなければならない、そのコーディングの非効率をどう思うよ?
39 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:45:18 ] >>38 Frameworkを使う立場の俺は、イベントにメソッドをIDEを使って登録し Formにコードを書きまくっているが特に何の問題も感じない ややこしくなれば登録したメソッドから別クラスのメソッドを呼び出すけども
40 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:50:34 ] マルチキャストが必要だからってデリゲート自体がマルチキャストである必要はないんだよ そもそもその辺を分離するための機能がイベントなのに
41 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:09:14 ] ttp://www.atmarkit.co.jp/fdotnet/dotnettips/030cmdargs/cmdargs.html このページのコード(csargs1.cs)で引数を表示させるプログラムをビルドしてみたのですが、 引数に <"LD"> と入力すると「構文が間違っています」と表示されます。 そのまま引数に<"LD">を文字列として渡すためにはどうすれば良いでしょうか。 どなたか教えてください。よろしくお願いします。
42 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:18:58 ] そんなことはコマンドプロンプトスレかなんかで聞いてくれ
43 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:20:59 ] "<\"LD\">" と入力する、コマンドプロンプトの使い方であってC#の問題ではないです。
44 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:25:43 ] >>42-43 速レスthxです コマンドプロンプトの構文なんですね、すみませんでした。 >>41 で上げた引数はエラーが起こる例で、あるアプリケーションから このプログラムに引数を渡したいので、文字列は変更できないんです。 後出しになってしまってごめんなさいorz
45 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:27:43 ] そのアプリケーションから渡す時はエラーにはならないだろう
46 名前:41=44 mailto:sage [2008/03/23(日) 16:33:57 ] 再ビルドして試行したら出来ましたorz 恥ずかしい><; >>42-43 ,>>45 さん 親切に教えて下さってありがとうございました!
47 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:35:51 ] >>46 ここは、そのための初心者用
48 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:38:58 ] >>37 >>40 さすがにこのあたりの意見は暴論にしか聞こえないね。 経験が足りないか知識が足りないんだろうけど。
49 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:43:07 ] 自分がエキスパートだと信じて疑っていない自信満々の人なんだよ 「C#, C♯, C#相談室」にいってドヒンシュク買ってこいって思うよ。
50 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 18:25:09 ] 見てる人一緒だ
51 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 19:24:06 ] 一枚の写真から中国のうそを見破る jp.youtube.com/watch?v=obbFja9-sVY&feature=related
52 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:00:16 ] コピペ君って馬鹿だな、まで読んだ。
53 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:38:39 ] まあとにかく、マルチキャストデリゲートはデリゲートをややこしくするな
54 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:44:10 ] そうか?
55 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 22:02:06 ] WPFのルーティングイベントなんかはマルチキャスト使わない実装になってるね
56 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 22:48:17 ] 救いようのないバカがいるな
57 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 23:33:37 ] 俺はデリゲートってマルチスレッド対応でしか使ってないわ
58 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 01:51:22 ] 例外について質問です。 プログラム自身以外が原因で発生する例外はいろんな種類があっていいと思うんですが コードのバグに起因する例外って細分化する必要があるんでしょうか? 例えばパラメータが異常,switchで本来ありえないdefaultに到達してしまった, foo()を呼ぶ前にbar()を呼んでしまった、といったバグにそれぞれ別の例外を割り当てて catchしたりしなかったり、catchした時に処理の内容を変えるといったことはありえるんでしょうか。 それともバグと外的な要因で発生する例外の種類を分けること自体無意味ですか? 文法的な使い方は一応理解したつもりなんですが、 どこでどんな例外をthrowするべきかというのがいまいちよくわかりません。
59 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 02:49:51 ] dataGridViewで 行選択したときに送られるイベントって何ですか?
60 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 03:38:20 ] >>58 論理的に有り得ない状況(e.g. コーディングミス、仕様外の利用)を 検出するのが目的ならアサーション使え cf. System.Diagnostics.Debugクラス
61 名前:60 mailto:sage [2008/03/24(月) 03:47:49 ] 補足 仕様外の利用ってのはクラスなどの内部で閉じてる場合ね 外部に公開されるメンバなら例外投げる方が適切
62 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 04:02:55 ] 内部的にバグを検出するチェックをすべてDebug.Assertにしたとしてリリース後はどうしてる? バグを見つけるためというよりも万一バグった後の処理を続行させない為という意味合いの何か良い例外ってあるのかな。 自分そこらへん結構いい加減だw
63 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 04:31:11 ] \ │ / / ̄\ ─( ゚ ∀ ゚ )─ \_/ / │ \ ○○○ ○○○ ○,,・ω・○ ○・ω・,,○ ○○○ ○○○ o o〜(,_uuノ とuu_,)ノ FREE TIBET
64 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 08:08:46 ] コピペ君って馬鹿だな、まで読んだ。
65 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 10:49:33 ] とりあえずInvalidOperationExceptionが定番じゃね
66 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 15:18:05 ] >>65 InvalidOperationExceptionは、不当な操作では? その操作が出来る状態になっていないのに、操作した場合の例外。 >>59 誰もレスつけないので、自分も知らないのですが、こんなやり方をしています。 RowEnter で操作開始を検出して、各種プロパティーをみるという手を良く使っています。 SelectedCells を読めばいけるんじゃないかなと思のですが・・・今で試せる環境がないので試してません。 RowEnter タイミングが微妙なので、類似の別のイベントの方が良いかもしれません。
67 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 15:20:31 ] >>66 それを不当な操作というんじゃないのか?
68 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 15:22:13 ] >>67 内部的バグに対する例外ではないよと言ったつもりなのですが・・・
69 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 15:53:14 ] まあ例外は適当でいいよというのがC#の思想なのだろうから 適当でいいんだと思うがな catchされないような例外に何を投げようと関係ないんじゃないか?
70 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 16:02:07 ] バカ
71 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 16:08:33 ] DirectXだとInvalidOperationExceptionは本当に適当に飛んでくるよw
72 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 16:18:35 ] 使い方が間違っているなら飛んでくるのは当然じゃね?
73 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 16:50:22 ] Nullable<bool>をifの条件に使うとき,if (value == true)とするのが適切? この書き方好きじゃないんだけどboolにキャストしたりValueプロパティにアクセスすると nullのときに例外が発生する
74 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 16:51:34 ] Javaはガチガチすぎて C#はむちちゅじょに過ぎる
75 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:05:04 ] ガチムチ兄貴Java
76 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:06:44 ] >>73 if (value.GetValueOrDefault(false)) とか if( value ?? false) で良いんじゃない?
77 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:13:37 ] >>73 Nullable使っててキャスト時に例外がとんでくる? 使い方を根本的に間違ってねぇかそれ・・・。
78 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:15:16 ] nullのときにキャストしたら例外飛ぶだろ…
79 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 20:00:16 ] >>59 >>66 SelectionChangedイベントでSelectedRowsを読む >>62 一部または全部をTrace.Assertにすれば
80 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 20:08:33 ] >>76 value??falseいいね
81 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 21:43:58 ] 固定長でテキストファイルを書き出したいのですが、どうすれば良いのでしょうか? 例えばシフトJISで最初の40バイト目までが項目A、41バイト目から項目Bというような感じです。 string.Format("{0,40}{1}",a,b) として書き出しても、全角文字が混じるとその分だけずれてしまいます。 1文字ずつ全角か半角かチェックしながらカウントして、埋める空白の文字数を計算して出すしかないのでしょうか?
82 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 21:49:08 ] Encoder
83 名前:81 mailto:sage [2008/03/24(月) 22:18:30 ] >>82 シフトJISのEncoderを使ってバイト数を調べて、空白は自分で補うということでしょうか。 もう少し調べてみます。ありがとうございました。
84 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:22:39 ] 固定長とかキモイ
85 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 09:54:23 ] string a = "192.168.0.1/ "001".txt"; webBrowser1.Navigate(new Uri(a)); data1 にはランダムな値が入る場合 192.168.0.3/ "data1".txt の用にしてdata1によって違うページを開かせたい場合はどのように記述すればいいのでしょうか?
86 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 09:57:00 ] 最後のところ入力ミスです>< ×192.168.0.3 ○192.168.0.1
87 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 10:14:47 ] 多分 String.Format の出番
88 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 10:22:14 ] string a = "192.168.0.1/ " + data1 + ".txt"; webBrowser1.Navigate(new Uri(a)); でいいんじゃないの?
89 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 10:28:33 ] >>87-88 有り難う御座います。>>88 の方法で出来ました。
90 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 10:31:10 ] あ、001みたいに0を入れたいわけか string a = ("192.168.0.1/{0,D3}.txt ",data1);
91 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 11:58:07 ] >string a = "192.168.0.1/ " + data1 + ".txt"; フォーマットプロバイダ通さないやり方がちょっとキモイな
92 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 11:59:28 ] C#も便利表記が増えすぎてスクリプト言語並にわけがわからなくなりつつあるな
93 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:03:15 ] 5年後VBに統合されVB#になります ^^)
94 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:09:37 ] その前にまずWebインストールさせろ! 1Gなんてダウンロードしたくない
95 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:10:48 ] >5年後VBに統合されVB#になります ^^) VBのコードも多いから、混合して書ける機能があると大助かりというのが実あったりするけどな class X { void F() { #lang VB ・・・・ #endlang } } #lang VB ・・・・ #endlang こんな感じで、要望してみるかな。
96 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:25:14 ] >>90 こんな表記あんの?
97 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:29:42 ] 形式指定だっけ?Cで言うprintfみたいなやつ
98 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:30:16 ] 俺の環境じゃコンパイル通らんぞ
99 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:30:26 ] VBみたいな構文には違和感しか感じないんだよな。 別に個人でやってるだけだからどうでもいいんだが、統合されたら他の言語に移るしかないな
100 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:32:32 ] うん。VBはまだ慣れない。あの構文はきもすぐる
101 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:33:02 ] >>96 無いよ string.Formatを忘れてるだけだろ
102 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:33:22 ] string a = string.Format( "192.168.0.1/{0:D3}.txt " , 12 ); だな、その場で書いたなw
103 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:36:03 ] >>99-100 さようなら、VB統合と言わず、今すぐそのままJavaへなり移行されてくださいw
104 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:36:39 ] VB厨が暗躍しているな
105 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:42:59 ] VB チューハイ C# 水割り C++ ロック C ストレート
106 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:43:27 ] 構文は慣れればVBの方が読みやすいと俺は思うけどね。 まあ改行=行の終わり、とか細かい点で気持ち悪い点は確かにいくつかあるけど。
107 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:44:16 ] 変数名の後に型名を書く方が自然な気がする VBの方が好きな点はそれだけ
108 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:46:13 ] もともとnewするときに型名を2回書くなんて不合理以外の何者でもなかったからな varが出来て状況はだいぶ改善したけど
109 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:47:30 ] 今0から作り直すとしたら var a as string = "a"とか var a : string = "a"みたいになりそうだな
110 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:47:35 ] >>107 どうぞ、C# 3.0です。 var hinsuumei = new Katamei();
111 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:48:10 ] C# 4.0からは変数名から型名を推論する機能がつきます var font = new;
112 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:06:44 ] >>111 ちょっと欲しい気はするな、それだと型の推論のしようがないが var = instance1@System.Drawing.Font new ; 使うときは instance1@System.Drawing.Font or instance1@Drawing.Font or instance1@Font or instance1 衝突がなければ通るとか、オブジェクト指向になって以来ハンガリアン記法が役立たずになっているが これなら型名が増えても困る事はないし、分りきっている場所で不必要に型名を書いてかえって読みずらい事にもならないような……気がする。
113 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:11:28 ] 使い方で推論すればおk コンパイルエラーとする下限の確率をコンパイラのパラメータで指定する
114 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:13:48 ] キチガイこえー
115 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:21:04 ] C#でシェル拡張書いてみたいんだけど参考になる記事とか無い?
116 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:28:24 ] Public Class foo() { foo() { ・・・・ } hoge{get; set;} honya{get; set;} hogehoge{get; set;} } Public Class hoo() { List<foo> list = new List<foo>(); ・・・・・・ } Public Class puu() { List<hoo> list2 = new List<hoo>(); ・・・・ } こういうリストのリストを使うんですが、これを単なるリストに展開するにはどうしたらいいのでしょうか?
117 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:33:06 ] list2.SelectMany(hoo=>hoo.list).ToList() 2.0なら2重のループで新しく作ったリストに自分で追加していく
118 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:37:14 ] >>115 高度な話題になるから、ソレらしい所に行くべし きわどい問題も累積している。
119 名前:デフォルトの名無しさん [2008/03/25(火) 18:38:12 ] 入力された数字を大きい順番に並べるプログラムですがbを一番大きくなるよう入力すると重複してますといわれます。どなたか理由をおしえてください public static void Main() { START: int a = int.Parse(Console.ReadLine()); int b = int.Parse(Console.ReadLine()); int c = int.Parse(Console.ReadLine()); if (a > b) {if (a > c){if (c > b){Console.Write("{0}{1}{2}", a, c, b); }else{ Console.Write("{0}{1}{2}", a, b, c); } }else{ Console.Write("{0}{1}{2}", c, a, b); } }else{ if (b > c) { if (a > c) { Console.Write("{0}{1}{2}", b, a, c); }else{ Console.Write("{0}{1}{2}", b, c, a); } } if (c > a && c > b) { Console.Write("{0}{1}{2}", c, b, a); }else{ Console.Write("数字が重複していますカエレ");
120 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 18:43:14 ] C#ってboolを数値で扱えないんだ・・・
121 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 19:06:46 ] >>119 自分が入力した値でどこを通るか辿っていったらわかるだろ とりあえず整形しなさい
122 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 19:11:45 ] >>119 当たり前じゃん。bが一番大きかったらc>bを満たすはずがない
123 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 19:14:13 ] >>119 if文をちゃんと理解してる?
124 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 19:26:09 ] それより START: が気になる goto START; とかやるつもりなんだろうか
125 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:19:25 ] >>120 C#でなくてもboolと宣言しておいて数値の意味でぶち込むとかヤメロ馬鹿 >>119 そのコード、コンパイル通らない。
126 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:21:04 ] .tonumeric()でも定義してろ
127 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:34:17 ] List<int>に突っ込んで.Sort()で済むだろ。
128 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:34:38 ] 指定した位置(ウィンドウ外の場合も)にコンテキストメニューを表示したいのですがどうすればいいのでしょうか?
129 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:39:35 ] Showのオーバーロードを調べる作業に戻るんだ
130 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:49:08 ] どうもありがとうございます。 www.labasp.net/CsharpNote/mControl/ContextMenuStrip/101_110.html#104 で見つけました。 もうひとつ質問があるのですが、これはウィンドウ外でも表示出来るのでしょうか?
131 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:57:30 ] 聞く前に試せ。な。
132 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:59:40 ] すいません。今はその環境が無いもので...
133 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 21:29:42 ] 知るか
134 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 21:31:59 ] 環境がないなら今聞く必要もないな?
135 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 21:34:27 ] msdn2.microsoft.com/ja-jp/library/system.windows.forms.toolstripdropdown.show (VS.80).aspx ここに書いてありました。どうもすみませんでした。
136 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 21:37:40 ] >>127 彼は別にソートしたいんじゃなくて、勉強したいんだろ >>119 意図したとおりにならなかったら デバッガで1ステップずつ実行して違う場所を探せばいい その時点の変数の値も確認できる
137 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 21:58:32 ] ちょっと質問です。。。 PixtureBoxに点(1ドット)を打ちたいのですが、方法が分かりません。 ご教授いただけると幸いです。
138 名前:137 mailto:sage [2008/03/25(火) 22:02:41 ] すみません説明がおかしかったです。 PictureBoxで描写しているBitmapにです。 Graphicsに落として、線を引いたりはできるのですが、指定した一点にだけ描写する方法が分かりませんm(_ _)m
139 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:18:48 ] >>137 Bitmap.setpixel()
140 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:20:34 ] 縦横1pxの四角形を描くって手もあるな
141 名前:137 mailto:sage [2008/03/25(火) 23:12:37 ] >>139-140 できました。ありがとうございます。 Bitmapにあったんですね(^^; JavaのノリでいたのでGraphicsにあるものだと思い込んでました。。。 縦横1pxの四角形を描こうとすると、縦横2pxの四角形になってしまいました。。。orz
142 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:54:29 ] Stack<Hoge> hoges;で 中身を取り出したときに確実に葬り去るにはどうすればいいの?
143 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:55:40 ] なんか日本語でおkな質問が最近多いような。。
144 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 00:17:41 ] メモリをゼロクリアすれば確実だろう。だがちょっと待って欲しい。ここではデータ取り出しをしている。 それらを考えると放射線でメモリをROMとして焼き付けるのが一番ではないだろうか?
145 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 00:30:46 ] hoges.pop().Dispose();
146 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 02:07:20 ] >>142 >葬り去る この意味を書け、何をしたいのかハッキリさせろ、話はそれからだ。
147 名前:デフォルトの名無しさん [2008/03/26(水) 03:13:02 ] staticクラスおよびそのクラスのstaticメソッドや staticでないクラスのstaticメソッドはプログラム内 で全く使われてなくてもメモリ上に読み込まれる?
148 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 08:51:02 ] >>146 ゆとりか
149 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 09:06:39 ] >>148 146じゃないけど、142がどの程度C#とStackのことをわかってるのかがわからない以上、 俺も何をしたいのかわからない。 ひょっとするとhoges.Peek()にしか気づいておらず、スタックから消す方法を聞きたいのかもしれない。 hoges.Pop().Hoge()とかのように、そのまま使ってしまいDispose()を呼び出せないと思いこんでいるのかもしれない。 いろいろ考えられる。
150 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 10:24:07 ] >>148 オブジェクトの破棄の意味と仮にエスパーしても何段階かあるぜ、どれなんだい?役立たずの爺さんよぉ。
151 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 10:32:25 ] >>147 JITの勝手、作る側は意識しない。 今現在どうなっているのかというなら、アセンブリ単位で読み込まれているようだ。 用語の意味や詳細がわからないなら以下を読め、ただしプログラム初学者には難易度は高いぞ。 www.atmarkit.co.jp/fdotnet/technology/idnfw11_index/index.html
152 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 10:45:34 ] >>147 メモリ上に読み込まれるのと、型として評価されるのと、 特定のメソッドがJITでコンパイルされるタイミングはどれも違う。 型として評価されるタイミングならスタティックイニシャライザに WriteLineを仕込んでみると近似できると思うよ。
153 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 11:41:00 ] C++でStack.Popが例外安全に作る方法が無いというのが C#でどのように克服されてるかという話かもしれない
154 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 11:54:34 ] 克服もなにも例外が非安全になる言語はC++だけだ、そもそも例外の実装に失敗している C++では、例外を使わないという事を検討すべきだな、故障中と書かれた蛇口をひねるような真似はすべきでない。 この話題は、もはやスレ違いだ 147 は死ねって事でFA。
155 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 12:04:22 ] >>147 使われる前には読み込まれていなければならない 具体的なタイミングは実装依存だったと思う
156 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 12:05:16 ] いやいやC#だって基本保証すらないメソッドを作れる。 作るほうが難しいけど。 C++はただなんでも値渡しでコピーするから 例外投げないメソッドが作りづらいだけじゃないか、それが致命的なんだけど。
157 名前:155 mailto:sage [2008/03/26(水) 12:07:03 ] メソッドのことだったのか >>155 は変数の中身のことだから忘れてくれ
158 名前:119 [2008/03/26(水) 13:10:19 ] 20行目と22行目の下にgoto文入れたら解決しました。 ついでにもうひとつ質問ですがデバッガはどこを押せばできますか? 使ってるソフトはMicrosoft Visual C# 2008です。 おしえてください
159 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:16:24 ] こんなコードにgoto文使うなよ
160 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:18:56 ] switchと多重ループ抜けるとき以外はgoto使用禁止 デバッグは止めたいところにカーソル置いてF9を押してブレークポイントを追加してからF5
161 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:19:54 ] このコードでごとぅって思考放棄じゃね?
162 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:25:15 ] どこの初心者サイトや入門書でもgotoをはじめに教えるなんてありえないけど goto使いまくるような言語から入った人なのかな
163 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:28:14 ] gotoは大域gotoじゃなきゃ別に危険じゃないんだぞ
164 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:31:44 ] 昨今、危険かどうかというより可読性の問題が大きい。
165 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:35:50 ] gotoはスパゲッティーコードの元。
166 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:36:41 ] 上向きのgotoはコンパイルエラーでもいいと思う
167 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:36:49 ] >>158 ,119 考えられるケースを書き出してからコード書き始めると漏れがなくなる。 abc 123 132 213 231 312 321 あと重複チェックは先頭でやってしまったほうがいいな。 正しくない入力データはなるべく早く排除しておいたほうがいい。 というのを踏まえてgoto抜きで書き直してみ。 別に使っちゃいけないわけじゃないがこのケースで使う必要は0。 それからgotoネタは他所でやった方がレスの共通化が図れて効率的。
168 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:37:12 ] goto使いまくる言語ってどんなだよ スクリプト系か
169 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:37:16 ] 一つの関数を巨大にしない限り gotoでスパゲッティになることもない 問題なのは巨大な関数の方でgotoじゃない
170 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:42:31 ] >>168 HSPとかかなぁ。よく知らないけど。
171 名前:デフォルトの名無しさん [2008/03/26(水) 13:42:52 ] あーHSPはgoto使いまくるね
172 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:43:39 ] gotoを使うべきところはあるが、どう見ても>>119 は使うべきでない所だろ。 スパゲティとかいうレベルじゃなく場当たり的に回避してるだけだ
173 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:45:43 ] 複雑なifとか多重ループはわかりにくいから 避けられるなら避けるべきだ
174 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:59:25 ] このスレには、チームで開発しててコードの書き方に異様にこだわる人がいる。 チームのメンバとか、他社へ納品するとか、他人が見る可能性がある場合は、 そういうことに気をつける必要はある。 だが、個人で書いてて誰にも見せないなら、どんな書き方をしようが個人の自由。 気にするな。 でもgotoは、COBOLとRPGでreturnとかcontinueとかbreakとかがなくて 仕方なく使ってたのが最後だな。
175 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 14:08:13 ] ラベル付きbreakがあれば下向きgotoやめてもいいな。
176 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:25:52 ] 時間を取得して、 以下のような処理をさせたいのですが、 時間のみの取得がどうすればいいのか分かりません。 long tick = DateTime.Now.Ticks; DateTime d = new DateTime(tick); というサンプルを見つけたのですが、これでは年〜秒まで取得してしまします。 どのようにすればよいかご助言下さい。 if(4時<時間<=11時) { 処理1 } else if(11時<時間<=16時) { 処理2 } else { 処理3 }
177 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:39:32 ] DateTime.Now.Hour つかDateTime構造体をちゃんと調べれ
178 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:41:31 ] >>174 どうみても>>119 は初心者なんだから個人の自由とかの議論の前にみんなが指摘してやってるだけだと思うよ。
179 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:51:03 ] C#でgetchar();に相当する物ってなんでしょうか? C言語で入力を待って実行するのに便利だったのですが。
180 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:51:48 ] >>177 ありがとうございます。
181 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:53:35 ] Console.Read()
182 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:54:34 ] >>179 msdn.microsoft.com/library/ja/vclib/html/vclrfrun-timeroutinesnetframeworkequivalents.asp
183 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:58:27 ] >>181-182 thx
184 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 17:08:51 ] Enum型のみを指定できるジェネリッククラスを作ろうと思ったのですが、whereでEnumを指定できないため、 Where T : Typeとしました。 このとき、TがEnumから派生したものでない場合、例外を投げるにはどの例外を投げたらいいでしょうか? ArgumentExceptionにメッセージでEnumを継承してないからだめって書いて投げてもいいのでしょうか?
185 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 17:13:50 ] where T : structだろ 例外はなんでもいいんじゃね どうせ実行時には発生しちゃいけないはずなんだから
186 名前:184 mailto:sage [2008/03/26(水) 17:14:26 ] すいません、where T : Typeは余計でしたので、無視してください orz whereは指定していませんが、上記の場合、どの例外を投げるのが適切なのでしょうか?
187 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 17:42:29 ] みんなが作った Windows コントロール ライブラリ 見れるところってありますか?
188 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 17:49:20 ] >>186 where T : structにしといたほうがいい TEnumのほうがいいかも ArgumentExceptionはメソッドの引数の例外だからExceptionかその直接の派生クラス作って投げたら >>187 codeplexとかcodeprojectとか
189 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 18:04:48 ] >>185 コンパイルエラーにできないということはそういう使い方をするなということなんでしょうかね… >>188 TypeLoadExceptionというものを見つけたんですが、これはまた別物なんでしょうか? それと、お二方のご指摘通り、where T : structを指定しました。 ありがとうございます。
190 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 20:05:00 ] private List<string> GetList() { List<string> list = new List<string>(); return list; } List<string> list = GetList();にするとnullが返って来てエラーとなります。 こういうものなのですかね?。
191 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 20:16:07 ] >>190 ちょw
192 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 20:17:07 ] >>190 それはおかしい そのコードでnullが返ることは無い
193 名前:デフォルトの名無しさん [2008/03/26(水) 20:17:48 ] >>156 >例外投げないメソッドが作りづらいだけじゃないか 具体的に例外安全とならない例をひとつ挙げてみてもらえないか? 不可能だと思ったので、すこし興味深い。
194 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 20:19:01 ] >>190 クリーン再インストールすると治るんじゃないかなw
195 名前:デフォルトの名無しさん [2008/03/26(水) 20:22:40 ] C#で作っているプログラム aaa.exe から 別のプログラム bbb.exe 上の ボタンを自動で押したいのですが、どうやればいいのでしょうか?
196 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 20:25:44 ] >>195 セキュリティー上の重大な問題を引起こす、その種の操作は一般にはできない。 無理すればできるが、かなり高度な話題、相互運用でググれ。
197 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 20:31:34 ] >>195 bbb.exe側のソースをいじれるなら .NETリモート処理で対応する。 できないなら>>196 のいうとおりAPIいじくるしかない。
198 名前:190 mailto:sage [2008/03/26(水) 20:40:43 ] やはりおかしいですよね・・・。私も不思議だったので投げてみました。 家族の夕食を作って食べてから出直してきます。 みなさん、ありがとう。
199 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 20:55:52 ] コンソールアプリケーションだとこのようなコードがコンパイル出来ません。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine(f()); } private int f() { return 10; } } } f()をstaticなメソッドにすれば問題ないのですが何故ですか? フォームアプリケーションではstaticでなくても問題ないみたいですが…。
200 名前:デフォルトの名無しさん [2008/03/26(水) 20:58:39 ] >>196 >>197 bbb.exeはいじれないです。 APIでいじる方法のキーワードとなりそうなググり方でも教えていただけると嬉しいです
201 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:02:33 ] >>199 フォームアプリケーションでは、 ウィザードが生成するコードの中でインスタンスを作っている。 コンソールアプリケーションでは、自分でインスタンスを作らないといけない。 static void Main(string[] args) { Program p = new Program; Console.WriteLine(p.f()); }
202 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:08:47 ] >>201 ありがとうございました! Mainのあるクラスですらインスタンスを作らなくちゃいけないんですね。 たしかにstaticなのはMainだけだからそうなんだろうけど自分自身を作るみたいで変な感じ^^;
203 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:16:13 ] そういえばVS2003以前はフォームのクラスの中にMainがあったよな 当時は何の疑問も感じずに使ってたけどProgram.csに慣れると コンポーネントの中にエントリポイントがあるっておかしいだろ普通に考えて
204 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:20:44 ] >>200 www.microsoft.com/japan/msdn/net/bda/cominterop.aspx APIの使い方が分らないというならキッパリ諦めた方がいい。
205 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:44:19 ] >>200 FindWindow系で対象のボタンのウインドウハンドルを探して クリックしたメッセージを送るか、マウス操作をエミュレート
206 名前:デフォルトの名無しさん [2008/03/26(水) 22:06:39 ] >>204 >>205 対称となるウィンドウ(ボタン)は固定なので、SendMessageくらいで出来ると嬉しいです。 Spy++のように座標が取得できればマウス動かしてやろうかな などと考えております
207 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 22:21:50 ] >>206 ならDllImportAttributeあたりを調べてみるといい
208 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 22:33:49 ] >>206 対象のウィンドウのウィンドウハンドル取得後、 GetWindowRectで対象ウィンドウの現在位置を取得して、 対象ウィンドウの左上座標からの相対位置から、スクリーン座標を求めた後に、 WindowFromPointでボタンのウィンドウハンドルを取得し、 SendMessageでキーのアップダウンメッセージなりマウスのアップダウン(クリック)メッセージなりを 送ればいいとおもわれ
209 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 22:37:07 ] BOTでも作るの?
210 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 22:38:14 ] BOTなんてやるならクライアントをエミュレートした方が早いだろ。
211 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 22:44:30 ] つか、このレベルの事をやりたいのなら、ここじゃなくてふさわしいスレッドへ行けよ さらに言うなら、この程度自力でなんとかしやがれ。
212 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 00:08:19 ] C#というのは、名前とは違い、CとC++のどちらにも互換性が無いのだろう。 ANSIの標準ライブラリは、何一つC#では使えないんだろうな。 それなら、VB.NETのほうが良いのでは。 VBを知らない人のための言語のように思えるが。
213 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 00:22:28 ] コンパイラ エラー CS0274 って別にエラーにする必要なくね? public int Property { get { return hoge; } private set { hoge = value; } } より public int Property { public get { return hoge; } private set { hoge = value; } } のほうがシンメトリックだし。
214 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 00:33:21 ] >>213 ヘジたんの御心のままです
215 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 00:39:46 ] わざわざ、public書く必要もないが、禁止するほどのことでもないな。
216 名前:デフォルトの名無しさん [2008/03/27(木) 01:09:01 ] C#で電子メールクライアントを作っているのですが、Windowsの右クリックメニューにある 「送る」->「メール受信者」という項目から通常使うメーラとして起動したいのですが、 HKEY_LOCAL\SOFTWARE\Clients\Mail\nullmail\Protocols\mailto\shell\open\command HKEY_LOCAL\SOFTWARE\Clients\Mail\nullmail\shell\open\command などのレジストリを書き換えても動いてくれません。 IEの通常使うメールソフトの設定には表示されているのですが、なぜか起動すらしてくれないのです。 Gmail等のWebメールでURLに引数を付けて呼び出す方法などだと動くのですが、 .NETでメールを書く場合には何かルールがあるのでしょうか?
217 名前:デフォルトの名無しさん [2008/03/27(木) 02:52:38 ] 初めてプログラムを学ぶ者です。 C#を使えるようにしたいのですが、 どのように勉強するのが効率的なのでしょうか? 一応、15日ほど前にC#の絵本というのを買って Micro Soft Visual Studio C# 2005 Express Edition というツールを使いながら読み進めているのですが、 サンプルプログラムに省略されている部分が多くてよくわからないのです。
218 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:47:31 ] TreeNode[] tn = treeView.Nodes.Find(key, true); これってつまり重複したキーが使えるという事なのでしょうか? 今まで気づかなかったorz
219 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:05:21 ] テトリスを作ってみたいのですが少し調べてみたらXNAとDirectXと2つあるようです。 どちらで作ればよいのでしょうか?
220 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:27:17 ] XNA・・・xbox360でも動く、資料少ない。将来性あるのか謎。 PCだと、XNAランタイムみたいなの入れてないと動かないPO DirectX・・・資料多い。ややめんどくさいかも。PCだけだとこっちの方が動く環境多い
221 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:28:00 ] テトリスレベルならGDIでいいんじゃね
222 名前:デフォルトの名無しさん [2008/03/27(木) 09:29:56 ] C#でDirectXつかう利点あるの? C++つかったほうが
223 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:36:15 ] とりあえず何か作ってみたいのです。
224 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:45:54 ] >>223 じゃあどっちでも良いじゃん
225 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:55:48 ] XNAは、Xbox360と共通化されたDirectXのラッパーで、C#から楽に呼べる。 C#にする時点で.NETを入れる必要があるんだから XNAのランタイムを入れる必要があるってデメリットは無視できると思う。 「DirectX」がもしManaged DirectXのことを言ってるんだとしたら結局は同じ。 Managed DirectXは見捨てられ、XNAにシフトした。 ただし、360コントローラ以外のパッドのようにXbox360と互換がないデバイスは XNAでサポートされていないのでManaged DirectXを使う必要がある。 DirectXを直接C#から呼ぶのは大変。 と時間が出来たら技術的興味からXNAに触ってみようとしてるやつが思った、 間違ってるとこがあるかもしれない戯れ言
226 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 10:07:06 ] これ嫁 www.amazon.co.jp/%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Game-Developer-%E8%B5%A4%E5%9D%82-%E7%8E%B2%E9%9F%B3/dp/4797334800
227 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 10:40:13 ] 最終的にはGDI関係をDirectXの上に乗ったライブラリとして実装しようという流れは変わらないみたいだし そうすると、セキュリティーの関係上DirectXがマネージドでないと都合が悪いので どういう形になるにせよ、DirectXがマネージドになるのは時間の問題かと。 現在のDirectXがマネージドDirectXラッパーになるのでは。
228 名前:デフォルトの名無しさん [2008/03/27(木) 11:10:35 ] C#の資格試験はどういうものがありますか
229 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:46:06 ] ToolStripMenuItemの1つ上にあるToolStripMenuItemはどうやったら調べられますか?
230 名前:229 mailto:sage [2008/03/27(木) 11:49:17 ] OwnerItemでした
231 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 13:37:42 ] >>228 MCTS,MCPD
232 名前:デフォルトの名無しさん [2008/03/27(木) 13:56:33 ] 掛け算の式を表示するプログラムを作ってみたのですが、まったく表示されません。なぜなのかおしえてください using System; class aaa { public static void Main() { for (int a = 1; a == 9; ++a) { for (int b = 1; b == 9; ++b) { Console.Write("{0}*{1}",a,b); } Console.Write("\n"); } } }
233 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 14:15:17 ] > for (int a = 1; a == 9; ++a) a == 9 が true の間だけループを回す、って意味だが。
234 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 14:16:48 ] >>225 DInputゲームパッドから入力とるだけならC#+Marshalingで直さわりしても 正直一日仕事レベルなのだが意外に知られてないっつーか キーマップやら無理ない設計やら面倒くさいもの(しかしあまり使われない)が ややこしいのは確かなんだが
235 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 14:38:42 ] XNA使って箱で動かないものを書いてどうする
236 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 14:42:08 ] SlimDXおすすめ プライベート配置できるし
237 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 14:42:11 ] >>227 そもそも、DirectX自体がWPFとXNAに二分されて フェードアウトするんじゃないか? DirectShowなんか、既にWindows SDKに移住したし。
238 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 15:04:57 ] >>235 んなもん #if で終了だろ
239 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 16:36:39 ] 型の使い分けについて教えて下さい。 int やlongの場合、intを使わずに全てlongで良いような気がするのですが、なぜintが存在しているのでしょうか? 素人考えだと、intで良い物はむやみにlongにするより、処理が早くてすむ、メモリの節約になる。 などの理由があるのかなと予想しているのですが。
240 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 16:43:01 ] >>239 >処理が早くてすむ、メモリの節約になる。 正解。
241 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 16:44:58 ] そうだよ? 誰もA1ノートなんて買わないだろ?使わないんだから
242 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 16:53:21 ] longよりintが先に存在したから
243 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 17:09:39 ] >>240-242 ありがとうございます。すっきりしました。
244 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 17:12:31 ] >>237 Direct3Dに関しては、WPFのブラシの一つとして実装されるのが一番綺麗だろうな。 逆にDirect3DのテクスチャとしてWPFがまた利用可能で、無限入れ子になってくれば汎用性も高そうな気がする。 消滅に関しては今更感があるので難しいかと。
245 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 17:15:00 ] >>239 現状だとCPUが32ビットで、複数回に分けて計算されるので long だと、マルチスレッドではいちいちlockしないといけないのが面倒くさいという実務上の都合もあるな。
246 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 17:15:14 ] WPFのもっと低レベルな描画方法は欲しい
247 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 18:39:55 ] >>245 thx 参考になります。
248 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 19:12:38 ] tryの中で冷害が起きるとFにみちりりんの中は実行されるですか?
249 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 19:15:42 ] それ面白いと思って書いてるのかな。 ちっとも面白くないが、君が「オカシイ」奴だということだけはよくわかるよ
250 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 19:33:52 ] オーバーロードがないと叱られるのですが、どうしたら良いですか? ToolStripItem.MouseUp += new EventHandler(fff); private void fff(object sender, MouseEventArgs e) { }
251 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 19:36:16 ] ToolStripItem.MouseUp += new MouseEventHandler(fff); または ToolStripItem.MouseUp += fff;
252 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 19:41:18 ] >>251 ありがとうございます。 EventHandlerで全て処理するのかと思い込んでいました。 指摘されて電気が走りました・・・。
253 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:05:38 ] foreachの中で要素を消すのは違法ですか?
254 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:11:05 ] ダメ。ゼッタイ。
255 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:13:35 ] 消すのイクナイ。
256 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:32:27 ] てかコンパイルエラー吐くだろ。設定で無視できるのか?
257 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 23:07:13 ] SplitContainerでdockをfillにしてフォームのサイズを変更するとラインの位置が比率?で 変わりますがこれをどちらかだけ固定する方法はないのでしょうか?
258 名前:257 mailto:sage [2008/03/27(木) 23:08:40 ] ありました・・・ 今度は30秒待ってから書きますorz
259 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 23:36:55 ] フォームが非アクティブの時にもキー入力を取得したいのですがどうしたらいいんでしょうか?
260 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 23:38:15 ] ほっく
261 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 00:01:05 ] ttp://homepage3.nifty.com/midori_no_bike/CS/userIO.html ここの「ホットキーを登録する」をコピペしたら動きました。 これから理解したいと思います。
262 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 02:34:15 ] 初心者で申し訳ないんですが、ジェネリックの使い方がいまいち分かっていないようです 以下のような、任意のデータ方を扱えるconsを作りたいのですが、うまくいきません。ご教鞭願いたいです class Cons<T,U> { private T left; private U right; public T car { get { return left; } set { left = value; } } public U cdr { get { return right; } set { right = value; } } public Cons(T a,U b) { this.left = a; this.right = b; }
263 名前:つづき mailto:sage [2008/03/28(金) 02:34:53 ] public override string ToString() { return "(" + left.ToString() + "." + right.ToString() + ")"; } static void Main() { Cons a = new Cons(10, "a"); Console.WriteLine(a.ToString()); } }
264 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 02:36:54 ] プラスとして、恐らく上のままでは一旦 Cons a = new Cons(10,"abc"); などとして作った後、 a.car="foo"; とするとエラーになると思うのですが、解決策はあるでしょうか?
265 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 02:46:24 ] >>264 この2つを直せば動く。 1. ジェネリッククラス内にエントリポイントMainは置けない。 2. ジェネリッククラスを使うときには、Cons<int, string>のように ジェネリックの引数を指定しないといけない。
266 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 03:02:32 ] ちなみに、 型推論を働かせたい場合、コンストラクタでは無理。 static partial class New { static Cons<T, U> Cons<T, U>(T left, U right) { return new Cons<T, U> (left, right); } } みたいな static メソッドを書けば、 C# 3.0 なら var a = New.Cons(10, "abc"); で、Cons<int, string> が作られたりはする。
267 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 03:05:29 ] すみません、少し質問の仕方が悪かったですね。 ・任意のデータ型を内包できるリスト構造を作れるか ・そのリストの要素をまた別の任意の型へ変換できるものが作れるか この2点が知りたいです。 そんなに柔軟な型にこだわるならスクリプト言語でもいじってろと思うかもしれませんが・・・
268 名前:デフォルトの名無しさん [2008/03/28(金) 03:07:09 ] >>266 なるほど、結構しんどくなってくるんですね・・・
269 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 03:22:08 ] 自己解決しました。普通にobject型使えば一発でした。 吊ってきます。
270 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 06:42:43 ] >>268 横やりだけど、これって関数型言語のような事をしたいという意味に取れたのですが もしそうだとしたら、プロパティーに set をつけること事態がよろしくないのでは? と思ったりしたのですが・・・・ やるとすれば、たとえば string クラスや DateTime クラスのように 一回設定したら変更できないタイプのクラスに設計するのが美しいような予感がします。
271 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 07:11:04 ] 自分が実装するなら・・・こうかな public class Pair<T,U> { T left ; U right ; public T Left { return left ; } public U Right { return right ; } public Pair<T,U>(T l ,U r) { left = l ; right = r ; } public override string ToString() { return "(" + left.ToString() + "." + right.ToString() + ")"; } } public static class Lisp { public static T Car<T,U>( this Pair<T,U> pair ) { return pair.left ; } public static U Cdr<T,U>( this Pair<T,U> pair ) { return pair.right ; } public static T SetCar<V,U>( this Pair<T,U> pair , V left ) { return new Pair<V,U>( left , pair.right ) ; } public static U SetCdr<T,V>( this Pair<T,U> pair , V right ) { return new Pair<T,V>( pair.left , right ) ; } public static Pair<T,U> Cons<T,U>( T left , U right ) { return new Pair<T,U>( left , right ) ; } } class MyClass { void Main() { var a = Lisp.Cons( 10 , "a" ).Car() ; var b = a.SetCar( "foo" ) ; Console.WriteLine(a.ToString()); } }
272 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 07:26:52 ] まちがっている public static T SetCar<V,U>( this Pair<T,U> pair , V left ) { return new Pair<V,U>( left , pair.right ) ; } public static U SetCdr<T,V>( this Pair<T,U> pair , V right ) { return new Pair<T,V>( pair.left , right ) ; } ↓ public static Pair<V,U> SetCar<T,U,V>( this Pair<T,U> pair , V left ) { return new Pair<V,U>( left , pair.right ) ; } public static Pair<T,V> SetCdr<T,U,V>( this Pair<T,U> pair , V right ) { return new Pair<T,V>( pair.left , right ) ; } コンパイルしていないのでまだあるかも知れない。
273 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 08:27:11 ] public T Left { ... } ↓ public T Left { get { ... } } pair.left ↓ pair.Left あとはMainもおかしい aはint
274 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 09:06:50 ] >>269 ジェネリックスはもともと関数型言語由来だから相性は悪くないはず object などと妥協せずとことんやりこんでみる事をお勧めする。
275 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 10:39:38 ] lock(x) { } を有効にするにはxオブジェクトを private static で修飾する、ということであってますか?
276 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 11:00:31 ] static が付くとは限らないんじゃないか readonly をつけることは結構あるかも
277 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 12:31:07 ] >>275 日本語書け。 「有効にする」とはどういう意味? あるいは、「有効にする」というからには「無効」という状態があるんだろうが 「lock(x)が無効」とは具体的にどんな事態のことを指してるの?
278 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 13:06:03 ] >>275 MSDNでlockのところ読んどけ
279 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 13:53:17 ] >>276 おぃ、なんちゅートンデモアドバイスを与えいるんだ?
280 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 19:04:42 ] Test
281 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 20:04:53 ] private string[] List_GetItem(string url) { foreach (string[] item in list_news) if (item[0] == url) return item; return null; } こういう書き方ってきもいかな?
282 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 20:09:46 ] うん
283 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 20:12:14 ] foreachで回す必要なし
284 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 20:14:15 ] メソッド名がきもいです
285 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 20:19:08 ] つーか、メソッドにする必要なくね?
286 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 20:25:14 ] list_newsがList<string[]>なら、 list_news.Find(x => x[0] == url) ですむんじゃまいか。
287 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 20:29:21 ] List_まではいいけど、GetItemがものすごく嫌だな たぶん.NetFrameworkの上でなければ全然気にならないんだろうけどwww
288 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 20:36:40 ] TransparencyKeyで透過色を指定した後、 やっぱり透過をやめたい場合はどうすればいいんでしょうか??
289 名前:281 mailto:sage [2008/03/28(金) 21:11:32 ] みなさん、ありがとうございます メソッド名がきもいのは許して・・・ >>286 こういう書き方ができるのですね 勉強になります
290 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 13:05:15 ] 基底クラス内で宣言したクラスや構造体に 派生クラスからメンバを追加する方法ってありますか?
291 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 13:12:43 ] 意味が分からん 具体的に何がしたい
292 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 13:13:08 ] class Base { //Nestedオブジェクトは常にこのメソッドを通して作ること! protected virtual Nested CreateNested() { return new Nested(); } protected class Nested { } } class Derived { protected override Nested CreateNested() { return new DerivedNested(); } class DerivedNested : Nested { public void NewMember() { } } } こういうことか?
293 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 14:13:59 ] たぶん例えばListViewItemを継承したクラスで、ListViewSubItemを継承したいとかそんなことだと予想。 最近何通りにも解釈できる短い日本語だけで、何も具体的に書かないのが多いな。 しかもそれに対して、こうでしたって書き込みがない。 釣りか?
294 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 14:26:27 ] 釣りではないでしょ。 むしろこういうタイプの「彼」は、「俺様の意図が理解できないなら黙ってろよこの煽り厨房が」 ぐらいのことをリアルで思ってように感じられる。
295 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 14:28:16 ] お前ら偉そうだなっ! これからも宜しくお願いしますm(_._)m 飛び入りです
296 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 14:38:30 ] お前ら偉そうだなっ! これからも宜しくお願いしますm(_._)m 通りすがりです
297 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 14:55:22 ] 若い人は特に言葉使いとか礼を述べる習慣がありませんからね そういう教育をしてこなかった世代にも誤りがあります
298 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 15:05:13 ] >>297 礼儀の問題か。 説明能力の問題だろう。 まあ君の場合は理解力の問題でもある。
299 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 15:08:51 ] >>298 1から1000まで書かないと理解して貰えませんでしたか、とても残念です。
300 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 15:18:21 ] どんな幸せ回路内蔵してんだろコイツ
301 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 15:49:20 ] ただのバカですな、そのままの意味で理解するなら不可能とだけ答えて終わりにしておきませう。 きっと彼の想像するお望みの機能はあっさり実装できると思われますが。
302 名前:デフォルトの名無しさん [2008/03/29(土) 16:09:21 ] ユーザーが指定した数だけ数字を入力できるプログラムを作りたいのですが、エラーが出て実効できません、どこがおかしいのかおしえてください using System; class aaa { public static void Main() { int a = int.Parse(Console.ReadLine()); int[] b= new int [a]; for(int c=0;c<=a;++c) { a[c] = int.Parse(Console.ReadLine()); } } }
303 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 16:12:04 ] c<=a ←これがおかしい
304 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 16:24:42 ] なんでエラーメッセージを読みすらしないんだろう?
305 名前:デフォルトの名無しさん [2008/03/29(土) 16:26:39 ] エラーメッセージよんでもわかりませんでした。 あと直す箇所はどうやってなおしたらいいかおしえてください
306 名前:デフォルトの名無しさん [2008/03/29(土) 16:28:39 ] >>305 では、ここに来る前に入門書を購入してしばらくやってください。 ちょっと迷惑にもほどがありますね。
307 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 16:29:03 ] どう見てもs/a[c]/b[c]/だろ。 c=<aはおかしいがc<=aは正しい aは配列じゃない云々言われたはずだが、どうして分からないとか言えるんだ?
308 名前:デフォルトの名無しさん [2008/03/29(土) 16:31:13 ] すいません、もっとよく勉強してから来ます
309 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 16:32:32 ] DataSetを利用している人って多いい?
310 名前:デフォルトの名無しさん [2008/03/29(土) 16:34:54 ] 趣味の人は使わないと思うよ、実務系のひとなら大抵使っているかと。
311 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:18:12 ] TransparencyKeyで透過色を指定した後、 やっぱり透過をやめたい場合はどうすればいいんでしょうか??
312 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:56:25 ] C#で作成したアプリケーションをスタートアップに登録しても起動しないんですが、何が悪いんでしょうか? OS起動後に実行すれば問題なく実行できます。 環境は OS:WindowsXPSP2 IDE:Visualstudio2005pro .netframework2 です。
313 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:05:51 ] >>312 当方まったく同じ環境ですが、問題なく起動しています。 別に原因があるんじゃないですかね?
314 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:07:40 ] 他ユーザの場所に登録したんじゃないの?
315 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:12:23 ] >>311 Color.Empty でも指定すれば良いんじゃね
316 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:33:44 ] >>310 今までデータ管理は自分でやっていたから気にしてなかったのですがさっき自分が使いやすいように 固めて扱ってみたらわりと便利そうな感じです。これから設定などはこれを利用してみようと思います。
317 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:35:25 ] >>316 これからやるなら、せっかくだからLINQ攻めてみたらどうだい?
318 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:42:43 ] スレチすいません。 Visual Studio 2005のヘルプのようなヘルプを作りたいのですがどうすればいいのでしょう?
319 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 19:02:12 ] ウィンドウの最小サイズってどのくらいなんでしょう? 30*30に設定してもならないですし、 フォームにラベル貼ってAutoSizeで大きく表示したあと、そのラベルを30*30くらいまで下げると縦長のウィンドウになっちゃうし…。
320 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 19:11:13 ] >>316 sqlとの付き合いも長いからある程度は使えると思うのですがまだ利用のイメージが わかないのです。あると便利なのはわかるのですがそれを有効に使うには結局、 メモリ以上に大量のデーターベースをおいて置かないといけないって事ですよね?。
321 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 19:25:40 ] >>319 SystemInformation.MinimizedWindowSize SystemInformation.MinWindowTrackSize この辺じゃね?
322 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 20:01:01 ] >>320 そんな激しいもんじゃないよ、テーブルの定義がclassのフィールドもしくはプロパティーになって その配列(シーケンスとよばれている)がテーブル それに対してクエリを発行しましょうという物。 その テーブルの定義 == class に Sql やら XML やら、自作DBを関連付けて統一的に取り扱えるようにしましょうという物。
323 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 20:01:18 ] >>321 てことは30*30とかには変更できないって事ですね。 でもラベルのAutoSizeに合わせるとバグるのはなんでなんだろ
324 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 22:24:58 ] >>318 NDocは更新が止まっていた気がするので今だとSandcastle?
325 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 22:38:15 ] >>318 どこかで見かけたなと思って、スタートメニューの中をのぞいていたら HTML Help Workshop というのがあって ためしにチョコチョコっと作ったらできた。 初代VS,2002,2003,2005,2008のどれかについてきたものだと思う、調べてみるといいかも。
326 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 22:52:17 ] Officeについていたりもするよ
327 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 22:57:05 ] チェックボックスやラジオボタンの状態を保存するのってどうすればいいのでしょうか? 誰か、暇だったら教えて下さい><
328 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 22:58:04 ] >>327 プロパティー読み出して適当な変数に保存しておればいいかと。 Checkedという名前だった・・・はず
329 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 23:11:32 ] >>328 ありがとうございます。明日起きたらやってみますzzz
330 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 23:12:05 ] Sandcastleだな。
331 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 23:38:32 ] オブジェクトのプロパティの値を全てTextWriterに書き出す標準の方法ってある? 自分でリフレクション使ってやらないといけない?
332 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 23:45:33 ] プロパティの値といわれると制限が強いがXmlSerializer フィールドならIFormatterだが直接TextWriterは無理か
333 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 23:47:46 ] >>331 シリアライザを使ったらいいと思うよ。
334 名前:331 mailto:sage [2008/03/29(土) 23:49:48 ] すみません デバッグ用に書き出したいだけなんです イミディエイトウインドウなんかだと自動でやってくれるので, もしかしたら標準的な方法が用意されてるのかなと
335 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 23:54:09 ] >>334 ttp://www.codeplex.com/DotnetCommons/Wiki/View.aspx commonsと比べると微妙だった気がするが・・・
336 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 23:55:08 ] 使ったことはないけど、デバッグ用のがあったな・・・ 最近見かけておやっ、あとで調べとかなきゃとか思っていたんだが2008専用かもしれん。 今、手元にないので駄目だが、ツールボックスか、プロジェクトの追加の所を調べてみるといい、たしか有ったぞ。
337 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 09:05:33 ] >>336 Visualizer(デバッガ ビジュアライザ)の事? あれはTextWriterに書き出すのとは用途が違うからなぁ・・
338 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 10:21:33 ] []でアクセスするプロパティは作れますか?
339 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 10:24:20 ] うん
340 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 10:28:43 ] どうするの?
341 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 10:38:09 ] インデクサでぐぐれ
342 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 12:36:40 ] クラスのパブリックメンバ(プロパティ)で、 単に public int Member1; とするのと、get setを使用する public int Member1() { get{return _member1;} set{_member1 = value;} } とするのとは同じものと考えていいのでしょうか?
343 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 12:37:46 ] いいえ。 前者はフィールドで後者はプロパティです。
344 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 13:06:52 ] やることは一緒だろ
345 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 13:21:59 ] >>344 本格的に使ってみればわかる、全くの別物。
346 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 15:43:06 ] プロパティの方は、set時に値チェックをするもよし、内部状態を更新するもよし、get時に状況に応じて別のフィールドの値を返すもよし、例外を投げるもよし
347 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 16:01:42 ] 自分で作っている範囲なら、その程度の範囲かもしれないしが 例えば DataGridView とかプロパティーのみを表示するクラスとか色々あるだろ デザイナ上でのユーザーコントロールもそうだし そういった所まで使い始めるとどちらで設計するかが使い勝手の良さを決定的に変える。
348 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 16:02:45 ] >>346 例外を投げるとは具体的にどのように?
349 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 16:04:04 ] >>348 346では無いが、そのぐらいは自分で考えてみたらどうだい?
350 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 16:10:36 ] Class1 c1 = new Class1(); c1.exceptionMessage = ""; if (c1.exceptionMessage != string.IsNullOrEmpty) { MessageBox.Show(c1.exceptionMessage); c1.exceptionMessge = ""; }
351 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 16:18:06 ] >>350 C++上のメタプログラミングみたいだな、けど・・・でき悪い、キモイよ 使用したいなら更なる改善を要求する
352 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 17:35:21 ] NetworkStream.Flash()で強制送信だと思うのですがサーバー側はどうやって分けて受信したら 良いのでしょうか?
353 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 17:47:39 ] 分けて受信とかTCPにそんな機能無いから
354 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 17:50:29 ] >>353 そうするとデータの最後に何らかの〆データを付加するしかないのですね
355 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 17:58:46 ] >>346 getで例外投げるのはガイドライン違反
356 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:06:21 ] Nullable<>.Valueとか普通に例外投げてくるけどね
357 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:11:57 ] それはキャッチされることを想定してないから問題ないんじゃないの javaでいうところのチェック済み例外みたいなのをgetが投げちゃダメって意味だと思う
358 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:50:09 ] ref class Anime { private Dictionary<Int32, String> titles; } こんなクラスで Anime ccs = new Anime(); ccs.Title[0] = "さくらと不思議な本" Console.WiteLine(ccs.Title[0]); みたいに使えるプロパティを作るにはどうすればいいですか? 上記以外のコレクションへの直接操作は出来ない感じで。
359 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:53:15 ] >>358 >>341
360 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:58:46 ] >>358 まずC#に ref classはないだろ class Anime [ private Dictionary<int,string> titles; public Dictionary<int,string> Titles{ get{ return titles; } } } これで出来る
361 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:59:01 ] >>358 public Dictionary<int, string> Titles { get{ return this.titles; } }
362 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:03:48 ] >上記以外のコレクションへの直接操作は出来ない感じで。 インデクサを通さないと他の操作やりたい放題だよ public string this[int index] { get { return titles[index]; } set { if(titles.ContainsKey(index))titles[index]=value;else titles.Add(index,value); } }
363 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:05:50 ] それだと構文が異なるだろ。 C#は名前つきインデクサ作れないから、プロキシオブジェクトを返さないと無理だ
364 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:08:21 ] iterindexコードスニペットを使えば幸せになれるかも インデクサ自体の実装は>>362 みたいな感じで
365 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:11:05 ] そもそもそれ関数じゃだめなのか?
366 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:50:51 ] DictionaryBaseでも継承したネストクラスを作って公開するのが普通だろ
367 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:56:42 ] 今更非ジェネリックは無いわ
368 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:18:48 ] こうだろ class Anime { Dictionary<string,int> titles; TitlesIndexer indexer; public Anime() { titles = new Dictionary<string,int>(); indexer = new TitlesIndexer(titles); } public TitlesIndexer Titles{ get{ return indexer; } } public class TitlesIndexer { Dictionary<int,string> titles; public TitlesIndexer(Dictionary<int,string> titles) { this.titles = titles; } public string this[int index]{ get{ return titles[index]} } } } }
369 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:21:36 ] 358 じゃないですが、プロキシオブジェクトと聞いて・・・ 以前からある System.Collections.ArrayList.ReadOnly や System.Collections.ArrayList.Synchronized に対応する ジェネリックス版は無いのでしょうか? 見つからなくてとりあえず自作してしまっているので、あれば交換しておきたい所。
370 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:22:31 ] >>365 そんな最低な仕様は嫌だろ、Linqも何も使えなくなっちまう。
371 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:24:49 ] >>369 ないよ。なくなっちゃった。
372 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:30:53 ] List<T>.AsReadOnlyはある
373 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:38:24 ] >>372 ども、Asが付いたのか なんとも実装が中途半端だな、問題が見つかったのだろうか?
374 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:38:54 ] System.Collections.ObjectModel.ReadOnlyCollection<T>ってのもある。 Synchronizedは・・・まぁ手抜きサービスとしてはあまりに お粗末すぎるから廃止されたんじゃねーの?
375 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:41:39 ] >>358 敢えてタイトルの中身には突っ込まないでおこう。
376 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:59:46 ] オンラインMSDNが最近重いからオフラインにインストールしてみたのですが・・・ キーワード検索で「socket」って入れるとSystem.Net.Sockets.SocketExceptionしか出てこない こんなものでしょうか?、それとも使い方を間違えているのでしょうか? TcpClient tcp = listener.AcceptTcpClient(); このtcpからリモートのIPを調べる方法を知りたいのです
377 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:19:57 ] WindowsSDK入れたら表示できるようになったような気がする
378 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:27:27 ] >>376 TCPは知らないけど、 どのMSDNライブラリを入れたのか? フィルタが設定されていないか? これ入れた? ttp://www.microsoft.com/downloads/details.aspx?FamilyID=6ff3bc60-32c8-4c22-8591-a20bf8dff1a2&DisplayLang=ja
379 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:49:59 ] >>374 問題が分ってきた 使いにくい理由は、SyncRootをコンテナが持っているからで 外部から渡せば十分使い物になりそうな感じがするんだけどな。
380 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 22:36:06 ] >>377-378 VS2008ExpressJPNX1428694ってDVDでVCSやVCとかも入った物から入れました。 >>378 のサイズを考えると上記のDVDには一部しか入っていないようですです。 ありがとうございます。 しかし2464.6 MBはADSLには辛い・・・。
381 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 23:32:42 ] >>358 IList<>とIDictionary<>のインデクサの汎用ラッパー作ってみた public static class Indexer { public static DictionaryIndexer<TKey, TValue> GetIndexer<TKey, TValue>(this IDictionary<TKey, TValue> dict) { return new DictionaryIndexer<TKey, TValue>(dict); } public static ListIndexer<T> GetIndexer<T>(this IList<T> list) { return new ListIndexer<T>(list); } } public sealed class DictionaryIndexer<TKey, TValue> { private IDictionary<TKey, TValue> dict; internal DictionaryIndexer(IDictionary<TKey, TValue> dict) { this.dict = dict; } public TValue this[TKey key] { get { return dict[key]; } set { dict[key] = value; } } } public sealed class ListIndexer<T> { private IList<T> list; internal ListIndexer(IList<T> list) { this.list = list; } public T this[int index] { get { return list[index]; } set { list[index] = value; } } }
382 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 23:40:27 ] C#+ASP.NETの学習で何か良書はありませんでしょうか? (値段、初心者向け問わず、なるべく内容の濃いもの)
383 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:40:49 ] C#で www2s.biglobe.ne.jp/~sahmaro/RenameEx.htm のような処理を行いたいのですがどうすればよいのでしょうか? ヒントでも構いませんのでご教授いただければ幸いです。
384 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:49:26 ] >>383 シェル拡張したいってことかな? ↓こんな話が。 blogs.wankuma.com/shannon/archive/2007/01/06/54837.aspx
385 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:34:10 ] >>384 シェル拡張ではない気がします...... キーボードフックでF2キーを監視しているのでしょうか?
386 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:40:49 ] 普通にサブクラス化してるだけじゃないの?
387 名前:デフォルトの名無しさん [2008/03/31(月) 17:12:17 ] 配列の中にある数字をすべて足すにはどうすればいいですか? ちなみに配列は一次配列で内容はint型の整数です。
388 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 17:20:23 ] var arr = new { 1, 2, 3 }; var total = arr.Sum(); .NET 3.0かそれ以前なら普通にループ。
389 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 18:20:39 ] >>385 見るからにシェル拡張に見えるよ
390 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 19:13:52 ] >>388 new[]だろ?
391 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 20:45:58 ] C++から移行してきたんですが、C++用のDLLってC#で使えますか? MFCに依存しないWin32 DLLです
392 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 20:49:51 ] C++特有の機能を使っていないただの関数ならできる。 あとはCOMになっているやつもいける。
393 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 20:52:06 ] >>389 どうもありがとうございます。 シェル拡張部分をCやC++で書いて処理部分をC#で書く、と言う形になるのでしょうか?
394 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 20:53:57 ] >>392 てことは、クラスとかは無理ってことでしょうか
395 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 20:58:54 ] C++/CLIつかえばいいよ
396 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 21:07:27 ] IDisposable実装してDisposeしたいのですが、メンバのすべてを 自分で明示的にクリアしなければならないですか? たとえば、プロパティ用の一時変数とかも含めて。 public List<int> hoge; private string _piyo; private int _fuga; ↑がある場合は、↓みたいに全てクリアが必要なのでしょうか? hoge = null; _piyo = null; _huga = 0;
397 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 21:26:14 ] unmanagedなリソースだけでいい
398 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 21:37:07 ] 別にIDisposable実装したからってGCに特別な影響があるわけじゃないよ 使い終わったら実行してほしい普通のメソッドを実装するだけ
399 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 21:39:58 ] フィールドにDisposeメソッド持っているやつがいたら そいつは呼んでおけ。
400 名前:396 mailto:sage [2008/03/31(月) 22:02:30 ] >>397-399 はい、わかりましたー。
401 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 22:08:03 ] >>393 というか要するに複数バージョンのCLRが同一プロセスで動けないのが 問題なわけさ。エクスプローラは単一プロセスにシェル拡張読み込む ので別バージョンのCLR使うシェル拡張読み込んだ瞬間クラッシュしちまう それが解決出来るのならなんでもいい。といってもC++ネイチブ使ってアウト プロセスにしちまうくらいしか思い付かないがまあ確かに出来そう。
402 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 22:37:24 ] MSDN引きながらちょろちょろ半分コピペしながら書いてるけど 量が多すぎてC# .Net Frameworkがわかった気がしない・・・。 しかも、なにかやりたいことがあって、それが可能か不可能か を調べるのに、MSDNに記載されている箇所を正しく見つける ことができずに、ぐぐって見つけたどこかの海外のフォーラム とかブログの記事なんかで推測する始末・・・。
403 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:03:34 ] >>402 量が少なく過ぎよりははるかにマシだから。
404 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:07:43 ] どのみち外部参照するなら量がすくないほうが無駄時間へって親切
405 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:10:25 ] MSDNって日本語で読むと混乱するよなw
406 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:12:41 ] >>404 WPFの適当なドキュメントを見てみろ 今までなんだかんだいって頼りにしてたんだなと痛感する
407 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:13:40 ] MidPointRoundingの説明なんて誤訳に近いよな。
408 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:14:10 ] 外部でさがすんだろ? ならないほうがいいじゃん
409 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:19:46 ] 英語読めね
410 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:21:52 ] 勉強するだけでOK
411 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:25:28 ] いやMSDNを超軽くしてくれればそれだけでいい・・・。あの重さは凶悪だろ・・・。 あれだけで引く気がうせる。
412 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:31:23 ] ローカルな MSDN はいいんだが、 ネット上の MSDN は最悪だな。
413 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:33:37 ] まちがって最初にネット検索に設定してからローカルのMSDNをみることができない だれか助けて><
414 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:43:38 ] メモリ1Gしか積んでないからかもしれないけど、 ローカルでもSystem.Windows.Forms名前空間みたいに でかいページを表示しようとするときと移動するときは重い
415 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:49:44 ] MSDNライブラリのためにPCを買い換えなければならんとは。くちおしや。
416 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 09:05:42 ] typedefはないの?
417 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 09:34:04 ] 要らないの
418 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 09:50:39 ] listview+= mouseclickはアイテムが存在しない所では発生しないみたいですが、 これをlistview内であれば発生するようにしたい場合はどうしたら良いでしょうか?
419 名前:418 mailto:sage [2008/04/01(火) 09:54:13 ] mousedownか、コントロールとコンポーネントの違いすら理解していなかったorz
420 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 16:34:24 ] DataTable.PrimaryKeyを設定したものをWriteXmlした時にファイルの内容を見てみると プライマリーキーらしい情報が見つからないのですがこれは先頭にあるカラムが自動的に プライマリーとして扱われるという認識で合っていますか?
421 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 16:58:56 ] 合ってない。 プライマリキーの情報を書き込みたいなら XmlWriteMode.WriteSchema が必要。
422 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 17:01:03 ] クラスなんかC++同士でも怪しいだろ
423 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 19:28:25 ] >>406 同感、なんだかんだいってもMS頑張ってるよ、もっともっと頑張って欲しいが WPFにしてもLINQにしても、めちゃめちゃ使えるのに、リバースエンジェニアリング的なことまでやらないと理解できないのはあまりに寂しい。 >>393 マネージドコードが使えるシェル拡張が強く欲しいよな しかし、現状では素直にComで作っとけ。
424 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 20:53:24 ] listboxでアイテム削除を繰り返しているとインデックスがずれるらしいのですが、どうすれば良いですか? たぶんこんな感じにずれてます。 index 値 1 AAA 2 BBB 3 CCC 2番を消すと 1 AAA 2 CCC
425 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 21:25:35 ] どうと言われてもそういうものだから仕方がない。 何をしたいのか具体的に書いてくれないと、書きようがない。 ヒントとしてはItemsに設定できるのはObjectで、 SelectedItem系でそのObjectが取得できるってこと。
426 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 21:56:48 ] わかりました。 ありがとうございました。
427 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 22:16:12 ] やっぱり分かりませんでした。 自己定義のクラスのオブジェクトを渡すと、クラス名が表示されてしまいます。 表示名を設定する方法を教えて下さい。
428 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 22:18:18 ] 自己解決しました。
429 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 22:31:13 ] 菅直人「1+1は、いったい何なんですか?」 小泉 「2です」 菅直人「ですから、1+1なんですよ。質問に答えてください」 小泉 「2ですね」 菅直人「全く質問に答えていない。国民が聞きたいのは1+1なんですよ!」 小泉 「どうあっても2です」 菅直人「全く説明になっていません」 小泉 「誰が何と言おうと2です」 菅直人「うまく逃げましたね。あなたはいつもそうだ」 小泉 「……?」 菅直人「あまり国民をなめないで頂きたい!」 小泉 「ですからねぇ・・・原則として、1+1は2、 これは揺らがない、私はずっとそうお答えしています」 菅直人「いいでしょう、最後に私は、小泉総理は1+1について 国民をあざむいたと、そう申し上げて答弁を終了します」
430 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 22:35:43 ] コピペ君って馬鹿だな、まで読んだ。
431 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 22:53:45 ] updateで古い物を上にしてソートしたいのですがキャストに失敗してしまいます。 order.Field<DateTime>("update")でフィールドとDateTimeとしてソートしてくれる のではないのでしょうか?。updateにはDateTime.Now.toString();が入っています。 EnumerableRowCollection<DataRow> query = from order in table.AsEnumerable() orderby order.Field<DateTime>("update") select order; >>421 ありがとうございます。
432 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 23:23:16 ] 列updateはstring型じゃないのか? だとすれば、こうだろ order.Field<string>("update")
433 名前:431 mailto:sage [2008/04/01(火) 23:32:17 ] 日付としてソートしたかったのですがDateTime.Nowの形ではだめなんですね カラムの設定を指定したらいけそうです。
434 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 03:07:56 ] 最近C#の入門書を購入したのですが、やはり内容を丸暗記したほうがいいのでしょうか?(猫でもわかるC#プログラミングという本で400ページくらいのものです) グーグルで検索してみると、暗記しろと書いてあるところもあれば 必要最低限のところだけ覚えればいいと書いてあるところもあり どうしたものかと右往左往しています もし仮にこの本を丸暗記したとして次のステップアップはどのようにすればいいのでしょうか?
435 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 03:42:13 ] 猫プログラミングに載ってるぐらいの初歩的な内容は覚えておいて損はない とは言えると思うけど、余程暇で無い限り丸暗記する必要はない。 (こんな機能があるってだけ覚えておけば、必要な時に思い出したり調べることが出来る) 次のステップは・・何を作りたいかによって全然違うから何とも言えない。
436 名前:434 mailto:sage [2008/04/02(水) 04:28:06 ] >>435 ありがとうございます 本に書いてあることさらっと全部やってみて、大事そうなところをあとから復習してみようと思います
437 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 10:47:50 ] よく使うものはその気がなくても気が付いたら覚えている。 けど大事なところは思い出せないんだけどね。
438 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 11:22:19 ] MessageBoxのボタンを英語で表示する方法って無いでしょうか キャンセル→Cancel みたいな FormのLanguageを英語にしてみたけど日本語のままだったorz
439 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 11:29:16 ] >>438 CurrentUICultureを英語にしてみるとか。
440 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 11:37:46 ] リンクではないブラウザに表示されている画像をD&Dする方法はあるのでしょうか? DragEnterを書き換えないと無理だとハードルが高すぎるのですが・・・
441 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 12:15:48 ] >>440 ファイルパスが含まれてるならキャッシュから持ってこれるかもしれない。 DeviceIndependentBitmapとか持ってたらそれから作れるな。面倒だけど。 DragEnterの書きかえって何?
442 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 12:31:43 ] >>436 っていうか今時のプログラミング関係の本の読み方は基本は「乱読」だと思うよ。 一冊の本を熟読なんていう受験勉強スタイルは時間のムダだと思う。 これ一冊読んでおけばOK、なんて網羅的は本はないし、 書くほうも恐らく精読されることを想定して書いてない。 あと個人的意見として、「猫でも〜」の著者の本はウンコだと思う。
443 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 12:33:43 ] >>441 それがブラウザ上の画像からD&DをしようとするとDragEnterイベントが起きないのです。 こういう場合はDragEnterをオーバーライド?とかしないといけないのでしょう?。
444 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 12:45:08 ] >>443 ドラッグできないものならドロップ先でなにしようがD&Dできない。 ドラッグできるものならドラッグ元が制限かけない限りDragEnterは発生する。 何をドラッグさせるかはドラッグ元次第。 まずドラッグできてるのかってところから確認。
445 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 14:40:19 ] ていうかブラウザから画像D&D出来るよ
446 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 15:16:00 ] HttpWebRequestでHTMLを取得・解析するプログラムを作っているのですが、 あるサーバーのHTTPヘッダーが 本来CRLFでなければならない部分がLFLFになっているらしく、 アクセスすると「サーバーによってプロトコル違反が発生しました. Section=ResponseStatusLine」 というエラーが出て落ちてしまいます これを回避するにはどうしたらいいでしょうか? よろしくお願い致します。
447 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 15:34:30 ] 構造体作るたびにEquals(構造体),Equals(object),==,!=,GetHashCode実装するのが 面倒なんだけど何とかならない?
448 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 15:45:04 ] >>446 HttpWebRequest使うのを諦めてSocket or TcpClient使う
449 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 15:47:10 ] >>448 ありがとうございます。 TcpClientは使ったことないですがやってみます
450 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 15:59:48 ] >>446 UseUnsafeHeaderParsing でどうにかならんかな?
451 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 18:04:44 ] >>450 ありがとうございます System.Configuration.dllをアセンブリ参照に追加して、 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); SettingsSection section = (SettingsSection)config.GetSection("system.net/settings"); section.HttpWebRequest.UseUnsafeHeaderParsing = true; で行けました。
452 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 19:09:26 ] VS2008を使って.net framework3.5で開発してたんですが 2.0対応にしようと思って、プロジェクトのプロパティのアプリケーションタブの対象フレームワークを2.0にして 3.5及び3.0をアンインストールしてからソリューションを開いてみたら、 version3.5のmicrosoft.build.engineがありません、と言われて起動出来ませんでした。 なにかアドバイスもらえませんか?
453 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 19:14:06 ] ターゲットバージョンを指定できるとはいえ、ビルドに使ってるのは3.5のコンパイラだし。 2008に必要なランタイム削れば、そら動かんのは当たり前だろ。 2008のIDEだけ欲しかったとか? あてが外れたね。
454 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 19:23:06 ] 開発者がランタイム嫌うとかアホかと
455 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 19:48:58 ] >>438 最悪、Win32 APIのMessageBoxExか自前でやるか。
456 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 19:49:03 ] いつもの人なんだろうな、もうプログラム組むのあきらめたら?
457 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 20:14:38 ] >>444-445 これだと画像を引っ張った時に e.Effect = DragDropEffects.None;の状態になるので イベントが起きていないと勘違いしていました。すいません。 でも、e.Data.GetDataPresent("UniformResourceLocator")にマッチするのに何故でしょう?。 イベントが二回起きているからなのかな?。 private void treeView_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent("UniformResourceLocator") || e.Data.GetDataPresent(DataFormats.FileDrop)) { e.Effect = DragDropEffects.Link; } else if (e.Data.GetDataPresent(typeof(ListViewItem))) { e.Effect = DragDropEffects.None; } else { e.Effect = DragDropEffects.None; } }
458 名前:457 mailto:sage [2008/04/02(水) 20:18:32 ] お騒がせしました。 画像の場合、DragDropEffects.Linkだとだめなのですね。 e.Effect = DragDropEffects.Copy;にしたら上手く行きました。
459 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 21:09:56 ] >>438 MessageBox は現在の MUI (または言語バージョン) に合わせて表示するので、変更はできないし、 できるだけそういう処理をすべきではない。 いっそのこと日本語を含む多言語対応 (Localizable = true) にしてしまうのが良いのでは?
460 名前:457 mailto:sage [2008/04/02(水) 21:13:12 ] わけわからん。.netがバグってる?とか言ったら突っ込まれるのだろうか・・・。 デスクトップからファイルをドロップ → × ブラウザから画像ファイルのドロップ → × ブラウザからハイパーリンクリンクをドロップ → ○ おまけに他の.netアプリでもD&Dできなくなったしorz 再起動してくるよ・・・ private void treeView_menu_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent("UniformResourceLocator") || e.Data.GetDataPresent(DataFormats.FileDrop)) { if (e.Data.GetDataPresent("DeviceIndependentBitmap")) { e.Effect = DragDropEffects.Copy; } else { e.Effect = DragDropEffects.Link; } } else { e.Effect = DragDropEffects.None; } }
461 名前:457 mailto:sage [2008/04/02(水) 21:16:55 ] 再起動したら直ったw 何のこっちゃ
462 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 22:07:47 ] >>459 え? UIスレッドのCurrentUICultureをいじれば普通にできなかったっけ?
463 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 23:52:50 ] >>462 459 じゃないが、試してみた、駄目っぽいな。
464 名前:459 mailto:sage [2008/04/02(水) 23:57:35 ] >>462 Windows Forms の MessageBox.Show は実質 MessageBox 関数 (API) の リダイレクトだから、CurrentUICulture が効かないんだな。 独自にダイアログを作れば Thread.CurrentUICulture でいいと思うけど。
465 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:04:14 ] MessageBoxモドキを自分で作るしかないのかねぇ
466 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:05:15 ] www.atmarkit.co.jp/fdotnet/dotnettips/314winmultilang/winmultilang.html こんなん見つけてきた、国際対応の仕方だけど結構便利そうだな。 さすが世界中のソフトを売りさばいている会社だけの事はあるw
467 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:11:31 ] Textboxを継承してTextbox2を作成。 これをツールボックスからGUIでFormに 配置するのって無理?
468 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:14:35 ] できるよ。
469 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:14:39 ] 一度ビルドすればツールボックスに追加される。
470 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:23:01 ] 自分で作ったコントロールってそれから別のプロジェクト作るときもツールボックスに入るの?
471 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:24:21 ] 試せよ、クズ
472 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:24:49 ] >>470 そのコントロールが入っているアセンブリに参照設定すればOK
473 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:29:52 ] >>471 スレタイ嫁
474 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:32:13 ] 気をつけろ、延々こういう事をする奴が一人いる 知らないんじゃなくてわざとだ
475 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:36:55 ] >>452 見たいな奴を見かけたら無視する方針でよろしく
476 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:41:42 ] >>472 なるほど DLL化しておくのが一番いいんですかね
477 名前:467 mailto:sage [2008/04/03(木) 00:45:14 ] お、できるんか。ヤッタ! できんと思ってた。やってみるわ。
478 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:53:30 ] >402 おれもMSDNでキーワード拾って 最後はググってる・・・。 MSDNがいまいち分からん。 MSDN使い方マニュアルがほしい・・・
479 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 01:05:29 ] MSDNのWEBはブラウザの検索エンジンに登録して ガシガシ検索が正しい使い方だと思ってる
480 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:06:02 ] ゲーム作りたいんですが Visual C# 2008 Express Edition で十分ですかね?有償版にしかない機能とかはなんなんでしょうか?
481 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:12:00 ] 十分 デバッガがちょっとだけ弱いけど工夫次第でどうにでもなる
482 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:13:21 ] C#でもActiveXとか使えますか?
483 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:13:59 ] >>481 なる。デバッガとかですか。トンクス。 たしかVisualC++だとMFCとか使えなかった気がしたんで心配しまちた。
484 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:14:10 ] XNAは今のところVC#2005Expressだけだった気がする
485 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:16:51 ] >>484 XNAってあのXBOX360上でも動くランタイムみたいなやつっすかー。 PCゲームオンリーでXNA使うメリットってなんかありますかね? とりあえずDirectXさえ動いてくれればいいかなーとか思ってたんすが・ω・;
486 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:26:16 ] あるMethodInfoオブジェクトが表すメソッドが,特定の型のデリゲートにバインドできるかどうか 調べる方法はありますか? 試しにCreateDelegateしてみるしかないのでしょうか
487 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:29:07 ] www.microsoft.com/japan/msdn/vstudio/products/vs08/compare.aspx 目立った所で、MSIインストーラーがないので、公開するのが面倒くさいかもしれない ClickOnce の使えるレンタルサーバは限られている。 フリーのインストーラを使えば問題ない。 XAMLでゲームを作るなら、ちょっと不足があるかもしれない。 VSSでバージョン管理したいなら、使えないので注意が必要。 フリーソフト類と組み合わせて開発するつもりなら「マクロ、アドイン、パッケージは使用不可」に注意。
488 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:33:44 ] >>487 なるほどーすごい参考になりました。ありがとうございます(__) たしかにmsiがないのは公開するときダリーですね。
489 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:51:15 ] 5年前のだけど今から読んでも役に立つ? これ↓ www.amazon.co.jp/gp/product/images/4891003529/
490 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:52:09 ] いいえ
491 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:00:04 ] System.Windows.Forms.Control control = new System.Windows.Forms.Control(); いまさらだけど、こういう宣言って悠長じゃね? var control = new System.Windows.Forms.Control(); オブジェクトの型はオブジェクト自身が知ってるからこれでいいんじゃね?
492 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:01:04 ] ゆうちょう?
493 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:04:03 ] そのためにvarがあるんだが
494 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:07:10 ] 冗長だな。
495 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:08:40 ] >>485 メリット以前にC#でDirectX直触りするんならレガシーのぞいてオフィシャルは XNAしか茄子。 本当に直触りも出来るけど素人お断り&とても大変&あれ以上の完成度 難しい。…まあXnaがかなりよく考えて作られてるってことだが
496 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:12:24 ] >>484 2.0からEE縛り消えた。C#のみサポート縛りは確かあり
497 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:13:55 ] >>495 なるる。なんかWikiみるとXNAにはフレームワークも用意されてるっぽいし、 サンプルが充実してそうでつね。ぱっとみ気になるのは 「日本語の表示が非常に難しい」 「ジョイパッドはXBOX360コントローラーだけ」 ってところかな?wまぁ実際触ってみます。
498 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:29:15 ] >>497 SpriteFont出来たから日本語の表示は楽になった。ビルドに時間かかるぐらい。 というか文字表示はDirectX使うならどっちにしろ大変。SpriteFontは かなりいい落とし所。 DInputはMarshalingに慣れてる人なら直で触ってもサクッと書けてしまう ぐらいのコード量かと。全機能綺麗にと言われたらちょっと大変かもだが
499 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:58:33 ] 遅延バインディングっていうのかな? XMLにButton1を押した時にはC:\XXX\AAA.dllのBBB.bbbクラスのcccってメソッドを呼ぶ ってな感じで記入して、記入した内容を元にプログラムを実行したいです。。 XMLを書き換えればソースを書き換えなくても動くようにしたいんです。 まだまだC#はかじったばかりですが、どのあたりを勉強すればいいですか? 検索のキーワードとか、ヘルプで見るネームスペースとかだけでもいいから教えてください。
500 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 00:17:34 ] >>498 なるほー。情報マジどもです(__) XNAさわりまくってみまつ。
501 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 01:03:57 ] SystemBrushes.Highlight から取得したブラシを 使い終わった後でDisposeしようとしたら下記の例外が発生しました。 System.ArgumentException はユーザー コードによってハンドルされませんでした。 Message="アクセス許可が有効でないため、Brush を変更できません。" Source="System.Drawing" SystemBrushesから取得したブラシはDisposeしてはいけないのでしょうか。# パフォーマンス上の理由? それとも何か重大な勘違いをしているのでしょうか。
502 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 09:16:29 ] >>501 自分で作ってないものは破棄しちゃ駄目、というのが原則。
503 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 10:24:02 ] >>502 なるほど次から気をつけます。
504 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 10:28:01 ] >>499 WPF(XAML)なら標準でできる WinFormsならリフレクションを駆使して自力で頑張る
505 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 10:58:23 ] >>501 まあプロパティで取得するオブジェクトだから、中の人がCloneを返すようにしていたならば当然Disposeして 問題ないのだが(むしろしないとまずい)、おそらく中の人はそのまんま参照を返しているみたいなので その例外が出たんだろうね。 要するに他にもいろんなところで使われているオブジェクトの参照なので勝手にDisposeしてはいけないということかな。 仮にそのオブジェクトを変更したりする必要が出てくるような場合はCloneを受け取ればよい。 using (var sb = SystemBrushes.Highlight.Clone() as SolidBrush) { Hoge(); } これなら例外発生しない。
506 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 11:25:44 ] >>505 あーなるほど、中ではそういう事になってるんですね ありがとうございます。とても参考になりました
507 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 13:17:50 ] 質問。 超初心者で、まずハロワのプログラム書いたんだけど、SDKでコンパルして .exeのやつ作って実行しても何か黒い画面が一瞬表示されるだけで何書いてるかも 読めない。これって俺の書いたのが悪いのか?メッセージループ?か何か使ってないから?
508 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 13:20:34 ] >>507 コマンドプロンプトから実行
509 名前:507 mailto:sage [2008/04/04(金) 13:33:59 ] SDK コマンドプロンプトから実行したらできた! ありがとう>>508
510 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 17:07:42 ] すみません、質問よろしいでしょうか。 C#でスクリーンセーバーを一時無効化する事って出来るんでしょうか? マウスポインタを強制的に動かす方法くらいしか思いつきません。 又その場合、実際のマウス操作と認識して無操作時間がリセットされるのでしょうか? どなたかお力をお貸し下さい。お願いします
511 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 17:48:04 ] TabControl上に配置したTextBoxにtextBox1.Text == "Text;" というように文字列を表示しようとすると 「静的でないフィールド、メソッド、・・・でオブジェクト参照が必要です」 とエラーになってしまうのですが、どのようにすればいいですか?
512 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 18:03:38 ] 511 が 記述ミスでありますように…
513 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 18:29:40 ] ; ; ; ; ;
514 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 19:14:11 ] 2つ
515 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 20:20:47 ] 常駐プログラムって、どうやったらできるの??
516 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 20:27:34 ] 普通のプログラムだよ 特別なことは何も無い
517 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 20:44:16 ] タスクトレイの事かな
518 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 20:54:26 ] サービスじゃね
519 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 23:48:42 ] VB.NETとC#の演算子の違いに戸惑っています。 VB.NETで Dim FileName As String = "C:\WINDOWS\system32\xvid.ax" If IO.Path.GetExtension(FileName).ToLower <> ".dll" Then Console.WriteLine("DLLじゃないよ") End If は出来るのにC#で string FileName = @"C:\WINDOWS\system32\xvid.ax"; if (System.IO.Path.GetExtension(FileName).ToLower != ".dll") { Console.WriteLine("DLLじゃないよ"); } と出来ないのは何故でしょうか。 また、VB.NETと同じように処理可能にする方法はないでしょうか。
520 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 23:54:11 ] C#ではメソッド呼び出しの括弧は省略できないからToLower()と書く必要がある VBでも括弧は省略しない癖を付けた方が…
521 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 23:59:45 ] >>520 orz こんな単純ミスだったんですね…。 VB.NETの場合、"()"が必要な場合はインテリセンスが自動補完してくれるので気付きませんでした。 これからは気を付けます。
522 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:28:04 ] >>504 その自力で頑張るの部分をもう少し詳しくお願いできませんか? System.Windows.Forms.Formを使用してます。
523 名前:510 mailto:sage [2008/04/05(土) 00:33:58 ] どうかお願いいたします。
524 名前:デフォルトの名無しさん [2008/04/05(土) 01:56:53 ] TableLayoutPanelからコントロールを取り除くとき for (int i = 34; 7 <= i; i--) { tlp.Controls.RemoveAt(i); } のように後ろからやっていく方法と for (int i = 34; 7 <= i; i--) { tlp.Controls.RemoveAt(0); } のように前からやっていく方法とで、どちらかのほうがいいということはありますか? それとも、たいした違いはありませんか?
525 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 02:02:56 ] 後者は for (int i = 34; 7 <= i; i--) { tlp.Controls.RemoveAt(7); } でした、すみません
526 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 02:37:55 ] C#のフォームを使うプログラムで、複数フォームにまたがるデータは、 どこに格納するのが慣例なのでしょうか? VBではモジュールがよさそうですが。
527 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 02:48:47 ] 1. Application クラスの public static フィールド 2. フォームのコンストラクタで渡して使う 3. Form.Show の前にプロパティで渡す
528 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 09:02:56 ] こういう場合はどうやって変換したら良いのでしょうか? obj = new (???) c; それとも、こういう使い方をしてはいけないのでしょうか? public class A { public A() { new B(this); } public A_C() { // } } public class B { public B(object c) { c.A_C(); // ← こういう雰囲気の事をしたい } }
529 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 09:09:47 ] キャストすればいいんじゃね?
530 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 09:24:51 ] なんでobjectで受け取ってるのかが問題だな
531 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 09:30:23 ] そのキャストの仕方や受け取り方がわからない Listview lv = (ListView) sender;とかと同じ理屈だとは思うのですが・・・ ()の中に何を入れてよいのかわかりません
532 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 09:33:31 ] Aだろ。
533 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 09:39:04 ] あぁ、一生懸命classとか入れていました・・・。 例えばこのobjectがどのクラスか不明だった場合はどうしたら良いのでしょうか?
534 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 09:41:59 ] どうしたいんだよ?
535 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 09:43:13 ] 先にc#の仕様を一通り理解すれば全て解決するパターンだな。
536 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 09:53:20 ] >>533 どのクラスか不明って少なくともA_C()を実装してるクラスが一番の大元だろう? そのクラスにキャストしれ っつか、そのクラスで受け取れよ。
537 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 09:57:37 ] というか、そもそも何をしたいのかがよくわからん。
538 名前:533 mailto:sage [2008/04/05(土) 10:03:27 ] えっと、自分が使いやすいようにまとめてある非同期ダウンロードのライブラリ的なものがありまして ダウンロード完了時のイベントを呼び出し元で側で受け取りたいのです。 感じとしては以下のような形です。 public Download(string uri, string filepath,object obj) { if (dc == null) { dc = new WebClient(); dc.DownloadFileCompleted += new AsyncCompletedEventHandler(obj.DownloadCompleted); } dc.DownloadFileAsync(new Uri(uri), filepath); }
539 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 10:07:20 ] objectじゃなくてAsyncCompletedEventHandler受け取れば済む話じゃね? つか普通そのオブジェクトがイベントを伝播する形にするんじゃね?
540 名前:533 mailto:sage [2008/04/05(土) 10:16:03 ] 言葉を知らないから説明できない もやっとぼーるを投げます お騒がせしました
541 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 10:43:33 ] よくわからんが特定のメソッドを呼び出したいんだと予想。 で、いろんなパターンがあって、全てのクラスに共通する基本クラスは作成できないと解釈。 呼び出したいメソッドを定義したインターフェイスを作って、 それぞれのクラスでそのインターフェイスを実装。 メソッドのパラメータはそのインターフェイスの型の型にする。 デリゲートで使えるかどうかはしらん
542 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 11:30:10 ] デリゲートかイベントで十分
543 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 11:31:47 ] >>538 MethodInfoあたりでも使えば、問答無用で好き放題できるだろうけど その前に可能であればC#らしいスタイルを追求したいと思う自分がいる。 1.呼び出してほしいインターフェイスを定義して、呼び出されたいクラスが実装する。 Downloadが完了次第、Downloadを持つクラスがそれを呼び出す。 参照が無くなったりDisposeされたりといった問題があるなら、それを加えてもう一度やりたい事をここで説明。 2.主従関係を逆転して考えてみる。 Download を持つクラスに event を定義して、呼び出されたいクラスがコンストラクタ等で自ら登録する。 3.MethodInfo を使って、まさに当初の質問通りの処理をする。
544 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 11:44:05 ] この辺読め msdn2.microsoft.com/ja-jp/library/ms228969 (VS.80).aspx
545 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:17:31 ] アンマネージドのC++で作ったDLLの関数をC#で使いたいのですが DLL 'testdll.dll' の 'f'' というエントリ ポイントが見つかりません。 と例外が出てしまいます。 やり方が間違っているのでしょうか? DLL側は class c { public: static __declspec(dllexport) int f(); }; int c::f() { return 777; } C#側は using System.Runtime.InteropServices; using System; namespace ConsoleApplication1 { class Program { [DllImport("testdll.dll")] public static extern int f(); static void Main(string[] args) { Console.WriteLine(f()); } } } こんな感じになってます。 testdll.dllとtestdll.libはC#側のフォルダに入れてます。
546 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:28:20 ] >>545 C++側のインターフェイスをCスタイルで書いてextern "C" とする。 C++の識別子は、どのようなスタイルになるのかはアンマネージドの範囲でも一切保障されない。
547 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:33:31 ] >>545 C++側をcomで作って、C#側はプロジェクトの参照設定よりdllを追加(COMタブより追加可能)
548 名前:533 mailto:sage [2008/04/05(土) 12:44:25 ] 主従関係に困惑したりしながら色々と試行錯誤していたのですが読み出す時にイベントを付加する事にしました。 でも、今度は何のダウンロードが完了したのかわからない。未だに見慣れないのですがMSDNと格闘してきます!。 AsyncCompletedEventHandler e = new AsyncCompletedEventHandler(this.DownloadCompleted); FileDownload(path, filepath, e); public void DownloadCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) { System.Net.WebClient m = (System.Net.WebClient)sender; //m.download_url = ??? }
549 名前:545 mailto:sage [2008/04/05(土) 12:49:16 ] >>546 extern "C"{ __declspec(dllexport) int f() { return 777; } } DLLをこう書き直したのですが結果は変わりませんでした。 これはCスタイルではないって事でしょうか??
550 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:53:07 ] __stdcall
551 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:54:55 ] >>549 CallingConventionを合わせる
552 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:58:28 ] >>548 まずC++をしっかり勉強してからの方が無難かもしれないね。
553 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:59:29 ] >>552 はアンカミス >>548 -> >>549
554 名前:545 mailto:sage [2008/04/05(土) 13:47:47 ] >>550 extern "C" { int __declspec(dllexport) __stdcall f(); } int __declspec(dllexport) __stdcall f() { return 777; } DLLをこう変更しましたがだめでした。 DLL側のコードを書いてくれませんか?
555 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 13:57:53 ] とりあえずCOMとIDLについて軽く勉強した方がよくね
556 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 14:05:22 ] P/InvokeにCOMもIDLも関係ないだろ。適当教えるなよ
557 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 14:09:12 ] dumpbin /exports でdll調べてみたら
558 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 14:10:40 ] >>554 C:\>type test.cpp extern "C" __declspec(dllexport) int f() { return 777; } C:\>type test.cs using System; using System.Runtime.InteropServices; namespace Test { class Test { [DllImport("test", CallingConvention=CallingConvention.Cdecl)] static extern int f(); static void Main() { Console.WriteLine(f()); } } } C:\>cl /LD /nologo test.cpp test.cpp ライブラリ test.lib とオブジェクト test.exp を作成中 C:\>csc /nologo test.cs C:\>test 777
559 名前:545 mailto:sage [2008/04/05(土) 16:14:51 ] >>558 /nologoと付けたら出来ましたが、IDEからビルドすると例外エラーです。 皆さんはアンマネージドのC++でDLLを作ってC#とかから呼び出したりしないんですか?
560 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 16:21:03 ] >>559 ふつーは .def 使ってエクスポート名をきちんとしておく。
561 名前:560 mailto:sage [2008/04/05(土) 16:27:33 ] つまりこういうことな。 //test.cpp extern "C" int __stdcall f() { return 777; } //test.def LIBRARY EXPORTS f //test.cs [DllImport("test.dll")] int f();
562 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 16:31:31 ] >>559 俺だったらC++/CLIで作る
563 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 16:55:54 ] >>561 コンパイルすら通らないんですが。。 //test.cpp extern "C" __declspec(dllexport) int f() { return 777; } //test.def LIBRARY "testdll" EXPORTS f //test.cs using System; using System.Runtime.InteropServices; namespace Test { class Test { [DllImport("testdll")] static extern int f(); static void Main() { Console.WriteLine(f()); } } こうですか? それでも例外出ますね。
564 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 17:15:55 ] >>563 あーごめんC#側で extern と static いるの忘れてた とりあえずそのコードだとC側の呼び出し規約が間違ってる。def使う場合 dllexportはいらない
565 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 17:19:39 ] まずは、dumpbin 使え。
566 名前:564 mailto:sage [2008/04/05(土) 17:20:20 ] ごめんもう一個 .defはリンカの設定に追加する必要がある。VSは作ったら勝手にやって くれた気もするが
567 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 17:21:52 ] >>565 Dependency Walkerでもいいけどな
568 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 17:51:54 ] >>566 モジュール定義ファイルにtest.defを追加すればいいんですかね?? それでもビルド出来ないんですが。。 error C3872: '0x3000': この文字を識別子で使用することはできません error C2065: ' return' : 定義されていない識別子です。 error C2143: 構文エラー : ';' が '定数' の前にありません。
569 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 17:53:19 ] 一行ヒントしか書かないやつは分からないのに答えてる法則。 そしてその後に関連される単語が出てくると「だから>>○○で言っただろ」と得意気な顔をするw
570 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 17:55:23 ] >>568 それ全角スペースだろ死ねよ。
571 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 17:59:11 ] まじ、dumpbin知らないってことか? DLLの情報見れば解決する話だろうが。
572 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:00:06 ] 1行ヒントはクグればすぐ分かるということだろう。
573 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:05:55 ] たった1行のコマンド実行するだけなのに、無視する理由が分からん。
574 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:08:43 ] >>568 そこかよorz そのコードインデントに全角スペース使ってるからインデントは そのままコピペするんじゃなくてタブか半角スペースにきちんと 置換してくれ >>571 dumpbin 使おうが Dependency Walker 使おうがエクスポートされた 名前は見れるけど、「どうやってその名前を作るの」がわからない、 つまり確認しか出来ないから直接解決にならんだろ まぁそれらを知っておいてかつ確認ぐらいはしてほしいがマジで まぁふらっとだから
575 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:15:20 ] >>573 全角スペースを使うぐらいだから、コマンドプロンプトの使い方が分からないんだよ。 >>574 その名前で呼び出せば使えるんだから、命名規則の仕様まで分からなくてもいいと思うが。
576 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:18:13 ] >>575 あそっか。C#側いじればいいのか。
577 名前:545 mailto:sage [2008/04/05(土) 18:20:34 ] >>574 ありゃ。恥ずかしい>< 全角混じってるだけでした。 ですがC#側で呼び出せません。。 むぅ…
578 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:21:56 ] >>577 だから呼び出し規則あわせろってずっと言ってるだろ。 今のコード貼ってみろよ
579 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:22:12 ] >>575 それじゃ根本的な解決になってないだろ
580 名前:545 mailto:sage [2008/04/05(土) 18:25:29 ] >>578 どこでそんなこと書いてありますか? //test.cpp extern "C" int __stdcall f() { return 777; } //test.def LIBRARY EXPORTS f //test.cs using System; using System.Runtime.InteropServices; namespace Test { class Test { [DllImport("test.dll")] static extern int f(); static void Main() { Console.WriteLine(f()); } } 今のコードはこうです。 DLL側とC#側のコード貼ってください。
581 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:26:44 ] 動けばいいんじゃないの?
582 名前:545 mailto:sage [2008/04/05(土) 18:28:05 ] C++で作ったDLLをC#で呼び出すときに皆さんはわざわざコマンドプロンプトを使うんですか? ツールを使って名前を調べて呼び出したりするんですか?
583 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:29:42 ] こいつ何言ってんだ。DLL中身みないでどうやって名前調べるんだよ。 もしかしてスピリュアルってやつ?
584 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:35:34 ] >>582 当たり前だろ。 dumpbin /exports test.dll の結果見せろよ。
585 名前:545 mailto:sage [2008/04/05(土) 18:38:41 ] えと、何か勘違いしてるかもしれないのでご指摘ください。 イメージとしてはWin32APIを呼び出すときのように使いたいのです。 [DllImport("user32.dll")] extern static int RegisterHotKey(IntPtr HWnd, int ID, int MOD_KEY, int KEY); こんな感じで呼び出して利用できました。 なので自作のDLLも同じように出来るのかな?と思ったわけです。 C++のDLLをC++で呼び出したり、 C#のDLLをC#で呼び出すときは楽なのに、 マネージドからアンマネージドを呼び出すのは大変ですね…。
586 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:39:14 ] >>584 あんまりいじめるな。 お前がコード張ればいいだろ。
587 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:39:34 ] >>580 それコンパイルしたら普通に上手く動くぞ。 お前さんのやり方に問題があるとしか思えん。
588 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:40:29 ] >>586 俺は>558ではった
589 名前:545 mailto:sage [2008/04/05(土) 18:42:49 ] >>587 ありゃ。 もう一度新規プロジェクトからやり直して見ます!
590 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:46:35 ] >>561 だが・・・うーん、これでexport 出来るはずなのよね。 別の原因の気がするので ・dumpbin の結果 VS のコマンドプロンプト(たぶんスタートメニューのツールの 下あたりにある)を起動して、生成した C++ な DLL に対して dumpbin /EXPORTS "test.dll" みたいにしてその結果を張ってください ・探索ロケーション周り 当然 C# な exe と C な DLLは同じフォルダにないとダメですよ。 あたり確認してみてくれ
591 名前:545 mailto:sage [2008/04/05(土) 18:56:11 ] >>590 両方ともプロジェクト作り直したら通りました; dumpbinの結果は File Type: DLL Section contains the following exports for test.dll 00000000 characteristics 47F74A82 time date stamp Sat Apr 05 18:46:42 2008 0.00 version 1 ordinal base 1 number of functions 1 number of names ordinal hint RVA name 1 0 00001000 f = _f@0 Summary 1000 .data 1000 .rdata 1000 .reloc 1000 .rsrc 1000 .text こんな感じでした。お騒がせしました>< DLLは作ったことないので色々いじって見ます。
592 名前:545 mailto:sage [2008/04/05(土) 18:59:29 ] >>590 あ、すみません、言い忘れてました。 ありがとうございました!
593 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:01:31 ] >>582 人の作ったDLLなら見る。 だって、C/C++のヘッダを見ただけでは分からないこと(修飾名)があるから。 WindowsシステムのDLLはそれがもう分かっているし、 585のように単純にDllImportを書くだけで使えるようになっているから見ない。 自分で作ったDLLも見ない。どうなっているかは自分で決めた通りなのだから、 調べるまでもない(思い通りになっているかを確認することはあるが)。
594 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:05:01 ] 自分で決めても見つからないとエラー出たら見るしかない。 今回はこのパターン。
595 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:12:33 ] >>593-594 ほぅほぅわかりやすい。 勉強になりました。
596 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:16:48 ] うぁっ、C++呼び出しの人まだやってる、C++使えないのなら無理して使うなよwww 一応コマンドラインに落ちなくても全部IDE上でできるが 詳しい知識がないと、VSのバージョンが上がったら手が付けられなくなるぞ。
597 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:20:54 ] 手が付けられへんってどんだけレベル低いねん。
598 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:23:07 ] あれのレベルの低さは見ての通りじゃん、どう考えても相互運用コードが作れるレベルじゃない。 説明した通りに書かせればその分についてのみは動くだろうけど
599 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:26:52 ] 無理して、…っていうか興味を持ったからです。 一度動いてからわからないものを調べて学ぼうと思っただけです。 今日はこれをやるって決めたんです!
600 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:28:58 ] >>599 まずはC++のリンクの仕組みを確り勉強するといいよ、いきなり吹っ飛ばしてC#とリンクとか無茶だから。
601 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:30:29 ] まずはアセンブラからだな。
602 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:31:10 ] まずは機械語からだな。
603 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:31:33 ] >>601 そこまで行かなくてもいいと思うけど、LIBの仕組みDLLの仕組み程度は知っておいて欲しい。
604 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:31:43 ] お前らどんだけ博識なんだよバカ
605 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:32:18 ] 呼び出し規約って機械語レベルの話だからなぁ。若い人は辛いだろう。
606 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:14:06 ] とはいっても個々の呼び出し規則の詳細が必要になることなんて少なくなったから、 いろいろあるんだぐらいに思っとけばいいだろう。
607 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:22:02 ] スタックの積み方と後始末の責任の所在程度の違いだから難しくないと思うが
608 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:27:05 ] うんまあ、むしろその程度のことを理解するのに苦労した粗雑な頭の自分を語ってるように聞こえるね。 ついでに、「自分以外・自分の世代以外は全員馬鹿」っていうのは 濡れ落ち葉族のオッサンのセリフみたいで惨めだなw
609 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:29:05 ] そんなにくやしかったのか
610 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:29:18 ] うん
611 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:36:11 ] using 赤い彗星 = System.Char;
612 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:49:25 ] using 浅野忠信の嫁 = System.Char;
613 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:56:37 ] using ギタリスト = System.Char;
614 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 22:11:16 ] それVBのコードとしても変じゃないか? VBとc#のあいのこのつもりか?w
615 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 22:13:18 ] どれもコンパイル通るよ
616 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 22:16:20 ] 通してなんになるのかって話ではあるけどなw
617 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 22:43:59 ] 仕事でJava覚える必要が出てきたが、C#と大体同じなのだろうか・・・?
618 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 22:47:33 ] C#にあってJavaにない機能を把握するだけ
619 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 23:06:19 ] じゃあJavaからC#に移るときは?
620 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 23:09:32 ] >>618
621 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 00:00:03 ] 基本ができてればどんな言語使っても関係無いだろ
622 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 00:09:48 ] そうだけどJavaのジェネリクスだけはどうしても許せない
623 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 00:15:07 ] Javaだったらエクリプスで開発するんか
624 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 00:18:18 ] スレタイ嫁
625 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 01:11:05 ] シングルスレッド内のForm間でメッセージ送るときってどうやるんですか? 二つのformが表示されていて、一つのformが他方のformに おれはこんな処理やったよってのを知らせたい。
626 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 01:26:57 ] イベント
627 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 01:30:31 ] どうもです。イベントでやってみます。
628 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 02:14:31 ] ポインタを伴うWin32APIの呼び出し方が解りません。VB.NETでは Module Module1 Friend Declare Unicode Function LoadLibraryW Lib "kernel32.dll" (ByVal lpLibFileName As String) As Integer Friend Declare Function FreeLibrary Lib "kernel32.dll" (ByVal hModule As Integer) As Integer Sub Main(ByVal Args() As String) Dim hModule As Integer = LoadLibraryW("C:\WINDOWS\Resources\Themes\Luna\luna.msstyles") (以下略) でhModuleにハンドルが入りますが、C#で同じように class Program { [DllImport("kernel32.dll")] internal static extern int LoadLibraryW(string lpLibFileName); [DllImport("kernel32.dll")] internal static extern int FreeLibrary(int hModule); static void Main(string[] args) { int hModule = LoadLibraryW(@"C:\WINDOWS\Resources\Themes\Luna\luna.msstyles"); (以下略) としても必ず失敗(0)してしまいます。原因は何でしょうか。
629 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 02:19:40 ] GetLastErrorを取得して見る。
630 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 02:22:28 ] ポインタ・ハンドルはIntPtr DllImportのCharSet
631 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 03:18:25 ] class Program { [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] internal static extern int LoadLibraryW(string lpLibFileName); [DllImport("kernel32.dll")] internal static extern int FreeLibrary(int hModule); [DllImport("kernel32.dll")] internal static extern int GetLastError(); static void Main(string[] args) { int hModule = LoadLibraryW(@"C:\WINDOWS\Resources\Themes\Luna\luna.msstyles"); if (hModule == 0) { int Err = GetLastError(); Console.WriteLine("ロード失敗: {0}",Err); (以下略) >>629-630 遅レスすみません、ありがとうございます。 エラー&H7Eから、ファイルのロードそのものに失敗していたようです。 明示的にUnicodeを指定してintのまま実行すればロード/解放、共に成功しました。 しかしIntPtrにすると「hModule == 0」で『演算子 '==' を 'System.IntPtr' と 'int' 型のオペランドに適用することはできません。』となり実行出来ませんでした。
632 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 03:22:09 ] IntPtr.Zero
633 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 03:30:46 ] if (hModule == IntPtr.Zero) { >>632 出来ました、ありがとうございます。 VB.NETとC#は方言の関係と思っていましたが、実際はかなり違うのですね…精進します。
634 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 03:33:40 ] >>633 [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] internal static extern int LoadLibrary(string lpLibFileName); でいいよ。
635 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 03:34:15 ] [DllImport("kernel32.dll")] internal static extern int LoadLibrary(string lpLibFileName);
636 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 03:34:51 ] その場合は CharSet = CharSet.Auto のほうがいい。
637 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 13:00:05 ] コレクション初期化子ってICollectionとかIDictionaryとか関係なくて Addという名前のメソッドを呼び出すだけなのか 引数の数も自由でかなり変態的な使い方ができそう
638 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 16:22:07 ] フリーウェアだけど、オンラインで公開する場合、 ドボンとかのサンプルをコピペした場合何か断りみたいなのいるのかな? ソースを見たらバレバレなので黙って使っていいのか悩んでいます。
639 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 16:37:10 ] どうせそれも元々MSDNとかその他から引っ張ってきたものが殆どだし 勝手に使っちゃだめだったら何のために公開してるのかわからん
640 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 16:38:57 ] >>638 ライセンスに関する記述無いな。どうしても心配ならメール送ってみな
641 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 17:24:02 ] サンプルっていうのは「考え方」のサンプルであって コピペしてそのまま使うなんてナンセンスだろw
642 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:39:21 ] staticの使い方で質問があります。 Class1にある値を返すメソッドがあります。 例1: public string Hoge(){...} メインフォームで Class1 class1 = new Class1(); string s = class1.Hoge(); 例2: public static string Hoge(){...} メインフォームで string s = Class1.Hoge(); どちらが正しい使い方なのでしょうか?
643 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:40:56 ] どちらも間違ってないけど,フィールドが必要なら特別な理由がない限り迷わず前者
644 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:52:47 ] >>643 フィールドとはボタンなどのコントロールのことでしょうか? Class1はstringの値を返すHogeメソッドだけです。 複数回呼ぶことがあります。 staticをつけている方がメモリの確保など無駄なパフォーマンスがなくて 良さそうかなと思ったのですが、普通は前者なんですね。
645 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:55:09 ] よく分からないうちは,staticを付けた変数は使わないものと思っておk
646 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:57:28 ] >>640 あのコードに独創性を垣間見たんですね、わかります
647 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:09:24 ] C#にはフィールドなんてない。
648 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:10:56 ] staticとかってooの理想概念から外れてるよね。 staticメソッドばっかりになったらCで書いてるのと変わらないし。 ここら辺がoopの限界なのかな。 そろそろ次の新しい概念出てきてもいい頃だな。
649 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:20:15 ] >>647 お前は何を言ってるんだ
650 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:24:45 ] >>647 C#にフィールドはあるんだよ。
651 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:30:24 ] ごめん間違った、フィヨルドだったわ
652 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:32:31 ] >>648 制限付きのクラスオブジェクトと考えれば別に不自然とも思えないけど
653 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:33:22 ] おもろない
654 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:42:32 ] >>652 クラス名の飾りがついただけのグローバル関数/変数とも考えられる
655 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:42:47 ] この違いってなんでしょう? 下の方だとエラーになるのです Color.FromArgb(int.Parse((string)new object[]{"-1"})); Color.FromArgb((int)new object[]{"-1"});
656 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:45:09 ] 上もエラーになるよ
657 名前:655 mailto:sage [2008/04/06(日) 22:53:16 ] 理由がわかりました すいません
658 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 23:58:36 ] >>652 オブジェクト指向って実世界の”モノ”とは到底かけ離れてるよね? でもそれに近い概念でインスタンス化させてるのに、staticメソッドはそのまま使えたりしたらなんだかなぁと思う。 よくMathクラスなんかもインスタンス化した方が不自然だ、とか言われるけど intやifですらオブジェクトと見なそうという言語や思想がある中でとっても違和感を感じずにはいられない。
659 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:16:58 ] 引数だけで結果が決まるならインスタンスは無意味でしょ
660 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:20:32 ] それはstaticの意味、用途が分かっていないんだと思うが
661 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:52:31 ] double d = -1.0;などとして、 d.sin()とかd.abs()とかだったら、なんてことは俺も考えたことある。
662 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 01:23:14 ] 拡張メソッドはリフレクション使えないから駄目とか?
663 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 09:21:22 ] 「フィヨルドの恋人」 主演:大泉洋
664 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 09:43:47 ] すみません、SourceGridというグリッドコントロールを使ってプログラムを作っているのですが、 コントロールの初期化について分からないことがあるので教えてください。 プログラムの構成は、ひと月ごとにその月のすべての日の行をグリッド上に表示していくような感じです。 現在表示すべき(グリッドが描画時に情報として用いる)年/月は、staticな変数に記録して管理しています。 ここで、そのstaticな変数を変化させてみても (たとえば2008/4の状態から、ひと月前の状態にして2008/3とする)、 変数自体は変化するもののフォーム上のグリッドの表示に変化は見られません。 Update()なども試みてみましたが、反応なしです。 このような場合、どうすればグリッドの表示を更新することができるでしょうか?
665 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 09:53:41 ] こんにちは。 エクスプローラーのリストビューのタイプの変更を行いたく思い、少し調べているのですがよくわからない部分があるので質問させてください。 yokohama.cool.ne.jp/chokuto/urawaza/lv_icon.html を読んでタイプの変更は出来そうなのですがWindows Vistaの特大アイコンなどはどのようなメッセージを送ればいいのかわからないのです。 ヒント等ご教授戴ければ幸いです。
666 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 13:27:25 ] >>664 >現在表示すべき(グリッドが描画時に情報として用いる)年/月は、staticな変数に記録して管理しています。 これほんと? これだと複数コントロール貼って使う場合とかにまずいからこういう設計にしないと思うんだけど。 何か勘違いしてない?俺が作るとしたらプロパティで実装するけどなぁ。
667 名前:デフォルトの名無しさん [2008/04/07(月) 13:49:34 ] ・あるクラスA,B,Cが内部クラスを持っていて、 その内部クラスのフィールド変数の品揃えは未定だけど、 フィールド変数を使っての処理は決まっている。 ・クラスA,B,Cごとに内部クラスの品揃えに違いがある。 このような場合、どうしたらすっきりした実装ができますか?
668 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:20:41 ] A,B.Cは最低限の共通のフィールドを持っていて,それらに対して 共通の処理を行うならプロパティを宣言したインターフェイスを作ってA,B,Cに実装する 処理の目的だけが決まっていて,フィールドをどう使うかはA,B,Cそれぞれで全く違うんだったら その処理を行うメソッドをインターフェイスに宣言してそれをA,B,Cが実装する形にすれば きれいかもしれないけど実装の手間は変わらん
669 名前:667 [2008/04/07(月) 14:41:39 ] >>668 提案ありがとうございます。 難しいですね。。。 フィールドに抽象メンバなるものを持てて、 抽象メンバ取り出しメソッドみたいなものがあって、 取り出したメンバにたいしてforeachをかける みたいな実装できたらよかったのですが。。。
670 名前:667 [2008/04/07(月) 15:04:25 ] private権限でunion配列を用意し、 値そのものはこの配列に格納することにする。 フィールドのプロパティでその配列にアクセスするようにする。 実際の処理は、配列に対して行なう。 (クラスによってその配列の長さは異なる。) で実現できそうです。
671 名前:665 mailto:sage [2008/04/07(月) 16:46:06 ] >>666 ご返答ありがとうございます。 OOPは初めてなので、きっと勘違いしていると思います。 そのようなプロパティ実装をした非static変数は、 各メソッド内でインスタンス生成してから用いると認識していますが、その場合、 たとえばグリッドコントロールが今表示している年/月を取得したりすることはできるのでしょうか? それとも、グリッドを配置しているFormのクラス内に、 プロパティ実装した変数をフィールドとして用意するのでしょうか? 後者は、とりあえず試みてはみたものの、やはり変数をいじってもグリッドに変化が見られません。
672 名前:664 mailto:sage [2008/04/07(月) 16:48:07 ] >>671 の名前欄のレス番を間違えました orz 汚してしまいすみません。
673 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 17:55:48 ] this.textBox1.Text = a;//aはフィールド a = "変更した"; もしかしてこれで変更できると勘違いしてない?
674 名前:664 mailto:sage [2008/04/07(月) 18:02:29 ] >>673 思いっきりしてます! 正しくはどうすればよいのでしょうか・・・?
675 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 18:34:12 ] >>674 string _str; public string Str { get { return _str; } set { sourceGrid.DateTime = value; _str = value; } } こんな感じのことがしたいの? 取得ってのは普通に var value = souceGrid1.DateTime; とかでいいと思うんだけども。 ソースグリッドとかいうものを使ったことないから分からんけど。
676 名前:675 mailto:sage [2008/04/07(月) 18:42:07 ] あーそうか。もしかしてソースグリッドの表示年月の変更って プロパティじゃなくてメソッドかなんかでやってんのかな? sourceGrid.SetMonth(value); こんな感じで。 プロパティでなんかありそうだけどね。 面倒だがちょっと導入して試してみるか。
677 名前:675 mailto:sage [2008/04/07(月) 18:47:07 ] と思ったが、ユーザー登録が必要だということで面倒だからやめた。 とりあえず>>664 はソースグリッドコントロールの年/月を取得もしくは設定しようとしている部分の コードを晒してくれ。 取得ができないような設計にはなってないと思うんだ。
678 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 19:27:02 ] XmlDocument xml = new XmlDocument(); xml.Load(url); xml["abc"]というノードがあるのか調べるにはどうしたら良いのでしょうか?
679 名前:664 mailto:sage [2008/04/07(月) 19:48:19 ] >>675 さんのお話を聞くと、自分のコーディングの方向性が 根本的に間違っているような気がしてきました・・・。 ここに書き込む前は、以下のような方法で実現しようとしていました。 namespace下に以下のようなクラスを作成し、 public class CurrentYearAndMonth { public static int cYear; public static int cMonth; public static int cMonthDaysCount; public static void SyncYM() { DateTime dtNow = DateTime.Now; cYear = dtNow.Year; cMonth = dtNow.Month; cMonthDaysCount = DateTime.DaysInMonth(cYear, cMonth); } } これに対して、グリッドを配置しているFormのForm_Loadメソッド内で、 簡潔に書くと以下のように上記の変数を使っています。 for (int r = 1; r <= CurrentYearAndMonth.cMonthDaysCount; r++) { grid1.Rows.Insert(r); grid1[r, 0] = new SourceGrid.Cells.Cell(CurrentYearAndMonth.cMonth.ToString() + "月" + r.ToString() + "日"); } この状態で、Load完了後にcMonthなどの変数値をいじってFormやgrid1をUpdate()などしてみると、 UI上の表示も変化するかなと目論んでいたんですが、やはり間違っているのでしょうか? (ちなみに、SourceGridは ttp://sourceforge.net/project/downloading.php?group_id=178155&use_mirror=nchc&filename=SourceGrid4_11.zip&38810142 からダウンロードできます。)
680 名前:664 mailto:sage [2008/04/07(月) 19:50:46 ] 追記です。 CurrentYearAndMonth内のSyncYM()メソッドは、OSの現在時刻と合わせるためのもので、 プログラム起動時のみ1度だけ使用しています。
681 名前:678 mailto:sage [2008/04/07(月) 19:54:29 ] 自決
682 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 20:00:02 ] 以降はチラシの裏に書けよw
683 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 20:01:52 ] >>679 コントロールに値を渡した後は元の変数とは何の関係もなくなるから 更新するときは毎回全部設定しなおす必要がある それと,フィールドをstaticにするのは誰がどう見ても間違い
684 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 20:04:25 ] >>665 をお願いします...
685 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 20:32:25 ] どう見てもC#の質問に見えないからスルーされたんだろ。
686 名前:664 mailto:sage [2008/04/07(月) 21:00:58 ] >>683 なるほど。そうでしたか。 試行錯誤の結果、 <変数値変更> this.Controls.Remove(grid1); grid1 = new SourceGrid.Grid(); grid1.Refresh(); this.Controls.Add(grid1); <grid1の表示調整> <Form1_Load メソッドでgrid1に対して行われるのと同等の処理> というような流れで、無事初期化・表示更新を行うことができました。 staticについても見直してみます。 貴重なお時間を割いてアドバイスいただき、本当にありがとうございました。
687 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 21:36:31 ] >>685 そうでしたか。ごめんなさい。
688 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 21:44:54 ] >>678 ノードっつっても色々あるがどのノード? あとxml["abc"]じゃなくてabcを調べたいんだよな?