[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/25 16:56 / Filesize : 209 KB / Number-of Response : 852
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっとC#,C♯,C#(初心者用) Part36



1 名前:デフォルトの名無しさん [2009/01/20(火) 21:47:33 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

237 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:39:38 ]
よく分からんけど関係するアセンブリをGACに登録してるとかない?
ローカルのアセンブリよりGACのが優先してロードされるので、
期待したのと違う動きをすることがある。

238 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:07:14 ]
>>237
してないです。ngenとかも動かしてないのでキャッシュされたのがロード
されてるわけではないと思います。
.NETのインストールでもミスったんでしょうか…

239 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:12:49 ]
VS2008でソースとかシンボルとか落としてきてSerializeの中追っかけてみたら何か分かるかもね

240 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 19:22:56 ]
ある別の型(T)に変換できることを表すインターフェイスは無いの?
IConvertible<T>みたいな

241 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 19:53:38 ]
標準ライブラリには無いな

242 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 21:12:35 ]
is T じゃだめなのか?ダメだな。

243 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:19:27 ]
クラス名にOfとか使うのってどうなんだろう。
たとえばContainerOfImage、ContainerOf3D、といった感じの名前の付け方。似た機能のクラスの頭文字が統一されて見やすいとは思うんだけど。

244 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:25:42 ]
不自然
英語としてどうかは置いといて,普通は見かけないから激しく違和感を感じる
Ofのかわりにアンダーバー使ったりする方がまだ綺麗な気がする

245 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:25:56 ]
それなんてVB.NET
List(Of T) msdn.microsoft.com/ja-jp/library/6sh2ey19.aspx
Of キーワード msdn.microsoft.com/ja-jp/library/067b2z78.aspx



246 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:31:14 ]
○○Of(引数)の形を除けば,メンバ名にもOfってあんまり見かけないよね

247 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:32:15 ]
別に Of なくてもいいと思う。
先にカテゴリを記述する命名スタイルは普通にある。
Of を名前に入れるのは、Of 込みで1つの熟語になってるようなものくらい。

248 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:35:22 ]
DialogColorやStreamStringじゃ全然違う意味になっちゃうよ

249 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:51:31 ]
全部そう言う命名で統一されていれば気にならないもんさ。

250 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:09:30 ]
>>240
変換出来るかどうかを知るだけなら、TypeConverter拾ってきて
CanConvertTo(), CanConvertFrom()で良いと思う

251 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:37:45 ]
C#で複数ファイルを一つに暗号化した上で纏めるツールを作ろうと思っているのですが、
例えば、次の3ファイルを1ファイルに纏めるにはどうすれば良いでしょうか?

※また、一纏めにするだけではなく、パスワードを入力する事により暗号化した上で1ファイルに纏めたい
と思っています。当然複合化もしたいです。

【暗号化_前】
AAA.xls
BBB.xls
CCC.xls

【暗号化_後】
ABC.xls

【パスワード】
abc_dayo




252 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:43:07 ]
7zip32.dllでも呼べば?

253 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 01:01:41 ]
>>252
あざーす。ぐぐってみます。

254 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 01:02:41 ]
ふぇ…

255 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 10:13:08 ]
ふぇっくしょん!



256 名前:デフォルトの名無しさん [2009/01/27(火) 12:26:20 ]
if なんらかの条件
{
なんらかの処理
}

ボタン処理



のプログラムでなんらかの条件に当てはまったときにボタン実行が行えないようにするにはどうすればいいでしょう?
プログラム自体わけわかめで日本語でおkは重々承知ですが、エスパーさん助けて;;

257 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 12:40:25 ]
if なんらかの条件
{
なんらかの処理
}
else
{
ボタン処理
}

258 名前:デフォルトの名無しさん [2009/01/27(火) 12:59:42 ]
まさにそのとおりのプログラムなのですが

if なんらかの条件 @

   if なんらかの条件A
   {
     なんらかの処理A
   } 
    else
    {
     なんらかの処理B
    }

ボタン処理

となっていて、なんらかの条件Aのときにボタン処理させないようにしたいので、頭ぐちゃぐちゃーとなっています。

259 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 13:02:41 ]
なんらかの処理Aの最後でreturn;すればヨイヨイ

260 名前:デフォルトの名無しさん [2009/01/27(火) 13:05:03 ]
リターンよくわかってないです。調べてみます。ありがとう

261 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 13:05:44 ]
if なんらかの条件 @

   if なんらかの条件A
   {
     なんらかの処理A
   } 
    else
    {
     なんらかの処理B
    }

else
{
   if なんらかの条件A
   {
     なんらかの処理A
   }
else
{
     ボタン処理
   }




262 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 13:20:29 ]
なんらかのがゲシュタルト崩壊した

263 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 13:38:36 ]
まあreturnで解決できる場合もあるし関数分ける手もあるが、
どんな場合でも対応したいのならば、

bool b = なんらかの条件 @;

if (b)
{
なんらかの処理
とかいろいろ
}

if (b)
{
ボタン処理
}

みたいに保存しておいて後で使ったりできるぞ。

264 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 13:39:14 ]
if (!b)
{
ボタン処理
}

だった。。。

265 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 13:48:20 ]
>>258
 bool ボタン処理するフラグ = true;
if なんらかの条件 @

   if なんらかの条件A
   {
     なんらかの処理A
      ボタン処理するフラグ = false;
   } 
    else
    {
     なんらかの処理B
    }

 
 if (ボタン処理するフラグ)
 {
 ボタン処理
 }




266 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 13:57:51 ]
結局、>>258のやりたいことがなんなのかよく分からんかった。
単純に牡丹を押した時の処理を分岐させたいだけだったのか、
それとも一定条件下ではボタンそのものを押せないようにしたかったのか・・・


なんだっけ、MVCの類似だか発展版みたいなやつで
こういうのをスマートに解決する方法があったような。

267 名前:デフォルトの名無しさん [2009/01/27(火) 13:59:42 ]
ご飯行ってました。ありがとうございます。参考にして書いてみます。

268 名前:デフォルトの名無しさん [2009/01/27(火) 14:02:57 ]
>>266 一定条件下ではボタン押しても処理させないようにする ですね。
具体的に言うと、保存ボタンなので、データベース更新させないようにする、ですかね。
権限チェックをして、誰々なら見ることはできるけど、保存はできないという。

269 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:12:37 ]
つーか押しても何も起きないんだったら押せなくすべきじゃね?
と思ったら何か起きるのか
でも保存ボタンで保存されないのは嫌ね

270 名前:デフォルトの名無しさん [2009/01/27(火) 14:18:52 ]
押せなくする方法がわからんとです

271 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:19:34 ]
権限管理を、そんなあちこちでアドホックにやってたら漏れるぞ。

272 名前:デフォルトの名無しさん [2009/01/27(火) 14:37:51 ]
ButtonSubmit.Attributes.Add("onclick", "return confirm('ダイアログに出るメッセージ');");

で、ダイアログに出るメッセージを変数に変えて、変数の中身を表示させるにはどうすればいいのでしょう。

ButtonSubmit.Attributes.Add("onclick", "return confirm('MSG01');");
でMSG01の中身をメッセージとして出したいのですが

273 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:56:00 ]
>>260
do { ... } while(false);
にして、breakすれば良い

274 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:57:36 ]
>>270
ボタンのEnabledプロパティをfalseにするんだ

275 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 15:09:47 ]
>>272
ButtonSubmit.Attributes.Add( "onclick", "return confirm('" + MSG01 + "');" );



276 名前:デフォルトの名無しさん [2009/01/27(火) 15:13:09 ]
おおお
ButtonSubmit.Enabled = false;
たったこれ追加すれば使用不可にできました。ありがとう〜

277 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 15:17:02 ]
データグリッドビューで質問があります。
データグリッドビューの列を1から10まではユーザーが任意で追加する事ができるが、
それ以上は追加できなく(メッセージなどで「追加できません」と表示)するにはどうすれば良いのでしょうか?

278 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 15:20:51 ]
void hoge(EventHandler handler) { }

引数で渡されたデリゲートが、匿名メソッド・ラムダ式かそうでないかを判別する方法って無いですよね・・・?

279 名前:デフォルトの名無しさん [2009/01/27(火) 15:22:29 ]
>>275 できましたー!ありがとうー!”++”が必要なのかぁ。こういうの載ってる本ないですかねー。

280 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 15:24:08 ]
C#の解説書で載ってないものは無いだろう

281 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 15:36:59 ]
>>278
それを判別してどうしたいんだ?

282 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 15:40:35 ]
>>278
メソッドを持つ型の名前でも見れば

283 名前:282 mailto:sage [2009/01/27(火) 15:54:54 ]
ああ、型名だとstaticなときに駄目だな
じゃあ、メソッド名の方で

284 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:04:28 ]
>>277
this.dataGridView.AllowUserToAddRows = false;

1〜10まではあらかじめデフォルトの数値を入力しておけばおkだと思う。


285 名前:デフォルトの名無しさん [2009/01/27(火) 18:02:13 ]
テキストボックスで入力された値を変数に入れる
A=〜; B=〜; C=〜; ・・・

変数が正しいかチェック (日付や金額の桁)
正しかったらBoolでTrueを返す

if全部正しいとき
保存処理を行う

else
本処理終了

みたいな感じでプログラムを組みたいのですが、全部正しいときって
A==True && B==True &&・・・・・
みたいな感じでやっていくのですか?
またもうまく説明できない(´ω´)



286 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:05:34 ]
A && B && Cでいい

287 名前:デフォルトの名無しさん [2009/01/27(火) 18:10:03 ]
全部False 日付も金額も合ってないときも保存処理行われちゃいません?

288 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:12:06 ]
おまえは何を・・・
&&でつないだら全てtrueの場合だけ条件に一致するよ

289 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:13:25 ]
おまえは全部ここで質問するつもりか
仕事じゃねーのそれ?
本でも買って読めや低能


290 名前:デフォルトの名無しさん [2009/01/27(火) 18:25:11 ]
>>288
どうして&で繋ぐとtrueになるかわからないのですが、そういう仕様なのですか?

291 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:28:44 ]
&&は論理積の演算子どれか一つでもfalseならfalse

292 名前:デフォルトの名無しさん [2009/01/27(火) 18:30:21 ]
A && B AとBが両方trueのときtrue でなければfalse
A || B AかBのどちらかがtrueのときtrue 両方falseならfalse

293 名前:デフォルトの名無しさん [2009/01/27(火) 18:31:27 ]
>>291 なるほど。どこかで見た&&は、かつ ||は、または と日本語変換してたのがいけなかったですね。

294 名前:デフォルトの名無しさん [2009/01/27(火) 19:09:05 ]
日付チェックは
public static bool IsDate(int iYear, int iMonth, int iDay) {
if ((DateTime.MinValue.Year > iYear) || (iYear > DateTime.MaxValue.Year)) {
return false;
}

if ((DateTime.MinValue.Month > iMonth) || (iMonth > DateTime.MaxValue.Month)) {
return false;
}

int iLastDay = DateTime.DaysInMonth(iYear, iMonth);

if ((DateTime.MinValue.Day > iDay) || (iDay > iLastDay)) {
return false;
}

return true;
を参考にしようと思うのですが、どう自分で作った変数を当てはめていいのかわからないのですが、わかる方ご教授ください。

295 名前:デフォルトの名無しさん [2009/01/27(火) 19:16:20 ]
new DateTime(year,month,day)
ってやれば間違ってた時例外かなんか投げてくれるんじゃないの



296 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 19:17:14 ]
変数なんか一つも作る必要ないんじゃないか?


297 名前:デフォルトの名無しさん [2009/01/27(火) 19:23:26 ]
自分もそう思うのですが、データベースを直接扱うのはよくない。エラー原因やチェックがしやすい。
という理由で、テキストボックスとかで入力した値を変数に入れるそうです。あんまりよくわかってないですが


298 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 19:55:57 ]
>>297
>>289

299 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 20:04:36 ]
>>291-293
その覚え方は危険。
&&と||は論理積ではなくショートカット演算子。
まずAを評価して、その結果によってはBも評価する。
A&&B デフォルトはfalse。Aがtrueの時のみBが評価される。Bがtrueならtrue。
A||B デフォルトはtrue。Aがfalseの時のみBが評価される。Bがfalseならfalse。

300 名前:デフォルトの名無しさん [2009/01/27(火) 20:11:50 ]
>>299 なるほどー。わかりやすいですね。ありがとう。
わからない単語とか検索すると、たいていトップにマイクロソフトのヘルプみたいな解説が出てくるけど、すごいわかりにくいですな

301 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 20:15:22 ]
MSDNは英語で読むに限る

302 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 20:50:57 ]
>>299
論理積は論理積だよ
ショートサーキット評価するだけで

303 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 22:53:39 ]
去年買っておいたデザインパターンの本(C#)を読んでるんだけど目から鱗だ
何でもっと早く読まなかったんだろう

304 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 22:58:09 ]
>>299
ということは
if(A()&&B()){

}

とあったとき
A()でfalseが帰ってきたら
B()が呼ばれないんですか?

305 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:00:55 ]
そうだよ

if( A() & B() )

ならBも呼ばれる



306 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:02:08 ]
>>304
そのとおり。
if (A()) {
 if (B()) {
  〜
 }
}
と等価です。

307 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:03:07 ]
>>305
成る程
順番によっては値が変わることもあるのか…
ありがとうございます

308 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:03:44 ]
>>303
だからってobserverとかinterpreterとかはそのまま使っちゃダメだよ
イベントやforeachとしてC#に組み込まれてるからな
他にもデリゲート使うと非常に簡単になるパターンは多い

309 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:06:14 ]
A()&&B()の場合、A()の結果次第でB()が呼ばれるかどうか決まる。
A()&B()の場合、両方呼ばれるが、(結合規則とは無関係に)どちらが
先に呼ばれるかは不定。

310 名前:308 mailto:sage [2009/01/27(火) 23:07:42 ]
×interpreter→○iterator

311 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:08:15 ]
いまさらだけど

A == B
 と
 A.Equals(B)
ってどっちがお勧めなの?

312 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:10:06 ]
>>305
逆じゃないの?

313 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:12:35 ]
&&や||の場合が両表評価するじゃなかったっけ?

314 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:16:14 ]
>>311
目的による
参照比較したいならObject.ReferenceEqualsが確実
値の比較がしたい場合は
==, IEquatable<T>.Equals, Object.Equals (左ほど優先)
の中から実装されているものを使えばいいと思う

315 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:17:00 ]
>>312
>>313
コード書いて確かめりゃ一発だろハゲ



316 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:19:29 ]
>>303
オライリーのやつ?

317 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:20:00 ]
>>315
めんどくさいんじゃチンカス

318 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:20:59 ]
質問です。
開いたウィンドウを閉じたいと思います。
アプリケーションの場合は、
Process hProcess = Process.Start("Notepad");

if (! hProcess.CloseMainWindow()) {hProcess.Kill();}

でできるのですが、エクスプローラの場合、
Process hProcess = Process.Start("explorer");
とすると、ハンドルされていない例外が発生し、「オブジェクト参照がオブジェクトインスタンスに設定されていません。」となります。
どのようにしたらよいか教えてください。


319 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:22:05 ]
>>317
ならばヘルプ読め。あるいは他人の解答を信じるか。
|| msdn.microsoft.com/ja-jp/library/6373h346.aspx
&& msdn.microsoft.com/ja-jp/library/2a723cdk.aspx
> ただし、x が true の場合、y は評価されません。この場合、OR 演算の結果は y の値にかかわらず true になるためです。
> ただし、x が false の場合、y は評価されません。この場合、AND 演算の結果は y の値にかかわらず false になるためです。
> これは、"ショートサーキット" 評価と呼ばれます

