ふらっとC#,C♯,C#( ..
[2ch|▼Menu]
421:デフォルトの名無しさん
09/01/31 12:02:12
ダブルバッファリングじゃないの

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

423:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/31 12:24:11
Direct3Dでも使わないと描画間に合わないだろ

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



426:デフォルトの名無しさん
09/01/31 12:33:10
なんか子供だなぁ。

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

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


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

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


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

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

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

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

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

434:デフォルトの名無しさん
09/01/31 14:56:27
System.Threading.Timer使ってConsoleアプリケーションで、

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

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

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

435:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/31 16:30:27
Directoryを外部から隠蔽したいのですが、どんな感じに実装したらいいですか?

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

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

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


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

440:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/31 17:05:31
単に終了イベントを待つのにビジーループさせてるんとちゃう

442:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/31 17:14:35
引数チェックは上にまとめたいから1

446:デフォルトの名無しさん
09/01/31 17:15:19
bool返す必要があるのか疑問ではある

447:デフォルトの名無しさん
09/01/31 17:18:02
説明がないとわからないようなbool値を返すな

448:434
09/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:デフォルトの名無しさん
09/01/31 17:27:03
>>435 のコードを実行してみた

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

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

450:434
09/01/31 17:34:00
>>435のコードは31.193秒だった。同じだね。
Vista Home Premium
Core2 Duo T7300@2.00GHz

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


452:デフォルトの名無しさん
09/01/31 17:45:43
戻り値と例外モデルが混在してるのがイライラする。

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

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


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

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

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

460:デフォルトの名無しさん
09/01/31 19:12:19
エラー処理じゃないか。通知だね

461:デフォルトの名無しさん
09/01/31 21:02:03
Visual Studioで質問

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

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

462:デフォルトの名無しさん
09/01/31 21:03:23
で、どこに質問があるの?

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

464:デフォルトの名無しさん
09/01/31 22:13:49
みんなありがとう。なんか釈然としなくてね。

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

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

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

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

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

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

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

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

468:デフォルトの名無しさん
09/02/01 00:12:10
命名規則で質問ですが

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

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

469:デフォルトの名無しさん
09/02/01 00:14:59
おかしくないですよ。

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

471:468
09/02/01 00:25:58
そうですかありがとうございます

472:デフォルトの名無しさん
09/02/01 02:31:40
Wikipedia項目リンク

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

474:デフォルトの名無しさん
09/02/01 03:10:50
ExitCodeプロパティ


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

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

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

478:デフォルトの名無しさん
09/02/01 11:21:44
HashSetってなんに使うんだ?

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

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

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

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

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

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

483:デフォルトの名無しさん
09/02/01 12:39:36
VBAもOnClickってあったな

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

485:デフォルトの名無しさん
09/02/01 15:50:10
Putはどっちですか><

486:デフォルトの名無しさん
09/02/01 17:28:11
複数判定する場合はAreなんちゃらにすんの?

487:デフォルトの名無しさん
09/02/01 17:49:53
複数?コードで書いてみて。


488:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/02/01 18:15:51
○ is △? → ○.Is△で○が複数になることって無いんだよね
○がコレクションの場合は一つのコレクションとみなす

490:デフォルトの名無しさん
09/02/01 18:19:21
>>488
半角空白を含む引数は" "で括る
基本だよ

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


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

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


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

495:デフォルトの名無しさん
09/02/01 22:18:17
>>494
あるある

496:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/02/02 00:10:46
「かといって」以前と以後で話がまるでつながってないんだが?

498:デフォルトの名無しさん
09/02/02 00:11:37
constを諦めて、static readonlyにしたらだめなの?

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

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

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

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

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

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



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

504:デフォルトの名無しさん
09/02/02 01:24:35
>>503
URLリンク(blogs.msdn.com)
これか?

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

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

507:デフォルトの名無しさん
09/02/02 04:12:29
propertiesのAssemblyInfo.csを修正

508:デフォルトの名無しさん
09/02/02 05:34:26
ありがとうございました。

