2 :
デフォルトの名無しさん :01/10/08 00:23
ごくろうさまー
は!名前を変えるのを忘れてしまった…鬱
?????
おまえが士ね>3
9 :
デフォルトの名無しさん :01/10/08 00:31
さっそく厨房な質問。 Windows.Formsで「フォルダの参照」を出すにはどうすればいいでしょうか? Win2000のエクスプローラでファイルの移動やコピーの時に出る ダイアログです(一番下の部分はなくても可)。
ジサクジエン、カコワルイ
ニセモノがいても(゚ε゚)キニシナイ!! J#、VS.NET日本語版ではインストールできないみたいね。 がっくし...。
ここに質問して答えて貰えるんだろうか…。一応。 hWndの取得ってどうやるんすか? せっかくDllImportしてもhWnd要求されちゃぁねぇ…。
>>12 ControlクラスにHandleというプロパティがあるよん。
(もちろんサブクラスにも。)
DllImportのところで、hWndはIntPtr型で受け取ってちょ。
>>13 おぉ、ありがとうございます。
Handleがまんまウィンドウハンドルなのですね。
16 :
名無しさん♯ :01/10/08 07:00
>>9 System.Windows.Formsにはそういうクラスはないみたいね。
本来の用途とは違うけど、System.Windows.Forms.Designの
FolderNameEditorクラスを使えば、強引にできなくもないみたいね。
using System;
using System.Windows.Forms;
using System.Windows.Forms.Design;
class FolderNameEditorEx : FolderNameEditor
{
protected override void InitializeDialog(FolderNameEditor.FolderBrowser folderBrowser) {
// ここでダイアログの初期化を行なう。
folderBrowser.Description = "ほげほげ";
folderBrowser.Style = FolderNameEditor.FolderBrowserStyles.ShowTextBox;
}
[ STAThread ]
public static void Main() {
FolderNameEditor folderNameEditor = new FolderNameEditorEx();
string result = folderNameEditor.EditValue(null, null, null) as string;
if (result != null) {
MessageBox.Show(result);
}
}
}
どこまで希望どおりのことができるかわからないけど、
とりあえずヘルプでFolderNameEditorまわりを見てちょ。
P/Invokeでやるとなると、かなりたいへんそうね...。
17 :
デフォルトの名無しさん :01/10/08 15:42
>>16 どうもありがとうです。
単にテキストボックスにフォルダ名を入れたいだけなので
ソースを参考にすぐできました。
これからもよろしくお願いします。
もうちょっとよくFolderNameEditor見よっと…。
C#でDirectXを使うサンプルを見てみたけど、 DirectX7だった。 しかもVB用のライブラリを使っている? 鬱だ。 DLLを直接インポートすればDirectX8を使えるだろうけど、 Direct3DXは使えないってことだよね?
>>18 俺も同じく。
で、やっぱりVB用なんだけどDx8vb.dll(だっけか?)をtlbimp.exeでラップしたけど
CreateDeviceで例外発生…。
某MLで「外人が配ってるDLLでOK」って書いてあったけど、そいつは参照設定すらできなかった。
鬱だ。
ちなみにDirect3DXはdx8vb.dllには入ってるみたいだよ=使えるかも。
>>19 vbのDirect3DXはサブセットだったと思います。
サブセットというのも気が引けるくらいしょぼかったような。
趣味でやるからこそ、3dxみたいなサポートライブラリが重要なのに…。
>>21 情報サンクスです。早速バイナリエディタでID部分を書き換えてみましたが…。駄目でした。
漏れはなんか別の理由でハマってるのかも…。
ちなみに
>>19 で逝ってた外人の作ったDLLってそれの事です。
HRESULTからの例外ってなんジャロー。
>>22 バ、バイナリエディタ...?
ildasm → テキスト編集 → ilasm よん。
え”? 7385E4DF のところを 7385E5DF に書き換えればいいんじゃなかったんすか? ちょいと間違えてた模様。今からやってみます。
と思ったらildasmが無いよ〜。 VisualStdio β2で入るFrameworkSDKには無いのかな?
>>25 パスが通ってないのよん。
スタートメニューのVS.NETのところにコマンドプロンプトがあるでしょ?
そこからやるといいよん。
>>26 何から何までありがとうございます。でもなんでファイルの検索に引っかからないんだろう? < ildasm
Administratorじゃなきゃ見れない位置にあるんだろうか…。
で…やってみたけど駄目でした。やはりバグ以前に私のプログラムに問題アリの模様です(w
↓該当部分のソースなんですけど、なんかおかしいですかね?
DxVBLibA.Direct3DDevice8 d3dDevice;
D3DDISPLAYMODE d3dDisplayMode = new D3DDISPLAYMODE ();
d3d8.GetAdapterDisplayMode ( 0, ref d3dDisplayMode);
DxVBLibA.D3DPRESENT_PARAMETERS d3dpp = new D3DPRESENT_PARAMETERS ();
d3dpp.Windowed = 1;
d3dpp.BackBufferWidth = 640;
d3dpp.BackBufferHeight = 480;
d3dpp.BackBufferCount = 1;
d3dpp.SwapEffect = DxVBLibA.CONST_D3DSWAPEFFECT.D3DSWAPEFFECT_COPY;
d3dpp.BackBufferFormat = d3dDisplayMode.format;
d3dpp.EnableAutoDepthStencil = 1;
d3dpp.AutoDepthStencilFormat = DxVBLibA.CONST_D3DFORMAT.D3DFMT_D16;
d3dpp.hDeviceWindow = (int)picMain.Handle;
d3dpp.FullScreen_PresentationInterval = (int)DxVBLibA.CONST_D3DPRESENT_INTERVAL_FLAGS.D3DPRESENT_INTERVAL_IMMEDIATE;
//d3dDevice = d3d8.CreateDevice (0, DxVBLibA.CONST_D3DDEVTYPE.D3DDEVTYPE_HAL, (int)picMain.Handle, (int)DxVBLibA.CONST_D3DCREATEFLAGS.D3DCREATE_SOFTWARE_VERTEXPROCESSING, ref d3dpp);
d3dDevice = d3d8.CreateDevice (0, DxVBLibA.CONST_D3DDEVTYPE.D3DDEVTYPE_REF , (int)this.Handle, (int)DxVBLibA.CONST_D3DCREATEFLAGS.D3DCREATE_SOFTWARE_VERTEXPROCESSING, ref d3dpp);
28 :
デフォルトの名無しさん :01/10/08 21:40
SDKじゃなくてRedist版でもソフト作れるの? 両者の違いは何ですか?
>27 例外の内容を書いてみたら? どこで起きて、どういうメッセージか。
>>27 さ、さっぱりわからん...。
漏れには未知の世界。ごめんちゃい。
>>28 いちおうコンパイラがあるから、「できなくもない」というレベルね。
redist版だとドキュメント・サンプル・便利なツール群がないのでかなりたいへん。
素人な質問ですが‥ stringの文字列"123"をintの123に変換するにはどうすればよいのでしょうか どうしてもわからずにこんなのを書いてる始末です. string a = textBox1.Text; for (i = 1; i < 999; i++) { if (i.ToString() == a) break; } 鬱...
>>33 ありがとうございます!
はやくC#の解説書が出ることをキボン.
>>32-33 System.Convert クラスの ToInt32 メソッドを使うという手もありだね。
みなさんどこで勉強してるんですか?
38 :
デフォルトの名無しさん :01/10/08 23:39
トイレの個室
39 :
デフォルトの名無しさん :01/10/08 23:41
>>37 漏れは試行錯誤。
MSDN を見ながら適当にやってます。
どうしてもわからないことがあれば google で検索するくらいかな。
では1ヶ月程トイレにこもってきます.
前スレにいくつかリンクがあるよ
42 :
名無しさん♯ :01/10/09 02:35
厨な質問で申し訳ありませぬが・・・ ビットマップから非矩形のウィンドウを生成するには、 幾多のWebサイトで言及されているように、「1ピクセルずつ走査」しなければならないんでしょうか? BitmapクラスやRegionクラスなどを見てみましたが、「ビットマップ→リージョン」と直接変換するよーなメソッドは やっぱり無いんでしょうか・・・
>>44 漏れはGDI+は守備範囲外なんだけど...、
そういうメソッドはちょっと見つからなかった。
他のサイトでもそう言ってるなら、多分ないのだと思われ。
>>45 ありがとうございます。
幾多のWebサイトであがっているコードはすべてC++かVBによるもので、C#によるものは無かったんです。
それで、もしかしたら・・・と思い質問したのですが・・・
自力でがむばってみます(ちょっと泣)
47 :
デフォルトの名無しさん :01/10/09 20:16
Brushを使ってこういうコードを書いたんですが private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { Graphics g = e.Graphics; Rectangle r = ClientRectangle; LinearGradientBrush lb = new LinearGradientBrush(r, Color.Red, Color.Yellow,LinearGradientMode.BackwardDiagonal); g.FillRectangle(lb, r); } フォームのリサイズを繰り返すと四角の跡が残ってしまいます。 そこで再描画するようにしたんですが public Form1() { // // Windows フォーム デザイナ サポートに必要です。 // InitializeComponent(); // // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。 // SetStyle(ControlStyles.ResizeRedraw,true); } 今度はちらつきがひどすぎます。(T_T) 何かうまく描画する方法はないでしょうか?
>>48 >>47 じゃないけど、そこを参考にして SetStyle... を書いたんじゃないかな?
ごめん、一番下にちらつかない方法がかいてあった。
>>48 レスありがとうございます。
SetStyleをやめてResizeイベントで描画するようにしたら、
うまくちらつかずに描画することができました!!
ところが、ウィンドウを最小化したらプログラムが落ちてしまいました。(T_T)
やっぱり無理なのでしょうか。
描画の前にウィンドウの状態を見るようにしました。 private void Form1_Resize(object sender, System.EventArgs e) { if (WindowState != FormWindowState.Normal) { Graphics g = CreateGraphics(); Rectangle r = ClientRectangle; LinearGradientBrush lb = new LinearGradientBrush(r, Color.Red, Color.Yellow,LinearGradientMode.BackwardDiagonal); g.FillRectangle(lb, r); } } これで何とかできました。ご協力ありがとうございました。
if (WindowState == FormWindowState.Normal) { の間違いでした。すみません。
54 :
デフォルトの名無しさん :01/10/09 22:12
>>52-53 それだと最大化したときに描画されないから、
if (WindowState != FormWindowState.Minimized) {
のほうが良いと思うよん。
>>47 これでもOKよん。ご参考までにどうぞ。
public Form1() {
InitializeComponent();
SetStyle(ControlStyles.ResizeRedraw, true);
SetStyle(ControlStyles.Opaque, true);
}
これだと、Resizeのハンドラはなくても大丈夫。
マイクロなのにビッグとはこれいかに。
58 :デフォルトの名無しさん :01/10/10 00:54
まあまあ、みんな喧嘩しないで仲良く
言語のカーストを決めましょう。
61 :デフォルトの名無しさん :01/10/10 00:55
>>58 末端(どれい)は、VC,VB,VC#,VJ++,.NETでいいか?
58 :
デフォルトの名無しさん :01/10/10 01:26
Del厨って本当にウザイね
58=802です、 すいません、ご迷惑をおかけしますが 802は精神病なので相手になさらないでください。
60 :
デフォルトの名無しさん :01/10/10 01:32
>末端(どれい)は、VC,VB,VC#,VJ++,.NETでいいか? いいよ。 やっぱDelphiが最高だな。
60=802です、 すいません、ご迷惑をおかけしますが 荒せれば802は何でもいいのです。 802は精神病なので相手になさらないでください。
62 :
デフォルトの名無しさん :01/10/10 01:41
昨日VS.NETをインストールして使ってみたけど、すぐ消してディスクも捨てたよ。 Delphiの方が全然良いね。 C#なんて正式にリリースされる前に消滅すればいいのに(w
63 :
デフォルトの名無しさん :01/10/10 01:41
168 名前:デフォルトの名無しさん :01/10/10 01:40
>>167 いや、所詮C#はJAVAの猿真似
64 :
デフォルトの名無しさん :01/10/10 01:42
65 :
デフォルトの名無しさん :01/10/10 01:43
66 :
デフォルトの名無しさん :01/10/10 01:45
Del厨がJava厨のフリをしてるよ(笑
次はこのスレか。(藁
68 :
デフォルトの名無しさん :01/10/10 01:46
Delphiユーザーって本当に卑屈で姑息だね
69 :
デフォルトの名無しさん :01/10/10 01:47
134 名前:デフォルトの名無しさん :01/10/10 01:40
>>127 正直言ってC#不利だろうね。サーバーで勝てないから。
70 :
デフォルトの名無しさん :01/10/10 01:47
134 :デフォルトの名無しさん :01/10/10 01:40
>>127 正直言ってC#不利だろうね。サーバーで勝てないから。
136 :デフォルトの名無しさん :01/10/10 01:42
C#で何をやるかが判然としてないと思うんだけど。
なんでもできます!って言ってるだけだよね、今。
137 :デフォルトの名無しさん :01/10/10 01:44
結局はDelphi2世に成り下がると思う。>C#
139 :デフォルトの名無しさん :01/10/10 01:44
C#も企画ダオレだろ?
71 :
デフォルトの名無しさん :01/10/10 01:48
73 :
デフォルトの名無しさん :01/10/10 01:49
そう言えばDelギコもC#にケンカを売ってたよな。 「Delphiの方が遥かに上なんだよ!」と言わんばかりの勢いだった。 難癖ばかり付けてたよ。
とうとうC#スレまで(;´Д`)
名無しさん♯ さん、すいません。 802は基地害なんです。
76 :
デフォルトの名無しさん :01/10/10 01:52
JAVA厨JAVA厨うるせえよ、お前Del厨だろ(笑
77 :
デフォルトの名無しさん :01/10/10 01:53
もともとDelギコの他言語や他開発環境に対する横柄な態度が原因なんだけどね
78 :
デフォルトの名無しさん :01/10/10 01:54
やっぱ、C#って(中略)。
>>77 そうだね、802は何も悪くないよ。802は正しい事をしている。
あのスレは潰して当然だよね。
80 :
デフォルトの名無しさん :01/10/10 02:00
Delphiなんてヘジ留守バーグが残した過去の遺物じゃん
81 :
デフォルトの名無しさん :01/10/10 02:01
80がいいこと言った!!
82 :
デフォルトの名無しさん :01/10/10 02:03
802よりもDelギコ信奉者がウザイね こいつらしつこすぎてキモイよ なんかテロでも起こしそう(w
83 :
デフォルトの名無しさん :01/10/10 02:05
Delphi信者のせいで板が荒れ放題
Delphi信者はKylixをマスターしてLinuxのためにがんばり ましょう。Windows上のアプリをいくら作ったところで、 MSの儲けにはなりません。 というわけでこのスレは関係ないです。理解してください。
地下でマターリ再開ヽ(´ー`)ノ
> Microsoft said Visual J#.Net will be available for download in a test > version later this week from Microsoft's Web site. もう落とせるじゃん。(w
90 :
デフォルトの名無しさん :01/10/10 10:08
MS,こんなに嫌がらせしていると いつか、Java原理主義者からテロくらうのではないかな
Introduction to Visual J# .NET
http://www.codeproject.com/dotnet/intro_vjsharp.asp > This is a set of new tools for those wishing to
> develop using the java-language syntax.
> "Java Language Syntax" is the important point here.
> It is not Java - it's J#.
>>92 おお、ありがと。さすがはCodeProjectね。
こっちの方が雰囲気がつかめるね。(delegateとattributeの扱いもわかったし。)
>>90 >他の方も.NET絡みで面白い文書持ってるぞ、という人がいたら、(差し支えなければ)、このスレッドで紹介してもらえませんか?
>もう、このスレッドだけはageだの藁だのが溢れても許すしかないですね
もう止められない止まらない
J#だぁ?ざけんじゃねーぞゴルァ!!
96 :
デフォルトの名無しさん :01/10/10 16:19
先生オナニーの仕方を教えて下さい 本当にわからないんです さきこちゃんがオナニーしなきゃあダメだよー って言ってたから
97 :
デフォルトの名無しさん :01/10/10 16:26
こんな糞スレ使い道が無いからDelphi初心者スレとして再利用しよう
C#対JAVAならわかるが、何でC#対Delphiになるんだろ?
Del厨でもJAVA厨でもなんでもいいから、マターリ進行しましょうぜヽ(´ー`)ノ 煽りは無視無視。
101 :
デフォルトの名無しさん :01/10/10 18:26
インデクサーって普通の配列と見間違えやすいと思うんだけど、 なんであんなのが必要なの?
102 :
デフォルトの名無しさん :01/10/10 18:36
>>101 インデクサには文字列とかいろいろ指定できるから、連想配列みたいなことができる。
System.Collection.Hashtable クラスを見てみるとよさげかも。
using System.Collection;
// ......
Hashtable ht = new Hashtable();
ht["test1"] = 5;
ht["test2"] = "test";
ht[true] = 10;
みたいな。
Hashtable のインデクサは object なので、クラスでも何でも指定できるね。
>>102 の続き。
実際には System.Collecion.ArrayList のインデクサみたいに使うのが望ましいかと。
そういえば String クラスもインデクサを持っているね。
>>103 連続投稿スマソ。
Console.WriteLine("System.Collecion.ArrayList".Replace("Collecion", "Collection"));
鬱打氏脳...
無くても困らん
Javaのパクリって言われるのを防ぐために無理やり追加した機能?
Delphiのプロパティからきているような・・・
どっかでFreeのC#とかって見た気がするんだけど、どこかでプロジェクトとか 立ち上がってませんでしたっけ? Del厨だのJAVA厨だのが目の敵にするのってやはりM$の技術っていうイメージがあるからで、 C#自体はすごくいい言語体系だと思うのだけど。
111 :
Meだからできないんだけど :01/10/10 23:41
あほみたいなことですいません C#でもDirectXプログラミングできるんですか?
>>111 DirectXならすでにこのスレで語られてるよ。
CLRに関して説明したサイト、文献はまだ英語のものしかないのかな? もし誰かご存知であれば教えて下さい。無ければSDKについていたものを がんばって読みます。
J#ってどうなの? C#、VBに並ぶメジャー言語になるわけ?
>><STRONG>.NET</STRONG>バブル、そんなバブル存在しましたか? ネタ振ってくれるのはいいんだけどもうちょっと著名人のネタ 探してきてよ。
その人はプログラマ板ですごいバカにされていたな。
今日の日記だから
>>121 は毎日みているんだろうけど
見ない方がいいよ、DQNがうつる。
>>121 顔写真を見た感じでは変な人には見えないけど、日記見ると変な人。
XMLにこだわってる割にはタグ名が大文字なんですね。 ま、いいか。(゚ε゚)キニシナイ!! ってことで。
126 :
デフォルトの名無しさん :01/10/11 17:58
.NET擁護に必死だな。(プ
>>126 .NET叩きに必死だな。(プ
よっぽど怯えてんだろうな。(ゲラ
まさか、802ぢゃあないよね。
>>121 .NETを支持しようがしまいが、こういう言動は不快だ。
さすがは無神経な関西人だな。> DQNいが
一緒にするな! いがは関西追放だ。 さすがはミーハーでCOBOLER引継ぎJava使いだな。> DQNいが
このスレ死にかけ・・・
132 :
デフォルトの名無しさん :01/10/11 18:35
Del厨に荒らされちゃったね
思う壺
134 :
デフォルトの名無しさん :01/10/11 20:06
VS.NET使う奴はヘタレ。 SDKでCUIでやるのが真の漢。
必死だな。(藁
どっちもやれ、いい仕事したいなら。 どっちかしかやらないようなやつがいがみたいなのに なるんだよ。技術なんだからケースに応じて選択すれば いいんだよ。 というかどっちかしかやらないですむ人が羨ましい。
この人はGUIもつくれるけど典型的なCUIプログラマだね。
http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_013/csharp_abc01.html イベントの説明をCUIでやらかす愚考を海外の書籍を含めて今まで見たことはないよ。
GUIも途中で出てくるが最後がButtonのイベントハンドラ共通化止まり。
そして結論が
> イベントは既存のプログラム言語にはあまり見られない機能である。しかし、C#のイベ
>ントは、潜在的な能力と可能性が高く、うまく使いこなせば、込み入ったプログラムをす
>っきり記述できる可能性を持つ。多くのオブジェクト指向言語に見られるように、何でも
>継承を使って問題を解決しようとしても、上手く機能しない場合がある。その意味でもイ
>ベントの活用は1つの課題と言えるだろう。
かわいそうだが才能ないな。この講座を受け持つには不適格。
うまく使いこなした経験はないらしい。
どうでもいいけど荒れすぎ。(藁
>>120 > J#ってどうなの?
> C#、VBに並ぶメジャー言語になるわけ?
それはないと思う。あくまでマイグレーションツール止まりね。
名前もJUMP(Java User Migration Path)だったわけだし。
>>119 のリンクにもあるけど、J#はプロパティ・イベント・デリゲートの
定義ができないから、新規クラスを作るにはとても使えないと思う。
J#でJ++資産のラッピング(IL化)をして、
あとはC#なりVBで再利用・拡張するというシナリオだと思うよん。
139 :
デフォルトの名無しさん :01/10/11 21:11
なんでSDKはWin98で使えないんだよバーカ
>139 98なんて化石OS使うなヴォケ。
141 :
元VC++ユーザ :01/10/11 21:29
C#いいですねー、簡単、高機能とはまさにこのこと。 簡単にフォームを半透明にできるのには思わず笑ってしまった。 VS.NET7.0の製品版っていつ出るの?
パッケージとしては来年
来年が楽しみだ。
>141 Delphiでも簡単にできます
>141 VisualBasicでも簡単にできます
VisualC++では簡単にできません
147 :
デフォルトの名無しさん :01/10/11 21:40
Delphi>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>C#=Ruby
ラディン>>>>>>>>>>>>>>>>ブッシュ>>>>>>>>>小泉>>>>>>>>>>>>>>>>>>>>>>>>キョセン
149 :
デフォルトの名無しさん :01/10/11 21:47
Delphiとの論争を邪魔するようで申し訳ありませんが, VS.NETでC#は普通にビルドできるのですが, C++のプロジェクトをビルとしようとすると, >error PRJ0016 : このユーザーのセキュリティ設定が原因で、 >プロセスを作成できません。これらの設定はビルドで必要です。 とエラーがでます.Win2kでアドミン状態なのにです. どうしたらよいのでしょうか?
Beta2はあと2週間の命です。 今さらBeta2を必死でやっても無駄です。
>>154 もうすぐRC版が出るということよん。
そっか、漏れもVS.NETβ2入れたばかりなのに...。
156 :
デフォルトの名無しさん :01/10/11 22:12
>>149 それ、おれもなるよ。
今はC#にはまってるので放置してるが。
ていうか、なぜC#相談室でその質問?
変なのが荒らしてるからいまさら何も言わないが。
今のVSβで新しいSDKを使うことは出来るんですか?
158 :
デフォルトの名無しさん :01/10/11 22:20
名無しさん♯さんはSDK派ですね。 さすが、できる人はCUI使いですね。
159 :
デフォルトの名無しさん :01/10/11 22:22
Ruby最高だね。
おれが見てきたなかでもJava使いの出来る人はSDK使ってたな。 IDEでデバッグしてるような人なんかより、全然早い。
>>158 CUI、GUI派かは、出来る出来ないとは関係ないだろ。
出来る奴は何やっても出来る。
駄目な奴は何をやっても駄目ってこと。
>156 他の方でも再現性があるのですね.有難うございました. 僕もC#にはまってたんですが,昔のプロジェクトを少しいじる必要がでてきて.. >ていうか、なぜC#相談室でその質問? .NETスレよりも,こちらの方が人が集まっているようでしたので.. でも,予想とはちょっと変わった方々が集まっているようで....
>163 出来ました.なんてお礼を言ってよいのでしょうか. 本当に有難うございます. コンパイルしたら,今までは無かった警告がわんさか.. 皆様,どうも有り難うございました.
>>163 おれも出来た。どうもありがとう。
C#いじってからVC++のMFC見るとさすがにごちゃごちゃしてるね。
独自拡張可能なAttributeの威力。 デレゲートを使ったメソッドの非同期呼び出し。 接続プロトコルとは独立したリモートオブジェクトのアクティベーション。 Webアプリのシンプルさと、サーバーサイドコントロールの拡張性の高さ。 その他諸々... サンプルをいじったり、テストアプリを作って動作を確認するたびにマンセー!! Java他でもいろいろ出来なくは無いけど、これほどのレベルの物をこんなに 敷居を低くして、インストールしたらすぐ使えるようにしてしまうなんて... 実際にいじっている方<これって画期的ではないですか? 何の先入観も無くこれをいじって、何も感じない人って技術者としては 終わってるような気が...
>166 激しく同意。 でもね、「M$だからダメ〜」とか言って触りもしないで切り捨ててる 自称「プロ」(プ もいるんだよ。ヴァカとしか言いようがないね。
>>167 IGAさんを馬鹿にするのはやめてください
>接続プロトコルとは独立したリモートオブジェクトのアクティベーション SOAPとかもOKなの?
いつも思うことだがMicrosoftの功罪は、HTTPすら分からない
人とかにインフラ系サービスの見た目の敷居を低くしすぎていることだね。
DelegationEventModel,XML-RPCとかは別に全然新しくも無いのに、
それらがBlackBoxとなってしまった人たちとMFC使いには、問題の
原因が何処にあるのか解決するすべが無い。
webアプリって表現はあまりにも...
>>116 あなたの言う「技術者」とは何ですか?
回路設計からファームウエア,OS,UIデザインまでを全てこなす人。
Execl-MacroやQuick-BasicでDesignPatternsについて悩む人。
メインフレームで既存src→COBOL2002移行時にダウンタイムを計算する人。
RPCに夢を見てる人。(いまさら始まっちゃたりしてるぅ?
お前はC#にしたいんだけど会社は多分VB.NETとかやり出すと予想してみる..(wラ
ちなみに漏れは
>>166 と同類にされたくないが、VisualStudio.NETとBizTalkに感動。
IGAぴょん、バカにすんなよ!
>>171 バカにはしてないよ。それにこの人現場での面倒見は
よさそうじゃん。悪い人じゃなさそうだし。
バカにされてるのは年取って凝り固まった考えかた。
173 :
デフォルトの名無しさん :01/10/12 02:32
いつになったらマイクロソフトからC#のコンパイラの製品版出るの?
>171 メール欄(藁
結局VC++.NETじゃんか。
既出ネタだが、 Office2000アンイストールしてドキュメント開くとインストーラ暴走 →SDKアンインストール →SDKインストール →Office XP入れたらまたしてもインストーラ暴走 →SDKアンインストール →SDKインストール いやこの前にも何度もこのせいで再インストールしてるんだが…。 ウィンドウズインストーラ逝ってよし。 ついでにIME2002も最悪。
179 :
デフォルトの名無しさん :01/10/12 16:40
VS.NETβ2を入れたらIE6のせいか、Webのブラウジングが不安定です。 2chのスレッドでクリックしても反応しないものがあります。 C#の基本的な文法を学ぶだけでも年内が過ごせそうだから、SDKだけを インストールしたいのですが、SDKだけせんたくできますか? IE6をIE5.5に戻す方法はありますか?
>>179 それってVS.NETベータ2に付いてたやつ?
正式版を上書きすれば解決するかと・・・。
あぼーん
あぼーん
>>183 おまえがうざい!!
それからC#以外の話をするやつもうざい
>>184 ごめんちゃい。最近J#の話しかしてません...。
>>187 誰だ〜!!こんなこと書いたのは!!ヽ(`Д´)ノ
ニセモノだったのか。ビクーリしたよ。
荒らされてもマターリしてるな(藁
>170 敷居が低いのは、いいことじゃん。 楽になるのは大歓迎さ(^◇^) DQNが増えるのは仕方なし。 解決するすべが無いままに何もしないでいるのなら淘汰されるだけ。 技術者? スレ的に、C#のターゲットとしている領域でおご飯を食べている人達。 なんにしても、気持ち良く作業できそうな環境がひとつ出てきたっていう だけで、うきうきしてしまうぞ。 しょせん道具なんだし、よく見極めてうまく使えば良し! ところで、アポーのWebObjectのEOFだっけ、ADO.NETのDataSet周りって あれのパクリ? どちらも深く知らないんで、言いがかりかもしれないけど。
Professional C# (wrox)はいい本だ。英語だけど。
非矩形ウィンドウの質問をした者でございます。 その後、以下のコードを組んで非矩形ウィンドウを実現したが、 ウィンドウバーの高さを知ることが出来てないため少々不恰好になって候。 当方調査中ですが、直ぐにお分かりになる方あれば、是非ご教示くだされば幸い也。 using System; using System.Drawing; using System.Windows.Forms; class ImageForm : Form { Bitmap bitmap = null; Graphics graph = null; Region region = null; // Window Title Height 暫定値。 int wth = 50; // メインフォームだよ public ImageForm (){ bitmap = new Bitmap("test.bmp"); // ビットマップ読み込み失敗したら、速攻終了だ if (bitmap == null) { Application.Exit(); } // 最左上端を透過色にする bitmap.MakeTransparent(); region = new Region(new Rectangle(0, 0 + wth, 1, 1)); // 透過色部分をウィンドウリージョンに加える for(int i=0; i<bitmap.Height; i++){ for(int j=0; j<bitmap.Width; j++){ if(bitmap.GetPixel(j, i).A != 0){ region.Union(new Rectangle(j, i + wth, 1, 1)); } } } this.Height = bitmap.Height + wth; this.Width = bitmap.Width; this.Region = region; this.FormBorderStyle = FormBorderStyle.None; } protected override void OnPaint(PaintEventArgs pea) { graph = pea.Graphics; graph.Clear(Color.Gray); } public static void Main(){ Application.Run(new ImageForm()); } }
>>195 DllImportでGetSystemMetrics
ウィンドウバーの高さって SystemInformation.CaptionHeight のことかな。標準の18だとボーターと合わせてか19になるみたい。 でもこれの必要性が?
198 :
デフォルトの名無しさん :01/10/14 13:20
C#の登場によって、VBやC++の位置づけはどのように変わるのでしょうか。
>>196-197 お答え頂き、有難う御座います。
CaptionHeightを取ることで解決しました。
必要性はと問われると・・・
当方、「test.bmp」は 縦40×横440の領域に48Pの文字を入れてテストをしました。
CaptionHeightが無い場合・・・タイトルバーの高さ分、文字上部が切れて表示されなく
なるのです。
「すわこれは瑕疵か?」と思い、this.FormBorderStyle = FormBorderStyle.None; を
コメントアウトして実行した処・・・先程まで切れていた領域がキチンと表示されているでは
ありませんか!・・・青いグラデーション付きで。
ちなみに、青いグラデーション部分をドラッグすると、リージョンウィンドウが移動できます。
>>198 そんなには変わらないと思われ。
それに、それぞれC#より優れてる部分もあるわけだし。
VB.NET : COMとのinteropに長けている。また、VSAマクロの中心言語。
MC++ : Unmanaged APIとの親和性が高い。
C#はVBとC++の中間、という感じなのかな。
亀レス。
>>169 HttpChannelはSOAPを使ってるよん。
実際のファイルシステムを扱うんじゃなくて、 論理的ファイルシステムをExplorerみたいな感で 扱えるソフトを作りたいんですけど、なんか適当なコントロールとかないでしょうか? イメージ的にいうとFTPExplorerみたいな感じのソフトを作りたいんです。 PictureBoxとか使って地道に実装しないと駄目でしょうか?
age of empires
204 :
デフォルトの名無しさん :01/10/16 22:47
>>202 TreeView と ListView を使ってみるとか。
205 :
デフォルトの名無しさん :01/10/17 01:10
C#未経験者です。 現在VC++使ってます。 C++が使えればC#って余裕ですか? C#とC++ってどっちが高収入が期待できますか? 話しは変わりますが WindowsXP が出たら買った方がいいですか? 現在は Win98 です。
207 :
デフォルトの名無しさん :01/10/17 01:34
C#に未来はないでしゅ。
Cわっほー
209 :
デフォルトの名無しさん :01/10/17 05:34
>207 まじっすか? .NET はおいといて、C# っていう言語自体にはちょっと萌えてるんですが。 でもほかのプラットフォームでも C# 処理系がでてこないとなぁ。
VBプログラマがC#になれたらVB.NETを切り捨てて Haskell.NETに力を入れて下さい>MS様
211 :
デフォルトの名無しさん :01/10/17 17:04
>211 そのリンク、β1だぞ。。。 β2のDVD-ROMなら、先月出た雑誌におまけでついてる。
213 :
デフォルトの名無しさん :01/10/17 17:56
>>212 レスありがとうございます。早速探してきます。
>>155 (#さん)
RC版のリリースはいつ頃ですか?
そんな話きいてしまうとβ版入れるの戸惑ってしまいます。
>>214 MSDNに入ってれば来月。
んで一般にリリースされるのは来年2月。
>>214 PDCのある来週よん。
ゲイツたんのキーノートの日(10/23)が有力ね。
もちろん、VS.NETの方はMSDN会員じゃないと落とせないからね。
それと、.NET Framework RCとVS.NET β2の組み合わせはおそらく無理だと思われ。
>>215 それはRCじゃなくてRTMよん。
でも、.NET Framework V1の来月リリースはほぼ間違いなしみたいね。
>>215 #さん
一日も早く.NETしたいのでβ2でやってみようと思います。
ありがとうございました
>>215 その.NET Framework V1かRCって一般人でも落とせるやつですか?
220 :
デフォルトの名無しさん :01/10/18 06:21
C#でプログラム言語をはじめて学ぶのですが、 .NETベータ2の詳しい操作方法について書かれた本かサイトをご存知ありませんか?
222 :
デフォルトの名無しさん :01/10/18 20:56
MSDN会員になるのって、お金が必要なの? 無料?
今なら14マンでProfessional会員になれる。 ネタだろうけど一応
>>224 !!!
着々とWebサービスを構築する基盤が出来てきてるね。
ちなみに是非#さんに聞いてみたいのだけど、
SOAPクライアントを何らかの形でActiveXコントロールとして
実装した製品はあるかな?別にサードパーティでも
βの段階でも構わないのですが。
XMLスレでは見事に無視されましたw
#さんじゃないけど。 MS SOAP Toolkitじゃダメなのかな?
>>226 >>227 ありがとう。
調べた結果報告はXMLスレにしておきますので、
よかったらみにきてください ^o^
229 :
デフォルトの名無しさん :01/10/19 18:59
オーバーライドするときnewキーワードとvirtual , overrideってどの用に使い分ければいいのでしょう。 C++使ってたのでvirtualの方使いたいのだけど、どうも使うべきじゃないって書いてるところもあるし。
>>229 newとoverride/virtualは機能が違う。↓実行してみて。
using System;
class Base {
internal virtual string CallMe() {
return "Base";
}
}
class DerivedOverride : Base {
internal override string CallMe() {
return "Override";
}
}
class DerivedNew : Base {
internal new string CallMe() {
return "New";
}
}
class c {
static void Main() {
DerivedOverride over = new DerivedOverride();
Console.WriteLine(over.CallMe());
DerivedNew dnew = new DerivedNew();
Console.WriteLine(dnew.CallMe());
Base b1 = over;
Console.WriteLine(b1.CallMe());
Base b52 = dnew;
Console.WriteLine(b52.CallMe());
}
}
でさ、DerivedOverrideを↓こう拡張したと思って。 class DerivedOverride : Base { internal override string CallMe() { return "Override"; } internal string ThisIsNotInBaseClass() { return "Really?"; } } で、何も知らないBaseクラスの開発者が、↓こういうことしたら どうなる? class Base { internal virtual string CallMe() { return "Base"; } internal virtual string ThisIsNotInBaseClass() { return "Not really"; } } これが実装の継承の欠点の1つだ。C♯はこれを避けるためにnewを 導入した。↑のコードはC♯では警告になるよ。これがnewの意味ね。 正しく使いこなせるなら、virtual/overrideを避ける理由はないね。
newってDelphiでいうreintroduce?(って分かるひといないのかも) 仮想関数を下位クラスで隠蔽する時に使う?
233 :
デフォルトの名無しさん :01/10/19 20:56
>>230 さん。丁寧なレスありがとうございました。よくわかりました。
本当にありがとうございました。
>>231 コンパらが叱ってくれるのは有難いですね。
C#(・∀・)イイ!! 123.ToString( )(・∀・)イイ!! (・∀・)Let's See Sharp!
237 :
デフォルトの名無しさん :01/10/19 21:59
>>237 「生きてたら」(笑) やっぱりCUI派の人なんすね。この川俣さん。
>>237 「オブジェクト指向との別れ」の理由は納得できるところも少なくないが、
デザパタとかは、どう認識してるのか、聞いてみたい。
いまさらなんですけど、 前回終了時の位置やフォームのサイズを記憶するにはどうすればいいでしょうか?
>>237 要はいわゆるコンポーネント指向ってことか。
センセーショナルに書きゃあいいってもんじゃねーぞ川俣。
>>240 レジストリとかiniファイル。
.NET的にはXMLの方がいいのかな。
ショック! コンストラクタにアクセスコントロールがついてたので、 コンストラクタとわからなかった!詩嚢。
.NET Frameworkにメール関連のAPIってありますか?
>>245 ありがとうございます。
これってCDOとは別物ですか?
>>247 ありがとうございます。
そうですか...。CDO以外の実装に期待したんですが...。
メール投げて遊んでみた。簡単なんだね。 悪さはできなかった。(藁
ListViewの詳細表示でカラム部分をクリックした時、 リストをソートしたいのですが、ツールボタンと同じように 分岐というイマイチな方法でないとダメでしょうか? listView1.ColumnClick += new ColumnClickEventHandler(listView1_ColumnClick); private void listView1_ColumnClick(object sender, ColumnClickEventArgs e) { if (e.Column == 0) { // ソート } }
252 :
デフォルトの名無しさん :01/10/21 06:22
基礎的な質問ですが,C#では配列演算子のオーバーロードができなくなってる‥ のでしょうか?
>>252 perlの連想配列みたいなことを配列アクセスでやってたよ。
だからできるんじゃない?
>>253 ありがとうございます.従来のC++のソースを移植しているんですが
なかなか一筋縄にはいきませんね.
C++からですか・・・ 内容によっては無理に一対一に対応させるよりも、 やり直したほうが早いかもね。
私もサンプルほしいです。 できればXMLで。
ひまだから作ってみた。(XMLのサンプル) とりあえず、というレベルね。 using System; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.IO; using System.Windows.Forms; using System.Xml; class TestForm : Form { public TestForm() { this.Load += new EventHandler(this.form_Load); this.Closing += new CancelEventHandler(this.form_Closing); } const string CONFIG_FILE_NAME = "config.xml"; private void form_Load(object sender, EventArgs e) { XmlTextReader reader = null; try { reader = new XmlTextReader( new StreamReader(CONFIG_FILE_NAME) ); int x = 0; int y = 0; int width = 0; int height = 0; while ( reader.Read() ) { if (reader.NodeType != XmlNodeType.Element) { continue; } switch (reader.Name) { case "x": reader.Read(); x = Convert.ToInt32(reader.Value); break;
case "y": reader.Read(); y = Convert.ToInt32(reader.Value); break; case "width": reader.Read(); width = Convert.ToInt32(reader.Value); break; case "height": reader.Read(); height = Convert.ToInt32(reader.Value); break; } this.Bounds = new Rectangle( new Point(x, y), new Size(width, height) ); } } catch (FileNotFoundException x) { Debug.WriteLine("Exception : " + x.Message); } finally { if (reader != null) { reader.Close(); } } } private void form_Closing(object sender, CancelEventArgs e) { XmlTextWriter writer = null; try { writer = new XmlTextWriter( new StreamWriter(CONFIG_FILE_NAME) ); writer.Formatting = Formatting.Indented; writer.Indentation = 2;
writer.WriteStartElement("configuration"); // ポジションの保持 Point position = this.Location; writer.WriteStartElement("position"); writer.WriteStartElement("x"); writer.WriteString( position.X.ToString() ); writer.WriteEndElement(); writer.WriteStartElement("y"); writer.WriteString( position.Y.ToString() ); writer.WriteEndElement(); writer.WriteEndElement(); // position // サイズの保持 Size size = this.Size; writer.WriteStartElement("size"); writer.WriteStartElement("width"); writer.WriteString( size.Width.ToString() ); writer.WriteEndElement(); writer.WriteStartElement("height"); writer.WriteString( size.Height.ToString() ); writer.WriteEndElement(); writer.WriteEndElement(); // size writer.WriteEndElement(); // configuration } finally { if (writer != null) { writer.Close(); } } } [ STAThread ] public static void Main() { Application.Run( new TestForm() ); } }
>>262 iniファイルはめんどいのでパス。ごめんちゃい。
(MFCのCWinAppみたいに、便利なヘルパーはないのよ。)
264 :
デフォルトの名無しさん :01/10/21 22:17
>>257 > 問題は、ソートの部分をどこまで簡潔に記述できるかだと思う...。
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´∀`)/< 先生!サンプルください!
_ / / / \
\⊂ノ ̄ ̄ ̄ ̄\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
||\ \
||\|| ̄ ̄ ̄ ̄ ̄||
|| || ̄ ̄ ̄ ̄ ̄||
.|| ||
>>257 ありがとうございます。
うーん、イマイチだわ。columnHeader1.Clickだったらいいのに。
ソートはメインアイテムだとこのように簡単なのですが、
サブアイテムだと自分で作らないといけないんですよね。
>>264 private void listView1_ColumnClick(object sender, ColumnClickEventArgs e) {
if (e.Column == 0) {
if (listView1.Sorting == SortOrder.Ascending) {
listView1.Sorting = SortOrder.Descending;
// columnHeader1.Text = "名前 ▽";
}
else {
listView1.Sorting = SortOrder.Ascending;
// columnHeader1.Text = "名前 △";
}
}
}
_____ /:\.____\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |: ̄\ ミ ゚Д゚ミ\< C#かっこいいじゃん!>>XML |: |: ̄ ̄U U ̄:| \__________ .______ |: :\ \ |: |: ̄ ̄U U ̄:| 挟まって痛い
>>264 実は、昼間に作成済みだったりする。(藁
using System;
using System.Collections;
using System.Windows.Forms;
class Form1 : Form
{
ListView listView1 = new ListView();
public Form1() {
listView1.Dock = DockStyle.Fill;
listView1.View = View.Details;
listView1.ColumnClick += new ColumnClickEventHandler(this.listView1_ColumnClick);
// カスタムComparerを設定
listView1.ListViewItemSorter = new Comparer1();
// とりあえず3列作る
ListView.ColumnHeaderCollection header = listView1.Columns;
header.Add( new ColumnHeader() );
header.Add( new ColumnHeader() );
header.Add( new ColumnHeader() );
// データを設定(この時点では並べ替えなし)
ListView.ListViewItemCollection items = listView1.Items;
items.Add( new ListViewItem(new string[] { "bbb", "ccc", "aaa" }) );
items.Add( new ListViewItem(new string[] { "aaa", "bbb", "ccc" }) );
items.Add( new ListViewItem(new string[] { "ccc", "aaa", "bbb" }) );
this.Controls.Add(listView1);
}
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e) {
Comparer1 comparer = listView1.ListViewItemSorter as Comparer1;
if (comparer.SortColumn == e.Column) {
if (comparer.Sorting == SortOrder.Ascending) {
comparer.Sorting = SortOrder.Descending;
}
else {
comparer.Sorting = SortOrder.Ascending;
}
}
else {
comparer.SortColumn = e.Column;
comparer.Sorting = SortOrder.Ascending;
}
listView1.Sorting = comparer.Sorting;
listView1.Sort();
}
class Comparer1 : IComparer { public Comparer1() { } SortOrder sorting = SortOrder.None; public SortOrder Sorting { get { return sorting; } set { sorting = value; } } int sortColumn = 0; public int SortColumn { get { return sortColumn; } set { sortColumn = value; } } public int Compare(object x, object y) { if (sorting == SortOrder.None) { return 0; } string s1 = (x as ListViewItem).SubItems[sortColumn].Text; string s2 = (y as ListViewItem).SubItems[sortColumn].Text; if (sorting == SortOrder.Ascending) { return s1.CompareTo(s2); } else { return s2.CompareTo(s1); } } } [ STAThread ] public static void Main() { Application.Run( new Form1() ); } }
269 :
デフォルトの名無しさん :01/10/22 00:20
>>267-268 すごい!!ありがとうございます!!
でも、
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(; ´∀`)/< 先生!サンプルが難しいです!
_ / / / \
\⊂ノ ̄ ̄ ̄ ̄\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
||\ \
||\|| ̄ ̄ ̄ ̄ ̄||
|| || ̄ ̄ ̄ ̄ ̄||
.|| ||
271 :
デフォルトの名無しさん :01/10/23 00:59
>272 ワラタ
275 :
名無しさん♯ :01/10/23 10:37
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚彡 < そういえば、ソースをアプする場所はこちらがありあます。
,;゙ ミ \_____________
ミ. ミ
/゛゛゛゛
ソース置き場
http://www2.to/source 元はDelphi系から立ち上がってますが、
違う言語でも、OKというか「誰でも自由に利用」となっております。
お気に召しましたらご利用くださいな。
ってフサは管理者でもなんでもないのですが、ご紹介です。
ではではー。
>>276 なかなかやるね。
> The result?
> The exact same application functionality was
> implemented in just 1/3 the code using C#/ASP.NET,
> and it performs up to 28 times faster than previsouly
> published benchmarks of the J2EE application.
280 :
デフォルトの名無しさん :01/10/23 19:03
The Visual Studio .NET Release Candidate is recommended for users who have not installed Beta 2, or users previewing the .NET Compact Framework and Smart Device Extensions. Users of Visual Studio .NET Beta 2 may install the Release Candidate; however, the Release Candidate contains fewer features (this is the Professional Edition whereas Beta 2 is the Enterprise Edition), and a time bomb will prevent usage of the Release Candidate after February 28, 2002. Beta 2 users will probably choose to wait for the final release of Visual Studio .NET, scheduled for late in the fourth quarter 2001.
281 :
名無しさん♯ :01/10/24 08:02
284 :
デフォルトの名無しさん :01/10/24 18:04
WriteFile(hFile, szStr, strlen(szStr), &dwAccBytes, NULL); これでやってて、szStrが65535バイトを超えた時点で、 strlen=116なぞを返してきました。 つまりszStrはもともと16ビットのunsigend int(結構しらべても 出てないもの)だから上限は65535っていうことなの? lstrlen使えば32ビットに拡張されるでしょうか? 実はせっかく書いたソースがいきなり116バイトになってしまったので ひやひやもんだった。退避していてよかった・・・・
285 :
通りすがりのプログラマ :01/10/24 20:18
284はすれちがい。。
C#勉強してるんですが日本語ドキュメントの「C# のご紹介」文章の refキーワードのところサンプルコードのSwap関数間違ってるね。 static void Swap(ref int a, ref int b) { int t = a; a = b; b = a; } b = a; は b = t; ですよね。なんとなく気になった。どうでもいいのでsage
SDKダウソはまだですか?
>>289 どうやら出ない説が濃厚ね。
MSはなるべくβ2使ってくれというスタンスだし、
SDK V1がすぐに出るからあまり意味がないのかな...?
V1はいつなの?
>>291 11月の中頃とか言われてるよん。
おそらくCOMDEXあたりだと思われ。
C#を学んでるものです。delegateについて聞きたいのですが。 以下のソースでコメントアウトしてるところにdelegeteを宣言すると 「名前空間"PrintAll'が見つかりません」と怒られます。 コメントアウトしてないところのdelegeteの宣言ではうまくいきます。 なぜでしょう?そう言う物なんでしょうか。根本的に何か理解不足の ような気がしますが。よろしくお願いします。ソース突っ込みどころ 満載ですが、ご容赦ください。
namespace delegateTest { using System; delegate void PrintAll( object o );//うまくいきます public class Test { //public delegate void PrintAll( object o );//うまくいきません。 public void PrintText( object text ) { Console.WriteLine( (string)text ); } public void PrintInt( object Integer ) { Console.WriteLine( ((int)Integer).ToString() ); } } public class MainClass { static void Main() { Test test = new Test(); PrintAll delegateModule = new PrintAll(test.PrintText); delegateModule( "string" ); delegateModule = new PrintAll(test.PrintInt); delegateModule( 123456 ); } } } }
>>293-294 delegateの宣言は、IL的に見れば1種の型宣言よん。
つまり、Testクラスの中でdelegateを宣言すれば、
nested typeとして扱われるということ。
なので、PrintAllをTest.PrintAllと書けばOK。
Test.PrintAll delegateModule = new Test.PrintAll(test.PrintText);
296 :
デフォルトの名無しさん :01/10/26 00:21
>>295 レスありがとうございます。レスのとおりしたらうまくいきました。
>nested typeとして扱われるということ
ここら辺りまで理解できておりません。
インスタンスのtest.PrintAllとしてはまっておりました。勉強しないと。
このスレで話題の川俣さんのC#入門なんだけど、delegateの説明しないで イベント説明してるね。絶対意味わかんないよあれじゃ。 サンプルコードもあれだしな。 delegateつながりということで、、.
298 :
デフォルトの名無しさん :01/10/26 11:53
.NETでUDDI用のAPIはないんですか? ドキュメントを見ても見つからなかったもので。
あぁぁぁ・・・ 川俣さんより名無しさん#大先生のほうが上だった。
delegateとeventの違いって、分かるようで分からない。。。
川俣と比べるのは失礼だろう。 あんな低い人と比べたらレベル測れない。
302 :
デフォルトの名無しさん :01/10/26 13:26
>>300 私も分からないです。複数の関数を指せるくらいしか違いわからない。
それとイベントの呼び出し?に制約があるってことくらいしか。
あとEventArgs Classもわかない。EventArgs is the base class for event dataって
ヘルプに書いてるけど、event data ってなんでしょう?
たのむからこのスレに変な名前は出すな
>>300 delegate : 型の宣言,event : クラスメンバーの宣言ということで、根本的に違うよん。
eventと比べるべきは、delegateの「インスタンス」の方ね。
いちばんまぎらわしいのはこういうやつかな。
delegate void SomeDelegate();
class Test
{
public SomeDelegate Hoge;
}
class Test2
{
public event SomeDelegate Hoge;
}
両方共通でできることは、
・+= でメソッド追加
・-= でメソッド削除
・クラス内部から、= でメソッド代入
・クラス内部から、メソッド実行
一方、eventではできないことは、
・クラス外部から、= でメソッド代入
・クラス外部から、メソッド実行
あと、eventは(propertyと同じで)abstract,override,sealed,virtualで宣言できるよん。
つまり、見た目はフィールドっぽいけど、ふるまいはメソッドだということ。
なので、フィールド対プロパティみたいな感じでとらえるといいのかな。
>>302 > ヘルプに書いてるけど、event data ってなんでしょう?
MouseEventArgsとかKeyPressEventArgsのプロパティを見てみると
感じがつかめると思うよん。
これはもうn大先生が入門書書くしか。
>>304 あらら、あったんですね。ありがとうございます。
ここにいるやつの半分ぐらいはn大先生無しには.NETしてなかっただろうね
サーバー移転あげ
>>305-307 分かりやすい説明とサンプルコードありがとうございます。
違いについて理解できました。ありがとうございます。
>>306 もありがとうございます。感じがつかめました。^^
名無しさん♯ さんを賞賛するレスにすべて激しく同意します。 ほんとWebでもいいから名無しさん♯ さんのC#の講義を読んでみたい。 お忙しいから無理なのかな。このスレで我慢しますか。
315 :
仕様書無しさん :01/10/27 07:26
XMLSchemaを正規表現までサポートしてる!age
ここで叩かれてるとは思いもしないでしょうなw>川○さん。
317 :
デフォルトの名無しさん :01/10/27 18:50
C#では多重継承をサポートしてないみたいなんですが interfaceで似たようなことができると記憶してます 具体的なサンプルを探してみたのですが見つかりせません。 ヘルプでmultiple Inheritanceなどで引いて見たのですが、どうにも見つかりません。 C#でどのようにしたら多重継承みたいな?ことが実装できるのでしょう? よろしくお願いします。そろそろ本買わないとなぁ〜 トホ
>>317 こういうやつか?
public class HogeHoge : Hoge, IFoo, IBar
319 :
デフォルトの名無しさん :01/10/27 20:17
>>318 継承するベースクラスがinterfaceならいいということですね。
ありがとうございました。しかしinterfaceを継承したら継承したクラスで
実装しないといけませんよね。C++みたいにベースクラスのメンバを
そのまま多重継承できないのでしょうか。厨房な質問で申し訳ないです。
320 :
デフォルトの名無しさん :01/10/27 20:52
> C++みたいにベースクラスのメンバを > そのまま多重継承できないのでしょうか。 それは無理。というか、それができたら「多重継承をサポートしない」とは言えなくなる。(w
322 :
デフォルトの名無しさん :01/10/28 00:34
>>320 レスありがとうございます。確かにそうですよね(^^;
>>321 わかりやすいコードありがとうございます。
クラス図書いてみておおって感心しちゃいました。あとasも初めてみたので
勉強になりました。たしかに再利用で使うことは難しそうですね。
ありがとうございました。
323 :
デフォルトの名無しさん :01/10/28 13:34
C#のクラス定義をXMLスキーマに落とすことってできますか?
>>323 おれもそれ知りたかった。
System.Management.*とかをよく見てたけど
よく分からなかったよ。
>>323 xsd.exeで出来るかも。System.Managementは関係なかった。ごめん。
>>326 #さん、お願いします。
どうもxsd.exeだとプロパティの定義しかされないのだけど、
これってそういうものなんでしょうか?
あと、XmlReflectionImporterというクラスがヘルプに
載ってないんですが、、、いろいろ面倒かけてすみません。
#さん、ごめん。 おれがメチャクチャDQSなことが判明しました! 上のヤツはなかったことにして下さい!!
>>327 > どうもxsd.exeだとプロパティの定義しかされないのだけど、
> これってそういうものなんでしょうか?
シリアライズに必要なメンバーのみだから、
基本的にpublicのプロパティだけになると思うよん。
> あと、XmlReflectionImporterというクラスがヘルプに
> 載ってないんですが、、、
あのサンプルはxsd.exeを逆アセンブルして作ってるから、
非公開のクラス使いまくりになってる。(藁
このへんのクラスは、ildasm.exeでSystem.Xml.dllを見るしかないかも。
>>328 それはSDKについてくるサンプルよん。
おそらく、β2より前の途中版でのクラス構成だと思われ。
>>330 ありがとう#さん。なんとなく分かってきました!
325さん、名無しさん♯さん、ありがとうございました。(^o^)
>>336 ありがとうございます。
頂いたサンプルではどうしてもクラスに"Public"がついてしまいますね。
cls.Attributes = MemberAttributes.Private | MemberAttributes.AccessMask;
なんてやってもダメです。バグでしょうか?よく分かりませんねw。
昔、VBAで自身を書き換えるマクロを作ったりして仕事中に遊んでたことがあって、
そのときに構文要素を表現したようなオブジェクトがあってもいいのになって
思ったのを思い出しました。あえてクラスを作ったりはしませんでしたが。
新しいおもちゃを手に入れたようです。しばらく仕事中これで遊べそうです!(*^o^*;
>>337 Memberじゃないよ。TypeAttributes変えるんだよ。
>>338 スマソ。それは漏れの勘違い。
だから、β1のサンプルでは using System.Reflection; ってしてたんだ。
自分で書いたコードなのに気づかなかった。(藁
こうすればいいのね。
// class Hello の部分
CodeTypeDeclaration cls = new CodeTypeDeclaration("Hello");
cls.IsClass = true;
cls.TypeAttributes = TypeAttributes.NotPublic;
340 :
名無しさん♯ :01/10/29 23:55
342 :
デフォルトの名無しさん :01/10/30 19:25
ファイルの移動やコピーする時に、同名のファイルがあると 「ファイルの上書きの確認」 このフォルダには既に 'hoge.txt' ファイルが存在します。 現在のファイル …(略)… に次の新しいファイルを上書きしますか? …(略)… [はい] [いいえ] と出ますが、.NETでこの確認ダイアログを出す方法はありますか? 普通にやると、IOExceptionで 「既に存在するファイルを作成することはできません。」となるのですが。
>>342 おそらく、P/InvokeでSHFileOperation(shell32.dll)を直接使うしかないと思われ。
でも、ちょっとめんどいかも。
>>344 どうもありがとうございます。
shell32.dllだと何だか難しそうなので、
それらしい確認画面を出すようにしようと思います。
でも、ファイルの種類ごとのアイコンを表示するのが謎?
道は険しそうです。アイコンはなしにしようかな。
サンプルのソースを見てて思うんですが、 変数名に大文字から始める文字列を割り当ててたりして ちょっと戸惑います。これってC#的にはいいの? Javaだと確実にNGなんだけど。 C#用のコーディングガイドラインみたいなのがあれば知りたいな。
JavaでNG?それって決め事でしょ。 .NET Frameworkは、PascalCaseもcamelCaseもUPPERCASEもみんな使う。 コーディングガイドラインというものは、プロジェクトのメンバー全員の 同意の下に決めるもので、誰かが与えるものではない。
>>348 いや、そういってしまえばそれまでだけど、
Javaの場合は推奨の規約のようなものがあったはず。
もしC#やVBに関してそういったものがあれば
知りたかっただけです。
>名無しさん#さん ありがとうございます。 先に答え出してもらってるのに 気が付かないで書き込み&その最中一生懸命検索(w バカです。逝って来ます。。。
>>346 またまたありがとうございます。
でも、名前変えたりしても
「ファイルをコピーできません。
送り側のファイルまたはディスクから読み取れません。」
と出てダメみたいです。
なので、アイコン抜きでサイズもメッセージも同じダイアログを
出すようにしてみました。
SDKなので位置やサイズの調整が大変でしたが。
354 :
デフォルトの名無しさん :01/10/31 23:59
あげじゃ!
355 :
デフォルトの名無しさん :01/11/01 04:01
Attributeって何をするための物なんでしょう。Attributes Tutorialを がんばって読んで見ましたが、英語力がないため、イメージすらつかめません。 前スレでC#の目玉みたいなレスがありますので、ぜひとも理解したいです。 基本的な質問で申し訳ないです。
357 :
デフォルトの名無しさん :01/11/01 11:01
>>356 そんなのぜんぜんAttributeの本質を物語ってないぞ。Attributeってのは、
アスペクト指向プログラミングのためのもの。MTSが導入し、COM+が拡張した
属性ベースのプログラミングを、タイプシステムレベルでサポートしたのが
Attribute。EiffelのAssertionの考え方とか、COM+のトランザクションの
ように、そのクラスの本来の機能とは直接関係ない機能をロジックと
分離できるのがその特徴だ。アスペクト指向とかAOPで検索してみるべし。
358 :
デフォルトの名無しさん :01/11/01 16:52
漏れもレス見て調べてみたがサパーリわからん。
[WebMethod]と[DllImport("hoge.dll")]くらいは 決まりごとのように使ってるが、 そもそもちゃんと理解してないし、 それ以外の活用の仕方もよくわからん。
363 :
デフォルトの名無しさん :01/11/02 03:46
Attributeほんまわかんないや。 named parameter?positional parameter? (´-`).。oO なんなんだろ・・・・?
現時点でのリファレンス的本でいいものってどれだろう?
369 :
デフォルトの名無しさん :01/11/02 13:29
川俣のおっさんはAttributeをどう説明するのだろうか?
371 :
デフォルトの名無しさん :01/11/02 14:01
ILコードを出力するコンパイラオプション、誰がご存知ないですか?
>>370 もうatmarkitのあの連載を読むのは辞めなって。
というか、もうつまらんから名前さないでくれ
>>371 コンパイルしてから、
ildasm /out=hoge.il hoge.exe[dll]
でどうかしら。
374 :
デフォルトの名無しさん :01/11/02 15:52
>>366 サンプル有難うございました。ContextAttributeのサンプル、私には難しい。トホホ
いまHELPとにらめっこしながらコードにコメントをつけているところですが、
HELPの該当個所に頻出する"context property"と言うのは何なんでしょう?
>>374 > HELPの該当個所に頻出する"context property"と言うのは何なんでしょう?
正直、漏れもよくわかってない。(藁
ヘルプの引用をすれば、
> the name-value pair of the property name and the object
> representing the property of a context
とか
> The properties that make up the context
としか書いてない。
じゃあ、contextって何?っていうのを見てみると、
> A context is an ordered sequence of properties that define an environment
> for the objects resident inside it. Contexts get created during
> the activation process for objects that are configured to require
> certain automatic services such synchronization, transactions,
> just-in-time activation, security, and so on.
という感じ。やっぱりよくわかんないや。(藁
>>366 名無しさん#さんサンプルありがとう〜。
ん〜しかしサンプル見てみると複雑怪奇ですね。本当にアスペクト指向のために
Attributeって用意されてるのか疑問になっちゃいます。。
JAVAのアレみたいにお手軽じゃないし。
377 :
デフォルトの名無しさん :01/11/03 06:37
ASP.NETでaspx書いてたんですけど 何故か.aspが実行されなくなりました。<拡張子.aspxにすると実行される スレ違いかもしれませんが、どなたか分かる方いたら教えてー 確かちょっと前は.asp使えてたような気もするんですが(汗。
>>377 俺のところでは普通に使えてるぞ。
どんなエラー画面が出てきてる?
ページが見つかりません 検索中のページは、削除された、名前が変更された、または現在利用できない可能性があります。 なんですけど、aspxでやるとふつーに実行できるんです(謎
380 :
デフォルトの名無しさん :01/11/04 00:16
開発したプログラムを、別のPCでも開発できるようにしたいのですが、 どのようにしてプロジェクトを移せばよいのでしょうか?
>>380 フォルダごとコピーって、そういう意味じゃない?
開発者が一人なら、ネットワーク共有。
複数人ならバージョン管理ツール使う。
質問なんですけど、 byte[]をstringに変換するにはどうすればいいのでしょう。 バイナリとS-JISのテキストの混在したファイルを読み込むため、 BinaryReader.ReadBytes(int)を使っているのですが、 テキスト⇔バイナリの変換がC++のように容易にはできないようで、 苦労しています。 やはり、StreamReader.Read()などを使わないと駄目なのでしょうか。 ご存知の方、お願いします。
>>383 System.Text.Encoding
>>375 レスありがとうございます。う〜 ほんとわかんないですね。
少しAttributeは保留しとこうかな。残念ですけど。有難うございました。
>>384 System.Text.Encodingは抽象クラスで使えないと出るんですが。
派生したクラスを使うのでしょうか。
もう少し詳しくお願いします。
教えて君か? 少しは周辺を検索すれば?
やり方が判った。 通常のコンストラクタを用いず、敢えて Encoding encoding=Encoding.GetEncoding(932); を使うらしい。 しかし、何故こんな厄介なことをしなければ…。
>>388 Encoding.GetEncoding(932).GetString(arguments);
390 :
デフォルトの名無しさん :01/11/04 23:15
あれ?インターフェイスにはプロパティって書けないんだっけ? しかも private なメソッドとか定義できない??
>>390 プロパティなら
string Property
{
get;
set;
}
みたいに書けば良いはず。
#さん、某スレの255を何とかしてください。
>>390 インターフェイスはpublic abstract強制よん。
なので、privateとかinternalは不可。
というか、"public" とつけることすらできない。
>>392 漏れにはどうすることもできない。(藁
>>391 なるほど、そう書くんすね。できました〜。ありがとう。
> ♯さん
いつもお世話になっております :-)
abstract なのはインターフェイスなんだからあたりまえとして、
スコープは private とか使いたいって思ったりしませんかね?
こんな事思ってしまう漏れはまだまだ OOP 解っていない構造化厨ですか?
395 :
最近肥満気味の名無しさん :01/11/05 17:54
396 :
デフォルトの名無しさん :01/11/05 18:15
>>395 なんかどの本も内容似たり寄ったりですよ…。
個人的にはC#文法よりもライブラリのリファレンス本が欲しいのですが……。
>>394 > スコープは private とか使いたいって思ったりしませんかね?
インターフェイスを「実装の契約」ととるか「アクセス窓口」ととるかという問題ね。
「契約」ととれば、non-publicでも「こういうメソッドを実装してね」という契約が必要なのは事実よん。
ちなみに、privateじゃなくてprotectedとかinternalね。
実際、abstract classではこういうことができるわけだし。
でも「アクセス窓口」ととれば、インターフェイス越しにクラスを利用する側にとって、
使えないメソッドが宣言されてるのも、っていうのがあるんじゃないかしら。
どちらの視点が正しいという問題じゃないので、(どちらも正しい)
C#の言語デザインとしてこういう決断を下したと納得するしかないんじゃないかしら。
398 :
パイプカットに失敗、50%残った状態の名無しさん :01/11/05 18:37
C#初心者ですが、 お勧めのC#のページありませんか? どこのページも、 C#プログラム中級者〜上級者向けなので難しいんです。
なんか質問に直接答えてないような気がしてきた。(藁 > スコープは private とか使いたいって思ったりしませんかね? protectedではよくあるよん。 そういうときは、やっぱりinterfaceをあきらめてabstract classを使うしかない。
>>398 C#自体初心者向け言語です あきらめましょう
>>400 例えそうだとしても奥が深いのは事実だと思うぞ
>>401 御意。
少なくともJavaよりは過去の資産を重んじ、かつ未来に向かって開かれている
>>402 そういうこと言うと某スレみたいになるからやめてくれ。
>>398 C#プログラム中級者〜上級者向けのページってどこだろ。気になる。
sourceforgeのC#プロジェクト
MSDNにバシバシコラム書いて欲しいね
> ♯さん なるほど…考え方の違いっすか… < インターフェイスの事 ところで、 char と string の相互変換ってどうやればいいんでしょう? string --> char はインデクサーでうまくごまかしたんですけど…もっとスマートな方法がありそうですし、 char --> string ができないんですが…。
>>409 char c = 'a';
string s1 = Convert.ToString(c);
string s2 = new String(c, 1);
>>410 あ、System.Convert っすか!気づかなかった;
ありがとう。
またもや質問です。 全角文字と半角文字を見分けたいんですけど、どうすればいいでしょうか? System.Text.Encoding あたりが怪しいと思うんですけど…。
413 :
デフォルトの名無しさん :01/11/06 02:08
>>395 の本購入してました。
Cマガ買ってベータ版インストールしようとしました。
自分のPCはMeがはいってました。
早く2000にして勉強したいです。
そのためあげ。
C#のコンパイラって売ってるの? 買いたいんだけど、、
>>415 .NET Framework SDKベータ2はMSのサイトからDLできたはず。
Visual Studio.NETベータ2はMSのサイトから実費で注文、又は雑誌にDVDで付いてます。(どの雑誌か記憶が曖昧)
↑早速のレス有難う御座いました。 私はDVDドライブを持っていないので 実費でCDROMを購入しようと思います。 所で試用期間とかはありますか?
>>418 有難う御座います。
早速注文してみます。
>>397 > C#の言語デザインとしてこういう決断を下したと納得するしかないんじゃないかしら。
えー、interfaceってのはC#よりずっと前からそういうものだったでしょ。
javaだって。C++だってinterface作るときはそうじゃん。C#が決断したんじゃ
ないのでは?C#はまわりにあわせただけだと思うけど。
424 :
パイプカットに失敗、50%残った状態の名無しさん :01/11/06 13:59
C#に関して皆さんの参考にしていらっしゃるページなんかを 教えていただけたらいいのですが。
ひとつうえのやつ んなことよりパイプカットってやっぱいたいのか?
>>414 DLしてインストールしたんですけど、
コンパイル方法がわかりません。
宜しければ教えてください。
>>412 半角カタカナの判別が問題ね。
これは自前でロジックを組むしかなさそう。
>>421 > えー、interfaceってのはC#よりずっと前からそういうものだったでしょ。
もちろん。
でもね、C#のインターフェイスはなぜかフィールド宣言ができないのよ。
定数のクラスフィールドでもダメ。
>>427 > C#のインターフェイスはなぜかフィールド宣言ができないのよ
Javaでインターフェイスを定数宣言用に使っていたへたれな
おいらはどうすればいいのやら・・・
あ、そっか(w
>>428 > でもね、C#のインターフェイスはなぜかフィールド宣言ができないのよ。
> 定数のクラスフィールドでもダメ。
それがあたりまえだと思う。javaのinterfaceが間違ってるのでは。
定数って型システムの内部で利用するものでしょ。
>>431 COMのIDLでも定数がありますが何か?
意味不明。 COMのinterfaceに定数宣言はできませんが、何か?
>>433 ちっ。分かってたか。
Javaのインターフェイスで定数宣言できるのは、列挙型のない言語仕様の欠陥を
取り繕うためだということだ。
>>426 C:\WINNT\Microsoft.NET\Framework\v1.0.2914 にパスを通して、「csc /?」を実行。
exeを作るなら「csc 〜.cs」。
>>434 interface論争はもういいでしょう。C#ではinterfaceで定数宣言できないって
分かっただけでもう十分です。ありがとう。
>>436 「できない」のではなくて、「する必然性がない」。enumがあるから。
どこぞの制限だらけの言語と比較しないことだ。
255という名前の.NET信者がJavaのスレを荒らしまくっています。 このままでは.NETひいてはC#の評判が悪くなってしまいます。 何とかしてください。
ここはまったりしてていいねぇ ASPっていうかサーバーサイドで遊びたいんだが どのへんのサンプルを触るのが手っ取り早い?
441 :
デフォルトの名無しさん :01/11/07 02:18
>>416 いろんな雑誌に載っているのでは?
漏れが入手したのは「日経コンピュータ」。
でも、DVD-ROMドライブ持ってない・・・。
またまた質問なのですが… private static const int N = 624; って書いたらコンパイラに怒られてしまいました。 C♯ってクラスメンバな定数って書けないんですかね? Enumがあるから?単発の定数の時代は終わりですか?
質問ばっかなのですが コンストラクタをオーバーロードしたとき、 別のコンストラクタを呼び出すのはどうしたらいいんでしょう? public foo(int nX) { ... } public foo() { // ここで foo(int) を呼び出したい… this(10)とかfoo(10)とかthis.foo(10)とかやってみたけど駄目でした }
>>442-443 > private static const int N = 624;
constは暗黙でstaticよん。なので、こうすればOK。
private const int N = 624;
> コンストラクタをオーバーロードしたとき、
> 別のコンストラクタを呼び出すのはどうしたらいいんでしょう?
C++とJavaの中間という感じね。
public foo() : this(10) {
}
>> ♯さん なるほど…そーゆー事ですか、やっとわかりました。ありがとうございます。
WinFormのDataGridを使ってデータを表示したとき、データがColumnの幅より 長かった場合、複数行にわたり表示したいのですが、方法がわかりません。 なにか良い方法はありませんか?
>>446 プロパティやメソッドでできるものではなさそうね。
DataGridのカスタマイズが必要だと思うけど、
関連するクラスがprivateなのが多いので無理かも。
448 :
デフォルトの名無しさん :01/11/08 21:20
初歩的な質問で大変申し訳ないのですが、同じフォルダにあるC#ソースファイルに あるクラスを別ファイルにあるクラスから使うにはにはどうすればいいのでしょう?
449 :
デフォルトの名無しさん :01/11/08 21:47
コンパイラで/rのこと?
>>448 コンパイルの仕方の問題かな...?
出力ファイル(.exe,.dll)の構成をどうするかにもよるんだけど、
例1) aaa.csとbbb.csから1つのexe(hoge.exe)を作る場合
csc /out:hoge.exe aaa.cs bbb.cs
例2) aaa.csからDLL(aaa.dll)を作って、それをbbb.csで利用する場合
csc /r:aaa.dll bbb.cs
こんな感じよん。
451 :
デフォルトの名無しさん :01/11/08 22:13
>>450 レスありがとうございます。コンパイルの仕方大変勉強になりました。
私の意図したかった質問はもう一歩手前で(^^; 質問の仕方がまずくて申し訳ありません。
C++ならあるファイルで別ファイルをinclude "hoge.h"のようにインクルード
しますが、そのようなことをC#ではどうすればいいでしょうか?と言うことです。
usingで同じようにできないようなのですが。よろしくお願いします。
的外れな質問でしたらすいません。
452 :
デフォルトの名無しさん :01/11/08 22:14
includeする必要ないよ。Class1 c = new Class1(); でOK。usingするのは、ネームスペース使ってるときだけ。
453 :
デフォルトの名無しさん :01/11/08 22:44
>>452 レスありがとうございました。おお〜 そうなんですね。
ちょっと感動ヽ(´ー`)ノ ありがとうございました。
「Bitmap」クラスのイメージを「Graphics」クラスに渡す方法はわかるのですが、 その逆に、「Graphics」クラスのイメージを「Bitmap」クラスに渡す方法がわかりません。 どなたかお願いします。
455 :
デフォルトの名無しさん :01/11/09 09:36
>>454 BitmapのコンストラクタでBitmap(int, int, Graphics)てのがあるけど、これじゃだめ?
よく分からずに言ってるけど。
>>454 Graphicsはイメージを描く道具
Bitmapはイメージを描く(そして描いたイメージを保存する)画用紙
と考えてください。
Graphicsはただイメージを描くための道具なだけであって、
イメージを描いた紙じゃないので、
Graphicsには描いたイメージは保存されていません。
だからGraphicsからBitmapは構築できません。
457 :
デフォルトの名無しさん :01/11/09 12:24
.NET って要するになんなんですか?いまいち良くわからんです。 説明してください。
>>458 何でだめなの?
1 には .NET 関連の話題ってあるけど。
461 :
デフォルトの名無しさん :01/11/09 14:20
C#でオーバーロードコンストラクタから別のオーバーロードコンストラクタって呼べます? 今Javaのコードをそのまま移植してるんだけど、なんかthis( int hogo , String hoge ) って感じで呼んでるみたいなんですが。
462 :
デフォルトの名無しさん :01/11/09 15:05
>>461 こんな感じだね。
using System;
class c {
int _x, _y;
c(int x, int y) {
_x = x; _y = y;
}
c(int x) : this(x, 999) {
}
public override string ToString() {
return _x.ToString() + "," + _y.ToString();
}
static void Main() {
c C1 = new c(1, 2);
Console.WriteLine(C1);
c C2 = new c(1);
Console.WriteLine(C2);
}
}
463 :
デフォルトの名無しさん :01/11/09 15:41
>>462 レスありがとうございます。よく分かりました。
また質問ばかりで申し訳ないのですが、Javaのコードでは
c(int x ){ x = 999; this( x , 999); }のように実引数を加工してから別の
オーバーロードコンストラクタを呼び出していますが、このようなことを
C#ではどうすればできるのでしょうか?
全然関係ないけど,こんなトリップが出た(w
Reflection ネームスペース内にある Assembly や Activator クラスなどを
用いてプラグイン機能を搭載してみようと,
ttp://www.grn.mmtr.or.jp/~konekos/dot_net/fw/plug_in.html ここを参考にして作ってみました。
ファイル構成としては
メイン実行ファイル.exe (本体)
メイン実行ファイルと同じファイル名.dll (プラグインのベースとなるインターフェイスを提供)
plugin/
プラグイン.dll (プラグイン)
みたいな感じです。
そして,メインプログラムからプラグイン読み込もうとすると...
なんか読み込む以前の問題に,読み込みメソッドを呼び出そうとするときに
例外が発生してうまくいかない(w
3週間くらい悩んでやっと原因がわかりました。
どうやら 自分のアセンブリ名 と ベースとなる DLL のアセンブリ名 が同じ場合,
このようなエラーがエラーが発生するようです。
まさかこんなことで悩んでいる人は居ないだろうけど,参考までに。
465 :
デフォルトの名無しさん :01/11/09 19:35
>>464 > どうやら 自分のアセンブリ名 と ベースとなる DLL のアセンブリ名 が同じ場合,
> このようなエラーがエラーが発生するようです。
アセンブリ名を勘違いしているな。アセンブリ名=ファイル名ではない。
例外を見てみ。
>>>未処理の例外 : System.TypeLoadException: アセンブリ 'lib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' から型'Lib' を読み込めません。
ってなってるっしょ。この場合のアセンブリ名ってのは、
'lib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
これなの。だからファイル名が同じとか違うとか関係ないんだよね。
DLLのほうのソースに、
using System.Reflection;
[assembly:AssemblyVersion("1.0.0.0"),AssemblyCulture("ja-JP")]
こんなの追加して、DLLとEXEをリコンパイルしてみ。んで、DLLは
./ja-JP/xxx.dllにおく。そうすれば、ファイルの拡張子より上が同じでも
ロードできるよ。これはアセンブリ名が変わるからだ。ファイル名は同じでもね。
466 :
デフォルトの名無しさん :01/11/09 19:46
そういやC#(or .NET)用のTestingFrameworkってないの?
467 :
デフォルトの名無しさん :01/11/09 20:01
NUnitあるよ。
>>465 なるほど...
ファイル名とアセンブリ名が違うというのはわかっていましたが,
詳しくはわかっていませんでした(w
わかりやすい説明 & 対処方法,ありがとうございました〜
>>463 初期化用のメソッドを別個に設けて呼び出すしかない。
って日本語変だな。
ファイル名とアセンブリ名が違うというのがわかっていたら
>>464 みたいな
ことは書かなかったか。
実は全然わかっていなかったと言うことで,
上のことはナシにしてください(w
>>471 ♯大先生
ありがとうございます。
早速見てみます〜
473 :
デフォルトの名無しさん :01/11/09 21:27
>>469 やっぱりそうですよね。ありがとうございまいした。
CUIでなにか作成しながら勉強しようと思うんですが、 どんなのがいいですかねー?
IEのコンポーネントを使わずに.NET Frameworkのライブラリだけでブラウザは作れますか?(技量でなく理論的に) 今までコンポーネント使ってたんですがIEに縛られてる意識が消えずに鬱です・・
>>475 うーん、もはやIEのコンポーネントはテキストボックスなんかと同じ、
標準コンポーネントなんでないかなあ。
HTTPしゃべるのにイチイチsocket叩くコード書きたくないよ...
>>475 できるんじゃないかな。
でも、HotJavaのような使えないブラウザが今さら必要かい?
479 :
デフォルトの名無しさん :01/11/10 01:49
streamクラスについて聞きたいのですが、下記のようなコードで 最後の行のReadByte();でなぜか-1が帰ってきてストリームをよんでくれません。 なぜでしょう?宜しくお願いします。 const int size = 10; byte[] bytes = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10}; int numBytes; MemoryStream stream = new MemoryStream(); stream.Write( bytes , 0 , size ); numBytes = stream.ReadByte();
>>474 スレッドが何個できるか試してみる。
そして結果報告
482 :
デフォルトの名無しさん :01/11/10 02:10
>>479 stream.Position = 0;
483 :
デフォルトの名無しさん :01/11/10 02:13
>>482 有難うございました。なんで気づかないんだ漏れは。逝ってきます。
どこかに、「C#でタブブラウザ作る」時に参考になるもの ないですか??? 全くの初心者なのですが、何か面白そうなものをつくってみたい。。。
単純なものならほんとに貼り付けるだけで出来ると思うが
486 :
デフォルトの名無しさん :01/11/10 21:26
ファイルから文字列を読みたいんですけど 終わりを検知する方法がよくわかりません。 ReadStremにFileStreamを与えてReadLineで読んでるんですけど、 FileStreamのLengthとPositionを比べればOkかと思ったんですけど はじめの一行を読んだ時点でFileStreamは最後まで読んでしまっているみたいで…。 どうやったらいいでしょう?
>>486 StreamReaderのことかな?ならば、ReadLineの戻り値がnullがどうかをチェックすればいい。
ReadToEndじゃダメ?
489 :
i486SX 16MHz :01/11/10 23:07
>>487 あ、なんだ、そーゆー事なんすね。WSH系のやり方に慣れてるからてっきりAtEndOfStreamみたいなものがあるんだと勘違いしてました。
でも別プロパティの方が美しいのになぁ…。あとStreamReaderですね、ReadLineの事ばっかり考えてたから間違えました。
>488
あー!「最後まで読む」なのか!!こっちの方が今回の目的に合ってます。ありがとうございます。
490 :
デフォルトの名無しさん :01/11/11 00:38
まったりしていいスレですねヽ(´ー`)ノ 質問なのですが、byte型の配列の内容をString型にしたいのですが、 byte [] bytes ; bytes.ToString();とすると System.Byte[] と表示されてしまいます。 なんかうまい方法はないでしょうか?宜しくお願いします。
>>490 すいません。訂正です。Console.WriteLine ( bytes.ToString() );でコンソールに
System.Byte[] と表示されます。
>>490 System.TextのEncoding.Default.GetString(byte[])でいかがでしょうか。
494 :
デフォルトの名無しさん :01/11/11 02:05
>>492 レスありとうございます。String dataString = Encoding.Default.GetString(bytes);
とかEncoding.GetEncoding(932).GetString(bytes);などで試して見たところ
コンソールで文字化けしてしまいます。Encoding Classのヘルプを
見てみていろいろやってみましたがだめでした。
byte[] data;には1から10までの数字を順番に収めています。どうしたらいいのでしょう。
質問ばかりで申し訳ありません。宜しくお願いします
>>494 > byte[] data;には1から10までの数字を順番に収めています。
それをどういう文字列に変換したいの?
>>495 12345678910という具合に表示できたらと思っています。
>>496 こんな感じでどうかしら。
using System;
using System.Text;
class Test
{
public static void Main() {
byte[] bytes = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
StringBuilder s = new StringBuilder();
foreach (byte b in bytes) {
s.Append(b);
}
Console.WriteLine( s.ToString() );
}
}
498 :
デフォルトの名無しさん :01/11/11 02:24
>>497 #大先生様。できました。ありがとうございました。
StringBuilderですか。調べて見ます。
コードまで頂き感激です。ありがとうございました。
#Encodingはクラスですよね。それにメンバのDefaultはプロパティでGetStringはメソッド。
#文法的に不思議だな〜と思ってしまいました。newしたら抽象クラスだって怒られますし。
#まだまだ知らないことばかり、精進しなければ。ヽ(´ー`)ノ
>>498 Default プロパティは (インスタンス作成された) Encoding クラスが返ってくるので,結果的に
Encoding.Default.GetString(arguments);
と
Encoding e = Encoding.Default;
e.GetString(arguments);
は(ほぼ)等価なんだよね。
...たぶん。
>>498 Encoding型は抽象クラス。
Encoding.DefaultはEncoding型を返すが、その中身はEncoding型のサブクラス(こちらは抽象クラスにあらず)。
Hoge型のメンバーがHoge型を返すというのに違和感があるかもしれないけど、
staticがついてる場合はそういうことが可能。
>>499 なるほど、そうゆうプロパティの使い方もありなんですね。勉強になります。
有難うございました。
>>500 なるほど〜 奥が深いですね。勉強になります。
503 :
名無しさん♯ :01/11/12 00:03
情報が早い。DirectXスレでも全く話題になってないのに。。。
DirectX スレのヤツラは目を皿のようにして読めない英語を読んでいて 投稿どころでは無い方に一票!
507 :
デフォルトの名無しさん :01/11/12 09:22
FileSystemWatcher は Win98/ME ではサポートされないんですか? もしそうだとしたらそれはアリなの? MS が提供するライブラリはどこまで互換性があるの?
509 :
デフォルトの名無しさん :01/11/12 18:18
文字列型にString dText = "100"; のように10進数の数字が格納されている時に これを16進数にしてコンソールに表示したいと思っているのです がなかなかうまくいきません。 int i = 100; String sText = i.ToString("X");と同じことをString型で渡された 数字に対してやりたいのですが。皆様よろしくお願います。
>>509 string→int→stringでいいのでは。
型変換はSystem.Convertにて。
>>509 コンソールに表示したいだけなら、stringにわざわざ格納しなくても大丈夫だよ。
int n = 15;
Console.WriteLine("{0:x}", n);
512 :
デフォルトの名無しさん :01/11/12 19:29
>>510-511 レス有難うございました。
String s = "100";i nt i = Convert.ToInt32(s); s = i.ToString("X"); Console.WriteLine( s );
とすることで、解決しました。ありがとうございました。
513 :
デフォルトの名無しさん :01/11/13 01:09
Cのchar型とC#のchar型って同じ?range U+0000 to U+ffff ってよくわかんないんだけど、、、
515 :
デフォルトの名無しさん :01/11/13 01:31
>>514 じゃあC#のushortと同じrangeですね。ありがとうございました。
C#やろうと思うんですけど、通常アプリの場合、Java以上MFC以下になっちゃうんでしょうか?
517 :
デフォルトの名無しさん :01/11/13 03:28
アンセーフで行こう。
アンセーフだと、MFCレベルになりますか?
>>519 ほとんどアンセーフにすればなるが、だったらVC++使え。
521 :
デフォルトの名無しさん :01/11/13 07:36
C#ってインラインアセンブラでガリガリ最適化とか出来るんでしょうか?
>>518 unsafeじゃなくてunmanagedでは?
>>521 無理。高度な最適化はコンパイラじゃなくてランタイム(JITer)のお仕事。
523 :
デフォルトの名無しさん :01/11/13 09:22
>>521 ILを直接書けるかはどうかは分からないけど、
メソッドをunsafeで宣言すればC言語の関数として
中身をかけるみたい。
C#に共用体ってありますか?
525 :
デフォルトの名無しさん :01/11/13 10:42
>>525 > C#でunmanagedコードは書けないし。
unsafeを使ったコードはunmanagedだぞ。
>>526 え、そうなの?メソッドの形はmanagedになる
(イコールC#ではunmanagedコードは書けない)ものだと思ってたけど。
>>526 もしかしてfixedのことを言ってない?
>>528 そう。fixedとかstackallocのこと。
それと、C#キーワードのunsafeの説明でこんなことが書かれてた。
> To compile unmanaged code you must specify the /unsafe compiler option. Unmanaged code is not verifiable by the Common Language Runtime.
>>524 言語ではサポートされてないけど、ライブラリで似たようなことができるよん。
なので、VB.NETでもOK。
using System;
using System.Runtime.InteropServices;
[ StructLayout(LayoutKind.Explicit) ]
struct Hoge
{
[ FieldOffset(0) ] public byte B;
[ FieldOffset(0) ] public int N;
}
class Test
{
public static void Main() {
Hoge h = new Hoge();
h.N = 257;
Console.WriteLine(h.B); // 1 が表示される
}
}
>>531 #さん
ありがとうございます。
ライブラリでこんなことができるなんて不思議ですね...。
534 :
デフォルトの名無しさん :01/11/13 15:47
Cで作ったサーバがchar型のデータをクライアントに投げるのですが C#のクライントでchar型で受けても大丈夫でしょうか? この板にchar型がCのchar型と違うっての見たので。不安です。 こうゆう場合sbyteでもらうのがいいのかな。
>>534 を訂正。板じゃなくてスレですね。2ChもC#も初心者 鬱だ。
>>534 送られてくるのは文字のデータ?
2バイト文字は含んでる?
538 :
デフォルトの名無しさん :01/11/13 17:01
すいません。高度なスレに、こんな初心者な 質問で申し訳ないんですが、Cでいうプリプロセッサは ないんでしょうか? #define hoge hogehoge コンパイルしてもエラーになってしまいます。
>>537 ならば、byteで受け取って、System.Text.EncodingでStringに復元...だと思う。
>>538 マクロ的な使い方はできない。
こういう使い方だけ。
#define DEBUG
542 :
デフォルトの名無しさん :01/11/13 17:23
>>539 有難うございます。
サーバにデータをアップするときもString -> char array ->byteでいいのですか?
>>542 System.Text.EncodingでString -> byte[]にできるよ。
544 :
デフォルトの名無しさん :01/11/13 17:39
>>543 おお ありがとうございます。激しく感激です。
今探してたところなのですが見つからなくて。(^^;
GetBytes(string);ですね。ありがとうございました。
>>540 どうもです!
あれまー。使えないんですかー
Cで書くときとか、変更が効くようにやたら
#defineだらけだったんですが・・・・うーん困った。
546 :
デフォルトの名無しさん :01/11/14 01:58
.NETにおいてEJBコンテナのようなものは含まれているのでしょうか? また、もしないとしたら今後マイクロソフトからそのようなものが リリースされる予定はあるのかな?
結局C#は、Delphi的Javaだな。俺はVC+.NET使う。
>>546 System.EnterpriseServices
>>546 EJBコンテナのどんな機能を指していますか?それによって回答は
異なると思います。たとえば、以前別スレで言われていましたが、
CMPのような機能をサポートするのはDataSetでしょう。
551 :
デフォルトの名無しさん :01/11/14 14:06
タイトルバー以外の部分をドラッグ移動して、 タイトルバーでやっているようにウィンドウを移動させたいのですが、 どのようにすればいいでしょう? なんか this.DragDrop += new DragEventHandler ( OnDragEvent); this.DragOver += new DragEventHandler ( OnDragEvent); this.DragEnter += new DragEventHandler ( OnDragEvent); this.DragLeave += new EventHandler ( OnEvent); this.GiveFeedback += new GiveFeedbackEventHandler ( OnGiveFeedbackEvent); ここらへんは試してみたのですが、何も引っかからないようですし…。
552 :
デフォルトの名無しさん :01/11/14 14:07
初歩的な質問ですみません。 ソースを複数のファイルに分割してコンパイルした場合、 C# では中間ファイルのようなものはあるのでしょうか? (例えば、C でいう .obj や、Delphi の .dcu) それとも、コンパイルするたびに、 毎回ソースから全部コンパイルするのでしょうか??
こんにちは。
私はSharpDevelopというGPLなC#開発環境の日本語化を行っています。
[SharpDevelop日本語版]
http://www.pluto.dti.ne.jp/~shinsaku/sharpdevelop/ ちなみに本家はこちらです。
[SharpDevelop]
http://icsharpcode.net/OpenSource/SD/default.asp この日本語化を行う過程で、日本語の表示や入力はできるように
なったのですが、ソースエディッタ部分の日本語化対応でどうしても
わからないことがあるので、ご存知の方がいらっしゃいましたら
教えてください。
エディッタ部分はUserControlで実現しているのですが、
on the spotで入力することができず、IMEによる確定前の文字列が
変なところに表示されてしまいます。
確定してしまえば、問題なく表示できるのですが、あまりかっこいい
ものではありません。
使い勝手をよくするためにも、on the spotで入力できるように
したいのですが、どのようにIMEを制御したらよいのでしょうか?
ご存知でしたら教えてください。
SharpDevelopというフリーな開発環境を、日本語環境で使いやすい
ものにするにぜひよろしくお願いします。
554 :
デフォルトの名無しさん :01/11/14 14:42
>>552 /t:moduleでモジュールにしておいて、あとで固めるときに
al.exeを使うか、メインのソースをコンパイルするときに/addmoduleを使う。
厳密にobjと対応するわけではないけどね。
558 :
デフォルトの名無しさん :01/11/14 19:36
mblenの確認にこんなものを書いてみた。 でもmblenって使い勝手が僅かに微妙。 #include <ctype.h> #include <stdlib.h> #include <string.h> char string[256]; int data1[256]; int nlen; int mlen; int i; char chr[5]; void main() { //string[]="abcはABCです。(英文字)\0"; strcpy(string,"abcはABCです。(英文字)\0"); nlen=strlen(string); printf("文字列:%-s ",string); printf("strlen:%-d\r\n ",nlen); //i=0; for (i=0;i<nlen;i++){ mlen=mblen(&string[i],4); if(mlen!=-1)strncpy(chr,&string[i],mlen); else strcpy(chr,"Er\0"); printf("%-d %-s mblen?:%-d\r\n",i,chr,mlen); if(mlen!=-1)i+=(mlen-1); } printf("array total:%-d",i); return; }
>>558 誤爆かな?
>>553 愛用させてもらってます。が、あれは昔のマックを彷彿とさせますね。
ウィンであんな現象初めてなんだけど。インライン入力っていわないのかなWinでは。
VSNET持ってなので分からないですが、VS.NETの人は普通に日本語入力できてるの?
>> 559 使ってくださってありがとうございます。VS.NETは大丈夫ですよ。
ちゃんと日本語をごく普通に入力できます。SharpDevelopはあのウィンドウに
文字を表示する際、文字列をハイライトしたりするために、自分でエディタ
部分をUserControlで実装してしまったようです。
/// <summary>
/// This class paints the textarea.
/// </summary>
public class TextAreaPainter : UserControl
それから、おまけ情報ですが、SharpDevelopではオリジナルでも
エディタのフォントを変更できません。本家で現在対応中
というとことですが、現状では日本人に少なからずつらかったので、
とりあえずソースファイルに埋め込まれた
フォントをMSゴシックの12Pに変更しましたので、それなりに
表示されて以前より幸せになっています。よろしければ使って
見て下さい。
http://www.pluto.dti.ne.jp/~shinsaku/sharpdevelop/
>>553 英語版試してたけど、やはり日本語版がいいですね。
とりあえず、メニューなどの文字、全角カナ希望っす。
SDK使いなので期待しています。
>> 561 ありがとうございます。やっぱりImmGetDefaultIMEWndとか直接呼び出さないと駄目ですか(T-T) でも、これでIMEを制御できるということが分かっただけでも助かります。これを参考に実装してみます。 ありがとうございました。 >> 562 全角カナがいいですか? オリジナルは1byteのことしか考えてくれてないから、 全角カナを使うと文字列リソースの差替えだけでは済まなくなっちゃう:) # フォームが狭いから、レイアウトが崩れちゃう
>>563 resgen StringResources.jp.resources StringResources.jp.resx
して、StringResources.jp.resxの半角カナ→全角カナして
resgen StringResources.jp.resx StringResources.jp.resources
と戻して、install.jp.vbs(ちなみにこれ実行するとノートンの
スクリプト遮断で「警告:悪質なスクリプトを検出しました」と出ちゃう)
で半角カナ追放できました。
半角カナ大嫌いなもので。
って最初っから自分でやれよ>オレ
みんな落ち着け! まだ機種依存のプログラムを書く段階じゃないだろ!!!
>>565 なぜか笑ってしまったww
ごめんちょ。
>> 553
>> 567
サンプルありがとうございます。このサンプルをもとに
SharpDevelopでIMEを制御することによりon the spotが
出来るようになりました!! これで日本語版っぽくなりました。
# ほとんど提示いただいたサンプルのとおりです。ちょこっと色つけましたが。
http://www.pluto.dti.ne.jp/~shinsaku/sharpdevelop/ に2001/11/15-2というバージョンを置いていますので、
よろしければご利用ください。
次はマウスによる文字列選択をまともにしたいと思います。バグっているんで。
# これも1byte限定の処理のところを2byte対応にしないといけないんです。
がんばりますので、これからも応援よろしくお願いします!
このたびはありがとうございました。
ps:
もちろん、.NET Frameworkのクラスライブラリだけで処理できる
方法があれば、そちらも継続して案を募集中です!
571 :
デフォルトの名無しさん :01/11/15 20:34
Graphics オブジェクトがらみがよくわからずに困っています。 GraphicsのDrawLineみたいなメソッドでいろいろと描画して、 それをフォーム上に転送したいのですが、元のGraphicsはOnPaintの引数とかCreateGraphicsメソッドでフォームに関連づいてるものしか得られな いのでしょうか? Bitmapには描画系メソッドがないようですし…。 このスレの上の方で誰かが説明してるのはよくわかりませんでした。
>>570 TextAreaMouseHandlerのOnMouseDownが怪しいけど、デバッガがないと辛いな、こりゃ。
>> 572 そうなんです。デバッガがないとつらいです(T-T) それにいたるところにString.Lengthでアクセスしている ところがあって、もう大変・・。 一応、本家には2byte文字だとつらいから、 Encoding.GetEncoding().GetByteCount() を紹介しておきました。対応してくれるかな? # IMEの件はしばらくこっちで暖めておきます。なかなか本家にこれはねぇ・・。
574 :
デフォルトの名無しさん :01/11/15 22:05
マルチポストごめん VisualStudio7っていつでるの?これでたらC#はじめようと思うんだけど
575 :
デフォルトの名無しさん :01/11/15 22:21
明日発売の XP に、VS.NET β2 って入るんでしょうか? (ともに日本語版)
576 :
デフォルトの名無しさん :01/11/15 22:22
575 「入る=インストール可能か」の意です。ゴメソ。
>>571 GraphicsクラスのFrom〜メソッドからも取れるよん。
ヘルプに簡単なサンプルも載ってるからチェックしてみてちょ。
>>572 >>573 build.bat内のcscのオプションに /debug+ をつければ、SDKのDbgCLR.exeが使えたよん。
>>574 英語版が来年2/13で、日本語版は未定。
>> 577 ん、これはよさげ♪
579 :
デフォルトの名無しさん :01/11/15 22:42
>>577 英語版て日本で買えます?日本語版は今までのデータからみていつでると思いますか?
>>575-576 XP は正式にサポートされてますよ。
というか,ちゃんと動いてるのでご心配なく(w
そうか,明日 XP 発売なのか...
OEM 版使っているので気づかなかったよ。
581 :
デフォルトの名無しさん :01/11/15 22:49
C#のクラスライブラリとMFCの関係を教えてください
あぁ! FromXXX 系ってクラスメソッドだったのですね! てっきりインスタンスのメソッドだと思い込んでいて、眼中にありませんでした。 うまくいきました。ありがとうございます。 ところでやっぱり製品版 VisualStudio が出たら、もう無料でコマンドラインコンパイラ配ったりしないんですよね?買わなきゃ駄目かなぁ? (って言っても MSDNライブラリが Web だけだと辛すぎるのでやっぱり買うんですけど)
585 :
デフォルトの名無しさん :01/11/15 23:14
なんか生ぬるいなあ
587 :
デフォルトの名無しさん :01/11/15 23:15
588 :
デフォルトの名無しさん :01/11/15 23:17
なに?MFC全く関係ねぇの? 勘弁してくれよ〜
589 :
デフォルトの名無しさん :01/11/15 23:18
>>575 XP、そういえば明日だった。すっかり忘れてた。(藁
インストールトラブルが本当に多いみたいなので、
OSからクリーンインストールした方がよさそうね。
>>579 MSDN会員なら英語版もダウンロードできるはず。
日本語版はやっぱり1ヶ月以上は遅れるんじゃないかしら。
>>584 コンパイラ(cl.exe以外)はV1 Redistにもちゃんと入ってるから大丈夫よん。
将来的には、ほとんどのWindowsマシンにC#コンパイラが入ってるかも。
IISが.NETになるんだからコンパイラもついてないとこまるわな
593 :
デフォルトの名無しさん :01/11/15 23:37
C言語で作ったコードも当然.NETに参加できるんですよね?
>>580 >>590 XP の CD は今日既に到着していたのですが、
VS.NET β2 入らないとつまらないのでためらってました。
明日入れてみます、ありがとう!!
596 :
デフォルトの名無しさん :01/11/16 00:13
System.Windows.Forms.Application.Run() を使わないで、プログラムを終了させないでおくことってできますか? プロセスとかスレッドとかのカラミでなんとかなるでしょうか?
598 :
デフォルトの名無しさん :01/11/16 00:31
>>596 Form.ShowDialogとか、そういうことじゃなくて?
>>599 今まで、Javaのクラス定義でも class XXX { ... }; のように
最後にセミコロン入れてたのか…
さすが、川俣センセ
XP買ってきた。
>>598 System.Windows.* に依存しない方法でやりたいんです。
なんかないでしょうか?
603 :
デフォルトの名無しさん :01/11/16 13:25
>>602 スレッドをグルグル回すのはどう?
つーか、どういうことをやりたいのかよく分からん。
例えば Win32API だけで作ったウィンドウだけでその先の処理をしたいんです…。 スレッドをぐるぐる回すっていうのは…?
メッセージループは?
>>605 何がやりたいのかぜんぜんわからん。C++でMFXなりWTLなりで
開発すればいいんじゃないの?
それとも、System.Diagnostics.Processと、System.Threading.WaitHandleで
起動したプロセスをただ待ちたいとか言ってるのか?
608 :
デフォルトの名無しさん :01/11/16 22:05
現行のVC++やってれば.NETのC#は簡単にマスターできる? それとも一からやり直し? 10が仕事で使えるレベルだとしたらMFC知ってる人はどこからスタート?
609 :
デフォルトの名無しさん :01/11/16 22:06
namespace内のクラスとかインターフェイスとかを列挙していく方法ってある? リフレクション関係にあるかなと思ったんだけどみつかんない。
あとConsole.Write()ってさ、"{0}"とかできるじゃん? これの、Cで言うところのsprintfみたいなのってないかな?
>>608 元VB厨の漏れでも結構楽々使えるから、MFC使えてたんなら8/10くらいからスタートで、すぐにガリガリかけるようになるんじゃない?
612 :
デフォルトの名無しさん :01/11/16 22:21
MFCは関係無いから3/10くらいじゃないか?
MSの現行ツールに慣れてるかどうか、で結構違う。 慣れているならすぐにでもガリガリ行ける。
>>609 アセンブリ単位でならできなくもないよん。
Assembly.GetTypes()で型の一覧を取って、あとはType.Namespaceを元にグループ化するとか。
>>610 String.Format()でできるよん。
615 :
デフォルトの名無しさん :01/11/17 14:44
Windowsアプリケーションのことで教えてください。 メニューアイテムを選択した時、ステータスバーにその説明を表示しようとしています。 表示の方はSelectイベントでうまくいきましたが、メニューを閉じた時、 ステータスバーにその説明が残ったままになってしまいます。 これをうまく消す方法はないでしょうか。 MenuItemクラスのイベントを見た限り、メニューを閉じた時のイベントが見つかりませんでした。 よろしくお願いします。
616 :
デフォルトの名無しさん :01/11/17 16:38
>>615 Form クラスに MenuComplete イベントがあるので,それを拾えばOK。
>>616 ありがとうございます!!
Formクラスの方にあるとは盲点でした。
618 :
デフォルトの名無しさん :01/11/17 22:00
C# って累乗の演算子無いんですか? VB で 2^3 とかやってたんで、演算子ないとすごく不便なんですけど…。 やっぱり power(2,3) の時代に逆戻りしなきゃ駄目? むしろグローバル関数がない分もっと不便か……。 どこかで.NET言語の演算子一覧を見た気がしたのだけれどどこだったか忘れた。
619 :
デフォルトの名無しさん :01/11/17 22:07
>>618 ないっぽいですね...
Math.Pow 関数を使うしか無いのかな。
以前、officeXPのようなメニューにするにはどうすすべか? と質問したものですが、結局まだできません。 SharpDevelopを日本語化されている方ならお分かりでしょうか? 教えて組んで申し訳ないのですが一例を。。 それともWinXPではこんなのはやらないでしょうか。。
>> 620 SharpDevelopのソースのRichMenuItem.csがとてもよく分かる サンプルになるかと。 MenuItem.OnDrawItem()などをオーバーライドして、設定されている スタイルに応じて自分で描画しています。
スレ違いを覚悟なんだけどさ、.NETについてるSQLServerの 設定ってどうやるの?なんかコマンドラインから使えるような ツールとかってあるのかな?
>>622 C:\Program Files\Microsoft SQL Server\80\Tools\Binn
624 :
デフォルトの名無しさん :01/11/19 20:49
Assembly.LoadFrom でアセンブリを読み込み, Activator.CreateInstance でインスタンスを作成したオブジェクトを 動的に解放することはできないのでしょうか? オブジェクトに null を代入してもアセンブリファイルが使用されたままと言われ, ファイルの上書きができない... やりたいこととしては,動的にアセンブリファイルを読み込んでアプリケーション起動中に アセンブリファイルを解放し,ファイルを上書きしてまた読み込む... という感じで,アプリケーションの再起動なしにアセンブリの上書きが行いたいのです。
> アプリケーションの再起動なしにアセンブリの上書き アセンブリの再読込,のほうが意味が通じやすいかも...
>>623 ありがと。
ちなみに.NETのランタイムにはこのDBエンジンはついてるんだろうか?
ま、自分で入れてみて確かめるか。すまんね。
>>627 なるほど。
ありがとうございます。試してみます〜
630 :
デフォルトの名無しさん :01/11/20 01:22
アセンブリってなーに?
>>630 アセンブリ言語
アセンブラはアセンブリ言語をマシン語にするソフト
ネタだったらマジレスすまそ
> アセンブラはアセンブリ言語をマシン語にするソフト アセンブラはアセンブリをアセンブルするソフト と言いたいところだ。
>>632 アセンブラはアセンブリをアセンブルするアセンブレなアセンブロ
と言いたいところだ。
>>630 .NETでいうところのアセンブリは、中間コードを含んだバイナリユニットのこと。
簡単に言うとDLLとEXE。
635 :
デフォルトの名無しさん :01/11/20 04:06
>>631-634 レスありがとうございます。ネタじゃなかったんですが、
コンパイルエラーでアセンブリファイルを参照してください。と
でるので、C#では別の意味があるんじゃないかと思ってたんです。
ありがとうございました。
636 :
デフォルトの名無しさん :01/11/20 04:16
質問ばかりで申し訳ないのですが、Streamクラスについての質問です MemoryStream streamA; MemoryStream streamB ;とあった時に streamAにstreamBの全内容を追加したいのですが、 いったんToArrayメソッドを使ってbyte[]にしてからstreamAのPositionをすすめて Writeしないといけないんでしょうか?なんかメソッドがあるような気もするのですが、 見つかりません。よろしくお願いします。
StreamWriter#Write(StreamReader#ReadToEnd());
638 :
デフォルトの名無しさん :01/11/20 13:23
>>637 レスありがとうございます。それだと上書きされてしまうようです。
以下のコードではstreamAはstreamBで上書きされているようで、困っています。
byte [] hoge = { 1 , 2 , 3 , 4, 5 };
MemoryStream streamA = new MemoryStream( hoge );
MemoryStream streamB = new MemoryStream( hoge );
StreamWriter writer = new StreamWriter( streamA );
StreamA.Position = streamA.Length ;
StreamReader reader = new StreamReader( streamB );
writer.Write( reader.ReadToEnd() );
よろしくお願いします。
>>636 > streamAのPositionをすすめてWriteしないといけないんでしょうか?
streamAの末尾から1バイトでも書き込もうとすると、例外が出てしまう。。。
未処理の例外 : System.NotSupportedException: メモリ ストリームは展開不可能です。
streamA.Capacityを広げようとしても、同じ例外。 これはもう、Streamの作り直ししかないのかな?
writer.BaseStream.Seek(0, SeekOrigin.End); でWriteでは。
MemoryStream streamC = new MemoryStream(); を作って、AとBを両方writer.Write( reader.ReadToEnd() );すれば?
643 :
デフォルトの名無しさん :01/11/20 16:53
ところで、どうしてバイナリデータにReaderを使ってるの?
>>641 >writer.BaseStream.Seek(0, SeekOrigin.End);
StreamA.Position = streamA.Length ; とどっかちがうの?
645 :
デフォルトの名無しさん :01/11/20 18:54
WindowsFormsをXPのLook&Feelにすることってできないんでしょうか? 今月出たmsdn magazineを参考にmanifestファイルを作ってみたんですが、 古いスタイルのままでした。
.manifestの内容も載せておきます。 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="x86" name="MyApp" type="win32" /> <description>An application that uses the themed ctls.</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="x86"/> </dependentAssembly> </dependency> </assembly>
自己レスです。 TextBoxはうまくいきました。でも、Buttonはだめです。 なんでだろう...。
ボタンとかはFlatStyle.Systemにしないとだめよん。 あと、devenv.exeにマニフェストを当てると、 フォームデザイナがXPの見た目で編集できるよん。 ちなみに、かちゅ〜しゃにマニフェストを当ててみたら、激しく落ちちゃった。(藁
649 :
デフォルトの名無しさん :01/11/20 19:31
>>639-640 おっしゃるとおりでした。困ったな〜以下コードです。
byte [] hoge = { 1 , 2 , 3 , 4, 5 };
MemoryStream streamA = new MemoryStream( hoge );
MemoryStream streamB = new MemoryStream( hoge );
byte [] tempB = streamB.ToArray();
streamA.Seek(0, SeekOrigin.End);
//stereamA.Positon = steramA.Length;
streamA.Write( tempB , 0 , tempB.Length );
Console.WriteLine( streamA.Length );
>>642 なんだか駄目ですね。以下コードです。
byte [] hoge = { 1 , 2 , 3 , 4, 5 };
MemoryStream streamA = new MemoryStream( hoge );
MemoryStream streamB = new MemoryStream( hoge );
streamA.Positon = 0 ; streamB.Position = 0;
MemoryStream temp = new MemoryStream();
StreamWriter writer = new StreamWriter( temp );
StreamReader reader = new StreamReader( streamA );
writer.Write( reader.ReadToEnd() );
reader = new StreamReader( streamB );
writer.Write( reader.ReadToEnd() );
Console.WriteLine( temp.Length );
>>650 Console.WriteLine( temp.Length ); //表示 : 0
です。
>>650 こんな感じでどうかしら。
using System;
using System.IO;
class Test
{
public static void Main() {
byte[] hoge = new byte[] { 1, 2, 3, 4, 5 };
using (
MemoryStream streamA = new MemoryStream(hoge),
streamB = new MemoryStream(hoge),
temp = new MemoryStream()
) {
byte[] b = streamA.ToArray();
temp.Write(b, 0, b.Length);
b = streamB.ToArray();
temp.Write(b, 0, b.Length);
Console.WriteLine(temp.Length);
}
}
}
>>648 ♯さん
バッチリです!!
ありがとうございました。
655 :
デフォルトの名無しさん :01/11/20 20:05
>>653 ありがとうございます。すべてbyte[]にして書き込むですね。
これで解決しました。レスをくださった皆様、本当にありがとうございました。
コードのusing ( ){ }用法なのですが、初めて拝見しました。
よろしければ、簡単な解説いだけないでしょうか?
忘れたけどVBのWithみたいなものかしら?
>>655 調べて見ましたが、using Statementの項目の用法のようですね。
HELP読んでみます。教えて君で申し訳ありませんでした。
>>655 おいおい、
>>653 って
>>642 じゃないか。usingにだまされてるだけじゃねーの?
Reader/Writer使おうが、直接writeしようが同じだろ。Streamなんだから。
>>657 Reader/Writerって、ふつう文字ストリームに使わない?
JAVAの話だけど。
>>657 さん
>>650 のようにやったけど駄目だったの。
いったんstramAとstramBをbyte[]にして用意したストリームにWrite( byte[] , 0 , Length );
で書き込むのが#さんのコード。
本当はstreamに別のストリームを直接追加したいのよ。
660 :
デフォルトの名無しさん :01/11/20 22:22
>>645-648 XPのスタイルにするくわしい方法、教えてください。
(って俺クラシックだけど...)
>>661 削除されてる。(w
どういう内容だったの?誰が投稿したの?川俣オヤジ?
>>664 「シアトルからRC3が送られてきた」っていう内容で、詳細なバージョン情報が載ってた。
ただ単に自慢したかったんだろう。(w
>>664 本当にあの板は厨房ばっかりだな。
ここのスレの方が数万倍レベル高いよ。
667 :
デフォルトの名無しさん :01/11/21 16:24
VS.NET にマニフェストを当てて作業してイメージリスト作ると, マニフェストを当てないアプリケーションでイメージリストの ストリーム読み込みで例外エラーが発生しちゃいます(w VS.NET のマニフェストを解除しようと,devenv.exe.manifest を削除すると 今度は VS.NET 上で「例外がスローされました」と出てデザインできない始末ヽ(´ー`)ノ 対処方法とかあるんでしょうかねぇ...? 見つからないのでアプリケーションを一から作り直してる(鬱
現在,マニフェストを当てた VS.NET ですべてのイメージリストを削除して, 次にマニフェストを解除した VS.NET でイメージリストを作り直すという 強引な作戦を試してみてます(w 成功するかどうかわからんけど...
3連続カキコスマソ。
あい,成功しました(w
>>668 のようにしてやれば,何とか戻りました。
アプリケーション側にマニフェストを当てるのは全く問題が無いようです。
ただ,VS.NET にマニフェストを当てると
>>667 のようになるみたいで。
マニフェストの内容を書き換えることでなんとかなったりするのかしら?
>>667-669 ありゃ、不具合出まくりですか?ごめんちゃい。
MLに書いてあったこと、そのまま鵜呑みにしちゃったんで...。
もしかしたら、comctl32.dll以外にもバージョン指定が必要なのかも。
%windir%\WinSxSを見てみると、VC++関連のランタイムもあるので。
でも、詳細はちょっとわからないです。
671 :
デフォルトの名無しさん :01/11/21 20:15
んー、困ってます。 BitmapをGraphic.DrawImage()すると、256x256の画像が384x384(くらい)で表示されるの。 旧制VBのScaleModeみたいなものがあるのかな? DrawImageUnscaled()は引数いじっても変わらないしぃ…謎。 というか転送元の一部を描画するようなオーバーロードが見当たらないのは気のせい?
>>671 > BitmapをGraphic.DrawImage()すると、256x256の画像が384x384(くらい)で表示されるの。
んー、これはソースがないと再現できない。
こちらでは、普通に描画してる限りはそんなことは起きてないよ。
> 旧制VBのScaleModeみたいなものがあるのかな?
> というか転送元の一部を描画するようなオーバーロードが見当たらないのは気のせい?
DrawImage()であるはずだよ。数が多くて迷うけど。
673 :
デフォルトの名無しさん :01/11/21 23:35
「C#」で検索すると#がワイルドカードとして認識されるのは非常に困る・・
>>673 Googleはかなり前から大丈夫になってるよ。
Csharp
677 :
デフォルトの名無しさん :01/11/22 14:23
質問です。 XMLのツリーをstringで取得する方法について教えてください。 XmlSerializerでクラスのインスタンスをxmlファイルに落とすことは できたのですが、ファイルに落とさずstringのデータとして取得するためには どうすればよろしいでしょうか? よろしくお願いします。
678 :
デフォルトの名無しさん :01/11/22 14:55
System.IO.StringWriter
679 :
デフォルトの名無しさん :01/11/22 15:51
何か教えてもらったらさ、そのことについてのヘルプくらい読もうよ。 using System; using System.IO; using System.Xml.Serialization; public class Hoge { public string Moge; public string Hage; } class ser { static void Main() { Hoge hoge = new Hoge(); hoge.Moge = "MOGE"; hoge.Hage = "HAGE"; XmlSerializer xs = new XmlSerializer(typeof(Hoge)); StringWriter sw = new StringWriter(); xs.Serialize(sw, hoge); Console.WriteLine(sw.ToString()); } }
680さん すみません。 System.IO.StringWriterについてhelpは見たのですが、 修正しなくても良いところまで手を入れて行き詰まっていました。 TextWriterを変更するだけでよかったのですね。 ありがとうございました。
682 :
デフォルトの名無しさん :01/11/22 19:05
TCP クライアント アプリケーションで,サーバから切断されているかどうかを 判定する方法はあるのでしょうか? Socket の Connected プロパティを調べてみたのですが... サーバから切断されても,ずっと True を返してきてしまいます。 Available プロパティも似たようなもの...
683 :
デフォルトの名無しさん :01/11/22 21:22
>>683 Stanley LippmanがC#の本を?
時代なんだねえ。
でも彼は今は、MSのVC++チームなんだよね。
>>686 毎度毎度お世話になっています。
ちょっと強引な手になっちゃうんですね(w
一応やり方はあると言うことがわかったので,一安心です。
Pool と Available を組み合わせて使用することで,無事切断判定がでけました。 よかったよかった。 遅ればせながら,♯大先生,感謝ですヽ(´▽`)ノ
× Pool ○ Poll 鬱だ。
690 :
デフォルトの名無しさん :01/11/23 21:57
692 :
(*...* ) :01/11/25 13:11
M$プログラミング初心者です。 日本語版のマニュアル をフレームワーク、Studio以外から 何処からかダウソできないでしょうか?
694 :
デフォルトの名無しさん :01/11/25 22:48
初歩の質問で恐縮ですが… ダイアログで選択した画像ファイルのイメージを ピクチャーボックスに表示するには openFileDialog_FileOkメソッドにどういう記述をすれば良いのでしょうか?
>>694 大まかな流れとしては、
1. OpenFileDialogのFileNameプロパティから選択ファイル名を取り出す。
2. Image.FromFile()メソッドで画像を読み込む。(引数は1.のファイル名)
3. PictureBoxのImageプロパティに、2.で読み込んだイメージを設定する。
こんな感じね。
C#っていいッスねぇ〜。 直感的に組めてしまう・・・
>>695 ありがとうございます。
色々試したところできました。
調べてみたのですが分からないので教えて下さい。 StreamReader等で、改行を区切りとして文字列を取得する方法は 分かっているのですが(ReadLine)、 改行文字以外の、スペースやタブ等を区切りとして文字列を取得する方法が 分かりません。 現時点では、char毎に、空白文字であるかを調べながら単語を区切っているのですが 何か良い方法があれば教えて下さい。
699 :
デフォルトの名無しさん :01/11/26 16:57
>>698 ReadToEnd で全部読み込んで,string.Split(' '); とか。
タブなら string.Split('\t'); ね。
>>696 直感的に組めてしまう、ってのは諸刃の剣。
VBで書かれた「スパゲッティ」プログラムの多いことといったら...
>>699 一旦、stringにしなければならないんですね。
C++の「cin>>(char)c」のようなものがあればと思っていたのですが、
やはり、無いんですね。
ありがとうございました。
702 :
デフォルトの名無しさん :01/11/27 04:38
SDKのドキュメントみて思ったんだけど、クラスのメンバの変数とメソッドのパラメータは 小文字ではじめてて、クラスのメンバの方にはmとかついてないですよね? NamingGuidelineをみてもそうやって書いてあるみたいだし。 だったら、どうやってこの二つを区別するんですか? 全く区別がつかないとかなり不便じゃないですか? 例えばメソッドのなかで、メンバ変数に引数を代入するとき名前の衝突に困るし。
むかしJavaスレで...
704 :
デフォルトの名無しさん :01/11/27 12:56
class Sample { int width; void Func(int width) { this.width = width; } }
705 :
デフォルトの名無しさん :01/11/27 15:40
例外からみなんですけど、 「絶対に try-catch で囲ませるメソッド」とか 「try-catchで囲んでいない場合でもエラー終了しない例外」とかって書けないんでしょうか?
>>707 そうなんですね…ありがとうございます。
ちょっとC#というより例外の仕組みのある言語全般での事で質問なのですが、
たとえば あるオブジェクトが移動する Move() というメソッドを作るとして、
そのオブジェクトが移動できなかった = 関数が失敗した場合、どういう風に失敗した事を伝えたらいいかな?というのでちょっと悩んでいます。
考えてみたのは
(1) boolな戻り値で成功/失敗を返す
(2) 例外を投げる
(3) 成功/失敗をあらわすEnum値を返す
という3通りなのですが、(1) は True と False どっちが成功なのかわかりづらいし
(2)は万が一 try-catch で囲んでいないとそれだけで落ちるのが痛いなと思っています。(場合によっては Move が失敗しても呼び出し元は関係ない場合があるのでチェックの必要がない場合もあるんです)
どの方法がベストでしょうか?
あと、その気になれば Move を呼び出す側のコードで、それが失敗するかどうかチェックできない事もないのですが
事前にチェックして失敗する場合は回避すべきか、それとも例外/戻り値で判断すべきかでも微妙に悩んでいます。
昔どこかで「エラーが起きる前にチェックできる場合はチェックせよ」というのを読んだ記憶があるのですが
OOPの概念的にはやはりエラーかどうかは当事者…というか当該オブジェクトの仕事のような気がしますし…。
どうしたらよいでしょう?
709 :
デフォルトの名無しさん :01/11/27 23:05
>>708 判断ができない場合は、
戻り値で返す版と、例外を投げる版を両方作っておくのが良い
>>708 失敗する可能性のあるメソッドがあるなら,必然的に try-catch を置くべきではないでしょうか?
たとえばファイルの移動をしたけど失敗,だけど作業が続行されて存在しない
ファイルを開こうとする... などということになったら (+д+)マズー なのではないかな,と。
.NET Framework では,戻り値によるエラーコードより例外を投げる方法を
推奨しているので,例外を投げた方が C# 的 (.NET 的) によろしいのでは
ないのでしょうか?
個人的な意見なのであまり深く考えないでね(w
>>708 絶対的な回答はないんだけど、
(1)のパターンはいちばん多いと思う。SqlDataReaderのRead()なんかもこのパターンね。
(2)はちょっと厳しすぎると思う。特に、非メモリリソースが絡んだ場合、
きちんとfinallyの処理も必要になるし。
(3)はステータスが3つ以上あるなら、それなりに意味があると思う。DialogResultみたいな感じね。
事前チェックについては、Move()そのものが事前チェックになってるんじゃないかしら。
Move()してみる → trueなら値を取得 みたいな感じで。
>>711 708 じゃないですが。
なるほど,言われてみればそうですね...
結局漏れも (1) のパターン(失敗したら null を返したり),結構あるし(w
>>712 漏れはイテレータみたいなのを想定して書いたんだけど、
ファイルの移動みたいな場合だったらそうはいかないかも。
FileクラスのMove()なんかは(2)のパターンね。
714 :
デフォルトの名無しさん :01/11/28 00:37
J#&VisualStudioでJava入門ってあり? C#覚えるついでにJavaも覚えちゃおうかなとか思うんだけど。
>>714 それは危険すぎる。(藁
ちゃんとJava2で覚えた方がいいと思うよん。
文法・API・ツールの使い方を含めての「Javaのお勉強」だから。
JDK1.1レベルなら、J#でもそこそこの互換性はあるんだけど、
やっぱり今どきJDK1.1の入門書は使わないと思われ。
716 :
デフォルトの名無しさん :01/11/28 05:04
>>708 例外は致命的なエラーにのみ使う。
(=それが発生したら通常は処理を継続できないようなエラー。)
継続可能なエラーは戻り値に頼る。
ってのがオススメですが。どうでしょう。
理由は、例外って言うものが、基本的にはプログラムのフローを中断する仕組み
だからです。
一方、エラーコードを戻り値で返すというのは、エラー後もプログラムのフロー
中に留まります。
しきい値の置き場が難しいとは思いますが、私の場合例外とエラーリザルトの区
別はこうしています。
(つまり、例にあるMove()の中でも、致命的なエラーで失敗したかどうかによっ
て両方組み合わせて使う、ということです。)
どちらかのみ、という考え方にするとむしろ悩みますよね。
皆さんの意見が聞けて参考になります。ありがとうございます。 あのあと考えたのですが、関数の戻り値専用のクラスを作るというのもアリだなと。 そうすればメンバー名で 成功/失敗 がちゃんとわかる bool値も持てるし、 それ以外の値(データ)も返すことができるなぁと。( でも C# だと out引数とかあるんですよね、こっちを使う方がいいか…) 時にC#ではキャストを定義することってできないんでしょうか? 色々試したんですけど駄目でした。 以下失敗例 public TargetType operator(); public TargetType this(); public (TargetType) this(); 同じかなと思ってC++系のキャストについて調べたんですけど、 C++でもCスタイルキャストって定義/再定義できないんですかね?
>>717 C#ではこんな感じよん。
public static explicit operator CastTo(CastFrom obj) {
return obj.〜;
}
"explicit" の部分を "implicit" にすれば、
いちいちキャストしなくても暗黙的に変換してくれるよん。
♯さんいつもありがとうございます。 なるほど、こう書くんですね。 でも static っていう事はオーバーライドはできないんですね。 ベースクラスへのキャストは書きかえられないっと…。
720 :
デフォルトの名無しさん :01/11/28 11:00
くだらない質問ですみませんが、C#のObjectとJ#のjava.lang.Objectってどういう関係になるんですか? J#を使える環境にないので興味までに。
721 :
デフォルトの名無しさん :01/11/28 11:09
>>716 大体同意だと思う。もっとわかりやすく(?)言えば、「DBC」だね。
例外とは、そのコードが事前条件を満たした状態で呼び出されたにも
かかわらず、事後条件を満たせない状態で終了せざるを得ないときに
投げるもの。例外にするか、エラーコードにするか悩む前に、まず
そのクラスの事前,事後条件と不変表明を考えてみるべし。
Eiffel#マンセー
>>720 public class Object extends System.Object
だから、equals() - Equals(),finalize() - Finalize(),toString() - ToString() とか
両方とも持ってる。(藁
>>721 「DBC」って、「Design by Contract」のこと?
漏れはぜんぜん実践してないなぁ...。
#さん、ありがとうございます。 > だから、equals() - Equals(),finalize() - Finalize(),toString() - ToString() とか > 両方とも持ってる。(藁 うーん、やっぱりそうするしかないのでしょうね。
724 :
デフォルトの名無しさん :01/11/29 00:29
つかぬことをお聞きしますが、WinXP+Apatch2_0_28+C#で鯖を立てることは可能でしょうか? CGIのテスト用に(スキルアップも兼ねて)実験してみたいのです。
なぜにApache!?
>>725 今試してみた。
cgi-bin なフォルダに exe を置けばいいみたい。
っていうか面白いね,これ(w
Console.WriteLine("Content-Type: html/text\n"); を忘れずに。
ついでに。 Environment.GetEnvironmentVariable("QUERY_STRING"); で引数を取得できるみたい。
729 :
デフォルトの名無しさん :01/11/29 18:06
面白いあげ
>>727 細かいツッコミごめん。でも知らない人が勘違いするといけないから・・
html/text じゃなくて text/html だね ъ( ^ー゚)
# あと \n よりは \n\n でもよさげな気もするけど
# これは時と場合によるかもー
>>730 > html/text じゃなくて text/html だね ъ( ^ー゚)
あうちっ。
> # あと \n よりは \n\n でもよさげな気もするけど
WriteLine は \r\n を最後に出力するので,\n だけで ok ですよん。
Write("〜〜\n\r\n"); と同じだと思う。
>>oll C#ってどこで手に入るの? 開発環境は?
733 :
デフォルトの名無しさん :01/11/29 23:32
古式!!!!
>>731 > > # あと \n よりは \n\n でもよさげな気もするけど
> WriteLine は \r\n を最後に出力するので,\n だけで ok ですよん。
ォゥマイガッ!! まじっすか
知らない人が勘違いしてたー
コード書き直さなきゃ ヽ(´ー`)ノ ウツダ イコウカナ
736 :
デフォルトの名無しさん :01/11/30 14:09
ApacheといえばActive Perlの出番だけど、PerlNETも使ってる人っている?
>>736 最新ベータはRCじゃないと動かない。
鬱だ...。
738 :
デフォルトの名無しさん :01/11/30 15:07
news://msnews.microsoft.com/microsoft.public.objectspaces/ ObjectSpaces Technology Preview bits available ... Please note that this Technology Preview of the framework runs against the PDC version of Visual Studio .NET.
.NETでCGIというのも面白いね。 正規表現は使えるし、String.Formatもあるし。
740 :
デフォルトの名無しさん :01/12/01 12:50
マルチスレッド環境において、C# の Singleton は、インスタンス生成メソッドを lock (だっけ)メソッドにしておく必要がありますか? もしくは static なインスタンス保持変数に = new Singleton(); だけでも OK ですか?
742 :
デフォルトの名無しさん :01/12/01 21:13
.NET Frameworkを使ってXMLをやるサンプルとかどっかにありませんか。日本語で。
♯さんありがとう。 色々方法があるんですね。 で、コンストラクタと初期化子に関する基本的な質問なのですが、 メンバーに初期化子をつけないで、ディフォルトコンストラクタ以外で初期化すると、null で上書きされるようなのですが、初期化の順番を指定する方法は無いでしょうか? そのフィールドはディフォルトコンストラクタが呼ばれたときは null でいいんだけど、オーバーライドしたコンストラクタが呼ばれたときだけ初期化したいんです。
読み返して気づきました。 ディフォルトコンストラクタで明示的に null 代入すればいいんだ。失礼しました。
そうじゃなかったらしい…。 やっぱり null になっちゃった…何故?
書き間違いだった…。コンストラクタ内で同名の変数宣言してた… 宇都田 篠夫…
>>742 「XMLをやる」って日本語はちょっとどうかと思うが・・・。
C#相談室の初代スレのほうでXMLを使ったプログラムのサンプルいくつか出てたと思われ。
あとはGoogleで System.XML C# とかそういうキーワードで検索して見れ。
748 :
デフォルトの名無しさん :01/12/02 00:20
panel にコントロールを追加するにはどうすればいいんでしょうか?
>>748 panel.Controls.Add()
panel.Controls.AddRange()
>>749 あ、フォームと同じか、ありがとーう。
追加質問ですが、
二つ並んでる PictureBox があって、それぞれ MouseMove イベントを処理してるんですが、片方のボックス上でクリックしながらもう片方に移動すると、元の方の MouseMove が発生しつづけるだけでなく、新しく移動した方の MouseMove が発生しません。
どうにかして元の MouseMove を切って、現在の方の MouseMove を発生させる方法はないでしょうか?
751 :
デフォルトの名無しさん :01/12/02 12:06
>>750 あんまりGUIプログラム試したことないから自信ないけど、
ドラッグ&ドロップがらみのイベントを処理しなきゃいいんじゃないかな。
DragEnter, DragLeave, DragOver, DragDrop あたりを調べれ。
>>751 あ、なるほどー、そう言えばこれはドラッグ&ドロップ時の動きですねー。
するどいなー、ありがとうございます。
何気に軽量コンポーネント化でごまかしてる最中なんですが、
ディフォルトの Paint イベントを無効にする方法ってないでしょうか?
Panel なんですけど、Paint イベント時に Bitmap を DrawImage してるんですが、どうも背景色で塗りつぶしが入るらしく、異様にちらつくんです。
>>752 サブクラス化して,OnPaint をオーバーライドしてなにも呼び出さないとか。
動くかどうかは知らない。
>>753 オーバーライドした OnPaint 内で処理してみましたが、元と同じでした。
>>754 というのは何のメソッドですか?
で、実は解決したのですが、継承元を Panel から PictureBox に変えただけで全てがうまくいきました。
>>755 ありゃ,同じでしたか... ごめんなさい。
757 :
デフォルトの名無しさん :01/12/02 17:10
Visual C#.Net β2使ってForm1からForm2を呼び出す方法が分かりません。 Application.Run(new Form2());ではダメみたいです。 Application.RunDialogかForm.ShowDialogを使えと言われるのですけど、 Application.RunDialogはアクセスできない保護レベルと言われるし、 System.Windows.Forms.Form.にはShowDialogが無いみたいです。 要はvbでのForm2.Show vbModalと同じ様な事をしたいのです。
758 :
デフォルトの名無しさん :01/12/02 17:11
C#がJavaより優れてる点ってなんすか?
>>757 Form2 form = new Form2();
form.Show();
です。
作ったフォームはクラスなので,インスタンスを作成するべし。
あ,モーダルなら form.ShowDialog(); かな。 Form2 のボタンの DialogResult プロパティに値を入れておけば, ShowDialog の戻り値にその値が入ります。
761 :
デフォルトの名無しさん :01/12/02 17:50
>>759 >>760 ダイアログを表示する事ができました。ありがとうございます。
今更知ったのですけど、(new Form2).ShowDialog();でも良いみたいでした。
762 :
デフォルトの名無しさん :01/12/02 17:54
>>761 (new Form2()).ShowDialog();の間違い。
>>758 バックについてるのが 惨 じゃなくて M$。
>>753 いえいえ、いろいろ試してみるのも勉強になりますので、ありがとうございました。
>>758 実績以外の全てだゴラァ!! とか言うとまた宗教戦争になるのかな?
Rubyマンセー!! とか言ってみる。
766 :
デフォルトの名無しさん :01/12/03 11:03
>>765 Rubyにはインデクサやアトリビュートが無いね。(プ
770 :
デフォルトの名無しさん :01/12/04 00:06
VS.NETでC#使うとき、皆さんどうやってメソッドを追加してますか? 手書きと、クラスビューからメソッドの追加と、ハンドラの自動追加のほか 何か便利な方法ありますか? というか、どうするのがVS.NETの流儀に従ったメソッド追加法なのでしょうか?
>>770 私は通常メソッドは手書き、イベントハンドラはプロパティウィンドウのイベントの所から追加しますね。
なんでメソッドの追加方法が気になったのでしょう?なんか不便な点とかありましたか?
私は旧VB厨だったので、はじめのうちはテキストエディタの上の方の右側の部分のハンドラ選ぶ部分で、まだ作ってないハンドラが選べないのが辛かったです。
ま、複数イベント単一ハンドラの為には仕方がないんでしょうけど。
(それよりも *EventArgs にどんなメンバーがあるか覚えなければいけない方が辛いですね)
772 :
デフォルトの名無しさん :01/12/04 09:49
質問です。 ファイルへの出力を「FileStream」と「BinaryWriter」を使って行っているのですが、 最後まで書き込むことができません。 作成するファイルのサイズは数MB程度です。 コンソールのみで行うと上手く行くのですが、GUIを使うプログラムでは 失敗してしまいます。 一応、try{}で囲んではあるのですが、例外処理は行われません。 上の現象について、何か分かる方、教えて下さい。
774 :
デフォルトの名無しさん :01/12/04 11:40
>>772 using(FileStream fstream = new FileStream("File Name")
{
// ファイルへの書き込み
}
// using ブロックを抜けたときにファイルにフラッシュされる。
775 :
デフォルトの名無しさん :01/12/04 12:00
正確には、usingステートメントはこう展開される。 FileStream fstream; try { fstream = new FileStream("File Name"); ... } finally { ((IDisposable)fstream).Dispose(); } で、Disposeメソッドの中でFlushが呼ばれる。
AxSHDocVw.dllを作ろうと思って aximp C:\WINDOWS\system32\SHDocVw.dll を実行したのですが、 「AxImp Error: 出力ファイルC:\WINDOWS\system32\SHDocVw.dllへの書き込みエラーです。」と表示されて失敗します。 何か特別な設定が必要なのでしょうか;;WindowsXPproとSDKベータ2です。
>>776 C:\WINDOWS\system32で実行してない?
一度cdコマンドで C:\WINDOWS\system32に移動してから実行してみました。 C:\WINDOWS\system32>aximp SHDocVw.dll それでも出来なかったのでSHDocVw自体を他の場所(デスクトップ、マイドキュメント)にコピーして試したのですが、 やはり同じエラーが発生しました・・。
>>778 C:\WINDOWS\system32以外の場所からフルパス指定
aximp C:\WINDOWS\system32\shdocvw.dll
でどう?
ご指示のとおり、C:\Documents and Settings\hogeから実行したらAxSHDocVwが出来ました。 場所だけで全く変わってしまうんですね。 勉強になりました。どうもありがとうございました。(_ _)
>>773 >>774 >>775 Flush()とusing(...){}の双方を試しましたが上手く行きました。
ありがとうございました。
ファイルへの出力は、デストラクタが呼び出される際、
バッファの内容が自動的にフラッシュされるものと思っていたので、
敢えてFlush()と明示しなければならないのは予想外でした。
なんか不便なような…。
>>781 >敢えてFlush()と明示しなければならないのは予想外でした。
あえてFlush()はしなくてもいい。だが、Dispose、またはCloseは
しなきゃだめ。これを.NET FrameworkのDisposableパターンという。
CloseはDisposeを呼び、DisposeはFlushを呼んでいる。
783 :
デフォルトの名無しさん :01/12/04 22:05
ある特定の画像だけ Graphics.FromImage() をすると OutOfMemoryException が投げられてくるんですけど何故でしょう? 4755 バイトの透過GIF なんですけど… これよりずっと大きな画像でも出ない状況でこれだけ……。 って Graphics を作るとき、α値のある画像って何らかのリソースを大量に消耗するのかなぁ?
784 :
デフォルトの名無しさん :01/12/04 22:29
>>781 GCを持ってる言語では、オブジェクトが破棄されるタイミングは分からないからデストラクタには頼れない。
C#では構文的にはデストラクタを定義できるけど、実際にできるものは
C++のデストラクタよりも、Javaのファイナライザに近いものだと思ったほうがいい。
(というか、デストラクタは内部的には Finalize() メソッド扱いされる。)
で、ファイナライザの起動までリソースを開放しないのは勿体無いし、
大体、ファイナライザは呼ばれる保証がない(プログラム終了時にはファイナライザは呼ばれない)から、
Disposable パターンを使わないといけない。
>>782 CloseがDisposeを呼んでるんじゃなくて、DisposeがCloseを呼んでるんじゃないか?
785 :
デフォルトの名無しさん :01/12/04 22:32
>>783 そもそもGIFは無圧縮GIFしか読めないとかそういう制限ってなかったっけ?
Uni$ysのせいで。
透過PNGに変えてみれ。
786 :
デフォルトの名無しさん :01/12/04 22:34
>透過PNGに変えてみれ。 これもAppleが特許握ってなかったっけ?
>>784 うーん、確かに。FileStream#Closeは、内部でFileStream#Dispose(bool)を
呼んでいる。が、Stream#Closeは何もしてなくて、Stream#DisposeはStream#Closeを
呼んでるな。うーん。でもStream.Disposeは結局何もしないから、やっぱ内容としては
CloseがDisposeを呼ぶで正しいんじゃないか?わからん(w
>>787 おおっ、Dispose(bool)なんてもんがあったのか・・・。
でも、それって IDisposable インターフェースの Dispose じゃないし、
Dispose が Close を呼ぶってののほうが正しいと思われ。
Dispose() → Close() → Dispose(bool)
の順で呼ばれる。
Close()は仮想関数のだから、
Stream#Dispose から呼ばれるのは結局 FileStream#Cloes になってるはず。
で、実際リソースの開放を行ってるのは Dispose(bool) なんだけど、
この Dispose(bool) は protected だから直には呼べない。
789 :
デフォルトの名無しさん :01/12/05 00:48
>>771 どうもありがとう。これですっきり手書きできます。
どうして気になったのかというと、
ほとんど手書きVC++厨でしたので、
はて、ぷろぱてぃーとは何ぞ?というような状態でして、
VBライクな開発環境では、皮は環境が作ってくれるので、
きっと便利なメソッド追加方法があるのでしょう。
と思った次第でありまする。
>>788 そうでした。ようやくわかった。
ちなみに、Dispose(bool)は、Finalizeから呼ばれたのか(Dispose(false))、
Disposeが呼ばれたのか(Dispose(true))判別するためにあるみたい。
791 :
デフォルトの名無しさん :01/12/05 15:26
GC には イベントとかデリゲイトとかないみたいなんですけど、 GC が行われた事を感知する方法ってないでしょうか?
>>792 情報ありがとやんす。
プロファイラ…さっぱりわからないです。
何かとっかかりになる部分ってないでしょうかね?
弱参照ですが、 Flyweight + 弱参照 & GCで要らない弱参照破棄で
完璧に効率的な Flyweight を作ろうとしたのに GC が感知できない〜〜!!
って所で質問だったので………
>>793 C:\Program Files\Microsoft.NET\FrameworkSDK\Tool Developers Guide\docsの
Profiling.docなんかはどうかしら。
796 :
デフォルトの名無しさん :01/12/05 21:30
[STAThread]について、 (1)これは何をするものなのか? (2)ほかにも[]で囲まれる記述があるのか? を調べたいのですが、何を調べればよいかご存じないですか? STAThreadAttributeのヘルプは出てくるのですが、 [STAThread]がどういう関係にあるのかよくわからないのです。
797 :
デフォルトの名無しさん :01/12/05 23:26
>>796 それは Attribute って機能。
[STAThread] と [STAThreadAttribute] は同義語。
他の Attribute にどんなのがあるのか調べたかったら、System.Attribute クラスのサブクラス調べれ。
例えば、Conditional とか調べてみると Attribute に興味惹かれると思われ。
>>793 え?それならFinalizeで事足りるんじゃないの?
799 :
デフォルトの名無しさん :01/12/06 10:01
正直 struct ってどうよ? わりとプリミティヴに近いデータを扱うにはいいかなとか思ったんだが、 インターフェイスを介して扱った途端、まるでクラスのように振舞いやがった(代入演算子が) どういう場面が struct の使いどころだと思う?
今だ!800げっと!!
801 :
デフォルトの名無しさん :01/12/06 10:49
>>798 Finalise って、プログラム終了時に呼ばれないから、それがまずいんじゃないの?
>>799 クラスみたいに振舞ってもいいじゃん。
問題は値型か参照型かの違いなんだし。
structを使うのは、
データ構造が単純で、値渡ししたほうが効率がいいときで、
継承を使わないときでいいんじゃないか。
インターフェース解して扱うときってどうしてるんだろ。
Boxingされてるのかな?
もちろん。interfaceは参照型だから、Boxされる。
>>801 あぁ…そういう理由があったのか…。
つーか漏れは参照をコピーしたいんじゃなくて中身をコピーしたかったんだが
Clonable インターフェイスみたいなモノはないんだろうか?
英語サッパリなんですよね(;;´д`) 読める人が羨ましぃょぅ。
structは値型だから代入すれば値がコピーされるよ。 インターフェイスをコピーするなんてのは意味ないしね。
>>804 今手元にヘルプがない。 MSDN のサイトはみたけどそれらしいネームスペースなかったし。
>>806 で、struct じゃあ役不足だからクラスに戻したんだけど、
標準的なコピー方法が見つからない…
System.IClonable shallow copyだけでいいなら、MemberwiseCloneを呼べばいいだけ。
>>808 なんと System 直下でしたか!!
Serializable とか奥深くにあったから Clonable もどっか固有の名前空間あるのかと思ってしまった。
ありがとーございます。
>>811 「ドットネット」って、カタカナはやめれ。(w
814 :
デフォルトの名無しさん :01/12/07 00:29
815 :
デフォルトの名無しさん :01/12/07 11:39
自動的にダブルディスパッチしたいんですけど、やっぱり無理でしょうか? using System; public interface IHogeHoge { void Do ( IFoo Operator); } public class CHogeHoge : IHogeHoge { public void Do( IFoo foo) { Console.Write ("あぁやっぱりこっちか…"); } public void Do( CFoo foo) { Console.Write ("なんでこっちが呼ばれないの??"); } } public interface IFoo { void Gonyo ( IHogeHoge o); } public class CFoo : IFoo { public void Gonyo ( IHogeHoge o) { // やっぱり o をキャストしなきゃ駄目? o.Do(this); } } public class Program { public static void Main() { CFoo CFooInstance = new CFoo(); CFooInstance.Gonyo( new CHogeHoge()); } }
WindowsのC(とかほかのやつも)開発ソフトってサクサク動くのでしょうか? Linuxとかと比べて。
817 :
デフォルトの名無しさん :01/12/07 19:59
818 :
デフォルトの名無しさん :01/12/07 21:34
Insider .NETで紹介されてたこれ↓
http://gotdotnet.com/terrarium/ よく読んだら
Make sure you have at least the PDC build of the .NET Frameworks installed.
だってよ〜
できねーもん紹介すんなよ・・・鬱だ詩嚢
え!ICloneable (綴り間違えてた…鬱……) って Clone() 自分で実装するの?? (MemberwiseClone() + 参照を適当に処理する? ) というか Clone の戻り値は object なの?クライアントコードでキャストしろと?
820 :
デフォルトの名無しさん :01/12/07 23:43
821 :
デフォルトの名無しさん :01/12/09 14:28
C#によるマルチスレッドの簡単なサンプルをキボンヌ!!
822 :
デフォルトの名無しさん :01/12/09 14:51
質問なのですが、Application.Run() にフックをかけたいんですけど、 なにか簡単な方法はありますか? Application.Idle はメッセージが送られた場合のみしか実行されない様なのですが、 ウィンドウプロシージャのメッセージループのたびに処理したいのです。 何か方法をご存知の方いらっしゃいましたらよろしくお願いいたします。
>>822 メインフォームのWndProc()に処理をはさむ。
>>823 お返事ありがとうございます。
Form を継承したフォームで、 WndProc をオーバーライドして、必要な処理 & base.WndProc() って事ですね?
なるほど〜〜です。ありがとうございました。
やってみたんですけど、イメージしてたのとちょっと違うんです。 やっぱり WndProc はメッセージが送られてこないと動かないんですよね。 それより前の段階のメッセージループ?の所で処理したいんです。 ちょっと古い Win32 の本からの引用ですが while( GetMessage( &msg, (HWND)NULL, 0, 0)) { TranslateMessage( &msg); DispatchMessage( &msg); // ここで処理したい } っていう感じなんですけど、何か方法はありますでしょうか??
>>826 Application.AddMessageFilter()でどうかしら?
♯さんお返事ありがとうございます。
AddMessageFilter を試してみました。でも私の思っている動作ではありませんでした。
ここまでやってみてはじめて気がついたのですが、
わたしが
>>826 で書いた Win32 のメッセージループの API
GetMessage(), TranslateMessage(), DispatchMessage()
って、呼んだら新しいメッセージが来るまで処理を返さないんでしょうか?
だとしたら別のアプローチをしないといけないんですが…。
たとえば別のプログラムで、フォームとは関係ない処理が走っていて、
ポーリングして終了を感知したい場合
(こっちのプログラムにウィンドウメッセージが送られてこない場合でも、
その処理が終了する場合がある)
などは、このようなやり方ではできないんでしょうか?
そういう時はAPIならPeekMessage()とか使うのかね。 スレッド分けしたら?
>>828 > GetMessage(), TranslateMessage(), DispatchMessage()
> って、呼んだら新しいメッセージが来るまで処理を返さないんでしょうか?
GetMessage()は、文字通りメッセージをゲットするのを待ってるよん。(藁
> たとえば別のプログラムで、フォームとは関係ない処理が走っていて、
> ポーリングして終了を感知したい場合
フォームからワーカースレッドを立てるのなんてどうかしら?
ThreadStartをフォーム内のメソッドにすれば、閉じたりするのも簡単になるし。
お返事ありがとうございます。
>>829 いや、あくまでも Application クラスが内部で何をやっているかの話で、
本当に Windows API で処理しているわけじゃないので…。
>>♯さん
なるほど、別スレッドで処理するのですね。さっそく調べてみます。
ありがとうございました。
>>818 来週の.NET DevConでPDC英語版配るんじゃないかなぁ?推測だけど。
推測の根拠は、Webで配布予定って書いてある、Smart Device Extensionとか
.NET MyServices SDKって、.NET Framework PDC版以上じゃないと動かないから。
テキストボックス内でEnterキーだけを無効にするにはどうしたらいいんでしょうか。
VS.NET 上で /win32res オプションを指定することはできないのでしょうか? xp style にするために .manifest を同じフォルダに置くのも格好悪いし, かといって埋め込もうとするとコンパイルした後にリソースエディタ使わないといけないし... 要はコンパイルするだけで exe に manifest を埋め込みたいのですが。
>>834 ・プロジェクトのプロパティページを開く
・左側のタブで [構成プロパティ]→[デバッグ] を選ぶ
・[開始オプション] の [コマンドライン引数] を設定する
これでどうかしら?
>>836 う〜ん,これだとアプリケーションに引数を渡すだけで,
コンパイラには渡してくれないみたいです...
>>836 ハァ?
それはデバッグ実行するときのオプションだYO!
>>837 ごめんちゃい。
ボケててぜんぜん違う回答してた...。
カスタムビルドの方ね。
これは多分手作業じゃないと無理だと思われ。
>>839 ぐふっ,やっぱりそうですか...
手作業でコンパイルするのも面倒臭いので,諦めて
コンパイル→リソース弄り
することにしますです...
>>842 最近ピアソン・エデュケーションの本ばっかり買ってる…。
ちょっとばかり日本語が変な事が多いのが残念。
でも英語よりは確実に読みやすいし…。
やっぱり日本製のまともなC#本が出るまでにはまだまだまたなきゃいかんのだろうか?(今出てるのって大半「言語仕様紹介/環境紹介」だよね)
はっきり言って現状C#の参考書はみんなJavaだ。
eの値を小数点以下100桁まで求めよ。 πの値を小数点以下100桁まで求めよ。 教えてください
>>843 RTMまではどこの出版社も大した本が出せないんじゃない?
来年4月以降にドバドバでそうな気がする。もちろん糞本もたくさん
出るだろうね。
みんな、どうやって糞本と良本を見分けてるんだろう?漏れは
筆者/訳者くらいしか術を持ってない。
>>844 まずは小数点100桁まで扱えるクラスを作る事からはじめましょう。
C#ならオペレーターオーバーロードできるのでJavaで同じ事するときより幸せ〜〜僕幸せうさぎ〜〜〜になれますYO!!
>>845 なるほど〜、よく考えたらまだVS.NET 製品版リリースされてなかったんだよね。
すっかり忘れてた。
漏れは評判の良かった本をちょっと遅れて買うことが多いからなぁ…。
あとは本の表紙、良本かどうかはわからないが、クソ本はオーラが漂ってることが多い。
C#のAPIリファレンス(C#ではnamespaceでしょうか)をオフラインで, 読みたいのですが,どこかで手に入りませんか? クラスライブラリ無しでは1行も書けないJAVA厨なんです… 英語でもよいのでお願いします
847 じゃないけど…
>>848 MSDN 以外にヘルプなんてついてくるの??
[スタート]-[プログラム]-[Microsoft .NET Framework SDK]-[Documentation]
確かにありますね,これで十分です.どうして気づかなかったんだろ. お騒がせしました〜
>>848 & 850
あーほんとだー、今まで会社だとMSDNないから辛かったんだよね〜。
ありがと〜う。
unsafeしてもガベージコレクタが勝手に働くんですか?
>>853 ちゃんと知ってるわけじゃないけど、526 で
> unsafeを使ったコードはunmanagedだぞ。
って言ってるから、 unmanaged -管理されない→GCにも引っかからない
んじゃないかなぁ?
855 :
デフォルトの名無しさん :01/12/14 09:56
856 :
デフォルトの名無しさん :01/12/14 10:00
>>853 unsafe contextでもGCは起こる。
必要に応じてfixed statementを使って、GCでポインタ値が変わるのを防がなければならない。
(これをpinningともいう)
>>854 unsafe != unmanaged
最近このスレ落ち着いてるね。 隔離スレができたせいか。(w
>>859 正直、RTMが出るまで動くに動けない。(藁
861 :
デフォルトの名無しさん :01/12/14 23:09
ねえ、C#ユニットってのは無いの? JUnit移植しても良さそうなんだけど車輪の再発明嫌なんだよね。
>>862 ああ、.NET全体がターゲットだったか。
検索しても気づかなかったわけだ
(つーかはじめにSourceForge調べなかったのがいけないのか)
ありがとう。
865 :
デフォルトの名無しさん :01/12/15 11:38
あーあ、速く製品版のVS.NET出ないかな〜。 そーすれば俺みたいな厨房でも理解できるような本とか出るだろうしなぁ。 期待age
もうすぐ1週年。皆で盛大に祝おうじゃないか! オフ会もありかな?なんちゃってw。
C#で作ったEXEって.NET Frameworkがないと動かないの? 文法自体はかなりよさげなんだけど動かないんじゃぁちょっと・・・。
>>867 そう、だからWindowsに当たり前のように入っている日を
心待ちにしてるんだよ。
が〜〜〜ん! やっぱりそうかぁ、残念。 しばらくは辛抱ですね。 せめてC++にプロパティをくっつけてくれるだけでハッピーなのになぁ。
>>870 __propertyも結局.NET Frameworkを要求するんじゃないでしょうか。
C++Builderだったら今でも__property使えるよ
874 :
デフォルトの名無しさん :01/12/15 20:24
WindowsXP用のツールバーのビットマップ集ってどっかにない?
>>875 こういうアイコンって著作権はどうなるのかな?
使うと著作権違反?
>>873 マジですか?それはちょっと魅力的かも。
>>875 874じゃないけどサンクス
でもCToolBar::LoadToolBarが16色にしか対応してないからちょっと面倒だなぁ。
878 :
デフォルトの名無しさん :01/12/16 13:28
879 :
デフォルトの名無しさん :01/12/16 13:35
>>871 VC++6 でも使えるんとちゃう?
__declspec( property( get=get_func_name, put=put_func_name}) ) declarator
>>879 すげぇ!感動した!
ぜんぜんC#の話じゃないけどありがとう!
>>866 明日で1周年。ヽ(´ー`)ノ
1年たっても製品が出てないね。(藁
>>878 どうなんだろう...。
やっぱり今週がヤマなのかな?
一周年記念カキコ。
質問です。 System.Collections.CollectionBase って 継承しないで普通に List に委譲するのとどう違うのでしょう?
1周年。ヽ(´ー`)ノ でも、漏れはいまだにβ2。(藁
>>887 CollectionBaseは内部でArrayListを持ってるので、
機能的にはあまり変わりはないと思われ。
ただ、CollectionBaseの方が委譲の記述の手間も省けるし、
イベントとかも持ってるので便利ね。
>>890 なるほど、イベントとかもあるんですね。
これは自力で書くよりも純粋なコレクション作るつもりなら継承した方が楽ですね。
ありがとう。
>>890 あ、ちょっと訂正。ごめんちゃい。
> イベントとかも持ってる
delegate / eventのイベントじゃなかった。On〜メソッドの方ね。
役割的にイベントに近いということで。
>>892 「めったに使われない。プロパティの方が好ましい。」ということよん。
public / protectedのフィールドは他のクラスからアクセスされるから、
それだったらプロパティ経由にしてちょ、ということね。
895 :
◆K1SiC5MI :01/12/18 22:30
きょうのDev.Confで、RTM?ゲット。 RoomBは、おおむね当たりでした。 最後のセッションだけA行ったら、外した。時間の無駄だった。。。 みんな、逝った???
> ♯さん あ、「プロパティの方が好ましい」なのですね。 なんでわざわざ public のフィールドなんか書いてあるんだろう? と思ったので、変に期待訳してしまいました。 ありがとうございます。
なんか、このスレあんまり盛り上がってないね^^; あんまりみんなまだ C# 使ってないのかな?
>>897 このスレはある意味、ほんとに使っている人のためのスレだからね。
擁護・アンチ・雑談は別スレで盛り上がってるし。(w
にしても、そのトップリ(・∀・)イイ!
>>897 スゲェトリップ!
ちなみに現在 C# を使って一味違ったチャット作成中でございます。
英語力が皆無な為,適当に説明書いて SourceForge にプロジェクト登録したらあっさり denied されたYO!(鬱)
完成したら紹介する... かも。
>>895 > RTM?ゲット。
RCだよね...?
>>897 トリップ(・∀・)イイ!
前に比べるとかなりマターリしてるね。RTMも近いのに。(藁
>>899 がんばって公開してちょ。ヽ(´ー`)ノ
ところでさ、みんな UML のクラス図で property ってどう書いてる? 明らかに操作なんだけど、get / set みたいなプリフィクスは無いワケで、 書き分けられないよね。 Del や VB の人達はどうやって書いてきたんだろう? なんか方法あったら教えて欲しいな。
>>904 クラス図にはプロパティのget,setとか
コンストラクタ、デストラクタは明示的に書かないよね?
書き分けなければならないようなことをするなら
別な名前にしたほうがいいんじゃない?
>>906 え、みんな重要なフィールド(クラス図用語のプロパティ)へのアクセッサメソッド書かない?
例えば Singleton だったら getInstance() とか。
あ、これを (C#の) property にしちゃうからいけないのか。
.NET Framework のクラスライブラリってメソッド名が大文字ではじまってるよね。 小文字マンセーな漏れは、小文字にしようかライブラリに合わせようか悩んじゃうよ。 なんか大文字から始まるのってスマートじゃないんだよねぇ。
MSのサイトで今提供されてるIE6用の修正モジュールなんだけど、 VS.NET入れたんでDLしたけどインストールできない・・・・・ 「この修正モジュールをインストールするにはInternetExplorerが必要です」って・・・・・ 板違いスマソ
910 :
shinsaku :01/12/20 22:36
>>889 の本買ってきた。
文法からライブラリまで幅広くて、なかなか読みごたえあったよ。
もうすぐ新スレですね...
Part2 の進行も Part1 に比べて早かったような。
>>912 面白そうなので今度買ってみますヽ(´ー`)ノ
>>904 C#のプロパティって、プロパティって機能を持たない言語からも呼び出せるように、
内部的には
void Setプロパティ名(型 value)
型 Getプロパティ名()
ってメソッドになってるはず。
いっそのこと、この名前でUML書いちゃうとかどうかな?
ShellExecute API みたいなメソッドって .NET Framework には無いんでしょうか? ありそうな気がするんですが,なかなか見つからないもんで...
917 :
shinsaku :01/12/21 12:17
> 916 こんなんでどうでしょ? System.Diagnostics.Process.Start("notepad.exe") こまかいことしたい場合は using System.Diagnostics; ProcessStartInfo psi = new ProcessStartInfo(); psi.FileName = "notepad.exe"; psi.Arguments = "sample.cs"; psi.WindowStyle = ProcessWindowStyle.Normal; Process.Start(psi); いろいろ書き方はあるみたい
>>917 excellent!! 探し求めていたのはこれです〜
ありがとうございます。ちゃんと関連づけ起動もできるみたいですね。
イベントハンドラの中で例外がスローされた場合はどこでキャッチすればよいの? 例えば、 private hoge(object sender, EventArgs e) { Convert.ToInt16("例外出る"); } こんな感じで書いた場合...
>>919 ハンドラ内でtry〜catchじゃだめ?
>>920 うーん。それでもいいんだけど、ハンドラ内でおきた例外を外部にスロー
したいんだよね。
ハンドラ内でtry〜catchっつーのがやはり常套手段なのかなー。
>>919 Application.ThreadExceptionイベントを使えば拾えなくもないけど...。
漏れも基本的には
>>920 さんの意見に賛成。
>>922 ヌーン。やはり
>>920 さんの方法がベターなんですね。
どうも例外処理関連は不慣れで...
920さん、名無しさん#さん、どうもありがとうございました。
924 :
デフォルトの名無しさん :01/12/22 00:10
>>920-923 え?なんで?イベントを発行した側に戻ってくるんだからそれをcatchすりゃあいいのに。
926 :
255 ◆.net/HAA :01/12/22 12:32
>>924 マルチキャストを中断させてしまうのは副作用があると思うぞ。
>>925 そりゃ自分のコードじゃなきゃいじれないんだから、別の方法を考えるしかないやね。
>>926 中断するかどうかは実装依存では?中断するっていう選択肢もないとは言えないでしょ。
930 :
デフォルトの名無しさん :01/12/22 15:53
>>927 -1。wroxの本は著者が増えれば増えるほど質が下がるので。編集してんのか?って感じ。
もちろんこれはまだ読んでないけどね。
>>909 遅レススマソ。
β版に入ってるIE6はβ版だから普通のを入れ直せばいいかも。
932 :
初心者もどき :01/12/22 17:16
>927,930 「Professional ASP.NET」は、よくまとまってる。今でも参考にします。 「Professional Web Service」は、Java系など、いくつか他の言語での実装方法とかをあっさり 紹介してあるだけで、一番知りたかったinteropに関しては全く記述無し。。。 にしても、wroxの本って、最近めっちゃくちゃtitle増えて、正直どれを買ったらいいのか 悩む。。。
>>932 そうなんだ...。
サンプルを見た感じではよさげに見えたんだけど...。
確かに、著者数が多すぎるから、
章によって質がバラバラで、全体にまとまりがないのかもね。
>>934 相変わらずものすごい電波ぶりだ。(w
そういえばマ板に豊田スレがないね。
936 :
初心者もどき :01/12/22 20:59
>933 いや、それぞれの言語での実装をさらっとやりたいのなら、いい本かも。 確か、Phythonとか、Perlとかもあったハズ。 俺が知りたかったのは、それぞれのSOAPサーバ間のinteropだったから。 たとえば、was4.0, studioで吐いたwsdlって、そのままだとvs.netで読めないから、 2つのファイルを1つにして、更にいくつかの手直しが必要なんだけど、 そーゆー記述が全く無かったので、俺の期待には応えてくれなかったと。
938 :
デフォルトの名無しさん :01/12/25 10:50
>>937 Yukonの先出しって意味もあるんだと思うけど、SQL ServerがSOAPをしゃべると
どんなアプリが作りやすくなるんだろう?まさかSQL ServerをDMZに置いたり
しないしな、普通...。
939 :
デフォルトの名無しさん :01/12/25 15:03
>>936 xx_interface.wsdlとxx_implementation.wsdlが分かれているときに、
Web参照できないって問題は、VS.NET RCで解決したみたいね。もちろんimpleに
書いてあるURLはどこかでセットするコードを書かなきゃいけないけど。
940 :
デフォルトの名無しさん :01/12/25 19:53
テキストファイルに格納されている文字列のエンコーディングを知るにはどうしたらいいのでしょうか?
941 :
デフォルトの名無しさん :01/12/26 10:27
>>940 冷たいようだが、確実な方法はない。これは言語とかに関係ない。
分かれ目となる文字コードを必死で探すしかないね。だからテキストベースの
プロトコル(HTTPとか)にはcontent-typeだのcharsetだのの情報が必要なんだよね。
>>940 Perlなんかは文字コード判別らいぶらりとかあるんだけどねぇ。
残念ながら .NET には標準ではそういう機能なかったと思われ。
>>942 誤判定にケチつけられるのが怖いから文字コード判定機能は普通つかない。
ん?JavaにはJISAutoDetectあるな・・・
>>943 そのJavaのJISAutoDetectの判定精度は?
まあ、JISとShift-JISとEUCだけとかならまだ判定楽か。
>>944 941の言うようにjis/sjis/eucでも100%正しく判定するのは原理的に不可能。
実際はほとんど問題ないぐらい正しく判定してくれるけど。<JISAutoDetect
多言語になったらそりゃ全く不可能だろ。統計情報でも持ち出さないと
>>941-945 そうですか。やっぱ無理ですか・・・。943でかかれているとおり、JISAutoDetect
のようなものの存在を期待したのです。
情報ありがとうございました。
JISは確実に分かるだろ。 SJISとEUCも半角カナがないとか前提をおけばほぼ可能。
>>938 SOAPというよりは、まずはSchema対応みたいね。
Managedじゃなくても、ネイティブでDataSet,DataAdapterみたいな
抽象性を利用できる、という感じね。
>>948 うん?Schema対応はすでにSQLXML 2.0からやってたでしょ。3.0で新しく入ったのは
SOAPのみと理解してるけど?
> Managedじゃなくても、ネイティブでDataSet,DataAdapterみたいな
> 抽象性を利用できる、という感じね。
diffgramのこと?それもSQLXML2.0からもうあったよ。もっと言うと、updategramなら
もっと前からあったし。
>>949 ごめんちゃい。
漏れはRC持ってないので、3.0の機能はまだあまり詳しく見てないです。
そういえば、SQLXML 3.0って、MSDN Newsgroupでもほとんど話題になってない...。 向こうはもうお休みモードなのかな?
>>950 RCに関係するのは、Managed Providerだけだよ。OLEDBとかSQL Serverへの機能は問題なし。
>>951 そうね。MSDN Downloadからも引けないし。
develop.comのMLも流量だいぶ減ったじゃない?クリスマス休暇ってやつだね、きっと。
>>952 > RCに関係するのは、Managed Providerだけだよ。OLEDBとかSQL Serverへの機能は問題なし。
情報サンクス。明日から休みに入るので、さっそく遊んでみます。
> develop.comのMLも流量だいぶ減ったじゃない?
あそこは平日と休日の差が激しいから。(藁
こんなときにRTMが出たらどうなることやら。(結局、今年は出ないみたいだけど...。)
>>954 >明日から休み
いいなあ...いつから休みなんだか?
957 :
デフォルトの名無しさん :
02/01/17 21:15 age