320 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:25:30 ]
>>318
hProcessがnullなんじゃね?

Process.Startの戻り値は

>プロセス リソースに関連付けられた新しい Process コンポーネント。
>プロセス リソースが起動されなかった場合は null (既存のプロセスを再利用した場合など)。

シェル(explorer.exe)の場合、新しいフォルダを新規プロセスで開く設定にしてないと
プロセスは作られないよ

321 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:26:05 ]
だっふんだ!m(__)m

322 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:27:54 ]
2つ以上の評価をするときに使えそうだな

323 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:34:01 ]
>>316
これだけど、糞味噌に書かれててワラタ
ttp://www.amazon.co.jp/C-%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-%E3%82%B8%E3%82%A7%E3%83%BC%E3%83%A0%E3%82%BA%E3%83%BBW-%E3%82%AF%E3%83%BC%E3%83%91%E3%83%BC/dp/4822281698/ref=sr_1_1?ie=UTF8&qid=1233066091&sr=8-1
アレな感じのコメントもいくつかあるけどw

324 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:43:52 ]
>>323
たしかにレビューはあれだw
でも書名出してくれてありがとう

325 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:49:35 ]
>>320
おお。なるほど。explorerを新規プロセスで開く方法は?




326 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:53:26 ]
(´・ω・`)しらんがな

327 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 00:12:24 ]
>>244-250
レスサンクス。参考になった。

328 名前:デフォルトの名無しさん [2009/01/28(水) 05:02:41 ]
C#でのExcel操作(自動化)について質問をさせてください。
dataGridViewから入力した内容を取り出し、Excelに出力をしたいのですが
以下のコードの時、数値を入力した場合のみ、「数値が文字列として保存されています」と表示され、エラーが発生します。
どのようにすれば文字列ではなく数値で出力をする事ができるのでしょうか?

string[,] table = new string[10,1];
for (int c = 0; c < 10; c++)
{
table[c, 0] = dataGridView1.Rows[c].Cells[0].Value.ToString();

}
sheet.get_Range("A1", "A10").Value2 = table;

329 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 08:15:48 ]
object[,] tableにしてToString()しなきゃいいんじゃね?

330 名前:初心者 [2009/01/28(水) 14:28:58 ]
C#.NETについて質問させてください。
MVCアーキテクチャでWebサイトを構築していますが、XMLファイルより、
使用クラス名を読み取り、動的に使用クラスのインスタンスを生成する為に、リフレクション
機能を使用したいのですが、Type.GetType()メソッドやAssembly.GetType()メソッドなどの
戻り値がNULLになってしまいます。GetType()メソッドを使用するクラスと同じファイルに、
インスタンス生成したいクラスのクラス定義を書くとうまくいくのですが、別ファイルにすると、
うまくいきません。
詳しい方ご教授お願いします。

331 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 14:41:07 ]
完全限定名で書いてないとかそんなんだろ
初心者名乗る奴がリフレクションとかどうよと思うけど

332 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:31:31 ]
Dictionary<Key, Value>と同様な追加/削除/検索が行えて
ValuesプロパティがObservableCollectionみたいに変更通知機能がある
そんなコレクションってありませんか?

333 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 16:52:04 ]
Dictionary<,>とObservableCollection<>の両方をラップした
IDictionary<,>の実装クラスを作ればいいよ
ほとんど丸投げだからそんなに手間はかからない

334 名前:デフォルトの名無しさん [2009/01/28(水) 17:22:34 ]
パラメータをバインドする機構がない
ってどういう意味ですか?初心者にはさっぱり

335 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:31:18 ]
コンテクスト(文脈)って知ってる?



336 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:51:08 ]
文脈って意味じゃないでしょうか?!!!!

337 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:22:00 ]
そういえばインデクサやStreamのサイズ指定はint型だけど
64bit環境だとどうなるの?
アドレス空間が64bitになっても4GBに縛られるの?

338 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:37:22 ]
>>337
uintでないから2Gだな。
しかし、ストリームなら2GBずつRead/Writeすればいいし、
List<T>でもTが例えば16バイトの構造体なら全部で32GBまでいける。

もっとも、そんな大量のメモリを一度に扱おうというのなら、
まだまだネイティブなコードのほうがいいだろうと思うのは俺だけか?

339 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:43:20 ]
インデクサはどんな型でも使えるだろ。

340 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 21:49:42 ]
配列の添え字はlongでいけなかったっけ?

341 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 22:02:41 ]
NativeIntなんで64bitプロセスなら可能のはず

342 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 01:22:12 ]
>>340
配列の添え字にはlong型の値も使える。
そのため、配列にはint型のLengthプロパティに加えてlong型のLongLengthプロパティもある。
32bit環境でも一応、

int[] arr = new int[ long.MaxValue ];

と書けるし、コンパイルもできるのだが、>>341の言うとおり、NET.Framework内部では配列の
添え字をNativeIntで処理しているので、実行するとOverflowExceptionが発生する。
内部でNativeIntの範囲を超える添え字を扱えるようにしても、そんな配列を確保した時点で
メモリ不足に陥るのは自明なので、合理的な仕様なんじゃないだろうか。

343 名前:テラ初心者 [2009/01/29(木) 17:01:11 ]
引数・・・メソッドを呼び出す際に渡す情報のこと。
なんのことかサッパリわかりません。メソッドもなんかの処理なんだろうなあ位にしかわかってません。
何がなんのために何に何の情報を渡しているのですか????

344 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 17:04:07 ]
まず@ITのC#入門でも読め

345 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 17:05:56 ]
釣りでしょ



346 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 17:41:47 ]
TVのリモコンでチャンネルの上下は引数なしだが、一発選局はチャンネル数が引数といえる。

347 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 17:46:24 ]
tv.SelectChannel(-1, CURRENT) とか書きうるわけだが

348 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 17:51:56 ]
せっかくメソッドにしてるのだから Up() Down() だろ。
なんで使いにくくするんだ。

349 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 17:52:47 ]
リモコンのボタンで、CURRENT、-1、チャンネルチェンジと押すわけですね、その形式だと。

350 名前:デフォルトの名無しさん [2009/01/29(木) 17:55:29 ]
ほむほむ。ありがとう。Voidとかで引数を返さないっていうのはどういうメリットがあるというか、どういうときに使うのでしょう?
チャンネルでいうと、8ちゃんボタン押しても数字が入っていないので何も起こらないのかな。

351 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 17:57:23 ]
voidで値を返さないメリットがあるかじゃなくて
値を返すメリットがないからvoidなんだろ

352 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 18:04:06 ]
それ引数じゃなくて戻り値では

353 名前:デフォルトの名無しさん [2009/01/29(木) 18:10:46 ]
private void CalcButton_click(object sender,EventArgs e)
{
}
作って覚えるC#の本より引用なのですが、これからVoid取っちゃうと何か不具合ありますかね?

354 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 18:11:34 ]
やってみればわかる

355 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 18:11:51 ]
イベントから学習しろ



356 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 18:12:01 ]
>>353
戻り値が分からなくてエラー出る

357 名前:デフォルトの名無しさん [2009/01/29(木) 18:15:19 ]
なるなる。ありがとう。やっぱり読むだけじゃ覚えれなそうですね
6年前のPCにVisualStudio入れたら重くなって挫折してしまいました

358 名前:デフォルトの名無しさん [2009/01/29(木) 18:17:08 ]
デフォルトのvoidさんは無いのか。
2CHよりひでーな。

359 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 18:18:33 ]
>>357
csc.exeのあるディレクトリにPATHだけ通せば
あとはコマンドプロンプト+エディタで最低限の環境が揃うぞ
ネットで適当に調べてやってみるといい

360 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:40:32 ]
頻繁に呼ばれる関数で
newを使うのって速度かなり落ちますか?
画像データ用の領域で、一度に640*480*4バイト確保します。

361 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:42:02 ]
関数を呼ぶのに new は必要ない。

362 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:44:47 ]
>>361
日本語読めますか?

363 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:45:07 ]
落ちますか? ってやってみればいいじゃない

newを使うかどうかよりも1MBを頻繁に確保するのは重いかもね
ワーキングセットも大きくなるだろうし

364 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:48:19 ]
コンピュータの性能が良すぎて問題ないという可能性もある。
まずは率直な書き方で作ればいい。

365 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:49:23 ]
キャッシュしても問題ない構造ならとりあえずキャッシュするようにしといてもいいとおもうよ
手間かかるものでもなし



366 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 01:03:05 ]
>>362
日本語で書いてどうする?

367 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 01:18:14 ]
>>366
日本語通じてなくてワロタ

368 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 08:50:41 ]
>>366
アイちゃん乙

369 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 08:52:34 ]
安価ミス
>>361

370 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 10:57:19 ]
ArrayListやList<T>において、
list.Add(new T())
といった感じで配列に追加している場合、
削除系メソッド(Clear、Remove、RemoveAllなど)実行したときに配列内のクラスのインスタンスは
開放されないのでしょうか?


371 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 11:01:05 ]
その要素を他が参照してなかったらGC対象になる

372 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 11:09:48 ]
>>371
そういうことなのですね。ありがとうございました。

373 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 15:09:36 ]
"バイト"や"キログラム"のような単位を表す文字列を
設定されたカルチャに応じて取得できるクラスないですか?

374 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 15:22:26 ]
標準ライブラリには無い
複数形とか考えると多分作るのは不可能に近い

375 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 18:15:54 ]
不可能ってこたねえだろ



376 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 18:46:52 ]
>>375
渦中って読めますか?

377 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 18:51:34 ]
俺もそんなクラスほしい
標準であってもいいよね

関係ないけど「OK」「キャンセル」「適用」 とかも欲しかった

378 名前:デフォルトの名無しさん [2009/01/30(金) 19:14:29 ]
ってか、C#おもろいけど、GUI案件がないからモチベあがんないんだよね。言語的にはいいんだけど。

しょうがないから、ASP.NETもじもじやってる。

379 名前:デフォルトの名無しさん [2009/01/30(金) 19:47:32 ]
C#とついでにSilverLigitもやったんだけど、案件が全然ねえ(;´д`)俺は馬鹿だったのか?

380 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 19:54:31 ]
わざわざ.netを指定してくる企業って皆無では・・・

381 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 20:20:23 ]
おれずっとc#でやってたよ。MSとちょっと関係ある会社だけど

382 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 20:21:56 ]
VS2008 + .net2.0

dirフォルダ内のサブフォルダの中身も含めたファイルの個数を出したいです。

using System.IO;
string[] files = Directory.GetFiles( dir, "*", SearchOption.AllDirectories);
として、files.Length を数えてるんだけど、ファイル数が5000とかあるフォルダを
検索しなくちゃならないので、さすがに遅いです。

この段階ではファイル名のstringは使わないので、個数だけで良いのですが、
サクっと出せるような方法ありませんか?

383 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 20:48:30 ]
ないよ
遅いのは結局IOであってファイル名とかはほぼ関係ない

384 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 20:49:49 ]
>>383
了解しました。
我慢します。

385 名前:デフォルトの名無しさん [2009/01/30(金) 21:01:30 ]
Rectangle rect;
rect = null;

としたところ、Rectangle 型なのでnullは入れられないと言われました!
VB.NETだと、どんな型の変数にも Nothing を入れられるのでつい同じかと
思っていました。どうやったら同等の処置が可能でしょうか、よろしくお願いします。





386 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:04:19 ]
VBでも本当にNothingを入れることはできないよ
Rectangle? rect;
rect = null;
※使うときはRectangleにキャストすること

387 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:05:31 ]
>>385
Rectangleは値型だっけか。これでどうだ。
Rectangle? rect = null;


388 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:13:03 ]
>>385
VB の Nothing は null じゃなくて Zero Fill な値(既定値)だからな
C# 的には null と既定値は区別される。C# 的には VB の Nothing
は default(T)。

なので VB の Nothing 代入に近いのは
var rect = default(Rectangle);
だぁね

389 名前:デフォルトの名無しさん [2009/01/30(金) 21:15:16 ]
>>386-387
どうもです。やってみましたところ、キャストを入れた上で一応解決かと思った
のですが、一つだけ問題がでました。Contains()メソッドを使っているところで
'System.Nullable<System.Drawing.Rectangle>' に 'Contains' の定義がありません
というエラーとなりました。これは

if ((Rectangle)rect.Contains(e.Location))
{・・・}

のように使ってみたのですが、他の書き方しないとだめでしょうか。


390 名前:デフォルトの名無しさん [2009/01/30(金) 21:18:27 ]
>>388
ご教示どうもです、知りませんでした。

>なので VB の Nothing 代入に近いのは
>var rect = default(Rectangle);

こういうのもあるんですか!この場合は
if (rectG != null){・・・} 
のように使えるでしょうか。そうだ、やってみます。

391 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:19:56 ]
((Rectangle)rect).Contains
>>390
できません
rectG!=default(Rectangle)ならできるけど(0, 0, 0, 0)とは区別できないよ

392 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:23:29 ]
defaultはgenericで使うことを前提に作られているんで若干癖がある。
Rect(0,0,0,0)に初期化することが目的なら
var rect = new Rectangle();
未初期化のRectangleが欲しいのなら
Rectangle rect;
でいい。

393 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:24:41 ]
>>390
おおっと。
いや VB 使っているうちは VB の流儀でいっていいと思うんだが
C# に来たんだから C# の流儀にあわせて区別しような。
Rectangle? val = null;
のほうを使えってことだけど。

>>389 のほうは rect.Value.Contains(e.Location) な。
null だったら例外出るが。例外がいやなら

if( rect.HasValue && rect.Value.Contains(e.Location) )

かね。


394 名前:デフォルトの名無しさん [2009/01/30(金) 21:24:56 ]
>>391
>((Rectangle)rect).Contains
早速ありがとうございます、これで大丈夫でした、助かりました。
>rectG!=default(Rectangle)ならできる
わかりました。いろいろご教示ありがとうございました!

皆様本当にありがとうございました!またよろしくお願いします!!

395 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:26:18 ]
うぽ!
(rect ?? new Rectangle()).Value.Contains(




396 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:26:39 ]
っていうかVBでも値型をNothingと比較するのはダメだろ
ゼロ初期化されたものと同じとわかっててやるならいいけど,>>394はわかってなさそう

397 名前:デフォルトの名無しさん [2009/01/30(金) 21:31:15 ]
>>392
>>393
>>395
C#の凄い表現のバリエーションにびっくりです、またこれから勉強致します。

>>396
わかってなかったです。すみません・・・。

ではまた。

398 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:33:38 ]
Rectangleをnullと初期化したあとにどう使うんだろう・・・

399 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:40:02 ]
フラグ代わりだよ
Rectangle rect;
bool isRectAssigned;
みたいなのってよく出てくるだろ
これを一つにまとめたのがnullable

400 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:43:05 ]
IList<T> list = new List<T>();
とかやってたら、IListの方にはForEach()がなくて涙目なんだけど、そういうもんなの?

401 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:55:52 ]
ForEachぐらい自分で書けばって

402 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:07:07 ]
nullable ってキモいからまだ使ったことがないな
すこし慣れてみるか……

403 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:09:46 ]
拡張メソッドで自作するのは簡単
でもEnumerable.ForEachが無いことを考えると,素直にforeach書けということなんだろうと思う

404 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:26:01 ]
WPFではShowDialogの戻り値がbool?になってたりするね

405 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:48:24 ]
正確に20msで処理をしてFORMのPictureBoxを触りたいときは、
BackgroundWorker+System.Timers+AutoResetEventでいいですか?
他にもっといいやり方があるんなら教えて欲しいのですが…orz



