ふらっとC♯(Part5)
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
少しずつC#プログラマを名乗るものが現れました。みなさん一緒に勉強しましょう。
前スレッドはこちら
http://pc2.2ch.net/test/read.cgi/tech/1059028988/l50 (Part4)
http://pc2.2ch.net/test/read.cgi/tech/1047210828/l50 (Part3)
http://pc2.2ch.net/test/read.cgi/tech/1035895873/l50 (Part2)
http://pc2.2ch.net/test/read.cgi/tech/1023766485/l50
0232デフォルトの名無しさん
NGNGコンピュータの中では、「文字」ってのは一定のルールで数字の列に変換されて扱われてます。
このルールのことをエンコーディング、数字(の列)のことを文字コードと呼んだりします。
んで、文字の "2" に対応するコードが 50 (16進数で 0x32) なわけです。
ファイルやネットワーク等での読み書きは、byte の列を使って行われるのが基本で、
.Net Framework で文字列からこのバイト列に(またはその逆に)変換するには、
Encoding クラス(のインスタンス)を用います。
0233デフォルトの名無しさん
NGNG"2"という文字列から、数字の 2 に変換するには、Int32.Parse() などを使います。
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNGchar c = (char)Console.Read();
とすれば、そのまま表示できまっせ。MSDNだとintを返すことになってるから
まぎわらしいんだけどね。
0237デフォルトの名無しさん
NGNG今画像のサムネイル保存用に複数画像をまとめてひとつの
ファイルにしようとしています。
Aファイルサイズ・Aファイル・Bファイルサイズ・Bファイル・・・
みたいな感じ合成し、インデックスで呼び出そうかと思っています。
で、ふと思ったのですが、そういう複数のファイルをまとめてしまう
クラスって既にあったりするのでしょうか。
よろしければお教えください。よろしくお願いいたします。
0238デフォルトの名無しさん
NGNGBitmap imageB = new Bitmap("B.bmp");
Bitmap imageC = new Bitmap("C.bmp");
Bitmap bmp = new Bitmap(300, 100);
Graphics g = Graphics.FromImage(bmp);
g.DrawImage(imageA, 0, 0);
g.DrawImage(imageB, 100, 0);
g.DrawImage(imageC, 200, 0);
g.Dispose();
bmp.Save("ABC.bmp");
bmp.Dispose();
imageA.Dispose();
imageB.Dispose();
imageC.Dispose();
0239デフォルトの名無しさん
NGNGHash的に名前で簡単にストリームを取り出せるような
仕組みが既存クラスにないかなーとか思っていたのでした。
やはり頑張って自分で実装してみます。
ありがとうございました。
0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNGなるほど!
早速やってみます。
ありがとうございました!
0242デフォルトの名無しさん
NGNGVS.NET2003に反映されないのです。
なんでなんでしょう・・・そういう方他にいますか?
0243最凶VB厨房
NGNG0245最凶VB厨房
NGNGまっわからんけど
0246デフォルトの名無しさん
NGNGフィルタか?
0247242
NGNGフィルタもなしになってます。
本来ならVS.NET起動時に「ヘルプを反映中・・」とかでますよね?
0248242
NGNGお騒がせしました。(・∀・)
0249デフォルトの名無しさん
NGNGDirectX9 SDK Summer2004の日本語ドキュメントってもう出てたの?
0250デフォルトの名無しさん
NGNG変な書き方しちゃいましたね。
2004入れてから日本語ドキュメント入れたら〜でした。スマソ
0251デフォルトの名無しさん
NGNGusing HANDLE=System.IntPtr;using LPVOID=System.IntPtr;using SIZE_T=System.UInt32;using DWORD=System.UInt32;
class CMyApp:System.Windows.Forms.Form
{
[System.Runtime.InteropServices.DllImportAttribute("kernel32")]
static extern LPVOID VirtualAllocEx(HANDLE hProcess,LPVOID lpAddress,SIZE_T dwSize,DWORD flAllocationType,DWORD flProtect);
DWORD PAGE_READWRITE=0x04;
DWORD MEM_COMMIT= 0x1000;
static void Main()
{
System.Windows.Forms.Application.Run(new CMyApp());
}
CMyApp()
{
this.Click+=new System.EventHandler(OnClick);
}
void OnClick(object sender,System.EventArgs e)
{
LPVOID 自分側の領域=VirtualAllocEx(System.Diagnostics.Process.GetCurrentProcess().Handle,(LPVOID)0,(DWORD)System.Runtime.InteropServices.Marshal.SizeOf(typeof(System.TimeSpan)),MEM_COMMIT,PAGE_READWRITE);
LPVOID 他人側の領域=new LPVOID();
foreach(System.Diagnostics.Process inc in System.Diagnostics.Process.GetProcesses())
if("Explorer"==inc.ProcessName)
他人側の領域=VirtualAllocEx(inc.Handle,(LPVOID)0,(DWORD)System.Runtime.InteropServices.Marshal.SizeOf(typeof(System.TimeSpan)),MEM_COMMIT,PAGE_READWRITE);
System.Runtime.InteropServices.Marshal.PtrToStructure(自分側の領域,typeof(System.TimeSpan));//自分側の領域では例外は発生しない
System.Windows.Forms.MessageBox.Show("次で例外発生");
System.Runtime.InteropServices.Marshal.PtrToStructure(他人側の領域,typeof(System.TimeSpan));
}
}
0252デフォルトの名無しさん
NGNG非Managedなプロセス空間にManagedな構造体を確保する意味がさっぱりわからないんだが。
ttp://dotnetjunkies.com/WebLog/chris.taylor/archive/2004/05/31/14828.aspx
とりあえず外部プロセスへのちょっかいの参照。
0253251
NGNGこれをやりたい理由は、興味本位で出来るかどうか試したかっただけです。
とりあえず上のURLをよく読んで見ます。
0254デフォルトの名無しさん
NGNGどっち使ってる?
JavaのGUIのリスナーみたいなケースなら、デリゲートの
方が何もしないメソッドまで記述しなくて済むし効率いいかな。
0255デフォルトの名無しさん
NGNG俺は Java 出身だから、ある程度一まとまりの処理をくっつけるならインターフェイス使っている
デリゲートは纏まり間が無くて、単体なら遣いやすいけど微妙
0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNGデリゲートにしておくのが無難なのでは。
0258デフォルトの名無しさん
NGNG各ドライブのボリュームラベルを取得するのってどうやるんだべさ?
なんかAPI叩くしかなかったら非常に鬱なので教えてエロイ人!
0259デフォルトの名無しさん
NGNGDriveInfo.VolumeLabel かな。
…… .NET Framework 2.0 だけど。
0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNGやっぱ2.0になっちまうのか・・・。
何故こんな基本的なもんが実装されてないんだと小一(ry
0262デフォルトの名無しさん
NGNGextern static bool GetVolumeInformation(
string RootPathName,
StringBuilder VolumeNameBuffer,
int VolumeNameSize,
out uint VolumeSerialNumber,
out uint MaximumComponentLength,
out uint FileSystemFlags,
StringBuilder FileSystemNameBuffer,
int nFileSystemNameSize);
0263デフォルトの名無しさん
NGNGトンクスエロイ人!
やっぱこうやるか・・・。なんだかなぁ・・・
0264デフォルトの名無しさん
NGNGこの64という制限は何によってかかっているでしょうか。
100に変更したりとかできないでしょうか。
0265デフォルトの名無しさん
NGNGMyButtons[,] = new Button[3,5];
のように宣言されていて、forの二重ループの中で初期化して
MyButtons[i,j].Click += new EventHandler(MyButtons_Click);
みたいにしてみましたが、MyButtons_Clickの引数には別に「MyButtonsの何番目か」は渡されません。
どうしたらいいんですか
0266デフォルトの名無しさん
NGNGボタンの番号が固定のものなら、Button.Tag あたりに番号を押し込めておけば良いのでは?
0267デフォルトの名無しさん
NGNGなんとかなりませんかねえ
0268デフォルトの名無しさん
NGNG???
だからTagにint[]{2, 1}とかいれとけばいいんじゃないの?
それがまずいというのならもっとわかりやすく説明してくれないと何がなにやら。
0269デフォルトの名無しさん
NGNGあ、いま意味が分かりましたサンクス
0270デフォルトの名無しさん
NGNG普通に1000とかできるじゃん……と思ったら.NET Framework2.0だった。
1.1の制限のようだ。
0271デフォルトの名無しさん
NGNGOS の制限。WaitForMultipleObjects() できる最大数が64だから。
2.0 で表面的な制限は外れても、64を超えると効率は落ちる気がする。
0272デフォルトの名無しさん
NGNGでも64周辺の境界は見あたらなかった。
ついでに1.0/1.1/2.0bも比較してみた。(スコアは低い方が優秀)
10でスコア 410 / 370 / 250
25でスコア 320 / 300 / 230
40でスコア 325 / 320 / 250
64でスコア 370 / 370 / 300
有意の差があるね。
1.1までとは違う機構を利用してたりするんじゃないかってくらい2.0は早い。
数が少ない時と多い時のスコアの分布とか。
0273デフォルトの名無しさん
NGNGABC | DEF | GHI
JKL | MNO | PQR
STU | VWX | YZA
BCD | EFG | HIJ
こういう表の MNOとVWXだけ範囲指定させるみたいなことはできますか?
0274264
NGNG環境も書き忘れたのに本当にありがとうございます。
しかもWaitForMultipleObjectsとの関連、
ベンチまでしていただいてとても参考になりました。
0275デフォルトの名無しさん
NGNGAObject obj1 = obj2.Clone();
ってすればいいんだろうけど、
Cloneを書くときにCのmemcpyみたいなことってできないんでしょうか?
それともいちいちフィールド一つずつ代入?
0276デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNGPoint aaa = new Point(0,0);
aaa = new Point(1,1);
aaa = new Point(2,2)
とかしても大丈夫?
0279デフォルトの名無しさん
NGNGint a = 0;
a = 1;
a = 2;
とやることにためらいを覚える?
0280デフォルトの名無しさん
NGNGp = malloc(100);
p = malloc(100);
とやることにはためらいを覚える。
0281275
NGNG正しいクラスはDisposeを持つべきってことか?
自前のやつも?
0282デフォルトの名無しさん
NGNGもうちょっとGCを信用しようや。
Disposeが必要なのは基本的にUnmanagedなリソースを扱うクラスのみ。
0283デフォルトの名無しさん
NGNGなんか「ゴミをゴミ箱に捨てると清掃員の仕事が減ってリストラされるから、ゴミは道に捨てるべき」とか言ってるみたい
0284デフォルトの名無しさん
NGNGでも
道に捨てない −> 清掃員の仕事が減ってリストラ −> ごみを捨て忘れても綺麗にならない
だから道に捨てるんだ。
0285デフォルトの名無しさん
NGNGツール(T)→webページのビルドコメント(B)
でドキュメントを作成したところ、「コード要素ページ operator + が不完全です。 」というエラーが取り除けなくて困っています。
だれか理由が分る人いますか?
以下問題のコードです。
/// <summary>テスト</summary>
public class Test
{
/// <summary>足し算</summary>
/// <param name="a">引数その1</param>
/// <param name="b">引数その2</param>
/// <returns>結果</returns>
public static Test operator + ( Test a , Test b ) { return null ; }
}
>>282
Unmanagedというより、IO関連とかメモリーと連携するわけにはいかないオブジェクトが実装する必要があるのでは?
OSのリソースはメモリーのようにいつでも解放できるリソースばかりではありませんから、そのようなリソースを握るオブジェクトには必然的に必要になります。
参照先がなくなった瞬間に即時開放されるタイプのクラスが定義できると、こんな面倒な事をしなくてすむんですが……
と、C++でスマートポインタを使っていると切に欲しくなる事があったりします。
0286デフォルトの名無しさん
NGNGまあ、>>285のように思う事はない事もない。
0287デフォルトの名無しさん
NGNGDisposeを実装すべきである事が多い。
単に使用終了と言う意味合いだけなら、何もする必要なし。
※Dispose実装したところでする事は何もない。
メモリに関しちゃほっとけばいいってのがGCのある環境での基本。
0288デフォルトの名無しさん
NGNG0289デフォルトの名無しさん
NGNGまあ、>>285の言うようなスマートポインタみたいな物っていっても、
結局直接参照しか扱えないため、包含するクラスは全部そのタイプにしなけりゃ
意味がなかったりして、結局大げさになりすぎてうまくいかないかな。
GCとは相性が悪いね。
0290デフォルトの名無しさん
NGNGダイアログを作りたいのだが,ここにいる諸氏ならばどのようにして実現するか,
意見をお聞きしたい.
0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNG他にもあるけど
窓の杜 - 【NEWS】米MS提供の.NET開発向けカスタムコントロール集「Visual Basic Power Pack」
http://www.forest.impress.co.jp/article/2004/06/24/vbpowerpack.html
0294デフォルトの名無しさん
NGNG一度全て読み込んだ後削除して上書きしか思いつかなくて。。。
消した後、そのファイルに追加を行うので、
消したい部分のみ上書きする方法でもいいのですが。。。
0295デフォルトの名無しさん
NGNG上書きなら難しいことでもないけど。
int b = 5;
FileStream fs = new FileStream("hoge.txt", FileMode.Open, FileAcceess.ReadWrite);
fs.Position = fs.Length - b;
StreamWriter sw = new StreamWriter(fs);
以下略
0297デフォルトの名無しさん
NGNGそっか Mamko に、だしておいた Seishi をぶち込めばよかったのか
ありがとうございますそれで子供できそうです
0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNGUSBマウスとUSBトラックボールをつなげています。こららの移動情報を個別に取得したいと思います。
どうすれば、よいでしょうか?宜しくお願いしまう。
0300デフォルトの名無しさん
NGNG.NET Frameworkのライブラリじゃ不可能。
Raw Input APIを使う必要がある。
参考:ttp://www.hatena.ne.jp/1085972533
0301デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
NGNG使用したいのですが、いい方法はないでしょうか。
なお、今のところ、同一のアイコンファイルを
コンパイルオプションの「/win32icon」、「/resource」の双方を
使って実行ファイルに取り込んでいます。
0303デフォルトの名無しさん
NGNG/win32icon は API の ExtractIcon/ExtractIconEx で取り出せる。
0304デフォルトの名無しさん
NGNGライブラリのやつとかいちいちマニュアル見るの面倒なんだが。
0305デフォルトの名無しさん
NGNGVS使ってるならnewのインテリセンスとか。
あんまりclassかstructかを見分ける必要なぞ感じたことがないしな。
0306デフォルトの名無しさん
NGNGMultiColumnではなくて、ひとつの項目を二つの列に分けて表示したいんです。
具体的に何をしたいかというと、エラーの内容と発生時刻を表示したいんですが、
発生時刻を左側に、エラーの内容を右側にわけてリストボックスに表示したいんです。
日付は必ず1行ですがエラーの内容は複数行になる可能性があるので、
文字数揃えて表示・・とかよりも縦に二つに割れたら楽だと思うんですけど、どうやってやるのかさっぱりです。
ListBoxで実現するには、あるいはほかのコントロールで実現するにはどうすればいいんでしょうか。
0307デフォルトの名無しさん
NGNGちゃんと読んではいないけどGoogleのイメージ検索で引っかかったこれはどうだろう。
ttp://www.codeproject.com/cs/combobox/resizablelistbox.asp
//私ならListViewを使うかな……?
0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNGめんどくさくね?
0310デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNG早過ぎる最適化は諸悪の(少なくとも大半の悪の)根源なり -- DEK
0313デフォルトの名無しさん
NGNG0314313
NGNG0315デフォルトの名無しさん
NGNGboxing と unboxing でドツボにはまるぞ。
値型と参照型の違いは押さえておいた方が良い。
0316デフォルトの名無しさん
NGNGstruct を lock () して排他したつもり、とか。
0317デフォルトの名無しさん
NGNG0318デフォルトの名無しさん
NGNGCTRL+Z や CTRL+C/V/X を実現するには自分でコードを書かないといけないのでしょうか?
0319デフォルトの名無しさん
NGNGまず試せ。
0320デフォルトの名無しさん
NGNGデザイナのプロパティウィンドウには表示されませんね。
基底クラス(Windows.Form)に加えたプロパティは
派生クラス(Windows.Form)のデザイナに反映される
みたいだけど、自分自身ならなぜだめなのかなぁ。
0321デフォルトの名無しさん
NGNGまったく同じレスをどこかで見たなぁ。
0322デフォルトの名無しさん
NGNG俺も見た記憶があるので探してみた
http://pc5.2ch.net/test/read.cgi/tech/1045307942/294
0325デフォルトの名無しさん
NGNG1,1 - 1,2まで幅1の線を引くと、どうも2pxくらい線が引かれちゃうし
1,1 - 1,1にすると線ができないんです。
0326デフォルトの名無しさん
NGNGBitmap に SetPixel で点を描いて、Graphics.DrawImage で画面に描写。
0327デフォルトの名無しさん
NGNGFillRectangle(DrawRectangleは不可)で幅・高さ1の四角を描画。
Graphics.GetHwndで取得したデバイスコンテキストにWin32APIのSetPixelで描画。
……元画像のビットマップを取得できるならBitmap.SetPixelが一番手っ取り早い/速いんだけどねー。
0328デフォルトの名無しさん
NGNG点を描画するGraphicsクラスのメソッドはないみたいなんだよね
結局SetPixelで妥協したけど、
Graphicsオブジェクトを使って描画を行うというルールから離れるからあんまりやりたくない
0329デフォルトの名無しさん
NGNG//user32.dllのAPIをまとめたクラスを最近作ってるからhwndまみれでつい。
0330デフォルトの名無しさん
NGNGGraphics はベクタ形式を含む一般的なグラフィックを扱うクラスだから、“点”という概念がないのよね。
数学的には、点は半径が無限小の円と等価な存在で、半径0の円は画面に表示できないから。
点、というか、ピクセル単位の処理がしたければビットマップを使えと。
Graphics に元画像のビットマップを取得するメソッドがないのは、
将来的に(Avalon で)、OS 自体をベクタ画像ベースで動くものにするつもりでいるからじゃないかな。
0331デフォルトの名無しさん
NGNG目から鱗
■ このスレッドは過去ログ倉庫に格納されています