トップページ⇒tech
1001コメント291KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001ななしぃ#2007/11/18(日) 15:53:41
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

前スレ: ふらっとC♯, C#(初心者用) Part20
http://pc11.2ch.net/test/read.cgi/tech/1191036844/
0002デフォルトの名無しさん2007/11/18(日) 16:10:06
乙
0003デフォルトの名無しさん2007/11/18(日) 16:12:34
C#, C♯, C#相談室 Part44
http://pc11.2ch.net/test/read.cgi/tech/1194956418/

C♯, C#相談室 Part34
http://pc11.2ch.net/test/read.cgi/tech/1162467959/

【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
http://pc11.2ch.net/test/read.cgi/tech/1162950198/

Windows Live プログラミング
http://pc11.2ch.net/test/read.cgi/tech/1188112572/

初心者のためのプログラミング言語ガイド Part6
http://pc11.2ch.net/test/read.cgi/tech/1193132235/
0004デフォルトの名無しさん2007/11/18(日) 16:18:35
>>1は紙!!
0005デフォルトの名無しさん2007/11/18(日) 17:15:45
??演算子って、参照型の代入に使っても問題ありませんか?
NULL許容型への代入専用だったりします?
一応コンパイルが通ってうごくみたいですが
0006デフォルトの名無しさん2007/11/18(日) 17:17:03
問題ない
000752007/11/18(日) 17:26:13
>>6
了解です。
ありがとうございました。
0008デフォルトの名無しさん2007/11/18(日) 18:21:42
前スレ>>1000は元気かのう

0009デフォルトの名無しさん2007/11/19(月) 00:15:21
XMLのDOM読み込みってのは文書構造(属性の名前とか)が事前に分かってないとダメなの?
0010デフォルトの名無しさん2007/11/19(月) 00:16:25
意味が分からんが、文書構造が分からんXMLに何か意味があるのか?
0011デフォルトの名無しさん2007/11/19(月) 00:18:32
>>9
わかって無くても問題ないけど、使い道がわからんな・・・
0012デフォルトの名無しさん2007/11/19(月) 00:34:50
いえ、こんな風に"data"って直書きしてたので気になっただけです・・
string data = rootElement.GetAttribute("data");
0013デフォルトの名無しさん2007/11/19(月) 00:39:25
やっぱり意味が分からん
何が気になったの? どうならいいの?
0014デフォルトの名無しさん2007/11/19(月) 00:47:05
そもそも、文書構造がいらないならXml使わないでCSV使えばいいだろう。
0015デフォルトの名無しさん2007/11/19(月) 00:48:24
文書構造が分かってないとDOMは使えないのか?ってことが気になっただけです。
0016デフォルトの名無しさん2007/11/19(月) 00:54:46
質問です。
数百、数千のファイルの情報をDBに登録したいのですが、
ExecuteNonQuery()でINSERT文を発行する以外でいい方法ありますでしょうか?
0017デフォルトの名無しさん2007/11/19(月) 01:05:47
また意味の分からんのが来たなw
0018デフォルトの名無しさん2007/11/19(月) 01:14:51
DOMは文書構造わからなくても使えるが、シリアライズとデシリアライズで調べてみたら?
001992007/11/19(月) 01:24:14
すみません。XMLについて勉強してまして気軽に質問してしまいました。
XmlReaderが上からベタ読みで、DOMはそうじゃない との記述があったのに
サンプルコードが何かベタ書きだったのであれ?と思いました。
DOM含めXML勉強して出直してきますm(_ _)m
0020デフォルトの名無しさん2007/11/19(月) 01:55:46
べたってなんだよ
0021デフォルトの名無しさん2007/11/19(月) 23:16:07
>>19
どこにそんなことかいてある?
0022デフォルトの名無しさん2007/11/20(火) 09:25:02
DOMのパーサがそうなだけで
それを使うアプリなんか作り方によるだけ。
0023デフォルトの名無しさん2007/11/20(火) 10:59:00
クラスのインスタンスをフィールドに含める時に、newって何時します?

private ClassA a = new ClassA();
というように、宣言する時に同時にnewすることも、
コンストラクタの中でnewしてもどちらでも良いクラスがありますよね?
皆さん、どうしてます?
0024デフォルトの名無しさん2007/11/20(火) 11:33:05
おれの場合はインスタンスを再利用する場合はコンストラクタ
使い捨ての場合はフィールドで行っているよ
0025デフォルトの名無しさん2007/11/20(火) 12:12:15
宣言時にnewするってのはコンストラクタでnewするってことだよ
つまり違いはない
ただ前者の場合、引数に他のフィールドが使えないってだけ
0026デフォルトの名無しさん2007/11/20(火) 12:45:44
long配列をdouble配列に変換したいのですが、一発でやる方法はないのでしょうか?
下記だとエラーが出てコンパイル出来ないのですが、一個一個ループで変換するしか無いのでしょうか?
long[] x = new long[10];
double[] y = new double[10];
y = (double[])x;
0027デフォルトの名無しさん2007/11/20(火) 13:10:44
long[] l = { 10, 10 };
double[] d = { 20, 20 };

object l2 = (object)l;
d = (double[])l2;
0028デフォルトの名無しさん2007/11/20(火) 13:19:18
>>27
指定されたキャストは有効ではありません
というエラーが出るのですが・・・
0029272007/11/20(火) 13:26:36
間違えた。
キャストが有効なのはジェネリクスだけだった。
配列は構造体だからループが一番早いと思う。
0030デフォルトの名無しさん2007/11/20(火) 14:26:48
アルファベットを順番に配列に格納したいのですがどうしたらよいでしょうか?

string[] strWord = new String[26];
strWord[0] = "A";
strWord[1] = "B";
...

こんなやり方しか知らなくて・・・よろしくお願いします。
0031デフォルトの名無しさん2007/11/20(火) 15:34:52
((char)('A' + i)).ToString()
0032302007/11/20(火) 15:44:04
>>31
ありがとうございました
0033デフォルトの名無しさん2007/11/20(火) 16:16:05
ConvertAllでいいだろ多分。
0034デフォルトの名無しさん2007/11/20(火) 16:18:57
byte[] bytesData = System.Text.Encoding.UTF8.GetBytes("A");
string[] str = new string[26];

for (int i = 0; i < 26; i++)
{
bytesData[0] + i;
str[i] = System.Text.Encoding.UTF8.GetString(bytesData);
}
0035デフォルトの名無しさん2007/11/20(火) 17:07:52
なんつーことを…
0036デフォルトの名無しさん2007/11/20(火) 18:52:16
まさに外道
0037デフォルトの名無しさん2007/11/20(火) 19:14:11
byte[] bytesData = System.Text.Encoding.UTF8.GetBytes("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
string[] str = new string[26];

for (int i = 0; i < 26; i++)
{
str[i] = System.Text.Encoding.UTF8.GetString(bytesData[i]);
}
0038デフォルトの名無しさん2007/11/20(火) 19:16:46
冗談はこの辺にして。
string[] strWord = { "A","B","C"};
0039デフォルトの名無しさん2007/11/20(火) 22:08:50
>>26
それがなぜエラーになるか、わかれば少しレベルアップできますよ。
0040デフォルトの名無しさん2007/11/21(水) 10:53:34
ACB→YAZのようにずらして表示させたいんですけど
どうやったらできますかね?
0041デフォルトの名無しさん2007/11/21(水) 11:08:21
どうずらすの?
0042デフォルトの名無しさん2007/11/21(水) 11:09:27
GetByte か アルファベット全体の配列を持つ
0043デフォルトの名無しさん2007/11/21(水) 11:21:28
string ShiftLeft2( string str )
{
    const char DEF = (char)( 'Z' - 'A' + 1 );
    const char def = (char)( 'z' - 'a' + 1 );

    StringBuilder sb = new StringBuilder( str.Length );
    for( int i = 0; i < str.Length; i++ )
    {
        char ch = str[i];
        if( 'A' <= ch && ch <= 'Z' )
        {
            ch = (char)( ch - 2 );
            if( ch < 'A' )
                ch = (char)( ch + DEF );

        }
        else if( 'a' <= ch && ch <= 'z' )
        {
            ch = (char)( ch - 2 );
            if( ch < 'a' )
                ch = (char)( ch + def );
        }
        sb.Append( ch );
    }
    return sb.ToString();
}
0044402007/11/21(水) 11:25:23
ありがとうございます
やってみます
0045デフォルトの名無しさん2007/11/21(水) 18:01:46
enumをintにするには、ただ単にintでキャストして、(int)Enum.Instanceとするだけで、
0から順番にintに出来ると思うのですが、逆は簡単に出来るのでしょうか?
swich(num)で場合分けしてintからenumの文字列を得るしかないのでしょうか?
0046デフォルトの名無しさん2007/11/21(水) 18:58:25
>>45
Enum.GetName()
0047デフォルトの名無しさん2007/11/21(水) 19:02:15
>>46
どうも有り難うございます〜。お手数お掛けしてすみませんでした。
Enum.GetName(typeof(enum), int);
0048デフォルトの名無しさん2007/11/21(水) 19:43:13
(num as enum).ToString()
0049デフォルトの名無しさん2007/11/21(水) 19:50:36
逆も普通に列挙体の型にキャストするだけだけど
なんで文字列とかそういう話になるの?
0050デフォルトの名無しさん2007/11/21(水) 19:51:55
あひょっとして((enum)num).ToString()じゃないと駄目だったかな?
0051デフォルトの名無しさん2007/11/21(水) 19:53:34
>>48はコンパイル通らないけど
参照型でも普通>>48みたいなasの使い方はしないよ
asはnullチェックとセットじゃないと意味がない
失敗したときわかりにくいし
0052デフォルトの名無しさん2007/11/21(水) 19:56:56
>>48
それは、最初、直感的にやってみてエラーになったんですが、できるんでしょうか?
asオペレータは参照型で使用してくださいとなります。
enumは値型ですから駄目?
0053デフォルトの名無しさん2007/11/21(水) 21:08:11
短く書きたかっただけ、ちょっと勘違い(値型でもいけたかなと思ったけど、やっぱりで>>50)。
0054デフォルトの名無しさん2007/11/21(水) 22:28:51
フォーム上に配置されたコンポーネント(Component派生クラス)の内部から、
自分が配置されているフォームを取得することはできないでしょうか。

どうしても無理なら、カスタムデザイナを使って、フォームに配置されたときに
自動的にプロパティを設定するようなやり方にしようかと思っているのですが。
0055デフォルトの名無しさん2007/11/21(水) 22:39:11
FindForm
こんなVBっぽい機能使うなよw
0056デフォルトの名無しさん2007/11/21(水) 22:50:59
ComponentにFindFormなんてないだろ
0057デフォルトの名無しさん2007/11/22(木) 02:16:54
こっちじゃないだろうか?
ttp://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.parent(VS.80).aspx
0058デフォルトの名無しさん2007/11/22(木) 09:59:40
それは違う。
全然違うw
0059デフォルトの名無しさん2007/11/22(木) 11:17:27
string[] str = new string[50];
文字列配列が50個あって、これをカンマで全部つなげて文字列にしたいんだが、

string value = str[0] + ',' + str[1] + ',' + str[2] + ',' + str[3] + ・・・・・

これしか思いつかないんだorz
もうちょっとスッキリした書き方って何かありますか?
0060デフォルトの名無しさん2007/11/22(木) 11:20:37
string value = string.Join(",", str);
0061592007/11/22(木) 11:27:11
>>60
ありがとう、おかげさまでスッキリ書けました。大感謝です!!
0062デフォルトの名無しさん2007/11/22(木) 11:27:12
Join知らなくても、せめてforループくらい思いつかないと、配列の意味無いじゃん。
0063デフォルトの名無しさん2007/11/22(木) 13:06:58
FizzBuzzやらせたら面白いことになりそうだな。
0064デフォルトの名無しさん2007/11/22(木) 13:12:30
foreach(string st in str)
{
0065デフォルトの名無しさん2007/11/22(木) 13:22:35
+= じゃなくて StringBuilder を使ってくれるといいんだが。
0066デフォルトの名無しさん2007/11/22(木) 14:16:26
文字列だけの連結なら、StringBuilderより+演算子を使う方が速い。
必要なだけの文字列の長さを計算して、1回のピープ確保で済む。
0067デフォルトの名無しさん2007/11/22(木) 14:53:58
>>66
string value = "";
foreach (string s in str) {
  value += s;
}
は、まずいだろ。
0068デフォルトの名無しさん2007/11/22(木) 14:59:25
>>67
たぶん>>66は
string value = str[0] + ',' + str[1] + ',' + str[2] + ',' + str[3] + ・・・・・
これが高速だと言いたかったんだろ。

forループ回して+=で結合するのや
StringBuilder インスタンスのロスなどを考えても
今回の配列50個程度の文字列結合だと、
速度の点で言えばどの方法でも大差なさそうだけどね。

>>59の
string value = str[0] + ',' + str[1] + ',' + str[2] + ',' + str[3] + ・・・・・
見た目はカコワルイが、これが一番高速ってことかなwww
0069デフォルトの名無しさん2007/11/22(木) 15:10:11
joinでも変わらんだろ大して。
0070デフォルトの名無しさん2007/11/22(木) 15:14:33
総合的に一番ベストな回答はjoinだろ。
将来配列の個数が増えたときも対応が利くし
+=よりは速い。
そして何よりもスマートに記述できる。
0071デフォルトの名無しさん2007/11/22(木) 15:36:23
>これしか思いつかないんだ
すまんすまん、60=62だが、ここに突っ込んだんだよw
0072デフォルトの名無しさん2007/11/22(木) 15:45:35
一時StringBuilderより+利用時の暗黙の配列の方が重かったりしてw
0073デフォルトの名無しさん2007/11/22(木) 16:03:11
タブコントロール内にタブページが3ページあります。
3ページ目の中にはDataGridViewがあります。

タブページ外のボタン(タブコントロールと同じフォーム内)を
クリックしたときに、3ページ目のコピーを4ページ目として、
新たにタブページを作成するメソッドって何かありませんか?

0074732007/11/22(木) 16:11:41
ちょっと聞き方に問題ありました、すみません。
>新たにタブページを作成するメソッドって何かありませんか?
新たにタブページを作成するスマートな方法をご存知ないですか?
に訂正します。
0075デフォルトの名無しさん2007/11/22(木) 17:13:26
DataGridView にどんなデータが入ってるか知らんから
データ舐めて新規につくれとしか


>>66
                    ,ィ⊃  , -- 、
          ,r─-、      ,. ' /   ,/     }     ち
          {     ヽ  / ∠ 、___/    |
   署     ヽ.      V-─- 、  , ',_ヽ /  ,'      ょ
           ヽ  ヾ、  ',ニ、 ヽ_/ rュ、 ゙、 /
   ま        \  l  トこ,!   {`-'}  Y        っ
             ヽj   'ー'' ⊆) '⌒`  !
   で    , 、      l     ヘ‐--‐ケ   }        と
        ヽ ヽ.  _ .ヽ.     ゙<‐y′   /
   来     }  >'´.-!、 ゝ、_  ~  ___,ノ
         |    −!   \` ー一'´丿 \
   い    ノ    ,二!\   \___/   /`丶、
        /\  /    \   /~ト、   /    l \
0076732007/11/22(木) 17:26:01
>>75
すんません、説明不足でした。
DataGridViewのデータはコピーできなくてOKです。
3ページ目のDataGridViewの列タイトル・列幅など
プロパティのコピーができれば充分です。
何とかなりませんかね?
0077デフォルトの名無しさん2007/11/22(木) 17:52:25
>>75
それはピーポw
0078732007/11/22(木) 18:13:03
自己解決しますた。
DataGridView dgv = dgvLog; ← dgvLog:3ページ目のDataGridView
tabPage4.Controls.Add(dgv);

たぶんこれで問題ないと思われます。
0079732007/11/22(木) 18:18:44
↑78で解決できたと思ったんですが、
DataGridView dgv = dgvLog;
tabPage4.Controls.Add(dgv);
これを実行するとナゼか
3ページ目のDataGridViewが消えるorz
0080デフォルトの名無しさん2007/11/22(木) 18:45:22
>>79
当たり前w
試しに、
DataGridView dgv = new DataGridView();
して、それをAdd してみ。
0081デフォルトの名無しさん2007/11/22(木) 18:50:10
>>80
DataGridView dgv = new DataGridView();
DataGridView dgv = dgvLog;
tabPage4.Controls.Add(dgv);
このようにやっても3ページ目が消えます;;

どうやらdgvLogそのものをコピーするのは無理っぽいですね。。。
0082デフォルトの名無しさん2007/11/22(木) 19:03:58
クマー
0083デフォルトの名無しさん2007/11/22(木) 19:18:01
それコンパイルできんの?w
0084732007/11/22(木) 19:24:25
一応デバッグモードで動いてますが。。。
これって何かヤバい記述なのでしょうか?
超初心者ですみません;;
0085デフォルトの名無しさん2007/11/22(木) 20:34:49
C#のバージョンと.Netランタイムのバージョンの関係を教えてください。

C#3.0で開発するとクライアントでは.net3.0/3.5が必要なの?
.net2.0の開発にC#3.0は使えないんですか?
0086デフォルトの名無しさん2007/11/22(木) 20:41:28
LINQ使えないんじゃないの
0087デフォルトの名無しさん2007/11/22(木) 20:48:24
>>85
3.0/3.5で追加されたライブラリを使わなければ、
C# 3.0で追加された言語仕様を使っても.NET Framework 2.0で動くはず。
86も言っている通りLinqはだめだな。

まあ、こういうことも不可能ではないみたいだけど。
http://d.hatena.ne.jp/NyaRuRu/20071121
0088デフォルトの名無しさん2007/11/22(木) 23:09:27
>>85
C# 3.0というかVisual Studio 2008で書くと、常に.NET 2.0 SP1を想定してコンパイルする点は注意。
.NET 2.0→2.0 SP1でいくつか互換性が無くなる変更が行われているので、
それらの型やメソッドに依存してるプログラムは互換しない。
例
1) .NET 2.0にのみに存在し、SP1で無くなったメソッドを使っている
  →.NET 2.0 SP1環境で動かない、Visual Studio 2008ではコンパイルが通らない
2) .NET 2.0 SP1で追加されたメソッドを使っている
  →.NET 2.0無印環境で動かない、Visual Studio 2008ではコンパイルが通る
0089デフォルトの名無しさん2007/11/22(木) 23:34:22
構造体とクラスに関連してスタックとピープについて詳しいサイトありませんか、
0090デフォルトの名無しさん2007/11/22(木) 23:40:37
>>89
                    ,ィ⊃  , -- 、
          ,r─-、      ,. ' /   ,/     }     だ
          {     ヽ  / ∠ 、___/    |
   署     ヽ.      V-─- 、  , ',_ヽ /  ,'      か
           ヽ  ヾ、  ',ニ、 ヽ_/ rュ、 ゙、 /
   ま        \  l  トこ,!   {`-'}  Y       ら
             ヽj   'ー'' ⊆) '⌒`  !
   で    , 、      l     ヘ‐--‐ケ   } 
        ヽ ヽ.  _ .ヽ.     ゙<‐y′   /
   来     }  >'´.-!、 ゝ、_  ~  ___,ノ
         |    −!   \` ー一'´丿 \
   い    ノ    ,二!\   \___/   /`丶、
        /\  /    \   /~ト、   /    l \
   っ

   て
0091デフォルトの名無しさん2007/11/22(木) 23:49:13
おめぇはすっこんでろピー公
0092デフォルトの名無しさん2007/11/23(金) 00:14:57
SP1の変更点一覧てどこにあるのん?
0093デフォルトの名無しさん2007/11/23(金) 00:23:56
>>90
市ね糞が
0094デフォルトの名無しさん2007/11/23(金) 00:38:37
ところで、最近はヒープのことをピープって言うのが流行ってるのか?
0095デフォルトの名無しさん2007/11/23(金) 00:51:08
ビープ
0096デフォルトの名無しさん2007/11/23(金) 03:51:10
他スレでレスが付かなかったのですみませんが
ここのスレで質問させて下さい。
C#で下記VB6の処理と同じ事をしたいのですが、
VB6+DAO接続のようにうまくいきません。
(Oracleの社員マスタをmdbにインポートする)

Dim db1 As Database
'DSN接続文字列
Const DSN As String = _
"ODBC;DSN=abc;SRVR=orcl;UID=USER;PWD=Admin;"
'DAOでOracleに接続
Set db1 = Workspaces(0).OpenDatabase("", True, False, DSN)
Dim strSQL As String

’社員マスタのインポート
strSQL = "SELECT * INTO USER_SHAIN " & _
"IN '" & "C:\abc.mdb' from SHAIN"
db1.Execute strSQL

mdbにODBCでOracleにリンクして上記SQLを発行すれば
うまくいきそうなんですが
空のabc.mdbに直接Oracleのデータをインポートするには
C#+ADO.NETではやはり無理なのでしょうか?
VB+DAOでできてC#+ADO.NETではできないのは
何か悔しいです。



0097デフォルトの名無しさん2007/11/23(金) 06:54:06
>>96
そういうDAOべったりのことをしたいなら、C#からDAO使えばいいじゃね
0098デフォルトの名無しさん2007/11/23(金) 10:26:16
>>96
お前VB6のソース貼っただけで質問かよ


DAOでMDBへの接続ならこんなのがあった
http://park15.wakwak.com/~u-konko/denno/c_sample/ado.htm
0099デフォルトの名無しさん2007/11/23(金) 11:30:52
>>96
多種DB間での単一SQLって・・・
プログラム的には接続を別に持って
DB1からObjectとして取得
DB2へ取得Objectをインサート
がスマートなんじゃね?
0100デフォルトの名無しさん2007/11/23(金) 15:30:27
IEを監視してアクセスしたURLを取得したいのですが、どうアプローチすればいいでしょうか?

0101デフォルトの名無しさん2007/11/23(金) 15:39:20
Fiddler でも参考にしたら
0102デフォルトの名無しさん2007/11/23(金) 15:54:15
>>101
レスありがとうございます。
そのような感じではなくロガー用途で使いたいのです

ttp://mixlogger.the-ninja.jp/
このような感じです。

情報を小出しにしてしまい申し訳ありません。

プログラムは常駐していて、IEでなにかサイトにアクセスすると
URL、あとタイトルとアクセス時間をログにして出力すると考えています。
0103デフォルトの名無しさん2007/11/23(金) 19:19:55
プロキシかませれば?
0104デフォルトの名無しさん2007/11/23(金) 19:25:23
>>96
何が上手くいかないか書いていない。
c#上のコーディングミスの可能性があるのにソースが貼ってない。


それにもかかわらず
>C#+ADO.NETではやはり無理なのでしょうか?
なんだそれ?

ゆとり?
0105デフォルトの名無しさん2007/11/23(金) 20:09:47
いいえ、ケフィアです。
0106デフォルトの名無しさん2007/11/23(金) 20:41:21
>>105
この板で久しぶりにワラタwwwww
0107デフォルトの名無しさん2007/11/23(金) 22:32:59
俺には中学生のセンスにしか思えないけど。
まあプログラマって笑いのツボ(に限らないけど)が中学生な奴が多いのかもな。
0108デフォルトの名無しさん2007/11/23(金) 22:42:49
高二病患者乙
0109デフォルトの名無しさん2007/11/23(金) 23:02:54
string aとstring bがあってそれぞれ同一ドライブのディレクトリへの絶対パスが入っています。
aとbは親子の場合もあるしそうでないときもあります。

これをaからbへの相対パスに変更する簡単な方法はありますか?
0110デフォルトの名無しさん2007/11/23(金) 23:07:40
>>109
クイズ風に質問すな
0111デフォルトの名無しさん2007/11/23(金) 23:09:04
C# 相対パス
でググればいくらでもでてくるだろうに。
Uri.MakeRelativeUri
0112デフォルトの名無しさん2007/11/23(金) 23:23:06
ほとんどの文字列操作は大抵にAPIにあるし、
無くてもアルゴリズムを自作できる程度のものが多い。
0113デフォルトの名無しさん2007/11/23(金) 23:28:15
>>111
どうもありがとうございます。
Uriクラスとは気が付きませんでした・・
0114デフォルトの名無しさん2007/11/23(金) 23:33:41
シリアル通信の3ch同時受信のプログラムを組んでるのですが
RS232Cの通信というのはかなりのCPU負荷をかけるものなのでしょうか?
1chでの受信ではデータの取りこぼしもほとんどなく転送速度もそこそこ出ているのですが
3chでのプログラムではPentium MのPCでは動作が不安定になってしまいました。
Core 2 DuoのPCでは普通に動くのでCPUパワーの問題かなと思ったのですが・・・。
Serialportクラスを3つ並べてそれぞれをDataReceivedイベントで監視するという
安直な考えで組んだプログラムですのでプログラムにも問題があるのでしょうが
純粋にCPU負荷がかかる処理であることが原因なのでしょうか?
0115デフォルトの名無しさん2007/11/23(金) 23:42:36
>>110
ふいたw
0116デフォルトの名無しさん2007/11/23(金) 23:46:28
>>114

同期、非同期から勉強することをお勧めする。
0117デフォルトの名無しさん2007/11/24(土) 00:16:22
>>114
イベント内でファイル開いたりしてないよね?
0118デフォルトの名無しさん2007/11/24(土) 00:28:45
>>114
>DataReceivedイベントで監視する
通信のプロトコルが分からないので断定はできないが、
たぶん設計としてここがまずいと思う。

必ずしもフリースレッドでやる必要はないんだけど、定期的にバッファをポーリングする
やり方の方がほとんどの場合適合的じゃないのかな。
0119デフォルトの名無しさん2007/11/24(土) 14:14:11
C#のWindowsアプリから、Excelで申請書を出力するアプリを作ろうとしています。
VS2005で、VSTOは持っていません。Excelは2003です。

あらかじめ、申請書のフォーマットのxlsファイルを用意し、そこに作成するWindowsアプリで
COMでExcelを操作して申請者の氏名などの情報を書き込んで、xlsを別名で保存するつもりです。

困っているのが、申請書に、Excelのフォームコントロール(チェックボックス、コンボボックス、
ラジオボックス)があり、これらをC#から操作(選択)する方法がわからないことです。

現在、VS上でどのオブジェクトを操作したらいいのかもわからない状態です。
ご存じの方がいらっしゃったら、お教えいただけないでしょうか。
0120デフォルトの名無しさん2007/11/24(土) 16:55:30
マクロにデータ与えて操作
0121デフォルトの名無しさん2007/11/24(土) 17:39:56
>>119
たぶん正攻法じゃないとは思うけど、
VBA側の処理で特定のセルの値とコントロールの状態をリンクするコードを書いておけば、
C#のコードからはその特定のセルの値を操作すれば間接的にコントロールを操作できるんじゃないの?
01221192007/11/24(土) 18:30:01
>>120,121

ありがとうございます。

マクロを組み合わせる方法がよさそうですね。
申請書の変更にも対応しやすそうですし。
0123デフォルトの名無しさん2007/11/24(土) 19:11:25
URLからそのページのTITLEを取得する方法
あれば教えていただけないでしょうか?

フレームワーク2.0です。
0124デフォルトの名無しさん2007/11/24(土) 19:22:18
手っ取り早くサイトのページダウンロードして正規表現か何かでtitle抜き出せば?
0125デフォルトの名無しさん2007/11/24(土) 19:34:19
>>122
VBAより、用意したWSHのスクリプトを呼び出す方がかっこよくね?
01261232007/11/24(土) 19:37:55
>>124
ありがとうございます。

うまいことクラスが用意されてる感じではなさそうってことですね。

最終的に方法が見つからなければその方法でいきたいと思います。