406 名前:デフォルトの名無しさん [2009/01/30(金) 22:57:49 ]
>>405
> 正確に20ms
まずこれが難しい。timeBeginPeriod か MMCSS 使えば
ある程度いけるかもしれないけど、あくまである程度。
さらにいいやり方となると Forms 使うのが間違ってる。


407 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:58:20 ]
20msは厳しいんじゃないの
更新間隔は20msよりも長くして,
そのつど経過時間を計測してそれから計算してその結果をもとにしてPictureBoxを更新したほうが

408 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:06:23 ]
コールバック間隔は,Application.Idleイベント使うなり自分でメッセージループ回すなりして
その中でStopwatch使って時間計測すればある程度正確にできるけど
フォームの更新が20msでは絶対無理

409 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:27:55 ]
20msってどこから来たの?
測定機械のタイミングとか?
GUIの更新は後回しにした方がいいんじゃね?

410 名前:デフォルトの名無しさん [2009/01/31(土) 00:53:40 ]
20msってWindowsのインターバルタイマーで拾えるの?
割り込み上がっても、処理が間にあわん気がするんだけどね
リアルタイムOSでというのなら分からんでもないけど。
#組み込み用が対象なのかな?
割り込み->データをFIFOQueueに追加->queueのデータをGUI処理
になるんだろうけど(sharedメモリ経由か)
#割り込みコンテキストってWinにはあるのかな?

411 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 02:40:33 ]
いつも思うんだが、なんか2chって日本語として成立してない質問でも適当にESPを働かせて、
(というより、回答する側も他人の文章を正確に読解する能力がないだけ、という方が
より真相に近いと思うんだが)回答する奴が多すぎないかね。

>>405
「正確に20msで処理をして」とはどういう意味?
正確に20ms間隔でイベント処理をしたい、って意味なの?
いずれにしても、「正確」という表現はもっと定量的な表現にする必要があるだろ?

仮に20ms間隔でGUIを更新したい、って意味だとしたら、
今時のPCなら単純にSystem.Timers.Timer使っても±5ms以内の誤差で可能だと思うけど。

少なくとも、平均速度として50回/秒が実現できればいいということなら
(意味があるかどうかは別として)ほぼ確実に出来ると思う。

もちろん糞重い描画処理をしてたらあっという間に破綻するけど。

いざとなったらスレッドでThread.Sleep(0)と、Stopwatchをポーリングして
20msごとにControl.BeginInvoke()を実行する無限ループで実装したっていいし。

412 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 04:51:35 ]
えらい自信だからためしに作ってみたけど
System.Timers.Timerなんて無茶苦茶ばらつくじゃないか


413 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 09:07:32 ]
エスパーで解釈すると、
20msecでコントロールのアップデートはありえないから、
CreateGraphics()で得たGraphicsで直接描こうとしている。
CreateGraphics() + GDI+メソッドは別スレッドからでも使える。
こういう用途にはFormかPanelが適当なのだけどVB6以来の伝統かPictureBoxを使いたがる人が多い。
Timers.Timerはタイマーイベントの処理時間分、間隔がずれてゆくはずだからその分の解消をしたい。
そんなとこだろ。

414 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:17:09 ]
>20msecでコントロールのアップデートはありえないから、
>CreateGraphics()で得たGraphicsで直接描こうとしている。

じゃあオフスクリーンにも20msecで描画する必要ないじゃん

415 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:41:59 ]
へっぽこエスパーばっかりだな
とくに>>411



416 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:52:58 ]
>>414
オフスクリーン
というのはどこから出てきたんだ?

417 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:58:29 ]
まあ>>405が来るのを待とうじゃないか


418 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:58:36 ]
どうやってもGDI+で20msは厳しいでしょ

419 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:59:47 ]
オンでもオフでも問題の本質は一緒でしょ
>20msecでコントロールのアップデートはありえない
のなら20msec間隔で描画する必要がない

420 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:01:13 ]
そのオン、オフというのを説明してもらいたいのだが・・・

421 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:02:12 ]
ダブルバッファリングじゃないの

422 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:06:59 ]
へっぽこエスパーダブルバッファリングも知らないのかよ

423 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:09:33 ]
やっぱりダブルバッファのことね。それを使うとは一言も言ってない。
フォームにパネルとSystem.Timers.Timerはって、20msecに設定でこれ。

Font stockFont = new Font(FontFamily.GenericMonospace, 14);
int locs = 0;

private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
  using (Graphics g = panel1.CreateGraphics())
  {
    g.FillRectangle(Brushes.Blue, new Rectangle(8, 8 + 28 * locs, 14 * 20, 28));
    g.DrawString(Environment.TickCount.ToString(), stockFont, Brushes.Yellow, 10, 10 + 28 * locs);
    locs++; if (locs >= 5) locs = 0;
  }
}


424 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:24:11 ]
Direct3Dでも使わないと描画間に合わないだろ

425 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:24:57 ]
へっぽこエスパー
ありえないとか言いながら20msecでコントロール(panel)のアップデートしてんじゃねーよ





426 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:33:10 ]
なんか子供だなぁ。

ありえないのは、Control.Invokeを使うこと。
他のスレッドからだからPanel1.Update()も使えない。
Timers.Timerをフォームに貼り付けてと書いたけど、実際はコードでnewしてる。
フォームに張りつけた場合は、ここだけthisからnullに変更してくれ。
this.timer1.SynchronizingObject = null;

427 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:36:52 ]
WindowsXP、VisualC#2008環境で質問があります。
フォルダの[ツール]-[フォルダオプション]で表示できるフォルダオプションのウィンドウを開くには、なにを呼び出せばいいですか?
可能なら、表示オプションのタブをクリックした状態にしたいです。
どなたかご教示ください。よろしくお願いします。
この中身を編集するということは、レジストリをいじるということかと思いますが、その場合、どのような方法を取ればよいでしょう?
違っていたらご指摘いただけないでしょうか。


428 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:37:52 ]
だから描画間に合わなかったらどうすんの?
>>423くらいの処理なら間に合わないこともないかもしれないけど一時的に遅れることだってあるだろ

429 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:46:55 ]
>>428
それで>>405がAutoResetEventと書いてるのだと思うよ。
つまり間に合わなかった場合は、その分間隔を遅延させるか1回か数回とばすか。
実現する方法はいくつかあるが、AutoResetEventを使うのはとばす方のロジックで使える。
この辺は普通にゲームの描画のアルゴリズムだと思うんだけどな。


430 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 13:17:19 ]
>>427
Vistaだったら
::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{6DFD7C5C-2451-11D3-A299-00C04F8EF6AF}
なんだけど。これをShellExecute。
XPはシラネ

あとはRegistryクラスで編集、WM_SETTINGCHANGEDをブロードキャストとかかのう

431 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 14:38:10 ]
で20ms間隔で描画できたかい?そんなコードだと無理に決まってるけどw

432 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 14:41:32 ]
Expression Treeで動的生成されたメソッドって一回作ったらそのまま解放されないの?
頻繁に式木作って評価するならインタプリタ作った方がいいのかな

433 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 14:50:43 ]
クラスデザイナの関連付けってなにしてくれるの?
関連付けされたクラスのコンストラクタが、
関連元クラスに追加されるみたいだけど、何につかうんだべ。

434 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 14:56:27 ]
System.Threading.Timer使ってConsoleアプリケーションで、

コールバックは、
・1000回呼ばれたら終了イベント上げる
・開始前と最後のコールバック時に時刻表示

メインは
・1秒後から20msecでコールバックするようにタイマーセット
・終了イベントが上がってきたらタイマーをdisposeして終了

という事実上タイマーが使われるだけで何もしないサンプルをためしに
作ってみたが、32秒かかるよ。最初の1秒待ち差し引いても、平均31msec
呼ばれるのにかかってる。

435 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 15:36:14 ]
>>434
20msecといってるのは>>405でTimers.Timerにこだわる必要もないのだが。
ただ1000回で31秒かかるというのはおかしいな。
長いがコードはるね。Celeron1.4G WinXPで00:00:20.0493193だった。

using System;
using System.Threading;
class Startup { 
 void Test() {
   using (var timer1 = new System.Timers.Timer()) {
    timer1.Interval = 20;
    int counter = 0;
    timer1.Elapsed += (o, e) => { 
      if (++counter >= 1000) lock (this) Monitor.Pulse(this);
    };
    var sw = System.Diagnostics.Stopwatch.StartNew();
    timer1.Start(); 
    lock (this) Monitor.Wait(this);
    timer1.Stop();
    sw.Stop(); Console.WriteLine(sw.Elapsed);
   }
 }
 static void Main() { new Startup().Test(); }
}




436 名前:デフォルトの名無しさん [2009/01/31(土) 16:30:27 ]
Directoryを外部から隠蔽したいのですが、どんな感じに実装したらいいですか?

private Directory<int,int> _dic;
public Directory<int,int> dic{
get ...
set ...
}
みたいにそのままプロパティにしちゃうと、外からdic[key]=1;って叩けないですよね?

437 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:37:42 ]
>436
public int this[int key] { get { return _dic[key]; } }
みたいに隠蔽して必要な値を取得できるメソッドとかだけ公開すれば操作はしようがないので堅いよ。

438 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:47:53 ]
>>436
外から叩けちゃうと隠蔽にならないんだが、そのコードなら別に外から叩けるな。


439 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:48:30 ]
内部にラップしてるDictionaryをそのままの型で公開しちゃったら隠蔽にならないから

440 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:58:52 ]
>>435
>ただ1000回で31秒かかるというのはおかしいな。
>長いがコードはるね。Celeron1.4G WinXPで00:00:20.0493193だった。

ハードウェア割り込みタイマーの周期次第じゃないの?
この周期はどこかのアプリがtimeBeginPeriodを使うだけで
簡単に変わるから、単純にOSとCPUだけ並べて
おかしい/おかしくないとは言えないよ。

Windowsだとデフォルトの割り込み間隔が16msecってのはよくある値だし
20msecのタイマーを仕掛けたら32msecごとにコールバックされていた
と考えればむしろ辻褄があう。(32msec×1000で約32s)

>>434 の環境でメディアプレイヤーなんかを同時に起動してるだけで
結果は変わるんじゃないかね。

441 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:05:31 ]
単に終了イベントを待つのにビジーループさせてるんとちゃう

442 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:12:00 ]
C#で、書き方を迷っているんだけど、ちょっと相談に乗ってくれないか
例えば、ファイルコピーをするメソッドで、コピー元が無ければ例外を発生する場合

public bool CopyTo(string fromFileName, string toFileName)

1)
if (!this.GetIsFileExistsfromFileName,  
 throw new FileNotFoundException();
System.IO.File.Copy(fromFileName, toFileName, true);
return true;

2)
if (this.GetIsFileExists(fromFileName),  
{
 System.IO.File.Copy(fromFileName, toFileName, true);
 return true;
}
else
 throw new FileNotFoundException();

上下のどちらがいいのかな。

443 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:13:15 ]
それを踏まえて、さらにコピーの上書不許可時にコピー先にファイル名存在でfalseを返すとき
public bool CopyTo(string fromFileName, string toFileName, bool canOverride)

1)
if (!this.GetIsFileExists(fromFileName))
 throw new FileNotFoundException();
if (!canOverride)
{
 if (this.GetIsFileExists(toFileName))
 return false;
}
System.IO.File.Copy(fromFileName,toFileName, false);
return true;

2)//ビルド時にエラーになるかも
if (this.GetIsFileExists(fromFileName))
{
 if (canOverride)
 {
  System.IO.File.Copy(fromFileName,toFileName, false);
  return true;
 }
 else
 {
  if (this.GetIsFileExists(toFileName))
  return false;
 }
}
else
 throw new FileNotFoundException();



444 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:13:52 ]
3)
if (this.GetIsFileExists(fromFileName))
{
 if (!canOverride)
 {
  if (!this.GetIsFileExists(toFileName))
  {
   System.IO.File.Copy(fromFileName,toFileName, false);
   return true;
  }
 }
}
else
 throw new FileNotFoundException();
return false;

こんな書き方があると思うんだけど、見やすいというか、わかりやすい書き方が思いつかない。
なんかいいアイデアないかな・・

445 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:14:35 ]
引数チェックは上にまとめたいから1



446 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:15:19 ]
bool返す必要があるのか疑問ではある

447 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:18:02 ]
説明がないとわからないようなbool値を返すな

448 名前:434 mailto:sage [2009/01/31(土) 17:21:02 ]
んじゃおれも貼ってみる。ヘルプのサンプル改変だけど、どこかおかしい?
using System;
using System.Threading;
using System.Collections.Generic;
class TimerExample
{
  static void Main()
  {  AutoResetEvent autoEvent   = new AutoResetEvent(false);
    StatusChecker statusChecker = new StatusChecker(1000);
    TimerCallback timerDelegate = new TimerCallback(statusChecker.CheckStatus);
    Timer stateTimer = new Timer(timerDelegate, autoEvent, 1000, 20);
    autoEvent.WaitOne(60000, false);
    stateTimer.Dispose();
  }
}
class StatusChecker
{
  int invokeCount, maxCount;
  public StatusChecker(int count)
  {  invokeCount = 0;
    maxCount = count;
    Console.WriteLine(DateTime.Now);
  }
  public void CheckStatus(Object stateInfo)
  {  AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
    if(++invokeCount == maxCount){
      Console.WriteLine(DateTime.Now);
      autoEvent.Set();
    }
  }
}

449 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:27:03 ]
>>435 のコードを実行してみた

Pentium4@2G WinXP .NET 3.5SP1
結果 00:00:31.2455778

というわけで31秒かかる環境はここにもある。

450 名前:434 mailto:sage [2009/01/31(土) 17:34:00 ]
>>435のコードは31.193秒だった。同じだね。
Vista Home Premium
Core2 Duo T7300@2.00GHz

451 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:38:53 ]
>>448
こちらは、21-22秒で完了。起動時の1秒待機があるから20.5秒くらい。
>>440の説が正しいなこりゃ。


452 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:45:43 ]
戻り値と例外モデルが混在してるのがイライラする。

453 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:50:32 ]
リアルタイムOSじゃないんだから無理ってのが出ないのはそこまでの正確さは求めていないってこと?

454 名前:434 mailto:sage [2009/01/31(土) 18:08:02 ]
しつこいが、System.Windows.Forms.Timerでも試してみた。
private void timer1_Tick(object sender, EventArgs e)
{
label3.Text = (Convert.ToInt32(label3.Text) + 1).ToString();
}
というカウントアップをリアルタイム描画。
1000回回して31.24秒だった。
もういいや。

>>453
それは、(ひょっとすると元質問者以外は)百も承知でしょ。

455 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 18:47:05 ]
>>445-447
ごめん、例が悪かったね。返り値が必要/不必要という点でなくて、
そういう返り値を出したいとき、どう書くのがいいのかなと思って。

別の例を出したほうが理解してもらいやすいのかな。
public int GetType(string word) 例えばword=="nullpo"の時0で、それ以外1を返すとき、
わかりやすいのはどれだろう。

if (word == "nullpo") ■1
 return 0;
else
 return 1;

if (word == "nullpo") ■2
 return 0;
return 1;

int type = 1;
if (word == "nullpo") ■3
 type = 0;
return type;





456 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 18:48:24 ]
それを踏まえて、canAcceptNullpoがTrueの時には、1を返したいとすると、
public int GetType(string word, bool canAcceptNullpo)

if (word == "nullpo") ■a
 if (canAcceptNullpo)
  return 1;
 else
  return 0;
else
 return 1;

