C#, C♯, C#相談室 Part45
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/01/21(月) 19:35:37c++厨の嵐はスルー汁。
前スレ
C#, C♯, C#相談室 Part44
http://pc11.2ch.net/test/read.cgi/tech/1194956418/
その他テンプレ>>2-5くらい
0002デフォルトの名無しさん
2008/01/21(月) 19:36:31http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
ふらっとC#,C♯,C#(初心者用) Part23
http://pc11.2ch.net/test/read.cgi/tech/1200033660/
MSDNライブラリ
http://msdn.microsoft.com/library/ja/
MSDN2
http://msdn2.microsoft.com/ja-jp/library/default.aspx
pinvoke.net: the interop wiki!
http://pinvoke.net/
0003デフォルトの名無しさん
2008/01/21(月) 19:37:09http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
.NET Framework SDK (2.0)
http://msdn2.microsoft.com/ja-jp/library/ms310244.aspx
MSDN Visual C# Express Edition フォーラム
http://forums.microsoft.com/msdn-ja/ShowForum.aspx?ForumID=187&SiteID=7
Visual Studio ユーザーグループ
http://vsug.jp/
@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/index.html
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
0004デフォルトの名無しさん
2008/01/21(月) 20:05:260005デフォルトの名無しさん
2008/01/21(月) 22:01:53誰もスレ立てないまま前スレあっさり終わったなw
0006デフォルトの名無しさん
2008/01/21(月) 22:08:050007デフォルトの名無しさん
2008/01/21(月) 22:16:130008デフォルトの名無しさん
2008/01/21(月) 22:39:04IEに貼り付けて、Windowsコントロールライブラリが通知したイベントを
javascriptで検知する方法を紹介しているサイトをご存じないですか?
0009デフォルトの名無しさん
2008/01/21(月) 22:47:290010デフォルトの名無しさん
2008/01/22(火) 01:48:30次は2008に書き換えようぜ、同志。
0011デフォルトの名無しさん
2008/01/22(火) 11:46:21既存の zip の中身が読めないし、
zipファイルを作成すれば、勝手に変なファイル([Content_Types].xml)が作られるし。
#ziplib の代わりになるかと思って期待したのに。
0012デフォルトの名無しさん
2008/01/22(火) 12:59:00インターナルなZipArchiveかなんかだっけ?公開してくれたらいいのに
0013デフォルトの名無しさん
2008/01/22(火) 23:59:56DotNetZipを調べてみるよ。
0014デフォルトの名無しさん
2008/01/23(水) 01:56:440015デフォルトの名無しさん
2008/01/23(水) 01:57:220016デフォルトの名無しさん
2008/01/23(水) 09:19:470017デフォルトの名無しさん
2008/01/24(木) 12:16:42class A
{
private string var="test";
public string func(string name)
{
return xxxx(name);// name="var"のときreturn varになる
}
}
こんなことしてくれる上記xxxxに相当するようなものはないでしょうか?
0018デフォルトの名無しさん
2008/01/24(木) 12:41:380019デフォルトの名無しさん
2008/01/24(木) 12:45:42public string func(string name)
{
return values[name];// name="var"のときreturn varになる
}
変数名にvarを使うのはやめとけ
002019
2008/01/24(木) 12:50:07Dictionary<string, string> values = new Dictionary<string,string>{{"var","test"}};
C#2.0ならコンストラクタとかで
values.Add("var", "test");
0021デフォルトの名無しさん
2008/01/24(木) 13:05:48できました
class A
{
private string str="test";
public string func(string name)
{
Type ty = typeof(A);
FieldInfo fi = ty.GetField(name);
return (string)fi.GetValue(this);
}
}
で
A B = new A();
Console.WriteLine(B.func("str"));
とすると
test
が表示されます
0022デフォルトの名無しさん
2008/01/24(木) 13:14:28自分のクラスのフィールドでそれをやる意味がわからない
0023デフォルトの名無しさん
2008/01/24(木) 15:13:38教えたって本人にとっていいことないし
0024デフォルトの名無しさん
2008/01/24(木) 15:38:550025デフォルトの名無しさん
2008/01/24(木) 15:57:040026デフォルトの名無しさん
2008/01/24(木) 16:00:000027デフォルトの名無しさん
2008/01/24(木) 16:02:52FAQ見れ、と答えることにするとか
0028デフォルトの名無しさん
2008/01/24(木) 16:23:00・クラス名の文字列からインスタンスを
・ジェネリックで計算
・GC
0029デフォルトの名無しさん
2008/01/25(金) 10:46:160030デフォルトの名無しさん
2008/01/25(金) 11:22:060031デフォルトの名無しさん
2008/01/25(金) 11:32:210032デフォルトの名無しさん
2008/01/25(金) 12:36:44ファイル種類「Web アーカイブ、単一のファイル(*.mht)」を
C#上から実施する方法ってないですか?
0033デフォルトの名無しさん
2008/01/25(金) 13:50:28CDO.Message 使えば?
0034デフォルトの名無しさん
2008/01/25(金) 20:35:18mht保存はVB.NETだけど公開されてたはず
場所は忘れたけど
0035デフォルトの名無しさん
2008/01/26(土) 02:52:12調べてみます。
003634
2008/01/26(土) 03:16:41ttp://www.atmarkit.co.jp/fdotnet/dotnettips/690createmht/createmht.html
以前見たのはこれじゃないけどコレでどう?
0037デフォルトの名無しさん
2008/01/26(土) 10:30:19結果が得られないのは、何でなんだぜ? 0,2,4,...,18 が出て欲しいんだが。
static void Exec()
{
Action<int, int> sumShower = (n, n0) => Console.WriteLine(n + n0);
Action<int> act = n => Bind(sumShower, n);
Action<int>[] acts = new Action<int>[10];
for (int i = 0; i < acts.Length; i++)
{
acts[i] =
//1: n => sumShower(i, n)
//2: n => Bind(sumShower, n)
//3: act
;
}
for (int i = 0; i < acts.Length; i++)
{
acts[i](i);
}
return;
}
static Action<int> Bind(Action<int, int> act, int val)
{
return i => act(tmp, i);
}
0038デフォルトの名無しさん
2008/01/26(土) 12:49:14コメントの1はこれで動く。
for (int i = 0; i < acts.Length; i++)
{
int j = i;
acts[j] = n => sumShower(j, n);
}
0039デフォルトの名無しさん
2008/01/26(土) 13:06:470040デフォルトの名無しさん
2008/01/26(土) 13:09:56やっぱそれしかないわけか。さんくす。
2, 3 は俺が何か根本的な勘違いしてるかもしれないので、わかる人指摘よろ。
0041デフォルトの名無しさん
2008/01/26(土) 13:15:26>>38 で指摘されてる方法を試してたのがそのままになってた。
正しくは、
static Action<int> Bind(Action<int, int> act, int val)
{
return i => act(val, i);
}
0042デフォルトの名無しさん
2008/01/26(土) 14:49:30actとBindが何をしたいのか説明しないとわからんよ。
なにやらループしてるように見える。
0043デフォルトの名無しさん
2008/01/26(土) 15:29:16↓
Action<int> act = n => Bind(sumShower, n)(n);
0044デフォルトの名無しさん
2008/01/26(土) 18:32:34やりたいのは、関数型言語で言うところのカリー化です。束縛(Bind)じゃないですね。
勘違いしていて、またおかしな名前をつけてしまいました。
>43
あー、なるほど。引数が一つ足りないんですね。やってみたら動きました。
ありがとうございました。
0045デフォルトの名無しさん
2008/01/26(土) 20:06:300046デフォルトの名無しさん
2008/01/26(土) 20:08:120047デフォルトの名無しさん
2008/01/26(土) 20:51:18>関数型言語で言うところのカリー化です。
それは部分適用のことをカリー化と呼んでる気がする。
C++界隈ではbindって呼んでるし別にbindでもいいと思うけどね。
参考)
ttp://vader.g.hatena.ne.jp/wata_d/20080123/1201078733
0048デフォルトの名無しさん
2008/01/27(日) 19:18:27どうしたらよいでしょうか
検索時に ○○ VC# などと検索しても
#が検索対象にならんのですわ
0049デフォルトの名無しさん
2008/01/27(日) 19:21:310050デフォルトの名無しさん
2008/01/27(日) 19:22:50c int
c# int
検索結果をくらべてみよう。
vc# は認識されないが、c#はgoogleが認識する。
それにしてもMSのネーミングセンスひどいよな。
".NET" のノイズが入らない検索方法があったら知りたい。
0051デフォルトの名無しさん
2008/01/27(日) 19:23:26おおぅ
これはすばらしい。コロンブスの卵でした
0052デフォルトの名無しさん
2008/01/27(日) 19:55:080053デフォルトの名無しさん
2008/01/27(日) 19:59:32最近は C# で絞れるんだな。
0054デフォルトの名無しさん
2008/01/27(日) 21:57:14キーワードを入れておくってのを、みんなでやればいいかも。
0055デフォルトの名無しさん
2008/01/27(日) 21:58:27COM とかもアレだな。
0056デフォルトの名無しさん
2008/01/27(日) 22:03:13今のところまったく経験なし
0057デフォルトの名無しさん
2008/01/27(日) 22:07:280058デフォルトの名無しさん
2008/01/28(月) 00:13:240059デフォルトの名無しさん
2008/01/28(月) 00:34:360060デフォルトの名無しさん
2008/01/28(月) 00:35:140061デフォルトの名無しさん
2008/01/28(月) 00:57:450062デフォルトの名無しさん
2008/01/28(月) 01:39:08シェルの深みに嵌まってる
半分溺れかけてるとも言えるけど(;´Д`)
0063デフォルトの名無しさん
2008/01/28(月) 01:55:50マジで?
0064デフォルトの名無しさん
2008/01/28(月) 02:15:18http://blogs.msdn.com/charlie/archive/2008/01/25/future-focus.aspx
unsafeみたいに,書く人に罪悪感を与えるような構文でいいねw
0065デフォルトの名無しさん
2008/01/28(月) 14:01:320066デフォルトの名無しさん
2008/01/28(月) 14:22:23string.Format("{0:+0;-0;0}", x)
0067デフォルトの名無しさん
2008/01/28(月) 14:31:05ありがとう!!
0068デフォルトの名無しさん
2008/01/29(火) 17:18:49staticなプロパティと非staticなプロパティとで、命名規則って変えてますか?
変えている場合は、どういう違いをつけていますか?
今は非staticな方に_を付けていますが、どうもしっくりこなくて・・・
0069デフォルトの名無しさん
2008/01/29(火) 17:24:41たぶんメンバ変数のことだろうけど、それでいいんじゃね?
俺はthis付ける派だけど。
0070デフォルトの名無しさん
2008/01/29(火) 17:38:50違います
0071デフォルトの名無しさん
2008/01/29(火) 18:22:590072デフォルトの名無しさん
2008/01/29(火) 18:28:050073デフォルトの名無しさん
2008/01/29(火) 18:44:04staticであることが意味的に明らかな場合が多いから、タグで区別する必要性は感じないな。
というか、今までインスタンスメンバと混同するような状況になったことが
たぶん一度もないと思う。
結論。
それってそもそも設計が変なんじゃないの?
007468
2008/01/29(火) 18:45:28>しっくりも何も命名ガイドライン的にアウトじゃん。
どこのガイドラインですか?
(C/C++で禁止になっていること・MSではPascalにしてくれとなっていることは知っています)
仕様上禁止だというのであれば、ソースをお願い致します。
>>72
メソッド内で、staticか非staticか見た目で判別できないじゃないですか
そのプロパティが定義されているクラス内でのことなので、publicかどうかは関係ないです…
0075デフォルトの名無しさん
2008/01/29(火) 18:50:310076デフォルトの名無しさん
2008/01/29(火) 18:51:37命名ガイドラインには沿っていないって話だろ。
「ガイドライン」の意味分かる?
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpgenref/html/cpconpropertynamingguidelines.asp
0077デフォルトの名無しさん
2008/01/29(火) 18:53:22アナタC++のソースでハンガリアン記法とかやっちゃう人ですね
0078デフォルトの名無しさん
2008/01/29(火) 18:54:15多分基本的な語彙について、話が噛み合ってない気がする
0079デフォルトの名無しさん
2008/01/29(火) 18:57:01(゚д゚)ハァ?
008068
2008/01/29(火) 19:31:00自作クラスばかりで構成されたアプリでは問題になっていないのですが、
既存のライブラリorフレームワーク上のクラスを継承した時に問題になるんです。
>>76
階層をもう少しのぼってよく読んでみたらいいと思います
008168
2008/01/29(火) 19:40:190082デフォルトの名無しさん
2008/01/29(火) 19:40:20具体例をあげてみたら?
0083デフォルトの名無しさん
2008/01/29(火) 19:48:28・static void Mainが書かれてるクラスにFormのインスタンスを取得するメソッドを書く
・シングルトンにする
どっちが一般的なの?
Dispose Finalizeパターンとシングルトンって相性悪そうだけど、
Program.GetForm()とか書くのも気持ち悪い・・・
あ、複数ウインドウ出さないアプリの前提で回答よろ
0084デフォルトの名無しさん
2008/01/29(火) 20:03:33その前提なら
1)Form.ActiveForm
2)Application.OpenForms[0]
3)
static Form1 frm1;
public Form1()
{
Form1.frm1 = this;
}
public static Form1 MainForm
{
get{return frm1;}
}
0085デフォルトの名無しさん
2008/01/29(火) 20:07:54シングルトンにはしないほうが良いという結論でいいかな?
Form以外(XNAのGameクラスとか)でも使えるのは3かな
0086デフォルトの名無しさん
2008/01/29(火) 21:55:010088デフォルトの名無しさん
2008/01/30(水) 13:17:39http://download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/CLRInsideOut2008_01.exe
winsiggen.exe便利……かな?
0089デフォルトの名無しさん
2008/01/30(水) 13:23:230090デフォルトの名無しさん
2008/01/30(水) 13:24:36http://msdn.microsoft.com/msdnmag/issues/08/01/CLRInsideOut/default.aspx?loc=jp
ね
日本語版記事にはダウンロードリンクがないんで
末尾のja削ってenにすると出てくるが
0091デフォルトの名無しさん
2008/01/30(水) 15:27:24AllocHGlobal()にはintで指定するのもあるけどReAllocHGlobal()はIntPtrだけだし
intかlongが自然に思うんだけれど
0092デフォルトの名無しさん
2008/01/30(水) 15:41:330093デフォルトの名無しさん
2008/01/30(水) 16:34:330094デフォルトの名無しさん
2008/01/30(水) 17:05:030095デフォルトの名無しさん
2008/01/30(水) 17:47:10メモリを確保するんだから、native intである必要があるだろ。
0096デフォルトの名無しさん
2008/01/30(水) 18:01:200097デフォルトの名無しさん
2008/01/30(水) 18:06:24int32, int64, native int の中で一番自然なのはnative intだと思う。
0098デフォルトの名無しさん
2008/01/30(水) 23:03:10これすげえ
Cのヘッダから自動生成してくれる
0099デフォルトの名無しさん
2008/01/31(木) 02:09:45うん でもさ、IntPtrのままじゃ演算できなくて結局intからキャストしてたり
SizeOfの返り値がintだったりと他の部分との整合性が取れてない点を不自然に思ってる
インターフェースがint/longでもいいし、もしくはIntPtrでもいいけどそれで演算できてたらよかったと思ってる
0100デフォルトの名無しさん
2008/01/31(木) 09:14:53ブログとかでやってる人の見たけれどなんかめんどくさそう・・・
0101デフォルトの名無しさん
2008/01/31(木) 20:25:20という区別がよくわかりません.たとえば foreach
は予約語ですが,IEnumerable とか IEnumerator は
単なる識別子です.yield のように reserved word
ではないけど contextual keyword だというような
ものもあり,そのあたりのあいまいさが使っていて
美しくないというか・・・・
その辺をすっきりと理解して使いたいのですが,
どのような本を読めばいいのでしょうか?
0102デフォルトの名無しさん
2008/01/31(木) 20:45:020103デフォルトの名無しさん
2008/01/31(木) 21:15:590104デフォルトの名無しさん
2008/01/31(木) 22:09:480105デフォルトの名無しさん
2008/01/31(木) 22:11:43C#はCLSに基づく言語だから、C#の仕様自体がCLIの仕様を包摂している。
つまり、IEnumerableなしではC#は成立し得ない。
0106デフォルトの名無しさん
2008/01/31(木) 22:12:29JISで仕様の日本語訳出てるから、それ読めばいいと思うよ。
0107デフォルトの名無しさん
2008/01/31(木) 22:17:13IEnumerableやIEnumeratorを実装している必要はないんだけどね
0108デフォルトの名無しさん
2008/01/31(木) 23:35:500109デフォルトの名無しさん
2008/01/31(木) 23:46:32なんかググっても全然出てこないんだけど
0110デフォルトの名無しさん
2008/01/31(木) 23:50:590111デフォルトの名無しさん
2008/02/01(金) 00:03:430112デフォルトの名無しさん
2008/02/01(金) 00:04:41Portable.NETってのがあるんだよ
0113デフォルトの名無しさん
2008/02/01(金) 00:14:460114デフォルトの名無しさん
2008/02/01(金) 00:16:000115デフォルトの名無しさん
2008/02/01(金) 01:00:40IntPtrから直接配列として操作することって出来ませんか?
結構Marshal.Copyでのロスが大きくて無視できないし、折角C#を使うんだから
出来ればポインタは使いたくないので…
0116デフォルトの名無しさん
2008/02/01(金) 01:01:510117デフォルトの名無しさん
2008/02/01(金) 01:04:590118デフォルトの名無しさん
2008/02/01(金) 01:08:52やっぱり無理ですか…
やっぱりポインタ使うしかないのか orz
>>117
Marshal.Read*とかでしょうか?
さすがにこれをループするのはコピーするより重そうですが…
0119デフォルトの名無しさん
2008/02/01(金) 01:18:210120デフォルトの名無しさん
2008/02/01(金) 01:26:46Bitmapなので変わる可能性はあります。
0121デフォルトの名無しさん
2008/02/01(金) 01:28:03すいません、抜けてました orz
複数のBitmapを扱うので、という意味です。
0122デフォルトの名無しさん
2008/02/01(金) 08:50:42byte[]とbyte*ってメモリレイアウトもたぶん違うから
byte[]→byte*なら可能ではあるんだが
0123デフォルトの名無しさん
2008/02/01(金) 12:42:17実装はunsafe使って
0124デフォルトの名無しさん
2008/02/01(金) 13:06:50マネージ→アンマネージは出来てもアンマネージ→マネージが出来ないと言うことですかね?
>>123
ちょっとその方法試してみます。
0125762
2008/02/01(金) 14:02:36private IntPtr ptr; private int length;
public unsafe byte this[int index] {
get { return ((byte*)(void*)this.ptr)[index]; }
set { ((byte*)(void*)this.ptr)[index] = value; }
}//あとは省略
こんな感じか
byte限定じゃなくてジェネリックにしたくなるけど(T*)がコンパイル通らないね
0126デフォルトの名無しさん
2008/02/01(金) 14:14:380127デフォルトの名無しさん
2008/02/01(金) 15:22:14(・∀・)ニヤニヤ
0128デフォルトの名無しさん
2008/02/02(土) 15:00:12バインディングソースからデータをバインドさせて、
文字列を表示しているセルがいくつかあり、
そのセルの文字列を組み合わせた文字列を表示したいセルがあるのですが、
どうも、表示されません。
設定としては、組み合わせた文字列を表示するセルのFormulaプロパティに
CONCATENATE(A1,B1)と入れているだけです。
他に何か設定が必要なのでしょうか?
よろしくお願いします。
0129デフォルトの名無しさん
2008/02/02(土) 15:12:30structに制限しても無理
Tがマネージドな型を含む可能性があるから
0130デフォルトの名無しさん
2008/02/02(土) 18:43:10どういうこと?
implementしなくてもOKってこと?
0131デフォルトの名無しさん
2008/02/02(土) 18:44:17SQLでとってくれば?
0132デフォルトの名無しさん
2008/02/02(土) 19:04:55class EnumerableObject : object {
public EnumerableObject GetEnumerator() { return this; }
public bool MoveNext() { return false; }
public object Current { get { return null; } }
}
このクラスのインスタンスに対してforeach使ってみるといいよ。
これはバグじゃなくてちゃんとした仕様。List<T>なんかはこれを利用して
IEnumerableを実装する構造体をその型のままで返してIEnumerableへのボクシングを避けてる。
0133132
2008/02/02(土) 19:08:43IEnumerable→IEnumerator
0134デフォルトの名無しさん
2008/02/03(日) 13:37:23また質問させてください。
TableAdapterのdeleteやupdateでDBのTableを更新する時に
SQLSerServerで外部キーを設定して連鎖参照整合性制約を使うことって出来ますか?
例えば二つのTableのある列を外部キーで関連付けして
同じ文字列のある行をdeleteしたりupdateしたりすることが出来ますでしょうか。
どうも上手くいかないんです。
もう一つ。
TableAdapterの更新処理はASP.NET上でしか
動作してくれませんよね?
例えば、普通のWindowsアプリケーションのプロジェクトを作成して
そこにDataSet作ってTableAdapterを作成して
DBの更新処理をするってのは出来ないですよね?
0135デフォルトの名無しさん
2008/02/03(日) 14:39:35手っ取り早いやり方は具体的にどんな感じになるんでしょ?
開発環境はVisual Studio 2008 Express Editionです。
0136デフォルトの名無しさん
2008/02/03(日) 14:43:23アセンブリをCOM参照可能にして呼ぶ。
0138デフォルトの名無しさん
2008/02/03(日) 22:14:420139デフォルトの名無しさん
2008/02/03(日) 22:17:160140デフォルトの名無しさん
2008/02/03(日) 22:17:310141デフォルトの名無しさん
2008/02/03(日) 22:47:24C++のListはC#だと何になる?
0142デフォルトの名無しさん
2008/02/03(日) 22:49:23可変長配列 vector<T> List<T>
双方向リスト list<T> LinkedList<T>
0143デフォルトの名無しさん
2008/02/03(日) 22:58:18Javaに合わせたのかな
0144デフォルトの名無しさん
2008/02/03(日) 23:03:200145デフォルトの名無しさん
2008/02/03(日) 23:18:04可能でしょ。
そもそも連鎖更新や削除はSQLServer側がする事で、.NETや言語は関係ない。
それ以上は「どうも上手くいかない」って説明では分からん。
もう一つ。
なんでASP.NETしか動作しないと思ってるのかわからん。
0146デフォルトの名無しさん
2008/02/04(月) 12:43:580147デフォルトの名無しさん
2008/02/04(月) 22:25:19DB側に処理置くのはいやずら
0148975
2008/02/05(火) 00:56:23すいません。わかりづらいですね。
[Table1]
ID Name Age
----------------
ID1 Yamada 20
ID2 Hanako 18
[Table2]
ID Height Weight
-------------------
ID1 170 65
ID2 160 50
手順としては上の二つのTable
がある時、
1.VisualStudioのデータベースエクスプローラーから
「外部キーのリレーションシップ」ダイアログで
Table1が親としてIDに対してリレーションを作成。
2.DeleteRule の設定、UpdateRule の設定を「重ねて表示」に設定。
3.Table1、Table2に関連付いたTableAdapterを作成して
1、2と同じ設定でリレーションシップを作成。
4.Table1の一行目に対してDELETE処理実行。
5.Table1の一行目は削除されるがTable2は削除されない。
ということです。
ASP.NETに関しては勘違いしていました。
>146
トリガのことですよね?
上記の方法で出来なかった場合はその方法を考えています。
0149デフォルトの名無しさん
2008/02/05(火) 14:45:350150デフォルトの名無しさん
2008/02/05(火) 15:11:20業務用で多いのは ASP.NET かな。
企業のウェブポータルなんかでは割と使われてる。
個人レベルのフリーウェアは最近結構増えてきた気がする。
0151デフォルトの名無しさん
2008/02/05(火) 15:26:44サンクス
0152デフォルトの名無しさん
2008/02/05(火) 22:36:40楽過ぎる。
でもグローバルフックに制限があったりとか
WPF使ったらactivexがラップしないと使えないとか
細かい問題が多くて開発時間に影響するんだよな・・・。
それでも早いけど。
0153デフォルトの名無しさん
2008/02/05(火) 22:38:25人工知能
0154デフォルトの名無しさん
2008/02/05(火) 23:05:080155デフォルトの名無しさん
2008/02/07(木) 10:16:54その際プライマリ出力のRegisterプロパティをvsdrpCOMに設定しても
インストール中にComRegisterFunctionAttributeのRegister、Unregisterメソッドは呼ばれないのでしょうか?
(試した限りでは呼ばれませんでした)
何かプロパティを変える等で呼ばれるようにする方法はありますでしょうか?
0156デフォルトの名無しさん
2008/02/07(木) 15:41:010157デフォルトの名無しさん
2008/02/07(木) 15:41:350158デフォルトの名無しさん
2008/02/08(金) 23:16:29n < Int32.MinValue
(nは0〜200くらい)
が実行された際
Debugでビルドしたときは何もなかったのに
Releaseでビルドしたらオーバーフローが出ました
n < Int16.MinValueにしたら平気でした。
n > Int32.MinValue では平気でした。
DebugとReleaseで演算方法が違うってことでしょうか?
そもそも比較演算でオーバーフロー出すようでは欠陥だと思うのですが
これじゃDebugでテストするのが怖い
0159デフォルトの名無しさん
2008/02/08(金) 23:29:430160デフォルトの名無しさん
2008/02/08(金) 23:34:11コードそのものをここに貼れよ。
それだけでオーバーフロー/フレームワークに欠陥なんて言われても。
0161デフォルトの名無しさん
2008/02/08(金) 23:38:06処理系が欠陥だと言い切るような自信がどこから湧くのか理解できんが、
生成されてるILすら比較してみていないような感じだな。
0162デフォルトの名無しさん
2008/02/08(金) 23:47:510163デフォルトの名無しさん
2008/02/08(金) 23:50:27とりあえずDebugとReleaseで
プロジェクトのプロパティ→ビルド→詳細設定→演算のオーバーフロー/アンダーフローのチェック
のチェックボックスの状態がちがうんじゃね?
0164デフォルトの名無しさん
2008/02/09(土) 00:14:46よく覚えてないけどList<T>.Sortか何かで渡した自分のIComparer<T>の実装が間違ってたのが原因だった
0165デフォルトの名無しさん
2008/02/09(土) 09:47:27http://pastebin.windy.cx/
http://pastebin.com/
こういうところだと色分けとかもできる
0166デフォルトの名無しさん
2008/02/09(土) 15:17:22MonthCalenderで、指定日をハイライトするメソッドをご教授ください。
0167デフォルトの名無しさん
2008/02/09(土) 15:22:480168デフォルトの名無しさん
2008/02/09(土) 15:25:49重ね重ね申し訳ない。orz
0169デフォルトの名無しさん
2008/02/11(月) 12:34:420170デフォルトの名無しさん
2008/02/11(月) 23:15:54C#でお手軽にZIP作る方法ないですか?
0171デフォルトの名無しさん
2008/02/12(火) 02:36:470172デフォルトの名無しさん
2008/02/12(火) 02:39:180173デフォルトの名無しさん
2008/02/12(火) 03:35:130174デフォルトの名無しさん
2008/02/12(火) 07:53:49…ってシェルと同じかも
0175デフォルトの名無しさん
2008/02/12(火) 08:45:53process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
指定して、zip.exe起動すれば、dos窓でないから
一番楽だと思うが。
0176デフォルトの名無しさん
2008/02/12(火) 13:38:56そのうちファイラ作ろうと思ってるんだけど。
ttp://www.madobe.net/archiver/dev/main.html#csharp
0177デフォルトの名無しさん
2008/02/12(火) 16:38:270178デフォルトの名無しさん
2008/02/12(火) 16:46:380179デフォルトの名無しさん
2008/02/12(火) 16:49:52まあヘッダ処理だけ書けば大体対応できるけどね。
0180デフォルトの名無しさん
2008/02/12(火) 16:49:59ZIPじゃないし
0181デフォルトの名無しさん
2008/02/12(火) 16:59:170182デフォルトの名無しさん
2008/02/12(火) 20:12:09されてしまいます。そこでそのちらつきを出さない方法についてこちら
でおききしていました。>http://pc11.2ch.net/test/read.cgi/tech/1197507828/859
その中のソースがC#なのでC#スレでお訊きします。よろしくです。
CodeProject Flicker-free ListView in .NET and XP. Free source code and programming help
http://www.codeproject.com/KB/list/listviewxp.aspx
にあるサンプルを試してみたのですが、DEMO版がうまくいくのにソース版
ですよ対策なしと同じでした。
ListViewのDoubleBufferingはちらつき防止に効果あるでしょうか?
またowner draw にした場合は自分でItemを描画する必要があるのでしょうか。
よろしくお願いします。
0183182
2008/02/12(火) 20:18:38該当のサイトでは
public void SetExStyles()
{
LVS_EX styles = (LVS_EX)SendMessage(this.Handle,
(int) LVM.LVM_GETEXTENDEDLISTVIEWSTYLE, 0,0);
styles |= LVS_EX.LVS_EX_DOUBLEBUFFER | LVS_EX.LVS_EX_BORDERSELECT;
SendMessage(this.Handle,
(int) LVM.LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (int) styles);
}
のようなコードがありました。これはDoubleBufferを使っているようなのですが、
owner draw はしてないようでした。一方、このサイトへのコメントレスとして
ついていたものでは、owner draw にしておいて
this.SetStyle(ControlStyles.OptimisedDoubleBuffer, True);
とするだけでちらつきはなくなるようなことが書かれていましたが、これは
自分で描画してやらないといけないようでその場合どのように描画すれば
よいのかわかりませんでした。自分で描画しないでも可能なような意味にも
取れてよくわからないのでした・・・
すみませんが、何卒よろしくお願いします。
0184デフォルトの名無しさん
2008/02/13(水) 00:08:14http://pc11.2ch.net/test/read.cgi/tech/1200911737/182-183
について教えてください。何卒よろしくお願いします。
0185デフォルトの名無しさん
2008/02/13(水) 00:10:26への出張の間違いでした。すみません。)
0186デフォルトの名無しさん
2008/02/13(水) 00:46:50みなさん、ありがとうございました
統合アーカイバプロジェクト(7-zip32.dll)
undll.exe
System.Process
でやってみることにしました
やってみると進行度合をウィンドウで表示してくれてちょっと鬱ですがとりあえず動いています
(zip32.dllは長い名前に対応してないとか?はっきりしなかったので)
0187デフォルトの名無しさん
2008/02/13(水) 01:10:36統合アーカイバプロジェクトのzipは処理速度遅いよ
0188デフォルトの名無しさん
2008/02/13(水) 13:14:46代替案しめさないと意味のないコメント
0189デフォルトの名無しさん
2008/02/13(水) 22:25:470190デフォルトの名無しさん
2008/02/13(水) 22:29:55インターフェースが統一されてなくて使いにくいんだよな
0191デフォルトの名無しさん
2008/02/13(水) 22:31:450192デフォルトの名無しさん
2008/02/13(水) 22:58:330193デフォルトの名無しさん
2008/02/13(水) 23:46:20MSはなんか特殊なコンパイラ使ってるの?
0194デフォルトの名無しさん
2008/02/14(木) 00:30:56http://msdn2.microsoft.com/ja-jp/library/fa13yay7(VS.80).aspx
0195デフォルトの名無しさん
2008/02/14(木) 01:46:17代替案って・・^^;
SharpZipLibに比べると3倍ぐらい遅いって、過去にそんな話出てたと思うが。
0196デフォルトの名無しさん
2008/02/14(木) 02:01:46そんな話見たことねーよ
どんな妄想だよ
遅いというからにはしっかり計って代替案示せ糞野郎
0197デフォルトの名無しさん
2008/02/14(木) 02:03:55SharpZipLib 10秒
0198デフォルトの名無しさん
2008/02/14(木) 02:07:160199デフォルトの名無しさん
2008/02/14(木) 10:09:380200デフォルトの名無しさん
2008/02/14(木) 10:17:300201デフォルトの名無しさん
2008/02/14(木) 12:26:43俺は196じゃないけど、196の言いたいことは「遅い」というのは
比較の対象があってこそ言えることで・・・
まあこれだけ補助線を引けば読解力ない君でもさすがにわかるだろ
0202デフォルトの名無しさん
2008/02/14(木) 12:40:130203デフォルトの名無しさん
2008/02/14(木) 12:52:190204デフォルトの名無しさん
2008/02/14(木) 13:06:240205デフォルトの名無しさん
2008/02/14(木) 13:11:210206デフォルトの名無しさん
2008/02/14(木) 13:14:24アホばっか
0207デフォルトの名無しさん
2008/02/14(木) 13:16:580208デフォルトの名無しさん
2008/02/14(木) 19:21:11懺悔の心でココに書くよ。
"C# bmp LockBits "でグーグル検索するとLockBits()メソッドの1つめの引数rectに
Rectangle rect = new Rectangle(0,0,bmp.Width,bmp.Height);
を指定するブログやら、Tipsサイトが大量に出てくるよね。
初心者向けとか言って、ご丁寧に赤と緑を入れ替えた画像とか貼ったりしてさー。
LockBits()はRectangle型のxとyしか見ない、あからさまなバグ入り関数なんだよね。
あそこは new Rectangle(0,0,1,1)で十分。
っていうか、大きな画像の一部のIntPtrを取り出したいときは、また別途Bitmapインスタンスが必要なぐらい使えない関数ww。
そっちの方がTipsとして必要だろうがwww。
10も20も「自称」プログラマのブログがあって、MSが作ったバグには一つも触れ無いんだよwwww。
おまえらは、MSの糞が食卓に並んでても気にならない本物のブタ共だよwww。
自分のブログで晒し上げにしようかと思っちゃったよww。
0209デフォルトの名無しさん
2008/02/14(木) 19:34:430210デフォルトの名無しさん
2008/02/14(木) 19:42:35が正しいな。
0211デフォルトの名無しさん
2008/02/14(木) 19:48:43「突っ込み所満載」
0212デフォルトの名無しさん
2008/02/14(木) 19:56:13普通にRectangleで指定した範囲だけロックされるぞ
(0,0,1,1)の範囲を指定したのにその外を触ろうとしたらAccessViolationExceptionが出る
0213デフォルトの名無しさん
2008/02/14(木) 20:05:04>208
釣れた!! ソースはってみろよ。
0214デフォルトの名無しさん
2008/02/14(木) 20:05:32自分が釣られてどうする。
0215デフォルトの名無しさん
2008/02/14(木) 20:25:23tmp.Save(@"c:\tmpA.Png", ImageFormat.Png); //tmpがBitmap型な。
BitmapData bmpData = tmp.LockBits(new Rectangle(0,0,1,1), ImageLockMode.ReadOnly,
tmp.PixelFormat);
int bytes = (tmp.Width) * (tmp.Height) * 4;
byte[] rgbValues = new byte[bytes];
IntPtr ptr = bmpData.Scan0;
int a = bmpData.Height;
int b = bmpData.Width;
Console.WriteLine(a.ToString()+"+"+b.ToString()); //1+1
Marshal.Copy(ptr, rgbValues, 0, bytes);
for (int d = 0; d < bytes; d++)
{
rgbValues[d] = 0xff;
}
Marshal.Copy(rgbValues, 0, ptr, bytes);
tmp.UnlockBits(bmpData);
tmp.Save(@"c:\tmpB.Png", ImageFormat.Png);
0216デフォルトの名無しさん
2008/02/14(木) 21:14:120217208,213,215
2008/02/14(木) 21:15:04>208>213>215 は全部俺>208だ。
ttp://hey.chu.jp/up/source3/No_13803.zip
今日は気分が良いからアプロダにサンプルまで置いてしまうぞ。
最後に俺のTipsを付けておく。
bmpData = tmp.LockBits(new Rectangle(0, 0, 1, 1), ImageLockMode.ReadOnly,
tmp.PixelFormat);
ptr = bmpData.Scan0;
Marshal.Copy(ptr, rgbValues, 0, bytes);
Rectangle rect = new Rectangle(64,64,256,128);//目的範囲をrectとすると。
for (int i= rect.X;i<rect.X + rect.Width;i++)
for (int j = rect.Y; j<rect.Y+ rect.Height;j++)
{
int d = j*tmp.Width+i;
swap = rgbValues[d * 4 + 1];
rgbValues[d * 4 + 1] = rgbValues[d * 4 + 2];
rgbValues[d * 4 + 2] = swap;
}
0218デフォルトの名無しさん
2008/02/14(木) 21:16:29っていうか、 MSのフォーラムに行け。
0219208
2008/02/14(木) 21:19:43>216はVSインストールした事も無いのに書き込んで居るんだね。
0220208
2008/02/14(木) 21:48:05ゲイツのうんこ大好きなスカトロ豚さん?
31行目か60行目を
Marshal.Copy(ptr, rgbValues, 0, bytes+1); // +1(・∀・) イイ
って変更すると、多分お探しのエラーコードがでまちゅよ。
0221216
2008/02/14(木) 21:57:35違いと言えば、215のコードを動かしたときは
tmpのインスタンスを作るときにファイルから読み込むBitmapのコンストラクタを使ったということくらい。
あと、217でtmpの中身を作るときのPixelFormatをFormat16bppRgb565にしつつ、
LockBitsに渡すPixelFormatをFormat32bppArgbにしても、探してた例外になったよ。
0222デフォルトの名無しさん
2008/02/14(木) 21:57:440223208
2008/02/14(木) 22:02:30あんまり頑張るなよ。
自分でも苦しい言い訳だと思わない?
>int bytes = (tmp.Width) * (tmp.Height) * 4;
の"4"の意味が解らないなんて無理があるだろ。
けど、とりあえず反応してくれて、 あ り が と 。
ちなみに実行した環境とかも教えてくれちゃうと嬉しいな。
0224208
2008/02/14(木) 22:05:12良いTipsを思いついたからブログに書こうと思ったら、
世間の奴らのブタ過ぎに書くに書けなくなった。
0225デフォルトの名無しさん
2008/02/14(木) 22:06:44いやそういうことではなさそう
PixelFormat.Format32bppArgbで作ってPixelFormat32bppRgbでロックしても例外出る
ビットマップのPixelFormatと違うフォーマットでロックしたらRectangleの中だけロックされるみたいだ
0226デフォルトの名無しさん
2008/02/14(木) 22:19:43そうだろうな。
そして人は
Format32bppArgbなら、Format32bppArgbでLockBitする。
Format32bppPArgbなら、Format32bppPArgbでLockBitする。
Format32bppRgbなら、Format32bppRgbでLockBitする。
そうでない時エラーになるのは人として当然。
そして >225はnew Rectangle(0, 0, tmp.Width, tmp.Height)の時どう動いて欲しいのかな?
>ビットマップのPixelFormatと違うフォーマットでロックしたらRectangleの中だけロックされるみたいだ
(・∀・)ニヤ
ぶっちゃけ書くけど、2008まだインストールして居ないんだ。俺。
0227デフォルトの名無しさん
2008/02/14(木) 22:33:39ペイントで24ビットビットマップとして保存して、
Bitmap tmp = new Bitmap(@"h:\P1000220.bmp");のようにした。
.NET Framework 1.1 SP1と2.0 SP1 (3.5)、
VC#コンパイラ.NET 2003, 2005, 2008の3つで試した。
32ビットビットマップでやるとtmp.PixelFormatがFormat32bppArgbになってうまくいくね。
(217からGraphics作ってる部分だけ抜き出して、tmp.Saveで作った)
0228デフォルトの名無しさん
2008/02/14(木) 22:35:19違うフォーマットでロックすることは可能
これでお前の期待する結果になる
こういう仕様のようにも見える
Rectangle rect = new Rectangle(0, 0, 10, 10);
BitmapData bmpdata = tmp.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format32bppRgb);
for (int i = 0; i < rect.Width * rect.Height; i++) ((uint*)(void*)bmpdata.Scan0)[i] = 0xfffffff;
tmp.UnlockBits(bmpdata);
0229208
2008/02/14(木) 22:43:13良く嘘をつく奴だな程度に思っていたけど、只の低脳なのか?
Bitmap tmp = new Bitmap(@"h:\P1000220.bmp"); //この次の行に書け。
Console.WriteLine("tmp.PixelFormat =" + tmp.PixelFormat.ToString()); //何が見える?
ペイントで24ビットビットマップとして保存して居る奴に必要なコード変更はこういう事だ。
//int bytes = (tmp.Width) * (tmp.Height) * 4;
int bytes = (tmp.Width) * (tmp.Height) * 3;
0230228
2008/02/14(木) 22:45:30tmpのPixelFormatはFormat32bppArgb
0231デフォルトの名無しさん
2008/02/14(木) 23:02:29嘘付きと低脳だったら嘘付きがいいな。
すまん、LockBitsするときにはPixelFormat.Format32bppArgbを
指定するよう書き換えていたことをさっきからずっと忘れていた。
0232208
2008/02/14(木) 23:03:53面白い。 >225は間違って無かったんだな。
Bitmap tmp = new Bitmap(412, 256, PixelFormat.Format32bppRgb);
で作って。
BitmapData bmpdata = tmp.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format32bppRgb);//つまり同じ。
for (int i = 0; i < rect.Width * rect.Height; i++) ((uint*)(void*)bmpdata.Scan0)[i] = 0xfffffff;
tmp.UnlockBits(bmpdata);
した場合は元のもくあみに戻るのな。
念のため
for (int i = 0; i < (rect.Width * rect.Height)+200; i++) ((uint*)(void*)bmpdata.Scan0)[i] = 0xfffffff;
として見たが、むなしくなった。 結果は白線がのびる。 exception無し。
こちらの環境は 2005 .NET 2.0 オンリ
夜も更けて来たので哲学入ります。
俺がやってることは、世間の奴らが見向きもしないで触らずにいた汚い糞を、
わざわざどけてやってるだけなんだよな。
結果、一番得得してるのは、糞を垂れ流してる張本人って事ないか?
0233デフォルトの名無しさん
2008/02/14(木) 23:05:02わるかった。 君が板から>228なんて案も出たんだ。
0234デフォルトの名無しさん
2008/02/14(木) 23:32:16コピーしないで中のメモリを直接ロックかける、
違ったら新しくメモリを用意し、そこに指定された領域を指定された形式に変換したものを
書き込んでいるという風になっている予感。
ソース見たら一発でわかるだろうな、誰かExpressではないVS 2008持っている奴いないのか?
デバッグ時は厳密にチェックするルーチンを使用し、
リリースでは速度重視って切替ができたら今より良かったと思う。
0235デフォルトの名無しさん
2008/02/14(木) 23:34:46ただ,ネイティブGDI+の関数を呼んでるだけという罠
0236デフォルトの名無しさん
2008/02/14(木) 23:59:50OSの環境に依存か。
unsafeかつ、フォーマットの変更が有って初めてLockBit()は仕様通り動くのな。 >228
>208がrect=(0,0,1,1)に拘ってたけど、rect=(80,64,1,1)とかは動作に影響があるな。
ソースにはラマーの意図を明確にする様に書けって話に戻るんじゃない?
せいぜい他人が>217みたいなソースを書いてきたとき、頭を捻るって感じ。
そんな場面は限りなく少ないから、ググっても仕方ないで、 Q.E.D.
ちなみに、俺が>208って言ったら信じる? グチっぽくならないコメントを考えるよw。
0237デフォルトの名無しさん
2008/02/15(金) 00:11:020238デフォルトの名無しさん
2008/02/15(金) 00:39:25VistaだとGDI+ 1.1になっているから何か変更があるのかもしれない。
> rect=(80,64,1,1)とか
そういうときのためのBitmapData.Stride。
0239デフォルトの名無しさん
2008/02/15(金) 14:11:20> unsafeかつ、フォーマットの変更が有って初めてLockBit()は仕様通り動くのな。 >228
その条件を満たさないとき、ドキュメントにあるどの仕様に反してるんだ?
一部だけを切りだして Stride も小さくしてくれるとか、領域外をアクセスすると
違反になるとかは 208の脳内仕様じゃないいのか?
LockBits は指定された領域を指定された様にアクセスできる情報を取得する
ためのメソッドであって、指定領域外へのアクセスがどうなろうが別にバグでも
なんでもない。ちゃんと当該領域は移動されないようロックされ、BitmapDataに
アクセスするための情報も返される。
0240デフォルトの名無しさん
2008/02/15(金) 15:29:33俺の他に
0241デフォルトの名無しさん
2008/02/15(金) 18:31:14やっぱ男はこうじゃないとね
0242デフォルトの名無しさん
2008/02/15(金) 18:50:290243デフォルトの名無しさん
2008/02/15(金) 19:09:480244デフォルトの名無しさん
2008/02/15(金) 20:42:33Drawing::BitmapからGDI+のBitmapを取得するにはどうすればよい?
0245デフォルトの名無しさん
2008/02/15(金) 21:57:070246デフォルトの名無しさん
2008/02/15(金) 22:36:400247デフォルトの名無しさん
2008/02/16(土) 00:59:380248デフォルトの名無しさん
2008/02/16(土) 01:10:57よく見るよね
こういうのコピペって言うの?
0249デフォルトの名無しさん
2008/02/16(土) 01:34:080250デフォルトの名無しさん
2008/02/16(土) 01:51:49ラマー板に良くいる。プログラミングが出来ないラマーが釣れましたね。
static void Main(string[] args)
{
Bitmap src = new Bitmap(64, 64, PixelFormat.Format32bppRgb);
Graphics.FromImage(src).Clear(Color.Black);
Rectangle rect = new Rectangle(32, 32, 20, 20);
unsafe
{
BitmapData bmpdata = src.LockBits(rect, ImageLockMode.ReadWrite, src.PixelFormat);//見える?
for (int i = 0; i < (rect.Width * rect.Height); i++) ((uint*)(void*)bmpdata.Scan0)[i] = 0xfffffff;
src.UnlockBits(bmpdata);
src.Save(@"same.Png", ImageFormat.Png);
Graphics.FromImage(src).Clear(Color.Black);
bmpdata = src.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb); //見える?
for (int i = 0; i < (rect.Width * rect.Height); i++) ((uint*)(void*)bmpdata.Scan0)[i] = 0xfffffff;
src.UnlockBits(bmpdata);
src.Save(@"different.Png", ImageFormat.Png);
}
}
チマチマソース書くより、ファビョる豚の方が案外気分が良いのかもな。
ラマー板に行けば解るよ。 頭の善し悪しより声の大きさが重要ってさ。
0251デフォルトの名無しさん
2008/02/16(土) 02:00:12LockBits()と言う変幻自在なMS仕様を >208如きには追えなかったってことさ。
これからも、MSがカラスが白いと言ったら、絶対に黒いっていうなよw。
0252デフォルトの名無しさん
2008/02/16(土) 02:50:16>特別の事情がない限り、このコードのように全領域をロックする。
この発案者は、きっと毎日 MSを尊敬の目で見てきた善行によって得られたノウハウだと思ったのだろうな。
だけど書いてる本人か(もしくは彼に教えた人)も「特別の事情」がさっぱり解らない。
そして「どうして?」とか「事情とは何か?」って考えはとても背徳的で、>239の様に酷い罵声を浴びせられるんだ。
0253デフォルトの名無しさん
2008/02/16(土) 02:56:38何を粘ってるんだよ
0254デフォルトの名無しさん
2008/02/16(土) 02:58:48って案に、個人的に酔ってみたんだ。 ラマー板で適当なスレを探そうかしら。
0255デフォルトの名無しさん
2008/02/16(土) 20:26:31妊婦用の板かと。
0256デフォルトの名無しさん
2008/02/16(土) 20:28:460257デフォルトの名無しさん
2008/02/16(土) 21:30:21よう、ひっひっふー
0258デフォルトの名無しさん
2008/02/16(土) 22:22:18日本語でおk、ひっひっふー
0259デフォルトの名無しさん
2008/02/16(土) 22:25:270260デフォルトの名無しさん
2008/02/16(土) 22:44:20ラマー板でやれ
0261デフォルトの名無しさん
2008/02/16(土) 22:51:370262デフォルトの名無しさん
2008/02/16(土) 22:55:150263デフォルトの名無しさん
2008/02/17(日) 04:44:40オレオレ用語キタコレ
やっぱり人間、謙虚じゃないといつどこで恥をかくか分からんねw
http://pc11.2ch.net/test/read.cgi/gamedev/1198312422/329-
http://pc11.2ch.net/test/read.cgi/gamedev/1198312422/339
http://pc11.2ch.net/test/read.cgi/gamedev/1198312422/344
http://pc11.2ch.net/test/read.cgi/gamedev/1198312422/346
http://pc11.2ch.net/test/read.cgi/gamedev/1198312422/348
たぶんこいつ、このスレでファビョってる奴と同一人物だよ
ラマー板も「想定」してあげないといけないらしいw
自作自演で自分の恥をうやむやにして逃げるから笑える
自分の言ってることを理解してもらえないと、ゆとりとかMS信者とか騒ぎ出すから気をつけてね
0264デフォルトの名無しさん
2008/02/17(日) 04:50:03たしかに「プログラマじゃないから」とか言ってるし、アンカーの仕方も同じだな。
どう見ても>>250です。本当にありがとうございました。
0265デフォルトの名無しさん
2008/02/17(日) 07:09:06Lockbits - specifying a rectangle with pixelformat 32bppArGB
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=249805
0266デフォルトの名無しさん
2008/02/17(日) 09:15:18一年前にVB厨が見つけたけど、(2007/01/04)
Microsoft様は「それは、俺たちが一年前(2006/05/18)にすでに通過した地点だ」と宣ったわけだw。
0267デフォルトの名無しさん
2008/02/17(日) 09:28:31所詮「MS」フィードバックともとれる。
MSがvistaと言ったら、XPのbugfixだなんて恐れ多くて言えない。
0268208
2008/02/17(日) 11:39:39毎日 MSを神と崇めるだけの仕事をしてきた彼には、>250のソースからFormat32bppArgbなどの単語を
得てやっとの思いで >265のログを見つけ出すのがやっとでした。
それに対して、私は>217を new Rectangle(0, 0, tmp.Width, tmp.Height)に改め、フォーマットの
変更や限定無しに、現行xpでもvistaでも正常に動作するソースを手に入れました。
更に上司にunsafeを使った高速化を提案し、「うちはそこまでしなくてもいいよ。だけど勉強熱心だね。」と褒められました。
アンチ信者は、「アンチ」の信者と言ったのはよく言った物で、正直私は「ご利益w」の様な物を感じました。
0269デフォルトの名無しさん
2008/02/17(日) 11:40:26>236 => >263
0270デフォルトの名無しさん
2008/02/17(日) 11:45:40カワイソス
0271208
2008/02/17(日) 11:50:23多くのプログラマやリファクタの心がける事とおもいます。
>270 ご指摘ありがとうございます。
正義では無く、私自信もひとつの「信者」と自嘲の意味を込めて書かせて頂きました。
0272デフォルトの名無しさん
2008/02/17(日) 11:56:12PixelFormt.*のフォーマットの定義
(PixelFormat.Format24bppRgbだったらB->G->Rの順で並んでいるbyte[]とか)
ってどこにあるの。
教えてください。
あと、bmp.Dispose()とか必要なん?
ガベコレがよきにはからってくれないの ?
0273デフォルトの名無しさん
2008/02/17(日) 11:59:09これからも懺悔の心を忘れるなよwww
0274デフォルトの名無しさん
2008/02/17(日) 12:16:35毎日 MSを神と崇めるだけの仕事をしてきた彼、とか
頭大丈夫か?少し休んだほうがいいぞ
0275デフォルトの名無しさん
2008/02/17(日) 12:41:20無いんじゃね
WPFにはあるんだけど
放置しててもそのうちファイナライザがGCに呼ばれてそこで解放されるけどあくまでフェイルセーフ
0276デフォルトの名無しさん
2008/02/17(日) 13:03:27お前の成功物語は239が居なくても成立したように見える。
どこで239から利益を得たのかわからない。
0277デフォルトの名無しさん
2008/02/17(日) 13:15:23>265は役に立ってる。 (0,0,1,1)のままだとvistaで転けるからw。
.
..
...
(0,0,1,1)なんて発想の方がでねーだろw。
0278デフォルトの名無しさん
2008/02/17(日) 13:41:130279デフォルトの名無しさん
2008/02/17(日) 13:44:04空気読めてないようだねw
頭大丈夫?
0280デフォルトの名無しさん
2008/02/17(日) 13:45:05コピペしてるお前が馬鹿だということが、よくわかった。
0281デフォルトの名無しさん
2008/02/17(日) 14:02:57>Microsoft様は「それは、俺たちが一年前(2006/05/18)にすでに通過した地点だ」と宣ったわけだw。
宣ってない宣ってない。
2006/05/18のblogに載ってるのは、
「Orcasでは互換性を重視してるよ。そのためにRed and Greenモデルってのを入れたんだ」
って話で、Lockbitsの話はカケラも出ていない。
0282デフォルトの名無しさん
2008/02/17(日) 14:18:380283デフォルトの名無しさん
2008/02/17(日) 14:19:140284デフォルトの名無しさん
2008/02/17(日) 14:26:130285デフォルトの名無しさん
2008/02/17(日) 15:13:00だけど24,32bit系しかカバーできなんだ。orz
static void Main(string[] args)
{
Rectangle rect = new Rectangle(0, 0, 8, 8);
PixelFormat[] PFlist = new PixelFormat[] {
PixelFormat.Format32bppArgb,PixelFormat.Format32bppArgb,PixelFormat.Format32bppPArgb,PixelFormat.Format32bppRgb,
PixelFormat.Format24bppRgb};//ゴメン 24,32bit系しかカバーできなんだ。
Color[] colors = new Color[] {
Color.FromArgb(255, 0, 0),Color.FromArgb(0,255, 0),Color.FromArgb(0,0, 255),
Color.FromArgb(64, 0, 0, 0)}; //用途に応じてココは増やした方が良いな。
foreach(PixelFormat pf in PFlist)
{
Bitmap src = new Bitmap(rect.Width, rect.Height, pf);
foreach(Color cl in colors){
Graphics.FromImage(src).Clear(cl);
Console.Write("{0}|{1,5}\t",pf.ToString(),cl.ToString());
unsafe{
BitmapData bmpdata = src.LockBits(rect, ImageLockMode.ReadOnly, src.PixelFormat);
int pixwidth = bmpdata.Stride/bmpdata.Width;
for (int i=0;i<pixwidth;i++)
Console.Write("[{0,3}]", ((byte*)(void*)bmpdata.Scan0)[i].ToString());
src.UnlockBits(bmpdata);
}
Console.WriteLine("");
}
Console.WriteLine("-----------------------------------");
}
}
更に>275が書いた事が間違ってたら、 真にうけた俺は、更にバカだな。
0286285
2008/02/17(日) 15:20:54えっと。 すまない。本当にコピペなんだ。orz
0287285
2008/02/17(日) 15:26:27スレ汚し失礼しました。
0288デフォルトの名無しさん
2008/02/17(日) 15:29:06.NET Frameworkの仕様というよりほとんどGDI+の仕様だけど、
ここに文章で書いてある。
ttp://msdn2.microsoft.com/en-us/library/ms534412.aspx
0289デフォルトの名無しさん
2008/02/17(日) 16:41:34Dispose()は単なるメソッドで、GCとは関係なく
GCはいつ回収しにくるかわからないので、明示的に解放処理をしたい場合
IDisposableインターフェイスを実装してDispose()する
という解釈で合ってるのかな?
0290デフォルトの名無しさん
2008/02/17(日) 19:28:52そこで使われている Assembly Linker の al.exe はどこの場所に
インストールされているものでしょうか。
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin
(Resgen.exe、Winres.exe はここにありました)
を見たり検索したりしてみたのですが見つかりませんでした。
すみませんがこれについて教えてください。
0291290
2008/02/17(日) 20:17:21場合は、コード内で、現在のスレッドのカルチャ CurrentThread.CurrentUICulture
にカルチャ情報 CultureInfo() を指定するだけで該当のリソースが使われる
ようでした。al.exe は無くてもVSがやってくれるので問題ないのですね。
0292デフォルトの名無しさん
2008/02/17(日) 20:24:53うん
直接アンマネージリソースを扱ってたりして特別な解放処理が必要なクラスなら
もしDispose呼び忘れても死亡しないようにファイナライザも実装する
0293デフォルトの名無しさん
2008/02/17(日) 21:28:56ResourceHoge.ja.resx
ResourceHoge.en.resx
...
等とするとVSが作ってくれて、実行時に選択してくれるのな
0294デフォルトの名無しさん
2008/02/17(日) 21:30:33C:\Windows\Microsoft.NET\Framework\v2.0.50727\al.exe
0295デフォルトの名無しさん
2008/02/17(日) 22:32:450296290
2008/02/17(日) 23:58:52どうもそのようです。
>>294
ありがとうございました、そこにあることを確認しました!!
(Program Files の中しか探していませんでした。。。)
またよろしくお願いします。
0297デフォルトの名無しさん
2008/02/18(月) 01:14:00憶えていないけど、どこかで見た記憶が有る、ヘルプのすごい変なところ
0298デフォルトの名無しさん
2008/02/18(月) 01:31:29アンマネージドのラッパになっているクラスは大抵付いていてやらないとむやみに長期に渡って残るよ
アプリ落とす段階で適当にコレクトされるみたいですけど。
理由は、Comインターフェイスは手動リファレンスカウンタで管理しているので、ガベコレと直接関連してくれないから。(いずれ死ぬけど)
ファイル周りのDisopseは必ずやっておく事、ファイルが長時間に渡ってロックしっ放しになって
他のアプリからアクセスできなくなる。
それとスレッドを持っていてバックグラウンドで仕事をしているようなタイプのオブジェクトも
これは、アプリのプロセスインスタンスが死ななくなって都合が悪い、
特にデバッグ時に停止してもなかなかIDEに制御が戻らなくなってデバッグに不便になります。
0299272
2008/02/18(月) 01:36:04Dispose関係は結構複雑なのですね。
忘れないようにしたいと思います。
0300デフォルトの名無しさん
2008/02/18(月) 01:40:59ほとんどのオブジェクトは相変わらずアンマネージリソース持ってるのに
0301デフォルトの名無しさん
2008/02/18(月) 05:15:290302デフォルトの名無しさん
2008/02/18(月) 05:21:14http://www.nicovideo.jp/watch/sm2336941
伊藤静「じゃあ、次もwww」
後藤邑子「斬ったほうがいい?www」
伊藤「次は斬る?www」
後藤「どうするww」
伊藤「ペンネーム『心が綺麗な天使』から頂きましったww(フンッwww) 私はこの日本に住むのにはピュアすぎます。どのようにしたら天使のような私がこの今の日本に馴染めるのでしょうか?」
後藤「.........ウザい」
二人「キャッハハハハハwwwww」
伊藤「ちょほんとさあ、大丈夫?www」
後藤「おい天使、おいおい自称天使ww」
伊藤「自分が天使だと思ってること自体がちょっと間違ってんじゃないの?っていうねwww」
後藤「うん。ね。ちょっと軽く(精神病院に)通院してみたほうがいいんじゃないの?www もしくは、今の日本に馴染めるようにちょっと汚れちゃえよwwww」
伊藤「それかもう日本出て行ったらいいんじゃないの?www」
後藤「天使が住める国にwwwwwww なんかエルフの国とかに行ったらいいんじゃないの?wwww」
伊藤「妄想の中とかに(プフッww)行っちゃえばいいんじゃないのwww」
後藤「コワイヨーwwwコワイヨーwwwww」
二人「クックックックwwww」
0303デフォルトの名無しさん
2008/02/18(月) 07:17:14>ほとんどのオブジェクトは相変わらずアンマネージリソース持ってるのに
それはXAMLのエレメントを表現したオブジェクトのツリー
アンマネージドリソースは持ってない。
0304デフォルトの名無しさん
2008/02/18(月) 08:43:410305デフォルトの名無しさん
2008/02/18(月) 11:19:34>208、>250なんてさ
>ソースには(プログ)ラマーの意図を明確にする様に書けって話 (引用 ケントベック)
> この発案者は、きっと毎日 MSを尊敬の目で見てきた善行によって得られたノウハウだと思ったのだろうな。
> だけど書いてる本人か(もしくは彼に教えた人)も「特別の事情」がさっぱり解らない。
>そして「どうして?」とか「事情とは何か?」って考えはとても背徳的 (読んだことあるけど失念。トム・デマルコ風?)
> ソースや文章には多くの目が加わるとより良くなるとは、(出典 Refactoring to Patterns)
これ引用ばかりww。 それどころか、ぜんぜんランクの低いそれらをやたら勧める「アジャイルw」の口伝だろw。
>208はどう見ても真っ赤な信者です。本当にありがとうございました。
本読んでばかりで人と話しが合わない。信者っぷりが凄くて会社のお荷物系wwwww。
それなのに、オマエらチャンスボール多すぎ。常識的に>227なんてありえないし。
>270>271繋がりはなんだ?便利すぐる。
執拗に人格攻撃してるのは、>239に過剰反応したコピペ君の>250なのが事実。
最後に、自分からの信者宣言まで許すし。...もう訳がわからん。
こんなの>208への接待プレーか、>250は>208の素敵な自作自演ですと思われても仕方ねーだろうよ。JK
本当にちょろ過ぎる!!! そりゃ便乗して論破狙いに「C#ってなに?」な奴も湧くよwwww。
NetMassDownloader片手にさww。
そういう本を読んで、頭良いと勘違いする只のガキは五万といるんだからな。 覚悟しとけ。
!!! 俺 も 含 め て 5 万 + 1 wwww !!!
0306239
2008/02/18(月) 11:46:43仕様が想像と異なっていたらAPIのバグだと主張するという素敵な
スタイルを否定した漏れも悪かった。
0307デフォルトの名無しさん
2008/02/18(月) 11:48:020308デフォルトの名無しさん
2008/02/18(月) 11:55:24つttp://www.amazon.co.jp/Microsoft-NETでのテスト駆動開発-ジェームス・ニューカーク/dp/4891004428
0309デフォルトの名無しさん
2008/02/18(月) 12:01:33何かお探しですか?
入力したURLが当サイトのページと一致しません
といわれました
0310デフォルトの名無しさん
2008/02/18(月) 12:06:50つttp://www.cbook24.com/bm_detail.asp?sku=4891004428
URLがどうこう以前に、会社か学校に「テスト駆動開発」の本が無いの?
>想像したり実験したりしながら「動けばいいや」とコードを書き、
>仕様が想像と異なっていたらAPIのバグだと主張するという素敵な
>スタイル
がそのまま載ってるだけなんで、 御社では別によまんくても良いんじゃない?
urlをクリックしてくれただけで十分です。
0311デフォルトの名無しさん
2008/02/18(月) 12:07:12http://www.amazon.co.jp/dp/4891004428
実は書名の部分は削っても同じページが表示される。
0312デフォルトの名無しさん
2008/02/18(月) 12:11:500313305
2008/02/18(月) 12:22:37自社製品では「テスト」しないんだね。
みんなでerrorを見つけてbugfixしようよ。 みんな幸せになろう。
って書くと、もうアンチ信者なのか? orz
0314305
2008/02/18(月) 12:35:48ダメだ。 俺センス無いな。 urlクリックでは行けない。
239の後輩が基本情報処理技術者の資格もってれば教えてくれるよ。
0315デフォルトの名無しさん
2008/02/18(月) 12:49:37お前うざい
0316デフォルトの名無しさん
2008/02/18(月) 12:52:07>本読んでばかりで人と話しが合わない。信者っぷりが凄くて会社のお荷物系wwwww。
0317305
2008/02/18(月) 13:17:03誰でも良いから。 239を語って
「208はマジで行き当たりバッタリで、TDD風味なのは最悪コピペ野郎の250!!
なんだよ、どっちも糞じゃねーか!!」
ぐらいの線だったんだけどな。
0318デフォルトの名無しさん
2008/02/18(月) 14:24:36いやいや、テストしないとかありえないだろ。
MS はテストだけで部署が1つある。
0319305
2008/02/18(月) 14:31:04気分はアレだ。せっせっと地雷埋めて、味方が乗ってるときに起爆しちゃったぐらい。
俺、208みたいに全レスとかしないから。 テストってなんの事かなさっぱりわからないや。 208にでも言わせろ。
0320デフォルトの名無しさん
2008/02/18(月) 17:06:290321デフォルトの名無しさん
2008/02/18(月) 18:03:16コピペ君って馬鹿だな、まで読んだ。
0322デフォルトの名無しさん
2008/02/18(月) 18:11:39BitmapSourceとかGeometryとか描画の低レベルなところはアンマネージリソース持ってるよ
0323デフォルトの名無しさん
2008/02/18(月) 21:02:070324デフォルトの名無しさん
2008/02/18(月) 21:14:08SqlServerからSelectしてきたDataRowを表示したいのですが、上記のエラーが出ます。
下記のように書いても、'System.DBNull' は '型' ですが、'変数' のように使用されています。
ということでビルドできません。typeofとか使っても駄目です。
VBだとIsDBNullってあるようですが、C#ではどうしたら良いのでしょうか?
if (row.Name != DBNull)
Console.WriteLine("Name: {0}", row.Name);
0325デフォルトの名無しさん
2008/02/18(月) 21:18:48>DBNull はシングルトン クラスです。つまり、このクラスのインスタンスは 1 つしか存在できません。
その唯一のインスタンスは DBNull.Value です。
0326デフォルトの名無しさん
2008/02/18(月) 21:18:57if( !(row.Name is DBNull) )
0327デフォルトの名無しさん
2008/02/18(月) 21:22:220328デフォルトの名無しさん
2008/02/18(月) 21:28:52>>325
その説明がまた難しかったです‥‥。
row.Name != DBNull.Valueでも同じエラーでビルドできませんでした。
>>325
is演算子なんて、初めて使いました‥‥。
結果は同じだったんですけれど。
>>327
なんと、確かに勝手に作られました!!
カラム分のrow.Is○○Nullが生成されるようです。
気付かず、申し訳ありませんでした。
皆様、どうも有り難うございました。
0329デフォルトの名無しさん
2008/02/18(月) 21:31:52if(row.Name != DBNull.Value)
でどうか。
0330デフォルトの名無しさん
2008/02/18(月) 21:36:04俺レス遅すぎorz。
つーか、よく考えたらコンパイル通らんな…。
0331デフォルトの名無しさん
2008/02/18(月) 21:36:06のなかが、if( row.Name.type == DBNull ) throw Exceptionみたいな
インプリになってるから、Nameを触った時点で終冬
StringならプロパティでNULL時に代替する値を設定できるけど、
Nullable型はどこへ行ったの、って感じ。
0332デフォルトの名無しさん
2008/02/18(月) 21:39:590333デフォルトの名無しさん
2008/02/19(火) 01:25:34先頭の固定データを設定したByte配列に、元ファイルを読み込んだByte配列をコピーするような方法しかないものでしょうか?
0334デフォルトの名無しさん
2008/02/19(火) 01:32:29元のファイルの内容を順次書き込めばいいだろ
0335デフォルトの名無しさん
2008/02/19(火) 13:09:01やりたいのがzipで圧縮されたMP3をメモリ上に解凍したものを
MediaPlayerで扱いたいとか
HTMLが含まれたメールのHTML部をメモリに抽出したものをwebbrowserで開きたいのですが
メモリ=>Uriとして扱うために、一旦ファイルに落とせば出来るのですが、
ファイルに落とさずに行いたいです。
0336デフォルトの名無しさん
2008/02/19(火) 13:12:120337デフォルトの名無しさん
2008/02/19(火) 13:19:59>ウェブサーバ機能も搭載してしまうとか。
すいませんが、知識がありません。
もうちょっと、ヒントを
あんまり、大がかりにはしたくないのですが、
WCFでちょちょいと出来そうなら、
チャンスなので、WCFとかの勉強をしてもいいかなとも思ってますが。
さくっと見てみた限りでは、ちょっと違うかなぁと
(出来るかもしれないし、出来ないかもしれない)
今は、飛び込むのに迷ってはいるのですが。
0338デフォルトの名無しさん
2008/02/19(火) 13:47:15System.Net.HttpListener で適当なポート Listen しといて、
要求があったら Response にファイルを返す。
ブラウザで http://localhost:ポート番号/ を開く。
0339デフォルトの名無しさん
2008/02/19(火) 14:15:07回答ありがとうございました。
MSDNにあるサンプルで試したところ、
簡単にできそうですね(さしあたり、HTMLメールの方は出来そうなことを確認)。
ながいこと方法を探していたので、本当に感謝致します。m(_ _)m
0340デフォルトの名無しさん
2008/02/19(火) 21:36:35ReSharperを購入しようと思い、JetBrainのサイトからクレジットカード(Visa)での購入手続きを行ったのですが
数時間後にメールが支払い手続き失敗のメールがきてしまいます。
このカードで他の買い物はできているのでカードが使用不能になっているわけではないと思うのですが・・・
0341デフォルトの名無しさん
2008/02/19(火) 21:40:020342デフォルトの名無しさん
2008/02/20(水) 00:47:100343デフォルトの名無しさん
2008/02/20(水) 00:50:01ICollection<T>にはある。もちろんList<T>も実装している。
0344デフォルトの名無しさん
2008/02/20(水) 00:54:14List<T>のまま直接IsReadOnlyを参照できればいいのに
0345デフォルトの名無しさん
2008/02/20(水) 01:04:550346デフォルトの名無しさん
2008/02/20(水) 01:17:230347デフォルトの名無しさん
2008/02/20(水) 01:19:110348デフォルトの名無しさん
2008/02/20(水) 01:22:13いろいろとサンクス
0349デフォルトの名無しさん
2008/02/20(水) 09:08:53ATLのhoge.exe /regserverのような自己登録型のCOMサーバーのことです。
単にCOMインタフェースを持ったexeを作って、regasmやgacutilでCOM登録はできるけど、
これだと単にDLLサーバーと同じ働きしかしない。
つまり、アプリ側でそのexeを参照してCOMが使えるけど、アプリごとにロードされる。
COMは1つだけロードされて情報を共有したいのですが・・・
こういうのってC#だとCOM+(コンポーネントサービス)で実現すべきですかね?
C#でCOM+作ってregsvcsで登録、複数アプリでの情報共有はできることは確認できたのですが。
0350デフォルトの名無しさん
2008/02/20(水) 09:24:400351349
2008/02/20(水) 11:14:51自分はCOMがマシンでシングルトン的に動く事を期待しているので。
それで複数のアプリがそこへCOMインタフェースを介してアクセス。
0352デフォルトの名無しさん
2008/02/20(水) 11:43:570354349
2008/02/20(水) 12:03:35ちなみにこんな記事も見つけた。
ttp://www.codeproject.com/KB/COM/ActiveXEXEWrappers.aspx
ここではEXE COMサーバー(ActiveX EXE)に相当する物は.netにはないから、
一度.netでCOM作って、それをnativeなActiveX EXEアプリで参照して、
メソッドラッピングするという話。
0355デフォルトの名無しさん
2008/02/20(水) 12:28:46>>341が言ってるのは、カードの設定のことじゃないのか。
まあ、クレカ関連のトラブルはカード会社に電話するのが一番手っ取り早いと思うよ。
0357デフォルトの名無しさん
2008/02/20(水) 21:53:150358デフォルトの名無しさん
2008/02/21(木) 09:52:372012年を過ぎればこんな心配も無くなるなw
0359デフォルトの名無しさん
2008/02/21(木) 10:18:000360デフォルトの名無しさん
2008/02/21(木) 18:48:48ありがとうございました
0361デフォルトの名無しさん
2008/02/21(木) 22:32:37どっちも変わらない?
0362デフォルトの名無しさん
2008/02/21(木) 22:58:330363デフォルトの名無しさん
2008/02/22(金) 00:33:09すんごいクラス細かく分けてあって、名前がa1とかだったらそれなりに調べるのに時間かかるとは思うんだけど。
一メソッドの中のロジックはともかく、複数のクラスの相互関係とかは結構追いにくくなりそうだけど。
もちろんバイナリのほうがいいのはいうまでもないが。
0364デフォルトの名無しさん
2008/02/22(金) 00:39:160365デフォルトの名無しさん
2008/02/22(金) 02:21:010366デフォルトの名無しさん
2008/02/22(金) 02:26:19Enum.Parseとかも駄目。
そういう副作用があるので難読化後に全テストし直しが必要なのできついよ。
駄目なクラスなどだけ難読化の対象から外すのはできるけどそれを確認するのも手間がかかる。
難読化してもメソッド内のロジックとかで見ると何も変わらないのであんまり意味がない。
ほんのちょっと読みづらいだけだよ。
0367デフォルトの名無しさん
2008/02/22(金) 07:21:38そのまま、ネイティブバイナリの意味ですが?普通に読めば.NET ILコードとネィテブバイナリを比較して行ってると思ったんだけど・・・
>>366
>意図せずリフレクションが使われてることはよくある。
>Enum.Parseとかも駄目。
>そういう副作用があるので難読化後に全テストし直しが必要なのできついよ。
それはめんどくさそうですね。
>駄目なクラスなどだけ難読化の対象から外すのはできるけどそれを確認するのも手間がかかる。
>難読化してもメソッド内のロジックとかで見ると何も変わらないのであんまり意味がない。
ので全部のクラスに難読化かけたときは全体の構造追いにくくなるのである程度は意味ないかと思ったんですけどね・・・
じぶんならかなり見る気がうせるし、追ってくのにも時間かかるだろうから、それなりに障壁にはなるかと。
0368デフォルトの名無しさん
2008/02/23(土) 13:08:05ttp://data.exet.nu/bildarkiv/svarv/02.jpg
0369デフォルトの名無しさん
2008/02/23(土) 13:34:000370デフォルトの名無しさん
2008/02/23(土) 21:39:20構築しようとしているのですが、(Console IME は使えなかったのでテストして
いませんが) 非 ASCII 文字をペーストすると変に分解? されてしまうようなの
ですが、何か対策は無いものでしょうか。どうかご教示願います。
/* コード */
char c;
while (true) Console.WriteLine("{0} ({1})", c = Console.ReadKey(true).KeyChar, Convert.ToInt32(c));
/* 結果: (入力orペースト -> 出力)
a -> a (97)
A -> A (65)
あ -> ? (130)\n? (12448)
い -> ? (130)\nア (12450)
ア -> ? (131)\nぁ (12353)
0371デフォルトの名無しさん
2008/02/24(日) 22:12:17textBox.AppendText("1\n");
textBox.AppendText("2\n");
textBox.AppendText("3\n");
textBox.AppendText("4\n");
textBox.AppendText(textBoxLog.Text);
とすると、
1
2
3
4
1234
ってなるんだけど、最後の行で改行が消えるのは何故?
改行を保存するにはどうすればいいの?
0372デフォルトの名無しさん
2008/02/24(日) 22:14:220373デフォルトの名無しさん
2008/02/24(日) 22:20:04TextBox textBox;
textBox.AppendText("1\n");
textBox.AppendText("2\n");
textBox.AppendText("3\n");
textBox.AppendText("4\n");
textBox.AppendText(textBoxLog.Text);
とすると、
1
2
3
4
1234
ってなるんだけど、初めの4文字は改行されて、最後の4文字は改行されないは何故?
0374デフォルトの名無しさん
2008/02/24(日) 22:38:18Dock=FillとかにしてTextBoxのサイズがウインドウサイズに連動して変わるようにして、
表示した後にサイズを変えてみ。
\nじゃだめなことがわかるから
0375デフォルトの名無しさん
2008/02/24(日) 22:40:08それなら、俺も聞きたいところだ。
0377デフォルトの名無しさん
2008/02/24(日) 23:20:55ってやると末尾に\nが来た場合次の行にカーソルが行くから、かね
0378デフォルトの名無しさん
2008/02/24(日) 23:24:020379デフォルトの名無しさん
2008/02/24(日) 23:41:20どういう箱なのでしょうか?いまいち解らなくて・・・
0380デフォルトの名無しさん
2008/02/25(月) 00:01:41textBox.AppendText(textBoxLog.Text + "\n");
で解決とか言う問題ではないのよね?
0381デフォルトの名無しさん
2008/02/25(月) 00:03:56ではないね。
0382デフォルトの名無しさん
2008/02/25(月) 00:06:43なれるまで使い続けろ
0383デフォルトの名無しさん
2008/02/25(月) 00:09:02/...... .. .../
||::: ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄\ ( ゚Д゚)< こういう箱。
| |: ̄U U ̄:|\_______
| |: int :|
 ̄ ̄ ̄ ̄ ̄ ̄
0384デフォルトの名無しさん
2008/02/25(月) 00:10:070385デフォルトの名無しさん
2008/02/25(月) 00:17:590386デフォルトの名無しさん
2008/02/25(月) 00:35:41ふらっと池
諸先輩方の仰る通り、とりあえず変数は一通りその存在に慣れて、その後に
詳細を理解した方が良い。
0387デフォルトの名無しさん
2008/02/25(月) 00:37:02それはむしろ object @int = new Giko("こういう箱。"); じゃw
0388デフォルトの名無しさん
2008/02/25(月) 00:39:10メモリにも、処理可能な量にも限界がある(有限)ため、資源を区切って使う必要がある。
どんな箱かと言われたら、一般的な段ボール箱かな?
0389デフォルトの名無しさん
2008/02/25(月) 03:15:45半導体が帯電しているかしていないかで0,1をあらわす
それを32個組み合わせたものがintで、
intは2の32乗の状態をもつことが出来る。
一つ一つの状態は整数の値に対応し、四則演算などを行うことが出来る
つまり整数を入れるのがint
0390デフォルトの名無しさん
2008/02/25(月) 04:00:040391デフォルトの名無しさん
2008/02/25(月) 09:33:29英語の文法を意識して話してるうちは英語が話せないのといっしょ。
でも、たとえも良くないな。
数学の変数と同じと思う方がいい。
0392デフォルトの名無しさん
2008/02/25(月) 09:40:04数学の x や y と同じで、ただ代入できる数値に制限があるってだけで
中学生以上なら誰でも理解できると思うんだけど…
0393デフォルトの名無しさん
2008/02/25(月) 09:43:35もう慣れちまって違和感無いけど
0394デフォルトの名無しさん
2008/02/25(月) 10:03:330395デフォルトの名無しさん
2008/02/25(月) 11:11:480397デフォルトの名無しさん
2008/02/25(月) 12:14:14箱モデルの必要性があった。
現代的な言語、たとえばJavaなら、プリミティブ値かオブジェクトに付ける名前、
あるいは名札、という概念で把握できるから箱モデルいらね。
0398デフォルトの名無しさん
2008/02/25(月) 12:15:07s/Java/C♯/
0399デフォルトの名無しさん
2008/02/25(月) 12:25:00カセットテープのケースにはカセットテープが入る
MDのケースにはMDが入る
形が似てるものは互換性があったり(あるように見えたり)する
何でも入れられるケースもあるけどな
0400デフォルトの名無しさん
2008/02/25(月) 12:36:02箱で考えるとその辺で悩む奴がいる
0401デフォルトの名無しさん
2008/02/25(月) 12:49:270402デフォルトの名無しさん
2008/02/25(月) 13:11:27記憶構造とか意味が無いよ
むしろ「自然数」という型を数学的に定義しているペアノの公理とかの方に引っ張っていくべき
0403デフォルトの名無しさん
2008/02/25(月) 14:02:11自分の指示がコンピュータのどの資源をどのように確保したかを理解せずまともなプログラムが出来るなんて
現実感の足りない偉い学者の夢想物語で未来永劫そんな理想環境が訪れることは無いんじゃないかな
ペアノとやらでメモリの話を避けてintの定義と機能を説明できる?
0404デフォルトの名無しさん
2008/02/25(月) 14:32:420405デフォルトの名無しさん
2008/02/25(月) 15:00:550406デフォルトの名無しさん
2008/02/25(月) 15:10:240407デフォルトの名無しさん
2008/02/25(月) 15:10:56できる
0408デフォルトの名無しさん
2008/02/25(月) 15:29:060409デフォルトの名無しさん
2008/02/25(月) 15:32:44メモリ云々よりも性質から攻めていった方が楽だろ?
型っていうのは性質によって定義されるものなんだろjk
0410デフォルトの名無しさん
2008/02/25(月) 15:37:14全部intで処理して挙動不審
floatで期待した結果を得られず
ホビープログラムで経験して理解した者が這い上がってくるって事で良いんじゃないだろうか
別の山道ももちろん在るけど
0411デフォルトの名無しさん
2008/02/25(月) 15:46:340412デフォルトの名無しさん
2008/02/25(月) 17:34:410413デフォルトの名無しさん
2008/02/25(月) 18:58:110414デフォルトの名無しさん
2008/02/25(月) 19:12:15ListViewを使うのは諦めた方がいい。
DataGridViewとか使ったら?
WPFなら融通利くかな・・・。
0415デフォルトの名無しさん
2008/02/25(月) 20:49:30System.Variant
0416デフォルトの名無しさん
2008/02/25(月) 20:52:35貼り付けるだけなら
control.Parent = listview;
サイズはListViewItem.BoundsとかListViewItem.ListViewSubItem.Boundsとかで拾う
制御するにはイベントだけじゃ無理でWndProcをオーバーライドして適宜メッセージ処理する必要あり
0417デフォルトの名無しさん
2008/02/25(月) 23:52:39それぞれのStringデータに1バイトずつbyte型のデータを
付加して、String配列を一つのStringデータにする。
やり方をどなたか分かる方おりませんか?
StringBuilderでStringをアペンドすることは出来るのですが、
byte型のデータをアペンドするときに0x12が0x3132になってしまいます。。
0418デフォルトの名無しさん
2008/02/26(火) 00:00:24System.Text.ASCIEncoding.GetString( new byte[] { b } )
でも使って変換すれば。
0419417
2008/02/26(火) 00:07:35ありがとうございます!!!
大変助かりましたし、勉強になりました。
本当にありがとうございます。
0420デフォルトの名無しさん
2008/02/26(火) 00:13:01文字列はUnicodeとして合法な並びにしかならないから。
それが嫌なら、全部バイト配列でやるこったね。
0421417
2008/02/26(火) 00:30:42byte配列で処理することも考えていました。
データ長が可変なこともあってArrayListで
処理していたのですが、
ArrayList = new ArrayList();
arylst.add( b ); //byte型で0x12を格納したデータ
arylst.add(bytes); //文字列をbyte配列に変換したもので0x35363738(5,6,7,8)を格納したデータ
byte[] = (byte[])arylst.ToArray(typeof(byte));
と処理すると、ToArrayの箇所で必ず、『キャストできませんでした』という
例外になってしまっていました。
もしよろしければ、上記のbyte配列で処理する手順で
例外にならないようにbyte配列を生成する方法を
併せてご教授いただけませんでしょうか?
0422デフォルトの名無しさん
2008/02/26(火) 00:41:18List<byte> bytelist = new List<byte>();
bytelist.Add( b );
bytelist.AddRange( System.Text.UTF8.GetBytes( "abcdefgh...") );
みたいにして、最後にbytelist.ToArray();とでもすればいいんじゃないの。
0423デフォルトの名無しさん
2008/02/26(火) 00:54:230424デフォルトの名無しさん
2008/02/26(火) 01:12:570425デフォルトの名無しさん
2008/02/26(火) 01:29:57arylstの中身は { b, bytes }
bytesがbyte[]型ならbyte型にキャスト出来ないのは自明
配列をばらして追加したいならAddRange()
>>423>>424
ASCIIの範囲なら問題ないんじゃないか?
0x30を"30"ではなくて'\x30'に変換したいだけだと思ってたんだが違うのか
0426デフォルトの名無しさん
2008/02/26(火) 01:37:32>>417につられて間違えた
0427デフォルトの名無しさん
2008/02/26(火) 02:15:432057文字だとエラーになります.
なぜだか原因,仕様等知っている人いたら教えてください.
0428デフォルトの名無しさん
2008/02/26(火) 07:21:240429デフォルトの名無しさん
2008/02/26(火) 09:06:18どこかから発売されているのでしょうか?2Dでも3Dでも
かまいません。.NET で使えるものを探しています。
0430391
2008/02/26(火) 10:02:48同意。
Marshalとか使い出さない限りは問題ない。
数学Iができてればプログラムは問題ない。
II以降の偏差値50切ってる俺ですらできてるからな。
0431デフォルトの名無しさん
2008/02/26(火) 10:06:14そもそも優秀な管理者は部下にぎりぎり問題の無い仕事を与える。
0432デフォルトの名無しさん
2008/02/26(火) 11:16:40// IE オブジェクトを作る
Type typ = Type.GetTypeFromProgID("InternetExplorer.application");
object ie = Activator.CreateInstance(typ);
これで新しいIeのインスタンスが出来るんですが、
既に起動しているIeのハンドルからobject ie を設定する方法ってのは
ないものでしょうか。よろしくお願いします。
0433デフォルトの名無しさん
2008/02/26(火) 11:46:090434417
2008/02/26(火) 12:40:48大変助かりました。
ありがとうございました。
0435デフォルトの名無しさん
2008/02/26(火) 13:35:30ひとつのbyte配列にはできないのでしょうか?
0436デフォルトの名無しさん
2008/02/26(火) 13:44:340437デフォルトの名無しさん
2008/02/26(火) 14:33:53開発環境はVS2005です。
0438デフォルトの名無しさん
2008/02/26(火) 14:36:071.1 に縛られてるなら仕方ないが、そうだと>>436 使えんし
0439432
2008/02/26(火) 16:36:13Shellですか。(^^;
Shell = CreateObject("Shell.Application");
foreach (object Obj in Shell)
こうやってもobject型がGetEnumeratorを含んでいない為
列挙が出来ません。
何か良い方法があるのでしょうか。
0440デフォルトの名無しさん
2008/02/26(火) 19:59:060441デフォルトの名無しさん
2008/02/26(火) 21:43:39配列に縛られてる奴等はいっぱいいる。
0442デフォルトの名無しさん
2008/02/26(火) 22:07:29プロセスにアタッチはできるのだがブレークポイントが有効にならない。
なんで?
VisualStudio2005 C#
0443デフォルトの名無しさん
2008/02/27(水) 01:27:200444デフォルトの名無しさん
2008/02/27(水) 06:19:01実行した手順を書かないとエスパーでないと答えられん
0445デフォルトの名無しさん
2008/02/27(水) 17:46:000446デフォルトの名無しさん
2008/02/27(水) 19:04:020448デフォルトの名無しさん
2008/02/27(水) 19:46:090449デフォルトの名無しさん
2008/02/27(水) 19:48:490450デフォルトの名無しさん
2008/02/27(水) 22:14:530451デフォルトの名無しさん
2008/02/28(木) 11:54:130452デフォルトの名無しさん
2008/02/28(木) 20:42:52問題:以下の説明に該当するイベントを答えなさい
�@ボタンをクリックしたときに発生する
�Aラジオボタンの選択された時発生する
�Bテキストボタンの値が変わった時発生する
�Cフォームが閉じる時発生する
�Dタイマーが有効になった時に一定時間間隔で発生する
0453デフォルトの名無しさん
2008/02/28(木) 21:01:02プロパティのイベント見れ
親切に説明書いてあるから
0454デフォルトの名無しさん
2008/02/28(木) 21:06:110455デフォルトの名無しさん
2008/02/28(木) 21:11:42糞問題集だな
0456デフォルトの名無しさん
2008/02/28(木) 21:13:220457デフォルトの名無しさん
2008/02/28(木) 21:29:570458デフォルトの名無しさん
2008/02/28(木) 21:57:23今すぐゴミ箱に捨ててプログラミング.NET Frameworkを買うんだ。
0459デフォルトの名無しさん
2008/02/28(木) 22:21:41驚愕した。アンマネージDLLの関数をコールする際の話なのだが、
文字列を渡すためにcharポインタを渡すところでいきなりC#からstringを渡している!?
それでちゃんと動いている・・
また、普通に配列を渡したりもしている・・配列の「参照」ってポインタなの?
stackallocとか使ってポインタを使わないとダメだと信じてたのに・・
0460デフォルトの名無しさん
2008/02/28(木) 22:23:49つかこの辺参照しないでよくP/Invokeやってたな
0461デフォルトの名無しさん
2008/02/28(木) 23:15:10まさかそんな問題集が存在するとは思えない
0462980の続き
2008/02/28(木) 23:58:320463デフォルトの名無しさん
2008/02/29(金) 00:01:09先生説教して来い
0464デフォルトの名無しさん
2008/02/29(金) 00:11:530465デフォルトの名無しさん
2008/02/29(金) 00:29:420466デフォルトの名無しさん
2008/02/29(金) 03:08:17方法ありますか?列をちまちま追加するより簡単に
0467デフォルトの名無しさん
2008/02/29(金) 03:43:50普通に、空のDataSetをVS上で作って、
(newするのじゃないよ)
Adapterでつなげばいいんじゃね?
0468デフォルトの名無しさん
2008/02/29(金) 05:42:160470デフォルトの名無しさん
2008/02/29(金) 19:12:01接続対象のパスに空白が含まれている場合はどのように入力したらいいでしょうか?
0471デフォルトの名無しさん
2008/02/29(金) 19:16:270472デフォルトの名無しさん
2008/03/01(土) 00:48:110473デフォルトの名無しさん
2008/03/01(土) 01:00:010474デフォルトの名無しさん
2008/03/01(土) 01:30:140475デフォルトの名無しさん
2008/03/01(土) 04:08:310476デフォルトの名無しさん
2008/03/01(土) 13:23:030477デフォルトの名無しさん
2008/03/01(土) 19:53:06中心点、半径を引数に与えれば円を書いてくれるような関数にすればよかったのに。
0478デフォルトの名無しさん
2008/03/01(土) 19:55:39ラップすればいいんじゃね
0479デフォルトの名無しさん
2008/03/01(土) 20:16:51表示したい範囲がはっきりするので
この仕様の方が便利な事もまああるし、
幅が偶数ピクセルだと 「中心」 が上手く定まらないので、
最も汎用的な関数としてはこうせざるを得なかったんだろう。
ラッパ関数くらい用意して欲しかった所ではあるけど。
0480デフォルトの名無しさん
2008/03/01(土) 20:22:160481デフォルトの名無しさん
2008/03/01(土) 20:23:480482デフォルトの名無しさん
2008/03/01(土) 20:26:570483デフォルトの名無しさん
2008/03/01(土) 21:23:41> 楕円でも短径と長径を・・・
定義通りにするなら、焦点2つと距離の和(=長径)
でも、GDI使うような場面では使い難いと思うが
0484デフォルトの名無しさん
2008/03/01(土) 23:42:410485デフォルトの名無しさん
2008/03/02(日) 00:02:07どう考えてもそんなの使いにくいだろう
0486デフォルトの名無しさん
2008/03/02(日) 00:02:49static int deg = 90;
const double rad = 0.0174532925;
const int r = 200;
private void button1_Click(object sender, EventArgs e)
{
int r = 200;
int x, y;
Graphics g = pictureBox1.CreateGraphics();
g.FillEllipse(fillbrush, 250, 20, 400, 400);
x = (int)(r * Math.Cos(deg * rad) + 450);
y = (int)(-r * Math.Sin(deg * rad) + 220);
g.DrawLine(mypen, 450, 220, x, y);
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
Graphics g = pictureBox1.CreateGraphics();
deg = deg - 12;
if (deg >= -270){
int x1 = (int)(r * Math.Cos(deg * rad) + 450);
int y1 = (int)(-r * Math.Sin(deg * rad) + 220);
g.DrawLine(mypen, 450, 220, x1, y1);
}
if (deg == -270)
timer1.Enabled = false;
}
のような感じで30秒で一周するタイマーを作ったのですが、
コレを線でなく扇型でぬりつぶしていく良い方法は無いでしょうか?
0487デフォルトの名無しさん
2008/03/02(日) 00:08:130488デフォルトの名無しさん
2008/03/02(日) 00:14:00しかし酷いコードだな。
「プログラム診断室」に出てくる悪いコードの見本みたいだ
0489デフォルトの名無しさん
2008/03/02(日) 00:28:47ハァ?
じゃぁ、良いコードの見本書いてみろよ。
0490デフォルトの名無しさん
2008/03/02(日) 00:39:09>const double rad = 0.0174532925;
↓
const double rad = PI/180;
くらいはしてほしい。。
0491デフォルトの名無しさん
2008/03/02(日) 00:41:16あと、12じゃなくて、360/30って書いてよ。
0492デフォルトの名無しさん
2008/03/02(日) 00:43:14と
private void timer1_Tick(object sender, EventArgs e)
に共通部分が多いことに違和感を感じないのだろうか。
0493デフォルトの名無しさん
2008/03/02(日) 00:43:43すいません。
プログラミング初心者なんです。
>>489
ちょ、あなた誰ですか。
やめてください。
>>490
わかりました。Math.PIですね。
>>491
わかりました。
0494デフォルトの名無しさん
2008/03/02(日) 00:45:36すいません。
オブジェクト指向というか、スコープを良く分かってないんです。
0495デフォルトの名無しさん
2008/03/02(日) 00:49:16も危険な感じがする。12度間隔じゃなかったら270丁度にならないよ。
if (deg <= -270)
にした方が良いかと。
0496デフォルトの名無しさん
2008/03/02(日) 00:50:170497デフォルトの名無しさん
2008/03/02(日) 00:50:43天才wwwww
0498デフォルトの名無しさん
2008/03/02(日) 00:52:240499デフォルトの名無しさん
2008/03/02(日) 03:09:070500デフォルトの名無しさん
2008/03/02(日) 07:22:27クリックしてもフラッシュにクリックが伝わらなかったけれども
いつの間にか正常にクリックできるようになってるじゃん
0501デフォルトの名無しさん
2008/03/02(日) 07:32:16y = (int)(-r * Math.Sin(deg * rad) + 220);
はPositionFromDegreeとかにまとめとけ
0502デフォルトの名無しさん
2008/03/02(日) 12:40:370503デフォルトの名無しさん
2008/03/02(日) 15:10:470504デフォルトの名無しさん
2008/03/02(日) 16:59:45Jane Doeをイメージしていただけるとありがたいです…
こういった場合の一般的なアプローチの方法を教えていただきたいです。
今のところ、バージョンを管理するテキストファイルをウェブ上にアップしておきそれをDL、読み込みすることで判定する、といった方法を考えているのですが
いまいち遠回りでスマートでないような気がします。
また、確認のついでに使用しているバージョンなどのログが取れたらと思うのですが
こういったものは普通CGI等を利用して実装するのでしょうか?
0505デフォルトの名無しさん
2008/03/02(日) 17:19:30前者は、逆にそれ以外の方法があるのかと思う。
サーバー側から配信するってことだと思うけど、宛先がわからない。
初回に登録させるのは多分いやがるだろうし、登録したって変わる可能性が高すぎる。
おまけに配信作業がプログラムを書くにしても手作業でやるにしてもめんどくさすぎる。
最新情報を書いておくのはテキストでいいのか、XMLがいいのかって問題はあると思うけど
そのURLをずっと固定で維持する必要があるのが唯一の難点なだけで、
それしかないと思うけど。
後者はUserAgentに書いておけば、アクセス解析させるだけで出来そうな気もする。
ってこれも一応CGIか。
0506デフォルトの名無しさん
2008/03/02(日) 17:41:14clickonce
0507デフォルトの名無しさん
2008/03/02(日) 17:48:55なるほど!UserAgentは思いつかなかったです。ありがとうございます。
CGIとかさっぱりだったので困り果ててたのですがさすがにアクセス解析ならなんとかなると思います。
自動更新は苦肉の策のつもりだったのですが
やはり他の方法は考えにくいですよね…。
サーバーダウン等で接続できない時はその旨を出すようにしてましたが
そもそも、サイトが移転した状況を考えていませんでした。
人為的な問題なのでヘルプにサイトを記述したり、移転前に告知することで対策することにします
ところで、テキストで書く以外考慮していなかったのですが
バージョン管理をXMLで記述するメリットというのはどういったものなのでしょうか?
0508デフォルトの名無しさん
2008/03/02(日) 18:02:49ああ、ClickOnce忘れてました…!
これは限りなく正解に近いです。ありがとうございます。
ただ、まだあまり使われてるところを見かけないのが少し心配ですが
とりあえず>>504の方法と両方試してユーザーと相談してみることにします。
みなさま本当にありがとうございました。
0509デフォルトの名無しさん
2008/03/02(日) 22:07:52IEの仕様変更。
特許の期限切れで以前の動作に戻ったんだよ。
0510デフォルトの名無しさん
2008/03/02(日) 22:22:04そのパッチってまだ出てないでしょ
サイトによっては
クリックするとこのコントロールをアクティブにして使用します
ってのが出るし
0511デフォルトの名無しさん
2008/03/02(日) 22:28:210512デフォルトの名無しさん
2008/03/02(日) 22:38:20>>500の件はスクリプトを使っていようがいまいが
WebBrowser 内の Flash はまともに動いていなかった
0513デフォルトの名無しさん
2008/03/03(月) 03:29:05ビットマップを設定しています。
クリック時やマウスオーバー時の
画像を変更したいのですが、よい方法はありますでしょうか?
現状ではMouseEnter、MouseLeaveイベントを処理して
Imageをその都度入れ替えています
0514デフォルトの名無しさん
2008/03/03(月) 03:43:54EnterとLeaveで2枚しか使わないなら、2枚を一々変えずにメモリ確保とかその程度じゃない?
0515デフォルトの名無しさん
2008/03/03(月) 05:39:390516デフォルトの名無しさん
2008/03/03(月) 08:52:040517デフォルトの名無しさん
2008/03/03(月) 23:21:01もしくは16色bmp
0518デフォルトの名無しさん
2008/03/03(月) 23:38:27処理を軽くしたいとかか?
0519デフォルトの名無しさん
2008/03/04(火) 00:22:060520デフォルトの名無しさん
2008/03/04(火) 00:22:360521デフォルトの名無しさん
2008/03/04(火) 00:59:290522デフォルトの名無しさん
2008/03/04(火) 04:03:30コード (抜粋):
static void Main(string[] args) {
var source =
@"using System;
public class Test {
public static void Main() {
Console.WriteLine(Console.ReadLine());
}
}";
var result = CodeDomProvider.CreateProvider("cs").CompileAssemblyFromSource(
new CompilerParameters() {
GenerateExecutable = true,
GenerateInMemory = true,
}, source);
var domain = AppDomain.CreateDomain("test");
domain.Load(result.CompiledAssembly.GetName());
}
例外:
ファイルまたはアセンブリ 'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'、
またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はアセンブリ
参照に一致しません。 (HRESULT からの例外: 0x80131040)
GenerateInMemory を false にして OutputAssembly を与えてやるとうまく動作するようなの
ですが、メモリ内で生成した上で動作させるためにはどうすればよいのでしょうか。
どなたかご教示いただけませんでしょうか。よろしくお願いいたします。
0523デフォルトの名無しさん
2008/03/04(火) 06:12:47もしくはPictureBoxに書いた画像を回転させる方法は無いでしょうか?
Graphics g = pictureBox1.CreateGraphics();
g.DrawPie(mypen, 20, 20, 400, 400, 0, 18);
pictureBox1.Image.RotateFlip(RotateFlipType.RotateNoneFlipY);
としたのですが、出来ませんでした。
0524デフォルトの名無しさん
2008/03/04(火) 06:57:560525デフォルトの名無しさん
2008/03/04(火) 07:46:400526デフォルトの名無しさん
2008/03/04(火) 08:33:19最初から新しいドメイン内でコンパイル
0527デフォルトの名無しさん
2008/03/04(火) 08:35:010528デフォルトの名無しさん
2008/03/04(火) 11:29:46DrawPieの前にg.RotateTransform
0529デフォルトの名無しさん
2008/03/04(火) 11:33:26pictureBox1.CreateGraphics()で取得したGraphicsに描画しても
pictureBox1.Imageの方はなんら変わらないから、どちらか一方に統一しろ
Image使うならpictureBox1.ImageからGraphics作ってそっちに描画
俺はよくバッファ代わりに使ってる
0530デフォルトの名無しさん
2008/03/04(火) 11:41:500531デフォルトの名無しさん
2008/03/04(火) 11:45:310532デフォルトの名無しさん
2008/03/04(火) 13:36:26private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("Key", typeof(int));
dt.Columns.Add("Value", typeof(string));
DataRow r = dt.NewRow();
dt.Rows.Add(new object[] { 1, "h" });
dt.Rows.Add(new object[] { 2, "o" });
dt.Rows.Add(new object[] { 3, "g" });
dt.Rows.Add(new object[] { 4, "e" });
//画面に張り付いてるオブジェクト
comboBox1.DataSource = dt;
comboBox1.ValueMember = "Key";
comboBox1.DisplayMember = "Value";
MessageBox.Show(comboBox1.Items.Count.ToString());
//メソッド内で宣言したオブジェクト
ComboBox zzz = new ComboBox();
zzz.DataSource = dt;
zzz.ValueMember = "Key";
zzz.DisplayMember = "Value";
MessageBox.Show(zzz.Items.Count.ToString());
}
0533デフォルトの名無しさん
2008/03/04(火) 14:01:320534デフォルトの名無しさん
2008/03/04(火) 15:29:37でハンドル作って?みたけどやっぱりCountは0のままっぽい
やり方が間違ってるのかな・・・orz
0535デフォルトの名無しさん
2008/03/04(火) 15:54:16というか一旦ウィンドウが表示されてからメッセージボックスで出力すればいいんでないか?
0536デフォルトの名無しさん
2008/03/04(火) 20:22:03RefreshItems();でもしてみれば?
0537デフォルトの名無しさん
2008/03/04(火) 22:38:25そのまま長いパスをFileStreamとかに渡しても駄目です。
.NETだけだと長いパスは扱えなかったりします?
0538デフォルトの名無しさん
2008/03/04(火) 22:45:54んなことないと思うけど。
0539デフォルトの名無しさん
2008/03/04(火) 22:58:07まあ結論として.NETじゃ扱えない、だったはず。
やりたいならCreateFileでハンドル取ってきて、かね。
0540デフォルトの名無しさん
2008/03/04(火) 23:42:22検索してもうまい解決方法がみつからない、誰か教えてくれ
やりたいのは、csvを読んでdatagridに表示すること。
ttp://www.ailight.jp/Grid_CSV.aspx
ここで紹介されているコードを参考にして、csvファイルをdatagridに読み込ませたのだが、
列幅が設定できない。
各所で紹介・解説されている列幅設定だと、tablestyleを設定して云々とあるが、俺にはそこらへんの処理の仕組みがさっぱりわからない。
上に引用したコードを元に、うまいこと列幅を任意の長さに設定する方法ないかな?
0541デフォルトの名無しさん
2008/03/04(火) 23:45:250542デフォルトの名無しさん
2008/03/04(火) 23:49:30既に昨日ぐぐった。でもわからん。
各所で解説されている列幅設定のコードを参考にしてdatagridに一回読ませるのはできるが、
その後に別のcsvをdatagridに読ませようとすると、
追加情報 : このデータ グリッドのテーブル スタイル コレクションには 既に同じマップ名のテーブル スタイルが含まれています。
ってエラーでストップする。
0543デフォルトの名無しさん
2008/03/05(水) 00:00:40以前のDataGridTableStyleをDataGrid.TableStylesからRemoveするなり
追加済みDataGridTableStyleを直接いじるなり
テーブル名変えるなり
0544デフォルトの名無しさん
2008/03/05(水) 00:03:04http://dobon.net/vb/dotnet/datagrid/columnwidth.html
0545デフォルトの名無しさん
2008/03/05(水) 00:06:01removeか、そんなのがあるのか、しらんかった。試してみる。
>>544
そこは一番最初に見た、理解できんかった。
とりあえずボタンを押すとそこに書いてあるコードを実行するform作ってビルドしたら、
一回目のボタンは正常に動くけど、2回目で追加情報〜含まれていますで止まるんだよね。
removeか・・・なんか行けそうな予感がしてきた。
明日やってみる。
0546デフォルトの名無しさん
2008/03/05(水) 00:16:30やっぱそうですか。無理そうな気はしてました。
なぜかIISから上がるASP.NETのプロセスが\\?\が付いたパスで実行されてることがあるので気になったので。
\\?\から始まるパスでexeを叩いてアプリを起動するとApplication.StartupPathなんかが例外しか返らなくなる。
そうなると他にも危ないプロパティやメソッドが出てきてそれなら正しく扱う手段が知りたくて。本当に深いパスを扱うことはあんまり無いです。
パスっぽい文字列が出てきたら\\?\で始まってたら削る不毛な処理をひたすら入れておきます。
Application.StartupPathみたいに即座に例外が返るものはちょっとどうしようもないので、
.NETのクラスライブラリ内のメソッドとかで危ないものは
自分用にObsolete付けて迂闊に使ったら警告を出せるようにする手段はないかなぁとか思う。
0547デフォルトの名無しさん
2008/03/05(水) 10:47:580548デフォルトの名無しさん
2008/03/05(水) 11:37:30ちなみに当方 FxCop 1.36 Beta 2。
0549デフォルトの名無しさん
2008/03/05(水) 17:43:27すると「this」で、「メソッド名が必要です」と怒られます。
C# でコンストラタの連鎖を問題なく行うにはどうしたらよいでしょうか?
class Loan
{
public Loan(float notional, float outstanding, int rating, DateTime expiry)
{
this(new TeamROC(), notional, outstanding, rating, expiry, null);
}
public Loan(float notional, float outstanding, int rating, DateTime expiry, DateTime maturity)
{
this(new RevolvingTeamROC(), notional, outstanding, rating, expiry, maturity);
}
public Loan
(CapitalStrategy strategy, float notional, float outstanding, int rating, DateTime expiry, DateTime maturity)
{
m_strategy = strategy;
m_notional = notional;
m_outstanding = outstanding;
m_rating = rating;
m_expiry = expiry;
m_maturity = maturity;
}
}
0550デフォルトの名無しさん
2008/03/05(水) 17:51:39: this(new TeamROC(), notional, outstanding, rating, expiry, null)
{
}
0551デフォルトの名無しさん
2008/03/05(水) 17:54:47C# 言語の仕様
10.10 インスタンス コンストラクタ
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/csspec/html/vclrfcsharpspec_10_10.asp
0552デフォルトの名無しさん
2008/03/05(水) 22:54:310553デフォルトの名無しさん
2008/03/06(木) 20:16:500554デフォルトの名無しさん
2008/03/07(金) 14:53:00{
...
}
A[] a = new A[10];
としたとき、a[3]のようにアクセスするときって、C++のメモリのようにa+sizeof(A)*3というようにCPUで乗算処理が発生しているんでしょうか?
だとしたら速度が必要なな部分では配列アクセスにするよりクラス参照のリストのようなかたちにしたほうがいいのでしょうか?
0555デフォルトの名無しさん
2008/03/07(金) 15:10:333次元が固定、2時限目が動的、1次元が固定の配列を
作るにはどうしたらいいのでしょうか?
float[][,] farray=new [14][,4];
とやってもうまくいきません。
掲示板では見にくいのですが、
4の前には「 ,」カンマが入っています。
0556デフォルトの名無しさん
2008/03/07(金) 15:13:53プログラミングガイドの配列のところにはこう書いてある。
>配列型は、抽象基本型 Array から派生した参照型です。
>この型は IEnumerable と IEnumerable<(Of <(T>)>) を実装するので、C# のすべての配列で foreach 反復処理を使用できます。
だから気にしていることに限ってはどっちにしても変わらない。
と予想してみる。
0557デフォルトの名無しさん
2008/03/07(金) 15:20:190558デフォルトの名無しさん
2008/03/07(金) 15:20:49それをやり尽くした上で554のようなことまで気になるというのなら、
C#ではなく、アセンブリ言語とC++でどうにかすることを考えるべき段階。
故に
>>554
そんなこと気にするな。
0559デフォルトの名無しさん
2008/03/07(金) 15:21:11こういう文もあった。
>C# の配列はオブジェクトそのものであり、C や C++ の場合のように、単なるアドレス指定可能な連続メモリ領域ではありません。
>>555
次元に関係なく、要素を動的に変える配列は作れないよ。
List<>とかと組み合わせたりしないと。
0560デフォルトの名無しさん
2008/03/07(金) 15:22:19○次元に関係なく、要素数を動的に変えられる配列は作れないよ。
0561デフォルトの名無しさん
2008/03/07(金) 15:25:560562デフォルトの名無しさん
2008/03/07(金) 15:45:47動的/静的は配列に対して使い方が難しいので可変長と言うべきだな
0563デフォルトの名無しさん
2008/03/07(金) 16:19:34思ったより難しいのですね。
C++ならそこまで難しくないと思ったのですが。
0564デフォルトの名無しさん
2008/03/07(金) 16:51:240565デフォルトの名無しさん
2008/03/07(金) 16:58:28oned[] twod;
twod[] threed=new float[14];
自分で考えてここまでやってのですがこれで正しく動作するか
わかりませんし処理効率がどうなるかは分かりません。
<vecto>とかboostみたいに上手いことできないでしょうか?
0566デフォルトの名無しさん
2008/03/07(金) 17:04:58おまいは自分で考えてここまで何をやってきたんだ
0567デフォルトの名無しさん
2008/03/07(金) 17:15:16float[][][] threed=new float[14][][];
だけで後は自動に任せることにしました。
ありがとうございました。
0568デフォルトの名無しさん
2008/03/07(金) 18:19:46合っていそうなので、そちらを使ってみることにします。
0569デフォルトの名無しさん
2008/03/07(金) 19:29:550570デフォルトの名無しさん
2008/03/07(金) 20:22:35それは最初から「vector 相当のものはありますか?」と聞くべきだった。
0571デフォルトの名無しさん
2008/03/07(金) 21:16:35すいませんでした<(_ _)>
0572デフォルトの名無しさん
2008/03/08(土) 13:29:240573デフォルトの名無しさん
2008/03/08(土) 14:14:48みんなはなにいれたい?
0574デフォルトの名無しさん
2008/03/08(土) 14:23:43http://yutori.2ch.net/test/read.cgi/news4vip/1204952244/
1 名前:以下、名無しにかわりましてVIPがお送りします。[] 投稿日:2008/03/08(土) 13:57:24.68 ID:oVsMTN3J0
次世代言語”D言語”を使ってプログラミングをしてみよう!
C++で挫折した君も、プログラミング初心者の君も今日からプログラマーだ!
D言語入門 http://www.geocities.jp/tor_park/Dlang/d2.html
0575デフォルトの名無しさん
2008/03/08(土) 14:28:280576デフォルトの名無しさん
2008/03/08(土) 14:46:340577デフォルトの名無しさん
2008/03/08(土) 14:49:07コピペしか能のない低脳は消えろ
0578デフォルトの名無しさん
2008/03/08(土) 14:52:32C#があればいらないのにね
まったく、無駄なことしてるよな
0579デフォルトの名無しさん
2008/03/08(土) 15:03:23早くバージョンが安定してVSに匹敵するIDEが出たら使ってやってもいいが
何年更新してるんだよ?
0580デフォルトの名無しさん
2008/03/08(土) 15:05:06ネイティブコードなんかよりはるかにそっちの方が重要
0581デフォルトの名無しさん
2008/03/08(土) 15:27:34しつこいですがリストを使ってもうまくいかなかったので
こうしてみました。
ArrayList data = new ArrayList(14);
data.Add(new ArrayList());
((ArrayList)data[0]).Add(new ArrayList());
((ArrayList)((ArrayList)data[0])[0]).Add(new float[4]);
((ArrayList)((ArrayList)data[0])[0])[0] = 1;
MessageBox.Show(((ArrayList)((ArrayList)data[0])[0])[0].ToString());
後は変数を使ってネストすればいいだけだと思います。
こうすれば何とかなるようです。
しかし、コードが長いのでなんとか短くしたいです。
typedefもないし、usingを使ってもうまくいきませんでした。
ArrayList以外にいい方法があれば教えてください。、
また、もっとコードを短くする方法があれば聞きたいです。
0582デフォルトの名無しさん
2008/03/08(土) 15:29:150583デフォルトの名無しさん
2008/03/08(土) 15:35:52var farray = new[] {
new List<float[]>{new[]{1f,2f}},
new List<float[]>{new[]{3f},new[]{4f}}
};
0584デフォルトの名無しさん
2008/03/08(土) 15:37:340585デフォルトの名無しさん
2008/03/08(土) 16:05:20くぐってみたのですがvarが使えません。
http://ufcpp.net/study/csharp/ap_ver3.html
ではC#3.0の機能と書いてあるので2005では使えないのかも?
0586デフォルトの名無しさん
2008/03/08(土) 17:35:56for (int i = 0; i < data.Length; i++)
data[i] = new List<float[]>(new float[][] { new float[4] });
C#2.0でもいけるはず
0587デフォルトの名無しさん
2008/03/08(土) 17:41:430588デフォルトの名無しさん
2008/03/08(土) 18:02:55業務アプリならナシ
0589デフォルトの名無しさん
2008/03/08(土) 19:03:35ありがとうございます。
その通りのことがしたかったんです。
>587
確かに2次元だけ動的って見たことないので
こういう設計でいいのか自信がありません。
0590デフォルトの名無しさん
2008/03/08(土) 20:54:242005はだめ。型推論してくれるだけなのでまじめに全部型を書けばいいんだよ。
varってコンパイラが何とかしてコンパイル後は対応した型になってるだけだと思ってる。
2008で.NETFramework2.0をターゲットにしてても普通に使えてるし。
0591デフォルトの名無しさん
2008/03/08(土) 21:10:07C#でメモリ管理にいきなりつまずき困っていたところ
助けていただいてありがとうございます。
またお世話になるかも知れませんのでその時は
またお願いします。
0592デフォルトの名無しさん
2008/03/08(土) 21:33:25計算なら仕方ない所だと思うぞ。
なんかいい形があるなら俺も知りたい。
0593デフォルトの名無しさん
2008/03/08(土) 21:43:10要素数が4のもの以外入れられなくできるしちょっと見通しも良くなるかな
パフォーマンスは劣るだろうけど
0594デフォルトの名無しさん
2008/03/08(土) 22:20:28人に見せるならそう書くかも知れませんね。
個人でパフォーマンスをちょっと追求してみたかったので
実験で試そうと思いした。
0595デフォルトの名無しさん
2008/03/08(土) 22:20:50思いました。
0596デフォルトの名無しさん
2008/03/08(土) 22:32:570597デフォルトの名無しさん
2008/03/09(日) 12:31:04中身のフォルダ構造を取得する方法がわかりません。
どのようにしたらフォルダ構造の表示を実現できるのでしょうか?
ご教示よろしくお願いします。
0598デフォルトの名無しさん
2008/03/09(日) 12:46:410599デフォルトの名無しさん
2008/03/09(日) 13:04:14そう思いした^^
0600デフォルトの名無しさん
2008/03/09(日) 13:21:53やはり解析するしかありませんか・・・。
ありがとうございました。地道に解析することにします。
0601デフォルトの名無しさん
2008/03/09(日) 13:26:21souceforge.netとかで調べれば参考になるのもあるんじゃね?
http://sourceforge.net/projects/iso-creator-cs/
↑これなんかはISOイメージの解析じゃなくて、ファイル、フォルダからISOイメージを
つくるもんだけど、開発プラットフォームc#みたいだから、参考になるかもよ。
商用なら
http://www.componentsource.com/products/starburn-sdk/index.html
こういうコンポーネントもあるみたいだ。
0602デフォルトの名無しさん
2008/03/09(日) 13:30:340603デフォルトの名無しさん
2008/03/09(日) 13:44:26仕様に基づいて読み込むって、それを解析っていうんでねーの?
仕様を独自に解析するとはだれもいっていないと思うが。
0604デフォルトの名無しさん
2008/03/09(日) 13:53:060605デフォルトの名無しさん
2008/03/09(日) 16:57:13言わないだろ普通
0606デフォルトの名無しさん
2008/03/09(日) 17:01:220607デフォルトの名無しさん
2008/03/09(日) 17:20:36CPU使用率が99%になるのは無限ループのせいですか?
一応スリープ入れてるんですが
0608デフォルトの名無しさん
2008/03/09(日) 17:34:420609デフォルトの名無しさん
2008/03/09(日) 18:29:400610デフォルトの名無しさん
2008/03/09(日) 18:31:000611デフォルトの名無しさん
2008/03/09(日) 18:31:070612デフォルトの名無しさん
2008/03/09(日) 18:39:390613デフォルトの名無しさん
2008/03/09(日) 19:03:49タイマを10秒おきとか100秒おきでやってもCPU99%になる?
0614デフォルトの名無しさん
2008/03/09(日) 19:07:590615598
2008/03/09(日) 19:46:53まさかこういう流れになるとは思わなかった
特に深い意味は無かった
>>597にはその方が伝わると思った
不用意に誤用したことを、今は反省している
0616デフォルトの名無しさん
2008/03/09(日) 20:26:430617デフォルトの名無しさん
2008/03/09(日) 20:28:560618デフォルトの名無しさん
2008/03/09(日) 20:35:520619デフォルトの名無しさん
2008/03/09(日) 20:36:52あるアプリケーションのSSを撮ってたんですが
そのアプリに問題があったみたいで
メモ帳なんかのSSで試してみたら普通にほぼ消費なく出来ました
0620デフォルトの名無しさん
2008/03/10(月) 01:20:45いやいやいや
0621デフォルトの名無しさん
2008/03/10(月) 01:59:460622デフォルトの名無しさん
2008/03/10(月) 02:10:500623デフォルトの名無しさん
2008/03/10(月) 14:20:42プロセスにアクセスしたらなんかCPUを無駄に使うプロテクトみたいなのが有るみたいです
0624デフォルトの名無しさん
2008/03/10(月) 15:08:120625デフォルトの名無しさん
2008/03/10(月) 15:09:59猿じゃあるまい
0626デフォルトの名無しさん
2008/03/10(月) 21:54:410627デフォルトの名無しさん
2008/03/11(火) 01:33:400628デフォルトの名無しさん
2008/03/11(火) 11:51:482chに何を求めてるんだか
0629デフォルトの名無しさん
2008/03/11(火) 12:12:580630デフォルトの名無しさん
2008/03/11(火) 14:46:45賛成派が多数で、この恐ろしい法案が、今まで成立していないのが奇跡の状態です。
法案に賛成しているのは、途中に登場する自民党執行部や古賀派、公明党全員、民主党ほぼ全員です。
自民党・民主党で反対を表明していない議員は、執行部のいいなりになると思われます。
反対しているのは、最後に出てくる自民党系「真の人権擁護を考える懇談会」「伝統と創造の会」調べたつもりですが、議員の現在の考えが、賛成か反対か間違っていたら修正する予定です。
自民党への意見メールフォームhttp://meyasu.jimin.or.jp/cgi-bin/jim...首相官邸メールフォームhttp://www.kantei.go.jp/jp/forms/doku...自民党人権問題等調査会の太田誠一会長宛先 FAX03-3508-3832(U R L :http://www.otaseiichi.jp)
0631デフォルトの名無しさん
2008/03/11(火) 14:58:430632デフォルトの名無しさん
2008/03/11(火) 14:59:050633デフォルトの名無しさん
2008/03/11(火) 14:59:470634デフォルトの名無しさん
2008/03/12(水) 01:20:550635デフォルトの名無しさん
2008/03/12(水) 02:59:09みなで盛り上がろうぜって漢字がまたくない
0636デフォルトの名無しさん
2008/03/12(水) 10:27:480637デフォルトの名無しさん
2008/03/12(水) 16:38:52ニコ厨氏ね
使い古されたセリフだが、真実である。
0638デフォルトの名無しさん
2008/03/13(木) 15:59:480639デフォルトの名無しさん
2008/03/14(金) 09:54:08見た目 値
01:a 1
02:b 2
03:c 3
と入っているときに、
値が2の時に、02:bを選択状態にするにはどうすればいいでしょうか?
FindStringで02を指定しても見つからず、combobox.itemsをforeachで
回しても、object型から何にキャストすればよいか分からずでした・・・
0640デフォルトの名無しさん
2008/03/14(金) 09:59:180641デフォルトの名無しさん
2008/03/14(金) 10:02:590642639
2008/03/14(金) 10:08:04ロジック部分のデータ操作はコードで書いてました。
型はToStringを試してみて、DataGridViewが入ってるのは分かったんですが・・・
値が取れません><
0643デフォルトの名無しさん
2008/03/14(金) 10:09:06ヒント
enum testEnum { あああ = 1, ししし = 2, つつつ = 3 }
comboBox1.Items.Add(testEnum.あああ);
comboBox1.Items.Add(testEnum.ししし);
comboBox1.Items.Add(testEnum.つつつ);
任意の値に設定するとき
comboBox1.SelectedItem = (testEnum)2;
0644デフォルトの名無しさん
2008/03/14(金) 10:12:03デバッガでcomboBox1.Items[0].GetType()を見てみれば?
0645デフォルトの名無しさん
2008/03/14(金) 10:13:170646デフォルトの名無しさん
2008/03/14(金) 10:28:39>>643
enum型は一度も使ったことがないので勉強してみます
>>644
GetTypeでは取れませんでしたが、ToStringで取得してみたら
謎ですが>>639の型が入ってました
0647デフォルトの名無しさん
2008/03/14(金) 22:58:300648デフォルトの名無しさん
2008/03/14(金) 23:51:25「ふらっと」
PictureBoxを透過表示することってできますか?
「このすれ」
ExpressionTree、CodeDOM、DLRのASTでできることはどういう風に違うんですか?
0649デフォルトの名無しさん
2008/03/15(土) 17:21:460650デフォルトの名無しさん
2008/03/15(土) 22:02:25C#やってたら、コード読んで流れ掴むくらいならできそうでしょうか?
0651デフォルトの名無しさん
2008/03/15(土) 22:06:100652デフォルトの名無しさん
2008/03/15(土) 22:11:500653デフォルトの名無しさん
2008/03/15(土) 22:17:300654デフォルトの名無しさん
2008/03/15(土) 22:24:480655デフォルトの名無しさん
2008/03/15(土) 22:51:50プロジェクト->Windowsフォームの追加で
「MID親」
を選んで、MainでRunしています。
起動時に子フォームを勝手に起動しますがいったい
どこでやっているのでしょうか?
InitializeComponet()で勝手にShowNewFormを
やっているのだとは思いますがどのあたりなのか
さっぱり分かりません。
新しく追加で子フォームを作成したら自動でずらす処理も
邪魔なのでどこでやっているのか知りたいです。
ご存じの方、どうか教えてください。
新しく普通にフォームから作ったほうが早いというのは無しで。
0656デフォルトの名無しさん
2008/03/15(土) 22:55:48こちらのミスでした。
勝手にずらす処理をやめさせる方法だけ教えてもらえない
でしょうか?
0657デフォルトの名無しさん
2008/03/15(土) 22:57:04わからなければjava上がりとはいえない
0658デフォルトの名無しさん
2008/03/15(土) 23:50:35・自分のプログラムのバグなのかコンパイラのバグなのかわからない
・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している
・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている
糞だけど、政治的な理由で無理やり使わされているんですよね
もういい加減、我慢するのはやめませんか?
・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。
上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。
・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。
バグレポートなどしてはいけません。改善要求などもってのほかです。
あの会社はあなたたちのことをテスター/モルモットとしか思っていません。
・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」
なんて話が出たら力強く机を叩き、会議室を出ましょう。
あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。
糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
0659デフォルトの名無しさん
2008/03/15(土) 23:53:180660デフォルトの名無しさん
2008/03/15(土) 23:54:53死ね
0661デフォルトの名無しさん
2008/03/16(日) 15:12:24処理を分岐させる方法を知ってる人いたら教えて
検証するタイミングはコンパイル時、実行時のどちらでもおk
0662デフォルトの名無しさん
2008/03/16(日) 15:49:010663デフォルトの名無しさん
2008/03/16(日) 15:59:05単にuncheckedなのか判断できなくね
0664デフォルトの名無しさん
2008/03/16(日) 16:03:54get {
try {
Convert.ToByte(0xffff);
return false;
}
catch { return true; }
}
}
馬鹿プロパティw
0665デフォルトの名無しさん
2008/03/16(日) 16:06:320666デフォルトの名無しさん
2008/03/16(日) 16:44:450667661
2008/03/16(日) 17:17:46thx!
やはりオーバーフローさせてみるしかないのか
>>666
ILの生成をコンパイラ任せにするならそれでいいが
動的に生成しようとするとOPコード自体が違うので
0668デフォルトの名無しさん
2008/03/16(日) 17:19:42PerlとかRubyでゆーWWW::MechanizeみたいなスクレイパってC#に存在する?
それとDB使ったツールを作って配布したいんだけど、PerlとかRubyだと一般ユーザに使ってもらえないので…
Rubyで一旦全部書いたんだけどexerbとかrubyscript2exeとか使ってもうまく纏められないのでC#(or その他普通にネイティブコンパイルする言語)で書き直したいんだけど…
0669デフォルトの名無しさん
2008/03/16(日) 17:20:410670661
2008/03/16(日) 18:22:19checked/uncheckedブロック、演算子内に直接書いた式にのみ適用されるみたい
だから、>>664みたいなプロパティを作るとコンパイルされた時点で出力が確定してしまう
結論としては、checked/uncheckedはコンパイラに指示するためだけのもので
プログラムで利用しようなどと考えてはいけないということか
0671デフォルトの名無しさん
2008/03/16(日) 18:36:310672デフォルトの名無しさん
2008/03/16(日) 18:41:50なんとか
#else
ができればいいんだろ
0673デフォルトの名無しさん
2008/03/16(日) 19:22:05checkedのときはプリプロセッサシンボル定義するだけでよくね?
0674デフォルトの名無しさん
2008/03/16(日) 19:30:230675デフォルトの名無しさん
2008/03/16(日) 19:38:38自分で作った処理を行って、それが終了してから
印刷ジョブを投げるプログラム作成したいんですけど
印刷監視とジョブ投げるのにwaitかけるのってどうすればいいんですか?
0676デフォルトの名無しさん
2008/03/16(日) 19:50:03まっとうじゃないかな。
0677デフォルトの名無しさん
2008/03/16(日) 21:07:31数値を出力させるにはどう考えたらいい?
WM6pro用で教えてください。
0678デフォルトの名無しさん
2008/03/16(日) 21:14:32WM6proがどう関係あるんだろう
0679デフォルトの名無しさん
2008/03/16(日) 22:25:05独立して管理することは可能っすか?
0680デフォルトの名無しさん
2008/03/16(日) 22:42:170681デフォルトの名無しさん
2008/03/16(日) 23:53:49俺全然やってないんだが
0682デフォルトの名無しさん
2008/03/17(月) 00:00:000683デフォルトの名無しさん
2008/03/17(月) 00:03:010684デフォルトの名無しさん
2008/03/17(月) 00:04:530685デフォルトの名無しさん
2008/03/17(月) 00:08:58調べたことないけど
0686デフォルトの名無しさん
2008/03/17(月) 00:48:030687デフォルトの名無しさん
2008/03/17(月) 00:51:310688デフォルトの名無しさん
2008/03/17(月) 01:07:510689デフォルトの名無しさん
2008/03/17(月) 01:10:030690デフォルトの名無しさん
2008/03/17(月) 01:11:58その命名元となった英語という気もする。
0691デフォルトの名無しさん
2008/03/17(月) 01:13:570692デフォルトの名無しさん
2008/03/17(月) 01:21:110693デフォルトの名無しさん
2008/03/17(月) 07:03:19System.Reflection.Emit.OpCodes
あたりでもどうぞ。JIS の CLI は有料でしょ確か
0694デフォルトの名無しさん
2008/03/17(月) 09:16:460695デフォルトの名無しさん
2008/03/17(月) 09:55:46ないのはどうよと思ったなあ前
0696デフォルトの名無しさん
2008/03/17(月) 22:34:40英語読めないから、日本語のが必要なんです。
0697デフォルトの名無しさん
2008/03/17(月) 23:26:25SQLServerからsmallint型のレコードを取得してC#でint型の変数に入れたいのですが
キャストで失敗します。smallint型はshortと同じじゃないのでしょうか?
0698デフォルトの名無しさん
2008/03/17(月) 23:32:14失敗って?
0699デフォルトの名無しさん
2008/03/17(月) 23:33:410700デフォルトの名無しさん
2008/03/17(月) 23:42:39型変換できませんでした。的なエラーでした。
もちろん(short)してから(int)でいけますが、アップキャストでなぜ失敗するのか・・・が知りたいと思いました
0701デフォルトの名無しさん
2008/03/17(月) 23:46:30short へのキャスト演算子の定義はあるけど、int へのキャストは定義されてない
とかではなかろうか。
0703デフォルトの名無しさん
2008/03/18(火) 00:03:27印刷処理を作っています。
しかし、印刷を実行するとVB6やDelphiで作成した
印刷処理よりも異常に遅いのが気になりました。
描画を一切行わず、白紙を1ページ印刷した場合
VB6では一瞬で印刷を開始しますが、C#では5秒以上待たされます。
100ページ以上の印刷を行いたいので、この速度では
ちょっと使い物にならないので困っております。
速度改善の情報ありましたら教えていただけませんでしょうか。。
0704デフォルトの名無しさん
2008/03/18(火) 00:19:220705デフォルトの名無しさん
2008/03/18(火) 00:21:390706デフォルトの名無しさん
2008/03/18(火) 00:23:130707デフォルトの名無しさん
2008/03/18(火) 00:38:25軽く調べたけど、解決策は見つからなかった。そもそも再現性が(ry
とりあえずプロファイルして何が遅いか見極めてくれ。
0708703
2008/03/18(火) 00:46:13ありがとうございます。
プロファイルのやり方がわからないのですが
調べてやってみようと思います。
今、調べられる範囲でわかったことは
プリンタの解像度を下げることである程度
体感速度が速くなる、逆に解像度を上げるとさらに遅くなることです。
0709デフォルトの名無しさん
2008/03/19(水) 00:10:00midl\oleaut32.dll : error MIDL2020 : error generating type library : SaveAllChanges Failed : .\mlang.tlb (0x80070005)
と出て終了します。原因わかるかたいらっしゃいますか?
0710デフォルトの名無しさん
2008/03/19(水) 00:19:450711デフォルトの名無しさん
2008/03/19(水) 01:17:43void DetectInputCodepage(
uint dwFlag,
uint dwPrefWinCodePage,
ref sbyte pSrcStr, // ここと
ref int pcSrcSize,
ref tagDetectEncodingInfo lpEncoding, // ここに
ref int pnScores
);
どうやって short[] と tagDetectEncodingInfo[] を突っ込んだらいいのか、だれか教えてください。
0712デフォルトの名無しさん
2008/03/19(水) 01:47:07http://dobon.net/vb/dotnet/string/detectcode.html
0713デフォルトの名無しさん
2008/03/19(水) 01:50:00それそのままコピペしてるんだけどね、
ref sbyts[0]
ここで引っかかる。
0714デフォルトの名無しさん
2008/03/19(水) 01:55:050715デフォルトの名無しさん
2008/03/19(水) 09:14:070716デフォルトの名無しさん
2008/03/24(月) 19:08:030717デフォルトの名無しさん
2008/03/24(月) 19:14:200718デフォルトの名無しさん
2008/03/24(月) 19:14:450719デフォルトの名無しさん
2008/03/24(月) 20:23:08using (DisposableCollection<Bitmap> a = new DisposableCollection<Bitmap>(list))とか
0720デフォルトの名無しさん
2008/03/24(月) 20:53:15try { action(collection); }
finally {
foreach (var item in collection) {
IDisposable disposable = item as IDisposable;
if (disposable != null) { disposable.Dispose(); } } } }
usingの代わりにこんなの使えばいいんじゃね
0721デフォルトの名無しさん
2008/03/24(月) 21:01:240722デフォルトの名無しさん
2008/03/24(月) 21:03:46コンソールアプリで sysem.drawing.bitmap をストリームにシリアライズするときに
GDI+の一般エラー(General error?)が発生する
同様の現象にブチあたった経験者はおらぬか?
0723デフォルトの名無しさん
2008/03/24(月) 21:20:300724デフォルトの名無しさん
2008/03/24(月) 21:31:09きっとこれからも出来ると信じたい
そしてなんとなく原因発見
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream(@"C:\WINDOWS\迴育栖繧ォ繝��.bmp", FileMode.Open);
MemoryStream ms1 = new MemoryStream(), ms2 = new MemoryStream();
Image img = Image.FromStream(fs);
bf.Serialize(ms1, img); // 成功(例外なし)
fs.Close();
bf.Serialize(ms2, img); // 失敗(ExternalError: GDI+ で汎用エラーが発生しました。)
どうもImageの元のリソースが,シリアライズするときに利用できなくなっていると失敗するみたい?
なんか非常にモヤっとするなぁ
引き続き情報求む
0725デフォルトの名無しさん
2008/03/24(月) 21:53:520726デフォルトの名無しさん
2008/03/24(月) 21:55:520727デフォルトの名無しさん
2008/03/24(月) 22:10:380728デフォルトの名無しさん
2008/03/24(月) 22:13:520729デフォルトの名無しさん
2008/03/24(月) 22:14:30where T はTに対して特定の型に依存した操作を可能にするために使うんだよ
0730デフォルトの名無しさん
2008/03/24(月) 22:20:58その制約を継承先のクラスにも付ける
class Base<T> where T : string{}
class Derived<T> : Base<T> where T : string{}
0731デフォルトの名無しさん
2008/03/24(月) 22:42:020732デフォルトの名無しさん
2008/03/24(月) 22:45:08Bitmapはそのままだとアンマネージドリソースを含むのでシリアライズできない
だがStreamから作ったBitmapならそれを使ってシリアライズすることで目的を達成できる
しかしそのStreamが閉じてればもうシリアライズできない
0733デフォルトの名無しさん
2008/03/24(月) 23:27:28var stream = new FileStream("foo.jpg", FileMode.Open);
var image = Image.FromStream(stream);
image.Save("bar1.png");
stream.Close();
image.Save("bar2.png"); // die
0734デフォルトの名無しさん
2008/03/24(月) 23:55:28すごく,わかりました.
>>733
試したためした,そしてその通り
ひとまずbyte[]にシリアル化したものを記憶しておくことにした
0735デフォルトの名無しさん
2008/03/25(火) 18:09:240736デフォルトの名無しさん
2008/03/25(火) 19:21:54自分のクラスにIDisposableを実装する
usingはそのクラスを外から使う人が使うもの
0737デフォルトの名無しさん
2008/03/25(火) 22:29:230738デフォルトの名無しさん
2008/03/25(火) 22:42:140739デフォルトの名無しさん
2008/03/25(火) 23:05:44そうでなければスルー
0740デフォルトの名無しさん
2008/03/25(火) 23:11:34標準の例外ダイアログがましだけどねw
0741デフォルトの名無しさん
2008/03/25(火) 23:25:010742デフォルトの名無しさん
2008/03/26(水) 12:08:44無い
KeyedDictionary<TKey, TValue>が使えそうなら使う
使えないなら自分で作る
0743デフォルトの名無しさん
2008/03/26(水) 12:11:350744デフォルトの名無しさん
2008/03/26(水) 19:25:07直接セルに描画していたんですけど、汎用性を持たせたくて
Panelに描画してそのPanelを表示したいと思ったんですが
ListViewにPanelを挿入する方法が分かりません
SubItems.Addで追加できるのは文字列だけですし
どのようにすればPanelなどのコントロールをListViewに
挿入することができるでしょうか?
0745デフォルトの名無しさん
2008/03/26(水) 19:33:28っていうか、Panelに描画する(そしてそれをListViewに突っ込む)のが
汎用的って発想がよくわからない。
汎用的にしたいのならListViewの項目を描画する機能をクラス化するか、
またはListView自体を継承して拡張するとか、そっちの方向じゃないの?
0746デフォルトの名無しさん
2008/03/26(水) 19:37:34一からListView作ってた。
0747デフォルトの名無しさん
2008/03/26(水) 19:44:33Swingにも劣るヘボさだからなぁ
項目ごとの文字色を変える程度のことさえ面倒
いったいどういう用途を想定してこんなクソ仕様にしたのか
0748デフォルトの名無しさん
2008/03/26(水) 20:15:080749デフォルトの名無しさん
2008/03/26(水) 20:35:180750デフォルトの名無しさん
2008/03/26(水) 20:58:42やっぱり駄目ですか
でもよく見かけるプログレスバーが表示されたListViewは
どうやって実装してるんでしょう
何か出来る方法がありそうな気もしますが
>>746
一から作るのはちょっと厳しいですね・・・
0751デフォルトの名無しさん
2008/03/26(水) 21:41:09ありがとう。
自作するよ。
0752デフォルトの名無しさん
2008/03/27(木) 00:26:31>項目ごとの文字色を変える程度のことさえ面倒
簡単だと思うけど…
どうやってやってるの?
0753デフォルトの名無しさん
2008/03/27(木) 06:57:31ListViewだとしたらOwnerDrawなんじゃない。
超汎用的なリストコントロール作った。
めんどくさかった(´・ω・`)
でもこれで10万行ぐらいあっても、どんな描画だとしても表示できるようになったお。
0754デフォルトの名無しさん
2008/03/27(木) 07:23:43ListViewItem.UseItemStyleForSubItems
ListViewItem.ForeColor
ListViewItem.SubItems[index].ForeColor
UseItemStyleForSubItems
をtrueにすると、
全てのSubItems.ForeColorを設定する必要があったような気がするから
それが面倒といえば面倒だったけど。
0755デフォルトの名無しさん
2008/03/27(木) 07:59:46アンチエイリアスかければきれいになるとですか?
0756デフォルトの名無しさん
2008/03/27(木) 08:10:04WPF使えば良いよ
0757デフォルトの名無しさん
2008/03/27(木) 08:13:080758デフォルトの名無しさん
2008/03/27(木) 08:22:42でもListViewって特定環境で色が消えたりする類のバグが満載だから
そのままでは使い物にならないと思った記憶がある。
0759デフォルトの名無しさん
2008/03/27(木) 14:35:43内部で使うAPIだけひっそり入れ替わるのがクラスライブラリ設計として当然じゃないのか?
何回も作っては捨て繰り返して作った奴は馬鹿なのか?
0760デフォルトの名無しさん
2008/03/27(木) 14:48:59フォントをClearTypeが効くものに変えるとか
実際より大きく描画して縮小するとか
0761デフォルトの名無しさん
2008/03/27(木) 18:58:44日本語書けよ
0762デフォルトの名無しさん
2008/03/27(木) 19:04:100763デフォルトの名無しさん
2008/03/27(木) 19:06:230764デフォルトの名無しさん
2008/03/27(木) 19:50:120765デフォルトの名無しさん
2008/03/27(木) 19:52:31ODBC Direct
OLE DB
DAO
RDO
ADO
ADO+
WindowsDNA
MSDE
ADO.NET 1.0
ADO.NET 1.1
ADO.NET 2.0
LINQ
0766デフォルトの名無しさん
2008/03/27(木) 21:16:28リストビューの子としてプログレスバー作るとか。
0767デフォルトの名無しさん
2008/03/27(木) 23:54:290768デフォルトの名無しさん
2008/03/28(金) 00:32:180769デフォルトの名無しさん
2008/03/28(金) 14:20:32てきざいてきしょ
0770デフォルトの名無しさん
2008/03/29(土) 00:20:51↓のファイルのコメントが前衛的なことになってるんだけど、どうなってる?
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\
ProjectTemplatesCache\CSharp\Reporting\1041\ReportApplication.zip\Form1.Designer.cs
因みに、手元の環境のエディションはPro.
0771デフォルトの名無しさん
2008/03/29(土) 00:29:510772デフォルトの名無しさん
2008/03/29(土) 01:13:300773デフォルトの名無しさん
2008/03/29(土) 01:14:350774デフォルトの名無しさん
2008/03/31(月) 20:28:55エクスプローラでファイルのプロパティで更新日時を見てもやはり2秒ほどずれています。おそらく同じ値を見ていると思います。
ローカルからローカルにコピーした場合は発生しません。
0775デフォルトの名無しさん
2008/03/31(月) 20:30:580776デフォルトの名無しさん
2008/03/31(月) 20:33:340777デフォルトの名無しさん
2008/03/31(月) 20:37:210778774
2008/03/31(月) 20:47:380779デフォルトの名無しさん
2008/04/02(水) 11:29:09OnPaint メソッドの中で線の太さを指定して引いているのですが、AutoScaleMode でサイズが変わった場合
線の太さはどういう風に決めたら良いと思いますか?
今は決め打ちで 2 にしていますが、線の太さも自動でスケーリングしたいのので
自動スケーリングの倍率を取得する AutoScaleSize みたいなプロパティってないですかね。
0780デフォルトの名無しさん
2008/04/02(水) 11:42:13自己レス。解決しました。
AutoScaleMode プロパティが変更されると、ScaleControl メソッドが呼ばれる。
ScaleControl メソッドをオーバーライドすると factor が来るので、これが倍率。
0781デフォルトの名無しさん
2008/04/03(木) 20:10:38MapViewOfFileで得たIntPtrをStreamにアダプトする方法はありませんか?
byte*にキャストしてよいみたいですが、そこからが分かりません。
0782デフォルトの名無しさん
2008/04/03(木) 20:22:470783デフォルトの名無しさん
2008/04/03(木) 21:09:24これは、これ以外にないといえるようなStreamですね。
明日さっそく試したいと思います。ありがとうございました。
0784デフォルトの名無しさん
2008/04/04(金) 10:08:31各テーブルごとにテーブルクラスを作成し、
データの受け渡し受け取りには、テーブルクラス.レコードを定義して使用しています。
各テーブルクラスの違いは、
レコードクラスの違いくらいなので、
(実際には、レコードクラスの違いにより処理内部にも違いは出ているのですが、
ロジックは同じということです。)
同じ処理を書いて、あまりステップ数を膨らませるのは嫌なのですが、
何かよい方法はないでしょうか?
0785デフォルトの名無しさん
2008/04/04(金) 10:25:030786デフォルトの名無しさん
2008/04/04(金) 22:10:30自分の所も正常に見えます
0787デフォルトの名無しさん
2008/04/04(金) 23:30:46日本語でおk
0788デフォルトの名無しさん
2008/04/06(日) 21:30:19namespace foo.bar.Data.Modelに
AccountModelなど
テーブル・ビューの1レコードを表すクラスを定義して
namespace foo.bar.Dataに
AccountAccessorなど
テーブル・ビューごとにSelectやUpdateを行うクラスを定義して
namespace foo.bar.Accountに
Accountなど
ビジネスロジックとしての役割のクラスを定義して
この中からAccountAccessorを使用してModelオブジェクトを
取得したり登録したりしています。
このビジネスロジックが「データベースについて知っていなければならない」という
のが違和感があったりしてます。
みなさんなら中間に別の役割のクラスを作ったりしていますか?
と、ここまでかいてC#の質問じゃないことに気付いた・・・よかったら教えてください。
0789デフォルトの名無しさん
2008/04/08(火) 06:02:24結局ほとんどの場合Modelとテーブルは一対一だからね。
0790デフォルトの名無しさん
2008/04/08(火) 14:25:19C#(3.5)でWindows Mobile向けアプリを作成していて、リフレクションで
自作したクラスのインスタンスを生成しようとしています。
Type.GetType(クラス名)でクラスを取得しようとしたらnullが戻るので、
AppDomain.CurrentDomain.GetAssemblies()で取得したアセンブリから
GetTypeでクラスを取得しようとしたら、.NET Compact Frameworkには
GetAssemblies()がありませんでした。
.NET Compact Frameworkでリフレクションを使って自作クラスをリフレクションで
生成するにはどのようなコードを書いたら良いのでしょうか?
0791デフォルトの名無しさん
2008/04/08(火) 14:36:28Load時にAssemblyオブジェクトが手に入ってるじゃん。
0792790
2008/04/08(火) 17:20:07AppDomain#GetAssemlies()メソッド自体が存在しないんで使えないんですが
(何か勘違いしてたらすみません)、Assemby#Loadで直接アセンブリを
ロードして、そこからGetTypeでクラスを取得するようにしたらうまく行きました。
JavaのClass#forNameみたいにクラスパス全部からクラスを引っ張ってきて
くれる訳じゃないんで難しいですね・・・
0793げげ
2008/04/11(金) 18:11:02VS2005 C# を Virtual PC 2007 上の WindowXP
で動かしています。
float f = 426;
int d = (int)f / 63;
以下のコードを実行すると、d が 0 になるんですが、
皆さんはどうなりますか?
会社のマシンでは4台中3台が0なるという奇妙な状況です
0794デフォルトの名無しさん
2008/04/11(金) 18:41:20426 と間違えて 42.6 になってるとか?
0795デフォルトの名無しさん
2008/04/11(金) 18:44:480796げげ
2008/04/11(金) 20:45:53>>794
426 です。
>>795
再現するコードが上記のコードなんですよ
私自信が信じられないので、お伺いしたのですが、
一応前ソースコードを以下に書きます。
namespace casttest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
float f = 426;
int d = ((int)f) / 63;
d = Convert.ToInt32(f) / 63; << こっちはオッケー
}
}
}
0797デフォルトの名無しさん
2008/04/11(金) 21:18:01using System;
class Hoge{
static void Main(){
float f = 426;
int d = (int)f / 63;
Console.WriteLine(d);
}
}
=> 6
試してみたがちゃんと計算されるぞ
0798デフォルトの名無しさん
2008/04/11(金) 21:19:23「再現するコード」といっている。
お前さんそのコードのdの値をどうやって見ろっての。
ひょっとしてデバッガで巣頓狂なところで止めてそういう寝ぼけたこと言ってるんじゃないの?
0799げげ
2008/04/11(金) 21:32:29>>798
ヒントをありがとうございます。
MessageBox を追加した以下のコードで不思議なことが起こりました
−−−−−
float f = 426;
int d = (int)f / 63;
MessageBox.Show(d.ToString());
−−−−−
MessageBox のところで、Break すると、値が0になり、
メッセージボックスに0と出ます。
一方 Break しないと、6とでました。
デバッグ中の値のチェックの際に発生した事象だったので
ツールチップの値が6なのに、ステップ実行したら0が
格納されて進んでいたので、おかしいなと思って質問
したのでした・・・。
C# でブレークをかけた場合に、このような現象になるのは
仕様なんでしょうかね・・・
0800デフォルトの名無しさん
2008/04/11(金) 22:21:070801デフォルトの名無しさん
2008/04/11(金) 23:14:58たとえばその変数 d をその行以降使ってない(スコープ内に出てこない)とか?
0802デフォルトの名無しさん
2008/04/11(金) 23:31:010803デフォルトの名無しさん
2008/04/11(金) 23:33:110804デフォルトの名無しさん
2008/04/12(土) 00:22:10慣れてくると便利なもんだな。でもキーボードショートカットが
使いにくい。いまだに補完でCtrl-Pとか押しちゃう!
0805デフォルトの名無しさん
2008/04/12(土) 00:45:180806デフォルトの名無しさん
2008/04/12(土) 00:59:11Breakの位置で決まる
0807デフォルトの名無しさん
2008/04/12(土) 01:09:090808デフォルトの名無しさん
2008/04/12(土) 02:55:180809デフォルトの名無しさん
2008/04/13(日) 10:45:44少しでもダメな仕様だと思うなら、修正すべきだよ
ほっておいたまま拡張を続けるとMFCやらATLみたいになってしまうぞ
負の遺産こそが最大の敵だ
0810デフォルトの名無しさん
2008/04/14(月) 03:06:030811デフォルトの名無しさん
2008/04/14(月) 03:12:090812デフォルトの名無しさん
2008/04/14(月) 10:09:130813デフォルトの名無しさん
2008/04/15(火) 11:51:32C#ってC++みたいに
int n
Stream >> n
って感じでintを読み込めないんですか?
わざわざ↓の様に
string line = r.ReadLine()
int n = System.Convert.ToInt32(line);
自分で型変換を書かないといけないのでしょうか?
0814デフォルトの名無しさん
2008/04/15(火) 12:01:560815デフォルトの名無しさん
2008/04/15(火) 12:35:140816デフォルトの名無しさん
2008/04/15(火) 14:55:21いえ、ありがとうございます
BinaryReaderを使ってできました。
0817デフォルトの名無しさん
2008/04/15(火) 23:21:36BinaryReader に加えて補足。
その >> 演算子の使い方は、演算子オーバーロードの乱用・悪用と言われてる。
作った当時は斬新でかっこよく見えたけど、
今となっては read_line の方がよかったと。
なので、C# ではそんなやり方しない。
0818デフォルトの名無しさん
2008/04/16(水) 00:24:46C++でも結局>>なんて使わず、
1行丸ごと文字列として読んで、正規表現とか自前のパーサとかで解析する罠。
だから、C#で>>813のような場合で
ReadLineくらいしか無いのも、俺は別に不便とは思わない。
0819デフォルトの名無しさん
2008/04/16(水) 14:07:00フォームのクライアント領域を、同じフォームのクライアント領域にずらして描画するには
どうやったらよいのでしょうか?
DrawImageなどのメソッドは見つかるのですが、Graphics同士を描画するメソッドなどはないのでしょうかね。
0820デフォルトの名無しさん
2008/04/16(水) 18:04:290821デフォルトの名無しさん
2008/04/16(水) 18:11:21何がしたいのかがいまいち分かりにくい
せめて、ゴールとアプローチくらいは分けてくれ
(単に分けて書くのではなく、分けて考える)
よく分からなければ、代替可能かどうか考えてみるといい
ゴール = 代替不可能
アプローチ = 代替可能
0822デフォルトの名無しさん
2008/04/16(水) 18:52:06言いたいことはだいたい分かるからいいけど。
GDIでやるならPanelを1つかませばいい。
無限ページのスクロールとかはそれでやった。
0823819
2008/04/16(水) 19:14:171からテキストエディタを作っていて、クライアント領域に描画してあるテキストを、
スクロールバーを用いてスクロールする処理を行いたいのですが、
その際に既に描画してある領域をずらいたいんです。
C++なら
hdc = GetDC(hWnd);
BitBlt(hdc, 0, -1, width, height, hdc, 0, 0, SRCCOPY);
ReleaseDC(hdc, hWnd);
こんな感じになると思うのですが、これと同様に、クライアント領域の描画コンテキスト同士で
描画をする方法がわからず、質問した次第です。
0824デフォルトの名無しさん
2008/04/16(水) 19:30:16面倒だけどWin32のBitBlt使うしかないと思う。
でもBitBlt使うとなんか画面の色数が16bitになっていると
ちょっと描画が変になる問題が発生するような記憶があるけど。
0825デフォルトの名無しさん
2008/04/16(水) 20:08:490826デフォルトの名無しさん
2008/04/16(水) 20:26:19蛇足だけど、C++ (Windows API)ではScrollWindowExのほうが普通だと思う。
0827デフォルトの名無しさん
2008/04/16(水) 21:00:180828デフォルトの名無しさん
2008/04/16(水) 21:30:09Panelでホストすれば良いでっしゃろ。
0829デフォルトの名無しさん
2008/04/17(木) 00:22:20そういう事せずに、毎回テキスト書き直すほうがいい
0830823
2008/04/17(木) 05:51:23>GDI+には描画コンテキストのビットマップを取得するメソッドが用意されてないんだよねなぜか。
やっぱりそうなんですか。
Formに実装されているAutoScroll(自動でスクロールバーを出し、スクロールのサポートを行う)も、
>>823 と同様な事を行い、スクロールによって現れる新しい行は無効領域に設定して、
ユーザにOnPaintで処理してもらうような感じだと思ったので、比較的簡単に出来ると思ったんですが、
実際のスクロール処理はBitBltなどを呼び出してるのでしょうね。
>>826
>C#にはそんなものないが結論では?
そんな感じですね。Win32APIでの実装を考えてみます。
ScrollWindowExなんてAPIがあったんですね。
参考にさせてもらいます。
>>827
スクロールバーを表示して、クライアント領域を自前でスクロールさせる話です。
0831823
2008/04/17(木) 06:01:01Panelに描画してもらって、Panel自体を移動するって事ですか?
>>829
全部書き直す方が実装は楽ですけどね・・・。
実際、世に出回ってるテキストエディタが全部書き直してると思えないんですが、
どうなんですかね。
サクラエディタなどのソースを公開しているものを見て検討してみます。
0832デフォルトの名無しさん
2008/04/17(木) 10:38:550833デフォルトの名無しさん
2008/04/17(木) 15:57:200834デフォルトの名無しさん
2008/04/17(木) 16:00:00それはないだろう
0835デフォルトの名無しさん
2008/04/17(木) 16:04:120836デフォルトの名無しさん
2008/04/17(木) 16:06:35無限にでかくなるビットマップなんてぞっとする
0837デフォルトの名無しさん
2008/04/17(木) 16:51:58その都度描画では微妙にスクロールの操作性が悪かったので
ScrollWindowExを使って改善させたことがある
今のPC性能なら必要ないかもしれないね
0838823
2008/04/17(木) 18:45:0010万行とか行数が多い場合に、ちょっとぞっとしますね。
ゆくゆくは構文の強調表示や画像なども貼り付けられるようにしたいので、
その都度、全部描画するのはパフォーマンス的に疑問が残ります。
そう考えると、 >>835 氏のダブルバッファを使う方法はなかなかいいかと思いました。
ScrollWindowExでクライアント領域をスクロールする場合と、裏画面からクライアント領域に、
画像を描画するのはコスト的にも同等かなと思うし。
OnPaintで無効領域の描画をする場合でも、裏画面から該当箇所を描画するだけで済みそうです。
0839デフォルトの名無しさん
2008/04/17(木) 19:59:15パフォーマンスが問題であるなら、今ならWPFがお勧め。
まだ自分も十分に使い込んでいないけれども、ものすごくパフォーマンスが高いうえに
Paintイベント処理といった概念がないのですっきりする。
ドキュメントがろくすっぽ揃っていないのがちょっと辛いけど・・・
自分は、これで巨大なグラフを描画している。
ホストコントロールでビットマップも簡単に作れるので印刷も簡単。
0840デフォルトの名無しさん
2008/04/17(木) 20:06:08描画要素のセットアップで余計な時間を取られるので、無節操に大きいのは都合悪いですけど、一旦セットアップが終わった後の描画は圧巻です。
0841デフォルトの名無しさん
2008/04/17(木) 20:07:42移植作業とか必要?
0842デフォルトの名無しさん
2008/04/17(木) 20:09:57ただし移植後のコードは非常にシンプルになります。
0843デフォルトの名無しさん
2008/04/17(木) 20:11:010844デフォルトの名無しさん
2008/04/17(木) 20:12:550845832
2008/04/17(木) 20:15:03まず、Panelはビットマップ/バッファを持っていない。
つまり、メモリサイズは、Panelサイズに比例しない。
それどころか、メモリサイズは、Panelサイズに依らない。
(Panelサイズを大きくしてもメモリ増加はほぼ0)
次に、描画は基本的に、
PanelのOnPaintメソッドかPaintイベントで *全部* 再描画する。
e.Graphicsを使えば描画領域は既に設定されているので、
描画しなくてよい部分に対する描画処理は無視される。
(メソッド呼び出しのオーバヘッドは有る)
また、スクロールされたときは、
Form(ScrollableControl)が勝手に転送してくれる。
(多分、内部でBitBlt呼んでるものと思われる)
余談
PanelじゃなくてControlでもいいけどツールボックスに無いので。
描画部分をカスタムコントロールにするのが良い方法だと思う。
0847デフォルトの名無しさん
2008/04/17(木) 21:11:31> ScrollWindowExでクライアント領域をスクロールする場合と、裏画面からクライアント領域に、
> 画像を描画するのはコスト的にも同等かなと思うし。
Vistaより前のOSだと
裏画面からウィンドウへの画像転送は
ScrollWindowExやBitBltによるウィンドウからウィンドウへの画像転送に比べ、
非常に遅くなったりするよ。
場合によっては、全画面再描画と変わらないくらいに。
0848デフォルトの名無しさん
2008/04/17(木) 21:17:450849デフォルトの名無しさん
2008/04/17(木) 21:27:51・複雑なUIでも重くなりにくいが、シンプルなUIでも軽くならない
・GPUがしょぼいと性能低下
・図形のセットアップにコストがかかる
(ただし、Freezableオブジェクトなら別スレッドで初期化できるので、工夫すれば高層化できる)
ただ、WinFromsと違って、WindowsAPIの制限をそのまま受け継ぎましたって感じの
へんな制限も無いので、慣れると使いやすい事は確か
0850819
2008/04/17(木) 21:58:21ところで、今現在リリースされているテキストエディタで、特に描画周りで「重い」と感じる事はありますか?
自分は昔からテキストエディタで重いと感じる事は無かったのですが、
それらのエディタでPanelを使用していたり、WPFを使用している訳ではないですよね。
旧来からの手法で軽く動作させる方法があると思うのですが、
そのような手法を模索しています。
WPFは興味ありますが、機種依存の問題や.net framework 3.0以上が必要と、
テキストエディタにはユーザに要求する仕様が高すぎるかな、と思いました。
やはり、既に描画済みの部分は「ずらすだけ」で新たな部分のみを描画する、
又は、ダブルバッファなどの手法が妥当だと思いますが、どうでしょうか?
0851デフォルトの名無しさん
2008/04/17(木) 22:16:280852819
2008/04/17(木) 22:17:32Panel.Textにテキストを設定すると、テキストのコピーがPanel内に保持されると思うので、
その分のメモリは消費しますよね。
内部で保持しているテキストはPeaceTableなどの形式で保持している(したい)ので、
Panelに設定したテキストは表示専用のメモリとして余分に掛かってしまいます。
また、キャレットや選択範囲の描画などを行う場合、
OnPaintなどのタイミングで自前で描画する必要があるので、
そこらへんも適応するかどうか疑問ではあります。
0853819
2008/04/17(木) 22:21:15たぶん、あまりないでしょうね・・・。
自分はC++の方が長いので、C++&Win32APIで実装した方が楽かと思いますが、
これからの将来性や移植性をなどを考え、C#で実装したいなと思ってます。
0854デフォルトの名無しさん
2008/04/17(木) 22:24:180856デフォルトの名無しさん
2008/04/17(木) 22:51:56>Panel.Textにテキストを設定すると
誰もPanel自体にテキスト表示させろなんて言ってないよ。
世のテキストエディタはWindowsのエディットコントロールなんて使わずに
頭を悩ませながら自前でテキストバッファを管理しつつ、文字を表示する位置も自分で計算してるの。
ちなみにPanel.Textは無効なプロパティね。反論だけはする癖に一行もコード書いてないでしょ?
0857デフォルトの名無しさん
2008/04/17(木) 22:56:41この間、WPFでEllipseGepmetoryを一万個ランダムで作ってDrawBrushに渡して描画するのと、FormsでOnPaintで一万個描画するのを試してFormsのほうが二倍ぐらい速かったんだが、Geometory系はあまりGPUの恩恵を受けられないのかね?
WPFだとこういう風にした方がアーキテクチャ上の恩恵を受けやすいというのがあれば是非お願いします。
0858819
2008/04/17(木) 23:00:53ええ、C#は触り始めたばかりです。
>頭を悩ませながら自前でテキストバッファを管理しつつ、文字を表示する位置も自分で計算してるの。
そういう方向で実装しています。
だからこそ、既に描画済みの領域をずらす方法などを質問している訳です。
Panelに関しては憶測で書いていたので、不適切だったかと思います。
delphiもやるので、Panel.Captionのような所にテキストを設定するのかと思ってました。
0859デフォルトの名無しさん
2008/04/17(木) 23:21:09WPFのOnRenderはOnPaintとは違って,描画してもらうものを登録する場所だろ
素直にコントロール使って描画した方が速い
Geometryの作成にかかる時間も勘定に入れてるんだったら
Geometryは描画リソースなんだから毎回作ったら遅くなるのは当たり前じゃね
0860デフォルトの名無しさん
2008/04/17(木) 23:56:41ローレベルがDirectXであるという点について考察を入れてみれば高速な方法は見えるよ。
一般にGPU⇔CPU間の速度が非常に低速、描画リストを作って位置の移動・変型といった使い方が有利。
描画内容を毎回メインメモリーからGPUに送りつけるようなコードをさければいい。
0861857
2008/04/18(金) 00:37:52Geometryは初期化時に生成してDrawBrushにしてFillに渡して後は勝手に描画してもらうようにしていました。
こうすることは、描画してもらうものを登録することにはならないんですかね?
WPFEssenntialにGeometoryが一番プリミティブで軽いと書かれていたので試してみたんですが・・・
Shapeなどはまだ試してません。
>>860
DirectXはちらっとしかさわってないのですが、そのときはおおざっぱにポリゴンやテクスチャをGPU?に渡して後は任せるぐらいにしか理解していません。
DrawGeometoryなどは描画ツリーにセットしておいて必要に応じて移動・変形するといったものにはあたらないんでしょうか。
0862デフォルトの名無しさん
2008/04/18(金) 00:42:29それでいいよ、変形情報だけならサイズはしれているから。
頂点を毎回CPUで作って、毎回一万もGPUに送るとそれだけで帯域全部食らいつくしてしまいます。
CPUに対してメモリーやPCIインターフェイスの速度は超低速です、いまやCPUが数ギガヘルツの時代になっても十年前からほとんど速度向上していません。
0863857
2008/04/18(金) 00:55:59環境はVista、T9300 、オンボードグラフィック(フリップ3Dは楽に動くぐらい)、4Gメモリです。
0864デフォルトの名無しさん
2008/04/18(金) 01:29:55ただのEllipseでチョイ書きしてみた
1000×800 一万個で、拡大縮小、0.2フレーム程度
Ellipseは一つ頭でも結構情報量大きいね 100 ポリゴン以上はありそうな感じだ。
しかも2Dのデザイン重視描画だし、アンチエィリアスとかも細かいし。
全部で10000x100 = 100万ポリゴンなら、まぁこんな物かな。
0865デフォルトの名無しさん
2008/04/18(金) 01:31:300866デフォルトの名無しさん
2008/04/18(金) 02:09:52切り替えたら同じように0.2〜3秒で更新するようになったw サーセン。
でも同じようなものをFillEllipse,DrawEllipseでFormで描画してみたら、やはりFormのほうが早そうだ。
ものにもよると思うけれど、コントロールの組み合わせじゃないもの、たとえばエクセルのようなグラフ(それの複雑なもの)を書くとしたら、
GDI+でビットマップに描画してそれをWPFでレンダリングするような形にしたほうが早くなったりもするのだろうか?実装の手間とかエレガントさは除いたとして。
0867デフォルトの名無しさん
2008/04/18(金) 02:24:49>でも同じようなものをFillEllipse,DrawEllipseでFormで描画してみたら、やはりFormのほうが早そうだ。
そうですか、こっちは、Formで描画したら更新に4秒以上かかってます。
0868デフォルトの名無しさん
2008/04/18(金) 02:29:500869デフォルトの名無しさん
2008/04/18(金) 09:08:040870857
2008/04/18(金) 09:19:36具ラボ切り替える前、WPFで描画に3,4秒架かってたときはサイズ変更時に固まるような感じでしたね。
自分の書き方だとWPFに余計な負荷かけてるのかもしれません。後でできればコードアップしてみます。
WPFはなにぶん初心者なのでたぶんもっといい書き方ありそうな。
0871デフォルトの名無しさん
2008/04/18(金) 10:09:130872デフォルトの名無しさん
2008/04/18(金) 10:47:160873デフォルトの名無しさん
2008/04/18(金) 10:59:470874デフォルトの名無しさん
2008/04/18(金) 12:16:02Queue のこと?
それか、ある配列を与えて、それを永久ループさせるようなものってこと?
前者なら System.Collections.Generic.Queue
後者なら、>>873 あるいは、
IEnumerable<T> Loop(IEnumerable<T> e)
{
for(;;) foreach(var x in e) yield return x;
}
0875デフォルトの名無しさん
2008/04/18(金) 12:37:460876デフォルトの名無しさん
2008/04/18(金) 14:07:11マルチスレッド非対応のWin32APIだから、その上に乗っているFormも当然非対応になっている
だから WM_PAINT とその他イベント処理を並列化することは叶わないよ。
APIを直接使うなら動作するけれど、当然その結果は保証されない。
.NET では 2.0 以降やったらアサートがかかるようになった。
このあたりの問題もWPFではいろいろ考えられていて便利になっている。
この問題を解決するとするなら細切れにして描画などというトチ狂ったようなコードが必要になる。
0877デフォルトの名無しさん
2008/04/18(金) 15:22:06動かないと報告が出てもVISTA環境がないのでさっぱり原因が分からないのです。
0878デフォルトの名無しさん
2008/04/18(金) 15:25:260879デフォルトの名無しさん
2008/04/18(金) 15:37:34ちょっ、そのコード、ちょっと衝撃だ(笑)
叶うならラムダで書きたいね
0880デフォルトの名無しさん
2008/04/18(金) 15:42:17どうすればいいかわかる人います?
0881デフォルトの名無しさん
2008/04/18(金) 16:07:32クロージャ内で yield 書けないのは、MS 的にも失敗だったと思ってるらしいんで、
ひょっとすると将来的に書けるようになるかもね。
あと、個人的には、foreach(var x in e) yield return x; の部分を、
○○ e; だけで同様の結果が得られるような構文糖衣欲しいんだけど。
イテレータをマイクロスレッド的に使うときに、そういう構文がすごく欲しい。
0882デフォルトの名無しさん
2008/04/18(金) 16:27:27DefaultValueでは無理なのでこっち。
http://msdn2.microsoft.com/ja-jp/library/53b8022e(VS.80).aspx
0883デフォルトの名無しさん
2008/04/18(金) 16:29:05ShouldSerialize[Property]使う。
>>881
yield foreach e; とか?まあイテレータは何か「中の人」向け機能
なんでシュガーなだけの機能入れるのはどうだろう?
0884デフォルトの名無しさん
2008/04/18(金) 16:37:27そうそう、そんなの<yield foreach。
俺は yield expand とかを思い浮かべてたけど、
yield foreach ならキーワード増えないのもいいかもね。
881 でも書いてるけど、スクリプト言語の fiber/microthread 的な使い方しようと思うと、
案外、その構文欲しいのよ。
「a, b, c の後に N 個 null を返す」とかを、
yield return a;
yield return b;
yield return c;
yield Repeat(null, N);
みたいに書きたい。
0885880
2008/04/18(金) 16:52:53[DefaultValue(typeof(Font), "フォントプロパティーの値")]
これでいいみたいです。
>for(;;) foreach(var x in e) yield return x;
yieldを使い元データを作って、LINQでそれを加工して出力というある種のパターンが見えてきます
なんというか、IEnumerable,yield に始まってLINQで終わるというか、強烈に爽快なコードですね。
自分は全然使い込み不足だ、やりこまないといけないです
0886デフォルトの名無しさん
2008/04/18(金) 17:00:16妙な制限が多い気がするな
クロージャ内でのyieldもそうだが、
インナークラスで拡張メソッドが定義できないのもどうかと思う
拡張メソッドは利用可能範囲を最小限に抑えたい機能の代表格なのに、
インナークラスで使えないが故にそれができない
0887デフォルトの名無しさん
2008/04/18(金) 17:05:09Javaコピーだったのが、ここに来てやっとC#らしさというのが出てきたという感じですし。
0888デフォルトの名無しさん
2008/04/18(金) 17:08:410889デフォルトの名無しさん
2008/04/18(金) 17:13:51逆にメソッドも namespace が欲しい、インテリセンスが効率よく使えるためには
名前一覧で出てくるメソッドの数は少ないほうがいいので。
もし拡張メソッドをするなら
seq.Sum() ;
ではなく
seq.extensions.Sum() ;
のような感じになってくれた方が有難い、単に便利文法を考えるのではなくてIDEがある前提での高機能化を目指してほしい
0890デフォルトの名無しさん
2008/04/18(金) 18:51:19それは感じるが、むしろ IDE 側で特定のキーバインドで
拡張メソッドの表示をトグルできたらと思ってる
0891デフォルトの名無しさん
2008/04/18(金) 19:02:56どういうローカライズチームだよ
0892デフォルトの名無しさん
2008/04/18(金) 19:09:15ファイルパスって具体的にどの事ですか?
getcurrentdirectory()から下の階層しか使ってないんですけども
0893デフォルトの名無しさん
2008/04/18(金) 19:18:26たとえば、"Program Files" 以下は、ユーザーから操作できない、手抜きをしてここにデータを置いたりすると問題が起こる。
Windows に標準的な作り方をしているなら問題は起こらないはず。
0894デフォルトの名無しさん
2008/04/18(金) 19:28:05Vistaでもトラブルは少ないかと思われ
0895デフォルトの名無しさん
2008/04/18(金) 22:23:08{
public static int Sum( this int obj , int value )
{
return obj + value;
}
public static int Sum( int val1 , int val2 )
{
return val1 + val2;
}
}
拡張メソッドって、こういうオーバーロードは無理なのな。(全く意味無いけどw)
thisがついていても、普通に呼べると。
0896デフォルトの名無しさん
2008/04/18(金) 23:22:27それだったら return e;でコンパイル通るだろ。
0897デフォルトの名無しさん
2008/04/18(金) 23:33:25拡張メソッドの目的は名目上「変更できない既存の型にメソッドを追加すること」だから
その意味では内部クラスに使うのはおかしいんだろう
0898デフォルトの名無しさん
2008/04/18(金) 23:38:17×内部クラスに使う
○内部クラスで既存の型にメソッドを追加する定義をする
0899デフォルトの名無しさん
2008/04/18(金) 23:39:21よく見て。
yield return a; return e; (yield return と return の混在)
はできないよ。
やりたいのは、IEnumerable の中身の展開。
yield e1; yield e2; で、return Concatenate(e1, e2); 相当の結果を得たい。
0900デフォルトの名無しさん
2008/04/18(金) 23:41:47usingでうまく使い分ければいいんだろうけれど、複数人での開発時は規約を決めないと後で困りそう。
でも自分は拡張メソッド大好き。
0901デフォルトの名無しさん
2008/04/19(土) 00:40:39拡張メソッドは良かろうみたいな
0902デフォルトの名無しさん
2008/04/19(土) 00:47:29素直にインターフェイスのアダプタとして設計して欲しいな
使う場所でいろいろ使いたいアダプタは変わるわけで、using とか勘弁って感じ。
それにしても、yield を考えたやつは天才だと思うわ。
0903デフォルトの名無しさん
2008/04/19(土) 00:56:18データ構造にはシーケンス以外にも、ツリー、双方向リストその他色々あるので考えていけばまだまだ広がりそうな気がするよ。
次の要素を拾うときに引数を利用するだけでも激変すると思う、これだけなら実際には今でもできるんだけどね、やるとちょっとキモイので。
0904デフォルトの名無しさん
2008/04/19(土) 07:31:27それ使えればかなりすっきりするのかけるのに。
0905デフォルトの名無しさん
2008/04/19(土) 07:43:18普通に書こうや
0906デフォルトの名無しさん
2008/04/19(土) 08:02:290907デフォルトの名無しさん
2008/04/19(土) 08:08:430908デフォルトの名無しさん
2008/04/19(土) 08:21:26普通のプログラムにyieldがしょっちゅう出てくるとしたらなんかの病気だよ
0909デフォルトの名無しさん
2008/04/19(土) 08:25:13コレクションとかLINQ周りのコード書いてると普通に必要だろ、yield。
0910デフォルトの名無しさん
2008/04/19(土) 08:42:33例えばyieldの無いC++/CLIでシステム情報のコレクションを書くたびに泣きたくなるぞ俺は。
0911デフォルトの名無しさん
2008/04/19(土) 08:48:110912デフォルトの名無しさん
2008/04/19(土) 08:54:57IEnumerable<T>を自作することがほとんどないだろ
yield return a; yield return b;
なんてのは
new[]{ a, b }
で事足りる
0913デフォルトの名無しさん
2008/04/19(土) 08:54:59仮想モードだからかもしれないけどフォントが違うし
描画位置をピクセル単位で微調整せず、無条件で最初に空白を表示するから
DrawDefaultをtrueにした行と同じにならない。
結局自前で全部描画した。
0914デフォルトの名無しさん
2008/04/19(土) 09:16:000915デフォルトの名無しさん
2008/04/19(土) 09:26:47そうかッ! どんだけの量が返されるかわからないデータベースからのフェッチも
あらかじめ馬鹿デカイ配列として保持しておけばIEnumeratorを実装する必要なんて無いのかッ
お前チョー頭良いなッ
0916デフォルトの名無しさん
2008/04/19(土) 09:37:390917デフォルトの名無しさん
2008/04/19(土) 09:41:520918デフォルトの名無しさん
2008/04/19(土) 11:26:560919デフォルトの名無しさん
2008/04/19(土) 11:46:230920デフォルトの名無しさん
2008/04/19(土) 11:58:40誰でも考えるけどお固い言語では今まで怖くてやらなかっただけ
0921デフォルトの名無しさん
2008/04/19(土) 12:22:190922デフォルトの名無しさん
2008/04/19(土) 12:22:380923デフォルトの名無しさん
2008/04/19(土) 12:36:27ラムダ式やLINQなんかとは比べ物にならないようなとんでもない決断
0924デフォルトの名無しさん
2008/04/19(土) 13:30:07かなり頭の悪いコードを書くに違いないと容易に予想にできるが・・・
0925デフォルトの名無しさん
2008/04/19(土) 13:34:44興奮するな
落ち着いて落ち着いて
0926デフォルトの名無しさん
2008/04/19(土) 13:40:30このときあり物のアルゴリズムが使えない時新規にどうする?
手動で全部実装か?それとも新規配列を馬鹿みたいに作成して新たなコンテナでも作るか?
馬鹿馬鹿しすぎるよ
0927デフォルトの名無しさん
2008/04/19(土) 13:55:56そんな単純な話じゃないと思うよ、常識的にスタックは一本あればサブルーチン(=メソッド)を実装できるが
yieldをもつと、スタックがツリー構造の様相になるから、わずかな機能追加しかないコード見てくれとは裏腹に内部構造は激変しているハズ
0928デフォルトの名無しさん
2008/04/19(土) 13:59:200929デフォルトの名無しさん
2008/04/19(土) 14:05:28スタックがツリー?
俺とは脳内イメージがかなり違うようだな。
俺にとってはyieldは関数風の書き方でIEnumerableを実装できる糖衣構文に過ぎん。
ローカル変数がメンバフィールドに置き換わるって所は、目から鱗が落ちたがな。
0930デフォルトの名無しさん
2008/04/19(土) 14:11:25逆コンパイルして見てみたらいいよ
すっごく単純なcscのトリック
0931デフォルトの名無しさん
2008/04/19(土) 14:23:45ちょっと違う話だが、照りゲートも内部暮らすとして実装されてるせいで、デバッグのときに見れるローカル変数とそうでないのがあるときには何でだろうと思ふ(´・ω・`)
0932デフォルトの名無しさん
2008/04/19(土) 14:52:03GetEnumeratorを実装したけりゃyieldすればいい
しかしyieldはそうしょっちゅうでてくるもんでもないし
たいして重要な機能でもない
yieldを中心にすえてLINQでなんでもかんでも処理しようというような考え方は
まずいだろうと思っている
0933デフォルトの名無しさん
2008/04/19(土) 15:03:53知らない人はいつまでもどんくさい書き方をする。
別にyieldに限ったことではないではないか。
0934デフォルトの名無しさん
2008/04/19(土) 15:06:19匿名デリゲート/ラムダ式の話しか?
具体的なコード書けば、誰かに何か教えてもらえるかもしれない
0935デフォルトの名無しさん
2008/04/19(土) 15:09:05学校でもちゃんと教えるべき、知らない人は勉強するべきだ。
大事な事は LINQ の書き方ではなくデータ操作におけるコードのパターンだ。
0936デフォルトの名無しさん
2008/04/19(土) 15:18:02んだ。
あれ確か、ラムダ式の中で使ってるローカル変数は見れたけど使ってない者はウオッチ出来ないよね?
0937デフォルトの名無しさん
2008/04/19(土) 15:21:450938デフォルトの名無しさん
2008/04/19(土) 16:21:19やっぱりデリゲートかなあ
0939デフォルトの名無しさん
2008/04/19(土) 16:26:470940デフォルトの名無しさん
2008/04/19(土) 16:41:01Win32ならファイバ、一般的にはマイクロスレッド、コルーチンあたり
の単語使うものが根底にあるから調べてみれ。中断とスタック保存が基本。
しかしC#のyieldは列挙に特化してるので直接的では確かにない。
そのようにも使えるけど。この辺考慮するとC#のyieldは再帰やツリーの
ならしには確かに向いてる。foreachのDispose機能もあるしな(IEnumerator<T>の
この仕様はスバラシス)。
0941デフォルトの名無しさん
2008/04/19(土) 16:48:25yield はマイクロスレッドに対応し始めたらパフォーマンス方面についてもかなり期待できる物になるかもしれんね
今後CPU並列化とともに期待できる機能になると思う、ただしその前に少し再検討してほしい内容もちらほらあるけど。
これ以外にも今回のVisualStudio2008で強化された機能には、WPFといいマルチコア時代につながる技術が盛り沢山なので割と楽しい。
0942デフォルトの名無しさん
2008/04/19(土) 16:51:090943デフォルトの名無しさん
2008/04/19(土) 16:59:40前に俺が書いたIList,IDictionary用のラッパーインデクサ
ふらっとの方に貼ったけど、dat落ちしてるみたいなのでもう一度
public static class Indexer {
public static DictionaryIndexer<TKey, TValue> GetIndexer<TKey, TValue>(this IDictionary<TKey, TValue> dict) { return new DictionaryIndexer<TKey, TValue>(dict); }
public static ListIndexer<T> GetIndexer<T>(this IList<T> list) { return new ListIndexer<T>(list); }
}
public sealed class DictionaryIndexer<TKey, TValue> {
private IDictionary<TKey, TValue> dict;
internal DictionaryIndexer(IDictionary<TKey, TValue> dict) { this.dict = dict; }
public TValue this[TKey key] { get { return dict[key]; } set { dict[key] = value; } }
}
public sealed class ListIndexer<T> {
private IList<T> list;
internal ListIndexer(IList<T> list) { this.list = list; }
public T this[int index] { get { return list[index]; } set { list[index] = value; } }
}
0944デフォルトの名無しさん
2008/04/19(土) 17:08:360945デフォルトの名無しさん
2008/04/19(土) 17:11:43void Hoge(IIndexer<int, string> a) { Console.WriteLine(a[0]); }
みたいに統一したインターフェイスで扱いたいんだよね
void Hoge(Func<int, string> a) { Console.WriteLine(a(0)); }
//Hoge(i => array[i]);
まあこれからはこういうのが主流になるんだろうけど
0946デフォルトの名無しさん
2008/04/19(土) 17:13:060947デフォルトの名無しさん
2008/04/19(土) 17:18:41>CPU並列化とともに期待できる機能
Parallel FX Library は手軽にCPU並列化の恩恵を受けれていいよね。
http://msdn2.microsoft.com/ja-jp/magazine/cc163340.aspx
Core 2 Quad も価格改定で安くなるようだし、これからの展望にwktk
0948デフォルトの名無しさん
2008/04/19(土) 17:37:30そう思うのは多分スケーラビリティが見えてない。LINQ to SQL が
片鱗を見せているけれど。対象がギガだろうがテラだろうが同じ
構文でクエれるのが LINQ のいいところ。
0949デフォルトの名無しさん
2008/04/19(土) 17:43:140950デフォルトの名無しさん
2008/04/19(土) 19:43:48PallrelLINQ(スペル自信なし)はいいと思うんだけど、普通のオブジェクトLINQとかの話。
0951デフォルトの名無しさん
2008/04/19(土) 20:14:53マルチスレッドの向上率なんて現状知れてる。
まあそれは別としてパフォーマンスがそこで問題になるほどなら、インメモリな
Queryable つくってみりゃいい。そこでだけ Unsafe コードっつーのもOKやしな。
だれかつくんねーかな
0952デフォルトの名無しさん
2008/04/19(土) 21:43:34一度マルチスレッド対応したコードを作ってみるといい
それなりに負荷のあるコードで Core 2 Quad あたりで動かすと激変するから。
unsafe とか馬鹿馬鹿しくなるよ
0953デフォルトの名無しさん
2008/04/19(土) 22:03:380954デフォルトの名無しさん
2008/04/19(土) 22:12:500955デフォルトの名無しさん
2008/04/19(土) 22:17:47いやぶっちゃけ4コアでも最大4倍だろ。
一桁二桁変わるような世界じゃない。そしてそういう部分も
普通は多かったりする
0956デフォルトの名無しさん
2008/04/19(土) 22:27:47ネットワーク環境基本の時世にしてセキュリティー設定次第で使えない、設置・配置できない不便なアプリになるといいかと。
0957デフォルトの名無しさん
2008/04/19(土) 22:32:12んなところにはそれこそunsafeなんて使わんが?
0958デフォルトの名無しさん
2008/04/19(土) 22:49:40とりあえず IndexAttribute でインデックスを指定すると
Index Search(Dictionayつかって) してくれる Queryable 返す
Table<T> みたいなの作ってみよ
0959デフォルトの名無しさん
2008/04/19(土) 22:52:28O(n^2)とO(logn)ではスレッド化の結果恩恵がどれくらい得られるかが違ってくるし
0960デフォルトの名無しさん
2008/04/19(土) 22:58:16アホとしか言えない
0961デフォルトの名無しさん
2008/04/19(土) 23:31:040962デフォルトの名無しさん
2008/04/19(土) 23:42:040963デフォルトの名無しさん
2008/04/20(日) 00:34:48C#のSystem.IO.BinaryWriter
で Write()して作ったバイナリファイルを
C++のstd::ifstream fin でopen(filename, ios::binary)
して 例えばint n; fin >>n; しても読み込めないですけど、
・・・つまるところC#で作ったバイナリファイルとC++で作ったバイナリファイルは
互換性がないんですか?
0964デフォルトの名無しさん
2008/04/20(日) 00:47:450965デフォルトの名無しさん
2008/04/20(日) 00:49:140966デフォルトの名無しさん
2008/04/20(日) 00:50:220967デフォルトの名無しさん
2008/04/20(日) 00:52:580968デフォルトの名無しさん
2008/04/20(日) 00:54:00単にC++とC#のバイナリモードの意味が違うだけ。
C++のほうをバイナリモードで開いて、
fin.read(reinterpret_cast<char*>(&i), sizeof i)
とでもすれば、C#でのi = BinaryReader.ReadInt32()に相当する。
0969デフォルトの名無しさん
2008/04/20(日) 00:57:43そこまで説明するなら、Cのバイナリーモードの意味を教えてやってくれよ・・・
頭変になりそうだ
0970デフォルトの名無しさん
2008/04/20(日) 01:46:550971デフォルトの名無しさん
2008/04/20(日) 02:29:02スルー力
カタカナと漢字で書いてみたんだが、どっちが正しいのかわからんw
0972デフォルトの名無しさん
2008/04/20(日) 03:39:33スルーカ5級失格
0973デフォルトの名無しさん
2008/04/20(日) 09:43:070974デフォルトの名無しさん
2008/04/20(日) 11:17:11バイナリオープン指定しても
ifstream >> とか ofstream << はあくまでテキスト対象!?
抽象化歌ってえばってるくせに使えねぇなストラウストラップ。
・・・ともかくバイナリファイルは他の関数でキャラとして読んでその都度変換する
しかないということですね? ありがとうございました。
0975デフォルトの名無しさん
2008/04/20(日) 11:55:14Math.Sin()の引数はラジアンなので、sin90°を求めるために、次のように度からラジアンに変換して渡すのですが、
double s = Math.Sin(90 * Math.PI / 180);
結果は1.0にはなりません。きっと、丸め誤差のせいです。
度を引数にとる三角関数ライブラリでもあればいいんですがね。
0976デフォルトの名無しさん
2008/04/20(日) 12:05:18なったぞ
0977デフォルトの名無しさん
2008/04/20(日) 12:09:49寝ぼけたこと言ってるなあw
それは君が実数値の取り扱い方法を知らないだけだろ。
0978デフォルトの名無しさん
2008/04/20(日) 12:40:34ほとんどの場合正確な値が返って来ないのに90度だけ返って来るほうがキモいだろう
0979デフォルトの名無しさん
2008/04/20(日) 14:44:260980デフォルトの名無しさん
2008/04/20(日) 15:12:02とりあえずとんでもない勘違いをしているから正しておけ。
0981デフォルトの名無しさん
2008/04/20(日) 15:32:33俺の環境では1.0になっとるよ
0982デフォルトの名無しさん
2008/04/20(日) 16:54:25確認の方法が悪い可能性があるから信用ならん。
どう確認したかを書かなきゃ。
0983デフォルトの名無しさん
2008/04/20(日) 17:04:56イミディエイトウインドウで
(Math.Sin(90 * Math.PI / 180) == 1)
ってやるとtrueが返ってくるが?
0984デフォルトの名無しさん
2008/04/20(日) 17:43:210985デフォルトの名無しさん
2008/04/20(日) 17:46:570986デフォルトの名無しさん
2008/04/20(日) 17:58:51using System;
using System.Text;
using System.Runtime.InteropServices;
class F
{
[DllImport("msvcr90.dll", CharSet = CharSet.Unicode,
CallingConvention = CallingConvention.Cdecl)]
static extern int swprintf_s(
[Out] StringBuilder buffer,
UIntPtr sizeOfBuffer,
string format,
double d);
static void Main()
{
double s = Math.Sin(90 * Math.PI / 180);
Console.WriteLine("{0:r}", s);
Console.WriteLine("{0:e17}", s);
var buf = new StringBuilder();
buf.Length = 32;
swprintf_s(buf, (UIntPtr)buf.Length, "%.13a", s);
Console.WriteLine(buf);
}
}
0987デフォルトの名無しさん
2008/04/20(日) 18:03:39チェックにおいて一切誤差が入らない。
0988デフォルトの名無しさん
2008/04/20(日) 21:01:33文字列書式化関数でバイナリ読み書きなんて勘弁してくれ。
0989デフォルトの名無しさん
2008/04/21(月) 04:18:52LINQの遅延評価とスレッドの結果が遅れてできるという、どことなく似た性質が興味深くて、ちょっとマルチCPU向けコード作ってみた。
関数型言語の様に、値=関数という概念を持ち込んでみたよ。
LambdaPool.BeginLambda が、結果を得る関数を引数に、結果を得る関数を返す、ただし計算はすぐ開始という仕組みです。
ためしにやってみた計算は二重積分 ∬sin(x)*cos(y)dxdy です。
0990デフォルトの名無しさん
2008/04/21(月) 04:19:21List<EventWaitHandle> eventList = new List<EventWaitHandle>();
List<Thread> threadList = new List<Thread>();
Queue<ThreadStart> queue = new Queue<ThreadStart>();
public void Dispose() { foreach (var item in threadList) if (item.IsAlive) item.Abort(); }
public LambdaPool() {
for (int i = 0; i < Environment.ProcessorCount; ++i) {
var index = i;
eventList.Add(new EventWaitHandle(false, EventResetMode.AutoReset));
threadList.Add(new Thread(() => {
while (true) {
ThreadStart item = null;
lock (queue) if (queue.Count != 0) item = queue.Dequeue();
if (item != null) item();
lock (queue) if (queue.Count != 0) continue;
eventList[index].WaitOne();
}
}));
threadList[index].Start();
}
}
public Func<T> BeginLambda<T>(Func<T> lambda) {
object result = null;
EventWaitHandle eventWait = new EventWaitHandle(false, EventResetMode.ManualReset);
lock (queue) queue.Enqueue(() => { result = lambda(); eventWait.Set(); });
foreach (var item in eventList) item.Set();
return () => { eventWait.WaitOne(); return (T)result; };
}
}
0991デフォルトの名無しさん
2008/04/21(月) 04:20:10LambdaPool lambdaPool = new LambdaPool();
private void button1_Click(object sender, EventArgs e) {
System.DateTime start = System.DateTime.Now;
List<Func<double>> result = new List<Func<double>>();
double delta = 0.0001;
for (double gy = 0; gy <= Math.PI * 2; gy += delta) {
var y = gy;
result.Add(lambdaPool.BeginLambda(() => {
double sum0 = 0.0;
for (double x = 0; x <= Math.PI * 2; x += delta) {
sum0 += Math.Sin(x) * Math.Cos(y) * delta * delta;
}
return sum0;
}));
}
var sum1 = lambdaPool.BeginLambda(() => result.Sum((a0) => a0()))();
System.DateTime end = System.DateTime.Now;
System.Console.WriteLine("開始={0},終了={1},所要時間={2}", start, end, end - start);
System.Console.WriteLine(sum1);
}
0992デフォルトの名無しさん
2008/04/21(月) 04:20:36private void button1_Click(object sender, EventArgs e) {
System.DateTime start = System.DateTime.Now;
double delta = 0.0001;
double sum1 = 0.0;
for (double y = 0; y <= Math.PI * 2; y += delta) {
double sum0 = 0.0;
for (double x = 0; x <= Math.PI * 2; x += delta) {
sum0 += Math.Sin(x) * Math.Cos(y) * delta * delta;
}
sum1 += sum0;
}
System.DateTime end = System.DateTime.Now;
System.Console.WriteLine("開始={0},終了={1},所要時間={2}", start, end, end - start);
System.Console.WriteLine(sum1);
}
0993デフォルトの名無しさん
2008/04/21(月) 04:23:43マルチCPU
開始=2008/04/21 3:26:58,終了=2008/04/21 3:28:15,所要時間=00:01:16.4980000
-9.26313842296857E-15
シングルCPU
開始=2008/04/21 3:31:27,終了=2008/04/21 3:35:57,所要時間=00:04:30.6180000
-9.26313842296857E-15
非スレッド270秒
マルチスレッド76秒
速度非 3.55倍
コードが超圧縮なのは、掲示板という事で勘弁してください。
270秒 ⇒ 76秒です、言語サポートがあると結構面白いことになりそうです。
0994デフォルトの名無しさん
2008/04/21(月) 18:04:53レベルのサンプルプログラムがあるC#のサイトがあったら、教えてください。
0995デフォルトの名無しさん
2008/04/21(月) 18:31:19非同期デリゲート呼出でやってみたんだけどどう?
static Func<double> future(Func<double> f)
{
var r = f.BeginInvoke(null, null);
return () => f.EndInvoke(r);
}
static void Main()
{
var start = DateTime.Now;
var result = new List<Func<double>>();
double delta = 0.0001;
for (double gy = 0; gy <= Math.PI * 2; gy += delta)
{
var y = gy;
result.Add(future(() =>
{
double sum0 = 0.0;
for (double x = 0; x <= Math.PI * 2; x += delta)
sum0 += Math.Sin(x) * Math.Cos(y) * delta * delta;
return sum0;
}));
}
double sum1 = future(() => result.Sum((a0) => a0()))();
var end = DateTime.Now;
Console.WriteLine("開始={0},終了={1},所要時間={2}", start, end, end - start);
Console.WriteLine(sum1);
}
0996デフォルトの名無しさん
2008/04/21(月) 21:39:52本気で書いたら、掲示板に収まらないのでこの程度にしてありますが・・・・
マルチコアCPUをもっているなら、このコードとIEと同時に使ってみてください、シングルコアPCなみに反応が悪くなります。
で、非同期デレゲートですが、これはThreadPoolを使います、これはもっとヤバイです、
これは高優先順位でI/Oの同期をとることを目的に作られています、
とりあえず、安易な非同期デレゲートはどういう使い方であれお勧めできないかもしれない。
本当はこういうコードを実行してCPUを占領したらOSが強権発動で優先順位の強制変更をしてくれるといいんですけどね。
0997デフォルトの名無しさん
2008/04/21(月) 21:46:460998デフォルトの名無しさん
2008/04/22(火) 00:30:01多用するとデバッグ時にいじるたびにやり直しになるのが困りもの(´・ω・`)
0999デフォルトの名無しさん
2008/04/22(火) 01:00:06http://pc11.2ch.net/test/read.cgi/tech/1208248879/l50
1000デフォルトの名無しさん
2008/04/22(火) 01:00:1310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。