0127デフォルトの名無しさん2007/11/24(土) 19:43:11
どんなけ人頼みなんだよw
0128デフォルトの名無しさん2007/11/24(土) 22:37:31
内の会社はリフレクションでExcelのCOMを操作するライブラリ作ってやってる。最低限の機能しかないけど、Excelのバージョンに関わらず動くから便利。
ただ大量に出力する時はCOM経由は遅いのがネックだね
0129デフォルトの名無しさん2007/11/24(土) 23:50:50
それください
0130デフォルトの名無しさん2007/11/25(日) 00:14:15
ネット上にファイルが存在するかどうかを調べる為には
System.Net.WebClientクラスのDownloadFileメソッド等で
例外処理をする以外の方法はありませんか?
0131デフォルトの名無しさん2007/11/25(日) 00:15:03
リストビューの詳細表示でアイコン表示しないときでも、1行当たりの高さを広げて
間隔よく表示したいのですけれども、方法ありますか?
0132デフォルトの名無しさん2007/11/25(日) 00:21:24
>>130
普通にGETかHEAD投げてステータスコード見ろよ
0133デフォルトの名無しさん2007/11/25(日) 00:33:43
>>126
webBrowserコントロールに読み込んで
webBrowser1.DocumentTitleでOKっぽいよ
01341222007/11/25(日) 01:16:09
>>125
ありがとうございます。

VBScriptを直に使えるみたいですね。
完成したxlsファイルにはマクロを残したくないので、プログラム中でマクロを除去しようと考えていましたが、
WSHを使う方がスマートですね。
0135デフォルトの名無しさん2007/11/25(日) 13:03:13
テキストボックスとボタンを配置したForm2をShowDialog()で表示して、
Form2のボタンをクリックしたときFontDialogを表示します。
しかし、FontDialogを閉じたらForm2も一緒に閉じてしまいます。

狙いとしては、FontDialogで選択したフォントをForm2に配置してある
テキストボックスのFontプロパティに入れたいのです。

何か解決策はあるのでしょうか?
0136デフォルトの名無しさん2007/11/25(日) 13:03:35
>>132
HttpWebRequestクラスのGetResponseメソッドを使う
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemnethttpstatuscodeclasstopic.asp
の方法ですか?
この方法では404のとき例外が発生するのですが,例外を発生させない方法はありませんか?
0137デフォルトの名無しさん2007/11/25(日) 13:25:00
>>135
寿命を永らえされる方法を考えよう。
0138デフォルトの名無しさん2007/11/25(日) 13:28:57
>>135
Form2
{
01391352007/11/25(日) 14:47:07
Form2のボタンクリックのイベントハンドラで

FontDialog fd = new FontDialog();
if (fd.ShowDialog() == DialogResult.OK)
{}
this.DialogResult = DialogResult.None;

こんな感じでフォームが閉じないように出来たのですが、これで良いのでしょうか?
というか、わざわざ最後の行を書かないといけないのが釈然としません。
0140デフォルトの名無しさん2007/11/25(日) 14:59:29
釈然としないならボタンのDialogResultプロパティを疑えよJK
0141デフォルトの名無しさん2007/11/25(日) 15:00:57
what is "JK" ?
0142デフォルトの名無しさん2007/11/25(日) 15:40:35
>>140
ボタンのDialogResult?
イミワカランwwww
01431352007/11/25(日) 15:46:14
>>140
なぜFontDialogのDialogResultがFom2のDialgResultになるのか
その動作と理由が全く分かりません・・・。
後学のためにももう少し一連の動作の説明をお願いします。
0144デフォルトの名無しさん2007/11/25(日) 15:56:33
>>143
>>140は寝言だから忘れていいと思う。

想像だけど、原因はたぶんForm2に存在するボタンが、デザイナで
Form2のAcceptButtonになってるんじゃないの?
0145デフォルトの名無しさん2007/11/25(日) 16:16:47
ButtonクラスにDialogResultというプロパティがあって、それをNone以外に設定していると、ボタンが押されたとき自動的にダイアログが閉じられる。
Form.AcceptButtonではそうはならない。
寝言とか言う前にMSDNライブラリくらい読んどけボケ
0146デフォルトの名無しさん2007/11/25(日) 16:25:27
ちょっと基本的な部分で悩んでおります。
環境は.NET Compact Framework 2.0上で以下

class From1 : Form
{
public Form1()

}
0147デフォルトの名無しさん2007/11/25(日) 16:28:49
>>145
>ButtonクラスにDialogResultというプロパティがあって、
そんなプロパティーないってw
0148デフォルトの名無しさん2007/11/25(日) 16:38:05
>>147
ほらよ
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.button.dialogresult.aspx
0149デフォルトの名無しさん2007/11/25(日) 17:27:14
>>148
それは分かったから、FontDialogのDialogResultとForm2のDialogResultとの因果関係は?
0150デフォルトの名無しさん2007/11/25(日) 17:30:50
Clickイベントが発生してから、DialogResultに従ったフォームを閉じる動作が行われる。
0151デフォルトの名無しさん2007/11/25(日) 17:50:21
>>150
Form2をShow()で呼べばFontDialogを閉じてもForm2は閉じないことを確認しました。
つまりはそういうことなんですね。
0152デフォルトの名無しさん2007/11/25(日) 19:34:00
変なの沸いてんな
0153デフォルトの名無しさん2007/11/25(日) 22:32:43
>>142
>>144
>>147
0154デフォルトの名無しさん2007/11/26(月) 00:20:12
やべーなこのレベルはww
0155デフォルトの名無しさん2007/11/26(月) 00:22:39
そのためのふらっと
相談室に来るレベルじゃないってこと
0156デフォルトの名無しさん2007/11/26(月) 14:50:16
charからint、intからcharの変換ってこれの他に方法あったっけ。
値のチェックとかしてないけど。

private const int prefixDigits = 48;

public static int ToInt32(this char c){
return (int)c - prefixDigits;
}

public static char ToChar(this int n){
return (char)(n + prefixDigits);
}
0157デフォルトの名無しさん2007/11/26(月) 15:07:51
ちょ待
0158デフォルトの名無しさん2007/11/26(月) 16:33:45
>>156
冗談だよね
0159デフォルトの名無しさん2007/11/26(月) 16:40:54
変数名や 48 より、 '0' のがわかりやすい。
0160デフォルトの名無しさん2007/11/26(月) 17:00:34
>>157-158
おかしな所があったら指摘してね。

>>159
なるほど、その発想は無かったわ。
0161デフォルトの名無しさん2007/11/26(月) 17:03:35
ParseやToStringやその類を使えと言ったらダメなんですか
0162デフォルトの名無しさん2007/11/26(月) 17:18:50
だめだろどう見ても。
0163デフォルトの名無しさん2007/11/26(月) 17:19:40
じゃないわ勘違いw
0164デフォルトの名無しさん2007/11/26(月) 17:54:44
Int32.Parse(c.ToString())
(char)n.ToString()

一旦stringのインスタンス作ってるのが気持ち悪いYO
0165デフォルトの名無しさん2007/11/26(月) 18:00:45
>>160
’A' とかの文字が入ったときはどうすんの?
0166デフォルトの名無しさん2007/11/26(月) 18:12:57
>値のチェックとかしてないけど。
0167デフォルトの名無しさん2007/11/26(月) 18:21:24
int.TryParseを使った方が例外処理がいらないから楽だろうな。
0168デフォルトの名無しさん2007/11/26(月) 20:20:06
>>156
それはcharからint、intからcharの変換とは言わない。
0169デフォルトの名無しさん2007/11/26(月) 20:32:29
範囲が正しいってわかってるならわざわざメソッド化しなくてもc - '0'でいいしねえ。
範囲チェックして例外投げるのを主な目的にするならメソッド化する意味もあるだろうけど。

あとToInt32やToCharみたいな名前を使うのは混乱するのでやめていただきたい。
0170デフォルトの名無しさん2007/11/26(月) 20:34:17
君には影響ないから心配いらないよ
0171デフォルトの名無しさん2007/11/26(月) 21:34:05
うるせー馬鹿
0172デフォルトの名無しさん2007/11/27(火) 06:31:54
Disposeとデストラクタのどっちに終了処理かけばええんすかね
0173デフォルトの名無しさん2007/11/27(火) 07:09:37
内容によるが、デストラクタに書くことはほとんどない
0174デフォルトの名無しさん2007/11/27(火) 07:22:09
むしろデストラクタ書くな
たぶん使い方間違ってるから
0175デフォルトの名無しさん2007/11/27(火) 11:11:18
ていうか、あれをデストラクタだと思ってはいけないような気がする。
0176デフォルトの名無しさん2007/11/27(火) 11:44:56
だな、ってかデストラクタって呼び方やめただろ、紛らわしいから。
0177デフォルトの名無しさん2007/11/27(火) 13:12:26
>>176
ファイナライザだな
0178デフォルトの名無しさん2007/11/27(火) 21:20:34
しかしフォームから呼んだフォントダイアログのダイアログリザルトの値が
フォームに送られてフォームが閉じるって仕様の意味が分からんな。
通常のウィンドウ操作じゃあり得ないし、何を思ってこういう仕様にしたのだろうか。
0179デフォルトの名無しさん2007/11/27(火) 21:32:17
それは勘違いを基にした情報だろう
0180デフォルトの名無しさん2007/11/27(火) 21:40:19
ファイナライザっていうとコナミのガンダムもどきゲームを思い出して
0181デフォルトの名無しさん2007/11/27(火) 21:56:34
>>178
意味分からんな。使い方間違ってんだろ
0182デフォルトの名無しさん2007/11/27(火) 22:01:57
おいおいwwwまだいたのかよResult君ww
0183デフォルトの名無しさん2007/11/27(火) 22:24:55
ためした。
普通のプログラムでは何の問題もない。

多分こうなってるだけ。
DialogResult = fontDialog1.ShowDialog();

みなおせ。
0184デフォルトの名無しさん2007/11/27(火) 22:28:16
ワロス
馬鹿ばっか
0185デフォルトの名無しさん2007/11/27(火) 22:31:02
エスパーの俺からすると結論は、
>>183のように子フォームのダイアログリザルトを
親フォームのダイアログリザルトに設定している
01861832007/11/27(火) 22:41:16
エスパーの割にはたいしたことかいてないな…
憶測だけど
DialogResult = fontDialog1.ShowDialog();
は、
DialogResult dr = fontDialog1.ShowDialog();
あたりの書き間違いじゃないかな?

if(dr == DialogResult.OK)
{} else if(dr == DialogResult.…)

憶測の域を出ない。
0187デフォルトの名無しさん2007/11/27(火) 22:47:57
そんな立派なもんじゃなくてなんとなくそう書いただけじゃないか?
なんとなく書く奴って意外なほど多いぞ。
理解できないが。
0188デフォルトの名無しさん2007/11/28(水) 00:01:44
ただ悩むまでも無く、ソッコー気付くはずなんですが・・・
0189デフォルトの名無しさん2007/11/28(水) 00:07:39
まあ世の中色々な人がいる。
0190デフォルトの名無しさん2007/11/28(水) 01:28:08
普通はこう書かないか?
if(fontDialog1.ShowDialog() == DialogResult.OK){
//
}
0191デフォルトの名無しさん2007/11/28(水) 01:57:09
俺は switch 派だな
0192デフォルトの名無しさん2007/11/28(水) 02:00:45
列挙体の判定はswitchの方がシンプルになるからなー
0193デフォルトの名無しさん2007/11/28(水) 02:17:02
>>142
>>144
>>147
>>149
>>178
>>184
0194デフォルトの名無しさん2007/11/28(水) 05:15:03
Form2 f2 = new Form2();
f2.ShowDialog();

Form2で
if(DialogResult.OK == FontDialog.ShowDialog()){...}
で帰ってきたDialogResultがForm2に送られてForm2も閉じる
0195デフォルトの名無しさん2007/11/28(水) 05:15:34
>>194
何故じゃー
0196デフォルトの名無しさん2007/11/28(水) 05:42:22
もう、あきた
0197デフォルトの名無しさん2007/11/28(水) 09:24:31
ToolStripProgressBarってデフォルトだと鮮やかな緑なんですが、
プロパティとかで簡単に黄色とか赤に変更できたりしないのでしょうか?

カスタムコントロールから作らないと駄目ですか?
0198デフォルトの名無しさん2007/11/28(水) 13:20:44
ForeColor
0199デフォルトの名無しさん2007/11/28(水) 14:40:14
ForeColorじゃ�_
0200デフォルトの名無しさん2007/11/28(水) 15:08:34
プログレス程度なら自分で作れるだろ?
0201デフォルトの名無しさん2007/11/28(水) 15:26:02
Vistaのビジュアルに似せて作るのは少し面倒じゃね?
なんかグラデーション動いてるし角が丸っこいし
似せなくてもいいならいいけど
0202デフォルトの名無しさん2007/11/28(水) 15:37:29
Paintイベントにプロパティでswitchさせて描画させるだけだろ?
グラデーションやクリッピングなんてそんな難しくないだろ?
0203デフォルトの名無しさん2007/11/28(水) 15:42:03
頼んだ。
0204デフォルトの名無しさん2007/11/28(水) 15:42:07
Vistaのバーを見て言ってる?
つーかこれ、貼り付けてるときからてかりが動いてるなw
0205デフォルトの名無しさん2007/11/28(水) 16:15:13
上の端掴んでぐりぐりサイズ変更すると動きのスピードが変わるな
0206デフォルトの名無しさん2007/11/28(水) 17:39:51
>>201
Theme APIで描かせればそういう風になるんじゃないの?
やったことなくて憶測だけど。
0207デフォルトの名無しさん2007/11/28(水) 20:48:32
変数の値が変化した時に起こるイベントを作る事はできますか?
0208デフォルトの名無しさん2007/11/28(水) 20:51:17
Theme APIで描画=VisualStyleRendererで描画

つまり現在のビジュアルスタイルの色と形で描画されるんでしょ
質問者はその色を変えたいと。単純に色変えたいなら自前描画、
ただビジュアルスタイル風でかつ色を変えるのは不可能っしょ
0209デフォルトの名無しさん2007/11/28(水) 20:53:18
>>207
変数を直接外部からは(内部でも?)触らないようにしてプロパティでラップ
setterでイベントを起こせばそれらしくなるんじゃ
0210デフォルトの名無しさん2007/11/28(水) 21:16:03
Observer パターン?
0211デフォルトの名無しさん2007/11/28(水) 21:28:46
set {
 if (this.hoge != value) {
  this.hoge = value;
  this.OnHogeChanged(EventArgs.Empty);
 }
}
ただこれだけのこと
○○Changedはこんな感じで実装するのが普通
0212デフォルトの名無しさん2007/11/28(水) 21:40:23
>>194
いい加減つりはやめろ。
その前に見た瞬間に動かないとわかるコードを貼るのはやめろ。
0213デフォルトの名無しさん2007/11/28(水) 22:01:02
>>211
PropertyChangedをつかおう
0214デフォルトの名無しさん2007/11/29(木) 00:10:48
分かってなかった時代に(今も分かってないけど)書いたコードで、
ToolStripMenuItemを実行したときの引数として構造体を使ってしまった。
今クラスにしとけばよかったと激しく後悔してるんですが、
構造体って相互運用以外で使い道ってあるんですか?
0215デフォルトの名無しさん2007/11/29(木) 00:17:25
bool int double DateTime …
冗談だスマン
0216デフォルトの名無しさん2007/11/29(木) 00:25:16
構造体は参照を使いたくないときに使うだけ。
0217デフォルトの名無しさん2007/11/29(木) 01:40:18
DB(DataSet)が変更した時にスグに、DataGridViewに表示させたいんんだけど、無理かなあ
02182072007/11/29(木) 07:12:18
勉強になりましたm(_ _)m
0219デフォルトの名無しさん2007/11/29(木) 11:43:35
テキストファイルを行単位で読み込んでいくときに、先頭行から全て読むなら
以下の感じになると思うのですが、途中の行から最後まで読みたい場合には、
どうしたら良いのでしょうか?
srを途中まで進めてからwhileループに入れば良いような気がしますが、
StreamReaderを任意の希望の位置まで進めるメソッドってあるのでしょうか?

StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("UTF-8"));
string line;
while ((line = sr.ReadLine()) != null) {
0220デフォルトの名無しさん2007/11/29(木) 11:51:07
Stream.PositionをいじってからStreamReader作ればいいが、
[n行目以降]ならStreamReaderで読み捨て
0221デフォルトの名無しさん2007/11/29(木) 11:54:56
>>220
どうも勉強になりました。有難うございます。
あまり速度に影響しないようなので、この場合、読み捨てにします。
0222デフォルトの名無しさん2007/11/29(木) 17:58:35
Bitmapオブジェクトを24ビット形式のBMP形式で保存したいのですが
自動的に32ビット形式になってしまい困っています。
以下のプログラムのどこをどうしたら良いのでしょうか?
よろしくお願いします。

// 24ビットBMP形式のファイルを読み込む
Bitmap bmp = new Bitmap(@"before.bmp");
// 保存するとなぜか32ビットになっている
bmp.Save(@"after.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
0223デフォルトの名無しさん2007/11/29(木) 18:09:48
3引数のSave使いなよ。
0224デフォルトの名無しさん2007/11/29(木) 18:23:22
>>223
3引数のSave、今はじめて知ったので調べてみました。
今ヘルプ見てるんですが、ImageCodecInfoとEncoderParametersに
何を設定するのか全然書いてないのよ;;
具体的にどのような値を記述するのか分からないです;;
0225デフォルトの名無しさん2007/11/29(木) 18:46:33
3引数のSaveについて調べていたところ
これってjpegで保存するときの圧縮率などの質を指定して
saveするパラメータだということがわかりました。

bmp形式には使えないので、引き続き24ビットBMP形式で
保存する方法をご存知の方、よろしくお願いします。
0226デフォルトの名無しさん2007/11/29(木) 20:24:38
>>225
Bitmapオブジェクトを24bitRGBで作ってからSaveで24bitにならんかな?
0227デフォルトの名無しさん2007/11/29(木) 22:11:06
P/Invokeに関してちょっと自信がないので確認させてください。

関数のアンマネージシグネチャがvoid UnmanagedFunction(STRUCT*)、
P/Invokeのシグネチャがvoid UnmanagedFunction(IntPtr)
だとして、
スタックに置かれた構造体に対して

STRUCT st;
UnmanagedFunction(new IntPtr(&st));

という風にポインタを直接渡すことは安全ですよね?
0228デフォルトの名無しさん2007/11/29(木) 22:16:43
直接ではないのではないのかな?
02292272007/11/29(木) 22:23:34
>>228
言葉足らずだったかも。
ここでいう直接っていうのは、HGlobalなどのアンマネージな領域に再確保することなく
マネージスタック上のアドレスを直接アンマネージ関数に渡す、という意味です。
0230デフォルトの名無しさん2007/11/29(木) 22:24:10
向こうで変なことしてなければ
02312272007/11/29(木) 22:30:40
>>230
どうもありがとうございます。安心しました。
0232デフォルトの名無しさん2007/11/29(木) 22:55:52
>>226
できますた。ありがとう
0233デフォルトの名無しさん2007/11/29(木) 23:31:36
>>231
あっちが非同期な関数だと死ぬるよ?
普通にref STRUCTでマーシャラにおまかせしないのかい?
02342272007/11/29(木) 23:49:49
>>233
refにしないのは場合によってNULLを渡す必要があるためです。
というか非同期だったらref渡しでもまずいことになるような?
0235デフォルトの名無しさん2007/11/29(木) 23:59:51
ちなみに、MSDN の「コピーと固定」を読んどくといいよ
02362272007/11/30(金) 00:33:54
>>235
どうもありがとうございます。読んどきます。
0237デフォルトの名無しさん2007/11/30(金) 09:14:18
Listでジェネリックを使ってisExistsを実装するやり方がいまいちよく分かりません。

List<string> list;
//listに要素を入れる
list.Exists( delegate( string value ) { return list.IndexOf( value ) >= 0; } )

のように、IndexOfで引っかかるかどうかという判定にしているのですが、
意図した動作をしません。
おそらくみんなこう書くという、典型的な実装があるのではと思っているのですが、
ちょっと教えていただけませんでしょうか。
0238デフォルトの名無しさん2007/11/30(金) 09:21:44
意味が分からん。Containsを求めてるのか?
Existsは例えばList<string>内に「**で始まる文字列が存在するか」調べるとかそんなんだが。
ていうか実装?
0239デフォルトの名無しさん2007/11/30(金) 11:08:54
IndexOfで存在は確認できると思うけど?
0240デフォルトの名無しさん2007/11/30(金) 11:20:45
引数が string で 戻り値 bool の関数作って
bool b = aaa.Exists(new System.Predicate<string>(function1));

こんな感じでいいみたいだぞ
0241デフォルトの名無しさん2007/11/30(金) 11:57:36
listの要素のひとつひとつがそのlistに含まれるかどうかをテストしてるわけで
なかなか哲学的だ。
0242デフォルトの名無しさん2007/11/30(金) 12:15:45
>>240
デリゲートの暗黙のインスタンス使ったほうが
コンパイラが良きにはからってくれて効率良かったりする
0243デフォルトの名無しさん2007/11/30(金) 12:59:59
>>242
え、例えばどんなとき?
暗黙だろうが明示だろうが生成される型は同じだから変わらない気がするけど。

もしかして匿名デリゲートのことを言ってるのかな?
それにしてもどういう風に最適化しうるのか気になる。
0244デフォルトの名無しさん2007/11/30(金) 13:04:37
>>242
効率ってのは実行効率?コーディングの効率?
0245デフォルトの名無しさん2007/11/30(金) 13:19:17
型推論するだけじゃなくてILも変わるの?
0246デフォルトの名無しさん2007/11/30(金) 13:42:12
namespaceの効果とか機能がよくわからないのですが
ソースを大きく括って見やすくするためと思っていいですか?
0247デフォルトの名無しさん2007/11/30(金) 13:51:43
>>246
同じ名前の宣言を複数実装できるからやないん?
ポリモーフィズムの延長線かもしれんけど
0248デフォルトの名無しさん2007/11/30(金) 14:04:54
>>246
例えば、
System.Drawing.Image と
System.Web.UI.WebControls.Image を
区別できるようにするため。
02492422007/11/30(金) 17:06:47
すまん>>242は記憶違いだった
匿名メソッドの場合はキャッシュされるんだけどそれとごっちゃになってた
0250デフォルトの名無しさん2007/12/01(土) 10:12:50
>>238
わあああ
Containsがあるううう
0251デフォルトの名無しさん2007/12/01(土) 10:15:02
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
     ̄

0252デフォルトの名無しさん2007/12/01(土) 14:19:03
DataGridViewの一列目がディレクトリ、二列目がファイル名になっていて、

foreach ( DataGridViewRow row in grid.Rows ) {
 MessageBox.show( row.Cells[ "Directory" ].ToString() );
 MessageBox.show( row.Cells[ "File" ].ToString() );
}

このように各行のそれぞれの値を見ようとしています。
Formで表に表示されている値はちゃんとディレクトリとファイル名が表示されているのですが、
上記コードで値を取り出すと、

DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=0 }
DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=0 }

のような値が取得されてしまいます。
これは何が悪く、どのように書くのが正しいんでしょうか。
0253デフォルトの名無しさん2007/12/01(土) 14:43:13
値を取得するのだから、そのものズバリValueプロパティを使う。
ToString()は値を取得するためのメソッドじゃないし、そういう形式の文字列を返すとドキュメントにも明記されてるだろ。
0254デフォルトの名無しさん2007/12/01(土) 14:49:15
あ、そうかValueか
すいませんアホでした
0255デフォルトの名無しさん2007/12/01(土) 15:45:29
DockStyle.Rightで複数のボタンを右詰めに表示しているのですが、
これらのボタン間の空白を設定するにはどうすればよいでしょうか?
MSDNを読むとMarginプロパティがそれらしいと思ったんですが、どうも影響しないようです。
0256デフォルトの名無しさん2007/12/01(土) 16:12:37
>>255
TableLayoutPanel使うか、

Panel に Button いれて
Panel の Padding を設定して
Panel の Dock を Right
Buttonの Dock は Fill
0257デフォルトの名無しさん2007/12/01(土) 17:18:46
>>256
ありがとうございます。

んーどっちもなんだか微妙ですね。
大したロジックでもないので手動でレイアウトすることにします。
0258デフォルトの名無しさん2007/12/01(土) 17:40:39
ちょっと教えてください。
System.Collections.GenericのLinkedListとLinkedListNodeを使って、
ダブルリンクリストを作り、データ追加イベントが発生すると、ある所
からデータを抜き出してリンクリストに追加、データ削除イベントが発
生すると、リンクリストから削除って感じのクラスを作ろうとしてます。

http://msdn2.microsoft.com/ja-jp/library/ahf4c754(VS.80).aspx
のサンプルを見たのですが、今いちどうすれば良いのか分からなく困
っております。と云うのは、データの追加と削除を行う場合、サンプル
では行き成りLinkedListNodeに実データを入れて、次にLinkedList作っ
て作ったLinkedListにLinkedListNodeを追加となってます。
LinkedListNode<String> lln = new LinkedListNode<String>( "orange" );
LinkedList<String> ll = new LinkedList<String>();
ll.AddLast( lln );

ダブルリンクリストを作る場合とかって最初に空のノード作って、作った
ノードに対してデータを追加して行く、下のようなイメージを持ってました。
LinkedListNode<String> lln = new LinkedListNode<String>();
LinkedList<String> ll = new LinkedList<String>("HOGE");
lln.AddLast( ll );
動的に発生するデータを追加して行きたいのですが、どの様に実装すべ
きでしょうか?
0259デフォルトの名無しさん2007/12/01(土) 17:46:36
http://sonic64.com/2006-05-03.html
これを参考に、ほぼ同じ作りで動画を再生しようとしています。
再生する動画はファイルパスをリストで持っておき、停止イベントから
PlayVideoClip()を呼び出して数珠つなぎに再生します。
こちらの例とは異なり、フルスクリーンで再生します。

で、困っていることなんですが、音量を調整+ミュートにできるようにしたいと思い、
とりあえずミュートを実装しようとしたところ、
videoClip.Audio.Volume = 0; // Video videoClip
としても音量が変わらず、さらに再生が終わって停止した時に
停止イベントが呼ばれなくなってしまいました。
正しく音量調整するにはどうすればいいのでしょうか。
0260デフォルトの名無しさん2007/12/01(土) 17:49:38
>>259に追記です。
ミュート自体は
videoClip.Audio.Volume = -10000;
とすることで実装できました。0は最大音量らしいです。
停止イベントが呼ばれず連続再生できなくなる件について、アドバイスをいただけると助かります。
0261デフォルトの名無しさん2007/12/01(土) 20:11:44
>>258
何言ってんのかわからない。
0262デフォルトの名無しさん2007/12/01(土) 20:53:48
>>260
ほぼ同じ作りったってコードみなきゃ話にならない
0263デフォルトの名無しさん2007/12/01(土) 21:24:30
>>258
なにがしたいのかよくわからんけど
そのサンプルは、こうしたらこんな風に状態が変わるよっていうだけのことで大した意味は無いだろ
LinkedListが自動的にリンクリストを作ってくれるから
余計なこと考えずに素直に使えばいい
02642632007/12/01(土) 21:30:01
誤解を招く書き方だったかも
そのサンプル通りに使えば自動的にリンクリストが作られる
要素をリンクしていくのはLinkedListの仕事だから余計なこと考えなくていい
0265デフォルトの名無しさん2007/12/02(日) 00:28:31
>>264
サンプル通りにやればリンクリスト作られるのは分かるんですが、
最初入れるデータが無い状態で、LinkedListNodeのインスタンス
が作れないので困ってます。
サンプルだと、
LinkedListNode<String> lln = new LinkedListNode<String>( "orange" );
"orange"を最初に入れてますけど、
LinkedListNode<String> lln = new LinkedListNode<String>();
こうするとエラーになる点と、