if (canAcceptNullpo) ■b
 return 1;
else
 if (word == "nullpo")
  return 0;
 else
  return 1;

if (canAcceptNullpo) ■c
 return 1;
if (word == "nullpo")
 return 0;
else
 return 1;

などあると思うけど、もしわかりやすいアイデアあったら頼みます。

457 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 19:02:09 ]
うぽ
return (word == "nullpo") ?  ((canAcceptNullpo) ? 1: 0) : 1;
というのは冗談として、
事前条件的なものは早めにチェックして単独でreturnしたほうがいいと思いますよ。
引数の検査、つまりnullチェックのや範囲チェック的なものはそれ。


458 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 19:05:44 ]
正直、「それを踏まえて」の人が何を主張したいのかよーわからん。
どうでもいいだろそんなの。

そもそも最初の質問者の質問意図と全然違うこと言ってるのに「それを踏まえて」
ってどういう神経?

459 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 19:11:33 ]
戻り値と例外モデル混ぜるなってアドバイスは
素直に受け止めておいたほうがいいとおも
例外の役割のうちに一貫したエラー処理メカニズムの提供があるんだから
>>455-456よりよほど重要だ

460 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 19:12:19 ]
エラー処理じゃないか。通知だね

461 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:02:03 ]
Visual Studioで質問

デバックなしで実行。
開いたウィンドウをクリックすると
そのウィンドウが最小化されてしまう。
つまり最大化やら最小化ができない。

複雑でも何でもないんだが教えてくれ…

462 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:03:23 ]
で、どこに質問があるの?

463 名前:デフォルトの名無しさん [2009/01/31(土) 21:09:12 ]
>>461
フォームのプロパティを確認しろ

464 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 22:13:49 ]
みんなありがとう。なんか釈然としなくてね。

>>457
単独で、returnできるうちにしてしまうってのが正解なのかな。やっぱり。

>>458
>どうでもいいだろそんなの。
それならいいんだけどね。なら動けばなんだっていいみたいな感じが自分ではするので、
何か可読性がよく、わかりやすい方法が内かなと思って。

「それを踏まえて」の前はif文によって異なるreturn値を返す方法についての方法論を示したということ。
「それを踏まえて」の後は、その異なるreturn値に、さらに例外がでてきた場合の例なんだけど、
書いていて旨い例が見つからず、何かもっと言い例がないかなと思ったの。

>>459
了解、心にとめておきます。
ただ、手近にあってソースで例を書いたので、戻り値と例外が一緒くたの例になってしまった。
例が悪かった。すまない。よければ、>>455>>456の書き方で、
自分はこうしてるみたいな理由があったら教えてほしい。

465 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 22:25:50 ]
だからそんなことどうでもいいって。
もう、そんな些細なことに固執して宗教論争してても飯が食えるような
牧歌的な時代じゃないんだから。

もっと他に理解したり習得したりすべきことが山ほどあるだろ。



466 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 23:21:19 ]
>>464
そういう些細なことまで書いてあるCode Completeって本がある
複数リターンについても記述があったはずだからまずは立ち読みで

467 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 23:49:29 ]
>>465
どうでも良くないだろ。こういうのは大事だぞ。
生産性や可視性の観点から重要。
最近はPCの性能が良くなったからか、
同じスコープでインスタンスを返すループを伴うメソッドやプロパティを、
何の資源も消費せずに、いくらでもインスタンスが出てくる
打ち出の小槌みたいに簡単に使う傾向があるしな。

468 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 00:12:10 ]
命名規則で質問ですが

動詞に対する結果を示すbool型変数の名前はどうしてますか

IsCreated IsClosed 等、Is○○○だと英文法的におかしいので

469 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 00:14:59 ]
おかしくないですよ。

470 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 00:15:53 ]
IsCreated IsClosedなんて.NET Frameworkのクラスライブラリにいくらでもあるし
英文法的にも別におかしくない

471 名前:468 mailto:sage [2009/02/01(日) 00:25:58 ]
そうですかありがとうございます

472 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 02:31:40 ]
ja.wikipedia.org/wiki/%E6%84%9B%E9%96%93%E3%81%BF%E3%82%8B%E3%81%8F

473 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 03:09:39 ]
Process.Startで起動した外部プログラムからの
戻り値を受け取ることは出来ますか?

474 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 03:10:50 ]
ExitCodeプロパティ


475 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 05:30:49 ]
>>468
引数やインスタンス名まで含めて一つのセンテンスと捉えると、寧ろ自然なことが多い



476 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 10:03:38 ]
HashSetがなぜか見つからない言われるなーと思ったら
Genericの中でこいつだけdllが違うのか
しかもSystem.Coreはデフォルトでは参照設定に追加されてないという罠。

477 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 10:24:45 ]
3.5で追加されたもんだから仕方ない
一応csc.rspには入ってるけどな

478 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 11:21:44 ]
HashSetってなんに使うんだ?

479 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 11:30:00 ]
>>476
>しかもSystem.Coreはデフォルトでは参照設定に追加されてないという罠。

プロジェクトテンプレートの設定次第。
デフォルトで参照設定に追加されている人も結構多いはず。
LINQ用のクラスもSystem.Coreに含まれてるから。

LINQを使うのにいちいち参照設定が必要だったって人はあんまり見ないよね?
そういう人ははHashSetも最初からIntelliSenseに表示されるように見えているはず。

480 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 11:36:44 ]
>>468
bool型のプロパティの名前をisやhasで始まるのは定番中の定番。
isなしで形容詞or過去分詞のみのパターンも、それはそれで定番。

481 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 11:55:08 ]
過去分詞のみなのはイベントの名前にしていただきたいところだがな

482 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 12:37:39 ]
Javascriptから来た子は、OnClickとかがイベント名じゃないことに文句言ってた

483 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 12:39:36 ]
VBAもOnClickってあったな

484 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 13:18:35 ]
ちなみに.NETでClickedとかClosedみたいな名前のイベントがあったら
過去分詞じゃなくて動詞の過去形(ガイドライン参照)

485 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 15:50:10 ]
Putはどっちですか><



486 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 17:28:11 ]
複数判定する場合はAreなんちゃらにすんの?

487 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 17:49:53 ]
複数?コードで書いてみて。


488 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:15:04 ]
C#でフォルダを開くProcessについて質問があります。
(1)
this.openProcess = new System.Diagnostics.Process();
this.openProcess.StartInfo.Arguments = @"C:\略\My Documents\";
this.openProcess.StartInfo.FileName = @"C:\Wnidows\explorer.exe";
openProcess.Start();

(2)
System.Diagnostics.Process openProcess = System.Diagnostics.Process.Start(@"C:\略\My Documents\");

(3)
System.Diagnostics.Process.Start(@"C:\略\My Documents\");

(2)と(3)では、My Documentsを開くことができます。
(1)の場合は、引数をうまくとれず、C:\が開いてしまいます。
この理由と、引数としてフォルダを指定する方法を教えてください。


489 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:15:51 ]
○ is △? → ○.Is△で○が複数になることって無いんだよね
○がコレクションの場合は一つのコレクションとみなす

490 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:19:21 ]
>>488
半角空白を含む引数は" "で括る
基本だよ

491 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:28:18 ]
>>490
えっ?
this.openProcess.StartInfo.Arguments = @"C:\略\My Documents\";
と""でくくってあると思うんですけど…。
違ってたらごめんなさい。
というか、C:\Windowsとかの半角空白を含まないフォルダも開けないのです。


492 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:34:02 ]
>>491
そのダブルクォーテーションはC#の文字列を作る意味しかない。
その中身の文字列にダブルクォーテーションを入れないといけない。
"\"C:\\略\\My Documents\\\""のように。

493 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:53:58 ]
>>492
なるほど!
そうでしたか。できました。ありがとうございました。


494 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 20:46:31 ]
>>484
BegunかBeganか迷った末にStartedでお茶を濁すのですね。わかります。

495 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:18:17 ]
>>494
あるある



496 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:07:25 ]
文字列の定義にstaticクラスを使ってるんですが

public static const Define{
public const string Type0 = "hoge0";
public const string Type1 = "hoge1";
....
}

これだと文字列と比較するときにで

string temp = "bar";
if( bar == Define.Type0){
...
}
else if( bar == Define.Type1){
...
}

といちいち書かなくちゃならんのです。
かといって
public static const Define{
public const int numofNames = 10;
public const string[numofNames] Names = { "hoge0", "hoge1", ...., "hoge9"};
}

みたいな定義はstaticクラスないでは出来ないみたいだし・・・
何か良い方法ないですかね

497 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:10:46 ]
「かといって」以前と以後で話がまるでつながってないんだが?

498 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:11:37 ]
constを諦めて、static readonlyにしたらだめなの?

499 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:11:58 ]
配列にしたいけどなんかできないみたいだから
Type0, Type1, ... みたいにしてるけど、
何かいい方法ない? って聞いてる、
と、よく分かるけど

500 名前:デフォルトの名無しさん [2009/02/02(月) 00:17:42 ]
>>499
497 じゃないけどお前の説明でやっと意味がわかった。
それなら、

public static readonly ReadOnlyCollection<string> Type =
 new ReadOnlyCollection<string>(new [] {
  "hoge01",
  "hoge02",
 });

こういうことかな?ReadOnlyCollection<string> は本当は継承したクラスにしたほうがいいんだけども

501 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:23:04 ]
public static const Define{
public static readonly string[] Names = { "hoge0", "hoge1", ...., "hoge9"};
}
じゃだめなのか?
これだと、文字列との比較は
if(bar == Define.Names[ "hoge0" ])
のように書くことになる。

502 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:29:23 ]
>500-501
おー、どっちもできました。
constだとnewできなくて、readonlyだとnewできるんですね。



503 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:18:52 ]
Visual C# 2008をインストールして使い始めたんですが、
テキストエディタでコーディング中に表示されるポップアップヘルプの中身が英語なんです。
前使ってたヴァージョンでは日本語だった気がしますが、どうやったら日本語化できますか。
ちなみにメニュー等は全て日本語です。

504 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:24:35 ]
>>503
blogs.msdn.com/dd_jpn/archive/2008/11/26/9143673.aspx
これか?

505 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:56:30 ]
Visual C# 2008環境のデバッグについて質問があります。
開発環境をインストールしていないターゲットマシン(XP)で、
エラーメッセージをファイルに落とすには、
どのようにコンパイルしたらよいのでしょう?



506 名前:デフォルトの名無しさん [2009/02/02(月) 04:05:05 ]
Visual Studio C# 2008で質問があります。
コンパイルをしてexeファイルが出来上がるのですが、
これの会社名や著作権の情報を変更するにはどうすれば良いのでしょうか?

507 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 04:12:29 ]
propertiesのAssemblyInfo.csを修正

508 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 05:34:26 ]
ありがとうございました。

509 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 05:39:50 ]
どういたしまして。

510 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 06:53:14 ]
DirectryクラスのGetFilesより早く一覧を取得する方法ないすか

再帰で一覧取得しようとしてるんだけど
たかだか3000ファイル程度でもAPIのFind***Fileに比べて遅くてたまらねえっす

511 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 07:06:31 ]
ならAPI使えばー

512 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 07:27:01 ]
身も蓋も無いこと言わないで下さい><

…最終的に解決しなきゃそうします多分

513 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 09:59:53 ]
データベースからとってきたdatetime型の日付形式の時間部分だけを抜き取って、
XX:XXではなくXX時XX分と表示させたいのですが、簡単な方法ありますでしょうか?

514 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:15:19 ]

MessageBox.Show(DateTime.Now.ToString("HH時mm分"));

ってやってみ

515 名前:デフォルトの名無しさん [2009/02/02(月) 10:27:10 ]
XmlsAa.AaRow B =(XmlsAa.AaRow)C.Rows[0];
って何をやっているんですかね?Rowってのはテーブル1行分使う意味らしいのですが
()とかRows、[0]がわかりません。配列?



516 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:33:41 ]
(XmlsAa.AaRow)はキャスト
[0]はインデクサ

元が何型かは知らんけど
Rowsコレクションの最初の要素をXmlsAa.AaRow型にキャストしてるだけ

分からんならキャストとインデクサでググれ

517 名前:513 mailto:sage [2009/02/02(月) 10:34:17 ]
普通に抜き出して置換することにしました。
無駄な書き込み申し訳なかったです。

518 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:35:49 ]
ええ!? 514ガン無視!?

519 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:36:27 ]
エエエエエエ(AA略)

