このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
前スレ: ふらっとC♯, C#(初心者用) Part19
http://pc11.2ch.net/test/read.cgi/tech/1188872446/ ↓これは多分釣です
変数名+1という式を実行したいのです
すなわちなぜ数字の1と文字列型の1が存在し区別する必要があるのかということです?
すごく面倒です
カタカナの"ロ" と漢字の"口"を区別する必要があるのかということです? 出口を「でぐち」と読むか、「でろ」と読むかの違いだけじゃないですか? 出入口の話は今は関係ありません。
コピペ君って馬鹿だな、まで読んだ。
前スレで終わりの方にキャストの話が出ていたけど、 c#にはVBのDirectCast相当のものはないの? あと、これはドトネトの世界に限った話じゃないんだけど、 そもそも「ダウンキャスト」と、string⇒floatとかint⇒floatのような「変換」 ってまったく意味が違うのにどちらも同じ「キャスト」と呼ぶ事の弊害ってあると思うんだが、 あまり指摘されないのは何でかな。
5 :
デフォルトの名無しさん :2007/09/29(土) 13:10:35
値型と参照型の違いについては理解できたいのですが、それがどのように クラスと構造体に関わっているのかわかりません。 ・インスタンスを作成した際に値型と参照型の違いがでるだけですか?
>>5 =演算子でオブジェクトコピーをしたい → 値型の構造体にする
=でいちいちコピーする必要ない → 参照型のクラスにする
それだけでしょ
7 :
デフォルトの名無しさん :2007/09/29(土) 16:15:45
>>6 アドバイスありがとうございます。
オブジェクトをコピーしたいというのは、データが小さい場合ですよね?(他にもあるかもしれませんが)
ここでいう、データとは何をさしているのでしょうか?
お手数をおかけしますが、よろしくお願いします。
(非静的な)フィールドのこと。
>>8 なんとなくですが、理解することができました。
ありがとうございました。
>>4 dynamic_cast/static_cast/reinterpret_cast/const_cast
C++だとこの4つに区分けしたわけだが、
dynamic_castとstatic_castは危険なキャストでなく、
コンパイラもプログラマも混同することはないため、
この2つにはC-Typeのキャストですませることが多い。(異論もあるだろうけど)
C#はキャストのタイプはdynamic_castとstatic_castの2つだけなので、
無駄に構文を増やさずC-Typeのキャストだけで行くことに決めたのだと思うな。
余談だが、継承関係にあるクラス間でexplicit/implicitで変換演算子を定義すると
変なことになる予感もする。DirectCastがあるとこの辺の混乱が防げる??
前スレでC#でExcelのシート作るには マクロを実行させてマクロで作ってしまえと言ってた奴がいたが これのサンプルとかあります?
>>10 そりゃさすがに異論出すよ。
static_castはC形式のキャストで代用できるが、dyamic_castは代用できない。
もし、クラスのダウンキャストにC形式のキャストを使っていたら、
それはstatic_cast相当(実行時チェックなし)で行われる。
言語の構文の話だろうに何を言ってんだ?
>>10 >継承関係にあるクラス間でexplicit/implicitで変換演算子を定義すると
さすがにそれはガードがかかってる。
CS0554: 派生クラスへ/からのユーザー定義の変換です。
>>11 解釈が違うかもしれないが…
全部VBAでやれ!
全部VBAでやれ!
全部VBAでやれ!
Reflectorっていうのを使ってみたら、実行バイナリのソースが全て忠実に見えてしまうんですが。 これはどうしようもないことですか?
逆に考えるんだ。 前任者の作ったソースのなくなった糞アプリもナントカできる。
>>15 解釈違いすぎだろ
動的にVBAのコード作りたいんだよ
19 :
デフォルトの名無しさん :2007/09/30(日) 00:54:08
いみわけわか
VS2005を使ってますが、特定のメソッドを使った場合に投げられる可能性のある例外を列挙することはできますか? void Hage() { // 例外を投げる可能性のある処理 } void Baka() { try { Hage(); } catch (...) { // 全て捕まえたい ... } catch (...) { ... } } 処理が同じならExceptionを捕まえるだけでいいと思いますが。
できません。
23 :
デフォルトの名無しさん :2007/09/30(日) 02:52:16
どんだけクリティカルな処理だよ あと.NETは最初のJITコンパイルが終われば結構速いぞ
asが特殊なIL吐くってわけじゃないしね。 あくまでtryブロックで囲ったりisで二回型チェック入れるよりはマシってだけでしょ。
is→キャストの2回チェックをしてたら無駄があるってだけの話だろ。 isチェックなしでいきなりキャストなら別に無駄なんて無い。
川俣は記事のネタのためならどんな紛らわしいことでも平気でするからな。 あんな意味ないパフォーマンス比較なんて馬鹿なことを平気でする。 で気になるasとキャストのシンプルな比較はやらない。 でもasの方がやや速いとか書いてる。 まあ正直そんな程度の速度差なんてどうでもいいことではあるが だったらasのが速いという結果を示せっての。 あの結果だけならむしろキャストのが若干速いようにも見えなくもないぞ。
なんか川俣をやたらと目の敵にする奴っているけど何だろうねw 読んだところ別に大げさでもないし間違った方向に誘導するような記事でもないと思うんだが。 こういう奴って2chの政治系の板によくいる、批評家に悪態をつけば自分が賢くなったと思っちゃう ネトウヨ君と同じメンタルなんじゃないの? ジャイアンが「のび太のくせに〜」って言うようなさw
草生やすほど面白いとは思えない
いまいち。 しかし勘違いしてたやつはいっぱいいたなw
皆IDLasmでILみたりしないのかね
>批評家に悪態をつけば自分が賢くなったと思っちゃう 思わねーよふつうは。
思うよふつうは。
>>31 il分かんないので教えてくれるサイト教えてください
DataGridViewのColumnのチェックボックスのコントロールなんですが、 ユーザが行を追加した場合のデフォルト値ってプロパティから決められなかったりします?
毎日決められた時刻になったらイベントが起こって何か処理をする という動きをするコントロールってありますでしょうか? スケジューラみたいな感じで
3つほどあるTimerクラスのどれかがそんなんだった
>>37 タスクスケジューラーにコマンドで追加か、
常駐APになるけどスレッドタイマーを使うのが一番簡単じゃねーかな
つうかExcelはSQLServerみたいにCLRのホスティング機能をつける気はないのかね C#でモリモリマクロ書きたいな VBAは普段あんま使わないから忘れちゃうんだよな
>>42 いちおうVSTOがそれだけど結局COMで中途半端なんだよね。
自分でいとうせいこうしてそういうの作ればいいじゃん
WSHのJScriptで書くのは結構気持ちいい
あえてVSTO買う気にはならんけど VSTOって使い勝手どう? Excelのシート作りたいだけなのに わざわざVSTOに金かけたくないんよね
47 :
デフォルトの名無しさん :2007/10/02(火) 05:42:27
変数とか代入とかわkらないんですけど どこで勉強すればいいのん?
VIP
質問です。 浮動小数点型の数字を指数部と仮数部に分けたいのですが、 どのようにしたらいいでしょうか?
普通にそういうメソッドなかったっけか?
ないでしょ。 だって内部では10を基数にしてるわけじゃないんだから、 有効数字を何桁にするかで答え変わっちゃうじゃん。 どうしてもやりたければ書式指定してToStringで一旦文字列にするしかないと思う。
>>50 .NETのSingle/Doubleは普通のIEEE 754形式だから、UInt32*/UInt64*にキャストしてビット演算すればおk
>>53 だから基数はいくつだよw
>>54 それは52の文章がわからないんじゃなくて基数って概念がわからないんでしょ。
IEEE 754形式の基数は2です。
で、底が2の指数部の値をもらって嬉しいのかよ?w
俺はすぐに思いつかんが、指数部・仮数部のビット列を得て役立つこともあると思う。 それはともかく、50はCでいうところの frexpのような関数が欲しいという可能性も考えられる気がする。 仮にそうだとしたら、msvcr??.dllからDllImportしろと言うところだが。
60 :
50 :2007/10/02(火) 23:23:41
>>51 ないっぽいです。
>>52 やっぱりそれしかないですかね…
C++/CLIでfrexpというのも考えたのですが、そこから基数を10に戻すのがわからない… orz
今やりたいのは仮数部の小数点を消した値と、指数がほしいので、frexpのように2の指数
で返されると後どうすればいいのかわからないので
>>52 の方法をとろうと思います。
ありがとうございました。
ソフトウェア開発者のテキストで勉強したら? 俺はもう憶えてない…
アンマネージ一切触ったことないけど、一度intにキャストしたやつと、 元の浮動点少数変数からキャスト後の値を引いたやつ、とかできないんだっけ?
ごめん勘違い。
<?php if (isset($_FILES)) { // Exif情報の全取得 $exif = @exif_read_data($_FILES["imagefile"]["tmp_name"], 0, true); if ($exif) { $exif_data = ""; // Exif情報の解析 foreach ($exif as $key => $section) { foreach ($section as $name => $value) { if (is_array($value)) { foreach($value as $k => $v) { $exif_data .= htmlspecialchars("$key.$name.$k: $v", ENT_QUOTES) . "<br />\n"; } } else { $exif_data .= htmlspecialchars("$key.$name: $value", ENT_QUOTES) . "<br />\n"; } } } } else { $exif_data = "Exif情報がありません"; } }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns="
http://www.w3.org/1999/xhtml " xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Exif関数サンプル</title>
</head>
<body>
<h1>Exif関数サンプル</h1>
<form method="post"
action="<?php echo $_SERVER['SCRIPT_NAME']; ?>"
enctype="multipart/form-data">
<input type="file" name="imagefile" />
<input type="submit" value="送信" />
</form>
<div>
<?php echo $exif_data; ?>
</div>
</body>
</html>
>>65-66 これはPHPで書いたものですが、C#で書いたらどのようになるかC#で書いてみてください!
お願いします!!
丸投げすんな
ASP.NETスレで聞くといい
70 :
デフォルトの名無しさん :2007/10/03(水) 11:13:35
やば誤爆った すまん
ネトウヨ君PGかw はっきり言ってネトウヨになっちゃう程度の知能ならPGとしての大成は望めないと思うよ
ウヨクもサヨクもPGとしての大成は望めないと思うよ
74 :
デフォルトの名無しさん :2007/10/03(水) 19:49:48
PGってなに?w
プロクター ギャンブル
ペログリ
PGが大成するとどうなるの?
SEになる
Super Ero
List<Hoge> 内の物を List<object> にAddRangeする場合、そのままじゃダメなんですが、どうすればいいですか
objectList.AddRange(hogeList.ToArray()) でとりあえずは出来るんじゃない? 効率がいいかどうかは知らないけど
C#って(ってかMSILって)飽和演算ないんでしょうか? 2枚のBitmapを飽和加算したいんですが、 各ピクセルのRGBそれぞれについてMath.Min(c,255)とかやりたくないんで...
Cの様にビット演算を駆使すれ
string str = @"c:\hoge.txt"; みたいに@をつければstrをファイルパスとして扱えますが、 str = "c:\hoge.txt"; のように、普通の文字列として値が入っているstrをファイルパス用の 文字列に変換するにはどうすればいいのでしょうか? str = @str; みたいなイメージなんですが…
>>85 @使った文字列リテラルは、単に\のエスケープをしなくなるだけで、同じstringだぞ。
世のシステムはこんなやつらが作ってんだぜ?
まあここはふらっとだし
エスケープ文字について調べてごらんよ。 >普通の文字列として値が入っている というあたりに、ちょっと理解不足がかいま見えるので。 string str1 = "c:\hoge.txt"; string str2 = "c:\\hoge.txt"; string str3 = @"c:\hoge.txt"; string str_newline = "c:\noge.txt"; として、それぞれメッセージボックスにでも表示してみれば分かるよ。
StringってUTF-16じゃなくてもいいの?ヌル文字入れたり、ushort[]のように使ったり。 あと、UTF-8とかUTF-32の文字列クラスってないの?
つbyte[] つSystem.Text.Encoding
93 :
デフォルトの名無しさん :2007/10/04(木) 16:39:41
文字列を後ろから順番に処理していきたい 例えば string s="1234567890"; を処理して 1,234,567,890 ってやろうとしてるんだが、文字列を後ろから一文字ずつ取得はどうやるんでしょう? Cだと、レングス求めてポインタをマイナスしてくとか、char str[100]とかで配列の後ろから処理してけば楽勝なんですが 同じような事出来ますか? 今はかなり煩雑なことやってます
for(int i=sLength-1;i>=0;i--) { char c =s[i]; }
>>93 >レングス求めてポインタをマイナスしてくとか、
Chars, Length
>char str[100]とかで配列の後ろから処理
ToCharArray
>>94 訂正
sLength → s.Length
とりあえず例が例になってないからおちつけ。
1、lengthでforループして後ろから順番に文字を取得して文字配列を作る。
>>94 と同じ
2、Stringインスタンスを作る。その際に文字配列を渡す。
>>94-98 サンクス
char[] c = s.ToCharArray();
これで文字列からcharの配列に変換出来るんですね。
感謝です。
符号無視で適当に作ったもの↓
string s = "123456789";
char[] c = s.ToCharArray();
int j = s.Length - 1;
string s2 = "";
for (int i = 0; i < s.Length; i++)
{
s2 = c[j--] + s2;
if (i % 3 == 2 && i != s.Length-1)
s2 = "," + s2;
}
または小数点部が無い場合は
string s3 = String.Format("{0:#,0}",int.Parse(s));
で簡単に出来ました。
@ITの資料ページは参考になりました。
有難うございます。
なんでchar配列にする必要があるの? ・・・まさかstringのインデクサで文字が取得できることを知らない?
101 :
デフォルトの名無しさん :2007/10/04(木) 18:21:28
XMLコメントをソースとは別の外部ファイルに書くなんてことはできないでしょうか? インテリセンスで説明を出せるのは便利なんですが、 コード中にだらだら書いてるとコメントだらけになって見づらいのでなんとかしたいのです。
>>100 インデクサという言葉も知りませんでした
今調べてそんなことが出来ると知りました
そのまんま s[1] みたいに使えるんですね・・・
便利。
103 :
デフォルトの名無しさん :2007/10/04(木) 21:17:19
as検索しても一箇所しかなかったんだが、これか? heightMapInfo = terrain.Tag as HeightMapInfo; これのことなら、ObjectをHeightMapInfoにダウンキャストしてるだけ。
コードみてないけど、変換演算子でも定義されてんじゃね
asでユーザ定義変換は呼ばれないよ。
107 :
デフォルトの名無しさん :2007/10/04(木) 21:43:37
>>104 TerrainProcessor.cs の
model.Tag = new HeightMapInfoContent(heightfield, terrainScale, terrainBumpiness);
というところで、 HeightMapInfoContent というクラスを model.Tag へ代入しているのですが、
HeightmapCollision.cs の
heightMapInfo = terrain.Tag as HeightMapInfo;
というところでは、 その model.Tag に代入された HeightMapInfoContent クラスを、
HeightMapInfo クラスとして取り出しています。
>>105 変換演算子は定義されてないと思います。
>>107 処理系持ってないしXNA触ったことないから、ソース見た印象でしか答えられないんだが、
おそらくコンパイルタイムにシリアライズされて、ランタイムにデシリアライズされることを利用してる。
即ち、HeightMapInfoWriterを用いて、HeightMapInfoContentをHeightMapInfoと同じ形式で
シリアライズすることによって、デシリアイザを騙して実行時にHeightMapInfoにデシリアライズ
されるようにしているんだと思う。推測だけど。
109 :
108 :2007/10/04(木) 22:05:37
要するに、HeightmapCollisionPipelineディレクトリとHeightmapCollisionディレクトリの プログラムが実行されるタイミングが違うってところが味噌だね。これも適当だけど。
110 :
デフォルトの名無しさん :2007/10/04(木) 22:14:19
>>108 分かりやすい説明ありがとうございます。
なんとなく処理の内容が掴めました。
override している辺りが最高に怪しいですね。
>107 asは型が違う場合、nullが返るだけだから とりあえず動くんじゃないかと。
DataGridViewRow row = new DataGridViewRow(); row.CreateCells( datagridview ); として行の初期化処理を行った後、 row.Cells[ "Key" ] = value; と値を入れ込んで、最後にdatagridviewに追加したいのですが、 CreateCellsではセルのName属性までは設定してないようです。 datagridviewで設定してある各列のName属性をrowのCellsに設定する 良い方法はありますでしょうか? それともforeachで一個ずつ指定して行かないとダメでしょうか。
ああ、CellとかColumnにName属性があるわけじゃなく、 datagridviewで単にColumnのコレクションのキーをNameとして表示してるだけ…なんですかね? 要するに DataGridViewRow row = new DataGridViewRow(); row.CreateCells( datagridview ); //なにか row.Cells[ "Key1" ] = value1; row.Cells[ "Key2" ] = value2; … ということがしたいだけなんですが…
lockを使った同期についてなんですが、すべてのスコープから見えるところに object lockObj = new object(); を作り、すべてのスレッドのすべてのメソッドの中身をlock ( lockObj ) で 囲ってやれば、シングルスレッドと同じような意識でコーディングできるという 考えは正しいでしょうか? 周期的にある処理を呼び出したいのでTimerのTickを使ってるんですが、 必ずしもn秒毎とかじゃなくて、他の処理の邪魔にならないタイミングで 呼ぶようにしたいのです。
>>114 ロックは局所的に考えて使わないとデットロックとかいろいろ起きるぞ。
なにも考えないでというのは無理。
× デットロック ○ デッドロック
>>114 よくある方法としてはスレッド間で共有する変数とその操作をクラスでラップする。
class ThreadShare {
int i, int j; // 共有する変数
object sync = new object(); // 同期オブジェクト
public void 操作1() { lock(sync){ i, j へのアクセス} }
public int 操作2() { lock(sync){ i, j へのアクセス} }
}
lock(this) でも良さそうなものだが、thisは外部から使われる可能性があるので
privateに同期用のobjectを持つことが推奨されている。
そういう意味でどこからでも見える位置にsyncを置くのは良くない。
118 :
デフォルトの名無しさん :2007/10/05(金) 11:19:11
IEやFirefoxなどのブラウザに付いている様なキャッシュ機能を付けたいのですが、 どこかにStreamベースの実装例はないでしょうか?
構造体は値型なので、構造体をメソッドに渡すときは、できるだけrefを使うと思うんですが、 .NETのライブラリでrefを使ってるところを見たことがありません。 たとえば Graphics.DrawString は構造体 RectangleF を受け取りますが、refは使わないでコピーしてます。 このメソッドはGDI+の Gdiplus::Graphics::DrawString に当てはまると思いますが、 ネイティブのC++での定義を見ると const Gdiplus::RectF & なので、ちゃんと参照使ってます。constなので書き換えもされません。 C#のほうでrefが使われていない理由が分からないんですが、何か理由があるんですか。
JITコンパイル時に最適化されるから。 構造体をポインタや参照で渡したり返したりするのは、 オプティマイザが馬鹿だった時代の名残にすぎない。
されてるといいね。
>>119 P/Invokeなど特殊な用途を除いてライブラリではサイズの大きな構造体がそもそもない。
サイズが小さければ参照よりコピーの方が効率的。
関数から構造体を返す場合関数の値(戻り値)で返す。
refを使うケースは2値以上返す必要がある場合に限られる。
>>120 値で渡したのに最適化されて参照わたすのかよ
おかしくね?
論理的に同じことなら何してもかまわんさ
時々思うんですがイベントで if (this.ItHappened != null) this.ItHappened(this, new EventArgs()); みたいに明示的にnullチェックする必要があるのは何故なんでしょう? this.ItHappened(this, new EventArgs()); だけでnullチェックを内包してくれた方が便利だと思うんですが。 パフォーマンスの観点でも無視できる範囲、というかnullチェックしないでいい場面自体思いつかないですし。 自分の場合毎回nullチェックするのが馬鹿馬鹿しいのでInvokeItHappened()のようなメソッドを定義しているのですが・・・。 まあ割りとどうでもいい素朴な疑問です。
126 :
125 :2007/10/05(金) 20:53:18
あー書き込んだ瞬間理由がわかりました。 後者だとイベントを実行する必要がない場合でも無駄にEventArgsがインスタンス化されてしまうからですね。 スレ汚し失礼しました。
違うし
イベントごとにOnItHappened(EventArgs e)を作れってMSDNに書いてあるだろう?
使っていないイベント一つ一つにインスタンスを持たせるのはもったいないからnullにしたいというのとか コンストラクタでデリゲート渡してそのまま変更しないとかの場合にはnullになるケースがないから nullチェック要らないとか
>>125 nullチェックが何度も要るってのはどこか設計がおかしいだろ。
protected void OnItHappened(EventArgs e){
if (this.ItHappened != null) this.ItHappened(this, e);
}
普通はこうやって定義して一回で済むと思うんだが。
131 :
125 :2007/10/05(金) 21:03:12
>>128 そういえばそうでした・・・
じゃあ明示的なnullチェックが必要になっているのは何故なんでしょうね?
>>129 一行目に関しては毎回暗黙的にnullチェックしてくれれば問題はなく、
二行目に関しては余分なnullチェックくらいではパフォーマンスへの影響は皆無だというのが自分の考えです。
まあいずれにせよOnItHappenedパターンではイベントを呼び出すのは一箇所なので
余分にコーディングが必要になってもさほど問題はないってことなんですかね。
まあ正直eventにnullチェック要求するのは美しくない思うけどね C++/CLIみたいにraiseが欲しかった
>>128 2005になってからMSDNのその場所は読んでなかった。
今は委譲モデルと継承モデルを両方サポートしろになってるし、
null判定後にnullになる可能性があるからtempにコピーしろとか書いてありますね。
EventHandler temp = myEvent;
if (eh != null) temp(this, new EventArgs());
ちゃんと読まないといかんな。
>>133 委譲でも継承でもないイベントモデルがC#3.0で追加されてる
Partial Method、これはある意味最強
>>132 俺は逆に美しいと思うよ。
VB系の暗黙の〜見てると反吐が出る。
>>134 ちょっとでも、用途限られるけどね。
あと、副作用強い。
a = 0;
this.SomePartialMethod(a = 10);
の挙動とか考えるとちょっと怖い。
呼び出しが削除されたらaが昇格されないってこと? どうせ使用されないんだから問題ないんじゃないの?
そこはTrace, DebugオブジェクトやConditionalAttributeも同じ。
>>136 の例だとパーシャルメソッドの実体が定義されなければaが10にならない。
人間に直接呼ばれないメソッドのための機能でしょ?
>>133 みたいなのシングルスレッドなら必要ない?
意図せずして他のスレッドから呼ばれるかもしれないから、要る。
でもそこまで気にするんだったら if (obj.SomeProperty is SomeType) (SomeType)obj.SomeType ...はやめろとか 考えてたらキリが無いと思うけど
as 使えよ
>>135 暗黙の〜が何を意味しているか分からないけど
イベントに関してはVBのRaiseEvent方式の方がずっと直観的で美しいと思うけどな。
もちろんその美しさはイベントの本来の姿を隠蔽することによって得られたものではあるが、
かといって何か不都合があるほど隠蔽しているわけでもなし。
せっかくイベントをデリゲートから分離したのに、 結局まるっきりデリゲートってのが気に食わん
146 :
デフォルトの名無しさん :2007/10/06(土) 01:32:14
イベントをデリゲートから分離 ↑なにこのアフォw
VB.netの話しじゃね
forループ内でThreadPoolを使用したメソッドを3回実行した場合、 実行される順序を1、2、3と固定にしたいのですが、どんな手があるでしょうか?
>>149 それぞれスレッドの開始時にフラグを立て、
二番目のスレッドの先頭で一番目のフラグが立つまでブロックし、
三番目のスレッドの先頭で二番目のフラグが立つまでブロック。
これくらいしかないんじゃない?
>>149 ひとつのスレッドで3つの処理を順に処理する。早い話が専用threadpoolを作る。
BlockingQueueがあれば実装は楽だが、見当たらないので作ってみた。
class BlockingQueue<T> {
object sync = new object();
Queue<T> qu = new Queue<T>();
public T Dequeue() { lock(sync) {
while (qu.Count==0) Monitor.Wait(sync);
return qu.Dequeue(); }}
public void Enqueue(T item) { lock(sync) { qu.Enqueue(item); Monitor.PulseAll(sync); }}
}
class SinglePool { struct QueueItem { public WaitCallback callback; public object state; }; Thread worker; BlockingQueue<QueueItem> bq = new BlockingQueue<QueueItem>(); public SinglePool() { worker = new Thread(Worker); worker.IsBackground = true; worker.Start(); } void Worker() { for (;;) { QueueItem qi = bq.Dequeue(); qi.callback(qi.state); } } public bool QueueUserWorkItem(WaitCallback callback, object state) { if (callback == null) return false; QueueItem qi; qi.callback = callback; qi.state = state; bq.Enqueue(qi); return true; } public bool QueueUserWorkItem(WaitCallback callback) { return QueueUserWorkItem(callback, null); } }
初心者向けによさそうな本が出ていたよ。
なんて本か書いてくれよ…
System.Drawing.Imageクラスを継承したいのですが、Imageクラスのコンストラクタのアクセスレベルがinternalのため参照できず、コンパイルエラーとなってしまいます。 このようなクラスを継承する方法はないのでしょうか。
それ以前にどうして「System.Drawing.Imageクラスを継承したい」の?
どうせ継承しても無駄だよ System.Drawing系は継承によるカスタマイズとか基本的に無理
158 :
149 :2007/10/06(土) 14:16:16
その各メソッドってなんでスレッドプールになってんの? まあ市販のコンポーネントとか都合なら仕方ないかもしれないけど そもそも現在のスレッドで同期的に実行するとか、 単に終わるまでブロックするとかの選択肢は取れないのかな?
>>155 処理1の直後に処理2の起動処理を突っ込んじゃだめなの?
匿名メソッドとか使えばさくっと書けそうだけど。
161 :
149 :2007/10/06(土) 17:50:44
>>159 説明が分かりづらくてすいません、正しくは
forループ内でThreadPoolを利用して、特定のメソッド(SampleMethod)を3回実行した場合
でした。以下のような感じです。
WaitCallback wc = new WaitCallback(SampleMethod);
for (int i = 1; i <= 3; i++)
ThreadPool.QueueUserWorkItem(wc, i);
151-152さんので実現できていますが、他に効率的な方法ありますでしょうか?
>>161 delegate{ SampleMethod(1); SampleMethod(2); SampleMethod(3); }
みたいな匿名メソッドを一個だけ起こせばいいんでね?
163 :
149 :2007/10/06(土) 18:25:56
>>161 理解力が乏しいので、もう少しお詳しくお願いします。非同期でSamleMethodを実行したいのでThredPoolを利用してます。
順序を固定して非同期って?
165 :
149 :2007/10/06(土) 18:29:49
非同期と言うよりはFormの操作を受け付けたいのが目的です。
あるオブジェクトから他のオブジェクトのイベントを呼び出すには どうするのが安全でしょうか? 例えば、ボタンAがクリックされたときにある条件がtrueなら、 ボタンAの代わりにボタンBがクリックされたことにするとか 単純に、 A_Click( object sender, EventArgs e ) { B_Click( sender, e ); } とするのは、本来Bがクリックされたときに渡されるsenderとeとは 別のものが渡されて、動作がおかしくなる場合とかないのかと思いまして。 ユーザがBをクリックしたときに呼ばれる場合と同じ条件で呼ぶには どうすればいいのでしょうか?
>>166 まず落ち着いて文章を推敲した方がいいでしょ。
何言ってるのかワケワカランよ。
ThreadPool.QueueUserWorkItem(delegate{ SampleMethod(1); SampleMethod(2); SampleMethod(3); });
>>166 ボタンなら
>>168 の通りにbuttonB.PerformClick
一般的な話ならBのイベントの動作をメソッドに切り出して
別オブジェクトのイベントからもそのメソッドを呼ぶようにする。
まずはsenderとかEventArgsの実体がどうなってるか調べるべきじゃない?
SerializationBinderについての質問なんですが、 現在、 以下のような感じで処理しているのですが、 Assembly[] asms; List<Assembly> referenceAsm; public override Type BindToType(string assemblyName, string typeName) { Type t = null; t = Type.GetType(String.Format("{0}, {1}", typeName, assemblyName)); if (t != null) { return t; }
172 :
50 :2007/10/06(土) 22:46:11
>>171 続き
else{
for (int i = 0; i < asms.Length; i++){
t = asms[i].GetType(typeName);
if (t != null){
return t;
}
}for (int i = 0; i < referenceAsm.Count; i++){
t = referenceAsm[i].GetType(typeName);
if (t != null){
return t;
}
}
return null;}}
これだと、List<T>などが渡されたときにうまくTypeを取得できずにSerializationException
が発生してしまいます。
これを解決するにはどのようにしたらいいでしょうか?
>>172 読みづらくなってしまってすいません orz
あと、名前も間違って入力されてしまいました orz
174 :
デフォルトの名無しさん :2007/10/07(日) 00:17:14
リファラを指定してダウンロードしたいです System.Net.HttpRequestHeader.Referer というのを見つけましたが使い方が分かりません 助けてください
WebClient.Headersを使うのが楽。 WebClient wc = new WebClient(); wc.Headers[ "Referer" ] = 〜; というふうにヘッダを追加したあと、Download*メソッドを使えばいい。 携帯からなんでスペルが間違ってるかも知れないが。
OpenFileDialogとかSaveFileDialogとかのRestoreDirectoryプロパティの 意味がいまいちよくわかりません。 教えていただけますでしょうか。 ダイアログを開いて閉じた後、もう一度開いたときに前回開いていたディレクトリを 覚えていて、そこを開いた状態にするのかと思っていたんですが、 falseにしても前回のディレクトリを開くみたいで…
177 :
175 :2007/10/07(日) 00:32:04
上のやり方ではヘッダを追加できないかもしれないので、その時は wc.Headers.Add("Referer", 〜) で。
>>176 現在のって訳されてるから分からんだろうけど、要はカレントディレクトリ
あー、じゃあユーザがダイアログの中でディレクトリを移動したときに、 閉じてもう一回開くと、移動先のディレクトじゃなくて移動前に開いていた ディレクトリを開くってことでしょうか?
そっちはそっちでシェルが独自にレジストリで管理してる
>>175 ,177さん
どうも有難うございました
助かりました
これから頑張ってやってみます
ダイアログの中でディレクトリを移動する前と後で Environment.CurrentDirectoryを見てみろ
ありがとうございます
ListViewの複数の項目をマウスで選ぶとき、点線の枠が出ますが、 これをExplorerみたいに、色の付いた枠・背景で描くにはどうしたらいいですか。
オーナードロー
読み間違えた ダブルバッファリングを有効にするとなぜかそうなる
NotifyIconでバルーンを出そうとしているのですが、 ShowBaloonTipを呼び出しているのにもかかわらず、バルーンが表示されていません 呼び出しているのはデバッグモードでステップ実行して確認しています バルーンが表示されないのはどのような原因が考えられるでしょうか? 他のバルーン関係のイベントで呼び出すメソッドは空になっているので、 呼ばれた瞬間クリックイベントが呼ばれているとかもないみたいです
バルーンがさりげなく別のウィンドウの下に潜ってるとか、たまにある。
マウスの自動操作をしたいのですが、 カーソルを動かすのはCursorクラスで出来ます。 しかしクリックを自動で行う方法は見当たりません。 WindowsAPIを使うしかないですか
そんなウィルス今時流行らないだろ
ネトゲのボットじゃねぇの
DateTimePickの上向きのボタンが押されたか、下向きのボタンが押されたかって イベントとれないものでしょうか? イベントのリスト探したけど見あたらなかったので…
Valueの変化で判断つくのでは?
ChangeValueは他で値を入れ込んだりしてるのであまり使いたくないなぁと ユーザがボタンを操作したってイベントがあれば助かるんですが…
Mouse_DownイベントののPointとかは?
ネイティブのDateTimePickerにもどっちをクリックしたかの notifyメッセージは無かった気がする 場所で判断するにも、環境とかビジュアルスタイルとかで大きさが変わるから 難しそう
> Windows NT/2000:この関数は、SendInput 関数にとって代わられました。SendInput 関数を使ってください。
それ以前に頓珍漢だよねw なんでこの命令口調の「プチ北方謙三」クンってえのは例外なく馬鹿なんだろうね
202 :
デフォルトの名無しさん :2007/10/08(月) 23:36:16
treeView1.TopNode treeView1.SelectedNode で、ツリーノードが取り出せるのはわかるんですけど、 指定した場所のノードを取り出したいとき(プログラムで指定する)はどうすればいいのでしょうか?
いや、どうやって指定するのさ
tree.GetNodeAt とか?
205 :
デフォルトの名無しさん :2007/10/08(月) 23:44:59
treeViewの内容を全て保存(テキスト形式で)したいんです。 そのばあい、どのように取り出せばいいのか悩んでいるんです
内容を全部なら普通に再帰させていけばいいじゃん?
207 :
デフォルトの名無しさん :2007/10/09(火) 00:00:44
最初に、treeView1.TopNodeで取り出して、 その後は、どんな命令を繰り返せばいいのですか? 初心者ですみません
extern "C" { ... } の意味がよく分からんのですが、 これってなんのおまじない?
>>207 とりあえずコレでノード全部列挙できると思う。
ちゃんと試してはいないが。
using (StreamWriter sw = new StreamWriter(fileName))
{
if (treeView1.Nodes.Count > 0)
{
TreeNode node = treeView1.Nodes[0];
while (node != null)
{
sw.WriteLine(node.FullPath);
if (node.Nodes.Count > 0)
node = node.Nodes[0];
else if (node.NextNode != null)
node = node.NextNode;
else if (node.Parent != null && node.Parent.NextNode != null)
node = node.Parent.NextNode;
else
break;
}
}
}
って、階層が深いところから戻ったときに止まっちゃうな。 やっぱ再帰が無難か。
関数ってのがいまいちよくわからないんだけど・・・
213 :
209 :2007/10/09(火) 00:18:26
>>207 これでOK.
public void Save(String fileName)
{
using (StreamWriter sw = new StreamWriter(fileName))
{
_Save(treeView1.Nodes, sw);
}
}
void _Save(TreeNodeCollection nodes,StreamWriter sw)
{
foreach (TreeNode node in nodes)
{
sw.WriteLine(node.FullPath);
Save(node.Nodes, sw);
}
}
ちなみに、ロードのことも考えるとFullPath書いてくだけじゃあとで面倒になるかもよ。
ロードのことまで考えるならXMLDocument にして Save() Load() した方がよさそうだなぁ。
216 :
デフォルトの名無しさん :2007/10/09(火) 00:40:39
_Save関数の中身ですが、Save(node.Nodes, sw); ではなくて_Save(node.Nodes, sw); になりますか?
あぁ、そうだね。ごめん。
218 :
デフォルトの名無しさん :2007/10/09(火) 00:46:59
大変助かりました。 ロードも必要ですよね。 XMLDocumentにするというのは、タグで囲むようにテキストファイルに出力するということですか?
>>218 System.Xml.XMLDocument に読み込ませてあげれば
自動的にタグ付きで出力してくれるよ。
軽く作ってみたんでよく読んでみて。
まずは保存から。
public void SaveToXml(TreeView tree, string fileName)
{
XmlDocument xml = new XmlDocument();
XmlNode xnode = xml.CreateNode(XmlNodeType.Element, "tree", null);
_SaveToXml(xml, xnode, tree.Nodes);
xml.AppendChild(xnode);
xml.Save(fileName);
}
void _SaveToXml(XmlDocument xml, XmlNode parent, TreeNodeCollection nodes)
{
foreach (TreeNode node in nodes)
{
XmlNode child = xml.CreateNode(XmlNodeType.Element, "node", null);
XmlAttribute xa = xml.CreateAttribute("name");
xa.Value = node.Name;
child.Attributes.Append(xa);
xa = xml.CreateAttribute("text");
xa.Value = node.Text;
child.Attributes.Append(xa);
_SaveToXml(xml, child, node.Nodes);
parent.AppendChild(child);
}
}
ツリーを総なめしながら同時にXMLDocumentを作成して最後に保存。
220 :
209 :2007/10/09(火) 01:02:37
続いて読込。 XMLファイルからXMLDocumentを作成して XMLDocumentを総なめしながらツリーを構築。 public void LoadFromXml(TreeView tree, string fileName) { XmlDocument xml = new XmlDocument(); xml.Load(fileName); XmlNode xnode = xml.DocumentElement; _LoadFromXml(xnode, tree.Nodes); } void _LoadFromXml(XmlNode parent, TreeNodeCollection nodes) { foreach (XmlNode child in parent.ChildNodes) { if (child.Name == "node") { TreeNode node = new TreeNode(); node.Name = child.Attributes["name"].Value; node.Text = child.Attributes["text"].Value; nodes.Add(node); _LoadFromXml(child, node.Nodes); } } } エラー処理とかまったく書いてないんでその辺は補って。 つか便利そうなんで俺もこれ使うw
Tree構造なんてXMLがウハウハ喜ぶデータ形式だよね
Name, Text 以外の情報もAttributesを増やせば対応できるし TreeViewとXMLの相性は抜群だな。
223 :
174 :2007/10/09(火) 02:21:28
wc.Headers.Add("Referer", 〜); これで簡単に出来ました どうも有難うございましたm(__)m
C#でManagedDirectXを使っているのですが、適切なDirectxバージョン(dll)が無い場合例外が発生します。 バージョンが無い場合の例外に対する警告を表示させたいのでtryで囲もうと思うのですが、 例外が発生するのは何をはじめてやったときなのでしょうか?
WPFについてなのですが、他に適切なスレが見つけられなかったので、ここで質問させていただきます。 スレ違いでしたらすいません。 <Ellipse Width="300" Height="300" Canvas.Top="50" Canvas.Left="50" Fill="Transparent" Stroke="Black" StrokeThickness="1"/> このような楕円がCanvas内にあります。 任意の座標が、この楕円の境界線上にあるかどうかを調べるにはどうすればよいのでしょうか。
226 :
デフォルトの名無しさん :2007/10/09(火) 07:34:30
それってWPFどうでもよくね? 楕円の式に突っ込めばよくね?
確かにこの場合はこの式使えばいけますね。 (x-50)*(x-50)/(150*150) + (y-50)*(y-50)/(150*150) == 1 ただ、今後楕円だけじゃなくて、もっと複雑な曲線についても同様なことをするつもりなので、 ちょっとこれではだめそうです。 説明不足ですいませんでした。
228 :
デフォルトの名無しさん :2007/10/09(火) 10:25:11
質問なのですけれど、SQLをDataSetにセットし、その中の必要な列だけ取り出して表示させるにはどのようにすれば 宜しいでしょうか? SELECT A,B FROM TABLE このようなSQLを取得し、AだけをDataGridに表示させたいのですが・・・・。
Bのカラムを非表示
231 :
230 :2007/10/09(火) 10:50:45
>>230 ありがとうございます。
なんとか解決することができました。
XmlTextWriter で XHTML を生成することを考えています。 動的に内容が変化しない部分が多く WriteStartElement などのメソッド呼び出しが酷く無駄に思えるのですが、 その部分を手っ取り早く埋め込むのに良い方法はありませんか?
ラップしたクラス作っとけばいいんじゃね?
235 :
デフォルトの名無しさん :2007/10/10(水) 16:05:44
ネットワーク図(PERT図みたいな)を描画するプログラムを開発いています。 ただ、固定的な図ではなくて、データによって変えたいのですが苦戦しています。 今、考えているのが、テキストでデータを与える形です。 (1,2はノード1からノード2へ繋がるということ) 1,2 1,3 2,4 3,4 のようにデータを与えます。 ただ、実際に描画を実現させることはできていません。 ほとんどプログラムが思い浮かばない状態なのですが、c#は図形絵画の関数が豊富なので、やってみたいと思いました。 図が描画できればokなので、生成されたノードなどをマウスで操作するなどは必要ないです。 アドバイスお願いします。
適当に点並べて線引けばいいでしょ
重ならないように点をとるようにしないといけないから面倒くさいな。 グラフ理論とかの知識があればいいのか?
点の並べ方は正直センスの問題でしょ どういうのがいいのか俺にはわからん 考えられる案としては、点三つなら正三角形、四つなら正方形・・・と増やしていって、 あるとこまで行ったらそれを縮小してその外側に三角形、四角形・・・と増やしていく それを繰り返していく感じかな
>>238 それだと三角形・四角形が増えたときに
結びたい点と点の間に別の点が入ってきたりしない?
ただ点をとるだけじゃなくて線がどのように引かれるかも考えないといけないから大変だな。
線が重ならないようにするには、外周にいくたびにちょっと回転させれば 大丈夫だと思うよ
とりあえず依頼者は例になるような画像を提示すべし。
C#関係ないな
オープンソースでいくらでもあるだろ 適当に探してパクれ
244 :
デフォルトの名無しさん :2007/10/10(水) 19:56:40
そういうノードの描画は ミクシなんちゃらってミクシのマイミクとかいうのを グラフ化するソフトがイカしてたなそういや
ミクシィグラフ? トーナメント表みたいなのがみやすいと個人的には思う
C#.netではじめるTCPネットワークプログラミング ってのを買ったわけでつが、 どうも内容が薄くて、これは一体?とかこのエラーは何?とか 〜もしたいんだがどうすれば? とか そういう痒いところに手が届かない本でした で、もっと突っ込んだ内容のネットワーク本が欲しいんですが ネットワークに特化した解説書でお勧めなのってありまつか?
MSDNと普通のSOCKET関連を勉強したほうが良くない? TCPのサイトや本は死ぬほどあるよ。
死ぬほどあるならからおすすめ希望なわけだが 死ぬほどあるんならひとつくらいあるでしょ?
MSDN
MSDN以外では? DOBONチャットを参考にしてみたけど あれよりいい教材がMSDNにあるなら トピ名を教えてくれや
252 :
248 :2007/10/11(木) 00:52:02
定番のマスタリングTCP/IPシリーズなんてどうでしょう?
PropertyGridで、int型のプロパティを16進で表示したいのですが、 どうしたら良いでしょう?プロパティをstringにすればできるんですけど、 入力は 16 進でも 10 進でも受け付けるようにしたいんです。
254 :
デフォルトの名無しさん :2007/10/11(木) 05:07:25
.NET1.1のPrintPreviewContorlでMouseWheelイベントが拾えないのですが 解決方法を教えてください。 this.printPreviewControl1.MouseWheel += new MouseEventHandler(printPreviewControl1_MouseWheel); としているのですが、 private void printPreviewControl1_MouseWheel(object sender, MouseEventArgs e) { } を呼び出してくれないのです
>>253 TypeConverter 派生クラス書いて TypeConverter 属性につける
257 :
253 :2007/10/11(木) 06:52:48
>>256 やはりクラスを作らないとダメなんですね…。
楽しようと思ったのが間違いでした。がんばります。
助けてください・・・今、急にVCでプログラム組む事をしているのだけど、 関数の補間は、どの様にするのでしたっけ? int PASCAL WinMain(HINSTANCE〜 とかを入れています。 今は何とかカット・ペーストでやっているのですが、泣きが入ります。 関数の入力とか、上手い使い方とか、サイト等を教えてもらえると有り難いです。
Ctlr+Space ってスレ違いw
260 :
254 :2007/10/11(木) 15:41:22
>>254 の質問ですが、MouseEnterイベントでFocus()を実行したら動きました。
で、別な質問なのですが、PrintPreviewControlをAcrobatみたいにドラッグで
スクロールするようにしたと思ったのですが、それらしいプロパティなどが
見あたりません。
なにか良い方法を教えてください。
お願いします。
C#で、POP3のproxyプログラムを作成したいのですが(具体的には添付ファイルをすべて削除)、POPのproxyプログラムサンプルとかありますか?
うわぁ・・・
>>261 あのなあ、それってプログラム作成って言うの?
最近自分で作らないでサンプルプログラムとか言うやつ増えたなあ
仕組みを調べて自分で作るものだとおもってたけどな。
仕組みを調べる一番早い方法がサンプルプログラムってのは一理あるけどな
C#じゃなきゃいろいろあるんじゃね
2008からは.NETの中のソースまで見れるようになるらしいね。
マジで?それは非常に参考になる。
今でも見れるんじゃね?
271 :
デフォルトの名無しさん :2007/10/12(金) 02:14:01
ソフトフェアなんてソースにたいした意味はない 設計資料などを公開しない限りソースだけでライブラリ全体を把握できる奴なんて極少数
今WPFを勉強しています C#で書いているんですが、100枚の画像を順に表示するプログラムを組みたいのですが、 keyUpで次の画像へ、keyDownで前の画像を表示したいのですが、画像の場所を100枚ともあらかじめ指定しないといけないのでしょうか? 001.jpgから100.jpgまでfor文か何かで回すにはどうすればよいのでしょうか?
274 :
デフォルトの名無しさん :2007/10/12(金) 11:22:35
ん? 普通にforで回せばいいよ iに回数が入っているわけだから
i.ToString() + ".jpg"
1.jpgじゃなくて001.jpgになってるなら i.ToString("000")+".jpg" だな
質問です。 リトルエイディアンに従ったバイト配列の扱いなのですが、 0x12345678 をbyte配列にしようとしたら i = 0x12345678; byteArray = BitConverter.GetBytes(i); Console.WriteLine(BitConverter.ToString(byteArray)); のようにすればいいのはわかったのですが、 逆に 0x78 0x56 0x34 0x12を uint配列に0x12345678のように格納するにはどのようにすればいいのでしょうか? お願いします。
2つ数字を入力して四則演算するプログラムで、 例えば10と2だと 12、8、20、5が答えですが、 実行すると一気に4つ表示されるのですが、1秒おきに表示させる方法ってどうすればいいのでしょうか? 最初に足し算の12が表示され、1秒後に引き算の8が表示される、というものです
Thread.Sleep(1000)
>>277 byte配列をuintに格納するって話だよな?
ビットシフトを使うと良いよ。
uint i = 0x12345678;
byte[] byteArray = BitConverter.GetBytes(i);
Console.WriteLine(i.ToString("x"));
uint j = (uint)((byteArray[3] << 24) + (byteArray[2] << 16) + (byteArray[1] << 8) + byteArray[0]);
Console.WriteLine(j.ToString("x"));
出力
12345678
12345678
281 :
280 :2007/10/12(金) 12:55:01
こんな関数も用意されているみたいだね。 BitConverter.ToUInt32 こっちの方が簡単そうだ。
マウスが押されているかどうかを調べたいのですが、 if (mouseDown()) { i++; } は使えないんでしょうか?エラーが出てしまいます こうしたい場合、どうすればよいでしょうか?
moseDown() の中身はどうなっているんだ?
284 :
デフォルトの名無しさん :2007/10/12(金) 13:01:57
ComboBoxをDropDownListにした状態(HTMLの<select>タグみたいな感じで)で、 その中の文字列を右寄せにしたのですが、どのようにやれば良いのでしょうか? TextBoxなどと違ってTextAlignプロパティが無いので、何か強引な方法でもいいので 解決方法を教えてください。
285 :
282 :2007/10/12(金) 13:06:07
中身・・・ですか すいませんよく分かりません 最初が0で、クリックするたびに数字が1増えて表示されるプログラムを作ろうとしています。 学び始めたばかりなのでホントよく分かってない状況です。
>>284 オーナードロー
>>285 mouseDown()ってのはどこから出てきたんだろうね?
そのクリックされるコントロールにClickイベントを付ければいいよ
287 :
284 :2007/10/12(金) 16:21:03
VCLのTDrawGridに似たようなコンポーネントはありますか
DataGridViewは?
290 :
デフォルトの名無しさん :2007/10/12(金) 22:30:38
treeViewを画像にすることってできますか? 今、treeViewを印刷できるようにしたいと思い、treeViewを画像にして(ビットマップなどの) 印刷しようと考えています。 または、画像にしないでtreeViewを印刷する方法があれば教えてください。 よろしくお願いします。
対象ウィンドウのデバイスコンテキスト取得して BitmapのデバイスコンテキストにBitBlt
文字列だけだったらGraphicsで自分で描いても簡単なんじゃね
すみません。"Fri, 5 Oct 2007 9:0:59 GMT" をパースできる書式は何ですか? "ddd, d MMM yyyy H:m:s zzz" かと思ったのですが、どうもタイムゾーンの書式が違うみたいで……
.NET3.5でListViewの1行目の編集ボタンを押すと、EditItemがNullになるんですが、これが仕様なんですか? 2行目とか3行目だと、ちゃんと値(?)が入ってるのですが
Exact使わんでもParseできるが? zzzは+9:00とかその辺
DateTime.Parse("Fri, 5 Oct 2007 9:0:59 GMT"); で普通に通った。
>>295-296 なんですとー(;´Д`)
って、これ RFC1123 の先行セロを省略したパターンか。
"ddd, d MMM yyy H:m:s GMT" でパースできました。すいませんありがとうございます。
ちなみにほかの書式もいっぱい突っ込んであるんで ParseExact で一気にやるつもりでいました。
298 :
デフォルトの名無しさん :2007/10/13(土) 00:47:05
VB6とVB.NETではVB6のEXEのほうが高速に動作するのでしょうか?
299 :
デフォルトの名無しさん :2007/10/13(土) 01:11:25
フォルダのセキュリティタブにそのフォルダを操作できるアカウントが表示されますが C#でフォルダのパスを指定すると、そのアカウント一覧を取得するというのをやってみたいのですが そういうライブラリってあるのでしょうか?
NGENのとこは無視しとけ、大抵は大して変わらん。 あんな極端な例出されても意味がないわ。
302 :
デフォルトの名無しさん :2007/10/13(土) 03:51:02
グラフィック系やシステム常駐系のアプリを.NETなんかで書かれたら冗談じゃないな 何系なら許せるか考えてたら、なにも浮かばなかった・・・
Paint.net使ってみろ
>>299 Directory.GetAccessControl...かな
306 :
デフォルトの名無しさん :2007/10/13(土) 12:11:10
>>303 Paint.netで金を取ることは不可能でしょ
あんなの1円の価値もなくね?
Paint.net程度ならC/Win32APIで書いても大した工数掛からない
1円の価値もないお前が言ったところで…
308 :
デフォルトの名無しさん :2007/10/13(土) 12:21:49
>>307 1円の価値もないお前が言ったところで…
スルーしろよ……
AudioEncoderは実に重宝してるな 対応フォーマットが多いし使いやすい
>>301 またまた川俣にからむいつもの人かな?w
NGENに意味はあるし、極端な例って具体的になんのことよ?
コピペ君って馬鹿だな、まで読んだ。
コピペ君って馬鹿だな、まで読んだ。
コピペ君って馬鹿だな、まで読んだ。
318 :
294 :2007/10/13(土) 14:29:12
どなたか分かる人いませんか?
3.5使ってる人いない予感。
>>311 なんかよく分からんが100000行のメソッドなんて作らんだろう。
仮に1000行レベルだったら差は100分の1だぜ。
1000行でもまず作らんと思うが。
普通にアプリ書いたら10万行ぐらいすぐだろ
GUIアプリで起動が100ミリ秒早くなってもあんまり意味はない。 ngenが無意味だとは言わんが、明らかに効果があるというような場面は限られてる。
>>321 JITの意味分かってないだろ。
起動時にいきなり自作コード100000行も実行が必要なGUIアプリなんかそうそうないわ。
似たような似てないような話で、 正規表現は常にコンパイルオプションつけた方が速いと思ってるやつもいるな。
325 :
デフォルトの名無しさん :2007/10/13(土) 21:59:23
C#で宣言と同時に初期化の方法について教えて頂きたいのですが。 int型の場合は int [] val = new int[3] {1,2,3}; とすれば良いのはわかるのですが、 クラス宣言時に初期化するにはどうしたら良いのでしょうか。 以下のクラスのstr1に"aaa"、str2[0]に"bbb", str2[1]に"ccc" をクラス宣言時に設定したいのです。 class Test { string str1; string str2[]; } Test [] tObj = new Test[2]; tobj[0]=new Test(); tObj.str1 = "aaa"; tObj.str2[0] = "bbb"; tObj.str2[1] = "ccc"; 今、こんなカンジなんですけど。。。
コンストラクタ
コンストラクタを定義した上で、 Test[] tObj = { new Test("aaa", new string[]{"bbb", "ccc"}), new Test("aaa", new string[]{"bbb", "ccc"})
328 :
デフォルトの名無しさん :2007/10/13(土) 22:13:08
C#3.0ならまとめて初期化できるようになるな
コンストラクタw ふらっとスレであまり叩くのもどうかとも思うが、 そもそも325は言ってることがオカシイんだよ。 >int [] val = new int[3] {1,2,3}; これがメソッド内のローカル変数の初期化のことを言っているのなら、 クラスのフィールドの初期化に関しても書き方は何もかわらなし、 型がint[]だろうがstring[]だろうが変わらない。
Test[]を初期化したいのか配列フィールドを初期化したいのか
現在のC#ではコンストラクタとでパラメータを渡せるようにしとかないとできない。と思う。
var tObj = new[] { {"aaa", new[] {"bbb", "ccc"}, …}; こんな感じになるの?
>>329 インスタンスのプロパティやらフィールドといったメンバの初期化を
配列のように列挙して記述する方法があるか?って話だろ。
でC#3.0ならある程度できる。それより前のC#ではできない。
というだけの話で、つまりお前は何が言いたい?
なんで匿名型に…
new[]は同じ型じゃないと通らん
338 :
デフォルトの名無しさん :2007/10/13(土) 22:53:31
325です。 どうもありがとうございます。 メンバ変数の定義にCの様に初期値をかけないものかと 思って質問しました。 class Test { string str1; string str2[]; public Test(string p1, string [] p2) { str1 = p1; string [] str2 = new string[2]; str2[0] = p2[0]; str2[1] = p2[1]; } } class MyClass { Test [] tObj = new Test[2] { {"aaa", {"bbb", "ccc"} }, {"aaa", {"bbb", "ccc"} } }; public static void Main(string[] args) } } の様に書けばいいのですね。 ありがとうございました。 今まではMainの中で初期化部分を書いていました。
>>338 配列の複製はArray.CopyかCloneを使え
プチ北方謙三くんの言うことっていつもトンチンカンだねw 〜を使え(w 〜しろ(w
北方謙三本人だったらどうする?
いつも「北方謙三」を連呼してる人ってなに? 加齢臭?
ビリー隊長に変えます。
質問です。 一度Labelをクリックした後、スクリーン上のどこかをクリックするまでのMouseMoveイベント とMouseClickイベントをLabelで取得したいのですが、どのようにしたらいいでしょうか? SetCapture()も使ってみましたが、上手くいきませんでした。 よろしくお願いします。
346 :
デフォルトの名無しさん :2007/10/14(日) 16:57:51
treeView.SelectedNode = 5;という感じで選択状態にしたいのですが どうしたら良いでしょうか?
5ってなんだよw単位わかんねぇw
>>347 treeviewはインデックス番号でデータを管理しているわけではないのでしょうか?。
してない。ツリーなんだから。
>>349 つまりプログラム側からアイテムを選択させる方法はないという事になるのかな?
あります。
352 :
デフォルトの名無しさん :2007/10/14(日) 17:23:32
質問を2つさせてください。 1.Listコレクションの内容を全て削除する方法を教えてください。 2.Directory.GetDirectoriesなどのライブラリでパスを指定したら それ以下の全てのディレクトリを返すメソッドを教えてください。 Directory.GetDirectoriesだとサブディレクトリしか返さないようなので。 一番下の階層のディレクトリも返すようなものがあれば教えてください。
>>352 1. List<>.Clear
2. 再帰的に適用すれ
>>352 MSDN読めよ阿呆か
1. Clear
2. SearchOption
まあまあふらっとスレだし。
昨日から始めました、みたいな初心者はまず「型」に気をつけよう
>>346 とかみたいのはMSDNをちらっとでもいいから見て
(もしくはVS使ってるならF1キー押して)
public TreeNode SelectedNode { get; }
って書いてあるのを探す。この場合SelectedNodeプロパティの型はTreeNode型ね。
5、てのはまあint型だから設定できない。
つーか、これはgetしかないから設定できないけどね。
手っとり早く言うと
TreeNode.Selected というプロパティ。
public bool Selected { get; set; }
ってあるからset出来るね。
node.Selected = true;が答え。
>>355 > public TreeNode SelectedNode { get; }
> つーか、これはgetしかないから設定できないけどね。
落ち着け、それはSystem.Web.UI.WebControlsの方だw
>>356 あらまぁはじかしぃw
つーか検索する文字列つっこんでWeb.UIが先にでてくるなんてブツブツ
フィルターさせてほしいよまったくブツブツ
358 :
346 :2007/10/14(日) 18:50:09
上手く行かない人を差し置いて楽しみやがってっ!!笑
タブコントロールの関係でD&Dできなくなるとかいう話はありますか?
360 :
デフォルトの名無しさん :2007/10/14(日) 20:57:41
インスタンス化したクラスはどうやって解放すれば良いっすか? C言語のfreeみたいなのって無いんでしょうか? それともとりあえずNULLをセットしとけば良いっすか?
nullセットする必要がある場面なんてまずないけどな 基本は放置 IDisposable だけ Dispose
メモリの解放をしなくて良いなんて時代は変わりましたね。
GC自体は大昔からあるが? C/C++にはなかったってだけで
BohemGCを忘れないであげてください
C/C++ でも、参照カウンタとか使ったスマートポインタで、 (メモリの管理はライブラリに責任移して) プログラマはメモリの解放しなくていいようにしてたけどね。
BASIC
えっ?Cでshared_ptr並のスマートポインタってあるの?
このスレって回答者が初心者らしいなw
button用にアイコン画像をフォトショで作っているんですが、32bit(アルファ込)の画像って 何形式ですか?bmp32bitは使えないようですし、ICOも使えない。png32bitってVista からだったようなのでXPだとどの形式なのかわからんのです。 あと、ImageTransparentColorにalphaとかないので、もしかしてalphaブレンド できないんですかね?でもWindowsアプリのツールバーアイコン見てると 確実にalphaブレンドしてるのですが・・・(XPで)
>>370 >png32bitってVista からだったようなので
初心者が何も行動を起こす前にうだうだ言っててどうするんだよ。
まず実際やってみれ。
質問なんてのは、それでダメだということがはっきりしてからやるもんだろ。
トレースを別のテキストファイルに出力する際に、日時も出力したいので、 TextWriterTraceListenerのTraceOutputOptionsが使えるな?と、 TraceOutputOptionsにDateTimeを設定してみたんだけど、出力されない。 教えてください。
RC6キーさえあれば、暗号復号ができるようなC#のクラスとか公開されてませんかね・・・ 自分で作ってみたけどわけわかめなのでorz どなたか知っていたら教えてください。
376 :
375 :2007/10/15(月) 17:56:47
追記。RC6で暗号、復号できる、、、です。
海外のでいくつかあるようだが… RC6の仕組み知らんけど、初期ベクタとかパディングとかどうなのかね
VC#2005を使っています TreeViewのノードドラッグ移動について質問です。 ドキュメントアウトラインのようにドラッグ中、ノードとノードの間に横線(━━━━)を入れたいのですが TreeViewコントロールにそういう機能は付いてないのでしょうか? なければ自分で線を描画するしかないですよね?
System.Security.Cryptography.Rijndaelを使いたいのですが、 初期化ベクタに何を指定すればS-Boxを使用した際と同等の暗号化が出来るのでしょうか? それとも私は根本的な勘違いをしてるのでしょうか? ご教授お願いします。
383 :
382 :2007/10/17(水) 04:07:08
すみません。自己解決できました。
>>380 なんぞや!!こんな便利なものが。検討してみますthx
vs2005C#expressに関する質問です。 関数名や変数名を一括変更する要領で、 名前空間を一括変更したいのですが、どうすればいいでしょうか?
気持ちは理解できるけど無理でしょ。 同じ名前空間が複数のプロジェクトを跨いで存在したらどういうことになるか考えれば。。
Ctrl+Shift+h
名前空間は階層構造になってないのにそんなことしたらどうなることやらw
ああ? expressって複数のプロジェクト持てるの???
出来ないのはWebデベロッパ
BinaryFormatterとかでシリアライズしたとき、アセンブリバージョンが違うと逆シリアライズ ができないのですが、これってどうにかなりませんかね? XMLにするとサイズが馬鹿みたいにでかくなるし…
>>393 それってどういう状況での話?
構造に変化が無ければバージョン変わってもいけなかったっけ?
みなさんシリアル化ってどんな場面で使ってるの?
保存したい時
オブジェクトを保存したいケースを教えてほしいです。
何のデータであってもオブジェクトをまんま保存しまんま戻せれば便利じゃん
まあそうなんですが…個々の情報をファイルにしようと考えてしまう古いタイプな者で・・
個々の情報を個々の情報オブジェクトにしてさくっとシリアライズするんじゃだめなの?
保存する手段としてシリアライズがパッと思いつかなかったけど、今度からそれやってみます。
403 :
393 :2007/10/18(木) 15:55:39
亀ですいません orz
>> 394
バージョンだけが違う場合でも逆シリアライズ出来ないのでちょっと違いますね。
>>395 中身は全く変えてないのですが、バージョンが違うとだめみたいです。
404 :
393 :2007/10/18(木) 15:56:32
すいません、安価ミスしました orz
>> 394→
>>394
画像を拡大する方法は分かるんですが、特定の範囲を指定してその部分だけ拡大するというのはどうすればよいのでしょうか? 例えば480x360の画像ファイルの真ん中240x180分を480x360に拡大する、というふうにしたいのです どのように書けばよいでしょうか?
>>403 やっぱISerializableインターフェース実装してカスタム化するしかないんじゃないかな
>>406 マジっすか…orz
それなら始めから実装しときゃ良かった。今から10数個分も修正とか考えたくない…
今気づいたのですが、コンパイル時に参照に加えたものと動的にアセンブリを
読み込んだときってBinaryFormatterの動作って違いますか?
バージョン違いのみでも読み込めるものとそうでないものが出てきたのですが…
>>405 Bitmap bmp = new Bitmap( 480, 360 );
using( Graphics g = Graphics.FromImage( bmp ) )
{
g.DrawImage( bmpOriginal,
new Rectangle( 120, 90, 240, 180 ),
new Rectangle( 0, 0, 480, 360 ),
うんちゃら単位.Pixel );
}
みたいな感じ? うろ覚えだけど
>>403 >バージョンだけが違う場合でも逆シリアライズ出来ない
え?そんなことどこにも書いてないと思うけど。。
>>403 重要な情報が多分抜けてる。
動的な読み込みって、LoadFrom使ってるんじゃないかい?
C#.netというのは ソースコードをドットネットフレームワークというのが ネイティブコードにして実行してると聞いたのですが ネイティブコードに変換した後のEXEファイルを配布することはできますか?
412 :
デフォルトの名無しさん :2007/10/18(木) 21:41:21
できませんがngenで近いことはできます ただし効果に期待してはいけません
>ただし効果に期待してはいけません そう?体感できるくらい結構違うけど・・・ まあプログラムの規模とかにも依るのかね。
mono と gcc 使えばネイティブコンパイルできるんじゃなかったっけ? まあ、それはともかく、あんまりする意義はないかも。 JIT コンパイルの重さを気にしてるのかもしれないけど、 デメリットの方が大きい。
415 :
デフォルトの名無しさん :2007/10/18(木) 22:21:04
期待しなければ失望することはないのです
416 :
393 :2007/10/18(木) 22:37:53
外出してたためまた亀ってすいません orz
>>410 LoadFile()を使ってるんですが、これでもだめですかね?
FileStreamとかで読み込んだ後Load()じゃないとだめですか?
417 :
393 :2007/10/18(木) 22:40:12
>>409 リンク先にはそういったことは書いてませんが、今回発生してるのが
バージョンのみしか違わない場合でも逆シリアライズ出来ないので
リンク先は直接の解決策にはならなかったという意味でした。
すいません orz
なんでふつうにLoadでやらんの?
AssemblyResolveイベントで自分で読むなりしないとだめ。 Loadで読めない場所に配置してるような場合は。 っていうかぶっちゃけシリアライズするようなものでLoadFileやLoadFromは使うな。
>そう?体感できるくらい結構違うけど・・・ 5000行くらいのメソッドで試すと、、ngenあるなしで、差は100msくらいだった。 CLRの起動が多少時間かかるので、体感的には100msではごくわずかしか差は無い(Consoleでアプリで) で、どんなサイズのメソッドを起動時に実行したら、体感できるくらい結構違うの?
>>419 読み込んでるdllはプラグインの類なのでどうしてもLoadFileを使わないといけないのですが…
AssemblyResolveイベントも試しましたが、イベント自体発生してないみたいで意味なしでした。
あきらめるか… orz
PrivateBinPath に追加するとかではだめなわけ? >AssemblyResolveイベントも試しましたが、イベント自体発生してないみたいで意味なしでした。 昔やってできたと思ったんだがな。 どういう風にやった?
>>422 AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(メソッド)
としてイベント追加した後にプラグインの入ったディレクトリからdllファイルを取り出してLoadFile()して、
GetTypes()した後逆シリアライズをするのですが、だめみたいです。
PrivateBinPathですか、ちょっと調べてみます。
あーLoadFileはひょっとするとできないかも… エラーメッセージってなんてでるの? ってLoadFileを使ってる理由は?
失礼します。 XmlTextWriter での出力のとき、入れ子になった外側のタグを固定して内側を適宜入れ替えたいのですが、例えば <foo><bar>その1</bar></foo> <foo><baz>その2</baz></foo> の出力のときに StartFooElement(xw); /* ここでその1 */ EndFooElement(xw); StartFooElement(xw); /* ここでその2 */ EndFooElement(xw); な感じで Start と End を出力するメソッド作って挟むのが良いのか、それとも void WriteFoo(XmlTextWriter xmlwriter, XmlWriteDelegate inner) { xw.WriteStartElement("foo"); inner(xw); xw.WriteEndElement(); } なメソッド作ったほうが良いのか、それとも別の方法か……誰か好みでもいいので決めていただけませんか?
たとえばプラグインフォルダ指定されたときに、ファイルをなめて ファイル名(アセンブリ名と同じというルールで)を一覧で取得して、 LoadFromでいったん全部読み込んでから処理とかじゃだめ? あるいはPrivateBinPathにプラグインフォルダを追加して、 同じようにファイル名取得してLoadで読んでから。 まあこれはサブディレクトリの場合しかできないけど。
>>412 ngenですか
>>414 実行時に環境に合わせた最適なコンパイルがされているようですが
JITコンパイルの重さではなく、
ドットネットフレームワークがないと動かないのを嫌気しています
ネイティブコードにコンパイルしているなら
それを直接配布すればいいのでは?と思ったわけです
>>427 .NET Framework を呼び出すネイティブコードを生成してるんだよ
多分目的にはあって無いけどね。
>>428 うは、まじですか?
てっきりWinAPIとかを呼び出すネイティブコードだと思ってたのに
つまりフレームワークなしで動くネイティブコードの生成は不可能ってことですか
.netじゃないC#にはあったのに・・・・・・・・・・・・・・・・・・・・・・・・・・orz
432 :
デフォルトの名無しさん :2007/10/19(金) 01:12:09
WinAPIとかを呼び出すネイティブコード ってなんですか?
あの膨大なクラスライブラリやランタイムの機能を埋め込むのかよ
>>424 アセンブリ:なんかとかかんとか〜publickey:nullが見つかりませんってかんじのです。
>>426 現在すでに全てのプラグインをLoadFileで読み込んでからやるようにしているのですが、
それをLoadFromにするってことですか?
なんだかバイナリをbyte[]にしてLoad()使った方が早い気がしてきた…
437 :
デフォルトの名無しさん :2007/10/19(金) 01:32:07
.NETアプリってFormが遅いだけでなく、ジェネリックコンテナもSTLと比べると かなり遅いんですね。
>>429 えーっと…… XSD 定義って具体的にどうすれば良いんでしょうか (;゚∀゚)
>>433 なんかそんなのあったな。
フレームワーク不要! .Netアプリを単体で配布できてで動きます!
(ただし実行ファイルが30MBとか)
>>431 >.netじゃないC#にはあったのに
をいをい
>>436 今やりたいことは、プラグインで読み込んだクラスを含むデータをシリアライズ・逆シリアライズすることですが、
データ構造は変えず、アセンブリバージョンのみ違うものを使用すると該当する型がねぇと怒られないようにするにはどうすればいいかということです。
>>441 アセンブリバージョン固定にしてしまえw
>>438 xsd知って・・・なさそうだね。
XMLスキーマ定義してxsd.exeでDataSet出力
>>425 でいうと
fooにはbar,bazってフィールドがあって
foo.bar= new Bar();
って感じで追加できる。
xsd.exeはxml→xsd→DataSetも出来るから触ってみな
>>441 プラグインロードアプリ、インターフェース定義、プラグインってDLL別ければ問題なくね?
>>443 了解しました。ちょっと試してみます。
ご意見ありがとうございました。
>>442 さすがにそれは…w
>>444 既にそんな感じで分けているのですが、プラグインのアセンブリバージョンが変わると例外が飛んできます orz
>446 シリアライズは使わないで自前で適当にxmlとかで出力しろ。 読み込みも同様に自前で実装で。 バージョンアップなどアセンブリの中身が変わっても同じ設定を保持して欲しいと思うだろうから シリアライズだとそのうち互換性が保てなくなるし それくらいなら自前で保存と展開処理を書いてしまった方が手っ取り早いし確実かと。
>>435 >LoadFileを使う理由は
>>421 にあります。
どうしてもLoadFileを使わなければならないんだ、が理由かいな。
理由になってないだろ。
>現在すでに全てのプラグインをLoadFileで読み込んでからやるようにしているのですが、
>それをLoadFromにするってことですか?
>なんだかバイナリをbyte[]にしてLoad()使った方が早い気がしてきた…
人の言うことを少し冷静に試してみなさいな。
>>426 に書いてることを一回試してみ。
449 :
425 :2007/10/19(金) 02:34:43
>>443 すいません。ちょっと触ってみたんですが微妙に自分の求めているものと異なりまして(´・ω・`)
ちょうど ASP で行うように、静的な部分をどういう風に出力させようかという話題だったんです。
もうちょっと試行錯誤してみます……
ああそれと、LoadFromでもエラーになるならAssemblyResolveも試してみる。
LoadFromでも無理なら、 AssemblyResolveをハンドリングしながらLoadで試す。 ってか最初から、 1.プラグインフォルダからアセンブリ名を抽出。 2.Loadで読み込み。 3.AssemblyResolveが発生するので、自分でLoadFromして返す。 のがいいかも。
>>446 DLLとしては参照先が一緒だからロード以降問題
Type参照先がDomainだったりアセンブリだったりしてない?
453 :
デフォルトの名無しさん :2007/10/19(金) 04:08:29
ボタンを押した際に初期画面に戻るプログラムを作成したいのですが どのように打ち込めば良いのか何方か教えてください
僕は君の"初期画面"がどんなものか知らない 僕は君のプログラム構造がどんなものか知らない
おはようございます。
>>451 プラグインのファイル名がすでにリネームされているのですが…
この場合はどうしたらいいでしょうか?
>>455 >プラグインのファイル名がすでにリネームされているのですが…
アセンブリの名前を勝手に変えるなよ!原因はそれだ。
モジュール名とDLLのファイル名(拡張子を除く)は一致してなきゃいかん。
んーそれが原因とも限らない気もしないでもないなぁ さすがにバージョンでファイル名変えてるわけじゃないよね? しかしまあ次から次へと… アセンブリのロード絡みの問題なんだから そういう大事なことは先に書かんかい。
それにしてもなんでそんないかにもトラブルの原因になりそうなことばかりしてるんだか… そんなことせんでもプラグイン実現出来ないことはないだろ。 まあ要件が分からんからなんとも言えんけどさ…
どうでもいいが、あちこちのサイトで動的ロードの方法として LoadFromばかり紹介してるのは勘弁してほしい。 あとそういうのでインターフェイスや基底クラスを使わずに なんでもかんでもリフレクションでやろうとするのとか。 おかげでまねする奴が続出してほっとくとひどいことになってしまう。
>>456 何度かリネームしてみましたが読み込めるので
ファイル名が問題と言うことではないみたいですが…
それでもルール違反みたいなので以後気をつけます。
>>457 後出しですいません orz
ファイル名は関係ないと思ってましたが、よく考えて
みれば今の問題にとってはかなり重要ですよね orz
今、テスト用のプラグインを作ってみたところ、AssemblyResolve
イベントが発生してうまく読み込めました。
…どうやらプラグインを作った人が中で何かやってる
みたいで、そこで例外が発生してるかもしれません。
#友人が作ったプラグインなので、本当にそれが原因ならそいつを〆ればいいだけですむのですが…
>>460 こういう完全修飾名というのはみたことない?
Hogehoge, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL
この名前からGACではなくEXEのあるディレクトリからアセンブリを探す場合は
先頭のHogehogeという名前でを探すことになってる。
LoadFormやCOFFイメージを直接指定するときは名前は影響しないが一致していることが基本。
csc /t:library ddd.cs
ren ddd.dll ccc.dll
csc /r:ccc.dll aaa.cs
でコンパイルして実行してみると何がまずいかわかるはず。
>>461 コンパイル時には何も出てきませんでしたが、実行すると例外が飛んできました。
これは確かにまずいですね。気をつけます。
先ほどのプラグインの件ですが、やはりプラグイン側が原因でした。
お騒がせしてすいませんでした。 orz
しかし、dllのリネームがまずいことや、それまで気づかなかったバグを
修正することが出来ました。
本当にありがとうございました。
どうでもいいがそんなややこしいことしといて シリアライズはバージョン変わるだけで出来ないとか書くなよ。
>>463 すいません orz
本人はプラグインの処理部分のバグ修正のみをして、リビジョン番号を上げたようなのですが、
データの保存部分でなにかバージョン依存するようなことをしてたようです。
それがたまたま逆シリアライズを含む処理だったらしく、データの逆シリアライズが
出来てないのかと思ってしまいました。
こういうのは始めから「こういう事はやめれ」と言っておくべきでした。
本当にすいません。
465 :
デフォルトの名無しさん :2007/10/19(金) 23:49:02
List<> って異常に遅くないですか? std::list<> と比べると使い物にならない 3では改良されているのかしらん?
なんでC++と比べるの? あとデータ構造は分かってる?
467 :
デフォルトの名無しさん :2007/10/19(金) 23:55:58
なんでC++と比べるのを疑問に思うの? あとデータ構造は分かっるとはどういう意味?
test
何がtestだ 馬鹿じゃねえのw
>>467 C++のstd::listと比べるならLinkedListのほうじゃね?
>>469 いや、何時間かまえによその板でアク禁になってたから、書き込めるかなと思って。
俺もそうおもた
vectorとlistの違いも分かんないんだな
ああ、八代あきはアリだな。まだヤレルわ
すまん。誤爆った
八代あきはないだろ
いくらなんでもストライクゾーン広すぎだろ・・・
>>465 遅い速いの話題はプログラムソースがないと水掛け論になるからロダにアップしてみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5107.txt 既出のようにstd::vector = List, std::list = LinkedList で等価。
実行時の過剰な最適化の影響かもしれないが、うちの環境だとC#が勝っとるな。
// C#
List back : 1000000 : 00:00:00.0263092
List front : 100000 : 00:00:08.4251727 x 10
LinkedList back : 1000000 : 00:00:00.3142776
LinkedList front : 1000000 : 00:00:00.5049351
// C++ STL
vector back : 1000000 : 0.03
vector front : 100000 : 11.116 x 10
list back : 1000000 : 0.62
list front : 1000000 : 0.701
>>479 たぶんだがヒープアロケーションの速度の差じゃない?
最適化が影響しそうなコードにも見えないし。
GCにどれだけ時間を使ったか気になる
>>479 なんでLinkedList frontがbackより極端に遅いのかと思って、
それぞれのsw.Reset(); 後にGC.Collect()するとbackと同じになった。
あとJavaに書き換えたけど、ArrayList<値型>ってできないんだな。
Win Vista + Core 2 Duo + 2GB
// C#
List back : 1000000 : 00:00:00.0150236
List front : 100000 : 00:00:04.6640524 x 10
LinkedList back : 1000000 : 00:00:00.1925839
LinkedList front : 1000000 : 00:00:00.1954827
// C++ STL
vector back : 1000000 : 0.019
vector front : 100000 : 4.655 x 10
list back : 1000000 : 0.238
list front : 1000000 : 0.239
ArrayList<Integer> にすればいいんじゃね
>List<> >って異常に遅くないですか? >std::list<> >と比べると使い物にならない w
実は比べてなかったってオチか
>>483 それだとboxingしまくりじゃ…
と思いながら参考まで
// Java
ArrayList<Integer> back : 1000000 : 0.278
ArrayList<Integer> front : 100000 : 6.020 x 10
LinkedList<Integer> back : 1000000 : 0.514
LinkedList<Integer> front : 1000000 : 0.215
# LinkedListの第一世代GCで処理時間全体の8割以上かかってる…
>>486 追加だけならガーベッジは発生しなくないか?
>>479 だとリストの生成・消滅も勘定に入ってるからだろ
489 :
487 :2007/10/20(土) 13:01:31
ああ、ほんとだ・・・って、よく見たら STL版は消滅コストもカウントしてるけど C#版はカウントしてないじゃん。
>>487 第1世代→第2世代に移動するためのGCと思われ。
GCしてもヒープが減ってない。
C#のコンソールアプリ用のプロファイラってありますか?
別に遅くない、むしろ早いでFA
実行時に展開してるんだぞ 遅くなりようがない
exeダブルクリックしてからの体感速度で語ってるんだろ AppDomainのロードとかJITコンパイルとか理解してるとは思えない
>>491 465もお前さんもどっちもどっちだな。
言っちゃ悪いけどお前さんも相当気色悪いよw
ただの無知アンチでFA?
すみません、C#初心者ですがいい方法を教えていただけますでしょうか。 ・GridViewに記述したCheckBoxの値を取る方法 CheckBoxFieldってのがありますが、どうも入力値を取得するためのものとは 思えません。あと、ItemTemplateの中にCheckBoxを入れても、イベントで どの行がチェックされたかを取得する方法が分かりません。 どうかよろしくお願いいたします。
選択行はe.RowIndex セルをCheckBoxFieldにキャストしたら値取れます。 携帯なので詳しく書けないけど
>>496 479のソースを試したけど、うまく動作しない。
CLR Starting なんとかというダイアログが出て、その間にソフトの実行が終わって、NullReferenceExceptionで落ちる。
普通に動くんだが バージョンは2.0か?
比べて無かったってか比べ方がおかしかった。
>>499 ありがとうございます。e.RowIndexということは、イベントですよね?
何のイベントでしょうか。
CellContentClickイベントだ。下記で多分できると思うが試してくれ DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)dgv.Rows[e.RowIndex].Cells[e.ColumnIndex];
……System.Windows.Forms.DataGridViewじゃなくてSystem.Web.UI.WebControls.GridViewの話のようなのだが おいらはASP.NETは知らんから助言はできんが
C# って 3,0 にならないと匿名クラスって無いんだよね? Java の new Foo() { 〜 } みたいな奴。
そう ただしJavaのとは違ってメソッド定義はできないインターフェイス実装も無理 C/C++の関数内構造体に近い
まあ、Java の匿名クラスが必要な場面で、 C# は匿名デリゲート使うしね。
匿名クラスみたいに気持ちの悪いことを書かなくて済むからよかった
510 :
デフォルトの名無しさん :2007/10/21(日) 00:37:55
Ilist型のプロパティをnewしてIlist<T>に変換したいのですが、 うまくキャストする方法がわかりません。 どなたか助言をお願いします。
おかーちゃーん 意味がわかんないよう
意味が分からん プロパティをnewってなんだ 取りあえずやりたいのを仮想的なコードにしてみれ
適当に勘で答えると そのプロパティがIListだとするとIList<T>を実装してない可能性が高いから IList<T>にキャストするのは無理くさい 素直にList<T>にAddしていくのがいいんじゃないか
514 :
510 :2007/10/21(日) 00:54:58
>>511-512 わかりにくくてスミマセン…
こんな↓みたいな感じにしたいのですが、
このままだとItem追加時にキャストでエラーが出てしまいます。
なにかウマイキャスト方法がないかと質問した次第です。
class ListViewEx : ListView
{
public new IList<ListViewItem> Items
{
get
{
return (IList<ListViewItem>)base.Items;
}
}
}
class ListWrapper : IList<T> { IList list; public T this[int index]{ get{ return (T)list[index]; } set{ list[index] = value; } } ... } こんな感じのものを作ってかぶせてやればいいんだけど
System.Collections.IList と System.Collections.Generic.IList<> は継承関係じゃないんだから、 IList が IList<> にキャストなんて出来ちゃったらたぶん天地がひっくり返る。
実は実装クラスが両方のインターフェイスを実装してたってオチもあるかもしれないぜ まあListViewItemCollectionはそんなことないけど
>>504 ありがとうございます。ただ、
>>505 の方が仰るように、Webアプリなのです。
申し訳ありません、言葉たらずでした。
520 :
デフォルトの名無しさん :2007/10/21(日) 14:59:19
C#プ基礎勉強可?
522 :
デフォルトの名無しさん :2007/10/21(日) 20:14:40
DataGridでExcelの様な画面分割(縦2分割)はできないものでしょうか?
523 :
デフォルトの名無しさん :2007/10/21(日) 20:28:10
getのみプロパティを get/set両方ありのプロパティでオーバーライドするのってどうやればいいんでしょうか? abstract class Base { public abstract int Prop { get; } } class Derived : Base { // エラー: Base.Propにsetがないからoverrideできない public override int Prop { get{ ... } set{ ... } } }
無理 Setメソッド用意するなり
treeviewで左クリック時のアイテムのnameを調べたいのですがどうしたら良いですか?
>>526 すいません。左クリックというのはToolStripMenuItemなのですがe.Node.Name
では取れないようなのです。
529 :
525 :2007/10/21(日) 21:20:50
TreeNode tni = treeView.GetNodeAt(MousePosition.X, MousePosition.Y); で取れたら良いのですがどうにかできないでしょうか?
よく分からんがSelectedNodeとかじゃ駄目なのか?
532 :
525 :2007/10/21(日) 22:30:49
>>530 あ、右と左が逆になっていました。SelectedNodeだと一度左クリックでノードを選択して更に
右クリックでメニューバーを出さないとそのノードが取れないのです。
あー、なんだ、小出しはやめろ。 一からやりたいことを書け。
>>532 どのコントロールの上でクリックしたときの処理を意図してるのか
さっぱり分からない。
もっと整理して質問してください。はげ。
>>529 から推測するに
Point pnt = treeView.PointToClient ( Control.MousePosition );
TreeNode tni = treeView.GetNodeAt(pnt.X, pnt.Y);
みたいなことか?
>>532 void treeView_MouseDown(object sender, MouseEventArgs e) {
if ((e.Button & MouseButtons.Right) != 0) {
TreeNode tn = treeView.GetNodeAt(e.X, e.Y);
if (tn != null) treeView.SelectedNode = tn;
}
}
これでOK
536 :
510 :2007/10/21(日) 23:28:42
>>513 うーんそれだとForm側でのItem追加がうまくいかないのです…
>>515 なるほど、ラッパーで対応ですか。
その方法が確実っぽい気がするので、実装してみます。
ありがとうございました。
OfType<T>
IList<T>って言ってるだろ
539 :
デフォルトの名無しさん :2007/10/22(月) 00:11:02
NDocって.NET 2.0では動かない?
動かないっぽい
>>539 なんか設定すれば動いた気がする
ググればたぶん出てくるよ
>>539 ソースちょっと弄ってビルドしなおせば動いた気がする。
>>542 .configでしょ?
でも不具合あるし、開発止まってる。
俺は修正して使ってたけどsandcastleがUIとかも増えてきたからそっちに使うようにした。
>>544 ああ、そんなんでいいんかな。
デバッガで例外おって適当に書き換えたからよくわかんね。
WindowsサービスアプリでTimer使いたいんだけど、 スレッドのやつとフォームじゃないもう一つのやつと、 どっちつかえばいいですか?
スレッドのがいいんじゃね? タイマーのは結局単なるラッパーだし。
了解です。もう一つだけ質問。 アプリの設定ファイルでapp.configと settingsファイルってどっち使っても良いんですかね? この二つに違いってありますのん?
基本的に固定設定なのか、保存などの操作があるのか。 まあアプリケーションスコープの設定なら一緒みたいなもんだけど。 てか設定もapp.configに書かれるし。
ASP.NET C#の質問なんですが テキストボックスに入力された値が入力してほしい値(日付とか)じゃない場合に それ以降の処理を中断させる、というのやりたいのですが、どうすればよいのでしょうか? クライアント側での制御の仕方は分かるのですが、サーバー側でチェックした時の処理の方法がいまいちわからないです
ドローツールを作りたいんですが、たとえば「直線」をオブジェクトとするにはどうすればいいんでしょう? 描画した後の直線部分をクリックして移動したり、端をクリックして線の長さや角度を変えたりしたいんですが、 直線自体をオブジェクトにして、振る舞いを記述したら楽だと考えたので。
class Line { public Vector Point1{get;set;} public Vector Point2{get;set} } みたいな感じじゃね WPF使うと楽かも
WPF 使うとすると、 Line の端に Ellipse でも置いて、 Ellipse の Click イベントに DragMove() 書いて、 Ellipse の Canves.Left, Canvas.Top を Line の X1, X2, Y1, Y2 とバインドしとくとかかな。
ふらっとでWPF勧めるやつって馬鹿?
>>551 の質問がそもそもふらっと向きじゃないし
WPFにはドローツールのサンプルもあるし
どうなんだろ?
実際
>>551 が何を期待してるか読み取れないし。
>直線自体をオブジェクトにして、振る舞いを記述したら楽だと考えたので。
とあるように、技術面はクリアしていて記述自体はできるのかも。
>>555 あんたもトロいなあ。。
じゃあ通常の質問スレで質問したら初心者向けに誰か解説してくれるの?
どうせあんたみたいのはそっちで質問したらしたで「ふらっと池」って言うのが目に見えてるよ。
>>550 通販サイトとかだと、中断されないな。
受信内容チェックしておかしかったら、再度入力しなおすように表示するだけ。
例:
電話番号が入力されていません。
電話番号を記入してください。
Form1 this.TopMost = true; Form2 form2 = new Form2 form2.ShowInTaskbar = false; f.ShowDialog(this); ShowDialogにthisを書いとかないと Form1の後ろに表示します。 で、問題なのは実体化したform2を最小化しようと 右上の最小化ボタンを押したときの挙動。 普通はForm1共々最小化されるはずなのに 左下に逃げるのはバグですかね? Form1のTopMostがfalseの時は普通の動作です。 何か対処方法はありませんでしょうか?
>左下に逃げるのはバグですかね? でたーバグ説!
なんでダイアログなのに最小化するの?
form2.TopMost = this.TopMost; でかいケツ
ASP.Netでのアップロード処理ですが、PostedFileプロパティを使う方法 ですと、メモリ上にアップロードファイル全部を持ってきた状態になって しまうかと思います。 巨大ファイルを扱いたい場合、RequestのStreamから適当なバッファで ファイルなりDBなりに転送したいんですが、これはASP.Netで可能なので しょうか。
解決しません。
話ならんヤツはレスするな
>話ならんヤツはレスするな
お前が言うなw
>>563 プロパティ名だけで、クラス名(主語)が抜けてない?
アップロードされたらファイルに落とせばいいだけじゃないか?
なぜめんどい方向に持っていこうとする。
さらに、
>MaxRequestLength プロパティと RequestLengthDiskThreshold プロパティを調整することで、
>サーバーのパフォーマンスを微調整できます。また、MaxRequestLength を設定して、
>サーバーに対する大量のファイルのポストによるサービス拒否攻撃を防ぐことも検討してください。
>>562 家では全く解決しません。
>>568 主語は例えばprotected System.Web.UI.HtmlControls.HtmlInputFileです。
ここ↓には、
http://support.microsoft.com/kb/323246/ja 「アップロード処理の際には、ASP.NET によってファイル全体がメモリに読み込まれてから、
ファイルがディスクに保存されます。」
とありますね。ASP.Netでは、ポストバック時に必ずそうなってしまう、と考えるべき
なのかどうかを知りたいのです。
>>550 「それ以降の処理」の直前にチェックしてエラーなら
「それ以降の処理」の部分を通らないようにすればいい。
>>568 お前意味自体わかって無いだろ。
>アップロードされたらファイルに落とせばいいだけじゃないか?
何を言ってんだ。
残念ながらASP.NETの素の機能ではできなかった、と思う。
今はできるのかな?IIS7環境だとできたりするのかな?
FormのIconプロパティが設定されていないことを知る方法はないでしょうか。 Iconプロパティにnullをセットしても、標準のアイコンが取得出来てしまいます。
Iconプロパティにnullセットは意味ないっぽい。 getするとForm.DefaultIcon等が返るみたい リフレクション使うしかないんじゃないかな
SystemIcons.Applicationと同一かどうかでわかるんじゃない? しかし、そんなこと知って何になるのかねえ、という感がどうしても否めん
Debug 用じゃないログ書き込みクラスって、static にしても問題ないですか? それともちゃんとインスタンス生成して扱うのが適切なのでしょうか。 一応 StandAlone を想定していますので、static でもそうでなくても動作は同じだと思うのですが、 この先は好みの問題になっちゃうんですかね……
意味がわからねーよ
適当に答えるとシングルトンでいいんじゃね
意味は一応わかるよ。 要はシングルトンなんて全部static(クラスフィルドとクラスメソッドonly) でやるのと一緒じゃん、ってことでしょ。 そりゃそうかも。 でも考え方として自然じゃないから普通はやらないよね。 潰しもきかないし
後で手を入れたくなったとき、全部staticメソッドよりシングルトンの方が扱いやすいよ。
と言うか何も変数の参照がなければstaticと思ってるがそれでおk?
質問です。 PictureBoxの一部をGraphics.DrawImage()を使って定期的に書き換えたいのですが、 Graphics.DrawImage()で書き込む画像に透過ピクセルがあるので、画像が重なってしまいます。 たとえば「A」という画像をGraphics.DrawImage()で書いて、その後「B」という画像に 書き換えたいが、透過ピクセルを使っているのでAとBが重なって表示されます。 PictureBox1.Refresh()を使うと、毎回他のところも書き込まないといけないし、 環境にもよるでしょうけど、ちらつきが発生してしまいます。 一部画像で書き換えられているソフトについているスキン画像なんかは、 画像ビューアなどで見るとバックが紫色になってたりするので、手法が 違うのだろうかとも思ってますが、やり方がわかりません。 よろしくお願いします。
最近C#でASP.NETをはじめたばかりの初心者です。 質問なのですが、DataGridで1列目1行目の値、2行目の値を取得するには どのようにすればいいでしょうか?
>>584 何をしたいのかわかんないけど
書き換えたい一部だけ塗りつぶしたらいいんじゃね?
ちゃんとPaintイベントで描いてる?
>>584 白なり黒なりで塗りつぶして消せばいいじゃん。
589 :
584 :2007/10/24(水) 18:42:35
>>587-588 レスども。
塗りつぶす場合、バックグラウンドに何が描かれてあったか
気にしないとダメじゃないですか。
何が描いてあったのか退避させておくとか、
PictureBoxを重ねて別レイヤー扱いみたいにするとかすれば、
できるけど、もっと気楽で簡単に出来るもんだと思ってるのですが...。
というより説明下手で何がしたいのかうまく伝わってないのか(´・ω・`)
描画するイメージや描画範囲や描画順を持ったクラスを作って そのオブジェクトをコレクションに入れて覚えといて それに従って全部描き直せば
591 :
584 :2007/10/24(水) 19:31:39
>>590 レスども。
結局それなりの手間を掛けなきゃならんってことですね。
ありがとうございました。
>>591 アニメーション程度だったらその部分だけ元画像もっておけばいいだけなんだが。
シングルトンはグローバル変数とかわらんだろ よってGofは有罪!
はいはい。
一週間前にC#を始めました。 今文字列型の所をやっていたんですが、 Copyメゾットの意味がよくわからないです。。 例えば、aに代入されている文字列をbにコピーする時に、 b=aとするのと、 b=String.Copy(a)とするのに違いはあるんでしょうか? すごく初歩的な質問かもしれませんが、宜しくお願いします
参照型でぐぐって。 string は参照型。
a="あ"; とする。 String.Copy(a) とすると、"あ"という文字列がコピーされてもう一個できる。 b=String.Copy(a)とすると、bは新しくできたもう一つの"あ"を参照するようになる b=aだと、bもaも同じ"あ"という文字列を参照する
エクスプローラの左側にある 「システムのタスク」 とか 「詳細」 とかがあるペインを作れるコントロールは C# にはありますか?
スプリッターでごまかす。
List<T> t = new List<T>(); t.Add(hoge); t[] tt = (T[])t;
?
List<T>はキャストできない
ToArray()使えよ
Too far awayはなっちのシングル
T[] tt = (T[])t.ToArray();
なんでキャストしてんだよw
OnKeyDownで処理された入力をOnKeyPressで処理しないようにしたいんですが、 どのようにすればいいんでしょうか? KeyEventArgs.Handledプロパティを設定してみたりしたんですがどうもだめでした。
日本語書けよ。。 処理された、とか処理しない、とか何のこと言ってるんだよ。 本当こういう奴ってどういう頭の構造してるの? 世の中俺以外全員エスパーとでも思ってるのか?
>>608 OnKeyDownが発生してOnKeyPressが発生するわけだから、それって何も処理したくないってことじゃないの?
>>608 OnKeyDownで処理したらフラグ立てといて
OnKeyPressの中ではif(フラグ立ってなかったら){処理}フラグ戻す
>>611 OnKeyPressでフラグ戻しちゃだめだな
OnKeyUpか次のOnKeyDownで
KeyDownなしでKeyPressって発生するのか?
押されたキーによってはKeyDownで処理するんじゃね
そうやって日本語すらちゃんと書けない馬鹿を甘やかすなよ・・・
たぶんある程度はエスパーできるから答えてるんじゃね エスパー以外はすっこんでろってこと。
プログレスバーの処理のためにあらかじめ総数が欲しいのだがIEnumerable<T>の数を数える簡単なメソッドとかって用意されてる? いやもちろん int count = 0 ; foreach ( T item in items ) { ++count ; } で数えられるのはわかっているのだが…
.NET Framework のクラスライブラリのどっかのクラスでは ICollection にキャストしてみてキャストできたらそこで個数をチェックしていた
考え方が逆立ちしてないか? そのメソッド、何が悲しゅうてわざわざIEnumerable<T>を引数に取るの? 自分で自分の手を縛ってどうするよ
>>617 それを C# 3.0 の拡張メソッドにでもすればよくね?
static int Count<T>(this IEnumerable<T> items)
{
int count = 0;
foreach(var item in items) ++count;
return count;
}
>>619 List<T>(IEnumerable<T>)とかあるだろ
外から便利と中で楽なら前者を取るだろ当然
その前に
>>617 はそんなこと言ってないだろ
わざわざコレクションを回したくないから聞いてるんじゃね
ごめん、てか、3.0 使うんなら標準で Count 拡張メソッドがあった。 System.Linq.Enumerable.Count
列挙するたびに数が変わる列挙子もあっていいんじゃないの? そのためにCountが付いてないんだろうし
答え:C#3.0ならある
Linq使ったって、列挙してカウントするのと同じじゃね?
多分そういう実装だろうね。 それが嫌ならリスト使えよって感じよね。
C#に限った話ではないのですが、型の識別のためだけに空のインターフェイスを定義するのは「あり」なんでしょうか。
あり
.NET 的にはそれは属性でってことになるんじゃね?
>>629 .NET 的には無しじゃなかったっけ?
.NET内部でもやってるけどw
速度的にはどうなのかね 属性調べる、インターフェースをisで調べる、 boolを返すvirtualプロパティにする、boolのパブリックフィールドにする といった方法があると思うけど
634 :
デフォルトの名無しさん :2007/10/27(土) 08:34:04
速度気にするなら.NET使うなよ
速度はどうでもいいが、属性の取り扱いはもうちょっと簡単になってほしいなぁ
636 :
デフォルトの名無しさん :2007/10/27(土) 10:22:26
Visual studio6.0です。 ラジオボタン2個、ボタン1個のwindow作ってます。 MFCでラジオボタンにintの変数を追加しようと してもbuttonにしか変数が追加できません。 どうすれば、受付けてくれるのでしょうか? VS.NET仕様のテキストを見ながらやってて違いに困ってます・・・
スレタイ読めないの?
638 :
デフォルトの名無しさん :2007/10/27(土) 10:28:32
間違いた!!mfcスレいってきまつ
VB.NETを2年ほど(Winアプリ)使ってきたけど そろそろC#に乗り換えないと世間の流れに取り残されるなぁと思って乗り換えようと思うんだけど C#でできてVB.NETでできないこと(たとえばポインタ扱うとか) いまいちググっても違いがあんまわからない C#の優位性を教えてもらえまいか?
.NET使ってればできる事はほぼ同じ
>>639 C#は最悪だからこないでくだちぃ
ほんとにお願いします
>>640 かわんないよね?
フレームワーク使って開発するんなら細かい部分しかかわらないと思うんだ
でも、+αのなにかがあるから皆そっちなんだろうなぁ・・・とか思ってしまう
なにかピンポイントでこういうときにVBよりイインダヨみたいなのが知りたかった
それだったら最悪VB.net+C#でプロジェクト分けて開発も考えられるし
>>641 サーセンwwww
出来ることは同じだな VBの変態的な文法に馴染めるかどうかだけ
TextFieldParserを使いたいんですが、 using Microsoft.VisualBasic.FileIO; と書くと、FileIOは名前空間Microsoft.VisualBasicに無い、アセンブリ参照が不足と コンパイルエラーが出てしまいます。 .NET2.0だと何も参照しなくても標準で使えると思っていたのですが、 何か操作をしないといけないのでしょうか? Vistaなので.NET2.0は入っています
>>642 昔から VB 使ってた人用が VB.NET で、
C の系譜使ってた人用が C#。
>>643 両方やってる人間の目から見たら、文法の変態性はどっちもどっちでしょ。
それぞれにいいところと悪いところがあるから、
一概にどっちが変態とか言えんと思うよ。
VBerからみて恐らく変態的に見えるC#の文法は、たとえば今思いつくだけで
・なんでインターフェイスの実装と継承が同じ書式なんだ?
・コンストラクタの名前がクラスによって違うって馬鹿みたい
・変数宣言時型名を最初に書く文法のせいで、初期も一緒に行うときの書式がまどろっこしい
・なんでusingってキーワードが全く異なる2つの用途に使われるの?
・インデクサ以外の引数付きのプロパティが書けないって糞じゃん
・クラスと同じ寿命のメソッドスコープの変数が書けないって糞じゃん
・プロジェクトの「ルート名前空間」が決められないのかよ
>>647 VBとプログラミング言語一緒にされてもな・・・
VBやってるやつと普通の人類を一緒にされてもな・・・
・・・と、まともなプログラムすら組めない人が仰ってます。
コンストラクタに関しては言う通りだと思うな
確かにちょっと思う。 まあ、C++ からの負の遺産だなぁ。
1つ目と4つ目も同意 わざわざC++に戻さなくてもJavaと同じでいいのに
implements は書くのうざいと思うけどなぁ。 using はキーワード増やしたくなかったのかな。 でも、あんまりよくないよな。 C++ の関数内 static、クラス内 static、ファイルスコープ static とかも気持ち悪いし。
同じキーワードがいくつに使われてようといいだろ 意味は通ってるんだから
多少まぎらわしいけど、だからといってキーワード増やすのもな
まあusingはな、あまりに全く別物過ぎて 逆に混乱することもそうはなさそうだが。 VBだと個人的には イベントメソッドのカスタマイズ(ひょっとして2.0からは出来たっけ?) volatileフィールド インターフェイスの再実装 refとoutの区別と呼び出し時の明記 3項演算子 辺りが出来ないのが不便かな 本当に困ることはそう多くはないが
>refとoutの区別と呼び出し時の明記 これは本当にうざい 濫用されてると読めない
.net2003、framework1.1です。 labelのtextにサークルシー(C)文字を1キャラで出したいんですけど、 どういうふうにプロパティ書いたらいいの?
IMEパッドとかで入力しても出ない? \u00a9とか\xa9とかTextにぶち込んでもいいけど
>>661 さん
あろがとう出来ました。
ヘキサで入れるのね。で、プロパティウィンドウじゃなくて、コードを書かないと出ないみたい。
ほんとありがとう。
663 :
デフォルトの名無しさん :2007/10/28(日) 17:32:50
マウスカーソルの位置に水平線を描画するユーザーコントロールを作成してるんだけど、 マウスカーソルを動かすとCPU負荷が高くなってしまうorz リフレッシュするタイミングが駄目なんだろうけど、ここからどうして良いかわからないです。 どなたかご教授よろしくお願いします。 private void Chrat_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; //g.DrawLineで線を書く } public Point ScorpPosition { get { return m_ScorpPosition; } set { m_ScorpPosition = value; this.Refresh(); } }
そうしたいならするしかない。 大きさが問題になるのなら OnMouseMoveでマウス近辺の軸だけInvalidateするとか。
RefreshもApplication.Runも使わずに自分でループ回してみるとか
っていうか
>>663 のコードって一体何なの?w
質問してることとコードの間の相関がまったく理解できないんだけど。
最近こういう訳の分からん奴が多くて困るよ本当。
「自分以外は皆エスパー症候群」とでも名づけるべきかね
>>666 このスレ初めてか?力抜けよw
スルーマジオヌヌメ
ふらっとスレなんだからMouseMoveハンドラの中身くらい推測してやれよ
>マウスカーソルを動かすと って書いてあるし、OnMouseMoveでマウスのポイントを取得してるんだべ。
670 :
デフォルトの名無しさん :2007/10/29(月) 11:49:12
delegate bool EnumChildProc( IntPtr hwnd, IntPtr lParam ); [DllImport( "user32.dll" )] static extern bool EnumChildWindows( IntPtr hWndParent, EnumChildProc lpEnumFunc, IntPtr lParam ); って感じ?
672 :
デフォルトの名無しさん :2007/10/29(月) 14:54:28
C#で書かれたmcache(旧msession)みたいなセッションサーバーはあるのでしょうか?
673 :
デフォルトの名無しさん :2007/10/29(月) 15:36:36
はじめてC#.NETをやることになりました。 サンプルファイルを使って一つのソフトウェアを作らないとなりません。 だからメインファイルのようなものを ファイル→新しいプロジェクト から作りました。 sample01〜sample25(拡張子が*.csや*.slnなどが入っています)までのファイルのいくつかのファイルを使ったプログラムを作るためには それらの呼び出しを行うコードが必要だと思うのですが どのように呼び出せばいいのでしょうか。 検索してもDLLファイルのことしか出てこなくて悩んでいます。 抽象的で申し訳ございません。
まず「一つのソフトウェア」ってどういう意味? 一つのexeファイルってこと? 一つのexeにまとめたいんだったらソースコードを直接自分のプロジェクトに入れるしかない それと、sampleXXはプロジェクトなのかC#のコードファイルなのか プロジェクトだとしたらDLLなのかアプリケーションなのか
>>673 意味不明
本を買って勉強。または図書館に行く。
解決。
手間と金を惜しむな。
.NET2.0のSqlCommandでSQL Server 2005のストアドプロシージャを実行しようとしています。 接続は読み書き権限のみもつSQL Serverアカウントで行っています。 このとき、dboではない所有者のストアドが実行できません。 所有者を指定してストアドを実行するにはどうしたら良いのでしょうか。 コマンド発行のコードは以下の通りです。 command.CommandType = CommandType.StoredProcedure; command.CommandText = "hogeuser.hogeSP"; command.ExecuteNonQuery(); 例外は以下の通りです。 System.Data.SqlClient.SqlException: ストアド プロシージャ 'hogeuser.hogeSP' が見つかりませんでした。 所有者がdboであれば無事に通ります。 どなたか教えてください。
sample01〜sample25の中のクラスを呼び出すのは、「new」。 だけど、たぶんsample01〜sample25は25個の「ソリューション」。 検索して出てきたDLLは、おそらく「クラスライブラリ」。 さぁ、具体的になってきた? つ 『プログラムを作ろう!パソコン教科書 Microsoft Visual C# 2005 Express Edition入門 (マイクロソフト公式解説書)』
678 :
デフォルトの名無しさん :2007/10/30(火) 01:13:03
C#っていいの? 最初はどんな言語だっていいものさ。 しかし、そのうちにあちこちに綻びが出てきてだんだんややこしくなってくる。 なんだかんだともっともらしい理屈はつけられるけど結局、対症療法さ
いいよ 次の質問をどうぞ
680 :
デフォルトの名無しさん :2007/10/30(火) 01:17:47
おう、軽く受け流したね。ある意味、陰険
だって既出だもの
>C#っていいの? と聞いておいて、 >なんだかんだともっともらしい理屈はつけられるけど結局、対症療法さ 最初からまともに話す気なんかないのがよくわかる。 どんなレスを期待したのやら。
685 :
デフォルトの名無しさん :2007/10/30(火) 13:33:44
cの中で下の記号をよく目にするのですがどういう意味があるのでしょうか ->
>>686 -> スレタイを目に穴があくまで・・・という意味
スレタイに穴があくまで…じゃないか?
RSAについての質問です。 あるPCの公開鍵 RSAKey byte配列[0x80] があるとして、 その公開鍵を用いて暗号化したいのですが、 サンプルプログラムを見ると RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); RSAKeyInfo = new RSAParameters(); RSAKeyInfo.Modulus = RSAkey; byte[] Exponent = { 1, 0, 1 }; RSAKeyInfo.Exponent = Exponent; byte[] EncryptedData = RSA.Encrypt(packets, false); となっているのですが、Exponentとはどういった意味なのでしょうか? また、デバッグしてEncryptedDataを見ると、公開鍵は固定なのに被暗号データが変化しているように見えます。 どなたかわかるかたいらっしゃいましたらお願いします。
C#でファイルアップロードをしようとしてます。FileUploadを使用してますが、 ポストバックすると設定したファイル名が消えてしまいます。画面上には プルダウンでAutoPostbackする項目がいくつかあり、消したくないんですが、 これは可能なのでしょうか。
691 :
デフォルトの名無しさん :2007/10/30(火) 23:48:57
ASP.netスレできいたらどうかね?
無茶ゆうな。 ASP.NETの範疇の問題じゃない。 もちろんC#の範疇の問題でもないw
693 :
670 :2007/10/31(水) 14:30:29
>>671 ありがとう。せっかくだけど、良く分からないのでFindWindowで探すことにしました。
お世話になりました。
>690 無理。 選択したローカルのファイル名の情報はPOSTされてこないから。 でも、IEはローカルのフルパスを送ってくることがあるけどそれはIEがおかしいだけだから無視してくれ。
Windowsアプリで設定用のフォームを作りたいのです。 昔はタブで設定項目を指定して、それからページのフォームを設定していたと思いますが、 最近は、左側にツリービュー、右側に設定値という設定ダイアログが多いですよね。 ということで、最近の流行スタイルの設定ダイアログの右側はどうやって作るのでしょうか? 左にツリービューは良いとして、右には何が置いてるのですか? ツリーで選択されたコントロールを右に表示しなくてはならないのですが、 やっぱり、タブコントロールで、タブを非表示にして右に貼ってるのですか? それとも、コントロールのVisibuleとかで制御してるのでしょうか? それとも、他に適したコントロールあります?VS2005なのですが。
同サイズのPanelを同位置に重ねておいて treeviewの選択イベントでBringToFront
697 :
695 :2007/11/02(金) 15:43:07
>>696 どうも有り難うございます。
う〜ん、重ねるとVSのデザイナ画面でどれをいじっているのか
自分が分からなくなって困ると思ったんですが、それしか無いようですね・・・。
タブコントロールのタブだけ非表示に出来れば、
それを使いたいと思ったのですが、不可能なようです。
あとは、それぞれのPanelをカスタムコントロールにする
そうですが、それはそれで大げさな気がしますし・・・。
TabControlのAppearanceをFlatButtonに、ItemSizeを0,1に、SizeModeをFixedに設定すれば、あら不思議。
699 :
695 :2007/11/02(金) 18:12:13
鬼才現る・・・。 どうも有り難うございます。 Panelで重ねるとえらいことになる雰囲気がしてきたので、 Panelをユーザーコントロールにしようと悩んでいたところでした。 本当にどうも有り難うございました。
いや各画面ごとにユーザーコントロール(あるいは枠なしのフォームでもいいけど) で作るほうがいいような気がするけど。 ツリーで選択する、ってことはそれだけ多数の画面があって、 それぞれの画面には少なからずコントロールが乗るわけで、 そんな重装備のフォームってものすごくモッサリしそうに思うけど。
私は過去に複数のpanelをVisibleで切り替えたんだけど、
枚数が多くて後から改修するのに苦労したよ。
>>698 は今度試してみる。ありがとね。
実行時に、必要なはずのDLLが見つからなかった場合に例外が発生しますが、いつ発生するのでしょうか? 1、プログラムを起動したとき 2、DLLのクラスなどが実際に使用されるとき。 ・DLLのクラスをメンバにもつクラスが初期化するとき(対象のDLLのクラスが初期化されるとき) ・クラスのメンバが初期化されたとき 3、正確にはわからない
4、僕にはわからない
>>702 2
静的メソッドとかもあるから、クラスのメソッドが初めて使用されたとき。
>>704 ありがとうございます。
とにかくクラスが直接関わってきたら(staticコンストラクタが実行される直前に)、例外が出るって感じですね。
typeofでもロードされたりするけどな
違うよ。 対象のクラスを参照してる、要するに上で出てきてるようなものだけど、 それをやってるメソッドを呼び出す直前(JITコンパイル時)。 なんていうか、一段早いというか。
708 :
デフォルトの名無しさん :2007/11/03(土) 10:18:38
マネージドってどういう意味ですか?
C#3.0を利用するには.NETFramework3.0をインストールする必要がある?
712 :
デフォルトの名無しさん :2007/11/03(土) 10:47:29
714 :
デフォルトの名無しさん :2007/11/03(土) 13:35:38
VB.NETで書いたクラスファイルをC#で使うことって無理?
まず自分で試してから質問するって714には無理?
>>714 ソースファイルは無理。DLLごしなら可。
>>718 を補足すると、
同一プロジェクト内に .cs と .vb を混在させてコンパイルと言うのは無理。
C# プロジェクトと VB プロジェクトを別にして、
VB で作ったクラスを C# 側から利用するってのは可能。
ちなみに、どうしても DLL にしたくない場合、
module 化する方法もあるんだけど、ちょっと作業が煩雑。
moduleにしても結局1つのファイルにできないので、DLLが無難
というかILMarge。
VSなら複数アセンブリは無理っす
723 :
デフォルトの名無しさん :2007/11/04(日) 14:53:46
C#.netで新規web作成した時にnamespaceがなく、新しく自分でnamespaceを 追加したらエラーがでます、なにかいい解決策はないでしょうか?
>>723 死ね役立たず。
人の足引っ張って楽しいかゴミクズ。
今すぐ死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。v死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
>>724 まぁおちつけよ
何か嫌なことでもあったのか?w
726 :
デフォルトの名無しさん :2007/11/04(日) 23:24:25
mdbに接続する場合もADO.NETを利用するの?
727 :
デフォルトの名無しさん :2007/11/05(月) 00:08:18
C#を勉強しようと思い、.NET1.1〜3.0をインストールし C# 2005 Express Editionをインストールして勉強し始めてたとこなんですが .NETフレームワークのいくつでコンパイルするかってどこで指定するのでしょうか? その選択がどこにも見当たらないのですが。 1.1〜3.0までインストールしちゃったから、3.0でコンパイルするのかなぁ? それだと1.1のソースを貰ってきても動かない可能性あり?
>>727 2005で指定はムリ。
3.0を入れたなら3.0でコンパイルされる。
VS2008からは指定できるとか。
729 :
デフォルトの名無しさん :2007/11/05(月) 00:12:54
>>728 あぁそうなんですか。。
早まって3.0入れちゃった。
2.0でとめとけばよかった・・・
3.0ってXPとVistaだけなんでしょ? つまり3.0でコンパイルしたソフトはWin9Xではムリって事?
>>729 いちおう、主要機能に関しては互換性あるから、1.1 を 3.0 でコンパイルすることも可能だよ。
3.0 を 1.1 で〜は無理だけど。
あと、3.0, 3.5は、CLRのバージョンが2.0のままなので、 単に3.0, 3.5で追加されたライブラリを参照しなければ、実質2.0で動くプログラムになる。
>>726 誰も答えてないから一応答えとくが ケースバイケース もちろんADO.NETも使える
その質問の様子だとADO.NETはどんな動きなのかを知っといたほうがいいと思うぞ?
3.0は極端にいえば2.0にdllを足しただけだぞ 3.0のdllを参照しなければ全く無問題
735 :
デフォルトの名無しさん :2007/11/05(月) 13:40:28
object型のobjという変数を、byte[]にしたいのですが、どうやればいいのでしょうか?
(byte[])obj
byte配列 構造体 C#
エスパーすると、Binary Serialize したいって話か?
その程度でエスパーとは片腹痛いぜ
だって覚え立ての厨房だもんw
741 :
デフォルトの名無しさん :2007/11/05(月) 17:40:58
2枚の画像を組み合わせて1枚にして表示することって可能ですか? 例えば480x360の画像が2枚あり、1枚目の(240,0,480,360)の範囲と2枚目の(0,0,240,360)の範囲をつなげて、 1枚の480x360で表示するというふうにしたいです
ソース矩形を指定して描画するだけ MSDNでGraphics.DrawImageのオーバーロードを全部読んでみるといいよ
743 :
デフォルトの名無しさん :2007/11/05(月) 17:54:33
即レス感謝です! さっそく調べてみます!
744 :
デフォルトの名無しさん :2007/11/05(月) 18:42:30
746 :
デフォルトの名無しさん :2007/11/05(月) 21:46:56
VC#2005でMDIのプログラムを作ろうと思っています。 非常に初歩的な質問で申し訳ありませんが、以下を 回避する方法を教えてくださいませんでしょうか? [やりたいこと] MDI親フォームのボタン1をクリックすると、MDI子フォーム1を開く。 MDI親フォームのボタン2をクリックすると、MDI子フォーム1を閉じる。 [現状] MDI子フォーム1を閉じることはできていますが、MDI子フォーム1を開く際に MDI子フォーム1が2重に起動されている(一瞬描画された後、そのフォームの上に また描画される)のです。 .showタイミングはボタン1クリックの1度だけなのですが、このような現象を回避 するにはどうすればよいのでしょうか?
なにか隠してないか?
>>744 Bimap bmpNew = new Bitmap(480,360);
using( Graphics g = Graphics.FromBitmapとかなんとか( bmpNew ) )
{
g.DrawImage( bmp1, rct左, rct右, ほにゃらら.Pixel );
g.DrawImage( bmp2, rct右, rct左, ほにゃらら.Pixel );
}
749 :
746 :2007/11/06(火) 10:07:22
>>747 隠してませんが、もう何がなんだか。
それから、2重に起動しているという表現は正しくありませんでした。
どちらかというと一旦フォームを描画して、一瞬後、再描画するような
動きです。
例えば、フォームボーダースタイルプロパティをnoneに設定して同じように
フォームを開こうとすると、一瞬タイトルバーも表示されたフォームが開き、
その後タイトルバーの無いフォームが表示されるといった流れです。
.show時にフォームボーダースタイルプロパティが変更されていないか確かめ
ましたが、noneのままでした。
750 :
デフォルトの名無しさん :2007/11/06(火) 14:29:58
C#で巨大なMap構造を扱うときの定石ってなんですか? 例えば、BCLに巨大Map用クラスがあるとか、BerkeleyDB等の組み込みDBの使用するとか
BerkeleyDB 使うくらいなら SQL Server Express Edition。 今月末には .NET Framework 3.5 が出るし、 せっかくだから LINQ to SQL を。
>>751 一時的な領域としてその巨大Mapを使いたいのでRDBは大げさかなと思ってます。
753 :
デフォルトの名無しさん :2007/11/06(火) 15:19:07
作業用の一時ファイルを作りたいのですが、ユニークなファイル名の生成はどうやるのでしょうか? Random rnd = new Random(System.Environment.TickCount); string filename = rnd.Next().ToString() + ".tmp"; とか、やってみたのですが、1万回くらいループさせてみたら、処理が速すぎて ファイル名がぶつかる場合があるようなのですが・・・
System.IO.Path.GetTempFileName
int count = 0; for(...) { string filename = (count++) + ".tmp"; } 実にユニーク
∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ <こいつ最高にアホ 彡、 |∪| / / __ ヽノ / (___) /
∩___∩ | ノ ヽ ! / ● ● | こいつも最高にアホ | ( _●_) ミ 彡、 |∪| / .\ / __ ヽノ / \ ...\ (___) / .│ ..│ / ヽ l..lUUU .U
うん
>>752 SQL Server Compact Editionが組み込みDBに相当する
760 :
750 :2007/11/06(火) 18:19:33
>>759 さんきゅーです!さっそく調べてみます。
列挙子がなんとなくよくわからないっていうかぴんとこないっていうか。
はい
763 :
デフォルトの名無しさん :2007/11/07(水) 00:32:52
ASP.NETのSessionプロパティから使えるSession State Serverを 自前のサーバーから利用する方法を教えてください。
764 :
デフォルトの名無しさん :2007/11/07(水) 12:28:09
URLからそのURLのキャッシュを取得したいのですが、どうすればいいでしょうか? できればURL以下のファイルもキャッシュがあればまとめて取得するようにしたいです。 お願いします。
>URLからそのURLのキャッシュを取得したい イミフ
766 :
764 :2007/11/07(水) 13:55:23
>>765 764は
「キャッシュ」=「IEのインターネット一時ファイル」
と思ってるんだろ
768 :
デフォルトの名無しさん :2007/11/08(木) 12:01:04
ListViewのDetailモードようなコントロールで別々の小アイコンを二つ並べて表示したりしてますが、 どうやるのですか。オーナードローってヤツですか?参考になるのを教えて
769 :
デフォルトの名無しさん :2007/11/08(木) 13:56:59
アンケートの集計プログラムです 例えば、好きな果物は?という質問に自由に答えてもらう場合 答えをハッシュ配列にしてカウントしたいのですが、 ht["りんご"] には文字列しか入力出来ません ht["りんご"]++; みたいにやりたいのですが無理でしょうか?
>>768 ListView DrawItem でぐぐってみた?
>>768 文字列しか入力できませんてこたないだろ
だけど
ht["りんご"]++; という構文はHashTableじゃコンパイル通らないと思うけど
もしできたとしてもhtそのものに何の影響もないよ?
Dictionary<string, int>使って
dic["りんご"]+=1;
でいいんじゃね
まあIDictionary<string,int>とか継承して
キーの比較を真面目にやった方がいいと思うが("りんご" と "リンゴ"とかをどうするのか等)
どうせ練習課題だろうしこんなもんでいいんじゃね string ans="りんご"; int count; //private Dictionary<string, int> dic; if(dic.TryGetValue(ans, out count)){dic[ans]=count+1;}else{dic.Add(ans, 1);} こんなの真面目にやりだしたらキリがないよw
Delphiから移行したんだけど、集合型ってないの?
>>772 一応、.NET Framework 3.5(今月末正式リリース)に HashSet クラスが追加されるけど、
それまでは HashTable / Dictionary で代用してた。
KeyedCollectionでキーに値自体を使うとか
776 :
デフォルトの名無しさん :2007/11/08(木) 20:04:54
コントロール等のウィンドウハンドルは作成スレッド以外から いじったらヤバいという話ですが、 じゃあBitmapとかIconとかはどうなんでしょう? これらもハンドルありますよね? 別スレッドで作成したBitmap等をImageListに入れるとか、 大丈夫なんでしょうか。
やばいというか、ウィンドウ等は作成したスレッド以外からは触れない ビットマップ等をちゃんと排他処理して触るのなら大丈夫
ちょいと教えてください。 .Net3.0や3.5で追加されたクラスを含む (.Net3.0以上の環境でコンパイルされた) アプリを.Net2.0環境で動かすことは可能ですか? .Net3.0以上を使ってる部分を処理しようと落ちる(例外が発生するとか) けれども.Net2.0以下の部分は普通に動いてくれたりするとうれしいんですが・・
3.XのDLLを参照した時点で無理だろ
なんでだよ
>>778 3.0 依存部分だけ別クラスに分けておけば、それ以外は普通に使える。
>>776 ハンドルそのものには参照とかポインタとかと同程度の意味しかないぞ
あるアイテムをソートしてから、逐次処理したいんだけど何かいい案ないですか? 理想なのはQueue<T>でSort出来ればいいのだが
SortedList<T>に入れていけば
はいこれでやってみます
>>779 , 781
ありがとございます。確認したいけど環境がない
NotifyIcon のツールチップ(バルーンじゃなくて Text のほう)が表示される直前に Text の内容を更新したいのですが、NotifyIcon には MouseEnter イベントがありません。 『ツールチップが表示される直前』 を知るにはどうすれば良いですか?
MouseMoveじゃだめなの?
MouseMove で 『入った』 のを検知ですか?
表示される直前に Text の内容を更新したい、ってのはそもそもどういう意味なんだろw よーわからん。
刻一刻と変化するデータを表示したいとか、じゃね?
TTN_GETDISPINFOでも飛んで来ないかね
自前でメッセージ受けれるの?
794 :
デフォルトの名無しさん :2007/11/10(土) 23:37:15
stream.Writeでデータを投げて stream.Readでデータを受け取っているのですが 受け取ったデータをHTMLで表示したいと思っております。 そこでaxWebBrowser1.Navigateで表示すればよいかと考えていたのですが うまくいきません。 どのようにすればうまくいくかアドバイスいただければと思います。
naviじゃなくてドキュメントにぶち込め。
なんかエロイ
797 :
デフォルトの名無しさん :2007/11/11(日) 13:23:36
妥当な板がなかったものですから、ここに質問させて頂きました。 例えば、バーコードリーダー複数を1つのPCに接続して バーコードから1回の応答があるたびに、1回プログラムを処理することを 考えてるんですけど、どのようにして実現すべきですか。 インターフェースもどうしたらいいものか。USBハブでいいのかな。 WindowsCEでC#を使います。 OSへの入力を1回ずつ判断するような仕組みが必要と思っています。 WEBのようにTomcatのようなミドルウェアがあるんですかね。 当方、プログラム経験少なく、周りに聞く人もいなく途方にくれてます…
798 :
デフォルトの名無しさん :2007/11/11(日) 16:36:43
C#2005Expressを使っています。 指定した文字コードを使って、指定したコード番号の文字を画面に描画したいと思っています。 例えば、SHIFT_JISにおける33440番の文字(「あ」)を出力するとして…… Graphics g = pictureBox1.CreateGraphics(); int pagenum = 932; //←SHIFT_JISのページコード int num = 33440; //←ひらがな「あ」の文字コード string s = ""; //←最終的にこの変数に表示する文字を入れたい System.Text.Encoding enc = System.Text.Encoding.GetEncoding(pagenum); //ここに変換処理 g.DrawString(s, new Font("MS UI ゴシック", 12), SystemBrushes.ControlText, new PointF(0, 0)); ↑のような感じで書き出したいと思います。 この変換処理が書けずに困っています。 ↓のような変換処理を書いてみたのですが、うまく変換されず、 半角2文字とかで表示されてしまいました。 int chrSize = enc.GetMaxByteCount(1); byte[] b = BitConverter.GetBytes(num); System.Array.Resize<byte>(ref b,chrSize); System.Array.Reverse(b); s = enc.GetString(b); 長々とすみません...どなたか解決策とか案とかありませんか?
バイトオーダーが間違ってるだけに見えるけど。 っていうか、それなんで人に聞く前に自分で疑ってみないのかなあ理解不能だよまったく。。
何がしたいんだよそのコードは。 numに半角が入ってる場合はどうみなすわけ? 何も気にしなけりゃ、 byte[] b = new byte[]{ (byte)num, )byte)(num >> 8)}; とか。
いやんかっこが一個逆向きだた。まあわかるだろ。
始めからバイト列として扱ったら駄目なのか? int codePage = 932; byte[] b = {0x82, 0xA0}; Encoding enc = Encoding.GetEncoding(codePage); string s = enc.GetString(b);
まあそれでいいなら最初から聞いてこんだろう。 入力された文字コードでとか、そんなことをしたいんだろう、是非は別としても。
>>797 1台のpcに複数のバーコードリーダつける意味あるの?
多分キーボードのエミュレートだからかなり無意味なものが出来る。
>>804 一応業務的に意味があります。
で、やっぱり無理ってことですか?
生産ラインでUSBタイプを複数使ってたの見たことある。 各ポートが違うんじゃないかな。想像だけど。
vs2005を使っていると、クラス名や変数名の上にマウスポインタを置くと説明がポップアップします。 自作ライブラリで同じように説明がポップアップするようにするには、どうすればいいのでしょうか?
808 :
デフォルトの名無しさん :2007/11/11(日) 23:08:30
Accessをデータベースとして家計簿を作成しているのですが、tableの列の合計を うまく出力できません。 private void frm分析_Load(object sender, EventArgs e) { OleDbConnection OleConn = new OleDbConnection(); OleDbDataAdapter OleDA; DataTable Ds = new DataTable(); OleConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=C:\\etc\\開発\\test.mdb;"; string expenditure = "select sum(table1) from test"; OleDA = new OleDbDataAdapter(expenditure, OleConn); OleDA.Fill(Ds); DataRow dr = Ds.Rows[0]; this.lblテスト.Text = dr["table1"]; } 最後の"this.lblテスト.Text = dr["table1"];"の部分でエラーが出ます。 エラーを見ると、Select sum…の部分があやしいです、ただlblテストにtable1の 合計を出力したいだけなのですが、どなたか上のコードを修正していただけないでしょうか。。 ちなみにAccessのtestテーブルは、table1という名の列に一桁の数字が6つあるだけです
>>805 >一応業務的に意味があります。
そんな馬鹿な回答書いて恥ずかしくないのかwww
複数の人間が使うとか、リーダーごとに入力内容を変えるとか…もっと必然性があるというアピールをしないと。
で、
USBキーボードが複数つないであって、複数の人間が同時に入力したらどうなる?
わけわからんしね。 後マルチ先にあやまってこい
RS232CのUSB判だからポート番号で開くわけだ
>>807 プロジェクトのプロパティ→ビルド→XMLドキュメントファイル
///←で必要な項目埋める
コメントがついてないメンバがあるとビルド時に警告がでるようになるが
普通にHIDでしょw 232Cって何のことよ。 バーコードリーダーって、少なくとも一般に市販されてるのは キーボードエミュレーションの奴ばっかりだね。 だとする次の2点が直ちに問題になるね。 (1) ドトネトでキーボード入力のグローバルフックって可能だったっけ? (2) 可能だとして、しかし(本物のキーボード経由の)普通のキー入力と バーコードリーダーからの入力をどうやって区別したらいいのか。
814 :
デフォルトの名無しさん :2007/11/12(月) 15:24:01
メッセージのログを表示する方法ってわかりますか?
エスパーの出番だな。 つか何のメッセージだよw
816 :
デフォルトの名無しさん :2007/11/12(月) 16:01:31
プログレスバーのValueをバーの真ん中にリアルタイムで表示したいのですけど、 さっぱり分かりません。おしえてください。
OnPaintをオーバーライドして自前描画
たとえばPoint(10,10)に試しに書いてみたいのですが、何も表示されません。どこが間違ってますか? protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.DrawString(progressBar1.Value.ToString(),new Font("Arial",9),new SolidBrush(Color.Blue),new Point(10,10)); }
820 :
819 :2007/11/12(月) 20:08:00
すみません。Formには表示されましたが、プログレスバーの下に値が表示されてしまいます。最上部に表示するにはどうすればよいでしょうか?
FormではなくProgressBarを継承したクラスを作り、そのOnPaintをオーバーライドする。
822 :
819 :2007/11/12(月) 20:15:17
あーでも大昔のインストーラでよくあった、バーのForeとBackの色を反転して 文字を描画するのってGDI+だと恐ろしく面倒になりそう。
>>813 リーダー→画面→Onchangeイベントでどう?
グローバルフックは無理だったような。 デバイスのドライバ書くしかないかも。
SDKのあるBCリーダーとかねーかな
だから、バーコードリーダーの使い方が間違ってるんだって。 なんで必要なのかさっぱりわからん。 システム屋さんがそんな提案してきたら即効却下。
たとえばPoint(10,10)に試しに書いてみたいのですが、何も表示されません。どこが間違ってますか? ←ここに///と入力してみ? protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.DrawString(progressBar1.Value.ToString(),new Font("Arial",9),new SolidBrush(Color.Blue),new Point(10,10)); }
///
828は何がいいたいんだ?
>>828 エスパー回答 : そのコードを書く場所が違う。Formに書いてないか?
832 :
819 :2007/11/13(火) 00:46:27
ProgressBarを継承したコントロールを作って、そのOnPaintで書いたみましたが何も表示されません…。 public partial class ProgressBarEx : ProgressBar { public ProgressBarEx() { InitializeComponent(); } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.DrawString("a",new Font("Arial",10),new SolidBrush(Color.Blue),new PointF(10,10)); } }
ヒント:呼ばれてません
834 :
819 :2007/11/13(火) 00:49:01
>>833 く、詳しくお願いします!!どうしたら呼ばれますか?
まだいたのか SetStyle
836 :
819 :2007/11/13(火) 02:00:22
SetStyleをUserPaintにすると確かに文字は描かれましたが、 元々のプログレスバー本体が描かれません・・・。 もしかして全部自分で描画するしかないのでしょうか?
オーナードローでお勉強をどうぞ もしくはMyBase呼んだ 後である部分だけ塗りつぶすとか
プログレスバーの上にラベル置けば済む話
それだとバーの色と文字色がかぶる
>>823 あれはバーも含め ExtTextOut だけで書いてるからなー
841 :
819 :2007/11/13(火) 14:53:52
諦めました。ありがとうございました。
>>827 >システム屋さんがそんな提案してきたら即効却下。
じゃあ「バーコードリーダーが4つ付いた何か」を作るときはどうやんの?
(1台だけなら二三日も悩むよりPC4台入れた方がいいかもしれないけど)
843 :
デフォルトの名無しさん :2007/11/13(火) 15:55:07
844 :
こまった :2007/11/13(火) 16:54:49
すみません!初歩の初歩ではずかしいんですが、 式を打ち込めば四則演算を行い、余りまでだしてくれるプログラミングを作りたいのですが、わかりません。 教えてください!! argvを使うらしぃのですが、さっぱりわかりません!!
ここはC#のスレッドです。 あなたの想定している言語は本当にC#ですか?
初歩の初歩じゃありません 結構大変です
初歩の初歩と思ってる時点で初歩の初歩だな。 たがスレ違いだ多分。
848 :
こまった :2007/11/13(火) 17:07:28
すみませんでした
+、-、*、/、%を切り出すだけだけど、( )がネストしてると結構めんどくさそうだな
逆ポーランド記法で打ち込んでもらえばいい。
入力されたファイルパスが正しいかを 正規表現でチェックするコードを書きたいと思ってるんですが、 この場合のどんな正規表現を書けばいいかわからなくて困っています。 誰か助けてください。
そのアプローチは根本的に間違ってる。 正規表現でチェックするのではなく、 実際にアクセスしてみてエラーが出るかどうかを見るべきだ。
File.Existsメソッドでファイル有無確認すればいいんじゃね?
>>852 そうでしたか。
アドレスやURLをチェックするようなコードがあったので、パス名にもあるのかと思ってました。
とりあえずファイルの存在をチェックする方向で行ってみます。
レス、ありがとうございました。
855 :
デフォルトの名無しさん :2007/11/13(火) 17:27:49
質問です。 固定長フィールドからなるファイルを、それぞれの変数に読み込んでリストビューに表示させたいのですが、 一番早い方法をおしえてください。 ファイルはこのような感じです。 AAABBBCCC\n AAABBBCCC\n
連投ですが、
>>853 さんもありがとうございます。
ググってみます。
そういや、Path.Get〜系のメソッドって Invalidなパスだと例外出してうぜぇ
>>857 ちょっとした引数のミスで容赦なく例外投げるMSの姿勢が大好きだ
寧ろアドレスやURLを調べるメソッドがないから性器表現が必要なわけだしな
「ファイルパスが正しい」とは何をもって正しいとみなすかはっきりさせれ
ファイルが存在するか、以外に何かあるとでも?
それならFile.Existsでいいだろ
もー856で解決してるんだからいいじゃん
>>851 はファイル名として使える文字かどうかを、調べたいんじゃないの?
System.IO.Path.GetInvalidFileNameChars()
単にパスが不正かどうかとかいろいろあるだろ。 保存先を指定する場合ならどうなんだよ、ファイルはまだ無いぞ。
>>868 組み合わせによっては不正になる場合もあるから、難しいな
オマイラは広げるの大好きだなww
872 :
807 :2007/11/14(水) 02:02:31
>>812 遅れましたが、ありがとうございました。
>>871 可能性は示しておいて損はないと思うぞ
いつかトラブったときに役に立つ日がきっと来る
かも(´▽`*)アハハ
くだすれOpenGLスレより移動してきました。該当スレの254です。
スレ移動宣言後、ちょっと内容が変わったのですが(オフスクリーンで
レンダリングするようにしたくらい)、症状は同じで、どうしても
レンダリングコンテキストのハンドルを取得できません。
SetPixelFormat()までは上手くいっているようで(trueが返ってくる)、
wglCreateContext()までの間には他の処理は挟んでいません。
調べても該当するようなものはなく、どうしていいか全くわからず
お手上げの状態です orz
コード:
http://www12.axfc.net/uploader/93/so/File_2538.txt.html 一体何が原因なのでしょうか?
間違い探しをする気分ではないので とりあえずTao使えば? とか言ってみる。
>>875 TaoはSDL使っててLGPLに引っかかりそうなので、できれば
使いたくないです…
しかし、試しに使ってみたらうまく取得できました。
…なんで? orz
877 :
デフォルトの名無しさん :2007/11/14(水) 13:34:10
質問があります。 ラベルのフォントのBOLDを変えるとき、以下のようにすると思います。 if( boldFlag ) label1.Font = new Font(label1.Font, FontStyle.Bold); else label1.Font = new Font(label1.Font, FontStyle.Regular); これを100回繰り返してもGCが勝手にメモリ開放してくれるんでしょうけど、 効率悪いでしょうか? もっと良い方法があるでしょうか?
毎回Fontをnewすれば重いわなw ローカルから昇格させろよw
879 :
877 :2007/11/14(水) 15:45:03
>>878 どうもです。
開始時にnewして代入するよう変更しました。
private Font boldFont;
private Font regularFont;
loadイベント
boldFont = new Font(label1.Font, FontStyle.Bold);
regularFont = new Font(label1.Font, FontStyle.Regular);
任意のイベント
label1.Font = (boldFlag ? boldFont : regularFont);
あと念のためフォームのDispose(true)で破棄しといたら
それするくらいならセットし直すときに破棄するだろ。 アンビエント関連で破棄できないもしくは判断が面倒なら放置しかないだろ。
あーコントロールに直接設定するのか ちゃんと読んでなかった それなら放置でいいやすまん
const と static readonly との違いがイマイチ分かりません。コンストラクタで 何か入れたい場合には後者で、いわゆる定数値は前者ですか?
>>883 const は、コンパイル結果がいわゆる即値として埋め込まれる。
readonly は、単にコンパイラが変更を認めないだけで、
コンパイル結果は普通の変数と変わらない。
(変更を認めてない分、最適化はかかりやすいけど)
用途的に言うと、
そのコンストラクタで何か入れたいときに readonly ってのもやるし、
そもそも参照型の変数は const にできない。
コンパイル時定数 実行時定数 後者は実行した時刻を入れたりとか、前者に入らない配列とか
>>883 外部アッセンブリから参照される値などは不用意に const にしてしまうと、
参照側に定数として埋め込まれてしまうので注意(定義しているアッセンブリを
差し替えて変更されても、コンパイルし直さないと参照している側に反映されない)。
アッセンブリのバージョンが変わったりしてもずっと変わらない定数なら良いけど。
質問です。 C++アプリからActiveScriptSiteなどを使い、スクリプトでマクロを実行する環境を作ってます。 これにC#で作ったクラスライブラリDLLを、AddNamedItemみないな登録を簡単にすることは できないでしょうか。 出来たらDLLを指定すると、クラスライブラリの内容全部登録みたいな事がしたいのですが。 C++側のインターフェイスを、SWIGなどを使って、マクロからアクセス出来るようにしたいの ですが、どうせならC#がいいかなと思って調べてます。 それとも、スクリプトサイトにActiveScriptSiteを使うのはやり方がまずいのかと思って、識者 の方の意見をお願いいたします。
888 :
883 :2007/11/15(木) 16:12:48
ありがとうございます。 ただ、伺った回答ですと、取り合えずstatic readonlyにせよ、という感じが してしまいますが、constのメリットってありますか?
なんでstringはconstに出来るのよ
参照型だけど、コンパイル時に値を決定できるから
constできるのは所謂プリミティブ型なデータ型だよね。 だからなんだといわれても困るけど。
892 :
883 :2007/11/15(木) 16:53:17
Javaだとstatic finalとかで終わりなんですが、2種類あるんで戸惑ってますw 何となく、所謂定数はconstにして、finalなんだけど動的に読み込むような値は static readonlyにするとかっこよい感じがして、そうしてるんですが・・・。 これって、C++からの名残なんですかね。
C++にはconstしかない Javaにはreadonly(static final)しかない
constのほうがちょっと速いかもしれなかったり 属性に使えたり 列挙体の値に使えたり switchに使えたり fixedで固定サイズバッファのサイズに使えたり
>893 Javaのstatic finalもコンパイル時に値が埋め込まれるのでC#のstatic readonlyにはならない。 readonlyよりgetのみのプロパティで固定値を返すのが確実でいいな。 readonlyは値がセットされる前に値を取得できてしまうのがいまいち。
896 :
デフォルトの名無しさん :2007/11/16(金) 12:57:29
IEのツールバーを作っています。 ツールバーのボタンをクリックするとページ全体を保存するようにしたいです。 ExecWB(SHDocVw.OLECMDID.OLECMDID_SAVEAS, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_PROMPTUSER, ref o, ref o); でできるらしいことはわかったのですが、どうもうまくいきません。 ・ツールバーのボタンを押すと、Internet Explorer_Serverのハンドルを取得する ・HTMLドキュメントを取得する の点はできています。 ・ハンドルやドキュメントからどうやってExecWBを使う(?)か分からない。 ・アセンブリの生成に失敗しました -- 参照されたアセンブリ 'AxInterop.SHDocVw' は厳密な名前を持っていません。 というエラーが出る。 の点が分かりません。 どのようにすればいいでしょうか。ご教授願います
IEのツールバーってことはBandObjectLibを使ってるのかい? IWebBrowser2っていうかWebBrowserClassのフィールドがあると思うけど IWebBrowser2::ExecWB
898 :
896 :2007/11/16(金) 13:49:57
>>897 ありがとう。BandObjectLibです。
あと書き忘れたけど.NET Framework 1.1で.NET 2003です。
WebBrowserClassのフィールドってどこにあるんですか?
すみません用語が良く分からなくて・・
バージョンが違うかもしれないけど、手元のBandObject.csには protected WebBrowserClass Explorer; てのがあるよ てか "base." って打てばインテリセンスが探してくれるんじゃね?
900 :
896 :2007/11/16(金) 14:11:15
>>899 SUGEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!!!!!!!!!!!1111111111
base.っていうのもしらなかった
おかげさまでできました!!!thx!
いやぁそれほどでも… と手柄を頂いてみる
イベントとスレッドの関係ってどういう感じなのでしょうか? WebBrowserコントロールに便乗しますが、 例えば、FormアプリでForms.TimerとBrowserControlを使っていたとします。 メソッドのtimer_TickとBroserコントロールのDocumentCompleteのコールバックの中で 同じフィールドを操作していたとしたら、 ロックを使っていないマルチスレッドで発生するような問題が発生するのでしょうか? それとも、その辺りはForms.Timerが勝手に、良きに計らってくれるのでしょうか?
ヒント EventはDelegate TimerはThread
なに言ってんだお前は…
Forms.Timer はその Timer が作成されたスレッドでイベントを発行してくる。 BrowserControl が DocumentComplete をどのスレッドで呼び出してしてくるかは とくに記述されていないと思うけど、Main を STAThread で書いてるなら BrowserControl を作成したUI スレッドで呼び出してくるのが作法なので たぶんそうなっているはず。
906 :
902 :2007/11/16(金) 18:02:06
どうも有り難うございます。 BrowserControlはSTAなスレッドでしか正常に動きませんでした。 ということで、BrowserControlもFoms.Timerも同じFormの上で動いていますから、 同じUIスレッド上にあるということで、動作は直列にしかならない、 ということなのですね。 どうも有り難うございました。
不安ならInvokeRequiredとか見ればいい
.Net全然知らないJavaな人間ですが、 C#、VB.NET、ASP.NETの違いについて以下でOK? WEBアプリケーションはASP.NETしかできない。 C/SはVB.NETかC#だが、VB.NETが一般的。 C#は組み込み系とか業務系ならバッチで使われる? C/Sでは開発の容易なVB.NETが使われる。(VB.NETの差別化がわからん。) Javaに似ているが、ServletのようなHTTPのAPIがなく、WEBはできない。 実行速度はこんな感じ? C >> C# > C++ > Java > VB.NET
909 :
908 :2007/11/17(土) 10:17:54
自己レスです。 申し訳ない。もう少し調べたらわかりました。 ASP.NETは言語でないと。 C#でもVB.NETでもC/S、WEBの両方ができるってことですね。 C/S、WEBでそれぞれの言語をどのように使い分けているのでしょうか?
用途による使い分けなんてないよ。 ちょっと見た目の文法が違うだけで、できることに大差はない。 元々VB使ってた人が使うのがVB.NETで C/C++派の移行を狙ったのがC#。 JavaやってたんならC#の方使えばOK。
911 :
908 :2007/11/17(土) 10:30:51
なるほど、実際は差がなく、どっちの技術者が集めやすいかなんですね。 でも、VBでWEBって違和感ありますねー。 それならVB.NETは廃止して、C#に一本化した方がいいのにと思えるけど、 MSがVB技術者を救済した?。。。
うん
複数の言語の混在開発が容易ってのも .NET Framework の売りだし。 VB屋はVBっぽい文法で、C屋はCっぽい文法で。 新しいことやろうとするたびに新しい文法に染まらなきゃいけない時代は終わったよ って言うためにもVB.NETは必要。
で、実行速度的にはどうなの? C >> C# > C++ > Java > VB.NET
たまにはJ#のことも思いだしてやってください
>>914 ゴジラとガメラ、どっちがつおい?
みたいなこといってんじゃねーよハゲ
ゴジラは放射能吐くしガメラは空飛べるんだよ
>>916 で、ゴジラVSガメラはどっちが勝つんだ?
ガメラはただのカメだろゴジラのほうがつえーよ常考
C > C++ >= C# >= VB.NET >= Java
ただのカメが空飛ぶかよ
FORTRAN > C > C++ > C# = VB.NET = Java
.netが犬でも動くようになると良いけどね monoっていまいち
>>908 VB.NETは
VB厨が変化についていけず救済措置にもなれない、その他言語経験者は文法のキモさに使用しない
必要とされていない子
>>918 ガメラなめんな
俺の周りではVB.NETばっかだな〜 C#は悲しいくらい少ない。
C#の方ができることが多い。 新しいライブラリはほとんどC#サポートのみ。
意味がわかりません><
つまり釣りって事です
3D系プログラミングをサポートされているのはC#だけ
3D系はともかく、XNAはそう言えばC#だけだったな まあXNAに手を出すような奴がVBでってこともまずないだろうが
C#よりも、VB.netのほうが何故か好きな俺('A')
最初からC系の言語しかやってないとC系の言語の気持ち悪さはわからないんでしょ。 俺も、配列の括弧が()なのと行の継続に_使う(かつその後ろにはコメント書けない) の以外はVBの方がコード読みやすいと思う。
まあでもほんとに気持ち悪い部分は基本的になくなってるしな
>>932 VBコンパイラなくしてどうすんだよ・・・
「VBらしく」書かなければいい C#と同じように書いたVB.NETが一番見やすい
F#が変態っぽくて好きだな
Perl.NETきぼんぬ
C#4.0でVBの構文もサポートすれば最強だなw
ソースの途中で言語を変えられるようにすればおk
Dim n as Int32; Dim array() as Int32 = new int[]{ 0, 1, 2, 3, 4, 5, 6 }; foreach( i as Int32 in array ) n+= i <3 ? i : i*2; next;
色々諦めて、C++/CLIみたいに #pragma VB … #pragma CS …
C#.NETよりVB.NET技術者のほうが月5〜20万安く雇えるな 技術や言語自体がどうこうっていうよりcって付いてると高くなるので 周りにc#.NETやるやつが増えない(というか雇えない)
VB意向組が如何に多いかわかった。 ある程度予測は付いていたが、実務でC#は厳しそうだな・・・
実務では、ってドトネトってむしろ実務以外であまり使われてないでしょw ドトネト製のフリーソフトってどれだけあるよ
>>942 安くて設計からできるC#技術者は少ないからね
言語機能で見れば問題無いんだけど
実務やるならVBと同じ予算やりくりして引っ張ってこないといけないので
C#やったことないけどやってみたいって人だけ集めてやるなら可能
経験者一人くらいは赤字覚悟で入れればなんとか・・・
意外にあるよ>ドトネト製のフリーソフト
君たちには海外が見えてないんだね。
俺はドトネト(笑)製のオプソソフト作ってるよ。
つーか、VBとかCとか言語で単価って変わるの? 経験年数が主じゃない?
プログラミング能力は3年超えたら、大した進化しないよ。 それにプラスの能力がないとスキルとして評価されないよ。
>>938 Visual Studio solution is enable what composite C#, C++ and VB.
>>914 If you think same doing for anathor language.
Does compare language speed, then C > C++ >> C# >VB.
Because C and C++ are native, but C# and VB are not.
>>948 単純に変わるよ
でも以前より差は無くなってる
上のほうでは1〜3割違うけど曾孫請けくらいまで降りてくるとなぜか差は数万になってるw
交渉時もVBだと「VBには金を出せない」って平気で言われる
言語機能に不足は無いって言っても無駄、顧客が持ってるイメージの問題
単にCだと高くつくってイメージもあるけど実際にそう
言語なんでもいいよ〜ってところもあるけどそういうところはVB価格で出してくるね
>>953 >交渉時もVBだと「VBには金を出せない」って平気で言われる
だって出してくんの「VBやってるからVB.NETできます」君だろ?
俺は最近VBAもあんまり弄ってないから戸惑うよ
言語速度って何だw アナザーってなんだw
これは恥ずかしい
rubyに浮気しようと思うんだ
いいんじゃないかな 俺も一時Rubyしてたけど結局C#メインに戻った
言語は嫁や恋人じゃないからそれは浮気じゃないよ
rubyとC#はどっちがいいんだ
C#
Rubyの作者曰く「C#の文法はRubyの足元にも及ばない」
VS2005でメソッドのオーバーライドって protected override でインテリセンスから選択する以外に方法あります? メニューから選択できるとか?
つーか、Rubyとは比較対象にはならんでしょ
やっぱコンパイルできた方がいいと思うんだけどなあ
>>967 無いんじゃね
どう考えてもインテリセンス使ったほうが早い
protectedは書かなくてもoverride[スペース]だけでおk
C#も現実主義とか言ってる割には趣味性の高い言語だと思うけど
うん?
ヘジたんの夢が詰まってるからな
現実主義って誰が言ったの? つーか現実主義って意味わかんね
ヘジたんが一番好き
業務知識じゃなく、設計能力やシステムに対する知識(データベースやWebサイト)に フレームワーク等の製品知識が必要だと言いたかったんだが。
外注使えるだけ羨ましいな。社内のちょっとかじって知ったかのオッサン相手にしてると疲れるよ・・ 無知で頑固で無駄が大好きだから
同意だな いつまでも古臭い書き方強要したりな 言語に合わせた書き方ってものがあるだろうに・・・ JAVAやドトネトでStringクラスに大量の文字列くっつけるのに String str = ""; str = str + ""; ・ ・ ・ ・ str = str + ""; hoge.execute(str); ねーよwwwwww
>>979 ごめん・・・
それ見やすくていいじゃんとか思っちゃうんだけど
もしかして俺一緒に働いてる?
いや そうじゃなくってさ 見やすさはいいんだけどさ パフォーマンス考えたらせめてStringBulderとかつかうだろ?
どーせSQLだろ?パフォーマンス云々いう前に外部化しろよ・・・
>>983 それするような会社じゃないのよw
ビューやPL/SQLとか一個もないし
でSQLの文字列結合はこれで4000行とかあったりするし
毎回これを実行して文句ひとつ言わないPGとか頑張ってるなぁとかおもうんだぜw
StringBuilderは存在知らない技術者も多いね Javaから来た人はStringBufferのかわりに見つけれるみたいだけど VBやC(C++じゃなくて)から来た人は軒並み+=してくるな ソースレビューとかレビューイとしては正直やりたく無いんだけど 何回かやっとかないといけない現実がつらい
985追記 +=すんのはCの人だけだった VBの人はstr=str+だった 秀丸で\nを\nstr=str+に置換していい笑顔されたので なんとなく笑顔で返してしまった俺はかなり弱気
最近のJavaにはStringBuilderっていう同名のクラスもあるけどね
>>985 それもそんな数が多くない所や同時アクセス数が少なけりゃ否定はしないんだけどね
WEBアプリで同時にドカンとこられたら結局メモリの無駄遣いでガベコレ動いてパフォーマンスが落ちることを結構気にしちゃったりするんだよ
それにそういう事気にせずにやる会社は+αでDB鯖のデータ数が増えまくって設計が悪いと極端に性能が落ちてくるからあとでクレームや相談が来ることも結構あったりするしさ
>ソースレビューとかレビューイとしては正直やりたく無いんだけど
>何回かやっとかないといけない現実がつらい
ちょっとkwsk
>>987 おおう、知らなかった
もうJAVAには戻るなと言う神のお告げと理解しますw
正直、何年前の話してんだ?って感じなんだが・・・
Javaの新規システムは先細りだろう。 正直、大手SIが金稼ぎの為に利用しただけになってるからね。 コスト意識が高い企業は.NETを選択することが増えてきているし、 失敗プロジェクトの多数がJava(言語が問題ではない開発者が問題)という事実も 知られてきている。
>>988 開発チームリーダーとかやってるんだけど
開発時ってプログラマーを集めるが基本的に全員初対面
プログラマー同士は同じ会社だったりするけど
みんなの能力がわからないのでプログラム書いたあと
書いた人がプログラム多少知ってる人にソースコードレビュー
わかってる人と判断したら10分でレビュー終了
やばい人と判断したらソースのまずいところを指摘して
改善策も提示(だいたい自分で調べられない)
超疲れる
効果的でもあるが、ソースレビュー記録票が無いと納品拒否されるのが理由
バグが出たときはソースレビューした人(俺)がボロカスに言われる
ちなみに以降のソースレビュー記録票は捏造します
捏造係はプログラマーのうち使えない人をあてます
こんなんでおk?
もっと細かい内容のことだとしたら俺も空気読めてないんだと思う
数値チェック関数もデフォで入ってなかったような言語なんか使うかよ
>>992-
>>993 あれ・・・やっぱりタイムスリップしてる?・・・
>>993 うわぁ・・・あるあるwww
プロジェクト入れられた時に各自の一本目はソースレビュー必須で先行してやってた人のベース見た時に
うぉっ!!
て思ったこともあったよ
ソースレビューの記録はやった事無いが、テスト結果の記録は・・・(´▽`*)
こんなもんでおkw
次スレを立ててつかあさい
998 :
デフォルトの名無しさん :2007/11/18(日) 07:31:10
>>993 そのまえに、.NETってだけで納品を断られることのほうが多い
999 :
デフォルトの名無しさん :2007/11/18(日) 07:32:37
a
1000 :
デフォルトの名無しさん :2007/11/18(日) 07:33:23
1000なら今日死ぬ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。