LinkedListNode<String> lln = new LinkedListNode<String>( "orange" );
LinkedList<String> ll = new LinkedList<String>();
ll.AddLast( lln );

最初の1回目だけLinkedListにLinkedListNode入れて、2回目以降
の処理では。
ll.AddFirst( "red" );
ll.AddLast( "yellow" );
と直接データをLinkedListに入れてるので、1回目と2回目以降で処
理を分割させないと駄目なので、1回目と2回目を外見から見た時に
同じ操作でリンクさせて行くようなクラスを作りたいんですが、その
作り方が分からないのです。
0266デフォルトの名無しさん2007/12/02(日) 00:37:08
Facadeデザインパターンを実装すればいいじゃん。
0267デフォルトの名無しさん2007/12/02(日) 00:49:23
>>258
LinkedList<T>はノード全体を管理しているのだから、
そのイメージのような空のノードなんて作る必要はなく、
LinkedList<T>のインスタンスに直接AddLastすればいいぞ。

そもそもLinkedListNodeなんて要素を追加するときにいちいち作るもんじゃないと思う。
0268デフォルトの名無しさん2007/12/02(日) 01:14:00
>>267
今MSDNでLinkedListとLinkedListNodeをもう一度見てた所ですが、
ちょっと頭混乱して来ました…_| ̄|○

なんか見てると、264氏や267氏の言われるようにLinkedListに直接
突っ込んで行けば良いのは分かってきましたが、LinkedListNodeと
LinkedListとの関係が分からなくなってしまいました。

> そもそもLinkedListNodeなんて要素を追加するときにいちいち作るもんじゃないと思う。
私の言いたいのも正にそこでして、自クラスのコンストラクターで空
のノードを用意出来れば良いと思ってたので、
LinkedListNode<String> lln = new LinkedListNode<String>();
としたかった訳ですが、これだとコンパイルエラーとなります。

リストにデータを入れて行く場合は良いのですが、リストからデータ
を読む場合や消す場合、LinkedListNodeのPrev/Nextが必要になる
と思うのですが、その場合どの様にすれば良いでしょうか?
0269デフォルトの名無しさん2007/12/02(日) 02:07:05
>>268
LinkedListからLinkedListNodeを取り出したければ、
LinkedListのFirst/Lastプロパティ。ほかFind/FindLastメソッドも。
こっちからLinkedListNodeを作る必要はない。

LinkedListの要素をなめたいだけならforeachにも突っ込める。
0270デフォルトの名無しさん2007/12/02(日) 06:57:57
クラスってもんを勉強しなさい。
そもそも内部構造の詳細を意識しなくても利用できる、
内部構造の違いにかかわらず操作できる、
ようにするためにコレクションのクラスがあるんだから。

LinkedListNodeは構造を意識した直接的な操作も
サポートするために使えるようになってるだけで
コレクションを表すのはあくまでLinkedListの方、使うのも普通はこっち。
0271デフォルトの名無しさん2007/12/02(日) 14:09:05
初期化は
LinkedListNode<string> lln = new LinkedListNode<string>(null);
としておくか、アイテムなければ
= new LinkedListNode<string>(null);
するかでいいんじゃね?
0272デフォルトの名無しさん2007/12/02(日) 14:09:56
訂正

としておくか、アイテムがなければ
= new LinkedListNode<string>(1つ目のアイテム);
するかでいいんじゃね?
0273デフォルトの名無しさん2007/12/02(日) 14:51:04
いや別にLinkedListNode作る必要ないから
LinkedList<string> ll = new LinkedList();
だけでおk
0274デフォルトの名無しさん2007/12/02(日) 17:40:13
ご解答戴いた皆さんありがとうございました。やっと理解出来ました。
LinkedListNode自体がデータを含んでいる実体な訳ですね。
で各LinkedListNodeをLinkedListで繋いでいると。

LinkedListNodeとLinkedListの機能を逆の意味にとられえてたので混乱
してました。
リスト構造の頭と尻尾を自前で管理しようと思って、HeadNode/TailNode
見たいなのを作る為に、LinkedListNodeが存在してる物と思ってたんで
すが、LinkedListのFirst/Lastがその役割をもっててLinkedListクラス内
で自動的に管理されてる訳ですね。

どうもお騒がせ致しました。
0275たろう2007/12/02(日) 18:11:05
質問させてください。
現在googleの検索エンジンの機能をWindowsアプリで作成しようと
思っています。

作成すると言っても検索エンジンを1から作るのでは無く、
実際にはWindowsフォームのTextBoxに入力されたら(入力値を�@とする。) 