520 名前:514 mailto:sage [2009/02/02(月) 10:37:15 ]

       ____
     /      \
   /  _ノ  ヽ、_  \
  /  o゚⌒   ⌒゚o  \
  |     (__人__)    |  
  \     ` ⌒´     /

521 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:44:28 ]
>>510
>DirectryクラスのGetFilesより早く一覧を取得する方法
>再帰で

DirectoryInfoクラスのGetFiles使ってるよね?
再帰で取得することよくあるけど、そんなに差はなかったような気がするが

522 名前:513 mailto:sage [2009/02/02(月) 10:45:00 ]
MessageBoxに表示したいわけではありませんので。

523 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:48:40 ]
エエエエエエエエエエエエエ(AA略)


524 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:50:20 ]
何この流れ・・・

525 名前:デフォルトの名無しさん [2009/02/02(月) 11:07:55 ]
>>516 ぐぐったけどよくわかりませんでした。ぐぐり続けてみます。C#というかプログラムは単語が理解できなくてつまずくなぁ



526 名前:デフォルトの名無しさん [2009/02/02(月) 11:43:29 ]
環境
WinXP SP3
C# 2.0

今度デルファイで作られたソフトkらソケット通信(TCP)を利用してデータの受信を行うことになりました。
相手は1情報を512バイト固定で送信してくるそうです。

例えば相手が以下のようなデータを送信してきて受信完了した場合
どのように受信したデータを展開すればよいのでしょうか?

形式はなんでもかまわないので受信データをひとまず展開できれば構わないのですが・・・
一応受け取ったデータを同じような構造をもったクラスに展開して内部で処理用と考えています。

i1 integer;
i2


25回(100バイト分)

d1 double
d2


8回(72バイト分)

yobi : array[0..339] of shortint
(340バイト分)

計512バイト

こんな感じなのですが、なにかこういう展開のヒントや情報でも構わないのでお教え願えませんか?

527 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:07:35 ]
構造体にしといてbyte[]からMemoryStream作ってBinaryFormatterでDeserializeとか?

528 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:22:27 ]
C#でゲーム作って配布すると、
ソースコードを見られてしまうの?

529 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:27:34 ]
それがなにか?

530 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:30:01 ]
みんなで公開羞恥プレイですよ

さああなたも御開帳

531 名前:デフォルトの名無しさん [2009/02/02(月) 12:55:11 ]
>>527
そんな感じで出来るんならやってみようと思います。
ありがとうございました。 

532 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:58:59 ]
>>526
形式は何でも構わないってことはDelphiで作られたソフトってのも変更可能なわけ?
その割に512バイト固定とか言ってるけど

.NET的にはバイナリの塊を処理するのは
BinaryReaderで読み取っていったり一つずつBitConverterで変換していくのが基本

533 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 13:21:48 ]
nslookup.exeで調べた相手のSMTPサーバーに直接メールを送る事って出来なくなったのね・・・

534 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 13:27:35 ]
何年前の話だよ

535 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 14:34:06 ]
>>534
今日の話ですけど?w



536 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 14:43:26 ]
さすが初心者スレだ

537 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 14:45:40 ]
まあ取り敢えず独り言はチラシの裏に書いてろ
質問したいなら質問の体裁を取れ
みたいな

538 名前:デフォルトの名無しさん [2009/02/02(月) 14:47:43 ]
>>532
変更は可能と言えば可能なんですが・・・
出来るだけデルファイ側は変更しないようにとのことなので…orz

例えばa1,a2辺りを処理するのは
おとなしく受け取ったバイト配列を BitConverter.ToInt32
で一個づつ自分用にばらしていくのが妥当という感じでしょうか?


539 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:14:40 ]
そうだよ
直接構造体に当てはめるなんてメモリイメージに縛られすぎ
というのがC#の方針
.NET間ならBinaryFormatterのシリアライズとかで十分だからな

540 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:31:15 ]
エンディアンやバウンダリの問題もあって
テキストベースのプロトコルにすることが多くなった。
固定レコードは流行らなくなったな。

541 名前:デフォルトの名無しさん [2009/02/02(月) 15:33:40 ]
Visual Studioやってたら、'private'は無効です。のエラーが
毛テスタ

542 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:35:44 ]
'private'を削りなさい

543 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:37:30 ]
前の行の最後にセミコロンが無い

544 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:39:40 ]
メソッドの中で private 宣言した

545 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:43:21 ]
24時間働いているなら労働基準監督署へ



546 名前:デフォルトの名無しさん [2009/02/02(月) 15:49:38 ]
private 削ると、使ってる変数が全部定義がありませんってエラーきますた。
セミコロンはありまふ
メソッドの中で宣言・・・これかもです。ありがとう。
Protected voidなんちゃらの処理の中の変数宣言で、privateはダメなのですかね

547 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:53:37 ]
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
     ̄



548 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 16:10:49 ]
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
     ̄

       ∧∧
        ヽ(・ω・)/   ズコー
      \(.\ ノ
     、ハ,,、  ̄
     ̄


549 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 16:59:36 ]
ふらっとC#
503です。
ターゲットマシン(XP)でのFormアプリケーションのデバッグ方法、助言お願いします。
いまのところMessageBoxでいくつか変数を表示しようとしているます。
問題はMessageBoxさえ表示されないことで、ということはその前でエラーが起きていることはわかるのです。
かといって頭からぜんぶMessageBoxというのもなかなか途方にくれる話ですし。
デバッグのときに表示されるような情報を、一括してテキストファイルに落とせれば楽だと思うのです。
そういう方法ってあるんですか?


550 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 17:04:05 ]
msdn.microsoft.com/ja-jp/library/system.diagnostics.debug(VS.80).aspx

551 名前:デフォルトの名無しさん [2009/02/02(月) 18:07:36 ]
>>539
なるほど
その方向で進めていくことにしました。

確かにマネージド同士なら楽なんですが・・・
そうでないものは初めてでちょっと色々 orz

552 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 18:26:36 ]
1行目に#define DEBUGと追加して、Debugフォルダにexeファイルができました。
ありがとうございました。
がっ。
エラー情報やいずこ!?


553 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 18:51:48 ]
>>552
構成ファイルのapp.configにこれをぶち込んどけ
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add name="Text" type="System.Diagnostics.TextWriterTraceListener"
                initializeData="c:\log\TraceSample.txt" />
        <!-- <add name="Text" type="System.Diagnostics.ConsoleTraceListener" /> -->
        <!-- <remove name="Default" /> -->
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

554 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 19:19:38 ]
>>522
ワロタ

555 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 20:10:05 ]
>>535
今日知ったんなら今日の話だよなw
>>534の負けww



556 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 20:12:09 ]
>>552
それじゃDEBUGの意味がないだろ
TraceクラスとTRACE使え

557 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 21:59:35 ]
C#ってクラス名に漢字使えたよね?

558 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:01:47 ]
うん

559 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:11:00 ]
>>557
やめろ!やめるんだ!
そ、そんなソースは認めないぞ

#define ノシ throw
calss 三旦 : System.Exception {..}

if ( this.Value < this.Min ) ノシ 三旦;

560 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:14:17 ]
#define がないし。

561 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:14:37 ]
>>559
C# で define は値を定義できないぞ

562 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:19:06 ]
abstract class A
{
 public abstract int Hoge { get; }
}

というクラスがあり、これを継承したBでgetの実装をします。
そしてクラスB内から値をセットするのにprivate setを追加したいのですが
CS0546になりできません。
こいうことはできないのでしょうか?

class B : A
{
 public override int Hoge
 {
  get { 〜 }
  private set { 〜 } // CS0546
 }
}

563 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:19:48 ]
カルス・・・



564 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:29:26 ]
インターフェイスならできるけどクラスではできません

565 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 01:23:41 ]
WindowsXP C# 2008で質問です。
ビューアーを作り、それをデフォルト起動アプリケーションにしました。

string[] args = Environment.GetCommandLineArgs();
if (args.Length != 1) {Title = System.IO.Path.GetFileName(args[1]);}

で、ファイル名をタイトルにしてウィンドウに表示しようとしています。
exeファイルにデータファイルのアイコンをドラッグするとファイル名を取得できますが、データファイルを単独でダブルクリック起動する場合には取得できません。
デフォルト起動の場合、データファイルのファイル名は、exeファイルにどのように渡されていて、exeからはどのように取得できるのですか?
ご教示願います。




566 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 01:44:01 ]
>>553
ありがとうございます。
app.configがなかったので、新規項目の追加で構成ファイルを追加してApp.configを作り、そこに追加しました!
で、早速exeを作成し、相変わらずエラーが出ていますが、ログは記述されず…。
ログファイルも作成されていません。
>>556
ありがとうございます。
Traceクラスについて勉強してみます。
いま
www.atmarkit.co.jp/fdotnet/dotnettips/757debugview/debugview.html
を読んでます。


567 名前:Charles Petzold mailto:sage [2009/02/03(火) 02:36:35 ]
YO, YO, YO. Good midnight, Japanese C# programmer.
My name is Charles Petzold.I write one book. That name is Windows programming by C#.
This book cover most part of Programming Windows by C#.So if you read this book, you can write many system.

By the way, I have three words for Japanese Programmer.
[Don't use Linux.]

Do you understand?

Good bye.

568 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 02:51:16 ]
Feel free to write in English.

569 名前:デフォルトの名無しさん [2009/02/03(火) 02:57:20 ]
petzoldにはお世話になったなあ
でも今見ると古いかもなあ

570 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 06:07:37 ]
>>565
レジストリにどういう風に登録されてるかによる。

普通、「アプリのパス "%1"」 なんで、そのまま取れるけどね。

571 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 07:55:20 ]
オンラインヘルプを自PCに持ってくるにはどうすればいいのでしょうか?
いちいちネットに繋ぎに行くんでウザいのですが…

572 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 08:03:55 ]
ローカルで見られるヘルプがあるよ。日本語版と英語版
探せば見つかるだろうけど親切な人が教えてくれるかも

573 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 09:34:12 ]
VisualStudioをインストールすればインストール可能
Expressだとサブセット版だけども。
あとはWindowsSDKインスコ。


574 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 10:09:43 ]
>>571
ヘルプを既にインストールしているならヘルプ(Micorosoft Document Explorer)の
「ツール」->「オプション」->「ヘルプ」->「オンライン」で「オンラインではなくローカルのみで実行」にチェック。

インストールしてなくて、必要最小限で良いなら >>573

全部入れたいならコレ。2GBちょっとあるけどね。
MSDN Library for Visual Studio 2008 SP1 (2008年12月更新版)
www.microsoft.com/downloads/details.aspx?FamilyID=7bbe5eda-5062-4ebb-83c7-d3c5ff92a373&DisplayLang=ja
ISO イメージなのでインストールするには、仮想ドライブが使えるソフト(CloneDrive や DAEMON とか)も必要。

575 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 11:16:28 ]
msdn.microsoft.com/ja-jp/library/afadtey7(VS.80).aspx
PropertyInfo.GetAccessors()を呼び出すと、
getアクセサ、setアクセサ、およびその他のアクセサが返ってくるとありますが
その他のアクセサってなんですかね



576 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 11:20:19 ]
初めてプログラム言語に触れたのですが
intとかparseとかその他もろもろ、何て読むのですか?
読み方サイトみたいのってありますか?
読めなくても構わないんですがなんとなく喉の骨が取れない感じです。

577 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 11:24:54 ]
>>576
ttp://dictionary.goo.ne.jp/search.php?MT=Integer&kind=ej
ttp://dictionary.goo.ne.jp/search.php?MT=Perse&kind=ej

本質的には通じりゃいい

578 名前:576 mailto:sage [2009/02/03(火) 11:31:04 ]
>>577
みんなそんなもんなんですね
適当に脳内処理しときます。


今仕事が開店休業状態で暇つぶしにC#ってものを勉強始めたけど
突き詰めたらどんな高度なwindowsアプリでも作れるようになれるのですか?
たとえばosとかofficeとかw
このままだと会社が倒産しそうだから、C#勉強してそっちに働き口みつかるかなぁ・・・

579 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 11:33:04 ]
OSの上で動作するフレームワーク(.NETとかMonoとか)のさらに上で動作してるから
フレームワークより下にはいけない

580 名前:576 mailto:sage [2009/02/03(火) 11:37:12 ]
>>579
たしかにos-.net上で動くって事ですもんね

具体的に言うと、リッピングソフトとかofficeアプリまでなら作れますか?

581 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 11:42:16 ]
それはそれは途方も無く努力すれば

582 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 11:57:21 ]
C#も極めれば空も飛べるよ!

              ハ_ハ
            ('(゚∀゚∩ 飛べるよ!
             ヽ  〈
              ヽヽ_)



583 名前:デフォルトの名無しさん [2009/02/03(火) 13:18:52 ]
そうだね・・・ねてなくて浮いてる気分だ

584 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 13:23:03 ]
寝ろよ
寝不足は生産性も減退させる

585 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 13:25:25 ]
うまく動いてたイベント処理をもうちょっと効率良くしようと思って手を加えて
一週間くらいほったらかしといたら、うまく動いてたときのコード忘れてしまた orz
全く思い出せない




586 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 13:27:28 ]
そうかそうか

587 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 13:38:59 ]
svn

588 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 16:50:25 ]
大規模な改良前にはコード保存しとけば??
おかげさまで「〜〜実装前.txt」が10個以上あるが。

589 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 17:01:44 ]
>>575
おそらく、VB6/COMで、setアクセサ相当が値のLetと参照のSetに分かれていた名残。
Letが.NETのsetアクセサで、Setがその他に対応すると思う。

590 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 17:16:13 ]
>>585>>588
バージョン管理システム使って履歴残せ。


591 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 17:16:35 ]
>>575
言語によっては他の種類のアクセサを定義することもできるということじゃないの
プロパティって複数のアクセサメソッドの情報をまとめたメタデータにすぎないから

592 名前:デフォルトの名無しさん [2009/02/03(火) 17:26:52 ]
Form1上にSplitContainerを配置して

・Panel1にテキストボックスとボタン
・Panel2にデータグリッドビュー

を置いてあるんすけど、テキストボックスとボタンってどのコレクションになるんすかね?

this.Controls だとコレクションは SplitContainer しか入ってないし
this.SplitContainer.Panel1.Controls だとコレクションは Panel1 しか入ってない
this.SplitContainer.Panel2.Controls ってやるとちゃんと DataGridView1 が入ってるのに

わけわかめ

593 名前:592 mailto:sage [2009/02/03(火) 17:31:47 ]
SplitterPanelにPanelを入れ子にしてた orz

594 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 17:32:54 ]
>>592
Panel1.Contols に Panel1 が入ってるわけねーだろ。

595 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 17:38:18 ]
>>593
あわてんぼさんめ



596 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 19:20:41 ]
さぼてんあわめん

597 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 19:30:32 ]
わあさんぼんめて

598 名前:風来坊 mailto:sage [2009/02/03(火) 20:48:10 ]
質問です。
C#にて 音声録音の機能を実装したいと思っています。
.NET 1.1,2.0,3.5は問いません。

デフォに設定されている出力(再生)デバイスの音声信号を
wav(wavにこだわる必要は無い)ファイルとして保存したいのですが、
どうすれば実現できますか?
どなたかご教授ください。お願いします。

599 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:22:40 ]
ぐぐる

600 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:35:08 ]
遮断機をくぐる

601 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:36:45 ]
首をくくる

602 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:42:39 ]
せっかくC#でAPI直接もなんだし、MCIかMDXあたりでどうかな。

603 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:46:32 ]
riffを自分で書くなんてどうかしら

604 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:50:21 ]
DirectShow.NET

605 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:55:42 ]
DirecxShowは推奨されないらしいですよ



606 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:03:05 ]
このスレって質問者じゃなくて答える側が初心者っていうオチ?

607 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:06:26 ]
○×したいんだけど、どうすれば実現できますか?

(´・ω・`)しらんがな

こうやったんだけど上手くいきません。どうしたらいいですか?

