ふらっとC#,C♯,C#(初心者用) Part68
1 :
デフォルトの名無しさん :
2011/01/13(木) 21:23:13
前スレ
>>998 GCHandleType.PinnedでAllocしてるならGCHandle.AddrOfPinnedObjectとかでポインタ取れるから
Marshal.StructureToPtrなりなんなり
SrringBilderのデメリットってなに? sqlを書く時はStringよりStringBilderだよね
綴りが覚えにくいことじゃねえかな 次にイミュータブルでないこと まぁでもたぶん君には関係ない
>>3 SQLはStringに決まってんだろ。
where条件が可変個で動的にSQL文作るならStringBuilderだが。
6 :
デフォルトの名無しさん :2011/01/13(木) 23:36:11
MikuMikuDanceはC#で作れますか? あんなすげぇの作れたらいいなぁ
7 :
デフォルトの名無しさん :2011/01/13(木) 23:37:57
作れます
あれってニコニコ連中が騒いでるけど何ができてどうすごいのん? 今一歩理解に苦しむ
モーションがつけれる Kinect 対応した 無料 作れる人は作れるかな。
Shadeとかのデータ呼んで動かすかんじかな Kinectで自分の動作で操作でいろいろできたりARしたりか 頑張ってるなぁ
あの手のデバイス自体は10年以上前からあるけど、 それが1万円台の価格で800万台以上売られたって部分が革命的かもしれない。 (※ただし日本での売り上げは800万台中4万台)
実際問題マウスの操作で十分だけど ちょっと作って遊ぶにはいい感じかもね あとは価格と手ごろさから介護とか医療のその辺に応用できたりしそうな感じ 手で触りたくないけどマニュアルページめくったりとか
エロ画像見るときにマウス触るのが面倒。 Kinect は使える
14 :
デフォルトの名無しさん :2011/01/14(金) 00:06:38
PictureBoxに画像を表示する際にアス比を固定にしてストレッチする場合はどうすればいいんだろう・・・
15 :
デフォルトの名無しさん :2011/01/14(金) 00:31:27
WebRequest/WebResponseを使っているのですが、非同期通信を使うのと 同期通信を使ったルーチンをスレッド化するのでは、どちらがいいのでしょうか? いまいちよくわかってないのですが、非同期処理と、同期処理+別スレッドの それぞれ利点・欠点、違いを教えてください。
>>15 非同期の方がいいよ。
.NET Framework の内部でいい具合に I/O 待ちスレッド制御してくれてるから。
ただ、書くのが楽なのは、現状、自前スレッドで同期処理。
まあ、それも、C# 5.0 で Task 非同期が入れば解消される問題。
17 :
デフォルトの名無しさん :2011/01/14(金) 08:15:10
>>17 お前自身が地雷
19 :
デフォルトの名無しさん :2011/01/14(金) 09:45:53
前スレ
>>1000 のものです!
countのほうは
例外を出さずに無事実行できました!
ありがとうございました☆
DBNull.Valueなんですが、
INSERT INTO Id_Name (id,name)VALUES(DBNull.Value.ToString(),"A")
とやってみたのですが、例外が出ません><
idはPremary KEY + NOT NULLです。
書き方が間違ってますか??
Premary KEYの場合ってNOT NULL必要ない??
>>19 あ、パラメータでセットしてなかったんだね
ごめん俺が嘘言ってた
>>19 sqlite はPKでもNULL許可で、
しかもNULLのデータは重複登録できるので一意に管理したいならNOT NULLは必須じゃないかと思われます。
22 :
デフォルトの名無しさん :2011/01/14(金) 10:43:35
>>20 さん
パラメータでセットって
command.Parameters.Add(new SQLiteParameter("@id", DBNull.Value.ToString()"));
ってことですか???
>>21 さん
ということはSQLiteはNOT NULL無視してるってことですか?
NULL許可したくないんですけど
他にやり方ってありますか?
23 :
デフォルトの名無しさん :2011/01/14(金) 10:58:10
>>16 なるほど。
まだC#2.0で止まっている世界にいるので、簡潔さ重視でスレッド+同期を使おうと思います。
質問です。dll内にIconを登録してメインのexe(プロジェクト)から呼び出して使用するには どのようにすればよろしいでしょうか?
>sqlite not null制約自体は存在するだろ 単にprimary key制約には含まれないんだと割りきればええやんけ
26 :
デフォルトの名無しさん :2011/01/14(金) 13:07:35
>>25 さん
command.CommandText = "create table id_Name(id char NOT NULL primary Key, name char)";
ってやってるんですけど
それとは違いますか?
>>17 デバッガの使い方はわかるか?
変数の値見ながら少しずつ進めれば、どこがおかしいかわかるだろう
28 :
デフォルトの名無しさん :2011/01/14(金) 14:26:07
>>26 です!
無事解決しました!
実は、ListViewで表示しているものを
DBに書き込んでいたのですが、
DBに書き込む前にListViewのアイテムで
NULL判定をしたところできました。
ご迷惑おかけしました><
ありがとうございました☆
普通 >command.Parameters.Add(new SQLiteParameter("@id", DBNull.Value.ToString()")); ではなく command.Parameters.Add(new SQLiteParameter("@id", DBNull.Value")); じゃないでしょうか?
30 :
デフォルトの名無しさん :2011/01/14(金) 18:10:04
2chからhtmlを取得する方法を教えろ
32 :
777 :2011/01/14(金) 19:56:54
↓が遅くて泣きそうです。 C#だけ使って、もっと速くする方法を教えてください int[] pixel = img.GetPixel(); Bitmap bmp = new Bitmap(img.Width/*=2560*/, img.Height/*=2560*/, PixelFormat.Format32bppArgb); BitmapData bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat); fixed (int* p1 = pixel) { int* p = (int*)bd.Scan0; int nResidual = bd.Stride - bmp.Width * 4; int* d1 = (int*)p1; int x, y, w = bmp.Width, h = bmp.Height; int min = 0, max = 512; int colorMax = colorTable.Length - 1; int val = 0; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { val = (int)*d1++; if (val < min) { *p++ = colorTable[0]; } else if (max < val) { *p++ = colorTable[colorMax]; } else { *p++ = colorTable[val]; } } p += nResidual; } }
何をやとうろしてるの? *pとかってできたんだw
並列化したら その手のだったらほぼコア数倍になるよ
35 :
デフォルトの名無しさん :2011/01/14(金) 20:04:51
>>33 colorTable配列になってますが、元々は毎回計算してました。
36 :
デフォルトの名無しさん :2011/01/14(金) 20:09:52
>>34 シングルコアあたりの性能を僅かでもいいので上げたいのです。
37 :
デフォルトの名無しさん :2011/01/14(金) 20:10:54
512段階?変換してるのか?
2560x2560を一本の配列としてみるのであれば途中でぶった切って
>>34 のいうようにスレッドで処理させてあとで結果を元に戻せばいいだけちゃう?
>>37 変換してます。
512段階ではなく、実際は可変です。
あと、このルーチン自体が物凄い勢いでループします。
スレッドにするとスレッド生成・破棄のコストが大きいかなと考えていたりします。
あと、端末にはPentium4なんてのが生き残っていたり。
>>38 解像度に関係なく画像のピクセルデータを1次元配列でみてるんだよね?
なんで二重ループなの?
最初に掛け算で縦横かけて総ピクセル数でループにした方が・・・
細かい話だけど
それより範囲の比較の意味が分からん ARGBまとめて数値として比較しても意味なくね?
41 :
デフォルトの名無しさん :2011/01/14(金) 20:26:05
>>39 ↓こいつが居るのです
int nResidual = bd.Stride - bmp.Width * 4;
42 :
デフォルトの名無しさん :2011/01/14(金) 20:28:05
>>40 ARGBではなく独自の32bit値です。
それに色づけをしてグラフ?っぽく見せるものです。
44 :
デフォルトの名無しさん :2011/01/14(金) 20:28:59
>>43 ループの中に居ます
p += nResidual;
うまくやればCLUTあたりを使えそうかなあとも思ったけど無理かなあ・・・
ターゲットのCPUがなんか知らんが、for内のif分が致命的に遅いはず。 条件分岐ではなく、論理演算のみでやってみ。
飽和加算とか使えるんじゃない
>>41 そのnResidualが常に0なら
その計算いらないしループを一つにできるのね
そうしたところでたいして速くはならなそうだけど
ネスト部分が見難かったので勝手にインデントしてみる for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { val = (int)*d1++; if (val < min) { *p++ = colorTable[0]; } else if (max < val) { *p++ = colorTable[colorMax]; } else { *p++ = colorTable[val]; } } p += nResidual; }
52 :
デフォルトの名無しさん :2011/01/14(金) 21:03:00
こういうのが微妙に遅いようです。 もしかしてC#ってポインタ遅い? val = (int)*d1++;
ああ C++/CLIなんてものもあったなw
IL確認しないとなんとも
56 :
デフォルトの名無しさん :2011/01/14(金) 22:00:49
仮にネイティブにしたとしてもPen4で2560x2560の画像を物凄い勢い?で処理するのは無理じゃないか。 いっそCPUに処理させるという発想を捨てるのはどうだろう。 WPFにしてダブルバッファリングしたWriteableBitmapに監視スレッドから書き込んで(int[]に直接書ける) 出力時にシェーダで加工するのがマネージドコードでは最速だと思う。(ColorTableには1D/2Dテクスチャを使う) さぁ、君もGPUの力を体感するんだ! "C#だけ"じゃなくて、入門レベルのHLSLもちょっぴり使うけどね。 端末として生き残っているPen4 PCでShaderModel2.0が使えるのか。それだけが問題だ。(Intel GMA 900/2004年〜, GeForce FX/2002年〜)
58 :
伊藤 :2011/01/15(土) 11:20:23
C# にて Windows Form アプリケーションを作成しています。 PrintPreviewControlを配置しているのですが、プレビューが画面に入りきらずにスクロールバーが表示されている状態です。 ここで、マウスホイールで上下にスクロールできるようにしたいのですが、 方法が分かりません。 ご存知の方、教えていただけないでしょうか。 よろしくお願いいたします。
スクロールバー表示してるコントロールにフォーカス当てる コントロールが対応してればホイールでスクロールできる もしくはMouseWheelイベント拾ってスクロール位置を移動させる
60 :
伊藤 :2011/01/15(土) 11:56:45
>>59 さん
回答くださりありがとうございます。
「スクロール位置を移動させる」には、どのようにすればよいのでしょうか。
印刷する帳票はA4縦の単票なのですが、プレビュー上は上部しか表示されていないため、
ホイールで同ページ内のプレビューの下部へ移動したいと思っています。
お手数ですがよろしくお願いします。
61 :
伊藤 :2011/01/15(土) 12:03:55
>>59 さん
たびたびすみません。
MouseEnterイベントにFocusメソッドを当ててみましたが、
Focusはされているようですが、PrintPreviewControl のスクロールはマウスホイールでできませんでした。
どのようにすればよいのでしょうか…。
MouseWheelイベント拾ってUser32のScrollWindowExを呼べばいい
65 :
伊藤 :2011/01/15(土) 14:03:26
皆様 ありがとうございます。 同一ページ内のプレビュースクロールができるかどうかが、気になっていました。 いただいたサイト、コーディングを参考に頑張ります。
こういうかゆい所に手が届かないのが.NET
型通りのものを作っておけばいいんだよ。
ある程度高度なプログラム組もうとしたらP/InvokeとかC++/CLIとか必須だもんな
P/Invokeできるのが.NETの売りだしね。
P/Invokeの問題じゃないと思うけど WinFormsでデザインが統一されてないのが根本だろ スクロールバー出すならとりあえず標準の反応するようにしろよバカ
C++/CLIって.NETを超えた事ができるの? 今まで.NETに縛られた言語に過ぎないと勘違いしてたぜ
C++/CLIはコンパイラスイッチで縛り具合を変えられる
皆様、おしえてください。 WebBrowserコントロールで、以下の処理を実装したいのですが、可能ですか? ・exeやzip等のファイル(通常、ダウンロードダイアログが表示されるようなやつ) のリンク等をクリックしてダウンロードが始まることを検出して、 ・WebBrower標準のダウンロードダイアログを表示させず独自に実装した ダウンロード処理を行わせる ・ダウンロードして保存したファイルのパスを取得する 可能でしたら、処理方法を教えてください。 ヒントだけでも結構ですのでよろしくお願いします。
リンクをクリックしたらNavigatingイベントが発生するから そこでe.Cancel = true;で標準の処理はキャンセルして 自前の方法でダウンロード
>>70 ウィンドウスタイルで設定できるスクロールバーはいにしえの遺物なのでなんとも。
76 :
73 :2011/01/15(土) 17:18:31
>>74 ありがとうございます。
ただ、ご教示いただいた方法では、
リンク元ページの読み込み時にもNavigatingイベントが発生し、
リンクをクリックしたNavigatingなのか否かを判別できません。
判別できる方法はないでしょうか?
※リンク先の拡張子が判れば拡張子で判別することもできるかと思いますが、
リンク先が /?name=hoge のようになっていてアクセスしないと
どんなファイルなのかわからないものの判別方法を知りたい次第なのです
そういうのはサイトがわかると対策をかんがえやすいんだけどね
オブジェクト指向ですっきりしたコードと、 ごちゃごちゃしてるけど何か早いコードって どっちがいいの?
URLを正規表現で処理するのが基本線だと思うけど、 完璧に対応したければリクエスト投げて、レスポンスヘッダーのMIMEタイプ見るしかないんじゃない?
自分でHTTP HEAD投げてcontent-typeを一度取得するのが スマートで、汎用的で、わかりやすいだろ
>>78 フォーミュラーカーで獣道を走るか?
トラクターがサーキット走ってるか?お前の世界では
適材適所って何年生で習う熟語?
>>71 P/Invoke じゃなくて、1つのアセンブリ中にネイティブと .NET 混在させれる唯一の言語よ。
84 :
73 :2011/01/15(土) 21:03:07
C#でプログラムの練習をしているレベルの者ですが 常識かもしれないんですけど…質問させてください 「〜は定義にありません」って表示されるやつは打ち込んでも意味がないんですか? 下らない質問すみません…
>>85 識別子(変数とか関数とかな)の名前間違ってるだけだと思うぞ
大文字小文字とか
でなければVB上がりでSharedをインスタンスから呼ぼうとしてるとか?
88 :
デフォルトの名無しさん :2011/01/15(土) 21:23:51
>>84 WebBrowserのNavigatingイベントでイベントを拾って
e.Urlのアドレスに別途アクセスしてそのアドレスでアクセスする場合に
どういうデータを送ってくれるのかを調べるしかないかもね・・・
htmlならページ遷移なのでNavigatキャンセルしなくてもいいし
exeやzipだとダウンロードになるのでNavigatキャンセルしてダウンロード処理を始めればいいし
WebRequestとかで情報調べれたっけ?
90 :
88 :2011/01/15(土) 21:36:44
Closeしろよ行儀の悪い
92 :
85 :2011/01/15(土) 21:45:30
>>87 確認してみましたが、打ち間違いはありませんでした
一回やり直してみます
返答ありがとうございました
93 :
デフォルトの名無しさん :2011/01/15(土) 21:46:00
正規表現じゃないとだめ? Uri.Segmentsとか
「〜\/(?<a>[^\/]+)\/〜」って感じで「(?<>〜)」を付けて、Regex.Match→match.Groups["a"]で行けた気がする
>>92 コードを晒せばいいと思う。
多分以下のいずれかやっているのだろう?
・Windows の Form (ウィンドウ) を出すようなプログラム作っている
or
・自分でクラスを作る練習
多分 static 関連だろうと思うんだ。
変数・メソッドの宣言の所に static って入れたらエラーが出ないのでは?
100 :
73 :2011/01/16(日) 02:43:36
>>86 ,88,89,90
ご丁寧な回答感謝です。
勉強になりました。
とりあえず標準のダウンロードダイアログを抑制して
実体のURL取得までできましたので、
このURLから次は実際のダウンロード処理部分を書いていきます。
自分でも調べながらやりますが、
親切な方、ヒントだけでもいただけるとうれしいです。
WebResponse.GetResponseStream()でNetwrokStream取得してStreamWriterで書き出す NetworkStream→BinaryReader→バッファ→BinaryWriter→FileStream って感じに 別にバッファ経由する必要ないけどキャンセルや進捗状況報告できるので普通はバッファ経由させる
102 :
デフォルトの名無しさん :2011/01/16(日) 03:18:16
それにしてもIDEって便利だよな。 未定義どころか、余計に宣言してしまった変数まで「使用されませんでした」って教えてくれる。 IDEのおかげでほとんど素人の俺でも、ちょっとしたプログラムなら組めてしまう良い時代。
いや、それは IDE じゃなくてコンパイラの仕事だから。 メモ帳で C# 書いて、コマンドラインでコンパイルしてもちゃんと未使用変数の警告出るよ。 IDE が便利な点をしいて言うなら、その警告がリアルタイムに出ることか。
tasuAメソッドとtasuBメソッドは同じような処理ですが後々の事を考えると どっちのメソッドを採用したほうがいいですか? private void button1_Click(object sender, EventArgs e) { test test = new test(); label1.Text = test.tasuA(textBox1, textBox2); label2.Text = test.tasuB(textBox1.Text, textBox2.Text); } --------------------------------------------------------------- public class test { public string tasuA(TextBox a, TextBox b) { string anser = a.Text + b.Text; return anser; } public string tasuB(string a, string b) { string anser = a + b; return anser; } }
>>106 textboxのインスタンスを渡すのはどうかと・・・・
108 :
デフォルトの名無しさん :2011/01/16(日) 11:28:35
answer
ごく一般論としてなら、引数は必要最小限のものを渡すべき でも別にクラスライブラリ作ってるわけじゃないんでしょ?好きにしていい
>>108 見る気しない
datをいじるより楽だろ
>>107 >>110 ありがとうございます
>>一般論としてなら、引数は必要最小限のものを渡すべき
知りたかった理由そのもので大変参考になります
>>109 ありがとうございます
113 :
73 :2011/01/16(日) 14:11:49
>>101 ,102,103
ご丁寧にありがとうございます。
がんばってみますわ。
>>ALL
またよろしくお願いします。
ふと疑問に思ったので、教えてください。 C# には String と string とありますが(先頭が大文字小文字) これの違いってなんでしょう? またどのような場面で使い分けるのでしょうか?
>>114 intとInt32
stringとString
同じ関係。
Int32のほうが実態。
小文字の方はエイリアス。
どちらもでいいよ、俺は主に小文字のほうを使ってるけど。
>>114 C# のキーワード的には string。
で、これは実は略称みたいなもんで、その実体は .NET Framework 標準ライブラリの System.String。
前者はそれ単体でキーワードなんでどこででも書ける。
後者は実はフルネームは System.String なんで、using System; してないと String と書けない。
117 :
114 :2011/01/16(日) 15:41:55
Booleanもそうだけど、おれは気分的に大文字で始まる方を使ってる。
キーワードの方がVSで色付くのが好き。
クラスや構造体はPascal推奨だからなー 統一感がない
121 :
デフォルトの名無しさん :2011/01/16(日) 16:47:14
大文字始まりの方はクラスなのか色がクラスと同じだからなあ・・・ 小文字は始まりは濃いブルーになって違いも一目瞭然なんでそっちがいいわ
>>120 まあ、組み込み型は内部での扱いもかなり特別だし、ユーザー定義のクラスや構造体と揃える必要ないと思う。
string hoge = String.Format(〜 左側は小文字、右側は大文字にしちゃうわ。
コードはint、コメントとドキュメントはInt32にしてる
List<T>とDictionary<T>に宣言その他エイリアス用意してくれないかなぁと思う。 このふたつは特別でよいでしょ。
それより先にIEnumerableだろ。
うん
List<T>よりArrayList<T>の方が遅いなんて、 それじゃあArrayListの存在意義って何よ
>>128 2.0以前までに必要だったから
ジェネリック実装でいらない子になっただけ
ArrayList<T>ってJavaの話?
>>128 過去の互換性
Silverlightや最新のCFでは削除された
もう、非ジェネリックコレクションにはとっととObsoleteつけろ。
ArrayList<T>ってどこにあんの?
中身List<object>に置き換えたらいいんじゃないの
135 :
デフォルトの名無しさん :2011/01/16(日) 20:36:46
ArrayListってListにそのまま機械的に変換できるレベルだったような・・・
最大の違いはArrayListはAddとかオーバーライドできること ほかにもToArrayがTypeを引数にとったりAddがint返したりRemoveがvoidだったり微妙にいろいろ違う
ToArrayが型情報要求するのはまるっきりJavaと同じだな あっちは空配列要求するけど
ArrayListは仮想メソッド多すぎ .NETは最近の流れで基本的に継承やオーバーライドを制限しまくってるのに コレクションだけJavaを模倣してる感じで異質だった
まあ初期からあるんでしょ? そういうどこかで見た思想に汚染されてるのは仕方ないでしょ
好き好んで今後使う奴がいると思えないし、いいじゃん別に
複素数クラスをつくって値のディープコピー をこころみたのですがうまくいきません。 Complex クラス内に二つのメソッドを定義してみましたが、 どうやってもc4の値が変わりません。 public void copy1(Complex c1) { //asim Console.Write("\nc1Re{0},c1Im{1},ThisRe{2},ThisIm{3}\n", c1.re, c1.im, this.re, this.im); c1.re = this.re; c1.im = this.im; } public static void copy2(Complex c1, Complex c2) { c2.re = c1.re; c2.im = c1.im; } // in main Complex c3 = new Complex(33,3); // constructor 33+ 3i Complex c4 = new Complex(44,4); c3.copy1(c4); Complex.copy2(c3,c4);
Complexの実装の方出せ。 あと、struct使ってる落ちとか?
>>142 structを書き換えたら直りました
すいません。
複素数なんてもんこそstructで表現すべき物だと思うが もちろんこんな内部書き換えるようなメソッドは無しで
Matrixはクラスだったな しかも奇怪な構造で
地味にウザイよなー Guid guid = new Guid(); GCHandle handle = GCHandle.Alloc(guid, GCHandleType.Pinned); IntPtr ptr = handle.AddrOfPinnedObject(); // ptrに書き込むP/Invoke呼び出し Console.WriteLine(guid); こんなくだらない事で悩んでしまった
構造体なら相手が非同期な関数でなければref guidか&guidで渡しておk
知ってるけどunsafe使いたくねーし、IntPtr.Zeroも有効なせいでref GUIDも駄目。 実は object guid = new Guid(); 〜略〜 Console.WriteLine(guid); こうすると動くのよね。 どうにかして欲しい。
オーバーロードでおk
オーバーロードする発想は全然なかった そうする
153 :
デフォルトの名無しさん :2011/01/17(月) 00:26:07
質問があります! visualC#を使っているのですが, Form1のDataGridViewにある各セルの値をForm2のtextboxに表示したいのですが,どうすればいいでしょうか? あいまいな質問ですみません>< DataGridViewの最後のセルに詳細表示ボタンを作り,ボタンを押すとForm2が表示されるようにしています. From2を表示することまではできています.
Form2側にデータ受け渡し用の何かを用意するしかないよ
155 :
デフォルトの名無しさん :2011/01/17(月) 00:38:47
DataGridViewのクローン渡すほうが簡単じゃない?
158 :
デフォルトの名無しさん :2011/01/17(月) 00:56:07
wpfやっている人は、コマンドのバインドもやっているの? 面倒くさすぎで挫折しそうなんだが
160 :
デフォルトの名無しさん :2011/01/17(月) 01:11:29
161 :
デフォルトの名無しさん :2011/01/17(月) 01:34:11
大昔ならForm2のTextBox自体をpublicにしてForm2をnewした直後に値を直接書き込んだなな 動けばいいって言えばそれまでだが
>>158 俺は全然使ってないけど
不快だと思ったら使わなければいいのに、なんで使い切ろうとするんだろうな?
どうしてこうマゾが多いのだろうか
163 :
デフォルトの名無しさん :2011/01/17(月) 09:45:56
ポーカーの役判定について質問させてもらいます。 Listを使用して、同じカードがでないようになりました。 しかし、役判定でつまづいてしまいました。 Listを使用し、乱数を取得して、その乱数をc1、c2、c3、c4、c5に代入してそのカードを表示させます。 数字は1〜54の数字を取得していて、1〜13がクローバ、14〜26がダイヤ、27〜39がハート、40〜42がスペード、43、44にジョーカーの1、2として、取得した数字に対応したカードがでてきます。 その後、いらないカードを一回交換し、並び替えを行います。 1〜13はそのまま、14〜26は-13、27〜39は-26、40〜42は-39、ジョーカーは一番右にいくのでそのままにし、純粋に数字だけをみてc1がc2より大きかったら入れ替えをして、小さかったり、同じだったらそのままにします。それをc5まで繰り返します。 その後に役判定を行うのですが、マークと数字を見てるので、if文でやるととても長くなってしまいます。 また、ワンペアとジョーカーがある場合、スリーカードにしたいのですが見方によってはツーペアになってしまうかも知れません。 どうすればよいですか? 教えてください!
>>158 その程度のことが面倒くさいと思うようならどうせユニットテストなんかやらないだろ?
じゃあMVVMなんか意味無いから普通に全部イベントハンドラで作ればいいよ
>>163 class Card
{
Sweet Sweet { get; set; }
int Number { get; set; }
}
にでもしたら?
168 :
デフォルトの名無しさん :2011/01/17(月) 11:37:20
デリゲートを勉強中なのですが、MSDNの解説で 「デリゲートがマネージ コードからガベージ コレクターによって収集されるのを手動で防ぐ必要があります。 ガベージ コレクターは、アンマネージ コードの参照を追跡しません。」 ということなのですが、これは具体的には、 GC.Collect(); を適当なプロセスで挿入すればいいのでしょうか?
それじゃ真逆だよ。
もうちょっと勉強してからMarshalクラス使った方がいいんじゃないかしら
>>167 トランプのマークはスートだぞ
スイートじゃない
というかMarkで良いやん
>>163 >1〜13はそのまま、14〜26は-13・・・
ジョーカーは別途処理として
number = card % 13;
suit = card / 13;
とするほうが楽
>その後に役判定を行う
隣り合う数字同士の差を元に判定する
4箇所で差1ならストレート(両端が1と13のときは差1にする)
連続する0の数でペア判定
>見方によってはツーペアになってしまうかも知れません。
役として強い方から見てけば問題ない
>>163 強い順に役判定すればスリーカードがツーペアになることはないと思う。
数字ひとつに1ビット割り当てた約判定用数値を用意して
ビット演算するとコードを短くできるかもしれません。
Aとジョーカーが特殊なのでややこしいことに変わりはありませんが。
>>174 なぜか
MarkとSuzyを選ぶだけ!
というCMを思い出した
>>179 ソースがでてこないしこうすればいいんじゃね?って日本語で
全部書くのもあれなので別にコードサンプルあってもいいんじゃね?
>>171 一つの方法としては、static変数に入れればGCを防げる
でもよく理解しないでMarshalなんか使うと絶対にメモリリーク起こしたりエラーで死亡したりするから
どういう場合にどうして死亡するかわかるようになるまではMarshalなんか使っちゃダメ
>>180 そのコードサンプルとやらに判定法が一切含まれていないんだよ
>>182 話の土台がなければ判定コードは入れられないだろ
>>163 のままだと全部作ってくださいって言ってるようなもんだよ
>>183 カードクラスと5枚のカードを持つ手札クラスを用意して
手札クラスで役判定する関数があれば回答になるんじゃない?
ポーカーゲーム全部作る必要はないと思う。
>>184 相手がどういうクラスを作ってるのかわからないに?
187 :
デフォルトの名無しさん :2011/01/17(月) 17:11:39
うん
191 :
デフォルトの名無しさん :2011/01/17(月) 19:41:06
マーク関係ないストレートができてないな CompareToですでにソートを使ってる場合に 別のソートっていけるのかな?
好奇心さ
若さって何だ
振り向かないことさ
文字列[login=123&pass=123]のクエリ文字列部分を美しく取り出したいです。 やり方をご伝授願います。
正規表現
普通login=123&pass=123の部分をクエリ文字列って言わない? もう取り出してるじゃん
198 :
デフォルトの名無しさん :2011/01/17(月) 21:15:40
質問です.visualC#を使っています. 初歩的な質問なのですが, DataGridViewに表示させた文字をセルを指定して,そのセルの値を取り出すにはどうすればいいでしょうか?
// using System.Text.RegularExpressions; var x = "login=123&pass=123"; var dic = x.Split('&').Select(s => s.Split('=')).ToDictionary(p =>p[0], p => p[1]); //var mat = Regex.Match(x, "login=(?'login'[^&]*)&pass=(?'pass'[^&]*)"); var login = dic["login"]; // mat.Groups["login"].Value; var pass = dic["pass"]; // mat.Groups["pass"].Value;p dicでもmatでも好きな方で 例外処理は自分で考えてね
203 :
デフォルトの名無しさん :2011/01/17(月) 21:42:31
初心者がC#を勉強するのにオススメなホームページってどんなのがありますか?
Uri クラス
また君か
ん?知り合い?
ホモ達
いいじゃないか、彼は満足してるんだから
212 :
デフォルトの名無しさん :2011/01/18(火) 00:28:44
なんかトランプでポーカーがうんぬん言ってる彼は俺の大学の後輩のような気がする。 ほとんど同じようなプログラムを去年の春かな。質問されたわ
一年間進歩無かったってこと?それはそれは・・・
というより課題じゃないの
課題なら先輩からソース貰って変数名だけ変えて提出しちゃうな
>>207 数字いれて
絵札は JQKでごまかして好きな絵でもかいとけ。
ぶっちゃけ銀光て業務で普及してる? 新規の案件があってWinFormから移行するかどうか迷ってるんだが
218 :
デフォルトの名無しさん :2011/01/18(火) 10:04:11
>>212 ごめん…
今高校生なんだ…
まあ、課題ではないけど成績に反映するからさ…
>>218 もうちょっと考え抜いてから質問した方がいいんじゃね?
220 :
デフォルトの名無しさん :2011/01/18(火) 11:59:15
>>219 関係ないおっさんが成りすましで書いてるのにマジレスとか
WinFormのGraphicsを使って文字を描く際に 文字列全体を弧に沿って曲げるようなレンダリングは可能でしょうか? 分かりやすくいうとスターバックスのロゴの文字のような感じです
できるよ
224 :
デフォルトの名無しさん :2011/01/18(火) 17:41:20
どこまでできたかプログラムを貼り付けたいけどどうすればいい?
ソースファイルをまとめてうpろだにうpすればいい
-------------------------------------------- それは他の公理に比べて自明性は低く、 また明らかに冗長であったので、 いくつかの疑念を生ずることとなった。 こいつにタダ飯食わせるのは正しいのだろうか? --------------------------------------------
問1.「こいつ」とは何を指しているか答えなさい。
>>217 業務系のアプリって、あんまし会社の外に出て来ないから
普及してるかどうかは、正直何とも。
ASP.NETのフロントエンドを置き換える目的なら、SLは良いと思う。
WinFormsを置き換える目的なら、SLじゃなくWPF検討しといた方が多分幸せ。
SLはWinFormsやWPFに比べて、イベントがかなり削られてるから
色々苦労すると思うよ。
SLってC#部分で図形とか動的に描けるかな?
わかんない。ページ見て。 WriteableBitmapの仕様がだいぶ違うんで、当人が両対応してなきゃ、そのままじゃ動かないと思う。
>>230 ありがとうございます。
いろいろできるんですね
コンパクトと聞いてたので不安でしたがさすがFlashの替わりを目指すだけのことはありますね
みた、動くっぽいけど・・・掲示板にWPF is deadって書き込みがあって萎えた
何その2chみたいな書き込み。
Task.Factory.StartNew で動作する部分でFormとかのUIいじろうと思ったらやっぱInvokeしないといけないの?
必要。
239 :
デフォルトの名無しさん :2011/01/19(水) 11:08:16
>>237 Invokeの必要性があるかどうかを理解してるなら動かしてみればいいじゃん
UI部分をいじれればいらない、いじれない場合は居る
それだけだと思うよ
>>238 サンクス
>>239 今ちょっと環境ないんだけど聞いてみたかったんだ
普通にスレッドと同じだと思えばいいのか・・・
>>240 実体はスレッドプール。
デリゲートのBeginInvokeしたときと挙動一緒。
>>241 ありがとうございます。
なるほど、効率の良くなって小細工できるスレッドプールのようなものですね。
デバッグする度にWindowsForms10.Window.8.app.0.b7ab7b_r21_ad1 の「0.b7ab7b_r21_ad1」が変更されるのですが、設定で固定させる事は可能ですか?
Disposeあったりするけどねぇ・・・
回転する前に中央が原点にくるように平行移動する
>>243 それが何の文字列かぐらいは書かないと意味不明
たぶんウィンドウクラスだろうけど、無理
249 :
デフォルトの名無しさん :2011/01/19(水) 21:05:31
Visual C#でフォームアプリケーションを作るとデフォルトのフォームのタイトルが「Form1」ですが、 これを変更するにはどうしたらいいでしょうか?
ソリューションを「Form1」で検索してみよう
>>249 ソリューションエクスプローラーのツリーのところで
Form1.csの名称を変えると「参照を全部変更しますか?」って聞いてくるので
はいを選ぶと全部変えてくれる
嫌です
デフォルトを変更したいといってんだろ 無理です
いちいちMainFormに直すのが面倒とかそんなんじゃない VBでいちいちModifireをPrivateに直すのが面倒臭い
256 :
デフォルトの名無しさん :2011/01/19(水) 22:11:02
つSED
WPFではC#でもデフォルトでinternal 気にするだけ無駄
俺が気にするんじゃなくてコーディング規約だからお前が俺の会社来てプロマネに言え
プロマネをここに連れてくるほうが楽じゃないか
260 :
デフォルトの名無しさん :2011/01/19(水) 23:05:11
>>257 でも、プロジェクトをクラスライブラリにすると、クラスのデフォルトはパブリック
理由はわからないでもないがどうなんだろうな?
Modifierって.designer.vb開いて置換すれば終わる話じゃないの?
どうなの?
263 :
デフォルトの名無しさん :2011/01/19(水) 23:51:25
SEDも面倒なら、VBでツール作ったら良いんじゃね
264 :
デフォルトの名無しさん :2011/01/20(木) 00:56:12
265 :
デフォルトの名無しさん :2011/01/20(木) 01:48:59
で?
で? ←横顔に見える
268 :
デフォルトの名無しさん :2011/01/20(木) 11:21:51
C#のコードをネイティブコンパイルする方法を教えてください。 C++からC#に移植した単純にループ&intの代入を繰り返すだけの簡単なコードが遅くて使いものになりません。
釣りっぽいがコード出してみ
遅いとかどれだけ性能を求めてるんだwww
無駄にnewしてるな
あれだ 起動にかかる時間も含めて言ってるんじゃない? 言ってるとしたらただのアホだが
274 :
デフォルトの名無しさん :2011/01/20(木) 12:30:15
起動が遅くてもいいと思ってる奴はアホだろ。
そりゃアプリケーションの種類による
起動が遅くてもいいアプリなんか一つもない。
>>274 だからシェーダ使えって
アホみたいに早いぞ
279 :
デフォルトの名無しさん :2011/01/20(木) 13:43:48
C++/CLI使え
280 :
デフォルトの名無しさん :2011/01/20(木) 13:45:36
シェーダやらC++/CLI使うくらいなら最初からC++で書くだろw C#の存在価値を全否定するレスばかりだなw
281 :
デフォルトの名無しさん :2011/01/20(木) 13:46:28
マネージコードの限界か C#なんていらなかったんや
>>280 速度欲しい部分だけC++/CLIで書いて残りはC#で書けばいいだろ
ネイティブDLLとか呼び出すよりマシだろうし・・・
sandy bridgeなら速いんじゃない?
まあどっちにしろ言語が悪いんじゃないよな 適切なハードなり言語なり選ぶとかできない本人が悪い
つうかC++/CLI使えないから涙目なんじゃない?
釣針が大きすぎて困ってる 助けて
Write Once Run Anywhere!!!
c#3以降はまともに保守できねーよ。 PGによって書き方がバラバラすぎる。 オナニーで言語仕様を拡張するのは止めてくれ。
それC++に言ってやれよ
JAVAにも言いたい
296 :
デフォルトの名無しさん :2011/01/20(木) 14:59:35
後発なだけにC#はまだマシな方だな C++は酷い・・・
言語はシンプルでいいんだよな デリゲートとかLINQとかもうわけわからんぜ
brainをfuckしてろアフォ
デリゲートは最初からあるじゃねーかよw
LINQに慣れると無くなったら生きていけないわ
デリゲートは無いとそもそもGUIが実現しないんじゃないの? LINQは確かに必要な拡張かどうか悩むけど
Linqで質問 public class ParameterDispData { public DateTime DateInfo; public string Comment; } こんな感じのデータのList<ParameterDispData>があって Commentの中身に複数の条件を含むデータを取得したい たとえば Commentに A Bのいづれかを含むデータ(条件の数は可変) みたいな感じに どうかけばいいのやら・・・
>>32 なら並列化でプロセッサ倍、GPUで二桁は余裕だな
C++で書こうが単一CPUの限界
>>302 list.Where(x => x.Comment == A || x.Comment == B)
>>303 ありがとうございます。
でも実現したいのは
A B C
になったり
A C
になったり
A
だけったり
全く条件は無かったり
なんです
まぁ例えば検索エンジンの条件みたいなものと考えてもらえれば・・・
実際はデータのフィルタリングに使用するんですが・・・
ひとまず基本は
var list = from x in readDataList
//ここに動的な条件はいる
select new { x.DateInfo, x.Comment };
こんな感じです。
from item in list join comment in comments on item.Comment equals comment select item; かな list.Where(item => comments.Contains(item.Comment) こっちの方がわかりやすいかも
Write Once Run Anywhere!!!
308 :
デフォルトの名無しさん :2011/01/20(木) 16:18:36
C#でSandy BridgeのAVXを使う方法を教えてください。
あくまで夢は夢だろ もちろん、使いまわせるところは使いまわすけど
>>308 C#にこだわる発想が馬鹿だよな。適材適所って言葉も知らんのか。
C#はネイティブとマネージド、静的言語と動的言語、手続き型と関数型 ...これら全てを相互に結び付けるグルー言語だ。
>>307 え? Javaの宣伝文句じゃん。
実際は、Write once, debug everywhereって言われたけどな。
>>311 そうそう
だから「Write Once Run Anywhere!!!」って言ってもJavaへの皮肉にしかならんよね って話。
それのもじりで一番笑ったのはWrite Once, Run Away.
Run Away.っておいw
>>304 動的に条件が増えるならLINQで書くよりも
IEnumerable<T> Filter<T>(IEnumerable<T> datas, IEnumerable<Func<T, bool>> filters) {
foreach (var d in datas) {
foreach (var f in filters) {
if (f(d)) {
yield return d; break;
}}}}
IEnumerable<T> Filter<T>(IEnumerable<T> datas, params Func<T, bool>[] filters) {
return Filter(datas, (IEnumerable<Func<T, bool>>)filters);
}
みたいなのを作っておいた方が拡張性がいい気がする
オーバーロードはなくてもいいけどあれば↓みたいな書き方ができる
Filter(list, p=>p.Comment.Contains("A"), p=>p.Comment.Contains("B"))
317 :
315 :2011/01/20(木) 17:53:01
Func<string, bool>[] filters = {s=>s.Contains("a"), s=>s.Contains("b")}; var q = from d in list where filters.Any(f => f(d)) select d; と思ったけどよく考えたらこれでいいな
そういうデリゲートが既に用意してあったような・・・
あったようなだよね・・・
Preidicate Whereで使えればいいのに
>>315 ,
>>317 ありがとうございます。
勉強になります。
ひとまず、Linqの勉強がてらだったんですが、結構奥が深そうで・・・・
深そうで・・・・
深く・・・ もっと、深く・・・
デリゲートってFuncとActionとEventHandlerだけあれば十分な希ガス
簡単なベクター系グラフィックツールを作ろうかと思ったがデータの管理が大変だな・・・
参照渡し用のActionとか作ったな
どなたかメソッドの返し値を一箇所で判定する良い方法知りませんか? やりたいことはfalseが返ってきたらその時点でHogeに戻りたい。 今は無理やりこんな感じでやってます。 if文が気持ち悪いので困ってます。 public void Hoge() { if( A && B){} return; } private bool A() { return true; } private bool B() { return false; }
イミフ
何言ってるかよくわからないが if(A) B; とかじゃだめなんですか
関数ポインタを使えばいいかも
説明不足ですいません 例ではbool値返すメソッドは二つですが 実際は沢山あります。 あと、bool値返すメソッドはエラーならfalseを返すという使い方を考えてます。
>>327 ショートカット演算子で検索。
結論から言えば、もうそのコードで既に望みどおりの動作になってる
判定をif分ですると気持ち悪いとは困った人ですね。
気持ちがることはない。 気持ち悪いなら、メソッド名が悪いと思う。
特に問題無さそうなのでこれでいこうと思います ちなみにコードは即席なので気にしないでください ありがとうございました
if使わないなら後は例外投げて大元でキャッチとかすれば何とかできそうだけど 微妙すぎだな
if文というかif文の条件が増えすぎるのが気持ち悪いというのが正解です delegeteに追加して、途中で抜けれるとかならいいんですが・・・
デリゲートのリスト作れば簡単にできそうだけど
設計がおかしいと言ってみる。
static void RunAnyway(params Func<bool>[] methods){ //中身は頑張って作れ } こんな感じで使えるはず RunAnyway(A, B, C, D);
動けばいい。俺は気にしない。
そのフィルターってホワイトリストみたいになってない?
いつも思うけどこのスレって策士策に溺れるタイプ多そうだなほんと。 なんか質問の主の質問とズレてる気もするし。(質問者が日本語不自由過ぎるのでそこは微妙だが)
ゴミのようなレスからでも学ぶことはできるのだよ
346 :
デフォルトの名無しさん :2011/01/21(金) 02:31:14
前に見たコボル上がりのプログラムだと、帳票十数種類を一つの関数で作っていた 当然縦横も集計なのか明細なのか仕様もばらばらだが、if文だらけで千に届かんばかりの行数の関数 この手のものであるなら、最初から作り直したほうがいいと思うわ
恐ろしい。作ったやつは天才だな。
よくそんな化物関数扱えるな 多少効率悪くなっても読みやすく重複の少ないコードがいいわ。
動いてるならそれでよし
if文で判定したデータをさらに判定するのはどのように書けばいいんですか?
if文を書けばいい
&&とか||もあるだろ
メンバ関数の名称は同じなのに引数の指定の仕方が複数存在する物がありますが あのようなメンバ関数を持たせる場合はどのように定義すればいいのでしょうか?
引数だけ変えてあとは普通に
著作権の侵害だ
すまん、ゴチったw 中身の絵柄は萌え系に変更させてもらうがな!!
float[]の要素に対して複数のスレッドから読み書きするのは危険ですか? スレッドが3つあるとして、 スレッド1は 0,3,6・・・ スレッド2は 1,4,7・・・ スレッド3は 2,5,8・・・ に対してそれぞれ読み書きしたいんです。 既存のデータに対しての処理なので、そもそも設計が云々と言うのは無しでお願いします
360 :
デフォルトの名無しさん :2011/01/21(金) 17:30:42
>>359 項目が別れてるならいいんじゃないの?
同じエリアをアクセスするとなるとヤバイだろうけど
>>358 台湾Microsoft辺りで、色々素材出してくれるといいのにねー。
362 :
デフォルトの名無しさん :2011/01/21(金) 20:06:54
WpfでBitmapImage(new Uri("Images/Hoge.png") とかをLoadedで実行すると デザイン時はリソース見に行かずに普通のアドレスとして解釈してエラー起こるんだが、皆どんな対応している? 普通に嵌ってしまったわ
Uri (String, UriKind) とか使ってもダメなのかね
364 :
デフォルトの名無しさん :2011/01/21(金) 20:34:39
>>363 駄目でした、でも実行時にはちゃんとリソース持ってくるんだよね、Loadedに置いても
バージョンは4です
365 :
デフォルトの名無しさん :2011/01/21(金) 20:37:04
なんか、いいことありませんか?
if (DesignerProperties.GetIsInDesignMode(this))で逃げる
367 :
デフォルトの名無しさん :2011/01/21(金) 21:04:36
実際デリゲートとか使ってる現場少なくて、コーディング規約にも出て来ないから怖くて使えん。javaと同じだと思ってる奴多いからかな。 お前らちゃんと使えてる?
デリゲート怖い
>>369 ちょっとしたアプリでもデリゲートが使えないと困ることって出てきそうなだがどうなんだろ?
GUIのイベントとは別ね
スレッド使えないな
デリケアM's
タイマーでも起動してスレッドが終わったら立てるフラグでも見て 処理するとかやるのかなw
BackGroundWorkerは禁止ですか?
デリゲートなんて分からん奴にはただのクラスと区別がつかんし、 分かってる奴は意味もなく問題視したりしないから迷わず使えばいいよ さすがにUIを勝手に非同期化したりはしないが
デリゲートはわかるけど、ラムダ式使って匿名メソッド書かれると、 何やってるのかパッと見で把握できない 非常に困る
ラムダ式とかLINQあたりだとさすがに複数人数でやるときはレベルあわせがいるよね・・・
IEnumratableを返すメソッドが大量にあると萎える
ジェネリック、デリゲート、ラムダ式、LINQは便利だし覚えて損無いと思うけど というかLINQは前者の3つが分かってればそんなに難しくないでしょ
デリゲートは関数動かん時に使ってみるってイメージ 特にC++/CLI ・・・理解してなくてスマソ
デリゲートが分からんって奴は、イベントがどういう仕組みになってるかも分からないってこと?
デリゲートはどういうときに使うの? マルチスレッドでフォームにアクセスするときに使うのはわかる。
XPでプリインストールされるソリティアが使ってる C:\WINDOWS\system32\CARDS.dll を読み込んで カード画像のリソース流用できない?
デリゲートが如何に有用か知りたい人はJavaのSwingか何かでアプリ作っといで
Javaは終わコン
390 :
デフォルトの名無しさん :2011/01/22(土) 11:12:53
何度でも甦るさ
それを言った男は死んだ 男の言ったものも空の彼方へ消え、永遠に失われたのだ
ゴスリンェ・・・
394 :
デフォルトの名無しさん :2011/01/22(土) 12:45:59
ポーカーの役判定懐かしいな 昔マイクロソフトの面接で10分ちょいで紙にコーディングさせられたわ。簡単だった
MSKK仕事しろ
なんか見るのが嫌になるソースだな・・・w リソースの画像の管理をもうちょっと整理しろw
>>376 どうせコードレビューで叩かれてデリゲートの説明から入るとか、それなら他の方法取った方が楽と思ってしまう
400 :
デフォルトの名無しさん :2011/01/22(土) 14:08:10
>>394 手をつけかけたけどあれこれ整理していくと元ソースとかけ離れそうで
その過程まで説明する羽目になりそうなで挫折・・・
ITエンジニアは効率や整理する能力は要らないのかな?
やっぱり老害にとってはコミュ力(笑)重視?w
効率とかどうでもいいんだよ!!ってこと?
そんなちょっとした局所的なコードなんてはっきり言ってどうでもいい 少々汚くても適切にメソッドが分割されてて外に影響しなければ問題ない
すみません、質問です。 dataGridView内の行をD&Dで任意の場所に簡単に並べ替えられるようにしたいのですが 一通り検索したやり方では上手く動作してくれませんでした。 また、こちらも苦戦中なのですがdataGridView外のForm1にあるチェックボックスでchecked時にリストの移動をできないという状態にもしたいのです。 こちらは前者のD&Dが実現してからでないと検証のしようがありませんでしょうが… 一応必要かと思われるプロパティ情報を記載しておきます。 ・プロパティ Name └ "dataGridView1" AllowDrop └ "True" //D&Dを許可 SortMode └ "NotSortable" //列ヘッダでソートしない SelectionMode └ "FullRowSelect" //行のみフォーカス EditMode └ "EditOnKeystrokeOrF2" //Key入力orF2押下で編集可 どうかご教示のほどよろしくお願いいたします。
>>394 http://ideone.com/KWeSj まーこの際配列化も覚えた方がいいな
配列にすればかなり短くなるコードなのにやたら大きくなってるし
同じようなコードが複数あるのもいただけない
まずはコードの整理をしてからだよw
card01()メソッドを参考に他のも直してみなよ
>>394 そんなに無駄に長いコードを書く時間があるならまずC#のいろはを勉強しろといいたい
switchを50個も並べるなクソが
言語以前にプログラミングの基礎から・・・
上から下まで条件式でワラタw
まー部分的に教えればいいんじゃね? メンバ関数の使い方もただコードが長くなるので分離したような感じだし 再利用可能な形に変えるとかさ
if文嫌いは8bit、BASIC時代のオヤジだろ。
>>409 嫌いとか好きの問題じゃないようなw
逐次制御なマシン上でプログラム組んでる以上はどうやっても分岐は必要になるんだし
ただあまりにも「プログラムをやり出したころの昔の自分のコード」を見てるようで
ちょっとワロタけどw
クラスとかの前にまずはメンバ関数を再利用可能にするとか配列化出きる物は
配列にまとめて簡単なコードにしちゃうとかさw
テストしてると自然に減らしたくなってくる
ガチ数値計算だと無理矢理にでも減らす
今の仕様を一切変更せずに、かつなるべく初心者でも分かりやすいように書くとこんな感じかな。
配列とforをうまく使いましょう。
http://ideone.com/SwEAJ あとメソッド(関数)の使い方をもっと工夫するべきだよ
cardexchange01からcardexchange05まで全部作るんじゃなくて
cardexchange一個作ってどのカードを変えるかはメソッドの引数で切り替えるみたいな感じで
>>413 >あとメソッド(関数)の使い方をもっと工夫するべきだよ
>cardexchange01からcardexchange05まで全部作るんじゃなくて
>cardexchange一個作ってどのカードを変えるかはメソッドの引数で切り替えるみたいな感じで
その辺が上でも言ってる再利用だよ
今はグローバル変数をいじってるし関数名に番号が付いてるのはどれも
ただ処理を切り離しただけに見える
整理して再利用可能にすればもっとすっきりするがその辺を分かってる人が
いきなり全部やっちゃうと何をやったかさっぱりわからない可能性があるので
まずは
>>403 をやってみろ
>staticを理解していない人のコードを見ると、いちいちインスタンス宣言しているので笑ってしまう 斬新過ぎるw
コメント欄超盛り上がってるなw
>>417 うむ
コラム書くのは事実だが問題は「こんな痛い人がどうどうと発言できる権限を持ってる」事が異常なんだよなw
コミュ力(笑)重視
そりゃ沈むよ
>コラム書くのは事実だが ミス コラム書くのは自由だが
もうその人、自分戦略研究所を除籍になってるんだしいまさらぶり返してやるなよ。 「しっくりこないんです」は釣り定型句として永劫使われるとは思うけどw
,r;;;;ミミミミミミヽ,,_ ,i':r" `ミ;;, 彡 ミ;;;i 彡 ,,,,,、 ,,,,、、 ミ;;;! ,ゞi" ̄ フ‐! ̄~~|-ゞ, ヾi `ー‐'、 ,ゝ--、' 〉;r' 「しっくりこないんです」 `,| / "ii" ヽ |ノ 't ←―→ )/イ ヽ、 _,/ λ、 _,,ノ|、  ̄//// \、 _,,..r''''" | \`'/ /  ̄`''ー | /\ / |/)::::/\/ | ,r":::ヽ / |i´:::::::::| /
実はあなたとのSEXってしっくりこないんです!
@ITは全体的にしっくりこないんです
誰と戦ってるんだwww
誰と
C#ってintの初期化をせずに使った場合中身は0クリアが保証されてるんだっけ?
>>394 のタイマーの動作のところいじってて気が付いたんだが・・・
されてる
NyaRuRuちゃんはゼロページ初期化だって言っていた気がする なんにせよ構造体なので0かnullしか入らないけど
フィールドかローカル変数かで違ったような....C#じゃない言語と混同してるかもしれんが
>>428 クラスとか構造体のメンバーは、明示しないと0クリアで保証されてる。
ローカル変数とかはそもそも未初期化利用不可。
>>427 もうやめてあげて!おじいちゃんをいじめないで!
「未割り当てのローカル変数にアクセスしようとしています」とごっちゃになってるのだろ。
そこはやめたげてよぉ!だろ
なにそれ
>>434 そこは問題ないだろ
.netだとわりあてねーぞごら!!って言うし
438 :
デフォルトの名無しさん :2011/01/22(土) 19:52:55
オブジェクトは判るけど、文字列ぐらいデフォルトで初期化しろと何時も思うよな
439 :
デフォルトの名無しさん :2011/01/22(土) 19:56:53
>>437 少なくともVB.Netでは使えるし、ループ内の変数を毎回初期化してないのが原因の不具合も見たことがあるが
VB.NETでもOptionStrictOnにしてたら通らないよ 普通Onにするだろけどね、VB6上がりのおのぼりプログラマでなければ
最近Pythonとjavascriptばっかり書いてる C#が恋しいよお
長く触ってないからよく覚えてないけどVB.NETではOption Strict Onでも通るんじゃなかったか 初期化しなかったら自動で規定値に初期化されることになってたはず
443 :
デフォルトの名無しさん :2011/01/22(土) 20:05:40
visual c#の課題についての質問なんですが
http://ideone.com/GOymD にあるプログラムにMyCircleというクラスを追加して
ウインドウサイズを変更した際も表示が同じになるよう
にしたいのですがよくわかりません。
課題ではMyCircle型のコレクションクラス
に円を格納するクラスを作り、MyCircleクラスにメソッドDraw
を追加し、それを呼び出しすべての円を描くようDrawCirclesを
書き換えろという風になっているのですが、コレクションクラス
の配列を用意しそれを利用する方法ががよくわかりません。
お願いします。
C#が課題になる学校なんてあるんだ 高校?大学?
スレチ
>ウインドウサイズを変更した際も表示が同じになるよう どう同じになればいいのかがわからない
なんで?
一つのインスタンスを使いまわすのとクラス毎で作るの では出来上がる画像に違いがあるかなあと 動かしてみればわかるよ 毎度ランダムのインスタンス作る方はばらつき感がイマイチ
実は>450ってしっくりこないんです! staticを理解していない人のコードを見ると、いちいちコンストラクタのパラメータで渡しているので笑ってしまう
同じメソッド何回も使うならstaticよりも実体化させてからの方が速いんじゃないの? そのメソッドに関連する変数が複数あるならクラスのフィールド変数にした方がいいし
実はしっくりこないんです
>>452 そういうことじゃなくて
>>448 のRandom _rnd;は
static Random _rnd = new Random();
でもいいよねっていうのを
>>415-416 の流れを踏まえつつ茶化してみただけなんだけど
わざわざ説明させんなよ
オブジェクト指向においてstaticって逆に気持ち悪い・・・
気持ち悪いかどうかで語るのはしっくりこないんです
シングルトンを作る仕事ありますか?
一人暮らしの豚? 間に合ってるよ
459 :
デフォルトの名無しさん :2011/01/22(土) 23:27:39
シングルトンっていうのがあるのか これってたとえばFormのLoadの段階で一つ作って Form1とかでインスタンスを管理してる場合は Form1の配下で作るどこかのクラスでインスタンスを作った場合は Loadイベントで作った物を共有することになるの?
実はオブジェクト指向ってしっくりこないんです!
>>459 シングルトンはインスタンスをstatic変数にしてグローバルで共有してるだけ
つまりはグローバル変数
害悪もグローバル変数と同様だけど名前がかっこいいので誤魔化せる
>>461 >グローバル変数
なるほど
でもこれって書き換えをしない情報の共有ならいいかもね
C#の標準の値クラスってどう実装してるのか気になってたけどこういう感じなのかな?
Pensとかいろいろあるじゃん
普通にstatic使ってるだけだろw
正直あまり使った記憶がない 生成にある程度コストがかかり、尚且つ参照範囲が広いもの…か
違うよ シングルトンは本来、複数インスタンスを作ったら、そのクラスが仕様上正しく動作しないような場合に使うもの そうではないけどアプリケーション全体で一つしかいらないような場合は、シングルトンにするのではなくて static class SharedObjects { public static Hoge Hoge { get; } } みたいに持つべき でも実際には安易にグローバル変数として使われるけど
>>466 の例が良いと言ってるんじゃないよ。実質SharedObjects.Hogeもグローバル変数だし。
全体で一つしかいらないものをどうやって持つかは色々あるけど、それは別にして
シングルトンは本来グローバル変数を作るためのパターンじゃないということが言いたかっただけ。
グローバル変数って何? C#ではどう頑張ってもクラスメンバーにしかならないと思うんだけど
public static なメンバーはグローバル変数と同じようなはまりどころもあるよってことかと。 ほんとの意味でグローバルなものみたいに名前衝突で困ることはないけども、 同時アクセスとかでははまる。
依存してるクラスの独立性を下げてしまうという意味じゃグローバル変数と一緒だ テストしにくくなったり見通しが悪くなったり
471 :
デフォルトの名無しさん :2011/01/23(日) 00:46:39
VisualC#を使っているのですが,いまいちクラスの使い方やオブジェクト指向が理解できません. わかりやすく解説してくれているサイトとか知っていたら教えてくれませんか?
独習 C# なり買ってきて勉強してください
javaから入るのが楽 初心者向けの本やサイトが多い
>>473 そのサイトはある程度理解している人が使うもんだと思っていたが。
色々作ったけど未だにオーバーライドの存在意義がわからん
477 :
デフォルトの名無しさん :2011/01/23(日) 01:14:02
>>471 オブジェクト指向はゲームとか作ってみるといいかもしれないが・・・
>>476 メンバ関数を張り替えたいときだろ
全ての型は Object 型を継承します。 Object 型は 3 つの仮想メソッドを持ちます。 例えば ToString メソッドは、オブジェクトを文字列にするメソッドで、これをオーバーライドすることにより Console.WriteLne(object) に渡した時に表示する文字列を変更することが出来ます。
479 :
デフォルトの名無しさん :2011/01/23(日) 02:18:27
>>474 デザインパターン本とか未だにJavaの方が充実しているよな
俺も結城さんの本からオブジェクト指向勉強した
Javaのデザインパターンのいくつかは、すでに言語機能になっててパターンとして覚えるものじゃなくなってはいるけども。
初心者がデザパタとか無意味極まりない
豚に真珠
初心者にデザパタ
>>476 にオーバーライド
結城デザインパターン本をC#に書き換えてるサイトがどこかにあった
485 :
デフォルトの名無しさん :2011/01/23(日) 03:00:48
>>480 デリケートとイベントが登場して、こんなに簡単にできるようになるのかと驚いた物だよな
後デザパタの基本を知らないと、オーバーライドとかアブストラクトのありがたみも理解できないわ
必要になったら覚えればそれでいい 必要にならなければ儲け物だろう?無駄な機能ってことだからな 中二病よろしく何にでも存在意義を求めるのを止めなさい
ジェネリックスもデリゲートも無い環境で作られたものだからな
>>486 >必要になったら覚えればそれでいい
ここは同意できるが
>無駄な機能ってことだからな
ここは同意できない
使えなくても存在意義は把握しているべき
そうしないと本当に必要なときに必要だとわからない
>>487 C原語でもやってろ
抽象クラスとかほとんど使わないしw
健忘症だから抽象クラス使うぞ
へぇ、ImageクラスもStreamクラスもほとんど使ったことないんだ
そういうことならObjectも使ってるお!
Objectは抽象クラスじゃないぞ☆
アホすw
495 :
デフォルトの名無しさん :2011/01/23(日) 04:09:15
例えばドキュメントを生成するクラス作るのに抽象クラスなしとか考えられないよな 何十も全く違う扱いするとかあり得ない
つインターフェース
ナンデヤネ──ン(*´▽`)ノ.+゚*。:゚+
498 :
デフォルトの名無しさん :2011/01/23(日) 04:31:20
>>496 で、実装は似たクラスをコピペしてDBと列を弄るだけかぁ
なにそれこわい
500 :
デフォルトの名無しさん :2011/01/23(日) 04:34:42
すいません
>>447 のプログラムなんですが、表示を円から三角形に改造すると
どんな感じになります?
それくらい自分でガン( ゚д゚)ガレ
抽象クラスをコードの使い回しに使うと嵌ることあるから気をつけろよ
抽象クラス使うとしても、その上にインターフェイスは被せておくのがジャスティス
そういうことするのは主にテスト用 本来のインターフェイスの使い方からはちょっと外れる
>>443 の
>ウインドウサイズを変更した際も表示が同じになるようにしたい
これって全部円が納まるエリアを計算してアス比とか調整して描画する必要があるってことかね?
その辺が気になって範囲を求めるロジック書いてたんだがこれより早くする方法はないだろうか?
これはテスト用なのでLineだけど
http://ideone.com/A7snI
上の方でデザインパターンの話してるのに実装継承を重視されてGoF涙目w
構造体のメンバーに対して順次アクセスする手段はありますか? イメージとしてはコレクションに対するforeachのような感じです
508 :
デフォルトの名無しさん :2011/01/23(日) 12:36:47
>>507 その用途ならディクショナリーでも検討してみたら?
テストで差し替えるためだけに何でもかんでもインターフェイスにするんだよ 実際の実装クラスは多くの場合一つだけ C++のヘッダに近い扱い
ん?しっくりこないんですが
しっくりこないが、大丈夫か?
インターフェイスってしっくりこないんです(←マジで言ってそう)
>>508 そうしたいのは山々なんですが、既存システムとして多くの箇所で
構造体が使われてしまっているので、全てを直すのは難しいです
今のところは構造体にコレクションを返すメソッドでも個別に定義していくしかないかと
考えているのですが、別の手段があれば参考にしたいなと思って質問しました
「構造体のメンバー」のメンバーってフィールドのことを指しているのかなひょっとして。 ガッツ石松じゃないんだから言葉は正確に使って欲しいよな 生Cじゃないんだからメンバーって言われても.....
リフレクション使えばできるけど、既存の構造体を使うだけなんだったら実行時にリフレクションするより ディクショナリに変換するメソッドをあらかじめ自動生成してしまうのがいいと思う リフレクションで舐めてプロパティの情報を取得して、C#のソースを機械的に吐くだけ
つ リフレクション 速度とトレードオフなので十分に検討してくださいね
520 :
デフォルトの名無しさん :2011/01/23(日) 13:08:05
>>519 正式な規定は記憶の彼方だが、メンバーはパブリックでフィールドはプライベートって認識
プロテクテッドもメンバーかな?
メンバはグループの直下に宣言されてる要素の総称 プロパティ・フィールド・メソッド・イベントはその外側のクラスのメンバ クラスやデリゲートなどを名前空間のメンバと呼ぶこともある
>>503 実はインターフェイスの方がバージョニングに問題あるよ。
メソッド追加した時に、実装側の修正も必要になる。
抽象クラスなら、abstractじゃなくてvirtualにすれば派生クラス側の修正要らない。
あと、あんまりインターフェイスを分割しすぎるとロード時のパフォーマンスに問題出るみたい。
524 :
デフォルトの名無しさん :2011/01/23(日) 13:46:08
>>521 Reflection.EmitとかLinq.Expressionsを使ってレビュアーを恐怖のどん底に落とそうぜ
C#とC++がありますが、 既存はC#で作っているアプリがあります。 これをC++に直すメリットってありますか?
純C++?C++/CLI /clr?/clr:pure?
>>523 公式のガイドラインでも可能ならインターフェイスより抽象クラス使えっていうのがあるけど
実際のところMSのC#製アプリは基本
>>510 スタイルだったりする
>>529 いや、でも、Javaと比べるとさ、インターフェイス少ないと思うよ。
Stream クラスがインターフェイスじゃないとか、ReadとWrite分かれてないとか。
>>530 >>529 はアプリケーションの話ね
Expression Blendとかそうだよ
クラスライブラリは本当に変更がきかないからもっと保守的
1.1時代のライブラリは間抜けな実装が多い気がする
多重継承できないのがな・・・
DataGridView内のチェックボックスにチェックがついてる行を一括で削除するボタンを作りたいのですが どうやれば出来ますでしょうか? 現在自分で書いてみたのは private void button9_Click(object sender, EventArgs e) { foreach (DataGridViewRow r in dataGridView1.Rows) { if (((string)Column5.TrueValue) == "1") { // チェック行をクリア (ここが上手くいきません) } } } どなたかお助けお願いいたします
foreachの中でコレクションの個数や順序を変更しちゃ駄目だ とりあえずチェックされてるrowだけ別のリストに取り出して Rows.Removeで消せ
537 :
535 :2011/01/23(日) 14:55:07
>>536 レスありがとうございます。
TrueValueを"1"と定義しているのでifで1になってる時、としたつもりでした
>チェックされてるrowだけ別のリストに取り出して
初心者なものですみません、DataTableで抽出ということであってますでしょうか?
538 :
デフォルトの名無しさん :2011/01/23(日) 14:56:49
ループ内で削除するときはインデックスの大きい方から回す for(int i=dataGridView1.Rows.Count-1;i>=0;i--) { DataGridViewRow r = dataGridView1.Rows[i]; って感じ
539 :
デフォルトの名無しさん :2011/01/23(日) 15:04:00
最初にこの問題に引っかかった時、逆順ループが思い浮かばずスタックに積んだのは良い思い出
たとえばDictionary<,>の操作だったらパフォーマンスのことも気にする場合はあるかもしれないけど DataGridViewが出てくる時点でどうでもいい どうせコントロールの操作に比べれば誤差
>>540 ていせい
インデックスで回すんだからDictionaryじゃなくてListか
544 :
535 :2011/01/23(日) 16:35:40
ずっと頑張っていましたがあまりに知識不足で先へ進めませんでした・・・ InvailidOperationExceptionはハンドルされませんでした。 コミットされていない新しい行を削除することはできません。 とエラーが出て、調べてみたところユーザーが行の追加可能にチェック入れてると出ると書いてあったので外してみましたが改善されませんでした。 C言語初めてまだ一ヶ月も経ってないのでいろいろと勉強不足ですね・・・
BindingSource使ってるならそっちを削除しないと駄目
たぶん今度は削除したのに更新されませんと来る
DataSourceかもしれないじゃん。
だったらDataTableの行でも何でも削除すればいいじゃないですかァーーーーーーーーーーーーーーーーーッ
誘導されてきました string data1 = "[value1] value2"; と言う場合変数data1の[ ]の中だけ(value1を抜き出したい)の文字列を抜き出して、他の変数にコピーしたいんです そういうメソッドはありませんか?よろしくお願いします
551 :
デフォルトの名無しさん :2011/01/23(日) 17:18:52
System.Text.RegularExpressions.Regex.Match 使い方は聞かれてないんで書かない
552 :
デフォルトの名無しさん :2011/01/23(日) 17:35:21
ワラタ
空気読めよ
string.Join("", data1.SkipWhile(c => c == '[').TakeWhile(c => c != ']').Select(c => c.ToString()));
まさかのIOC(S)CC開催
IOCCCなつかしす
>>552 なんかそれ汚くね?どうせ書くなら
\[[^]]*\]
だろ?
わざとかもしれんけど初心者スレだし念のため
>>561 こうじゃないのか?
(\[)([^]]*)(\])
プログラミングがなんなのかすら知らない状態からC#を勉強するならどんな本がおすすめですか?
(Y)o\o(Y) フォッフォッフォッ
>>562 俺はこっちのが好み。MS独自仕様っぽいけど
\[(?<str>[^]]*)\]
m.Groups["str"].Value
それの回答は意外と難しいんだよね 独習なんかは言語仕様にしか触れないもんね ほぼ全てのC#コンパイラがCLI、ひいては.NETを移植する形で実装されているのにさ
うん
お前らほんとわかってないな
>>549 は[value1[nest1[nest2]]] value2だった場合
value1[nest1[nest2]]じゃなきゃだめかもしれないじゃないか
だからこうしないと
var r = new Regex(@"[^\[\]]*(((?'open'\[)[^\[\]]*)+((?'close-open'\])[^\[\]]*)+)*(?(open)(?!))");
var m = r.Match(data1).Groups["close"];
はい
RegexOptions.IgnorePatternWhitespaceつけろよデコスケやろう
>m.Groups["str"].Value これ知らなかったな MSアホだからできないのだと思ってた
\Dってなんだっけと思ったら\[)だった
>>575 がアホだからできなかっただけでした、残念!
MSだとそんなアホ仕様もあり得る
580 :
デフォルトの名無しさん :2011/01/23(日) 19:08:30
このスレだけで4、5回はGroups[string]が出てるのに…
MSの糞独自仕様だとしても抽出範囲に名前つけれるのはすごく便利 正規表現の取り込み範囲バグとか想像しただけでうんざりだ
久々に人がいるな ↓ここまで俺の自演禁止
自演とかしっくりこないんです!
人?スクリプトの間違いだろ
>>555 これがIOCCCとか凶悪って。
現場でLinqを使えるようになるのはまだまだ先だな。
586 :
デフォルトの名無しさん :2011/01/23(日) 20:20:30
SkipWhile、TakeWhileはいいけど、IQueryable<char>→stringの変換には悪意を感じる ToArrayしてコンストラクターに渡せばいいやん
(クエリは同じ).Aggregate((s, c) => s + c) が素直だけど非効率
スクリプトの間違いだろ キリッ
スクリプトの間違いだろ キリッ キリッ
スクリプトの間違いだろ キリッ^3
一番いいLinqを頼む
コーディング規約でラムダ式とLinqは禁止にしました。 多人数で保守できる文法じゃありません。
うわぁ
JavaScript書くとき関数リテラルも禁止するの?
まあ、現場によっては仕方無いんじゃねーかなあ。 学習に掛ける時間が取れない場合も有るかもだし。 (個人にだったら、 「もっと頑張れよ」 って言うけど) 酷い所だと、オブジェクト指向の採用すら出来なかったりするらしいからな…。
というか、匿名メソッドが理解出来ればラムダ式で躓く事ってそんなに無いのでは
確かに今までC書いてましたとかJava書いてましたって人にはつらいよな
598 :
デフォルトの名無しさん :2011/01/23(日) 22:49:03
そんな規約作られたら嫌がらせにArray.FindAll使うよ絶対
性格の悪い奴はテスターに格下げです。
レベル低い人でもやらせればそれなりにできちゃうもんだとは思うけどね。 Linqを理解できないレベルのひとは、おそらくそれ以外の部分の理解だってそうとう 怪しいレベルだと思うけど、まあ、使えちゃってるわけでしょ?
コーディング規約かあ。 あんまし関係無い話だけど、フィールドとかプロパティとかメソッドとかの命名規則ってどうしてる?
命名はmsが用意してるじゃん…
だいたい.netの標準ライブラリに則ってる
・privateな要素はキャメル記法 ・publicな要素はパスカル記法 ・プレフィクスは用いない ・アンダーバーは用いない だっけ?
あくまでクラスライブラリのガイドラインなので privateというか外から見えない部分については踏み込んでないし 再利用性を考える必要がないものについては規定してない>MSのガイドライン
MSのコードではフィールドは先頭アンダーバー+キャメルケースが多い
俺、クラス名にプレフィクスTとか付けちゃってるわ… 長らくDelphi使ってた頃の名残が。。
俺もprivateフィールドはアンダーバー付けるな
610 :
デフォルトの名無しさん :2011/01/23(日) 23:21:46
プロパティのフィールド名→先頭一文字を小文字に変更って規約にする奴はマジで死んでほしい ハンガリアンより効率が落ちる
ClassでCとかStructでSなら分かるけどTってTypeであることを明示して何の意味が? 型か型じゃないか混同する場面は無いでしょw
>>610 private string displayName;
public string DisplayName
{
get{ return (displayName);
}
こういう記法を辞めろって事?
.NET Frameworkのライブラリは外から見えない名前の規約についてはバラバラだよ MSではとくに統一されてなくてチームごとに違うっぽい
>>612 return に括弧付ける意味が分からない。
public class MyClass
{
private string _displayName;
public string DisplayName
{
get { return (_displayName); }
}
public MyClass(string displayName)
{
_displayName = displayName;
}
}
>>612 引数をフィールドに代入する事も考えると、この方が好みかも
>>613 この本でも、複数の意見を併記してたね。
>>613 どうでもいいけど中古のほうが高いってどういうことだよ
619 :
デフォルトの名無しさん :2011/01/23(日) 23:37:26
プライベートでプロバティ定義する時どうする?
アマゾンはワンクリックで買うボタンがあるから、 間違って押すのを狙ってんじゃね?
621 :
デフォルトの名無しさん :2011/01/23(日) 23:40:32
>>612 おう、こんなんでPropertyChangedが発生しない不具合とか出来ても下らないから
あとprivate TypeName typeName;って命名もIntelliSenseが誤爆してウザい
>>619 System.Globalizationとかはパスカル記法だったと思う
自分は、プロパティはprivateでも普通にPascalCaseにするなぁ。
俺はprivateのメソッドやフィールドもパスカルだわ プロパティで自動実装できないものは仕方ないから_付けてる
>>616 .netの中はこれが一番多いからこれにしてる
迷った時はリフレクション使ってのぞけばいいよ
オレオレ命名は癌
>>616 以外がいることに驚き
色々なサンプルもこれ
prismなんかのフレームワークもこれなのに…
え?自動実装使わないの?
自動実装プロパティ便利だし、書くのも楽なんだけれど 自動実装プロパティと、自動実装じゃないプロパティが混在してるのが何となく嫌で 個人的には使わなくなった。
プライベートメソッドのほうが悩む アンダバー付けていいのかどうかを・・・・・
メソッドにアンダーバーはないわ。
書くのが楽 = 他人が読めない
まあ、privateは別にそこまで気にして統一する必要もないし。 自分は _camel と camel 混在してること多い。 あと、自動コード生成で作るコード限定で、 private T _Name = defaultValue; public T Name { get; set; } があったりも。生成元にNameとnameを書きたくないし、自動でcase変更するようなプログラム書くのも嫌だし。
>>629 ところがどっこいMSのソースにあるんだよ
>>625 Dictionaryのプライベートフィールドは_無しだったりするわけで、
プライベートのものはバラバラだから、
「普通は_を付けるはずだ!」とか思ってるなら、その認識のほうがよくないかと。
いっそ、言語仕様レベルで記法を強制統一してくんねーかなー
最近、フィールドの _ は、クラス内からであっても直接はあんまり使うなって意味だととらえてる。 クラス内からもプロパティやメソッド越しにアクセスしろ、だからあえて打ちにくい文字から始めるていう。 _ 付きのprivateフィールドを参照するのはコンストラクター内くらい。
>>634 英語とは限らないわけで、大文字小文字があるとも限らない
そういや、日本語名の変数とか作れたな。あんまり使った事無いけど。
SAPI5.1で再生中の音声をStopさせる方法を教えてください。 ■再生 SpVoice spv = new SpVoice(); ISpeechObjectTokens voiceInfo; voiceInfo = spv.GetVoices("", ""); spv.Voice = voiceInfo.Item(i); SpeechVoiceSpeakFlags flg = SpeechVoiceSpeakFlags.SVSFIsXML | SpeechVoiceSpeakFlags.SVSFlagsAsync | SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak; spv.Speak(talkText, flg);
日本語名変数いいよ。プライベートでは使いまくってるよ。 まじ読みやすい。
640 :
デフォルトの名無しさん :2011/01/23(日) 23:58:14
あと、変数名に日本語使うこと有る? 趣味のプログラムだとコメント書かなくても何とかなるから結構好きなんだが
641 :
デフォルトの名無しさん :2011/01/23(日) 23:58:21
列挙値は日本語って規約の現場はコードの質が尋常じゃなく低かった
ただし、全角英数は禁止にしないと地獄見る。
643 :
デフォルトの名無しさん :2011/01/24(月) 00:00:18
まあ for(int い=0; なんてコーディングされたら殺したくなるけどな
インテリセンスが漢字変換みたいになるのかw
メソッド内のローカル変数は、LowerCaseにする事が多いかなあ。
UpperCaseは使わない。
>>640 DataGridの列を、ItemsSourceをバインドするコレクションから自動生成させる時くらいかな。
滅多にやらない。
業務固有の用語とか、よっぽど英語ができないと変な英訳になるし、ローマ字使うんだったら もう日本語でいいだろって思うけど、あんまり賛成してもらったことはない。
647 :
デフォルトの名無しさん :2011/01/24(月) 00:03:53
日本語変数使う時でも、頭は英文字にした方がインテリセンスで幸せになれる
出直してくるか(´・ω・`)
日本語入力確定前にインテリセンスが働くようになったら使う Googleの検索じゃもうそうなってんだからMSもがんばれ
ローマ字の変数は困るよなぁ。みかか系もそうだっけ。
いちいち半角/全角押さなきゃいけないし今どっちのモードか意識してなきゃいけないのがいや
652 :
デフォルトの名無しさん :2011/01/24(月) 00:09:44
ちょっと前にどっかのスレであったけど 区分をKBNって書くくらいなら日本語の変数名にしろと思う
こうなるのかしら。 public class MyClass { private string _名称; public string 名称 { get { return _名称; } } public MyClass(string 名称) { _名称 = 名称; } } 書いてて思った。 半角/全角を一々切り替えるのが面倒。 後、大文字/小文字を分けられない都合で プロパティ名と引数名が被るのが、ちょっと気持ち悪い。 (名前空間的には大丈夫なんだっけ?)
低燃費をTNPって書くのを思い出した
ローマ字母数取りは業界じゃ普通です(キリッ
>>653 俺ならKuBuN
3文字主義者は知らん
ラップについての質問です あるコンストラクタの中で、 Aクラスのオブジェクトのリストを持つオブジェクトを、 Aクラスをフィールドとプロパティに持つwrapAクラスでラップすることはできますか? 文章下手だ…すんません
ためしに日本語識別子でコードを書いたことがあるけど、全角は自己主張がはげしくて コードが読みにくかった。 使うなら要所要所でだな。
>>658 何したいのか分からん
擬似コードで良いから書いてみたら?
662 :
デフォルトの名無しさん :2011/01/24(月) 00:15:39
コメントを日本語で書くから手間は大して変わらん、思考が中断されるのを嫌うんじゃないかな?
これでいいんじゃね? リストを持つオブジェクト.リスト.select(Aクラスのオブジェクト => new wrapA(Aクラスのオブジェクト));
半角全角の切り替えが面倒って言ってる人は、 なんで切り替えキーをカスタマイズしないんだ? 普通に日本語のドキュメント書くときでも切り替えは頻繁だろう?
どこに割り当ててる?
ドット打つ ↓ 切り替えキーターン! ↓ 文字打つ ↓ 切り替えキーターン! ↓ ctrl+space ↓ やっと補完出てきた ドット打って頭文字を打つ ↓ ctrl+space ↓ 補完までスムーズ!
全半切り替えずにitoって打つだけで 伊藤さんの欠勤日数 っていう変数名がインテリセンスに出てくるようにするべきだと思う
ひらがなキーにIMEのon/off。
669 :
デフォルトの名無しさん :2011/01/24(月) 00:36:32
IMEの記号を半角デフォルトにすると幸せになれる
英数キーに割り当ててたけど親指空いてるよなーと思って最近は無変換キーでon/off
>>661 >>663 レスどうもです
VSにたよらんとコード書けないです…
えーと
まず
[メインクラス][著者クラス][著者の本クラス][著者ラップクラス][著者の本ラップクラス]があります
[メインクラス]が[著者クラス]をnewします
[著者の本]のリストをフィールドに持つ[著者クラス]は[著者の本]クラスをいくつかnewし、ます
(著者インスタンスが著者の本インスタンスを持ってる感じ)
で、
[メインクラス]において、[著者]インスタンスを、[著者の本]のリストをフィールドに持つ[著者ラップクラス]でラップしたいです
また、[著者の本クラス]は[著者の本]をフィールドに持つ[著者の本ラップクラス]でラップしたいです
ただし、著者の本のラップは[著者ラップクラス]のコンストラクタでラップしたいです
どうでしょうか…
これでだめならまた出直してきます…
変換キーでIMEON 無変換キーでIMEOFFしてる
>>669-670 , 672
なるほどね
スレチだがそのへんにESC割り当てればVimが快適になるな
自己参照できるかって話かな?
>>672 俺がいたw
俺は更にcapslockをescにしてるw
capslockたん(´・ω・`)ショボーン
でも Capslock なんて C / C++ とかだろ。使うの。
ようわからんが著者ラップクラスがもつリストってのは著者の本ラップクラスのリストじゃないのか? そうしないと著者ラップクラスのコンストラクタでラップした著者の本ラップクラスがどこかへ消えてしまう
Caps2ctrlがデフォだと思ってた
680 :
デフォルトの名無しさん :2011/01/24(月) 00:55:38
それに間違って入るとウザいキー筆頭だよな
>>671 そう言うときのためのファクトリパターン
仕事場のはいじれねーんだよ だからいじったやつに慣れると職場で余計にストレスたまるから 今使ってるやつもいじれない
>>678 れすどうもです
ああなるほど
そうかもしれないです
一番の悩みは、リストに格納してある[著者の本]インスタンスを、コンストラクタ内(=メソッド使わない)で、リストではない[著者の本ラップクラス]でラップできるのか、という点だったのですが、もしかして見当違いだったんですかね…
ちょっと試してみます
また明日報告しますー
684 :
デフォルトの名無しさん :2011/01/24(月) 01:28:20
windowsのGUI部品に依存しないで同じような仕組みの部品作るとなると苦労するな・・・ これもバックグラウンドが透けないからや・・・
685 :
デフォルトの名無しさん :2011/01/24(月) 01:33:05
再度失礼します。
>>443 の投稿なんですが説明不足でした。すいません。
http://ideone.com/GOymD のプログラムを実行すると円が大量に描かれるものの、ウィンドウサイズ変更していると、
円が不自然な形になってしまいます。
それを以下の段階を踏んで修正しろというのですが、
@-1 プログラムから描写に必要な情報を考えて、円に対応するクラスMyCircleを作成せよ。
このクラスには適切なメンバ変数とコンストラクタを設定すること。
@-2 プログラムの中のDrawCircleをよく読み、MyCircle型のコレクションクラスに
円に格納する関数を作成せよ。このメソッドはフォームのコンストラクタから呼び出しておくこと。
(System.Collection.Generic名前空間にあるListクラスを使用)
*使用例
List<MyCircle> a = new List a<MyCircle>
a.Add(new MyCircle)(/*コンストラクタ引数*/));
a.Add(new MyCircle)(/*コンストラクタ引数*/));
MyCircle x = a[10];
@-3 プログラムの中のDrawCircleをよく読み、MyCircleクラスにグラフィックオブジェクトを引数にとって描写を行うメソッドDrawを追加。
また、Drawメソッドを呼び出してすべての円が描写できるようDrawCircleを書き直しなさい。
A 完成した@を改造し、三角形を描写できるようにする。
必要なのは@-3の終了段階で完成するプログラムと、Aのプログラムになります。
あんまり変えると他のパソコン使ったときに困るからCtrlとCapsLockを入れ替えるくらい。 これでも他の使うと結構ミスる。
>>542 >>543 で一応模範解答ぽいのはでてるがいきなりあれこれ入れすぎソースかもしれないな・・・
>>686 WPFってベクター系のお絵かきツールとか作りやすい?
それくらいの課題なら自分でやったほうがいいぞ あんたのためを思っていってやってるんだからな
独習C# の改訂版て年末に出てたけど評価はどうなの?
>>689 中共を新中国と呼ぶのは反日サヨクだよ。「中共」は、中国大陸においては中国共産党の略称である。
一方、中国大陸の外においては、中華人民共和国が国家であることを認めない人々が
「(中国大陸を統治する)中国共産党政権」という意味の俗称として使っていた
(この意味による「中共」は、日中国交正常化前の日本社会で使われていたほか、
現在でも、国共内戦で中国大陸から台湾に渡った中国国民党などが使っている)。
また「新中国」は、主に日中の国交正常化前、つまり中華人民共和国建国後は
台湾島を含む一帯を統治している中華民国を日本政府が「中国を代表する正当な政府」としていた時代(1912〜2009)に、
中国共産党を支持する日本人が中華人民共和国を指して使っていたものである。
いつもの馬鹿が深夜に頑張っているようです
やぁ、すれは落ち着いたかい(´・ω・`) SAPI5.1で再生中の音声をStopさせる方法を教えてください。 ■再生 SpVoice spv = new SpVoice(); ISpeechObjectTokens voiceInfo; voiceInfo = spv.GetVoices("", ""); spv.Voice = voiceInfo.Item(i); SpeechVoiceSpeakFlags flg = SpeechVoiceSpeakFlags.SVSFIsXML | SpeechVoiceSpeakFlags.SVSFlagsAsync | SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak; spv.Speak(talkText, flg);
COMはどう考えてもスレ違いだろ せめてSystem.Speech使え
696 :
デフォルトの名無しさん :2011/01/24(月) 13:46:48
>>32 のコードなんだけど、x86でビルドすると高速なのに、x64でビルドすると4倍以上遅くなる。
64bitって超絶遅くなるものなの?
たぶんレジスタ幅の関係かと
64bit用にするなら2ピクセル分を読み書きすれば早くなるかな・・・? やってみないとわからん
>>696 x64は昔懐かしのセグメント方式(64KBオフセットを切り替えて1MB)を、
同様に32bit環境下でやって擬似的に64bitメモリ空間を作り出している、
なんちゃって64bit。
DOS時代と違ってセグメント切り替えがCPU内部で自動的に行われる
ので、プログラムは楽だが、セグメント切り替えが発生しない状況でも
勝手にCPUがアドレス計算するので劇的に遅くなる。
つまり、x64はIA64のような本物の64bitではないので、大量のメモリが
使える代償として、メモリアクセスが遅くなる諸刃の剣。
>つまり、x64はIA64のような本物の64bitではないので、 この辺は補足しておいたほうがいいんじゃないの? MSの宿命である互換性を重視しないといけないのでそんな変なモード使ってるって たしかCPUそのものにはネイティブ64bitモードあったよね? 今のインテルって ・x86互換モード ・32bitモード ・64bitが数種類
702 :
デフォルトの名無しさん :2011/01/24(月) 14:26:32
つうかメモリー量考えたら36ビットぐらい有ったら十分だよな 古の12bitCPUじゃないが
703 :
デフォルトの名無しさん :2011/01/24(月) 14:28:41
速度低下の原因ってPAEのようなモードが動いてるんだっけ?
>>700 AMD64ネイティブモードはレジスタ数2倍かつレジスタ幅2倍なので
64bit長の計算なんかは速くなるが、メモリ周りに関しては
>>699 の
ままなので遅くなる。
計算が複雑でメモリアクセスが少ない状況だとたぶん速くなるよー、
一般的なアプリは大体このパターンだし、ってのがAMD64。
ようするに、x64が必要ないアプリの場合は、Anyやx64ではなく明示的にx86を指定すべき。
>>701 .NETアプリケーションでは64bitモードで動作できないってこと?
>>706 .netは問題ないでしょ
AnyCPUなら実行時に勝手に判別
64bit指定でコンパイルしとけばOK
32bit指定でも互換モードで動く
ただ現状64bitやAnyCPU指定で64bitOS上で動かす場合は使う部品によっては問題ありだしな
たとえばブラウザコンポーネントを使ってFlash表示する場合は32bit指定でコンパイルしておかないと
実行時にこける(まだ64bit版Flashでてないよね?
>>707 いや、そうじゃなくてx64では実際のメモリ幅が32bitらしい(
>>699 )ので
>>701 の画像の表の64bitモードでは動作しないのかなと思った。
まぁギャーコラ騒いでたのは無知が原因ってことでおk?
>>709 まーこういうのはやってみないとわからないしねえ
勉強になったね♪ということでいいのでは?
色々決めつけてかかる奴とは一緒に仕事したくないな こいつのところにバグがあっても認めないので修正作業が前に進まないことが結構・・・・
あたし認めない、あたし認めないよ
しっくりこないんです
コンパイルは通っているので僕のバグではありません
ジェネリックの型指定部分をType型変数で呼び出すことはできないものなのでしょうか? イメージ的にはこんな感じです。 こんな関数が定義されてて・・・。 void Hoge<T>() { /*型に応じて内部処理を変える*/ } こんな感じで呼び出したい。 Type typeInt = typeof(int); Hoge<typeInt>(); Type typeFloat = typeof(float); Hoge<typeFloat>();
> void Hoge<T>() { /*型に応じて内部処理を変える*/ } この時点でジェネリックにする意味が崩壊してないか
出来るのかどうかすら不明なのですが、質問です。 C# でリソースにexeを追加してバイナリにして、それを実行・・・なんて できるのでしょうか?
>>716 中でtypeof(T)ってやってるんでしょ。
ジェネリックの実質的な意味は無いけど、戻り値がT型の場合は
利用者がダウンキャストしなくていいという点では意味があるので
実際.NETのライブラリでも使われてるパターン。
でもvoidだったら全く意味無し。最初からTypeを引数に取るべき。
>>718 ファイルに書き出してプロセスを起動するだけ
やっぱFileStreamでバイナリ書き出してdiagnosticsで起動しかないのかなぁ@w@
>>718 できんじゃね?
プロジェクトを右クリック > 追加 > 既存の項目 > ファイル選択
追加したファイルのプロパティで“コンテンツ”を“埋め込まれたリソース“に変更
722 :
デフォルトの名無しさん :2011/01/24(月) 20:30:16
Padding/PaddingConverterのようなAllプロパティをつくりたいのですが、 自作のTypeConverter.CreateInstance()内で変更されたプロパティがどれか知りたい(All or Left,Top.Right.,Bottom)のです。 TypeConverter.GetProperties()内で値を保持すれば行けそうな気もするけど、正しいかどうかよくわからない。 どのようにすれば実現できるか諸先輩方々ご教授願います。
配列の動的増減って可能ですか? 簡単なお絵かきツールを作っているのですがDrawLinesなどの引数は Point[]なのでなるべくならList<>などからの変換を避けたいのですが・・・
つ計測
>>725 無理。List<T>.ToArrayでその都度変換するしかない。
DrawLinesにかかる時間とList<>→[]の変換にかかる時間の比ってどれくらいだと思う?
たぶん3桁くらいDrawLinesの方が時間かかるよ。
俺にレスされても。。
>>725 >>726 なるほど
細かく分ければ増減時の負荷も減りそうなんで諦めます
ありがとうございました
負荷なんか実質ゼロだから要らんこと気にするな パフォーマンスを考えるときは一番時間がかかってるところだけが重要で ほかはいくら非効率だろうが全く影響ない
そうは言うがな大佐
731 :
デフォルトの名無しさん :2011/01/24(月) 23:47:36
List<T>に_itemsってT[]型のフィールドがあるので、リフレクションで取得する ↓ Reflectorでも使ってDrawLinesをパクる ↓ DrawLines内部でpoints.Lengthを使ってる所を書き換える 変態になりたいならこれで
質問 FormBorderSty;e=FixedSingleのFormをタイトルバーだけ表示させる方法を教えてください Size(0,0)指定だとクライアント領域が若干飛び出てしまい、美しくありませんでした
>>708 x64はレジスタ自体は64bit幅だが、CPUキャッシュとメインメモリのやりとりが処理がクソ重いので、
CPUの各コアのキャッシュ内で収まるように並列化すればいい。
たとえば巨大な画像処理の場合だと、CPUキャッシュに収まるようにブロック化して、コア数だけ
並列で処理すればいいという事になる。
基本的にL1キャッシュを意識して組め。
>>732 試してないけど、Regionでタイトルバーの部分だけ表示するようにするとか。
でもなんでそんなアホみたいなことしないのかなw
意味あると思えない
ちわ。 WPFで時間を簡単に計測する手法はなんでしょうか? WPFでTextBoxにユーザが値を入れたら、処理を開始するプログラムを作ろうとしてます。 で、TextBoxのTextChangedを使おうとしたんですが、これは一文字ごとにイベントがきます。 そこで入力がすんだら、処理を開始する、という風にしようかと思っていて、 最後のTextChangedから1〜2s待つという処理を作ろうと思ってます。 たしかWindowFormでは定期的に呼び出されるイベントがあった(ような)気がします。 そこでWindowのプロパティを眺めていたのですがそういうイベントがなさそうです。 別スレッドで回すしかないですか?(´・ω・`)
737 :
デフォルトの名無しさん :2011/01/25(火) 10:57:51
>>736 DispatcherTimerてのを使います
メソッドを分割する事によるオーバーヘッドってありますか? 例えば for (;;) { hoge += hogehoge; } の時 for(;;) { piyo(); } void piyo() { hoge += hogehoge; } と比較して
多少 でも実際のところは処理内容にもよるけど誤差だと思うよ
JITによってインライン展開されるかもしれないし、されないかもしれない。
つまり普段使いでは無視できる差だけど、 ミリ秒でパフォーマンス詰めていくと不利だって事ですね ありがとう
>>742 そう
むしろ速度を気にしすぎて可読性が悪くなのるのならダメだしねえ
今の時代可読性を犠牲にしてまで詰める必要があることがどれだけあることやら・・・
ミリ秒で詰めるレベルのパフォーマンスロスでもない マイクロ秒ナノ秒レベルの話
そもそもミリ秒頑張って詰めるならC#で書かないって話になりそうだけどね そんなの詰めたところでWindowsで適当にサービス動いたりしただけでもうチャラになるし
746 :
デフォルトの名無しさん :2011/01/25(火) 13:52:00
>>742 1GHzって1msecで100万クロックという計算になる。で、そのオーバーヘッドがあったとしても数クロック分
1回1マイクロ秒のロスだって100万回やれば1秒だぞ
>>746 >1GHzって1msecで100万クロックという計算
桁ちゃいまっせ
>>747 でもさ
動画のエンコードとかひたすら処理をするのなら大きいかもしれないが
GUIもからんで人間が行動起す->イベント発生してその関連の処理->人間の行動待ち
とかならそれこそ考えるだけ無駄だぜ
てかほとんどの場合最適化対象だろ
>>739 の例だったら普通にインライン展開されて終わりだろ。
インライン展開されないようなメソッドは、メソッドの中の処理自体が呼び出しコストより何桁も重い。
つまり考えるだけ時間の無駄。人間が頑張ってやるような事じゃないわ。
752 :
デフォルトの名無しさん :2011/01/25(火) 14:02:06
>>752 1GHzを1億Hzって読んでた
恥ずかしい
>>753 超和む
マルチスレッドでなでなでしてあげたい
だれか私に、一番良い
>>753 をマルチスレッドでナデナデするコードを教えてください
とりあえず、Parallel.For?
756 :
デフォルトの名無しさん :2011/01/25(火) 17:19:54
/// /// C#やりたい放題すぎワラタw /// byte[] array = new byte[1024]; byte val; fixed (byte* p = array) { byte* q = p; for (int i = 0; i < ary.Length; i++) { num = *q++; } }
c#で現在のPCの使用中ソケット数や待機中ソケット数などの ソケットの状態を取得するにはどうすればよいでしょうか?
それはネイティブAPIよばんとだめよ。
759 :
デフォルトの名無しさん :2011/01/25(火) 19:39:07
DLL作成が好きです。だれか、C#から作って欲しいDLLを言ってくれませんか? 作ってあげますよ。
じぶんでつくれるので、結構です
じゃあ頼む core i7 CPUのdell製パソコン作って僕にください
>>756 測ってみるとわかるがBuffer.BlockCopyとかArray.Copyとか使ったほうが
自分でポインタ触るより速いし安全
>>759 じゃあ任意精度浮動小数点ライブラリを頼む
>>759 じゃあVisualStudioレベルのGUIを簡単に作れるフレームワークを頼む
そんなDLLで大丈夫か?
>>734 それじゃあダメだ、オラもう自分でがんばるよ(’ω’)
767 :
デフォルトの名無しさん :2011/01/25(火) 21:21:59
>>759 なんとなく矩形選択できるTextBoxが欲しい
あとIntelliSenseにも対応してほしいんで、構文解析器の基底クラスと
設定ファイルからパーサー自動生成するカスタムツールもよろしく
768 :
デフォルトの名無しさん :2011/01/25(火) 21:24:37
>>767 >矩形選択できるTextBox
意味がわからん
秀丸のCTRL押しながらマウスで反転させると・・・ってのと一緒?
>>矩形選択できるTextBox >意味がわからん いやそのままだろwww
770 :
デフォルトの名無しさん :2011/01/25(火) 21:33:16
秀丸は知らんが、VSやサクラエディタならAlt+ドラッグで出来る奴
771 :
デフォルトの名無しさん :2011/01/25(火) 21:37:43
codeprojectにVSエディターもどき登録されてなかったっけ?
日本語の不自由な連中が集まるスレと聞いてきました
>>772 あなたも日本語が不自由でご苦労されたんですね
ここはあなたのような人が大勢いますから、安心して書き込んでくださいね
774 :
デフォルトの名無しさん :2011/01/25(火) 23:02:41
VC# Expressってインストーラが生成できないと聞きましたが、 無料環境でExpressしか選択肢がない人の場合はどのようにしてインストーラを作るのでしょうか?
775 :
デフォルトの名無しさん :2011/01/25(火) 23:06:38
>>774 ClickOnceって機能で、インストーラーは作成できる
普通のインストーラーが好みならフリーのインストーラーが色々あるから試してみたらどうかな?
Zip 配布じゃだめなの ?
SilverLightで・・・
今時、インストールしなきゃ使えないなんて構成自体を考え直すべきかも
質問です。 ネイティブ(アンマネージド?)なDLLから提供される C++ のインターフェイスクラスを C#から利用することは出来ますか? COMみたいな感じだと思うのですが。 // C++DLLのインターフェイス class IFoo{ virtual void __stdcall Method() =0; virtual ~IFoo(){} }; // IFoo*を取得するDLL関数 extern "C" __declspec(dllexport) IFoo* GetFoo(); // C# [DllImport("foo.dll")] extern static IFoo GetFoo(); // 実際の利用 IFoo f = GetFoo(); f.Method(); こんな感じの利用が可能なら、C#のIFooの定義方法とか教えてもらえると嬉しいです。
無理です C++/CLIでラップしましょう
残念 ありがとう
782 :
デフォルトの名無しさん :2011/01/26(水) 09:27:02
ダイアログ用のフォーム作ってるんだけど、CommonDialogって継承してメリットあるの?
ない 自分で作ったダイアログはコモンダイアログとはいわない
784 :
デフォルトの名無しさん :2011/01/26(水) 09:54:08
Commonの意味を考えると胸熱
786 :
デフォルトの名無しさん :2011/01/26(水) 10:22:58
>>785 肛門のローマ字読みを間違えたのかな?w
CommonDialogのボタンってこんなの? ∧__∧ (´∀` ) (⊃⌒*⌒⊂) /__ノωヽ__)
((*)) Koumon Common こういうことか・・・ ほんとだ!!半分以上一致してる こりゃ間違いないなぁ
789 :
デフォルトの名無しさん :2011/01/26(水) 10:29:15
ネイティブDLLを一つ使っているんだが、64bit版は64bitシステム、32bit版は32bitシステムでしか動かないという凶悪な仕様なんですよ この2つを一つのインストーラーで何とかするスマートなアイデア有りませんかね?
DLLを呼び出す側でなんとかすればいいんじゃね?
791 :
デフォルトの名無しさん :2011/01/26(水) 10:30:46
792 :
デフォルトの名無しさん :2011/01/26(水) 10:33:38
あとLGPLなんでDLLには手を付けたくないんですよ、自分のソースが汚すぎて人様には見せられる物じゃありませんから
793 :
デフォルトの名無しさん :2011/01/26(水) 10:33:49
>>791 作り変えたりしないのならDLLを呼び出す前にDLLを単なるバイナリファイルとして読み込んで
サイズで比較とかチェックサムで比較とか
あとインストーラーがよくやるのはインストール前は別の拡張子にしておいて
インストールの段階で拡張子をターゲットに変更するとか
肛門ネタから一気に話が変わったな
794 :
デフォルトの名無しさん :2011/01/26(水) 10:43:52
>>793 今のところ後者のやり方がベターなんですかね?今のところClickOnceのお手軽仕様を考えているから
起動直後にチェックしてリネームですかね。それか何か面白いフリーのインストーラーでもあったら
教えていた出ると有り難いです
元々08stdで作っていたんだが、wpf環境が破壊されてデバッグ不可になり、泣く泣く10exに変更したんでclickonceなんです
それはVS2008入れなおした方がいいんじゃね?
796 :
デフォルトの名無しさん :2011/01/26(水) 11:04:35
>>795 netで調べてVSどころか.netまで入れ直してその他やっても復活できず
Win7 64だと簡単には直らないのかなぁ .net3.5標準装備だし
あ、3.5もちゃんと入れ直したんですけどね
JITデバッガの問題?
798 :
デフォルトの名無しさん :2011/01/26(水) 11:14:30
>>789 まるでDLL開発側の仕様のように言うなよ。
OSの糞仕様なんだから。
そもそもVSのWPFプレビューはとんでもなく糞。 Blendを使うとBindingのプレビューや、MVVM向けのライブラリも付属してるから WPFやるならBlendを使ってXAML側を編集するのがオススメ。
801 :
デフォルトの名無しさん :2011/01/26(水) 15:40:02
802 :
デフォルトの名無しさん :2011/01/26(水) 15:40:42
つづき なぜかというと、.net 3.5 のクラスに"keybind"とかそんなのがあったから、どうかなと思いまして。
その程度の判断もつかないような人間なら無理だろう
まあ、P/Invoke だらけになっていいならキー入力のフックはできたはず。
自分は郷に入れば郷に従え 的な感じでやってるけど 需要あるんだなぁ
807 :
デフォルトの名無しさん :2011/01/26(水) 15:52:02
>>801 実現するとすれば
・アプリを常駐
・特定の実行ファイルを監視して起動してるようならフック
・入力があったらキーコードを偽装
こんなところかね?
キーボードフックならいっぱいありそうだが
お返事ありがとう まあ、日曜プログラマーの底辺層なので、ライフワークでやってみます。
809 :
デフォルトの名無しさん :2011/01/26(水) 16:53:12
それでXKeymacs C++でMFCを使っているようで、Visual Studio の勉強も必要に。 林晴比古先生の書籍の"Visual C++ 2008 シニア編"でも読むかな…
>>800 思い込み
テンプレートやリソースやアニメーションの編集機能はしょぼいけど、
VS2010のプレビューやバインディングデザイナはBlendのものと実際大差ない
>>810 そうなのかなぁ。
同じフォームをVSだとエラーだけどBlendだと正常にプレビュー出来るって事が多々あるんだけど
これは俺のコードの書き方が悪いのかな。
むしろ逆のほうが多いんだが コードビハインドで落ちてるんじゃないの?
エラー出るコード見せて
WPFで苦労してる奴見ると笑える。 なんでわざわざJava屋と同じ轍を踏むんだ?
WinFormsで作る方が苦労するからに決まってるじゃないか
>>815 問題があっても苦労はしてないから使うに決まってるだろ
819 :
デフォルトの名無しさん :2011/01/26(水) 22:20:21
Wpf慣れたらWinformで出来る程度のことならWinformより手間とは思えないけどな 皆苦労しているのはそれ以上を求めているからだけだよ で、MFCで同じ物作るよりは数段楽だぜ
Winformsみたいな枯れたコントロールばかりで何を苦労するんだか。 苦労して作ったGUIほど間違いなく、ユーザーには使いにくいのに。 JAVA製のGUIアプリの糞さを見れば明らか。
確かにSilverlight製のUIは使いにくいものばかり。 どれが有効なボタンかすら分からないようなデザインとか。
ああ、環境の問題と作り手の問題を区別できないような人でしたか。
Silverlightで見た目重視のUIにするならゲームなんかのUIを学ばないとなあ・・・
質問です 列挙型の変数のメンバに「#」の文字を使いたいのですが、 どういうふうに書けばいいですか?
825 :
デフォルトの名無しさん :2011/01/26(水) 22:41:16
>>822 だから自由度が高いGUIライブラリは糞ってことだ。
昔のMSは言ってたじゃないか。
UIは統一性が大事だって。だからUnixは使いにくいんだって。
>>826 やっぱり環境の問題と作り手の問題を区別できないような人じゃねーか。
828 :
デフォルトの名無しさん :2011/01/26(水) 22:46:52
>>827 でも前宣伝の仕方次第では環境に変な作り手がよってくるのも事実だしなあ・・・
アンドロイドとiOSの違いというか
片方はガチガチでエロも厳しい
片方はフリーダム(すぎ
まあUIの話じゃないけどさw
ダメだこりゃ。馬鹿に何言っても通じない。 いいかげんVistaと7の不人気の原因を真摯に受け止めろよ。
>>825 全角で書いてもIDEが全角と認識しないようなんですけど。
1億5千万本以上売れてるOSが不人気とな?
彼は妄想の世界の住人です
どうみても今でもXPのUI最高です。
XPはセキュリティ糞じゃねぇか
836 :
デフォルトの名無しさん :2011/01/26(水) 22:59:27
swingが糞だったのは主に速度、wpfはwinformに比べても高速だぞ
>>815 >>820 向こうの事情はよく分からんけど、有名どこ?のSwing・AWT・SWT・JFace・他色々はWinForms的だよね?
JavaとWinFormsを批判してんのか?
XMLでUI定義とか別に珍しくもない。
Javaならgui4jやJava FX、CならGTK+ Glade、C++ならQtのuic、Adobe FlexならMXML、MozillaならXUL みたいに数えたらきりがない。
.NETはWPFやSilverlightでより先進的な地位にある。
後塵を拝して取り残されるような事にならずに済んで喜ばしいと思うが
自分に理解できなかったからって叩くのは馬鹿のやることだろ。
WinFormsでも面倒なだけで外観は自由にできるし Direct3Dを直に使ってUIを自前描画したアプリだって世の中にはけっこうある
頑張ればできるけど、保守性最悪でメンテナンスできなくなるぞ…
SwingはAPIはWinFormsに近いけど フルスクラッチだから仕組み的にはどっちかというとWPFでしょ
自前でやってるそういったアプリは大抵使いにくいんだよな。 そういうのって開発者とは別に、開発やUIに無知な馬鹿が デザインやUI仕様に口出しして開発した場合がほとんどだから。
使い慣れたUIの流儀は守って当然。WPF使って独創的なUI作るわけないだろ。 批判してる連中はあり得ない前提を持ち出してきて、さも当然のように語りだすから困る。 WinFormsではちょっと使いやすく変えたい場合でも山ほどコーディングしないといけない。
>>830 どうせToStringの結果を変えたいんだろ?
enumのメンバに[EnumString("A#1")]のようなカスタム属性付けといて
クラスでラップしてToStringオーバーライドして中でリフレクションで取得するか
enum使わずにSystem.Drawing.Colorみたいにするか
846 :
デフォルトの名無しさん :2011/01/26(水) 23:20:26
>>843 XML派生言語は柔軟性が高いから、厨仕様を呼び込みやすいんじゃないか
>>843 それに近いhtmlはどうするだよ
整形用テキストを解析してUIにしちゃうってのはこれだけ普及してるし
WPFだってhtml+CSS+JavaScriptの組み合わせのようなことをやってるじゃん
Blend使ってたらXAMLはメリットしかないぞ 基本的にXAMLを見たり直接触ったりする必要は無いし もし手で編集してもWinFormsと違ってデザイナが壊れることが無い
俺はXAML良いと思うんだがなぁ
UIの定義ぐらいならいいがデータフォーマットとしては致命的に遅すぎる。 FinFSもそれが原因で頓挫したんじゃなかったか?
>>850 XAMLとWinFSに何の関係があるの?
>>846 そんなものは自然に淘汰される。
HTMLだって昔はチカチカ光ったり、文字スクロールさせたりするようなのが流行ってた。
今では全然見なくなったのが何よりの証拠。
853 :
デフォルトの名無しさん :2011/01/26(水) 23:43:18
XAMLで気になるのは、ミスった時エラーを吐かずに黙りになる事が多々ある ここら辺だけは改良して欲しいとこだなぁ
最近はFlashがチカチカする。早く淘汰されないかな。
855 :
デフォルトの名無しさん :2011/01/26(水) 23:43:46
>>852 >全然
すくなくとも1サイトは存続してないか?w(ネタ的として振ってみるw
ところでSliverLigthで外部のサイトのアドレスから情報を引っ張って来る物を作りたいんだが
そういうことってできる?
アクセス権限がどうので自分のサーバーの外にはでれないとかどこかで見かけた気がしたんだが
気のせいならいいのだが・・・
>>855 クロスドメイン制約で無理。JavaScriptでもFlashでも無理。
明示的にクロスドメインアクセスが許可されているサーバーにはアクセスできるけど
そうでなければWebサービスを経由するしかない。
OOB+ElevatedPermissionsなら制限なし。
なんかちょっと前に、HTML5+JavaScriptのデモでタイトル文字列をmarquee的にスクロールさせてたうざいデモサイトなかったっけ? 最先端のもののはずなのに、懐かしいものを見た気分になった。
>>855 あのサイトはあのまま変わらないから価値があるw
860 :
デフォルトの名無しさん :2011/01/26(水) 23:57:11
>>856 ありがとう
やっぱり見間違いじゃなかったか・・・
>>858 まあ設置場所が楽天関係になって閉鎖とかにならなければ永遠に残りそうだな
そりゃちょっとした広告と見せかけて裏では世界中からエロ画像を収集して 作者にせっせと送信してたら困るからな
>>856 JavascriptならJSONPで一応クロスドメインアクセスできる
Silverlightで使えるかどうかはしらないけど
DataGridViewのデータソースに直接アクセスしたい場合どうしたらいいですか? 例えばバインド元データの件数を知りたい場合、 ObjectがIList,IListSource IBindingList IBindingListViewの どれ該当するか判定し、キャストした上で処理するという事で合ってます? ITypedList?なんかもあり得ます?
object source = データ; var collection = source as ICollection; if (collection != null) { count = collection.Count; } else { Debug.Assert(source is IEnumerable); count = source.Cast<object>().Count(); }
まわりくどーい
866 :
864 :2011/01/27(木) 00:42:41
そういえばCountはICollection.Countが使えるかどうかのチェックを中でやってくれるんだった ((IEnumerable)source).Cast<object>().Count()でおk
867 :
864 :2011/01/27(木) 00:46:54
何度もすまん
CastしたらICollection<T>じゃなくなるからCountが遅くなるな
気になるなら
>>864 で
IListSourceが邪魔だな 今だとなんでもかんでもIEnumerable<>だけど時代を感じる
XPのUIが最高? Lunaにそこまで惚れてる奴がいるとは・・・
ユーザーがXPに馴らされてるおかげで アプリケーションのUIがダサくても大目に見てもらえてたんじゃないか
Whistlerの頃のXPのThemeはなかなか良かった
XPまでのWindowsは重い処理してる時のテアリングが気になる
874 :
デフォルトの名無しさん :2011/01/27(木) 02:30:18
>>873 あれは同期無視でとにかく処理しちゃえってことだからな
重いとか関係なしに出るよ
875 :
863 :2011/01/27(木) 02:32:25
>>864 丁寧にありがとうございます。
各インターフェースはICollectionかIEnumerableを継承しているんですね。
ICollectionなら素直にCountがあり、IEnumerableの方は拡張メソッドで
IEnumerable<T>にキャストすればCountが使えると。
ん?キャスト?O(n)でなくO(1)で処理されるんですか?
>>865 にはちょっと同意。
何でもかんでもとりあえずバインド出来ますよ
ってユーザーの利便性を優先した代償なんでしょうか。
JAVAからC#に移って、文化の違いに戸惑い中。。。
T[] と IEnumerable<T> と IList<T> って使い分けてる?
877 :
863 :2011/01/27(木) 02:55:29
>>875 自己レスです。
多分理解しました。
遅延実行を利用して返却する値を個別にキャストするんですね。
その結果、T型を列挙するIEnumerable、つまりIEnumerable<T>になると。
>>843 デザイナとコードの分離なんてまやかしだって事だな
夢物語に過ぎなかった
デザイナについては、設定をXMLにシリアライズするかコードにシリアライズするかの違いしかないだろ 普通に考えて、わざわざコードにするほうがずっと実装面倒で不自然な頭おかしい設計
880 :
デフォルトの名無しさん :2011/01/27(木) 10:25:36
>>879 XAMLはXMLを態々コードにプリコンパイルしてからさらにCLIにコンパイルする方式なんだが
態々コードってどんなコードかと一瞬考えてしまったじゃないか 態々漢字変換すんなし
>>879 XMLは遅い。コードのほうが圧倒的に速い。
XML信者なんとかしてくれ きまりきった形式で中身も保証しているデータをCSVではなく XMLとか サイズが大きくなるんだ・・・ マジ勘弁
>>880 違う
XAMLはテキストかバイナリの形でリソースに保持される
保証すると言われてもな
CSVはオワコン
csvで木構造を書くのは大変そうだなw
CSV信者なんとかしてくれ
サイズ気にしてるのにテキストフォーマット選択してる時点で阿呆
SilverLightで簡単なエロゲ構築スクリプトのようなの作りたいんだけど ・silverlight製プレーヤーは汎用型でバージョンアップ以外はいじらない ・htmlなどの外部にスクリプトの読み込み先アドレスが置いてある(もしくはhtmlかjavascriptから自前プレーヤーに与える ・sliverlight製プレーヤーは上記で与えられたアドレスから自前スクリプトを読み込み解析する こんな感じのことは実現できますかね? 当然すべての部品は同じサーバー上においてあります。 あくまで外部スクリプトなどをいじることで汎用的な対応をしようと思ってます それとは別件で、sliverlightアプリを指定したサイト以外で動かないようにする方法はありますか? 標準機能で無い場合はなんらかの外部情報を入手して判断しようかと思ってるんですが
CSVにするようなデータをXMLで書く奴はただの馬鹿だろ。
CSV使ったMLとか使いにくいだろww
XMLパーサが遅すぎ。どうやっても速くはならない。 パフォーマンスが問題とされる分野はどこもガチガチ固定長フォーマットがデフォ。
ガチムチは帰れ
適材適所なのは間違いない
>>893 CSVで馬鹿にされたからって、何言ってんだコイツ
XMLでもSAXならそれなりに早そうだけどどうなのエロい人
UIの情報をCSVや固定長で格納しようとか頭おかしいだろw
そうそう。 しかも行列データをXMLに格納しようとかもっと頭おかしい。
yaml最強伝説
これだけ利用されてるhtmlなどを全否定とはこれまた
お前ら絶対わざと煽ってるだろw
適材適所だろ。 XML信者が調子乗って何でもXMLでやろうするのが問題。 昔、Java最強とか言ってなんでもJavaでやろうとしてほとんどの分野で失敗して、 一部のサーバ分野でしか使い物にならなかったのと同じ。
json最強つってんだろ?
読めなくていいなら俺様パッカー使え 今なら年間10円にしとくから
ところで何でもXMLでやろうするやつってのはどいつだい?
>>907 MSにそういう一派がいてプロジェクト失敗してんだよ。
何でもXMLでやるわけないじゃん馬鹿なの? XMLは開発者なら誰もが使えて、HTMLで大成功した実績ある方法だ。 UIの木構造をインスタンス化するMLとしてXML以上の選択肢なんてないだろ。 俺仕様のバイナリデータにしたり *ここは触っちゃダメ*と書いて、デザイナからしか編集しないでねと言うのが本当にいいと思ってるの?w
>>910 昔、散々やってJava屋のデスマーチ何度も見たろ?
>俺仕様のバイナリデータにしたり COMの否定ですか? MS信者失格ですね。
設定ファイル(キリッ
>>911 XML使ったらデスマーチになるとでも?wwwww
>>912 デザイナからしか編集できないようにするのはやっぱり嫌なんじゃねーかw
以下自分の薦めるデータフォーマット以外での書込み禁止
>>917 俺は適材適所でやるべきだと思ってるからプレーンテキストで書いて、サーバでDATフォーマットにしてもらうわ
XMLを嫌う理由がわからん 速度重視なら本運用でコンバートプログラム書いて早くなるようなキャッシュを作ればいいだけだし 独自のデータフォーマットを構築する方が時間無駄のように見える
System.Xml.Linq使って言ってるよな?
>>921 釣れますか?
そういえばネオコアとかいうXMLDBをどこぞのページが大プッシュしてたけど
最近見ないなwwwww
実際広く使われてるように書かれてたけどどうなんだろうな
データの定義情報だけならともかく、データそのものにXML使うとか商用ではあり得ないよ。 数千万件のデータをXMLでやってたら遅すぎて話しにならん。 2日のバッチ処理が1週間かかるよ。しかもデータ量爆増するし。
XML否定派は頭おかしいわ…。 そんなもんリレーショナルデータベース使うに決まってるじゃねーか。
いまどき分散KVSですよ
XML データベースで試しにググってきて引っかかったページの中に XMLDBの盛り上がりを見逃すな! とか2007年の記事があってクソわろたwwwww このコンサルどんな気持ちなんだろ
XMLが向かない分野わざわざ持ち出してXML否定するとか
否定派も肯定派も結局は適材適所派という無意味な争い
>>926 負荷計算すらまともにできないから
未だにコボラーが幅を利かせるのですよ。
932 :
デフォルトの名無しさん :2011/01/27(木) 14:53:51
数千万件のデータをXMLで保持して、それをそのままDOMで処理とか現実であり得ない例出されてもな・・・ 幾らXML好きでも、一端DBに入れて処理するのは当たり前でしょ え?もしかしたら現実にそんな設計する奴居るの?それなら一大事だが
>>932 ばか・・・大手でもアフォはいるんだよ・・・・
最底辺の現場は恐ろしい事やってるんだな。 ていうか否定派もUIの木構造をMLで記述する点については否定してないんだな。
否定派とか肯定派じゃなくて
>>925 は頭悪い派だな
もうアホに構うなよ
937 :
デフォルトの名無しさん :2011/01/27(木) 14:57:16
>>933 それさ、XMLが悪いんじゃなくてバカが幅利かせているのが悪いだけだな
>>932 普通に数億円以上規模のプロジェクトでは、
仕様決める側はプログラムなんて全く書けない自称SEばかりなんですよ。
だから、流行のJavaで!! XMLで!! とか平気で言う。
>>935 俺は醜態を晒すことによってXML否定派のネガキャンしてると見たね。
そうでなかったら・・・
>>938 金払いがいい客相手ならなんだって作るわ。
そんなやつらでも数億円以上のプロジェクトに参加できるなんて不公平ではないかね
>>940 不公平だから日本のIT業界は腐ってるだろw
普通特に理由なければXML選ばないか? レコードが多くなったりしたらSQLだけど。
どんな判断だ
もう飽きたから続きはマ板でやってくれよ
>数億円以上のプロジェクトに参加できる むしろしたくねぇよ バカばっかりだぞ? 理由なければXML選ぶとかいみわかんねぇ
マ板でやれ
速度も何も気にしないならXML尻荒いざーで出力 大量のデータならデザイナでDB自動生成 こんな私ですがお嫁にいけますか?
詳しくはマ板で。
>>890 可能。
Silverlight初期化時にHTMLから任意のパラメータを渡せる。URI渡してSilverlightからダウンロードすればいいだけ。
HTML DOMの操作も可能なので、もっと高度なこともできて、
たとえばSilverlight用のDLRを使うと、HTMLのscriptタグに書かれたrubyやpythonのスクリプトを
動かせるんだけど、それはSilverlightプラグインから自身が貼られてるHTMLのDOMを読むことで実現されてる。
指定したサイト以外で動かせないようにするには、自分自身のURIはSilverlightのAPIで簡単に取得できるので
あとはご自由に。
>>949 よかったレスもらえてw
XML関連でスレが埋まりそうな勢いだったのであせったw
想定してたこと以上にできそうですね
ありがとうございます
チッ
ク
Be
long
続きはマ板で
Formを実行時にデザインモードにする事はできませんか? ISiteのDesignModeあたり関係無いかと調べてはいるのですが、全くわかりません。
なんで実行時にデザインモードにしたいのさ
(´・ω・`) …
面白いかなって…
MSのサンプルにあった気がする
静的クラスでインターフェースの継承が使えないのは何か理由があるの?
962 :
デフォルトの名無しさん :2011/01/29(土) 02:00:03
インスタンス化できないからに決まってんだろダアホ
静的クラスで継承を使う理由があるの?
964 :
549 :2011/01/29(土) 02:49:13
試行錯誤してたんですが、解決しないので質問させてください string[] temp = GetFileName(); foreach (string n in temp) dataGridView1.Rows.Add(); Regex reg = new Regex(@"\[[^]]*\]"); Match m = reg.Match(temp[0]); if (m.Success) MessageBox.Show("検索された文字が含まれています"); 変数tempにファイル名が代入されるんですが 例えば、"[名前1] タイトル1"といファイル名だったら 配列の変数nameに文字列"名前1"、同じく配列の変数titleに文字列"タイトル1"と代入したいのですが 含まれていた場合、文字列を抜き出すというのが理解できません 自分でも調べてみたんですが、文字列が含まれていたかいないかくらいしか判断できません どのようにしたら抜き出せるんでしょうか?
>>961 普通に考えて、使う理由考える方が大変。
>>963 Java 屋さんかな?
Java だと(アノテーションがなかった頃の習慣で)C# なら属性使うような場面でインターフェイスのから実装する場合があるんで。
>>964 () でくくって、Match.Group で拾う。
\[([^\]]*)\]\s*(.*) でマッチさせて m.Group[1], m.Group[2] か、
\[(?<name>[^\]]*)\]\s*(?<title>.*) でマッチさせて m.Group["name"], m.Group["title"]。
>>961 多分実装が楽だったから。staticクラスは実質abstract sealed classらしいよ
まあインスタンス作れないのはいいんだけど、抽象化が全然できなくなるから割に合わないな
意図的に制限しているだけで、実装は全く関係ないよ CLI的にはインターフェイスを実装できない理由は全く何もない 意味的におかしいから使えなくしてある
969 :
デフォルトの名無しさん :2011/01/29(土) 09:53:26
もし継承可能だと、違うクラス名で同じスタティック変数アクセスできたりするからな 危険って言えば危険
ファイル検索に関する質問 2chlog.txt というファイルのパスを取得するexeを作成するのですが、実装方法で悩んでいます 前提条件として 1.2chlog.txtはOS(XP、VISTA、7 の3つのみでいい)によって格納パスが違う また、どのドライブにあるかも不明(Aというソフトのインストールドライブにできる) 2.exeを利用するユーザーのPCのOSはXP、VISTA、7のどれかは不明 よろしくお願いします
あと 4.ユーザのPCのドライブ構成は不明(どんなPCから操作されるかわからない) よろしくお願いします
起動時見つからなかった場合だけダイアログ開いて指定させろよそんなの。
再帰呼び出し
>>970 そのテキストファイルが、ユーザーが作ったものなら
>>972 みたいに
ユーザーに指定させるしかないわな。
こんな感じ? 1. 検索ソフトの初回起動時にのみ以下の動作をさせる - OS のバージョンを調べる - OS のバージョンごとに特定のフォルダに検索を掛ける - 検索はスレッドを立てて水面下で行う - 見つかったら設定ファイルかなにかにそのパスを保存しておく 2. 検索ソフトの起動時に以下の動作をさせる - 設定ファイルから 2chlog.txt のパスを取得する - ファイルがないか、設定ファイルにその記述がなかったらユーザに通知するメッセージボックスを表示してお伺いを立てる - ユーザが「検索」を選択したら 1 の動作をさせる
ああ、2 の「検索」のときには、検索場所をユーザに選択させる機能も必要か。
2chのビュワーみたいなアプリの作るファイルなら、 ユーザーディレクトの下のどこそこみたいに、だいたい 決まってるだろうけど。
>>977 すでにある専ブラのログビューワーとかそんなのかもな
UACの関係でフォルダの位置が変わる可能性があるんだっけ?
XPから卒業してないのでvistaや7のように実行ファイルの配下がだめとかそういう世界はよくわからんがw
>>975 ありがとうございました。
OSのバージョンをGetする実装はどぼん.netにあったのでぱくろうと思います
> - OS のバージョンごとに特定のフォルダに検索を掛ける
ここの実装が悩みどころですが以下のような実装にしようと思います、
1.Directory.GetLogicalDrives()でユーザーのPCのドライブ一覧を取得しリストに格納
2.foreach((各ドライブ) in (1.で格納したドライブの一覧リスト))
{
(各ドライブの中に「2chlog.txt」が存在するか調べる処理)
}
980 :
デフォルトの名無しさん :2011/01/29(土) 11:28:16
決まったソフト依存なら、レジストリに情報入っていないか?
OSの判別とかいらない Environment.GetFolderPath使え
>>980 確かにそうなんですが、古いソフトなんで調査に時間がかかりそうなんです
締め切りに間に合わせるために別の方法を探してるわけです^^;
>>981 ありがとうございます
たしかにOS判別いらないですね
メソッドも案外たくさん用意されているのですね
983 :
デフォルトの名無しさん :2011/01/29(土) 11:40:05
Serializable属性ってのをジェネリックの制約に含めたいのだけど可能でやんすか?
属性で制約は無理だな
抽象クラスに属性付けてそれで制約するしかないんじゃね
ないんじゃね
ないよね
989 :
986 :2011/01/29(土) 16:32:07
long型の桁数を調べたいんですが、 ToString()して文字数を数える以外にスマートな方法はありますか?
991 :
デフォルトの名無しさん :2011/01/29(土) 17:14:21
対数
対数も使えるのか サンクス
誤差の問題は大丈夫? 大丈夫じゃないんじゃないの?w 単純にx < pow(10, n)を満たす最小のnを求める方が確実に思うけど
と思ったが、よくよく考えてみると誤差が±0.5を超えることは絶対にないといっていいから、 常用対数の結果を(int)Math.Round()すれば問題ないかw 適当なこといってごめんよ
いや、やっぱ丸めたらダメかw 酒飲んでると思考力落ちるなやっぱり
997 :
デフォルトの名無しさん :2011/01/29(土) 17:59:40
52ビットを超えるような数を使わないならLog、 それ以上が必要なら誤差を実測して補正を掛けるのがいいんじゃない? 可読性考えなければ、ひたすら定数値との比較をするのが一番早い気はする
結果が0になるまで10で割り続ければ
へえ
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。