509:デフォルトの名無しさん
09/02/02 05:39:50
どういたしまして。

510:デフォルトの名無しさん
09/02/02 06:53:14
DirectryクラスのGetFilesより早く一覧を取得する方法ないすか

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

511:デフォルトの名無しさん
09/02/02 07:06:31
ならAPI使えばー

512:デフォルトの名無しさん
09/02/02 07:27:01
身も蓋も無いこと言わないで下さい><

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

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

514:デフォルトの名無しさん
09/02/02 10:15:19

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

ってやってみ

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

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

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

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

517:513
09/02/02 10:34:17
普通に抜き出して置換することにしました。
無駄な書き込み申し訳なかったです。

518:デフォルトの名無しさん
09/02/02 10:35:49
ええ!? 514ガン無視!?

519:デフォルトの名無しさん
09/02/02 10:36:27
エエエエエエ(AA略)

520:514
09/02/02 10:37:15

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

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

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

522:513
09/02/02 10:45:00
MessageBoxに表示したいわけではありませんので。

523:デフォルトの名無しさん
09/02/02 10:48:40
エエエエエエエエエエエエエ(AA略)


524:デフォルトの名無しさん
09/02/02 10:50:20
何この流れ・・・

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

526:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/02/02 12:07:35
構造体にしといてbyte[]からMemoryStream作ってBinaryFormatterでDeserializeとか?

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

529:デフォルトの名無しさん
09/02/02 12:27:34
それがなにか?

530:デフォルトの名無しさん
09/02/02 12:30:01
みんなで公開羞恥プレイですよ

さああなたも御開帳

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

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

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

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

534:デフォルトの名無しさん
09/02/02 13:27:35
何年前の話だよ

535:デフォルトの名無しさん
09/02/02 14:34:06
>>534
今日の話ですけど?w

536:デフォルトの名無しさん
09/02/02 14:43:26
さすが初心者スレだ

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

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

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


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

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

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

542:デフォルトの名無しさん
09/02/02 15:35:44
'private'を削りなさい

543:デフォルトの名無しさん
09/02/02 15:37:30
前の行の最後にセミコロンが無い

544:デフォルトの名無しさん
09/02/02 15:39:40
メソッドの中で private 宣言した

545:デフォルトの名無しさん
09/02/02 15:43:21
24時間働いているなら労働基準監督署へ

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

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



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

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


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


550:デフォルトの名無しさん
09/02/02 17:04:05
URLリンク(msdn.microsoft.com)(VS.80).aspx

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

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

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


553:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/02/02 19:19:38
>>522
ワロタ

555:デフォルトの名無しさん
09/02/02 20:10:05
>>535
今日知ったんなら今日の話だよなw
>>534の負けww

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

557:デフォルトの名無しさん
09/02/02 21:59:35
C#ってクラス名に漢字使えたよね?

558:デフォルトの名無しさん
09/02/02 22:01:47
うん

559:デフォルトの名無しさん
09/02/02 23:11:00
>>557
やめろ!やめるんだ!
そ、そんなソースは認めないぞ

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

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

560:デフォルトの名無しさん
09/02/02 23:14:17
#define がないし。

561:デフォルトの名無しさん
09/02/02 23:14:37
>>559
C# で define は値を定義できないぞ

562:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/02/02 23:19:48
カルス・・・



564:デフォルトの名無しさん
09/02/02 23:29:26
インターフェイスならできるけどクラスではできません

565:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/02/03 01:44:01
>>553
ありがとうございます。
app.configがなかったので、新規項目の追加で構成ファイルを追加してApp.configを作り、そこに追加しました!
で、早速exeを作成し、相変わらずエラーが出ていますが、ログは記述されず…。
ログファイルも作成されていません。
>>556
ありがとうございます。
Traceクラスについて勉強してみます。
いま
URLリンク(www.atmarkit.co.jp)
を読んでます。


567:Charles Petzold
09/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:デフォルトの名無しさん
09/02/03 02:51:16
Feel free to write in English.

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