(´・ω・`)オジサンが教えたるがな

608 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:21:14 ]
Vista + Visual Studio 2008 Express Edition + C# を使っています。
Debugモードでは問題なく動くのにReleaseモードではフリーズする場合、
どういった原因が考えられますでしょうか?
大量の計算を連続してさせているプログラムで、フリーズする箇所は毎回違うようです。
調べようにも取っ掛かりすらなくて困っています。
よろしくお願いします。

609 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:21:52 ]
CPU休めてますか


610 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:26:04 ]
>>609
100万行くらいのtxtファイルを読んできて、数分間延々と処理させてます。
CPUに負荷がかかりすぎるのが問題なんですかね?

611 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:28:31 ]
ぱそこんもたまにはやすみたがっているんだよ。


612 名前:608 mailto:sage [2009/02/03(火) 22:36:59 ]
タスクマネージャで眺めてたら、
処理開始から1〜2分はCPU使用率50%前後で、メモリ使用量が徐々に増加。
メモリが180MBくらいに達したところでCPU使用率が0%になってフリーズしました。
メモリ食いすぎってことでしょうか?
debugモードでは動くのに。。。

613 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:38:25 ]
デッドロックしてない?

614 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:38:37 ]
そのデバッグモードってデバッグビルド?
リリースビルドでデバッグでも同じ?

615 名前:デフォルトの名無しさん [2009/02/03(火) 22:44:20 ]
>>603
Thunder Forceの戦闘AI?



616 名前:571 mailto:sage [2009/02/03(火) 22:45:47 ]
>>572-574
ありがとうございます。
VMwareでLive版のLinux立ち上げてISOイメージをマウントしてから、
ローカルディスクに全コピーしてみます。

617 名前:608 mailto:sage [2009/02/03(火) 23:00:46 ]
>>613
マルチスレッド処理なので可能性はあるかもしれません。
ただ、デバッグで起こらないのでどうやって調べればいいのか。。。

>>614
>リリースビルドでデバッグ なんてことができるんですね。
試してみましたが、問題なく動きました。
\Releaseフォルダ内のexeを直接起動したときだけフリーズします。

618 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:03:37 ]
一般的には排他処理のところっしょ

619 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 00:49:06 ]
排他制御に不備があって、微妙なタイミングの差で動いたり動かなかったりするのかね。
いずれにせよ質の悪いバグだ。詳しく設計がわからないとアドバイスのしようがない。

620 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 01:32:14 ]
>>570
レジストリですか。
すこし見てみたものの、まったく手がかりがありませんでした。
情報サンクスです。


621 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 02:01:40 ]
別にレジストリ見なくてもわかる

エクスプローラのメニューからツール→フォルダ オプションを選択
ファイルの種類タブで、データファイルの拡張子がどう登録されているか確認

622 名前:デフォルトの名無しさん [2009/02/04(水) 04:07:18 ]
コンボボックスで質問があります。
コンボボックスに二つの項目があり、項目1を選ぶと変数+変数、
項目2を選ぶと変数-変数といったような処理をしたいのですが
if文でどのようにコンボボックスを設定すればそのような処理ができるのでしょうか?

623 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 07:57:00 ]
はい

624 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 08:20:10 ]
>>622
ComboBox.SelectedIndexChangedでSelectedIndex見て判断しろ

625 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 10:06:23 ]
ComboBoxニdelegate突ッ込ンデ自前デ描画シナサイ



626 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 10:39:03 ]
>>621
どうやって関連づけやったのよ?
関連づけやってるところのソース見せて

627 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 10:47:57 ]
>>626
↓でも読んでろ

ttp://dobon.net/vb/dotnet/system/associatedapp.html

どうせ実行ファイルのパスに空白が混じってるとかそういうオチだろうけど

628 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 11:37:58 ]
C#2005で開発したアプリをVistaで動かしてみたところ、
パネルに配置したボタン色がパネルの色に同化してしまいました。
xpでは正常に表示されます
対処方法などあれば教えてください。

629 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 12:09:00 ]
>>627
おマイには聞いてないってw
レジストリを触ったこと無い人がどうやって関連づけしたのかな〜っと

それに実行パスに空白があるからどうなるの?

630 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 12:14:36 ]
普通にファイルを開くプログラムの選択で関連付けしたんで無いの。

631 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 14:02:29 ]
>>629
なんで粘着してんの?親切に教えてるだけじゃない
そもそもの質問者も、プログラムで関連付けをしたいなんて書いてないし
回答者も、レジストリを触ったこと無いとも書いてない
実行パスの空白はCUIのOS触ったことあるなら解るだろ

632 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:05:30 ]
felicaのシステムを作っているのですが、
felicap = felica_polling(pasorip, (ushort)systemcode, 0, 0);
この処理でfelicapに値が入るのですが、この処理の意味が根本的にわかりません。
ここではどういった処理が行われているのでしょうか?

633 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:09:18 ]
FeliCa でソフトを作りまくるスレ 2ブロック目
pc11.2ch.net/test/read.cgi/tech/1210717455/

634 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:18:21 ]
felicaのシステムを作っているのですが、
felicap = felica_polling(pasorip, (ushort)systemcode, 0, 0);
この処理でfelicapに値が入るのですが、この処理の意味が根本的にわかりません。
ここではどういった処理が行われているのでしょうか?

連続で同じカードの読み取りができなくて困っています。

635 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:19:31 ]
>>633
すみません。
該当スレに書き込むつもりが同じところに書き込んでしまいました。




636 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:28:30 ]
生まれて半年の者です。他のクラスの変数に関して質問です。

クラスAとBがあります。
クラスAにStack型stackがあります。
クラスBにString型stringがあります。

クラスBでクラスAをインスタンス化して、stackにstringをpushします。
そして変更されたstackをクラスAに戻して作業を進めたいのですが、
クラスAではstackは元のままになっています。

どのような問題があるのでしょうか?

637 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:30:18 ]
クラスAに戻すとか言われてもよく分からんのでコード貼ってくれ

638 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:32:05 ]
AがStackをそのまま外に晒すのはよくない(別のクラスにした意味がない)
pushするメソッドをAに定義するべき

639 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:34:00 ]
Stackを晒してるなら、Pushしたのが反映されてるはずだがな。
たぶんnewして渡してるとかじゃないかw

640 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:40:32 ]
>>637
戻すじゃなくて戻したいの意味でした。すみません。

ClassA
{
 public void ClassA()
 { }
 public Stack stack = new Stack();
 }

ClassB
{
 public String string = 〜;
 ClassA a = new ClassA()
 a.stack.push(string);
}

これだけだとクラスAでは変更できてないです。
pushしたあとにどのような作業が必要でしょうか?

641 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:41:50 ]
意味不明すぎる

642 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:43:05 ]
たぶんクラスとインスタンスの関係が分かってないんじゃない?
生まれて半年だし

643 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:43:28 ]
staticだな〜説明は誰かに任す

644 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:44:38 ]
そこでstaticにしろと言うのは教育的じゃないと思う


645 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:45:02 ]
もうちょっと勉強進めればわかるよ
staticにすればいいのかもしれないけど実際は絶対やっちゃダメなパターン



646 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:47:02 ]
つってもなあ

「○○したいんだ」

って言ってる奴に勉強しろっても回答になってない気がするぜー

647 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:47:08 ]
ClassB
{
 public String string = 〜;
 ClassA a = new ClassA()
 //↓これメソッド内だよね?
 a.stack.push(string);
}

↑でインスタンス化された a の stack にはちゃんとPushされている。
ただそのせっかく作ったClassAのインスタンスaは参照されないまま消えてしまっただけ

648 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:10:59 ]
C#で質問があります。
timeが11:00と入力されなかった場合(たとえば1100と入力された場合)、コロンを追加しようとしています。
string time;
if (!(time.Contains(":"))) {
time = time[0] + time[1] + ":" + time[2] + time[3];
}
で、この値を見ると、11:00ではなくて98:00になっちゃうのですが、なんでこんな数字になっちゃうんでしょう。
原因と改良方法をご示唆いただけないでしょうか。


649 名前:636の者です。 mailto:sage [2009/02/04(水) 18:15:02 ]
windowsフォームのボタンを押したときの動作をプログラムで書きたいときは、
ボタンをダブルクリックすれば、プログラムを書く場所を自動で作ってくれますが、
クラスBにあるボタンを押したときの動作を、クラスAに書くことは可能でしょうか?

650 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:17:59 ]
>>648
char同士の文字コードの加算になってるから
time = '1' + '1';
でやってみるとわかるよ
time = time[0].ToString() + time[1].ToString() + ":" + time[2].ToString() + time[3].ToString();
にすればいい

>>649
+=を使ったイベントハンドラの登録方法が理解できていればできる

651 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:23:58 ]
> time[0].ToString() + time[1].ToString() + ":" + time[2].ToString() + time[3].ToString();
くどすぎる。
StringBuilder つかおうぜ。

652 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:27:28 ]
じゃあString.Format("{0}{1}:{2}{3}", time[0], time[1], time[2], time[3])で

653 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:27:30 ]
>>647
あ〜昔同じ失敗したな〜

654 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:27:37 ]
>>650
早速ありがとうございました。
ToString()でできました。


655 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:28:11 ]
>>651
そこで、StringBuilderは使わないだろ。
time = time.Substring(0, 2) + ":" + time.SubString(2, 2);



656 名前:636の者です。 mailto:sage [2009/02/04(水) 18:31:41 ]
>>650
なんとなくいけそうです。

>>653
お〜友よ〜

657 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:44:37 ]
>>621
ツール-フォルダオプションは、真っ先に見ました〜。
>>626、636
というか、ここで手動で関連づけを登録しました。

そうしたら、登録したとたん、「詳細設定」のボタンが消え、「元に戻す」というボタンに変化しちゃったのです。

詳細設定のボタンがあれば、アプリケーションの挙動を見れるかと思ったのですけど。
たとえば、txtの詳細設定のopenアクションを見ると、アクションを実行するアプリケーションの項目に、「C:\Windows\system32\NOTEPAD.EXE %1」とあり、これを修正すればよいことがわかります。
ところがなにしろボタンがないから、手も足もでない…。

空白かな〜。う〜〜む。
アプリケーションじたいはデータファイルのダブルクリックで起動しているのですが…。
ま、C#とはあまり関係なさそうなので、この件はこれで。
お騒がせしました。ありがとうございました。


658 名前:デフォルトの名無しさん [2009/02/04(水) 18:57:25 ]
お願いします(゚ω゚)
System.Text.RegularExpressions.Regexを使って
 [ok] 100
 [ok] 0.001
 [ng] 00 → 0
 [ok] 0.1000
前ゼロ入力をReplaceで""に置き換えたいのですが、正規表現が上手く書けませぬ
教えてエロい人

659 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 19:00:35 ]
>>658
正規表現 Part5
pc11.2ch.net/test/read.cgi/tech/1212498448/

660 名前:デフォルトの名無しさん [2009/02/04(水) 19:02:22 ]
あーd>>659 ここで聞きたかったぜっ♪

661 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:49:44 ]
>>645
他クラスからアクセスする変数には手当たり次第static使ってるんだが…

何を勉強すればいいんですか?

662 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:52:53 ]
構造化プログラミング

663 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:55:56 ]
オブジェクト指向プログラミング

664 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:57:38 ]
staticフィールドはダメだがstaticメソッドはいいぞ
privateなstaticメソッドが最高だ

665 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:58:06 ]
構造化プログラミングを理解してない奴が、オブジェクト指向を学んでも無駄。

構造化プログラミングを学んだら、中規模以上のプログラムをたくさん書く。
それからでもオブジェクト指向は遅くないよ。



666 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:59:25 ]
static メンバ変数なんて
ただ1個しか存在しないもんな。
2つ作りてええええええええ!!!! と思っても
1つしか存在できない。
不便過ぎ。

667 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:02:02 ]
C言語等の非OOA出身者はstaticをメモ帳や定数保管庫程度に考えてない

668 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:02:42 ]
しか が抜けた

669 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:02:49 ]
オブジェクト指向も関数型プログラミングも
深いとこに行くと実用的じゃない宗教じみたものがうじゃうじゃ出てくるから
そこに行ってしまわないように気をつけないと

670 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:12:08 ]
むしろいきなりOOPでいいと思うよ。
>>665みたいな意見はありがちだけど、構造化プログラミングなんて
中身のないスカスカな話で馬鹿でなければ「畳の上の水泳」で十分だと思う。

っていうか、俺も含めてたかがOOP理解したぐらいで鬼の首とったように語るのは
とても恥ずかしいよなw

671 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:16:29 ]
物事をオブジェクトに切り分けるというのは大成功した考え方だと思うけど
継承は失敗だしインターフェースの実装もそんなに上手くない感じだと思う
そういった抽象化はクロージャにした方がシンプルで分かりやすい

672 名前:デフォルトの名無しさん [2009/02/04(水) 22:19:30 ]
>>636
> 生まれて半年の者です。

おいおい、生後半年でプログラミングかよ。
たいしたもんだな!

673 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:21:38 ]
どんな天才だよw

674 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:24:22 ]
>>671
使いこなせない人にとって上手くないだけなんだろ

675 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:26:16 ]
母国語より先にプログラム言語を覚えたんだな
いったいどんな子に育つやら



676 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:28:11 ]
今さらオブジェクト指向だデザパタだインターフェースだってやるのは
正直違うかなと思うよ
今のC#にはもっとよい道具があるから
ただオブジェクト指向の基本的なところは抑えておかないとまずいけど

677 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:29:44 ]
だまれ若造

678 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:31:19 ]
お年寄りは静かにしてください

679 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:32:17 ]
>>676
それはC#が、最近になってより初心者向けの機能を実装をしてるってこと?

680 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:33:25 ]
>>676
>今のC#にはもっとよい道具があるから
ないってw
知ったようなこというなよ。

クラスベースのOOPが万能じゃないのは確かだけど、現時点でそのオルタナティブが
C#に限らず発案されているとは思えん。

681 名前:デフォルトの名無しさん [2009/02/04(水) 22:33:31 ]
>>679
クロージャはインターフェースよりも初心者にとって使いやすいと思うよ
直観的だし

682 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:35:26 ]
なんでクロージャーとインターフェイスを対置するんだ?

クロージャーとインターフェイスって「代替財」か?
わけがわからんよ。

683 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:37:16 ]
覚え方なんて人それぞれだし。

自分が通ってきた道についてしか語れないだろ。

684 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:38:00 ]
>>680
クロージャは実際には一つのメソッドを持ったインターフェースを
実装したオブジェクトを簡易に作り出す機能だけど
それさえあればオブジェクト指向の抽象化は全部出来る
オブジェクト指向の継承にまつわるややこしいところはすっ飛ばして
そっちに行くのが今は正解なんじゃないかねえ

685 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:39:36 ]
また変な主義者が来ましたねw



686 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:44:52 ]
>>684
それって、昔の1ファンクション1機能の構造化プログラミングと同じじゃないの?
静的なメソッドとは何がちがうのけ?

687 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:53:45 ]
相談があります。
C#でプログラムを作り始めて半年くらいになります。
ようやく身の回りのソフトは、だいぶ自作できるようになってきました。
ところで、それをリリースしようと思うと、プログラムのなかに直接書いてあるパスワードなどを設定ファイルに移動したり、自分用のディレクトリ構造にあわせて作った部分を汎用にする必要が出てきます。
それはまあやる気になればできそうなのですが、設定不要のかんたんなソフトを知人10人ほどにテストしてもらったところ、だれひとりとして.NETを入れていないため、動作しなかった、ということがわかりました。
ひょっとして、.NETやC#って、すごくマイナーなんでしょうか。
このままC#をつづけた方がよいのか(けっこう使いやすくて気に入ってます)、それとも別の言語に移ったほうがよいのか。
移るとしたら、もっとメジャーな言語ってなんですか?
Webベースのプログラムとか、Ajaxとかですか?
.NETを組み込んだ状態でコンパイルするとかできないんですかね〜?


688 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:55:38 ]
WebでできるようなことならSiilverlightというのがある
イメージ的には「C#で書けるFlash」
ランタイムは超小さいので配布が手軽

689 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:57:55 ]
だからクロージャとインターフェイスは代替関係にないってw
ただ一部の機能が競合関係にあるだけ。

たぶん従来ICompareをわざわざ用意していたようなのがデリゲートでスッキリ
書けるようになった、みたいな例を見て短絡したんだろうけど。

690 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:03:14 ]
>>687
.netFrameworkをインストールしないって人は多いよね
vista以降は.netはインストされてるから、ある程度は問題なくなると思うけど

なんのインストもなくて利用可能なのは、VisualStudioのC++のネイティブコードか、
Delphiぐらいじゃないのかな。

691 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:13:21 ]
しつもんです。

クラス内のメンバの初期化はどこでしてますか?
宣言時に初期化してしまうか、コンストラクタ内で初期化するか迷ってます。

///以下抜粋
internal sealed class 通信
{
private UdpClient UDP;
private Thread スレッド;
private List<byte[]> 受信リスト= new List<byte[]>();///宣言時か
private List<IPEndPoint> クライアントリスト= new List<IPEndPoint>();

public 通信(int ポート)
{
UDP= new UdpClient(ポート);///コンストラクタ内か
スレッド = new System.Threading.Thread(new System.Threading.ThreadStart(受信));
///抜粋以上


692 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:18:16 ]
>>691
基本は宣言時じゃないかな。
コンストラクタでもいいけど、コンストラクタをオーバーロードしているときには、
複数のコンストラクタで初期化しなくちゃいけなくなるから。

別のメソッドを用意して、そこで初期化してもいいけど、意味ない気がするし。
条件によるけど。

693 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:18:50 ]
C#, C♯, C#相談室 Part50
pc11.2ch.net/test/read.cgi/tech/1229661915/

埋まったけど立てられなかった。
誰か頼む。

694 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:22:33 ]
ホスト規制のためNGですた。

695 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:22:51 ]
>>693
あっちは相談室と名乗りながら、
質問の揚げ足を取って悦に浸っている常連ばかりだから嫌い



696 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:23:14 ]
>>686
Cとの比較で言うと、クロージャは「状態のある関数ポインタ」といえると思う
Xの値が欲しい時に

void Hoge(Func<int> getX){ int x = getX(); }

C#ならこう書ける。getXにはintを返す関数がなんでも入れられるしその場で作れる
Cで書くと

struct Func_int{
int (*func)(void*);
void* args;
};
void Hoge(Func_int fi)
{
int x = fi.func(fi.args);
}
こんなんだけど引数の型も作らなきゃいけないし関数はvoid*をとらなきゃいけないしで大変だ
オブジェクト指向で書くと

class Func<int> : IFunc<int>
{
int x, y;
public Func(int x, int y){ this.x = x; this.y = y; }
public int Method(){ return x + y; }
}
クロージャだと

Hoge(() => x + y);

こうだ。
これが進化だよ。

697 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:25:53 ]
>>695
でも作っとかないと、そういう人らがここに常駐されたら困る

698 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:31:25 ]
>>691
その前になんちゅうソースだコレ。

699 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:31:36 ]
>>697
心配無用
既に常駐してる

700 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:36:15 ]
まあとりあえず立てた。
C#, C♯, C#相談室 Part51
pc11.2ch.net/test/read.cgi/tech/1233757615/l50

701 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:36:42 ]
>>696
その例だと従来の方法でもStaticなメソッドを使えば
int x = Class.Method(a, b);
で代用がきくから同じことだと思うんだけど。何が違うの?

702 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:37:33 ]
読解性

703 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:40:36 ]
>>690
VC++ も今は CRT が DLL 推奨だから配るならインストーラ作るべき
なんやけどな。msm があるしサイズも小さいので格段に楽だから
.NET と比べるレベルじゃないけど。


704 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:42:54 ]
自分の場合は固定長バッファ持たせる時とか、ソース直書きのデータを持たせる時以外は宣言の所に初期化コードを書かないようにしてる。
基本的にはできるだけコンストラクタに書いたほうが、読みやすいコードになるよ。
#regionと組み合わせるとなお良い。

指すものがコンパイル時点で決まっていて、利用者側のコードに左右されない要素(リテラル的なもの)は宣言と初期化を一緒にしてもいいと思う
上の固定長バッファはあてはまらないけど…

705 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:44:00 ]
>>687
「.net Frameworksインストールしてね」で終わりじゃないか?
むしろ、Windows Updateで配布されてるんじゃないのか?.netぐらい



706 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:45:31 ]
>>700


707 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:47:58 ]
>>687
「めんどくせえなぁ・・・なんでこんな糞プログラムを・・・。そうだ!インストールしてない事にすればいいんだ!」

708 名前:デフォルトの名無しさん [2009/02/04(水) 23:49:28 ]
>>701
void Hoge()
{
int x = Class.Method(a,b);
}
これだとxはMethod(a,b)から返ってくる値しかとれないでしょ。

void Hoge(Func<int> getX)
こうしておけば

Hoge(() => x + y);
Hoge(() => x * y);

外部から自由な演算を入れられる。
ハッシュテーブルのキーが欲しいということになっても

Dictionary<TKey, TValue> CreateDictionary<TKey, TValue>(TValue[] array, Func<TValue, TKey> getKey)
{
Dictionary<TKey, TValue> dic = new Dictionary<TKey, TValue>();

foreach(var item in array)
{
dic.Add(getKey(item), item);
}

return dic;
}

var dic = CreateDictionary(array, item => item.Name);
その型のKeyにしたいものを自由に選べる

709 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:52:03 ]
.NET Frameworkは再頒布可能だからその自作ソフトとやらに含めて配布すればいいんだよ。

msdn.microsoft.com/ja-jp/library/xak0tsbd.aspx

ちなみにWindows Server 2003、Windows Vista、Windows 7にはリリース時点で最新の.NET Frameworkが入っている。(より新しいバージョンが出て、それが必要な場合は更に入れる必要がある)

710 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:53:57 ]
はやくXPが駆逐されればいいんだがなあ

711 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:57:24 ]
デザインパターンは関数型っぽいことを無理やり手続き型OOPLでやるための工夫が主だから
かなり簡単に実装できるよな

712 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:58:26 ]
>>708
それみると、君の主張するところの直感的でもないし、
初心者にもわかりにくいと思うよ

713 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:02:11 ]
>>712
じゃあオブジェクト指向や構造化でもっと直感的に、
初心者に分かりやすく書ける?

714 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:04:46 ]
スレ違い
よそで存分に議論してくれ

715 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:05:14 ]
初心者ではないが、何が書いてあるかさっぱりだw



716 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:07:06 ]
人の揚げ足取りと議論厨は相談スレにお引き取りください

717 名前:デフォルトの名無しさん [2009/02/05(木) 00:07:42 ]
すみませんコレは仕様なんでしょうか
1:public class Foo{
2: private readonly int[] test = new int[]{1,2,3,4,5};
3: public Foo(){
4:  int[] test2 = test1;
5:  test2[0]=2;
6:  Console.WriteLine(@"test[0]=" + test[0].ToString());
7: }
8:}
上記 2行目readonlyにしてるtestが、5行目で書き換えられてしまいます。

718 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:09:03 ]
>>708 じゃねーけど知りたいんならレキシカルクロージャとかで
ぐぐった方がいいと思うよ。

>>708
2ch で説明するのはさすがに難しいと思う

719 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:09:15 ]
4:  int[] test2 = test;
のまちがいです

720 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:09:37 ]
配列の要素がreadonlyになるわけではありません

721 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:14:31 ]
>>718
2chで説明するのが難しいことが、初心者向けなの?

722 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:15:02 ]
>>718
ググっても関数型言語ユーザーの宗教じみた言論に圧倒されるばかりだと思う

723 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:18:22 ]
>>701
匿名関数は生成したスコープの変数をそのまま取り込める(環境を渡してるって言うんだっけ?)
副産物的な物だけど、遅延評価的な振る舞いも持ち合わせてる

724 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:19:56 ]
この辺の議論からもう13年か。
ttp://java-house.jp/ml/archive/j-h-b/001955.html
ttp://www.google.co.jp/search?hl=ja&q=%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3+interface+site%3Ajava-house.jp

>>718
むしろ近年のクロージャブームはLLの方が先に火をつけた気もするけどね。
JavaScriptの無名関数とかやっぱり初心者泣かせなのかねぇ?

725 名前:723 mailto:sage [2009/02/05(木) 00:21:07 ]
ごめんさっきの >>718 あてじゃなくて >>722



726 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:31:46 ]
何々、これでいいじゃん?

public static class Class
{
 static int i;
 public static int Method() { return i++; }
}

727 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:37:50 ]
>>726
でもさ、C#でクラスそのものを引数に渡すって面倒事が多いでしょ。
だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。

728 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:41:24 ]
クラスそのものって引数に渡せるの?

729 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:41:29 ]
>>727
staticだからclassそのものを渡す必要なんてないよ
どこでも自由に

this.label1.Text = Class.Method().ToString();

でいいんじゃない?

730 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:43:56 ]
>>728
private void button1_Click(object sender, EventArgs e)
のobjectはクラスじゃん?

731 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:48:04 ]
objectはインスタンスだろ

732 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:48:56 ]
ocjectはクラス名だ

733 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:49:27 ]
object

734 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:50:41 ]
この場合は話の流れからインスタンスってことじゃねーの?


735 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:51:26 ]
public class Class
{
 int i;
 public int Method() { return i++; }
}

これの方がいいだろ
たくさん作れるし



736 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:54:51 ]
>>734
この流れって話の本筋なわけ?

737 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:56:27 ]
>>729
それだと元のコードの引数を変えれば動作を変えられるという点が失われているじゃないか。

738 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 01:34:39 ]
>>737
その引数を、Staticなメソッドで渡してあげればいいじゃない
public static class test
{
 static int i;
 public static int Method1() { return i++; }
 public static void Method2(int k) { i = i + k; }
}

739 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 01:36:47 ]
>>738
いや、>>708とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。

740 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 01:45:46 ]
>>739
つまり

>だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。

というのは

>708とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。

と同義ということ?


741 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 01:58:26 ]
C#でCreateToolhelp32Snapshot関数を使いたいのですが、どう書けばいいのか分かりません。
.NET Frameworkに似たようなクラスライブラリはありませんか?

742 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 02:41:42 ]
>>741
89.234.50.65/default.aspx/kernel32/CreateToolhelp32Snapshot.html

743 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 02:43:11 ]
pinvoke.net/default.aspx/kernel32/CreateToolhelp32Snapshot.html

744 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:24:45 ]
>>740
いや、同義というより1つの具体例と言うべきかな。
>>696みたいに別の場合だってある。

745 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 04:17:38 ]
>>732
objectはキーワードだ



746 名前:デフォルトの名無しさん [2009/02/05(木) 06:18:49 ]
C#でアルファベットをfor文のループにかけてAからZまでを表示したいのですが、うまくいきません。
どのようにすればfor文でアルファベットを数値のようにAからZを表示する事が出来るのでしょうか?

747 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 06:20:05 ]
>>746
一番分かりやすいのは配列にすればいいと思うよ

748 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 06:22:37 ]
for(int i=0;i<26;i++)
Console.WriteLine((char)('A'+i));

749 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 06:47:26 ]
for(char c = 'A'; c <= 'Z'; c++) Console.WriteLine(c);

750 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 09:26:15 ]
>>740

>>739
> つまり

> >だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。

> というのは

> >708とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。

> と同義ということ?


751 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 09:31:27 ]
>>740
インスタンスを作ることでコンテキストの別な関数オブジェクトができる(イベント処理の時にstaticだとマズいだろう)
値を変えるのと振る舞いを変えるのとでは大違いだし…

デリゲート(委譲)はその名の通り、実行するタイミングを相手に委ねてる
渡すことを意図しているのは値(狭義の)ではなく動作

752 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:00:29 ]
Form1からForm2をShowDialogした場合、
Formが描画される際に画面の上から順に
貼り付けてあるコントロールが表示される感じで、
Closeする場合も同様にもっさり感があるのだが、回避する方法はある?
ちなみにForm2がLoadされるとDataGridViewにMDBから
データを読込んで表示させているのだけど。

753 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:15:24 ]
それはビルドした実行ファイル?デバッグ?

754 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:17:26 ]
>>753
デバックでも実行ファイルでも描画速度にあまり変化がない感じ・・・

755 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:20:02 ]
実行環境は?



756 名前:デフォルトの名無しさん [2009/02/05(木) 14:20:35 ]
>>752
描画を手動でやる

↓ソース開始↓

[コントロール名].SuspendLayout()   //コントロールの描画停止

//(この間に処理を書く)

[コントロール名].ResumeLayout()  //コントロールの描画再開

↑ソース終了↑

コントロール名をthisにすればForm全体の描画を停止できる

757 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:20:44 ]
それはGUIの設計に問題があるね
フローレイアウトパネルにコントロール配置してFillしたりAnchorしたり
推奨されてないことやってないだろうね?

758 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:21:41 ]
素人発言だけどSuspendLayoutとResumeLayoutとか?

759 名前:752 mailto:sage [2009/02/05(木) 14:36:21 ]
実行環境はXPでCelelon2G・メモ1G
VS2008でつ。

GUIの設計はVB(.Netじゃないヤツ)みたいに
Formにコントロールを貼り付けるだけではダメなのかしら?
Formにあるのは、DataGridViewとButtonとTextBoxとLabelだけ。

DataGridViewコントロールを外して純粋にFormだけでShowすると
幾分早く描画されるって事はDataGridViewの処理が適切でないのかな?

今から756氏と758氏を参考に試してみます。
みんな優しいな。ありがたい!

760 名前:デフォルトの名無しさん [2009/02/05(木) 14:47:04 ]
DataGridViewに対してデータセットをバインドさせると早くなるよ〜
それでも遅いのならSQL文を見直すしかない

761 名前:752 mailto:sage [2009/02/05(木) 15:01:31 ]
SuspendLayoutはあまり変化がなかった・・・ _| ̄|○

今は、OleDbConnection使ってMDBへ接続しているんだけど、
もっと早い方法はあるんですか?
SQL文に関しては単なるSELECT文なのでどうにもならないと思われ。。

762 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:02:32 ]
データのバインドを直接じゃなくBindingSourceに任せてみたらどうだろう
こういう症状はあまり経験も聞いたこともないけど

763 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:08:40 ]
あれ?もしかしてDataSetなし?

764 名前:752 mailto:sage [2009/02/05(木) 15:09:40 ]
>>762
早速試してみる!
VB6から移行してきた口なんだが、勝手が違い過ぎて戸惑いすぐる。

765 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:14:45 ]
DataSetはあります。
コードはこんな感じ(抜粋)
strSelectSQL(変数)へSELECT文を入れてます。

dba = new OleDbDataAdapter(strSelectSQL, dbc);
OleDbCommandBuilder builder = new OleDbCommandBuilder(dba);
dba.Fill(dtset);
dataGridView1.DataSource = dtset.Tables[0];



766 名前:752 mailto:sage [2009/02/05(木) 15:15:47 ]
>>765 
名前入れ忘れたが、752です。

767 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:18:28 ]
CommandBuilderからdatasetまで全部動的か

768 名前:752 mailto:sage [2009/02/05(木) 15:36:30 ]
bindingSourceを追加してみたけど、速度は劇的に早くならなかった。
実行速度はこの位って事で満足したことにまつ。
なんか引っかかるけど・・・

ところでbindingSource下記で使い方間違ってない??
dba = new OleDbDataAdapter(strSelectSQL, dbc);
OleDbCommandBuilder builder = new OleDbCommandBuilder(dba);
dba.Fill(dtset, "TEST");
bindingSource1.DataSource = dtset;
bindingSource1.DataMember = "TEST";
dataGridView1.DataSource = bindingSource1;

教えて君で非常に申し訳なかったです。

769 名前:760 [2009/02/05(木) 15:36:38 ]
動かしてないんでご両所くださいw
すべて妄想ですw

↓ソース開始↓

OleDbConnection odc = new System.Data.OleDb.OleDbConnection();
OleDbDataAdapter odda;

DataSet ds = new DataSet("GetData"); //データセットの名称を指定

//接続情報を指定
odc.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + @"\DUMMYDATA.mdb";

//実行SQL文と接続先情報を設定してアダプタを作成
odda = new OleDbDataAdapter("SELECT * FROM DUMMYDATA", odc);
//データを取得しテーブルを作成
//テーブル名称を設定(任意)
odda.Fill(ds, "tm_DUMMYDATA");

//データソースに設定
dataGridView1.DataSource = ds.Tables["m_DUMMYDATA"];  //インデックス値でもいい

↑ソース終了↑

いろいろ勘違いしてたらごめんね
反省はしないけど


770 名前:752 mailto:sage [2009/02/05(木) 15:44:25 ]
>>769
ソースまで書いてもらって、しかもコメント付で!!
ほんとに親切にありがとう。
素直にうれしす。

771 名前:636の者です。 mailto:sage [2009/02/05(木) 16:40:08 ]
コンストラクタについての質問です。
クラスが3つあります。クラスBは3つコンストラクタがあります。
ClassA
{
ClassB b = new ClassB(〜);
}
ClassB
{
public ClassB(N n){}
public ClassB(N n, M n){}
public ClassB(N n, M m, O o){}
}
ClassC
{
ClassB b = new ClassB(  );
b.〜
}
クラスAからクラスBを呼び出すときは、if文で分けてコンストラクタを1つだけ呼び出すことが
できたのですが、クラスCからクラスBを呼び出すときはどのように呼び出したら良いでしょうか?

772 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:42:45 ]
こっちが聞きたい
ClassAとClassCは何が違うんだ

773 名前:636の者です。 mailto:sage [2009/02/05(木) 16:47:41 ]
>>772
クラスAのwindowフォームからクラスBのwindowフォームを呼び出すんですが、
そのクラスBのフォームの選択欄を別のクラスCで使いたいのです。

774 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:49:37 ]
それがどうした
>>772の答えになってないだろ

775 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:51:35 ]
だったら
class A()
{
public B b;
C c;
public A(){b=〜;c=C(this)}
}

public class C()
{ public C(A a){} }
とかじゃだめ?



776 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:52:32 ]
>>771
逆に聞く。
ClaaAからClassBを呼んだときと同じように、ClassCからClassBを呼ぶとどうなったんだ?


777 名前:636の者です。 mailto:sage [2009/02/05(木) 16:59:15 ]
>>776
コンパイルエラーはでないのですが、
クラスCでは、クラスBの変数を呼び出しても未定義となってしまいます。

778 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:02:16 ]
いいから失敗したコードを晒せ

779 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:03:42 ]
>>777
確認だが、同一form(B)の情報をAとCで共有したいってことでいいの?
だったら両方でnewしてるから
今のコードだったら、AとCがそれぞれ別のform(B1,B2みたいな)を持ってることになる。

違うなら、そもそもやりたいことが分からん。

780 名前:636の者です。 mailto:sage [2009/02/05(木) 17:13:57 ]
>>779
クラスAで入力したテキストの個数によってクラスBのコンストラクタをShow()を使って
1つ呼び出すだけですが、クラスBではリストボックスなどをSelectedItemで選んで、
その選んだ項をクラスCで使いたいのですが、クラスCでクラスBの変数を使いたいときに、
クラスBのインスタンス化を行うときに、どのコンストラクタを選択すればよいのかが分かりません。

781 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:25:00 ]
禅問答みたいw

782 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:33:58 ]
たぶんVB脳、それも極上のやつなんだと思う

783 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:47:52 ]
小文字は大文字クラスのインスタンスだとする。

(1)
a → b1
c → b2

(2)
a → b ← c

どっちなんだ
ちなみに(1)はフォームが2つできる。そしてb1とb2は別物だからリストボックスなんかの情報は共有できない。
俺には(2)を実現したいのに(1)のコードを書いちゃってるように見えるんだが・・・

784 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:16:59 ]
なんか、他のクラスを呼び出すときはNewしなきゃいかんという間違った固定概念をお持ちなのでしょう

785 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:32:58 ]
×固定概念
○固定観念



786 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:46:17 ]
もう少し勉強しましょう、としか言いようがない。

>クラスBのインスタンス化を行うときに、どのコンストラクタを選択すればよいのかが分かりません

クラスBは自分で書いたんでしょう? だったら自分で知ってるはず。
そうじゃなくてたぶんあなたの質問は、
「データをどうやってクラス間で渡したらいいですか?」というやつではないのかい?

なんか書いても書いても返答がないので手応えのない質問者だ

787 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:54:38 ]
馬鹿がバレるのを恐れてるんじゃないの。

788 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:54:43 ]
きょうもしつもんです。

「時間計るときに、System.Environment.TickCountを良く使うけど、
24.9日たったら一周しちゃうから、なんとかならないかなー」
なんて書き込みがよくありますが、
なんでSystem.Diagnotics.Stopwatchを使わないんでしょうか?

数十日間もパフォーマンスカウンタ取得し続けたら、CPUとかハード的に
負担(たとえばやりすぎたら故障しやすいとか)があるんでしょうか?

もしそうだとしたら、なんとかSystem.Environment.TickCountを64bit化する
コーディング方法はあるんでしょうか?

789 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:59:27 ]
>>788
一周したかどうか、チェックすればいいんじゃないでしょうか。

790 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:01:24 ]
フレームワークのバージョンのせいじゃねーの

791 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:05:27 ]
じゃあやっぱりSystem.Diagnotics.Stopwatchでもいいんですかね。
なんかCPUのクロックからどうのこうのって言われるとCPUに悪そうなきがして。

792 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:05:45 ]
はあ?

793 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:09:02 ]
>>788
Vista/Server2008なら、API関数のGetTickCount64()が使える。
まあ、System.Environment.TickCountで間に合う程度の精度での時間計測なら、
DateTime.Now.Ticks / TimeSpan.TicksPerMillisecondでも問題ないだろうけど。

794 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:10:39 ]
ローカル時間使うとプロセス起動中にBIOS時計触ったら狂ってしまいますよね。


795 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:23:05 ]
まあ、NowだとNTPで同期入ったらずれるだろう。
Stopwatchの中身QueryPerformanceCounterだよ。



796 名前:デフォルトの名無しさん [2009/02/05(木) 19:58:46 ]
>>788
はいこれ使ってくれ つSystem.Diagnotics.Stopwatch

.NET Framework1.0「おkおk」
.NET Framework2.0「そんな古臭いコード保障できねーからいらねーよ」

797 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 20:05:51 ]
ストップウォッチ使ってfor文の処理の時間とかをPCごとに幾らになるか計ったらダメなん?

798 名前:デフォルトの名無しさん [2009/02/05(木) 20:35:48 ]
>>796
System.Diagnotics.Stopwatchって2.0からじゃなかったっけ


799 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 20:42:39 ]
>>742
遅くなりましたが、ありがとうございました。

800 名前:デフォルトの名無しさん [2009/02/05(木) 20:47:57 ]
>>798
ごめん 間違えた

訂正

はいこれ使ってくれ つSystem.Diagnotics.Stopwatch

.NET Framework2.0「おkおk」
.NET Compact2.0「サポートしてませ〜ん」

申し訳」ない

801 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:31:23 ]
private void catalogDataGridView_CellContextMenuStripNeeded(sender,e)
{

}

DataGridViewCellEventArgs(e.RowIndex,e.ColumnIndex)で
どこがクリックされたかは取得できるのはわかるのですが
クリックした場所が選択中(SelectedRows)かどうかを調べる方法はないでしょうか?
選択中の行の上でクリックしたときだけカスタムストリップを表示したいのですが

と書いてるうちに自己解決しました。ありがとうございます。


802 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:33:57 ]
どういたしまして。

803 名前:デフォルトの名無しさん [2009/02/05(木) 21:36:48 ]
System.Diagnotics.Stopwatchは1年くらいプロセス起動したまま使い続けても大丈夫なの?

804 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:38:17 ]
パフォーマンスカウンタなんて常に参照されてるんだから気にするなよ

タスクマネージャの情報ほぼ全部そっから取ってんだぞ

805 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:55:05 ]
byte[100]の中から、任意のデータの並び(0x112233とか)を検索するにはどうすればよいですか?



806 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:57:20 ]
>>803
システムの起動(CPUの電源ON)からのカウント数だから、プロセスの起動時間は関係ない

807 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:59:57 ]
>>805
BM法

808 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:01:24 ]
>>805
byte境界を越えてるのも探したいの?
ビットパターンを頭から見てくしかないんじゃね?

809 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:02:42 ]
ちょっと、スレ違い気味な事で申し訳無いのですが・・・
適切なスレがありましたら指摘して下さい。

VisualStudio2005 C# で Webアプリケーション 及び Webサービス を作ろうとしていたのですが、
パケットをキャプチャする為にはIIS上で動かさなければいけないのでしょうか?

「とりあえず動かすのが先だ」と考えて、VSを複数立ち上げて.NET開発サーバー間でやりとりしていたのですが、
いざパケットを見ようと思ったら見方が解らなく、ネットも自分の解る範囲で検索してみたのですがそれらしい情報を
見つける事が出来ませんでした・・・

localhost内でやりとりする(?)パケットを見る事は出来ないのでしょうか・・・?

810 名前:デフォルトの名無しさん [2009/02/05(木) 22:04:03 ]
>>805
byte[100]ならBM法でもたいしたコストかからないよ

811 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:05:53 ]
>>809
WinPCap

812 名前:805 mailto:sage [2009/02/05(木) 22:11:43 ]
やっぱり自力でやるしかないんですね。
便利なクラスが用意されていればと思ったのですが…

813 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:13:34 ]
>>809
ローカルじゃ無理じゃね? 無料の VirtualPC でも使いなよ。

814 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:18:46 ]
>>812
Array.Find()

815 名前:デフォルトの名無しさん [2009/02/05(木) 22:19:02 ]
    public int BytesBytes(byte[] src, byte[] target)
    {
      StringBuilder sbSrc = new StringBuilder(src.Length);
      for (int i = 0; i < src.Length; i++)
      {
        sbSrc.Append(src[i].ToString(@"X2"));
      }

      StringBuilder sbTarget = new StringBuilder(target.Length);
      for (int i = 0; i < target.Length; i++)
      {
        sbTarget.Append(target[i].ToString(@"X2"));
      }

      return sbSrc.ToString().IndexOf(sbTarget.ToString());
    }
(∪^ω^)わんわんお!




816 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:24:33 ]
>>814
勘違い

817 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:26:12 ]
>>809
elend.sakura.ne.jp/?p=117

818 名前:デフォルトの名無しさん [2009/02/05(木) 22:26:55 ]
>>814
Array.Find()だと任意の並びは検索できないんじゃね

原文01122334

検索対象112233

だとヒットしない

819 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:31:58 ]
public static int Find(byte[] src, byte[] target)
{
return System.Text.Encoding.ASCII.GetString(src).IndexOf(System.Text.Encoding.ASCII.GetString(target));
}

820 名前:815 [2009/02/05(木) 22:33:29 ]
>>819に負けた・・・

ASCIIにするの思いつかなかった

821 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:36:00 ]
>>820
いや、君の見て思いついた。

822 名前:デフォルトの名無しさん [2009/02/05(木) 22:36:07 ]
あ、でも>>819だと4ビットずれてたら検索できないね

823 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:37:47 ]
ん、ビット単位でずらして検索するのか?

824 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:45:45 ]
ASCIIだと0x80以降が0x3Fになっちまうっていう

825 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:47:21 ]
文字列にして検索してるのは馬鹿?



826 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:49:51 ]
ネタをネタと(

827 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:50:39 ]
コストを考慮しなくて良い場合は手抜き実装としてアリだと思う

828 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:51:47 ]
>>524
そうか
UTF7でどうだ?


829 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:52:30 ]
>>828はアンカミス
>>824へのレス


830 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:52:43 ]
>>524
まったくだ・・・

831 名前:809 mailto:sage [2009/02/05(木) 22:55:46 ]
>>810
試してみたいと思います。

>>813
どうも自分も調べていてそうなのかもと思い始めた所でした・・・
OSが内部で処理しているみたいですね。
今日中に解決できなければその方法で行こうと思います。

>>817
ありがとうございます。
そのサイトは自分も行ったのですが、
ARPの追加が出来なくて諦めました(汗
(エントリを追加できませんでした:5って奴です)
もう少し知識があれば色々突っ込んでやりたい所なんですが、
勝手にARPをイジっても大丈夫なのかよくわかってないので、
その方法はやめておきます・・・。



みなさんありがとうございます。
とりあえず今日中は頑張ってみようと思います。

832 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:58:06 ]
>>805>>809

833 名前:809 mailto:sage [2009/02/05(木) 23:03:45 ]
>>805 != >>809 です。

834 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:11:10 ]
class Helper<T>
{
 IEnuemrator<T> e;

 public Helper(IEnumerable<T> e)
 {
  this.e = e.GetEnumerator();
  e.MoveNext();
 }

 Result{ Accept, Reject, 保留 }

 public Result Add(T item)
 {
  if(e.Current.Equals(item))
  {
   if(e.MoveNext() == false)
    return Result.Accept;

   return Result.保留;
  }
  return Result.Reject;
 }
}
こんなんを自作して、一つめが合っていたらこれを作って入れるみたいな感じじゃない?

835 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:15:34 ]
何それ



836 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:37:16 ]
誤爆?

837 名前:817 mailto:sage [2009/02/05(木) 23:40:31 ]
>>831
該当の記事には要点しかなので、そのまま説明内容を打ち込んでも
ダメなのは理解してるのかな?
事前に
blogs.yahoo.co.jp/akio_myau/34370200.html
とかで説明してるようなMicrosoft Loopback Adapterを追加してやらなければ
ならない
これはローカル通信専用の仮想のネットワークカードのようなもの
するとネットワークが1つ追加されるので、これにIPなどを設定することで、
初めて817の記事内容にあるarpコマンドを受け付けるようになる

デフォルトのローカル通信はキャプチャできないけど、追加した仮想ネットワークは
ローカル通信には違いないけど仕組みが若干違うのでキャプチャできるってことだと思う
なお、arpテーブルはアドレス解決のキャッシュみたいなものなので自分で
設定する分には特に心配はない


838 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:02:27 ]
>>835-836
>>805へのレスだよ

839 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:03:35 ]
誤爆の方がよかったね

840 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:07:11 ]
ええええ、まさかとは思ったが・・・

841 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:08:23 ]
こんなに素直なコーディングを見てそんな感想かよ

842 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:17:39 ]
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /

843 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:19:15 ]
じゃあ>>805の解をもっと素直に書いてくれや

844 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:20:41 ]
揚げ足取りの時間です

845 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:21:58 ]
どうでもいいけど、バグってんだよなそれ >>834
IEnumerator<T> が何を実装しているかもう少し見たほうがいい
foreach 使わないと無駄に長くなる理由でもあるんだけど



846 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:29:48 ]
IDisposableにしろって話?
嫌だよめんどくさい

847 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:32:39 ]
                             |
                             |
      ∩___∩             |
      | ノ  _,  ,_ ヽ        ((  | プラプラ
     /  ●   ● |         (=)
     |    ( _●_)  ミ _ (⌒)   J  ))
    彡、   |∪|  ノ
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /         ヽ /
   \_,,ノ      |、_ノ

848 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:34:56 ]
お取り込み中すいません。
Windows Forms1.1(VS.NET2003)のLabelのTextに
"‐"(シフトJISの815D)を設定すると表示されなくて困ってます。
仕様なんでしょうか?
WinForms2.0やVB6.0(Label.Caption)では表示されます。
Buttonとか、"&"のアクセスキー処理ができるコントロールでは
みんなこの現象が出るようです。.NET1.1はSP1入れています。
"‐"や"815D"で検索しても情報がなくて。。。

849 名前:809 mailto:sage [2009/02/06(金) 00:36:08 ]
>>837
ipconfigにloopbackというのが無い事に気づき、インストールしてarpまではたどり着けました。
ただ、routeするとすでに登録されているとの事で、route PRINTで確認したのですが登録されてました。
これでキャプチャできるのかな?と思ったのですが、やはり見れませんでした・・・
これは見ながらやった設定が間違っていたのか、もしくは自分がNetworkMonitorの使い方を正しく把握していからかのどちらかではないかと思います。
ためしにブラウザにloopbackと入れるとIISのページが表示されたので、loopback == localhost???とか、正常にloopbackされているという事?と、色々頭に?が浮かんでます笑

後一息の様な気がするのですが、明日朝もう一度試してみてダメならダメでまた時間のある時に試してみようと思います。
私の様な初心者に細かに解説していただき、本当にありがとうございました。

850 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:46:46 ]
>>848
これだな。Shift_JISの0x815D == U+2010

Windows Server 2008、Windows Vista、Windows Server 2003、および Windows XP で
GDI+ API 関数を使用するアプリケーションを使用すると、Unicode ハイフン文字 (U+2010) が描画されない
support.microsoft.com/kb/956807/ja

.NET 1.1はコントロールの描画にGDI+を使う。
.NET 2.0で標準だとそこにはGDI+を使わなくなったので、.NET 2.0だと問題が起こらなかったというわけ。

851 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:48:28 ]
>>848
www.atmarkit.co.jp/fdotnet/vblab/appqa_04/appqa_04_01.html
support.microsoft.com/kb/956807/ja







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<209KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef