ふらっとC#,C♯,C#(初心者用) Part78
1おつです 君らは初心者のうちは何をコンパイルしたの? とにかくやってみようと思ってます
>>3 >君らは初心者のうちは何をコンパイルしたの?
ソースプログラム以外の何を期待しているわけ?
どんなプログラムを作ったの?って意味だろうよw
初心者のうちはコンパイルせずにインタプリタしてました
初心者は紙キーボードでコード打ち込んで机上デバッグだろ
PrintPriviewControl上で余白領域サイズをマウスで動的に変更させたいと思っています。 用紙内の配置位置はこちらが管理しているので分かるのですが、コントロール内の用紙(白い部分)の位置がどこにあるかを取得することができません。 どのように取得すればよいでしょうか。若しくはもっと別な方法で実現できるのであれば教えて頂きたいです。
9 :
デフォルトの名無しさん :2011/08/03(水) 18:18:53.56
非常にざっくりとした質問しかできないのですが、 一つ教えてください。 現在、SQLServerを利用したシステムをC#で作成しているのですが、 そのシステムを稼動したまま放置していると、 システムがエラーで落ちてしまいます。 ソースに手が入れられないのと、 ソースを見ることができないため、 なんらかのあたりを付けたいのですが、 どんどんメモリ使用量が減ってゆく程度しかこちらではわかりません。 C#メモリ開放についてなのですが、 システムが落ちてしまうほど解放することなんてあるのでしょうか?
EXEがあるならソースを作ればいいじゃない
C#メモリ開放 が何を言っているのかわからない ソースを見ることすらできないプログラムをどうしたいのかもわからない 落ちる原因やモジュールはエラーメッセージ見れば解ると思うがそれすらできないのか
普通に考えればOutOfMemoryExceptionだけど、 何が落ちてるのかすらハッキリしない文章じゃ何とも言えない
Form1からForm2を呼び出す際、常にForm2はForm1の上に描画をしたい。 メッセージボックス的な常に前にではなくて、 起動したFormの上にという意味です。 具体的には、デュアルディスプレイ環境で実行して、 @メインディスプレイ上にForm1→メインディスプレイのForm1の上にForm2が表示 Aサブディスプレイ上にForm1→メインディスプレイにForm2が表示 されてしまいます。 AのForm2もサブディスプレイに表示するにはどうすればよいでしょうか。
14 :
デフォルトの名無しさん :2011/08/03(水) 20:24:21.28
>>13 Form2のstartuppositionを弄ってみよう
独りで独学だとモチベが上がらない夏厨ですが、C#の学習できる教室とかないですか?関西近辺で希望。 ふらっと駅から行けるところがいいな。
17 :
デフォルトの名無しさん :2011/08/03(水) 21:01:53.70
Console.WriteLine("おはようございます");
18 :
デフォルトの名無しさん :2011/08/03(水) 23:39:59.78
Console.WriteLine("計算結果"{0},5+7);
Microsoft Visual Studio 2010 Professional 試用版 - Web Installer から落として、 C:\Program Files\Microsoft Visual Studio 10.0\ VC#\Specifications\1041\CSharp Language Specification.doc を拾い出して pro版を一旦アンインストールしてEX版を入れなおしました。 3n目からイキナリ using System; namespace Acme.Collections { public class Stack { Entry top; public void Push(object data) { top = new Entry(top, data); } public object Pop() { if (top == null) throw new InvalidOperationException(); object result = top.data; top = top.next; return result; } class Entry { public Entry next; public object data; public Entry(Entry next, object data) { this.next = next; this.data = data; } } }} でゲンナリでし
Javaのserializeに該当するあれこれってC#にあるの?
さんくす
23 :
デフォルトの名無しさん :2011/08/04(木) 05:19:58.02
DoEvents いれたやつぶっ殺す これ処理中に何やられるかわからないっしょ 初期化中に終了処理が走り始めたりマジクソだな
なつやすみだなぁ
まだまだ〜!夏はこれから!
28 :
デフォルトの名無しさん :2011/08/04(木) 14:34:42.81
Console.WriteLine("割引後の金額{0}円",100*0.8); Console.WriteLine("割引後の金額{0}円",420*0.8);
29 :
デフォルトの名無しさん :2011/08/04(木) 14:37:35.38
double waribiki=0.8; Console.WriteLine("割引後の金額:{0}円",100*waribiki); Console.WriteLine("割引後の金額:{0}円",420*waribiki);
間違い発見。
http://atamoco.boy.jp/asp/20101018_1.php SQL SERVER 接続で
web.config] appSettings セクションから読み取る
string conStr = ConfigurationManager.AppSettings("conStringOracle");
↓
string conStr = ConfigurationManager.AppSettings["conStringOracle"];
下でないと動かない。
こっちはあってる。
[web.config] connectionStrings セクションから読み取る
string conStr = ConfigurationManager.ConnectionStrings["conStringOracle"].ConnectionString;
31 :
デフォルトの名無しさん :2011/08/04(木) 17:31:26.48
double kazu=0.8; kazu=Math.Cos(kazu); Console.WriteLine(kazu.ToString());
WEBで response.redirect("aaa.aspx") だとエラー Response.Redirect("aaa.aspx") だと走る。 大文字小文字って絶対的にうるさいんでしょうか?C#では 。
System.Windows.Forms.NumericUpDown で、テキストボックスのテキストが変わるたびに、ValueChanged が起こるようにするにはどうすればいいですか? 数値が変わるたびに、他のコントロールと連携して表示を変えたいです。
>>33 C#では大文字小文字は区別される
>>34 他のテキストボックスコントロールが変更された場合、NumericUpDownのValueChangedを起こるようにしたいの?
>>35 わかりにくくてすみません。
NumericUpDown内のテキストボックス部のことです。
>>33 とりあえず言語仕様を一通り読むんだ
そしてVBのことは忘れるでござる
double[,] をコピーするいい方法を教えて下さい
double[,] hoge = new double[640,480]; double[,] hage; hage = (double[,])hoge.Clone();
ありがとうございます すばらしい では次にそのhogeの一部をコピーする(例えば[640,480] ->[640,200])のにいい方法を教えて下さい
てか、二次元配列は使うな
clone()大丈夫?
>>34 何か勘違いしてるんじゃね。
NumericUpDownのテキストボックス部の値を書き換えたら
普通にValueChangedイベントは発生するが?
45 :
34 :2011/08/05(金) 13:14:42.77
private void updownPrice_ValueChanged(object sender, EventArgs e) { System.Diagnostics.Debug.Print("Price:{0}", (int)updownPrice.Value); } とか、やってみてるんですが、矢印で値を変更するとすぐに呼ばれるのに、 テキストボックス部に数値を直接タイプした場合は、フォーカスを失ったとき(?)でしか呼ばれません... なにか必要なプロパティの設定とかがあるんでしょうか。
46 :
デフォルトの名無しさん :2011/08/05(金) 13:17:04.21
普通のTextBoxだとChangingみたいな編集中イベントがあったはずだけど そういうのがなければ フォーカスが離れた時点で変更後とみなすってことじゃないの?
IMEがONなら確定後とかじゃねーのかのー。
>>45 フォーカスガ離れる?
数値変更してEnter押したら普通にイベント発生するでしょ?
そういう動作のことじゃないの?
49 :
デフォルトの名無しさん :2011/08/05(金) 13:25:46.48
>>48 そういうのじゃなくて数字だけ入力したらイベント発生すると思ってるんでしょ
一桁ならそういう仕様でもいいけど二桁以上ならどうするのって話だしな
イベント発生させるトリガーをどうするかっていうのをもうちょっと考えてみてほしい
数字だけ入力して「入力完了!」って人は少ないと思うけど、 まあ、エンター押してください、て注釈つけるしかないんじゃね。
入力途中でもなんかしたいとかじゃないのかな? keypressでValue見てもまともに取れないのでだめだね
52 :
34 :2011/08/05(金) 13:43:54.74
1234と入力したときに、
1, 12, 123, 1234 のどれも取得したいんですが...
>>49 ぐぐったら負数で、たとえば-1234のときとかだとどうするんだ? って意見もありましたけど、
「-」の段階ではValueChangedを起こさなければいいだけだと思いました。
そして、-1, -12, -123, -1234 が取得できたらなーと思ってます。
>>51 の言うようにできたとしても、ユーザーの生の操作を直接扱うのもまどろっこしいし、
せめてテキスト部の変更だけでも検知できないものなんでしょうか。
53 :
デフォルトの名無しさん :2011/08/05(金) 13:46:23.97
この際自分でコントロール作れ そうすればtextboxみたいな部分はtextboxなんだから textboxが持ってるイベント全部使える
俺は今までNumericUpDownを使ったことないことに気付いた テキストボックスに表示して、上下欲しい場合はボタンコントロール二つ用意してる
↑そっちのほうが後々融通が利いてよいことが多い。
わかりました。そうします。
>>54 、55
素直にnumericupdown使えよ
標準コントロールがあるのにわざわざコード書くなんて馬鹿じゃねえか?
textbox.textに何かしらの値が入っているとき(nullはcatchで捕まえるとして)、 半角数字で0〜100000の数字→true それ以外 →false とするには、どういうロジックが一番シンプルだろうか。
int.TryParse(text,out i) && 0<=i && i <=100000より短くする必要を感じない あとTextBox.Text==nullはありえないと思う
windows7 64bit + VSEx2010を使っていますが、 messageBox.show()で表示した際にOKボタンが右側によってしまいます。 中央にするにはどうしたらよいでしょうか。 MessageBox.Show("値を入力してください","エラー",MessageBoxButtons.OK,MessageBoxIcon.Error); 書いたコードです。
今は気にしないことだ アプリを作り終えて、最後に取り掛かるといい
まるっきりお手上げなので質問させてください。 System.Net.WebClient.DownloadStringAsyncメソッドで非同期ダウンロードでweb上からテキストデータを取得しようとしたんですが あるページのテキストを取得しようとすると壊れてるというか一部分がなくなって、デバッグでe.Resultを見てみたんですが、ダウンロードしてきてその地点で生のデータを見てもなくなっています Webブラウザ上から見ると普通に表示されているんです。これはどういうことでしょうか? あとDownloadFileメソッドを使った場合、上記の不具合なく落ちてきました。 もしかしてstring型って限界サイズとかあるんでしょうか?だいたい多くて600KBくらいなんですが・・・ 解決策知ってる人がいたら教えて下さい。
文字コードがあってないとか
クライアント名で出力をわけているとか
65 :
デフォルトの名無しさん :2011/08/06(土) 01:29:09.98
DownloadFile使えば良い気がする
差し支えなければURL出してみるとか
67 :
62 :2011/08/06(土) 01:42:29.80
18禁だのなんだの、目的など構わん 達成するためにプログラムを自分で作ろうとしていることに意味がある
まるっきりお手上げのときは一発抜いてみよ。さすれば賢者モード発動するぜ?
抜いたらダラダラ2ちゃんやっちゃうからNG
質問です webBrowserを3つ作ってそれぞれ別のクッキーを持たせたいのですが webBrowserごとにクッキーを設定する方法はありませんか?
72 :
71 :2011/08/06(土) 05:02:14.09
追記 同一のページで 別々のクッキーです わかりにくくてすみません
c#のクッキーって自前管理しないとだめだったような クッキーコンテナってのがあったはず
それはHttpWebRequestの話じゃなくて?
http://ideone.com/uCJ1Q n2をint型に変換しようとすると
System.Text.RegularExpressions.Match' から 'string' に変換できません
と出ます
int.Parseは元の変数がString型じゃないとできないのは分かるのですが それ以外にint型に変換する方法が分かりません
どうか教えてください
76 :
デフォルトの名無しさん :2011/08/06(土) 06:16:42.64
>>74 そうでしたw
webBrowserの場合は無理かもしれないな・・・
>>75 http://msdn.microsoft.com/ja-jp/library/system.text.regularexpressions.match%28v=VS.100%29.aspx パターン一致が正常に実行された場合、一致した部分文字列が Value プロパティに含まれ、
一致した部分文字列の入力文字列内での開始位置 (起点を 0 とする) が Index プロパティによって示され、
一致した部分文字列の入力文字列内での長さが Length プロパティによって示されます。
パターン一致が正常に実行された場合、一致した部分文字列が Value プロパティに含まれ、
パターン一致が正常に実行された場合、一致した部分文字列が Value プロパティに含まれ、
パターン一致が正常に実行された場合、一致した部分文字列が Value プロパティに含まれ、
パターン一致が正常に実行された場合、一致した部分文字列が Value プロパティに含まれ、
パターン一致が正常に実行された場合、一致した部分文字列が Value プロパティに含まれ、
パターン一致が正常に実行された場合、一致した部分文字列が Value プロパティに含まれ、
パターン一致が正常に実行された場合、一致した部分文字列が Value プロパティに含まれ、
パターン一致が正常に実行された場合、一致した部分文字列が Value プロパティに含まれ、
パターン一致が正常に実行された場合、一致した部分文字列が Value プロパティに含まれ、
パターン一致が正常に実行された場合、一致した部分文字列が Value プロパティに含まれ、
パターン一致が正常に実行された場合、一致した部分文字列が Value プロパティに含まれ、
やかましい
>>75 全部をちゃんとみてないけどこれでダメなん?
int n3 = int.Parse(n2);
↓
int n3 = int.Parse(n2.ToString());
80 :
デフォルトの名無しさん :2011/08/06(土) 06:35:13.59
ゴミHTMLパース出来るOSSのパーサー知りませんか? Aタグだけ引っ張ったりしたい
GPLで構わないのならSGMLReaderが一押し
というか何がしたいのかよくわからんがなんにもMatchしてねーじゃん
84 :
75 :2011/08/06(土) 06:48:53.37
>>79 で解決しました ありがとうございます
>>82 すみません 元のコードが長かったので少し改変してます
なのでミスが多いです ごめんなさい
>>58 想定ないのものは例外で取るなってヘルプで見た
webbrowser.documenttextに、htmlを流し込んでるんだけど、 html内のテーブルタグ内でフォント指定してるのに反映されない なんで?
>>88 どうやってフォント指定してるのさ?
それは普通にhtmlファイルに書いてIEで表示した場合は有効なの?
>>89 レスポンスに入ってきたCookieを再リクエストに反映させてないように見えるが?
命令口調クンって馬鹿だな、まで読んだ。
テスト
どう見てもsuka=pontanが原因 いつの情報参考にして書いてんだ 今はkibi=dango
>>95 人
凸(´・ω・`)凸 ありがとう、いけたで
とo oつ ほんまにありがとうな
なんのプロだw
101 :
デフォルトの名無しさん :2011/08/07(日) 08:20:54.77
夏休みにあふれるゆとり集団の相手するプロじゃないの?
>>95 しかし相変わらずだな>2ch
小学生レベルw
やんのかこら?
Visual Studioのフォーマット整形ってref/outと変数名の間のスペース数は直してくれないんですか?
>>103 ほんとだww 整形されないw
refとかめったに使わないし、1スペース以外入れたことないから気付かなかった。
105 :
デフォルトの名無しさん :2011/08/08(月) 18:39:35.36
画像をスクロールバーを使わずに PreviewKeyDownイベントでスクロールさせたいんだが… (ピクセル単位で)
させればいいじゃん
comboBox内のテキストをデフォルトで右寄せにしたいのですが、教えていただけないでしょうか… this.comboBox1.TextAlign = Right; や、 this.comboBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; など試してみましたが出来なかったのでどうかご教示お願いします。
ハンドルリークって起こる?
参照持ちっぱなしにしてればそりゃリークするがな 後はP/Invokeで取ってきたハンドルとか
何、ハンドルリークって?
Keysで管理してるデータをSendKeys.SendWait()で送りたいんですけど ベストな方法って何になりますか?
今現在考えてるコードを書いてみてよ そしてそれが「どうしてベストじゃないのか」を説明してくれ
特別なキー(ex:Space)など、そのままSendKeysで送れないキーを switchで1つずつ変換、と言う方法しか思いつかないので質問させて頂きました。 結構需要がありそうな機能なので見落としてるメソッドや方法があるのかなー、と。
プログラミング勉強中のど素人です。 Excelで作ったcsvファイルのデータの一部をある指定した値の時、 csvのデータを抽出し表示したいのですが、どのようにすればいいのかわかりません わかる方おられましたら教えていただけませんでしょうか? 【環境】 VS2010 【実行動作】 comboBoxに1〜99の数字があり、値を指定した時にcsv内にある指定した値を同フォーム内のTextBoxへ返す comboBox → TextBox 1 → 0 2 → 9 3 → 16 4 → 25 5 → 36 ... 99 → 99,999,998 【備考】 ・データ元はcsvにこだわりはなく、代替できるものがあればそちらでも可能です。 ・comboBoxはレベル、TextBoxはレベルアップに必要な経験値と思って下さい。
C# csv でググレ
ファイルから文字列として一行読み取ってカンマで分割すると数字の形をした文字列が2つできるわけだ。これを構造体なりの配列に保存していく。 で、全行にたいしてそれをする。 そして、表示時にはそれを参照して数字と比較して同じものがあったら経験値の方をテキストボックスに書きだす。 これだけかな??
あらかじめcsvファイルを読み込んで一行ずつ配列に入れておき、 comboBoxに数値が指定されたときにその数値をキーにして配列から一行のデータを取り出して、 そのデータをカンマで分割して表示したい値をTextBoxに表示する。
119 :
115 :2011/08/09(火) 21:36:27.53
>>117 ,118
レスありがとうございます
助言を頼りに1時間散々検索しましたが解決に至りませんでした
>ファイルから文字列として一行読み取ってカンマで分割すると
ここでつまずいてしまいます…csvのデータすべてが出力されてしまい、1行ごと、カンマごとに分割ができません
知識がなさすぎてGoogle先生の言っている事が理解できていないだけだと思いますが、
参考になるURLやアドバイスをいただけないでしょうか
>>119 google「C# 1行ずつ読み込み」
google「C# split」
このあたりでできんじゃねーか?
122 :
デフォルトの名無しさん :2011/08/09(火) 22:19:08.37
TextReaderが難しいならFile.ReadAllLinesで一発
123 :
115 :2011/08/10(水) 02:04:11.19
結論から言いますと、今の自分には理解が難しかったので comboBoxがもし1の時にTextBoxに0を、2の時に9を返す...とswitch文でその場しのぎをしました。 switch (comboBox1.Text) { case "1": TextBox1.Text = "0"; break; case "2": TextBox1.Text = "9"; break; case "3": TextBox1.Text = "16"; break; (中略) case "99": Number3.Text = "99999998"; break; default: Number3.Text = "0"; break; } という具合です。 今回はとりあえず結果を急ぎましたが、csvのやり方も覚えたいのでもう少し理解を深めてから再チャレンジしようと思います。 皆様ご教示ありがとうございました。
訂正です (中略) case "99": TextBox1.Text = "99999998"; break; default: TextBox1.Text = "0"; break; }
初めのうちは目的さえ達成できればそれでいいと思うよ 一年後に見直して酷いと思えればそれだけ成長したってことだ
using System; using namespace System; はどちらが正しい書き方でしょうか? 両方正しいとすると、意味の 違いはありますか?
後者はC#では不正
>>129 なるほど。逆に、C++では、前者が不正、ということなんでしょうか?
仕様書読めば理解できる
仕様書など存在しねぇし。 /⌒\ (;;;______,,,) このスレに松茸が生えたようです 丿 ! (__,,ノ
すでにあるものに習うというのも手ですよね using System.・・・・ というのがC#のサンプルコードにでてきますよね
サンプルコードというかVSのテンプレートに任せればそれが答え
プレイリストを利用した動画ファイルの再生方法について。
デザイナにwindows media playerを貼り付けて、Formがloadされたときに5つの動画ファイルをプレイリストに登録しました。
このときに再生ボタンを押すと1番目の動画ファイルが再生されますが、
3番目の動画ファイルをピンポイントで指定して再生する方法はございませんか?
プレイリストを追加した後にaxWindowsMediaPlayer1.Ctlcontrols.next();を2回実行すると3番目の動画ファイルの位置に移動しますが
今後listboxなどで選択した動画ファイルを再生させたいのでaxWindowsMediaPlayer1.Ctlcontrols.next();を使わずピンポイントで指定位置の動画を再生させたいです。
どうかアドバイスお願いいたします。
http://ideone.com/8303o
currentPlaylistからget_ItemでIWMPMediaとってきて CtlcontrolsのcurrentItemにセット playも必要かね
137 :
デフォルトの名無しさん :2011/08/12(金) 16:53:02.28
Byte[] data = new byte[25]; Byteとbyteと色が違うんだけれどどう違うの?
byteは組み込み型のキーワードで、実体はSystem.Byte型 だから色が違うけどビルドしてできるアセンブリは変わらない
int unit byte double とかあるのにSingleはsingleがないんだよな
140 :
デフォルトの名無しさん :2011/08/12(金) 22:05:02.68
Int32の数字が取れてるのは気にしないのか
DD 誰でも大好き♪
>>142 気にならないが
64bitの開発環境だとint64はintになるのか?
うちはまだまだ32bitが現役
145 :
デフォルトの名無しさん :2011/08/12(金) 22:59:52.88
たぶん大半の環境下でintは32bitとして認識されるでしょ 64bit以上は別途識別可能な文字を付け加えるとか
まあint→Int32もfloat→Single同様名前が違うって言いたかっただけだが、どの環境でもintはInt32だよ
言語仕様で決まってることだから intが32ビットでlongが64ビットでない実装はC#ではない
そのへん曖昧なのはCだよね
だねえ 16bitマシン上でも一応使える言語だし まあ16bit環境を今でも使ってるかといえば・・・ 組み込みでも32bitが普通なのかな?
>>149 炊飯器とかは16
携帯とかは32
組み込みはオーバースペックなcpu載せる事まず無いから
VC#で、特定の関数でだけ、デバッガが例外捕まえるのを抑制する方法ってありますか? WebClient をサブクラス化して、GetWebResponse をオーバーライドしてるんですが、 304 Not Modified 等で GetWebResponse が例外を吐くので、それをいちいち捕まえてくれるのが邪魔くさいです... protected override WebResponse GetWebResponse(WebRequest request, IAsyncResult result) { WebResponse webResponse = base.GetWebResponse(request, result); return webResponse; }
>>150 まだ16bitって存在するのか
>>151 try catchで囲ってcatchしても何もしないとか?
>>151 DebuggerStepThrough属性付けてみたら
>>153 ありがとうございます。できました。
>>152 try catch で握りつぶすと、WebClient としての動作が違ってくるので、
それはできませんでした。
携帯電話付き炊飯器は何bit?
48bit
ウチの炊飯器はサーモスタットだから1ビットだな
C# で、Dictional<Key, Value> の Key だけのやつってないのかなぁ。 たとえば、文字列の追加、削除、存在確認ができればいい。 ただ存在確認はハッシュとか B-Tree とかでそれなりの速度が欲しい。 また、同一の値を複数格納するのはなし。
.NET3.5からHashSet<T>がある 2.0ならMSDNでISet<T>のインターフェイス見て それと全く同じの定義した上でDictionaryのラッパーとして実装したら
FormからForm2をshowDialog()で呼ぶ。 Form2内でmessageBox.show(MessageBoxButtons.OKCancel)を呼ぶ。 この時、キャンセルを選ぶと、Form2ごと消えていまいます。 これはForm2をshowDialog()で呼ぶ場合、どうしようもないでしょうか。
>>158 そんなニッチなマイコンよく見つけてきたなw
ここ数年はローコスト向けの16bitMCUもいろいろ出てきてるんで(TIのMSP430とか)、
>>150 の言うこともそう間違ってるわけじゃないけどね。
>>161-162 なるほど、HashSet<T> いいね。
サンクス。
ない時は、Directory<Key, Value> の Value にダミーで null 入れて代用しようと思ってた。
>>163 再現しないから答えられない
showDialog読んでるイベントハンドラのコード貼れや
あとMessageBox.Showを読んでる部分も
貼る時は
>>2 使って貼ってね
>>165 うん。HashSetがなかった頃はnull入れてやってたよ、それでも全然問題ないしね。
>>164 > そんなニッチなマイコンよく見つけてきたなw
この業界にいれば普通に知ってると思うぞ。
まあ、スレチだからどうでもいいことだが。
そんなガラパゴス日本のなかでもさらにニッチな世界を知ってるのが当然って、 あんたも相当精神病んでるな。 むしろこの業界(ってどの業界だよ)に居れば、日本のマイコンなんか世界的には まったく相手にされていないことこそ常識なんですが。 ルネサスですらほとんど国内向けのものしか作ってない。
2chブラウザを一度、自分で作ってみようと思うんですが、何を勉強すればいいですか?お勧めの本などがあれば御紹介願います。(基本的なC#の記述は勉強済み)
プログラミングより大事なグーグルで効率よく検索する技術
>>166 //form1.cs
private void button8_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.f1 = this;
if (f2.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
//処理を記述
}
}
///Form2.cs
public Form1 f1
private void button1_Click(object sender, EventArgs e)
{
DialogResult dr = MessageBox.Show("以下で登録します。よろしければOKを押してください。" , "確認", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (dr == DialogResult.OK)
{
//処理を記述
}
}
>>173 >>2 をご利用になってお貼り下さいますよう申し上げたじゃねえかこのゴミクズ
再現しない
そのコードだけだとその症状は出ないような・・・と思いつつ俺も試してみた。 やはり当然ながら発生しない。
イデオン使うかどうかはともかく、アホみたいにコード貼り付ける前に それが問題を再現するかどうかを確認することも怠る人間は、本質的にプログラミングに 向いてないとしか言いようがない。
>>174 たいした量じゃねーから使わなかったんだよ
>>176 現状問題が発生してるから質問してるわけです。
>>170 >むしろこの業界(ってどの業界だよ)に居れば、日本のマイコンなんか世界的には
>まったく相手にされていないことこそ常識なんですが。
>ルネサスですらほとんど国内向けのものしか作ってない。
何を言いたいのかさっぱりわからん。
海外の状況はよく知らんけど、ルネが国内向けに作ってるやつを普通に
使ってるだけだよ。
まあ、ニッチな世界というのは認めるけど、そもそも組み込み業界なんて
狭いから、各社のマイコンのシリーズぐらいは押さえとくのは普通だと思
うけどね。
>>177 そのコードで発生するかどうかは真っ白のプロジェクトに同じコードを貼り付けて実行すれば分かるでしょう?
なぜそれをしない?
ここは初心者スレではあるが、手取り足取りスレとは違うぞ
頭の悪そうな奴には説教するよりスルーしろ
>>179 新規プロジェクトにその部分だけ引っこ抜いて実行したら再現しませんですた。。。
くそ。。。なんでだ。。。
C#を今から勉強していくところなんだが、 ここのスレ、C#の初心者用で問題ない?? ちょっと質問したいんだが・・・・・・。
>>181 Form2の中でClose呼んでねえかClose
あるならブレークポイント貼ってみろ
無いならもう分からん
>>181 ボタンにDialogResult設定してるだろ?
それNoneにしてみ
>>184 確かにDialogResultにOKを設定しています。
そして外したら期待する動作になりました。
ただしf2をよんだ側でDialogResult.OKが返ってこなくなったので実装し直しです。
>>185 早まるな
this.DialogResultに入れてやれば良いだけだ
要するにこう this.DialogResult = MessageBox.Show("以下で登録します。よろしければOKを押してください。" if (this.DialogResult == DialogResult.OK) { this.Close(); }
そんな基礎中の基礎も書籍じゃ教えてくれないコンナ世の中じゃ ヘブン
だがポイズン
>>182 問題ないよ〜
けど煽り屋がいるから心して質問してくれ
変な人だと思ったら返事をしない触らない
>>189 それでは心して質問させて頂きます(笑)
初心者(C#未経験者)向けの書籍などの
最低限度の知識は全て習得するのが当然ですので、その件は置いといて、
次のステップで、みなさんが御使用された書籍を御教え頂ければと思います。
「書籍名」と、「何に役立ったのか」など具体的な内容をお聞かせ頂ければ、大変参考になります。
もちろん、みなさんの中でもレベル感(どこまでが初心者?・最低限度の知識とは?)や
プログラムに対する使用目的などが異なることも十分承知しておりますので、
みなさんの思うがまま、お聞かせいただければ思います。
プログラム歴とか、やりたいことの違いで、ここで聞いても答えでないと思うの。。。 最低限の知識も、仕事なのか趣味なのかでも違うと思うし。。。 オライリーにアレルギーがないなら、オライリー買っておけ!
て言うか、C++ から移行組みの俺は C# の本なんて買ったことない。
俺もJavaから移行組みだから買ってない 強いて言えばEssentialWPFだが、これは初心者が読んでも仕方ないだろう
他言語からの移行組ならMSDNで十分 ただしLL、テメーはダメだ
C#でAccess2000形式のmdb生成から、テーブル生成、データの書き込みと表示までしたいんですが、参考になるような良い書籍などありますか?
昔溢れてたVB6やVBAでAccess触る系の本 COMだから一緒
C#.netに関しての質問ですが、 Sendinputを代用する.netの関数とか無いんですかね。
無いみたいよ今のところ
SendKeysじゃダメなの?
Form上にgroupBoxが4つあり、それぞれのgroupBoxの中に1つずつ ラジオボタンを設置しました。 で、こいつらを排他にしたいのですが、方法ありますか?
そういやKeys.Helpってどこのキーに対する定義なんだろう
IPアドレスとかサブネットマスクとかの入力欄てどうやって作りますのん? テキストボックス4つ並べてとか、素人ですって感じがするのだけれど どうしたもんだか・・・
>>200 方法1
AutoCheck = falseにして手動で。
方法2
RadioButtonをGroupBoxの中ではなく上に配置する。
でもそんなウィンドウズアプリの標準的な作法に反する動作はそもそも採用しないのが一番正解。
public class student { public string name=""; public int number; } というクラスの配列 student[] st; があったとして、配列の中身をnumber順にソートしたいのですが どうすれば簡潔に書けますか?
>>205 var list = new student[10];
var result = from s in list orderby s.number select s;
C#を学びたいのですが、最初は何からやったら良いですか? MSのサイトにあるリファレンスでも見ながらサンプルPGでも組んでみるべきですかね。
>>206 配列の中身をソートしたいならArray.Sortでよくね?
Array.Sort(st, (x, y) => x.number < y.number ? -1 : 1);
2chのレス差分をGZipで取得するときにAddRangeに指定するByteサイズって 解凍後のdatのByteサイズでいいんですよね? ローカルdatサイズ > サーバーdatサイズになって、416 HTTP_RANGE_NOT_SATISFIABLEで返ってきてしまうんですが もしかして圧縮状態のサイズを指定しなきゃいけないんですか? HEPL!
rangeとgzipって排他じゃなかったっけ?
Array.Sort(st, (x, y) => x.number.CompareTo(y.number));
>>210-211 受け取れない・・・だと・・・
1回目:Gzip全レス受け取り
2回目:text/plane, AddRange指定(datサイズ(GZip解凍後))
3回目以降:text/plane, AddRange指定(取得済datサイズ)
だったのか
だからあかんかったんや・・・
人
ありがとう、これで救われる(´・ω・`)
214 :
デフォルトの名無しさん :2011/08/14(日) 11:23:30.98
結局、ラムダ式も匿名関数もとりあえず置いといて、 ジェネリックFunc<...>だけで、Cでいう関数へのポインタ部分って記述できるって解釈でいいんだよな。コンパイルは通ったし。 こんな感じ↓ void Y( Func<int, double> f){ double Z = f(10); ... } static double X(int a){...} static void Main(){ Y( X ); ... } delegate、匿名メソッドとかまじめに読んでたら、 3.0になって、ラムダ式がでてきてせっかく覚えたdelegateが不要になって、式木にまで説明が及んで、おつむが死にかけた。 delegateはこれから書くコードとしてどりあえず要らない子でいいの?
outやrefは自分でdelegate定義しないと
>>215 横からだが、整数の演算で下限値を振り切っても、その呼び方は「オーバーフロー」だぜ
アンダーフローは浮動小数点演算時に指数表現できなくなる現象
floatなら2の-130乗くらい
>>216 staticでなくてもいいのが関数ポインタと違うところ
デリゲートのコンストラクタは実際には
new Func<int, double>(呼び出し先のオブジェクト, 関数ポインタ)
のようになっている
桁あふれだからな
221 :
215 :2011/08/14(日) 12:47:08.39
>>219 レスthx,
メンバ関数でもいけるのが味噌だね。動的にインスタンス関数をアドレッシングできる。
結局、過去バージョンとの互換性以外で、delegateは完全に忘れてはいけない例ってある?
例えば、
static double hh(double x){ .... }
Func<double, double> z = hh;
という具合に、ジェネリックだけで記述できるよね。裏方でどーなってるかは置いといて。
delegateキーワードがないと記述できない例ってあれば教えてください。
>>222 ない
複数ステートメントの匿名メソッド delegate(x) { ... } は x => { ... } で代用できる
ただ、匿名メソッドの引数は省略できるので、イベントハンドラ書くときには便利かもしれないが
一貫性と引き換えにするほどのものではないと思う
ジェネリックだけで記述できるって意味判らんが、Action<>とFunc<>があればOKって意味?
delegateキーワードはデリゲート型の定義と匿名メソッドの使用って2つのケースで使用される
匿名メソッドとしては完全にラムダ式で置き換えられる
デリゲート型の定義としては
>>217 のためにAction<>/Func<>では足りない
>>217 あっと見落としてたレスthx
そーかrefやoutはFunc内の引数に書くとエラーになるのか・・・
delegateに拡張メソッド作るのは俺だけだろうな
ActionやFuncが用意されているからな 225のようなケースを除けばそれでほとんど事足りる
C#ってunsafeコードで関数へのポインタって記述できたっけ?
ちょっとやってみたけど(*pf)() と書くと*の前の(がエラーとか言われる
>>226 IComparerとかIEqualityComparerを作る拡張メソッドなら
Comparer<T>.DefaultはあるのになぜEqualityComparer<T>.Defaultはないのか そもそもEqualityComparer<T>クラス自体が存在しない訳だが
と思ったがEqualityComparer<T>.Defaultとか存在してもobject.Equalsを呼ぶだけっぽいな
ラムダ式で複文はシンタックス的に気持ち悪いので使ってない。 匿名メソッドでも型推論してくれりゃいいのに。
匿名メソッドなんてはじめから後で捨てる気満々じゃん なるべく将来的に邪魔にならないようにdelegateなんて冗長な変な目印付けたんだろ
win7環境だとなんでmessageBoxのOKボタンが右寄りなの??
236 :
デフォルトの名無しさん :2011/08/14(日) 21:40:10.71
右手でする人は右寄りになりがち
そんな右寄りだったっけ? 1年以上使ってるがそう感じたことは一度もないけどな
どっかのスレであったボタンをセンターにしたいってやつだろ
文章が左から右に流れるからじゃね?
>>232 EqualityComparer<T>は存在してるし、DefaultはちゃんとTがIEquatable<T>実装してるか確認してるけど?
WAVファイルを指定時間でちょん切るにはどうすればいいのでしょうか ググってもWAV再生に関するページばかりで困っています ヘッダ解析してバイナリいじるしかないのかな
うろ覚えだけども。 一秒のデータ量は、「チャンネル数*ビット数(をバイト換算)*周波数」だったと思うので、 2ch、16bit、44.1khzだったら、「2*2*44100」が一秒のデータ量だったと思う。 だからそのデータ量をほしい時間あたりで割ってやれば取れるんじゃないかな。 圧縮されてたらこのとおりではないかもしれん。
>>243 SamplitudeかAudition立ち上げて
所望の時間にカーソル持って行ってコピペでせーぶ
冗談はさておき、 まぁバッチ処理としてやりたいんだろうけど、 音声でも映像でも一応データになにがしかのデータ破壊がおこってないか 確認の意味でも目視チェックはやっといた方がいいかと。
ffmpegにオプション付けて実行とか…
VS2010を使用しています。 インストーラを作成しているのですが、アプリケーションフォルダと同じ階層にフォルダを作成し、 デスクトップにそのショートカットを作成することは可能でしょうか? ┼AplicationFolder └Hoge よろしくお願いします。
>>249 Visual studioで出来るインストーラって本当にオマケぐらいの機能しかないので
細かいことをしたいなら「orca」というキーワードでググッてみてください。
Visual studioで作成したmsiを編集するツールです。
いやいくらなんでもその程度のことはVS単体でもできるよw
やり方も普通にググれば見つかるはず。
>>249 は何も調べずに質問してるな。
XmlSerializerで作成したXMLファイルの中の配列の要素数を増やしたい場合 どの様にすればいいのでしょうか? たとえば public class xmlData { public int[] intData = new int[5] {0, 0, 0, 0, 0}; } private xmlData scls = new xmlData(); を XmlSerializer serializer = new XmlSerializer(typeof(xmlData)); FileStream fs = new FileStream("data.xml", FileMode.Create); serializer.Serialize(fs, scls); fs.Close(); でできたXMLのint配列を後からint[10]に変更した場合 xmlDataを以下に変更しても public int[] intData = new int[10] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};; Deserializeで読み込んだ段階でint[5]に変更されてしまいます。 XmlSerializer serializer = new XmlSerializer(typeof(xmlData)); FileStream fs = new FileStream("data.xml", FileMode.Open); scls = (xmlData)serializer.Deserialize(fs); // ←ここでint[5]になっている fs.Close();
そうですか。
System.Runtime.Serializationの属性やインターフェイスを貼って制御するのが正攻法だろうが、 別にArray.Resizeでいいでしょ
>>254 ありがとうございました。Array.Resize()でうまくいきました。
後から配列のサイズを変更できるなんて初めて知りました。
>>255 後から配列のサイズは変更できないよ
Array.Resizeは新しい配列を作ってそこに元の配列の内容をコピーしてるだけ
List<T>なんかとは違うので区別してないとハマる
…というようなことがあるんで、配列をパブリックフィールド/プロパティにしてはダメ
XmlSerializerなら配列じゃなくてList<T>使えばいいのに
会社や学校など関係無く、趣味でC#されてる方は、このレス内におられますか? また、周りにC#をしている知人がおらず、独学でされている方はおられますか? 一度、みなさんの学習方法を参考までにお聞かせ願いたいのですが……。
>>259 うい
最初からwebで独学
初期段階は、コマンドラインコンパイラで素数と公約数とか求めるプログラムをスクリプト感覚で
VSのExpressが手に入るようになってからは個人的なツール(Windowをアプリ)を何個も作った
>>259 の意図とは違うかもしれんが、仕事はVB.NETで趣味はC#
プログラムは完全趣味。最初はC#2.0くらいまでの機能に限定して覚えたと思う。非ジェネリックのコレクションは軽く触る程度 イテレータ、ジェネレータ、ジェネリックあたりを理解できてから3.0以降の機能に手を出し始めた。
>>259 「作って覚える〜」シリーズを中心に、とにかく作りまくる。
理論、文法は後からついてくる。
雑誌の付録、入門記事なんかは似たような内容ばかりだが、
同じ内容でもプログラムの書き方が筆者によって違うから、
その違いを味わいながらコーディングを学ぶ。(真似する)
>>259 C++やってたから、C#は文法覚えれば割と簡単に使えた。
C++自体はほぼ独学。
C言語は学校通ってたけど、その学校もいまでは潰れた。
自分の学習方法は、やっぱなんか作ることだね。
ライブラリでこういうのがあったら面白いかも?とおもったら、作ってみる。
あとは、グチャグチャにならない程度にショートコーディングを意識してる。
C#だとGUI周りが充実してるから、想像を形にするのは結構向いてると思う。
2chの専ブラでも作ってみるといいかもね クライアント側をそこそこ学べるんじゃないかな?
プログラミング自体が初めてなのか、他言語の経験あるのかで回答は変わる
言語を誰かに教わらないと出来ないような人間だったら、 プログラミングには手を出さないほうが良い 基本的には全て独学で覚えていかないといけない世界だからな
おまえはウザイ
プログラムなんて、やってるうちにできるようになるよ。 教室で興味のないコード書かされるより、自分で気楽に書いたほうが勉強になる。
C#で仮装マシンなしのピュアコンパイラとして仮に動作させるとすれば、 ネックになるのはやっぱオートのおデストラクタとガベコレ?
C++からは格段にスマートになってるとは思うんだけど、 C++使いながらC#言語仕様書読んでるとほんと混乱するんだな。
C++も相当ボリュームあって、美しくなく、難しい言語だと思うけど、 C#はスマートでもさらにボリュームが増えて難しくなったな。 これいきなり読んで今の子はプログラムするのか? C→C++で段階踏んできた俺等からすると C#でいきなりプログラムは相当敷居が高そうだけど。
英語のカリキュラムを完全に終えてないと喋れないわけじゃないだろ プログラミングだって同じ
敷居が高いとか、何かお前はC#に不義でも働いたのか?
高いのは敷居じゃなくてハードルだろ 無学なのが一番の問題なんじゃね?
>>256 そうなんですか?
>>252 のやつは
Array.Resize(ref scls.intData, 10);
でうまく動いたけど・・・
>>258 すでに配列で確保した奴のメンテなので・・・
>>275 お前
敷居が高い、とハードルが高いを
どう使い分けるのか言ってみろこのゴミカス高卒が。
そこで罵倒を入れるとお前は高卒未満になってしまうぞ
その「未満」の使い方も問題だと思うけどね 恐らく意図的にその言葉を選んだんだろうけど、だからこそ余計に。 しかし、誤用厨って馬鹿っぽいな。
プログラム言語の話にしましょうや。 日本語の誤用にやたら厳しくしてると嫌われちゃうよ。 自然言語なんて誤用からスタンダードに変わっていくものなんだからさ。
ガベージコレクションって簡単にメモリリークするし結局いつも明示的に使ってる…
どうしてその誤用が定着しつつあるのか興味はあるなw 敷居なんて普段の生活でそんなに意識してないだろうに
敷居〜とハードル〜ってそんなあからさまな誤用じゃないような 広義の意味では似通ってるし 煮詰まる、とか役不足なんて真逆の間違い多いしよっぽどだと思う。 真逆については(ry
2chなら誤用なんてどうでもいいw 基本バカだし
ねらーリアルでやるから
>>282 GCでメモリリークする原因ってただ一つ、
「明示的に参照を切らないといけない状況で放置」だぞ
GCを理解してない証拠
FMFM DisposeのみでオールOK そう思っていた時期が俺にもありました
え、どういうこと(汗
Disposeすれば何でもメモリが開放されると思ってたw
Disposeとメモリの解放は直接関係ないよ たとえばメインウィンドウがList<T>を持っていて、 子ウィンドウを開くたびにそこにオブジェクトを追加して、 使わなくなっても削除しなかったらメモリリークだよ
>>290 え?っと思ったらDisposeはリソースを開放するだけなのか
また一つ勉強になったわw
リソースってメモリだろ? って思ってる奴には目から鱗だよな。まぁ勉強不足なだけだが
タスクマネージャ走らせて、メモリリークしてないようなら放置してる
>>293 おまえがそう思ってたんだろ。ごまかすな。
CPUから見てポートとバスにつながってるモノはみんなリソース
メモリリークしてそうなら、再起動する どんなに注意深く設計しても、リークするときはリークするし
C++と違い、
>>291 のようなタイプのメモリリークやDispose忘れやハンドル漏れは
プロファイラ使えば簡単に見つけられるぞ
298 :
293 :2011/08/17(水) 11:52:32.44
>>295 まさにそうだけど、ごまかしたつもりはないんだが、、勉強不足ってのも自分のこと
それにしても、Disposeでポートとバスにつながってるものが解放されるってか?
>>266 259の書き込みをした者です。
一応、COBOLで社内の基幹システムを、ゴリゴリと開発しております。
表現は曖昧になってしまいますが、販売管理システム・生産管理システムなど、COBOLでは難なく(?笑)構築はできます。
COBOLでは……。
>>299 COBOL出来るなら大丈夫
とりあえずフォームにコントロールをペタペタ張って遊んでみ
COBOL使うのがバカらしくなるぜw
IDENTIFICATION DIVISIONとか、打つだけでもめんどくせぇ
>IDENTIFICATION DIVISIONとか、打つだけでもめんどくせぇ いくらコボラーだってコピペぐらい知ってるだろ
真のコボラーは、ENVIRONMENT DIVISIONとか手が勝手に打つ
Emacsのマクロに登録してあるに決まってるだろ
初歩的な質問で申し訳ありませんが 以下のコードで obj.B(); のような呼び出しが可能になるのはどうしてでしょうか? static class A { public static void B(this C obj) { } public static void hoge() { C obj = new C(); obj.B(); } } class C { }
どうしてって言われても、そういう風に作ったからとしか インスタンスメソッド風に静的メソッドを呼べるように作られたのが拡張メソッド 質問意図が分からない
拡張メソッドでしょ コンパイラが obj.B(); を B(obj); に置き換えてるだけ
昨日の話にいちゃもんつけてんのかw
体を張ってアホに付ける薬が無いことを示してくれるなんて
あるクラスにたいして特定の拡張メソッドがあるかどうかを判定するには どうすればいいんでしょうか? たとえばどこかでFoo()みたいな拡張メソッドが定義されていて クラスBarにたいしてBar.Foo()と呼べるかどうかを判定したいんです もしかして<T>で受けたクラスは拡張メソッド呼べなかったりします?
>>312 Bar.Fooってことは静的メソッド?それは拡張メソッドでは無理じゃね?
>>312 ジェネリック型は当然無理だしもちろんdynamicでも無理
拡張メソッドは単なるシンタックスシュガー
ソースファイルのusingに依存するから、リフレクションでも正しく判断するのは不可能
パネルのVerticalScroll.Valueに代入しても反映されないで値が0のままなのは何故でしょうか その直前ではHorizontalScroll.Valueに代入出来てるのに…
あ、AutoScrollPositionで指定すんですね 失礼しました
圧縮されたファイル(zip、rar、7z)の中にある画像ファイルを表示させたいのですが、 今考えているのは対象の圧縮ファイルを解凍してテンポラリフォルダ下に置き、見ようと思うんですが この処理だと解凍するときに重くなるし、テンポラリフォルダの容量もバカ食いするので現実的に無理そうです 仕様としては一定のメモリの中で、画像ファイルをロードしてメモリのサイズが超える場合古いやつから削除って感じです
で?
それでいいんじゃないとしか言い様がないのだが 何を求めているのかを本文の最初に書かないと
321 :
318 :2011/08/18(木) 12:45:30.12
説明不足でした。
>>318 に書いてあるとおりでいいライブラリ知らないでしょうか?
今は何使ってやってるのさ 隅々まで探せばバッファに展開する機能くらいあるんじゃねえの
Susieプラグイン対応にすればいいんじゃない?
そっちの方面はあんまり詳しくないけど、rarとかって、ファイルごとの解凍ってできるんだっけ。
ヘッダ暗号化とかソリッド圧縮じゃなければね
そうなのか。サンクス。
>>314 Reflectionで拡張メソッド探すんですね、どうもありがとう。
NET Framework 3.5や4から新しく追加されたクラスなどの一覧は どこかにまとめてあったりするでしょうか?
いいえ
Dotnetzipで作成したzipファイルって、Lhacaとかのツールでも解凍できますか? それとも解凍用プログラムも作っておかないといけない?
試せよ
やってみりゃいいじゃん! そんな手間でもなかろうに。
圧縮して解凍するプログラム作ろう。無駄に洗練された無駄の無い無駄機能として。
わかった明日試すよ!ありがと!
WebClient の、DownloadDataAsync() を呼び出した場合でも、 DownloadDataCompleted イベントが呼ばれないことはあるんですが、どこか間違ってるんでしょうか。 それとも確実に呼ばれることを期待しない方がいいんでしょうか。
336 :
デフォルトの名無しさん :2011/08/19(金) 01:04:00.43
DownloadDataCompleted設定する順番が間違ってるとか 確かDownloadDataAsync()を呼び出したらdownloadをはじめてるはず その辺は間違ってないよね?
はい。WebClientのリクエストヘッダのの設定、イベントハンドラの設定、DownloadDataAsync の呼び出し の、順でやってます。
とりあえずソース載せろよ
すみません。自己解決しました。 根本的な理解はまだなのですが、非フォームスレッドでPictureBoxコントロールを 動的に作成した場合に問題が起こっていたようです。 PictureBox の作成後に作成したWebClient で問題が起こっていました。 別スレッドでPictureBoxを作成し、親フォームへの追加だけをデリゲートを使って、Invokeしていた部分を、 PictureBoxの作成および追加の動作をInvoke するようにしたところ、 問題なくDownloadDataCompleted を受け取ることができるようになりました。 WebClientの動作以外不審な点がなかったので、なかなか気づくことができなかったのですが、 フォーム系統のスレッドの問題が、別の部分で現れるということはあるのでしょうか。 それとも、今回の件に関しては、まだ別の問題点があるのでしょうか。
Windows7のタスクバーのアイコンにプログレスバーを重ねたりしたいのです TaskbarItemInfoを使えばいいことはわかったんですが ひょっとしてこれはWPFで組み直さないと無理なのでしょうか?
>>340 たぶん。
それが嫌ならP/Invokeじゃないかな。
ピンボケvsインボケ
>>330 やってみたが、パス無しzipはツールやWindows標準でも展開できたけど、
パス有りだと正しいパスワード入力しても弾かれたり、パス入力ダイアログが表示されなかったりだった。
Dotnetzipはパスワードの掛け方が違うのかな…よくわからない。
344 :
デフォルトの名無しさん :2011/08/19(金) 21:13:19.71
Windows Api Code packでいけるんじゃね。
345 :
デフォルトの名無しさん :2011/08/20(土) 03:38:37.32
>>344 軽くやってみたが駄目だった。やり方が悪かっただけかも知れんが
usingってDisposeはやってくれるけどCloseはしてくれないですよね?
>>344 TaskbarManagerの話ならあれもWPF前提みたいだよ
>>346 うん
まあまともな実装者ならCloseとDisposeは等価になるように実装するけどね
SqlConnectionとか CloseしてもOpen出来るのはまともな実装じゃないよなwww
>>348 どもです
例外起きたらcloseされないとかなったらusingのうまみがなくなりますしね
.NET FrameworkのDBだかファイルだかストリームのDisposeとCloseが等価じゃないようなこと聞いたんだけど
デマすかね
関西人?
>>349 CloseやDisposeした後で再使用できるようにするのは
推奨されてないが一応アリだ
多くの場合は再びnewするのと変わらんので実装が面倒なだけだからわざわざやらないが
Disposeはともかく、Closeについては別に再Openできても何も不自然に感じない.... というか、むしろそうできないことこそ手抜きのように感じないでもないが
再Openできるメリットが見つからないんだけど何かある?
オブジェクトの生成にコストがかかる場合があるかもしれない でもほとんどのCloseやDisposeできるオブジェクトって単にアンマネージリソースのラッパーで new→アンマネージリソース確保、Dispose/Close→アンマネージリソース解放 なので意味無いんだよな
>>355 ファイルや通信チャンネルなど、頻繁にアクセスするが常時占有したくはない
共有リソースは普通にあると思うが。
もちろんその都度インスタンス生成しても良いかもしれんが、
別にそうしなければいけない理由もない
VC# 2010 Express で、ブレークポイントの条件を設定することはできませんか?
>>357 パラメータを使い回すだけならFileInfo.Openでストリーム返すみたいにクラス分けりゃいいんだよ
意味的には少々不自然でもオブジェクトが状態を持たなくて済む方法があるならそっちが好まれる
>>358 Professionalをお買いください
361 :
358 :2011/08/20(土) 22:34:45.81
そうですか。わかりました。
362 :
デフォルトの名無しさん :2011/08/21(日) 00:06:52.31
次のコードのジャグ配列で配列の長さ(.Length)を使って配列の中身をすべて表示させたいのですが どうすればよいのか分かりません。 int[,][] a = new int[2, 2][]{ { new int[2] {1,2}, new int[2] {3,4} },{ new int[2] {5,6}, new int[2] {7,8} } }; for(int i=0;i<a.Length;i++){ for(int j=0;j< ;j++){ for (int k = 0; k < ; k++) { Console.WriteLine(a[i, j][k].ToString()); } } }
>>362 for (int i = 0; i < a.GetLength(0); i++) {
for (int j = 0; j < a.GetLength(1); j++) {
for (int k = 0; k < a[i, j].Length; k++) {
ていうか矩形の場合でも2次元配列使わなないで[][][]でいいよ
この場合速度もそのほうがだいぶ速いはず
Javaの public bool isCollision (List<? extends BaseSprite> BaseSprites){} をC#に移植するにはどうすりゃいいの?
public bool IsCollision<T>(IList<T> baseSprites) where T : <BaseSprite>
・ジェネリックメソッドbool IsCollision<T>(List<T> ...)where T: BaseSprite{}にする(2.0以降) ・IEnumerable<BaseSprite>型にする(4.0) ・IEnumerable<BaseSprite>型にして、呼び出し元で引数を.Cast<BaseSprite>()する(3.5)
bool isCollision <T> (List<T> baseSprites) where T : BaseSprite{}
解決した
どうも
>>365 は最後に<BaseSprite>を<>で囲めないんじゃないか?知らんけど
>>366 の下2つはなんだ?Enum?
IEnumerable<T>はコレクションが実装する基本的なインターフェース これがあるとforeachやLINQが使える 列挙型とは全く無関係
369 :
デフォルトの名無しさん :2011/08/21(日) 14:20:35.13
>>363 うまく動きました。
ありがとうございました。
>>367 それJavaのコードと等価じゃないぞ
.NETのList<T>はJavaのArrayList<E>に相当する
具象型でコレクションを受け渡しするのは嫌われるのでインターフェイス通してる
JavaのList<E>に近いのはIList<T>インターフェイスだけど、
とにかく複数の値を受け渡ししたい時は大抵IEnumerable<T>で十分なので
特に理由が無ければIEnumerable<T>で受け渡ししたほうがいい
すみません、質問です。 SHDocVwにてInternetExplolerを起動し、mshtmlにてformに文字をセットしたりしています。 ほとんどのhtmlファイルに関しては思った処理が出来ているのですが、下記の場合のみうまく拾えません。 解決方法をお持ちの方、教えてください。 【現象】 formにid、nameがなく、submitにもid、nameがない。 ページ内にformが複数あり、対象formは2つめ。 下記のソースでformは拾えなかった。 // ieはInternetExplolerインスタンス HTMLDocumentClass doc = (HTMLDocumentClass)this.ie.Document; mshtml.IHTMLElementCollection elements = (mshtml.IHTMLElementCollection)doc.forms; HTMLFormElement element = (HTMLFormElement)elements.item(Type.Missing, 1);
第一引数の方じゃね?
>> 372 マジか…と思って確かめたらそうでした orz 第1引数ってname名じゃないんですか?
> name > [in] VARIANT of type VT_I4 or VT_BSTR that specifies the object or collection to retrieve. > If this parameter is an integer, it is the zero-based index of the object. > If this parameter is a string, all objects with matching name or id properties are retrieved, > and a collection is returned if more than one match is made. > > index > [in] VARIANT of type VT_I4 that specifies the zero-based index of the object to retrieve when a collection is returned. パラメータの名前だけ見ちゃうのはよくないことですよー 第二引数は第一引数で複数引っかけた時用
>> 374 見落としてました。勉強になりました。 どうもです。
376 :
デフォルトの名無しさん :2011/08/21(日) 21:34:53.92
C#について何も分からない頃はどういった勉強をすればいいのでしょうか?
>>377 分かりました。ご回答ありがとうございました。
>>376 最初はコンソールで言語のことを知る。
フォームはその次。最初に触ってもカオスなだけだし。
おーそーり。 最初からGUIは諦めろって話だ。
フォームはGUIなのか。
windowsFormの事だとエスパーしてみる
プログラミング初学者向けのVisualC#のチュートリアル本見ながらWinFormsで遊んで、 限界を感じてから言語の勉強するのもいいと思うよ 言語の機能を何に使うのか想像できないと勉強しても身にならん
ウインドウをだして任意の処理を入れたくても、お作法が必要なんだよ。 先に下地がないと、思考爆発するからね。下地を最初につくるんだ!!
>>384 基本文法の機能を知るのにGUIは要らんだろw
最初からGUIじゃ、コードが長くなって初心者が解読出来んわw
387 :
デフォルトの名無しさん :2011/08/21(日) 22:23:12.56
それはLabelに出力するよりConsoleに出力する方が簡単ってだけで、 入力が絡むような例になればGUIとボタンイベントで説明した方が楽だよ どうせ.Designer.csの中身なんて解説しないし
でも、ゆとりにタマ拾いばかりさせてるとすぐに辞めちゃうから見た目も少しは教えてあげないとナ。 でも、そんな子供だましで釣られるかよってキレるんだよな ちったぁ教える方の身にもなってみろってんの・・・はぁ とウチの上司が頭抱えてます。 俺?カエルのツラになんとやら。けろっ。
ブラック企業乙
コンソール進める人多いけど、GUIではじめてもいいと思うがなぁー 複数のラベルを使い分けたほうが、ダダ漏れなコンソールみるより楽だし。 イベントの概念を早めに掴んで、言語仕様は必要なものから勉強するほうが飽きないよ。
コンソールって console.writelineのあのコンソール?
>>390 言語仕様全部覚える必要は無いよ
基本の文法と入出力、ファイル操作、オブジェクト指向の基礎さえ押さえればGUIにいって構わないと思う
ただ、基礎は大事だよ
そもそも飽きやすい人には向かないんだし、ここで飽きるなら、プログラマ諦めた方が良い
お前らってあの複雑怪奇な継承とか全て把握してるの? それとも、たまには確認したりする?
>>391 さすがにシリアルポートでどうのとかそういうのはハードル高くね?
>>393 複雑怪奇な継承をまず教えて
多重継承できないのに複雑になるか?
よく使うやつは使ってるうちに覚える。 他のは必要になったらIDEかMSDNで確認。 C++やJavaよりはシンプルなんだから贅沢言うなって
C#の継承は単純な方だと思うけどね・・・ javaディスってんの?
javaは死ねばいいと思うよ
トップダウンとボトムアップ両方やるのが正しいってのはあたりまえだが 今どきC言語やれってのはいないよね。 CよりVerilogHDLでCPU作るのが面白いと言いたい。
400 :
デフォルトの名無しさん :2011/08/22(月) 07:30:47.47
bitmapにgraphicsで線を描いて、ピクセル操作(setpicxel)したんですけど、 graphicsに描いた線が反映されません そこで、お聞きしますが、graphicsはbitmapのピクセルデータを変更しているのでしょうか? ご教授お願いします
してるよ
>>394 スレッドとデリゲートとinvokeを駆使する初心者って初心者って言うかなぁ?
悩んだときは英語版
英語も得意でないし >The buffer size is set to the default size of 8192 bytes (8 KB). となってることくらいしか、違いが判りません。 >A positive Int32 value greater than 0 indicating the buffer size. >For bufferSize values between one and eight, the actual buffer size is set to eight bytes. というのは、キロがついてませんが実際には0〜8KB ということなんでしょうか。 ファイルへの書き出しで言うと、FileStreamはどんな時も8KBのメモリを確保して、 指定した0〜8KBのデータがバッファにたまると、実際にHDD等への書き込みが起こるみたいな
> For bufferSize values between one and eight, the actual buffer size is set to eight bytes. bufferSizeの値が1〜8の場合、実際のバッファーサイズは8に設定されます。
誤記っぽ〜い
誤訳だろうね。 > For bufferSize values between one and eight, the actual buffer size is set to eight bytes. Excite 翻訳だと 1と8の間のbufferSize値において、実際のバッファサイズは8バイトに設定されます。
訳じゃなくて英語版のMCDNが既に変だべ
(´・ω・`)…
WPFのTextBoxでIMEを使って入力してると、たまに入力がおかしくなって、挙句の果てに System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。 場所 System.Windows.Documents.ImmComposition.get_RenderScope() 場所 System.Windows.Documents.ImmComposition.InternalMouseEventHandler() 場所 System.Windows.Documents.ImmComposition.OnMouseEvent(Object sender, MouseEventArgs e) みたいな感じで落ちるのは何なの?バグなの? ググっても何のドキュメントも出てこないし… どなたか似た現象に遭遇して対処できた!って方いらっしゃいます?
>>402 見よう見まねでやってるけど、おれは初心者だな。
まだプログラム歴1年未満だし。分からないことだらけ。
でも何とかなってしまうのがC#・・・というかVSのインテリセンスのおかげか?
VC#2010 WPF で開発しています。 (内容はC#です) 下記をMainWindow.xaml.cs に記述してProcTest() を 実行すると、notepadを閉じた後に「閉じた」と表示されます。 ですが、下記を別ファイルのクラスCProcMngr に記述して MainWindow.xaml.cs にて CProcMngr cPm = new CProcMngr; cPm.ProcTest(); としますと、notepad を閉じてもイベントが発火しません。 この理由と、どうすればイベントを発火するようにできるのか ご教授願えないでしょうか。よろしくお願いいたします。 private void ProcTest() { Process hProc = new Process(); hProc.StartInfo.FileName = "notepad.exe"; hProc.StartInfo.Arguments = ""; // プロセス終了後にイベントを点火させる hProc.EnableRaisingEvents = true; hProc.Exited += new EventHandler(processExited); // プロセス開始 hProc.Start(); } private void processExited(object sender, EventArgs e) { MessageBox.Show("閉じた"); }
GCされてるんじゃないの? プロセスが終了するまではスタックから辿れる場所で Processオブジェクトへの参照を掴んどかないと どうでもいいけど気持ち悪い名前やめろよC++かよ
417 :
デフォルトの名無しさん :2011/08/22(月) 22:14:17.93
while (true) { label1.Text = cnt.ToString(); cnt++; } これでテキストが変更されず,プログラムが固まるのはなぜ? プログラムが固まるのはわかるけど、何故変更されないかわからない
プログラムが固まってるから UIの更新処理だってプログラムだよ?自分で書いてないだけで
ステップ実行で、変更されているのは確認できるんじゃないか
420 :
デフォルトの名無しさん :2011/08/22(月) 22:20:42.76
なるほど label1.Refresh(); をいれれば、更新されました。 しかし、threadを使って上の文を実行すると、勝手に変更されますが、 何故ですか?
GUIの描画を行うスレッドとイベントハンドラを実行するスレッドは同じだから そのスレッドを通せんぼすると当然描画も止まる マウスやキーボードの入力も受け付けられなくなるので、原則として GUIのイベントハンドラは重い処理をしないですぐに処理を返さないといけない それはそうと他のスレッドからコントロールを直接触ってはいけない たまたま動いてるかもしれんが間違い(BeginInvoke使う)
>>420 そりゃUIスレッドは
>threadを使って上の文を実行すると
これを行ったことでUIの更新専属になれたから
先のコードのままだとUIスレッドがUI更新をそっちのけで
与えられた処理に没頭してたからだよ
>label1.Refresh();
この一文を入れることで提示報告するようになっただけ
423 :
デフォルトの名無しさん :2011/08/22(月) 23:02:28.60
通常あるタイミング(ポイントA)でlabel.textはform上に更新される。 while文内部にはポイントAは存在せず、refleshによって明示的に更新しなければならない でよろしいのでしょうか?
425 :
デフォルトの名無しさん :2011/08/22(月) 23:13:05.06
いろいろありがとうございました。 自分なりに改めて整理したいと思います
operator=オーバーロードできないとかどうなってるんだ・・・。うむー。Orz
もしかして:operator ==
>>427 いやー、違うのよ。以下のようなクラスを書いたんだよ。
で、参照属性を持った基本型と同じような挙動にしたかったんだけど、=をオーバーロードできなくて多少不便な感じになっちゃた。
まー、よく考えたら参照と=の用途がかぶるんだけど、ちょっとまいった。
class TypeReferencer<T>
{
public T Value { get; set; }
public TypeReferencer(T Val){
Value=Val;
}
public TypeReferencer<T> Clone(){
return new TypeReferencer<T>(Value);
}
public static explicit operator T(TypeReferencer<T> Obj)
{
return (T)Obj.Value;
}
/*
public static TypeReferencer<T> operator =(T Val){
this.Value = Val;
return this;
}*/
}
429 :
415 :2011/08/23(火) 00:11:39.73
>>416 ありがとうごさいます。
usingでGCしているのがまずいのでしょうか?
名前は、気分を害されたようなら
すみません。
ずっとcppで書いていて急にWPFに
手を出したもので。
>>429 usingは関係ない
誰も参照しなくなったオブジェクトは勝手に消滅してしまうので
CProcMngrをnewした後ウィンドウクラスのメンバ変数に代入しておく
それが原因かどうかは知らん
継承関係の関係図のようなものがまとめられてるサイトとかありませんか?
>>434-435 えっと、初心者向けの派生クラスやらなんやらを分かりやすく図にまとめたものがあればほしいなと…
>>414 .NET Framework 4.0 (WPF4) なんです。
でも、なんだかそれに近そう。
438 :
デフォルトの名無しさん :2011/08/23(火) 04:23:27.82
大昔、クラス一覧のポスター付いてきたのがあったなぁ VC1.0だったかな?
VC1.0っていうと、32bit対応になった頃か。
Delphiにもポスターはあったよ 今はクラスが増えすぎて全部は網羅できないだろうね
441 :
415 :2011/08/23(火) 10:21:47.79
>>430 hProcをメンバ変数にして、
条件付けて自前でdispose+closeするようにしたら
イベントが発火されました。
ありがとうございました。
最初に買ったVC6アカデミックにもついてて、ワケワカメだった。 これもおぼえるかー!!と軽く絶望してた。MFCは使ったことないけど。
444 :
デフォルトの名無しさん :2011/08/23(火) 20:14:25.70
確認したらVS2005もポスターセット付いてきていたんだな
マルチスレッドについて勉強したいけど、いい題材がないでござる(´・ω・`) ツールとかでマルチスレッド処理が必要になるアプリはないでござるか
>>445 ファイルコピー高速化ツールはマルチスレッドのが有ったな
動画変換や音楽ファイル変換の方がマルチスレッドの恩恵受けるが
>>445 マルチスレッドでテキストをソートするアプリとかどう?
例えば、MMOの発言禁止リストをソートすると色々おもしろいぞ。 あー、ファイル読んで行をソートしてファイルに書きこむってやつね。
苦労してソートを1.5倍速にして嬉しいケースなんてものすごくレアだよ 並列処理というより、ダウンローダとか非同期処理系のほうが簡単に大きな恩恵が受けられるよ
"勉強の題材"としてマルチスレッドでソートするのは悪くないんじゃないか?
ダウンローダー作れよマルチスレッドだと捗るぞ あんまりマルチスレッドし過ぎると繋がらなくなったりするからそれもそれで面白い
N体問題の物理シミュレーションでもやれば? GPGPUどころか数百コアでもスケールするぞ 何の役にも立たんがな
.NET3.5で ・バッテリー搭載機かどうか ・スクリーンセーバータイムアウト時間 ・ディスプレイタイムアウト時間 などを取得する関数やプロパティってありますか? 調べてもWin32のPowerManagementAPIや SYSTEM_POWER_CAPABILITY構造体を利用する 方法しか見つかりませんでした。 バッテリー状態を取得するだけでしたらSystem.Windows.Forms.SystemInformation で良いのですが、これでは不十分なのです。 Win7を使っているので、7以降のみのもので構いません。 よろしくおねがいします。
APIあるなら、C#から使えるようにすればよい。
456 :
デフォルトの名無しさん :2011/08/24(水) 13:13:18.19
>>455 それでも良いのですが、.Netで用意されているのなら
そちらを使う方が気持ちがよいので。
>>455 ありがとうございます。
コードパックにありましたか、調査が足りませんでした。
registryから取得するのも、
MSが公開している情報ではないので
あまり好きではありません。
DllImportしか無いですかね。
あ、文句たれているのではなく、
便所の落書きです。すみません。
ありがとうございました。
一回の処理に0.1秒程度かかるものを一分周期で実行させたいのですが、 Sleepを使ってループさせると、その処理分0.1秒+αずつずれていきます。 何回実行してもずれないような方法なにかありますか?
459 :
デフォルトの名無しさん :2011/08/24(水) 20:40:24.52
Sleepの引数から処理にかかった時間を引くとか、Timer使うとか
byte配列を連結させたい Buffer.BlockCopyより簡単な方法ってある?
a.Concat(b).ToArray()
>>458 別スレッドにしてスリープ時間微妙に短くして残り時間をビジーループで消化。
動的にListView を貼ったり、消したりしたいんだけど、 デザインツールを使わずに手書きでプロパティを設定するのは面倒だよね こういう時は、ListView だけを貼りつけたユーザーコントロールを作って、 そのユーザーコントロールごと貼ったり消したりすればいいの? なんか、行儀的に良いのかどうか不安が残る
普通にコントロールのvisibleをfalseに設定すればいい話だと思うんだけど。 複数だったらグループボックスに突っ込んでそっちのvisibleいじればいいと思う。 なんか問題ある?
>>464 普通にVisibleをトグルでよいのでは?
おおよそ100個くらいまでの範囲で、増やしたり減らしたりしたいんです
レイアウトが固定であるなら、 コントロールを配列などに突っ込んで、新しい方からvisibleいじりつつ内容更新してけばいい。 その際にグループボックスに突っ込んでおけば楽な場面もあるかもしれん。 で、100こ扱うことになったら、デザイナで貼るにしろ自分でNEWするにしろ、結構根気いると思うんだけど。
469 :
デフォルトの名無しさん :2011/08/25(木) 00:37:10.02
>>467 ListViewをサブクラス化して、必要な初期化をそれのコンストラクタに書いちまえばいいだろ
ユーザーコントロール下など無駄でしかない
>>467 俺はユーザーコントロールにする方がいいと思うよ。
デザインだけでなく、表示の更新やユーザー操作への応答部分のコードも
ユーザーコントロールに分割できるから。
100個が種類のことを言ってるのか同時に表示する数の事を言ってるのか分からんが、
いずれにせよそれを制御するコードを全部formに突っ込むなんて想像したくもない。
471 :
デフォルトの名無しさん :2011/08/25(木) 02:27:58.13
アクティブなウインドウの画面キャプチャを取るアプリを作ろうとしています。 Formの上のボタンを押すとGetForegroundWindowが走るようにしたのですが、 自分自身のFormがアクティブなため、自分のキャプチャが取れてしまいます。 画像を取りたいアプリは決まっているので、そいつをSetForegroundWindowでアクティブにしようと思ったのですが、 毎回タイトルが変わってしまうため上手くいきませんでした。 そこで、自分の次にアクティブな画像を取るにはどのようにすればよいでしょうか?
質問させてください。 ASP.NET .net Framework4にて App_Codeディレクトリ配下にビジネスロジックを記述したfacadeクラスと、さらにフォルダを切ってXMLを格納してあります。 このfacadeクラスから、とあるdllの処理を呼んでXMLの解析を行わせます。 dll内の解析処理にXMLファイルへのパスを渡すため、現在は下記のように引数で渡しています。 「HttpContext.Current.Server.MapPath("App_Code以下、XMLファイルまでのパス")」 で、気になるのがビジネスロジック層でHttpContextって使っていいの?と、App_Code以下のパスがfacadeクラスごとにベタ書きになっている点です。 もっとエレガントにdll内の処理へXMLのパスを渡してやる方法がありましたら教えていただけますでしょうか。 よろしくお願いします。
C++でプログラムしてる奴ら C#の仕様が頭に入ると混乱しないか? C#の方が理にかなってるからC++の方で間違ってしまう
そこでC++/CLIを・・・
それは風邪引いた時に水風呂に入るようなもんだw
脳内プロファイル切り替えてるから問題ない
>>458 ThreadTimerじゃいかんのか?
482 :
458 :2011/08/25(木) 20:35:43.39
いろいろとありがとうございます とりあえずタイマーあたりを試してみます
>>473 うーん、せいぜい this-> の代わりに this. 打っちゃうくらい。
あと、一発書きでメモリリークする率(もちろんテストしてデバッグするけど)上がった。
>>473 クラスや構造体がnewしなくてもインスタンスが生成されていることに気付かない
構造体はC#でも一緒でしょ Javaで小さい値オブジェクトを大量に使い捨てにするようなの書いてると スタックにオブジェクト置けなくてすごくイライラする エスケープ解析も馬鹿だし、参照渡しだらけでCより汚い…
ハァ?C#とC++じゃ構造体が一番違うだろが。 お前、ぱっと見ただけでは気づかない、バグ満載のプログラム書いてないか
エロい話しようぜ
Insertしたいです
WebClient を使っていれば、単一HTTPサーバに対して最大同時接続数2だとかの 決め事は勝手にやってくれるんでしょうか それとも、アプリケーション側で実装すべきことなんでしょうか
自力でやらないと駄目
わかりました ありがとうございます
同じ処理ずっと続けてるとどんどん処理が重くなるんですが原因がわかりません ためしに for(i=0; i <=10000; i++) { sw.start(); for(i=0; i <=10000; i++) { なんか処理 } sw.stop(); } で計測してみたらどんどん処理時間が加算されてってしまうのですが どうすれば解決するでしょうか
sw.Reset()を sw.Stop()の後に入れて
その「試し」の言わんとする所が意味不明
すみませんreset入れてませんでした
よくある
>>486 構造体は変数自体がインスタンスだけど?
DownloadFileAsyncメソッドを使ってて思ったんですが、 ThreadクラスとDownloadFileメソッドを使ってダウンロードの進行率を取得する方法ってないんですか?
ないよ やりたければHttpWebRequest使って
次期バージョンで追加される DownloadFileTaskAsync になら、 進行率取得のためのオーバーロードが存在するんだけどもねぇ。
501 :
デフォルトの名無しさん :2011/08/26(金) 23:29:33.62
dobonあたりにサンプルコードなかったっけ? まあ.netって超簡単だけど端折ってるか、そうじゃないかで 中間みたいなのがなかったりするよね
それやりだしたら、Java みたいに「開発者の数だけどころか、その2倍くらいの数フレームワーク乱立してんじゃないか」状態になりかねない。
WebClientはUIスレッドで始めたら勝手にバックグラウンドで処理されて 結果がこれまたUIスレッドに返ってくることに意味があるんで 明示的に別のスレッドで動かすんなら別にWebClient使う必要ないと思う
WebClientとWebRequestが全く独立してる(内部実装は別)のはMSらしいよな Javaなら確実にWebClientにWebRequestオブジェクトを渡す設計になる ずっと柔軟だけどそれが使いやすいかというと…
>内部実装は別 ちがうの?
内部実装はともかく、って意味でしょ まあprotectedでWebRequest取得メソッドがあるから全く独立とまでは言えない
507 :
497 :2011/08/27(土) 00:01:27.81
>>499 ありがとうございます。
どうしてもDownloadFileメソッドだと不具合が起きるみたいなのでひとつ聞かせてください
htmlソースだけ取ってくる場合でも、HttpWebRequestって使えるんでしょうか?
508 :
デフォルトの名無しさん :2011/08/27(土) 00:08:19.20
使えるよ でもhtmlレベルだと一瞬で終わりそうだな
Javaのライブラリって過剰にメンバの重複を嫌うよね で結局.NETのWebClientみたいなものが至る所で再発明される
JAVAの好きにさしたらええがな
Javaの再発名大好き文化は別にWebアクセスに限らないしねー。
C#に限った話ではないのですが、 bool[] hoge = new bool[10000]; //中略・・・hogeの各要素は幾度となく更新される //一万の要素のうちtrueになってるのは数十から数百個程度とする ここからすべての要素をfalseにしたいのですが for(int i = 0; i < 10000; i++){ hoge[i] = false; } と for(int i = 0; i < 10000; i++){ if(hoge[i]){ hoge[i] = false; } } のどちらが速いですか?実際にはただのbool配列ではなく、もう少し複雑なクラスのリストです。
513 :
デフォルトの名無しさん :2011/08/27(土) 03:00:38.65
>>512 そのループの外にjでさらにダミーのループ作って
時間計測してみればいいんでね?
やはり計測してみるのが一番早いんですかね
多分インスタンス再生成するのが早い
要素一億で計測してみました。あくま自分の環境下のことですが、後学の為に結果残しておきます。 前者:0.120秒 後者(trueの割合100%):0.216秒 後者(trueの割合10%): 0.189秒 後者(trueの割合1 %):0.184秒 後者(trueの割合0 %):0.150秒 後者はtrueの割合が少ないほうが速く成るのは予想通りでしたが、それでも前者の方がずいぶん速いようです。 余計なこと考えないほうがよさそうです。
bool[] hoge = new bool[10000];
518 :
デフォルトの名無しさん :2011/08/27(土) 09:31:23.42
スピード気になるなら並列処理 でも、I/O伴わない1万程度の処理なら速度気にならないと思うけどね
519 :
デフォルトの名無しさん :2011/08/27(土) 09:34:27.89
あ、処理が単純すぎるから並列は無駄なだけだなw
Array.Clear使えよ CLRに組み込まれてるから爆速だぞ
Javaの interface{ int TILESIZE = 16; } みたいな定数を集めたインターフェイスは通常どう移植するのがベターなの?
.NETではそういう名前が被りやすい機能は排除されてる 独立したクラスにしてpublic const intかpublic final int 定数名はTILESIZEじゃなくてパスカルケースでTileSize
523 :
522 :2011/08/27(土) 11:51:19.67
Javaとごっちゃになってた ×final ○readonly
524 :
デフォルトの名無しさん :2011/08/27(土) 12:02:29.18
staticもねえぞ
class Constants { public const int TileSize = 16; } かな。 てか、無名インターフェイスとかキモいのぅ。
WebBrowserコントロールで10minutemail.comを開いて メールが届いたらMessageBoxとか表示したいんですけど DocumentCompletedが発生しないのですがどうしたらいいですか
>>497 お前はC++とC#のStructの違いを100万回勉強し直せ
>>527 なら逆に聞くがC#のClassとStructの違いって何だ?
>>484 が正しいとすると両方ともnewしないとインスタンスが作られないんだろ?
529 :
528 :2011/08/27(土) 19:29:56.76
ああ
>>484 ってインスタンス生成時のnewの構文的な意味の話?
それなら理解できる。すまん。
C#はわかりやすいように統一してるんだろうが、
意味的にはC++の方が理にかなってると思う。
Debug.Assertはありますが、MFCのVERIFYマクロのようなものはないのでしょうか?
Trace.Assert でもTrace.AssertもDebug.Assertも直接呼ぶより自分でクラス用意して Conditional属性付けたメソッドでラップして使ったほうがいいんでないかな
パブリックメンバの引数のチェックにAssertは使うなよ その場合は普通にif+throwだよ
c#の機能などを駆使したアルゴリズム辞典なんかはないでしょうか?
C#でDirectX使ってゲーム作ろうと思ってるんだけど、 XNAってゲームで遊ぶ側に何かランタイムか何か入れなければいけないの? .NETとDirectXだけでおk?
535 :
デフォルトの名無しさん :2011/08/28(日) 04:21:46.27
for (int i = 0; i < nCount; i++){ Console.Write("{0}", BitConverter.ToUInt16(Data, i * 2)*0xff + BitConverter.ToUInt16(Data, 1+i * 2)); Data[]配列の中身を2byteの数字で取り出したいんだけど、もうちょっとマシな書きかたってありますよね?
>>532 意味わからん。
Debug.Assert(), if + throw, if + 戻り値 ... 普通にケースバイケースだと思うが。
537 :
デフォルトの名無しさん :2011/08/28(日) 08:10:15.41
TraceSource使おうぜ
こうか? for (int i = 0; i < nCount; i=i*2){ Console.Write("{0}", BitConverter.ToUInt16(Data, i )*0xff + BitConverter.ToUInt16(Data,i+1 ));
iが0のままだぞ
だなw寝起きで頭廻ってないわw誰だよ早起きは3文の徳って言ってた奴は
8時が早起きとか
>>536 引数に限ってはDebug.Assert()はない
[ConditionalAttribute("DEBUG")]だからリリースビルドに残らない
引数はリリースしても定まった値でないから引数なんであって
どうせif throwを書くことになる
>>534 XNAのランタイムが必要
配布物にXNAランタイムのインストーラを同梱することはできる
でも昔と違って今のDirectXはバージョンが細かいから、C++でも新しいDirectX使ったらランタイムの配布は必要だよ
>>533 大昔にあったようなアルゴリズム辞典に書かれてるようなのは、たいてい標準ライブラリ内にそろってるのよね。
>>544 そうなんですよね。
車輪の再発明はしたくない。
C言語によるアルゴリズム辞典持ってるけど、あまり役立ちはしなかった 機能からアルゴリズムが引けないから もっぱら読み物としてだ
547 :
534 :2011/08/28(日) 18:41:48.34
>>543 解答ありがとうございます。XNAのランタイムが必要なんですね
やっぱりC++で作ることにします・・・
>>535 BitConverter.ToUInt16(Data, i )で2バイトとれてるじゃん。後ろ+のは要らん。
つか、そういうのはC#じゃなくてC++でやるべき。
C#の標準ライブラリって、VB.netとか他の.netの言語と共通なの? 違うなら相互に利用できるような仕組みって用意されてるの?
共通
VB.NETの方がオマケ機能が多少ついてるが、C#からでも使える C#独自ライブラリも僅かに存在するけど、コンパイラが使うための機能しかない
>>548 それくらい普通にC#でやるだろ
つか、C++でもファイルからバイナリ読んだりするときはバイト配列を直接数値の配列に
キャストしたりはしないで同じように計算するぞ?
554 :
デフォルトの名無しさん :2011/08/28(日) 20:56:44.25
>>552 uint16のポインタにすれば関数も要らない
>>554 エンディアン依存だしそれでいいならC#でもポインタで同じことできるよ
556 :
デフォルトの名無しさん :2011/08/28(日) 21:03:54.02
パンツの呪い!
557 :
デフォルトの名無しさん :2011/08/28(日) 21:04:50.79
>>535 つか何で*0xffなんだ?0x100じゃないとおかしいだろ
LINQ to SQLないしLINQ to Entitiesを動かしてみたいんだけど, サーバエクスプローラ(Expressのデータベースエクスプローラ)介さないと動かないのかな? 完全に学習というかお試しというかなんだけど, 以前いじったMySQLは環境整え易かったんでそれ+VC#2010Expressで試そうとしたんだ LINQのサンプルはサーバエクスプローラを介してるものばかり, Expressの制限でデータベースエクスプローラからは AccessかMicrosoft SQL Serverくらいにしか繋げないんでそれは直接参考に出来ず. VC#ExpressからMySQLに繋いでるサンプルは, 直接SQLベタ書きで投げるようなものばかりしか見つからず. まずはサンプル動かして理解したいと思ってた段階なんで LINQでのデータベース操作がサーバエクスプローラへの登録無しでは 使えないものなのかどうかも判断できず. それじゃできないとばっさり言ってくれるか, 可能なはずの物なら方向性だけでも示してもらえないだろうか
お試しならSQL Server Compactでいいじゃないか
MySQL は Entity Framework で使える DB プロバイダー提供されてなかったっけ? てか、まあ、自分も SQL Server Compact でいいと思うけども。
561 :
558 :2011/08/28(日) 23:36:30.03
>>528 >
>>484 が正しいとすると両方ともnewしないとインスタンスが作られないんだろ?
お前はなんでそんなに底のあさーい解釈しかできないんだ。
インスタンス生成の構文なんかあさーい話だ。
スタックにつくられるか、ヒープに作られるか仕様にきちんと謳われているかどうかが最も違う点ってことにすら気づかない
お前はカスだな。
>>528 >なら逆に聞くがC#のClassとStructの違いって何だ?
おまえ底が浅いも何も皆目わかってないな。
C#はC++と違いclassとstructで参照渡し、値渡しがデフォルトで規定されてる点も異なる
ListViewのSortって一度SortingをNoneにしないと、再ソートできないんですか? AscendingとDescendingでトグルしたいだけなんですが、一度Noneを挟まないと、うまくいかないのですが、 そういうもんなんでしょうか。それともなにか間違ってるんでしょうか。 こんなコードでやってます。ちなみに、Sort()を呼んでも同じ結果でした。 void listView_ColumnClick(object sender, ColumnClickEventArgs e) { ListView listView = (ListView)sender; SortOrder oldOrder = listView.Sorting; //listView.Sorting = SortOrder.None; listView.Sorting = oldOrder == SortOrder.Ascending ? SortOrder.Descending : SortOrder.Ascending; listView.ListViewItemSorter = new ColumnSorter(e.Column); //listView.Sort(); }
すいません。忘れてください。
許します。でも忘れない。
567 :
558 :2011/08/29(月) 09:33:51.62
結局解決したので一応報告投げとく.
サーバエクスプローラのウィザードで吐き出すソース・リソースの内容
≒EntityFrameworkのEdmGen.exeで吐き出す内容なので
こっちで手動でやればExpressでも問題なかった.
あとは
>>561 とのバージョン違いからくる差かなと思うけど,
接続文字列のリソースのパスを合わせたり(名前空間の分が抜けててアクセスできてなかった)
データベースのユーザやらを今のDBプロバイダのに合わせたりするくらいの修正で
しっかりLINQでのデータ取得できた.
>>542 >引数はリリースしても定まった値でないから引数なんであって
>どうせif throwを書くことになる
定まってないけど、(バグがなけりゃ) ある範囲に入るはずという引数があるだろ。
>>568 だから「パブリックメンバ」なんだろ
アクセスレベルの問題ではなく
>>569 パブリックメンバでも「ある範囲に入るはずという引数」はあるだろ。
>>570 そうだね。
で、それは例外投げろと言ってるんだろ。何が問題?
ArgumentExceptionはキャッチしないもんだ。
BinaryWriterにはSeekがあるのに、何故BinaryReaderには無いのでしょうか? BaseStreamいじるとデータの損失や破損の原因になるって書いてあるし シークするたびにBinaryReader作り直すしかないですか?
>>571 もうその辺にしとけ
アホにつきあっても疲れるだけだぞ
順当に考えればバッファリングの都合
自分で素ストリームを扱えばいいだけ
>>571 >何が問題?
実行速度に決まってる思うが。
何のために、リリースビルドでわざわざ「残さない」ようにしてると思ってるの?
>>576 だからさ、そもそもの質問が「リリースビルドでAssert残したい」なんだよ。
それに対して、リリース時に残すならTrace.Assertじゃなくて例外投げろと
言ってるわけ。なんでそれが残す残さないの話になるの?
>>577 >それに対して、リリース時に残すならTrace.Assertじゃなくて例外投げろと
>言ってるわけ。
だから、その理由は何だよ。
特に、「パブリックメンバの引数のチェック」にこだわる理由もわからんし。
通りすがりだけど アサーションは表明であってチェックではないよ
で、それが何か?
リリースビルドに残すってことは実行時に間違った状態になったり
間違った引数が来ることを想定してるんだろ?
普通は例外使うよね(場合によっては例外も不適切だが)。
それをあえてTrace.Assert使えって言うんだから理由を示すのは
>>578 の方だろ。
assartって例外的構文だから、リリース時に正当性をチェックしたかったらif文使って条件を切るべきだろう。 if文で遅くなるとか変なこというのであれば書きなおせとしか言えないなー。
>>581 >それをあえてTrace.Assert使えって言うんだから理由を示すのは
>>578 の方だろ。
だれも Trace.Assert 「だけ」使えとは言ってない (
>>536 参照)
Assert は、「使うな」と言ってる奴がいるから、理由を示せと言ってるだけ。
>>583 逆に聞きたいんだけどさ
Assertで不正値検出して、その後どうするの??
>>584 Assert に引っかかるってことは何らかのバグなんだから、普通に修正すればいいでしょ。
リリースビルドしてからAssertでバグ潰すとか信用無くすぜ
たまにクラスライブラリでアサート失敗のダイアログが出てくることあるな 投げ捨ててやろうかと思う 強制終了するかどうかは利用者が判断することだ
通常、Assert(Boolean) メソッドは、プログラム開発時の論理エラーを識別するために使用されます。
質問してるのは俺だ!(憤)
ん? lリリースビルドで Assert に引っかかっても信用なくさない、いいアイデアでもあるんか?
Assertが発生する箇所はリリース前に全部潰すんだよ
引数にAssert使うのはおかしいって話だった気がするが 正しい値域は開発者が知ってるわけだからif書けるだろ Assert に引っかかるってことは何らかのバグなんだから、普通に修正すればいいって 結局修正されるんじゃねえか 頭おかしいの?
Javaのチェック例外と非チェック例外の議論を見ているみたいだ
>>585 バグをどうするかはメソッドの利用者が決めるんです
勝手に終了させてはいけないよ
finallyを実行する機会をキミの裁量で奪わないでくれ
>>583 はパプリックメソッドで引数チェック代わりにTrace.Assertを使うって言ってるから
リリース後に残ったバグなんてもんじゃない
呼び方間違えたら強制終了もしくは不正値返却
チェック例外なんて、Java屋さんが崇拝するScalaでも捨てられたからなw
引数の異常ってバグなの? 正常系異常でしょ 予期できる復帰可能なエラーでしょ バグとは言わないよ
ドキュメントに引数aがnullの場合はArgumentNullExceptionを投げると書いたら それはちゃんとした仕様だからな。バグでも何でもない。nullは定義域に含まれる。
>>596 誰もがRuntimeException巻いて捨てるから
>>591 まあ、それができてりゃ
>>584 見たいな質問でないわけだけどね。
>>592 何を盛大に勘違いしてるのか知らんけど、引数チェックの Assert に引っかかるんだから、
普通修正するのは呼び出し側でしょ。頭大丈夫ですか?
>>594 > バグをどうするかはメソッドの利用者が決めるんです
だからそういう仕様にしたければ、そうすればいい。
>>595 もそうだが、ケースバスケースで Assert 使えばいい場合もあると書いてある
のに、「引数チェック代わりにTrace.Assertを使うって言ってるから 」とわざと曲解する
のはなんでなんだ?
>>597 >バグとは言わないよ
なんでそんな決め付けするかなぁ?
バグかどうかは、仕様次第だろ。
バグとは言わないようなバグはバグとは言いません!(キッパリ なんかスゴイこと言ってそうだろ? なぁんにも意味が無いんだぜ?実はw
> なぁんにも意味が無いんだぜ?実はw
うんうん、
>>602 のアホレスと同じだよね〜
今更割り込んで悪いけど、「ケースバスケースで Assert 使えばいい場合もある」 とはどうしても思えんなあ。 ちゃんと適切な例外を投げようよ。
>>604 俺もケースバイケースって響きのいい言葉に騙された。
Assertの通知先って"ユーザー"だから、
いかなる状況においても巻き込んじゃいかんだろw
606 :
605 :2011/08/29(月) 23:18:39.25
「いかなる状況においても」 は、 「基本」 に言い直す
そもそもAssertってデバッグしにくいから使わんわ 個人的には#if DEBUGでReleaseとは別にガッツリ検証するのが好みかな
それは、引数の話? それとも、すべての Assert の話?
>>605 >Assertの通知先って"ユーザー"だから、
Assert の通知先は「開発者」でしょ?
ユーザーに見せるもんじゃないと思うが。
>>608 は
>>604 宛て。
リリース後に残す場合の話だろ? 結局見るのはユーザーじゃないか あのいかにも間に合わせの妙なダイアログはインパクトあるだろうな
ProcessWindowStyleを設定しても、Process.Startで実行したプロセスのWindow状態に反映されません。 これは仕様なんでしょうか?WindowsAPI等で最小化状態にする等すれば最小化はできますが、できれば 以下の様なコードで実現したいのです。ちなみにIExplorer等、一部のアプリケーションは以下の方法で最小化 できます。 ProcessStartInfo startInfo = new ProcessStartInfo("calc.exe"); startInfo.WindowStyle = ProcessWindowStyle.Minimized; Process.Start(startInfo)
>>608 その「引数」と「その他すべて」に分けて考える考え方も正直意味不明。
確実にいえることは、百歩譲って確かにAssertはあなたが思っているような使い方が可能かも知れないが、
普通はそんなことしないのよ。ミスリードだから。
>>607 ガッツリねぇ
副作用が原因でバグ出したら即禁止になりそうだな。
>>609 >>605 の「ユーザー」はたぶん「動かしてる人」っていう意味で利用者でも開発者でもないと思う
そもそもなんでArgumentExceptionとかInvalidOperationException使うの嫌がってんの? Assertだと1種類で済むから?
例外をドキュメントに書かなくていいしそのテストもしなくて済むからじゃね 例外だと仕様になっちゃうけどアサーションはあくまで「失敗した場合の動作は未定義」だから
618 :
デフォルトの名無しさん :2011/08/30(火) 11:41:12.90
TortoiseGit を導入してみたんだけれど、 バージョン管理すべきファイル・フォルダと しなくてよいファイル・フォルダを解説した サイトがあったら、教えてください。
binフォルダと、テキストエディタで開けないファイルは全部要らん
レジストリなんて初めから要らなかったんや! iniファイル最高や!!
独習c#のp442なんですが、デリゲートからインスマンスメソッドを作成するには so.メソッド名をデリゲートオブジェクト変数に代入する事で メソッドの属するクラスのインスタンスが作成され、そこのメソッドに参照されるということで良いのでしょうか? これってstaticなモノの他にメクラスを用意しなくていいというだけの事ですよね?
独(特な学)習C#
623 :
デフォルトの名無しさん :2011/08/30(火) 12:11:37.29
>独習c#のp442なんですが、 このスレの住人はその本をベースに勉強しろと言った教師なのか? そんな本はみんな持ってるわけじゃねーぞ >デリゲートからインスマンスメソッドを作成する 意味がわかりません
クトゥルフかと思った
そりゃインスマ(ウ)スだ
「り しょうばん」の話がなんでこんなとこでって思ったわ!
>デリゲートからインスマンスメソッドを作成する ふんぐるい むぐるうなふ くとぅぐあ ふぉまるはうと んがあ・ぐあ なふるたぐん いあ! くとぅぐあ! これで召喚出来た気がする
628 :
621 :2011/08/30(火) 17:50:10.08
なにこの流れ
いい太鼓とは過剰夏季で書いて見なさい
インスマウスメソッドのせいでスレのSAN値が下がってる
>>610 普通見せないように作るんじゃないのか?
>>612 > その「引数」と「その他すべて」に分けて考える考え方も正直意味不明。
>>532 に言ってくれよ、俺も聞きたいんだからさ。
> 普通はそんなことしないのよ。ミスリードだから。
そんなことがどんなことかわからんし、この文脈で「ミスリード」って正直意味不明。
>>616 >そもそもなんでArgumentExceptionとかInvalidOperationException使うの嫌がってんの?
逆に聞きたい、なんで Assert 嫌がってんの?
例外も Assert も、ケースバイケースで使えばいいと思うが。
>>617 ほぼ、そんな感じ。
どうやって見せないように作るんだ? リリースされたアセンブリに残ってる以上、アサート失敗のダイアログを見るのは確実にユーザーだろ? 絶対に実行時に失敗しないなら残す必要ないだろ。 デバッグ時のみのAssertは誰も否定してない。
プロジェクト作成時のリリースビルドの既定は、Trace定数の定義が外れているけど大丈夫か?
ほぼ、そんな感じ。 って手抜き自慢?
>>632 Assertは開発中に使うもんだからだよ
決まってるがな
論理的に条件が満たされていなければいけない事を宣言するのがAssertの用法だから、 通知に使ってる時点で頭がクルクルパーもいいところでしょ。
そもそも
>>617 の
>例外だと仕様になっちゃうけどアサーションはあくまで「失敗した場合の動作は未定義」
ってのも変な話で、ドキュメントに書いてない例外が投げられるケースなんていくらでもあるよ
未定義と称して例外投げても構わない
表明をあらゆるエラー処理に使用するのは賢明ではない。 表明ではエラーからの復旧が考慮されておらず、表明違反は無条件でプログラムを停止させてしまう場合がほとんどである。 表明はユーザー向けのエラーメッセージも表示しない。
そもそも
>>530 の質問はVERIFYだからTrace.Assertは違うな
Conditional使わないで
public static void Verify(bool cond) { Debug.Assert(cond); }
が等価かな
Assertの人、さすがに間違いを認めたかと思ったがまだ粘ってるのかw
>>631 何でもそうだが、不適切な場面で不適切なものが使ってあると、それを見た他人は
その意図を誤って理解する可能性がある。
それがつまりミスリードということ。
他人をミスリードするようなコードを書くプログラマはダメグラマの烙印を押されても仕方ないね。
642 :
デフォルトの名無しさん :2011/08/31(水) 00:07:28.87
誰かお答えいただけるとありがたいのですが、 ポストバック時のイベントの状態保持の方法について悩んでいます。 現在C#.netでWebページを作成しているのですが、 Button_Click1(object sender, EventArgs e) { for文{ Button[i].Click += new EventHandler(Button2_Click); } } Button_Click2(object sender, EventArgs e) { //Button2押下時の処理 } 汚いソースですが、ボタン1をクリックしたときボタン2を動的に作成し 表示させることはできるのですが、 ボタン2のイベントが発生せず困っています。 ポストバック時にイベントがきえるなどと書かれていたのは見たのですが、 どのようにすればいいのかまったくわかりません。 誰かわかる人はいませんでしょうか?
643 :
デフォルトの名無しさん :2011/08/31(水) 00:17:08.17
それだけじゃあどこでミスってるかわからん
>>2 のコード貼るサイト使って可能な限りコードみせてくれ
644 :
デフォルトの名無しさん :2011/08/31(水) 00:38:22.38
645 :
デフォルトの名無しさん :2011/08/31(水) 01:00:16.03
ASP.netか
646 :
デフォルトの名無しさん :2011/08/31(水) 01:14:21.86
.cs無しのaspxもくれ
動的に追加したコントロールは page_loadだがpage_initだかでイベントハンドラ追加しないとイベント起きないはずだった気がする
イベント内でいちいち変数定義するのと、イベントの外で定義するのどっちがいいんんですか?
649 :
デフォルトの名無しさん :2011/08/31(水) 14:29:40.35
ケースバイケース 好みの問題 うざい先輩の考えに合わせる
ローカル変数とメンバ変数のこと?
簡単に言うと すでに定義されている変数を再定義するのと、最初から定義するのではどちらがいいのかということです 再定義すると読みやすくなるのですが、前に定義した変数がどうなるかわからないです
スコープを最優先しろ
>>644 ボタンが押された処理は、ボタンがなければ処理しない。
だから動的に追加したボタンは、ポストバックんときにまた自分で追加しとかなくちゃいけない。
654 :
デフォルトの名無しさん :2011/08/31(水) 15:12:27.97
まあ結局のところその変数がどういう使われ方するか次第だよね イベント処理だけで使用する場合はその都度でいいだろうし
オブジェクト指向って初めてなんでいろいろいじって遊んでみたけど結局配列最強だな
オブジェクト指向と配列を比べてる時点でお前は何も分かってないよ…
思考が配列なんだろ
最強はフォーム上に貼りつけられたテキストボックス 変数だけじゃなく、配列としても使うことも出来るぜ
配列指向
List<T>でええやん
List<object>
List<T>かな。
System.IO.MemoryMappedFiles.MemoryMappedViewAccessor.ReadArray<T>かな
>>641 結局、「普通はそんなことしないのよ。」のそんなことがどんなことかもわからんし、
ミスリード以前に単なる批判厨なのか。
縁なき衆生は度し難しってこういう時に言うのかなw
あおんな殺すぞ
>>665 はいはい、具体的なこと語れないなら、もう出てこないでね。
「引数のチェックにAssertは使うなよ」とか言うから、なんかすごい理由が
あるのかと思ったら、どうも個人の思い込みみたいだったな。
具体的な理由はいくつも出てきてるだろう 君はケースバイケースとしか言ってないよね
>>667 君は自殺しない理由が無ければ自殺するのか?w
なんかとことん思考様式が倒錯してる人だな。
使ってはダメな理由があるから使わないのではなく、使う積極的理由が何もないから
普通の人は使わないんだよ。
いちおう卑近な例も挙げておくと、メソッド内のローカル変数は、少なくとも機能的には
フィールドで代替できる。
その意味ではローカル変数の変わりにフィールドを使ってはダメな理由はないが、
余程のアホ以外はそんなミスリーディングなことはしない。
670 :
デフォルトの名無しさん :2011/09/01(木) 23:58:18.71
よそでやれ
会話内容がもはや初心者用じゃねぇ 他所でやれバカタレが
>>670 ,
>>672 いつも思うんだけど、こういうレスをする連中(命名:棚上げクン)って
そういうテメエのレスが一番スレッドのテーマと乖離してることに気が付いてないのかね。
喧嘩はTwitterでやれ。
うわ、ついに「他所でやれ」って言ってる人に対して自演してまで牙を剥き始めたぞ しかも自分がここに居座るのに都合が悪くなるとスレッドのテーマと乖離ですか
初心者ばっかのキモイスレだな
初心者用なんだから当たり前だろ ついにはテンプレどころかスレタイまで読めなくなったのか
えっ?
>>668 >具体的な理由はいくつも出てきてるだろう
と書く割には、その具体的な理由が書いてあるレス番すら書いてないのはなんで?
>>669 おいおい、使う積極的理由が何もないから「使うな」って言ってるわけ?
マジで頭大丈夫?
> メソッド内のローカル変数は、少なくとも機能的にはフィールドで代替できる。
メソッド再起呼び出しされたらどうするの?
スタックでシミュレートするの?
>>668 は理由があるって書いてるけど、
>>669 によると積極的理由はないらしい。
まあ、どっちが正しいのか知らんけど、どっちにしてもまともな答えは返せそうにない
ことだけはわかったよ。
マジ馬鹿ってこういう人のことをいうのか。
はいはい、おじいいちゃん。来るところ間違えてますよ〜。 ここは介護施設じゃないですよ〜。 ここは幼稚園ですからね〜。 乗るバスを間違えちゃったのかな〜。
なんか質問できる雰囲気じゃなくなったね 他のところで聞こう
>>684 Publicでなければテストによって引数の妥当性は保証される為、
Debug.Assert、if-throw、if-returnケースバイケースで良いだろう。
Publicは外部に公開され、未知のアセンブリから利用される為、どんな引数で呼ばれるか分からない。
Publicにこだわったのはこのせいで、引数のチェックは必須となる。
この場合、Trace.Assertで済ませるのは間違い。
妥当性のチェックは出来ても、対処方法が強制終了、続行の二択である上に、どちらを選択するかはユーザー任せ。
しかしPublicであっても複数アセンブリから構成されるアプリで、
自アプリからしか呼ばれない場合、ケースバイケースで構わないと思う。
馬に長文の念仏唱えて楽しいか? いいんだよそんな基礎基本も知らずに訳知りぶってる奴なんざ世間で恥かけば
>>688 やっとまともなレスがきたね。
>Publicは外部に公開され、未知のアセンブリから利用される為、どんな引数で呼ばれるか分からない。
>Publicにこだわったのはこのせいで、引数のチェックは必須となる。
>しかしPublicであっても複数アセンブリから構成されるアプリで、
>自アプリからしか呼ばれない場合、ケースバイケースで構わないと思う。
要するに下のケースを考慮せずに「使うな」って言ってたアホがいたったことでいいのかな?
なら、了解。
>>685-686 ねぇ、そんな無意味なレスしてて楽しいの?
初めからそう言われてるのに、5日に渡って見当違いな返答を続けたおバカさんの言うセリフじゃねえな
>>692 >初めからそう言われてるのに、
へ〜、どのレスよ。
レス番示してみなよ。
こう言っちゃなんだが、
>>688 もとてもまともな意見とは思えないけどね。
変則的な方法を、それを選択する積極的な理由もなしに選択するのを肯定してはだめ。
ケースバイケースというが、どんなケースなら「あえて」変則的方法を選択する必然があるというの?
ないでしょそんなケースは。じゃあケースバイケースじゃないじゃんそれ。
>>536 あたり?あくまで「パブリックメンバなら」の話だけど.
でもってそりゃあ
>>688 の後者みたいなのはあり得るだろうけど,
普通パブリックメンバなんて呼び方をしたら
コード上でのpublic修飾と完全一致するわけじゃなく
外部へ公開するもの,って意味合い含むんじゃないのかね
その前提でならそりゃあ,Assert残しちゃいかんよって話になるだろうさ
もう
>>268 と思っても、以後 >180 でお願いします。 (もう既にとっくに
>>401 でしたらスミマセンねぇ)
timeBeginPeriod使えばSleepの精度が上がるらしいですが、 Timer、つまりSystem.Windows.Forms.Timerクラスも精度上がるんでしょうか?
>>694 >ケースバイケースというが、どんなケースなら
>> しかしPublicであっても複数アセンブリから構成されるアプリで、自アプリからしか呼ばれない場合
って書いてあるんだが、日本語わかりますか?
>>695 >
>>536 あたり?
それ、俺だ。
って言うか、スレの流れぐらい理解してから書いてくれよ。
> 普通パブリックメンバなんて呼び方をしたら
> コード上でのpublic修飾と完全一致するわけじゃなく
流石にその解釈無理じゃね?
>複数アセンブリから構成されるアプリで、自アプリからしか呼ばれない場合 っInternalsVisibleTo
700 :
688 :2011/09/04(日) 10:21:20.94
>>694 2ch的回答としては間違っているけど、職場で聞かれたらこう答えると思う。
理想から言えばAssertは、、、というか公開するつもりのないメンバをPublicにする時点で無いわ。
でもチーム開発でこだわりだの理想を振りかざすと白い目で見られるよね。
ほら、ちょうど
>>698 がそんな目で見てる。
702 :
デフォルトの名無しさん :2011/09/04(日) 16:53:10.31
メトロノーム作りたいんですけどなんか良いクラスありますか?
つSystem.Windows.Forms.Timer
メトロノームだと・・・どっかで聞いた話だな
気のせいだ
>>702 こったことをやりたかったら、System.Threading.Timerの方がいいかもよ
まず精度を聞いておこうか
708 :
デフォルトの名無しさん :2011/09/04(日) 21:05:32.14
ノ´⌒`ヽ γ⌒´ \ // ""´ ⌒\ ) .i / ⌒ ⌒ i ) .i (ー)` ´(ー) i,/ .l .::⌒(_人_)⌒:: | ループですか。僕の出番ですかね? /⌒ \ ヽ_./ j⌒i、 /´ ・ | |,. _(__ l, . ノ ノ /´______`___ _´__ノ
ヨハンメルツェルの娘
野田め!管たぁビレ ぎゃほ〜
>>706 俺はSysmte.Timers.Timer使ってる
712 :
デフォルトの名無しさん :2011/09/05(月) 16:40:51.39
C#のクラスライブラリってどこのサイトにまとめられてるの?
List<T>をLINQで操作した結果がIEnumerable<out T>になって シリアライズ出来なくなるんですが何かいい方法ありますか? エラーの「Add(System.Object) が実装されていません。」がよくわかりません
>>714 List に戻せばいいだけなら、LINQ の最後に ToList() ってつけるだけ。
ありがとうございます わからなくてとりあえず新しいList<T>にぶち込んでましたw
まあ、ToListも新しいList<T>作られるけどね。
たしか ToList<T>(this IEnumerable<T> source) { return new List<T>(source); } じゃなかったか
>>718 List自身をToListするとそうなるけど、Selectとか通した後だと別のList作られる。
>>719 ん?Selectを通そうが通さまいが実装は718の通りで、どちらも別のListが作られるよ。
C++で生成した文字列をC#に正確に渡すにはどうしたらいいのですか? 現状は、 C++側 __declspec(dllexport) char* test() { char buf[3]="ABC"; char* b = buf; return b; } C#側 [DllImport("dlltest.dll")] static extern char* test(); fixed () { char* aa = test(); string aaa = new string(aa); // ←aaaには"ABC"が入っていない }
722 :
デフォルトの名無しさん :2011/09/07(水) 10:37:49.85
C++側をwchar_tに変換するか C#側で変換するしかない 受け取ったデータをbyteでみるとABCに相当するコードが入ってるはず
char*返値にするとか死亡フラグ
相互運用以前にC++側の実装がありえない C++から呼んでも失敗するぞそれ C#側でAllocHGlobalしてポインタをtestに渡してそこに書きこんでもらうとかする
725 :
デフォルトの名無しさん :2011/09/07(水) 10:44:15.73
まあ文字列のような長さが決まって無い物をやり取りする場合は C++側で確保してもらってC++側で解放してもらう仕組みでもいいかもね というかどういうコードのためにそんなことしてるの?
void test(char *str, int size) とかにしないと
C#との連携を前提にするならcharじゃなくてwchar使ったほうが楽
というかC#との併用前提ならそもそもよっぽどでなければC#だけで書いたほうがいい
そんなに速くならないどころか
>>721 みたいなミスをしてるようなら確実に遅くなると思う
728 :
721 :2011/09/07(水) 11:21:17.88
>>721 のソースでやろうとしてるのは、C++内部である計算をした結果を文字列として返して、それをC#で表示するものなんですが、
C++の計算部分は確立されたものですので、それをDLL化して引き継ごうと思っています。
C++自体初学者なので、提示された案で色々検討してみます。
C++自体初学者なのに、C++の計算部分は確立されている?
他の人が作ったんでしょう
XMLファイルでやり取りすればおk
クソ時間のかかる計算(もしくはそんなに頻繁に使わない計算)なら 別のプロセスにしてファイルでやり取りするのが簡単安心
その例のC++側のプログラムはミスが何か所もあるし 本当に昨日始めましたレベルだからなあ、 かなり無謀なことやってる気がするぞ。
文字列を受け取るんじゃなく、計算値を受け取るようにした方がみんな幸せになれるんじゃないかなぁ。
あと32bitと64bitが問題になりそう
それこそC++/CLIの出番じゃね?スレチだけど。
漠然とした質問ですが、誰かヒントください。 C#でアプリを開発中ですが、いつの間にか文字入力部分(TextBoxやsaveFileDialogなど)で日本語が 入力できなくなりました。 IME(MS-IME2002)のバーを見ると、「入力方式」「入力モード」「変換モード」「IMEパッド」「ツール」がすべて固定 され、変更できません。入力モードは「_A」と表示されます。 開発用PCのOS:WindowsXP、IDE:VisualStudio2010 別のPC(Windows7、MS-IMEはOS標準)でも同じ症状です。 フォームやコントロールのプロパティでImeModeは、すべてNoControlでした。 よろしくお願いします。
できた。 C++側 __declspec(dllexport) int __stdcall test2(char *p) { lstrcpy(p, "てすと"); return 0; } c#側 [DllImport("csharp.dll")] extern static int test2(System.Text.StringBuilder a); static void Main(string[] args) { StringBuilder buff = new StringBuilder(256); test2(buff); Console.WriteLine(buff); }
こええ、、、
740 :
デフォルトの名無しさん :2011/09/07(水) 18:09:38.15
もうちょい勉強したほうがいいぞ そういうのはバグの温床になる
うごけばいいよ。
742 :
デフォルトの名無しさん :2011/09/07(水) 18:12:58.00
C#だけだとそれでいいがw
結果を受け取る側のサイズを引数に渡してそれ以上書き込まないようにするのがセオリー バッファオーバーランするよ
それは当たり前すぎて省いただけだよ
バッファオーバランもそうだがcharならマーシャリングの指定しないと文字化けしない?
規定値はAnsiだから
そのマーシャリングというのはなんだね?
欧州復興計画のことだよ
msdnライブラリ見ようと思ったんだが The specified CGI application encountered an error and the server terminated the process. と表示され見れないんだが なぜ?
具体的にどのページがだよ
yahoo検索→msdn→msdnライブラリ→エラー
起きない 何度か試してみろ
おおおおおおお!出た!ありがとう!!! Internet Explorer, Opera Firefoxだと出た Lunascapeだとやっぱり出ない Lunascapeメインで使ってるけど今日はFirefoxでいくよ ありがとう!君は命の恩人だ!
情強はSleipnirを使う
そこでSleipnirの登場というわけだ
あーみんな見れなかったのか 俺もChromeで無理だった
Cookieと一時ファイル削除で見れるようになった。ありがとう
\ 毛 / 腿 \_ | _/ 彡彡彡 ミミミミ クリトリス ミミミミ / ̄ ̄ ̄ ̄ ノ σ ヽ 尿道 / / ゚ヽ ̄ ̄ ̄ ̄ どういたしまして。 大陰唇 / //\\ \  ̄ ̄ ̄ ̄ ( ( 膣 ) ── 小陰唇 \ \\// / ` \/ ' \ *──アナル \_____/\_____/
幼稚くさ。 中学生か
雄臭さが足りない
勉強できるサイト教えて 画像認識やキーボード、マウス操作のマクロツール作りたいです
IPHostEntry iph = System.Net.Dns.GetHostEntry(127.0.0.1); すると、iph.AddressList[]にはIPv6のアドレスとIPv4のアドレスが混じって入ってるんですが、 常に[0]にIPv4のアドレスを返してくれるようにはならないよね・・・ もしくは何番がIPv4かわかれば良いんだけど、 ToString()して一個一個文字列の長さ調べるしか無い? もしくはピリオドの数数えるか スマートな方法教えてください
AddressFamily プロパティ見れ
試しにプログラムを起動するプログラムを作るのに成功しました。 このプログラムをアクティブウィンドウにするプログラムを作るたいです。 「HWND SetActiveWindow(HWND hWnd);」を使用するみたいですが、 エラーが出ます。↓これのどこの部分にどういうふうに入れればいいでしょうか? using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication15 { class Program { static void Main(string[] args) { // 規定のエディタで Bitmap ファイルを開く (関連付け起動) System.Diagnostics.Process.Start(@"C:\○○○\○○○\○○○.exe"); } } }
全然わからん
[System.Runtime.InteropServices.DllImport("user32.dll")] static extern IntPtr SetActiveWindow(IntPtr hWnd); SetActiveWindowの定義欲しいなら↑みたいな感じでclass内に入れる。 あるwin32apiの定義知りたい時は 「定義が欲しいAPI pinvoke」でググるといいよ
C#の用語を正確に知ってるわけじゃないが、 そういうのはC#の世界でも恐らく定義ではなく宣言と言うんじゃないのか
多分その通りです。定義はおかしいですね
うん、それを定義と言う人は見たことない。 extern が付いてるものは「外部定義」とはいう。 外で定義したものを、extern 宣言でインポートする。
>>769 「エントリポイントに適切な静的メソッドが含まれていません」と出るのですが、
どうすれば直せるのでしょうか?
タブブラウザなんかではURL渡して起動させた時、 既に起動していた場合そちら側で開いてくれますが、 どうやってやってるんでしょうか?
>>773 static void Main()が無いってことでしょ
>>775 ↓これでもさっきと同じエラーが出ます。どこが間違っているのでしょうか?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication15
{
class Program
{
static void Main();
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern IntPtr SetActiveWindow(IntPtr hWnd);
static void Main(string[] args)
{
// 規定のエディタで Bitmap ファイルを開く (関連付け起動)
System.Diagnostics.Process.Start(@"C:\Nexon\MapleStory\MapleStory.exe");
}
CWnd* SetActiveWindow( );
}
}
どこから突っ込んでいいのか・・・
(ノд`)アチャー
もっと先に覚える部分がある クラスの宣言の仕方とか
適当すぐるw
C#初めたてだった頃の俺でもさすがにこれはなかったわ
>>776 まず文法について勉強したほうがいい
やりたいことのレベルとやれるレベルが違いすぎる
782 :
776 :2011/09/10(土) 12:31:48.17
ではもっと勉強してみますね。文法とかを・・・。
>>774 既に起動しているプロセスにURL渡して終了
DDEコマンドだっけ、あれって一般的なの?
byte[]の一部をstringにする方法は? まず、byte[]の一部切り出し方法がよくわからない
Encoding.UTF8.GetString(byteArray.Skip(x).Take(y).ToArray())
いちいち切り出さなくてもGetStringにindex/count渡せる
thxできた
引数チェックをしてArgumentException等をthrowする処理は、全てのメソッドで書くべきなのでしょうか? それとも、クラスライブラリで外部に公開するものだけでいいのですか?
>>789 詳細な例外情報が必要かどうかは、コード書いてるあなた以外に判断できないのでは?
まあ、個人的には極力そのようにしてるが、それは例外の情報を通知する必要があるからというより、
そのコードを書いている時に、ちゃんと不適切な引数が渡されることを
想定して書いていることを表示するため。
本音を言えば、ぶっちゃけ例外情報が欲しいことなんてあんまりない。
>>789 引数チェックの類の例外はテスト時に全部取るはずなので、
それが社内向けのメソッドだったら適当でOK。
社外向けでも、まあ、ArgumentException出てれば何のことか割と分かる気はする。
CodeContracts がもうちょっと使い勝手良ければねぇ
(静的解析ツールも Express 版でも標準搭載とか)。
そもそも引数チェックして例外投げるとか不要になるのに。
例外情報がどうとかより、例外を投げるべきかどうかって話じゃないのか? まあ設計次第なんで必要なら例外発生させろとしか言えないわけだが
>>792 引数の値が不適切なのに例外を投げないのはただのバグでしょ。
それは論外。
引数の値が不正なのがバグでしょう。おれは余分なチェックなんかしないよ。
不適切の定義による なるべく例外出さないで、不適切な値なら無視して処理を続ける設計とか 不適切な値なら正常でない値(-1とかNULLとか)を返す設計ってのある まあ処理が続行されているのでそれは適切な引数だっていうなら その場合は不適切な引数はないって話になるんだろうが
雨が降ると困るので屋根のうえに屋根を作る設計のように思える。
メソッドへの引数にrefかoutをつけると、参照渡しできるようですが、 この参照をメソッドが終了した後も、フィールド変数で覚えておくことはできますか? 以下はコンパイルできませんが、こんな感じで… class Hoge { private ref int a; // コンパイルエラー public Hoge(ref int a) { this.a = a; } public void Foo() { a = 0; } } int a = 1; Hoge h = new Hoge(ref a); // a == 1 h.Foo(); // a == 0
798 :
デフォルトの名無しさん :2011/09/11(日) 02:42:41.25
とあるクラスで共通のint変数を参照したりしたいの?
public Vector3D[] Pos = new Vector3D[3]; 実行結果↓ Pos[0]=null Pos[1]=null Pos[2]=null newしたVector3Dが入ってない
801 :
デフォルトの名無しさん :2011/09/11(日) 04:14:13.70
3個ちゃんと確保されてるじゃん いろいろ勘違いしてる
802 :
デフォルトの名無しさん :2011/09/11(日) 04:26:43.75
WPFかよ WinFormとWPFとSilverlightで微妙に差があるので ターゲットを書いてくれ で、こう書くといい public Vector3D[] Pos = new Vector3D[] { new Vector3D(), new Vector3D(), new Vector3D() };
WPFのVector3Dなら値型だから、また違うVector3Dだな
804 :
デフォルトの名無しさん :2011/09/11(日) 08:32:47.25
XNAはVector3でこっちもstructだし というかstructじゃないの?
>>800 C++からくるとやっちゃうよね。
javaから入ったらこれが普通とわかるけど。
コンストラクタがまだ走ってないってことか...
newしてね〜だろ
値型でもないかぎり、配列はほんとに入れ物だけなので それぞれnewが必要
フォームのGUIコントロールそれぞれについて具体的に解りやすく網羅されてる書籍かurl知らない? ラベルとボタンとテキストボックスから、そろそろ脱初心者してみたい
dobon.net
>>809 本は和書では恐らくないね。
今は亡きWindows Developer マガジンの連載でそういうのがあったけど、
時代的に.NET 1.xのものしかフォローしてない。
値型が使える言語で3次元ベクトルを参照型にしてるライブラリなんて見たことないわ
ポジションとか角度とか参照型にすると楽しいよ。 変更が即反映されるから、関節扱ったりするときは結構面白い。 まー、C#だったら値型をラップするクラス書けばいいんだけどね。
そんなの参照型でベクトルや点を表していたとしても 防御的コピーするのが普通
クラスの外にフィールドで持ってるVector3D(参照型)の参照をそのまま晒すとか パブリックフィールドと一緒だぞ 後で実装変えられなくなる
816 :
813 :2011/09/11(日) 23:45:45.67
>>815 俺は個人開発だから視点がおかしいのかもしれんけど、プロパティ書いたらあんま変わらんきがする。
設定時と取得時にコピーするのが重要なんだよ コピーして返すなら、実装変えてもその瞬間だけ辻褄合わせすれば済むことだが 直接参照を漏らしてしまうと常に内部の細かい状態が晒されてしまう
Javaでの失敗を思い出せ
819 :
813 :2011/09/11(日) 23:57:51.39
>>817 なるほどね。うーむ。
大きなオブジェクトを参照でだしちゃうとたしかに色々マズそうだ。
むしろ小さい値オブジェクトの方が問題だろ コピーしなくても、その外に出してるオブジェクトのクラスを弄ったり 多態使ったりすることで実装を変更することは可能だけど ベクトルとか色とかいう普遍的なものは基本的に実装を変えないからな
821 :
813 :2011/09/12(月) 01:25:26.65
>>820 なるほど、次のプロジェクトやるときにはそういうことも考慮してみたいと思います。
822 :
デフォルトの名無しさん :2011/09/13(火) 17:43:57.04
>>817 んなことあるかよ。
コピーやってりゃそのまま実行速度が犠牲になる。
まともなコンパイラなら、実行速度を犠牲にしないために、
レジスタ渡しにするためには、関数引数に記述できる型と個数をちゃーんと明示してることを知ってるのかお前
悠長なプログラムのんべんたらりと組んで戯言ほざくな。
はいはい100倍100倍
難しくてよくわからんけど、APIとかラッパーの話なの? それなら参照で外に出すのはイケテナイと思うが それ以外ならどっちでもいいような気がする
そりゃパブリックフィールドにも言えることだ 実装をさらけ出す(他のクラスが実装の詳細に依存してしまう)という点では特に違いはない 広く使われるわけじゃないならどうでもいいというのは必ずしも間違いではないが パブリックフィールドを必死に嫌っておいて値オブジェクトの参照漏らすのは気にしないのは変
いや俺はヒップホッパー じゃなくて、例えばWindows Formでいったら、 Form.Location.X += 10; みたいなことはできないわけだけれども、こういうのを許容していいかどうかって話でしょ。 個人的にはケースバイケース。 絶対許容できないのは、プロパティーが単なるフィールドの設定/取得以外の 処理を含む場合。
>>827 将来的に>プロパティーが単なるフィールドの設定/取得以外の処理
を含むかもしれないからパブリックフィールドじゃなくてプロパティにするんだろ?
実装変えないと断言できるならやっぱりパブリックフィールドと同じでしょ
829 :
825 :2011/09/13(火) 22:04:25.11
ごめん、やっぱ何にこだわってるのかわからん 将来的に実装変えることとパブリックフィールドかプロパティ どちらを選択するかは緊密な関係にあるのか?
830 :
デフォルトの名無しさん :2011/09/13(火) 22:34:59.07
>>828 将来的ってのだけが問題なら、その将来にプロバティーに変更したら良いだけでは?
いや確かにプロバティーにすれば、セッターをプライベートに出来たりして嬉しいと言えば嬉しいが
>>827 のタイプは後になってコピーして返すようには変更できないよ
既存のコードが動かなくなる
Xが変更されたときになんか処理を入れるのも無理だし
buildのKeynoteは中継ないの?
833 :
初心者 ◆jPpg5.obl6 :2011/09/13(火) 22:53:35.62
CでUSBポートを遮断するプログラムを作りたいのですが、どう書けばいいでしょうか?
ワタシ日本語初心者アルよ、まで読んだ。
C#スレ的に考えるなら CでUSBポートを遮断するDLLを作成して、C#からDllImportすればいいよ
SetupDiAPIで無効にすれば
C使わなくても、爪楊枝を挿して、折る!!。もう誰にもUSBポートは使わせない!
838 :
初心者 ◆jPpg5.obl6 :2011/09/14(水) 01:48:22.30
>835 >836 やってみます。 >837 そうじゃねーよwww
WPFでのSystem.Windows.WindowクラスのTopmostプロパティについて教えて下さい。 Topmostにチェックを入れると最前面になりますが、Topmost同士、または.Netではない 最前面ウィンドウに対して、それらより前面に表示するにはどのようにすればよいのでしょ うか。
using System.Printingってどうなったんでしょうか?
現在TableLayoutPanel→GroupBox→TableLayoutPanel→コントロール ってかんじにしてます 見た目は綺麗なんですがオブジェクトが多いのが気になる すっきりさせるならGroupBoxやコントロールの位置を直接指定する方がいいのでしょうか C#でレイアウトをする上手な方法があれば教えていただきたいです あとForm.Shownでサーバーからテキストをうけとるようにしているんですが レスポンス待ちの間LabelやGroupBoxのテキスト部分が真っ白になります 対策はありますでしょうか
DockとAnchorで妥協する TableLayoutPanelが好きならWPFに行くことをお勧めする BackgroundWorkerでも使えば
>>839 最前面の最前面があったとしたら、
最前面の最前面ウィンドウを他の最前面の最前面ウィンドウより前面に表示するには
ということになって果てしなく不毛
>>840 質問の意図が分からない
844 :
デフォルトの名無しさん :2011/09/14(水) 19:18:18.74
>835 今思えばCでUSBポートを遮断するDLLを作成するスキルを持っていませんでした。
C#でORMはみなさん何を使っていますか? DI&AOPも含めてSeasar系がいいかな、と思ったのですが、 更新もあまりされてないようで、死にプロダクトなのかなぁと。 Javaと違ってあまりそういう需要がないのでしょうか。 そのままゴリゴリ書くのも面倒だし管理もし辛いので避けたいのですが・・・。 何かおすすめだったり、主流っぽいものとかあります?
マイクロソフト謹製のやつがなかったっけ?
EntityFrameworkとかあるべや 需要が無いというのもある意味正しい
MEFもそうなんですけど、サンプルがあまりに少ないかなぁと。 日本語情報はほとんどなさそうですし。 EntityFrameworkはSQL Serverべったりじゃなかったでしたっけ。 SQL Server以外でも使いたいのです、って完全に後付情報でしたね、すみません。 DB周りがあまりに熟れてないように見えたので、みなさんがどうやってるのか気になりました。
O/Rマッパーなんて使ったことないな ASP.NET MVC には実装されてるんだっけ? そんなの意識するくらいなら Rails とか Django で開発した方が良くね?
まあ仕事の話だけど .NETだと必然的にIISになって必然的にSQLServerになるからべったりでも誰も困らないんよ 結局の所どこのプロダクトだって、成長しているところは商用利用と少なからず繋がりがある
>>841 >あとForm.Shownでサーバーからテキストをうけとるようにしているんですが
>レスポンス待ちの間LabelやGroupBoxのテキスト部分が真っ白になります
メインスレッドで通信をしてはいけない。いいか、絶対にだぞ。
BackgroundWorkerでも使えば
ASP.NET MVC ってStrutsみたいなもの?
そこでStrutsを挙げるのがマイノリティ
854 :
841 :2011/09/14(水) 23:17:24.00
回答ありがとうございました。 メインスレッドで通信してはいけないとのことですが レスポンスが条件に合うまでTimerで通信しつづけるプログラムを書いたのですが こういうのも別スレッドにうつしたほうが良さそうですね・・・ C#とはあまり関係なくなりますがクライアントからリモートサーバーのMySQLを使用する場合 ・サーバーにアプリケーションをおいてそれを介する ・クライアントから直接発行する クライアントアプリケーションを配布する場合、この両者でライセンスはどうなるのでしょうか。 また、サーバーアプリケーションにどのような通信方法が良いでしょうか。 http以外の通信は使ったことないので上記の通りphpで作っている状態です。 C#からずれてますがお答えいただけるとありがたいです。
>>849 Ruby?Python?何言ってんだお前?と言われる世界もあるわけで・・・。
理想型はその手軽さを取り入れたいなとは感じています。
DB周りも楽勝だぜ!とか言われて見てみるとVBチックに一メソッドにもりもり書いて、
SQLもAppendAppendでGetString(0)だぜ!とか、もうゲンナリ・・・。
>>850 .NETだけどOracle一択です。
ASP.NET MVCは今主流のいわゆるWeb MVCかな、って感じですかね。
856 :
デフォルトの名無しさん :2011/09/14(水) 23:46:27.94
HTMLの文字列をファイルに保存して、同じ内容のHTMLの文字列をサイトから取得して 比較しても同じものと判断してくれません。
嵌っちゃってる所はOracleから二度と抜け出せないよなw
858 :
デフォルトの名無しさん :2011/09/14(水) 23:50:43.94
>>856 文字コードが違うんじゃないの?
というかどういう比較コードなのかもさっぱりわからんし
859 :
デフォルトの名無しさん :2011/09/15(木) 00:12:46.15
WPFですが、C#の話だと思いますのでこちらで質問します。
Win32 API である GetPwrCapabilities を P/Invoke して
ビルドすると、環境によって StackOverflowException が投げられます。
<ソリューション>
・WPF, C#, .Net3.5
・AnyCPU
<ビルドマシン環境>
・環境1: Win7 HP 32bit
・環境2: Win7 HP 64bit
環境1にてDebugビルド → 3/5程度の確率で StackOverflowException
環境1にてReleaseビルド → 問題なし
環境2にてDebugビルド → 問題なし
環境2にてReleaseビルド → 問題なし
GetPwrCapabilities() を実行する箇所を
try-catch で囲っても例外を catch できず VisualStudio の
例外表示が表示されます。
また、上記に書いてあるように、環境1のDebugビルドであれば
100% 例外が発生するわけではありません。
現象が再現するものをアップロードしましたので
見ていただけないでしょうか?よろしくお願いします。
ttp://www.dotup.org/uploda/www.dotup.org2022578.zip.html PASS: sage
860 :
859 :2011/09/15(木) 00:13:51.98
すみません、開発環境は VisualStudio2010 です。
>>843 .net Framework2.0でサポートしてるものらしいのですが
コンパイルしようとするとSystem.Printingがないよっておこられてしまいます。
VS2005なので2.0はサポートしてると思うのですが違うのでしょうか?
サポートしてない System.PrintingはWPFの一部なので.NET3.0から MSDNにはなぜかWPF関係のページが.NET2.0のにもあるけど
863 :
デフォルトの名無しさん :2011/09/15(木) 01:02:15.55
>>859 よくわからんけどスタックサイズの問題では?
64bit Debugだとたまたま起きてないだけだったりとか
GetPwrCapabilitiesで使う構造体も割りと大きめだし
864 :
デフォルトの名無しさん :2011/09/15(木) 01:02:45.11
865 :
デフォルトの名無しさん :2011/09/15(木) 02:02:50.72
アプリケーションで使うデータを DataContractSerializer を使ってシリアライズしようと思っています。 ・ファイルを開いてみるまでどのバージョン用のデータファイルかわからない。 ・バージョンアップにともなって、項目が追加されたり削除されたりする場合がある。 という条件に対応した実装例を紹介しているページがあれば教えてください。
866 :
デフォルトの名無しさん :2011/09/15(木) 03:48:19.25
チャートコントロールについて詳しく解説しているサイトってどこかにあるでしょうか 株価チャート(Cnadlestick)を作りたいのですが中々いい情報が得られません 海外のサイトでもOKなのでいい所あったら教えてください
>>862 ぎゃああああ
マジすか・・・
別の方法考えないと・・・
ありがとうございました
>>850 EntityFrameworkはSQLServerべったりではないよ。
べったりなのはLINQ to SQLで、
EFはべったりじゃない中間層を設けることでうんたらかんたら、というのも売り文句ですから。
.NETだと今のところEFが気合入れて開発続いているので、他の選択肢はないなあ。
870 :
デフォルトの名無しさん :2011/09/15(木) 14:09:46.91
>>869 ありがとうございます
色々探してもなかなかいいのが見つからなかったのでとりあえず
ChartSamplesのコードとリファレンスを照らし合わせて勉強してます
お?と思ったけど >ソニーの審査とライセンス契約が必要 この一文でもはやどうでもいい ゴミ箱にポイだ
VitaがVistaの誤植に見えてつらい
875 :
デフォルトの名無しさん :2011/09/15(木) 17:30:17.89
赤間本に代わるいい勉強用の本ってあるかな? 昔「.NETエンタープライズWebアプリケーション開発技術大全」を使ってWebサイトの作り方を学んだんだけど、またWebサイトを作る仕事になったので復習したいんだよね。 「開発大全」はもう7年くらい前の本みたいだから、できれば新しい本で復習したいんだけど、他にいいのってある?
ASP.NET MVCがいいよ
877 :
デフォルトの名無しさん :2011/09/15(木) 18:49:53.56
C# .NET3.5で書いています。 [HKLM\SOFTWARE\HOGE]の下に [ITEM1] [ITEM2] [ITEM3] があるとします。実際は30個あります。 各ITEMは同じレジストリ値の項目を持っています。 例えば、それぞれ IsActive (REG_DWORD) を持っており、データは個別に設定されています。 この時に、 foreach (RegistryKey key in RegKyes) { int value = (int)key.getValue("IsActive"); // value を使った処理 } といったことが出来るとコードがすっきりするのですが HKLM と @"SOFTWARE\HOGE" を指定するだけで 上記の RegKeys を取得する方法はありますでしょうか?
878 :
877 :2011/09/15(木) 18:54:25.66
後出しすみません。 ITEM1〜30の存在は可変で、 その名前も既知のものだけではない 可能性があります。 このため、ITEMの名前をListに持っていて〜 というのは難しいです。
LINQでGetSubKeyNamesをOpenSubKeyに渡せばできそうだが Disposeの問題があるから勧めない そもそもお前さんDisposeしてなさそうだけど
880 :
877 :2011/09/15(木) 19:00:32.80
>>879 情報としていただきます。
あがとうございます。
最後の文ですが、.Close()では不十分ですか?
メモ RegistryKey への参照をすべて解放してしまう前に、必ず Dispose を呼び出してください。
882 :
877 :2011/09/15(木) 19:29:32.14
>>881 それは.Net4のみの話だと思います。
お前がそう思うんならそうなんだろう、お前ん中ではな
884 :
877 :2011/09/15(木) 21:39:58.07
>>883 ご教授いただけるのは助かりますが、
MSDNを見る限り.Net3.5までは自動でDisposeは呼ばれます。
3.5ではCloseとIDisposable.Disposeは等価と書いてあるんで、Closeだけでも可 Close=DisposeってのはRegistryKeyに限らないお約束 ただ例外とか考えると、通常はusingを付ける方が望ましい 自動でDispose云々は論外 デストラクタからDisposeを呼ぶのも標準的な実装だけど、これは「最悪アプリケーションを落とせばリソースは解放される」って程度の意味しかない だから使い終わったら明示的にDisposeしないとダメ 4.0でDisposeが追加された理由は知らんが、MSDNを見るとCloseとは動作が違うように見える
886 :
デフォルトの名無しさん :2011/09/15(木) 22:34:54.72
static void Main(string[] args)
{
string html = GetHTML();
string html2 = GetHTML();
if (html == html2) Console.WriteLine("等しい");
else Console.WriteLine("等しくない");
Console.ReadLine();
}
static string GetHTML()
{
WebClient wc = new WebClient();
Stream st = wc.OpenRead("
http://www.google.co.jp/ ");
StreamReader sr = new StreamReader(st,Encoding.GetEncoding("Shift_JIS"));
string html = sr.ReadToEnd();
sr.Close();
st.Close();
return html;
}
---------------------------------------------------------------------
このメソッドから取得したHTMLのソースを二つの変数に代入して比較しても
等しくないとでるのですが。
そりゃ等しくないんだろ。 比較ツールがあるから、それぞれを比較してみればいい(手動ではやるなよ) で、まあ見てみたけど window.google={kEI:"CgByTpeMKajkmAWzlLj2Dg", と、もう一箇所がリクエスト毎に違う値になるから、絶対等しくならないんだろうね。
htmlとhtml2をファイルに保存してwinmergeしてみよう
889 :
デフォルトの名無しさん :2011/09/15(木) 23:08:30.30
Visual Studio 2010 C#で初めて印刷にチャレンジしました。
.NET Frameworkは3.5で作ってます。
2010からはクリスタルレポートが別ということで
ttp://www.businessobjects.com/jump/xi/crvs2010/us2_default.aspから SAP Crystal Reports, version for Visual Studio 2010 - Standardをインストールしました。
四苦八苦しながらようやく簡単な印刷が完成したんです。
データはWindows Server 2008 R2 の SQL Server 2008 R2見にいってます。
これを別マシンで動かそうとしてるんですがうまくいきません。
.NET Framework 3.5をインストールして、上のページからSAP Crystal Reports runtime engine for .NET Framework 4 (32-bit)
をインストールし、開発マシンからEXEをコピーして動かしてますが、なぜかデータベースログオン画面が出るんです。
・サーバー名(設定した表示あり)
・データベース(設定した表示がなく空白!!! しかもグレーで入力不可)
・ログインID(設定した表示あり)
・パスワード(設定した表示あり)
ちゃんとプログラムで、myReport.SetDatabaseLogon("User","Pass","ServerName","DatabaseName"); と入れてます。
これ入れないと同じように開発マシンでもデータベースログオン画面が出てました。
開発マシンだとログオン画面なんて出ずに動くのに、そうでないマシンだとログオン画面が出て、しかもデータベース名は
入力すら出来ないのでSQL Serverにログオンできなくて当然レポート出ません。
原因分かる人いるでしょうか?
帳票ごときにツール使うなよJK
えっw
俺はActiveReport派だな めんどくさい帳票サクサク作れるし 自分で線書いてとか時間的コストがかかりすぎるのでいやだ。
893 :
デフォルトの名無しさん :2011/09/16(金) 12:08:51.11
>>876 「ASP.NET MVC実践プログラミング―.NET Frameworkによる標準Web開発技法」でいいのかな?
894 :
889 :2011/09/16(金) 12:50:07.56
回答ないのでとりあえず終了にします。
終了ってどっからきたんだよw
既存のコントロールクラスを継承して機能を付加するってのがやりたいんですけど、その機能を付加したコントロールクラスを どうやったらツールボックス内に表示させることができるんですか?
それ俺も知りたい
>>896 ビルドしたら表示されない?
ところで
ServicePointManager.Expect100Continue = false;を入れても (417) Expectation Failedが帰ってくるんだけどなぜだ
417って100Continueがtrueだってことだよな?
相手サーバが常にこちらの想定通りに動くとは限らない まあとりあえず実際に送ってるリクエストの中身全部見直してみて 異常ないようならサーバ側に問い合わせんと解らんのじゃないかな
900 :
896 :2011/09/16(金) 21:17:43.00
>>898 返信ありがとうございます。
今自分のやり方としてわかるのは、派生クラス作ってForm1クラスでインスタンス化してやってます
デザイナーで左のツールボックスに追加されるようにはならないんでしょうか?
そんなことしないといけないなら追加できなくていいやw
>>902 新規クラスに例えば
class MyTextBox : System.Windows.Forms.TextBox { }
って書いて、ビルドしたらツールボックスの一番上に出てこない?
そのクラスが同じプロジェクトじゃなくてdllなら、ツールボック上で右クリック->アイテムの選択でそのdllを選べば出てくる。
>843 用事があり確認が遅れました。 最前面の保証は中々難しいものなのですね。 IMEの変換窓のようにできるのではないかと考えていたのですが、考えなおしてみます。 有難うございました。
webclientでfc2ブログのソースを取得したいのですが、 ・DownloadFileをすると文字化けでどのキャラクターセットにしてもダメ ・DownloadDataやStringでも取得できない(というか文字化けのせいか最初の2文字くらいしか認識できない) これはどうすればいいのでしょうか? WebBrowserを使ってソースを取得する方法もためしたのですが、フレーム等があるとCompleteイベントが複数回(不規則)発生するためどのタイミングでソースを取得すればいいのかわからないので出来れば避けたいです。
ブラウザで開いてエンコーディング確認してみろよ
907 :
デフォルトの名無しさん :2011/09/17(土) 19:52:15.13
>>905 >・DownloadFileをすると文字化けでどのキャラクターセットにしてもダメ
>・DownloadDataやStringでも取得できない(というか文字化けのせいか
>最初の2文字くらいしか認識できない)
適当にセットすればいいものじゃねえ
htmlの先頭あたりに文字セットを書いてあるだろ
>WebBrowserを使ってソースを取得する方法もためしたのですが、
>フレーム等があるとCompleteイベントが複数回(不規則)発生する
>ためどのタイミングでソースを取得すればいいのかわからないので出来れば避けたいです。
CompleteってDocumentCompletedでいいんだよね?
そりゃホームページを構成するhtmlやjsなど一つ一つがDocument扱いになるので
構成ドキュメント数回発生する
ページの取得とレンダリングが完了したタイミングを知りたい場合は
Navigatedイベント
ちなみにWinFormだよね?
new WebClient() { Encoding = Encoding.UTF8 }.DownloadString(url) で普通に取れたね。
>>906-907 ブログの最初の方に
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
とあったのでeuc-jpにしてみましたけどダメでした
-----
System.Net.WebClient wc = new System.Net.WebClient();
byte[] b = wc.DownloadData("
http://zipdeyaruo.blog42.fc2.com/ ");
System.Text.Encoding Enc = Encoding.GetEncoding("euc-jp");
string str = Enc.GetString(b);
textBox1.Text = str;
MessageBox.Show("ok");
-----
さっき試しにNavigatedイベントでやってみたのですが、やはり複数回発生してしまいます
WindowsFormsApplicationです
910 :
デフォルトの名無しさん :2011/09/17(土) 21:24:34.08
912 :
デフォルトの名無しさん :2011/09/17(土) 21:56:25.12
ウイルス対策ソフトによってはhttp通信も監視してて 変なサイトは遮断するからなあ・・・ そういうのを食らってない? ちなみにwin7 64bit Enter + VC# 2010 express で問題なく取れたよ
あ、fc2ならどれも一緒と思ってたけどブログによってエンコーディング違うのか。
908のはやらおん(UTF-8だった)で試して大丈夫だったのだけど。
で、確かにWebClientだと取れないっぽい?
WebRequestでやったら取れたので、分からないけど何かWebClientが悪さしてるのかも。
var req = WebRequest.Create("
http://zipdeyaruo.blog42.fc2.com/ ");
var str = new StreamReader(req.GetResponse().GetResponseStream(), Encoding.GetEncoding("euc-jp")).ReadToEnd();
>>912 もろ喰らってました・・・
セキュリティソフト切ったらばっちり取れました
お騒がせしてすいませんでした
ありがとうございます
915 :
デフォルトの名無しさん :2011/09/17(土) 22:02:30.67
916 :
デフォルトの名無しさん :2011/09/17(土) 23:12:15.74
しかしこれはなんなんだろうな・・・ ウイルス対策ソフトに例外として教えると正常にデータを取れるが 例外指定しない場合は一応それなりのデータの長さがあるんだが 文字化けしまくってて元のデータの形してない・・・
917 :
デフォルトの名無しさん :2011/09/17(土) 23:13:38.72
918 :
デフォルトの名無しさん :2011/09/18(日) 13:01:10.91
NTidyを使ってHTMLを解析してbody部だけ取り出そうとしています。 TidyDocument doc = new TidyDocument(); doc.SetCharEncoding("shiftjis"); status = doc.LoadFile(fname); status = doc.CleanAndRepair(); ここまではわかるのですが、この後のbody部のタグを含めた文字の取得方法 がわかりません。
NTidyみたいな馬鹿なライブラリ使うのを止める
多分なぜバカなライブラリなのか説明してあげないとダメだと思う
921 :
デフォルトの名無しさん :2011/09/18(日) 20:34:24.96
>>919-
>>920 じゃあよいライブラリとは?
TidyNodeとかいう汎用性の無いクラスで返すから HtmlAgilityPackも以下同文 一時期独自規格路線でつっ走ったウンコソニーみたいなもんだ
いろんな所にやさしいものを使わないとね
なんだかんだでスクレイピングは普通に正規表現を使うのが一番安定してていい
正規表現は、ないな。少し複雑なことをやろうとするだけで破綻する。
926 :
デフォルトの名無しさん :2011/09/18(日) 21:57:43.63
普通に考えてWebBrowserだろ
>>925 俺は問題なくできてんだけど、どんなやり方したら破綻するの?
HAPとかは行儀の悪いHtmlで解析に失敗するから使えないんだよな
WebBrowserは使うこともあるよ。でも遅い
と、いうコトを学ぶにはどういう風に勉強すればいいのでしょうかね?
929 :
デフォルトの名無しさん :2011/09/18(日) 23:23:09.53
トライアンドエラー しつつもたまにこのスレで聞いたりと 自分だけで篭ってぐぐってても探しきれない場合もあるし かといって他人に聞くだけだと半分くらい身に付けばいいくらいだろうし
931 :
デフォルトの名無しさん :2011/09/18(日) 23:28:26.68
でもさ そうやって積み重ねた物をノウハウっていうんだし 実際プログラムにおいてもライブラリの癖があったりするし 言語だって下手に書くと遅かったりするしでね・・・
バッドノウハウじゃないの 制御なりデータマイニングなり、他に積み重ねる知識なんていくらでもあるだろ
933 :
74 :2011/09/19(月) 02:32:14.48
SGMLReaderでXMLに変換してLINQなりXPathなりで処理すればいいんじゃないの
toostrip上のtoolstripbuttonの大きさを toolstripbutton1: 30% toolstripbutton2: 70% パーセントで指定したいのだがどうすればおk?
コピペ王に、俺はなる!まで読んだ。
質問なんですが、TabControlのイベントでタブの順番を変えるものとタブをオーナードローするとタブが2個だけの時、例外が吐かれます
ソースは以下なんですが、どこが悪いか全然わかりません。まずDrawItemイベントがいつ起きてるんですか?
MouseUpの後に起きてるんですか?
後オーナードローについて、詳しく解説してるサイトがあったら教えて下さい
http://ideone.com/YXy6M
938 :
デフォルトの名無しさん :2011/09/20(火) 00:27:45.01
>>937 Win7 64でVS2010だが再現せず
判らんけど、オーナードローの処理をlockで囲ってみたらどう?
>>935 あれ、俺C#できるからSDK使えるってことか
940 :
937 :2011/09/20(火) 00:46:47.38
>>938 すいません、一部を書き忘れてました
タブが2個だけの場合、TabPage1を選択してTabPage2のほうにドラッグして
こうなってる状態で→TabPage2|TabPage1
TabPage1をドラッグして左に動かそうとするとエラーが起きるんです
図にするとこういう感じに→TabPage1|TabPage2
ArgumentOuntOfRangeException例外を吐くんです
941 :
938 :2011/09/20(火) 00:50:59.61
ごめんやっぱ出たわw
大容量の動画ファイル(2G以上)を扱いたい場合、どのフォーマットが扱い易いのでしょうか? 現在はAVIを使用しているのですが、2Gの壁に阻まれています。
944 :
デフォルトの名無しさん :2011/09/20(火) 11:15:12.61
どういう風に扱いたいのかさっぱりわからん 単なるバイナリファイルとして自前で覗くのか 何かのAPIなどに突っ込むとか
言葉足らずですいません。 動画ファイルとして作成した後は、出来ればメディアプレイヤー等でも見えるようにしたいです。 パワーポイントで参照出来るのが理想です。 コーデックの追加等が必要になるかもしれませんが。
946 :
デフォルトの名無しさん :2011/09/20(火) 11:40:10.42
それでもわからんww
avi2
949 :
デフォルトの名無しさん :2011/09/20(火) 17:31:22.91
for (int i = 1; i < 10; i++) { pictureBox1.Image = null; } pictureBox1からpictureBox10までをnullにしたいんです。 1の部分をiに置き換えたいのですが、どのように記述すれば良いのでしょうか?
950 :
デフォルトの名無しさん :2011/09/20(火) 17:33:18.94
pictureBox1からpictureBox10までをpictureBox[]という配列で 管理するしかないかも
できた。 PictureBox[] pb = new PictureBox[10]; pb[0] = pictureBox1 pb[1] = pictureBox2 pb[2] = pictureBox3 : for (int i = 1; i < 10; i++) { pb[i].Image = null; }
一応((PictureBox)コンテナ.Controls[string.Format("PictureBox{0}",i)]).Image=null;って感じでもできるよ
953 :
デフォルトの名無しさん :2011/09/20(火) 17:55:37.03
素直に配列にした方がいいなw
954 :
デフォルトの名無しさん :2011/09/20(火) 17:57:39.13
手で配列に入れるのは、同じことを繰り返すなっていう基本に反する悪いやり方
>>955 が一番
957 :
デフォルトの名無しさん :2011/09/20(火) 18:13:18.70
同じ部品をいっぱい並べるならそもそもデザイナーを使わないで 動的にインスタンスも作っちゃうというのも手だけどね
C#でODBC経由でDBからCSV出力するWindowアプリを作ってます(100〜1000万件程度)。 DataReaderを使ってますが、C++で作った同様のアプリより2倍ほど遅い場合があります。 調べてみると、DataReader.Read()が遅いようです(全処理の2/3程度)。 Readを早くする方法などないでしょうか? Frameworkを使う以上、諦めなくちゃいけない所でしょうか。
DataTableに一括で取得すれば?
DBMSは何?ODBCしか選択肢はないの?
961 :
デフォルトの名無しさん :2011/09/21(水) 01:43:28.09
こんばんは、質問があります。 64ビット(NETフレームワーク4)のDLLを 32ビット(NETフレームワーク4)のEXEで呼び出すことは可能でしょうか? DLLの関数などを使うと例外:BadImageFormatExceptionがでてしまいます。
無理 WOW64の仕組みについて勉強した方がいいな
ちなみに64ビットDLLがアイコンなどのリソースだけで実行イメージを含んでない 場合は呼び出しというかロード可能
964 :
デフォルトの名無しさん :2011/09/21(水) 02:01:12.54
>>962 ,963さん
早速の回答ありがとうです。
32ビットOS上でVS2010を使って開発してます。
EXEも32ビットのOSで動かす予定です。
NETフレームワークは64ビットで作成したDLLを
32ビットに変換し実行してくれないのですか?
>>964 あえてx64を選択する理由は何?
それが何もないなら、Any CPUを選択すれば済む問題じゃないの?
そもそもそれが.NETの当初の存在意義の一つだったはずなんだから
>NETフレームワークは64ビットで作成したDLLを ドットなしで使うの初めて見た・・・
フレームワーク4ってのも初めて見た 小数点が無いと別物に見える つか、今から64BitのDLLを使用して開発するなら、64Bit専用で作ったほうが色々良いだろ・・・ 640KBの壁を越えたと思ったら、3GBの壁にぶち当たると思わなかったぜ
foreach (XmlNode node in baseNode.ChildNodes) { string innerXml = node.innerXml; switch (node.Name) { case "created_at": time = innerXml; break; case "text": text = innerXml; break; case "source": source = innerXml; break; .... ってXML解析やるの面倒で冗長なんだけど source = node["source"]みたいにならないですか
おいおい
972 :
964 :2011/09/21(水) 14:30:51.40
納品するEXEは32ビット環境で動かすので ターゲットプラットフォームはX86かAnyCPUのどちらかになります。 DLLは64ビットのものしかありません。 ソースが無いので32ビットで再ビルドすることもできません。 WOW64は64ビットWindowsの環境で32ビットのEXEを動かすシステム ですよね? 今回は32ビットWindowsで動かすのでこれは関係ないのでは?
anyCPUにしてないのならご愁傷様
>DLLは64ビットのものしかありません。 >ソースが無いので32ビットで再ビルドすることもできません。 誰を吊るし上げるか決めた方が速いなw
new byte[N] で確保したbyte配列の中身は 0で初期化されている事が保証されるのでしょうか?
される
>>972 >WOW64は64ビットWindowsの環境で32ビットのEXEを動かすシステム
>ですよね?
>今回は32ビットWindowsで動かすのでこれは関係ないのでは?
32ビットexeは確かにそうだけど、C#の話でしょ?
AnyCPUでビルドしてあればexeは実行時に64bitにJITコンパイルされたのに
937ですが理由がわかりました 95行目のTabControl1.TabPages.Remove(_buffer)の後にDrawItemイベントが起きているみたいで DrawItemイベントが起きた時、描画するTabPageインスタンスがないのでArgumentOutOfRangeException例外を吐くみたいです とここまではわかったんですが、どう回避すればいいのかわからないです 考えただけなのですが一番簡単なのはTabPageのコレクションのインスタンスをコピーしてそれを渡すってやつくらいでしょうか? 誰かご教示お願いします
>>970 書いてるとおりnode["source"]で子要素取れるだろ
.NET3.5以降ならXmlNodeなんて糞は捨ててXElementで(string)node.Element("source")
981 :
デフォルトの名無しさん :2011/09/21(水) 20:54:04.58
982 :
デフォルトの名無しさん :2011/09/21(水) 21:04:23.98
>>979 TabControl1.TabPages.Remove(_buffer);
TabControl1.TabPages.Insert(i, _buffer);
TabControl1.SelectedTab = _buffer;
↓
TabControl1.SuspendLayout();
TabControl1.TabPages.Remove(_buffer);
TabControl1.TabPages.Insert(i, _buffer);
TabControl1.SelectedTab = _buffer;
TabControl1.ResumeLayout();
983 :
デフォルトの名無しさん :2011/09/21(水) 21:06:24.34
あ、すまんだめだ
次スレよろ
program.csにコード書くなって言われたんですが理由はあるんですか?
>>986 フォームだったら、program.csはそういうものっていう固定観念があるんだろう。
俺も、クラス書くときは新しいファイルに起こすしな。
988 :
デフォルトの名無しさん :2011/09/22(木) 17:03:23.96
Program.csやDesigner.csをわかってて触るのはいいけど ほとんどに人にとっては触る必要のないところだしなあ さわることでよからぬトラブルを招くこともあるし
>>986 基本的に1クラス1ファイルでいいんじゃない?
俺は複数のクラスで使うようなものならprogram.csに書く
Designer.csにわけずに同じForm.csに書くようにしてほしいわ
990 :
デフォルトの名無しさん :2011/09/22(木) 17:19:26.07
君は書かないほうがいいw Designer.csはIDEが触る Formを継承したForm1.csなどはユーザーが触ると 分離してあるのにw
991 :
デフォルトの名無しさん :2011/09/22(木) 17:49:37.61
program.csは、メインフォームを立ち上げる前とメインフォームが落ちてからの処理を書くところ 一般的には二重起動をチェックしたり、最初の起動だけはウイザード実行させたい時などに使いますね
初期のVSではMainもデザイナコードもフォームの中に生成されてたな Javaを真似たんだろうがクソ使い辛かった むしろpartialはJavaみたいなGUIビルダが糞で 書いたコードを平気でぶっ壊しやがるような環境でこそ欲しくなる
>>991 俺はグローバルなシングルトンオブジェクトを取得するメソッドなんかも書いちゃう。
あと引数の解析結果とか。
"program"だからね
986です
いろいろ参考になりました
特に
>>991 さんのが
ありがとうございました
996 :
979 :2011/09/22(木) 22:16:05.29
誰か知恵を貸してください・・・
>>982 では無理でした・・・、オーナードローは諦めて誰かが作ってくれたD&D移動を実装したTabControlクラスを使うしかないですか?
997 :
デフォルトの名無しさん :2011/09/22(木) 22:30:56.02
>>996 今思いついたがTabPageのインスタンスを別途同時に
List<TabPage>でもいいので管理してMouseDownの時に
フラグ立てて、オーナードローはそのフラグを見てすっ飛ばすようにするとか
TabPageにもTagがあるのならそこをフラグ置き場にしてもいいけど
998 :
デフォルトの名無しさん :2011/09/22(木) 22:38:37.80
1000
999
1000 :
デフォルトの名無しさん :2011/09/22(木) 23:31:24.94
fds
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。