Google(http://google.co.jp)画面内の入力エリア
に�@をコピーし、Googleの検索ボタンを自動で押下し、
表示された検索一覧(データ)をWindowsフォーム内に表示したいと
考えています。

WEBページの内容を取得する方法は知っているのですが、
「Google等の検索エンジンに検索値を入力し検索ボタンを
自動で押下して検索データを取得する。」

という方法が分かりません。
何か参考になるサイト等ごございましたらお教え願います。

0276デフォルトの名無しさん2007/12/02(日) 18:13:19
>>275
"http://www.google.co.jp/search?q=�@"
0277たろう2007/12/02(日) 19:13:57
>>276
ありがとうございます。

因みに
 "http://www.google.co.jp/search?q=�@"
といったWEBページのボタンを押した時にWEBサーバに送られる情報
はどの様にして調べているのでしょうか?
何か参考になるWEBサイトをご存知でしょうか?

例えば、Googleについては上記の方法で行ける事は分かったのですが
Yahoo / MSN Serch等も時間に余裕が出来たらチャレンジしてみたいと
思っています。
0278デフォルトの名無しさん2007/12/02(日) 20:37:23
実際に検索してアドレス見ればわかるよw
0279デフォルトの名無しさん2007/12/02(日) 20:46:41
がんばれたろう

とりあえず文字列はUrlEncodeしなきゃだめよ
0280たろう2007/12/02(日) 21:04:40
>>279
ありがとたろう
0281デフォルトの名無しさん2007/12/02(日) 21:32:55
ちゃんと考えてURL円コードしないと駄目よ。
0282デフォルトの名無しさん2007/12/02(日) 21:57:36
現在、2Gくらいの大きなファイルの、
バイナリをあれこれ弄って一つのファイルに書き出そうとしています。
出力時には元のファイルを100KBずつ読み込んで、FileStreamとBinaryWriter を使って、
順次書き出ししようと考えているのですが、
BinaryWriter をCloseしないとファイルに何も書いてくれないという状況です。
どなたか、順次書き出しの手ほどき、よろしくお願いします。
0283デフォルトの名無しさん2007/12/02(日) 22:03:19
よくわからんがFlushすりゃいいんじゃないの?
0284デフォルトの名無しさん2007/12/02(日) 22:05:21
Flushのことか?
0285デフォルトの名無しさん2007/12/02(日) 22:19:54
質問です
埋め込まれたリソースとして動画ファイル(.aviファイル)を埋め込んだのですが、このファイルを再生するにはどうしたらよいのでしょうか?
.wavファイルや.jpgなどはGetManifestResourceStreamでストリームを取得した後、コンストラクタに入れてやれば再生できたのですが
動画クラスって見つからなかったので、どうやって再生したらよいのでしょうか?
MediaPlayerやDirectShowはどうやらファイル名を指定して再生するようで今回のようにストリームから再生することができませんでした。
0286デフォルトの名無しさん2007/12/03(月) 08:00:19
最近thisを記述しなくなったのですが
つけなければアクセスに時間がかかるとか何か不都合がありますか?
0287デフォルトの名無しさん2007/12/03(月) 08:12:19
無いけど付けた方が良い。
0288デフォルトの名無しさん2007/12/03(月) 08:42:46
>>287
ありがとう!早速直します!
0289デフォルトの名無しさん2007/12/03(月) 10:46:56
>>287
その理由を簡単にでも教えてください
0290デフォルトの名無しさん2007/12/03(月) 11:05:13
無いからつけなくてもいい
0291デフォルトの名無しさん2007/12/03(月) 11:05:44
気分
0292デフォルトの名無しさん2007/12/03(月) 11:07:22
どっちがいいなんて正解はない。
状況も聞かずに無条件につけるべきなんていう奴は知らない。
0293デフォルトの名無しさん2007/12/03(月) 11:10:19
拡張メソッドはthisつけないと呼び出せない
拡張メソッドと分けて見やすくする目的だとthisはつけないほうがいい
0294デフォルトの名無しさん2007/12/03(月) 12:11:12
this.を付けないならインスタンスメンバにはプレフィックスを付けることにしたほうがいいと思う
0295デフォルトの名無しさん2007/12/03(月) 12:47:46
m_とか? きめえ
プレフィックスはインテリセンスの利きを悪くするし可読性も落ちるだろ
0296デフォルトの名無しさん2007/12/03(月) 13:07:19
_だろ。
IronPythonのコードがそうなってる。
0297デフォルトの名無しさん2007/12/03(月) 13:21:21
MSの中でも_が多いみたいだよ
C++な人が多いからとか、VB.NETではつけないとプロパティ名と被りやすいから
それに合わせてるとかきっとそういうことだろうけど
0298デフォルトの名無しさん2007/12/03(月) 13:24:16
C#の話をしようぜ
どっちにしろインテリセンスの利きは悪くなる
可読性は_ならたいして落ちないだろうけど
C#の標準命名規則にはそんなんないのだ
0299デフォルトの名無しさん2007/12/03(月) 13:33:06
MS公式のガイドラインがあるのはアセンブリ外から見える名前についてだけだよ
0300デフォルトの名無しさん2007/12/03(月) 13:37:07
とりあえずprivateフィールドは小文字で始めますって書いてなかったか
0301デフォルトの名無しさん2007/12/03(月) 13:45:43
インテリセンスの危機が悪いってのはどういうこと?
0302デフォルトの名無しさん2007/12/03(月) 13:48:32
プレフィックスがあると一文字入力しても全然絞れない
0303デフォルトの名無しさん2007/12/03(月) 13:48:45
>>300
公式には無いよ
「C#コーディング標準」ではプリフィックス付けてもいいとされてるし、
大文字小文字を区別した名前を付けるなとあるから、それを守るんであれば
何か付けないとプロパティと被る
0304デフォルトの名無しさん2007/12/03(月) 14:05:51
あるwebサイトのデータを数秒間隔で取得してフォームに表示したいのですが
sleepで数秒寝かせて無限ループで取得という方法でいいんでしょうか?
0305デフォルトの名無しさん2007/12/03(月) 14:10:19
一定だと怪しまれるからランダムを入れた方がいいかもね
0306デフォルトの名無しさん2007/12/03(月) 14:11:52
>>305
でもその方法だとなぜか重すぎてキャンセルとか受け付けてくれないんですよ
0307デフォルトの名無しさん2007/12/03(月) 14:21:14
>>306
どうせ0秒から3秒くらいのランダムとかして平均1.5秒でアクセスしてるんだろう。
0308デフォルトの名無しさん2007/12/03(月) 14:39:13
つーかメインのスレッドでスリープしてるんだろうw
0309デフォルトの名無しさん2007/12/03(月) 14:47:29
>>308
mainのなかでwhile使って無限ループさせてるんでそうだと思います
guiのプログラミングって何が何だかわからない
0310デフォルトの名無しさん2007/12/03(月) 14:48:47
guiはメインが全部終了しないと動き出さない
0311デフォルトの名無しさん2007/12/03(月) 15:12:18
ジェネレートってどうゆう意味ですか?

教えてくださいお願いします。
0312デフォルトの名無しさん2007/12/03(月) 15:39:33
イタリア風のアイスだよ
0313デフォルトの名無しさん2007/12/03(月) 15:51:42
>>312

それはジェラート。
0314デフォルトの名無しさん2007/12/03(月) 16:19:29
string data = "M-SEARCH * HTTP/1.1\r\nMX: 3\r\nHOST: 239.255.255.250:1900\r\nMAN: \"ssdp:discover\"\r\nST: urn:schemas-upnp-org:service:WANIPConnection:1\r\n\r\n"

もたいな文字列が在る場合。↓みたいな感じで表示するにはどうすれば良いですか?

M-SEARCH * HTTP/1.1\r\n
MX: 3\r\n
HOST: 239.255.255.250:1900\r\n
MAN: "ssdp:discover"\r\n
ST: urn:schemas-upnp-org:service:WANIPConnection:1\r\n
\r\n
0315デフォルトの名無しさん2007/12/03(月) 16:25:33
\r\n→\\r\\n\r\n
0316デフォルトの名無しさん2007/12/03(月) 19:24:06
>>309
夢幻ループ化。

処理をWindowsに返さないといけないんです。
Windowsから仕事しロッテ言われてから動けばいいんです。
自分から動きたい場合は、そのタイミングで呼び出してもらえるように約束を取り付けておけばいいんです。
0317デフォルトの名無しさん2007/12/03(月) 21:27:09
>>309
GUI関係ないだろ・・・
Timer使え
0318デフォルトの名無しさん2007/12/03(月) 21:49:01
すいません質問です。
名前空間は、団体名. 技術名. 分野と記述するのが推奨だと始めて知ったのですが、
普通はこの形式で名前空間定義をしているのでしょうか?
0319デフォルトの名無しさん2007/12/03(月) 21:53:09
そうです。
0320デフォルトの名無しさん2007/12/03(月) 21:59:43
そうでもないよ。
0321デフォルトの名無しさん2007/12/03(月) 22:10:15
楽しいか?
しかし、どこのスレも下らん馴れ合いで嬉しくなっちゃう単細胞な馬鹿が多いな。
0322デフォルトの名無しさん2007/12/03(月) 22:19:57
アンマネージdllはdllimportで呼べるそうですが、これを使えばいちおう理論的には全てのdllを呼べる、というわけでもないんでしょうか?
ググるといろんなサイトや掲示板で、Cなどで作ったdllのimportに苦労してる人がけっこう見つかります。
でも、アドバイスしてる人も“難しい”とは言いますが“不可能”と言ってる人は見かけません。

理論的に不可能ではないが、非常に難しい場合もある、ということでしょうか?
0323デフォルトの名無しさん2007/12/03(月) 22:36:55
>>322
Cのdllなら基本的に難しいことはないと思うが・・・。
C++のクラスライブラリをインポートするのは不可能。
03243222007/12/04(火) 01:13:57
>>323
引数が構造体だったりすると大変にならないですか?
実は以前、他所様のCで書かれたdllを使おうと試みたんですが、
引数の構造体の中身が分からなくて断念したことがあります・・・
私の能力が至らないだけで、本当はできるんでしょうか?

>C++のクラスライブラリをインポートするのは不可能。
え、そうなんですか?すいません、どうして不可能なのか簡単に教えて頂けないでしょうか?
0325デフォルトの名無しさん2007/12/04(火) 01:24:16
C#のここで質問していいか迷うけど
C#でプログラミングしてるからここに。

TcpClient使ってネットワークストリームから出力すると
レスポンスヘッダと内容自体がいっしょくたになるけど
これをレスポンスヘッダと内容を効率よく分解する方法ってない?
TcpClient以外を使うっていうのは無しで。
0326デフォルトの名無しさん2007/12/04(火) 01:29:44
>>324
C++のABIは標準化されてないから
0327デフォルトの名無しさん2007/12/04(火) 02:19:00
>>324
構造体なんて定義すればいいだけだよ
C同士だって構造体の中身がわからなければ何もできないでしょ
03283222007/12/04(火) 02:51:26
>>326
アンマネージなC++クラスライブラリだと駄目ってことでしょうか?
やるとしたら、マネージなのに作り直すか、クラスを使わないようにする、という認識で合ってますか
0329デフォルトの名無しさん2007/12/04(火) 02:55:37
あってる
もちろんクラスをマネージコードとやりとりしなければいいのであって、DLL内だけで使用する分には問題ないよ。
0330デフォルトの名無しさん2007/12/04(火) 03:14:46
C++/CLIでラップすればいいんじゃねえの
0331デフォルトの名無しさん2007/12/04(火) 04:49:49
C++クラスのDLLをC#から直接呼び出すのは、
DllImportのCallingConvention.ThisCallを使えばできるが、
ファクトリや開放用のメソッドが必要になったりで
正直おすすめしない。
03323222007/12/04(火) 06:09:38
>>327
いや、中身が分からないんです。非公開というか勝手に使ってるだけなので。
で、もう一度トライしてみたらできました!朝までかかってしまいましたが・・・
dll内の関数の引数や返り血が構造体のポインタなのですが、C#のほうで適当に
 struct hoge{};
と空っぽの構造体を作ってしまいました。とりあえず正常に動きました!(´∀`)ヤッター
でも、何故これで動くのかあんまりよく分かってないのですが、このまま使って大丈夫でしょうか??
unsafeでやってるので少し不安です・・・

>>329
探したら↓などを見つけました。
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20010&forum=7
COMを使えばクラスライブラリも呼べるようですが、茨の道みたいですね

>>330
無理してコードを変えるより、そのままC++/CLIでラップするほうが楽だし安全、ということでしょうか。
・・・というか、これ使えば何でもできるんじゃ?もしかして相当すごい機能?

>>331
すいません、まだそういうことできるレベルじゃないです。。


もう寝ます。皆様お付きあい頂いて、ありがとうございました。
0333デフォルトの名無しさん2007/12/04(火) 10:47:07
フォーム上のボタンを押したらMonthCalendarコントロールが表示するようにしたいのですが、
このMonthCalendarコントロールを表示した際にフォーム内からはみ出た部分が表示され
ないのですが、回避するにはどうしたらよいのでしょうか?
0334デフォルトの名無しさん2007/12/04(火) 11:39:04
別のフォームに作れば
0335デフォルトの名無しさん2007/12/04(火) 12:18:46
フォームにラベルを複数置いたのですが
これらを配列として扱うには下記の方法でよろしいでしょうか?
label1〜label4がフォームに置いたラベルです

Label[] lblArr = new Label[4];
lblArr[0] = label1;
lblArr[1] = label2;
lblArr[2] = label3;
lblArr[3] = label4;

考え方がよくなかったりしたら教えてください
0336デフォルトの名無しさん2007/12/04(火) 12:33:27
>>333
あらかじめ貼っておくか、追加するときに場所と大きさ計算してフォームのサイズを調整したら

>>335
いいよ
Label[] lblArr = new Label[]{ label1, label2, label3, label4 };
でもいい


03373352007/12/04(火) 13:15:21
>>336
数が少ないなら宣言時に入れたほうがすっきりするんですね
そうするようにします。

ありがとうございました。
0338デフォルトの名無しさん2007/12/04(火) 13:34:32
for(int i=0;i<4;i++){lblArr[i]=(Label)this.Controls["label"+i];}
一応こういうのもある
>>335-336の方が好ましいのでできればやめた方がいいけど
0339デフォルトの名無しさん2007/12/04(火) 15:05:32
コンソールアプリなのですが、キーボードステータスを読み取るにはどうすればよいのでしょうか。
03403392007/12/04(火) 15:10:04
(続き)
タイマーイベントのハンドラの中で、現在押下されているキーをすべて取得するといった内容で考えております。
0341デフォルトの名無しさん2007/12/04(火) 15:13:29
いつもお世話になっております。ご相談させてください。

UDPポートをbindして、クライアントから一方的にudpデータが
送られてくる状況で、パケットの取りこぼしが発生してしまいます。

クライアントから送られてくるデータの、先頭2バイトをインクリメントデータの
シーケンス番号としておりまして、これを連続して取り出したところ
最大で10パケットほどごっそり抜けるといった現象が発生しています。

以下がプログラムの流れです。

1.ソケット作成
2.Socket.BeginReceiveFrom〜で非同期受信開始
3.コールバックメソッドで、先頭2バイトを読み出してシーケンス番号を確認。
4. 3.のシーケンス番号を保存して、再びSocket.BeginReceiveFrom〜を呼び出し。
5.再度のコールバックメソッドで、4.で保存したシーケンス番号と
 新しいシーケンス番号に2以上の差があるときがある。(おおよそ2〜10程度)

UDP自体は信頼性のないネットワークなのは十分承知しているのですが、
クライアントからのデータはCore2DuoのPCでデータを受信しているので、
CPUパワーからして本当に取りこぼすのか疑問に思っております。

Wiresharkでパケットをキャプチャするとネットワークライン上には
正しくデータは流れているので、Windowsは取りこぼしていないが、
アプリケーションの段階で取りこぼしているのかなと想像はしているのですが……。

どなたか同じような症状の方おりませんでしょうか。
またわかる方がいればご教示願えませんでしょうか。

orz

0342デフォルトの名無しさん2007/12/04(火) 15:19:06
>>341
1パケットに複数まとまってるんでない?
0343デフォルトの名無しさん2007/12/04(火) 15:20:32
初歩的な質問ですみません。
C#の文法規則の意味について教えてください。

C++は理解しており、メンバーに対するアクセス指定は理解できるのですが
クラスに対するアクセス指定の意味がわかりません。

名前空間内でクラス宣言を行うときにクラス自体にpublicかinternalの
アクセス指定ができますが、これらは何を意味するのでしょうか?

理解していること
・名前空間内で指定可能なアクセス指定子はpublicかinternalのみ
・省略するとinternalとなる

0344デフォルトの名無しさん2007/12/04(火) 15:26:07
>>340
GetAsyncKeyState()等のAPI 使うとかでどうか
0345デフォルトの名無しさん2007/12/04(火) 15:29:00
>>343
http://msdn2.microsoft.com/ja-jp/library/ba0a1yw2(VS.80).aspx
03463392007/12/04(火) 16:02:59
>>344
ビンゴでした。THANKS!
http://www.cam.hi-ho.ne.jp/oishi/tips.html#keystate
を参考に、GetKeyStateで出来ました。

[DllImport("user32.dll")]
private extern static Int16 GetKeyState(VirtualKeyStates nVirtKey);

private enum VirtualKeyStates : int
{
VK_LBUTTON = 0x01,
VK_RBUTTON = 0x02,
}

public void OnTimedEvent(Object sender, ElapsedEventArgs e)
{
bool fLeftPressed = (GetKeyState(VirtualKeyStates.VK_LEFT) & 0x8000) != 0;
bool fRightPressed = (GetKeyState(VirtualKeyStates.VK_RIGHT) & 0x8000) != 0;
}

03473392007/12/04(火) 16:16:20
おっと失礼
private enum VirtualKeyStates : int
{
VK_LEFT = 0x25,
VK_RIGHT = 0x27,
}
必要な定義はこちらでした。
0348デフォルトの名無しさん2007/12/04(火) 16:51:16
>>345
ありがとうございます。

『public と宣言された型には、他のすべての型がアクセスできます。
internal と宣言された型には、同じアセンブリに所属する型だけが
アクセスできます。』

とあるのですが、ここでいうアセンブリとはソースファイルという理解
で正しいでしょうか?
03493482007/12/04(火) 16:55:18
アセンブリとはDLLやEXEのことでした。

ということは、internal指定のクラスの場合は同一DLL, EXE
からしか参照できなくて、public指定のクラスの場合は
別のDLLやEXEから参照できるということですね。
0350デフォルトの名無しさん2007/12/04(火) 16:57:51
おおかた合ってる。
0351デフォルトの名無しさん2007/12/04(火) 16:59:18
>>346
Keysつかえよ。
0352デフォルトの名無しさん2007/12/04(火) 22:38:31
P/Invokeでは[DllImport("kernel32.dll")]などと指定しますが、
kernel32.dllやuser32.dllなどといったものは64ビットWindowsにも存在するのでしょうか?
またこれらに64ビットポインタを渡しても問題ないのでしょうか?

手元に64ビット環境がないので、よろしくお願いします。
0353デフォルトの名無しさん2007/12/04(火) 22:46:18
存在する
64bitのAPIも同名DLL
WoW64で動くかどうかでどっちを使うか自動判断
明示したけりゃ/platform
0354デフォルトの名無しさん2007/12/04(火) 23:03:46
>>353
どうもありがとうございます。
特別な理由がなければ何も考えずに書けばいいんですね。

もう一つ質問があるのですが、32用と64ビット用の二つのdllがある場合、
P/Invokeで実行環境に適したdllを読み込むことはできますか?
0355デフォルトの名無しさん2007/12/04(火) 23:22:37
>>354
>>353のレスちゃんと読んでやれよ・・・
03563522007/12/04(火) 23:38:07
>>355
どういうことです?
WOW64上で動作させて32ビット用を読み込めということですか?

ちなみにこの場合のdllはシステムにあるものではなく、自作のdllという意味です。
0357デフォルトの名無しさん2007/12/04(火) 23:40:21
IntPtr.Sizeみて分岐
0358デフォルトの名無しさん2007/12/04(火) 23:46:04
自動判断って書いてあるように見えるけど?
0359デフォルトの名無しさん2007/12/04(火) 23:49:07
system32/syswow64に入らないのなら自動呼び分けはないんじゃないかな
シングルトンで実装させれば使う側は気にしなくてすむようになるけど
DLL検索パスを利用してうまいことやればdll名だけ違うDllImportとか書かなくてもなんとかなるかな
0360デフォルトの名無しさん2007/12/04(火) 23:53:10
ま、正しいのはやはり/platformでターゲットを明示すること
03613522007/12/04(火) 23:56:03
>>357
最悪そうせざるをえないですね。

>>359
実行時に検索パスを設定するorアーキテクチャによって変更するってできるんですかね?
できたらかなりすっきり書けそうですが。

>>360
そうしたら実行環境が限られてしまうんじゃないですか?
0362デフォルトの名無しさん2007/12/05(水) 00:01:51
ラッパかぶせてその中で分岐しとけばごちゃごちゃしたりはしないだろう
0363デフォルトの名無しさん2007/12/05(水) 00:02:26
IntPtr.Size
PATH

> そうしたら実行環境が限られてしまうんじゃないですか?
限られるんじゃなくて限らせるの。
x86とx64両方つくりゃいいだけ。
0364デフォルトの名無しさん2007/12/05(水) 00:08:05
>>363
それはちょっと保守の手間が増えるので避けたいです。

>>362
そうですね。とりあえずその方法でいきたいと思います。
どうもありがとうございました。
03653522007/12/05(水) 00:08:48
名前忘れました。>364=>352
0366デフォルトの名無しさん2007/12/05(水) 00:30:28
色々なクラスで使うメソッドを、ユーティリティクラスを作ってstaticメソッドで呼び出すのと
継承を使って派生させて使うのとどっちがいいのでしょうか?

今までベースクラスに汎用メソッドを書いていたのですが、
Xmlの操作とか、クラスの本質に関係のない部分はユーティリティクラスのほうがいいのかな
と最近思うようになってきました。

HttpUtility.UrlEncodeみたいに、.NETでもユーティリティクラスの存在そのもの
を禁止されているわけではないですよね・・・
0367デフォルトの名無しさん2007/12/05(水) 00:31:10
ユーティリティクラスあるだろ
Mathとか
0368デフォルトの名無しさん2007/12/05(水) 00:41:31
どっちがいいといってもことそれぞれとしか
0369デフォルトの名無しさん2007/12/05(水) 00:45:57
まあユーティリティクラス作る方が標準的じゃないか
0370デフォルトの名無しさん2007/12/05(水) 01:11:47
GoogleMapsAPIを利用してて自分もこういうWebAPIというものを
作ってみたいと思いました。
WebAPIを作るにあたり必要なスキルは何でしょうか?
またWebAPIの開発の参考書などがあればご紹介ください。
WebAPIを利用するための参考書じゃなくて自分でWebAPIを開発する参考書です。
0371デフォルトの名無しさん2007/12/05(水) 01:27:34
>>367-369
レスありがとうございます。

staticメソッドを計算の代用とか気軽な目的で自体は
問題なさそうですね・・・。
0372デフォルトの名無しさん2007/12/05(水) 01:48:25
>>370
Google Maps API 質問箱
http://pc11.2ch.net/test/read.cgi/tech/1131627583/
0373デフォルトの名無しさん2007/12/05(水) 09:13:16
継承でやる方が邪道だよ大抵は。
まあユーティリティと言ってるものの内容にもよるけど。
0374デフォルトの名無しさん2007/12/05(水) 12:14:48
Sin()やSqrt()がSystem.Doubleのインスタンスメンバだったりしたら煩わしいことこの上ないよな。
03752852007/12/05(水) 12:48:53
>>285わかる方いませんか?
0376デフォルトの名無しさん2007/12/05(水) 12:59:05
ユーティリティクラスはクラス名短くしないと読むのが困難になりがち
0377デフォルトの名無しさん2007/12/05(水) 14:53:40
C#で始めてプログラミング始めたんですけどお勧めの書籍とかサイトってありますか?
0378デフォルトの名無しさん2007/12/05(水) 16:05:40
ふらっとじゃない方のC#スレの>>4
0379デフォルトの名無しさん2007/12/05(水) 17:04:15
@ITのC#入門はガチですとも
0380デフォルトの名無しさん2007/12/05(水) 17:07:52
他の言語の経験があるなら、ホントに@ITのC#入門読むだけですむよな。
0381デフォルトの名無しさん2007/12/05(水) 17:13:42
オラはオライリーのプログラミングC#で覚えた。
ガイジン特有の変な例えのせいでデリゲートが全然理解できなかったが。
0382デフォルトの名無しさん2007/12/05(水) 17:27:25
うちは標準C#入門っていう、いかにもな本だった。
なかなか読みやすかったのを覚えてる。
0383デフォルトの名無しさん2007/12/05(水) 17:31:37
LINQのおかげでdelegateの意味は全然変わっちゃったしな
03843352007/12/05(水) 18:07:26
正直デリゲートはわかってないけど
やばいかな
03853352007/12/05(水) 18:08:05
@IT逝ってきます
0386デフォルトの名無しさん2007/12/05(水) 18:08:57
LINQ使えばわかる
0387デフォルトの名無しさん2007/12/05(水) 18:32:16
イベント使えば分かる。


いや分からんかも…
0388デフォルトの名無しさん2007/12/05(水) 18:36:23
100レススルーされてる>>285がやや気の毒だがわからない
でも動画なんて埋め込みたいとは思わないな俺は
0389デフォルトの名無しさん2007/12/05(水) 18:36:33
イベントはdelegate分かってなくてもIDEが勝手に書いてくれるからな
0390デフォルトの名無しさん2007/12/05(水) 18:44:00
>>285か。
メモリに読めば何とかなるのなら、APIでリソースから直接読むのは可能。
0391デフォルトの名無しさん2007/12/05(水) 20:23:14
>>390
メモリにあるものをどうやって再生するかって話じゃないの?
テンポラリフォルダにでも展開しちゃえばいいんじゃないかと思うが
0392デフォルトの名無しさん2007/12/05(水) 22:24:32
>>379-380
川俣氏のやつですよね
以前2chで叩かれてるところに本人降臨してたスレがありましたが、中身はガチと思っていいんですかね?
0393デフォルトの名無しさん2007/12/05(水) 22:30:06
>>392
内容は悪くないというか、簡潔でいいと思うけど、
あれで習得できるのは「ミニマムリクワイアメント」に過ぎないね。
0394デフォルトの名無しさん2007/12/05(水) 22:32:37
話題になったのはVBネタの記事とかか
あの人どうも筆が走りすぎる感があるな
C#入門とかあの辺はよく書けてるんだけど
0395デフォルトの名無しさん2007/12/05(水) 22:38:30
>>394
俺が思うに、川俣の文体に反発する人間っていうのはたぶんあまり読書経験がないというか、
文芸的な文章を読まないタイプの人でしょ。

あれはああいう文体で、あんなものベタにとって反発するってどんだけオボコいんだよ、
と俺なんか思っちゃうけど。
0396デフォルトの名無しさん2007/12/05(水) 22:47:51
ライターなら多少走り気味なくらいがちょうどいいんじゃないの?
0397デフォルトの名無しさん2007/12/05(水) 22:48:39
叩きをするようなねらーによしあしなどわかってたまるか
0398デフォルトの名無しさん2007/12/05(水) 22:52:07
まあおまえらおちつけ
ここは初心者用質問スレだ
0399デフォルトの名無しさん2007/12/05(水) 22:52:11
なんかカワマタさんが来ましたよ
0400デフォルトの名無しさん2007/12/05(水) 22:53:08
>>395
>オボコい
久しぶりに見たよw
0401デフォルトの名無しさん2007/12/06(木) 00:33:01
asmxファイルで開発してる人いる?
0402デフォルトの名無しさん2007/12/06(木) 01:01:45
Xファイルなら
0403デフォルトの名無しさん2007/12/06(木) 02:34:50
あるプロトコルでチャットに接続し、ユーザはIEの画面を通して発言したり
他者の発言を取得して画面を更新したりするプログラムを作りたいと思っています。
以下のような構造になるのかなと考えています。

【ユーザ】←HTTP→【画面側プログラム�@】←なんらかの方法→【プログラム�A】←→インターネット

�@:
ASPで、他者の発言の取得はn秒ごとにポーリングを行う。
(サーバプッシュ型にできればなお良い)

�A:
EXEにしてサービス化?ともかく常時起動しており、チャットには繋がりっぱなしにする。
�@の状態には依存しない。
ASPにして�@と同化させると、ユーザが画面を開くたびにインスタンスが新しくなってしまうのと
ユーザが画面を開かなければインスタンスを作れないので分ける必要がある(と思っている)

そこでよく分からないんですが、まず、IISの起動と終了のイベントを拾って
プログラムを動かすことができるのでしょうか。
可能なら、�@と�Aを一緒くたにして、IIS起動でチャット接続して、その状態をstaticメンバにして
全インスタンスで共有し、終了で切断するということでASP一本にできると思ってます。
これは可能でしょうか。

もう一つ、分ける場合には�@と�Aで情報のやりとりをする必要があります。
�Aでインタフェースを提供し、�@はそれを呼び出すだけという形にしたいです。
�@から見たときに利用を簡単にしたいので、できればWebサービスとしてインタフェースを
提供できないかなと思うのですが、�AがASPじゃなく普通のEXEの時に、�AでWebサービスを
実装するにはどのようにすればいいのでしょうか。
(�AがASPなら、IISが良きに計らってくれますが…)
また、Webサービスが無理ならどういう方法で通信するのがベターでしょうか。プロセス間通信とか?

妄想段階なので曖昧な点が多いのですが、アドバイスをいただければ幸いです。
よろしくお願いします。
0404デフォルトの名無しさん2007/12/06(木) 03:10:01
パスワードを保存するファイルに暗号化をかけたいな〜と思ったんですが、
その暗号化キーをどこに保存しようか悩んでいます。
Firefox のマスタパスワードみたいに毎回問い合わせるのは最終手段にしたいと思ってまして、
じゃあどこにどうやって保存しようかな……という話です。
0405デフォルトの名無しさん2007/12/06(木) 13:26:26
>>395なんじゃそりゃ?
まあ反発してたってのがどんなんかしらんから何とも言えんけど、
誤解を招きやすい文章だと思ったことは何回かある。
0406デフォルトの名無しさん2007/12/06(木) 13:36:09
保存先ならIsolatedStorageでもどう
0407デフォルトの名無しさん2007/12/06(木) 14:05:11
>>403
ASPスレで聞いたほうがよい
たぶんセッションで出来る
0408デフォルトの名無しさん2007/12/06(木) 14:48:03
VC#2005EEを使い始めたのですが、ツールバーに使うアイコンをWindows標準のもの(新規作成とか上書き保存とか)を使いたいのですが、Windowsフォルダとかから探してくるしかないんでしょうか?
また、そういうったアイコンは勝手に使ってもいいんでしょうか?
0409デフォルトの名無しさん2007/12/06(木) 15:00:29
VS2005ImageLibraryというのがあるんだけどExpressには付いてないみたいだね
http://i-keisuke.at.webry.info/200701/article_13.html
ライセンス的に大丈夫なのか知らないけどこういうのも可能みたい
0410デフォルトの名無しさん2007/12/06(木) 15:51:04
NewWindowイベントをキャンセルしたいのですが、

private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
{
e.Cancel = true;
}

では上手くいきません。
どのようにしたら良いのか教えてください
0411デフォルトの名無しさん2007/12/06(木) 17:30:21
下記のソースを実行すると1のところでエラーが発生してしまいます。
どうやったら解消されるか教えてください。
目的は、csvファイルからデータを読み込んで、2番目のデータを配列に
挿入することです。

class FileRead2
{
public int[] data;

public void fileRead()
{
string[] list;
string line;
int k = 0;
StreamReader r = new StreamReader("data.csv",Encoding.Default);
while ((line = r.ReadLine()) != null)
{
list = line.Split(',');
/*1*/ data[k] = Convert.ToInt32(list[1]);
k++;
}
r.Close();
}
}
0412デフォルトの名無しさん2007/12/06(木) 18:01:29
>>411
空文字なんじゃねーの?
Console.writeline(list[1] == string.Empty);
/*1*/ data[k] = Convert.ToInt32(list[1]);
でやってみれ
0413デフォルトの名無しさん2007/12/06(木) 18:21:52
listの要素数を確認せずに[1]にアクセスするなよ
0414デフォルトの名無しさん2007/12/06(木) 18:27:31
>エラーが発生してしまいます。
なんでエラーの内容を書かないかな。
list[1]がないか、Parseに失敗してるかのどちらかだろうけど。
04154112007/12/06(木) 18:43:07
エラー内容は
オブジェクト参照がオブジェクト インスタンスに設定されていません。
というものです。

エラー発生時のlistの中身を確認してみると6番目までデータが
入っているので、どうやらparseに失敗しているようです。
0416デフォルトの名無しさん2007/12/06(木) 19:05:13
>>415
そりはもしかして public int[] data; のdataを初期化してないのでは?
0417デフォルトの名無しさん2007/12/06(木) 19:24:00
なんでこれでヌルポが出るんだ
配列の境界を越えてるとかなら分かるが
0418デフォルトの名無しさん2007/12/06(木) 19:24:35
A.Hoge(){};
B.Hoge(){};

using A;
using B;

public static void Main{
Hoge();
}

この場合どっらのHoge()が呼び出されんですか?
0419デフォルトの名無しさん2007/12/06(木) 19:27:01
コンパイルエラーになる
0420デフォルトの名無しさん2007/12/06(木) 19:27:40
わかりました。
0421デフォルトの名無しさん2007/12/06(木) 19:35:09
>>417
data == null
0422デフォルトの名無しさん2007/12/06(木) 19:37:05
>>421
それしかないな
0423デフォルトの名無しさん2007/12/06(木) 19:37:30
明らかに>>416が正解だろ。
ファイルの行数が決まってないから初期化できない、というならList<string>を使え。
0424デフォルトの名無しさん2007/12/06(木) 19:48:23
C#ってLinuxに移植されないの?
0425デフォルトの名無しさん2007/12/06(木) 19:49:28
MONO
Silverlight
04264112007/12/06(木) 20:03:15
皆さんご助言ありがとうございました。
配列を初期化していないことが原因でした。
無事解決できて良かったです。
0427デフォルトの名無しさん2007/12/06(木) 21:15:55
>>409
遅くなりましたがありがとうございました。
EEを使ってる人は標準のアイコンすらないんですね;
0428デフォルトの名無しさん2007/12/06(木) 22:18:54
>>427
ToolStripやMenuStripなら「標準項目の挿入」でいくつかアイコンがつくね。
そいつをなんとか保存しといて使い回したら? ちっこいけど。
0429デフォルトの名無しさん2007/12/06(木) 23:16:30
これマジでつまらない質問なんですが
インスタンスが理解できません
だれかわかりやすく説明してください
0430デフォルトの名無しさん2007/12/06(木) 23:33:45
(どこかで)newしたもの
0431デフォルトの名無しさん2007/12/06(木) 23:35:19
使ってりゃ分かる
0432デフォルトの名無しさん2007/12/06(木) 23:49:37
定番の
クラス…社員
インスタンス…平社員の山本
みたいなのって余計混乱させるだけだと思う
0433デフォルトの名無しさん2007/12/06(木) 23:58:59
オブジェクト指向とか継承とかの説明って大嘘だしな
使ってりゃ分かる
0434デフォルトの名無しさん2007/12/07(金) 00:44:24
>>428
「標準項目の挿入」というのはどこにあるんですか??
0435デフォルトの名無しさん2007/12/07(金) 01:46:15
質問です。

半角英文で書かれたWord文書を読み込んでXMLに出力するプログラムをC#(VS2003)で作成しています。

問題なのは、Word文書中に半角の「μ(みゅー)」や「π(ぱい)」が存在する場合で、読み込んでstring変数に格納した時点で「(」のような文字に変わってしまいます。

化けずにうまく読み込む方法はありますでしょうか?

ちなみに、半角の「μ」や「π」は、Wordの「挿入−記号と特殊文字」 メニューから挿入したものです。

よろしくお願いします。
0436デフォルトの名無しさん2007/12/07(金) 01:55:51
>>434
ポトペタしたあと、そいつをクリックするとそいつの右上あたりに矢印がでて、
そいつクリックすると出るウィンドウの中。
0437デフォルトの名無しさん2007/12/07(金) 03:32:17
>>435
コンソール出力だけど普通に化けなかったよ?
なんか情報出てないんじゃない?
0438デフォルトの名無しさん2007/12/07(金) 05:22:03
>>436
わ!
ありがとうございます!!
0439デフォルトの名無しさん2007/12/07(金) 13:53:40
>>437
トレースで出力してみましたが、文字化けしています。
全角なら問題ないのですが...。
0440デフォルトの名無しさん2007/12/07(金) 13:55:36
>>439
どう化けるの?
実際に出力してるコードは16進でダンプしてみた?
表示のフォントはどれにしてるの?
0441デフォルトの名無しさん2007/12/07(金) 14:13:07
>>440
string変数の中身はセミコロンのような文字になっています。
フォントは、Wordはセンチュリーで、VSの出力ウィンドウのフォントもセンチュリーに変更したら、こちらは正しく表示されました。

0442デフォルトの名無しさん2007/12/07(金) 14:41:24
ListViewItemのTagに自作の構造体を入れてるんだけど、この構造体は
ListViewItemを削除した時点で破棄されるのですか?
0443デフォルトの名無しさん2007/12/07(金) 14:50:07
Delete時に破棄する、というコードを入れてないのなら破棄されない
0444デフォルトの名無しさん2007/12/07(金) 14:50:49
ってここC#だったすまん。
でも削除した時点、ではないかな。
0445デフォルトの名無しさん2007/12/07(金) 14:51:34
そのうちGCが回収してくれるので楽観的でもいいってことでしょうか?
0446デフォルトの名無しさん2007/12/07(金) 15:00:21
おまじないかもしれないが、明示的Disposeしたりnullをセットしたほうが無難なきがする
0447デフォルトの名無しさん2007/12/07(金) 15:02:19
>>445
その構造体が、アンマネージドリソースを確保していないが入りにはそれでOK。
0448デフォルトの名無しさん2007/12/07(金) 15:24:07
前から思ってたんですが、楽観的って言葉の定義がすごい曖昧な気がするであります。
マネージコードである限り、どんなに無茶苦茶なコード書いてもBSODみたいな
破壊は原理的に起きないんでしょうか?

本当にこの辺理解しようと思ったら.netをきちんと勉強しないと駄目ですよね
0449デフォルトの名無しさん2007/12/07(金) 15:30:27
マネージコードでもたとえばDllImportしてる関数を適当に呼んだら死ぬ。
0450デフォルトの名無しさん2007/12/07(金) 15:30:39
>>448
マネージドコードでかつ、マネージドリソースにしかアクセスしない限りは
BSOD 起こす前に OutOfMemoryException が起こる。

でも、結局、ライブラリ中とかでも Win32API を色々 PInvoke してて、
あんま楽観もできないかも。
まあ、多分、ドライバとかみたいに OS に深く食い込むものでもなければ
ブルースクリーンは拝めないと思う。
04514482007/12/07(金) 15:45:45
やっぱりそうですよね
つまり、マネージな世界で閉じてる限り、何があろうともBSODのような被害は起こりえないってことですね
ある意味初心者が使うには打ってつけの言語ですね

ところで>>447さんの
>確保していないが入りにはそれでOK。
は
>確保していない限りにはそれでOK。
という意味でしょうか?
0452デフォルトの名無しさん2007/12/07(金) 16:15:20
構造体がアンマネージリソース確保しちゃダメだろ
0453デフォルトの名無しさん2007/12/07(金) 16:21:00
そんな事あんまねーし
0454デフォルトの名無しさん2007/12/07(金) 19:25:38
C#でErr.Numberのようなシステムの吐き出すエラーコードを知るにはどうしたらいいでしょう
catchの中でどうしても取りたいです

クラス名とかエラー文字列とかいらないです
0455デフォルトの名無しさん2007/12/07(金) 19:32:50
そんなものはない。
0456デフォルトの名無しさん2007/12/07(金) 19:38:24
エラーを番号で表すのが不便でしょうがないから
エラー通達の方法自体を変えたのに。
0457デフォルトの名無しさん2007/12/07(金) 19:39:12
C#のデストラクタって役に立つんですか?
0458デフォルトの名無しさん2007/12/07(金) 19:42:25
Dispose()の呼び忘れ防止とか……
0459デフォルトの名無しさん2007/12/07(金) 19:46:48
とかっていうかそれだけだな
0460デフォルトの名無しさん2007/12/07(金) 21:58:20
半角の「μ(みゅー)」や「π(ぱい)」ってあるんだね。
しらんかった。

つーかないだろ?
0461デフォルトの名無しさん2007/12/07(金) 22:05:00
Windows以外でC#使ってる人いるの?
やっぱC#の人はWinアプリ開発なのかな?
0462デフォルトの名無しさん2007/12/07(金) 22:06:01
うんにゃ
言語論争につかうだけ。
0463デフォルトの名無しさん2007/12/07(金) 22:10:15
いるよ
0464デフォルトの名無しさん2007/12/07(金) 22:10:58
万一Silverlightが流行ることがあれば…
0465デフォルトの名無しさん2007/12/07(金) 22:15:16
でもvista以降のOSが普及すれば一気に流行るんだろうね
LLなんて軟派な言語は要らないんだぜ?
0466デフォルトの名無しさん2007/12/07(金) 22:18:45
>>460
Symbol フォントでμとかπ出すためのコードじゃないか?
Symbol フォントのμ、πってそれぞれ m と p に対応してた気はするけど。
0467デフォルトの名無しさん2007/12/07(金) 23:02:39
配列のプロパティについて詳しく説明しているHPはありますか?
宣言の仕方と使い方の例を参照したいです。
0468デフォルトの名無しさん2007/12/07(金) 23:52:27
そりゃMSDN2
0469デフォルトの名無しさん2007/12/07(金) 23:55:34
.net frameworkのクラス階層が複雑すぎて疲れました…
c#のせいじゃないと分かってますが…
0470デフォルトの名無しさん2007/12/07(金) 23:58:47
そうなったら引退ですね
0471デフォルトの名無しさん2007/12/08(土) 00:06:57
あれが複雑てw
0472デフォルトの名無しさん2007/12/08(土) 00:27:53
Javaの方が酷い
0473デフォルトの名無しさん2007/12/08(土) 01:08:01
複雑なんじゃなくて量が多いだけ
一部のよく使うものだけ覚えておけばあとは必要に応じて調べればいい
0474デフォルトの名無しさん2007/12/08(土) 01:12:08
何の言語でもライブラリ覚えるのが一番大変だ
0475デフォルトの名無しさん2007/12/08(土) 01:19:52
.NETのクラスライブラリなんて無茶苦茶使いやすいじゃん
その昔MFCなるものがあって、最悪だったぞ。
0476デフォルトの名無しさん2007/12/08(土) 01:38:23
こいつ引退どころかプログラマになってすらいないだろうな
0477デフォルトの名無しさん2007/12/08(土) 01:39:23
なんか色々話聞きますよね・・・>MFCやSTL
これから入る初心者にとっては、昔に比べて相当恵まれた環境なんですかね、やっぱ?
0478デフォルトの名無しさん2007/12/08(土) 01:41:47
もう、恵まれてるなんてものじゃない。
10年も昔と比べたら、何十倍も何百倍も生産性高いんじゃなかろうか。
0479デフォルトの名無しさん2007/12/08(土) 02:42:06
IDEがタダなんて考えられんかったしなぁ・・・
0480デフォルトの名無しさん2007/12/08(土) 02:42:11
話ぶった切ってスマソ。質問です。

windows mobile6でファイルを同期させるプログラムをC#で書いているのですが、
ファイルの作成日や最終書き込み日時を変更させるには どうしたら良いでしょうか?
FileInfoやFileクラスだと、LastWriteTimeプロパティが読み取り専用で使えずハマってる現状です。

File.copy(string path)を使ってファイルをコピーすると、何故かファイルのミリ秒部分が
切り捨て、もしくは切り上げされているようで、書き込み日時が1秒ずれてしまうのを直したいのです。
0481デフォルトの名無しさん2007/12/08(土) 03:00:29
ExpressEditionみたいのをもっと早く出しておけば他のIDEへの流出は食い止められたのに
IDEの儲けなんて全体で見れば大したことないんでしょ?
0482デフォルトの名無しさん2007/12/08(土) 03:00:51
>>480
へ?File.SetLastWriteTimeは?
04834802007/12/08(土) 03:09:28
GetLastWriteTime はwindows mobileでもサポートされてるんですが、
何故かSetLastWriteTimeの方はサポートされていないようなんです。
0484デフォルトの名無しさん2007/12/08(土) 09:19:44
>>480
http://www.opennetcf.com/FreeSoftware/SDF14/tabid/91/Default.aspx
ここのソース見てみたらIntPtrとかでドロドロやらないと駄目みたい。
0485デフォルトの名無しさん2007/12/08(土) 09:43:25
>>480
CreationTime/LastWriteTime/LastWriteTimeはCE系はRead Onlyやね。
違ってるかも知れんけど多分Compact Framework上からは無理臭い希ガス。
まずWin32APIで出来るか確認して出来るようならDllImportする位かな。

漏れも今CE5.0+CFMで開発やってるけど、結構良く使いそうなメソッドや
プロパティーが端折られてて困る事が多々(つд`)
Win32API自体がサブセットな実装だからしゃーないんだろうけど。
04864852007/12/08(土) 09:46:11
>>484
こんなんあるのか。ちょと見て見よ。
質問主じゃないけど参考になりましたわ。
0487デフォルトの名無しさん2007/12/08(土) 12:16:38
そもそもミリ秒単位の情報って持てるの?
0488デフォルトの名無しさん2007/12/08(土) 14:01:28
持てるよ
0489デフォルトの名無しさん2007/12/08(土) 14:35:54
バイト配列AとBがあって、配列Aの中から配列Bを検索するにはどうしたらよいですか?
byte[] A = byte[0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07]
byte[] B = byte[0x03, 0x04, 0x05]
だとしたら、3を返してほしいのですが…
0490デフォルトの名無しさん2007/12/08(土) 15:04:39
A.Intersect(B).First()
0491デフォルトの名無しさん2007/12/08(土) 15:24:56
そんなんあったっけ?
っていうかそれ目的違うんじゃねーの?
普通に考えて。
0492デフォルトの名無しさん2007/12/08(土) 15:31:01
byte[] A = new byte[] {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
byte[] B = new byte[] {0x03, 0x04, 0x05};
string a = System.Text.Encoding.ASCII.GetString(A);
string b = System.Text.Encoding.ASCII.GetString(B);
a.IndexOf(b)

Encoding.ASCIIで、バイト列がそのまま文字列になるなら、これでいけると思うけど。
だめなら、素直にforでまわすとか。
04934892007/12/08(土) 15:32:38
>>492
ありがとうございます。
早速試してみます。
0494デフォルトの名無しさん2007/12/08(土) 15:36:49
試すなよそんな方法w
04954892007/12/08(土) 15:42:44
ダメでしたw
StringBuilderで1バイトずつ連結して、stringのIndexOf使うことにします。
0496デフォルトの名無しさん2007/12/08(土) 15:46:52
えー。素直に二重ループじゃだめなのか?
int indexOf(byte[] A, byte[] B) {
for (int i = 0; i <= A.Length - B.Length; ++i) {
int j;
for (j = 0; j < B.Length; ++j)
if (B[j] != A[i + j]) break;
if (j == B.Length) return i;
}
return -1;
}
0497デフォルトの名無しさん2007/12/08(土) 15:59:59
16進数文字列化して検索ってしたことならあるな、手抜きのために。
04984892007/12/08(土) 16:00:36
>>496
二重ループのが簡単そうですね。
希望通りの結果が得られました。
ありがとうございました。
0499デフォルトの名無しさん2007/12/08(土) 16:02:25
>>496
先生、止まりません><
0500デフォルトの名無しさん2007/12/08(土) 16:34:42
素直にLINQ使えよ
0501デフォルトの名無しさん2007/12/08(土) 18:09:40
ちょっと教えてください。

class A
{
  public class A
  {
    public uint uiId;
    public StringBuilder sbSTR;
    public byte[] bData;
  }
  public static List<A> Alist = new List<A>();

  public staitc SetData()
  {
    A _A = new A();
    _Aにデータ詰める
    Alist.Add(_A);
  }
}
このクラスAはFrom1等から呼び出して使う感じなんですが、ここでAlistに入れたデータはFrom1の生存
期間中はずっとデータを保持してて欲しい為、AlistとSetData()をstaticで宣言しております。
しかしデータを詰める為のテンポラリー領域として_Aをnewしてリストに突っ込んでます。この_Aの生存期
間てどうなるのでしょうか?また_Aの生存期間が過ぎた時にAlistに追加されてる_Aも当然消えるのでしょ
うか?
0502デフォルトの名無しさん2007/12/08(土) 18:14:05
>>501
> このクラスAはFrom1等から呼び出して使う感じなんですが、ここでAlistに入れたデータはFrom1の生存
> 期間中はずっとデータを保持してて欲しい為、AlistとSetData()をstaticで宣言しております。
意味わかんね。FormAがAのインスタンス保持すりゃすむ話。
0503デフォルトの名無しさん2007/12/08(土) 18:23:00
生存期間とか別に気にしなくていい
誰かが使ってる(使える状況にある)限りは絶対消えない
0504デフォルトの名無しさん2007/12/08(土) 18:48:49
>>502
んとA内にはDllImportして使う他のメソッドも定義されてて全部staticで定義
されてるので、Form1側でAのインスタンス作ろうとするとエラーになるのです。

>>503
なるほどです。ちなみに色々本読んだりして探してるのですが、newした変数
/インスタンスの生存期間とか詳しく説明された物って全然見かけないのは、
気にしなくて良いからなんでしょうか?
どうしてもCの考えで、auto/static/mallocした領域に照らして考えてしまうの
で、この変数消えるんじゃね?と思える状況に多々遭遇しております。まぁク
ラスの設計がヘボなんですけど…。
こう言うメモリ回りの話しが詳しく書かれた物て何か無いのでしょうか?
0505デフォルトの名無しさん2007/12/08(土) 18:57:17
そういうことをいちいち気にしなくて済むようにするためのGC
他から参照されてないオブジェクトはそのうちGCに消される。それだけ。
0506デフォルトの名無しさん2007/12/08(土) 19:01:13
オブジェクトは到達可能ならば消えないし
到達不可能になると消える
それがGC
05075012007/12/08(土) 19:26:42
なるほど、そういう文化と言う事ですか。
ありがとうございました。
0508デフォルトの名無しさん2007/12/08(土) 21:40:28
文化じゃねないよ。仕様だよ。
0509デフォルトの名無しさん2007/12/08(土) 21:55:12
Cになれてるなら、
どこからも参照されなくなったら勝手にfreeされるmallocだと思っとけ。
0510デフォルトの名無しさん2007/12/08(土) 22:03:13
GCされる頻度って調整できるんですか?
この辺はパフォーマンスに大きく影響する部分ですよね
0511デフォルトの名無しさん2007/12/08(土) 22:06:21
自分でGC.Collect呼べば
構造体をうまく使えば
0512デフォルトの名無しさん2007/12/08(土) 22:06:53
GCは必要になったら起動される。
無理やり起動することはできるがお勧めしない。
よって直接的な調整の余地はあまり無い。
大量にインスタンスを生成して参照しなくなれば頻度は上がるし、
あまりインスタンスを作成しないなら下がる。
細かい話はいろいろあるけど、まずはそれだけ。
0513デフォルトの名無しさん2007/12/08(土) 22:09:10
ゲームなど、シビアなインタラクションが要求されるような場合は別だが、
多くの場合は細かく気にする必要は無い。
インスタンスを無駄に生成しないようにある程度注意するくらい。
0514デフォルトの名無しさん2007/12/08(土) 22:19:55
大抵の場合自分がやるよりうまいことやってくれるよ
0515デフォルトの名無しさん2007/12/08(土) 22:22:07
確かに3Dゲーム系では.net避ける人多いですね
0516デフォルトの名無しさん2007/12/08(土) 22:24:31
MDX2.0が立ち消えになっちまったからなあ
0517デフォルトの名無しさん2007/12/08(土) 22:41:44
つXNA
0518デフォルトの名無しさん2007/12/08(土) 22:47:13
あんなもの使えるかよ
0519デフォルトの名無しさん2007/12/09(日) 00:01:55
マネージドDirectXでいいじゃない
0520デフォルトの名無しさん2007/12/09(日) 00:13:54
あんなもん自分でラッパー書いたらしまいや
0521デフォルトの名無しさん2007/12/09(日) 00:25:52
>>519
>>516からの流れなのにMDXを持ち出すのはおかしいだろ
0522デフォルトの名無しさん2007/12/09(日) 00:38:30
string modosu = this.Sample_List.SelectedItem.ToString();
modosu = "@\"" + "C:\\test\\" + modosu + ".txt\"";
this.textBox1.Text = modosu;

StreamReader sr = new StreamReader(modosu, Encoding.GetEncoding("Shift_JIS"));

パスを変数化して、StreamReaderの第一引数に入れているのですが、接続されません。
ちなみに変数"modosu"の中身を直接書き込むと接続されます。
@"C:\test\時間集計.txt"
何が原因なのでしょうか?
0523デフォルトの名無しさん2007/12/09(日) 00:40:23
>>522
解決しました~~;
0524デフォルトの名無しさん2007/12/09(日) 00:41:46
@と¥がいらなそう
0525デフォルトの名無しさん2007/12/09(日) 00:42:40
.txt\"";
0526デフォルトの名無しさん2007/12/09(日) 00:44:14
>>523
もうくるな
0527デフォルトの名無しさん2007/12/09(日) 01:35:23
すいません質問があります。

あるクラスAを継承したクラスBがあるとして、
クラスBのインスタンスからはAのpublicメンバを使用できないようにすることは出来るでしょうか?
例えばFormクラスを継承したMyFormクラスを作ったが、Myformインスタンスでは勝手にクライアントサイズなどを変えてほしくない、などです。
0528デフォルトの名無しさん2007/12/09(日) 01:49:12
できません
0529デフォルトの名無しさん2007/12/09(日) 01:50:31
>>528
出来そうと思いましたが、そうでしたか。ありがとうございました。
05304802007/12/09(日) 02:56:59
>>484 >>485 レス有難うございます。
IntPtrってなんぞ、、、ってところから始まって、DllImportを初めて使ってみるまでに一日かかりました。ウヒー。
とりあえず日付は更新できるようになったものの、本当にこの書き方でよいのか激しく不安です。
添削していただけると有難いです。
[DllImport("coredll.dll")]
private static extern IntPtr CreateFile(String lpFileName, UInt32 dwDesiredAccess, UInt32 dwShareMode, IntPtr lpSecurityAttributes,
UInt32 dwCreationDisposition, UInt32 dwFlagsAndAttributes, IntPtr hTemplateFile);

[DllImport("coredll.dll")]
private static extern bool CloseHandle(IntPtr hObject);

[DllImport("coredll.dll")]
private static extern bool GetFileTime(IntPtr handle, ref FILETIME lpCreationTime, ref FILETIME lpLastAccessTime, ref FILETIME lpLastWriteTime);

[DllImport("coredll.dll")]
unsafe private static extern bool SetFileTime(IntPtr handle, FILETIME *lpCreationTime, FILETIME *lpLastAccessTime, FILETIME *lpLastWriteTime);

public struct FILETIME{
public UInt32 dwLowDateTime;
public UInt32 dwHighDateTime;
}
public struct FileTimes{
public FILETIME CreationTime;
public FILETIME LastAccessTime;
public FILETIME LastWriteTime;
}
unsafe static public bool SetFileTimeStamps(string path, FileTimes fileTimes){
IntPtr handle = CreateFile(path, 0x80000000, 0x00000001, IntPtr.Zero, 3, 0x00000080, IntPtr.Zero);
bool re = SetFileTime(handle, &fileTimes.CreationTime, &fileTimes.LastAccessTime, &fileTimes.LastWriteTime);
CloseHandle(handle);
return re;
}
0531デフォルトの名無しさん2007/12/09(日) 03:08:18
>>529
フォームの中の使うメンバだけを公開したクラスを作ってフォームにかぶせる
0532デフォルトの名無しさん2007/12/09(日) 03:21:43
>>527
newで書き換えちゃえば呼んでも変更されないってのは出来るけど・・・お勧めはしない

public partial class Form1 : ExForm {
public Form1() {
InitializeComponent();
this.Size = new Size(500, 500);
}
}
public class ExForm : Form {
public new Size Size {
set { }
get { return base.Size; }
}
}
0533デフォルトの名無しさん2007/12/09(日) 04:09:33
例外投げればいんじゃね。
05344852007/12/09(日) 05:07:01
>>530
API周りはMSDNと見比べたけど型の設定とかは間違ってないね。
ちょっと思ったのは、FILETIMEとFileTimesの実装かな。
両方publicで外出ししてるけど、クラス内に隠蔽して、メソッドの引数は
DateTime型で貰って内部で変換した方が呼び出し元から使うのは楽な
んではないかなと。
まぁ呼び出し側で日時をどういう形式で扱ってるかによるから好きな方
法で良いとは思うけど。
05354802007/12/09(日) 05:46:26
>>534
なるほど、確かにFILETIMEは毎回ビットシフトしてlong型に直す処理を外でしていたので
DateTime型で受けて内部で処理させた方がスッキリしますね。
有難うございます。

DllImportを覚えると、一気に出来ることが増えて、まさに世界が広がった感じがします。
楽しくなってきました(´∀`)
0536デフォルトの名無しさん2007/12/09(日) 11:04:24
Wsdl.exeで登録したXMLWebサービスを削除するにはどうしたら良いの?
0537デフォルトの名無しさん2007/12/09(日) 13:11:05

Regexクラスで質問です。
あるファイルに変換前と変換後のデータが格納してあり、
文字列をその内容に従って変換したいのですが、\r\nの扱いがうまくいきません。

Regex rex = new Regex(strBefore);
strData = rex.Replace(strData, strAfter );

aaabbb → aaa\r\nbbb
(strBefore) (strAfter)

としたい場合、CRLFではなく、文字列として"\r\n"に変換されてしまいます。
エスケープシーケンスのオプションみたいなのがあるのでしょうか?
0538デフォルトの名無しさん2007/12/09(日) 13:12:49
ファイルから読み込むときに@"\r\n"を"\r\n"に変換しろ
0539デフォルトの名無しさん2007/12/09(日) 13:21:42
>>538
ありがとうございます。
うまく行きました。
0540デフォルトの名無しさん2007/12/09(日) 17:20:30
ツールチップの描画に使用されるフォント(デスクトップのプロパティのデザイン→詳細設定→ヒントで設定される奴です)を取得したいのですが、何か方法はないでしょうか。
0541デフォルトの名無しさん2007/12/09(日) 19:25:14
>>540
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.drawtooltipeventargs.font(VS.80).aspx
これ?
0542デフォルトの名無しさん2007/12/09(日) 21:10:15
抽象クラスで、フィールドとコンストラクタを継承することはできないんでしょうか?
0543デフォルトの名無しさん2007/12/09(日) 21:29:50
意味が分からない
無理に抽象的に書かなくていいから具体的にどうしたいのか書いて
0544デフォルトの名無しさん2007/12/09(日) 21:57:25
abstract class A
{
    (略)
}


class B : A
{
    (略)  
}

class C : A
{
    (略)
}


↑でクラスBとクラスCで同じようなフィールドを使って、さらにそれを同じ値で初期化するとき
クラスAのフィールドとコンストラクタが継承できたら楽だと思うんですが、できないんでしょうか?
0545デフォルトの名無しさん2007/12/09(日) 22:04:17
ベースクラスのフィールドにアクセスしたり、ベースクラスのコンストラクタを明示的に呼びたいってことか?
それならできる
0546デフォルトの名無しさん2007/12/09(日) 22:05:05
あるプログラムA(EXE、すでに起動して無限ループで待機中)でメソッドを提供し、
別のプログラムB(ASP)でこれを呼び出したいのですが、何かうまい仕組みが提供されてたりしますか?
プロセス間通信を自前で実装するくらいしか思いつかないのですが…。
0547デフォルトの名無しさん2007/12/09(日) 22:05:56
それ具象やん
0548デフォルトの名無しさん2007/12/09(日) 22:09:27
フィールドのアクセス修飾子をprivateではなくprotectedにすれば、派生クラスからもアクセスできるようになる。
ベースクラスのコンストラクタを呼びたければ派生クラスのコンストラクタを

public B() : base()
{
}

のように書けばいい
0549デフォルトの名無しさん2007/12/09(日) 22:10:01
>>545
すいません、同じ違いでした。

型名やフィールド名が"同じという意味です。

B.x
B.y

C.x
C.y

これらを一つ一つ宣言するより、親クラスから継承して
例えば全てに0等を入れて初期化する場合、コンストラクタも一緒に継承できると便利だと思うんですが……
0550デフォルトの名無しさん2007/12/09(日) 22:13:17
>>549
出来るから手動かしてみな
0551デフォルトの名無しさん2007/12/09(日) 22:19:28
>>546
リモーティング
0552デフォルトの名無しさん2007/12/09(日) 22:25:24
>>549
A.xとB.xは同じフィールドじゃなくて、たまたま名前が同じだけってこと?
protected void init(ref int x, ref int y);
みたいなの定義しといて、各コンストラクタから呼び出すとか
05535522007/12/09(日) 22:26:08
定義しといて→Aに定義しといて
0554デフォルトの名無しさん2007/12/09(日) 22:43:41
多分>>544は>>552みたいに複雑なことをやろうとしてるんじゃなくて、
継承とインスタンスがどのように挙動するかわかってないだけだと思うのだが・・・
0555デフォルトの名無しさん2007/12/09(日) 22:44:17
protectedの意味が分かれば終了だろ
0556デフォルトの名無しさん2007/12/09(日) 22:57:20
と、いうわけでアクセス修飾子の話でも。

public 何処からでもアクセス可能(アクセスレベルが低いと表現)
↑
protected 派生クラスはアクセス可能
↓
private 自分しか無理。(アクセスレベルが高い)

クラスAにposX、posY、graphic、というフィールドがあれば、
クラスAを継承したクラスBも、そのフィールドを持つ。
それらのフィールドのアクセスレベルをprotectedにしておけば、派生クラスでもフィールドに自由に代入・取り出しできる。
もしprivateだと、それぞれフィールドは存在するのに一切派生クラスからはアクセスできない、ということになる。
この場合はプロパティを基本クラスで作っておけばすれば解決できる。(というかgetとsetのアクセスレベルを分けるから大抵はこっち?かな)




0557デフォルトの名無しさん2007/12/09(日) 23:00:22
フィールドをprotectedにしちゃうのはお勧めできない
初期化はたいてい基底クラスのコンストラクタを呼べば済む
0558デフォルトの名無しさん2007/12/10(月) 00:07:18
継承なんてすんなよ。
0559デフォルトの名無しさん2007/12/10(月) 04:22:03
てか、フィールドをprotectedにするのは禁止じゃなかったか。
プロパティなら良い。
0560デフォルトの名無しさん2007/12/10(月) 10:27:11
誰が?
0561デフォルトの名無しさん2007/12/10(月) 10:29:23
オレオレ
0562デフォルトの名無しさん2007/12/10(月) 11:25:16
とある機器からUDPでHTTP1.1なデータを送ってくるのですが
受信と解析するようなクラスはありますか?
0563↑2007/12/10(月) 11:28:01
受信だけはUdpClientでできるんですけど
0564デフォルトの名無しさん2007/12/10(月) 11:33:59
WebClient
0565デフォルトの名無しさん2007/12/10(月) 12:09:29
>>561
ttp://nasu.x0.com/blog/program/index_2.html
0566デフォルトの名無しさん2007/12/10(月) 15:03:48
例外が起こる前にifで避けるのと、起こってからtry-catchで対応するのとどっちがいいですか?
こういう時はtry-catchを使うという判断基準ってあるのでしょうか?
0567デフォルトの名無しさん2007/12/10(月) 15:09:44
モノによるけど私はifで避けれることはifで避けるようにしてる。
try-catchでしか回避できない仕様なら仕方なしに使う感じ
0568デフォルトの名無しさん2007/12/10(月) 15:29:29
例外をキャッチするとわけわかんなくなるから
ifで出来るものはifでやった方がいいよな
ArgumentExceptionとか例外が投げられること自体がバグの証明であるようなのは
どんどん投げるべき
そしてキャッチさせないべき
そのためにtryで囲ませないべき
tryで囲ませると往々にしてバグまで握りつぶしてしまう
05695662007/12/10(月) 15:57:42
事前に避けられそうな奴は避けるべきなんですね。
早速コード直してみます。
ありがとうございました。
0570デフォルトの名無しさん2007/12/10(月) 16:12:28
教えてください。
WebBrowserコントロールで、
Internet Explorer の [ファイル] メニューの [名前を付けて保存] メニュー オプションのような
機能を実装しようとしているのですが、
以下のようなコードですとエラーがでます。
どうすればいいんでしょう。。。

AxWebBrowser3.ExecWB( ShDocVw.OLECMDID_SAVEAS, ShDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT);ですと
'ShDocVw' は現在のコンテキスト内に存在しません。
とエラーがでてしまったのですが。。。

0571デフォルトの名無しさん2007/12/10(月) 17:31:41
using ShDocVw;
0572デフォルトの名無しさん2007/12/10(月) 17:32:55
OLECMDID.OLECMDID_SAVEAS
0573デフォルトの名無しさん2007/12/10(月) 18:29:19
using ShDocVw;を追加したのですが以下のエラーが出ました。
型または名前空間名 'ShDocVw' が見つかりませんでした。
using ディレクティブまたはアセンブリ参照が不足しています。
0574デフォルトの名無しさん2007/12/10(月) 19:20:05
コントロールを削除してもソースにイベントハンドラが残るんですけど手動で削除するしかないんですか?
0575デフォルトの名無しさん2007/12/10(月) 19:44:30
勝手に消えても困るだろ?
0576デフォルトの名無しさん2007/12/10(月) 20:05:55
ほかから参照されていないとかの条件なら消すかどうかの選択肢はあってもいいかもね
0577デフォルトの名無しさん2007/12/10(月) 20:46:51
>>573
shdocvw.dll参照にいれたんじゃなくてWebBrowserコントロールか。

ShowSaveAsDialog ってメソッドがあるでしょ。
0578デフォルトの名無しさん2007/12/10(月) 21:18:12
ShowSaveAsDialog();は、AxWebBrowserにはないみたいです。
shdocvw.dllは、参照にいれる必要ないんですか?
0579デフォルトの名無しさん2007/12/10(月) 21:37:12
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=42629&forum=7
0580デフォルトの名無しさん2007/12/10(月) 21:42:19
どっちかの質問取り下げろやハゲ
0581デフォルトの名無しさん2007/12/10(月) 22:41:02
WebBrowserコントロールと書いておきながらaxWebBrowserなのか?
0582デフォルトの名無しさん2007/12/10(月) 23:05:26
>>566
おれはめちゃくちゃcatchしまくってるよ。
おかげでエラーチェックのifが少なくなって、ロジックが超すっきり。
0583デフォルトの名無しさん2007/12/10(月) 23:09:29
ifやめてcatchにする方が
どう繋がってるのか分かりにくい
0584デフォルトの名無しさん2007/12/10(月) 23:12:50
catchの方がコスト高いでしょ?
0585デフォルトの名無しさん2007/12/10(月) 23:19:28
たとえば、CSVを読み込んで、DBに入れるコードを書くとして、
TryPerse() でなくて、Prese()で、intに変換。
FormatExceptionが飛んだら、このCSVは不正ですって言って、処理終了。

これでなんにも問題ありません。
0586デフォルトの名無しさん2007/12/10(月) 23:21:09
まあ終了する時は例外ほど便利なものはない
0587デフォルトの名無しさん2007/12/10(月) 23:53:12
趣味グラマか
0588デフォルトの名無しさん2007/12/10(月) 23:56:38
エラーコードはまだいいけど
null返してきたりスルーしやがるメソッドはうざい
0589デフォルトの名無しさん2007/12/11(火) 00:04:21
nullを返すのとbool TryHoge(out result)と例外返すのとどれがいい
0590デフォルトの名無しさん2007/12/11(火) 00:13:41
s@;w@mee;@s4ezdwh;
0591デフォルトの名無しさん2007/12/11(火) 00:42:53
例外
0592デフォルトの名無しさん2007/12/11(火) 00:43:34
TryParseよりParseがいいってか
0593デフォルトの名無しさん2007/12/11(火) 00:47:03
メソッドが不可避な例外を投げる場合、キャッチしなければバグになるわけだ
そしてそれがバグであるかどうかはドキュメントをよく読まないと分からない
TryHogeならばifで囲まれていない時点でバグであることが見た瞬間に分かる
どっちがいいかは分かりきっている
0594デフォルトの名無しさん2007/12/11(火) 01:22:57
というか、これは自分の想像だから間違ってたらただして欲しいんだけど、
昔のCの、intでエラーコードを返すタイプの関数から、
今の、voidでエラーが起きたときは例外を投げるタイプのメソッドに推移というか、
後者が主になったのは、なんらかの理由があるからじゃないの?
TryParseとかはその流れに逆行してるように感じたんだけど…
0595デフォルトの名無しさん2007/12/11(火) 01:25:42
そりゃ、TryParseのほうがタイプ量少なくて済むからな。軽いし。
ただし、boolを返すTryXxxを作るときは、例外を投げるXxxも用意することになってる。
0596デフォルトの名無しさん2007/12/11(火) 01:34:04
例外には2種類あって、ArgumentExceptionのように投げられること自体が呼び出し側の
ミスによるものであり、除去すべきバグであることが明らかなものと、
ネットワークのサーバがダウンしている、ファイルが存在しないといった
正しい呼び出し方をしたとしても起こりうるエラーがある
大半は前者だ。バグだから直さなきゃいけないというのを通知するのには例外は適している
失敗の可能性が不可避なメソッドならば、例外を用いずによりわかりやすいTry〜のような
形を用いるべきだ
Tryの形式なら一目でバグと分かるのに、わざわざ例外を使って
バグと分かりにくいコードを書かせる必要なんか皆無だ
どちらにもいえることだが、例外はキャッチするものでは無い
0597デフォルトの名無しさん2007/12/11(火) 01:50:28
要するにポリシーとしては、使い方に因らないエラーが発生する場合は例外を投げ、
使い方に因ってエラーが発生する場合は戻り値で返せということですかね?
0598デフォルトの名無しさん2007/12/11(火) 01:58:51
正しい呼び出しをしてない場合は例外を投げ
正しい呼び出しをしてもエラーが不可避である場合はboolかなんかを返せということを俺はいいたい
0599デフォルトの名無しさん2007/12/11(火) 02:01:03
君C#向いてないよ
0600デフォルトの名無しさん2007/12/11(火) 02:02:45
>>599
>>596のようにしない方がいい理由がなにかいえるのか?
0601デフォルトの名無しさん2007/12/11(火) 02:05:45
Try形式だと基本bool値しか返ってこないけど
エラーに関してもっと詳しい情報を渡したい時には>>596のスタンス的にはどういう方法をとるの?
戻り値?引数?
0602デフォルトの名無しさん2007/12/11(火) 02:06:52
あ、割り込んじゃったけど>>601≠>>599です
0603デフォルトの名無しさん2007/12/11(火) 02:08:06
>>601
outでエラーの詳しい情報をobjectにして戻すのがいいと思っているが
それこそ例外をoutで返したらいい
0604デフォルトの名無しさん2007/12/11(火) 02:15:27
.NetFrameworkでそういった作りになってる物があるかな。
0605デフォルトの名無しさん2007/12/11(火) 02:19:16
投げずに渡す、か
正直それは考えた事なかったな
0606デフォルトの名無しさん2007/12/11(火) 02:22:15
.NET FrameworkにはTryParseのような一部のものしかそういう設計をとっていない
それは誤りだが今さら変えられない
.NET Frameworkで例外を返すのが使い物になるのはそれが共通であり
プログラマなら大抵そのクラスの動作を知っているからだ
自作のクラスでそれをやるのは死亡フラグそのものだ
0607デフォルトの名無しさん2007/12/11(火) 09:47:13
日本語でおk
0608デフォルトの名無しさん2007/12/11(火) 10:17:45
文字列をint型にキャストするには
 int.Parse(hogehoge)
等の方法でやっていますが、
変換する型そのものを文字列等で指定する方法がありますでしょうか?
0609デフォルトの名無しさん2007/12/11(火) 11:43:08
結局Win32のカオス具合をなぞってるだけだな
0610デフォルトの名無しさん2007/12/11(火) 11:51:29
>>608
それはキャストじゃなくて型変換(Convert)だろ。
TypeConverter/TypeDescriptor でも使えば?
0611デフォルトの名無しさん2007/12/11(火) 12:25:54
>>606
TryParseは2.0になって利便性のために新たに付け加えられたのであって、
決して「誤り」ではないよ。
0612デフォルトの名無しさん2007/12/11(火) 12:28:32
outで返すとC#でしか使えないことないか?

パラノイア的に統一性に拘らないのであれば(というのは、これに病的に固執する奴っているからね)
値を返さないメソッドに関してだけ例外を返すようにする(返値が必要なのは普通に例外投げる)
というやり方の方が俺は好きだな。
06136112007/12/11(火) 12:28:47
>>606
TryXの使い方のガイドラインあるから読んどけ
http://msdn2.microsoft.com/ja-jp/library/ms229009(VS.80).aspx
0614デフォルトの名無しさん2007/12/11(火) 13:29:25
>>612
outが嫌なら戻り値用の構造体を作ったっていい
>>613
パフォーマンス上の理由なんてのは的外れだ
その例外がめったに起こらなければ起こらないほど
例外のキャッチし忘れは深刻なバグになる
起こるか起こらないか分からないようなエラーが起こるものが
通常のメソッドと見た目全く同じに用意されていて
エラーにそなえてtryで囲めというのは間違い探しをしろといっているようなものだ
単に無駄だ
バグであることが分かりやすくなるように設計するべきだ
0615デフォルトの名無しさん2007/12/11(火) 13:30:22
平日の昼間っから暇なんだなあ
0616デフォルトの名無しさん2007/12/11(火) 13:41:10
なんでここは3行にまとめられない奴ばっかりなんだろ
0617デフォルトの名無しさん2007/12/11(火) 13:57:19
例外のキャッチし忘れはむしろ深刻にはならない。
0618デフォルトの名無しさん2007/12/11(火) 14:09:17
めったにないことだけどある環境では100回に1回ぐらい例外が投げられることがある
catchしてないのにテストをすり抜けてパッケージソフトとして出荷されてしまった
どうなる?
0619デフォルトの名無しさん2007/12/11(火) 14:14:53
例外は絶対投げちゃダメ!とかTryParseは誤り!とか言う事が極端だな
共有すべき普遍的な知識と自分だけの信念は区別しないと
0620デフォルトの名無しさん2007/12/11(火) 14:16:17
そんな事言ってる人居たっけ
0621デフォルトの名無しさん2007/12/11(火) 14:18:28
>>619
TryParseは正しい
正しく呼び出してもエラーが起こりうる場合例外は投げるべきじゃない
とは言った
0622デフォルトの名無しさん2007/12/11(火) 14:27:16
ちなみにTry〜を使うべきだと俺が考えるものには
メソッドが成功するかどうかが自分のプログラムの状態以外の要因で決まるもの(ハードディスクとかNetworkとか)と
それが正しい呼び出しであるかをテストする機能も正しい使い方のうちに含むもの(TryParse)と二通りある
0623デフォルトの名無しさん2007/12/11(火) 14:33:13
ここふらっとスレなんだけど。
0624デフォルトの名無しさん2007/12/11(火) 14:51:59
だからだろ
0625デフォルトの名無しさん2007/12/11(火) 15:12:12
>>618
キャッチし忘れのバグの方がキャッチもしくは例外をかわした場合のバグより
深刻にはならないって言ってるだけだよ。
0626デフォルトの名無しさん2007/12/11(火) 15:17:39
ある環境では100回に一回発生する例外を
常にちゃんと認識しててきっちり対処出来るんなら別だけどな。

あくまでバグがあった場合の話で、
バグがないならその方がいいに決まってる。
0627デフォルトの名無しさん2007/12/11(火) 15:29:08
>>626
しかしある種の例外は確率は低いけど不可避なわけだ
>>622の前者のようなのはそうだ

>>625
間違ってるのにエラーを返さない、例外を投げない
それはただのバグだが防ぐのは難しい
しかし例外のキャッチし忘れは簡単に防げる
防げるものは防いだほうがいいし、それが深刻になる場合だってある
0628デフォルトの名無しさん2007/12/11(火) 16:37:32
http://ufcpp.net/study/csharp/oo_exception.html

例外(exception)とは、本来ならばプログラム中で起こってはいけないことが起こってしまうことをいいます。
堅牢なプログラムを作成するためには、例外が起こったときでもプログラムが異常な動作をしないよう、
しっかりと例外処理(exception handling)を行う必要があります。

0629デフォルトの名無しさん2007/12/11(火) 16:44:57
ここが隔離スレになってるから有効に使ってくれ。
C♯, C#相談室 Part34
http://pc11.2ch.net/test/read.cgi/tech/1162467959/l50
0630デフォルトの名無しさん2007/12/11(火) 17:04:09
今時戻り値だの構造体だのでエラー情報ずらずら返されたら
どうしようかと思うよ。
0631デフォルトの名無しさん2007/12/11(火) 17:18:14
じゃあメソッドの頭にTryとつけるだけでもいい
エラーが不可避ならばそれを分かりやすく示すべきだ
tryで囲んでないのが一目でバグと分かるように
0632デフォルトの名無しさん2007/12/11(火) 17:25:00
しかし例外の型は何が飛んでくるかわからないからな
バージョンアップで新しい例外が投げられるようになってキャッチできない可能性もあるし
outなり構造体なりで返ってくれば不可避な例外の基本クラスは分かるから
それを投げれば、バグによる例外を含まずにキャッチできる
とにかくcatch{}やcatch(Exception)だけはやってはいけないんだ
0633デフォルトの名無しさん2007/12/11(火) 17:47:00
catch(Exception ex) { ログ保存(ex); throw ex; } は時々やる。
0634デフォルトの名無しさん2007/12/11(火) 17:48:33
だからね、例外が深刻な状況につながることはあまりなくて、
むしろキャッチした上でのバグが深刻な状況につながるんだといってる
0635デフォルトの名無しさん2007/12/11(火) 17:53:23
深刻って何だろう
0636デフォルトの名無しさん2007/12/11(火) 17:58:59
>>633
それやるとデバッガが例外が起きた瞬間でブレイクしてくれないだろ
例外のメッセージの何十倍もその瞬間のブレイクの方が有用だし
0637デフォルトの名無しさん2007/12/11(火) 18:20:55
ケースバイケース
0638デフォルトの名無しさん2007/12/11(火) 18:43:20
>>634
何が言いたいのかよく分からん
それでどうするべきだと言ってるんだ?
0639デフォルトの名無しさん2007/12/11(火) 18:43:43
デバッガの使い方をまず身につけろよ。
最終的にはまず大抵どっかでキャッチするんだから
キャッチしたらアウトなんてのは使い物なならんだろ。

ただ、あえてやってるんじゃないなら
throw e;
はやめとけ。
throw;
でいい。
0640デフォルトの名無しさん2007/12/11(火) 18:45:34
とにかくキャッチすべき、キャッチしないバグは深刻
っていってるみたいだから、
キャッチするバグの方が大抵深刻だよっていってるだけ。
0641デフォルトの名無しさん2007/12/11(火) 18:47:10
ああちょっとちがうか…
キャッチしないバグは、深刻度は比較的低いってこと。
0642デフォルトの名無しさん2007/12/11(火) 18:48:48
何が起きてるか分からない、例外が飛んでこないバグに比べたらね。
0643デフォルトの名無しさん2007/12/11(火) 18:51:03
誰か例外関係のガイドライン書いてちょうだい
0644デフォルトの名無しさん2007/12/11(火) 18:55:18
>>639
大抵どっかでキャッチする時点でデバッガの使い方を間違えている
少なくとも開発中はバグによる例外はキャッチすべきではない
ブレイクすべきだ
キャッチするのはバグを握りつぶす効果しかない

バグでない不可避な例外の場合はキャッチして処理しなきゃならない
その場合でも不可避な例外の基本クラスを設けるとか、必要な処理はやらなきゃならない
漫然と例外を使うとひどいことになる
特にどっかでキャッチされるなんてのは最低の使い方だ

>>640
全然違う
俺はキャッチすべきでないといってる
確率的に低い不可避の例外をキャッチしないことは深刻なバグに繋がる
なら最初からboolを返すなりメソッドシグネチャに書いておくべきだ
0645デフォルトの名無しさん2007/12/11(火) 19:09:38
正直、言ってる事よくわかりませんけど。。。
0646デフォルトの名無しさん2007/12/11(火) 19:13:08
>>596をまず読んでくれ
いろいろ誤解されてるような気がするが
俺はこれを繰り返し言っているだけだ
0647デフォルトの名無しさん2007/12/11(火) 19:21:36
いややっぱりよう分からんぞw

前半は当たり前杉。
後半は何言ってるか意味不明。
特に、
>どちらにもいえることだが、例外はキャッチするものでは無い
なんだよこれw
0648デフォルトの名無しさん2007/12/11(火) 19:27:49
お前の例外をキャッチして腹ン中がパンパンだぜ
0649デフォルトの名無しさん2007/12/11(火) 19:32:46
>>647
どれが分からないんだ?

正しく呼び出したとしても例外を投げることが不可避であり、必ず対応しなければ破綻する
メソッドが、通常のメソッドと見た目が何も変わらなければ、キャッチし忘れることがありうる
一つ一つのメソッドについて例外が不可避かどうか調べるのは時間の無駄なので、
そういうメソッドは見た瞬間にそれと分かるようにするべきだといっている

具体的にはTry〜にしてboolを返すようにするとか、単に命名規則に含めるとかだ
0650デフォルトの名無しさん2007/12/11(火) 19:37:44
不可避の例外ってのがようわからん。
挙げられてるケースだとただ単にエラーチェックしてないだけだが。
0651デフォルトの名無しさん2007/12/11(火) 19:41:48
不可避の例外については>>622に書いたが何かおかしいか?
0652デフォルトの名無しさん2007/12/11(火) 19:44:52
>>649
あのーお言葉ですけどねえ、
外的な、つまり呼び出し側以外の理由で例外が起こるような処理っていうのはむしろ
文字通り「例外的」なわけで、そういうのは(むろん上手に抽象化ができてさえすれば、
という前提条件つきではあるが・・・)むしろメソッドの意味を見れば
例外が起こりうるかどうかは一目瞭然なんじゃないの?

例えばディスクにアクセスするメソッドならディスクが物理的にお陀仏になったれ例外投げるしかないことは
猿でも分かるでしょw
06536522007/12/11(火) 19:47:00
あ、でもドトネトのファイルストリームはそういう実装になってないんだっけかw
あれって書き込み中のUSBドライブ抜いても何の例外も投げないのなw
0654デフォルトの名無しさん2007/12/11(火) 19:58:48
>>652
そうはいってもプログラムは適当に書かれることがあり
try,catchは往々にして忘れられる

さらにいえば、どのメソッドがどんな例外を投げるかきちんと把握しているのか
どの例外が不可避で、どの例外がバグによるものか
キャッチしていい物としてはならないものはどう見分けるのか
不可避の例外の基本クラスを作り、outでその例外クラスを返すようにすれば
帰ってくる不可避の例外がそのクラスを継承したものであることが保障される

バグであればそれ以外のクラスから派生した例外が飛んでくることになる
バグの例外はキャッチすべきでないから、try,catchで囲む必要すらなくなる
必要とあらばoutで返ってきた例外を飛ばし、基本クラスでcatchすることで
将来返って来る例外が増えたときにも対応できる
06553352007/12/11(火) 20:03:11
try
{
Aaa(p1);
}
catch (HogeException e)
{
Console.WriteLine("{0} HogeException caught.", e);
}
catch
{
throw;
}

こんなふうに投げちゃいかんの?
メソッドやクラス内で処理する分はcatchしてそれ以外は上に投げる
投げ先が制御できないなら共通エラー処理クラス使えばいいと思うんだけど

初めて1週間なんでハズしてたら教えて欲しいです
0656デフォルトの名無しさん2007/12/11(火) 20:03:54
そろそろ隔離スレへいってくんない
0657デフォルトの名無しさん2007/12/11(火) 20:06:54
>>655
デバッガはthrow;のところで止まって例外が投げられた瞬間の情報が失われるけど
それでいいなら
それを避けたければデバッグ→例外を選んで投げた瞬間にブレイクしてほしい
例外にチェックをつけてもいい
0658デフォルトの名無しさん2007/12/11(火) 20:13:01
つまりSystem.IO下の関数には全てTryを付けた方が良いということだな。
0659デフォルトの名無しさん2007/12/11(火) 20:14:46
そうだ全部にHRESULTを返すようにしようぜ
0660デフォルトの名無しさん2007/12/11(火) 20:15:15
もう全部Debug.Failで
0661デフォルトの名無しさん2007/12/11(火) 20:18:49
S_OK
0662デフォルトの名無しさん2007/12/11(火) 20:38:38
>>658
確かにHDが一杯とかになったら何か処理はしなきゃならないから
ほとんどにTryがいるかもな
Tryってついてないから忘れがちだが
0663デフォルトの名無しさん2007/12/11(火) 21:00:28
ま〜趣味の人は何でもいいんでないの
俺なんかの扱ってる仕事は止まるとニュースになるようなのばっかりだが
0664デフォルトの名無しさん2007/12/11(火) 21:06:27
なんというマイクロソフト信者
そんなミッションクリティカルな用途にC#使うなんて、
普通の人間には命がいくつあっても出来ない。
0665デフォルトの名無しさん2007/12/11(火) 21:09:45
>>663
某首相の中の人とかか?
0666デフォルトの名無しさん2007/12/11(火) 21:17:06
>>656
諦めな
もし隔離スレを埋めたいのであればそっちにネタ投下すればいい
0667デフォルトの名無しさん2007/12/11(火) 21:27:39
>>663
どうせCOBOLでやるような糞仕事をリプレースしただけだろ
0668デフォルトの名無しさん2007/12/11(火) 21:32:32
規模の大きいところほど、技術的には保守的だったりだすからね。
0669デフォルトの名無しさん2007/12/11(火) 23:01:19
捨て台詞を吐いて背を向けた犬をいつまでもいたぶるな。
0670デフォルトの名無しさん2007/12/11(火) 23:05:00
C#で学んだことって他の.NET言語でも役に立ちますか?
0671デフォルトの名無しさん2007/12/11(火) 23:06:51
はい
0672デフォルトの名無しさん2007/12/11(火) 23:07:02
たつ
0673デフォルトの名無しさん2007/12/11(火) 23:08:38
わかりました。
0674デフォルトの名無しさん2007/12/11(火) 23:17:11
C#できればVB.NETは一日触れば使える
0675デフォルトの名無しさん2007/12/12(水) 00:00:35
必要だから例外なんて物ができたんじゃないのか?
それを使うなって┐(´д`)┌
0676デフォルトの名無しさん2007/12/12(水) 00:10:23
>>675
バグを通知するためにはものすごく必要だ
エラーで分岐するにはそのままでは不適切な仕組みだ
適切に使わないといけない
0677デフォルトの名無しさん2007/12/12(水) 00:18:47
リストビューのColumnWidthChangingイベントが拾えません!!
0678デフォルトの名無しさん2007/12/12(水) 00:27:11
VC#2008betaでアプリを作るとき、WindowsフォームアプリとWPFアプリが選択できるけど、
今から始めるなら当然WPFアプリが良いんだよね?
0679デフォルトの名無しさん2007/12/12(水) 00:36:02
ご自由に
0680デフォルトの名無しさん2007/12/12(水) 00:36:29
例外ってのはコンピュータの内部ではどんな状態になってるの?
0681デフォルトの名無しさん2007/12/12(水) 00:49:00
他の場所でチェック済みのオブジェクトを渡したりする以外では必ずtry-catch使ってる。
例外で処理分岐する場合もあれば、戻り値でも処理分岐する場合あるし臨機応変
0682デフォルトの名無しさん2007/12/12(水) 00:51:15
>>680
例外ハンドラが見つかるまで積まれたスタックフレームをすっとばす。
0683デフォルトの名無しさん2007/12/12(水) 00:53:32
皆細かくやってんだね。
俺なんか自分で作ったクラスは
try catchでcatchしたらthrowだよ。
でaspx.csで例外を受け取ったらRedirectでエラーページに遷移させる。
社内システムなんでそんなもんだぜ。
0684デフォルトの名無しさん2007/12/12(水) 00:54:46
>>681
それは臨機応変じゃなくて規約がなくその都度注意力をもって判断せねばならず
バグかどうかがドキュメントを参照しないと分からないということだろう
最悪の方法だ
0685デフォルトの名無しさん2007/12/12(水) 00:58:45
開発完了したシステムなら例外を一番上で全キャッチして
必要なエラーメッセージを出すようにすればいいさ
しかし開発中はバグの例外はキャッチしちゃいかんのだ
0686デフォルトの名無しさん2007/12/12(水) 01:03:09
>>674
VB.NET使う必要も技術的利益も無いんだがな・・・
なんでVB.NET選ぶかね・・・
0687デフォルトの名無しさん2007/12/12(水) 01:08:47
デバッガ慣れすると必要なログすら入れない奴が出てくる。
エラーメッセージ無視して「デバッガで追おうとしたけど再現しません」とかいう奴すら・・・
0688デフォルトの名無しさん2007/12/12(水) 01:12:31
なんせ例外が起こった瞬間のブレイクほど便利なものはないからな
エラーメッセージなんて例外で適切にブレイクできてりゃ最小限でいいんだ
0689デフォルトの名無しさん2007/12/12(水) 01:17:09
開発中にcatch無しってのは当たり前の話で、
エラーかどうかは殆どの場合ドキュメント見るんじゃないの?
0690デフォルトの名無しさん2007/12/12(水) 01:19:15
出来ることは違いないので、VB使うってのはその人の選択肢だね。文法の慣れとか。
0691デフォルトの名無しさん2007/12/12(水) 01:22:52
呼び出し側のミスでない例外ならばこの基本クラスを継承した例外を投げます
と決めておけば、それをキャッチしておけばいい
例外がキャッチできずすり抜けていったら呼び出し側のミスだ
向こう側が間違ってるのかもしれないがその時はドキュメントをよく読んで質問するしかない
0692デフォルトの名無しさん2007/12/12(水) 01:26:13
割り込みますがループ中の処理などの場合はどうなるのですか
例外だと中断されるのですよね?こんな場合は戻り血とかで判断するのですか
0693デフォルトの名無しさん2007/12/12(水) 01:36:59
>>655
そういえば正しい方法を言ってなかった気がする

catch
{
throw;
}

これはいらないからなくすべき
例外が投げられた瞬間の情報が失われるから
0694デフォルトの名無しさん2007/12/12(水) 01:41:37
例外って「これ以上処理を続けられるとマズイ」っていうときに投げるもんじゃないの?
0695デフォルトの名無しさん2007/12/12(水) 01:42:53
>>694
そりゃそうだ
0696デフォルトの名無しさん2007/12/12(水) 01:42:55
みんなこれくらいは読んでる?
http://msdn2.microsoft.com/ja-jp/library/ms229014.aspx
0697デフォルトの名無しさん2007/12/12(水) 01:45:45
俺も読んでくる
0698デフォルトの名無しさん2007/12/12(水) 01:49:34
もうオイラはスローして寝ます
0699デフォルトの名無しさん2007/12/12(水) 01:51:23
throw spoon;
0700デフォルトの名無しさん2007/12/12(水) 01:59:48
投げたらアカン
0701デフォルトの名無しさん2007/12/12(水) 02:02:26
>他の場所でチェック済みのオブジェクトを渡したりする以外では必ずtry-catch使ってる。
必ずってどのレベルで必ずなの?
メソッド呼び出し全部?
catchしてその場でどうにかできるのなんて一部な気がするんだが。
まあラップして投げなおしはあるかもしれんが。
そうでなくみんな戻り値とかでエラー返して上位に通知してるなら
それこそ単純に例外ですむ話し出しってか上位への通知を細かに書かなくてすむ
ってのが例外のメリットのひとつだと思うんだが、
多分そういうことではないんだよね?
0702デフォルトの名無しさん2007/12/12(水) 02:04:13
業務アプリなんかだと、業務実装者にはほとんど例外処理なんて書かせないしな。
その場で処理してしまうような例外は別だけど。
0703デフォルトの名無しさん2007/12/12(水) 02:09:29
>非常に一般的なエラーの場合には null を返します。
>たとえば、ファイルが見つからない場合には File.Open は null を返しますが、
>ファイルがロックされている場合には例外を返します。
http://msdn2.microsoft.com/ja-jp/library/seyhszts.aspx

このガイドラインはうんこそのものだな
怪しそうな全ての場合においてnullを返すかどうかを一々調べろといってるのか?
0704デフォルトの名無しさん2007/12/12(水) 03:59:25
業務アプリやパッケージで実行時エラーが出るのはやばいよな?
なのでcatchしてログ&メッセージ出して問い合わせ促してるけど
catchしないって人はリリース後に実行時エラー発生したらどうやって対応すんの?
0705デフォルトの名無しさん2007/12/12(水) 04:04:49
データの喪失も破壊も甘んじて受け入れる
0706デフォルトの名無しさん2007/12/12(水) 04:10:42
アプリケーションの一番高いレベル、つまりMainに近いあたりでキャッチして
ログやメッセージ出してアプリを中断が常套。MSのガイドラインでもこうなってるな。
0707デフォルトの名無しさん2007/12/12(水) 04:41:05
.NETのクラスライブラリの出す例外の扱いの話と、
その上に構築するアプリケーションにおける例外のデザインの話は
分けて考えないと論点がはっきりしない気がするな。
0708デフォルトの名無しさん2007/12/12(水) 05:44:24
ProfessionalColors.ImageMarginRevealedGradientBegin
と
ProfessionalColors.ImageMarginGradientBegin
の違いって何ですか?

ImageMarginRevealedGradientBeginは、どういう場合に使われますか?
0709デフォルトの名無しさん2007/12/12(水) 08:14:59
すり抜けも何も、ハンドルしてない〜Exceptionが発生したら.、NET側でダイアログ出して勝手に止めるだろ。
0710デフォルトの名無しさん2007/12/12(水) 08:27:21
>>693
そういうのはヒトに向かって書いている場合もあるんでしょ。
「俺様はちゃんとここで例外が起こりうることを認識してコードかいてるよ」
って明示するために。

必ずしも処理上必要だから書いてるわけじゃないんだよ。
あ、いつも常にそうだとは言ってないから勘違いしないでね。
0711デフォルトの名無しさん2007/12/12(水) 09:01:46
>>710
キャッチって多段で追跡できちゃったりするの?
できないならダメだろ。
0712デフォルトの名無しさん2007/12/12(水) 12:20:04
>>711
できるじゃん
0713デフォルトの名無しさん2007/12/12(水) 12:23:19
独自の例外定義はMainでキャッチ、それをスローする例外は
イベントに追加してキャッチさせるのが常識。
0714デフォルトの名無しさん2007/12/12(水) 12:32:17
ここは「よくわからない日本語のサンプル」を投稿するスレじゃないよ
0715デフォルトの名無しさん2007/12/12(水) 13:45:33
開発中はキャッチするなといっていた者だが
開発完了したら、一番上でキャッチしてメッセージを出して終了するようにする
まあ使われないのが理想だが
0716デフォルトの名無しさん2007/12/12(水) 14:43:31
>>710
問題は、デバッガがthrow;でブレークして、
例外が投げられた瞬間のブレークが失われることだ
例外が投げられた瞬間のブレークがあれば何が間違っていたか大抵全部分かる
それを捨てる理由になると思うか?
0717デフォルトの名無しさん2007/12/12(水) 15:29:09
何行目で初回例外が発生したか調べてそこに赤丸付ければいいだろ。
0718デフォルトの名無しさん2007/12/12(水) 15:34:07
>>717
その作業は無駄だし
例外が起きなくてもその行で毎回止まるぞ
0719デフォルトの名無しさん2007/12/12(水) 15:38:47
BitmapImage image1 = new BitmapImage();
BitmapImage image2 = new BitmapImage();
...
...
...
.

って一つずつ書くのが面倒なんですが、まとめて書ける方法ってありますか?
0720デフォルトの名無しさん2007/12/12(水) 15:44:55
>>719
配列にしてループ
0721デフォルトの名無しさん2007/12/12(水) 15:57:55
結局したほうがいいの?しないほうがいいの?
0722デフォルトの名無しさん2007/12/12(水) 16:02:12
>>721
自分で考えられないやつは2chなんか使うな
0723デフォルトの名無しさん2007/12/12(水) 16:07:15
>>722
>>1
0724デフォルトの名無しさん2007/12/12(水) 16:49:02
catch{}のなかで正常に戻せた場合にそのまま進むにはどうすればいいの?
0725デフォルトの名無しさん2007/12/12(水) 16:52:14
そのまま進むとは?
0726デフォルトの名無しさん2007/12/12(水) 16:53:46
通常進行で
0727デフォルトの名無しさん2007/12/12(水) 16:57:08
そのまま進め
0728デフォルトの名無しさん2007/12/12(水) 16:57:48
例外を投げたメソッドの実行を続けるということ?
続行できないから例外投げてるのに戻してどうすんの
だいたいなんで正常に戻せたってわかるの? クラスやメソッドの実装によるだろそんなの
0729デフォルトの名無しさん2007/12/12(水) 17:10:27
catchの中で正常に戻せる意味が分からない
それはもともと例外を投げるべきではなかったんじゃないか
0730デフォルトの名無しさん2007/12/12(水) 17:11:56
っ ソフトを再起動してもらう
0731デフォルトの名無しさん2007/12/12(水) 17:13:36
復活の呪文
0732デフォルトの名無しさん2007/12/12(水) 17:17:03
ぴぴる ぴる ぴ(ry
0733デフォルトの名無しさん2007/12/12(水) 17:20:30
try
{
 ケーブルが抜けていたとか
 ディスクの入れ忘れとか
 電源入れ忘れとか
}
catch
{
 えらー表示した
 対処された
}

そんな感じの場合なんだけど
0734デフォルトの名無しさん2007/12/12(水) 17:23:52
じゃあそのまま進めばいいだろ
とりあえずキャッチしておけば実行停止することはないんだからあとは君の判断で
0735デフォルトの名無しさん2007/12/12(水) 17:28:04
while (true) {
 try {
  例外の起きる処理;
  break; // 完了
 } catch ( .. ) {
  if ( ! Retry ) break;
 }
}
0736デフォルトの名無しさん2007/12/12(水) 17:31:45
例外は有害だから使うべきではない。
0737デフォルトの名無しさん2007/12/12(水) 17:32:53
while(true)
{
 try
 {
 やってみる();
  break;
 }
 catch(デバイス見つからないException)
 {
  if(ShowDialog("デバイス見つからないよ") == Result.Cancel))
   throw new CancelException("実行はキャンセルされました");
 }
 catch(ディスク入ってないException)
 {
  if(ShowDialog("ディスク入ってないよ") == Result.Candel))
   throw new CancelException("実行はキャンセルされました");
 }
}
0738デフォルトの名無しさん2007/12/12(水) 17:34:10
try
{
 ケーブルが抜けていたとか
 ディスクの入れ忘れとか
 電源入れ忘れとか
}
catch
{
 ケーブルを挿すとか
 ディスクを入れるとか
 電源を入れるとか
}
0739デフォルトの名無しさん2007/12/12(水) 17:46:25
リトライとかはcatch内じゃなくてもっと上の仕事じゃないか?
0740デフォルトの名無しさん2007/12/12(水) 17:58:22
その場で出来るものはその場でやらないとわけわからなくなると思うが
0741デフォルトの名無しさん2007/12/12(水) 18:07:43
>>740
リトライが必要な処理群としてまとめておいて呼び出し側で再呼び出しした方がイクナイ?
0742デフォルトの名無しさん2007/12/12(水) 18:08:33
>>741
ソースコードで頼む
0743デフォルトの名無しさん2007/12/12(水) 18:10:19
つまりTryGetValueか
0744デフォルトの名無しさん2007/12/12(水) 18:11:34
GetLastError()
有り得ない値返し
エラーコード返し
BOOL返し
HRESULT返し
C++の例外
.netの例外
構造化例外
が入り乱れるVCよりましじゃないか。
0745デフォルトの名無しさん2007/12/12(水) 18:12:00
再利用してソースが分かりやすくなるならいいんだけどな
分岐では分かりにくくなることが往々にしてある
0746デフォルトの名無しさん2007/12/12(水) 18:23:01
t6rs4:s.td@84s4:s.tfvsc;c@;d@'uetu
0747デフォルトの名無しさん2007/12/12(水) 18:40:44
VBのソースで悪いけど。

dim reader as IDbReader = command.ExecReader()
while reader.Read()
  aa = DirectCast(reader("aa"), string)
  bb = DirectCast(reader("bb"), Integer)
  :
  :
End While

DBから読み込むコードで、ISAMライクなウンコなテーブル設計で、whileの中のコードが数十行続いてるとします。
項目はNOT NULL制約が設定されてないから、reader("・・") で DBNull が帰って来ることもあります。

こういうときは、一行ずつifでDBNullか判定しますか?
それとも、try でくくって、一括してcatchしますか?
0748デフォルトの名無しさん2007/12/12(水) 18:57:14
まず
public static T Get<T>(this IDbReader reader, string name)
{
 object item = reader(name);
 if(item == DBNull)
  throw new DBNullException(name + "がDBNullです");
 return (T)item;
}

こんなんを作って、DBNullExceptionだけキャッチすればいいんじゃねえの
何がしたいのかよくわからんけど
0749デフォルトの名無しさん2007/12/12(水) 19:05:01
>>748
object型をstringやらintegerにキャストするとき、DBNullだったら、例外がでるので、
そういうのはなくても大丈夫です。

if reader("・・") <> DBNull.Value then 
  aa = DirectCast(reader("・・"),・・・)
else
  なんかエラー処理
end if

みたいに一行ずつ判定するか、

try
  aa = DirectCast(reader("・・"),・・・)
  bb = DirectCast(reader("・・"),・・・)
  :
catch ex as キャストの例外
  :
End Try

みたいにまとめてキャッチするかってことです。
0750デフォルトの名無しさん2007/12/12(水) 19:09:11
>>749
InvalidCastExceptionをそのまま捕まえるのはいただけない
catchするのはバグによる例外でないことが明らかなものにするべきだ
エラー処理に何をするのか、DBNullが帰ってくる頻度がどのくらいで
例外がパフォーマンスに影響するのかによって変わってくる
0751デフォルトの名無しさん2007/12/12(水) 19:14:01
>>750
たしかに、NULLが入ってるデータが多いと使い物にならないくらい遅くなりますね。

それでは、基本的にNULLは入ってないデータだけど、NOT NULL制約がないので「NULLもありえる」という
程度で。
例外は>>748みたいなラッパーで、独自のものを投げるという状況で。

ifでチェックしたほうがいいか、まとめて例外で処理したほうがいいか。
0752デフォルトの名無しさん2007/12/12(水) 19:15:17
お前ら例外が好きだな
0753デフォルトの名無しさん2007/12/12(水) 19:35:51
public static bool SetMember(this IDbReader reader, string name, Action<object> setMember)
{
 object item = reader(name);
 if(item == DBNull.Value)
  return false;
  setMember(item);
return true;
}

Func<bool>[] setMembers = new Func<bool>[]{
 () => reader.SetMember("aa", obj => aa = (string)obj),
 () => reader.SetMember("bb", obj => bb = (int)obj),
  ...
};

foreach(var setMember in setMembers)
{
 if(setMember() == false){ エラー処理 }
}

例外がパフォーマンスを脅かすならこうかな
0754デフォルトの名無しさん2007/12/12(水) 19:42:12
横から失礼
例外投げるとパフォーマンスを脅かすってのはなんで?
例外クラスのインスタンスを生成するから?
それとも別のもっと大きな要因があるのかな
0755デフォルトの名無しさん2007/12/12(水) 19:45:32
URIを返す関数で、失敗した場合の理由を
return new Uri("error://imifumei/");
みたいな感じで返すのはありですか?
0756デフォルトの名無しさん2007/12/12(水) 19:46:45
間違った
public static bool SetMember<T>(this IDbReader reader, string name, ref T member)
{
 object item = reader(name);
 if(item == DBNull.Value)
  return false;
 member = (T)item;
 return true;
}

Func<bool>[] setMembers = new Func<bool>[]{
 () => reader.SetMember("aa", ref aa),
 () => reader.SetMember("bb", ref bb),
  ...
};

foreach(var setMember in setMembers)
{
 if(setMember() == false){ エラー処理 }
}

こうでした
0757デフォルトの名無しさん2007/12/12(水) 19:59:14
見たか
これがC# 3.0の力だ
早く乗り換えたまえ
0758デフォルトの名無しさん2007/12/12(水) 20:07:01
>>755
なしです
例外またはTry〜を使いなさい
0759デフォルトの名無しさん2007/12/12(水) 20:09:41
>>758
nullを返すのは?
0760デフォルトの名無しさん2007/12/12(水) 20:10:33
>>759
個人的には、名前の末尾にOrNullをつけないとなしと考えている
つければあり
0761デフォルトの名無しさん2007/12/12(水) 20:14:19
やっぱなしですか。
0762デフォルトの名無しさん2007/12/12(水) 20:16:43
100%なしです
0763デフォルトの名無しさん2007/12/12(水) 20:19:56
例外使わないって人はリリース後のバグどうするんだ?
それにテスト後にmainにtry〜catch追加したらテストやり直しだろ
異常系のテストエビデンスに再現性無くなるじゃん
個人作成やパッケージ等すべて自分達で責任取れるものならいいけどさ
0764デフォルトの名無しさん2007/12/12(水) 20:21:34
OrNullってどういうこと。
見たことも聞いたこともない命名規則だな。
0765デフォルトの名無しさん2007/12/12(水) 20:22:07
GetValueOrNull
どっちだよw
0766デフォルトの名無しさん2007/12/12(水) 20:25:02
nullable
0767デフォルトの名無しさん2007/12/12(水) 20:26:51
ヌーブラ
0768デフォルトの名無しさん2007/12/12(水) 20:27:05
>>763
バグじゃなくて仕様の中に処理するって書いてある例外は開発中ももちろんキャッチする
問題はそれ以外だ
それ以外が飛んできたらバグだ
これは開発完了したときには飛んでくることがないのが理想だけど
そうもいってられないのでcatch(Exception)で捕まえる文を開発完了後に付け加える
で、謝罪文を表示して終了すればいい
これをテストする必要は別にない
0769デフォルトの名無しさん2007/12/12(水) 20:27:43
うわー首が飛ぶよ
0770デフォルトの名無しさん2007/12/12(水) 20:28:52
LINQでは
First
FirstOrDefault

といった感じでデフォルト値が返りうる場合はOrDefaultをつける
OrNullって書いてなきゃ絶対にnulのチェックを忘れるから俺はOrNullと書くべきだと考えている
0771デフォルトの名無しさん2007/12/12(水) 20:30:39
>>768
多分噛み合ってないんだけど
納品先のあるプログラムでテスト後にソース改変は一切NGだろ?

バイナリのタイムスタンプとCRCが一致しないテスト結果でもOKってなら
何も言えないな
0772デフォルトの名無しさん2007/12/12(水) 20:35:00
>>771
じゃあ付け加えなきゃいい
万一の場合に備えて例外のメッセージを丁寧語にすることを心がけなきゃならんが
ちゃんと出来てるならほんとはcatch(Exception)なんていらん
0773デフォルトの名無しさん2007/12/12(水) 20:41:28







                     エラーかもね。
                     たぶんお前らのミスな。

                          [OK]



0774デフォルトの名無しさん2007/12/12(水) 20:42:34
>>772
>ちゃんと出来てるならほんとはcatch(Exception)なんていらん
これはマじゃない予感・・・
0775デフォルトの名無しさん2007/12/12(水) 20:47:31
>>772
また噛み合ってないが、バグ0にはできない。現実的に。
だから「ちゃんとできている」って言うのは実現困難

当然メソッド単位にtry〜catch入れた上での単体テストを通してるし
mainにも付け加えないんじゃ無くて最初から入れてる

たとえプログラムが原因じゃなくてもトラップできる例外はすべて
プログラムの管理しているエラー処理+ログで処理する
それを元に障害対応しないと対応できない
リリース後に 「プログラムのせいかどうかわからんがエラー終了する」
なんて状況になったら誰が対応するの?
自分達のプログラムが原因じゃない証明をする際にも証拠は必要だし
0776デフォルトの名無しさん2007/12/12(水) 20:49:28
チャンネル争いしてる時にyozuca出てきたけどあんなに可愛いのか
今度イベントあったら絶対見に行くわ
0777デフォルトの名無しさん2007/12/12(水) 20:54:17
>>775
出来ました、テストしてください、という段階でmainにcatch(Exception)を付け加える
それじゃダメなのか?
0778デフォルトの名無しさん2007/12/12(水) 21:16:30
今組んでるの納品したらこれ買うつもりだが。まあ趣味なら何でもいいんじゃないの。
ttp://www.gtnet.co.jp/home/top/usedcar_syosai.asp?NETCODE=7&SHATEN=0510&ZAIKO=1000340500
0779デフォルトの名無しさん2007/12/12(水) 21:18:56
走行距離100kmか。
普通試乗で自分向きじゃないとか気づくだろ。
0780デフォルトの名無しさん2007/12/12(水) 21:31:08
前から見たらZじゃんw
0781デフォルトの名無しさん2007/12/12(水) 22:26:28
想定される例外は全て処理せよ的な規約を掲げた開発が
うまく行ってるのを見たことがない。
現実の開発要員は思いのほかレベルが低いもんだよ。
保守や改造でもどんどん壊れて行くしね。
十分な費用がかけられる開発ならいいんだけどね〜
0782デフォルトの名無しさん2007/12/12(水) 22:27:31
ちゃんとキャッチする例外としない例外を分けなきゃダメだっての
全て処理せよってのはどういうこっちゃ
0783デフォルトの名無しさん2007/12/12(水) 22:37:07
それをどうやってはっきり定義するの?
0784デフォルトの名無しさん2007/12/12(水) 22:41:21
正しく呼び出さなかったときの例外→キャッチするべきではない
正しく呼び出したとしても起こる例外→キャッチしなければならない
0785デフォルトの名無しさん2007/12/12(水) 22:53:59
↓の文字列が正しいHTTPの応答かチェックして
http://192.168.0.1:2869/gatedesc.xml
の部分だけ抜き出すにはどうすればいいですか?

HTTP/1.1 200 OK\r\n
CACHE-CONTROL: max-age=1800\r\n
DATE: Wed, 12 Dec 2007 13:51:16 GMT\r\n
EXT:\r\n
LOCATION: http://192.168.0.1:2869/gatedesc.xml\r\n
SERVER: Linux/2.4.18_mvl30-ixdp425 UPnP/1.0 Intel UPnP SDK/1.0\r\n
ST: urn:schemas-upnp-org:service:WANIPConnection:1\r\n
USN: uuid:UUID-NTTEW-DUMMY::urn:schemas-upnp-org:service:WANIPConnection:1\r\n
\r\n
0786デフォルトの名無しさん2007/12/12(水) 23:00:23
Regex.Match(hoge, @"http://.*\.xml").ToString();
0787デフォルトの名無しさん2007/12/12(水) 23:01:15
例えば指定されたファイルを読む処理があるとき、
有るはずのファイルが読めなければ
キャッチする必要があるのだろうが、
渡された引数がそもそも間違ってた場合は
キャッチしちゃダメだってことだなw
0788デフォルトの名無しさん2007/12/12(水) 23:05:54
ArgumentExceptionとかInvalidOperationExceptionとか
キャスト失敗とか配列の外側を読んだとかぬるぽとか
そういうのは全部キャッチしちゃダメ
0789デフォルトの名無しさん2007/12/12(水) 23:06:43
そうなるとその判断は引数が決まる元になる位置まで
さかのぼらざるを得ないが、そんなのを全体で完全に
矛盾なく出来るとは思えない。
一体誰がそれを決めるの?

せれともそんなのは関係なく、
例えばArgumentExeption系以外はキャッチするとかになるの?
0790デフォルトの名無しさん2007/12/12(水) 23:09:09
引数が悪いのか環境的な本当の例外かなんて
結局分からんてことだろ?
0791デフォルトの名無しさん2007/12/12(水) 23:09:35
メソッドの正しい呼び出し方はメソッド作成者が決める
違反してたら例外が投げられる
それはキャッチしちゃいけない

正しい呼び出しの時に失敗したならばそれとは違う例外が投げられる
それはキャッチしなきゃならん
0792デフォルトの名無しさん2007/12/12(水) 23:11:02
意図的にnull渡したのか、
γ線でメモリが化けたのか分からない。
0793デフォルトの名無しさん2007/12/12(水) 23:12:14
null渡していいとこは引数名にOrNullってつけてくれ
じゃないとわからん
0794デフォルトの名無しさん2007/12/12(水) 23:16:10
キャッチしてどう処理するのかもよく分からない。
結局回復できない場合も多いから、戻り値とかで返さざるを得ないの?
UI層レベルでは想定されるものはキャッチするだろうけど
もっと下層ではいかんともしがたい気がする。
0795デフォルトの名無しさん2007/12/12(水) 23:17:00
コントロールのプロパティってフォームデザイナで編集したり
コード中で直接設定したりする方法があるのですがどういう風に使い分ければいいんですか?
0796デフォルトの名無しさん2007/12/12(水) 23:17:55
それがバグじゃなくて想定内のものなら
キャッチしてエラーメッセージを出して入力待ちに戻れ
0797デフォルトの名無しさん2007/12/12(水) 23:18:48
OrNullつけても結局仕様確認はいるんだから
ドキュメントコメントでいい気もする。
あ、レビューはやりにくいかな…
0798デフォルトの名無しさん2007/12/12(水) 23:20:12
>>796んなこと出来るのはUI層ぐらいだろう。
もっと下層ではどうすんの?
0799デフォルトの名無しさん2007/12/12(水) 23:21:12
>>797
null入れていいかどうか、nullが返るかどうかなんて一回見たってどうせ忘れる
OrNullって書いてあればソース見ただけでnullチェックして無いのが一発でバグって分かる
0800デフォルトの名無しさん2007/12/12(水) 23:21:53
下層じゃ呼ぶ側の問題なのか本当の例外事象なのかなんて分からないんだぜ?
0801デフォルトの名無しさん2007/12/12(水) 23:22:23
>>795

特に理由がなければデザイナを使う
動的(例:ボタンを押したら〜する)にコントロールを作ったり、プロパティを変更したいときはコードで
0802デフォルトの名無しさん2007/12/12(水) 23:23:01
>>798
自分のメソッドの仕様に書いてある通りの例外に編み変えて再スローする
0803デフォルトの名無しさん2007/12/12(水) 23:23:19
あえ?呼ばれる側でのnullチェックの話か?
0804デフォルトの名無しさん2007/12/12(水) 23:25:25
>>803
呼ばれる側もそうだし呼ぶ側もそうだ
OrNullって書くようにしてからnullチェックし忘れは消えた
0805デフォルトの名無しさん2007/12/12(水) 23:25:37
>>802まあそうなるんだけど
言いたかったのはそんだけちゃんとやっても呼び出し側のバグに対しては効果ないよねってこと。
0806デフォルトの名無しさん2007/12/12(水) 23:27:13
nullチェックし忘れって
nullチェックはどっちの場合でも要るんじゃ…
0807デフォルトの名無しさん2007/12/12(水) 23:28:42
>>801
なるほど、初期設定はデザイナでして実行中の変更はコードでするみたいな感じですね。
0808デフォルトの名無しさん2007/12/12(水) 23:29:00
>>805
呼び出し側の引数かなんかの違反なら
呼び出し側の違反ですよってわかる例外を投げる
正しく呼び出したときの例外ならそれと分かる例外を投げる
さらに下のメソッドから飛んでくる例外がそこをきちんと分けていれば
自分も判断できる
0809デフォルトの名無しさん2007/12/12(水) 23:35:08
結局、呼び出し側の要因であっても何であっても
エラー発生時の対処は必要なんだから全て例外処理が
必要ってことおk?
0810デフォルトの名無しさん2007/12/12(水) 23:35:45
非null引数なら入ってくるときにnullをはじけばいいのだが
nullを受け入れて変数に入れた場合は、その変数を使うたびにnullチェックが要る
変数名にOrNullって書いてあればチェックし忘れはなくなる
0811デフォルトの名無しさん2007/12/12(水) 23:40:29
そもそも引数でnull渡すケースってあるの?
0812デフォルトの名無しさん2007/12/12(水) 23:40:42
>>809
呼び出し側の要因である場合必要な処置というのは
バグを認識させ直させることだ
キャッチしなければそれが最もよく果たせる
例外が投げられた瞬間でデバッガがブレイクし何が間違っていたかが分かる
0813デフォルトの名無しさん2007/12/12(水) 23:41:35
>>812
Trace吐けばいいのでは
0814デフォルトの名無しさん2007/12/12(水) 23:44:59
>>813
マウスポインタおいたら変数の値がぱっとわかり
呼び出し履歴をずずっと辿っていくこともできるようなトレースならな
0815デフォルトの名無しさん2007/12/12(水) 23:47:03
>>786

MatchCollection mc = Regex.Matches(hoge.ToLower(), @"(http/1.[0-1] 200)|(https?://.*\.xml)");
if (mc.Count < 2)
{
 // 異常
}
0816デフォルトの名無しさん2007/12/12(水) 23:47:49
バグ対処には例外処理せず.NETの例外画面で・・・なんて人は趣味グラマーなんだよ
そんな画面出しても済ませられる程度のAPなんだ
0817デフォルトの名無しさん2007/12/12(水) 23:49:06
>>808それが呼ばれる側では判断できないって話じゃないのか?
0818デフォルトの名無しさん2007/12/12(水) 23:49:16
>>816
多分、昨日からずっとそのこと言ってる人いますね
0819デフォルトの名無しさん2007/12/12(水) 23:49:45
お前ら本当に例外が好きだなw
0820デフォルトの名無しさん2007/12/12(水) 23:50:01
判断できるなら分岐処理でいいので例外は不必要でしょう
0821デフォルトの名無しさん2007/12/12(水) 23:50:55
俺は例外で、この話題飽きたお 早く次のネタ投下して欲しいお
0822デフォルトの名無しさん2007/12/12(水) 23:51:48
すみません!リストビューの行の高さは変えられますか?
0823デフォルトの名無しさん2007/12/12(水) 23:52:39
>>817
なんで判断できないんだ?
メソッドの正しい呼び出し方を決めるのは自分だぞ
0824デフォルトの名無しさん2007/12/12(水) 23:52:59
ファイルが見つからない例外が発生したとき、
それがバグなのかそうでないのかなんて判断できない。
0825デフォルトの名無しさん2007/12/13(木) 00:01:08
>>824
呼び出し方自体はあってるなら
FileNotFoundExceptionを投げればいい

パス文字列として正しくないならInvalidPathExceptionかなんかを投げればいい
メソッド作成者が、パス文字列として正しくない文字列を渡すのが違反だと考えるなら
ArgumentExceptionにしてもいい
もちろんパス文字列として正しいかどうかを判断する方法は別途用意しなきゃならないし
それを判断してから呼び出すのは無駄だから普通は
パス文字列として正しくないものも違反とは考えないという設計にするだろうが

呼び出し側はパス文字列として正しくないのが渡されるのがバグである場合はキャッチしなければいいし
ユーザーが入力したのをそのまま渡すとかするならキャッチしなきゃいけない
0826デフォルトの名無しさん2007/12/13(木) 00:02:16
それってふ#[email protected]?
0827デフォルトの名無しさん2007/12/13(木) 00:04:26
ファイルが存在しないときにArgumentExceptionを投げる関数もあるので、
ArgumentExceptionは一概に呼び出し側の要因とは言えない。
エラーチェックしろって話だが。
0828デフォルトの名無しさん2007/12/13(木) 00:06:50
それってぁいるはんどるつくるときにかってにかえってこないか?
0829デフォルトの名無しさん2007/12/13(木) 00:09:07
>>827
どれだよ
正しくない呼び出しと区別できないんだったらそれはただの設計ミスだ
0830デフォルトの名無しさん2007/12/13(木) 00:11:44
FileSystemWatcher.Pathだ、まいったかこの野郎。
まぁファイルの存在確認もしない奴は死んだ方が良いけど。
0831デフォルトの名無しさん2007/12/13(木) 00:14:19
呼び出し側が正しいけどファイルがないときと
呼び出し側が間違っててファイルがないときがあるだろ。
そんなの呼び出される側じゃ分からない。
結局同じ例外なり返さざるを得ない。
0832デフォルトの名無しさん2007/12/13(木) 00:14:44
>>830
そりゃパスを入れるプロパティにパスじゃないものが入ったらArgumentExceptionだろ
そりゃ違反だ
0833デフォルトの名無しさん2007/12/13(木) 00:15:08
>>830
それの後にファイルが消失したら?
0834デフォルトの名無しさん2007/12/13(木) 00:16:22
どっちにしてもtryは全て必要ってことで
0835デフォルトの名無しさん2007/12/13(木) 00:16:54
Tryは有害
0836デフォルトの名無しさん2007/12/13(木) 00:19:28
>>831
そりゃそうだな
メソッドに出来るのは自分が決めたルールに違反を犯したかどうかを通知するだけだ
0837デフォルトの名無しさん2007/12/13(木) 00:21:51
有名どころですら統一見解だせないものをここでぐだぐだ議論してもね。
0838デフォルトの名無しさん2007/12/13(木) 00:23:42
tryはしてもいいが全てをキャッチするのは誤りだ
キャッチしていいものと、しちゃいけないものがある
0839デフォルトの名無しさん2007/12/13(木) 00:24:33
>>832
パスが不正かどうかはファイルが存在するしないに関係しないだろ。
こういうのはDirectoryNotFoundExceptionを返すケース。
0840デフォルトの名無しさん2007/12/13(木) 00:27:27
>>839
>ArgumentException
>
>指定したパスにワイルドカード文字が含まれています。
>または
>指定したパスに無効なパス文字が含まれています。
http://msdn2.microsoft.com/ja-jp/library/system.io.filesystemwatcher.path(VS.80).aspx

と書いてあるがこれは間違いか?
0841デフォルトの名無しさん2007/12/13(木) 00:35:15
おろ?うちのMSDNにはこうあるけど。

>指定されたパスが存在しないか、見つかりませんでした。
>または
>指定したパスにワイルドカード文字が含まれています。
>または
>指定したパスに無効なパス文字が含まれています。
0842デフォルトの名無しさん2007/12/13(木) 00:40:58
>>841
パスが無効とNot Foundとnullとは
分けた方がいいと思うんだがなあ
まあそんなに困るケースは思いつかないが
0843デフォルトの名無しさん2007/12/13(木) 00:44:59
catchしないで実行時エラー出るようなプログラムは駄目だろ
0844デフォルトの名無しさん2007/12/13(木) 00:47:11
>>843
完成版には一番上にcatch(Exception)入れなきゃいかんだろうが
開発中はいれちゃいかんという話だ
想定外の例外が来たら安全に実行が続けられるかなんて分からんのだから
終了するしかない
0845デフォルトの名無しさん2007/12/13(木) 00:49:11
障害系の単体テスト結果はどうするの?
0846デフォルトの名無しさん2007/12/13(木) 00:54:20
例外祭り終了
0847デフォルトの名無しさん2007/12/13(木) 00:54:21
>>845
どういう意味か分からんが
単体テストなら正しい例外が返ってくるかcatchして調べる
想定外の例外が返ってきたらバグだからそれはcatchしない
0848デフォルトの名無しさん2007/12/13(木) 01:12:42
もう余所でやってくれ
質問者がスルーされまくってるだろ
どれが質問者から分からないくらいに
0849デフォルトの名無しさん2007/12/13(木) 04:31:09
例外をcatchするとデバッグしにくいという問題は簡単に回避できる。
その答えは・・・続きはこちらで、みんな移動頼む。
C♯, C#相談室 Part34
http://pc11.2ch.net/test/read.cgi/tech/1162467959/507-
0850デフォルトの名無しさん2007/12/13(木) 09:28:16
エスケープシーケンス文字ってどうして%とか\とか{}つかうの?
もっと存在しない記号にすれば良いのに
0851デフォルトの名無しさん2007/12/13(木) 09:31:00
いちばいと
0852デフォルトの名無しさん2007/12/13(木) 10:07:30
存在しない記号って例えば?
0853デフォルトの名無しさん2007/12/13(木) 11:34:54
₩とか
0854デフォルトの名無しさん2007/12/13(木) 11:43:25
そういや、韓国語版DOSのプロンプトは、C:₩ だったなw
0855デフォルトの名無しさん2007/12/13(木) 11:47:50
イギリス人って
£include <stdio.h>
とか書いてたの?
0856デフォルトの名無しさん2007/12/13(木) 12:12:45
�dとか�j
みたいに
0857デフォルトの名無しさん2007/12/13(木) 12:14:58
w←みたいでうける
0858デフォルトの名無しさん2007/12/13(木) 12:17:11
エスケープ文字よりもC++は記号の使いまわしすぎだろ
0859デフォルトの名無しさん2007/12/13(木) 12:23:22
101キーボードで打てないといけないからね。
0860デフォルトの名無しさん2007/12/13(木) 12:34:00
トライグラフ もあるけどなーw
0861デフォルトの名無しさん2007/12/13(木) 13:00:22
みなさん、C#を使って作るのは
やっぱりWinアプリですか?
0862デフォルトの名無しさん2007/12/13(木) 13:15:12
Mono
0863デフォルトの名無しさん2007/12/13(木) 14:23:18
webbrowserでサイトを表示するとテンポラリフォルダに勝手にファイルが溜まっていくんですが、
プログラム終了時にフォルダ内全削除してから終了させるのってどうやるんでしょうか?
0864デフォルトの名無しさん2007/12/13(木) 14:52:15
おいお例外が終わったら過疎ったじゃないか
0865デフォルトの名無しさん2007/12/13(木) 14:54:37
デリゲートとカスタム属性に泣きそうになってるC++プログラマです・・・。
誰か慰めてください><
0866デフォルトの名無しさん2007/12/13(木) 14:56:43
>>865
犬にでも噛まれたと思ってあきらめなさい。
0867デフォルトの名無しさん2007/12/13(木) 14:57:10
throw >>865;
0868デフォルトの名無しさん2007/12/13(木) 15:02:40
catch(>>865){}
0869デフォルトの名無しさん2007/12/13(木) 15:27:03
>>868
catch(>>865){}
         ↑
完全スルーカワイソス
0870デフォルトの名無しさん2007/12/13(木) 16:19:32
>>830
ファイルの存在確認からOpenまでの間にファイルが消えることがあるだろ
並列処理してたらそういうことはよくある
確認用メソッドと取得用メソッドは分けてはいけない
0871デフォルトの名無しさん2007/12/13(木) 22:02:26
>確認用メソッドと取得用メソッドは分けてはいけない
そういう問題かよ
0872デフォルトの名無しさん2007/12/13(木) 22:17:46
ActiveDirectoryに存在している全てのプライマリグループを取得するには
どうすればいいかな?
0873デフォルトの名無しさん2007/12/13(木) 23:57:43
ListViewの仮想モードがよく分からないのですが、表示件数が変わるときは
常にVirtualListSizeを操作するのでしょうか?
また、一般的な使用方法とかはList<ListViewItem>みたいなリストを保持して、
RetrieveVirtualItemで処理するのでしょうか?
0874デフォルトの名無しさん2007/12/14(金) 01:49:46
今C#の勉強がてら別アプリケーションのキャプションを取得したりする物を作っています
現在の処理の流れとしては
Process.GetProcessesByNameでプロセス取得
↓
取得したプロセス.Threadsをforeachでまわして
Win32APIのEnumThreadWindowsを使ってウィンドハンドル取得
↓
EnumThreadWindowsの中でEnumChildWindowsを使って全部の子ウィンドを取得
↓
GetWindowTextを使用してキャプション取得

こんな感じで処理してます。ここで質問なのですが
1.他のアプリケーションウィンドウのキャプション取得するのって
Win32APIを使う以外に処理する方法ってありますか?

2.特定のウィンドウのキャプションが変更された時に
何らかのメソッドを実行したいのですができますか?
0875デフォルトの名無しさん2007/12/14(金) 01:54:36
メインウィンドウならProcess.MainWindowTitle
それ以外はなし
あとGetWindowText使うな

タイマでポーリングしてりゃ良いんじゃね
0876デフォルトの名無しさん2007/12/14(金) 01:55:46
>>874

>1.他のアプリケーションウィンドウのキャプション取得するのって〜〜
確かできなかったはず。IntPtr を取る Control のコンストラクタもあるっぽいが、
昔試したときに他のアプリケーションのウィンドウやコントロールに関して有益な情報が得られなかったと記憶してる。

>2.特定のウィンドウのキャプションが変更された時に〜〜
Win32 API を使う方法になるけど、メッセージフックがある。
SetWindowsHookEx などの関数で調べてみるといいかも。
08778742007/12/14(金) 02:34:30
>>875-876
レスありが�d

>>875
GetWindowTextって使わない方が良いのですか?

>>876
SetWindowsHookEx試してみたいと思います
0878デフォルトの名無しさん2007/12/14(金) 02:44:27
誰かスルーしないで親切丁寧に分かりやすくテンポフォルダのキャッシュの消し方教えておー
0879デフォルトの名無しさん2007/12/14(金) 02:47:56
フォルダを開く→Ctrl+a→Delete→OK
0880デフォルトの名無しさん2007/12/14(金) 02:50:38
>>878
Environment
0881デフォルトの名無しさん2007/12/14(金) 04:15:34
StringBuilderにClearがないのはなぜだろう
0882デフォルトの名無しさん2007/12/14(金) 06:30:47
>>881
Length = 0 で代用できるのと、十分に軽量にしているから
使いまわしせずに必要になったら作り直せというお達しだと思う。
08837082007/12/14(金) 10:28:42
どなたか・・・
0884デフォルトの名無しさん2007/12/14(金) 10:46:29
>>883
ToolStripDropDownMenuのチェックとかアイコンの枠を描画するときじゃね
Refectorで追いかけてみればどうよ
0885デフォルトの名無しさん2007/12/14(金) 12:58:42
>>879>>880
やり方知らねーなら素直に分かりませんって書けやカス
ほんと役立たずのゴミしかいねーなここ
こんな低脳の溜まり場なんかで聞いた俺が馬鹿だったわw
0886デフォルトの名無しさん2007/12/14(金) 13:01:34
>>885
そういうときに使える有名なレスを授けよう。

「知らないんだったらレスしないで下さい!!」
0887デフォルトの名無しさん2007/12/14(金) 13:09:55
VC++とVC#をアンインストールしようと手動でやったんだけど、それがまずかった
アンインストール用のソフトがあるんだね。これ使ってればよかったのに
手順が間違っていたのか、アンインストールもインストールもできなくなった

どうすればいいんでしょうか?
0888デフォルトの名無しさん2007/12/14(金) 13:10:35
TextBoxでListBoxのように行を追加・挿入・削除することはできないのでしょうか?
0889デフォルトの名無しさん2007/12/14(金) 13:18:46
>>887
http://support.microsoft.com/kb/290301/ja
>>888
できません。
自前で各行の差し替えを実装して頑張ってください。
0890デフォルトの名無しさん2007/12/14(金) 14:01:45
糞じゃん
0891デフォルトの名無しさん2007/12/14(金) 14:27:01
>>889
即レス感謝します
なんとかインストールはできるようになりました
あとは、もう一度アンインストールしてうまくいくかどうか・・
0892デフォルトの名無しさん2007/12/14(金) 15:51:36
他のアプリのリストビューのデータを取得したりすることは可能でしょうか?
APIとかいうのを使うしか無理?
0893デフォルトの名無しさん2007/12/14(金) 18:29:52
両方yes
0894デフォルトの名無しさん2007/12/14(金) 18:39:47
>>893
他アプリ(非.NET)のデータを取得するのはc#でもできるということですか?
0895デフォルトの名無しさん2007/12/14(金) 18:41:18
APIつかWin32APIは大抵の言語で扱える もちろんC#でも
0896デフォルトの名無しさん2007/12/14(金) 19:31:21
ということはやっぱり、.NETの言語だけでは無理ということですね
API使うとメモリリークとかを意識しないとだめなんですよね
0897デフォルトの名無しさん2007/12/14(金) 20:21:44
たとえばVSのデバッガでList<Dicrionary<string,string>> の中身を

[ { col1 => "val", col2 => "val" }, { col1 => "val", col2 => "val" } ]

上記のような表示形式で見たいのですが方法はありますか?
0898デフォルトの名無しさん2007/12/14(金) 20:25:08
>>897
autoexp.cs弄ればできるかも
0899デフォルトの名無しさん2007/12/14(金) 21:30:49
何を格納するコレクションなんだそれは……
09008972007/12/14(金) 21:40:28
すみませんDicrionaryではなくDictionaryです。
List<Dictionary<string,string>>

>>898
おお。まだちゃんと調べてないけどこれでちょっといけそうな気がします。
ありがとうございます。

Javaだと構造が一発でみれて楽なんだけどなぁ・・・
0901デフォルトの名無しさん2007/12/14(金) 21:43:03
自分でデバッガビジュアライザ作れば
0902デフォルトの名無しさん2007/12/14(金) 21:48:49
Javaだと構造が一発でみれて楽なんだけどなぁ・・・
0903デフォルトの名無しさん2007/12/14(金) 21:55:34
Javaとか.NETとかそういう問題なのか
0904デフォルトの名無しさん2007/12/14(金) 21:57:08
デバッガの仕様の問題だろ
VSは基本的にはToStringを表示するだけだし
0905デフォルトの名無しさん2007/12/14(金) 22:23:02
ビジュアライザだったら簡単に作れるお
0906デフォルトの名無しさん2007/12/15(土) 00:25:49
http://msdn2.microsoft.com/ja-jp/library/7ay27kt9(VS.80).aspx

を読んだのですが、シリアル化の意味がよくわかりません。
シリアル化とはどういう意味なんでしょうか?
0907デフォルトの名無しさん2007/12/15(土) 00:33:05
>>906
オブジェクトをファイルとかに保存できるようにデータ列に変換すること。
ファイルに保存=永続化って考えちゃえば良い。
0908デフォルトの名無しさん2007/12/15(土) 00:33:21
ここに魔法の小箱があります。名前は「シリアライザ」。
Serializableなインスタンスをここに入れると、 バイナリデータになったりXMLデータになったりします。
ネットで転送したり、ファイルに書き込めますね。
こんどはそのバイナリデータやXMLデータをいれて、横にある「デシリアライズ」というボタンを押すと、
あら不思議、もとのインスタンスがフィールドデータとかそのままで復元します。
0909デフォルトの名無しさん2007/12/15(土) 00:34:45
ファイルなりデータベースなりにオブジェクトの状態を保存して、
アプリが終了した後も永続的に状態が残るようにすること。

要するに、アプリ設定のセーブ/ロードとかに使う。
0910デフォルトの名無しさん2007/12/15(土) 03:27:53
ちょっと教えて下さい。.NET Compact Framwork上で動作させる物を作っております。
ウィンドウにButtonを2個配置した場合、カーソルキーの左右でボタン1と2の間でフォ
ーカスが移動しますが、これと同じ動作をPictureBoxに対しても行いたいと考えており
ます。

PictureBox.TabIndexプロパティで何とかなるかとも思ったのですが、CFMのPictureBox
はTabIndexプロパティが実装されておりません。
当初ははPictureBoxでなくButtonで行いたかったのですが、Button上にイメージを貼り
付けたいのですが、Button.Imageがサポートされておらず、PictureBoxにした次第です。
PictureBoxにフォーカスを当てる方法か、Button上にイメージを貼る方法どちらか実現
出来ないでしょうか?
0911デフォルトの名無しさん2007/12/15(土) 03:56:17
>>910
↓ここらへん参考にしてみてはどうでしょう
http://www.microsoft.com/japan/msdn/thisweek/10lines/extra_bottoncontrol.aspx
09129102007/12/15(土) 04:30:45
>>911氏
情報ありがとうございます。
ちょっと試してみます。
0913デフォルトの名無しさん2007/12/15(土) 08:01:29
C#を勉強し始めた者で、オブジェクト指向言語なるものは初めてなのですが
勉強していくうちに理解できることかも知れないけど質問させてください。

クラス、名前空間など処理を分ける(?)概念は
処理のグループ化、階層化などによって作成、管理、修正、解読などを
しやすくする狙いがある(または狙いのひとつである)のでしょうか。

Cは授業で基礎を習った程度の知識と経験がありますが、
その初段階で教わった「プログラムの構造化」を
言語自体の持つ性格としてより明確に打ち出されているものと考えてよいでしょうか。
0914デフォルトの名無しさん2007/12/15(土) 08:20:09
>>913
簡単にいうとネームが競合しないようにするためだね

*クラス

人が「歩く」
犬が「歩く」

同じ「歩く」でも歩き方などが違うわけで、「人が歩く」というクラス名にしてもいいけど
長くなるので同じクラス名でも別の機能を持たせたいのでクラスという概念ができた

*名前空間

田中さんが作った「人が歩く」プログラム
山田さんが作った「人が歩く」プログラム

同じ「人が歩く」プログラムでもプログラマによって歩かせ方が違うわけで
「田中さんが作った人が歩く」というクラス名にしてもいいけど
長くなるので同じクラス名でも別の機能を持たせたいので名前空間という概念ができた
0915デフォルトの名無しさん2007/12/15(土) 09:57:19
>>907
>>908
>>909
目的はよくわかりました。
たとえば、
class Widget {
 public int x = 10;
 public int y = 20;
}
のようなクラスのインスタンスを
シリアライズ化してファイルに保存
する場合、何が保存されるのでしょうか?

class obj = new Widget();
シリアライズ化
ファイルに保存
逆シリアライズ化
xとyを参照すると正しく10と20が読める。

こんな感じですか?
0916デフォルトの名無しさん2007/12/15(土) 10:36:34
そんな感じ
つか自分でやってみろよ
0917デフォルトの名無しさん2007/12/15(土) 13:26:34
>>913
違います
言語を使ってみる前にこういうものかと言葉で理解しようとするのは誤りです
0918デフォルトの名無しさん2007/12/15(土) 13:47:26
>>914
間違いだらけでワロスw
0919デフォルトの名無しさん2007/12/15(土) 13:47:28
C#の文法は一通り勉強しました。
.NETも含めてより深く理解するために
Windowsアプリに応用しようかと思う
のですが、自作クラスを作成しない簡単な
フォームアプリでもdelegateととかは使われる
ものですか?
0920デフォルトの名無しさん2007/12/15(土) 13:48:30
クラスのないC#ってなんだ?
0921デフォルトの名無しさん2007/12/15(土) 13:50:10
Form派生させないのは結構面倒だぞ
0922デフォルトの名無しさん2007/12/15(土) 13:52:43
まず間違いなく使われる。
気づかないだろうけど。
0923デフォルトの名無しさん2007/12/15(土) 13:54:47
デリゲートってもともとGUIのために作られたようなもんだし
0924デフォルトの名無しさん2007/12/15(土) 14:29:49
Form1からして既に自作クラスです。
0925デフォルトの名無しさん2007/12/15(土) 16:23:22
おまえらしょうもないなw
0926デフォルトの名無しさん2007/12/15(土) 20:07:17
マジでここは素人に毛が生えた程度だな
まともに答えず話の方向ずらすだけ
0927デフォルトの名無しさん2007/12/15(土) 20:21:19
gooとかはてなとかに行けば、えらそうに質問してもやさしく教えてもらえる。
説教がましく言ってくるやつがいても、言い返せばOK。
0928デフォルトの名無しさん2007/12/15(土) 21:30:38
プログラミング初心者です
Aという処理の○○msec後にBという処理を行う
ということをTimerより高精度で行いたいのですがどうすればいいのでしょう?

QueryPerformanceCounterを使うといいよと言われたのですが、
ぐぐっても実行時間の計測方法しかわからなくて困ってます・・・
0929デフォルトの名無しさん2007/12/15(土) 21:30:49
C#でAPIを使う場合、取得したハンドルを格納する変数を
メモリ開放しないとだめなのでしょうか?
c#は自動でメモリ開放してくれるのでしなくてもいいのでしょうか?
もしダメならなぜなのでしょうか?
今作っているプログラムはクラス内にAPIを使っていますが
メモリ開放をしなくても何も問題は起きていないです。
自動で開放できているということでしょうか?
0930デフォルトの名無しさん2007/12/15(土) 21:32:32
>>929
API って何? Win32API?
普通はハンドルは最後に解放するよ。それは C# でも C++ でも一緒。
0931デフォルトの名無しさん2007/12/15(土) 21:33:44
>>929
なんのハンドルか知らないけど
呼び出し側が解放するように指定されてるAPIなら解放しとけ
0932デフォルトの名無しさん2007/12/15(土) 21:47:10
>>928
System.Threading.TimerかSystem.Timers.Timerは?
0933デフォルトの名無しさん2007/12/15(土) 21:50:59
>>928
まずは精度を提示してください。
09349282007/12/15(土) 22:06:18
実験に使いたいので、1msecレベルの精度が欲しいです・・・
0935デフォルトの名無しさん2007/12/15(土) 22:12:21
>>934
まずは、C#を捨てるところから始めましょう。
0936デフォルトの名無しさん2007/12/15(土) 22:14:45
timeBeginPeriod?
0937デフォルトの名無しさん2007/12/15(土) 22:15:29
>>926
恥ずかしいからやめとけよ。
まともに答えてるのもわからんのなら。
わかるのなら答えてやれよ。
0938デフォルトの名無しさん2007/12/15(土) 22:16:23
C#じゃ無理だな
GCが動いたら軽く吹っ飛ぶ
09399282007/12/15(土) 22:21:37
うぅ、なんかやっぱり勉強不足感があるので出直してきます・・・
0940デフォルトの名無しさん2007/12/15(土) 22:24:38
>>928
>>934
何の実験かは知らんがWindowsをその用途に使うの多分向いてないよ。

仮に1msec以下の精度で時刻が分かっても
スレッドスケジューラが問答無用で実行権を奪っていくこともあるし
行儀の悪いドライバが長時間CPUを離さないと、
その間ユーザモードのプロセスは原理上なんもできん。

QueryPerformanceCounterとかStopwatchクラスでポーリングすれば、
100回のうち何十回とかは要件を満たせるかもしれんが、
一回のミスも許されないような用途ならそもそもWindowsを選ぶべきじゃない。
C#じゃなくてC++なら可能とかそういうレベルですらない。

FPGAとか使った方がいいんでは? と目的も聞かずに適当アドバイス。
0941デフォルトの名無しさん2007/12/15(土) 22:32:03
windowsというかデスクトップOSを使うべきではない
0942デフォルトの名無しさん2007/12/15(土) 22:34:06
別なハードウェアでいったん受けて、Windows でデータの集計するのが普通なのかな?
0943デフォルトの名無しさん2007/12/15(土) 22:35:11
処理の内容分らんのにアドバイスのしようが無いだろ
0944デフォルトの名無しさん2007/12/15(土) 22:40:22
>>930
APIを呼び出しているクラス内の最後にclose(hwnd)みたいな感じやるということですか?
でも、hwndがメソッド外でフィールド?で定義していた場合
クラス自体を終了しなければ解放されないですよね?
で、クラスならいちいち解放しなくてもガベージコレクションで自動で開放されるから
わざわざしなくてもいいと思うんですがどうなんでしょうか?

>>931
他のプロセスのハンドルです
VirtualAllocExで仮想メモリを割り当てて、開放しなかったけれども
何も異常が起きないんですが、このクラスを呼び出す別クラスのメソッドが
終了すれば、自動で開放されているということかな?
0945デフォルトの名無しさん2007/12/15(土) 22:46:12
単にリークするだけさ
0946デフォルトの名無しさん2007/12/15(土) 22:52:13
Stopwatchって、タイムスタンプの取得に
2マイクロ秒くらい(これは俺の環境の場合だが)
かかるんだが、これってQueryPerformanceCounterの速度か
それともアンマネージ呼び出しなんかのオーバーヘッドかどっち?
0947デフォルトの名無しさん2007/12/15(土) 22:53:52
>>944GCがハンドル開放してくれるわけないだろ。
まあ普通はハンドル自体はSafeHandleでラップして、
さらにDisposableなクラスでラップするけどね。
0948デフォルトの名無しさん2007/12/15(土) 22:56:54
ハンドルはスタックで、インスタンスはヒープ
だよね?
0949デフォルトの名無しさん2007/12/15(土) 22:59:29
>>948
意味の分からんことを言うな
0950デフォルトの名無しさん2007/12/15(土) 23:02:58
参照型変数はスタックに確保されて、参照型変数が指すオブジェクトはヒープ
に確保されるんだよね?
0951デフォルトの名無しさん2007/12/15(土) 23:05:07
質問です。

DirectoryInfo()にパス名を引数として渡す場合、
C#では@"c:\temp"のように先頭に@マークをつけるのは
何故ですか?VC++やVBでは付けないみたいですが。
0952デフォルトの名無しさん2007/12/15(土) 23:08:25
\
0953デフォルトの名無しさん2007/12/15(土) 23:08:31
画面上にテキストボックスを表示させるということを
aspx.csでやりたいのですが、これはTextBoxオブジェクトをインスタンス化して
表示するということは可能でしょうか?
Response.Writeでタグを吐けば表示可能ですが、この方法以外でやりたいのです。
なぜデザイナでタグをペチペチ配置しないかというと
例えばURLのパラメータによってテキストボックスの数が異なるからです。
なので、動的に生成する方法を知りたいのです。
よろしくお願いします。
0954デフォルトの名無しさん2007/12/15(土) 23:09:44
SafeHandleでラップしたらもはやそれはクラスだよ。
ハンドルそのものは値型で保持されるけど
ローカル変数じゃないからスタックとか関係ないよ。
0955デフォルトの名無しさん2007/12/15(土) 23:10:57
>>953
Designer.csを読めばわかる
0956デフォルトの名無しさん2007/12/15(土) 23:13:19
>>944
意味わかんね
プロセスハンドルをどうやって解放するつもりか

>VirtualAllocExで仮想メモリを割り当てて、開放しなかったけれども
解放しなかったのはメモリなのか?
0957デフォルトの名無しさん2007/12/15(土) 23:14:38
>>951
@をつけると\がエスケープ文字でなくなる。
VBはエスケープ文字がないし、C++は"c:\\temp"と\を重ねることでエスケープ文字でなくす。
0958デフォルトの名無しさん2007/12/15(土) 23:18:10
>>955
ありがとうございます。
会社の環境はVS2005なのですが、ちゃんと
aspx
aspx.cs
designer.cs
とワンセットで表示されるのですが、家の環境はWebDevelopperで
designer.csがソリューションエクスプローラに表示されません。
aspxなどの場所にdesigner.csファイルもありません。
これはどうやって表示させるのでしょうか?
WebDevelopperはソリューションファイルやプロジェクトファイルも無いんですよ(^^;
なので、いつもファイルをダブルクリックして立ち上げるのではなく
WebDevelopperを開いて、スターと画面から最近実行したソリューションの一覧から選択してる・・・
0959デフォルトの名無しさん2007/12/15(土) 23:22:35
>>956
メモリもプロセスハンドルも両方です
VirtualFreeしていないということです
0960デフォルトの名無しさん2007/12/15(土) 23:30:17
>>958
そんな初歩的なことを聞くな
会社で聞いたら一言で済む
0961デフォルトの名無しさん2007/12/15(土) 23:35:01
>>1
0962デフォルトの名無しさん2007/12/15(土) 23:35:42
今趣味でエロゲを作っているんだけど、ソースを晒せば
プログラミング構造に問題があるか、簡単なアドバイスをもらえたりするんでしょうか?
趣味で自分専用にやっているだけなので動けばいいんだけど
一人で黙々とやっているだけなのでだめなところに気づきにくい
0963デフォルトの名無しさん2007/12/15(土) 23:36:14
>>960
会社じゃあWebDevelopperなんて使ってないもんで誰もわからないと思われまする。。
0964デフォルトの名無しさん2007/12/15(土) 23:42:29
>>962
とにかく見てくれと言っても反応は得られにくいよ
0965デフォルトの名無しさん2007/12/15(土) 23:44:01
>>962
            ,l、::::::::::::::::::::::::::::::::::|:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:l
           ,ハ::`丶、:::::::::::::::::::::::|:;:;:;:;:;:;:;:;:;:;_,, -‐:〈
           {;;;;ヽ、:::::`丶、:::::::::::::l:;:;:;:;:;:; ィ";:;:;:;:;:;:;:}
           ,l;;;;;;;;;シ丶、:::::::`:`:ー'‐::'':"::::::::_, ィ"´;;l
          fうl;;;ミミ、  ``丶 、::::::::,: - ''"´  リ;;;;;;f-、
          { l l;;;;;ッ=`   (三> `^´ (三シ  ム;;;;;;ソl}
          t !;;;リ    _,,...,,_     _,,..,,_    l;;;//
           ゙l ヾ;l  :'ィテヘ9ンミ   ,: ',シヒ9ン、  l;//
           `ーll!   `''==ヲ'  l:.:^''==彡'" ,!リノ
               ll   ` '' "   l:.:.:` '' "  ,i;;l´
             li,     ,r .: :.ヽ、    ,:,り
              t、   / ゙ー、 ,r '゙ヽ  /,K′
              ゝ、 ,:'   :~:    } // /ヽ、
              /{lヽ ,ィ==ニニ==,ノ,ノ7 /:.:.:.:ヾニヽ
            , ィ/:.:い ヽ `` ー一 ''"/,/,/:.:.:.:.:.:.:.:ソ }- 、、
           / /:.:.:.:ヽヽ `' ー‐ -- '"//:.:.:.:.:.:.:/ /   ` 丶、
        ,, - {  ヾ:.:.:.:.ヽ丶     //:.:.:.:.:, -'" ,/       ` 丶 、
     ,, - ''"   丶、 `` ーゝ、ヽ.,_,,ィ"ェくユ- ''" , ィ"
0966デフォルトの名無しさん2007/12/15(土) 23:47:43
>>962

ゲ製板とかに行った方がいい
C#ってそんなに特殊な言語じゃないからC#知らなくてもC++かJava知ってる人なら読めるはず
0967デフォルトの名無しさん2007/12/15(土) 23:48:19
>>957
なるほど。わかりました。
09689622007/12/15(土) 23:51:36
>>964
そうですか・・・
オブジェクト指向でプログラミングできているのかよくわからないんですけど
私の1000行のソースが上級者なら500行ぐらいに簡潔に表せたりするのかな?
同じ機能をあらゆるメソッドで何度も使う場合、それらをクラスにするようにしていれば
一応オブジェクト指向プログラミングできているのかな

>>965
な・・・なんですか?w
0969デフォルトの名無しさん2007/12/15(土) 23:54:15
そんなふうな不安を抱えていた時期が俺にもありました。




気楽に行こうぜ相棒
0970デフォルトの名無しさん2007/12/16(日) 00:19:13
>同じ機能をあらゆるメソッドで何度も使う場合、それらをクラスにするようにしていれば
>一応オブジェクト指向プログラミングできているのかな
   。 。
  / / ポーン!
( Д )

09719622007/12/16(日) 00:28:51
w
0972デフォルトの名無しさん2007/12/16(日) 00:30:55
何気ない会話も私には意味があるの
あなただけ特別と思ってる
出会いは偶然で何処にでも在るとしても
二人なら永遠のストーリー
0973デフォルトの名無しさん2007/12/16(日) 00:40:23
>>968
オブジェクト指向っていうのはあくまで「指向」つまり考え方なわけで
「これをやればオブジェクト指向だぜ!」という明確な決まりはありませんのよ
0974デフォルトの名無しさん2007/12/16(日) 01:48:40
>>968
オブジェクト指向・・・
部品を作ってそれを組み合わせるって認識してるけど・・・どうなんだろう

エロゲなら例えば、
背景、画像、テキストなどの描画を管理するコンポジションクラス(レイヤー管理とか)
・背景、登場人物描画管理パーツクラス
・テキストボックス、テキスト描画管理パーツクラス
全体の動作・入力を管理するコンポジションクラス
・通常テキストの管理するパーツクラス
・選択肢発生・処理パーツクラス
・セーブ・ロード、オプションなどを管理するパーツクラス
描画・動作・入力対応を統括するクラス
登場人物のクラス(名前、画像、内部パラメータetc)
テキストをtxtファイルから読み込むクラス(後で修正を楽に行うため)
分岐情報やテキストの割り当て・管理を行うクラス

見たいにそれぞれの部品を作って、組み合わせるとか?
どういう風に部品分解するかは人それぞれだし、個人的には上記の例はさらにパーツクラスに分解されていき、
大体最大でも500行程度のクラスになると思う。(大体50〜200行程度になることが多いけど)


0975デフォルトの名無しさん2007/12/16(日) 01:56:21
ジェネリックメソッドを書くときに、まだ<T>と書いてないときに
戻り値の型をTと書こうとすると、IntelliSenceが勝手にThreadStaticAttribute
と入れてしまうのですが、うまい回避法はないですか?
Escを押せば回避できるのはしってますが、もっとスマートな方法はないでしょうか
0976デフォルトの名無しさん2007/12/16(日) 02:15:06
>>975
まったく関係ないが、初めてその属性を知った
こんなんあったんだ
0977デフォルトの名無しさん2007/12/16(日) 03:15:32
質問させてください。
Visual C# 2005 EEを使っているのですが、
0x80042740
というエラーがでてデザイナが表示されなくなってしまいました。
デザイナが表示されないこと以外は何の問題もなく動作します。
調べてもいまいち分りませんでした。
直す方法があれば教えていただきたいです。よろしくお願いいたします。
0978デフォルトの名無しさん2007/12/16(日) 03:21:48
エラーメッセージを端折らずに全部書きなよ
0979デフォルトの名無しさん2007/12/16(日) 03:24:36
申し訳ありません。よろしくお願いします。

場所 EnvDTE.FileCodeModel.get_CodeElements()
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomParser.Parse(TextReader codeStream)
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.MergedCodeDomParser.System.CodeDom.Compiler.ICodeParser.Parse(TextReader stream)
場所 System.CodeDom.Compiler.CodeDomProvider.Parse(TextReader codeStream)
場所 Microsoft.VisualStudio.Shell.Design.Serialization.CodeDom.CodeDomDocDataAdapter.get_CompileUnit()
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
場所 System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)
0980デフォルトの名無しさん2007/12/16(日) 03:33:32
>>979
>>978
0981デフォルトの名無しさん2007/12/16(日) 03:37:40
申し訳ありません、本当に・・・。これでいいのでしょうか・・・。


デザイナの読み込み時に 1 つ以上のエラーが発生しました。エラーは以下に一覧表示されます。コードの変更が必要なエラーもありますが、プロジェクトを再度ビルドすると解決できるエラーもあります。

HRESULT からの例外: 0x80042740
非表示

場所 EnvDTE.FileCodeModel.get_CodeElements()
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomParser.Parse(TextReader codeStream)
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.MergedCodeDomParser.System.CodeDom.Compiler.ICodeParser.Parse(TextReader stream)
場所 System.CodeDom.Compiler.CodeDomProvider.Parse(TextReader codeStream)
場所 Microsoft.VisualStudio.Shell.Design.Serialization.CodeDom.CodeDomDocDataAdapter.get_CompileUnit()
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
場所 System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)
0982デフォルトの名無しさん2007/12/16(日) 06:05:04
>>981
これは特定のフォームで出てるの?
もしそうならコンストラクタのInitializeComponent()の前後に追加したコードをコメントにしてみて。
0983デフォルトの名無しさん2007/12/16(日) 06:34:21
何かがnullのままだったり描画に関係するフィールドが想定値域の範囲外だったりと
初期化がうまくいってない気がする
コードうpすれば多分わかるけど
0984あにす ◆sGTL1yK0.6 2007/12/16(日) 09:17:39
オブジェクト指向…それは擬人化。
クラスとは、萌えなのです。
0985デフォルトの名無しさん2007/12/16(日) 10:11:05
アニサキス
09869622007/12/16(日) 11:39:50
>>974
私のプログラムはそんなに綺麗に役割分担できてないかも・・・・
あらゆるクラスがあらゆることをやっている感じになって
非常に修正が難しいプログラムになってます・・
設計をもう一度見直そう・・・
0987デフォルトの名無しさん2007/12/16(日) 11:51:21
あまり悩みすぎてもしょうがないよ
一番必要なのは経験だろうから

ずっと経ってから初期の自分のコードを見直すと丸ごと直したくて仕方ない衝動に駆られたりするけど
それはそういうものだと思う
0988デフォルトの名無しさん2007/12/16(日) 11:53:44
最初から完璧を目指そうとすると
一歩も動けなくなるのさ
09899622007/12/16(日) 12:36:31
やさしさに感動
もう少し力抜いてやります
プログラムたのしー
0990デフォルトの名無しさん2007/12/16(日) 14:02:50
>>977
ジェネリックメソッドのコードスニペット作れば
09919902007/12/16(日) 14:04:32
間違えた>>975
0992デフォルトの名無しさん2007/12/16(日) 14:07:54
スニペットを使う習慣を作るよりは
T Esc と入れる習慣を作る方が楽なような
09937622007/12/16(日) 14:42:26
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet";>
<CodeSnippet Format="1.0.0"><Header><Title>GenericMethod</Title>
<SnippetTypes><SnippetType>Expansion</SnippetType></SnippetTypes</Header>
<Snippet><Declarations><Literal Editable="true"><ID>methodName</ID>
<Default>MyMethod</Default></Literal><Literal Editable="true"><ID>args</ID>
</Literal></Declarations><Code Language="csharp"><![CDATA[T $methodName$<T>($args$)
{
$end$
}]]></Code></Snippet></CodeSnippet></CodeSnippets>
作ってみたけどたぶんT Escの方が早いよ
0994デフォルトの名無しさん2007/12/16(日) 16:18:56
教えてください。

Repeaterにユーザコントロールファイルをセットして実行し、
ascx.csでRepeater.DataSourceに入っているデータレコードを取得したいのですが
そんな事は可能でしょうか?

this.rep.DataSource = dataTable;
this.rep.ItemTemplate = Page.LoadTemplate("Test.ascx");
this.rep.DataBind();

Test.ascx.csでdataTableのレコードを取得したい。
ascxでは
<%# DataBinder.Eval(((RepeaterItem)Container).DataItem, "name") %>
で取得可能なのですが、これをascx.csでやりたい。
何でかと言うと、この値によって処理を変更したいからです。

お願いしますm(_ _)m
0995デフォルトの名無しさん2007/12/16(日) 18:32:41
DataGridViewの1つのセルの中に複数のボタンを配置したいのですが、
どうやるのでしょうか?

こんな感じにしたいのですが。
----------------------------------------
| header1          |header2       |
----------------------------------------
|AAA             | (ボタン1)(ボタン2)|
|                | (ボタン3)(ボタン4)|
----------------------------------------
|BBB             | (ボタン1)(ボタン2)|
|                | (ボタン3)(ボタン4)|
----------------------------------------
0996デフォルトの名無しさん2007/12/16(日) 18:34:40
Here is Japanese OK.
0997デフォルトの名無しさん2007/12/16(日) 18:46:37
お前こそちゃんとした英語書けよw
0998デフォルトの名無しさん2007/12/16(日) 19:31:12
ここには日本のOKがあります


でっていう
0999デフォルトの名無しさん2007/12/16(日) 19:54:19
新スレ
ふらっとC#,C♯,C#(初心者用) Part22
http://pc11.2ch.net/test/read.cgi/tech/1197802312/
1000デフォルトの名無しさん2007/12/16(日) 19:57:00
ぬるぽ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。