1 :
デフォルトの名無しさん :
2007/08/26(日) 12:42:25
2 :
デフォルトの名無しさん :2007/08/26(日) 12:45:52
3 :
デフォルトの名無しさん :2007/08/26(日) 12:46:26
4 :
デフォルトの名無しさん :2007/08/26(日) 12:47:15
5 :
デフォルトの名無しさん :2007/08/26(日) 12:47:46
6 :
デフォルトの名無しさん :2007/08/26(日) 12:48:16
7 :
デフォルトの名無しさん :2007/08/26(日) 12:48:48
乙 てかそろそろ過去ログ列挙しなくてもいいんじゃない?
クララが建った
997 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/26(日) 12:06:50 Form1.Designer.csにコントロールの座標やら何やらがごちゃごちゃ書かれてるのは変だから 分離しようってだけの自然な流れ 998 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/26(日) 12:12:46 >Form1.Designer.csにコントロールの座標やら何やらがごちゃごちゃ書かれてるのは変だから え? 本気で言ってるのかな 999 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/26(日) 12:19:32 本気ですとも 反論があればどうぞ 1000 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/26(日) 12:27:13 キモイ
11 :
デフォルトの名無しさん :2007/08/26(日) 18:38:55
むしかえすなよ
以下スルー?
食いつこうぜ
14 :
デフォルトの名無しさん :2007/08/26(日) 19:15:02
SortedDictionaryに格納されている先頭のKeyの取得の仕方を教えてください。
foreach一回目
foreachで回して1回目だけメモっておけばよいだけでは?
17 :
デフォルトの名無しさん :2007/08/26(日) 19:28:26
こんな感じですね? string FirstKey; foreach (KeyValuePair<string,int> pair in sortedDictionary) { FirstKey = pair.Key; break; } これしか方法は無いのでしょうか?
Enumerator取得して、一個目だけとればいいじゃん。
イミナサスw
20 :
デフォルトの名無しさん :2007/08/26(日) 20:42:49
>>18 抽象的なアドバイスなら私にも出来ますが?
別に抽象的ではない。 意味ないけどなw
こんな感じ? SortedDictionary<string, string> sd = new SortedDictionary<string, string>(); sd.Add("a", "b"); SortedDictionary<string, string>.Enumerator e = sd.GetEnumerator(); if (e.MoveNext()) MessageBox.Show(e.Current.Key + " : "+e.Current.Value);
意味ないか? foreachよりはマシだと思うけど・・・
C#3.0 だとこれで取れる。 Console.WriteLine(sd.Keys.First());
25 :
デフォルトの名無しさん :2007/08/27(月) 01:27:47
WebBrowserコントロールでFlashを表示するとFlash内のクリックでのイベントが が1度目しか実行されないのだけど対処策があるか知りませんか? コントロールから一度フォーカスを外すとイベントが処理されるようです。 IEコンポーネントを直接使うと問題はないのでコントロールのバグかと思われるのですが。
プログラムとは関係ないんだけど、 C#の月刊技術書って何読んでる? Windows Deveropers Magazineが休刊してから、何も読んでなくて。
C#で作った実行ファイルを配布する時って、何の情報があればいいすか .NET入れとけ、みたいな つまりユーザー向け実行環境のことで相談なんすが
.NET Framework入れとけでおk .NET2.0なら実行環境は2.0でも3.0でもおkだから今から配るなら3.0入れとけにしとけ
29 :
28 :2007/08/27(月) 10:14:31
日本語変だな 今から入れるなら3.0入れとけと言いたかった
WindowsUpdateしておけと書く
>>30 カスタムでないとインストールされないのでは?
vista買えでいいんじゃね
そんなソフト誰も使わねえ
オブジェクトの現在の状態に対して不適切な引数が与えられて メソッドの呼び出しが失敗したとき、 ArgumentExceptionとInvalidOperationExceptionのどちらを投げればいいの?
誰も使うなでいいんじゃね
>>34 おいらはInvalidOperationの方投げる
ArgumentExceptionのInnerExceptionにInvalidOperationExceptionを設定したものを 投げる、が正解。 というのは半分冗談だけど、ArgumentExceptionの方適切だと俺は思うけどなー InvalidOperationExceptionだと現在のステートだと引数に無関係に問答無用で ダメだという印象を受けるよ
引数もoperationの一部だからそんなことないのでは。 ところで全部ApplicationExceptionから派生させろって規則は結局なくなったのか いつからなくなったんだっけ。
2.0からだったかな
>>38 その理屈だと、そもそもArgumentExceptionは不要という話にならないか?
ガイドラインのInvalidOperationの > オブジェクトの現在の状態から判断して、プロパティ セットやメソッド呼び出しが不適切な場合は、 > System.InvalidOperationException をスローする必要があります。 をどう解釈するかによるなぁ むしろメソッド個別の問題か?
状態によらず不正な引数が与えられた場合はArgumentExceptionで それ以外の時はInvalidOperationExceptionとか。
43 :
38 :2007/08/27(月) 21:15:26
>>40 俺も書いててそう思った。
でも状態を変更→呼び出しっていう一連の操作のうち状態変更がちゃんと行われてないって考えれば
InvalidOperationといえるような。
でもその瞬間だけみれば引数がおかしいのに他ならないからやっぱArgumentException?
.NET Frameworkを見てると
>>42 が正しそうかな
.NET 1.1のアプリって.NET2.0や3.0のフレームワーク入れたら動く?
なんとなく動く
ことによると動く
動く可能性は否定できない
もし動かなくても文句言うな
.NET 1.1を入れちまえばいいんだろ
>38 .NETが2.0になってからApplicationExceptionは派生するなって変わった気がする。
52 :
デフォルトの名無しさん :2007/08/28(火) 00:28:01
フォーム上のコントロールのEnabledをfalseにするとクリック等のイベントが親コントロールに通知されます。 これを通知させないようにする方法はありますでしょうか?
渡されたオブジェクトの型を調べて、その型のListを作りたいんだけど<>の中の書き方が分かりません。 教えてえろいひと!
まずはお前の肛門拡張からだ
Activator.CreateInstance(typeof(List<>).MakeGenericType(obj.GetType()))
何がしたいのか知らんが Type listT=typeof(List<>); object listHoge=listT.MakeGenericType(typeof(Hoge)); こんな感じじゃなかった?
( TДT)ゴメンヨーCreate忘れてた
58 :
デフォルトの名無しさん :2007/08/28(火) 11:13:15
>>53 実行時にしか型がわからないなら、arraylistでobjectに格納すれば
いいんでないの?わざわざジェネリック使う意味がよくわからないけれど。
Listよりarraylistの方がいいのかな? 使い分けが良く分かってないのでとりあえずList使おうかな、と
引数の型に合わせるためにどうしても必要とかでなければ
>>58 でいいよ
Listに統一したかったらList<object>にすれば
public List<T> CreateList<T>(params T[] objs) { return new List<T>(objs); } こうだろ
62 :
デフォルトの名無しさん :2007/08/28(火) 14:11:04
>>61 object value = (Int32)1;
Type type = value.GetType();
MethodInfo method = typeof(Program).GetMethod("CreateList");
MethodInfo generic = method.MakeGenericMethod(type);
Array paramArray = Array.CreateInstance(type, 1);
object list = generic.Invoke(null, new object[] { paramArray });
dクス arraylistでちょっとやってみます
ArrayListよりList<object>のほうがいろいろ便利さ
もうジェネリックなしでは生きられない ArrayListでいちいちキャストしてた頃があったなんて信じられない
>ArrayListでいちいちキャストしてた頃があったなんて信じられない もっと地獄なのは、要素型ごとに実装された*Collectionクラス。 たいていIListないし、IEnumerable<T>,ICollection<T>なんてもちろんないし、 しかも未だにあちこちで使われてて実にムカツクんだけど。
(´・ω・`)<ねーソケット書く人いる?
(・∀・)<いないよー
ソケット自体は書いたこと無いな ソケットを使ったプログラムは書いた事あるけど
なんかガキ臭い奴が多くて萎えるなあ。。 ガキは宿題でもやってろよ、と言いたいところだが 最近じゃ2chでガキ臭いこと書いてる奴が40面下げたオッサンだったりする 笑えない状況だからなあ。
(´・ω・`)<L2から書くのは、やっぱむり?
40のおっさんが2chとかひくww
すくなくともC#の範囲じゃ無理っぽ
(´・ω・`)<やっぱ、#だけじゃだめか。
>>74 (´・ω・`)ノシ<有り難う。
無理じゃねーよ
文字列中に2バイトコードが含まれている or 含まれていないって どういう判別が一番楽かな? やっぱり正規表現?
.NET の文字列はすべて2バイトコードですが何か
>>78 あ、ごめん。日本語のひらがなや漢字という意味です。
full width alphabet や ラテン拡張文字はどうしましょうか
正規表現。
>77 Shift_JISでのサイズでも取得すればいいんでない?
83 :
デフォルトの名無しさん :2007/08/28(火) 23:43:32
プログラミング初心者ですが、 C# 2005 Express Edtion を導入してみました。
それで、現在MSのサンプルプログラムで学習中なのですが、
以下のプログラムをビルドするとエラーが発生します。
http://www.microsoft.com/japan/msdn/academic/Articles/fun/03/ 「エラー1 ジェネリック 型 'System.Collections.Generic.IEnumerator<T>' の使用には、'1' 型の引数が必要です。」
このエラーの意味が分からないのですが、これはどのように改善したら実行できるのでしょうか?
2003年の記事なので、内部の何かが変わっているのでしょうか?
using System.Collections;
>>67 >もっと地獄なのは、要素型ごとに実装された*Collectionクラス。
C# 3.0だと拡張メソッドのOfType<T>()でIEnumerable<T>に変換できる。
もうちょい待とうぜ。
var sc = new System.Collections.Specialized.StringCollection();
var list = sc.OfType<string>(); // IEnumerable<string>
>>84 うまくいきました。
ありがとうございました。
エラーが出るファイルの上の方に using System.Collections.Generic; って書いてないかな? それを using System.Collections; に変更すれば直るはず。
>>83 なんでこんな変なサンプルを学習に使うの
学習者向けと言うより、「こんなことができるんだよ、すごいでしょ」的なものだろこれ
89 :
デフォルトの名無しさん :2007/08/29(水) 20:37:25
インターネットショートカットがコピーできないんだけど、なんか方法無いでしょうか
90 :
83 :2007/08/29(水) 20:38:42
>>87 両方ともなかったので using System.Collections を追加したら動きました。
ありがとうございました。
ただ、リンクチェックを実行すると別のエラーを吐くので調べてます。
>>88 実はリンクチェックソフトを探していてたどり着いたのです
そしてら、VC#では簡単に組めそうではないですか!
驚きと期待で導入し勉強中な訳です
自分好みのリンクチェックソフトを作れたら最高にうれしいのですが・・・甘くはないようですね
91 :
デフォルトの名無しさん :2007/08/29(水) 21:00:12
>>81 intにキャストして256未満か以上って判断もありだよ
その発想はなかったわw いやもちろん嫌味だが
93 :
デフォルトの名無しさん :2007/08/29(水) 21:16:22
一文字ごとに処理しなくちゃいけないときは、これが一番早いんだが
それじゃハングルとかアラビア語とかも捕まえちゃうんじゃん?
Ĭは2バイトコードなの?
96 :
デフォルトの名無しさん :2007/08/29(水) 21:43:45
>>94 WEBじゃなきゃハングルやアラビア文字考慮する必要が無いシチュエーションなんていくらでも存在するだろ
要は使い分けなんだよ
オレの記憶が確かならばここはC#スレであってC言語スレじゃないと思う
たしかにC#スレだが、どうしてC言語スレがどうのという話が出てくるんだ?
俺様に理解できない話は別言語
でこのスレが間違われやすいのはCスレ。
よって
>>97
何なのこいつ
日本語==別言語
ToolStripMenuで動的に追加された項目のクリックで処理をしたいのですが、 第一階層目の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); }
>98 >intにキャストして256未満か以上って判断もありだよ がどう見てもC言語的な考え方だって意味 C#でそんなコードはトリッキーなだけだろ
みんなわかってるからスルーでいいのに・・・
106 :
デフォルトの名無しさん :2007/08/30(木) 11:00:01
>>103 ループの中で newしていないからアイテムのインスタンスが一つしかないからだよ
ToolStripMenuItem items_for_A = new ToolStripMenuItem();
ToolStripMenuItem items_for_B = new ToolStripMenuItem();
をループの中に移動してみ
>>103 まあ真面目に入門書の一冊も読むべきだね。
基本がぜんぜんなってない感じ。
>intにキャストして256未満か以上って判断もありだよ ワロタ こういう奴いるよな ちょっと専門的なことひけらかして、俺すげーだろ的な こういう奴と仕事したくねー
自宅警備員に同僚っているの?
110 :
デフォルトの名無しさん :2007/08/30(木) 13:30:10
>91 馬鹿晒しage
嫉妬が炸裂するような内容だったんだろうか。
嫉妬ってwww本気で言ってそうで笑えんわ・・・
嫉妬は勘違いだろ
相談スレで相談に対して答えを出しただけで どうしてここまで叩かれているのだろうか? C#相談スレの住人の程度が知れる。
>>115 ∧_∧ / ̄ ̄ ̄ ̄ ̄
(ω・ )ゝ < なんだって?
ノ/ / \_____
ノ ̄ゝ
>115は満月の晩に変身するタイプの人間だろ、間違いなく。
間違いがあれば指摘すればいいのに 人格攻撃が始まっちゃうんだもんな
120 :
デフォルトの名無しさん :2007/08/30(木) 15:14:20
単に UTF-16 で U+00?? になる文字は CP932 で1バイトになる文字なのか、 というような問題 (答えは否) のような気がするわけで、C 言語がどうとかいう話に なるのかよくわからない。 C# の char が Unicode 文字であること、整数型にキャストできること、は C# の 仕様として明記されているわけだし (むしろ c の w_char の方が正体不明)。
ごちゃごちゃうるさいスレになってきたなw API使って出来なければ自作のライブラリを作るのが基本だろう。 なにを訳わからない議論してるんだ?
RichTextBox を MS ゴシック で利用していますが、 文字列の一部を Bold にすると、その部分だけ横幅が広くなってしまい、 文字列がずれてしまいます。 Bold にしても文字幅が変わらないようにする方法はないでしょうか?
自前で描画するしかないわな
まぁセンスの問題だからな でもIntにキャストするのが賛成のやつは俺の現場に近づかないでくれwwwっうぇwww
HALFWIDTH_AND_FULLWIDTH_FORMSとかがあるしなぁ \u00ff以下とかは流石に適当すぎだろ
126 :
122 :2007/08/30(木) 15:58:52
>>123 そうですか><
残念。
ありがとうございました。
というか日本語かどうかを識別するベーシックな方法を 誰も教えてないんじゃないか charのメソッドになんかローカライズ情報を与えると 分かるとかそんなんあったろ
.NETってユニコードブロックをサポートしてたっけ? サポートしてなくても Hiragana, Katakana, HalfwidthAndFullwidthForms, CJKUnifiedIdeographs, CJKSymbolsAndPunctuation あたりに含まれてるかどうか不等号で調べればいいだけだけど。
130 :
129 :2007/08/30(木) 16:39:58
ああ、正規表現は対応してたね。
>128 言語のライブラリに用意されてる機能を自作して悦に入るような奴は狼人間ってこと
132 :
デフォルトの名無しさん :2007/08/30(木) 17:03:04
Encoding.GetBytes() があるから他の方法は認めません、と。 そういう考え方でOKな仕事も多いよね。
ま、スマートじゃないわな マジックナンバーを使うのと同じ臭いがする
人を小ばかにして悦に入るようなヤツは何人間?
スヘフェニンゲン
>>122 MS ゴシックなら1pt下げれば同じになると思う
137 :
103 :2007/08/30(木) 18:49:35
>>106 クリック時の挙動がまだきちんとできませんでしたが、今回実現させたいことはできました。
どうもありがとうございました。
>>107 VB6を中途半端に覚えてからしばらくWebアプリのスクリプトに流れて、久々に勉強を兼ねてWinアプリを作ってみたのですが
やっぱりきちんと基本からやり直さないとダメですね。
ご指摘ありです。
139 :
103 :2007/08/30(木) 19:02:42
>>138 ふらっとも読んでたのですが向こうの
>>1 を読み飛ばしてしまってました。
そうします。スレ汚し失礼しました。
プログラム全くやったことなくてC#覚えなくちゃならなくなったんだけど、 お勧めの参考書教えてください。
フラット池
Web検索とインテリセンスで何とかなるよ
ActiveReports3.0を使った帳票を作成しています。.Net環境はVS2005を使用してます。 現象は、WebViewerを使ってPDF形式の出力をしようとすると、2003ServerEnterpriseだと 普通に出るのですが、2003server R2 StandardだとNo Specify Reportsと出てしまいます。 2台の同じバージョンのサーバーに入れて同じ現象でした。 また、WindowsXPの開発環境では普通に表示できます。似たような事象に出会ったかた いらっしゃいましたら回避方法をお願いできませんでしょうか。 ここで聞くべきかあれですが、スレ違いでしたら誘導していただけると助かります。 よろしくお願いいたします。
勢いでソートしたらここもふらっともかなり上位だし この板で一番レス数の多い言語はC#ということになりそうだな
まあ、C/C++ 出身者から初心者まで、ターゲットの幅が広いし。
TabControlの中に、TextBoxを複数配置し、PropetyBindingでデータをバインドしてます。 フォームが閉じられる際に、TextBoxの値が未入力ならアラートを出すようにしてますが、 TextBoxに値があるのにif(TextBox.Text == "")がtrueとなってしまいます。 その際、一度TextBoxが含まれるTabをセレクトすると正常な挙動となります。 どのような問題が考えられますでしょうか?
148 :
デフォルトの名無しさん :2007/08/31(金) 10:58:54
ファイルへの書き込みで質問があります。 using (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
このレスを見たあなたは確実に交通事故に会います
逃れる方法はただ一つ
↓このスレに行き
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 の直後といい、先にコピペ荒らしすんのは、常に川島厨からだからだ!!
分かったか?カス!! 反論できないからってここまで荒らすか?
好きなだけ荒らせば?このスレは元々お前を隔離する為のスレだし
と書き込んでください。書き込まなければ確実に明日交通事故にあいますよ
コピペ君って馬鹿だな、まで読んだ。
宿題が終わってません、まで読んだ。
>>148 line に CP932 に属さない文字があるんじゃない?
153 :
デフォルトの名無しさん :2007/08/31(金) 16:27:52
Action<T>のメソッドを可変に指定することは出来ないの?
質問の意味が分かりません。
・Action<T1, T2>を自分で定義する ・Action<object>を使う ・Action<string> action = delegate(string x){};などとして引数にactionを渡す 自分の想像力の範囲で挙げてみた
>148 private 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のヘルプ見たらなんとなく理由は分かった気がするけど解決法はシラネ
一気に書き込まずに、時々ストリームを閉じてappendで追記すればOK。
スーパーバイザーコールはCPU占有するから、処理を一気に行うのは良くない。
ご存知の方いたらよろしくおながいします。 【開発環境】 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以外にも、クラス名を使った処理をしたいのです。
リフレクションでググれ
またそれか Activator.CreateInstance そんなことそんなに頻繁に行われることなの? やるとしてもちゃんとわかってる人がやるものじゃないの?
いまの現場にいるオレよりキャリア長いけどよく分かってない人はリフレクション大好きだぜ
163 :
148 :2007/08/31(金) 20:42:26
>>152 156さんの例もあるので、CP932絡みの問題ではないようです。
>>156 やはり落ちましたか。
根本的な解決ではないですが、とりあえずファイルを分割して
最後にDOSコマンドで連結する事で逃げることにしました。
>>157 なるほど。その発想はありませんでした。試してみます。
164 :
デフォルトの名無しさん :2007/08/31(金) 20:47:44
ネイティブのDLLから、バイナリ列を取得したいのですが、 バイト配列のマーシャリングは、どうすればよいのでしょうか? BOOL native_func(LPBYTE pBuff, DWORD dwBuffSize, LPDWORD lpByteReturned); 文字列や構造体のサンプルはいくつか見つけたのですが。。
面倒なときはメモリ確保してIntPtrで渡して帰ってきたらMarshal.Copy
>>164 MSDNライブラリ読んで理解できないのなら(まあ、君は最初から読んでなさそうだけど)
やらない方がいいんじゃないの?
人に聞くような難解な話とも俺には思えないから言うんだけど。
でないと危険だと思うけどね。
それとも、分からないことや意図しない動作に遭遇する度にいちいち人に聞くつもり?
unsafeでもいいならfixedでできたっけ
168 :
164 :2007/08/31(金) 21:24:24
>166 ありがとう。 System.Array で受けようとしてはまっていました。 Blittable型は、特別なコーディングいらないってことなので、 [DllImport("LargeBuffer.dll")] private extern static bool native_func( byte[] pBuff, uint dwBuffSize,, out uint lpByteReturned ); で、 とりあえず、大きな 領域を new byte[] して取得してから、 Arrayにセットするようにしました。
bool native_func(byte[] pBuff, int dwBuffSize, [out] int lpByteReturned); で良いんじゃなかったっけ?
おっと、失礼。
>>166 おまえはそんなことを言うためにこのスレにきてんの?
当然だろ。
マーシャリングは適当にググると各々やり方が微妙に違ってたりするんだよな 俺はよく迷う まぁMSDNみろよって話に収束するんだけどさ
正解が一つじゃないからな
COMインターフェイスの定義もね。。 引数がCOMインターフェイスへのポインタの場合、 objectで汎用的にしてるとか IntPtrにしてほっとかれてるときとか 特定のインターフェイスに決め打ちしてるときとか。。
ネット上の共有フォルダにおいてあるmdbファイルにJetでアクセスするツールをC#で作って、何ヶ月も放置 していたのだけど、久しぶりに使ったら、エラーになって使えなくなってました。 読み取りはできるのだけど、書き込みでエラーになります。 mdbファイルをローカルにおいてもだめでした。 他のPCからだと、同じexeとmdbで、正常に動いているので、Windowsの設定や環境のせいだと思うのだけど、 なにか心当たりのある人いませんか?
C#でアプリ作ってます。 今、NumericUpDownコントロールの値を増減すると、その値でフォントの大きさを増減するプログラムを 作りたいと考えています。 この場合、全コントロールのフォントサイズを一括で増減させるようなプログラムって 可能なのでしょうか? 一つ一つフォントサイズを指定しなおさないといけないのでしょうか?
君がc#やドトネトのライブラリの作者なら、そんな特殊な需要を満たすための foolproofな方法をわざわざ用意するだろうか?
コントロールのFontプロパティはアンビエントプロパティだから いっちゃん親のFontを変えれば 特別にフォントが指定されてないコントロールは同じになるよ
182 :
178 :2007/09/01(土) 16:27:40
>>180 早速ぐぐってみます。
ありがとうございます。
>179 foolproofってなんて意味?
>185 使える >179に答えて欲しいだけ
C#などのIRCって今稼動してるのないのかな? 海外みたく、活発な交流をして色々な知識を吸収したいと思っているんだが
>>187 すいません、海外ってどんなところで活発に交流しているのですか?
よかったらおしえてください
特定のフォルダから、特定のフォルダにコピーしたいんだけど、 なんか手っ取り早くGUIで残り何秒とか表示する方法ないかな。 エクスプローラのコピーコマンドとかあるかなっておもったが、 explorer.extって特定のフォルダを表示するしか出来ないのね・・・
>>180 ところで、アンビエントプロパティで親から引き継がれてるか、
個別に設定されてるかを確認する方法ってないんかな?
>>189 Microsoft.VisualBasic.FileIO.FileSystem でも使ってればいいんじゃない
>>189 SHFileOperation使う。
でもVBのライブラリ参照したらその機能あった気がするのでそっちのがいいかな?
194 :
デフォルトの名無しさん :2007/09/02(日) 01:04:31
>>192 そこまで書いてるんだから
エラーの内容くらい想像しろバカ
195 :
187 :2007/09/02(日) 01:05:49
196 :
189 :2007/09/02(日) 01:06:45
197 :
デフォルトの名無しさん :2007/09/02(日) 01:10:38
.NETで書かれた商用アプリってありますか? どうも、.NETでかかれたものを金出してまで使おうとは思えん
あるよ
199 :
189 :2007/09/02(日) 01:31:54
ありがとう。 やりたいことは Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory( @"C:\test\", @"e:\", UIOption.AllDialogs でいけそうだ。 でも、このメソッド、ダイアログを表示して、かつ自動的に上書きという 引数はないんですね・・・ 上書きだけか、ダイアログを表示するだけか、しかない 出来れは自動的に上書きして、進行状況がわかればうれしいんですが…
>197 そう思う理由を教えてくれ
1.1のFormsで書かれた商品なら動かしたことがあるが、 リストに毎回描画するから糞重たくてむかついたことはある。 結局、最終的にアプリの出来はスキルで待ったく別物が出来上がるんだと つくづく感じた。
PCがしょぼいんだろ
ユーザー固有のスタートメニューのフォルダは Environment.GetFolderPath(Environment.SpecialFolder.StartMenu)) で取得できますが、 全ユーザー共通のスタートメニューのフォルダを 取得するメソッドは用意されていないのでしょうか? ユーザー固有のスタートメニューのパスに含まれるユーザー名を All Usersに置き換えればいいような気もしますが、 あらゆる環境で動くかどうか心配なので、 できれば、あらかじめ用意されている方法を使いたいと思っています。
SpecialFolder列挙体には含まれてないやつがあるし 実行時にenumの範囲チェックしやがるので SHGetFolderPathを直に使うしかないと思う
インストーラ自作?
207 :
デフォルトの名無しさん :2007/09/02(日) 17:40:56
.NETで書かれたSDJEditorを使ってみたが、.NETの先が見えた気がした EmEditorに比べるとほんと鼻くそ やっぱ.NETで有名なネイティブアプリに勝つなんて無理でしょうか?
工作員必死だな
比較対象がEmEditorなんだ。 秀丸と比べるとほんと鼻くそだよね>Em
逆だな
サクラが一番
エディタなんてVisual Studioでいいじゃん
コーディングはVSでやってるけど .txtなんかはEmEditorに関連付けてる
>>207 アプリ&開発者が違うのに、開発ツールを比較するか?w
>>197 .net framework + 在庫管理や工程管理でぐぐったら出てくるよ。
218 :
デフォルトの名無しさん :2007/09/03(月) 00:03:57
でも、おそいねw 正規表現をつかったらperlに負けた スクリプトに負けますか・・・
Cの基本的な文法については勉強して次は実際にSourceForgeでオープンソースの プログラムを読もうと思っていたのですが難しすぎて分かりません みなさんはある程度文法の勉強をしてからどのようにして勉強していきましたか?
ここはC#スレです
>>218 正規表現エンジンの質やI/Oが主要なボトルネックになる類のプログラムでは
言語の差など微々たるもんだ
書き方にも拠るが、C++で書こうが普通にスクリプトのが速かったりする
>>218 毎回正規表現をコンパイルするコードなんて書いてないだろうな?
>>218 正規表現の処理がスクリプトで書かれてんじゃないだろw
.NETの正規表現エンジンは遅くて困るというほどでは無いにしろ、 そんなに速くないだろ スクリプトの場合は、それがCで書かれているだろうしな
Regex のコンストラクタでオプションに RegexOptions.Compiled つけてる?
226 :
デフォルトの名無しさん :2007/09/03(月) 00:46:51
>>219 文法しかわからない奴が、SourceForge等で公開されているソースを読めるわけないだろ
俺も実験したことがあるが、正規表現をコンパイルしとくのは当然の話として、 C#で正規表現の性能を競ったらPerlやらPythonやらに普通に勝てんよ そういう競争なら、相手はスクリプトではなくて、実質的にはCでカリカリに チューンされたモジュールになる 勝てるわけが無いだろ
228 :
デフォルトの名無しさん :2007/09/03(月) 00:57:08
>>228 さあ
無いと思えば無いんじゃね
性能はネイティブにゃ勝てんし
スクリプトみたいに手軽じゃないし
Javaみたいにwrite once, run anyware標榜してるわけでもねぇし
正規表現ならTcl最強説
>>228 一応言っとくが、自分で計算処理する分にはC#のがスクリプトよりは
格段に速いぞ
ネイティブのがさらに速いがw
自分の計算が主要なボトルネックになるタイプのプログラムかどうかが
一つのポイントだな
そうでないようなケースは案外多い
エミュレートされた仮想CPU上で動いてる訳でもなし、C#ではそもそも 記述できない低水準の処理以外の部分でネイティブコードと速度に差なんて出ようがないと思うが。
普通速度なんか気にする必要ないだろ 体感できるほど遅くなるアプリなら最初からネイティブしか選択肢ないし そんなんめったに書くことない
そもそもさぁ 早いとか、遅いとかって言ってる奴は、証拠のソースを出せよ だってさ PerlもPythonも、コンパイル時に正規表現のコンパイルと最適化をしている C#やJavaは実行時 どうやってコンパイルと最適化に消費する処理時間を考慮するの?
235 :
デフォルトの名無しさん :2007/09/03(月) 01:27:24
>>233 速いことより、遅い方がいいことってあるのかしらん?
実行時にネイティブにコンパイルされるといったって C#は安全性を気にして余計な処理をしてるだろ Cとかと比べたらどうしたって遅くなる
>>235 速度の違いが体感出来ないならC#使ってもデメリットはない
プログラミングが楽になるからC#使った方がいいというわけだな
そもそも.NETで不満になるようなアプリってどれぐらいあるんだ? 大体.NETは実行スピードと生産性のバランスの中のひとつの解に過ぎないだろ
.NETは計算速度はそんなに遅くねぇけど 起動がのろいのとGUIもっさりはどうしようもねぇな
ソース出ないね やっぱり法螺吹きか
>>234 CLIランタイムをロードする時間に比べりゃ、正規表現のコンパイルにかかる時間など
微々たるもんだろw
Win32のBitbltとか呼んでももっさりするかね?GDI+よりは早い。
244 :
243 :2007/09/03(月) 01:38:59
すまん。最後は疑問系です・・・(ノД`)
>>243 DDBのblitはGDI+の10倍は速いらしいな
その時点でWinFormsだめぽ
247 :
デフォルトの名無しさん :2007/09/03(月) 01:53:14
>>239 それはあくまで作る側の屁理屈
使う側からすれば、生産性なんてどうでもいい
あなたが、よく使うアプリケーションが次バージョンから.NETで書かれたらどう思う?
LightWaveが.NETなんかで書かれたら俺は間違いなくMAXへ移行する
>>247 えーとね、生産性悪くなるとコストがかかるんだよ。
それは製品価格に反映されたり、次バージョンで実装される機能が少なくなったりすることになるんだよ。
>>247 なんでアセンブラでつくらねーんだっていってみろ。
まあ、問題は、場合によっては普通にLL言語にさえ後れを取る C#がバランス上最適解かどうかだろうなw
製品の値段に直結するぞ。 機能も少なくなるぞ。 品質が下がることもあるぞ。
252 :
デフォルトの名無しさん :2007/09/03(月) 02:07:02
けど、C#が使えないのは事実 C#しかつかないやつはVC++で開発してる部署に行ったらほぼ終わり
>場合によっては普通にLL言語にさえ後れを取る 絶対にLL言語に遅れをとらない言語ってなんだよw
VC++しかつかないやつは他の言語で開発してる部署に行ったらほぼ終わり
>>246 ・300kのIO速度の計算をスルー
・300kのSJISから内部コードの変換(UTF-16やutf8)コストもスルー
・(C#)2000行の無駄なnew StringBuilderとToString、+演算子置き換えで高速化
正規表現のベンチになってないよ
>>255 うん、正確な正規表現のベンチのつもりで書いたのではないよ
それが求めるものなら自分でやってくれ
IO処理は「どの言語でも」やっている
ユニコードへの変換も「どの言語でも」やっている
オーバーヘッドの大きそうなフォーマット処理も、PerlやPythonでもやっている
概ね、カリカリに書かずに適当に同じレベルで「普通に」書きなぐったものだ
特に何かをひいきしたつもりは無い
そうやって書いたものが、スクリプトが案外速かった(C#より速い)ってのが
重要ね。
257 :
256 :2007/09/03(月) 02:28:23
ちなみにC++も三種類書いてみたが大して速くなかったね。 ソースを見れば分かるが、LL言語で書くよりずっと複雑でトリッキーで エラーを産みがちなコードになるというのに。 こんな仕事はLL言語向きだ。他の解は馬鹿げている。そう思ったよ。 そして、そういう仕事は案外多いのだと思う。
プロセスの生成負荷も考慮されてない… C#、C++、Perl、Pythonではエンジンの起動時間は大きく違うし、 いくらなんでも、これで決めつけるのは早計だと思うが。 俺のPCでは、C#の方がPerlより速かったり遅かったりだった。 一瞬すぎて測れない。 Core 2 Duo E6600, 2GB, Win Vista Super Fetchがどこまで効いているかはわからない。 明日kwsk調べようかな。
正規表現の処理の話をしてるときにこれはない
つうか試してないけどコンパイルしないほうが早かったりしてよw
261 :
256 :2007/09/03(月) 02:54:56
>>258 入力ファイルデカくしてみそ
二回目以降はキャッシュが効くし、入力が十分デカければ起動時間は誤差の範疇に
持ち込めると思うが
ちなみに俺の環境はXP、Pentium M(1.7GHz), RAM 500Mだからずっとショボい
>>259 純粋に正規表現エンジンの性能を計りたいんなら、そうだね
俺がやったのは、正規表現を用いた典型的なPerlの使い捨てスクリプトレベルの
仕事を各種の言語で書いてみた、それだけのことで、やっている仕事自体は
どの言語でも同じだよ
せめてマッチ対象文字列は、メモリに確保しておかないとベンチにならんだろw
起動が早い言語の勝負じゃないからな
>161 ご回答ありがとうございます。 そんなことを頻繁にするかどうかは知らんよ。 俺がちゃんとわかってる人かどうかは あんたが決めることじゃねえよ。スキルチェックでもしてくれ。
プログラマーなんだから、C++とC#両方使えるようになろうや。
C++なんぞ使ってると脳みそが腐るぜ
C++使ってる奴がまだ居たなんて・・・
C++は使えませんが、C++でできています。
C++はC++でできています
gccがgccでコンパイルできるようになりました、というのは結構画期的なことだったらしいが
foreachループ変数が書き込み禁止だってことを今更ながら知ったのだが・・・ なんでこんな制限があるんだ? コレクションに変更を加えるわけじゃないし問題ないと思うんだけど。
C#で変数名に変数を使うやり方ってどうやるんですっけ? test_i(i=1,2,3・・・)みたいな。
配列を使いましょう
274 :
デフォルトの名無しさん :2007/09/03(月) 16:06:14
>>271 たとえば
string[] strArray = new str[]{"a","b","c"]
foreach(string str in strArray)
{
s="d"
}
ってやってもstrArrayには反映されない。
foreachの列挙子はIEnumerableの実装いかんによっては、何を
参照しているのか全く保障されない。
IEnumeratorは上記の例のようにコピーを返してくるかも知れない。
あと、IEnumuratorの実装クラスは「列挙」できればよく、要素の概念
を持たないものだってあるからね。
MSDNのIEnumerableのサンプルをみてみそ。
>>271 「変数の使いまわし」ができないようにするのが最近の流行だから。
バグが減ると信じられてる。
foreachって実際は while(strEnumerator.MoveNext()) { string str = strEnumerator.Current; ... } こんな感じでしょ 代入しても無意味というか、元が配列だったりすると 書き換えられるという錯覚を与えかねない というか配列のforeachは for(int i = 0; i < strArray.Length; ++i)... に置き換える最適化がされるらしいから 実際に書き換えられちゃうんでそうするとforeachの意味が変わっちゃう
277 :
271 :2007/09/03(月) 16:55:47
>>274 >>276 foreach変数ってIEnumeratorの実装に関わらずスタック上に置かれるものでは。
構文上もそこで宣言してるわけだし、直接書き換えられると誤解される余地もないと思うけど。
>>275 それで余分な変数を導入する方が場合によっては可読性が落ちると思うんだけどなあ。
というかforeach変数だけ禁止しても意味がないような・・・
>>277 たしか、usingとかfixedとかで宣言した変数も使いまわしできないな。
むしろforが例外か
>>271 は単に参照型と値型の区別がついてないというか、データがメモリにどう
配置されるかのイメージがつかめてないだけの気がする。
>>275 は意味不明だと思う。
繰り返し変数はもとの変数のビットイメージのコピーであってもとの変数そのものではない。
これが理解できていれば271はそもそも愚問であって、こんな疑問は抱きようがないんじゃないか?
その後の流れをちゃんと読めよw 271はforeachでコレクションの内容を変更したいんじゃなくて、例えば //引数に与えられた値+2を返すメソッド int Plus2(int value){ value += 2; return value; } みたいなことをforeachの繰り返し変数でもやりたいんだろ
int Plus2(int value){ return value + 2; } でいいじゃん
なんという正論
まあ281の例えも悪いよ。 変に例える必然性なんて全然ないのにね。
というか、+2と決めうちなのにメソッド作る意味があるか?
281の方が頭悪そうだ
>>271 あるいは逆にコレクションに変更を加えようとしてミスるプログラマが出るのを予防するためだな。
D言語ではforeachの制御変数には明示的にrefキーワードをつけないと、代入できないようになってる。
それどんな感じで列挙子を実装するの?
>>288 そんなアホグラマは正直無視でいい・・・
と思うのは俺だけ?
だってそんなこといったら仮引数だって変更不可にするべきじゃん
フェイルセーフがあるのは結構な事じゃないか
いつも酔っぱらってこーでぃんぐしてるからありがたい
参照型の場合 foreach (Hoge h in Hoges) { h = new Hoge(); // はダメでも h.Member = 123; // は全然OKだから あまりガードにはなってないよね。
…なんか勘違いしてないか?
フェイルセーフがいいならC++のconstなんか真っ先に導入しなきゃダメだろ キャッチしなきゃいけない例外も必要だろ C#はそういうのが意図的に外されてるんだな 意味ないから
VC++(2005)のMS拡張構文ではconstのあるなしで調整できるようだ。 // cl /EHsc #include <vector> #include <iostream> int main() { std::vector<int> v; v.push_back(1); v.push_back(3); v.push_back(5); for each(int r in v) { r++; // OK std::cout << r << std::endl; } for each(const int r in v) { r++; // Error std::cout << r << std::endl; } }
>>297 いや、チェック済み例外は明らかに設計ミス。
しかしネットワークなんかだと、 絶対に間違いが起きる可能性がある処理はあるわけじゃない そういうのをどうやって実装すればいいの
そんなのインテリセンスなりナンチャラペットの水準でサポートすれば 済むことじゃないの? まあ、それ以前にドキュメントをちゃんとして欲しいよねw
constもチェック済み例外も問題の根は同じ。不必要に実装に結び付く(透けて 見せる)シグニチャである点。
303 :
デフォルトの名無しさん :2007/09/03(月) 23:15:15
>>277 あんた、単なる素朴な疑問かと思ってたけど
真正のあほだな
VC# ExpressEditionダウンロードしたんだけど オフラインでMSDN見ることってできないんですか?
ふらっとに行くべき
>>302 意味がよくわからないから詳しく説明してくれ
>>290 に同意。費用対効果の低いフェースセーフ要らないぽ
constだので縛ってもバグは斜め上からやってくるね。
sealedつけてたのにsealed外されるとか。
foreachといえば、配列に関してはfor文と同等の速度が出ますが、こういう情報はどこにあるのでしょうか?
パフォーマンスガイドラインに重いループではforeachよりforって書いてあったので
わざわざ変えたのに・・悲しい。
>>307 2.0だとforeachのほうが若干早くなってますね。
foreach (int v in ar) csum += v;
for (int i=0; i < 10000; i++) csum += ar[i];
これを下のように書くとforeachと同じスピードになるからそういう最適化をしてるのでしょう。
fixed (int *sp = &ar[0]) {
int *ep = sp + 10000;
for (int *p = sp; p < ep; p++) csum += *p + j;
}
ただ、foreachの制御変数が読み取り専用なのは、フェイルセーフのためなのか、
最適化のためなのかは判断がつきません。
アンセーーーーーフ!! なるほど、「処理を直接記述されると最適化できないが 抽象度を高くすると最適化しやすい」というやつか forよりforeachの方が早い LINQも早くなるという しかしループ変数への代入を許すとこの最適化が出来なくなるわけか
311 :
デフォルトの名無しさん :2007/09/04(火) 09:28:17
アンマネージドのコードと同期をとりたく、 EventWaitHandle.Handle プロパティで ネイティブのハンドルを取得しようと思ったのですが、 「古い形式です」と起こられてしまいます(警告)。 新しい形式ではどのように書くのでしょうか?
>>311 MSDNにずばり書いてあるから、まず自分で調べるくせをつけろ。
313 :
デフォルトの名無しさん :2007/09/04(火) 09:37:06
あ、 EventWaitHandle.SafeWaitHandle.DangerousGetHandle() でいいみたい。 Safeなんだか、Dangerousなんだか。
>>313 DangerousGetHandle()は必要?
MSDNでは、
>このクラスを使用すると、派生クラスのインスタンスでラップされたアンマネージ リソースを
>識別するハンドル (オペレーティング システム ハンドルなど) をアンマネージ コードに
>渡すことができます。
となってるし、使用例にあるWindowsAPIの呼び出しサンプル見ても、IntPtrの代わりに使ってる。
というか従来のIntPtrの代わりに使うべきもののように見える。
DangerousGetHandle()はデバッグのためにハンドル値を16進でダンプしたいとかの特殊用途のために
残してあるんじゃないか。
315 :
デフォルトの名無しさん :2007/09/04(火) 11:08:29
>>314 なるほど。ほんとだ。
ハンドルは、PVOIDだろ、と、
[DllImport("native.dll")]
public static extern void NativeFunc(System.IntPtr hHandle);
して、Handleプロパティから渡していたので、、
替わりにSafeWaitHandle使えと言われても、型が違ってこまってました。
[DllImport("native.dll")]
public static extern void NativeFunc(SafeWaitHandle hHandle);
こうすればいいんですね。
デンジャラスなんてついてるメソッド使いたくないお
IntPtrで問題が発生したら泣き寝入りするお
>>316-317 正直、「ボキュはキモヲタだお」って言ってるようにしか聞こえない。
そういうの気色悪いと思わない自分を気色わるいと感じるべきだ。
どうか、次のVBをC#に直して下さい。 Label1.Text = Replace(Session("body"), vbCrLf, "<br />") ----------------------------------------------- VBの本の中にソースが載っていたのですが、 この1文が、どうにもわかりません。 そのコード意味は、どうやらセッションというデーター内の改行を HTMLの改行に変換するっぽいのですが・・・。(推測) ちなみに、他の行は自力で調べましたが肝心のこのコードが分りませんし、 C#でどう書けば良いのか分りません。 賢者の方々、どうか愚者の私にご指導をお願い申し上げます
>304 MSDNも普通にフリーとして公開されてなかったか?
csc.exeやvbc.exeって開発環境がなくてもインストールされるものなんですか? C:\windows\Microsoft.NET\framework\以下にあるのでそんな気がしますが。
はい。実行時に使用する場合もあるので、全ての環境に含まれています
>>324 おお、そうだったんですか。
これで安心してCodeDomが使えます。
標準添付はcsc/vbc/jscの三つ、だったかな確か clは非標準だよね 標準なのにドマイナーなのがひとつ
Control.Invoke系のメソッド呼ぶとどっかで内部的にファイナライザが必要になるっぽいな。 ループの中から呼んだりして大丈夫なんだろうか。 何千何万って呼んだらなんか嫌なことになりそうな気がする。
ここは散文を書くところではない。 説明調の、他人に意味がちゃんと通じる文章書けよ
え、ファイナライザのコストが高いことを説明しろってこと? それは説明するまでもないと思ったけど。 何が通じてないのかわからん。 Invoke系のメソッドってのはInvoke、BeginInvokeのことだよ それらを呼んだら内部的に生成されるオブジェクトでファイナライザが呼ばれるっぽいんで嫌だなって話。
何をみてそう思ったの?
>何が通じてないのかわからん。 読む側の立場に立って自分の文章推敲できない人間はたいていそうだ。 ついでに、ファイナライザのコスト? 意味がわからない。 デリゲートを処分するコストがそんなかかるのかね? 仮にかかるとして、コストとは「時間当たりのCPUの使用量」のことだと思うが、 どのみちmsのオーダーでInvokeとか不可能だから意味がないだろう。
>それは説明するまでもないと思ったけど。 いったいどんな頻度でControl.Invokeなんかを実行する気だ?
>>327 再描画を伴わないControl.Invokeの使い道って
あんまり思いつかないんだけどどうだろ?
経験上、何千何万って単位でControl.Invokeを呼ぶと
再描画コストが恐ろしいことになる。
WinFormsなら1秒間に10回ぐらいの更新でいいんじゃないかね?
まあそれ言い出すとTimerでいいじゃんて話も多いんだけど。
>>322 ヘルプから見れるキーワードとか目次がMSDNなんですか?
>>334 読んでくれって、どこにもお前さんが主張しているような類のことは書いてないだろw
>334 CLR Profilerで見れるよ。 Control.Invokeを使ったらファイナライザが実行されたってこと?EndInvokeしてても?
ファイナライザのコストが高い(高くなりうる)ということ自体はわかるが、 Control.Invokeで実行されるというファイナライザを持つオブジェクトが内包するオブジェクトとか。 Control.Invokeを実行する通常の頻度とかから考えて、それが問題になるほどコストが高いとは思えん ということだよ。 「ファイナライザのコストが高い」という表現自体をそのまま疑ってるんじゃない。 ついでにEndInvokeしたらファイナライザは実行されないんじゃないの?普通に考えて。 と思っただけで、まあこれはプロファイラで確認してそうなってるってんならそうなのかもしれん。
ファイナライザはそれを行わなければならないものが一つでもあると GCを二回行わなければならず単純計算でGCにかかる時間が倍になるんじゃなかったか
>>337 >>338 EndInvokeしても呼ばれるみたい。
やっぱgen0でちゃちゃっと回収されるから問題が少ないってことなのかな?
具体的にはControl.ThreadMethodEntryってオブジェクトだけど
ファイナライザの処理自体はシンプルだけど他のオブジェクトへの参照は割とごっそり保持してるみたいだな。
まあ他に代替手段があるわけじゃなしどうこういっても仕方ないんだけどね。
おお?なんだこの意味なしFinalizeはw いらねーじゃねーかよ。
>他のオブジェクトへの参照は割とごっそり保持してるみたいだな。 そんなに困らないオブジェクトが多いけどな。 まあ引数とか戻り値はクリアしてほしいところだが
だいたい、GEN1までで回収できたら、負荷的にはまあそんなに大きくはならないようだな。 GUIアプリだし、特にControl.Invokeなんて同期実行なんだから、まあ普通はまずGEN1ですべて回収できるだろう。
SuppressFinalizeを書き忘れてるんじゃないか
346 :
319 :2007/09/05(水) 11:20:12
>>321 賢者
一応、下記ソースに変更出来ました。
的確な助言、ありがとうございました。
if ((string)(Session["Body"]) == null)
{
Label1.Text = "<br />";
} else {
Label1.Text = ((string)(Session["Body"])).Replace("\r\n", "<br />");
}
暇があったら as 演算子を調べとくといいよ
348 :
319 :2007/09/05(水) 11:45:52
>>347 神へ
ご助言の通り、as演算子をしらべました。
お陰でたまに出るエラーがなくなりました。
さすがは神ですね。
即レスにも関わらず、100%的中でした。
なぜ、私がたまに出る意味が理解できないエラーで苦労している所を
お察し出来たのか愚民にはわかりませんが、
貴方の英知で、救われました。
再びお礼を申し上げます。
string s = (string)(Session["Body"]) as string;
if (s == null)
{
Label1.Text = "<br />";
} else {
Label1.Text = ((string)(Session["Body"])).Replace("\r\n", "<br />");
}
349 :
319 :2007/09/05(水) 12:08:38
※すみません。下記に訂正しました。 string s = (string)(Session["Body"]) as string; if (s == null) { LabelBody.Text = "<br />"; } else { LabelBody.Text = s.Replace("\r\n", "<br />") + "<br />"; }
まだキャストしてんじゃん。 string s = Session["Body"] as string; じゃないとエラーでるっしょ
351 :
319 :2007/09/05(水) 12:22:14
>>350 いいえ。
今の所、何もエラーがでませんが?
でも、助言ありがとう。
352 :
デフォルトの名無しさん :2007/09/05(水) 12:39:14
>351 エラーは出ないけど string m = ((string)"Hello") とはやらないだろって事じゃない?
>>352 うん。私もそう思ったので、助言どおりに直しました。
だから、「助言ありがとう」とカキコしたよ。(^^
354 :
デフォルトの名無しさん :2007/09/05(水) 13:34:37
foreachを書き込みしたいっていう人は具体的に何をしたいの? 1. foreachのループの中でコレクションの書き換えをしたい。 2. foreachのループ変数を書き換えることによって、ループの制御をしたい 1.なら foreachのループ変数はコレクションの要素とは無関係な場合もある。 そもそも、IEnumerableには「要素」の概念はないし、arrayみたいにIListを実装した インデックスを通じて要素にアクセスできるコレクションとは限らない。 2なら、ループのカウンタはIEnumerableの内部でループ変数とは別に 管理されているから、無駄(というか、おそらく何も起きない)。 だと思うんだけれど、ほかに何か書き込み許容するといいことってありますかね?
今更その話か ちゃんと読めとしか言いようがないが、1でも2でもない(つーか2は意味がわからんが) あえて例を出すならこんなことがしたいんでしょ foreach (string str in input) { str = str.Trim().ToLower(); if (str.Length == 0) throw new exception("Invalid"); Console.WriteLine(str); }
356 :
デフォルトの名無しさん :2007/09/05(水) 14:15:34
>>355 なるほど、そういうことか。全然議論が見えてなかった。
Console.WriteLine(str.Trim().ToLower());
でも書き込み禁止だとエラー出るのかな???
355さんの例みたいに条件分岐したいような場合は
たとえ書き込み禁止じゃなくても、可読性のために仮変数おいたほうが
いいとおもうけど…。
>>353 object o = 1;
string s = (string)o as string;
えーっとだな… それはなんだ?
359 :
デフォルトの名無しさん :2007/09/05(水) 15:28:55
dt=$.split(' \n');dt[dt.length]='';for(i=0;undefined!=dt[i];i+=2){write(dt[i-i%2+1].replace('jp.','').replace('www.',''));br();write(dt[i-i%2]);br();}
>>359 使うメンバだけラップすれば良いよ。
COM 化するって手もある。
362 :
359 :2007/09/05(水) 15:53:00
>>361 なるほどCOMって手も。。
説明まちがえた。
すべてのメンバか使うメンバだけって、ところが問題じゃなく、
いちどC++/CLIでラップしなければいけないのかどうか、知りたかった。
ラップするのはここではC++/CLIだが、
直接C#でラッパを書いて、マネージドのクラスライブラリを作ることは
可能ですか?
>>362 C++/CLI でラッパを書く、C++ で COM 化するのいずれも避けるには?ってことですか。
ヘッダファイルとオブジェクトファイル(あるいはソースコード)で供給されるような普通の
良くあるクラスライブラリの場合、そもそもライブラリ側のコードを呼び出す手段が無い
ですよね。
dllexport されているクラスなら MSVC の ABI に従って呼び出してあげれば動くでしょうけど、
そういうライブラリはあまりないし、割に合わないような気がする。
今ハードウェアとやりとりをしなければならないので、PInvoke を使って DLL にアクセスしています。 この DLL の Open 関数を構造体を引数として呼んであげると、この構造体の中にデータが入って 返ってくるというものです。 で問題はこの構造体のメンバに構造体の配列が入っており、この構造体の配列を取得することが できません。( 構造体の他の int のメンバは取得できています。以下でいうところの ID ) このような構造体下の構造体を取得することはできないのでしょうか。 struct Parent { public int ID; public Data[]; } struct Data { public int RawData; public int Length; }
365 :
359 :2007/09/05(水) 16:38:33
>>363 すみません、最後の、
dllexport されているクラスなら(snip)動くでしょうけど、
について、もすこし教えてください。dllexportすれば、
C#から直接呼べますか?
あなたがCでDLLExportされたC++クラスのコンストラクタを起動し、 vtblに格納されているか少なくとも名前マングリングされたthisコールの メンバ関数を起動し、スローされた例外を上手いこと取り扱い、最後に デストラクタを起動して破棄できるのなら、C#でもきっと出来るだろう。
368 :
デフォルトの名無しさん :2007/09/05(水) 18:36:48
大人しくEXEキックしてコンソールで取り込めば?
369 :
359 :2007/09/05(水) 19:13:34
>>366 367 368
みなさん。ありがとうなんとなく理解した。
[DllImport("native.dll")] extern static void Hoge()で、
C#から、Cの関数は呼べる仕組みがあるし(マーシャリングもあるし)、
マネージドであるC++/CLIからは、C++/Native のオブジェクトをnewできるし、
なので、C#からC++/Nativeにアクセスできる方法も実はあるんじゃないかと、
ちょっと期待して質問してました。
370 :
デフォルトの名無しさん :2007/09/05(水) 21:11:06
>369 これはマジレス キャストやアンマネージDLLを使うならVB.NETがいい。 VBFixedArrayにDECLAREで処理するDLLをC#で呼ぶ。 アンマネージVBが噛むと処理が激重だから、処理が軽いもの限定だけど。 FORTRAN C C++ で構造体処理するDLLも一発でいくよ
VB 使うくらいなら俺は C++/CLI を選ぶぜ
エクセルとか操るならVBの方がずっと楽だと思うけど、 アンマネージdllの関数呼ぶ手間はあんまり変わらないんじゃない?
373 :
デフォルトの名無しさん :2007/09/05(水) 21:32:03
>371 C++/CLIでやるのもありだな。2003ですまない
374 :
デフォルトの名無しさん :2007/09/05(水) 21:34:15
>372 それはVB.NETじゃなくないか?
375 :
359 :2007/09/05(水) 21:38:27
>>370 ラッパをVBで書く?
>>371 私もなんとなく同意。
やりたいことは、ネイティブなC++クラスライブラリを、
マネージド(C#)から使えるクラスライブラリにしたい。です。
結局C++/CLIでくるむ方法を取ることになりそうで検討中ですが、、
publicなクラス → ラッパクラス
interface → ??
publicなメンバ関数 → 全部ラッパ
publicなメンバ変数 → プロパティ
#define定数 → static const な定数
struct → ??
enum → ??
どのように書き換えたらいいか、わからないとこ満載だ。
どなたか、??のところを教えてください。
376 :
デフォルトの名無しさん :2007/09/05(水) 21:41:15
バイナリーを読む場合ポインタTOストラクチャを使うC#に対してVBは一発で入るよ? 同じかな?
377 :
デフォルトの名無しさん :2007/09/05(水) 21:43:47
>375 それなら2005を買ってみな。 ヘッダ読めばそのまま動く
378 :
デフォルトの名無しさん :2007/09/05(水) 21:48:34
すまない、ちょっと言葉が足りなかった 使いたいライブラリをC++でインクルード コンパイル C#で参照設定 .NETプロジェクト これで全部使える
379 :
デフォルトの名無しさん :2007/09/05(水) 21:52:49
VB.NETでラッピングする場合は、DECLAREで定義。引数は全てVARIANTのFIXEDARRAY (OBJECTだと通らないから注意) で、きちんとした型をCTYPEで渡せば動作する 楽じゃないか?
>>375 >マネージドであるC++/CLIからは、C++/Native のオブジェクトをnewできるし、
ネイティブのライブラリは実はCのランタイムライブラリが裏で色々サポートしているので
newの部分だけ見てても混乱するよ。
内部でCRTヒープ使ってるかもしれないし、
atexitみたいなコールバックに依存しているかもしれない。
一般論として、Cのライブラリは静的リンクなり動的リンクなりのCRTを必要とする。
そのCRTとの連携無しに、C#から
直接Cのコード使おうってのはちょっと無謀じゃないかな。
相手がDLLの場合、LoadLibraryされたときに自分でCRTの初期化やるから
その辺気にする必要はないんだけど。
>>381 C++/CLIはそれでOK。そこは同意。
よく分からないのは359が言うところのクラスライブラリが
どんなファイル形式なのかかな?
1) *.h 単体 (テンプレートライブラリ)
2) *.h+*.lib
3) *.h+*.obj
4) *.h+*.dll
5) *.h+*.cpp
>
>>359 は
>いちどC++/CLIでラップしなければいけないのかどうか、知りたかった。
とか書いている割に、どんな形態で配布されているライブラリなのか
未だに明かしていないみたいだけど。
383 :
359 :2007/09/06(木) 01:46:34
>>382 わかりにくくてすんません。一番最初にあげたurlの記事の内容そのまんまで、
WIN32で書いてあるスタティックのライブラリ。
2) *.h+*.lib
ってことになります。
ttp://www.atmarkit.co.jp/fdotnet/special/vcppinvista01/vcppinvista01_03.html で、このとおりやってみようと思ったのだが、
>>375 で書いたとおり、メンバ関数をラップするだけじゃ足りなくて、
その他もろもろ細かいところすべて書き換えなきゃならなくなって。。。
ホントにこれが普通の方法なのか?もっとエレガントな方法があるのでは。
と、思ったのでした。
ちなみに、すべてではないですが、
4) *.h+*.dll
の形にしたものもあります。
MFC,ATL,stlは使っていなく、CRTは使っているものとそうでないものが。
>>380 >>381 Nativeと.NET、両方が扱える言語は、C++/CLIだけで、
っていうか、C++/CLIはそのために存在している。ので、いまこそ使うときだ。
ってことですかね。
384 :
359 :2007/09/06(木) 02:01:14
どうもデリゲートの使いどころがわからないんですが イベントのメソッドはわかるんですが おーデリゲートってすげー!!! っというような使用法ってどういうのですかね
//List<int> list; list.Sort(delegate(int x, int y){return y.CompareTo(x);});//逆順ソート
>>385 そもそもイベントはdelegateのシンタックスシュガー似すぎな一ツーの
>>386 それって匿名メソッドスゲーの例じゃないの。
C#2.0になってジェネリックや暗黙のインスタンス作成や匿名メソッドが付いて デリゲートが使いやすくなったけど、その前は単体ではあんまり積極的に使われなかったような
イベントとか意味わかんねえ +=と-=しかできないし なんに使うんだよ
391 :
デフォルトの名無しさん :2007/09/06(木) 13:01:53
普通にdelegate使った方が入れ替えられて便利じゃん 無駄なフェイルセーフだぜ
一応プロパティと同じように実装の変更もできる
395 :
385 :2007/09/06(木) 13:17:22
>>386 >>388 そうですね匿名メソッドですね
>>387 そうですか…なんかイベントの話になってきてますね
んーデリゲートでこんな風にしたらすっごい便利!
とかいう話ないですかね
void Hoge() { list.ForEach(Print); } void Print(int x){ Console.WriteLine(x); } コレクション関係以外にないかなあ
>>395 処理のインジェクションしたいところにはdelegateばんばん使ってます。
クラスの生成時とかにそのシチュエーションに併せて動作を変えたいとき便利。
インターフェースを実装したクラスを作るよりも楽>delegate
Action<T>は interface IHoge<T> { void Method(T arg); } とだいたい同等で class A { public Action<Foo> Action; } class A { public IHoge<Foo> Action; } これもだいたい同等 a.Action = delegate(Foo foo){ .... }; これと class FooHoge : IHoge<Foo>{ ... } a.Action = new FooHoge(...); これも大体同等 匿名メソッドなら直接かけるから一々定義したクラスを読まなくてすむので見やすい ラムダ式になるともっと便利になる 匿名メソッド使わなくても、引数さえ合えばどんなメソッドでもはまるから、 いちいちinterface実装したクラスを作らなくて済む分楽 でもやっぱり真価は匿名メソッドで出てくる
interfaceでは大げさすぎる場合も多いし、例えばイベントハンドラを インタフェースとして実装した場合、同じWidgetを複数個持とうとするとに インタフェースが衝突する、といった問題が生じる。Javaではこれを解決 するのに一々ゴテゴテと無名クラスを記述する羽目になり、実に馬鹿馬鹿しい限りだ。 ラムダ式が無くとも、delegateであれば上記の問題は普通に解決することが 出来る。 まあ、処理を汎用化したり(例えば描画ルーチンに、PixelをPutする ルーチンだけdelegateとして与えられるようにすれば、汎用になる)、 テーブルジャンプっぽく使ったり(メニュー等のindexとdelegateの配列を 結びつけたりする)、意思決定と実行のタイミングが分かれている場合に、 意思決定→delegate変数に保存→delegateを用いて実行といったことをやったり (実行が何度も行われる際に、無駄な条件分岐を完全に取り除くことが出来る)、 色々と応用範囲は多い。
delegate使うとエディットコンティニューでやり直しになるのがデメリット
久々にThreadPool.GetMaxThreads()を実行してみたらワーカースレッドが500、I/Oスレッドが1000になってた。 前はもっと少なかった気がするんだけど・・・なぜでしょうか?
403 :
385 :2007/09/06(木) 19:32:29
なるほどーみなさんいろいろ使ってますね デリゲート道、精進します ありがとうございました
>402 前は少なすぎたせいでスレッドプールが一杯になって例外が起きるケースがあったのでので.NET2.0から事実上無制限といえる値に増やされた。 なにげに呼んだクラスが内部でスレッドプールを使っててスレッドプールの上限で例外吐かれたりしても対処しようがないじゃん。
ClassAのイベントにメソッドを紐付けしてるClassBがシリアル化可能じゃないと ClassAまでシリアル化できなくなっちゃうけど、これって何か回避方法ないかな? あと、デリゲートにインスタンスメソッド登録するということは、 デリゲートに参照を持たれる(つまりGCが働かない)こととやっぱり等価になるの?
当たり前 っていうかイベント結びつけたままシリアライズしたいって いったいどんなときなの?
ああひょっとしてシリアライズさせない方法が分からないってことか? メンバにつける属性で制御できるよ
でもNonSerializedAttributeってイベントには付けられないと思うんですが。。
410 :
409 :2007/09/06(木) 21:01:10
[field: NonSerialized]でもできるみたいだな こっちのほうがスマートか。
>>409-410 ありがと。
しかし、そんなマンマの回答よく短時間に見つけられるもんだね関心しちゃうよ
部下にほしいね。 すみません師匠にほしいです。
このスレには結構、神クラスのスキルのひとがいるいよね。 どんな立場の人なのかきになるわ。マイクロソフト直々のサポート部隊が 書き込んでいるんじゃないかと思ってしまうくらいだ。
414 :
デフォルトの名無しさん :2007/09/06(木) 21:59:52
やまだはぷろぐらむの天才だ。 きょうもすごいぷろぐらむをつくる。 int i = new int() あれ、なにかへんだぞ。 intはたしか・・・ Int16 やまだくんはまだ満足しない。 iというなまえはかぶるかもしれないからあんぜんじゃない! Int16 _USER_OBJECT_YAMADA_WRITE_200709062156_FOR_COUNTER 完璧なソースコードの誕生だ!
415 :
デフォルトの名無しさん :2007/09/06(木) 22:02:31
すみません。どれが自作自演でしょうか?
417 :
デフォルトの名無しさん :2007/09/06(木) 22:03:48
やまだだけどなんでもそうだんにのるよ!!
やまだくんはネームスペースをだな
田中は山田のイヂワルな上司だ。 今日も嫌がらせを部下達にして楽しむ。 「iというなまえはかぶるかもしれないからあんぜんじゃない! 「Int16 _USER_OBJECT_YAMADA_WRITE_200709062156_FOR_COUNTER 「完璧なソースコードの誕生だ! あれ、山田が何か楽しそうだぞ。 イヂワルしてやれ! 「山田君、このメソッドの名前は[_USER_OBJECT_YAMADA_WRITE_200709062156_FOR_COUNTER]にしてくれ 会議で決まったのだ!
421 :
デフォルトの名無しさん :2007/09/06(木) 22:06:31
>416 じえんはないけどえいえんはあるよ!
422 :
デフォルトの名無しさん :2007/09/06(木) 22:12:35
たなかさんめそっどめいのせんすないからきらいだ! そうだ。こういうときは・・・おーばーろーどがあるじゃないか! やまだはそっとたなかのめそっど名のぷれふぃっくすに OVERROAD_ をつけたした。 これでなまえがかぶることはない。
スレが壊れだした
424 :
デフォルトの名無しさん :2007/09/06(木) 22:15:21
>418 よくじつにまわすか、ぷれふぃっくすにSTATIC_とかつければかいけつだよ(^^)
425 :
デフォルトの名無しさん :2007/09/06(木) 22:17:18
>423 すまない。ガチでこんなコードの修正依頼にイラついて書いてしまった。 後悔はしていない
マでやれ
427 :
デフォルトの名無しさん :2007/09/06(木) 22:22:43
for(LOOPCOUNTER_[LOOPCOUNTER_1,LOOPCOUNTER_2]=58;END==TRUE;LOOPCOUNTER_1**) { } やまだすごくね?
名前空間の無い言語はきついな
END==TRUEってなんぞ
431 :
デフォルトの名無しさん :2007/09/06(木) 22:33:45
ちなみに言語はC#だぜW
ENDがTRUEの間ループをまわすの? 普通に発狂するわ
もっとやまだのコードがみたい
434 :
デフォルトの名無しさん :2007/09/06(木) 22:39:56
ディフォルトTRUE スイッチFALSEとコメントある。 わからない事もない
ディフォルトって何?
マでやれ
437 :
デフォルトの名無しさん :2007/09/06(木) 22:48:14
やまだソース今度ZIPであげるわ
なんで大文字なんだろ
小文字だと予約語などにぶち当たるからだろ。 それかOLD BASICの名残。
まだLOOP==TRUEの方が理解できる
441 :
デフォルトの名無しさん :2007/09/06(木) 23:56:29
ブレークポイント設定してもデバッグができなくなる現象が突然でました。 どの辺確認すればいいのでしょう?構成はDebugでやってますが
ブレークポイントまでいってない説
リビルドすれば治る説
444 :
デフォルトの名無しさん :2007/09/07(金) 00:10:56
ブレークポイントはForm_Load内なので、到達してるんです。 性格にはブレークポイントに到達して、デバッグモードになるのに凄い時間がかかって デバッグモード後はF10で1ステップ進ませると、デバッグモード解除されてしまいます
Form_Loadのブレークポイントの後に続く文があるのに デバッグモード解除されるんだったら、 多分VSがぶっ壊れてるんだと思うよ 再インスコじゃね
446 :
デフォルトの名無しさん :2007/09/07(金) 00:31:52
不思議なことに、あるプロジェクトでしか現象出ないんだけど、 とりあえず朝一で再インストールしてみます
>444 デバッグのオプションのネイティブのチェックを外して.NETのみをデバッグするようにしたらどうなる?
448 :
デフォルトの名無しさん :2007/09/07(金) 00:40:18
>>447 すんません。ソースが会社なんで、明日やってみます。thx
「〜〜〜は開始されませんでした」みたいなエラーメッセージがでて デバッグ開始が異常に遅くなるときあるよね。
451 :
デフォルトの名無しさん :2007/09/07(金) 15:01:14
ソリューションのクリーンとか試してみた?
怪しいアプリに邪魔されてた事とかあるな
質問です。 TextBoxコントロールの枠線の色は変更できますか? できそうにない感じなのですが、そうすると自分で線を描くしかないかと 思うのですが、 Graphics g = this.CreateGraphics(); と取得してコレに対してDrawLineをしてみているのですが、 線が表示されません。 アプローチが間違っているのか、足りないおまじないがあるのか…。 どなたかお知恵をお貸しいただければ幸いです。
>453 まずその描画はOnPaintでやるべき。 なんとなく、Panelとかの上にTextBoxを載っけてPanelとかに枠線描いた方が楽じゃない?
>>453 いわゆるオーナードローっぽいことがやりたいのならControlPaintを使うようだから
詳細はMSDNを見るといい
が、
>>454 に同意だな
>>454 > まずその描画はOnPaintでやるべき。
TextBoxBase 以下は OnPaint が無視されたような気がする。
457 :
デフォルトの名無しさん :2007/09/07(金) 20:52:07
>450 2003までのCPPはマネージとアンマネージはクラス分けされ、同一コード内にはかけても、そこからメモリへの受け渡しが辛かった。 2005はマネージとアンマネージを並べてかける。 つまり int A=42 printf(A.Tostring()); みたいな事ができる。
458 :
デフォルトの名無しさん :2007/09/07(金) 20:56:41
何かしょぼいが解る人にはマジで!と叫ぶようなコード。
>>453 やってみると意外と面倒だね。
枠の幅が1でよければ、BorderStyle =BorderStyle.FixedSingleにしておいて
WM_PAINT捕まえてそこで枠を描画すればできる。
public string フィールドしかないクラスから、全フィールドを連結した 文字列をこさえたい。リフレクション使えばできるかと思ったら、 Type.GetFileds() はフィールドの宣言順を保証しないと言う。 どうすればできる? あきらめるしかない?
461 :
デフォルトの名無しさん :2007/09/07(金) 21:44:35
>453 ピクチャボックスに色を塗る。 テキストをフラット枠線無しにしてピクチャの上に載せる これが一番時間がかからない。 グラフィックで書くのも良いけど、速度は体感できない程度しか変わらない
>>460 そもそもCILにコンパイルされた時点で宣言順なんて保証されないと思うが。
まああきらめた方がいいと思うよ(仮にできたとしても)。
>>461 ぴったり1ピクセル分ずらすのって、むずかしくない?
>>460 Order属性とか自分で定義して全部のフィールドに[Order(2)]みたいに付けといて
その順番で連結すれば?
それなら余計なメンバを増やしたり動作をいじったりせずにリフレクションだけでできるよ
465 :
デフォルトの名無しさん :2007/09/07(金) 21:58:07
>463 サイズプロパティに打つんだよ。 マウスだとちょっとズレるかもだから
466 :
デフォルトの名無しさん :2007/09/07(金) 22:01:35
>460 ヒント IList delegate
>>466 そんなめんどくさいことするくらいなら初めから連結メソッドを定義するだろw
468 :
460 :2007/09/07(金) 22:10:44
>>464 カスタム属性か。まあ今も Excel から自動生成してるクラスなんで、
それならできそうです。
>>466 plz one more.
>462 確かに宣言順は保証されないんだが、 宣言順に初期化されるという保証があるので事実上宣言順に並んしまうという状態。 それを利用してリフレクションを使って順番通りに文字列をなんかするなんてソースが会社に大量にあって動いている困った状態。 どうにかして宣言順に並んでいないケースって意図的に作れないかな? 順番は保証されてないから動かない可能性があるって言っても動いてるからって理由で修正を拒まれて困ってる。
>468 自動生成クラスなら文字列連結メソッドも自動生成した方がいい。 自動生成クラスが何かのケースで実際に動かして動かないことが発覚するリフレクションより コンパイル時に動かないコードになってることが分かる方がいいよ。
471 :
460 :2007/09/07(金) 22:56:31
>>470 んんん。良くわからんのだが、リフレクションは信用ならないということ?
連結メソッドにしろリフレクションしろ、コンパイルを通した上で、テスト
ケースもこなすと思うのだが。
472 :
453 :2007/09/07(金) 23:33:24
>>454 やっぱり重ねるのが楽でしょうか…。
ありがとうございました^^
>>455 了解しました、MSDN見てみます。
ありがとうございました^^
>>456 な!?
マジですか!?
処理追ってみます。
>>459 おお、その方法よさそうですね、試してみます^^
ありがとうございました^^
>>461 やはり載せる案多数ですね…。
ありがとうございます^^
とりあえず今日は退勤してまいりましたので、明日にでもいろいろやってみようかと思います。
みなさんありがとうございました^^
リフレクションは保障されてない メソッドは保障されてるってことだろ? わざわざリフレクション使う内容かどうかわからないし。
でもこの場合属性を連番で付けるだけなら失敗のしようがないだろ
475 :
デフォルトの名無しさん :2007/09/08(土) 00:00:35
このスレ見てるとC#おもしろそうですね。 アセンブリしかできませんが、挑戦してみようかな
君見る目があるね
>>475 今の流れはどちらかと言うと不毛な話ばっかりだと思ったが。
どこらへんが面白かったか教えてちょ!
正直c#は面白い。
F#はもっと面白いよ(´・ω・`)
>471 ある日、誰かがメンテをしてそのクラスを手でちょっとだけ修正を入れて 何気なくフィールドを追加しただけなのに挙動が変わったなんてことが起きるかもしれない。 せっかくの連番の属性も意味もわからないままコピペされて番号が重複したりするかもしれない。 そういうときに限ってテストケースの存在も無視される。 普通のメソッドになってれば少なくともそのメソッドの挙動は直接メソッド自体を書き換えられないと変わらないだろ。 マクロで普通のコードを生成できるのに、 リフレクションで処理しやすいようなクラスを用意するってのは本末転倒だろ。 C#のリフレクションはJavaなんかより割と速いけど普通にメソッドを叩くよりかは明らかに遅くなるだろうし。
480 :
デフォルトの名無しさん :2007/09/08(土) 01:09:54
DataGridVewに行を追加したいのですがどうすればいいのでしょうか?
481 :
デフォルトの名無しさん :2007/09/08(土) 01:46:22
asciiファイルからshift-jisで読み込んで、dataGridViewに表示させてるんですが、 この表示された値(2バイト文字)をコピーしてエクセルに貼り付けると文字化けしています。 (テキストファイルなどへのコピーは平気) エクセルへのコピーも問題なく行うにはどうればいいのでしょう?
482 :
480 :2007/09/08(土) 02:55:09
自己解決しました
そのくらい自己解決してもらわないと困る
484 :
460 :2007/09/08(土) 08:26:15
>>479 自動生成クラスを手でいじったり NUnit かけずに済ます文化がこちらには
ないんだが、言わんとしてることはわかった。ありがとう。
dictionaryのキーとして専用の構造体を使うとき、 等値比較演算子を自分で実装しないといけないの? 試してみたら自動でやってくれてるみたいだけど
リフレクション使うのでかなり遅いけど、それでもいいのなら
構造体なら値比較?
>>488 >参照型を含んでいたりするとリフレクションでメンバごとに再帰比較してる模様。
いまのCLRならその部分をLCGで実行時生成して
キャッシュしておくこともできそうだな。
キャッシュの寿命管理が面倒そうだけど、
直近の16エントリぐらい保持しておけばそこそこヒットしそうだ。
素直に IEqualityComparer 実装しようよ
自作の構造体なら、わざわざDictionaryなんかに頼らなくても 自分とペアになるオブジェクトをプロパティで持たせた方が簡単で早いじゃん。 ・・・・・・と俺は思っちゃうんだが、これってやっぱり単細胞過ぎる発想かな。
>>491 肝心のハッシュテーブルはどうするんだw
493 :
492 :2007/09/08(土) 14:12:39
ああ、ごめん無視して 俺のほうが単細胞だったようだorz
>>488 ValueType.Equalsを使うならボクシングが発生するよね
それならプリミティブ型のみでもやっぱり自分で比較した方が速いのかな
495 :
デフォルトの名無しさん :2007/09/08(土) 23:48:32
comboboxにあるクラスのインスタンスを設定したいのですがどうすればいい?
ComboBox.Tag を使いなはれ
ValueTypeにそのクラスを設定すればいいだけじゃん その程度のこともしらない人がつくったアプリなんて使いたくも無いw
>>494 JITでボクシングの部分はたいてい取り除かれているらしい。
さらにインラインかもありえるらしい。
ただJITの結果は調べられないからほんとかどうかは知らない。
>>498 >ただJITの結果は調べられないからほんとかどうかは知らない。
ボクシングが起きてるかどうかはCLR Profilerで分かるんじゃない?
GCヒープにその値型が確保されてればどっかでボクシングは起きてるてことで。
デバッガでアタッチしたら見えるんじゃねーの。 ってか取り除かれるのはかなり限定された状況だけじゃない?
>>469 問題が起きたら直すでおk
世の中そんなもんだ。
502 :
デフォルトの名無しさん :2007/09/09(日) 11:42:40
文字列に記述したプログラムを解析して結果を返したいけどいい方法はない? jscript.netのevalはNGです。 自分で書いた独自のメソッドを呼べないので。。 public string myMethod(string s) { return "hoge"; } 文字列に if(myMethod("hoge")=="hoge") "あ","い") としておき 結果の "あ" を返す方法 文字列中にmyMethodがいつ来るかはわからないです。
まあやっぱりJScript.NETのevalだな myMethodは静的にすれば元アセンブリ参照で呼べるだろ
505 :
デフォルトの名無しさん :2007/09/09(日) 12:37:51
教えてください。 ArrayList で foreach を使う事について ループ内部でIndexof を使用してIndexを求める場合、 foreach を使用せずに最初からインデックスを指定して回すやり方が普通なのかどうか 常識的に考えると後者が普通だと思うのですが foreach を使用したほうが、コードが若干短くなるし、 コード上では多少効率が割るそうですが、オプティマイズされたCLRが吐かれるような気もしますし
ArrayListの中身を変更したいんならindexで回す 参照オンリーならforeachでいいんじゃないのか Array<T>やList<T>ならForEachメソッドなんてのもある
>>506 ありがとうございます
ところで、2003 にはList<T>は無いみたいです...
508 :
デフォルトの名無しさん :2007/09/09(日) 13:08:21
ペイント系のアプリを書こうと思ってとりあえずPaint.NETを 使ってみたが、とてもじゃないが金を取れるソフトではありませんね やはり、商用だとC/C++がいいのですかね
そりゃ金とってないソフトだ品
>>508 みたソフトが悪い
あれはMITのヲタク学生が書いた駄作だよ
またまたArrayListについて教えてください ArrayListにオブジェクトをセットして セットするオブジェクト: int Key, string Name1, string Name2, ... そのArrayListに対して、例えば、Key = 3 は何番目なのかを メソッドだけで、処理できますか? Contain と IndesOf と、比較用のメソッドをオーバーライド?すればできそうな気もしていますが 良くわかりません
なにを言っているんのかよく分からんが IndexOfでとれるだろ。。unboxingされて値が同じなやつが返るだろうけど
514 :
512 :2007/09/09(日) 14:29:21
>>513 比較の際に、同一オブジェクトではなく、プロパティのKeyのみで比較したいのです
>>512 EqualsとGetHashCodeをoverrideする。またはHashtableでも使え。
それがいやならC#2.0のList<T>にはFindメソッドとかあるぞ。
ますます何を言ってるのかわからん intなら値で比較されるだろ もしかして key1, string1_1, string1_2, key2, string2_1, string2_2, ... みたいな構造をArrayListで作ろうとしてるの? HashTable使えよ。。。
>>512 こういうことがしたいの?
public class Item
{
public int Key;
public string Name1;
public string Name2;
public string Name3;
}
ArrayList al = new ArrayList();
// 入力
int index = 0;
foreach (Item item in al)
{
if( item.Key == 3 ) break;
++index;
}
if (index == al.Count)
Console.WriteLine("みつかりませんでした");
else
Console.WriteLine("{0}番目", index);
孔子は言った。 考えるだけで学ぶことをしようとしない人間は間違いを犯しやすい。
519 :
512 :2007/09/09(日) 14:58:56
ちょっとだけ違います。 ArrayList al = new ArrayList(); // 入力 Item addOrReplaeceItem = new Item(); // 追加または、更新しようとする要素(オブジェクト) addOrReplaceItem.Key = 2; addOrReplaceItem.Name1 = "new name1"; int index = 0; foreach (Item item in al) { if( item.Key == addOrReplaceItem.Key ) ; { ((Item)al[index]).Name1 = addOrReplaceItem.Name1; // あれば、入れ替え break; } ++index; } if (index == al.Count) { Console.WriteLine("みつかりませんでした"); al.Add (addOrReplaceItem); // 無ければ、追加 } こんな感じです。 宜しくお願いします。
>>505 あほなこと言ってないで素直にインデックスで回すか、
自前でインデックスカウントしとけ。
同じ値とか複数あったらどうすんだ?
無いとしても効率悪くなるだけ。
そんな器用な最適化ができるわけなかろう。
いっそDataSet/DataTableを使ったらどうだ。
ふらっと逝け
>>519 「メソッドだけで」とか難しいこと考えずに
全部書くか自分でメソッド作ることをおすすめする。
どうせList<T>使えるようになったら組み直しなんだし。
難しいことやるのは慣れてからでいいよ。
524 :
512 :2007/09/09(日) 16:11:52
ありがとうございます。
DataGridViewでコントロール+Cを押したときのクリップボードに 値を渡すのを防ぎたいんですがどうすればいいでしょう?
clipboardcopymode = Disable でできました。。どうもです。
SDJEditorを使ってみた やはり、.NETではこの程度が限界か?
528 :
デフォルトの名無しさん :2007/09/10(月) 06:36:45
>>503 すみません
この発言読み飛ばしてました。
静的にすればアセンブリ参照で呼べるというのを解釈すると
new をしないようなstaticなメソッドにしてDLLとして作成。
呼び出し元プログラム側で、参照の設定をしてあげるという
のでしょうか?
この静的にするということは、タイプセーフではないという
ことになりますか?今回ASP.NETで作成したいのですが。。
>>509 IronPaython
は動的言語ということで私も考えたのですが
具体的にどうすればよいのかが浮かびませんでした。
それにC#から呼び出したいのでオーバヘッドが発生する気がします。
組み込みスクリプト感覚で使うつもり? それ危なくない?
> 静的にするということは、タイプセーフではないということになりますか? なんで? > C#から呼び出したいのでオーバヘッドが発生する気がします。 eval とか言ってるのにオーバーヘッドw まあ全体に ASP.NET でやるには怖すぎる処理だわな
限定された構文でよかったら自分でインタープリタを作る手もあるし、 その手のライブラリもあるだろう。 evalと同等とかC#の関数で出来ることを全部やりたいなら、 CodeDOMやらそれなりに危険なことをしないと無理。 話はそれるがC#3.0のExpression<Func<>>の仕組みをつかって、 eval的なことが出来そうな気がする。 いまのところDLinq用だが、どう見てもLispのクォートを狙ってるとしか思えない。
>>531 本題とはずれるけど、C# 3.0 のラムダ式の話、
C# 3.0 は F# からいろいろ輸入したって話らしいから、
F# の(大元をたどればもちろん LISP の) quote 由来だろうね。
LISP だと、データとプログラムを区別しないってのを、
.NET Framework だと、ラムダ式を
デリゲートに代入したときはプログラムとして、
Expression 型に代入したときはデータとして扱う
というコンセプトみたい。
すんません。 HTML中で16進形式(5桁:ex."𠮟")で指定されたサロゲートペア文字を 正しく変換する楽な方法ってないですか? HttpUtility.HtmlDecodeだと、下位4桁までしか認識しないようで、困っております。 string s = HttpUtility.HtmlDecode("𠮟"); foreach (char c in s) Console.WriteLine(string.Format("{0:X4}",(int)c)); --出力(こんな値が入ってて欲しい)-- D842 DF9F --出力(でもこうなっちゃってる orz)-- 0B9F
正規表現使えば
ども。"&amp;"とかも"&"として取得したいんで、 できればメソッド一発でできたらなぁ、と思ったんですが、 やっぱそこだけ別に処理するしかないスかね。
数値文字参照だけ置換してあとはHttpUtilityに任せる というのをひとつのメソッドにすればメソッド一発だよ
気になったのでざっと調べた感じ、HTML4.01の扱える文字集合はISO/IEC 10646-1らしい。 いわゆるUCS-4なんだが、-1はBMPしか扱わないそうな。-2がそれ以外の文字。
BitmapオブジェクトがDispose()されたことをBitmapオブジェクトの外部から知ることはできるでしょうか。 ローカルメモリオブジェクト内のDIBをもとに作成したBitmapオブジェクトが破棄されるまではローカルメモリオブジェクトを解放せずにおき、Bitmapオブジェクトが破棄された段階でローカルメモリオブジェクトを解放するようにしたいのです。 DIBをマネージメモリにコピーしてからImage.FromStream()でImageオブジェクトを生成し、すぐさまローカルメモリオブジェクトを解放する、という方法なら安全確実なのですが、いかんせん遅いのです。
540 :
デフォルトの名無しさん :2007/09/11(火) 05:44:01
>>503 >まあやっぱりJScript.NETのevalだな
>myMethodは静的にすれば元アセンブリ参照で呼べるだろ
やってみたけど無理でしたよ!
やっぱりできないのでは?
DLL側に
public class MultiplyClass
{
public static long Multiply(long x, long y)
{
return (x * y);
}
}
としてコンパイル、それを呼び出し側で参照の追加。
string exp = "MultiplyClass.Multiply(10, 5)";
Microsoft.JScript.Vsa.VsaEngine ve =
Microsoft.JScript.Vsa.VsaEngine.CreateEngine();
long result =
(long)Microsoft.JScript.Eval.JScriptEvaluate(
exp, ve);
そうすると
変数 'MultiplyClass' が宣言されていません。
結局、作成したクラスはスコープの範囲外でした。
>>538 なるほど。HttpUtility.HtmlDecodeのバグというわけではないわけですね。
わざわざありがとうございます。
543 :
デフォルトの名無しさん :2007/09/11(火) 22:57:12
ふらっとスレから移動してきました アンマネージリソースを安全に管理するために、 SafeHandleクラスを継承しようと思っているんですが、 ReleaseHandleとIsInvalidをオーバーライドするだけでいいんでしょうか (実際にはCreateToolhelp32Snapshotでプロセスのスナップショットを得たいので、 CriticalHandleMinusOneIsInvalidから継承したハンドル管理クラスを作る) 具体例的に解説しているサイト等あったら教えてください。 MSDNのサンプルには [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] なんて属性もでてきたりするんですが、意味がわからなくて・・・
SafeHandle.ReleaseHandleは?
546 :
デフォルトの名無しさん :2007/09/13(木) 00:18:36
JScript.NET で eval を公開するクラス持った dll 作れ。
BCB5で作成したDLLをC#から呼び出すにはどうしたらよいんでしょう? [DllImport("aaa.dll", EntryPoint="FunctionA")] private static extern uint FunctionA(); で試してみたら実行時に「dllがありません」て返ってきます。
そりゃ本当にDLLが見つかってないんだろ。 exeと同じフォルダにおいてるか?
関数を公開してないとか
SortedListとかはキーと値を使いますが、ソートに値(だけ)を使うコンテナってないですか? C++のSTLでいう、setクラスみたいなものです。
キーと値に同じの突っ込んどけ
>549 >550 すみません。メッセージが間違ってました 「DLL 'aaa.dll'を読み込めません:指定されたモジュールが見つかりません。」 でした。 ちなみにDLLはexeと同じフォルダに置いています。 BCBで作ったプログラムからは呼び出しできます。
Releaseに置いてたりして
DLLをフルパスで指定して見るとか
Winアプリを作成しております、相談にのって下さい。 環境: WindowsXP Professional SP2 VisualC# 2005 .net framework2.0 やりたいこと: TextBoxにフォーカスがあるときはTextBoxのBorderStyleプロパティをFixed3Dに、 フォーカスが無いときはBorderStyleをNoneにする。 開発全体でこの動作を多用するので、カスタムコントロールとして作成したい。 とりあえずTextBoxを継承したカスタムコントロールを作成しました。 OnEnterでBorderStyle=Fixed3Dに、 OnLeaveでBorderStyle=Noneにするよう記述し動作を確認したところ、 マウスでの移動は思ったとおりに動作するのですが、 Tabキーでの移動が出来ません。(フォーカスが次のコントロールに移らない) エラーなどは特に出ません。
>>556 の続き
BorderStyleではなくBackColorプロパティの変更ではTab移動が出来ました。
調べてみたところ、BorderStyleだけでなく、
TextAlignでも同様の不具合が発生するようです。
http://dobon.net/vb/bbs/log3-18/10725.html >OnEnter / OnLeave で TextAlign プロパティの値を変更すると
>Tab キー操作によるフォーカス移動に支障を来たす
この不具合の回避方法か、
別の方法での機能の実装をご存知の方がいましたら
教えて下さい。
>>557 の続き 長々すいません
ソース抜粋:
namespace CustomControl
{
public partial class TextBoxEx : TextBox
{
public TextBoxEx()
{
InitializeComponent();
}
protected override void OnEnter(EventArgs e)
{
this.BorderStyle = BorderStyle.Fixed3D;
base.OnEnter(e);
}
protected override void OnLeave(EventArgs e)
{
this.BorderStyle = BorderStyle.None;
base.OnLeave(e);
}
}
}
>554 それはないです。 >555 やってみましたが、DLLの名前がフルパスで表示される以外 メッセージは変わりませんでした。
>>558 BorderStyleを変更するとハンドルが再作成されるからじゃね?
ToolStripTextBoxの内部のコントロールの実装を調べてみたらどうか
>>559 もともとの質問であるC#からDLLの呼び出し方なら、
>>548 で問題ない。
だから、DLLが見つからないのは、環境やパスの問題が一番怪しい。
たとえば
>>554 とか。
自分のプロジェクトとファイル構成をもう一度じっくり見直したほうがいいと思う。
あと、dllと同じフォルダにあるexeをエクスプローラから直接起動してもだめ?
>561 >自分のプロジェクトとファイル構成をもう一度じっくり見直したほうがいいと思う。 見直してみる。 >あと、dllと同じフォルダにあるexeをエクスプローラから直接起動してもだめ? ダメだった。
>>558 引用先に書いてある通り内部でWindowを再作成してるのが原因だろう。
ディスパッチャーに乗せてスタイルの変更処理を遅延させてみた。
一応動いているがタイミングの問題が残るかもしれない。
delegate void ChangeBorderStyleHandler();
protected override void OnEnter(EventArgs e) {
base.OnEnter(e);
this.BeginInvoke(new ChangeBorderStyleHandler(ChangeBorderStyleFixed3D));
}
protected override void OnLeave(EventArgs e) {
base.OnLeave(e);
this.BeginInvoke(new ChangeBorderStyleHandler(ChangeBorderStyleNone));
}
private void ChangeBorderStyleFixed3D() {
this.BorderStyle = BorderStyle.Fixed3D;
}
private void ChangeBorderStyleNone() {
this.BorderStyle = BorderStyle.None;
}
>>562 今試したけど普通に呼べた
aaa.cpp (DLL側)
----------
#include <tchar.h>
#include <windows.h>
extern "C" __declspec(dllexport) UINT FunctionA(){
MessageBox(NULL, _T("hello"), _T("test"), MB_OK);
return 0;
}
a.cs (呼び出し側)
----------
using System.Runtime.InteropServices;
public class C {
[DllImport("aaa.dll")]
private static extern uint FunctionA();
public static void Main() {
FunctionA();
}
};
これで作成したDLLとEXEを同じフォルダに置いて実行すると、正しくメッセージが表示された
試しに新しいプロジェクト作って上のコード打ち込んで、動作するか試してみたら?
>564 VCで作ったDLLなら普通に呼び出せるけど、BCB5だとダメみたい。 違う方策を考えたほうがいいのかも...
>>548 aaa.dll が依存している他の dll が無いだけ。
DependancyWalker (depends.exe) で調べて見れ
ToolStripItemをオーバーフローしない程度にコンテナ(ToolStripなど)内でサイズ最大化したいのですが、 どうすればよいでしょうか?
569 :
548 :2007/09/13(木) 17:38:58
>566 調べました。 最初「msjava.dll」がないって言われたから、全然関係なさそうだったけど 探して入れましたが結局ダメでした。 ムムム
>>569 msjava.dllは関係ないだろ
ちょっとググっただけでも、BCBで作成したアプリには
cc3250mt.dll
borlandmm.dll
vcl50.bpl
みたいなランタイム(バージョンによって違う)が必要っぽい気がするけど、
この辺は大丈夫なのか?
571 :
548 :2007/09/13(木) 19:43:58
>570 >この辺は大丈夫なのか? 当然大丈夫であります。
ドトネト以外からは使えるのか?
ConfigurationSection を継承してカスタム構成情報クラスを作ったけど、 更新した後に Configuration.Save() するタイミングで、「ロックされて いるのでうんぬん」という例外が発生する。このロックは解除できないもの?
単に読込みの時にストリーム閉じきっていないのでは?
575 :
548 :2007/09/13(木) 21:53:16
>572 BCB5からは呼び出せます。
えっBCB5のものは呼び出せないでしょ メーカー違うとだめじゃない? delphiでも苦労した覚えが…
C#のWindowsアプリケーションプロジェクトを新規作成して FormのPaintイベントハンドラを private void Form1_Paint(object sender, PaintEventArgs e) { // e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; e.Graphics.DrawString( "fffffffffffffffffffffffffffffffffffffffffffff", Font, Brushes.Black, 0, 0 ); } として実行すると表示される文字列の右の方が寸詰まりな感じになります. コメントアウトしてあるTextRenderingHintの行を有効にすると寸詰まりになりません. 皆さんの環境でも同様でしょうか? できれば寸詰まりして欲しくないのですが対処方はないでしょうか.
579 :
578 :2007/09/13(木) 23:23:25
TextRenderer#DrawText()だと寸詰まりしないようですのでこちらを使って見ます. でもDrawString()よりだいぶ遅いです・・・.
580 :
548 :2007/09/14(金) 00:51:25
>577 解決しました。 関数に「WINAPI」をつけたらうまくいきました。 Win32APIの呼び出し規約で、呼び出される関数には「_stdcall」が必要のようです。 ありがとうございました。
ハードディスクを交換しようとしています。 起動しているOSのドライブを丸ごとコピーするプログラムをC# でかけますか?
はい
そんなもんわざわざ自分で作らなくても探せばどこにでも転がってます
書けないとでも思ってるのか?
585 :
デフォルトの名無しさん :2007/09/14(金) 14:12:50
C#で書いたらWindowsインストールしないとデータ復旧できないよな できるけど実用性は0だ
MONOで動けばなんとか……
588 :
デフォルトの名無しさん :2007/09/14(金) 23:27:35
ObjectDataSourceのSelect操作やDelete操作に割り当てるメソッドの型はなぜstaticで組むのが一般的なのでしょうか? ASP.NETの場合、スレッドセーフにならないのではと思って私はあえてstatic宣言していません。 それでも使えるからです。 なぜMSDNなどではstaticでメソッドを宣言しているのでしょうか?
589 :
デフォルトの名無しさん :2007/09/14(金) 23:38:56
590 :
デフォルトの名無しさん :2007/09/14(金) 23:41:41
>>588 おれも、それ疑問だったよ。 静的メソッドじゃ同時アクセスしたりしたら、別セッションから変数の値が書き変わっちゃうことがあるよね。 ロックしているとしたらあまりパフォーマンス的にいいことじゃないしな。
C#で書いたアプリってVB6で書かれたアプリよりももっさりとしかも遅いんでしょうか?
staticかどうかとスレッドセーフって関係あんの?
君が使ったら何使っても遅いと思うよ
遅いよ
>>588 >>590 よく理解もしてないのにスレッドセーフとかそうじゃないとか思い込みで判断しないほうがいいよ。
ObjectDataSourceみたいな使い方で、どうして静的メソッドだとスレッドセーフじゃなくてインスタンスメソッドだとスレッドセーフだと思うの?
>静的メソッドじゃ同時アクセスしたりしたら、別セッションから変数の値が書き変わっちゃうことがあるよね。
どういうこと?
>ロックしているとしたらあまりパフォーマンス的にいいことじゃないしな。
何をどうロックすると考えられるわけ?
スレッドとかスレッドセーフとかASP.NETでのスレッドの動作とか
いろんなことちゃんと理解してたら、
>>590 みたいな発想はしないと思うけどな。
素人って… っていうかなぜstaticだとスレッドセーフじゃないのかいってみろ。
俺じゃねーけど早く言って♥
そんなこといってると普通なら必要もないのに 無理やりstaticメンバ変数をいじって 正常に動かない例を出されるぞw
スタティック変数を持つ関数がスレッドセーフじゃないことと取り違えている馬鹿?
staticメンバを複数スレッドから扱っておかしくなるという 例示だけを記憶してて、きちんと意味を理解せずに staticはスレッドセーフじゃないと安直に思い込んでる といったところだろ、どうせ。
>>600 は
>>599 じゃないやい。
>あー、素人は黙ってようね
つまらんことだけ言ってるから理由をちゃんと言えってだけだよう。
staticでも適切なコード書けばスレッドセーフなんです
そもそもstaticだろうがインスタンスだろうが、 単一のメソッドで処理が完結するような場合など 状態情報を維持する必要がないようなメソッドは 最初からスレッドセーフだ。 っていうか複数スレッドで競合する部分がそもそもないし。
とりあえずvolatile知らない奴はレスするなよ
616 :
デフォルトの名無しさん :2007/09/15(土) 00:56:33
>>609 適切なコードを書かなければスレッドセーフじゃないんでしょ。
だから適切なコードは何で適切じゃないコードはなんなの?
ASP.NETはstaticなメソッドなんか書いたら、その中で使われる変数とか
他のセッションからでも共用されちゃうでしょ?
>ASP.NETはstaticなメソッドなんか書いたら、その中で使われる変数とか >他のセッションからでも共用されちゃうでしょ? どんな変数使う気だ? これはそもそもObjectDataSourceみたいなやつの メソッドの話だよな?
適切なコード書かなきゃインスタンスメソッドでも スレッドセーフにはならんだろ
いっつも本題から外れていくな… なぜstaticなの?
staticで困らんからだろ。 インスタンスにする必要もないからだろ。
例えばMathクラスのメンバが全部インスタンスメソッドだったらどう思うよ。 そこまで極端じゃないにせよ、
すまん
>>621 の続き
特にObjectDataSourceの使い方じゃ本質的にはそれと変わらんてこと。
Mathのメソッドがstaticだからって、スレッドセーフなのかとか、
ロックされててパフォーマンスが悪いんじゃないかとkじゃ思うかね?
思いません先生!!
624 :
デフォルトの名無しさん :2007/09/15(土) 05:14:29
asp.net使ったこと無いからよくわからないが、インスタンス化するとメモリー消費量がバカにならないから スタティックで済むならスタティックで書けってことじゃね
フィールドに一切アクセスしないprivateメソッドを書くとき、staticにしたほうがメモリを節約できるかも、という考えが脳裏をよぎることもある。
ObjectDataSourceが呼び出すSelectMethod/UpdateMethod/InsertMethod/DeleteMethodは 基本的にステートレスで作れってこと。ステートレスなら基本的にスレッドは気にしなくてよい。 staticを使わない場合はメソッドを呼び出すごとにインスタンスを作って終わると破棄する SingleCallモデルになっている。 一般的にはSingletonが用いられるケースなんだろうけどMSはなぜかあまり使いたがらないね。
>>627 C++のメンバ関数の実装を想像して、thisポインタの分が節約できるかも、と考えたが
CLRだと変わらないんだっけ?
>>625 普通にFxCopとかでstaticにしろやって言われるやん
>>626 ファクトリとか指定できるようになってたらSingletonにしたりとかもっといろいろできるんだけど、
フレームワーク側で勝手にシングルトンはできてもあまりうれしくもないと思う。
object obj = new object(); の時、下の2つは何が違うんですか? function(obj); function(ref obj); 参照型の場合refありもなしも変わらないんですか?
void function( object obj ) { obj = new NewObject();// このメソッド内でしか意味がない } void fuction2( ref object obj ) { obj = new NewObject(); } object obj = new object(); function(obj); //何もおこらず function2(ref obj); //objはもう昔のobjじゃないわ
呼び出し先で obj に代入したときの動作
634 :
631 :2007/09/15(土) 12:41:52
なるほど。ありがとうございます。 関数内でnewしない場合は関係ないんですね。 関数内で参照先の値を変更するだけで、newしない場合も コード的には明示的にrefをつけといた方がいいんですかね? もしくは参照型を引数にとる関数で引数にrefをつける=関数内で新たにnewしちゃう関数なんだぜ! て意味合いがあるんですか?
標準のクラスライブラリに ref つきのメソッドがどれほどある?
void fun01(int x) { x = 2; } void fun02(ref int x) { x = 2; } int foo = 1: fun01(foo); // foo の値は 1 のまま foo02(ref foo); // foo の値は 2 に変わる
たしかに。。 ではrefなしで行きたいと思います。 ありがとうございました〜
refなんてめったに使わん。 フレームワークなど基盤部分で値型を扱う際に、 内部的に使うことはあるかもしれんが。
必要もないのに使うべきでないのは確かだが、 教条主義的に否定する馬鹿にはならないで欲しいな。 この業界そういう馬鹿が案外多いから
も一個質問なんですけど、 privateな関数で、メンバ変数、メンバ関数に一切アクセスしない場合 private staticにしたほうがいいんですか? staticつきでも、なしでも動作は同じなんですけど。呼び出し方が変わるくらいで。
うん
>>639 気をつけます!
(といっても趣味なので話す相手もいませんが。。)
644 :
762 :2007/09/15(土) 13:49:15
>>638 XNA Frameworkなんかパフォーマンス目的でrefやoutだらけだよ
void Matrix.Multiply (ref Matrix matrix1, ref Matrix matrix2, out Matrix result)
みたいに
>>639 その気持ち自体はとってもよく分かるんだが、
現実は結構加減が難しくない?
自分がレビューとかできる範囲ならまだいいんだけどね〜
647 :
デフォルトの名無しさん :2007/09/15(土) 15:53:53
荒れてるねw
648 :
デフォルトの名無しさん :2007/09/15(土) 22:31:15
ム板でスレ違いと言われたのでここにて質問させて下さい。 .NETからoracleに接続をする、つまりDB接続文字列が分かりません。 String sConnectionString = "Provider=MSDAORA;User ID=sys;password=test_pass ; Data Source =ORCL10GR2;Persist Security Info=False"; 恐らく 1)Provide 2)Data Source の部分が怪しいと思うのですが、この部分はどうすれば適切なDB接続 文字列を見つける事が出来るでしょうか? 以上 どなたかoracleに詳しい方お教え願います。
>648 スレ違い。
650 :
デフォルトの名無しさん :2007/09/15(土) 22:46:15
ですねw
>>648 VS2005のメニューで「ツール」→「データベースの接続」でデータベースに接続できるなら、
サーバーエクスプローラ上の接続済みデータベースのプロパティに接続文字列が表示されるけど、
それでも駄目かな(実際にOracle使っていないので保証できないけど)?
654 :
デフォルトの名無しさん :2007/09/16(日) 00:06:38
>>651 Oracle10g Express Editionに接続をしようと
>>651 さんのおっしゃる手順にて試した上でプロパティにて確認を行い、
テスト接続を行ったところ正常に接続は出来ました。
しかしながら、自動生成された接続文字列をコードの中に次の様に指定して
いるのですが接続が出来ません。
string constr1 = "Data Source=127.0.0.1;Persist Security Info=True;User ID=test_user;Unicode=True";
OracleConnection con = new OracleConnection(constr1);
con.Open(); //←この部分でエラーが発生します。
655 :
654 :2007/09/16(日) 00:07:49
>>652 そんな便利なサイトがあったんですね。ありがとうございます。
そちらも参考にしつつ試してみます。
656 :
654 :2007/09/16(日) 00:14:08
因みに
>>651 の手順で作成されたServer Explorer上の表示は次の
状態なのです。しかしながらOracle10g Express EditionのWEB上から
createしたテーブルが見えません。(TB_TESTテーブル)
>>651 の手順で「正常に接続が出来ました。」というガイダンスが
表示されたのですがそもそも接続先が違っているのでしょうか?
【VS2005 Server Explorer状況】
Data Connections
127.0.0.1.TEST_USER
Tables
WWV_FLOW_DUAL100(FLOWS_020100)
WWWV_FLOW_FIELD_TEMPLATES(FLOWS_020100)
WWWV_FLOW_LIST_OF_VALUES_DATA(FLOWS_020100)
・
・
・
(TB_TESTテーブル が本来見えるハズなのに見えません。)
だからスレ違いだと何度・・・
658 :
651 :2007/09/16(日) 00:35:39
659 :
6567 :2007/09/16(日) 00:44:37
>>658 色々試してみましたところ何とか接続する事は出来ました。
ありがとうございます。
VC#で作成したアプリを別PCで使用する場合はEXEをコピーすればいいのですか?
他のファイルを参照したりしてなければ
662 :
512 :2007/09/16(日) 09:06:24
>>632 function(obj); の場合、メソッド内にObjectのコピーが作成されるのでしょうか?
Objectの実体の住所を書いた紙を書き写す感じ
>>662 「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。
ちなみに、function(obj)が値渡し、
function(ref obj)が参照渡し(・・・だったはず)
>>664 「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。
参照の値渡し/参照の参照渡しとでも言えばいいの?w
>>666 「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。
参照型の値渡し、参照型の参照渡しと言うべきだな
>>668 「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。
参照型のインスタンスへの参照を格納する変数への参照の値渡し ならどうだ(ref object)
>>670 「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。
こんちたびなし
コピペ君って馬鹿だな、まで読んだ。 繰言クンも馬鹿だな、まで読んだ。
C#相談室
♯
C#で月を表す定数を使用したいのですがCalendarクラスに見つかりません。 JavaでいうCalendar.JANUARYのような定数はC#ではどこにおいてあるのでしょうか?
俺の部屋のベッドの下
.NETはグローバリゼーションを考えてるから、一年が12ヶ月と決め付けてはいないんだ
Javaは月が0-11だから、こういうのがないとつらいのか。 .NETは1-12だからそのまま使え。
682 :
677 :2007/09/16(日) 15:53:45
工工エエエエ(´Д`)エエエエ工工 enum自作します・・・
おれ英語表記だとJanから順番に唱えないと自身持って数字に変換できないわw
定数にした方が見やすいような場面が思いつかない
でもあちこちで例外処理するよりはenumのほうがいいんじゃまいか?
どんな処理にそれが必要なんだろう と思ったがMONTHLYDATEとかのときに作る羽目になったなそう言えば
俺は677の発想に一票。 コードが見やすいかどうか、というより(まあ数字の方が見やすいのはたぶん日本人ぐらいのものだと思うが) 「月の名」っていう型が存在することの方が重要でしょ。
それじゃlocale毎に違う型が必要になっちゃわね?
まあ時と場合による、で良いんじゃね Flags 属性が必要な場合なんか列挙体にするしかないし // ロケールとの食い合わせが悪いのは仕方なし
それ一般論としては間違ってないが、 しかしイスラム暦やチャイニーズカレンダーでコード書く必要ってそんなにあるの?w
>>685 enumでも範囲チェックはできないがな
>>687 日本人なんだから見やすい数字を選ぶほうが当たり前だろ。
で、なにが重要なの?
>>692 重要じゃないと思うなら思っても別にいいんだが、
それならboolをすべてintで代用(いやboolが本来「代用」なんだが)している
コードをみても文句を言うなよ。
いや、日本人ならというなら、むしろこうしようぜ。 enum 月 { 睦月 = 1, 如月 = 2, 弥生 = 3, ... }
enumにするにしても、何に使うかでどういう値になって欲しいか違いそうだから後付けの方がいいかなあ。
曜日のenumはあってもよいと思うが、月はいるのかな? 月が必要なら、enum { DAY1, DAY2, DAY3 .... DAY31 } も必要になるか。 その調子で enum { YEAR0001, ... YEAR9999 } は...勘弁してください。
そこで強いtypedefという無いものねだり。
構造体に型変換演算子を定義すれば
699 :
デフォルトの名無しさん :2007/09/16(日) 18:19:13
C井って、つおい?
C丼はおいしいですよ
Vb6よりよわいですw
>>701 スパゲッティ量産するんだからVB厨はこっちに来ないでよ
スパゲッティなんて20年ぶりに聞いたw
C#厨はパフォーマンスのこと言われるとすぐ頭に血が上るみたいですね 実行速度はVB6より遅いことに疑問をはさむ余地はないのにね
そうだね
パフォーマンスが重要ならC++で書くから
>>705 すまん、パフォーマンスの事言ってるのどこら辺から?
>>707 パフォーマンスが重要でない案件なんて今まで出会ったこと無い。
>>710 ならばクロック数えながらすべてアセンブラで書け。
クロック数えながら? なにとんちんかんなこといってんの?
パフォーマンスが最重要の案件なんて今まで出会ったこと無い。
.NETだとパフォーマンスが悪いから仕事で使えないというなら Javaは使えないしPerlやPHPもダメ、Rubyなんて論外だろう まあ大体の仕事では逆にC++が論外なんだがな
ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。
ファビョった
ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。 ならばクロック数えながらすべてアセンブラで書け。
お前らくだらない事だけ頑張るよなw
まあ、だから実際自分でコードのひとつも書いてみれば分かるけど、 ドトネトって言ったからって別にVMで動いてるわけじゃないから パフォーマンスが悪くなる理由はないし、実際悪くないんだけどね。 初回起動の遅さとGUIのロードの遅さは確かにかなり気になるんだけどさ。
クロック数えながらw
>>725 初回起動の遅さはなんかディスクアクセスのせいな気もするな。
CPU速度関係なさげ。
C#でGUIを作成すること自体間違っている もっさりしすぎて使い物にならん GUIはMFC若しくはWIN32APIでないと厳しい
>>728 もっさりしているのはWindowsフォーム、それともWPFのどっち。
それとも両方?
>>715 >クロック数えながらすべてアセンブラで書け
ってどういう意味?
そんなにパフォーマンスが最重要なら命令のクロック数かぞえながら最速になるようにすればってことだろ
vbより……とか、やっぱC++だな、とか 速度とかバーチャルマシンとかのキーワード使って煽られると弱いな、おまいら。 華麗にスルーしろよ
速度はともかく、もちっと小さいヒープから始まんないかなとか思う
735 :
側近中の側近 ◆0351148456 :2007/09/17(月) 04:04:52
(っ´▽`)っ 速ければ速いほどすばらしいという考えは 1970年代の考えですよ。
起動がWordなんかより遅いテキストエディタなんてどうよw
クロック計算なんて思い出したくもないな。
スピードの魅力には抗えないのがプログラマの性
740 :
デフォルトの名無しさん :2007/09/17(月) 11:30:28
Visual C# 2005 Express Editionで作成したtest.exeというファイルが あるのですが、いざ実行してみるとエラーが出てしまいます。 Visual C# 2005 Express Editionが起動している状態でtest.exeを実行する とエラーはでないんですが・・・。 ちなみにtest.exeはファイルをアップロードするようになっています。 アドバイスお願いします。。。
741 :
デフォルトの名無しさん :2007/09/17(月) 11:40:16
ぴくでたいまあつくたおいらがきましたよ でばぐとりりいすのもんだいか?
エラーとやらの中身書け
すぐ閉じてしまうので、不確かではありますが「ファイルが見つかりません。」 的な内容だったと思います。
エスパーすると、実行に必要な*.exe.configや*.dll などが一緒にコピーされてないとか。
コンソールアプリか? コマンドラインから起動したらメッセージが残るかね
746 :
側近中の側近 ◆0351148456 :2007/09/17(月) 12:27:39
>>740 (っ´▽`)っ
コマンドプロンプトから起動してみな☆
すぐに閉じないから。
747 :
側近中の側近 ◆0351148456 :2007/09/17(月) 12:28:21
(っ´▽`)っ かぶった。しのう。
デバッガありだと動くのにデバッガなしだと動かないことは稀にあるね
>>742-748 コマンドプロンプトで実行してみると、見事にエラーが残りました。
後は、なんとか自己解決しました。。。
ありがとうございました。
で、エラーの内容は?
アクセスが拒否されました。とのことでした。 管理者でログインしてなかったのが原因ですね(恥^^;
それにしても、Visual C# 2005 Express EditionはGuestアカウントで 開いてたのにtest.exeが実行されたのは何故だろう? お手数をおかけしますが、分かる方いましたらアドバイスお願いします。。。
管理者権限では動いたのか?何の操作で何がアクセス拒否なのかエラーの内容はよく吟味しろよ。
質問者が適度に情報さらさないから うだうだ無意味なレスが続くんだぞ? 俺らはエスパーではないんだぞ?
>>754 適度な情報が晒されれば、解決できるほどの実力をお持ち合わせなのでしょうか?hw
>>755 質問もまともに出来ない奴はふらっとへどうぞ
ふらっとに来られても困るわ
>すぐ閉じてしまうので、不確かではありますが「ファイルが見つかりません。」 ついにこのレベルまできたか・・・学生である事を切に願う
>>756 エスパーキタ━━゚+.ヽ(≧▽≦)ノ.+゚━━ ッ ! ! !
まぁ、おまえらも目くそ鼻くそだがなw
まさにふらっとレベル
パソコンショップ等にならんでいるパッケージソフトの大半はC/C++で書かれているネイティブですが 今後は.NETで書かれたものが主流になってくるんでしょうか?
簡単にソースが覗ける問題が解決されない限り、.NETで パッケージソフトがつくられることはあり得ないと思うよ。
パッケージソフトじゃないけどRadeonのドライバについてる設定ツールとか.NET。
javaも逆コンパイルが問題になってたな 俺は自分のアプリしか作ってないからどうでもいいが
今のところまっとうに使われてるのはWEBなどのサーバーサイドシステムや 保守性や開発効率を求められる社内システムなどの分野。 パッケージ系は最後だろうな。 言語はTPOで使い分ける時代になったから覚えるほうはいろいろあって大変だ。
.NETで書かれたアプリが主流になるのは5年以上後だろうね もしかしたら、その前にMSから捨てられる可能性もきわめて高いがw
それはないw ネイティブコンパイラを出してくる可能性はあるかもしれないけど
770 :
デフォルトの名無しさん :2007/09/17(月) 19:36:05
nGenの事も忘れないであげてください
連れのWinVistaで自作アプリを動かしたらメチャクチャ快適 起動もバカっ早っ!
まあ起動は速いな
自作クラスで例外発生させて、 そのクラス使ってる側でcatchしたあとに 例外発生した場所に処理戻させるなんて鬼テク無理?
>>773 意味わからん。
要は例外が起こった事を通知したいだけだ、って意味なら
例外じゃなくてイベントで通知すればいいじゃん
メソッド単位でやりたかったらデリゲートを引数に渡せば
776 :
773 :2007/09/17(月) 21:31:48
>>774 サンコス。
今それかんがえてました。。
失礼しましたー
例外なんてキャッチするもんじゃねーや気持ち悪い
Dでいいじゃん
素直にC#のネイティブコンパイラにすればよかったのに>D
780 :
側近中の側近 ◆0351148456 :2007/09/17(月) 22:27:30
>>773 (っ´▽`)っ
それはカプセル化が崩壊していますよ。
それどころか、構造化プログラミングも反してる。
GOTO文と変わらない。
戻り値で例外発生したか否かを伝えればいいのでは。
781 :
側近中の側近 ◆0351148456 :2007/09/17(月) 22:29:32
(っ´▽`)っ
>>775 の言うとおり、デリゲートもいいね。
(っ´▽`)っ 馬鹿じゃないのw そうやって2chくんだりでわざわざ「自分のキャラ」を出さないと気がすまないのは 等身大の日常が空っぽだからだろ。 はっきりいって見え透いていて見てるこっちが恥ずかしくなるよw 自分じゃキャラを演じてるだけ、と思ってるんだろうがそうじゃない。 そのお馬鹿が本当の君自身なのさたぶん
>>769 ネイティブとnGenになんの関係があるんだ?
nGen使えばネイティブアプリに変換できるとでも?w
ウィルスバスターは一部.NET
とりあえず語尾にwつけるやつは問答無用で白痴認定 例外は認めない
>>783 769がそんなこと俺に言われてもシラネって言ってると思う
マカフィーのコンソールもそうっぽいね、なんとなく。 ああすごい重いよいらいら。
ホント.NETって失敗だよね MS引くに引けなくなってる状態でしょ たぶん、そのうち切られる
そうだね
行間空けてまで言うこと?wwww 。
webbrowserで、ある文字の上にマウスが移動したことを知るために htmldocumentのMouseOverイベントを使っているのですが、 文字に情報を持たせるために、<a>タグがhrefを持たないときに リンクとして扱われないことを利用して、<a info=〜> 文字 </a> とし、囲んでいるタグの情報を得るメソッドでinfoを取り出しています。 あまりいいやり方ではないと思うのですが 適切な方法はあるでしょうか?
span
業務でプログラムやってる人じゃなく、独学の人いる?
ノ 自分で使うちょっとしたツール作るためにプログラムやってる。
ノ
ノ このスレを見ている人はこんなスレも見ています。(ver 0.20) 綜合警備保障(ALSOK)ってどうよ? その3 [転職] 【賽の】国家公務員・再チャレンジ試験7【河原へ】 [転職] ★35歳超45歳未満の転職サロン Part72★ [転職] ガンガレ
学生プログラマてすが みんな大変そうですね
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★ このスレを見ている人はこんなスレも見ています。(ver 0.20) 会社で使えない奴、それはワタシ/アイツ [プログラマー] Firebird関連スレ2 [データベース] 綜合警備保障(ALSOK)ってどうよ? その3 [転職] 【賽の】国家公務員・再チャレンジ試験7【河原へ】 [転職] ★35歳超45歳未満の転職サロン Part72★ [転職] ワロタw
PCの動作にかかる時間を通常の三倍に増強するノートン先生
>>802 System.Net.WebClientつかえば?
getならquerystringに必要なデータ押し込んで要求すればよし。
postならuploadstringかな?
MSDNみて意味が分からなければ、HTTPについてまずお勉強しましょう。
805 :
デフォルトの名無しさん :2007/09/19(水) 00:32:29
C#である特定のエラーが発生した場合に再度エラーが起こった場所から 実行できるVBのResume機能を実現するにはどうすれば良いでしょうか? gotoで処理するのが普通でしょうか? VBだと以下のようにエラー発生時にリトライが簡単にできるのですが・・・ Private Function GetText() As Boolean Dim strText(0 To 4) As String Dim intFileNumber As Integer Dim i As Long intFileNumber = FreeFile On Error GoTo ErrTrap: Open "C:\Test.txt" For Input As #intFileNumber For i = 0 To 4 Line Input #intFileNumber, strText(i) If EOF(intFileNumber) = True Then Exit For End If Next i Close #intFileNumber:intFileNumber = 0 GetText = True Exit Function ErrTrap: 'タイムアップでなければリトライ If Err.Number = 53 And m_blnTimeUp = False Then Resume End If If intFileNumber > 0 Then Close #intFileNumber End If GetText = False End Function
よくある構成 ツリー、リスト、ピクチャ なんてメインフォームに置くと、おのおののコントロールを派生させてIViewインターフェイスを 実装してるんだけどかなり面倒 VC++MFCのドキュビューを自前でやってますが、皆さんどうしてます?
>>805 んなことせんでboolを返すメソッドにでもして成功するまで
再試行とかするようにした方がすっきりするキガス。
gotoとかで戻すの気持ち悪い。
VB.NETでOn Error Goto xxやResumeを使ってるのをildasmすると、 めちゃくちゃ汚いコードが見て取れる。非推奨なのはわかるな。
809 :
デフォルトの名無しさん :2007/09/19(水) 00:51:35
C#はc言語のように暴走することはあるのですか
Visual StudioでEUCで書かれたファイルを開いて 文字コード指定して開きなおすってどうやんの? デフォルトだとsjisになってるぽくて化け化けなんですが。
与えられたhtml文書が、webbrowserで表示されるときに どれだけの高さになるかを取得する方法はありますか?
webbrowserに計算させるしかあるまい bodyのscrollHeightだったっけ DOCTYPEによっては出ないらしいけど
813 :
側近中の側近 ◆0351148456 :2007/09/19(水) 01:11:31
>>805 (っ´▽`)っ
C#なら、対象の処理をtry句で囲んで、
catch句で
タイムアップなら何もしない
それ以外の例外ならthrowという感じで
実現可能だと思う。
while(true)
{
try
{
対象の処理
}
catch(タイムアップ例外クラス e)
{
}
catch(Exception e)
{
throw;
}
}
(っ´▽`)っ ダメかな?かな?
>>812 ありがとうございます
bodyのScrollRectangle.Heightから取得できました
815 :
側近中の側近 ◆0351148456 :2007/09/19(水) 01:12:39
(っ´▽`)っ
ただ、
>>807 のやり方のほうがエクセレントだね☆
わかりやすいから。
816 :
側近中の側近 ◆0351148456 :2007/09/19(水) 01:18:30
>>810 (っ´▽`)っ
StreamReaderクラス使ってるなら
コンストラクタでエンコーディング指定できるよ☆
(ノ´▽`)ノできるよ
VSのエデイタ部の事言ってるんだろ スレ違いだからシカトするけど
818 :
デフォルトの名無しさん :2007/09/19(水) 03:23:09
Nullabledはなんて呼ぶのですか?釣りじゃなくマジです
ならぶるでぃー
そもそもnullってナルなの?ヌルなの?
ぬるぽ
>>813 ひさしぶりにwhile(true)見たなぁ・・・
ぬらぶるど
824 :
805 :2007/09/19(水) 07:39:27
>>807 >
>>805 > んなことせんでboolを返すメソッドにでもして成功するまで
> 再試行とかするようにした方がすっきりするキガス。
> gotoとかで戻すの気持ち悪い。
レスありがとうございます。
成功するまで再試行というコードがイマイチ良く分からないのですが
サンプルコードを教えていただければ幸いです。
>>813 コード例付きレスありがとうございます。
C#でOSをつくることはできますかあ?
お前には無理
俺にも無理
ヘジは反対してるけど MS内部には.NETでOSを作る計画はある
お、その話おもしろいな 詳しいソースある?
さんくす
MCTSの70-526の試験って難しい?
>>829 833 とかのリンク先見てみたけど、
思いっきり研究用だって書いてるね。
現実的なこというと、Singularity が商用 OS になるっていうよりは、
いいアイディアが出たら .NET Framework に取り込まれるって感じなのかな。
.NET Micro Frameworkがあるじゃない
ロゴがgoogleまるパクリでワラカス
>>837 あれの意図は、Windows Mobile すら載せたくないくらいの
組み込み向け低スペック環境で .NET 言語を使いたいってのよね。
パフォーマンスは“そこそこ”でセキュリティとかを気にしてる Singularity と違って、
結構パフォーマンス最優先。
ロゴなんてどうでもいいが内容は興味深い
初歩的な質問ですが。。。 Test test = new Test(); test変数に代入されるのはTestクラスのインスタンスへの参照であり、 インスタンス自体が代入される訳ではない。という解釈でよろしいでしょうか? ということは、test変数を経由することでTestクラスのインスタンスへのアクセスが 可能になるということになりますよね?
843 :
842 :2007/09/19(水) 16:46:43
>なるということになりますよね? 訂正です。。。なるということですよね?
>>842 参照型(class)の場合はね。
値型(struct)の場合は値そのものが格納される。
845 :
842 :2007/09/19(水) 17:15:24
>>844 アドバイスありがとうございます。
クラスの他に、値型というものが存在するんですね。
まだC#の勉強を始めたばかりなので、またお世話になることがあるかも知れません。
そのときはまたよろしくお願いします・・・。
次期VSに搭載されるMFCは現状のC#みたくポトペタじゃないですか そうすると、C#って存在価値なくなりM$に捨てられるんじゃないかと 思い不安です
MSが開発した物は全て捨てられる危険性と共にある
MSに限らんだろ
>>847 ポトペタなんてC#に限らないからその心配はない。
ポトペタ環境でネイティブがかけるなら誰もC#なんて使わん
限界のパフォーマンスが必要でない限り 誰もC++なんざ使わん
ポトペタってRADのこといってんだよな?そんなの重要なことじゃなくね(それともネタでいってんの?) C#は、ほかにもLINQやラムダ式、使いやすいデリゲートにスレッド、ガベージコレクション、 整理された.NETライブラリ、IDEの強力なサポートなど魅力山盛りだと思うんだが。
ほんとのC++使いじゃ
>>851 みたいなアホなことは言わんわ。
誰か教えてください。
Visual C# 2005 Express Edition を使っているのですが、大昔のJAVAのソースを使いたくなりました。
J#だと処理に手を加えるのがやっかいだなあと思っていたところJLCA(Java Language Conversion Assistant)なるものを見つけました。
使い方を調べていたところ
ttp://msdn2.microsoft.com/ja-jp/library/71czf4se (VS.80).aspx に
>1.Visual Studio を起動します。
>2.[ファイル] メニューの [開く] をポイントし、[変換] をクリックします。
と書いていましたがVC#Expressにはそんなものがありませんでした。
これはExpressでは使えない機能なのでしょうか。
そう
ポトペタよりもXAMLのが、使いやすいと思た
この間C++で昔のソース見たけど、何ツーかヘッダーとか使えないインテリセンスとか使いずらいったらありゃしない('A`)
859 :
デフォルトの名無しさん :2007/09/20(木) 09:24:56
dataGridView1.DataSource = ds; って感じでdataGridViewを指定したけど、この場合、 dataGridViewの各列の名前ってどうなるのかな? 具体的には dataGridView1.Columns[1].Visible = false; という指定を dataGridView1.Columns["hogehoge"].Visible = false; としたいんですが・・・
861 :
860 :2007/09/20(木) 11:09:20
↑ データセットの列名がそのまま使えるのね 自己解決しました。ありがとうございます。
>>857 でも、それも、ポトペタは要らないかもしれないけど、
WYSIWYG な GUI 表示とインテリセンスは欲しくない?
VS2005で、ReportViewerコントロールを使ったレポート作成をしています。 rdlcファイルって、手動で作ったデータセットを参照先には指定できないのでしょうか? (デザイナで作ったデータセットでないと指定できないのでしょうか?) クエリが可変になるので、手動でのデータセットを指定できればいいのですが… #CrystalReportを使いたいが、経費が認められず自腹で買えとorz
メール送信する際に全員をBCCにすることは出来ないのでしょうか? SmtpClientクラスではTOをnullにはできないのです必ずTOが必要なのですが…
それはSmtpClientっつーよりSMTPのレベルで認められてないんじゃないか
自分をToにすればいんじゃね?
それよくやる
Undisclosed-Recipient:; って使えない?
MailAddressのインスタンス作る時点で、メールアドレス形式のチェックが走るんで Undisclosed-Recipientを割り当てるのは無理みたいだが
ポトペタって言うけど何が悪いんだか?
ユーザの平均スキル
>>871 たぶん「猫でもできる」とか読んで嬉しくなっちゃうタイプの奴が嫌ってるんだよ。
っていえばだいたいどいういうタイプか想像できるでしょ?w
すまん、「猫でもわかる」だったなあのドクターの書いてる本
どちらかと言えば携帯のほうが悪いよな。 どこにいても仕事の電話が…orz
hosyu
ぬるぽ
むしろ叩かない
それを言うなら「あえて」では?
このスレに来れば好きなだけ「ぬるぽ」と叫ぶことができると聞きました。 ぬるぽっぽぽおるぽううろrぷるるっるrぽるrpるrrぽるぽるるうるぬるうぬるぽ!!
何が面白いの?
882 :
デフォルトの名無しさん :2007/09/23(日) 01:13:45
クソスレが上がってるのでage
Regex.Replaceって"aabb(cc)"の()内だけおきかえって出来ないん?
>>883 その正規表現を晒しなさいよ
かっこが全角になってるせいとか言わないよね
Regex re = new Regex( @"(?<=\()[^)]+(?=\))" );
>>884 string target = "aabbcc";
string pattern = "aabb(cc)";
string s = Regex.Replace(target, pattern, "#test#");
Console.WriteLine(s);
なんだけど「指定した入力文字列内で正規表現パターンに一致する文字列」の認識違う?
うん。
ねただよね?
ねたではありません。吊りです
891 :
デフォルトの名無しさん :2007/09/23(日) 12:08:12
プラグインで拡張できるアプリを作ってます プラグインを扱う部分はできたんですが、 プラグインが怪しい事(Systemファイルをいじったり)をしない様に システムリソースへのアクセスを制限したいのですが、 どういった方法があるんでしょうか? 検索したところ、セキュリティを設定したAppDomainを作成して、 プラグインはそこで実行させる方法があるみたいですが 他にも方法があったら参考までに教えてください
プラグイをLoadFromで
http:// 〜なんてURLで読み込んだらいいんじゃね?w
いや悪い冗談だ。
コードアクセスセキュリティの機能で、特定のアクセス許可を消したり、特定のアクセス許可だけを与えたりできる。
んでも、んー結構面倒な気がするな。
アセンブリのロード時にEvidenceでインターネットゾーンレベルの許可を与えられるように指定するとか。
って一般的にどうするものなのか俺は詳しくないからほかの人の反応を待ったほうがいいなぶっちゃけw
893 :
デフォルトの名無しさん :2007/09/23(日) 13:05:35
あえて無視
894 :
デフォルトの名無しさん :2007/09/23(日) 13:06:50
FireFoxのブックマークを読み込みたいんですが、ICON属性にbase64エンコードされたイメージがあり読み込みたい ヘッダにpngとIconがあるんだけれどpngは素直にヘッダを取ってデコードしてイメージオブジェクトに読み込めたんだけど ICONタイプのものが上手くいきません、方法があったら教えてください
>>894 どこで区切って読めばいいのか分からん。
もう少し読みやすい文章を心がけてくれたまえ
VS2005で Invoke(foo.hoge); はダメ? delegate void method(); Invoke(new method(foo.hoge)); はOKですよね C#2.0ではメソッドを暗黙的にデリゲートに変換することが出来るようになってのでは?
メソッドを暗黙的に「デリゲート型(delegate void ○○○みたいに宣言するやつ)のオブジェクト」 に変換できるってことなんじゃね System.Delegate自体は「デリゲート型」じゃないからダメだと
>>898 いい加減なこというなよ
内の環境ではいけるぞ
Invokeの引数の型は何よ
そのInvokeの定義によるんじゃないの? static void Invoke(System.Delegate d) static void Invoke(method m) 上だとダメだと思う。
902 :
デフォルトの名無しさん :2007/09/23(日) 15:28:07
>>896 ありがとうございます、これを参考にやってみます
なんでMethdInvoker使わないの? まどっちにしてもだめだが、キャスト書けばいけた気がする。 もはやnewとあまり変わらなくなるが。
純粋に言語仕様についての疑問だろ
構造体を戻り値として他のクラスに渡す場合の処理の書き方について教えてください
意味不明 無理に難しい言葉使わなくていいから何がしたいのか具体的にはっきり書いて
>>905 意味がよくわからんがこう言ってるのか?
struct MyStruct{...}
class MyClass
{
...
public MyStruct SetMyStruct(MyStruct myStruct){...}
}
typeof(MyStruct)の類かも
>>906 分かりずらくてすいません
>>907 struct Mystruct{...}
class MyClass
{
(strMyClassの中身を中身をいじる)
return (strMyClass)
}
classMyClass2
{
ここで結果のstructを取得したい
}
こんな処理をしたいのですがお願いします><
>>909 struct Mystruct { public string Str;}
class MyClass{
public Mystruct 中身を中身をいじる(Mystruct strMyClass){
strMyClass.Str = "いじられた";
return strMyClass;
}
}
class MyClass2{
public void MyMethod(){
MyClass myClassObj = new MyClass();
Mystruct myStructObj = new Mystruct();
myClassObj.中身を中身をいじる(myClassObj);
}
}
911 :
910 :2007/09/23(日) 19:35:39
>>910 訂正
×myClassObj.中身を中身をいじる(myClassObj);
○MyStruct いじられた結果 = myClassObj.中身を中身をいじる(myStructObj);
なんじゃあこりゃあ
ボタンのクリックイベントハンドラ private void mnLStart_Click(object sender, System.EventArgs e) { Thread thread = new Thread(new ThreadStart(〜〜〜)); thread.Start(); } のようにスレッドを開始し、そのスレッド長いこと処理をしているとします。 thread はスコープを抜けているのでそのスレッドを参照できませんよね そうするとスレッドが実行中でもGCによって回収されるのでしょうか? 実行が終わるまで回収はされないのでしょうか?されないとするとなぜですか?
スレッドオブジェクト自身が自分をどこかに登録してるんだろ
>>917 どこかにって・・・
そんないい加減な知識で書いてて怖くないんですか?
スレッド作って放置するという状況ってのが皆無じゃないか? 2重にスレッドつくっちゃわないよう監視するとかしないのかい?
スレッドは放置だろ
>>918 別にメインメソッドに対応するThreadオブジェクトを
参照しなきゃって人は居ないんだし、
なんで新しく作ったスレッドだけ怖がるの?
>>918 何も使うなよもう。
どこかで覚えててうまく動く仕組みになってる、
以上の詳細を知る必要なんてほとんどの場合はないだろ。
スレッドを監視したり止めたりしなきゃならない状況が もう失敗って感じだしな
どうでもいいよそんなこと
隠蔽されているものをタシーロしたくなる気持ちは分かるけど・・・ 隠されているものは隠されているから良いのであって、世の中の人間全てが田代じゃないと思うわけだ
929 :
919 :2007/09/24(月) 01:52:56
>>924 そりゃ、どんな状況下でスレッド使うことを想定してるんだ?
ボタンのクリックでスレッド開始するってんだろ?
ボタン2度押しされたら?とか考えんのか?
長い処理だと、途中で強制停止させたい。
とかもあるかもだろ。
ゆとりだから突っ込むなw
スレッドの監視ってのが意味分からんのだが
まんま過ぎてどう説明すればいいかよくわからんのだが どういうイメージしてるか教えてくれんか
933 :
919 :2007/09/24(月) 02:26:42
親から作ったスレッドに対して
Thread.IsAlive とか Thread.Join とか
することをいってたんだが。
つうか、俺は質問者
>>915 =918じゃないから
消えるわ。あらしてすまんかった。
System.Xml.Linqのクラスリファレンスって、どこかにありますか?
>>934 Orcasのベータに付いてくるMSDNにはあったと思う。
既にWebのMSDN Onlineに反映されてるかは自分で調べてくれ。
>>935 ぬぅ、Orcasいれなきゃ駄目ですか・・。
ありがとうございます。
>>925 w
契約違反行為しなきゃ分からんこともいっぱいあるのに
ソースやら調べでもアンドキュメントな実装詳細なんてバージョンで変わるかも知れんのに
ご苦労なことだ。
だいたいカレントスレッドのThreadオブジェクト取得するプロパティやらあるのに
つまり何らかの形で保持されてるのは明らかなのに
それでも信用できないのか?
938 :
デフォルトの名無しさん :2007/09/24(月) 16:30:36
マルチスレッドの質問なんですが、 ・複数のスレッドで参照される変数にはvolatileキーワードが必須。 ・値を更新するスレッドが1つだけの場合は、それだけでOK。 ・複数スレッドで値を更新する場合はlock()して値を更新する。 この認識で合ってますか?
合ってない。 ってかそんな単純なことじゃない。
ちなみにCLRだとvolatileがほんとに必須なことってほとんど無い気がする。
だいたいスレッドを監視しなきゃならないなら Threadを自分で覚えとくんだろうからGCなって関係ないし、 自分で覚えとか無いなら使わないんだろうから、 Thread自体がどうだろうがスレッドがきちんと動いてるならどうでもいいし 何が怖いのかわからない。
>>938 更新スレッドが一つでもあれば参照スレッドにおいても一般に同期は必要。
参照スレッドだけならvolatileも同期機構も不要。
そんな難しいことじゃないんでどういう時にどんな問題が起こりうるか自分で考えてみれ。
volatileって単にコンパイル時の最適化を抑制するだけじゃないのん?
>>943 それはCの話でC#のvolatileはメモリバリアの意味をちゃんと持ってるよ。
64ビット値の読み書きを複数スレッドから効率よくやるいい方法って無いかいな? 64ビットを32ビット単位じゃなくアトミックに扱えればいいだけなんだが。 javaと違ってvolatileではできないってかつけれられないし、 Interlocked.ReadとInterlocked..Exchangeはなんか大げさってか重い。 例えばファイル更新時刻のチェックを行う場合に、毎回ファイル情報をリフレッシュすると無駄が多いので、 例えば前回チェックから1秒以上立ってたら再度チェックを行いたいような場合、 チェック時のDateTime(もしくはそれのTicks値)をフィールドに覚えておいて、 チェック前にDateTime.Nowと比較して1秒以上経過してるか確認したい。 経過してるなら実際のファイル更新時刻チェックを行って、ファイルの再読み込みなど。 この、現在時刻と前回チェック時刻を比較する際に、情報が64ビットなので 64ビットをアトミックに扱えない(32ビット環境の場合)。 単純にやるならlockでいいんだけど、64ビット環境とかだとそもそも不要なのでなんか悔しい。 かといってこれのチェックだけのためだけにInterlocked何回も使うと、もはやlock一発の方が効率よさそう。 IntPtrを調べて64ビットなら何もしない、32ビットならlockってやるか、 もう単純にlockするだけが結局一番いいんだろうか…
Int64で十分。そんなことに拘るならC#なんか使うな。
>>945 CLRがアライメント考慮しないから
Interlockedクラスのlong引数版は使うなって書いてあるよ。Jeffery本に。
64bit値をプロパティにして読み書きを一ヶ所で行うようにして
そこでlockなりなんなりやっておけば良さそうな気はするけどね。
負荷はどうでもよくて、そうしておいた方が
あとでリファクタリングしやすそうという程度の理由だけど。
個人的にはファイル情報なんか見に行ってファイルアクセスが発生したときの
何百万クロック単位のブロックの方が気になるかな。
>>947 その何百万クロックを防ぐために二重チェックするという話なのでは。
と一応つっこんでおく。本題とはあまり関係ないけど。
>>945 C# なんだし、FileSystemWatcher 使えば?
>>947 >CLRがアライメント考慮しないから
>Interlockedクラスのlong引数版は使うなって書いてあるよ。Jeffery本に。
書いてあるねえ。
これってマジ?
でもあの本に書いてあることで間違ってることってそうそうなさそうだし、
わざわざ書いてあるってのはやっぱりそうなんだよねぇ?
いまいち納得いかないんだが。
>>950 Jeffreyだたな。スマソ。
CLI仕様読んでみたけど、8byte値はnative intと同じアライメントって書いてあるね。
>>952 のMSDNマガジンの記事で、
「32bit環境ではlongに対するInterlocked APIはやばい。64bit環境でもお勧めしない」
って書いてあるのは、CLI仕様からすれば確かに納得か。
一応64bit環境なら動くはずだけど適度に恐怖しとけと。
しかしこれStructLayoutでレイアウト指定されたフィールドに対して
Interlocked API使ったりするってパターンでも起きうるな。
コンパイルエラーでも検出できないからやっかいかもね。
なに、Interlockedって重いの? なんか意味ねーな そしてlongじゃ使っちゃいけないの? どうなってんのよ
>>952 英語だらけで全部読めなかったけどどう解釈したらいい?
32bitCPUでlongのInterlockedを使うと
1. 実は不可分の処理にならない。
2. 実行時にバウンダリー関係の例外になる。
3. なかでこっそりlockを使っていて実は遅い。
なに、32ビット環境だと64ビット変数がおかしな感じで割り当てられることが あるってことなの? 普通のWindows環境でもダメ?
>なに、Interlockedって重いの? なんか意味ねーな 何言ってんの? 重いに決まってるだろう、状況によってかなり違うが。 でもその他の同期機構を使うよりは軽い。 でも競合の無いlockはイメージよりはかなり軽い。 Interlocked2回分レベル。 だからInterlockedを何回も使ってるとlockの方がましということもある。 まあ64ビットで使えないのはちょっとどうかと思うけど。
Int32使ってロックして 中でInt64を好きに使ったらいいんじゃないの
InterlockedったってCPUが持ってるアトミックな更新命令とかを使うだけだろ 重いわけないんじゃねえの lockが軽いんだろ
そこまでするなら普通にロックするだろ。 めちゃめちゃパフォーマンス重視なら知らんけど。
>アトミックな更新命令とかを使うだけだろ それが重いんだろうがw
>>958 てかlockって内部でInterlocked使ってるよ。
結論としてはInterlockedなんざいらねえ、lockで十分ということかな
965 :
938 :2007/09/25(火) 00:50:43
首吊って、あの世逝って修行しなおして来ます。
皆さん来世でお会いしましょう〜。
>>940 なんで?
>>947 でもそんなの.NET Frameworkのドキュメントの何処にも書いてねぇ!!
おっぱぴー〜(゚з゚)
>>956 3が正解。
64bitマシーンではInt32/Int64とも分割不可な操作が可能。
32bitマシーンではInt32のみ可能でInt64はlockを使っている。
オフセット指定の構造体などでバウンダリーをまたがるケースもlockを行っていると予想できる。
それでMSDNのこの記述。
>したがって、32 ビットのシステムでスレッド セーフにするためには、
>64 ビット値へのすべてのアクセスを Interlocked クラスのメンバを使用して行う必要があります。
ロックを避けるためにInterlockedを使いたいなら、内部でLockが発生しないように注意する必要がある。
>それでMSDNのこの記述。
>>したがって、32 ビットのシステムでスレッド セーフにするためには、
>>64 ビット値へのすべてのアクセスを Interlocked クラスのメンバを使用して行う必要があります。
これは別の意味でそっていうかそうとは限らんでそ。
lock使って無くてもそうなるのは当たり前。
>>963 てかlockって内部でInterlocked使ってるよ。
そうかいてるように見えるのは気のせい?
>でも競合の無いlockはイメージよりはかなり軽い。
>Interlocked2回分レベル。
>>965 CLR(2.0)のメモリモデルが意外と強力だから。
X86では32bitのCPUでもCMPXCHG8Bなど64bitの値をアトミックに扱う命令はあるが、 活用していないということかな?
中途半端な汗の知識で語るな
てことはJava5とかで導入されたlock-freeなコレクションみたいなのは .NETでは最初から作れたんだな というかもうあるのか?
ない。 コンカレントライブラリ確か作成中じゃなかったっけ? それに含まれたりしないのかなと期待してるんだが…
スレッドセーフなQueue<T>なんかあったら飛び付くな。
Queue.Synchronizedはあるのに、Queue<T>.Synchronizedがないのは何で?手抜き?
シンクロラッパー系はやっぱやめたってことじゃなかったっけ?
やめたの? 自分でロックしろってこと?
もう終わりそうですけど、DataGridViewで滑らかに自動スクロールさせるにはどうしたらいいですか? FirstDisplayedScrollingRowIndexに値を設定すれば自動でスクロールしてくれるけど、ビシッ!とワープしたように動いちゃいます。 ゆっくりというか、滑らかに次の行へ移動したいんですけど、なんかいい方法あるでしょうか? よろしくお願いします。
1ピクセルずつってことか1行ずつってことかどっちだ
ビシッ!っとじゃなくてスゥィーッと動いて欲しいんです
滑らかに次の行、だからピクセルじゃね? 985じゃまったくわからんけど
>>985 もう少しプログラマー的言葉遣いして繰れ・・・('A`)
そして死ぬほど使いにくいリストのスムーズスクロールの二の舞に…
990 :
983 :2007/09/26(水) 18:40:35
まさに
>>985 さんが言ってるような感じなんですが、たとえば
FirstDisplayedScrollingRowIndex++;
だと遷移過程が見えないので、そこをユーザが見えるようにスクロールさせたいということです。
そうするとピクセル単位ということになるんですかね・・・。
ピクセル単位で次の行へスクロールさせるにはどうしたらいいんでしょうか?
DataGridViewのメンバ見ててもどれ使えばいいのかわかりませんでした。
ねーよ
>>987 案外、985は長嶋茂雄的天才かもしれないじゃないか
993 :
デフォルトの名無しさん :2007/09/26(水) 19:52:05
ヌルっとしたらガッですよ
某ツールバーみたいにC#でエクスプローラのツールバーってできるんですか? C++/CLIとかいうのじゃないと無理なのかなと思うんですが
某ツールバーって何だよ。ハゲ
なるほど、 シェル拡張コンポーネントをマネージコードで(俺以外のやつは)作るな。 でOkですね。ありがとうございました。
1000
/ ♪ ,.-r、. / 一 r'7ー-..、 _,.,,_ /::::::ヽ!、 ,' あ 万 //::::::::::::`ヽ、 ,.:'´:::::::`ヽ/:::::::::::::::::Yi i ・ 円 { !::::::::::::::::::::;>'''"´ ̄ `"''<:;::::::::::!」 ! い と }.!:::::::::;ゝ'"´::::::::::::::::::::::::::::::::::::::::ヽ;::::!_!. | ・ 二 「/::::::;:':::;::::::::;::::::::::;:::::::;:::::';::::ヽ.:::::::::Y_/ ノ し .千 `ヽ/:::::;':::::/::!:::::::;!::::::ハ::::_!_:::::!::::::!:::!、 / ・ 円 ♪ /;'::::::i::::;'::/!-‐/!:::_」 レ'_」_`ハ_レ'::::!:::ヽ. ∠___ て. く /::i:::::::::i::::i/,.'-‐-´ ´ `!__!):::ハ:::::::〉、 i ・ れ ,rく::::ハ;:::/!_;ハ ,.,. __ ""i::::|::;イ:::';:::/ン' '、 る. た `'ミ_コ_;ヽi´::!_,i'、 l'´ `; ,.:'!::::!:::!-r'ア´ i \ ら /::::::;'::i::::!:/`iァ.,、..,,__,,. イ::::!::::|/'´「 | l バン `' 、.,_______ ;'::::/!::!::::!::::::,.ィ'ヽ、 /ヽ、!::::!:::::;'! | l l| 人.__ !::/::::::';|:::::!7´ヽ.ヽ /ム //|:::;!ヽ!_| /)、 ( レi:::::::/!::::::!:::::::::V/ ハヘ / レ'_L_ァ'´)' ' ') Y⌒ ☆ バン '、:/ レ、ハ:::::,,..く. - ''"´」二二二二二二二二二二i r'",.-/、`ソ´_,,.. - ''"´ | | / '´./i ソ´ ! これが 素敵な | ;' /;':::ゝイ | ! ! ! i::::::::::'; | 賽 銭 箱 |
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。