1 :
名無しさん♯ :
2005/09/19(月) 02:11:09 BE:101570483-###
2 :
名無しさん♯ :2005/09/19(月) 02:11:47 BE:169284858-###
3 :
名無しさん♯ :2005/09/19(月) 02:12:18 BE:88875037-###
switch(line) { case 4: break; }
6 :
デフォルトの名無しさん :2005/09/19(月) 03:40:53
TextBoxやListViewについてですが フォームを最小化し再度表示させると Paintイベントが発生しないのですが (ボタン等では発生します) TextBoxやListViewではなぜ発生しないのでしょうか?
昔ながらのコントロールをラップしてるだけだから。
ResizeRedrawが設定されてるかそうでないかの差だな
WebBrowserコントロールで質問! コントロール上でのマウスの動きを察知する方法ありませんか? マウスが上に来たらBringToFront()で前面に持ってきたいのです。 MouseMoveイベントがなかったのでAxWebBrowserを継承したクラスをつくり、 WndProcをオーバーライドしてWM_MOUSEMOVEを捕まえようとしたのですが…・・・。 何も表示されていない真っ白な状態ではちゃんとWM_MOUSEMOVEが飛んでくるのですが、 何かを表示(例えばGoogleのページなど)を表示させると飛んでこなくなってしまいます。 PreProcessMessageもダメなようで……。
HTMLのbody要素に AttachEvent とか
11 :
デフォルトの名無しさん :2005/09/19(月) 13:00:21
ref と out の違いがよくわからないのですが、何が違うんですかね?
AttachEventってHTML内のJavaScriptに対して有効なのでは。
>>11 受け渡し両方か、受け取るだけか。
呼出元で初期化が必要か、不要か。
stringを返すメソッドの中で、違うメソッドを呼び出して、 そのメソッドの終了を待たずにstringを返すことは可能でしょうか・・・? 可能ならどうすればできるのでしょうか?
HTMLElement.MouseEnter でいいと思った
16 :
9 :2005/09/19(月) 13:13:00
>>10 AxWebBrowserを継承したクラスのDocumentCompleteイベントハンドラで
次のように書いたのですがイベント飛んで来ませんでした。
(DocumentCompleteイベントはちゃんと来てます)
// このイベントハンドラには飛んでくる
private void MyWebBrowser_DocumentComplete(object sender, DWebBrowserEvents2_DocumentCompleteEvent e)
{
mshtml.IHTMLDocument2 doc = this.Document as IHTMLDocument2;
mshtml.IHTMLElement2 body = doc.body as mshtml.IHTMLElement2;
body.attachEvent("onmouseover", new HTMLElementEvents2_onmouseoverEventHandler(WebBrowser_OnMouseOver));
}
// マウスが動いたらこのイベントハンドラに飛んできてくることを期待してた
private void WebBrowser_OnMouseOver( mshtml.IHTMLEventObj e )
{
// ここで目的の処理をしたい
}
やりかた違うのかな……
スレッドを使う
C# 1.1とC# 2.0ってあるけど、いつから2.0になったのですか?
.NET 2.0に対応できるのがC#2.0だな。 まだ正式版は出ていない。 ……C#1.1は存在しないはずだが。
>>19 .NET Framework 1.1 に合わせて、C# もちょっとだけ変更されたはず。
Visual Studio 2003 が出たとき。
俺が覚えてるのは、 /** でドキュメンテーションコメントを書けるようになったっての。
その他はほとんど変わってなかったと思う。
ただ、C# の仕様書のページを見に行ってみたら、そこに存在するのは
1.0 の仕様書と、1.2 と書かれた仕様書だけだった。
正式には C# 1.2 なのかな。
ネット上では "C# 1.1" の方が多数ヒットするんだけど。
>>18 ちなみに、.NET 2.0, C# 2.0 は Visual Studio 2005 に合わせてな。
正式版でるのって来月くらいだっけ?
11月じゃなかったっけ
23 :
デフォルトの名無しさん :2005/09/19(月) 17:03:14
ドラッグ&ドロップを受け入れるアプリに対して操作を自動化したくて こんなことしてみたんですが、メッセージが届いてないみたいなんです。 どこかおかしいでしょうか? someclass{ somemethod(){ string path =@"C:\test.txt"; hWnd = 対象アプリのwindow handle; const int WM_DROPFILES = 0x0233; _DROPFILES DropFiles = new _DROPFILES(); DropFiles.pFiles = Marshal.SizeOf(DropFiles); DropFiles.fNC = false; DropFiles.fWide = true; DropFiles.FileName = path.ToCharArray(); PostMessage( hWnd, WM_DROPFILES, ref DropFiles, 0 ); } } public struct _DROPFILES { public int pFiles; public Point pt; public bool fNC; public bool fWide; public char[] FileName; }
24 :
デフォルトの名無しさん :2005/09/19(月) 17:28:15
picturebox1に書き込みを行い、それが終わった後で、 ControlPaint.DrawReversibleLineを描きたいのですが、 以下のようなコードをかきました。 Draw(); //imgに書き込みをれをpictureboxに設定。 Thread.Sleep(1000); ControlPaint.DrawReversibleLine(pictureBox1.PointToScreen〜); ところが実際にはDraw()の結果が反映される前に反転線が描画されてしまいます。 確実にDraw()の描画が反映されてから反転線を描くにはどうしたらいいですか?
25 :
9 :2005/09/19(月) 18:29:08
あきらめ(゚∀゚)
26 :
23 :2005/09/19(月) 18:53:54
>>23 なんかあほなことしてる見たい。
質問を撤回します
>>24 一旦Refreshするとか
//画面に直接描画するのな、DrawReversibleLineって
HTMLファイルを読み込んでタグの情報を簡単に取得する方法ありませんか? XmlTextReaderでいいんでしょうか?
XmlTextReaderだとwell-formedなXMLしか読み込めないから、ほとんどのHTMLは対象外だろう。 mshtml使ってHTMLDocumentクラスを使うのが早いかも知れない。 そうそう、WebBrowserを使わずにHTMLDocumentを使うがようやく分かった。 一旦HTMLDocumentをnewして、それをIHTMLDocument2にキャストしてからwriteしてやればOKなようだ。 HTMLDocument.writeは一体何をimplementsしてるんだろうか。 ファイルパス指定すればエンコーディングを自動解析して開いてくれるようなのは無いものかな。
だめ
32 :
29 :2005/09/19(月) 20:24:18
ありがとうございます。助かりました。
33 :
29 :2005/09/19(月) 20:43:47
正直、特定のタグ情報だけを抜き出すなら Regex で間に合いそうな予感 ……しかしよくでてくるなコレ
>>33 IPersistFile.Load -> スルー。Loadを実行しても永遠にreadyStateはloadingのまま。
IHTMLDocument4.createDocumentFromUrl -> 例外(AccessViolationException)発生。
さあどうしてくれようか。
>>25 WebBrowserオブジェクトを貼り付けたフォームでキーの押している状態を表示しようとしてキーイベントを拾おうとしたことがあったんだけど、
どうやってもWndProcにメッセージが流れてこないものがあるみたいでその辺のメソッドをoverrideしても無理みたいだった。
IMessageFilterを実装したクラスを用意してメッセージフィルタをセットしておけばメッセージを受け取れたと思うよ。
37 :
9 :2005/09/19(月) 22:00:40
>36 ありがとう、ちょっくら挑戦してみる
38 :
9 :2005/09/19(月) 22:44:22
36氏の言うとおり、IMessageFilterを実装したクラスを用意して、 PreFilterMessageメソッド内で受け取ることができました。 どうもありがとう。
39 :
デフォルトの名無しさん :2005/09/19(月) 23:04:20
質問があります。今、簡単なネットワークアプリケーションを製作中でして、 内容はクライアント側のTextBoxに書かれた文字データを送信し、サーバ側の TextBoxに表示する。といったものを作っています。 お聞きしたいことは一回サーバクライアント間でコネクションを確立させた後に、 クライアント側のアプリケーションを終了させるとサーバ側がコネクションエラーをキャッチします。 すると、次にクライアントのアプリケーションを立ち上げてもコネクションを確立する事が出来なくなります。 クライアントとのコネクションが切れた時にサーバ側にどういった対処が必要なのでしょう? 解決法をご存知の方がいましたら教えてください。よろしくお願いします。
そのソケットは閉じてあたらしくacceptする。
41 :
24 :2005/09/19(月) 23:32:45
>>28 さん
Refleshでいけました。ありがとうございました。
MSNメッセンジャーでフォーカスがない状態のときメッセージを受け取ると、 タスクバーでタイトルバーが点滅して自己主張しますよね。 あれを自分のアプリで実装したいのですが、 FormかWinAPIにその機能がもともとついてたりしますか?
1.1 の Form には無くて、2.0 の Form と WinAPI にはある。
デザイナで TextBox を追加すると、 自動的に Textのプロパティが TextBox1と自動的にNameの名前になりますが、 TextBoxを追加した時点で、 Textのプロパティを空の文字列にすることは可能ですか?
プロパティを自動で追加してくれるプラグインないかな。 毎回 get set 書くの面倒なんだが。
51 :
44 :2005/09/20(火) 20:39:26
>>45 >>46 >>49 レスありがとうございました。
Win32APIのFlashWindowExをDllImportで呼んで使うことにします。
>>50 VS 2005 にそんな機能あった気が。
>>50 いくつも出てるよ。
漏れは自分で作った。
Win98?から自プロセスにSetForegroundWindowするとフラッシュ動作に 切り替わるようになった。 タイプ中に突然フォーカスを奪われて、はずみでOKボタン 押しちゃった、というトラブルの防止策です。 これを一時的に無効にするAPIとか技とかは、探せば出てきます。 AllowSetForegroundWindowだったっけ?
戻り値がvoidで、パラメータを取らないメソッドだけがスレッド処理が できるんですか? それ以外はデリゲートの非同期メソッドを使うのでしょうか?
前スレ900辺りでも答えたが、Threadを使うのならそれ用のクラスを用意する
別スレッドを作って、そのスレッドをjoinしないと、そのスレッドって 途中で処理が終わりますよね?
join は、対象のスレッドが終了するまで待機するメソッドだが
メインスレッドが終了したら、ってこと? thread.IsBackground = false;
…… 58 がなにを求めていて、59 と 60 が何を考えたのか分からん
>>62 リファクタ -> フィールドのカプセル化
複数のメンバをまとめて処理できないからちょっと不便だけどね。
PropertyGridで、項目名の日本語表記はできたんだが Enum値の日本語表記がどーしてもできん。 あとbool型のtrue/falseもはい/いいえにしたい。 TypeConverterを継承して何かやるっぽいけど、 実際どういう風に書きゃいいのか・・・ご教示きぼん
mshtmlでurlを指定してHTMLファイルを読み込み、解析しています。 IHTMLDocument4インターフェイスのcreateDocumentFromUrlを使っていて、 起動時に読み込んだあと元のHTMLが更新されても 新しいHTMLを読み込んでくれないのですが、キャッシュを無視するとかオプションはないのでしょうか? COMスレが落ちてしまっているようなので、こちらで質問させていただきました。 よろしくお願いします。
クエリ文字列を使ったらどうなるんだろ。キャッシュよけの代表的手法だけど。
68 :
66 :2005/09/21(水) 12:50:58
>>67 クエリ文字列を追加したらできました!ありがとうございます!
69 :
デフォルトの名無しさん :2005/09/21(水) 14:41:55
C#でのメモリリークについて質問です。 C#でのリークの調査と言うのはどのように行うのでしょうか? C++なら1回動かすとXXバイト増えてるから・・・って出来たのですが GCが走らないとメモリ開放しないようなのでC++の時のように 判断が出来ないでいます。
つーか、GCがあったらリークって原理的に発生しないんでは?
72 :
デフォルトの名無しさん :2005/09/21(水) 15:02:45
>>71 ・予期せぬ所で参照が残っている
・GC管理外のメモリを確保した(例・System.Runtime.InteropServices.Marshal.AllocHGLobal)
>>73 というか循環参照を解決しようとしてあんな複雑なGCになってやがるんだが。
他にも理由があるけどな
>>69 測定したいタイミングでGC.Collet()を2,3回呼ぶようにすればいんじゃない?
79 :
デフォルトの名無しさん :2005/09/22(木) 01:06:24
>>69 俺も知りたい。C#のリークの調査は
Private Bytes と # Bytes in all Heaps を見て判断するって
どこかで読んだんだけど
リークしないだろうアプリを連続で動作させてると
Private Bytes と # Bytes in all Heaps が増えるんだよね
# Bytes in all Heapsはたまに減るけど何となく増えてる感じするし
わけわからん(T_T)
80 :
デフォルトの名無しさん :2005/09/22(木) 01:16:04
DataGridでたまに×が描画されることがあるんですが どのようなときにおきるのでしょうか? バインディングすると起きる気もしますが WindowsFormsです
81 :
あめ :2005/09/22(木) 04:03:22
PCの時刻をプログラムで変える方法を知っている方、教えてください。
83 :
あめ :2005/09/22(木) 11:05:05
二次元配列の1次元目の要素に配列を丸ごとコピーする方法はないでしょうか? //ジャグ配列の場合 hoge[0] = array; ↑のような感じでコピーしたいのですが
85 :
デフォルトの名無しさん :2005/09/23(金) 00:18:15
Point p1,p2 〜〜 return ( ((p1.X-p2.X)^2) + ((p1.Y-p2.Y)^2) ) ってコードでp1,p2の距離の二乗を求めているのですが、 なぜか負の値が帰ってきます… どこがおかしいのでしょうか?
あー、なさげ。手作業でやっておくんなまし。 ……ちなみに、その例だと、array[1] = 123; ってやったときに hoge[0][1] も 123 になるぜ。
>>85 C 系の言語で 「^」 は累乗記号ではないから注意。
88 :
85 :2005/09/23(金) 00:22:58
>>87 さん
初耳です。
そんなことすらしらずにC#つかってました…orz
累乗記号を探すたびに出ます。
ありがとうございました。
多次元配列よりジャグ配列の方をお薦めしてたのをMSDNのどこかで読んだ
>>90 お勧めというか、ジャグ配列の方が要素の参照が速いって書いてた気が。
C 言語的に書き直すと、
a[x, y] → *(a + x * WIDTH + y) → 掛け算1回+足し算2回+アドレス参照1回
a[x][y] → *(*(a + x) + y) → 足し算2回+アドレス参照2回
まあ、キャッシュの効き方次第な気もするけど。
92 :
デフォルトの名無しさん :2005/09/23(金) 13:11:25
Strokeクラスを継承し、いくつかのプロパティを追加して使いたいと思うのですが、 'Microsoft.Ink.Stroke.Stroke()' はアクセスできない保護レベルになっています。 というエラーで継承したクラスを作成出来ません。 元来のStrokeクラスの動作に影響を与えないプロパティを追加したいだけなのですが、 なにかいい方法ないでしょうか?
>>92 publicなコンストラクタがないって事は、自分で作ることがないオブジェクトのようだけど?
自分で作ることがないなら派生クラスを書いても使えないよ?
94 :
92 :2005/09/23(金) 13:26:10
それで困ってるんです。 追加したいプロパティはStrokeごとに持たせたほうが 全体の記述がわかりやすくなるので、追加したいのですが やっぱりStrokeに持たせるのは無理ですかね。 メインクラスに int[] hogeとかつくって hoge[Stroke.ID]とかでとるようにするのが 現実的ですか…
ま、普通はHashtableで管理するかな
96 :
デフォルトの名無しさん :2005/09/24(土) 00:33:03
ListViewでBecky!のスレッド表示みたいなのはどうすればよいのでしょうか? |aaa|bbb|ccc| 日 xxxx xxx xxx yyy yyy yyy yyy yyy yyy 田 xxxx xxx xxx
無理
>>96 TreeListViewってのを拾ってきて使いましょう。
言語の仕様って変わっていきますよね。 それに合わせてマイクロソフト開発環境のアップデートとかは行われてきたものなのでしょうか。
LINQ Preview をインスコすれば 3.0 もコンパイルできるな
2005を買わなきゃだめか・・・って、いったん買ってもまたすぐ買う羽目になる所がc#の残念な所だ。
>>102 すぐって。
2003から2年半くらい経ってるけど。
あと、金出すのが嫌なら Eclipse+C# plug in とか #develop とかもあるし。
SDKならタダだぜへへへ
>>105 正確には、会社の上司とか、大学の管理者たぶらかして入ってもらえでは。
イベントハンドラがよばれたら1秒間待つ (A) その間にもう一度イベントハンドラが呼ばれなければAを実行 待っている間にイベントハンドラがよばれたら先ほどのAを破棄して今回のをAとする ってのを実現するためにイベントハンドラが呼ばれるたびに スレッドを作って Sleep させてるんだけどなんか効率悪そう もっといい方法無い?
タイマ使うとか?
普通にタイマ
110 :
デフォルトの名無しさん :2005/09/26(月) 11:24:10
例外が発生してcatchした際に MessageとStackTraceでメソット名までは分かるのですが 例外の発生した行番号まで分かる方法はないのですか? try { 何か処理1 何か処理2←ここで例外が発生! 何か処理3 何か処理4 }catch(Exception ex) { ここで例外の起きた行番号が知りたい }
StackTraceに出てるだろ? 勿論Debugでないと出ないけど。 行番号で処理を分けようとか考えてないだろうな?
112 :
デフォルトの名無しさん :2005/09/26(月) 12:07:41
>>111 Debugでもメソット名までしか出てないんだけど・・・
なんかビルドの時にパラメータとかあるのでしょうか?
※行番号で処理を分けたりはしません
\bin\debugに.pdbファイルはある?
114 :
デフォルトの名無しさん :2005/09/26(月) 12:45:02
すいません質問させて下さい。 超が付く素人なんですが、会社でプログラマーの卵としてC#を学んでいます。 1ヶ月も過ぎた所なんですが、人の書いたソースは少し読める程度には なって来ましたが、いざ自分で作ろうとすると全く書けません。 例えば、コンソール画面にカレンダーを表示するだけのプログラムも何のメソッドを 使って良いのか分からずにそこで何も出来ずに止まってしまいます。 皆さんは覚え始めの時はそのような場合、どのように対処されていたのでしょうか? 技術的な話でなく申し訳ありません。 上司と馬が合わず、聞いても見当違いの答えばかりなので質問させていただきました。 私は、C#が初のプログラムを覚える言語でこれまでに全くプログラムに携わった ことはないです。
> 人の書いたソースは少し読める程度になって来ましたが、 > 例えば、コンソール画面にカレンダーを表示するだけのプログラムも何のメソッドを > 使って良いのか分からずにそこで何も出来ずに止まってしまいます。 なんか凄く矛盾してね? まともにライブラリも知らずにソース読めるか?
>>114 リファレンスを読んで 「これを使うとあれが作れるのでは」 を考えるよう訓練するのも良いかも
それやってくうちに、探したい機能からリファレンスを逆引きできるようになる
>>113 実行環境に.pdbファイルおいたら出た
ありがとう!!
119 :
114 :2005/09/26(月) 13:21:21
>>115 読んでいるんですが自分の中でこれを使ったら何が出来るんだ?って所で思考が
止まってしまってます。
>>116 すいません、舌足らずでした。
「リファレンスを読みながらだと人の書いたソースを読むことが出来るようになった」
です。
>>117 そういう風にリファレンスを見たことが無かったので今日はそれをして
みたいと思います。
通常、1ヶ月あればどの程度の事が出来るようになってるものなんでしょうか?
人と比べても意味の無い事だと言うのは分かるんですが他に
新入社員もおらず、早く戦力に…と言う視線に耐えながら勉強している為、
平均的な上達具合と言うのも気にしてしまいます。
euc-jpをunicodeに変換するプログラムをおしえてくだされ
Encodingクラス
122 :
デフォルトの名無しさん :2005/09/26(月) 15:52:48
誰か相談聞いてくれますか?
聞くけど答えないよ
スレ違いの相談はお断り。
まず、コンソールでテキストファイルを書き出す。読み込む。 バイナリファイルを書き出す。読み込む。 ・・・データのやり取りを覚えるだ。 次に、パソコンをぶっ壊すだ。
ビックエンディアンとリトルエンディアン
>>114 そりゃープログラム以前に情報の収集方法がわかってないんだろ。
つ[google]
128 :
デフォルトの名無しさん :2005/09/26(月) 23:45:28
DataTableに対して、グループ化はできないんですか? ある列で重複データを省くような処理をしたいのですが、 どうすればいいのかわかりません・・・。
MS$Office系のアドイン作りたいのですが、 面倒なことにOffice2000 2002 2003とサポートしないといけないのですが 2000をサポートするとなるとC#はムリと考えてもよろしいのでしょうか? IDTExensibility2があれば2002と2003では普通に呼び出し等をできるのは 解りましたが2000はムリなのでしょうか?
勉強の方法についてだが、まず2をやること。
最初から読んでいって理解したと思ったら、参考書を見ないでプログラムを書く。
例えばfor文の使い方を読んだら、実際に書いてみる。
わからなくなったら初心者スレで聞く。
これを参考書の最後までやったらC#はだいたい書けるようになる。
あとはMSDNを流し読みして面白そうなクラスを見つけてそれを使うコードを書いてみる。
この仕事を続けるならMSDNとはずっとつきあうことになるからな。
今のうちに使い方を覚えておくといい。
オブジェクト指向は別に本買って勉強しないとたぶん無理。余裕あるとき並行して勉強すれ。
1ヶ月の上達具合は人それぞれ。いい師匠がいれば当然速いけど、
いなくて独学なら大して上達しない。
上の勉強法を受験勉強並みにみっちりやれば覚えは早いと思うけどな。
がんばれ。
↓ここがちょっと初心者向け
以降はここで聞いてみれ。
http://pc8.2ch.net/test/read.cgi/tech/1122001458/
132 :
デフォルトの名無しさん :2005/09/27(火) 08:28:42
C#においてListViewに表示されている項目を選択し、その値を取得したいと思っています。 以下のコードで選択項目の取得は出来たのですが listView1.SelectedItems[0].Text 1度項目を選択した後に他の項目を選択すると エラー System.ArgumentOutOfRangeException' のハンドルされていない例外が system.windows.forms.dll で発生しました。 追加情報 : 指定された引数は、有効な値の範囲内にありません。 と表示されます。 どうしたらこのエラーを回避出来るでしょうか? MSDNやネットでの検索をしたのですが解決法が見つかりません。 分かる方いましたら是非教えていただけないでしょうか。お願いします
SelectedIndexChangedイベントで if (listView1.SelectedItems.Count <= 0) return; item = listView1.SelectedItems[0].Text;
ェスパーキボンヌ
135 :
デフォルトの名無しさん :2005/09/27(火) 09:19:14
>>133 出来ました。ありがとうございます。
神杉wwwwwwwwwwwwwwwwwww
136 :
114 :2005/09/27(火) 09:26:17
>>127 それもあると思います。
必死でググっても見当違いな事も多々…
これは経験がモノを言うんでしょうねorz
>>130 ご丁寧にありがとうございます。
仰る通り、根本的な所から知識を確実な物にしていく事が一番の近道ですね。
提示してくれた本を読んでそこから自分に合った物を探します。
>>131 >>130 を書いてくれた方ですよね?
勉強法までありがとうございます。
この1ヶ月で上司にいびられ続け精神的にも参ってきて仕事に向いていないと
思い辞めそうになってましたが、まだ頑張ってみます!
レスを下さった皆さま、本当にありがとうございます。
これ以上はスレ違いになるのでカキコは自粛いたします。
紹介して頂いたスレの方に移り頑張ってみます。
最後にこんな反吐が出そうな初心者にお付き合い頂き本当にありがとうございました。
>>136 あんまり無理すんなよ。一度壊されると回復に年単位でかかるからな。
経済的に余裕あるなら転職も視野に入れておいた方がいいかも。
138 :
デフォルトの名無しさん :2005/09/27(火) 15:55:43
>>138 1.Cursorクラスからマウスの位置を取得。
2.ListViewのクライアント座標に変換。
3.ListView.GetItemAt()でマウスの下にあるListViewItem(行)を取得
4.ColumnHeader.WidthでListViewSubItemの長さを取得していってマウスの座標の位置と比較して列を取得
5.完成
>>139 ColumnHeader.Widthだとサブアイテム間のスペースが考慮されないからちょっとずれるぜ
SendMessageでLVM_GETSUBITEMRECTの方が確実ではある
141 :
138 :2005/09/27(火) 16:11:07
>>139 回答ありがとうございます。
その方法では作成しました
ただ、ビューをスクロールされた場合
うまく取れなくなってしまいます。。(;;
142 :
138 :2005/09/27(火) 16:16:52
>>140 レスありがとうございます。
WinAPI使っちゃうと
いろいろまずいんですよ。
すいません。
派生クラス作って自身のWndProc呼び出すだけでも良いよ? //この場合直接DllImportするのとSecurityPermission的にはどうなんだろう……?
144 :
138 :2005/09/27(火) 17:01:54
>>143 その DllImport がまずいんです。
決まりですんで(^^;
だから自分のWndProc呼べば良いんだって。DllImportする必要はない。
あ、この場合自分のってのはForm派生クラスじゃなくてListView派生クラスな。
147 :
138 :2005/09/27(火) 18:55:06
>>145 >>146 勘違いしてました。
ありがとうございます。
作成しました。
後は、ビューをスクロールしたときに
ズレをどうにかするだけです。
ビューが何ドットスクロールしてるかが
わかればいいんですが、、、。
誰かご存知ですか??
いやGetItemAtにせよLVM_GETSUBITEMRECTにせよ見えてる部分で判断するからスクロールは関係ないんだが。
DataSetとかDataTableってよく使うんですか?
それを聞いてどうするんだ?
151 :
デフォルトの名無しさん :2005/09/27(火) 22:57:04
任意のeventのシグニチャを取得するためにはどのようにすればよいのでしょうか? たとえば、EventHandlerのクラスから 関数のタイプがvoid(object,EventArgs)であると プログラム中から知りたいのですがやり方がよくわかりません。 EventInfoを見てもそれらしいものはないので詰まっています。 Type type = typeof(EventHandler);からvoid(object,EventArgs)などの情報は取れるものなのでしょうか?
EventInfo eventInfo = typeof(Control).GetEvent("Click"); Type delegateType = eventInfo.EventHandlerType; MethodInfo method = delegateType.GetMethod("Invoke"); Console.WriteLine(method.ReturnType); 以下略
event っていうか、Delegate クラスには MethodInfo Method というプロパティがあるな。 で、MethodInfo の ReturnType プロパティとか見ればいいのでは。
テストツールでイベントが発生したときにConsoleに書き出して、挙動を調べたい。 というのが目的です。 UnknownClass cls = new UnknownClass(); Type type = cls.GetType(); foreach(EventInfo ei in type.GetEvents()){ ei.AddEventHandler(cls, /**/); //ここでコンソールにコールバックのParameterと戻り値を書くようなDelegateを登録したい。 } って、説明を書こうとしたら、レスが・・ ありがとうございました。
155 :
デフォルトの名無しさん :2005/09/28(水) 00:42:48
Webサイトにアクセスする関数を探しています WebClientを使ってアクセスすることはできたものの, 指定のバイト数のみ読み取るような方法はないのでしょうか? Cでは以下の関数が使えますが,,, BOOL InternetReadFile( HINTERNET hFile, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, LPDWORD lpdwNumberOfBytesRead );
HttpWebRequest を使ってHTTPヘッダでサイズ指定するとか
たんにHttpWebRequest/HttpWebResponseでResponseStreamから指定バイト読み込んでるだけじゃね?
158 :
デフォルトの名無しさん :2005/09/28(水) 00:55:36
>>155 WebClientクラスってStreamで読み取ることできないっけ?
駄目ならHttpWebRequest/HttpWebResponseで。
Stream取得できれば指定バイト数で読むことなんて簡単だよ
159 :
デフォルトの名無しさん :2005/09/28(水) 00:58:20
>>156 ,157,158
Streamを使ってみます!!
今まではDownloadDataで全てデータを取得していました,,,
ありがとうございます
全データをダウンロードせずに一部分だけ読みたいの?
いま確認してみたらWebClientでもOpenReadがあるな 普段HttpWebRequestしかつかわんからまるで覚えてないんだよな
162 :
デフォルトの名無しさん :2005/09/28(水) 01:17:36
Web全てダウンロードすると重いので,始めの半分程度だけ欲しいのです
例えば,ブログをたくさん読むとき,実際に目を通すのは最近1,2日分です
ちなみにサイズ指定できました!!
これで読み込み時間が1/10程度になりそうです
//URL設定
string url = "
http://www.yahoo.co.jp/ ";
//取得
WebClient myWebClient = new WebClient();
byte[] myDataBuffer = new byte[1024];
Streamstr = myWebClient.OpenRead(url);
str.Read(myDataBuffer,0,1023);
//表示
string download = Encoding.Default.GetString(myDataBuffer);
Console.WriteLine(download);
ただ文字化けします,,,
もし理由が分かれば教えていただけないでしょうか?
Encodingは一通り試してみました
>>162 Encoding.Default を Encoding.GetEncoding("Shift_JIS") とかにしてみ
YahooならEUC-JPに決まってるだろ?
おれ Yahoo なんて峰絵師
166 :
デフォルトの名無しさん :2005/09/28(水) 01:25:47
シフトJIS、EUC-JP、ISO-2022-JPと試してみたところ Encoding.GetEncoding("EUC-JP") でできました! ありがとうございます<m(__)m> 一通りマニュアルは読んだのですが,このメソッドは試していませんでした というか,意味が分かりませんでした!
System.NetとSystem.IOを使い出すともれなくEncodingのお世話にもなるな。
メインフォーム以外のクラスから メインフォームのメソッドを使う方法を教えてください 引数で延々とメインフォームのインスタンスを 引き渡すのは違うような気がします 独学なので、くだらない事で引っかかってますね。。。 よろしくお願いします
なんでそんなにメインフォームのメソッドを外部から使うんだ?
>>169 メインウィンドウの表示状態を変えたいのです
listView1.Visible = false
みたいなことをやりたいだけですけど
なにか考え方間違ってますか?
糞設計のにおいがする
>>171 そりゃできる人からみたら
糞かもしれないけど
それなら、どうすればいいか
って事を少しでも述べてくれないと
何もできないです
>>172 Form1 の管轄外にある Form2 の中にある listView1 が、Form2 の許可なしに Form1 から自由にアクセスできるとはどういうことか。
普通なら Form2.ListViewVisible プロパティとかを作って、それ越しに設定する
>>172 どういう構成になってるかも分からないのだからどうすればいいかも述べられない
だから171も"臭い"と表現したんだろう
まあ、イベントでやってみるとか
質問です。C言語のように、メソッドに定数として、配列を 渡すにはどうすればいいのでしょうか?
無理 ……定数として配列ってのも微妙な表現だな
>>173 うーん・・・・(カンガエチュウ カンガエチュウ)
こういう操作の時プロパティを使うんですね
Form1 に相当する部分(フォームではないけれど)が複数あるんですが
Form2 に蹴りを入れるには、Form2 のインスタンスを
引数で渡していくということでしょうか?
>>174 言い過ぎました、すんません
どこまで情報出せばいいのかわかんなかったもので
欲しかったのは「プロパティ」や「イベント」などの
キーになりそうな単語、という感じですわ
ありがとうです
>>177 他のクラスのメソッドを、他のクラスのインスタンスを渡さずに使うとしたら、
あとはそのクラスのメソッドのデリゲートを渡すとか。
あんまり意味はないが。
あと他の方法はどんな設計になってるかに依ってできるかどうか。
>>178 うーん、いまいちピンとこないなぁ
フォームを保持するクラスを
Singleton使って作るというはありですかね
禁じ手でなければ、そうしてしまおうかと考え中
>>179 それやるならApplicationContextの派生クラスのMainFormプロパティを使ったらいいんじゃね。
一番ピンと来ないのはおまいの設計だ と思う
182 :
デフォルトの名無しさん :2005/09/28(水) 23:32:06
いままでExcelのデータをcsv形式にしてVC#で扱ってきましたが そろそろレベルアップ(笑)して直接Excelを扱いたいと考えております。 ところが検索しても「Excelの起動方法」などしか発見できておりません。 初心者にもわかりやすいサイトってないですかね? とりあえずしたいことは「セルの値の参照」と「セルに入力」ぐらいです。
184 :
デフォルトの名無しさん :2005/09/29(木) 01:13:33
WebMatrixでC#を使っています constの扱いについて教えてください これはコンパイルできます↓ void My2chMsg(string msg) Console.WriteLine(msg); } これは"CS1031: 型が必要です"とのエラーがでます void My2chMsg(const string msg) Console.WriteLine(msg); } どういう意味なのでしょうか? 普通は後者の方がいいプログラムだと思います
185 :
デフォルトの名無しさん :2005/09/29(木) 01:14:44
>>184 ずばり C#にそんな文法は存在しません
186 :
デフォルトの名無しさん :2005/09/29(木) 01:19:48
WebServiceを使ったプログラムで起動を早くするにはどのようにすればよいのでしょうか? WebServiceの起動にかなりの時間をとられるのですが
187 :
デフォルトの名無しさん :2005/09/29(木) 01:27:33
>>184 C#では引数のconst指定ができないということですか
ありがとうございます!
しかしconst指定は大切だと思いますが,,,
188 :
182 :2005/09/29(木) 01:31:57
183さん、レスどうも。 そのサイトも参考にしたのですが、 どうもMSのサイトだと威厳的(苦笑)というか一行ごとの命令文とかがよく理解出来ないんですよね。 しかもセルの入力方法とかは載っていないような(見落としかな?) C#って比較的新しい言語なだけに解説ページも結構少ないんですよね〜。 ExcelVBAは多少習ったので簡単にセル参照出来る解説サイトとかないですかね?
worksheetがWorksheetのインスタンスとして、A1セルにhoge入れるのはこうやるだけ。 worksheet.get_Range("A1", Type.Missing).Value2 = "hoge";
>>187 >しかしconst指定は大切だと思いますが,,,
stringは変更不可なオブジェクトだからこれでいいのだ。
unsafeで配列を使うときはどうするんじゃという話ならc/c++を引き続き使うことを薦める。
>>187 C#にはconst関数もconst変数もthrowsもないのであきらめなさい。そういうものなのです。
>>177 > 欲しかったのは「プロパティ」や「イベント」などの
> キーになりそうな単語、という感じですわ
そんな瑣末なことはどうでもいい。
「合理的な設計」「オブジェクト指向」というのがキーワードだ。
194 :
デフォルトの名無しさん :2005/09/29(木) 13:29:30
Class Aがあり、そのインスタンスa1があるとき。 A a2 = a1; としても実体は増えないですよね? A a2 = a1.Clone(); のようなことをしたいのですが、Clone()に相当するメソッドがない場合どうすればいいのでしょうか?
手で各プロパティをコピーだな
196 :
194 :2005/09/29(木) 13:36:29
うはっまじっすか… ちょいとインスタンスまるごと保存しなくてすむような方法考えます… レスありがとうございました。
>>197 だからそれを実装してないクラスの場合どうするかだろ?w
可能ならBinaryFormatterでシリアライズ&デシリアライズとか、
リフレクションでMemberwiseCloneを呼ぶとか言う手もあるが……。
ああ、すでに存在するクラスなのか。失礼。
>>200 何で今更こんな記事が……?
発売直前って訳でもないのに。
今更「見えてきた」とか言われてもな。
203 :
デフォルトの名無しさん :2005/09/29(木) 21:36:21
戻り値がint型のメソッドから、あるメソッド(バッチ処理)を呼ぶとします。 そのバッチ処理は、最低でも20分はかかります。 そのバッチを動かしながら、リターンでintを返すことは可能ですか?
Thread を作るとか BeginInvoke とかいくらでも方法は
このスレの頭の方にほぼ同じ質問があったな
207 :
デフォルトの名無しさん :2005/09/30(金) 11:12:46
.NetFramework1.1で スレッドIDを取得する方法はありますか?
単なる識別子じゃなくてWin32APIで使うID? ならWin32APIじゃないとまともに取得できないはず。
>>207 Win32べったりの機能はSystem.Diagnosticsにまとめられている。
System.Diagnostics.ProcessThread#Id が Win32のスレッドIDそのままのはず。
>単なる識別子じゃなくてWin32APIで使うID? Win32APIで使うIDではないので (デバッグ時に出力したい) そういう意味では単なる識別子です。
ありゃ、答えが。 209さんありがとう。
あ、それならThread.GetHashCodeで一意に識別子を取得できるよ。
213 :
デフォルトの名無しさん :2005/09/30(金) 12:01:21
すんません System.Diagnostics.ProcessThreadの使い方が さっぱりわからんです。。。 自分でインスタンスを作らなきゃいけないんですか?
>>213 ごめん、System.Diagnostics.ProcessThread は使えないね。
System.Diagnostics.Process#Threads から持ってくるのだがカレントスレッドを得る方法が無い。
System.Threading.Thread をスレッドプールで動かすと、同じWin32スレッドが再利用されたり、
いったん実行を休止させると別のスレッドが振られたりするんで、無いのかもしれない。
System.Threading.Thread#Name になにか識別子をセットしておくのが一番無難かもね。
215 :
213 :2005/09/30(金) 13:27:38
>>214 ガビーソ ありがとうございました・・・
Thread.CurrentThread.GetHashCode()でも
それなりの効果はありですよね・・・?
GetHashCode だと一意の値を取得できない気がする
ThreadPoolではマネージスレッドは再利用されるからGetHashCodeは別のWaitCallbackでも同じ値を指しうるね。 Threadでは一意。 まあ一意と言っても結局ユーザの目にはどれがそのスレッドなのか認識できないから微妙だけど……。
アプリケーションの起動の仕方を設定することはできませんか? 具体的にはフォームを非アクティブのまま起動したいんですが
Application.Run()またはApplication.Run(applicationContext)
220 :
218 :2005/09/30(金) 19:31:51
>>219 Applicationクラスを覗いてたらIdleイベントがあったんで、
イベントハンドラで非アクティブ化処理→Idleイベント削除
なんてやってみて上手くいったんですが
こんなやりかたでいいんでしょうか?
フォーム起動直後の処理の常套手段というのはあるんでしょうか……
いや、なんで219で提示したのをスルーする?
222 :
218 :2005/09/30(金) 19:46:53
すみません具体的にはどうしたらいいんでしょう。
あいやまて、219は勘違いしてた気がする。 非表示じゃなくて非アクティブか。
>>207 AppDomain.GetCurrentThreadId()
なんで、ProcessクラスとかProcessThreadクラスとかからは取れないんだろうね。
225 :
デフォルトの名無しさん :2005/10/01(土) 10:16:56
C#で彼女を作りたいんですけど、可能ですか? できれば3次元の。
Managed DirectX を使ってください
w
228 :
デフォルトの名無しさん :2005/10/01(土) 14:25:19
Genericについてですが MakeGenericType を使用して実行時にタイプパラメータを 設定できることはわかったのですが 返り値がGenericな場合どううければいいのかわかりません。 たとえば private List<T> GetList<T>(Control c) があったとしてTをバインドして作成できても 返り値の型の指定をどうすればいいのか Type test = typeof(GetList<>); バインドの記述 ??? ret = バインド後のメソッド実行 ???の部分ってどうすればいいのでしょうか
GetList<T>はメソッドなのに何故typeof(GetList<>)なんだ? まあobjectで取得すればいいんじゃね 何をしたいのか読みとれないけど
230 :
228 :2005/10/01(土) 15:20:34
GetList<T>はMethodBaseのTypeより設定しています わかりづらいですね したいことは返ってきたObjectを適切な型にキャストしたいってとこですかね
静的に型が分かるならそれにキャストすればいいし 静的に型が分からないならキャストしようもないし MethodBaseのTypeより設定って意味わからんし……MekeGenericMethod?
C# 4.0 の新機能らしいよ
まだ 3.0 考えてる段階じゃなかったっけ……?
234 :
228 :2005/10/01(土) 15:46:04
ランタイム実行時に型が決定されるので 静的にはわかりませんがランタイム自身はわかっているはずです。 たとえば public class testList<T> というクラスがあった場合 obejct aaa = 適当なインスタンス; Type runtimeType = aaa .GetType(); Type runtimebind = typeof(testList<>); runtimebind.MakeGenericType(new Type[] { runtimeType}); ??? = Activator.CreateInstance(runtimebind,aaa); でtestList<適当なインスタンスの型>が返ってきます。 そのときの???の型はtestList<適当なインスタンスの型>のわけですが ここをどう記述すればいいのわからないのです。 帰ってきたtestList<適当なインスタンスの型>の適当なメソッドを 実行するにはtestList<適当なインスタンスの型>の型が必要になるので (Reflectionを使ってしまえばできますが・・・)
235 :
228 :2005/10/01(土) 15:51:04
間違えました obejct aaa = 適当なインスタンス; Type runtimeType = aaa .GetType(); Type runtimebind = typeof(testList<>); Type binded = runtimebind.MakeGenericType(new Type[] { runtimeType}); ??? = Activator.CreateInstance(binded ,aaa); です
>>234 静的に決定できないのなら静的に書きようもない。
そして静的に決定できないところに使うのがリフレクションだろ。
> (Reflectionを使ってしまえばできますが・・・)
すでにこの時点でリフレクションに浸かりまくってるじゃないか。
よくわからんのだけど静的にわかんないんだったらソースにも記述できないんじゃないの? 記述できるのなら、それ相応の書式があるかと。 obejct aaa = 適当なインスタンス; object bbb = 適当なインスタンスその2; Type runtimebind = typeof(testList<>); Type binded; if (適当な条件式) binded = runtimebind.MakeGenericType(new Type[] { aaa.GetType() }); else binded = runtimebind.MakeGenericType(new Type[] { bbb.GetType() }); ??? = Activator.CreateInstance(binded ,aaa); これは確実に書けない筈。書けるとしたら testList 型。 どうでも良いけど Generic で限定しなくても、testList のメソッドは実行できるような気がする。
238 :
228 :2005/10/01(土) 16:03:26
??? = Activator.CreateInstance(binded ,aaa); まではリフレクションを使わないと無理ですが これ以降testList<T>のメソッド実行等では (実行するメソッドがGenericでない場合) 型が決定されているので リフレクションが必要でないと考えているんですが
うお。236 と微妙に内容かぶった。スマソ
例えばList<string>とList<int>は別の型だぞ? 当然List<string>.RemoveAtとList<int>.RemoveAtも別のメソッドだ。たまたま名前が同じだけの。 Genericパラメータが分からないのならそれは型が(静的には)分かっていないと言うことだ。
241 :
228 :2005/10/01(土) 16:09:43
作られるのはtestList<なにかしらのType> であってtestList<>とかにキャストできるかと思ったら コンパイルエラーになるので 何かしらの書き方があるのかと思って質問しました 適当なInterface(Genericなしの)を作成して そいつにキャストするしかないんですかね?
242 :
228 :2005/10/01(土) 16:14:05
>>240 てことは
List<T>とList<int>
List<T>とList<string>にはまったく関連がないってことですかね
FindLastIndex(Predicate<T>)
とかはさすがに無理だと思うけど
Clearとかは同じなのかと思ってました。
イメージとしてはList<T>を継承したList<int>が
あるのかと思っていたorz
あれ? C# の generic 扱ったこと無いんだけど List list = new List<int>; ってエラーになるの?
244 :
デフォルトの名無しさん :2005/10/01(土) 16:16:33
>>243 List<int> list = new List<int>();
じゃなきゃエラー
あ、ごめん。最後の () が入ってなかったのは俺のミス。 java で確かめてみたんだけど ArrayList list = new ArrayList<String>(); は通った。ここ、C# と Java の相違点?
単に書き方の違いのような気もするが……。 ArrayList list = new ArrayList<String>(); list = new ArrayList<Integer>(); //Integerでよかったっけ? は通るの? 通るのなら相違点だけど。
通ったどころか ArrayList list = new ArrayList<Integer>(); list.add("sample"); list.add(123); System.out.println(list.get(0)); System.out.println(list.get(123)); これすら許容。しかも出力されるのは 「sample」 「123」。自分でもびっくり。
っていうか、多分 java1.5 の generic は実行時の型チェックを一切やってない。
249 :
デフォルトの名無しさん :2005/10/01(土) 16:35:00
ArrayListとArrayList<>はちがうやろ
JavaのGenericsはコンパイル時にキャストするためのコードが 自動的に付加されるだけじゃなかったっけ
251 :
デフォルトの名無しさん :2005/10/01(土) 16:59:21
実行時の型チェックしないなら object受け入れのいままでのコレクションでいいじゃん
Javaぽかーんだな
ArrayList<Integer> list = new ArrayList<Integer>(); と宣言しても list.add("sample"); が通るだなんてことはないよね
>>255 さすがにそれが通ったらGenericsの意味がないわけで
>>255 ArrayList<Integer> list = new ArrayList<Integer>();
((ArrayList)list).add("sample");
なら通る。
ちなみに java の保身のために言っておくけど、ちゃんと警告は出てるからな。
『注: Test.java の操作は、未チェックまたは安全ではありません。』 って。
258 :
247 :2005/10/01(土) 18:23:36
それから1つごめん。
>>247 >System.out.println(list.get(123));
の 123 は 1 の間違い。
javaの話はすれ違い
他の言語と比較することでC#の長短が見えてくるのはいいことだと思うが
本題から逸れ過ぎだがな。
一つ質問してもいいですか? デリゲートって何のためにあるの?
(処理を)委譲するためだな
イベントリスナモデルにしなかったことによる利点と欠点はどんなものがあるかに
単なる関数ポインタでよかったのに
268 :
デフォルトの名無しさん :2005/10/01(土) 20:13:13
関数ポインタじゃクラスメソッドつかえねぇじゃん +GCでアドレス変わったらどうすんだよ
>>267 どうせイベントで意識せずに使ってるから。
270 :
デフォルトの名無しさん :2005/10/02(日) 01:18:46
VC#2005 betaで、デザイナにグリッドを表示するのってどうやるの?
オプションで設定できたはず
デリゲートの話題が出たから聞きたいんだけどユーザーイベントを作るとき引数どうしてる? MSDNによれば引数をとらないときは(object sender, EventArgs args)で 引数をとるときはEventArgsを継承するのが望ましいらしいけどさ、 たかがイベントの引数のために新しいクラスを作ると無駄に時間ばっかりかかるんだよね。 しかも○○EventArgsになるからIDEでソートされるととっちらかって探しにくいしさ。 公式でよくつかう型のEventArgsくらい用意してくれればいいのにな。 ArrayListEventArgsとか。 しょうがないからEventArgs無視して delegate EHArrayList(object sender, ArrayList al) ←EHはEventHandlerの略 とか自分で用意して使ってる。 他にこういう風にしてる人いる?
よく使うものだったら普通にクラスライブラリに用意されてないか? そもそもそんなことやってたら無駄にクラス増えるだろ。
いやArrayListを引数に取るEventArgsなんて作ったことないし。 普通にEventArgsの派生クラス書いてるなぁ。 ちょっとしたテストで使う分にはvoid delegate Ev(object obj);とかやるけど。 そんな私は律儀にOnHogehogeも作るしComponents.Eventsも使う人。
ArrayList を引数にとる EventHandler は作ったことがある 第1引数が object sender ではなく、変更された ArrayList を渡すようになってる奴だけど
delegateぐらいそのつど書けよ
むしろ俺が悩むのはdelegateの名前。
>>278 そのスレは知ってる。ちなみに命名規則の話はスレ違いになる。
そうではなくControl.Invokeとかでひとつのdelegateを使いまわしたりする上に、
特有の引数をとったりするので毎度、名前には頭を悩ませる、という話。
たまにイベントの名前とかぶったりもするし。
>>279 そういうとき↓こういう接頭辞良くない? EHとEAでソートされるから探しやすいし。
EventHandlerとか打ってると指痛くなってくるよ。
delegate void EHevent_name(object sender, EAargs_name);
event EHevent_name event_name;
1週間でC#の神様になれる本ってありますか?
MSDNを全部印刷しろ
.NETでSOAPを使う時って、サーバのURLとメソッド名、戻り値が わかればいいのですか? プロキシとかいるんですか?
ソリューションイクスプローラで add web reference ってのが一番楽でしょ
VS.NETを使わないでやりたいんです。 難しいですかね?
wsdl.exe に WSDL を渡せばプロクシクラスを作ってくれるよ
287 :
デフォルトの名無しさん :2005/10/02(日) 19:16:28
プロキシクラスを作らなければ無理なんですかね? アドレスとメソッドだけでは不可能ですか? WSDLが提供されないんで・・・。
サーバ側の仕様が変化しないのならば 適当なWSDLを食わしてプロクシクラスを作らせてから それを真似して作ればいいんじゃね
289 :
デフォルトの名無しさん :2005/10/02(日) 22:48:01
System.Windows.Formsって monoでは使えないの? java.awtみたいなLinuxでもWindowsでも同じってわけにはいかないのかな? MicrosoftはLinux用のSDKなんて絶対つくらないのかね。
作らないだろうなー
そもそもLinuxでSystem.Windows.Forms使おうという人がどれくらいいるかってーと……。 ASP.NETが動けばいいじゃん? みたいな。
ドットネットが出た最初の頃はクロスプラットフォームをうたっていたような・・・
うたうのは自由だろ
CLIに準拠してりゃクロスプラットフォーム
295 :
デフォルトの名無しさん :2005/10/03(月) 00:32:26
Panel (AutoScroll = true)に対してSizeが大きすぎるものをいれることは 無理なのでしょうか? 中のコンポーネントのサイズを大きくしても、いつの間にか高さがshort.MaxValueくらいになってるのですが・・
>>280 いまだに接頭詞使うアフォがいるんですね。
氏ね。
C# で Yahoo オークションの情報をとってくるプログラムを 作ろうとしています。Yahoo 側で Web Service があればそれを 利用したかったのですがどうもないみたいなので、自分で取得するしか ないかと考えています。 で、HTTP で通信して HTML を取得し、それをパースすればいいと 思っているのですが、ユーザーID、パスワードを用いて Yahoo オークションにログインしないといけないのですが、 こういった事を実装するには Yahoo 側のログインでどのように Form が POST されているかを調べ、それと同じ事をこつこつコードで 実装していくしか方法はないでしょうか? 何かアドバイスがあればお願いします。
>>297 地道に通信内容を真似るかIEを外から操作するか
299 :
デフォルトの名無しさん :2005/10/03(月) 21:23:41
普通に作れるでしょ まあお前には無理だろうけどさ
301 :
デフォルトの名無しさん :2005/10/04(火) 16:53:26
ヒント:C#は遅い
ヒント:最近のPCは十分にオーバースペック
グラフィックの表示が実行時間のボトルネックになるんだから それ以外のところが多少遅くても全然問題にならんわな
304 :
カラス 731 :2005/10/04(火) 17:31:50
どうしょう?
銀賞
C#って遅いの? なんか起動は遅いけど、動きだしたら速いイメージがある
動きだしても速くはないよ
308 :
デフォルトの名無しさん :2005/10/04(火) 21:39:05
C#は遅いだけで使い物にならないクソ言語w 普及率もJavaに完全に負けてるしwww
速くないのはプログラマがヘボいから
MSSQLServerからデータを取得して、DataGridに表示しようとしています。 DataAdapterのデータのプレビューを見ると正しくデータが表示されています。 ところが、fillでデータを取得して画面表示すると 必ず最初の1件に2件目のデータが表示され、データが重複します。 たとえば、元のテーブルに1,2,3,4・・10と入っていると 2,2,3,4・・10と取得してしまいます。 SelectCommandを書き換えて降順で取得すると、 9,9,8,7,6・・1と取得してしまいます。 この場合、どのあたりに問題があるのでしょうか。 私の技術や頭に問題以外で考えられるのはどのあたりでしょうか。
遅いと言われるのは、初回起動の遅さとWinForm(GDI+)の遅さ。 それでもJavaよりは遥かにましだが、早くVistaの時代にいってほしいものですな。
Windows Formsのプログラマほどのへたれはそういない。 そういやWindows Forms2.0のソースコードを公開するって言う話はどうなったの?
Reflector .NET で充分だよ
C# で書かれビルドされたdllをVC++のコードから呼んで使いたいのですが どうすれば良いでしょうか?
316 :
デフォルトの名無しさん :2005/10/04(火) 23:48:41
cgiってc++で作られたりもするみたいですけど、 c#でcgiを作るってできるんでしょうか?
317 :
デフォルトの名無しさん :2005/10/04(火) 23:50:27
>>316 できるできる。環境変数と標準入出力を扱えるなら何でもいい。
作れないことはないが非効率。 素直にASP.NETで運用するのが吉。
319 :
デフォルトの名無しさん :2005/10/04(火) 23:57:53
cgiを作る技術ってのはやはり 基本的な通信の知識を勉強しなければならないのでしょうか?
320 :
デフォルトの名無しさん :2005/10/05(水) 00:00:01
通信うんぬんより、標準入出力の概念を勉強したほうが。 標準入出力が分かればコンソールアプリを作るとの大差ない。
321 :
デフォルトの名無しさん :2005/10/05(水) 00:20:09
ありがとうございます。
エクセル伯父さんに COMアドインを追加してみたいのです。C#です でもどうしたらいいのかわりません。たじけてくだあいあい あとエクセル伯父さんは2000から対応できる?
脳に障害があるようですね
ボタンを押したらファイルのプロパティを表示出来るようにするにはどうすればいいですか?
326 :
デフォルトの名無しさん :2005/10/05(水) 21:27:39
ふらっとのほうにも書いたんだけど・・・ こっちで誰か知ってる人がいたら情報ください VisualStudioの問題なのかもしれませんが・・・ Windowsアプリケーションを作成して、一個ボタンを置いただけのフォームを作成したあと コンパイルしようとしたところ リソースを準備しています... C:ソースファイルの場所\プロジェクト名.resx: リソース ファイルへの書き込み中にエラーが発生しました。 指定されたパスが見つかりません。 といったエラーが出てコンパイルすることができません 今まで普通につかえてたのですが、急にこのエラーが出るようになりました・・・ フォームのデザイナを表示した際に作られるresxファイルを削除するとコンパイルできるのですが またデザイナを開くとresxが生成されて、コンパイル時にエラーになるんですよね 今のところコンパイルのたびにresxファイル削除してなんとか回避してる状況です。。 誰か情報持っていたらください
328 :
325 :2005/10/05(水) 22:06:10
>>327 使ってる環境はベータじゃないんですが・・・
関係あるのかな、とりあえず明日試してみます
330 :
デフォルトの名無しさん :2005/10/05(水) 22:14:40
文字コード(Unicode)の0x0000ってどんな文字ですか? C#言語でこれを調べる方法はありますか?
新しいプロジェクトで軒並みそうなるなら、VSの再インストールが手っ取り早そうだな
どんな文字かというとNULL文字だが、 これを調べる手段ってなんだ? どうなったら調べたことになるんだ? ユニコードコンソーシアムのサイトでも見に行けば?
333 :
325 :2005/10/05(水) 22:20:09
>>331 とりあえず今はコーディング→resxファイル削除→コンパイル
で動いてるので、キリのいいところでVS再インストールしてみます
なんか微妙に条件があるっぽくて
Windowsアプリプロジェクトを作った後
自動で作られているForm1を消して、新しいフォームを作るとそうなるみたいです
名前変更は試しませんでした
334 :
デフォルトの名無しさん :2005/10/05(水) 22:20:31
>>332 なるほどNULL文字ですか。
ありがとうございます。
335 :
デフォルトの名無しさん :2005/10/06(木) 15:23:26
DataGridのdatasourceに型付データセットを格納して表示項目とかデザイナで設定したあと //datagrid1にはデザイナでdataset1.table1をデータソースとして指定 dataset1 = GetNewDataSet1Data();←だけでは画面の表示は何も変わらず dagagrid1.DataSource = dataset1.table1;←だと画面の表示設定が全部初期化される データセットの中身を最新にしても表示の設定とかはそのままにしてたいんだけどどうやればいいのかな
CPUなんかにバグなんてないだろ プログラムが仕込まれてるわけでもあるまいし
System.String.Format("{0:HH時mm分s秒}", DateTime.Now); で結果が「09時01分11秒」になるところを 「 9時 1分11秒」としたいのですが、どうしたらできるのでしょうか? 0でなくスペースで
デザインモード時と実行時を判定したいんですが System.Windows.Forms.Controlを継承したクラスの OnCreateControlのオーバーライド内で判定 If( this.DesignMode ){ //何か } DesignModeがどんな状態でもtrueになりません。
339 :
338 :2005/10/06(木) 19:10:38
OnPaint内だとTrue。 UserControl継承でOnLoad内でもFalse。 実行時の最初だけ走らせたい処理は どこに書けばいいんでしょうか。
>>337 書式指定文字列だけじゃ不可能だから、頑張ってString.PadLeftをつかうなりして自前で実装だ。
>>339 DesignModeプロパティは処理のタイミングによって判定に使えない場面が多くて微妙。
LicenseManager.UsageModeがLicenseUsageMode.Designtimeかどうかでチェックする方法もあるけど、それもうまくいかない場所がある感じ。
とりあえず両方チェックしてそれでも無理ならあきらめ。
つVisualStudio2005
343 :
デフォルトの名無しさん :2005/10/06(木) 23:32:08
引数でよくあるsenderって何ですか?
イベントの送信者
345 :
デフォルトの名無しさん :2005/10/06(木) 23:49:12
Formのメニューバーの色をかえるにはどうすればいいんでしょうか?
MenuItemをオーナードロー
MSIL ってサブルーチン実効命令無いんだね〜。初めて知った。
348 :
338 :2005/10/07(金) 07:30:30
>>343 複数のコントロールのイベントに同じ関数を割り当てたときに
イベントの発生元をつきとめるに使う。
>>336 そういえばむかーしバグ騒ぎってあったなあ・・・
>>340 自前実装ですか...
ありがとうございます。
やってみます。
コピペにマジレス乙
353 :
デフォルトの名無しさん :2005/10/07(金) 15:19:56
エロ画像を隠蔽保管する方法について2つの案で悩んでおります。 1.対衝撃&暗号化機能付きHDを用いる案 容量:40〜80GB 暗号化:AES(256ビット) 商用品なので信頼性は高い 費用:おおよそ1〜2万円 2.自作ソフトで暗号化してMOに保管 容量:640MB 暗号化:AES(256ビット) 自作なので信頼性は微妙 更に暗号化鍵の内容も微妙(パスワードコードをそのまま使用) 費用:おおよそ2千円 どっちが良いですかね?
C#では明示にDeleteしなくてもガベージコレクションで破棄してくれると聞きましたが マルチスレッドを使用しているオブジェクトはスレッドが実行中でも破棄されるのでしょうか? そのときはスレッドも終了してくれるのでしょうか?
>>354 意味がわからん。
ルート参照からたどれなくなったオブジェクトがGC発動時に
開放されるだけでマルチスレッドがどうとか関係ないだろ
>>355 そうなんですか・・・
スレッドが実行中なのにオブジェクトを開放されたりすると
メモリリークが発生する気がしたので
有難うございました
マネージオブジェクトとアンマネージオブジェクトの違いについて教えてください
マネージされているかされてないかの違いです
360 :
デフォルトの名無しさん :2005/10/07(金) 17:45:56
>>354 >C#では明示にDeleteしなくてもガベージコレクションで破棄してくれると聞きましたが
明示的に Delete したほうが安全。ガベージコレクションは何時動くか分からない。
>マルチスレッドを使用しているオブジェクトはスレッドが実行中でも破棄されるのでしょうか?
そのオブジェクトが到達不可能、つまり2度と使えないと判断されたら破棄される対象になる。
ただしアンマネージオブジェクトと弱参照オブジェクトを除く。
>そのときはスレッドも終了してくれるのでしょうか?
スレッドは特に関係ない。
明示的にDeleteってなにー?
Dispose のことじゃね
Disposeとdelete全然関係ないじゃん。
365 :
361 :2005/10/07(金) 18:29:18
ごめん普通に釣られた。ゆるしておくれ。
>>361 知らない言葉だらけですが
レス有り難うございました
367 :
デフォルトの名無しさん :2005/10/07(金) 22:12:24
Formのタイトルバーの色をかえるにはどうすればいいんでしょうか?
デスクトップ上で右クリック⇒プロパティ⇒デザイン
XPだと3種類しか選べないよ
デザインの詳細なかったっけ?
Lunaが有効だとタイトルバーの色変わらんね
C#とVC#の違いってなに?
C#は言語 VC#は開発環境
374 :
デフォルトの名無しさん :2005/10/08(土) 21:57:08
1111158062 ↑ みたいな時刻形式を〜2005/10/08(土) 06:08:24〜のようにわかりやすい形式にもどすには どのクラスを使えばいいんでしょうか?
>>374 まず、その時刻形式はなにかという話だが。
DateTimeのTicksから得た値ならならそのままDateTimeコンストラクタに渡せばよろしい。
Cのtime関数のような値なら基準になった日付にその数字を加えてずらす必要がある。
376 :
デフォルトの名無しさん :2005/10/09(日) 00:26:05
ScrollableControl内のコントロールを固定することはどのようにすればできますか?
固定? スクロールしても同じ位置に表示させたいってことか?
そうです。 中身のControlのMoveイベントでLocationを固定しようとしても、スクロールバーの矢印を押すと微妙に動いてしまったり できればMoveさせたくないので、Moveイベントでやるのには抵抗があり、質問した次第です。
379 :
デフォルトの名無しさん :2005/10/09(日) 12:44:22
>>378 ちょっと邪道だが、そのコントロールを子にするんじゃなくて、兄弟にして
ZOrderを前にする。
例えばスクロールさせたくないやつがTextBoxだとすると
ScrollableControl ── TextBox
こうじゃなくて
Panel ┬─ ScrollableControl
.. .└─ TextBox
こうする(親のPanelは当然ながら適当に)。
380 :
379 :2005/10/09(日) 12:45:18
うわsage忘れた。スマソ
クラス内で、特定のメンバを別の特定のメンバにのみ アクセスを許可することって可能? 属性を使うんだろうか。
internalで代用はきくかもしれないが、 C++のfriendに全く相当する機能はない。 インターフェイスやデリゲートの利用を考えたほうがいい。
属性を使うとなると動的、つまり実行時にしかチェックできないな。
384 :
381 :2005/10/09(日) 15:17:50
friendキーワードってクラス間のアクセス許可だったよね。 自クラス内部での操作時に値チェックし忘れるのを防ぎたいんだ。
private なプロパティでも作れよ
「クラス内」と「クラス間」を読み違えてた。 呼び出されるメソッドでStackTraceでもチェックすればいいんじゃね。
387 :
381 :2005/10/09(日) 19:31:22
いろいろ回答ありがとう。 プロパティを用意してもうっかりフィールドにアクセスしてしまう、 というケースに対応したかった。 そういう事態ぐらいは注意して防ぐべきなのか。
システムで設定されているメニューのフォントは SystemInformation.MenuFontで取得できるようですが その他のフォント、例えばアイコンテキストのフォントとかは 取得できないんでしょうか?
ないっぽいね。 Win32APIのSystemParametersInfo関数かな。
>>387 そのフィールドの名前を「ce2ac2932221c6c6de2ca8fa68909462」の様なくぁwせdrftgyふじこ
>>391 それも考えた。
サフィックスで「〜_ThisFieldShouldBeAccessedByProperty」とつけるとか。
TextBoxだとフォーカスを失ってもSelectedTextプロパティはそのままなのに、 どうしてComboBoxはフォーカスを失うと SelectedTextがクリアされてしまう糞仕様なんですか? 具体的にはButtonで選択中のテキストを操作したいんですが……
>>393 Textプロパティで取得できるからじゃね?
395 :
394 :2005/10/10(月) 18:23:34
ああ、TextBoxのSelectedTextと同じ動作を期待してる、ってことか。
396 :
デフォルトの名無しさん :2005/10/10(月) 23:01:30
System.Diagnostics.Debug.WriteLine ってどういうものですか?
399 :
デフォルトの名無しさん :2005/10/11(火) 03:12:26
C#で非クライアント領域ありのコントロールってどうつくるん? あと無効リージョンってWin32API使わんと取れない?
画面の高速描画を行いたいのですが、いい方法を探しています。 今はダブルバッファーを使って、無効矩形のみ描画・転送を行っています。 このほかに高速化のテクなどないでしょうか?
DirectX
>>402 画面描画回りはC++かどうかっつうよりも、GDIつかうかGDI+使うかの違いでないの?
それとも、C++でGDI+、C#でGDI、C++でGDI、C#でGDI+で結構違うの?
404 :
デフォルトの名無しさん :2005/10/12(水) 00:12:10
.NETからGDIってどうやっていじるの?
API直呼び
めんどそう
407 :
デフォルトの名無しさん :2005/10/12(水) 14:30:51
DataSetにレコードを追加する場合 追加したレコードの順番どおりに格納されるのでしょうか? それとも順番は保障されていないのでしょうか?
保証されないことを前提にすべきだな
409 :
デフォルトの名無しさん :2005/10/12(水) 15:28:27
>>408 有難うございます
やっぱりそうですか・・・
ところで,列の順番は保障されていないのでしょうか?
そっちは保証される 列の順序は大事だからな
411 :
デフォルトの名無しさん :2005/10/12(水) 15:45:09
>>410 なるほど,とても参考になりました
ありがとうございます
C#で嫁を作ろうと考えています。 どうすればいいでしょうか? できれば、アヤヤかほちゃ希望です。
>>412 System.Korea名前空間かSytem.China名前空間で
Prostitute.Pay( currency Yen );
して下さい。
This module raised FabyouException. So please restart your system.
>>414 Please enter any F5 key
どこに不満があるの?
>>416 フィードバックセンターに文句言いまくれ
2.0にならないと使えないから文句言ってるの?
stringに 0101010・・・ってかんじで72ビットの文字が入っていて これに、+100とかしたいので いっかいintの10進数にでもなおしたいんだけど、オーバーフローしちゃう。 こういう場合どうやって計算すればいい?
72bit整数ならdecimalで足りるよ。 Convert.ToDecimal/ToStringが使えないからちょいと変換は面倒だけど。
423 :
デフォルトの名無しさん :2005/10/13(木) 22:17:47
ソリューションに何個かプロジェクトを含めるとして、 プロジェクトをまたいでページ遷移できないのですか?
WebかWinFormかどっちだよ。
425 :
デフォルトの名無しさん :2005/10/13(木) 22:25:17
すみません、Webです。
質問です。 作成中のプログラムのデバッグを開始すると、 出力の「デバッグ」、「〜.exe : 〜が読み込まれました。」と出力されるところに、 gcd-wg96とかfih--lq3とかyhavtihgといった全く覚えのない 毎回違うランダムな名称の参照が読み込まれたと出力されるのですが これはどういうことでしょうか?
IDEでメソッドやプロパティの名前を"Add"の3文字にすると、 そのメンバのコード上にカーソルがあるとき キーレスポンスが悪くなるのはなぜだろう。 "add" "ADD" "Add_"なら大丈夫なんだが。
インテリセンスのせい
そうなのか。 なんでAddなんだろうなあ。MSDNを引いても釈然としない。
431 :
デフォルトの名無しさん :2005/10/14(金) 09:28:52
単純にAdd〜という関数がそのほかの関数に比べて圧倒的に多いから
なるほど。そういうことなのね。 Addメソッドはコーディング時だけ名前を変えるしかないか。 ありがとう。
って、そんな作業に支障をきたすほど遅くなるのか?
ListBoxコントロールで外見せされてないFocucedIndexの値(フォーカスの当たってるitemのインデックス) をとる方法って何かありますか?
>>433 ひどくはないが動作が緩慢になってイヤ。
タスクマネージャでも他のメソッドの倍以上のCPU使用率になる。
単にPCのスペック不足かもしれない。(1.2GHz + 512MB)
>>434 SendMessageでLB_GETCARETINDEXを送信。
>>434 「外見せされてないFocucedIndexの値」ってなに?
int i = listBox1.SelectedIndex;
みたいな簡単な事じゃないのかな・・・
>>436 サンクス。ちょっと調べてみます。
>>437 ListBoxがprivateで持ってるプロパティって言えばいいですかね。
たとえば項目で1個目,3個目,5個目ってクリックして選択してったときに最後5個目に
フォーカスがあたると思いますが、その5(インデックスは4)ってのをとりたいんです。
SelectedIndexだと一番若いインデックス(この場合0)しか取れないので。
で、ウォッチで見るとFocucedIndexって項目にその値が入ってるんです。
439 :
437 :2005/10/14(金) 20:31:32
>>438 だったら
>>437 でいいと思うけど・・・
複数選択したときだったら
int count = listBox1.SelectedItems.Count;
int i = listBox1.SelectedIndices[count - 1];
>>439 ちっちっち、2番を選んでCtrl押しながら5番を選んでついでに3番も選んだときにどうなる?
>>436 いけました。ありがとうございました。
>>439 ちょっと言葉が足りなくて申し訳ありませんが、
フォーカスがある行が選択されてるとはかぎらないんですよね。
442 :
437 :2005/10/14(金) 20:44:53
すいません、理解できました ゴミカキコでしたね・・・レスするんじゃなかった・・・
>>442 ( ◔_ゝ◔)気にするな。おれはいつもゴミカキコだ。
ああ;あああぁああ^−よっぱらっててコードかけねーー!!!q
いま、DoubleBuffer(独自で背後にBMPつくりそこから転送)使っているんですが、1280*1024ぐらいの大きさで24FPSで描画を行うとAthlon64 3.2G相当でもCPUが100%近く行ってしまいます。 CPUを食いすぎているように思うんですが、これが普通なのでしょうか? これより早い描画を求めるならばDirectX使う必要があるんでしょうか?
>>445 そりゃGDIやGDI+よりはDirectXのほうがいいに決まってる。
720Mbps……メモリ帯域が足りなくなるレベルだな
>>446 即レス感謝です。
DirectXは詳しく知らないんですが、やりようによってはビジネスアプリっぽい画面でも使えるんですか?
たとえばVisioみたいなもののメイン画面を描画の高速化を狙ってDirectXつかって書くというのも可能なんでしょうか?
>>448 ビジネスアプリでそこまで高速に画面全体のリフレッシュが要求される状況になるのか?
無駄な画面全体の描画をしているんでない?
450 :
445 :2005/10/15(土) 00:13:24
>>449 ちょっとビジネスアプリとも違うんですが・・・
リアルタイムデータをいろいろなビューで高速表示する必要があるものを作ってます。
ほかにもCPUパワーを食うので減らせるところは減らそうと考えてます。
マシン2台用意して繋げば良いと思うよ。
452 :
デフォルトの名無しさん :2005/10/15(土) 01:14:45
ASP.NETを始めたばかりの者(C,C++の古いプログラマでつ)ですが、 ユーザがWebページ(aspx)でボタンを押すと、デスクトップキャプチャ画面をサーバに自動的に アップロードするといった処理を実現したいのですが、そもそもそのようなことはASP.NETで 可能なのでしょうか。 もし可能ならばポインタだけでも結構ですので教えていただけるとありがたいです。
>>452 キン○マウイルス?そんなのできたら個人情報だだもれだ。
>>453 そんなことどうでもいいんだよ。
ポインタだけ教えてやれよ
ポインタって言われてもねえ
>>452 ASP.NETでもそれ以外でも(穴付く以外に)不可能。
クライアントのプログラムとして許可されないと。
457 :
452 :2005/10/15(土) 05:37:24
>>456 そうですか、、、そうですよね。
クライアントのプログラムを起動するようなサンプルってどこかにありますでしょうか。
社内用のツールとしてデータベースに接続する簡単なWebインターフェイスをASP.NETで書いたんですが(バグトラッカーみたいなもの)、
一緒に画像も貼り付けられたら便利だと思ったもので。そんなわけでウィルスを作りたいわけではありませんです。
>>453
リッチクライアントにしちゃえよ ページ遷移とか考えなくていいから楽チンだぜ
459 :
452 :2005/10/15(土) 08:58:05
>>458 データベースに情報をサブミットするタイミングで画像もアップロードしたいので、流れとしては
(1) ユーザが画面をキャプチャするボタンを押す。
(2) クライアントプログラムが起動して画面をキャプチャし、決まったテンポラリフォルダに画像ファイルを保存。
(3) ユーザがサブミットボタンを押したタイミングでテンポラリフォルダにある画像ファイルをアップロードする。
てな感じで考えています。(2)のためにクライアントプログラムを起動したいのですが、どうすればよいでしょうか。
460 :
デフォルトの名無しさん :2005/10/15(土) 09:06:25
ASP.NETで親フレームの中に子フレームが2つ入っている画面を 作っています。1つの子フレームをポストバックすると、2つの子フレームを 画面遷移させたいのです。 どうすればいいでしょうか?
461 :
デフォルトの名無しさん :2005/10/15(土) 09:41:52
WindowsFormでコントロール(TextBoxなど)の画面上の絶対位置を取得したいのですが どなたか教えてください。
>>459 あのな、とりあえずWebだけだとどういじくってもミリ。あればセキュリティホール
クライアントアプリが起動できたとしてそれがCドライブフォーマットするとかだったらどうするのよ。
基本的にローカルには触れないと思え
だからそれを使うマシンで設定する必要がある
ブラウザで簡単に実現するんならActiveX使ったりとか
個人的にはその作業全部一つのクライアントアプリにしてしまって配置は適当に考える
ドメイン使うでも何でも
C#を始めようと思い、いまマイクロソフトvisualC#.netスタンダード(バージョン2002)というのをインストールしています。 が、最初に↓のようなことを聞かれます。 「インストールするコンピュータをwebプロジェクトのホストにするかどうか」(winコンポーネントのアップデートをするかどうか) 「webプロジェクトのホスト」というのがよく分からず、これをどう答えていいのか分かりません。 「ホストにする」にした方がいいのでしょうか?
asp.net 開発する気ある? なければ無視してかまわない筈。
466 :
464 :2005/10/15(土) 14:57:47
>>465 早速レスありがとうございます。
・・・で、追加で申し訳ないのですが、asp.net とはなんでしょうか?
ぐぐってみても、よく分からないページが一件表示されるだけで、わかりませんでした(T T)
作りたいのは、シューティングゲームと、簡易タイマー(キッチンタイマーみたいなの)です。
ならいらない
C#でほちゃかゆかりんを作成したいと考えています。 できれば、作成したものと結婚を夢見ています。 どうすれば作れますか?
Your search - ほちゃかゆかりん - did not match any documents. Suggestions: - Make sure all words are spelled correctly. - Try different keywords. - Try more general keywords.
C#からzlib使いたいんだけど、何か楽な方法ないですか? または、実際に使っててソースが公開されてるソフトとかあれば教えてください。
SharpZLib
>>472 確かそれってライセンスがGPLなんじゃないの?
GPL だけど、例外事項が記載されてたはずだから問題ない。 っていうか SharpZipLib だな。
>>472-474 ありがとうございます。
今は、何故かUnzip32.dllを使ってたのでこれですっきりC#で書けそうです。
#まだ、どんなことができるのか手探り状態なのですごく助かりました。
476 :
デフォルトの名無しさん :2005/10/15(土) 19:12:32
C#には標準的なRSS APIって何かないの?
C#は言語なのでAPIなんてものはない。 .NETには、少なくとも.NET Frameworkのクラスライブラリには存在しないな。 何をもって標準的というのかは知らないが、Googleにでも聞いてみたらどうだ。
セマンティックウェブ関連のライブラリは完全にJavaに負けるな
まあそりゃ年季が違うからな
どのライブラリも負けてるような
日本はRSSは1.0と2.0が同じぐらい使われてて不便だよな。
Javaって標準ライブラリでRSSサポートされてんの? それより次期RSSサポートがCOMなのが最悪。
今、入門書を読みながら一から勉強しているのですが、いきなりつまづきました。 label4.Text=myage.text; というのを実行すると、 C:\Documents and Settings\ptch\My Documents\Visual Studio Projects\intro\Form1.cs(137): 'System.Windows.Forms.Control.text' はアクセスできない保護レベルになっています。 とエラーが出ます。 何が駄目なのかさっぱり分かりません(´・ω・`) どうしたらいいのでしょうか?
大文字と小文字は区別される、というところから始めるのか VisualStudio使ってないの?
ってパスが露骨にVSを主張してるなw インテリセンスがでるだろ? myageの後のピリオド打ったときに
487 :
484 :2005/10/15(土) 23:05:06
レスありがとうございます。 でも、うああ、えと、どういうことでしょう。 visual stadioというのはわかりませんが、486さんのいうように多分そうだと思います。 インテリセンスとは? ピリオド打った後に確かになんかリストみたいなのが自動で表示されました。 そこからどうしたらよかったのでしょうか?
あ 大文字なんですか! やってみます!
成功しました・・・・こんなんで俺って・・・・・先が思いやられる・・・・_| ̄|○ とりあえず、ありでした・・・・
自分が何を使っているのか把握していないという不思議
ま、最初はたいていそんなもんだ。
昔を思い出すな
/// <summary> ***** </summary> のsummaryってどういう使い方をするんですか?
***** がサマリーであることをマークアップする
フォームの何もないところをクリックしたときに numericUpDownからフォーカスを外したいんですが やり方が見つかりません。誰か教えてください。
498 :
デフォルトの名無しさん :2005/10/16(日) 19:28:00
HtmlControlとWebControlって何が違うのですか?
499 :
デフォルトの名無しさん :2005/10/16(日) 19:31:10
.NET2.0の話なんですが htmlDocument = webbrowser.Document.OpenNew(true);みたいにして HtmlDocumentを取得して、htmlDocument.write(html);のようにhtmlを投げてブラウザに表示させたいんですけど 何故かブラウザの末尾にundefinedと出てしまいます。 投げてるhtmlは2chのdatを適当に整形した奴なんですけど(正式なhtmlじゃなくて、2chブラウザから右栗>ソースを表示みたいなもの)やっぱりそれが原因ですかね?
まずそのHTMLに問題はないのか?
俺もちょうどWebBrowser Controlいじってるところだよ。 とりあえずHTMLは表示できてるよ。
>>497 formをクリック→何かにfocus()
>>502 ありがとうございます。おかげさまで出来たんですが、縦長のフォームなので
新しくフォーカスを置いたところにスクロールしてしまいます。
何にfocus()すれば適切なのでしょうか。。
いったいどんなフォーム作ってんだ
505 :
デフォルトの名無しさん :2005/10/16(日) 21:34:32
undefinedは解決しました… λ,,,なんかnull投げてた… ちょっといじってたらformが真っ白…同期勉強してきます
TimeSpan t = DateTime.Now; ってやると、 Form1.cs(102): 型 'System.DateTime' を型 'System.TimeSpan' に暗黙的に変換できません。 とエラーがでます。 本の通りにやってるんですが、なぜでしょう。 今度はちゃんと大文字小文字を区別して書いてるのに(´・ω・`)
どの本を使ってるんだ? 現在時刻を TimeSpan にすること自体が謎だし
508 :
デフォルトの名無しさん :2005/10/16(日) 22:34:35
DateTime.NowはDateTime型だ、TimeSpan型の変数には入れられない。 本の通り?本当に本にそんなこと書いてあるの? なんていう本の何ページですか? もし本に、そう書いてあったら、その本は最悪だ。 仮に上級者向けなら、その程度のミスはすぐ解決できる人しか読まないはずだからいいんだが、 初心者向けの本だったら?C#、あるいはプログラミングが嫌いになっちゃう人を作る書籍ということになる。
>>507 そうですか。。。
すいません、もう一度見てみます(´・ω・`)
>>508 ごめん、こっちがミスってると思う。
もっかい読んでみます。
AssemblyVersion について教えてください。 AssemblyVersion で指定するバージョン番号は、 アセンブリに厳密名を付けない場合、どのような番号になっても 何も影響はありませんか?例えば、 Menu.exe が subA.dll, subB.dll を参照している場合、 subA.dll をリビルドしてバージョン番号があがっても、 Menu.exe はリビルドする事なく、subA.dll を上書きコピーすれば 動作すると思いますが、AssemblyVersionは何の為に使用するの でしょうか? 逆に、ここで Menu.exe がビルドされた時の subA.dll のバージョン番号 と完全一致させたい場合は、厳密名が必須になる、という事に なりますか? よろしくお願いします。
A.EXEとB.EXEで同じC.DLLを参照するとき サイド倍サイドでAフォルダとBフォルダにC.DLLをそれぞれ置くとして これでバージョン違いが複数存在できますが、それぞれのソースは どうやって管理すればいいんでしょう? C.csproj以下もEXEごとに複数存在させるんでしょうか。 VBとActiveX DLLのときは、A.vbpとB.vbpから同じC.vbpを参照 してたんですが。。
下記の XML から Title を取得したいのですが、
xmlDoc.SelectSingleNode("/ItemLookupResponse/Items/Item/Title").InnerText
では取得できませんでした。
SelectSingleNode で階層構造を辿っていくだけだと思っているのですが
何かお気付きの点がありましたら教えてください。
<?xml version="1.0" encoding="UTF-8" ?>
- <ItemLookupResponse xmlns="
http://webservices... ">
- <Items>
- <Item>
<ASIN>12345678</ASIN>
<DetailPageURL>
http://www.....</DetailPageURL >
- <ItemAttributes>
<Author>2ch</Author>
<Author>2ch</Author>
<Creator Role="著">2ch</Creator>
<ProductGroup>Book</ProductGroup>
<Title>2ch</Title>
</ItemAttributes>
</Item>
</Items>
</ItemLookupResponse>
>>513 パスにItemAttributesが抜けとる
516 :
513 :2005/10/17(月) 19:20:59
>>514 名前空間とは?
>>515 うわ、コピーミスしました。
実際には、
xmlDoc.SelectSingleNode("/ItemLookupResponse/Items/Item/ItemAttributes/Title").InnerText
としているのですが、取れませんでした。
(Null がかえってくる)
>>516 XMLの基本的なこと調べた?
ItemLookupResponse以下の名前空間は「
http://webservices... 」
とかだよね(xmlns=XML Namespace)。省略されているから分からんけど
SelectSingleNodeに名前空間を指定するオーバーロードがあるでしょ
>>513 とりあえずxmlDoc.ChildNodes[1].ChildNodes[0].ChildNodes[0].ChildNodes[2].ChildNodes[4].InnerTextでw
520 :
デフォルトの名無しさん :2005/10/17(月) 22:11:01
HttpContext.Current.SessionとPage.Sessionはどう違うのでしょうか?
521 :
デフォルトの名無しさん :2005/10/17(月) 22:58:24
私は実業高校に通う3年です。 課題研究の授業で、一人でC言語の勉強をしなくてはならないのですが、 入門者向けのC言語の本を買いたいのですが、みなさんのお勧めの本とかあったら教えてください。 お願いします。 C言語は、プログラミングの授業でポインタのあたりまでやっている段階です。
とりあえずスレタイを100回読み返してね
君の自己紹介なぞ誰も聞いていないが、取りあえずここはC#のスレであってC言語のスレじゃない。
524 :
デフォルトの名無しさん :2005/10/17(月) 23:04:13
C#は、アンマネージC++で作ったスタティックライブラリ(.lib)とリンクできますか? できるとしたら、どうすればよいでしょうか?
できない
526 :
デフォルトの名無しさん :2005/10/17(月) 23:06:45
>>525 やはりそうですか。ありがとうございます。
527 :
デフォルトの名無しさん :2005/10/17(月) 23:46:40
521 です すみませんでしたm(_ _)m
528 :
デフォルトの名無しさん :2005/10/18(火) 11:57:22
ASP.NETで質問です。 asp:TextBoxのタグでWidth属性を変えても実行結果に変化がないのですがどうしてでしょうか。 またC#のコード内のLoad_Page()でWidth属性に値を代入してもだめです。 どなたか原因がお分かりになりますでしょうか。
529 :
デフォルトの名無しさん :2005/10/18(火) 12:01:24
Lockedプロパティ
530 :
528 :2005/10/18(火) 13:25:27
>>529 TextBoxにはLockedというプロパティはないように見受けられますがいかがでしょうか。
その後調べてみたところ、問題が起きていたのはFirefoxだったのですが、
インターネットエクスプローラーではサイズの変更がきちんと反映されて表示されるようです。
531 :
デフォルトの名無しさん :2005/10/18(火) 15:30:35
ASP.NET & C#の質問です。 DataGridでテーブルを表示させていますが、各行を選択した時にハイライトする方法はあるのでしょうか。
532 :
デフォルトの名無しさん :2005/10/18(火) 15:46:24
C#で2次元配列を使うときに 例えば int[,] test = new int[2,3]; としてコレの1行目を一次元配列を処理する 関数に渡すときにはどうすればよいのでしょうか? Cなら void hoge(int a[]) { } とういう関数には hoge(test[0]); としますがC#ではどうなるのでしょうか?
int[,] じゃなくて int[][] でも使えばいいじゃん
534 :
デフォルトの名無しさん :2005/10/18(火) 15:54:06
つ,使えるんですか 有難うございます
インターフェースベースでのプログラミングについて質問させてくだ さい。 今までC++をメインに使っていたのですが、その際に多重継承を多用 していました。 たとえばあるクラスはSerializableでありCommandHandlerでありView であるというような際に多重継承を使って実装しています。これらのク ラスは機能がまったく異なり、それらの機能を使いたいクラスが必要な ものを継承するようにしていました。 もちろん機能を使うだけであれば以上などで実装するのですが、フレー ムワークのようなコードを多く書いているため内部で多態として動作す るように継承を用いています。 ここでC#でも同じようなコードを書こうとしていたのですが、実装継承 ができないためコード記述が面倒になっています。 インターフェースを記述してそれを継承するものがみな機能の実装クラ スを呼び出すコードを書かなければいけません。 皆さんはどのようにコードを書かれているのでしょうか?参考にさせ てもらえれば幸いです。
包含させて委譲すればいいじゃん。
537 :
デフォルトの名無しさん :2005/10/18(火) 21:54:20
ASP.NET(C#)で、セッションに値を格納しているのに、 ページによってはとれないページがあります。 セッションIDはとれるのですが、セッションの中身(countが0)が空になるんです。 セッションをオフにはしてません。 どういった原因が考えられますか?
538 :
535 :2005/10/18(火) 22:04:23
>536 それは機能を使いたいだけの場合ですよね?isAにしたいときはどうするんですか?
>>538 それは本当にis-aなのか?よく考えてみろ。
540 :
535 :2005/10/19(水) 01:09:56
十分IsAです。
C++ では is-a が適切だったとしても、C# で適切かどうかは分からない。 とりあえず "あるクラス" の宣言を C++ ので良いから言ってくれ。名前とか継承してるクラスとか知りたい。
542 :
535 :2005/10/19(水) 02:46:10
>>541 こんな感じです。
class RealTimeDataView:class View,class DataHandler,class Serializable
{
}
こんな感じです。
Viewクラスは描画やマウスイベントの受け取りなどいわゆるビュー機能を実装しています。
DataHandlerはリアルタイムデータを受け取り処理するクラスです。データをどう処理するかにおいてこのクラスを継承して特殊クラスを作っています。
Serializableはオブジェクトをシリアライズするための基本クラスです。これを継承したクラスがシリアライズ可能となります。
>>542 ATLがそんなつくりですね。多重継承を前提にした設計なので、それをサポートしない言語では
包含して委譲するしかないと思います。
SerializableとDataHandlerは機能的にみてインターフェイスで実装すべきものって印象だな
545 :
535 :2005/10/19(水) 10:56:54
レス感謝です。
>>543 包含して以上の場合だと他のクラスとの関連はどうなるんでしょうか?
これらのクラスが動くには外部にあるマネージャークラスなどとの強調動作が必須になっています。
ViewクラスはWindow関係のフレームワークの中で動いてますし、DataHandlerもリアルタイムデータを処理する仕組みの中での一ハンドラーを実装するクラスの基本クラスでありManagerにとってはほかのクラスとの違いはありません。
Serializableも同様です。いずれも外部にとっては”Is-A"で処理しているものです。
外部から操作するにはデリゲートをハンドラとして登録して動かすことなども考えましたがいまいちスマートでありません。
>>544 どの変からそのように感じられたのでしょうか?
いまいちインターフェースの感覚つかんでないので、というよりインターフェースの存在意義がわからないので・・・
じぶんにとってインターフェースはダイヤモンド継承を避けたいために導入された稚拙な設計ミスのように思えています。
ダイヤモンド継承を禁止されたクラスの多重継が可能あればすべて事足りると思ってるのですが何かおかしいでしょうか?
546 :
デフォルトの名無しさん :2005/10/19(水) 11:04:11
ダイヤモンド継承って言うのね 勉強になりますた ところでなぜ多重継承が忌み嫌われる理由って分かります?
> じぶんにとってインターフェースはダイヤモンド継承を避けたいために導入された稚拙な設計ミスのように思えています。 とりあえずOOPについて勉強されてはどうですか?
>>545 逆、インターフェースで十分なのに、インターフェース使うべき所を多重継承使って解決してたのの方が稚拙。
>>546 まあ、ダイアモンド継承がその際たるものだけど、
それがなくても多重継承は実装が面倒だし、コードの実行効率も落ちる。
549 :
デフォルトの名無しさん :2005/10/19(水) 12:29:39
C++ではis-Aとhas-Aが選べないという事に気が付いていないのでは?
>>535 はきっとC++をこよなく愛してやまない人なんですよ。そんな人がC#やJavaを使うのは間違いなわけで
そんな人にC++/CLIをすすめようかと思ったら、ref class で宣言すると多重継承はできなくなるようです。
とまあ多重継承は長所短所あって、C++は多重継承をできることを選んで、JavaやC#などは選ばなかった
言語の設計思想の違い、それだけのことですな。
>>546 ダイヤモンド継承のからみのメソッドシグネチャのあいまいさだと思っていましたが、ほかにもあるんでしょうか?
552 :
535 :2005/10/19(水) 13:17:45
>>547 何が問題なんでしょう?
>>548 インターフェースだとプロトコルと実装が分離できるけれど、逆に分離しなければいけないところが使うときにめんどくさいのですが。
それの解消法何か言い方法内科と探してる最中です。
>>549 詳しく
>>550 おっしゃるとおりです。C++つかいですた。
その言語設計思想の違いの上でどうコーディングしたらいいか質問してるんですが。
>>551 例えば、
class A { int a; };
class B { int b; };
class C : A, B { int c };
とした場合、
C c;
A* a = &c; // これは a に c のアドレスを渡すだけだけど、
B* b = &c; // これは b に c のアドレス + int の幅になる
とかが嫌。
554 :
デフォルトの名無しさん :2005/10/19(水) 15:05:46
皆さん多重のループを一気に抜けるときにはどのような方法を使ってますか? 私はフラグで各ループをbreakしてるんですが何か言い方法ってありますでしょうか?
>>552 >その言語設計思想の違いの上でどうコーディングしたらいいか質問してるんですが
そういう意味だったら、これが言語の違いと認識して、C++ の考えを持ち込むのは諦めてほしい。
残念だけど。
>>554 goto
557 :
535 :2005/10/19(水) 15:25:39
>>555 こういうばあいC#ではどのように実装するんでしょう?
>>557 ん〜。だから諦めて
>>536 なんだよなぁ。
あるいは、多重継承の親となるクラスを改変できるのなら、実装と定義を分けるのも手かも。
定義を interface A, interface B、実装を A や B を継承した class CA, class CB に分割しておいて、
多重継承は A と B を継承したクラスから、包含した CA, CB に委譲。
559 :
535 :2005/10/19(水) 15:46:30
>>558 包含と委譲の場合はたくらすとの強調動作(Managerクラスなどとのやり取り)はどうされてるんですか?
実装と定義のぶんりになるんですかね。やはり。コード核のがめんどくさい&バグ生みそうなんですが・・・
Managerクラスって何よ
561 :
535 :2005/10/19(水) 15:54:18
>>560 失礼しました。マネージャー的な役割するクラスなどのことです。
それは〜。Manager と本体を分離するべきかどうかを先ず考えないと。
ん? マネージャ的なクラスで継承が必要な場面って、親と子を同じように扱いたい場合だけだよな? 子だけを扱うようにマネージャクラスを改造すれば良いんじゃないのか?
564 :
535 :2005/10/19(水) 16:17:36
>>562 分離するべきものだったとした場合はどうなるんでしょう?
>>563 親と子をはなにをさすんでしょう?マネージャー的なクラスがコントロールする対象となるクラスのことでしょうか?
自分はそれをインターフェースなどを定義して複数クラスで継承するなどしてIsAとしてあつかいたいんですが。
個だけを扱うとはどのような意味でしょう?
>>564 >マネージャー的なクラスがコントロールする対象となるクラスのことでしょうか?
はい。
>インターフェースなどを定義して複数クラスで継承するなどしてIsA
すれば良いじゃん。できる筈。
っていうか、逆に考えると分かりやすいかも。 class A を扱う class AManager を作るんじゃなくて、class ManagerA と、それによって扱われる interface IManaged を作るの。
>>565 >ここでC#でも同じようなコードを書こうとしていたのですが、実装継承
>ができないためコード記述が面倒になっています。
>インターフェースを記述してそれを継承するものがみな機能の実装クラ
>スを呼び出すコードを書かなければいけません。
>皆さんはどのようにコードを書かれているのでしょうか?参考にさせ
>てもらえれば幸いです。
最初の質問なんですが・・・
>>567 >538 :535 :2005/10/18(火) 22:04:23
>>536
>それは機能を使いたいだけの場合ですよね?isAにしたいときはどうするんですか?
is-a にしたいんだよね? 俺継承以外で is-a にする方法を、C++ でも C# でも知らない。
C++ だと小細工すれば出来るかもしれないけど。
んじゃちょっと話を戻してみる。
>>545 >というよりインターフェースの存在意義がわからないので・・・
C# では “これが一番重要” って決めた継承を一本だけ残して、後は interface, attribute などの準継承でまかなう。
それによって実質的なコード量が増えたとしても気にしない。
public void Foo() { 委譲先オブジェクト.Foo(); }
みたいなメソッドが山ほどあっても。
それはない。 そもそも設計がおかしい。
571 :
569 :2005/10/19(水) 17:20:21
いや、うん。確かに山ほどあったら考え直すべきだろうけどな。 でも数個程度なら (俺は) こうする。
>>559 >コード核のがめんどくさい&バグ生みそうなんですが・・・
駄々をこねてるとしか思えないな。ここを拒否したら話が進まんだろう。
>>542 をもとにC#風に書くとこんな感じか?
class DataHandler : IDataHandler
class Serializable : ISerializable
class RealTimeDataView : View, IDataHandler, ISerializable
DataHandlerとSerializable を包含
Managerクラスというのも具体的に例を挙げてくれたらもう少し答えようもあるかもしれない。
573 :
デフォルトの名無しさん :2005/10/19(水) 18:59:17
つうか、そんなにC++が良いならC++使えよ どうしてもC#で書かなきゃいけないならC#の流儀に従え
>>572 C# 風に書くと、
class RealTimeDataView : View, ISerializable
{
}
ただ、C# をやってると、C のマクロが非常に恋しくなるときがある。
変なタイミングで送信しちまった・・・ class RealTimeDataView : View, ISerializable { IDataHandler DataHandler{ get{ ... } }; }
>>574 [Serializable]
class RealTimeDataView: View {} // では不味いのか?
ここまで読み飛ばした
>>572 同じコードをあちこちにこぴぺしなければいけないのは美しくないし十分バグの元だと思うが?
>>573 おまいもC#の流儀教えてくれって言ってるんだから素直に教えてやれや。あ、知らんのか?すまんそ。
>>579 >同じコードをあちこちにこぴぺしなければいけないのは
どこから出てきた話だ?
>>579 >同じコードをあちこちにこぴぺしなければいけないのは美しくないし十分バグの元だと思うが?
コレがこいつの能力をよく現しているようだ
582 :
579 :2005/10/19(水) 21:23:16
委譲先オブジェクト呼ぶコード派生クラスすべてに書かなきゃならんだろが。 損ぐらい気づけちんかす。
自己紹介乙
>>582 多言語の話で悪いんだが、java.util.Vector と java.util.Stack の継承関係は最悪だと思ってる。
差分プログラミングを否定するわけじゃないんだが、時と場合によると思うよ。
小粒なクラスをたくさん並べて協調的に動かすと言う発想ができんのかおまえらには
はっきり言ってC++erはC#やらないでほしい。 うざいだけ。
煽るだけでまともな説明のひとつすらできないやからがいる擦れはここですか?
なんだと
説明しているのに全く聞き入れない馬鹿がいるスレですよ
質問の意味把握せず見当違いのこといって説明ってプゲラッチョ
まるで子供の口喧嘩
相変わらずここレベル低いな
玄人は@ITやGDNJにでも行ってろプゲラッチョ
594 :
デフォルトの名無しさん :2005/10/20(木) 10:11:45
おまいら宗教論はいいからおいらを助けれ。 ASP.NETで、DataGridの各行にボタンを配置することはできますが、これを画像ボタンにすることは可能ですか。 普通のボタンかリンクボタンしか選択できないのでしょうか?
596 :
デフォルトの名無しさん :2005/10/20(木) 13:42:49
>>582 それは非常に美しいじゃないか
実体が委譲先にあるというのが一目で判る
>>596 派生クラスが20個あったら20個に同じように委譲コードを書かないといかんのでしょ?
うんこ。
599 :
デフォルトの名無しさん :2005/10/20(木) 14:56:17
>>597 画面制御のパターンを20も作るのか?そっちのがウンコ
画面は業務ごとにパターン化してその幾つかの中から選んだベースの画面を継承して業務画面を作るんじゃないのか?
画面ごとに操作方法の違うアプリってなんかUIが糞なんじゃね?
ケンカしながら
>>594 にちゃんと回答しているおまいらが好き
System.Web.UI.WebControls.DataGridにBoundColumnを追加するときに DataSourceであるDataSetの子テーブルのフィールドを割り当てたいんですが BoundColumnのDataFieldはどう指定すればいいのでしょうか?
>>599 あほか。何で画面制御の話に限定してんだよ。
ここで話してるのは派生オブジェクト一般のことですが?
なんで少数のでしか派生させないことを前提にしてるんですか?人の話もきいてないし。
お舞システム向いてないよ。
オッサン必死だな
こういう化石頭の奴はさっさと土木工事に回せよな
なんだか難しい話してるなあ。 多重継承の代わりにどんなテクニック使ってるんですか?って質問にしか見えないアホな俺がいる
そもそもあおり口調でC#を馬鹿にした
>>535 が悪い
ただ他の言語を使いたくないってごねてるだけにしか見えん
VS.NETでEclipseみたいにリファクタリングってできるのですか?
2005の新機能にリファクタリングがある
そもそも委譲する話してるのに派生とか言ってるのがおかしい。
委譲と派生の使い分けがわからんぽ
>>611 別に委譲前提じゃないでしょ。まぁ委譲よく使ってるが。
20個の派生クラスの同じような委譲コード書くなら普通スーパークラスに書くもんじゃないの?
だからそうできるクラスがC#だと一個に限定されるからどうしよって話だろ。
616 :
デフォルトの名無しさん :2005/10/21(金) 11:17:14
あっそ。
>>615 ごめん、俺馬鹿だわ、言ってる意味全然わかんない。
>>614 で言いたかったのは、
例えば、
>>535 の例だとViewを継承したクラスに(ViewAとする)にSerializable(ISerializable)と
CommandHandler(ICommandHandler)を委譲を使って実装してViewAから20個のクラスを継承すればいいじゃない?
ってことだったんだけど、変かな?
618 :
デフォルトの名無しさん :2005/10/21(金) 11:42:26
>>617 C#やJavaは普通そうするものだと思うが
620 :
デフォルトの名無しさん :2005/10/21(金) 15:33:51
ある文字列(A)を基にして意味不明な文字列(B)を作成するにはどうしたら良いですか? たとえば、「今日は2chに2時間滞在した。」という15文字の文章を基にして、 15文字または30文字の無意味な半角英字(大小)数字記号を生成するにはどうすれば良いですか?
621 :
デフォルトの名無しさん :2005/10/21(金) 15:35:25
少し修正 ある文字列(A)を基にして意味不明な文字列(B)を作成するにはどうしたら良いですか? たとえば、「今日は2chに2時間滞在した。」という15文字の文章(A)を基にして、 15文字または30文字の無意味な半角英字(大小)数字記号(B)を生成するにはどうすれば良いですか? Bをパスワードとして利用したいので。
MD5
>>619 >>535 の言いたいことはViewだけが特別なクラスでなくSerializableやCommandHandlerも同等のクラスとして扱いたいということだと思われ。
SerializableやCommandHandlerも
>>614 でいうような委譲コードを書くべき派生クラスが20個もあるかもしれない。
その際になんでViewだけ特別にクラスとして、SerializableやCommandHandlerは制限のあるインターフェースにしなきゃいけないのか。
んでC#ではそうするしかないなら、なんかいいコードの書き方教えれお舞ら。ということでは?
624 :
デフォルトの名無しさん :2005/10/21(金) 17:25:37
void getHoge( HogeHANDLE hDev, WORD *pHogeID ) なんてAPIをC#から叩きたい時ってどうしたらいいですか? HANDLE IntPtr WORD ushortってのはわかったのですがポインタの扱いがわかりません。
IntPtrまたはref short //unsignedは大抵無視する私。
626 :
デフォルトの名無しさん :2005/10/21(金) 17:41:39
>>623 プログラム的な概念が表に出すぎてモデル化が甘いんじゃないの?
Viewでもあり、Serializableでもあり、CommandHandlerであるそれは何なの
この場合(画面とかそういうのだと思うが)CommandViewFrame(名前は適当)とか言う継承元を作れば良い話
Serializableだけで実体化することって現実的に考えるとおかしいよね?
それって何かシリアライズしたい何かがあるからシリアライズの機能をつけるんだよね
あと、CommandHandlerって機能だけを実体化するのもおかしいよね?
ウィンドウにフォーカスが無い状態でKeyDownを検知するにはどうしたらいいでしょうか?
つまり他のアプリケーションがアクティブな時ってこと? ならグローバルフックするとかDirectInputつかうとか 単純にフォームでキー入力を処理したいってんならKeyPreview
>>628 その通りです、説明不足で申し訳ありません。
KeyPreviewを使ってなんとかしようとしていたのですができず困っていました。
上2つを試してみます。
630 :
619 :2005/10/21(金) 18:48:28
>>623 なるほど、よくわからないけどわかった。さんくす。
>>626 > プログラム的な概念が表に出すぎてモデル化が甘いんじゃないの?
たぶんそんなところだと俺も思う。
Form上に大量のLinklabelを並べて、Formの幅に合わせて自動的に改行されるようにしたいのですが、 Formのリサイズ時に各Linklabelを位置を先頭から再計算して再描画したら動作がとても遅くて困ってます。 リサイズ時にスムーズに大量のLinklabelを表示するにはどうしたらいいですか?
SuspendLayout?
ツリビューにおいて、その子ノードにフォーカスを当てるにはどうしたらよいでしょうか? this.treeView1.Focus(); で、一番親にフォーカスが当るのですが、その子供たちにフォーカスを当てる事が出来ません。 もしよろしければ教えていただけないでしょうか。
SelectedNode
>>632 SuspendLayoutを使ってみたけど遅いまま
SuspendLayoutの使い方間違ってるのかな?
private void Form1_Resize(object sender, System.EventArgs e)
{
panel1.SuspendLayout();
for(int i = 0 ; i < panel1.Controls.Count;i++)
{
if(re_left > panel1の横幅)
{
re_left = 10;
re_top += panel1.Controls[i].Height;
}
panel1.Controls[i].Top = re_top; //縦座標
panel1.Controls[i].Left = re_left; //横座標
re_left += panel1.Controls[i].Width; //次のラベルの横座標
}
panel1.ResumeLayout();
}
IndentedTextWriterがSystem.CodeDom.Compiler名前空間にあるのが納得いきません。 > 複数のインデント レベルを使用して書式指定されたテキストは、生成されたコードで使用すると便利です。 > そのため、このクラスは CodeDOM コード ジェネレータの実装で使用されます。 そんな下らん理由で変な名前空間に入れるなヴォケ
CodeDOM が最適じゃねえの? IO におけってのか
そこでSystem.Text.CodeDomですよ。 Regexに並ぶVIP待遇。
Collectionsにならって、System.IO.Specializedあたりにすりゃいいのに。
Collections.Specialized (゚听)イラネ 汎用性がなさすぎる
三段目まで名前空間が下るクラスはたいていはそんなもんだろ。
5段目にある BinaryFormatter はよく使うお
すいません質問です。 Console.Write((char)0xFF); を実行すると、私の環境では 'y' (0x79) が出力されます。 調べたところ、char へキャストした直後には、値は 0xFF でしたので、 Write が発音記号付きの 'y' (0xFF) を表示しようとして代替文字の 0x79 を出力したのではないか、と私は推測しました。 そこで2つほど質問なのですが、 1: この推測は正しいのかどうか。 2: 回避する方法として、Encoding.Ascii.GetChars(new byte[] { 0xFF }) を Write するならば 0xFF が出力できるが、 一文字だけを出力するのには大げさすぎるので、もっと簡単な実現方法は無いかどうか。 をよろしくお願いいたします。
644 :
643 :2005/10/21(金) 22:20:49
あ〜だめだ。GetChars で出力されるのは 0xFF じゃなくて '?' (0x3F) だ。 ……どうにかして、0xFF そのものを表示できないですか?
面白そうなので俺も試してみよう。
646 :
デフォルトの名無しさん :2005/10/21(金) 22:24:49
>>622 ありがとうございます。
ところで、MD5って何ですか?
647 :
643 :2005/10/21(金) 22:28:41
コンソール上で正しく表示できなくても、せめてリダイレクト先のファイルには正しく書き込まれていて欲しいんだが……。 Console.Out に指定できるのは TextWriter だから、BinaryWriter も使えないし。
>>646 System.Security.Cryptography.MD5
>>647 FileStreamに吐いたらどうだ。
そのファイルをFirefoxで開いてみたらウムラウトつきで表示されたし。
IEだと化けたけど。
この分野に詳しい人マダー?
yウムラウトは UTF-16 では 0x00FF だけど UTF-8 では 0xC3BF
651 :
643 :2005/10/21(金) 22:37:28
>>649 いや、なぜか知らんが標準出力じゃないといけないらしいんだ。
ちなみに作ってるのは BrainFuck のコンパイラな。
標準出力のほうの問題くさいな。
653 :
デフォルトの名無しさん :2005/10/21(金) 23:16:57
WIndowsNT系は、Unicodeベースなんだが、コマンドプロンプト(MS-DOS窓ではない)は、Unicodeベースではない。 コマンドプロンプトのタイトルバーを右クリックして、プロパティを開いてみるといい。 「オプション」タブの下に、「現在のコードページ」っていうのがあるはず。 もしかしたら、これはコマンドプロンプトだけではなく、標準入出力全般に言えることかもしれない。
654 :
643 :2005/10/21(金) 23:26:36
うひー。us.bat の存在を忘れてたよ。 根本的な解決にはなってないのが残念ですが、とりあえずこれで行くことにします。 ありがとうございました m(_ _)m
で、.NET 2.0でそれを取得設定するOutputEncodingプロパティが追加されたと。 それぞれAPIのSetConsoleOutputCP/GetConsoleOutputCPを呼んでるだけ。 UTF8のコードページを割り当てたらyウムラウトが表示されるようになった。
変数名に日本語使えるってはじめて知った。 private void 当たり判定() とか出来るんだ。 半角/全角キー押すのがだるいけどつかってみようと思った。 以上 ちら裏
>>656 IME 切り替え、思った以上にだるいよ。
enum のメンバに使うくらいならいいかも。
型名. と打った時点でインテリセンス効くし。
だよね
APIの SetStretchBlt( WHITEONBLACK ) と同等の.NET関数はありますか?
660 :
デフォルトの名無しさん :2005/10/23(日) 16:44:24
みなさんUIってどうしてますか? オフィスとかVSのツールバーみたいな感じのものを欲しいのですが 標準にはないし一から作るのもbmpまで用意することを考えるとしんどいので なにかフリーで使えるいいやつないですかね?
>>660 VBPowerPackのUtilityToolBarでも使えば?
ToolStrip マジお勧め
663 :
660 :2005/10/23(日) 16:59:10
即レス多謝。
てか
>>662 すげぇっすね。
遅すぎるって感もありますがやっぱりVSに標準では言ってるべきものだと思うし。
ようするに2005を使えと。
それがいやなら
>>661 ってことですかね。
2005でもtheSpokeプライスで出てくれれば買えるのですが…
expressBeta落とそうかな。
664 :
660 :2005/10/23(日) 20:36:59
早速2005C#いれてみますた。 toolstrip標準項目の追加ってすごいですね。 undo/redoがないとか細かいことは気になるけど見栄えがこれまでと違うし どこにでもドッキングするしひゃほいです。
しかし、ほんと早く2005正式リリースしねぇかな。
2005という名前もどうなのかと今更ながら思ったり。 11月中旬→12月中旬にかけて製品発表会で、たぶんその後発売でしょ?
2000年に発売されたホームページビルダー2002よりかはいいんじゃね
発売を1ヶ月延期して2006に名称変更することにしませんでした。
今年が2004年なら2005にしてるだろうが、2006って半端だからな。
2001はちょっと胡散臭い感じだよな
C++のfriend宣言のような指定クラスのみにアクセスを許す指定子ってないんでしょうか?
internal で代用
>>672 ぜんぜん用途違うじゃない。
internalは外部クラスに特定クラスを見せないため。それもアセンブリを別にしないとまったく意味がない。
friendは特定クラスにのみアクセスを許す。
>>673 だから、完全に同じ用途のものがないから代用しろと言われているのでは。
>>674 いやinternalで代用ってお前ぜんぜん違うだろ。できるわけねーだろこのチンカスってことじゃないの?
関連性の高いクラスなら同じモジュールに入れとくもんだしょ
internalとか使うんじゃねーよ。 クラスは全部俺に使わせろ
ILMerge がまともに使えるようになれば そこらじゅうに internal を使うかも
681 :
デフォルトの名無しさん :2005/10/25(火) 06:47:19
現在のメソッドの名前を取りたいのですが何かスマートな方法はありませんか? Environment.StackTraceだと文字列で返ってきちゃうからMethodInfoの配列返してくれるようなの
682 :
デフォルトの名無しさん :2005/10/25(火) 07:32:20
ASP.NETでC#を使ってます。 下のようにあるクラスを2つのページの親クラスにしたいんですが、 親クラス(parent.aspx.cs) <---子クラス1(child1.aspx.cs) ... child1.aspxで使用 <---子クラス2(child2.aspx.cs) ... child2.aspxで使用 child1.aspx.cs, child2.aspx.csで親クラスのコードを取り込むにはどうすればよいのでしょうか。 using MyClass.parent; とか宣言してもだめでした。
683 :
682 :2005/10/25(火) 07:33:58
すみません、もう一つ質問させてください。 DataGridにボタンを表示させているんですが、これに列ごとに固有のツールチップを出したいです。 方法をご存知の方いらっしゃいますでしょうか。
>>681 現在のメソッドの名前を知りたいのにMethodInfoの*配列*が必要ってのが意味不明。
「現在実行中のメソッド」ならこれ
Console.WriteLine(new System.Diagnostics.StackFrame().GetMethod().Name);
「スタックトレース」ならこれ
StackTrace stackTrace = new StackTrace();
for (int i = 0; i < stackTrace.FrameCount; i++) {
StackFrame stackFrame = stackTrace.GetFrame(i);
MethodBase methodBase = stackFrame.GetMethod();
Console.WriteLine(methodBase.Name);
}
SystemIconsで描画できるアイコンの、小さいやつ(16×16)を 描画したいのですが、g.DrawIcon(SystemIcons.Information, 0, 0)と やると大きいアイコンしか描けません。小さいのはどうやったら 出せますか?
>>686 アイコンが安置エイリアスなもので、16×16のイメージが
出てるのか、32×32が縮小されてるのかよくわかんないのですが
とりあえず出ました。
>>684 MethodBaseっていうのか。ありがとう。これで大分省力化できる。
いいこと思いついたんだけど。 Application_IdleでGC.Collect()する。 よくね?
あんまり
デジャヴュ てか数スレ前に出たなそのネタ
厳密な名前を持つアセンブリを作成するときに、厳密な名前を持たない ユーザーコントロールを使用しているのですがビルドの際に 「参照されたアセンブリ 'filename' は厳密な名前を持っていません。」 とエラーになります。 厳密名を持つアセンブリで、厳密名を持たないアセンブリを参照して 使用する方法があれば教えてください。
>>693 一回無署名のでコンパイルしてからildasm。
んで、リンクを署名済みのにIL書き換えてilasmでもう一回コンパイルすれば
いけるかもしれない。ilasmはチェックが弱いっていうかほとんどしないので
…まぁ署名する意味がなくなるので普通だと出来ないようになっているんだろうな
object 型のオブジェクトを,任意のタイプにキャストする方法ってある? 例えば↓こんな感じ ---- Type t = int.GetType(); object obj = (object) 100; int i = 何らかの方法(t, obj); ---- i = (t) obj; はダメだった. t が int 以外(string とか)だったら例外発生で構わないのだけど……
697 :
デフォルトの名無しさん :2005/10/27(木) 11:28:13
純粋仮想関数の宣言方法をおしえてください
class Base { public K cast<K>() { return (K)(object)this; } } class DerivedA : Base { } class DerivedB : Base { } void TestMethod(){ Base b=new DerivedA(); DerivedA da=b.cast<DerivedA>(); Base tmp = (Base)da; DerivedB db = b.cast<DerivedB>(); } 質問です。 このコードでreturn (K)(object)this; の部分を return (K)this; とするとBaseを型'K'に変換できないと言われるんですがなぜでしょう? TestMethod内のコードを削除しても同様です。 パラメータつきで呼び出しコードを書いたときにその型に応じてエラーをはくのならわかるのですが、なぜ頭から跳ねられるんでしょうか?
699 :
697 :2005/10/27(木) 11:37:43
abstract class C: I { public abstract void M(); } か
>>696 VBのCTypeみたいなやつですね。それ俺も欲しい。
>>696 静的に決定できない型にキャストする意味はどこにもないと思うのだが。
静的に決定できるなら(int)objでいいし。
>>698 class A {}
class B {}
public void Main() {
A a = new A();
B ba = (B)(object)a; // InvalidCastException
B bb = (B)a; // cs0030
}
要するにこういう事だけど?
継承元への変換:暗黙のキャスト
継承先への変換:明示的キャスト
継承関係にない:変換演算子のオーバーロードを定義する必要がある
KがBaseか何かで制約されていない限り、Kは継承関係にない型と解釈するのが自然だろう。
703 :
698 :2005/10/27(木) 14:30:51
>>702 それをパラメタライズドメソッドにしたときにコンパイラはどこで判断してるのかということです。
最初はパラメタライズメソッド呼び出しのコードを書いたときに展開され、KにBaseの派生クラスなどを指定した場合にはコンパイルとおり、無関係なものを指定した場合はエラーになると思っていたのですが、メソッドの呼び出しに関係なくエラーをはかれています。
何を基準にエラーをはいているのか、なぜobjectにキャストした場合にはエラーをはかないのかがわからないんです。
>>703 C++のtemplateとは違って、.NETのGenericsは実行時解決。
コンパイル時に整合性は見るけど実際に展開はしない。
だからKは飽くまでK。
objectにキャストしたらOKなのは、object型は全てのクラスの継承元で暗黙にキャストできるから。
コンパイラはobject型から任意の型へのキャストを撥ねようがない。
(K)thisでは、objectを通らず直接キャストになるから、
KまたはBaseがexplicit/implicit operator K(Base b)を定義してなきゃならない。
でもKに対して定義しようはない。ので無理。
C++のtemplateならコンパイル時に解決するから、Kに実際に置かれた型が型変換演算子を定義しているかどうかは判断できるんだが。
>>704 言われてるとおりなんですけどコンパイル時に整合性を見るのに情報がない(呼び出しもしていない場合)Kについてなぜ判断してるんでしょう?
実行時に解決する動きならばコンパイラでは不明なままとおして、実行時に例外はくのが推測できる動作だと思うんですが。
呼び出しがない->型解決の情報がない->そのまま通して実行時に例外
呼び出しがある->型解決の情報がある->コンパイル時にはねられる
んーかいてて両方で動作違い出るのおかしい気がしてきたけれど・・・ジェネリクスの細かい仕様知らないので・・・逝ってきます。
整合性を見るのは利用する側の方であって、利用される側の方ではないよ。 利用される側はそれで完結しているもの。誰がどう利用するかは考慮しない。 > 実行時に解決する動きならばコンパイラでは不明なままとおして、実行時に例外はくのが推測できる動作だと思うんですが。 できる限りエラーはコンパイル時にというのがGenericsの役割の一つなのに、そんなことしたら利点が減るじゃないか。 常に最悪の事態を想定しないと。 > 呼び出しがない->型解決の情報がない->そのまま通して実行時に例外 > 呼び出しがある->型解決の情報がある->コンパイル時にはねられる Baseが別アセンブリに入ってたらどうする? コンパイルしたらBase.dllの方でエラーが出るなんて意味不明なことになってしまう。
707 :
デフォルトの名無しさん :2005/10/28(金) 00:12:20
ASP.NETでImageButtonをクリックしたときに、イベントハンドラより Page_Loadが先に走るみたいなんですが、これって僕だけですか? Page_LoadでImageButtonがクリックされたかどうかを知る方法って ないのでしょうか? Request.Formにも何も入ってないのですが・・・。
それは正常な動作だ。 IsPostBackを調べろ
デバッグ中に全然関係ないところですっ飛んでいてたので追ってみたところ ウオッチに出てくるobjectの値が壊れているようです。 exe名はFolderView.exeなのですがインスタンスの値のところに 'olderView.exe'と出てそこまでステップすると例外をはいて落ちています。 リビルド、ファイルの削除も聞きません。VS2005使ってます。これはベータのバグなんでしょうか・・・
お前の説明能力にバグがある
exeの名前をolderview.exeにリネームすれば?
712 :
デフォルトの名無しさん :2005/10/28(金) 09:11:13
>>708 Page_LoadでImageButtonがクリックされたのをしることは無理なんですか?
713 :
709 :2005/10/28(金) 10:35:59
>>710 すっ飛ぶはずのないところで例外が出る。
ウォッチですっ飛んだところのフィールドなどを見てみる。
フィールドの'base'クラスの値などが"olderview.exe"となっている。そのフィールドの値を詳しく見るとexeの中身もしくはexe飲めたデータををバイナリで見たような値に変わっている。
その行を削除しても別のところで同様の現象が出る。
>>711 今度はlderview.exeでエラーが出ます。たぶん。最初はリブなどを使っていてそのファイルの追加情報がないとか出ていたのでexeに一体化したらこのような名前になった。
714 :
デフォルトの名無しさん :2005/10/28(金) 12:54:34
OS Windows XP .Net Framework 1.1で Socket.SendTo メソッド (Byte[], Int32, 0, 自分自身の端末のEndPoint) を実行したところ ・管理者権限では成功 ・ユーザ権限では成功しない という事象が出ています。 例外としてはSocketException, ErrorCodeは10013 ということで、ユーザ権限ではICMPプロトコルが 許可されないためのようですが 対処としてはどのようにすればよいでしょうか
715 :
デフォルトの名無しさん :2005/10/28(金) 12:58:24
>>714 実行したいユーザーを管理者グループもしくはパワーユーザーグループ、またはそれに順ずるローカルグループに設定する
そもそもそういう操作をさせたくないからユーザー権限に設定してるんじゃないのか?
716 :
デフォルトの名無しさん :2005/10/28(金) 21:58:04
入れる奴が悪い
DateTimeとintに無効値を設定したいのですが java風だと DateTime t = null; Integer i = null; みたいに。なにか方法はありませんか?
.NET 2.0ならNullable。 そうでないのなら適当に有り得ない数値でもつかっとく。DateTime.MinValueとか。
ないの? SqlIntとかつかうしかないのか。
構造体にして null とかが使えない代わりに 動作速度が向上するんだから我慢汁
とあるXMLを読み込んでクラスに復元する処理がしたかったんだけど その定義が <xsd:element name="intValue" type="int" minOccurs="0"> だからnullが使いたかったんだけどね。 SqlInt32 intValue { get } とかにするしかなさそうですね。
>>722 maxOccurs の初期値は 1 だから Nullable<int> でもいい気もするけれども
maxOccurs > 2 のことも考えると int[] の方が適切なんじゃ?
>>722 この要素は1つか0しかないのでint[]ではないのですが
int[]なら可読性は下がるけどnullを表現できますね。
1.0なのでスマートな解決法は無さそうですが参考になりました。
どうもありがとう。
725 :
デフォルトの名無しさん :2005/10/29(土) 02:23:33
Screen.PrimaryScreen.WorkingAreaって 実行時にタスクバーなどの位置を変更しても更新されないのは既出ですか?
取りあえずSystemInformation.WorkingAreaで回避できる。 Primary以外はWin32APIということになるかな。
Control.BeginInvokeでメインスレッドと違うスレッドで呼ばれてるんですが・・・ ControlのハッシュでつくったControlもBeginInvokeよびだすControlも例外起こるControlが同一なのを確認。 ベータ2だから?(´・ω・`)
わけわからん
わけわからんね メインスレッドと違うってどうやって判断したんだ?
大体Control.BeginInvokeなんて使い物にならないだろ。 EndInvoke呼ばなきゃならないし
確かにわけわからんな 正式バージョンのSDKはもう手に入るぞ MSDN会員ならVS2005もダウンロードできるし
>>730 返値がいらないならEndInvokeは必須ではないよ
お舞らリフレクションのいかす使いかたないですか?
つ 無用の用
属性を読むときくらいにしか使わんな
736 :
727 :2005/10/29(土) 17:46:35
>>729 Win32のGetCurrentThreadIDで。
737 :
デフォルトの名無しさん :2005/10/29(土) 18:06:02
ASP.NET(C#)で、ボタンを押したときに動的にFormのTargetを変えたいのですが どうすればいいのでしょうか?
>>732 EndInvoke呼ばないとメモリリークするとどっかで見たんですが
ん?結局必要ないの?
以下引用 BeginInvokeメソッドは、本来のメソッドの引数以外に2つの引数を取る。 1つはAsyncCallbackデリゲートで、メソッドの実行が終了したときに 呼び出されるメソッド(コールバック・メソッド)を渡すことができる。 もう1つは状態オブジェクトで、ここでは呼び出しに使ったデリゲートを渡している。 Callbackメソッドでは、渡されたオブジェクトからShowMessageデリゲートを復元し、 BeginInvokeメソッドの対になっているEndInvokeメソッドを呼び出している。 BeginInvokeとEndInvokeは必ず対で呼び出さなければならない。 EndInvokeメソッドを呼び出し忘れると、メモリ・リークを引き起こす可能性がある。 From @IT
結局必要なのね
>>727 非同期呼び出ししてるんだから別スレッドになるの当たり前だと思うんだけど?
何がしたいのかさっぱりわからん。
>>744 MSDNよんでからほざけ。知ったかは恥かくぞ。
Control.BeginInvokeって コールバックからEndInvokeを呼ぶっていう手法が使えないから結局、使えないでFAなの?
使いづらい、ではあるな EndInvokeを更に別スレッドで実行すれば良いんだから ややこしいけど
748 :
デフォルトの名無しさん :2005/10/30(日) 03:38:11
>>749 dllのアンロードに困るのが難点だな。
AppDomainを分けるのも大変だし。
むしろ俺はリフレクションでプラグインを考えるときは アプリケーションの終了まで持ったままにしておくな。
Control.BeginInvoke で投げっぱなし・・・使いまくってたよ orz 投げっぱなしができるメソッドが欲しいですね。
Invokeだと呼び出しスレッドのコンテキストで実行される->マズー
755 :
デフォルトの名無しさん :2005/10/30(日) 14:44:04
HTMLコントロールとASPコントロールって何が違うのですか? runat=serverを付ければ同じでは無いのでしょうか?
インスタンスメソッドの呼び出しを別のメソッドに対して実行する方法ないでしょうか? たとえば class Element{ public virtual Draw() } class ElemA:Element{ public override void Draw(); } class ElemB:Element{ public override void Draw(); } とあったときDrawの呼び出し方法を登録して他のインスタンスに対しそれを実行したいと考えています。 デリゲートだと呼び出しとインスタンス結びついてしまいますよね。 リフレクションになるんでしょうか?
通訳を頼む
ElemBのインスタンスでElementのDrawを呼びたい、ってことじゃないかね。 まぁそれができると複雑化するし「じゃあabstractなメソッドはどうするの?」なわけだが。
すいません。こんな漢字にしたいんです。 class Element{ public virtual Draw() public virtual int Size(); } class ElemA:Element{ public override void Draw(); public override int Size(); } class ElemB:Element{ public override void Draw(); public override int Size(); } void Hoge(List<Element> elementList){ DrawDelegate drawDeleg=new DrawDelegate(Draw); DizeDelegate sizeDeleg=new DrawDelegate(Size); foreach(Element elem in elementList){ deleg.Invoke(elem); <===elem.Draw()(ElemA.DrawもしくはElemB.Draw)の呼び出し int size=sizeDeleg(elem); <===elem.Size()(ElemA.SizeもしくはElemB.Size)の呼び出し } }
763 :
762 :2005/10/30(日) 19:06:08
>>761 やっぱり分からん。何がしたいのか言葉で説明しろ。
デリゲート越しに呼び出したいのは Element.Draw() と ElemA.Draw() のどっちなんだ。
764 :
761 :2005/10/30(日) 19:18:23
elem.Draw()と書いたのと同じ動作をしてほしいんです。 つまりelemがElemAのインスタンスならElemA.Drawが呼び出される。 やりたいことはインスタンスメソッドのデリゲートを登録してそのインスタンスを別のものにして実行できないかということなんです。 Elementがたのインスタンスに対してDrawを呼び出すということだけをオブジェクトにして、インスタンスとパラメータは実行時に渡したい。 インスタンスメソッドのデリゲートだとそのデリゲートとインスタンスが結びついてしまっていて後から変更できないと思うので何かいい方法は内科と探してます。
2行目までしか言っていることが理解できん
766 :
761 :2005/10/30(日) 19:24:24
いみわかるよ?どうしたらいいかはしらんけど。 なにがわかんないの?
自演乙
なんでそんなことしたいのかさっぱり分からないけど 実現するならリフレクションだな なんでそんなことしたいのかさっぱり分からないけど
>>769 2回もいわなくてもいいじゃない
2回もいわなくてもいいじゃない
久しぶりに可哀想な自演を見た
>>764 >elem.Draw()と書いたのと同じ動作をしてほしいんです。
>つまりelemがElemAのインスタンスならElemA.Drawが呼び出される。
普通にやれば良い。何も問題は無い。
=====
using System;
class Element { public virtual void Draw() { Console.WriteLine("Element::Draw"); } }
class ElemA: Element { public override void Draw() { Console.WriteLine("ElemA::Draw"); } }
class ElemB: Element { public override void Draw() { Console.WriteLine("ElemB::Draw"); } }
delegate void DrawDelegate();
class Test {
[STAThread]
public static void Main(string[] args) {
DrawDelegate d1 = new DrawDelegate(new Element().Draw);
DrawDelegate d2 = new DrawDelegate(new ElemA().Draw);
DrawDelegate d3 = new DrawDelegate(new ElemB().Draw);
d1(); // Element::Draw が表示される
d2(); // ElemA::Draw が表示される
d3(); // ElemB::Draw が表示される
}
}
elemに対して行う操作を、条件により分岐できます。
さっきの例ではDrawの呼び出しとか明記したけれど、つぎのようにすればhogeクラスでは実行する内容についての知識が要らなくなります。
publc class ElementExecutor{
public abstract void Execute(Element elem);
}
public class ElemDelegateExecutor<Delegate>:ElementExecutor{
Delegate _deleg;
public override void Execute(Element elem){
_deleg.Invoke(elem);
}
}
void Hoge(Executor execCommand){
foreach(Element elem in elementList){
execCommand(elem);
}
}
ポイントはdelegateの指す内容がElementもしくはその派生クラスのインスタンスメソッドだということです。
>>772 実行するインスタンスはアトから注入したいんです。
>>773 名前欄見てポカーン
>ポイントはdelegateの指す内容がElementもしくはその派生クラスのインスタンスメソッドだということです。
はい。この事実は変わりません。何か不満でも?
>実行するインスタンスはアトから注入したいんです。
なら delegate では無理ですね。
776 :
773 :2005/10/30(日) 20:13:19
名前欄間違いです・・・失礼しました・・・orz
>>774 不満だから質問してるんですが?自分の質問内容が実現できるんなら不満ありません。
>>776 delegate では実現できません。delegate は使わないで下さい。
779 :
デフォルトの名無しさん :2005/10/30(日) 20:57:10
BindingSourceでソースをオブジェクトにしたとき DataGridViewのヘッダは自動でプロパティ名になるのですが そこを別名にする枠組みはBindingSourceにありませんか? DataGridViewのColumnをLoad時にマッピングし直す方法を使っているのですが より簡単な方法があれば教えてください。
DataGridViewColumn.HeaderText
理由は不明なんですが、.NET frameworkの再頒布パッケージをインストールしたくないという強い要望があり、 半信半疑ながらの質問です。 .NET frameworkをインストールしないで動く実行ファイルって作れるんでしょうか? MFCランタイムを静的リンクするようなイメージなのですが、.netでそれが可能かどうか教えてください。 俺的には一回で済むんだから入れろよって感じなんですが・・・
>>783 無理。
.NET Frameworkが動く環境というのは、
その下の層の環境も整っていることを意味する。
monoを入れれば動くかもね
786 :
デフォルトの名無しさん :2005/10/30(日) 23:15:42
.Netって元々のThreadPoolとは別のThreadPoolって作れないんでしょうか? 非同期Delegeteで一時的に多くのThreadPoolタスクを使ってしまっていて、デッドロックの危険があるので システムのThreadPoolとは分離しておきたいのですが
諦めてThreadクラスを使え
どんなにスレッド使おうとしても プロセッサ数×25までしか同時実行できないだよね
Threadクラスも結局デリゲード利用してるだけだから デリゲート使えばええやん
>>789 いや、非同期デリゲートはThreadPoolを使うがThreadはThreadPoolを使わない
>>788 それはThreadPoolの制限
Threadにはその制限はない
まあ(私の環境では)2000足らずの同時実行でOutOfMemoryExceptionが出るが
>787 回答どうも ライブラリであったら便利だなと思いまして。メンテ大変だし ScheduledThreadPoolExecutorみたいなのがあればなぁと。
フルスクリーンモードのアプリケーションを作っています。 メインメニューを全て非表示にしたいんですが方法はありますでしょうか。お願いいたします。
FormならMenuプロパティをnullにすればいいんじゃないか。
794 :
デフォルトの名無しさん :2005/10/31(月) 00:25:46
NULL NALL NELL NULLEST!!!!!!!!!!
. ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
(;´Д`)< スンマセン、直ぐにCollectします
-=≡ / ヽ \_______
. /| | GC |. |
-=≡ /. \ヽ/\\_
/ ヽ⌒)==ヽ_)= ∧_∧
-= / /⌒\.\ || || (´・ω・`)
>>794 / / > ) || || ( つ旦O
/ / / /_||_ || と_)_) _.
し' (_つ ̄(_)) ̄ (.)) ̄ (_)) ̄(.))
796 :
デフォルトの名無しさん :2005/10/31(月) 02:27:06
>>793 ありがとうございます。たが、単に表示非表示を切り替えたいんです(動的に)。
797 :
デフォルトの名無しさん :2005/10/31(月) 02:32:29
C#のアプリケーションで、アプリケーションの起動直後に行いたい処理があるのですが、 初期化処理が全て終わった後に呼び出されるフック関数とかってあるんでしょうか。
Application.Idleで代用?
Activatedでもいいな
800
ここでいいのかどうか微妙なんだけどとりあえず言語がC#なのでここに. いま VS2005β + C# で XML を構文チェックして読み込むプログラムを書いてるんですが, hoge.xsd ファイルを作成して XmlReader にスキーマをセットしてバリデーションできるところまで書きました. で,今はこれを settings.Schemas.Add( null, "c:\\hoge.xsd" ); みたいにファイル名で書いてますが, この hoge.xsd をパスに依存しないようプログラム内部に持たせたいんですが,そのやり方がわかりません. VisualStudio のソリューションのファイル一覧に追加して, これを Stream で読み出せたりできたら最高なんですが,こういうことって可能でしょうか?
ResourceManagerクラスを調べると幸せになれるかもよ
>>802 ありがとうございますー.
調べてみました.いけそうな感じです.
しかしいろんなサイトを見ていて,xsd を扱うどこのサンプルも皆ファイルから読んでるんだけど,
ファイル名をコード内に書くことに皆は抵抗ないのだろーか……
804 :
デフォルトの名無しさん :2005/10/31(月) 12:05:43
805 :
デフォルトの名無しさん :2005/10/31(月) 16:02:10
DataTable使ってて気づいたんだけど 今までDataTableってRDBのように使ってたんだけど よく考えたら行の順番て保障されてるような希ガス
806 :
デフォルトの名無しさん :2005/10/31(月) 16:05:23
>>805 DataTableに一行ずつDataRowを追加すればな
テキストボックスのようにテキストを入力できるものをを独自に実装したいのですが、IMEの取り扱い方のヒントになるようなものないでしょうか?
808 :
デフォルトの名無しさん :2005/10/31(月) 23:09:48
キャレットがAPI使わなきゃ実現できないので APIまわりをあたれ そのついででIMEまわりもでてくる
どこかにC#からWin32API呼び出すときの定義一覧なかったでしたっけ?
それだ!さんくす。
文字列[AAAA]を検索する場合に[aaaa]で検索をかけてもひっかかってしまいます。 完全一致で検索する場合にはどうしたらよいでしょうか
何をどうやって検索したんだよ
warota
816 :
デフォルトの名無しさん :2005/11/01(火) 11:29:30
サイズ変更中は(ウィンドウの中身を変化させる)処理を行わず、 サイズ変更確定直後(サイズ変更枠上でMouseUpしたとき)にだけ処理を行いたいのですが、 どんな方法があるでしょうか? (サイズ変更枠上ではFormのMouseUpイベントは発生してくれませんでした。)
WM_NCLBUTTONUPか?
818 :
デフォルトの名無しさん :2005/11/01(火) 11:53:46
すみません、誘導されてきました。 厨な質問なんですが、 vb2005でコンソールアプリでフォームを表示させる実験をしていた時に気づいたのですが、 System.Windows.Forms名前空間は参照の設定をしないと使えないのに、 System.Threading名前空間は参照の設定をしなくても使えました。 あとvc++2005でも同様の実験をしたのですが、C++なので#include "stdafx.h"と書いたのち、 同様のコードをやったら、こっちではSystem::Drawingの参照設定が必要だといわれました。 この違いってどこから来るのですか?
820 :
デフォルトの名無しさん :2005/11/01(火) 23:02:44
C#で改行コードとかタブを簡単にとる方法ってありますか?
>>797 そもそもMainの最初とかFormのコンストラクタじゃ駄目なわけ?
>>820 とるってのは削除って意味で良いの?
とかって厳密にはどの範囲?
>>820 String.Replace()とか。
824 :
デフォルトの名無しさん :2005/11/01(火) 23:54:55
IISで仮想ディレクトリを2つ作って、2つとも同じフォルダを指定すると します。それって駄目なんですか? VS.NETで開いたらうまく動かないんですが。
きもい
C#でますみんは作れますか?
yield構文を使って樹の探索を簡単に作れるかなと思ったら yield中に再帰処理を書くのがうまくいきません。5行くらいで簡単に作るのは無理なのかな
Enumrator GetEnumeratorHelper(Node val){ foreach(Node node in val.SubNodes){ yield return node; return GetEnumeratorHelper(node); } } こう書けたら楽なのに。と
IEnumerable<Node> GetAllSubNodes(Node val) { foreach (Node node in val.SubNodes) { yield return node; foreach (Node subnode in GetAllSubNodes(node.SubNodes)) yield return subnode; } }
あ、間違った IEnumerable<Node> GetAllSubNodes(Node val) { foreach (Node node in val.SubNodes) { yield return node; foreach (Node subnode in GetAllSubNodes(node)) yield return subnode; } }
樹の探索といって子供までのことしか考えない人のいる擦れはここですか?
835 :
デフォルトの名無しさん :2005/11/02(水) 14:30:16
C#で3Dプログラム作ったんだが遅すぎ なにこのクソ言語? 存在意義あんの?
普通に動いてるっぽいけど class Program { static void Main(string[] args) { Node root = new Node("root", new Node[]{ new Node("1"), new Node("2", new Node[]{ new Node("2.a"), new Node("2.b", new Node[]{new Node("2.b.1"), new Node("2.b.2")}), new Node("2.c")}), new Node("3")}); foreach(Node n in root.GetAllSubNodes()) Console.WriteLine(n.Name); } } class Node { public string Name; public IEnumerable<Node> SubNodes; public Node(string name) : this(name, new Node[]{}){} public Node(string name, IEnumerable<Node> subNodes) { this.Name = name; this.SubNodes = subNodes; } public IEnumerable<Node> GetAllSubNodes() { foreach (Node node in this.SubNodes) { yield return node; foreach(Node subnode in node.GetAllSubNodes()) yield return subnode; } } }
クソとか言う前に遅い原因を探ろうと考えないのか
自分のソースが糞なだけ
840 :
830 :2005/11/03(木) 00:16:10
神を超えた1だね。
843 :
659 :2005/11/03(木) 15:34:36
2週間経っても誰もレスくれない・・・・ APIの SetStretchBlt( WHITEONBLACK ) と同等の.NET関数はありますか?
>>659 このスレのレベルを超えていますので
@ITの掲示板へドウゾ
845 :
デフォルトの名無しさん :2005/11/03(木) 17:21:29
ある年月日の末日が何日であるか調べる方法をご伝授ください。
DateTime.DaysInMonth
文字列のなかに、ある文字が何個含まれているか 取得するのはどうしたらよいですか
foreachで一文字ずつ調べる あるいはSplitを試してみる
いろんな文字で何度もカウントしたいのなら char[] にしてからソートかな
new Regex("あ").Matches(str).Count
正規表現遅い
C#で多重化されたIOを使うサンプルってどこかにありませんか? Socket.Selectの使い方が今一わからないのですが
心当たりはないが、Socket.Selectってそんなに難しいか?
スレッドを使ったServerと非同期接続メソッドを使ったServerは作ったことあるんですけど。 最近Select知って、何だろう。と
857 :
816 :2005/11/04(金) 03:34:01
>>817 ヒントありがとうございました
うまくいきました!
蛇足ですが、なぜかWM_NCLBUTTONUPは私の環境(XPsp2)ではうまくメッセージされませんでした。
非クライアント領域でのマウス左BUTTONUPは、なぜかWM_NCLBUTTONDBLCLKの時(非クライアント領域でのマウス左ダブルクリック時)と同時にしかメッセージされませんでした(シングルクリックではメッセージされない)。
結局のところ、WM_EXITSIZEMOVEのメッセージを捕まえることで目的は遂げられました。(非クライアント領域でのマウス左BUTTONUPはWM_EXITSIZEMOVEメッセージと等価っぽい)
私の環境だけなんでしょうか??
859 :
デフォルトの名無しさん :2005/11/04(金) 19:24:43
Ctrl+Cも押さないで、現在選択している文字列を取得する方法ってどのようなものがあるのでしょうか? ↑(その時点ではクリップボードに入っていない)
なかなか難解だが、SelectedTextのことか
アンマネージドと相互運用するのでない限り普通に持たせればいいが。
hoge.array = new int[5]; この方法しか思いつかないんですが、 配列の要素を、構造体で決められた数だけ、 確保する方法はあれの他にありませんか?
意味がわからんが、引数付きコンストラクタで初期化すれば良かろう。
値を持たない構造体なぞアンマネージドとの相互運用以外では必要ないしな。
>>861 の手法もマーシャリングするときにのみ意味を持つものだ。
865 :
861 :2005/11/04(金) 20:51:36
>>864 もう一度いろいろ考え直してみます。thx
>>863 C# の 『 struct Foo { int[] bar; } 』 は C で書くと 『 struct Foo { int *bar[]; } 』 じゃなかったっけ?
良くわからんが。
>>866 C# の 「struct Foo { int[] bar;} 」 は
C で書くと 「struct Foo { int* bar;} 」 が近いかなぁ。
C# 2.0 なら、unsafe 限定で、
unsafe struct Foo
{
fixed int bar[SIZE];
}
が可能。
なんで今不可能なの?
愚問だな
あー、ウルトラマンにでてきた
OSのあらゆる操作のSelectedTextって取れるのでしょうか? 直前にSelectした文字列とか言う感じで
C#だとできないらしいので、他の言語でDLL作ってグローバルフック C#からはそれを使う
そもそも.NETで他プロセスにちょっかいかけるってのは基本的に許可されてないが それを考えなくても無理
876 :
875 :2005/11/05(土) 04:31:16
補足 つまり参照設定だけのDllが起動時に読み込まれるかどうかの質問です。
アセンブリがロードされるのは実際にそのアセンブリのクラスが必要になったときだから、 それまではあろうが無かろうが問題はないが。 参照残したままってのはイヤな感じだ。
878 :
デフォルトの名無しさん :2005/11/05(土) 14:01:07
各メソッドの総実行時間を計測できるプロファイラはありませんか。 マイクロソフトのCLR Profilerだとメソッドの呼び出し回数しか分かりませんでした。
>>877 > 参照残したままってのはイヤな感じだ。
同感です。
とはいえこれはReleaseコンパイル時に参照をはずし忘れないようにするしかないみたいですね。
レスありがとうございました。
あるアセンブリで参照設定しているアセンブリ名の一覧を取得する方法はありますか?
オブジェクトのメンバーに対してスレッドセーフにしたいんですがどうするべきでしょう。 手作業でロックするとどこかでロックし忘れなどの間違いを起こすと思い自動化させたいと考えています。 考えたのはそのメンバーに対するアクセスをロックするクラスをとして行う方法と属性を使って行う方法です。 しかしC#でC++のスマートポインター実装に使うようなスコープでのリソース管理は実装できないと思います。 また[synchronized]属性はメソッドに対しては使えるようですが、メンバーにはつかえないようです。 何かいい知恵あれば教えてください。お願いします。
>>881 volatile
でも実際のところ「何が分割不可能な操作なのか」っていうのは設計に
依存するので(だからSQLでもトランザクションあるんだよ)、どっちにしろ
自動化は無理。
883 :
881 :2005/11/06(日) 17:00:08
>>882 手段さえあればどのようにロックするかはポリシーでカバーできるようにすればいいので何とでもなります。
やりたいことは次のような感じです。
class Nanika{
P p;
N n;
}
でP,Nはクラスとします。
ここでNanikaクラスのインスタンスが100個あるとしてそれぞれのpに対するアクセスnに対するアクセスをおのおのスレッドセーフにしたいんです。
あるインスタンスのpへのアクセスとnへのアクセスは同時に起きてもかまいません。
あるインスタンスのnと別のインスタンスのnに対するアクセスも同時でかまいません。
あるインスタンスのnに対する複数のスレッドからのアクセスは同期を取る必要があります。
C++ならばp,nに対するアクセスをインターセプトすることで自動的にロックすることが可能ですよね。
同じようなことができないかと。
>>833 言ってるようにスコープ管理だと無理。かわりに
class Critical : IDisposable {
}
で
using(Critical p = ...) {
}
のようにusing(Dispose)強制ぐらいしかないかなぁ。pには
もちろん直アクセスできないようにして。
885 :
881 :2005/11/06(日) 18:21:35
>>884 やはりそげな感じですかね・・・
->のオーバーロードみたいな感じで使える演算子もなさそうだしこてこてにかくしかないかな。
そのへんC++ がうらやましぃ・・・
886 :
デフォルトの名無しさん :2005/11/06(日) 19:58:55
C#プログラムで以下の機能を実装したのですが、どのようにすれば良いでしょうか? 1.ping(アドレススキャン) 2.traceroute(経路調査) 3.ポートスキャン(稼動ポートを割り出す) 4.ドメインネーム調査(IPからドメイン、ドメインからIPを割り出す) 5.文章からパスワード(大文字、小文字、数字、一部記号)生成
TCP/IPを勉強する
どっかのだれかが作ってるだろうから借りてくればいいよ。
>>883 それはフィールドをpublicにするのか?
いろんなところからアクセスされるのが問題なんじゃないのか?
Nanikaのインスタンスが1つのスレッドにしか所属しない状況なら
privateなフィールドがスレッドセーフになるかは意識する必要はなくなるんじゃないか?
そうするとNanikaのインスタンスは複数スレッドから操作されるわけ?
まぁ、そんな感じなら、何も考えず全部の変数の宣言にvolatileつけとけ。
>>887-888 >C#プログラムで以下の機能を実装したのですが、どのようにすれば良いでしょうか?
「機能を実装 し た のですが」
俺たちはソースうp希望しておけばいいんだよきっと
あるインターフェイスを実装したstructを そのインターフェイスのフィールドに突っ込むと ボクシングは発生しますか?
する
893 :
252 :2005/11/06(日) 23:44:50
>>889 変数は値型だけでなく参照型も含まれるのでvolatileは使えないんです。
複数のスレッドからのアクセスです。
フィールドはパブリックにするわけではないですが、それに対する操作をするメソッドはパブリックなものもあります。
いずれにしても外部からあるオブジェクトを使うときにスレッドについてなるべく気にしないでいい方法を探しています。
894 :
252 :2005/11/06(日) 23:45:20
881です。すいません・・・
>>893 それを操作するメソッドの中を lock すれば良いのでは?
896 :
881 :2005/11/07(月) 00:13:48
>>895 必ずしもメソッドの中に入れてるものだけではないし
あまり大きくないクラスでカプセル化を厳密にしないようなクラスだとしてください。
また同じようなクラスはいくつもあるのでそれぞれに同じようにlockするメソッドを書くのもなんか美しくないので。
さっきの例でNが複数のフィールドやメンバを持ってたとして、
Hoge hoge=new Hoge();
hoge.n.field1.Field1method();
みたいにかけるといいんです・・・
>>896 field を property に書き直して、lock とか
>>893 >volatile として修飾されるフィールドは、次の種類に制限されます。
>参照型
>ポインタ型 (unsafe コンテキスト内)
>sbyte、byte、short、ushort、int、uint、char、float、bool の各型
>列挙型と byte、sbyte、short、ushort、int、または uint の列挙基本型
スレッドの同期が必要な部分が大量にふくれあがったその設計がアウトなんだよ。
全部捨てて書き直せ。
そうしないといつまでたっても再現性の悪いスレッドの同期が抜けたことによるバグがうじゃうじゃ出てくるよ。
899 :
デフォルトの名無しさん :2005/11/07(月) 00:30:16
typedef struct _DCB { DWORD DCBlength; /* sizeof(DCB) */ DWORD BaudRate; /* Baudrate at which running */ DWORD fBinary: 1; /* Binary Mode (skip EOF check) */ この: 1はC# でどう書けばいいの?
900 :
899 :2005/11/07(月) 00:33:21
>>900 それ、構造体サイズが全然違うんだが……。
902 :
881 :2005/11/07(月) 00:52:25
>>897 ロックで囲まないといけないのが。
>>898 参照型いけるんですね。というかvolatileよくわかってないです。見直してきます。
たとえば次のような場合どうします?
株価などのように高頻度に値が更新されてそれに対する処理、その値を基にしたほかの株価データをを必要とする計算や表示などを行う必要がある。
値が更新されるー>対象となるデータノードを検索ー>それに対し値などに応じた必要な処理という流れ。
対象となるデータのノード数は10万単位。ただしすべてメモリ処理するものとする。
複数のノードにまたがる更新処理はない。
ノードの削除処理はない。
こんな場合どんなロックの粒度にしてどんなデータ構造にします?
自分の場合だとデータノードをインスタンスとしてそれをコレクションクラスにぶっこんであるとして、
コレクションクラスをロックー>データノード検索ー>コレクションクラスのロック解除ー>ノードの必要な箇所にロック->
ノード内の関連データをその部分にロックかけながらアトミックにupdate->
該当箇所のロックをはずしobserverに通知->各observerがおのおの独自の処理を行う。その際におのおの必要なロックをかける。
こんなんなんですが、確かに複雑になるのでなにかいいほうほうあれば参考にしたいです・・・
903 :
デフォルトの名無しさん :2005/11/07(月) 01:30:59
ダウンロードボタンを押されると、ファイルを4つダウンロードしないといけないんですが、 どうしたらいいのか・・・・
906 :
デフォルトの名無しさん :2005/11/07(月) 05:59:39
客からの要望でこんな話がありました。 画面からボタンを押下されると、画像ファイルを4つダウンロードさせたい。 ダウンロード先は、ユーザーが任意に選択させたい。 ダウンロード先を選ぶポップアップが、4回出ても構わない。 普通、1回だよねぇ。
ポップアップが4回出ても構わないなら、ボタンを4つ押すのも構わないよな
zipで圧縮すれば?
909 :
デフォルトの名無しさん :2005/11/07(月) 08:14:17
C#とどう関係あるのか
URLDownloadToFile を4度呼べば
911 :
デフォルトの名無しさん :2005/11/07(月) 08:38:43
>907 ボタン4回押すのは嫌なんだそうです。1つのファイルから、ファイル名の末尾違いのデータを探せとのこと。 >908 画像ファイルを作成するのは、別システムになるので無理ぽです。 >909 JAVAで画像ファイルのダウンロード作ったことあるんですけど、複数ファイルをダウンロードを作ったこともありません。 今回C#で開発されているシステムの機能追加として話が出てきており、C#なら簡単にできないものかと思いました。 >910 サンプル探していますが、なかなかないですね。探し方が悪いんでしょうかね。 皆さん、ありがとうございます。すいません。
C#の話ならさ、普通にSystem.Net.WebClientとかWebRequest/WebResponse使えばいいじゃん
913 :
デフォルトの名無しさん :2005/11/07(月) 09:14:40
>911 javaでやったように、c#に置き換えたらいいよ。 基本的にそこはかわらん。
914 :
デフォルトの名無しさん :2005/11/07(月) 18:06:58
ボタンの入力可不可をコントロールしたくて、↓こんな書き方したらエラーになった。 文字列で「True」か「False」を設定しているんだが、 「Castできません」といわれる。 なんでーーー??? Enabled='<%# DataBinder.Eval(Container.DataItem, "dl_enabled") %>'
915 :
デフォルトの名無しさん :2005/11/07(月) 19:09:26
Windowsコントロールライブラリで作成したユーザコントロールを プラグインとして実行時に読み込んで貼り付けて使いたい場合、 どのようにすればこの機能を実現できますか? ググってみたけど参考例がなかったので悩んでおります
プラグイン用の基底クラスを、メインのアセンブリとプラグインのアセンブリ両方から参照。 メインはAssembly.LoadFrom辺りを使ってプラグインをロード、GetTypeでプラグインクラスを取得。 あとはActivator.CreateInstanceとかでインスタンス作って基底クラスにキャストして適当に。
917 :
915 :2005/11/07(月) 19:22:03
>>916 すばやい回答ありがとうございます
さっそく試してみます
すいません、ちょっと質問です。 C#を始めようと思っています。 しかし、本を読んで一から勉強しているのですが、分からないことばかりで大変です。 C#を誰かに教えて欲しいのですが、そういう教室みたいなのないでしょうか?
学生さん?
>>918 本を読んでわからないなら誰かに教えてもらってもわからない可能性が高いと思われる。
ばくち同然のことに大金をかけたいというなら止めないが……。
921 :
915 :2005/11/08(火) 00:06:12
できたー!
ユーザコントロールのプラグイン機能完成ー!
>>916 氏には大感謝であります!
>>902 ワーカースレッドを作る。
メインスレッドはワーカースレッドへのリクエストのデータを追加するだけ。
ワーカースレッドは溜まってるリクエストを取り出して処理し、結果をコレクションとかに溜める。
メインスレッドはワーカースレッドの処理結果があったらそれを取り出し表示。
リクエストを溜めるコレクションと結果を溜めるコレクションにアクセスする部分だけlockで排他制御を入れる。
あとはAutoResetEventあたりでスレッド間でデータを入れた通知をする。
すべてメモリ内の計算なら1スレッドでひたすら処理するのが同期処理がいらないし効率いいと思うけど。
>>906 ブラウザにFireFoxかOperaを使わせてMIMEMultipartなHTMLを返せば希望の動作になる。
WebRequest webReq = HttpWebRequest.Create(@"
http://www.yahoo.co.jp/ ");
webReq.Method = "GET";
WebResponse webRes = webReq.GetResponse();
Stream stream = webRes.GetResponseStream();
StreamReader sr =
new System.IO.StreamReader(stream, Encoding.GetEncoding("x-euc-jp"));
string str = sr.ReadToEnd();
Regex regex =
new System.Text.RegularExpressions.Regex(
@"^(.*)Ya(?<target>.+)oo.*",
RegexOptions.Compiled
);
Match m = regex.Match(str);
if (m.Success)
MessageBox.Show(m.Groups["target"].Value);
else
MessageBox.Show("無かったよ");
すみません質問です、任意のサイトから(この場合Yahoo!)から
任意の文字列(同:h)を正規表現を用い抽出したいのですが、Matchしないと言われます
例えばTextBoxからの入力等は期待通りに動いてくれるのですが…
どうか御指導お願い致します
>>924 マッチしないのは . が改行にマッチしないから
@"Ya(?<target>.+)oo" じゃ駄目なん?
ローカル変数で RegexOptions.Compiled とするのって安全なの? メソッドが呼ばれるたびに正規表現がコンパイルされてリソース食いそうなんだけど
>>926 流石にそこまで馬鹿ではなかろ。
> パフォーマンスを向上させるために、regex エンジンはすべての正規表現をメモリ上にキャッシュします。
> これにより、正規表現を使用するたびに解析し直して高水準のバイト コードを生成する必要がなくなります。
928 :
881 :2005/11/08(火) 08:43:54
>>922 それだと元のデータ部に対してはアクセスできるスレッドはワーカースレッドだけになりますよね。
データを読み取りたい側は必要なオブザーバーを作ってそれに必要な参照処理させて別データを取りその別データに対してのみ参照側はアクセスすると。
このデータ部がデータベースのようなものだとするとデータベースを参照側は直接見れないってことになりますよね。
スレッドロックのことだけを考慮すればそれもありかもしれないですが、なんかしっくり来ません・・・
SharpZipLibでFDDに圧縮中に容量オーバーしたら Closeメソッドの中でFinishメソッドを呼んでいるので例外が発生して閉じることが出来ません。 これってバグかな?
画像を自由変形させるのって標準の機能でできるのあります? (台形にしてちょっと回転したりとか) ワールド変換とか調べてみたけど単純な回転とかスケーリングとかしかわからんかった・・
>>931 System.Drawing.Drawing2D.Matrix でいろいろ出来た気がする。
でも、Matrix のプロパティとか使って設定できるのは、
平行移動、回転、縦横定数倍のみ。
原理的には任意のアフィン変換ができるんだけど、
台形にしてとかは、行列の知識がないときついかも。
>929 FileStreamのバグだね。 Closeする前に内部に持つキャッシュを書き込もうとするので容量不足で例外が起きてCloseできず例外が出る。 DisposeもCloseを呼ぶので同じ。 そのまま閉じずに放置してもGCが動くとDisposeが呼ばれて例外でアプリが落ちる。 容量不足が発生するようなメディアに直接書き込まないとか代わりにAPIにするかしか回避できない。 まだ試してないが、2.0では直ってて欲しいな。
というか、Visual Studio 2005が正式リリースした 英語版だけどな
.NET Framework 2.0がMicrosoftUpdateに来てる
>>933 レスありがと〜
テンプディレクトリに書き込んで容量チェックしてから
コピーすることにしました。
939 :
デフォルトの名無しさん :2005/11/09(水) 14:03:54
Visual Studio .net 2005 の日本語ベータ版について質問 あれって無料っぽいけど使用できる期間とか限られてるの?
941 :
940 :2005/11/09(水) 14:13:15
スマン、無制限は嘘 製品版がでたらすみやかに導入しろという条件が規約にある
942 :
デフォルトの名無しさん :2005/11/09(水) 14:23:40
ウエブサービスで共通で使うインスタンスってどのタイミングで誰がnewするの? 格納場所はWebService#Applicationでいいよね? lock(Application){ if(Application["key"]==null]) Application["key"]=new String("") } か?
>>941 何日以降は使えない、みたいな機能制限があった気がしなくもない。
>>942 ずっと使いたいんならGlobal.asaxでも作ってApplication_Startのときにやったら?
>>942 そんなもんがありましたか。ありがとう。
VS.NET Expの一年の期限て何の期限? 一年後にはIDEが起動しなくなる? それともダウンロードを中止するだけ?
>>946 ライセンスの取得が出来ないんじゃない?
948 :
デフォルトの名無しさん :2005/11/09(水) 18:54:05
サーバーへ接続するときに、サーバーの応答がなかったりサーバーが存在しない場合、 20秒まで待機するようになっているのですが、この時間を短く設定する方法はありますか? 設定できれば有難いのですが、やはり、「他で時間を計りながら、時間が経てば スレッドの外からクローズさせる」 という方法になるんでしょうか。
949 :
デフォルトの名無しさん :2005/11/09(水) 19:18:42
>>948 何のサーバにどうやって接続しようとしているのか説明が無いと誰も答えられないだろうな
950 :
デフォルトの名無しさん :2005/11/09(水) 19:27:39
DataSourceを設定したSystem.Windows.Forms.ListBoxを 複数選択にしたとき、選択された全ての項目のSelectedValueを 配列かなんかで取得できないでしょうか? いまはSelectedItemsを1個1個キャストしてます。。。
951 :
デフォルトの名無しさん :2005/11/09(水) 19:54:49
>>949 じゃあ質問の仕方を変えましょう。
pingを作るとき任意の時間でタイムアウトさせるにはどうすればできますか。
SocketOptionNameにConnectTimeoutはないんだよな。
まあ、外部スレッドというかSystem.Timers.Timerで監視というのがいいんじゃないか。
Socketの派生クラスを作って実装を隠蔽すれば使い回しもできる。
>>950 ないな。
メソッドにしてしまえば書くのは一カ所で済むだろ。
>>951 どうやって ping を打ってるのか分からなきゃ、答えようが無いな。
954 :
デフォルトの名無しさん :2005/11/09(水) 21:05:04
955 :
デフォルトの名無しさん :2005/11/09(水) 21:14:15
>>952 やはり任意の時間で接続をタイムアウトさせるとなると、他で時間を計るしかないんですね。
ありがとうございました。
>>953 私は、“どうやって” かは限定してないんです。
「これなら接続のタイムアウトが任意に設定できる」というなら、
それでやるつもりですから。
956 :
デフォルトの名無しさん :2005/11/09(水) 21:15:34
プロパティってカプセル化の観点からは使わない方が良い? publicで変数にアクセスしているような感じだし
>>956 訳わからん。
プロパティってまさに状態のカプセル化だと思うのだが。
958 :
デフォルトの名無しさん :2005/11/09(水) 21:32:03
public int XXX { get { } set { } } なんとなく違和感があるんだ・・・
959 :
デフォルトの名無しさん :2005/11/09(水) 21:37:34
昨日始めたばっかなんだけど、参考になりそうなサイトみて文字を 表示するプログラムみたいなのをメモ帳で書いてみたんだが、いざ保存すると sample.cs と書いているのに sample.cs.txt と直されてしまいます.. ご存知の方、解決法を教えていただきたい。
構文に違和感があるって程度だったらそれは気のせいだ。
名前を付けて保存するときにファイル名を""でくくる。 が、他のフリーのエディタ使うのを薦める。
えー、プロパティはカプセル化の観点からしたら使うべきである。
新規テキストファイルの名前を sample.cs に変えてから、TeraPad で開いてるなぁ俺は。
>>959 保存するときにファイルの種類で
「すべてのファイル」を選択する
プロパティは、カプセル化というか情報隠蔽だな。どっちでも良いんだけど。 プロパティはメソッドの別名でしかないから、 ぶっちゃけメソッドへのアクセスと記述上以外の違いは無いし。
968 :
デフォルトの名無しさん :2005/11/09(水) 21:49:53
string s = null;もしくはHashtable h = null;をそれぞれメンバに持つ クラスのインスタンスを作成したとき、メモリの消費は異なりますか? メンバのインスタンスを作成するまでは差はないと考えていいのですか?
差は無いと考えて良いと思うけど、そんなに気になる?
一体そのインスタンスを何万個作るんだろう。
nullのうちは変わらない
インスタンスのサイズはメンバ変数の個数のみによって変わるってこと? っていうかインスタンスを大量に作成すること自体が愚かな行為 なんでしょうか?(作成自体のオーバーヘッドが大きいとか?) 出直してきます。レスありがとうございました。
相談:38歳主婦 string[] myArray = new string[0]; 添え字0って、何か役に立つんでしょうか?
>>975 添え字0は、
string[] myArray = null;
と
string[] myArray = new string[1] { "hoge" }
のどっちと近いと思う?
回答者は態度を明確に示せ
>>975 何か役立つって言われてもどう答えていいのやら…
サイズ0の配列の意味って感じかな?
配列がnull参照に比べるといろいろ楽だよ
string変数にnull入れずに空文字入れるようなもんか?
そんなもんだな。
foreach (string name in GetNames()) とかできるのが楽。 nullが返る可能性があるとなると一旦ローカル変数に代入してnullチェックってことになるし。
「配列を返すプロパティ/メソッド」って混乱の元だよな。
> 相談:38歳主婦 > 相談:38歳主婦 > 相談:38歳主婦 > 相談:38歳主婦
985 :
デフォルトの名無しさん :2005/11/10(木) 02:00:31
traceroute機能ってどうやって実現したら良いの? pingは宇宙仮面のサイトにサンプルコードがあったけど、 tracerouteは無かったのでどうしたら良いのか悩んでいるですが・・・
TTLを順番に大きくしていくだけさ
public interface IHoge {} public class Hoge : IHoge {} public class Foo<T> { public Foo(T value) { this.value = value; } private T value; public static implicit operator Foo<T>(T t) { return new Foo<T>(t); } } public static void Main() { Hoge hoge = new Hoge(); Foo<Hoge> a = hoge; Foo<IHoge> b = hoge; Foo<IHoge> c = (IHoge)ihoge; // コンパイルエラー } 最後のがかなり納得できない。 インターフェイスとのキャスト演算オーバーロードが定義できないのが原因なんだけど。
あ、ごめんそこはhogeで。 Foo<IHoge> c = (IHoge)hoge; // やっぱりエラー COMオブジェクトのReleaseComObjectをIDisposableでやって貰おうと思ったんだけど、 インターフェイスを暗黙にキャストできないとなると面倒で……。
public static void Using<T>(T comObj, Action<T> action) { try { action(comObj); } finally { Marshal.ReleaseComObject(comObj); } } private void MenuItem1_Click(object sender, EventArgs e) { Using((IHTMLDocument2)webBrowser1.Document.DomDocument, delegate(IHTMLDocument2 doc2) { Using(doc2.all, delegate(IHTMLElementCollection elements) { foreach (IHTMLElement element in elements) { Using(element, delegate(IHTMLElement elem) { Console.WriteLine(elem.tagName); }); } }); }); } こういう方向でいくことにしようか。
学校の宿題で以下の問題が出たのですがわかりません。 どなたか教えてください。明日までに提出しなければいけないのです。。。 WindowsFormでつくります。 問)textBoxを一つとbutton一つをフォームに配置する。 textBoxの文字が「学校」のときはtrueを返し、それ以外はfalseを返すような bool型のメソッドを作る。 buttonをクリックした時に以上のメソッドを適用するようなコードを実装せよ。 なお、buttonをクリックした際に、trueの場合は以下のメッセージを表示させる。 MessageBox.Show("あなたは学校と入力しました。") なにがなんだかさっぱりです。教えてください。
宿題は自分でやれ。
いまどきって授業でC#やってんの?
>>991 ここは宿題スレじゃないよ
using System.Windows.Forms;
public class MainClass {
public class MainForm : Form {
TextBox textBox; Button button;
public MainForm() {
const int width = 150;
this.SuspendLayout();
textBox = new TextBox();
textBox.Location = new System.Drawing.Point(0, 0);
textBox.Size = new System.Drawing.Size(width, textBox.PreferredHeight);
button = new Button();
button.Location = new System.Drawing.Point(0, textBox.Bottom);
button.Size = textBox.Size;
button.Click += new System.EventHandler(button_Click);
this.Controls.AddRange(new Control[]{textBox, button});
this.ClientSize = new System.Drawing.Size(width, button.Bottom);
this.ResumeLayout();
}
private bool is_gakko() {
return textBox.Text == "学校";
}
private void button_Click(object sender, System.EventArgs e) {
if (is_gakko())
System.Windows.Forms.MessageBox.Show("あなたは学校と入力しました。");
}
}
public static void Main() {
Application.Run(new MainForm());
}
}
995 :
991 :2005/11/10(木) 23:12:25
>>992 ごめんなさい。。。分かってはいるのですが単位とらないとやばいんです…。
>>93 選択でCかVBかC#を選べます。
>>94 ありがとうございます!できました。
>>995 お前それで「できた」っていうなよ。コピペしただけだろ?
何言ってるんだ、ボタン貼り付けたりFormのサイズ換えたり大変なんだよ!!
もっと激しいジェネリックを!
( ´ー`) 1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。