C#, C♯, C#相談室 Part42
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/08/26(日) 12:42:25前スレ
C#, C♯, C#相談室 Part41
http://pc11.2ch.net/test/read.cgi/tech/1184840053/
過去スレは>>2-5あたり。
0075デフォルトの名無しさん
2007/08/28(火) 19:47:34>>74
(´・ω・`)ノシ<有り難う。
0076デフォルトの名無しさん
2007/08/28(火) 21:19:080077デフォルトの名無しさん
2007/08/28(火) 22:06:06どういう判別が一番楽かな?
やっぱり正規表現?
0078デフォルトの名無しさん
2007/08/28(火) 22:09:220079デフォルトの名無しさん
2007/08/28(火) 22:09:51あ、ごめん。日本語のひらがなや漢字という意味です。
0080デフォルトの名無しさん
2007/08/28(火) 22:13:490081デフォルトの名無しさん
2007/08/28(火) 22:14:110082デフォルトの名無しさん
2007/08/28(火) 22:34:46Shift_JISでのサイズでも取得すればいいんでない?
0083デフォルトの名無しさん
2007/08/28(火) 23:43:32それで、現在MSのサンプルプログラムで学習中なのですが、
以下のプログラムをビルドするとエラーが発生します。
http://www.microsoft.com/japan/msdn/academic/Articles/fun/03/
「エラー1 ジェネリック 型 'System.Collections.Generic.IEnumerator<T>' の使用には、'1' 型の引数が必要です。」
このエラーの意味が分からないのですが、これはどのように改善したら実行できるのでしょうか?
2003年の記事なので、内部の何かが変わっているのでしょうか?
0084デフォルトの名無しさん
2007/08/29(水) 00:14:220085デフォルトの名無しさん
2007/08/29(水) 00:22:01>もっと地獄なのは、要素型ごとに実装された*Collectionクラス。
C# 3.0だと拡張メソッドのOfType<T>()でIEnumerable<T>に変換できる。
もうちょい待とうぜ。
var sc = new System.Collections.Specialized.StringCollection();
var list = sc.OfType<string>(); // IEnumerable<string>
0086デフォルトの名無しさん
2007/08/29(水) 10:36:17うまくいきました。
ありがとうございました。
0087デフォルトの名無しさん
2007/08/29(水) 16:14:18using System.Collections.Generic;
って書いてないかな?
それを
using System.Collections;
に変更すれば直るはず。
0088デフォルトの名無しさん
2007/08/29(水) 19:51:34なんでこんな変なサンプルを学習に使うの
学習者向けと言うより、「こんなことができるんだよ、すごいでしょ」的なものだろこれ
0089デフォルトの名無しさん
2007/08/29(水) 20:37:25009083
2007/08/29(水) 20:38:42両方ともなかったので using System.Collections を追加したら動きました。
ありがとうございました。
ただ、リンクチェックを実行すると別のエラーを吐くので調べてます。
>>88
実はリンクチェックソフトを探していてたどり着いたのです
そしてら、VC#では簡単に組めそうではないですか!
驚きと期待で導入し勉強中な訳です
自分好みのリンクチェックソフトを作れたら最高にうれしいのですが・・・甘くはないようですね
0091デフォルトの名無しさん
2007/08/29(水) 21:00:12intにキャストして256未満か以上って判断もありだよ
0092デフォルトの名無しさん
2007/08/29(水) 21:11:15いやもちろん嫌味だが
0093デフォルトの名無しさん
2007/08/29(水) 21:16:220094デフォルトの名無しさん
2007/08/29(水) 21:34:300095デフォルトの名無しさん
2007/08/29(水) 21:34:390096デフォルトの名無しさん
2007/08/29(水) 21:43:45WEBじゃなきゃハングルやアラビア文字考慮する必要が無いシチュエーションなんていくらでも存在するだろ
要は使い分けなんだよ
0097デフォルトの名無しさん
2007/08/29(水) 21:51:430098デフォルトの名無しさん
2007/08/29(水) 22:00:270099デフォルトの名無しさん
2007/08/30(木) 01:34:37でこのスレが間違われやすいのはCスレ。
よって>>97
0100デフォルトの名無しさん
2007/08/30(木) 01:40:320101デフォルトの名無しさん
2007/08/30(木) 02:05:060102デフォルトの名無しさん
2007/08/30(木) 02:07:02>>99にとってはtrue
0103デフォルトの名無しさん
2007/08/30(木) 08:38:09第一階層目のContextMenuStripではうまくクリックイベントの処理を行えたのですが、
第二階層目のToolStripMenuItemsでDropDownItemsにAddすると、
項目名がひとつしか表示されず、しかもクリックすると、本来ある項目数の数だけ
同じ処理が実行されてしまうような状態にあります。
どのようにすればそれぞれの項目の表示と、適切なクリックイベントの追加ができるようになるか
ご教授いただけないでしょうか。
ToolStripMenuItem items_for_A = new ToolStripMenuItem();
ToolStripMenuItem items_for_B = new ToolStripMenuItem();
Hashtable ht = new Hashtable(); // この中にはいくつかデータがあります
foreach(string ID in ht.keys)
items_for_A.Text = ID;
items_for_B.Text = ID;
// 編集項目
items_for_A.Click += delegate
{
NewForm Frm = new NewForm(ID);
Frm.Show(); // フォームの表示
};
this.ToolStripMenuItemA.DropDownItems.Add(items_for_A);
items_for_B.Click += delegate
{
Program.Hoge(ID); // 処理
};
this.ToolStripMenuItemB.DropDownItems.Add(items_for_B);
}
0104デフォルトの名無しさん
2007/08/30(木) 09:03:36>intにキャストして256未満か以上って判断もありだよ
がどう見てもC言語的な考え方だって意味
C#でそんなコードはトリッキーなだけだろ
0105デフォルトの名無しさん
2007/08/30(木) 09:59:170106デフォルトの名無しさん
2007/08/30(木) 11:00:01ループの中で newしていないからアイテムのインスタンスが一つしかないからだよ
ToolStripMenuItem items_for_A = new ToolStripMenuItem();
ToolStripMenuItem items_for_B = new ToolStripMenuItem();
をループの中に移動してみ
0107デフォルトの名無しさん
2007/08/30(木) 12:37:40まあ真面目に入門書の一冊も読むべきだね。
基本がぜんぜんなってない感じ。
0108デフォルトの名無しさん
2007/08/30(木) 13:14:04ワロタ
こういう奴いるよな
ちょっと専門的なことひけらかして、俺すげーだろ的な
こういう奴と仕事したくねー
0109デフォルトの名無しさん
2007/08/30(木) 13:24:500110デフォルトの名無しさん
2007/08/30(木) 13:30:10馬鹿晒しage
0111デフォルトの名無しさん
2007/08/30(木) 13:39:19自演乙
0112デフォルトの名無しさん
2007/08/30(木) 13:54:450113デフォルトの名無しさん
2007/08/30(木) 14:37:180114デフォルトの名無しさん
2007/08/30(木) 14:38:430115デフォルトの名無しさん
2007/08/30(木) 14:45:52どうしてここまで叩かれているのだろうか?
C#相談スレの住人の程度が知れる。
0116デフォルトの名無しさん
2007/08/30(木) 14:46:57∧_∧ / ̄ ̄ ̄ ̄ ̄
(ω・ )ゝ < なんだって?
ノ/ / \_____
ノ ̄ゝ
0117デフォルトの名無しさん
2007/08/30(木) 14:48:14ヒント:夏休み
0118デフォルトの名無しさん
2007/08/30(木) 14:48:340119デフォルトの名無しさん
2007/08/30(木) 14:51:08人格攻撃が始まっちゃうんだもんな
0120デフォルトの名無しさん
2007/08/30(木) 15:14:20というような問題 (答えは否) のような気がするわけで、C 言語がどうとかいう話に
なるのかよくわからない。
C# の char が Unicode 文字であること、整数型にキャストできること、は C# の
仕様として明記されているわけだし (むしろ c の w_char の方が正体不明)。
0121デフォルトの名無しさん
2007/08/30(木) 15:26:22API使って出来なければ自作のライブラリを作るのが基本だろう。
なにを訳わからない議論してるんだ?
0122デフォルトの名無しさん
2007/08/30(木) 15:33:21文字列の一部を Bold にすると、その部分だけ横幅が広くなってしまい、
文字列がずれてしまいます。
Bold にしても文字幅が変わらないようにする方法はないでしょうか?
0123デフォルトの名無しさん
2007/08/30(木) 15:34:260124デフォルトの名無しさん
2007/08/30(木) 15:34:31でもIntにキャストするのが賛成のやつは俺の現場に近づかないでくれwwwっうぇwww
0125デフォルトの名無しさん
2007/08/30(木) 15:36:51\u00ff以下とかは流石に適当すぎだろ
0127デフォルトの名無しさん
2007/08/30(木) 16:28:48誰も教えてないんじゃないか
charのメソッドになんかローカライズ情報を与えると
分かるとかそんなんあったろ
0128デフォルトの名無しさん
2007/08/30(木) 16:33:49俺様に理解できない話は別言語ってか?
0129デフォルトの名無しさん
2007/08/30(木) 16:37:21サポートしてなくても
Hiragana, Katakana, HalfwidthAndFullwidthForms, CJKUnifiedIdeographs, CJKSymbolsAndPunctuation
あたりに含まれてるかどうか不等号で調べればいいだけだけど。
0130129
2007/08/30(木) 16:39:580131デフォルトの名無しさん
2007/08/30(木) 16:48:26言語のライブラリに用意されてる機能を自作して悦に入るような奴は狼人間ってこと
0132デフォルトの名無しさん
2007/08/30(木) 17:03:04そういう考え方でOKな仕事も多いよね。
0133デフォルトの名無しさん
2007/08/30(木) 17:18:27マジックナンバーを使うのと同じ臭いがする
0134デフォルトの名無しさん
2007/08/30(木) 17:20:230135デフォルトの名無しさん
2007/08/30(木) 17:25:300136デフォルトの名無しさん
2007/08/30(木) 18:29:22MS ゴシックなら1pt下げれば同じになると思う
0137103
2007/08/30(木) 18:49:35クリック時の挙動がまだきちんとできませんでしたが、今回実現させたいことはできました。
どうもありがとうございました。
>>107
VB6を中途半端に覚えてからしばらくWebアプリのスクリプトに流れて、久々に勉強を兼ねてWinアプリを作ってみたのですが
やっぱりきちんと基本からやり直さないとダメですね。
ご指摘ありです。
0138デフォルトの名無しさん
2007/08/30(木) 18:52:54次からはふらっと池よ
0140デフォルトの名無しさん
2007/08/30(木) 19:24:20お勧めの参考書教えてください。
0141デフォルトの名無しさん
2007/08/30(木) 19:50:540142デフォルトの名無しさん
2007/08/30(木) 20:04:130143デフォルトの名無しさん
2007/08/30(木) 20:38:59現象は、WebViewerを使ってPDF形式の出力をしようとすると、2003ServerEnterpriseだと
普通に出るのですが、2003server R2 StandardだとNo Specify Reportsと出てしまいます。
2台の同じバージョンのサーバーに入れて同じ現象でした。
また、WindowsXPの開発環境では普通に表示できます。似たような事象に出会ったかた
いらっしゃいましたら回避方法をお願いできませんでしょうか。
ここで聞くべきかあれですが、スレ違いでしたら誘導していただけると助かります。
よろしくお願いいたします。
0144デフォルトの名無しさん
2007/08/30(木) 20:44:48この板で一番レス数の多い言語はC#ということになりそうだな
0145デフォルトの名無しさん
2007/08/30(木) 21:05:050146デフォルトの名無しさん
2007/08/30(木) 21:33:06フォームが閉じられる際に、TextBoxの値が未入力ならアラートを出すようにしてますが、
TextBoxに値があるのにif(TextBox.Text == "")がtrueとなってしまいます。
その際、一度TextBoxが含まれるTabをセレクトすると正常な挙動となります。
どのような問題が考えられますでしょうか?
0147デフォルトの名無しさん
2007/08/30(木) 21:52:12ttp://www.atmarkit.co.jp/fdotnet/dotnettips/014strcheck/strcheck.html
0148デフォルトの名無しさん
2007/08/31(金) 10:58:54using (TextWriter stream = createStream(filePath, Encoding.GetEncoding(932))) {
foreach (string line in hogeList) {
stream.WriteLine(line);
}
}
というような感じで、5千万行(約5G)ファイルに書き込むのですが、
3千万行(約3G)ほど書き込んだ所で以下のような例外が出てしまいました。
この例外発生時はディスク容量に余裕がある状態でした。
GetBytes() または GetByteCount() を呼び出す前に、Convert() 操作を完了するか、または Encoder.Reset() を呼び出さなければなりません。エンコーダ '日本語 (シフト JIS)' フォールバック 'System.Text.InternalEncoderBestFitFallback'。
System.ArgumentException: GetBytes() または GetByteCount() を呼び出す前に、Convert() 操作を完了するか、または Encoder.Reset() を呼び出さなければなりません。エンコーダ '日本語 (シフト JIS)' フォールバック 'System.Text.InternalEncoderBestFitFallback'。
場所 System.Text.DBCSCodePageEncoding.GetBytes(Char* chars, Int32 charCount, Byte* bytes, Int32 byteCount, EncoderNLS encoder)
場所 System.Text.EncoderNLS.GetBytes(Char* chars, Int32 charCount, Byte* bytes, Int32 byteCount, Boolean flush)
場所 System.Text.EncoderNLS.GetBytes(Char[] chars, Int32 charIndex, Int32 charCount, Byte[] bytes, Int32 byteIndex, Boolean flush)
場所 System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
場所 System.IO.StreamWriter.Dispose(Boolean disposing)
場所 System.IO.TextWriter.Dispose()
見た感じEncodingの設定でコケてるように見えますが、意味が分りません。
もしかして○ギガ以上のファイルを作れない、といった感じの制限があるのでしょうか。
・Win2000
・VisualC# 2005 ExpressEdition
・.net framework2.0
0149デフォルトの名無しさん
2007/08/31(金) 11:47:59逃れる方法はただ一つ
↓このスレに行き
http://anime2.2ch.net/test/read.cgi/rcomic/1187704465/
// ̄ ̄ ̄ ̄\ .
彳丿; /,,,,,,,,\ u lヽ
入丿 -◎─◎- ;ヽミ.
| u:.:: (●:.:.●) u:.::|
| :∴) 3 (∴.:: | か、か、葛西なんてダサいよね♪
ノ ヽ、 ,___,. u . ノ、 や、や、やっぱり大阪の川島が最強だよ♪
>>255-256
( ´,_ゝ`)
理論で勝てないからって恥かし過ぎw
何処をどう見ても川島厨の理論が破綻し過ぎw
川島厨の特徴 恥かしくも自分の事を川島派と名乗る
一生懸命書いた恥かしい>>151-152を誰も納得してくれないので拗ねてる
早く病院行けっつううのwww
いい加減コピペ止めろ、葛西厨装った川島厨!!
>>377
↑はいはいコピペ乙
コピペしてる奴は、その内容関係なしに、川島厨の荒らしだって事はとっくにバレてんだよ!
>>151-152の直後といい、>>255-256の直後といい、先にコピペ荒らしすんのは、常に川島厨からだからだ!!
分かったか?カス!! 反論できないからってここまで荒らすか?
好きなだけ荒らせば?このスレは元々お前を隔離する為のスレだし
と書き込んでください。書き込まなければ確実に明日交通事故にあいますよ
0150デフォルトの名無しさん
2007/08/31(金) 12:33:220151デフォルトの名無しさん
2007/08/31(金) 14:48:560152デフォルトの名無しさん
2007/08/31(金) 15:44:47line に CP932 に属さない文字があるんじゃない?
0153デフォルトの名無しさん
2007/08/31(金) 16:27:520154デフォルトの名無しさん
2007/08/31(金) 16:35:470155デフォルトの名無しさん
2007/08/31(金) 17:45:35・Action<object>を使う
・Action<string> action = delegate(string x){};などとして引数にactionを渡す
自分の想像力の範囲で挙げてみた
0156デフォルトの名無しさん
2007/08/31(金) 17:59:05private void button1_Click(object sender, EventArgs e)
{
using (StreamWriter stream = new StreamWriter(@"c:\hage.txt", false, Encoding.GetEncoding(932))) {
for (int i = 0; i < 100000000; i++) {
stream.WriteLine("12345678901234567890123456789012345678901234567890\n");
}
}
}
を実行したら2G書いたところでで落ちた
Encoder.Resetのヘルプ見たらなんとなく理由は分かった気がするけど解決法はシラネ
0157デフォルトの名無しさん
2007/08/31(金) 18:11:290158デフォルトの名無しさん
2007/08/31(金) 18:34:190159デフォルトの名無しさん
2007/08/31(金) 18:53:46【開発環境】
visual studio 2005 、言語はC#です
【やりたいこと】
・「クラス名」を変数として、newしたい
(newする対象となるクラスを可変にしたい、ということです)
【例:正しいコードではないけど、やりたいことのイメージ】
// newしたいクラス名を引数として、newしたクラスインスタンスを返す関数
object getCreatedClass(string iClassName) {
return new iClassName();
}
ClassExample1 ex = getCreatedClass("ClassExample1 "); // ClassExample1 を作る
ClassExample2 ex = getCreatedClass("ClassExample2 "); // ClassExample2 を作る
※ 「ClassExample1 ex = new ClassExample1()」でダメなの?と思われるかもしれませんが、
上の関数はあくまで簡潔にした例で、実際にはgetCreatedClass内で
new以外にも、クラス名を使った処理をしたいのです。
0160デフォルトの名無しさん
2007/08/31(金) 18:59:460161デフォルトの名無しさん
2007/08/31(金) 19:20:56Activator.CreateInstance
そんなことそんなに頻繁に行われることなの?
やるとしてもちゃんとわかってる人がやるものじゃないの?
0162デフォルトの名無しさん
2007/08/31(金) 19:59:490163148
2007/08/31(金) 20:42:26156さんの例もあるので、CP932絡みの問題ではないようです。
>>156
やはり落ちましたか。
根本的な解決ではないですが、とりあえずファイルを分割して
最後にDOSコマンドで連結する事で逃げることにしました。
>>157
なるほど。その発想はありませんでした。試してみます。
0164デフォルトの名無しさん
2007/08/31(金) 20:47:44バイト配列のマーシャリングは、どうすればよいのでしょうか?
BOOL native_func(LPBYTE pBuff, DWORD dwBuffSize, LPDWORD lpByteReturned);
文字列や構造体のサンプルはいくつか見つけたのですが。。
0165デフォルトの名無しさん
2007/08/31(金) 21:06:310166デフォルトの名無しさん
2007/08/31(金) 21:09:31MSDNライブラリ読んで理解できないのなら(まあ、君は最初から読んでなさそうだけど)
やらない方がいいんじゃないの?
人に聞くような難解な話とも俺には思えないから言うんだけど。
でないと危険だと思うけどね。
それとも、分からないことや意図しない動作に遭遇する度にいちいち人に聞くつもり?
0167デフォルトの名無しさん
2007/08/31(金) 21:17:120168164
2007/08/31(金) 21:24:24ありがとう。
System.Array で受けようとしてはまっていました。
Blittable型は、特別なコーディングいらないってことなので、
[DllImport("LargeBuffer.dll")]
private extern static bool native_func(
byte[] pBuff,
uint dwBuffSize,,
out uint lpByteReturned
);
で、
とりあえず、大きな 領域を new byte[] して取得してから、
Arrayにセットするようにしました。
0169デフォルトの名無しさん
2007/08/31(金) 21:24:33で良いんじゃなかったっけ?
0170デフォルトの名無しさん
2007/08/31(金) 21:25:230171デフォルトの名無しさん
2007/08/31(金) 21:31:56おまえはそんなことを言うためにこのスレにきてんの?
0172デフォルトの名無しさん
2007/08/31(金) 21:37:490173デフォルトの名無しさん
2007/08/31(金) 21:40:11俺はよく迷う
まぁMSDNみろよって話に収束するんだけどさ
0174デフォルトの名無しさん
2007/08/31(金) 21:46:31■ このスレッドは過去ログ倉庫に格納されています