570:デフォルトの名無しさん
09/02/03 06:07:37
>>565
レジストリにどういう風に登録されてるかによる。

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

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

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

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


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

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

全部入れたいならコレ。2GBちょっとあるけどね。
MSDN Library for Visual Studio 2008 SP1 (2008年12月更新版)
URLリンク(www.microsoft.com)
ISO イメージなのでインストールするには、仮想ドライブが使えるソフト(CloneDrive や DAEMON とか)も必要。

575:デフォルトの名無しさん
09/02/03 11:16:28
URLリンク(msdn.microsoft.com)(VS.80).aspx
PropertyInfo.GetAccessors()を呼び出すと、
getアクセサ、setアクセサ、およびその他のアクセサが返ってくるとありますが
その他のアクセサってなんですかね

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

577:デフォルトの名無しさん
09/02/03 11:24:54
>>576
URLリンク(dictionary.goo.ne.jp)
URLリンク(dictionary.goo.ne.jp)

本質的には通じりゃいい

578:576
09/02/03 11:31:04
>>577
みんなそんなもんなんですね
適当に脳内処理しときます。


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

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

580:576
09/02/03 11:37:12
>>579
たしかにos-.net上で動くって事ですもんね

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

581:デフォルトの名無しさん
09/02/03 11:42:16
それはそれは途方も無く努力すれば

582:デフォルトの名無しさん
09/02/03 11:57:21
C#も極めれば空も飛べるよ!

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



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

584:デフォルトの名無しさん
09/02/03 13:23:03
寝ろよ
寝不足は生産性も減退させる

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


586:デフォルトの名無しさん
09/02/03 13:27:28
そうかそうか

587:デフォルトの名無しさん
09/02/03 13:38:59
svn

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

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

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


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

592:デフォルトの名無しさん
09/02/03 17:26:52
Form1上にSplitContainerを配置して

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

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

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

わけわかめ

593:592
09/02/03 17:31:47
SplitterPanelにPanelを入れ子にしてた orz

594:デフォルトの名無しさん
09/02/03 17:32:54
>>592
Panel1.Contols に Panel1 が入ってるわけねーだろ。

595:デフォルトの名無しさん
09/02/03 17:38:18
>>593
あわてんぼさんめ

596:デフォルトの名無しさん
09/02/03 19:20:41
さぼてんあわめん

597:デフォルトの名無しさん
09/02/03 19:30:32
わあさんぼんめて

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

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

599:デフォルトの名無しさん
09/02/03 21:22:40
ぐぐる

600:デフォルトの名無しさん
09/02/03 21:35:08
遮断機をくぐる

601:デフォルトの名無しさん
09/02/03 21:36:45
首をくくる

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

603:デフォルトの名無しさん
09/02/03 21:46:32
riffを自分で書くなんてどうかしら

604:デフォルトの名無しさん
09/02/03 21:50:21
DirectShow.NET

605:デフォルトの名無しさん
09/02/03 21:55:42
DirecxShowは推奨されないらしいですよ

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

607:デフォルトの名無しさん
09/02/03 22:06:26
○×したいんだけど、どうすれば実現できますか?

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

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

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

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

609:デフォルトの名無しさん
09/02/03 22:21:52
CPU休めてますか


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

611:デフォルトの名無しさん
09/02/03 22:28:31
ぱそこんもたまにはやすみたがっているんだよ。


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

613:デフォルトの名無しさん
09/02/03 22:38:25
デッドロックしてない?

614:デフォルトの名無しさん
09/02/03 22:38:37
そのデバッグモードってデバッグビルド?
リリースビルドでデバッグでも同じ?

615:デフォルトの名無しさん
09/02/03 22:44:20
>>603
Thunder Forceの戦闘AI?

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

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

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

618:デフォルトの名無しさん
09/02/03 23:03:37
一般的には排他処理のところっしょ

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

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


621:デフォルトの名無しさん
09/02/04 02:01:40
別にレジストリ見なくてもわかる

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

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


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5003日前に更新/209 KB
担当:undef