C♯相談室 Part4

このエントリーをはてなブックマークに追加
1名無しさん♯

   ∧_∧____
  /(#゚ー゚) ./\
/| ̄∪∪ ̄|\/    C#,.NET関連の話題はこちらでどうぞ。
  |____|/
   ,,,,∪∪,,, ,,


過去スレ・関連リンクは>>2-5あたり
2名無しさん♯:02/03/20 13:17
ランタイムが20.4MB。凄いな。
関連スレ
VisualStudio.Net part2 /*3月22日発売決定*/
http://pc.2ch.net/test/read.cgi/tech/1014577995/
>>1 もういいのかな、スレ立て、お疲れ様です。
7su:02/03/20 15:21
日本語版とSP1を早速インストールした。
日本語版をインストールしてもちゃんとビルドできてたのに
SP1をインストールしたらリソースを変換できませんって怒られるよ〜。
日本語版SDk入れたけど、VS.NET英語版、メニューやらなんやらは
国際化の設定で日本語になったけどヘルプは英語のままね。
やっぱりMSDNから日本語版VS.NETダウソせな駄目かな、、
9デフォルトの名無しさん:02/03/20 20:30
クイックスタートがつかえん。
コンパイルエラーがでる。
なんとかならんかのう。
10まとれす:02/03/20 20:40
>>7
英語版SP1を英語版環境に入れたが、特に問題無いぞ

>>8
そら、さすがにだめだろ
ドキュメントの日本語化に、かなーり力入れたみたいだな。MSKKは

>>9
どっかに対策なかったか? Web.configかなんかを書きかえるってやつ
11まとれす:02/03/20 20:41
おっといい忘れ。#さん、スレ立ておつかれさま。こっちのスレでもよろしく!
12デフォルトの名無しさん:02/03/20 21:21
>>10
>>9です
ちがうんだよ
DLLがないっておこられるんだよ
13まとれす:02/03/20 21:34
>>12
何のDLL? 環境をもちっと詳しく書いてみ
>>13
http://localhost/quickstart/ASPPlus/
を開こうとすると、

『コンパイル エラー
コンパイラ エラー メッセージ: CS0013: メタデータ をファイル 'C:\WINNT\Microsoft.NET\Framework
\v1.0.3705\Temporary ASP.NET Files\quickstart_aspplus\e939111e\ddd4e8c5\jxnkq0g_.dll' に書き込み中に
予期しないエラーが発生しました』

と出てくる。
ちなみにそんなファイルは存在していない。
OSはWinXP Pro

beta2版をアンインストールしてからインストールしたんだけど、
英語サイトをみるとこの辺に原因があるようなんだな。
英語苦手なんで四苦八苦してるよ。
SDK配布開始に続いてhttp://sourceforge.jpも間もなく開始
連日お祭り気分♪
AllowDropのプロパティをTrueに入れたら
DragDropの登録に失敗しましたって、例外でるよ。
なんじゃこれ。逝ってよし。SDKJP.SP1のせいか?
.Net SDKでDirectX使えるの?
>>19
managedっていう意味なら、まだ。もちろんCOM Interop経由では使えるよ。
21名無しさん♯:02/03/21 12:58
新しいニュースグループができてた。

news://msnews.microsoft.com/microsoft.public.jp.dotnet.vsnet
正式版リリースされたのに盛り上がってないね。。。
ここはそういう浮ついたスレじゃないからさ。
>>18 困りました。。OS入れ替え、VS.NET入れ替えて試してみたのですが
Form1のAllowDropをtrueにし
Form1 form = new Form1();
form.Show();
とすると、Show();のところで、、
An unhandled exception of type 'System.InvalidOperationException' occurred in system.windows.forms.dll

Additional information: DragDrop registration failed.
と例外がでてしまいます。
新規ウィンドウアプリケーションプロジェクトをつくり、やってみると、
例外はでません。プロジェクトが違うだけで、フォーム内のコードは
ネームスペースが違うだけなのですが。なぜなのでしょう?
25FERC.NET:02/03/21 17:45
>>24
FERC.NETエージェント1号が調べた結果、以下のことがわかった。

DragAndDrop機能はCOM(OLE)の機能を利用しているので、スレッディングモデルが重要になる。
特にGUIアプリケーションは、STAで動作しなければならない。

.NET Frameworkのスレッディングモデルは、COMから見るとMTAに見えるので、
GUIでしかもCOMの機能を使う場合は、STAスレッドで動作することを明記しなければならない。

そのため、MainメソッドにSTATheradAttributeをつけなければならないのだ。
VS.NETで新規に作成したWindowsフォームアプリケーションをよく見ると、
次の記述があるだろう。

[STAThread]
static void Main() {
 Application.Run(new Form1());
}

この、[STAThread]がついていない場合は、Drag&Dropオペレーションが失敗する。
単純にMainメソッドの上にこの属性をつければ、動作するようになるだろう。

ちなみにこれはBeta2のときから変わらない機能制限なのだが、Beta2のバグで、
この属性がついていないフォームでも(一見)正しく動作してしまっていたのだ!

以上です、チーフ。
26デフォルトの名無しさん:02/03/21 17:50

FERC.NETエージェント1号さんって何者ですか?

おそろしく詳しそうなんですけど..

間接的に助かっています。ありがとう。
>>25 ありがとうございます。見事です。うまくいきました。
そのSTAスレッドというのを勉強させていただきます。
本当にありがとう。
28デフォルトの名無しさん:02/03/21 19:16
STAはシングルスレッドアパートメントの事だよ。アパートメントについてはCOMの入門書かMSDNを読むとよろしい。
29デフォルトの名無しさん:02/03/22 11:06
C# Standardには
ウィザードとツール類のクラス ライブラリプロジェクトの作成が
ないんだけどこれってどんな機能ですか?
VCのDLL、LIB相当のライブラリ作成機能がないって事?

あとドキュメントは一回きりのMSDNが入ってるんですか?
System.Windows.Forms.TreeView
って追加するとき
treeView1.Nodes.Add(String node)
しかないってのはひどすぎだと思うんだが・・・

インスタンス作成するときに配列とかxmlとかできます?
んー、それとも継承して使うもん?
31FERC.NET:02/03/23 00:26
>>30
FERC.NETエージェント1号が思うに、

>treeView1.Nodes.Add(String node)しかないってのはひどすぎだと思うんだが・・・

TreeNodesCollection.Addにはもう1つTreeNodeをとるオーバーロードがあるし、
AddRangeやInsertもあるので、それしかないってことはないと思われます。

以上です、チーフ。
3230:02/03/23 00:33
Javaならコンストラクタだけで
JTree()
JTree(Hashtable value)
JTree(Object[] value)
JTree(TreeModel newModel)
JTree(TreeNode root)
JTree(TreeNode root, boolean asksAllowsChildren)
JTree(Vector value)
これだけあるぞ

Java サゲ
3330:02/03/23 00:47
>>30
たしかに1つしかないってのは言いすぎでした。

AddRange・Insert
ともに現時点ではちと用途が違う感じでしたんで
TreeViewConverter ってのを現在調べ中なり
ありがと
34デフォルトの名無しさん:02/03/23 14:51
現在時刻を取得したり、時間間隔を計算するにはどうしたらいいんでしょう?

時間関係の型とかクラスが見あたらないんですが…。
(たぶん、探し方が下手なだけだと思う)
>>34
System.DateTimeクラスか何かあったような。。。
DateTimeで検索してみて。
3634:02/03/23 15:00
>>35

System.DateTime ありますね。ヽ(´ー`)ノ
まず真っ先にDateTImeで調べたつもりだったんですが…。

ありがとうございました。
SDKでやるのにちょっと便利なので、初心者の方にご紹介。
SDKのヘルプも呼び出せていい感じです。
キーワード別に色もつけられます。

CPad For C#
http://hp.vector.co.jp/authors/VA017148/
>>37
シェアウェアじゃん。
それならSharpDevelop使おうよ。
Visual Studio 6.0に組み込んでる私はアフォですか?
4037:02/03/23 18:42
>38
シェアウェアなんですけど機能制限無いですし、支払いも義務ではないですよ。
初心者(私も含む)にはわかりやすいです。
ところでSharpDevelopはどこで見れますか?
検索してみたんですが、いろいろリンクが死んでるようで・・・・
Sourceforge にあるよ。
4337:02/03/23 18:58
>42
おぉぉ〜これはすごい。まるでVSですね。
英語版しかないのが初心者にはネックですが、辞書片手に使ってみたいです。
ありがとうです。
>>43
日本語に対応してるよ。
45デフォルトの名無しさん:02/03/23 21:03
>>44
いいっすね。
日本語にもなるし、CVSにも対応してるし、言う事無しかも。
これを見た後じゃ、悪いけどCPadとか言うのは使えないなぁ。
4645:02/03/23 21:10
これタブブラウザにもなるやん(w
SharpDevelopから書き込み。
47デフォルトの名無しさん:02/03/23 22:08
C#のwindowsフォームコントロールにはMFCでいうところの
CHtmlViewみたいなものは無いのでしょうか?
>>47
ないのでCOMのWeb Browserコントロールを使うしかない。
まじぇ?2chブラウザ作ろうと思ってたのに。
>>49
そんなに大きな問題じゃないでしょ。
配布サイズが大きくなるけど。
SharpDevelopにはSunの社員も参加しているという罠
52デフォルトの名無しさん:02/03/23 22:41
>>47-50
具体的にCOMのWeb Browserコントロールを使うには
どうすればいいのでしょうか?
53名無しさん♯:02/03/23 22:45
>>52
メニューの [ツール]→[ツールボックスのカスタマイズ] で
Web Browserコントロールをチェックしてちょ。

そうすると、左のツールボックスの [全般] タブにアイコンが出てくるから、
あとは普通のコントロールと同じ感覚でドラッグ&ドロップ。

プロパティとかイベントもちゃんと出てくるよん。
54デフォルトの名無しさん:02/03/23 23:18
>>53
[COMコンポーネント]の[Microsoft Web Browser]というところを
チェックしてみたのですが、ツールボックスの[全般]には何も表示
されないです。

なにか、間違えているでしょうか?
>>54
どっか他のタブに追加されているってことない? ツールボックスを右クリックすれば、
同じメニューがでるから、それでもおっけーだよ。
56名無しさん♯:02/03/23 23:36
>>54
あらま。ごめんちゃい。
ツールボックスのアクティブなタブに追加されるみたいね。
どこかのタブの末尾に Explorer ってのがないか探してみてちょ。
>>55-56
何度か試してたら出てきました。
お騒がせしました。
58デフォルトの名無しさん:02/03/24 00:24
Web Browserコントロールをフォームに貼り付けたところ、
コードに次のようなものが追加されました。

private AxSHDocVw.AxWebBrowser axWebBrowser1;

で、AxWebBrowserっていうものがどんなメソッドをもって
いるか調べようとヘルプで検索してみたのですが、全然出て
きません。なぜ、でしょうか?
>>58
COMコンポーネントだから。
>>58
オブジェクトブラウザで見るよろし。
Ctrl+Alt+J
>>59-60
なるほど。
またもや助かりました。いろいろいじってみます。
C#か.NET Frameworkって、
VBみたいに順序が保たれて、なおかつ定数時間でKeyからItem取り出せる
コレクションは無いんですか?
>>62
ん?System.Collections.Hashtableのことかな?
SharpDevelopインストールしてみたけど、背景が白色だけみたいね。
目が疲れるからエディタの背景色は黒がいいのにな・・・・
独り言につきsage
65デフォルトの名無しさん:02/03/24 02:42
MfcにおけるCEditViewを使用した感じのアプリは
どうやって作るのでしょうか?
.NET SDKをひっくりかえしてみているもののやり方がわからない・・・
このままではメモ帳もつくれなひ・・・
>>65 MFCはよくしらないけど、
System.Windows.Forms.RichTextBox
System.Windows.Forms.TextBox
あたりかな?
67デフォルトの名無しさん:02/03/24 03:14
TextBoxのMultilineをTrueにするのでは?
68デフォルトの名無しさん:02/03/24 03:14
外部のフォルダを選択してドラッグアンドドロップで自作アプリケーションの
上に放り込むんでそれを処理するプログラムを作りたいのですが
ドラッグアンドドロップがどのように実現できるでしょうか?
>>68
プロパティのAllowDropをTrueにして、
イベントのDragDropにコードを追加する。
>>68
ドラッグアンドドロップでキーワード検索してみてみました?
あと前スレに既出です。819-821を見て参考にしてください。
C#始めたんでこのスレ&前スレ覗いたんだけどレベル高い・・・・
誰かモナーのやさしいC#質問スレとか立ててくれないかな〜・・・
スレ汚しスマソ
>>71
何でも聞けばよし
>>68
まさにこれ、
ttp://www.atmarkit.co.jp/fdotnet/csharptips/003dragdrop/003dragdrop.html

ところで、僕はJava上がりなんですが
Javaに比べてC#ってメソッドの連結が多くて
「.」の書く回数多くないですか?
たとえば、e.Data.GetDataPresent(DataFormats.FileDrop)みたいな・・・
まさに、ドットNET
7562:02/03/24 09:50
>>63

System.Collections.Hashtable は検索が定数時間だけど、
追加した順番での取り出しが出来ない。
自作するしかないかな…。
76デフォルトの名無しさん:02/03/24 11:31
ZIPやLZHなんかの圧縮ファイルはどうやったら作れるでしょうか?
77デフォルトの名無しさん:02/03/24 11:39
>>76
それはアル語の問題
XPには標準でZIPのCODECついてるんじゃない。
>>75 Hashtable.GetEnumeratorみろ。
81デフォルトの名無しさん:02/03/24 14:50
System.Diagnostics.Process.Start
で起動したアプリ(Ex電卓など)のZオーダーやら
ウインドウ位置等を変更したいんですけどどうしたらいいでしょうか?
82デフォルトの名無しさん:02/03/24 14:52
そのプログラムの動作しているディレクトリを取得するには
どうしたらいいんでしょう
83名無しさん♯:02/03/24 15:33
>>82
AppDomain.CurrentDomain.BaseDirectory でどうかしら。
84FERC.NET:02/03/24 15:41
>>82-83
Path.GetDirectoryName(Assembly.GetCallingAssembly().Location)
というてもありますね!
>>82 DirectoryInfo directory = new DirectoryInfo(".\\");
ってやってたよ。漏れ。
>>83 はしらなんだ。AppDomainは面白そうね。
86名無しさん♯:02/03/24 15:52
>>81
ProcessクラスのMainWindowHandleプロパティで
ウィンドウハンドルを取り出せるから、あとはAPIゴリゴリかしら。

NativeWindowクラスにアサインしてもあまり役に立たないし...。
87名無しさん♯:02/03/24 15:55
>>84
Assemblyクラスから取った方が自然な感じね。ありがと。
8881:02/03/24 16:09
>>86サンクス。
NativeWindowクラスにアサインして悩んでたですよ。
とりあえずできました。おれも答えれる側に回れるよう
がんばりやす。
89デフォルトの名無しさん:02/03/24 16:52
>79
ありがとうございます。
そこのNZipLib.Dllライブラリを使ったらとりあえずディレクトリの圧縮はできるようになりました。
しかしディレクトリがまたサブディレクトリを含んでいる場合うまくいきません。

ZipOutputStream s = new ZipOutputStream("test.zip"));
foreach (file in **){
ZipEntry entry = new ZipEntry(file);
s.PutNextEntry(entry);
}

こんな感じでやっているのですが、fileがディレクトリの場合また別の処理
(再帰呼び出し?)をしてという風にやったらいいのでしょうか?
>>86
#さんらしくない。

Processesコレクションから実行ファイル名をキーにProcessクラスを取得して判断
できますよ。
91 ◆AlPo3XmI :02/03/24 18:27
#さんはいい人キャラだから言いにくいと思うので、私が言いましょう。

>>90
ハァ?なにを取得してなにが判断できるんですか?ソースコードキボンヌ。
9290じゃないよ:02/03/24 18:36
>>91 まぁまぁ・・・
>ウインドウ位置等を変更したいんですけど
ってのを90が読み落としたんでないの?とわしは思ったけど、、
#さんはこの部分はAPIでってことでしょう。
93煽りじゃないよ:02/03/24 18:43
>>90
Processesコレクションてどのクラスにあるの?
94煽りじゃないよ:02/03/24 18:50
あー、分かった。Process.GetProcessesByName()で探せってことか。
そこまでしなくても、Process.Start()の戻り値を直接使えばいいじゃん。
9590:02/03/24 19:00
>>91、92
スマソ、別スレの二重起動チェック関係と間違えてました。

#さん、91さん、ごめんなさい。
96デフォルトの名無しさん:02/03/24 19:30
LinkLabelってのをFormに貼り付けて遊んでみようとしたところ
うまくいきません。
e.LinkDataがNULLなんですが、何故ですか?

これって何か前準備が必要なんでしょうか?
>>96
LinkLabel.Links.Addで登録した?
98デフォルトの名無しさん:02/03/24 21:22
>>97
無事解決しました…が。

LinksAreaって何?
これを設定しないと期待したとうりに動くのですが
使い方が謎です
>>98
リンクの下線を出す領域だと思われ。
Links.Addの第1・第2引数でも同じことをやってる。
100デフォルトの名無しさん:02/03/24 22:07
>>99
ハマってたのはこれを使うケース。何も考えずにペタペタと
貼り付けたいから。
この場合、Links.Addはしなくてもよさそうな感じなんですが…

クラスライブラリのソースが欲し
101デフォルトの名無しさん:02/03/24 22:47
C#で作ったプログラムを配布したいんですけど
.Netのインストールされていない環境にはどうしたらいんでしょうか?
インストールしてもらう必要があるのかでしょうか?
102FERC.NET:02/03/24 23:00
>>96-100
LinkAreaはお手軽用、Linksは細かい設定用という感じでしょうか。
プロパティ画面でLinkAreaしか設定できないのでちょっと混乱してしまいがちですが。

LinkAreaでは内部データは設定できないので、文字からURLを導きたい場合は
Linksを使わないといけないようです。逆に、URLそのものがLinkLabel.Textに
書いてある場合は、そのままLinkAreaを使えばいいというトコロではないでしょうか。
103 :02/03/24 23:10
>>101 >>3のリンクの再配布パッケージ配れ、、
前前々スレとかにもあったはず、VS.NETスレにもあったはず。
ちょっとは調べてね、、
104デフォルトの名無しさん:02/03/24 23:18
>>102
いろいろ触ってるうちにそーいう結論にたどり着きました

今後これをラップしてもっと便利しようとした時って簡単に
コンポーネントを作れるものなんでしょーか?
BCBやDelphiの時はクラスライブラリのソースを真似て作りましたが…

とにかく、解決しました。ありがとうございました
105104:02/03/24 23:26
Helpをろくに調べないで質問でスマソ

プロパティ等を設定する時に立ち上がるツールの
設定はどーするのでしょーか?
あるURLをブラウザ(IE)で表示させたいんですが、どうしたらいいんですか?
>>106
Process.Start(url);
>>107
即レスありがとう。できました。
109デフォルトの名無しさん:02/03/24 23:53
Formのなかに
このようにしてリストボックスを持っていた場合、
private ListBox L1 = new ListBox();
このクラスの中の関数をオーバーライドするにはどうしたらいいんでしょうか?
ListBoxを継承したクラスを別に作るべきかな?
>>109
そりゃあもちろん継承しないと。
111デフォルトの名無しさん:02/03/25 00:17
Mouse.Buttonsみたいな列挙体はどうやって使ったらいいんでしょうか?
右クリックがなされたときだけ処理をしたいのですが
if (e.Button == Right)
System.Windows.Forms.MouseButtonsとint形に演算子を適用することができません
となってうまくいきません。

e.Button & Right
としても同じでした。
>>111
こういう感じで。
if(e.Button == MouseButtons.Right)
{.....}
if(e.Button == MouseButtons.Left)
{.....}
113デフォルトの名無しさん:02/03/25 00:56
文字列"あいう"をMIME文字列に変換するにはどうしたらいいっすか?
>>113
System.Convert.ToBase64String
>>113
JISでエンコードする時は Encoding.GetEncoding(50220).GetBytes("あいう");
116デフォルトの名無しさん:02/03/25 02:30
作業の進行を表すステータスインジゲーターみたいなものって
どのクラスをつかえばいいんでしょう?
117 :02/03/25 02:45
>>116
System.Windows.Forms.ProgressBar

(なんかこうゆう質問多いね・・・・最近。)
>>71で言ってるようなスレ立てる。。。?
「SharpDevelopを読み解くスレ」とか駄目ですかね?
120デフォルトの名無しさん:02/03/25 03:26
ひとつの作業が進行中のときにウインドウを動かしたりできなくなりますよね
これを作業中も並行してウインドウもきちんと操作できるようにするには
どうしたらいいでしょうか?
やはりマルチスレッドを使うんでしょうか・・・。
121113:02/03/25 03:29
>>113-114
ありがとう。できました。ところでC#のスタンドアロンアプリケーションで
System.Web(のHttpUtility.UrlEncode)空間を利用したいんですが、
これって可能?無理?
122デフォルトの名無しさん:02/03/25 03:57
>103
ありがとうございます。
しかしその場合も再配布SDKがひつようになりますよね。
Cで組んだアプリのようになにもほかに必要なく実行することはできないんでしょうか?
123デフォルトの名無しさん:02/03/25 04:04
とりあえず簡単なC#のアプリケーションを作成したみたのだけれど
ダブルクリックで実行するとなぜかコンソール画面も
立ち上がる。なじぇ?
124コピペ:02/03/25 04:06
>>123
コマンドラインならこんな感じでWinEXEを指定
>csc /t:winexe hello.cs
メイクファイルならこういう風に
#makefile
ALL : Hello.exe
Hello.exe : hello.cs hoge.cs
csc winexe System.dll System.Windows.Forms.dll System.Drawing.dll $**
125デフォルトの名無しさん:02/03/25 04:08
VC++ & MFCからの乗り換えだけど
いいね。なんかサクサクできるよ。
デリゲートやプロパティにちょっと戸惑ったけど慣れてしまえば楽だし。
Java未経験だけどJAVAと比べてどっちが楽かな?
あとはメモリ周りの扱いの自由度がどの程度楽かだね。
自分は割と通信関連のソフトをCかC++でシコシコかくので
プロトコルにあわせてビットを数えて構造体を作って・・・
なんていう作業までうまいことできれば言うことなし。

でもCLRを必要とする実行ファイルも.exeになるのはなんだかな・・・
紛らわしいよね・・・・
GUI作るなら Javaより(少なくとも精神的には)楽かも。

Streamが Interfaceじゃない
おまけに Inputと Outputが分かれてない…
ってのが、なんとなく好きじゃないんだけど。
まぁいっか。
Streamは良く見るとInterfaceだよー
>>126
もしインターフェイスだったら非同期ものを実装しないと・・・。
まあIStreamとStreamに分けるくらいはしてもよかったかもな。
129デフォルトの名無しさん:02/03/25 10:48
>>120
デリゲートについて調べるべし。

>>121
可能。

>>122
SDKは必要ない。
>>126-128
・Streamが入出力分かれているメリット
・Streamがインターフェイスであるメリット
を教えてくださらんか。
131 :02/03/25 11:19
>Streamが入出力分かれている
メリットっていうか、そういうものじゃないの?ストリームって。まあ困らないけど。
132 :02/03/25 11:42
>デリゲートについて調べるべし。
もしかしてマルチスレッドにするやつですか?お手軽な方法は無いですかねぇ。
>>132
デリゲートが一番手軽。
134132:02/03/25 11:56
っとApplication.DoEvents()でいけそう。thx>133
>>134
.......。
>>130
例えば、
if( !stream.CanWrite ) stream.WriteByte(0);
がコンパイルエラーにならないのは気持ち悪い。
基本的にはStreamって 一方通行だと思うんだけど。
NetworkStreamは読み書きできるほうが自然ですが何か?

>>130,>>126
昔「ここがあとちょっとね」と言うやつはすでにハマっている、という格言を見たことが。
何か?だってよ
Java厨ウザイ
141122:02/03/25 16:41
>129

必要ないのですか?しかし
20Mb少々のdotnetfx.exeを各自インストールしてもらう必要があるのでしょうか?
それともこのフレームワーク自体をアプリケーションに組み込む方法が
あるのですか?
143デフォルト:02/03/25 19:16
マウスがTextBox内に入ったときに
処理を行うプログラムを組みたいのですが
TextBoxクラスを継承して
class myTextBox : TextBox{
public myTextBox() : base(){
this.MouseEnter += new MouseEventHandler(OnMouseEnter);
}
public void OnMouseEnter(object s,MouseEventArgs e){
// ここで処理
}
}
こういう感じにしてみましたが
コンパイルすると
System.Windows.Forms.MouseEventHandlerを型 System.EventHandler
に暗黙的に変換できませんとでてエラーになります。

この行を変えて
this.MouseDown += new MouseEventHandler(OnMouseEnter);
this.MouseDownにするとうまくいくのですが、


おそらく、もとのものはthis.MouseEnterがTextBoxクラスのMouseEnter
ではなくもっと上のものを呼んでしまっているからでは?と思ったのですが、
もしそうだとしたらどのようにして解決すべきでしょうか?
ひょっとしたら全然違う理由からかも知れませんが
お教えください。
>>143
MouseEnterはEventHandler、
MouseDownはMouseEventHandler。

なので
>this.MouseEnter += new MouseEventHandler(OnMouseEnter);

this.MouseEnter += new EventHandler(OnMouseEnter);
とすればよし。
145デフォルト:02/03/25 19:40
>144
ありがとうございます。それでいけました。
SDKクラスライブラリ資料を見てみると
確かに
public event EventHandler MouseEnter;
public event MouseEventHandler MouseMove;
このようになっていますね。
しかしこの場合MouseEnterというのはイベントなんですよね。
this.MouseEnter += new EventHandler(OnMouseEnter);
これで、このクラスのMouseEnter(イベント?)
にOnMouseEnterを引数としたEventHandlerクラスを追加して、
MouseEnterが発生した場合、OnMouseEnterを呼ぶというのはわかりますが
これはWM_MOUSEENTERを.NetフレームワークがMouseEnterにして
送ってくれるってことでしょうか?
あーなんか書いててわかんなくなったかも。勉強します。

もうひとつよろしいでしょうか。マウスカーソルがテキストボックスの上にあったときに
注釈をいれるテキストボックスをポップアップさせたいのですが・・・
ブラウザで画像の上にマウスを合わすとALTタグに書いておいた説明がでますよね。
そんな感じにしたいんです。
どのクラスでやるべきでしょうか?
右クリックメニューはContextMenuで実装できることはわかったのですが・・
>>145
ToolTipのことかな?
>>145
ToolTipをフォームに落とすとテキストボックスのプロパティにToolTipが追加されるので、
あとはテキストを設定すべし。
148【謎】 ◆aRMrzuwU :02/03/25 20:18
ASP.NETの話題ってここでOK?
WebProg板のASPスレが閑散としているのでこだわらないで書いてみる。

以下のような、テキストボックスが一つのフォームで、
テキストボックス内でEnterキーを入力してPOSTすると、
なぜかOnClickイベントが発生しない。

<form method="POST" action="default.aspx" runat="server">
<label for="key">検索キー</label>
<asp:Textbox id="key" runat="server"/>
<asp:Button text="検索" OnClick="search" runat="server"/>
</form>

しかし、このフォームにTextBoxを一つ追加してみる
(上記コメントアウトされているのを有効にする)と、
Enterキー入力でOnClickのイベントが発生する。

こういう仕様だとして、TextBoxが一つのときでもOnClickのイベントが
発生するようにするにはどうすればよいのだろうか?
149【謎】 ◆aRMrzuwU :02/03/25 20:20
上記コメントアウトって書いてあるけど、何処にも無いじゃん…。
要するに以下のような感じだとOnClickイベントは発生する。

<form method="POST" action="default.aspx" runat="server">
<label for="key">検索キー</label>
<asp:Textbox id="key" runat="server"/>
<asp:Textbox id="dummy" runat="server"/>
<asp:Button text="検索" OnClick="search" runat="server"/>
</form>
C# って java みたいに遅いの?実行速度。速い順に
C → C# → java
みたいな感じ?

151名無しさん♯:02/03/25 21:47
>>150
C>>Delphi>>C#>>>>>>>>VB>>>>>>>>>>>>>>>>>>>>>>JAVA
153【謎】 ◆aRMrzuwU :02/03/25 23:57
>>151
さすが#さん、じゃなくて♯さん。いやー素晴らしい。
ここに書いて良かった。
154FERC.NET:02/03/26 10:47
>>145
>これはWM_MOUSEENTERを.NetフレームワークがMouseEnterにして
>送ってくれるってことでしょうか?

そうです。System.Windows.Forms.Controlのwndprocが、WM_MOUSEENTERがくると
Control.WmMouseEnterを呼び、それがさらにControl.OnMouseEnterを呼びます。
これがvirtualなので、自分で作ったハンドラが呼ばれます。

以上です、チーフ。
UriクラスのGetLeftPartメソッドのSDKドキュメント
ms-help://MS.NETFrameworkSDK.JA/cpref/html/frlrfSystemUriClassGetLeftPartTopic.htm
によると、「http://www.contoso.com/index.htm#main」というURIに対して、
GetLeftPart(UriPartial.Path)を実行すると、
http://www.contoso.com/」が返るというような記述になってるけど、
実際にやってみたら「http://www.contoso.com/index.htm」が返ってきた。
これってドキュメントの方のミスかなぁ…。
>>155
困った時のILDASM
157デフォルトの名無しさん:02/03/26 15:17
今頃、C#をいじり始めたんだけど。

Enterキーで次のコントロールに進むTextBoxを
作ろうと思って、TextBoxのOnKeyUpをオーバーライドしたけど
protected override void OnKeyUp(KeyEventArgs e)
{
if (e.KeyCode.Equals(Keys.Return))
{
this.SelectNextControl(this, true, true, true, true);
e.Handled = true;
}
base.OnKeyUp(e);


どうも、ここからはSelectNextControlが
失敗してしまうようなんだ。
NextControlとかいうControl型プロパティ作っておいて、
NextControl.Focus()とかでしのいでみたが、気持ち悪いし、
このプロパティを初期化せにゃならんので、効率悪い。
誰か、理由教えてたも。
ちなみに、GetNextControlもここではダメっぽい。
158FERC.NET:02/03/26 16:13
FERC.NETエージェント1号が調べた結果、以下のことがわかった。

SelectNextControlは、自分自身のChildrenコントロールを探すので、
この場合はTextBox(の派生クラス)の子供を探してしまう。当然ないので、選択できない。

おそらくやりたいことはむしろ自分の兄弟コントロールを選択するということで
あろうから、自分の親(FormやPanelなど)のSelectNextControlを呼び出せばいいのだ!

>this.SelectNextControl(this, true, true, true, true);
ではなく、
this.Parent.SelectNextControl(this, true, true, true, true);
でうまくいく。

以上です、チーフ。
159デフォルトの名無しさん:02/03/26 16:47
>158

ぐお。
子コントロールがどうこういう記述を見つけたんで、
引っかかっていたけど
SelectNextChildControlとでも言うべきものなわけですな。
名前で無意識に決め付けてしまった。
いかんいかん、頭の柔軟さが失われてきてるよ。

なんにせよ、感謝いたします〜。


過去ログも漁ったんですがエージェント1号さん
詳しすぎ。こちらも、がんばらねば。
まだC#暦3日目だし。
C#使って3Dゲーム作ろうと考えているんですがOpenGLやDirectXはCのように扱えるんでしょうか?
161_:02/03/26 17:45
C#ってJava Native Interfaceみたいなのあるの?
>160
できるんじゃないの?
>161
あるんじゃないの?
>>160
ガイシュツ。過去ログ探してみて。

>>161
P/Invoke
それにしても niftyのFMSDEVは全く反応無いな(苦笑)>C#
>>157=159
揚げ足取りでスマソ。
C#風に書くなら,以下のコードのほうが良いかも。

using System;
using System.Windows.Forms;
private TextBox textBox1;

と仮定して,フォームのコンストラクタで
textBox1.KeyUp += new KeyEventHandler(this.textBox1_KeyUp);

private void textBox1_KeyUp(object sender, KeyEventArgs e) {
  if (e.KeyCode == Keys.Return) {
    textBox1.Parent.SelectNextControl(textBox1, true, true, true, true);
    e.Handled = true;
  }
}

keyup イベントで textBox1 と書くのが面倒かもしれないけど...
いちいち継承しなくてもすむから,こっちの方が楽と思うよん。
166165:02/03/26 17:50
...だぁぁ,ごめん。
そういうコントロールを「作りたかった」のね。
スマソスマソスマソ
>>165
フォーム側で処理するなら、ProcessTabKey(true); の方が手っ取り早いね。
168_:02/03/26 17:53
>>163
thx。
dllimport("user32.dll", EntryPoint="MessageBox", SetLastError=true,
CharSet=CharSetAuto)]
public static extern int MessageBox(int hWnd, String strMessage, String
strCaption, unit uiType);
みたいに使うのか。JNIより分かりやすい。。。
169165:02/03/26 17:55
>>167
なるほど,そういう手もありましたね。
勉強不足だ... 出直してきます。
>>168
hWndはIntPtrにすべし。
171_:02/03/26 17:57
>>170
なるほど、勉強になります。あんたいい人だ・・・
しかし、ここ見てるとC#な人たちはWindows Formsが主流だね。
やっぱりWebアプリケーションは終わったのかな?
>172
おわってないんじゃないの?
>>172
趣味ならまずはWindowsFormでしょ。
WebFormは仕事じゃないとなかなかやらないかも。
そか。ここは趣味人の集まりなのか。ちょっとガカーリ。
>>175
つーかいきなりSP1出るような物を仕事ではまだ使わんだろ…
もう少し枯れないとちと恐い
175です。けして煽ったわけではありませんので念のため。業務で使いたいなー、ってだけです。

>>176
そう思われちゃいますよね、普通。。。うちはもろに使ってますけど。。。
>>176
いきなりっていうか、もう2ヶ月経ってるんだけど...。
179デフォルトの名無しさん:02/03/26 20:39
SHBrowseForFolder()
のようなダイアログを出したいのですが、.NET Frameworkでは実現できないのでしょうか? クラスライブラリを見たんですが、探しきれず・・。
180 :02/03/26 20:45
>>179 
System.Windows.Forms.FileDialog

181デフォルトの名無しさん:02/03/26 21:05
>>180
これって、ファイルだけでは?
SHBrowseForFolder()ってディレクトリを選択するダイアログ・・・。
182デフォルトの名無しさん:02/03/26 21:25
>>179
System.Windows.Forms.Design.FolderNameEditor。
使い方は過去スレのどこかにあったけど忘れた。
183デフォルトの名無しさん:02/03/26 21:32
プログラミング超初心者です、ってかいまからやってみようかなという者です。
オススメのサイトや本などあったら教えてほしいです。

スレ違いでしたらスマソ
185デフォルトの名無しさん:02/03/26 21:51
System.Winforms がねぇよ!って
怒られるんだけど、どこにあるんだ?
ねえよ。
187179:02/03/26 22:20
>>184
やっぱ、API直接呼出しか・・・。
>>179
FolderBrowserってクラスがある。で、このクラスは、Protectedなんで、親クラスを
継承して呼び出せばよい
>185
System.Windows.Forms
190179:02/03/26 22:43
>>188
いけました! ありがとうございましたぁ!
using System.Windows.Forms.Design;

class FolderBrowser : FolderNameEditor
{
public static void ShowDialog()
{
FolderBrowser browser = new FolderBrowser();
browser.ShowDialog();
}
}
>>179
public class aaa : FolderNameEditor
{
public void Show()
{
FolderBrowser fb = new FolderBrowser();
fb.ShowDialog();
}
}
192191:02/03/26 22:55
かぶった
193188:02/03/26 22:59
>>190-192
でもさ、これってフラグのこととか考えると、けっこう面倒なんだよね。
194179:02/03/26 23:42
>>193
がんばってラッパー書くしかないっすね。
っていうか、FolderNameEditor.FolderBrowserを最初っから公開(publicに)してくれ! > MS
このスレ、C#厨の俺にはすごく勉強になる。
お前ら、ありがとうございます。マジで。
マジレス頼みたいんだけど、
おまえらの社内のVB厨はVB.NOTとC#どっち逝くんだ?
>>187-194
確かに>>184のサンプルはAPI直叩きでなんかかっこ悪いけどさ、
FolderNameEditor.FolderBrowserだって結局は内部でShBrowseForFolderを
呼んでいるんだから同じだよね。そんなにP/Invokeを毛嫌いしなくても
いいんじゃないかとも思った。いや、単なる感想だけど。
>>196
VB.NOTとか言うなよダセー。ダメ外人[1]の真似してもかっこよくないぞ。
[1] ttp://www.mvps.org/vb/

ところでうちの厨(VBも満足にできない)には両方やらせてる。厨なだけに
C#がいいとかVBはここがダメとかほざきやがるが、厨の意見には耳は
貸さない。とにかく両方やらせる。そのうち言語なんてどれも同じって
ことに気づくことを願って。
199179:02/03/27 00:26
>>197
あらかじめ、.NET Frameworkでラップしてくれていると、Windows以外のOSに移植するとき、ソースをそのまま持ってこれる。
Win32APIとか直接呼んでいると、Windows以外のOSにもっていったとき、その部分を移植しないといけない。
(気が早すぎ?)
>>199
案外早くにLinuxやその他UNIXに移植されるかもね
クラスライブラリの互換性はあまり期待できないけどね
>>201
なんで?
203デフォルトの名無しさん:02/03/27 00:40
>>202
>>201がJava厨だから。
>>201
ほれ。Linuxへの移植状況。

http://go-mono.com/class-status/index.html
商用ベンダが移植してくれるわけじゃないから。
206201:02/03/27 00:46
なんでJava厨よ。ちょっと反応しすぎじゃないか?
もちろん基幹部分はいけてると思うけど地味-な部分
(上に出たフォルダ選択ダイアログとか)は期待薄と思われ。
WindowsフォームコントロールはAPIに強く依存しているので、,NET
が他OSに移植されてもすぐ動くってもんじゃないっつう記事がMSの
サイトにありましたです。
208デフォルトの名無しさん:02/03/27 01:21
はよMacOS版.NETだせ>ゲイツ
209デフォルトの名無しさん:02/03/27 03:16
>>82
System.IO.Directory
public static string GetCurrentDirectory();
でどう?
210デフォルトの名無しさん:02/03/27 05:18
すみません。助けてください。C/C++で 
printf("%06d",1); //出力 000001
のような足りない桁を0で埋めるのは
どうやって実現したらいいんでしょう?
NumberFormatInfoあたりをさあしてるんですけどわかんないです。
211デフォルトの名無しさん:02/03/27 08:30
Console.Writeln("{0:D6}",1);
212179:02/03/27 10:14
ついでに教えてください。
FolderNameEditorの本来の使い方で、

あるクラスに
private string path;
[
Category("ターゲット"),
Description("ファイルの存在するディレクトリ"),
Editor(typeof(System.Windows.Forms.Design.FolderNameEditor), typeof(System.Drawing.Design.UITypeEditor)),
]
public string Path
{
get {
return path;
}
set {
path = value;
}
}

と書いて、
PropertyGrid(のインスタンス).SelectedObjectにそのクラスのインスタンスを渡すと、SHBrowseForFolderで表示されるダイアログは表示されるのですが、肝心のツリービューがまったく表示されません。
(OKボタンとかは表示される)

何が足りないのでしょう?
>>211は変態中?
214名無しさん♯:02/03/27 10:58
>>212
漏れの環境ではうまくいってるよん。

using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;

class TestForm : Form
{
  PropertyGrid grid;

  public TestForm() {
    grid = new PropertyGrid();
    grid.Dock = DockStyle.Fill;
    grid.SelectedObject = new Hoge();

    this.Size = new Size(300, 400);
    this.Controls.Add(grid);
  }

  [ STAThread ]
  public static void Main() {
    Application.Run( new TestForm() );
  }
}

class Hoge
{
  private string path = "";

  [
    Category("ターゲット"),
    Description("ファイルの存在するディレクトリ"),
    Editor( typeof(FolderNameEditor), typeof(UITypeEditor) )
  ]
  public string Path {
    get { return path; }
    set { path = value; }
  }
}
アトリビュートってこんな使い方ができるのか。すげえ・・・。
216179:02/03/27 11:14
>>214
ありがとうございました!
原因がわかりました。
[STAThread]
をMainメソッド(エントリポイント)につけていなかったのが原因でした。

この[STAThread]ってドキュメントを見ると、

> アプリケーションの既定のスレッド化モデルがシングルスレッド アパートメント (STA: Single-Threaded Apartment) であることを示します。

って書いてあるんですけど、いまいち意味がわからず・・・。Formを使うような場合は必須と考えてよいのでしょうか?
217名無しさん♯:02/03/27 11:28
>>216
WindowsFormsは基本的に [ STAThread ] が必要よん。
理由はこのへんを参考にしてちょ。

ttp://discuss.develop.com/archives/wa.exe?A2=ind0011C&L=DOTNET&P=R51898
218デフォルトの名無しさん:02/03/27 11:55
c# で棒グラフとか円グラフとか書くコードのサンプルないかな?
簡単なやつでいいんで。
>>216-217
このスレの>>25にガイシュツ
221179:02/03/27 15:47
>>220
いや、[STAThread]の意味が知りたかったのでした。>>25では、つけなければいけないことはわかるんだけど、その理由が不明瞭なので。
>>221
ふーん。>>25が言ってることは>>217と同じに聞こえるが。。。ま、いいか。
まあここでも読んどけばええんじゃないの?
25でつけなきゃいかん理由はかいてるからSTAが
わからんのでしょ。どうせ。

http://www.microsoft.com/JAPAN/support/kb/articles/JP150/7/77.asp
224179:02/03/27 16:31
>>223
あ、すいません。
> .NET Frameworkのスレッディングモデルは、COMから見るとMTAに見えるので、
GUIでしかもCOMの機能を使う場合は、STAスレッドで動作することを明記しなければならない。
という部分ですね。読み飛ばしてました。ごめんなさい。
なんか間違った認識が広まっているようだが、
COMはアパートメントの違いは吸収するぞ。
旧OLEだけはSTAで宣言しないといけないからああなるらしいけど。
ウインドウプロシージャに関する動作とはまた別物だしな。
>>225
>COMはアパートメントの違いは吸収するぞ。

間違った認識を広めないでください。

よーく読んでみてくださいね。ここで話題になっているのは、
「STAでしか動作できないくせに、MTAに存在してしまうコンポーネント」の
話です。

ええ、そんなことはCOMでは不可能でした。でも.NET Frameworkでは
可能なんです。可能っていうか、やっちゃだめなんですけど。わかりましたか?
COMのしがらみは捨てたいものだ。
228225:02/03/27 20:40
要は CoOleInitialize が必要になるからMTAに初期化できないって話でしょ。
COMのスレッディングモデルの問題じゃなくて、たんなるOLEの制約じゃん。

STAでしか動作できないくせに、MTAに存在してしまう「コンポーネント」の話じゃないでしょ。
229デフォルトの名無しさん:02/03/27 20:51
ああ〜ちょうどよかった。

PropertyGridを使っていろいろいじってたんですけど、
あれに表示されるプロパティの表示を差し替えられません。

>>212 の例でいけば、
グリッドには、「Path」 と表示されますが、これを 「保存先フォルダ」
とか出したいなと。

Description属性で説明を下に出せるから、別にいいんですけど、
気になって気になって、仕方がないんです。

これはそもそも無理なんでしょうか?
230デフォルトの名無しさん:02/03/27 21:07
>>229
public string 保存先フォルダ
{
get{
}
set{
}
}

美しくないけど。
231229:02/03/27 21:13
>>230
いや〜ん
232226:02/03/27 21:24
>>228
>要は CoOleInitialize が必要になるからMTAに初期化できないって話でしょ。
CoOleInitialize?なんだそりゃ。

>COMのスレッディングモデルの問題じゃなくて、たんなるOLEの制約じゃん。
>STAでしか動作できないくせに、MTAに存在してしまう「コンポーネント」の話じゃないでしょ。
WindowsフォームがMTAに存在するように見えてしまうって話だよ。だからCOMの
スレッドの話なの。わかった?COMが相手にするのがWindowsフォームだから
問題になるの。わかった?
233デフォルトの名無しさん:02/03/27 22:00
234名無しさん♯:02/03/27 22:39
>>233
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!

...ってJavaOneの最中に。(藁
235225:02/03/27 23:06
あのな、ウインドウメッセージングに関してCOMは関係ないんだよ。
すべてのウインドウプロシージャは同一のスレッドコンテキストで呼ばれるっていう規則があんの。

今回のはOleInitialize(Coは要らなかった)に関する問題だろ。PlatformSDK読めよな。
で、MSもすでにSTAでしか利用できないのがまずいのはわかってるから公開してないんじゃねぇの。
236デフォルトの名無しさん:02/03/27 23:34
>>233
しかしMSがここまで手の内を見せてしまうとは・・・
237226:02/03/27 23:37
>>235
はー、わかってないねー。
OLE D&Dの話してんの。WinFormがOLE D&Dのターゲットになろうとしたら
STAにいなきゃいけないの。でもCLRではデフォルトでMTAになっちゃうの。
わかったか?俺様に向かってPSDKを読めだと?100万年早いわボケ。
238デフォルトの名無しさん:02/03/27 23:49
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
>>225
>>226
ウザイ
レベルの低い知識のひけらかしは他でやって下さい。
240デフォルトの名無しさん:02/03/28 00:09
>>233
だれでもダウンロードできるんか!すげえ!



キタ━━━━━━(゚∀゚)━━━━━━ !!!!!


241225:02/03/28 00:15
>>237
そのとおりです。しかし>>226,232とはずいぶん違ったセリフですね。
最初はコンポーネント、その次はアパートメントときて、
最後にOLEの話だとようやく分かっていただけたようで。
ButtonのIsDefaultがプロテクトプロパティになってるんですが、
この値をtureに変更したい場合はどうすればいいの?
>>242
継承すれ。

単に、フォームのデフォルトボタンにしたいだけなら、フォームのプロパティを
調べてみよう。
>>242
FormのAcceptButtonを使いましょう。
245242:02/03/28 00:38
>>243-244
ありがとうございます。AcceptButtonでデフォルトボタンを
指定できるのですね。
ちなみに、後学のためにお聞きしたいのですが、継承して
IsDefaultの動的切り替えができるボタンを作成することって
できるのですか?
>>233
すまん。何がうれしいのか分からない。
>>246
.NET Frameworkのソースっぽい...
>>246
今までmscorlibなんかをILDASMして、さらに手動でC#に変換して...
なんて作業がいらなくなるぞ
249246:02/03/28 01:30
>>248
( ゚д゚)ポカーン
http://sourceforge.jp/も運営開始
はやくC#のプロジェクト現れないかな。。。
251オレだが:02/03/28 02:32
codeproject.jp も一緒につけてほしいぞ
>>250
なんかやろうぜ。何がいい?
253デフォルトの名無しさん:02/03/28 04:16
コマンドプロンプトでcsc起動したら
fatal error CS2008: 入力が指定されていませんってでるんだけどこれって何?
C#が使えないのかな?
254デフォルトの名無しさん:02/03/28 04:47
>>253
ソースファイルを引数として与えろ。
ms-help://MS.NETFrameworkSDK.JA/cscomp/html/vcerrCompilerErrorSC2008.htm
256デフォルトの名無しさん:02/03/28 05:17
>>254-255
Thx
257デフォルトの名無しさん:02/03/28 07:44
.net framework ってさ、
MFC みたく、ライブラリのソースを読んで勉強することって
無理かな?
さがしたけど、ソースはおろか、ヘッダも見つからないよ・・・。
ライブラリのソースって、一番いい教科書なのに。
>>257
>>233落とせ。
259デフォルトの名無しさん:02/03/28 08:30
MS,大学とのコード共有を大幅拡張
http://www.zdnet.co.jp/news/dj/020327/e_ms.html
260デフォルトの名無しさん:02/03/28 10:20
c#インストールしたよ。
ネットに落ちてたサンプルをコンパイルするよ。
Dispose() は override できませんとかいわれるよ。
どうするんでしょうか。
261デフォルトの名無しさん:02/03/28 10:41
262デフォルトの名無しさん:02/03/28 11:39
VB6 みたいな grid control 使いたいんですけど。
VB.NET のコンポーネントを呼んじゃうのが一番早い?
>>262
1行目:丁寧語
2行目:ため口

ふぅん。
>>260
インターフェイスメソッドのオーバーライドは override 付けなくていいみたいです。
ただし、実装クラスの派生クラスでオーバーライドしたいときは virtual が要ります。
265チョクリソ:02/03/28 12:13
.NET Frameworkをつかってグローバルアトムを取得する方法がわからないっす。
アプリの二重起動を防止しようと思ったんですが。
>>266
System.Threading.Mutex クラスでどうかしら。
268デフォルトの名無しさん:02/03/28 13:43
OpenGL使うときは
using System;GL/glut.h
で良いでしょうか?
>>262 VB使ったことないから、grid control が何かしらないけど、
エクセルみたいなもんだとしたら、
System.Windows.Forms.ListView クラス
でListView.GridLines プロパティをtrueにセットしてやればいい。
270デフォルトの名無しさん:02/03/28 13:59
HTML や Windows の ヘルプみたいに、
テキストがあって、
グラフィックがあって、
さらに、クリックできるところ(ボタンやリンク)があって、・・・
といったことをやりたいんですが、
どうすればいいのでしょうか。
System.Text あたりをみればいいのですか?

271デフォルトの名無しさん:02/03/28 14:15
.net/c# の良書(日本語)って何よ?
どーやってこの板の連中はこんな凄い知識を身につけてるんだ?
>>270
IEコンポーネントを使うしかないかと。
VS.NET でのやり方なら過去ログにあるので,探してみてくらさい。

# RichTextBox でできないこともないけど,かなり面倒かな...
273270:02/03/28 15:22
ウラで IE 立ち上げるんじゃ、ちょっとかっこ悪いっすよ・・・。
機能的にも IEじゃ不可能なことをやりたいですし。

ちなみに、IE をウラで立ち上げるとして、ボタンが押されたら
C#のメソッドが呼ばれるようにするにはどうするんですか?
IIS必須とか?
自分で全部書けば?
>>273
IEコンポーネント使ってやるなら
IEコンポーネントを使い倒すスレ
http://pc.2ch.net/test/read.cgi/tech/982930049/
にリンククリックして独自のことやる方法はあったな。400あたり。
まあがんばって。見栄えよくしたいなら自分でしこしこ
書くのが基本だけどね。
276デフォルトの名無しさん:02/03/28 19:50
ドラッグ&ドロップで、ドロップターゲットになる方法は
AtMarkItでガイシュツだけど、
ドラッグソースってどうやるの?

とくに、APの窓に浮かんでいるデータを
デスクトップやエクスプローラにドロップできるようにしたいんだけど、
これってどうやるんだろう。
単純に、ドラッグイベントに対し IDataObject をセットするだけでは無理だし。
(それだと、ファイルネームしかセットできないよね)
多分、ShellとOLEで通信する必要性があるんだろうけど、
やりかたきぼーん。
277デフォルトの名無しさん:02/03/28 21:09
278デフォルトの名無しさん:02/03/28 21:48
>>262
データグリッドってのがありますけど、それじゃだめ?

>>267
Mutexじゃ、CreateMutex()ですでに存在しているエラーがとれるようにはいかないので、
難しいんじゃないでしょうか?

>>270
そのものずばり、HTMLHelpで作るのがいいと思います。
>>252
unixのツール群を移植するとか
意味ねーけど
>>278
static void Main() に,

bool tmp;
Mutex m = new Mutex(true, "hoge", out tmp);
if (tmp)
{
  Application.Run(new Form1());
  m.ReleaseMutex();
}
else
{
  MessageBox.Show("起動してるよん");
}

みたいに書いてみたけど,うまくいったよ。
281デフォルトの名無しさん:02/03/28 22:50
>>280
ありがとうございます。できました。
282デフォルトの名無しさん:02/03/29 08:41
デバッグについてチョイしつもーん。

・ロギング、トレースってどーやるの?
・Design by Contract みたいなことって無理?
・プリティプリンタってどこにあるの?(Gnu Ident みたいなの)
・デバッグプリントってどーやるの?
if( Debug_Level > 3 ) { "Warn:" >> __LINE__ >> dwFlags >> debug_out; }
みたいなの。

>>282
>ロギング、トレースってどーやるの?
ガイシュツ。/d:TRACE

>Design by Contract みたいなことって無理?
可能。たしか初代スレでAOPのサンプルを♯さんが作ってた。

>プリティプリンタってどこにあるの?(Gnu Ident みたいなの)
知らない。

>デバッグプリントってどーやるの?
たしか先代のスレにガイシュツ。StackFrameを使う。でもリリースビルドでは
行番号は取れない。
284デフォルトの名無しさん:02/03/29 10:27
Perl みたいに、配列のサイズが勝手に拡張していくようには
できないの?
>>282
A(spect)OPならMSDNマガジンの最新号に載ってたYO!

>>284
ArrayListでどうYO!
286デフォルトの名無しさん:02/03/29 11:34
全角半角変換ってどーやるんだYo!
287デフォルトの名無しさん:02/03/29 11:40
>>286
俺にはStrConv関数しか使えないなぁ。
APIだと、LCMapStringだから、そのへん探してみたら?

・・・APIで引いて.NETでどうすればいいか分かる辞書ないかなぁ。
>>282
>・Design by Contract みたいなことって無理?

Eiffel for .NETを使おう。
http://www.dotnet.eiffel.com/

>>284
>Perl みたいに、配列のサイズが勝手に拡張していくようには
>できないの?

Visual Perlを使おう。
http://www.activestate.com/Products/Visual_Perl/
289デフォルトの名無しさん:02/03/29 15:43
>>288
ワラタ。

>>285
多次元の場合はどおよ?
string foo[][][] ( 当然、どの次元も要素数は勝手に増える)
みたいなことをやりたいなら、
ArrayList[ArrayList[ArrayList[string foo]]]
みたいな風にするのかな?
290デフォルトの名無しさん:02/03/29 16:22
やってみたけどうまくいかないYo!
ArrayList の多次元配列はどうやるのかNa!
291デフォルトの名無しさん:02/03/29 18:54
.net FrameWork ってさ、unix の dbm みたいな、簡易DBってないかな。
いや、別にMSDE(MSDNじゃないよ♪)みたいな本格的なのでもいいんだけど。
ただ、たとえ Freeだろうがなんだろうが、
なんかDLLをインストールする必要性があるのはちょっとね。

.net framework ならどこでも常に標準で存在するDBってなんかない?


292デフォルトの名無しさん:02/03/29 19:30
ね、ね、C#ってぶっちゃけどの程度需要あるの?
293デフォルトの名無しさん:02/03/29 19:45
いつになったらC#にgenericsが導入されるんでしょうか?
.NET Framework SDKで作ったプログラムって売っていいのか?
使用許諾契約書を見ても載ってないっぽいんだが。
載ってない=不許可ってこと?
>>286
こんぐらいのことは思いつけ。ヴォケ
ttp://www.ncad.co.jp/~komata/c-kouza23.htm
296デフォルトの名無しさん:02/03/29 20:55
>294
漏れも木になるage
>291
> .net framework ならどこでも常に標準で存在するDBってなんかない?
xmlファイル。
ADO.NET 使えば xmlでデータベース作れると思うんだけど?
試してないけど。
できたらソース付であぷしてね。
298デフォルトの名無しさん:02/03/29 21:19
>>295
なんだこのソース、頭悪すぎじゃん(w
299デフォルトの名無しさん:02/03/29 21:51
>>287
VisualBasicのライブラリを参照して、StrConv()ってのもありかもしれません。
で、StrConv()のILを見てみたら、NativeコードのLCMapString()を呼び出してました。
300デフォルトの名無しさん:02/03/29 22:40
TextBoxのフォントを、例えばMSゴシックでサイズは14とかを指定するには
どうすればよいでしょうか。
太字とか色はわかったんですが・・・・おながいします。
301デフォルトの名無しさん:02/03/29 22:52
SDKのコンパイラオプションの/optimizeって最適化らしいんですが、
オプションを付加することにより何が変わるんですか?
302デフォルトの名無しさん:02/03/29 22:53
>>300
VB.NETだと、こんな感じでできました。

TextBox1.Font = New Font("MS Gothic", 14, FontStyle.Regular, GraphicsUnit.Point)
303300:02/03/29 22:59
>302
できました!ありがとうございます。このGraphicsUnit.Pointは何なんでしょうか?
厨ですいません。
304FERC.NET:02/03/30 00:14
>>301
FERC.NETエージェント1号が調べた結果、以下のことがわかった。

1. ILに対する最適化
たとえば次のコードを/o-でコンパイルすると、
static int Add(int x, int y) {
 return x + y;
}

次のILが出力される。

IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: add
IL_0003: stloc.0
IL_0004: br.s IL_0006
IL_0006: ldloc.0
IL_0007: ret

IL_0003〜IL_0006までに無駄なコードが入っている。これはおそらくデバッガの
ソースコードハイライト機能をサポートするためであろう。同じコードを/o+で
コンパイルすると、次のようになる。

IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: add
IL_0003: ret

これがIL出力時の最適化だ!もう1つの最適化については追って報告する!
305FERC.NET:02/03/30 00:25
>>301
2. JITコンパイラの最適化
/debugを指定してコンパイルすると、アセンブリのメタデータにSystem.Diagnostics.DebuggableAttributeが設定される。
これだけならば、たとえば次のコードは、

int x = 1; int y = 2;
int z = x + y; Console.WriteLine(z);

JITコンパイル時にこのように最適化される。

mov edx,3
mov eax,dword ptr [ecx]
call dword ptr [eax+0BCh]

しかし、ソースのコンパイル時に/optimize-を設定すると、System.Diagnostics.DebuggableAttributeが変化し、
同じコードが次のようにJITコンパイルされる。

mov edi,1
mov ebx,2
lea eax,[edi+ebx]
mov esi,eax
mov ecx,esi
call dword ptr ds:[79B89228h]

このように、C#コンパイラの/optimizeは、1) ILの最適化、2) JITコンパイラの制御
の2つの役目を担っているのだ!そして2つ目の役割はアセンブリのメタデータについている
属性で制御されているのだ!

以上です、チーフ。
>304,305
ファーイーストリサーチ社・・・すばらしいです。
最近C#でプログラミングを始めたものです。OpenFileDialogでダイアログを開きtxtファイルを開きたかったのですが、RichTextBoxと違いLoadFileメソッドがTextBoxには無いようです。
どうやって開けばよいかご指導ください。
TextBox tb =new TextBox(); ・・・略
protected void Load_Click(object sender, EventHandler e){
OpenFileDialog dlg = new OpenFileDialog(); DialogResult re = dlg.ShowDialog();
if(re==DialogResult.OK && dlg.FileName.Length >0);
{tb.LoadFile(dlg.FileName); //これが出来ないです。
}}
308290:02/03/30 01:00
どうやって、サイズ可変の多次元配列をやるんだYo!。
サイズ可変だと一次元しかできないYo!。
わかんないYo!。
おしえてくれYo!。
>>307
ファイルを自分で開いて読むのだよ。

APIだと、CreateFileとか、ReadFile
310307:02/03/30 01:26
>309
えっそうなんですか・・・・APIですか・・・.Netのライブラリには無いんですね。
自分でそういうクラスとかを作って、イベントに当てればいいんですね。やってみます。ありがとうございました。
311デフォルトの名無しさん:02/03/30 01:36
>>310 System.IO みてみ、、、、ファイルダイアログでパスを得て
ファイルを直に開けよってことでしょう、、、
312デフォルトの名無しさん:02/03/30 01:46
>>308
多次元の添字のためのクラス作って、そいつをキーとする HashTable を使うとか。

struct Indeses
{
public int x, y;
public Indeses(int x, int y){this.x = x; this.y=y;}
static bool operator==(Indeses a, Indeses b){return a.x==b.x || x.y==b.y;}
}

HashTable hash = new HashTable()

hash[new Indeses(1, 2)] = 5;

って感じ。
あんまりスマートな方法じゃないけどな。
313デフォルトの名無しさん:02/03/30 01:51
.netはスレちがいだったようなのでこっちにかきます。

StringをFileStream.Writeで書き出すにはどうすればよいのでしょう。
バイト配列に直すようなものがありません。
最近プログラミング自体をC#で始めた人が多いような気がする。
>71のようなスレと分けたほうがよくない?
かってな子と言ってスマソ。芯でくる。
>>313
System.Text.Encoding.GetBytes
>>313
しかしこの質問は何回もでてくるな、次スレでは書いといた方がいいな
System.Text.Encoding.GetBytes  しらべれってな、、
317VS.NETスレの828:02/03/30 01:59
>>315-316
VS.NET スレのほうも含めて、4人が同じ答えかぶってるな。
>>314 そうかもね、、、スレの進み方も日本語版でてから早いし。
初心者歓迎スレか。板の住人にうざがられないか心配だけど。
319デフォルトの名無しさん:02/03/30 02:02
>315
できました。どうもありがとうございました。
320デフォルトの名無しさん:02/03/30 02:06
>314,318
確かにあってもよいかも。Del、VB、JAVAにもあるんだから・・・・
いまスレ立てたほうが後のこと考えても・・・・・
勝手な事言ってる漏れも氏んでくる。
321320:02/03/30 02:07
しかもAgeちゃった・・・・九尾つってきます。
322313:02/03/30 02:08
参考までに言わせてもらいますと、System.Text.Encoding.GetBytes メソッドは僕もライブラリを調べているうちに見つけました。
しかしインスタンスを作成しようとしたら書いてあるとおり抽象クラスで駄目でした。
そこでリファレンスを読み進めていくとオーバーロードしなければならないとか書いてありました。
クラスを継承してメソッドを実装しないと駄目なら意味ないねと勘違いして違うのを見つけようとしたのがこれまでの経緯です。
>>322 君を責めてるわけじゃないよ。ごめんね。
そこらへんの経緯も前スレにあるので、時間があったら
見てみたら勉強になりますよ。
324デフォルトの名無しさん:02/03/30 02:31
>>299
VBでクラスライブラリを作成して、C#から利用するには、どう書いたら
いいんでしょう?

Namespace MyCorp.Text
Public Class StringConvert
Public Shared Function StrConv(ByVal Str As String, ByVal Conversion As Microsoft.VisualBasic.VbStrConv, Optional ByVal LocaleID As Integer = 0) As String
Return StrConv(Str, Conversion, LocaleID)
End Function
End Class
End Namespace

って、書いたけど、C#のプロジェクトからDLLの参照を追加しても、MyCorp.Textなんて存在しないって言われるし・・。
(VB.NETはよう分かない・・・。)
325307:02/03/30 02:48
>311
ありがとうございます。下記のように試してみたらtxtファイルを読み込めました。
でも2バイト文字は読み込めません。どうしたらよいでしょうか。よろしくお願いします。

if( res == DialogResult.OK && dlg.FileName.Length >0){
string Line;FileStream fs = new FileStream(dlg.FileName, FileMode.Open);
StreamReader sr = new StreamReader(fs);
while((Line = sr.ReadLine()) != null)
{
tb.Text += Line;
tb.Text += "\r\n";
}

>314
まさに私のことですね・・・・すいません。
326VS.NETスレの828:02/03/30 02:55
>>325
StreamReader(string, Encoding) を調べれ。
あと、Encoding.Default

327デフォルトの名無しさん:02/03/30 04:44
>>197 のことを解決したくて >>212 >>214
でやってるようなことをしたいと思うんだけど
Editor( typeof(FolderNameEditor) ----- エラー
型、または名前空間名 'FileNameEditor' は、
クラスまたは名前空間 'System.Windows.Forms.Design' に存在しません。
アセンブリ参照があるか確認してください。

っていわれてしまうんです。何でなんでしょう?
328デフォルトの名無しさん:02/03/30 05:18
属性ってどういうときに使うのですか?
>>327
System.Design.dllを参照に追加する
330327:02/03/30 06:10
>>329
ありがとうございます。悩みが解決しました。たすかりました。
331290:02/03/30 08:53
>>312

それは漏れのDQNアタマも思いつきました。
perl4 で多次元配列や構造体を実現したときにやった方法と同じだよね。
でも、そんな変なことするなら、それこそ .net perl 使ったほうがいいよなぁ。

だれか、もっといいアイディアないですか。
自動的にサイズが伸びる配列は非常に便利なんだけど。
332297:02/03/30 09:46
>291
DataSet ds = new DataSet();
XmlTextReader xmlReader
= new XmlTextReader( new StreamReader(
new FileStream( file, FileMode.Open ), Encoding.Default ) );
ds.ReadXml( xmlReader );
xmlReader.Close();

これでDataSetに読めこめたんで 簡易DBの出来上がりだ。
後は、System.Data System.Xml ADO.NET あたりをみれ。
インサイド .NET Framework
第1回 Managed Code/アセンブリ/モジュール

ttp://www.atmarkit.co.jp/fdotnet/technology/framework01/framework01_01.html
334デフォルトの名無しさん:02/03/30 16:40
paint(win付録のお絵かきソフト)みたいなコードのサンプル、
ないかな。
Win32 はそれで覚えたんで、夢をもう一度、です。
335デフォルトの名無しさん:02/03/30 17:06
>>329

へー、なんだそれ。マニュアル検索してもそんなDLL載ってないけど。
でも、たしかにインストールされてるな。
どこに記載があったの?
>>334
PaintBrush in C#
http://www.c-sharpcorner.com/Graphics/PaintBrushinCSharpPart2.asp

これはどう? 古くて手直しが必要ですが。
Formの最大化と最小化は無効にしたんですが、サイズ変更を無効にするにはどうしたらいいですか?
Form.FormBorderStyle プロパティ をFixedSingle
既出だよ。
339338:02/03/30 17:53
>>338>>337へのレスでした。スマソ
ほんとにどうでもいいんだけど、SDKのヘルプのソース。コメントと色分けして欲しかった・・・
341デフォルトの名無しさん:02/03/30 18:22
単純にButtonを押したら音(wav)を鳴らすにはどうしたらよいですか?
SDKのヘルプを見てもさっぱりわかりません。
342tt」:02/03/30 18:50
いつC#対応のDirectXが出るのですか?
>>341 前スレに既出。
[DllImport("winmm.dll")]
public static extern long PlaySound(String lpszName, long hModule, long dwFlags);
345342:02/03/30 19:02
DLLつくりゃあいいのか
346341:02/03/30 19:06
>343,344 ありがとう。過去ログも見てきました。
.netにはそういうのが無いんですねー。でもそんなに難しくなさそうですね。がんばりまっす。
347デフォルトの名無しさん:02/03/30 19:31
Perl の Strable みたいに、
(↑オブジェクトを dbm っつー簡易データベースに保存するクラス)
お手軽にオブジェクトの永続化ができる
クラスってないの?
あると思う。
>342
VS.NETスレか,このスレになんか書いてあった。
350デフォルトの名無しさん:02/03/30 20:01
System.Windows.Forms.Timerの使い方がよくわかりません。
Form上のボタンをクリックすると、5秒後にMessageBoxが表示というのを組んでみたんですが・・・
駄目でした。教えて君ですいません。
351:02/03/30 20:25
今回のタイマーは、どうやら正確らしいな。
352デフォルトの名無しさん:02/03/30 20:28
System.Windows.Forms.Timerなんて存在するのか?
353347:02/03/30 20:41
Strable -> StOrable 訂正です。
で、 >>348 さん。
どこにあるの?
354FERC.NET:02/03/30 20:50
>>350
タイマーのIntervalプロパティを5000(5秒)に設定して、
ボタンのClickイベントにTimer1.Enabled = true;を書いて、
タイマーのTickイベントにMessageBox.Show("...");を書きます。

以上です、チーフ。
355FERC.NET:02/03/30 20:52
>>347
Perlはまったく知りませんが、オブジェクトの永続化なら、
System.Xml.Serializationか、System.Runtime.Serializationネームスペースの
クラスで用が足りるかもしれません。

以上です、チーフ。
356デフォルトの名無しさん:02/03/30 22:04
WinDes.exeがみつかりません。
>>356
なくなりました。
358デフォルトの名無しさん:02/03/30 22:17
System.Windows.Forms.Buttonをトグルボタンにするにはどうしたらいいの?
359名無しさん♯:02/03/30 22:29
>>358
CheckBoxを貼りつけて、AppearanceをButtonにしてちょ。
360358:02/03/30 22:34
>>359
ありがとうございます。出来ました。CheckBoxにするんですねー。盲点でした。
ついでに教えてください。そのCheckBoxがフォーカスを得ないようにするにはどうしたらよいのでしょう?
具体的には、VS.NETの「ツールボックス」みたいなボタンが作りたいんです。
初心者にこの本よさげ?
http://www.shoeisha.com/book/Detail.asp?bid=1353
>>360
そういうのは、通常ツールバーで作ると思いますよ。
>>360
こんなんでどう?

・ToolBarを追加して、DockをNoneに
・Buttonsからボタンを追加して、StyleをToggleButtonに

あとはお好みで
・ツールバーのAppearanceをFlatに
・TextAlignをRightに

これでそれっぽくなるよ。
364358:02/03/30 23:26
>>362
がーん(T-T)。そうですか。知らなかった。
ツールバーにAddするToolBarButtonを縦に並べる方法が分からず・・。
>>364 Dockプロパティを右か左。
366デフォルトの名無しさん:02/03/31 00:35
StatusBar.Iconに表示させるIconをImageListに持とうとしたんですが、
ImageクラスからIconクラスへの変換方法がわからない…。
367デフォルトの名無しさん:02/03/31 01:43
C#って言語的には非常に魅力だしプログラミングのしやすさ(開発効率)も抜群なんだけど、
趣味でクライアントサイドのソフトしか作らない俺みたいのには、Delphiとかのがいいのかな・・
SDKでコンパイルした、ただ単にフォームを表示するだけのアプリでもタスクマネージャ見ると、
6MB近くメモリ食ってるよ・・・どしよー。
368デフォルトの名無しさん:02/03/31 01:45
TextBoxでEnterを入力すると警告音らしき音が出るんだけど、止め方ってわかる?
367はDel厨っぽいな。
370:02/03/31 02:01
>367
もうすでに時代は、メモリを食うアプリでも良いという方向へ行っていると思うが?メモリの容量が無駄に増えているのがその証拠。
371デフォルトの名無しさん:02/03/31 02:06
>>367
プログラミング言語なんて、アプリケーション作るための手段でしかないんだから、好きなの使えばいいじゃん。
372364:02/03/31 02:07
>>365
きゃー、すばらしい!出来ました。ありがとうございます!!
Dockプロパティってこんなことも出来るんですね。勉強になりました。
>>342 Framework SDK デレクトリのなかの
\Samples\Technologies\Interop\Basic\DirectX
を見てみ
374デフォルトの名無しさん:02/03/31 02:32
CodeProjectのような内容の日本語サイトをご存知ありませんか
http://www.codeproject.com/
投稿系ということでは・・・
www.layer-8.com/sce/
376374:02/03/31 03:06
Thanx! Layer-8 C#系の話題盛り上がりませんね(汁
377デフォルトの名無しさん:02/03/31 03:44
あるフォルダの下のフォルダを取得したいのですが、
System.IO.Directory.GetDirectories()
で取得するとフルパスで帰ってきて、TreeViewで使うときに不便なのですが、
FindFirstFileなどのように名前だけ取得できる方法はないでしょうか?
>>377
Path.GetDirectoryName 使うのはなし?
379デフォルトの名無しさん:02/03/31 04:14
>>377
DirectoryInfoは?

DirectoryInfo dirInfo = new DirectoryInfo(path);
DirectoryInfo[] subDirInfos = dirInfo.GetDirectories();
foreach(DirectoryInfo subDirInfo in subDirInfos) {
Console.WriteLine(subDirInfo.Name)
}
ありがとうございました。DirectoryInfoでいけました。
似てるようで違うのですね。早く覚えないと・・・。
381デフォルトの名無しさん:02/03/31 04:43
get[int x][int y]
{
  return hoge[x][y];
}
みたいに書きたいんだけど、なんか良い方法無いですか?
アセッサメソッド書く以外無いですか?
インデクサはちょっと困りまする
TcpClientでちょっと困まりました。
サーバはパケット冒頭にデータの長さを送信して、
次にその長さだけデータをを送信します。[1]
そこで[2]のようなコードでクライアント側で受信しようとしました。

しかし[3]のコードが実行された時に、まだデータがサーバから受信しきれていない場合
受信できてない後半部分は0で埋められ、バッファ(data)に格納されてしまいます。

私の考えでは、すべて受信するまで[3]で待機すると思っていましたがどうも違うみたいですね。
この場合の対処としては、[4]みたいにしたのですが、駄目でした。
どうすればいいでしょう。長文申し訳ない。
[1]
[データの長さ|データ中身]<---パケットの形式
[2]
NetworkStream netStream = TcpClient.GetStream();
BinaryReader reader = new BinaryReader(netStream);
short dataLength = reader.ReadInt16();//データの長さを読む
byte[] data = new byte[ dataLength ];
reader.BaseStream.Read( data , 0 , data.Length);//データを読む[3]
[4]
TcpClient.ReceiveBufferSize = data.Length;
383デフォルトの名無しさん:02/03/31 10:29
>>381
なんでインデクサは駄目なの?

どうしてもっていうなら、hogeをプロパティにしたら?


class A
{
T[][] hoge;
public T[][] Hoge
{
get { return hoge;}

}
}

利用する側はobj.Hoge[][]
と利用するということで。
384デフォルトの名無しさん:02/03/31 10:36
>>382
dataLengthになるまで、reader.Read()を繰り返したら?
reader.Read()の戻り値をみて。
int readSize = 0;
int offset = 0;
while(dataLength) {
readSize = reader.Read(data, offset, dataLength);
offset += readSize;
dataLength -= readSize;
}
385384:02/03/31 10:37
失礼。

× while(dataLength) {
○ while(dataLength > 0) {
386デフォルトの名無しさん:02/03/31 11:22
>>383
 あぁ…そう書けばよかったんだ。
どうもありがとうございます〜
387デフォルトの名無しさん:02/03/31 12:14
stream.OpenFile( args[0] );
とかやっちゃうと、コマンドライン引数がないばあい、
例外で飛ぶでしょ。
だから、c みたいに、事前に、
if( !args[0] )
{ FileName = "Default"; }
とかやっときたいんだけど、
どうするの?
>>387
args.Length > 0 かな?
389デフォルトの名無しさん:02/03/31 12:20
>>387
args.Length でコマンドライン引数の数を調べられるよ。
2ch関連クラスを作成していますが、HTML解析の手順で悩んでおります。
一応、ロジックを組んで、力ずくで解析はさせたのですが、問題があります。。。

■問題点
・HTML解析部分がハードコーディングのため、HTMLの構造等が変更されるとロジックを変更しなくてはならない。
・公式/非公式(註1)のHTMLで、HTML解析部分を変える必要がある。

ということで、HTMLの整形・解析処理のハードコーディングをやめて、ユーザがスクリプトを組んでHTMLの
整形を行えるようにしたいのです(XMLに整形してそのままDataTableに突っ込めると最良)。
そのやり方を暫く探していたのですが、どうにも分かりませんでした。
ヒントになるキーワードだけでもかまいませんので、知恵を貸してくださいませ。。。


ソース:http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=33

(註1)今のところ、板一覧取得は下記のURLからやっています。
(公式)http://www6.ocn.ne.jp/~mirv/2chmenu.html
(双葉氏作成)http://angel.lolipop.jp/katjusha/board/fbbsmenu.html

>>384 ありがとうございます。うまく行きました。激しく感謝。
こんなこと、基本事項なんですよね。反省。そこまで、逝ってきます。
392デフォルトの名無しさん:02/03/31 14:59
c# って いわゆる「普通の関数」ないの?
void myfunc(int a)
{ hoge;;}
みたいなの
なんでもクラスにするの、面倒なんだけど。
>>392 staticなメソッドすらいやなの?
>>392
完全なオブジェクト指向言語だから,グローバル関数はないよ。
ちなみに VB.NET だとできるね。
む。
> なんでもクラスにするの
って,インスタンス作成することかな?

だったら >>393 さんの言うように static メソッドにすればいいのでは?

class Hoge {
 public static void MyFunc(int a) {
  // hoge
 }
}

で,Hoge.MyFunc(5); みたいに呼び出せるけど。
396デフォルトの名無しさん:02/03/31 15:09
>>392
privateなコンストラクタだけ用意したクラスに、pubilc + staticなメソッドをつけると、ほとんどグローバル関数っぽくなる。
(いや、もちろん、クラスなんだけど)

privateなコンストラクタのみ = インスタンス化を抑制

ま、面倒なことには間違いないけど、それがオブジェクト(コンポーネント)指向。
397オタ君:02/03/31 15:11
>ま、面倒なことには間違いないけど、それがオブジェクト(コンポーネント)指向。
アホか。単にファーストクラスオブジェクトがクラスなだけ。
398デフォルトの名無しさん:02/03/31 16:18
class GlobalFunc()
{
public static func1(){;;;}
public static func2(){;;;}
public static func3(){:::}
}
これでどーよ。
関数の前に GlobalFunc.func1(); みたいに接頭辞がつくのが
ウザいことをのぞけば C とおなじだぜ。
それだったら Global.func1() のほーがいーよーな。
ダサイけど、しょうがないやね。
Javaでも同じ事してるし。
400デフォルトの名無しさん:02/03/31 16:55
unix でよくやる、フィルタ系のコマンドを立ち上げて、
そこにデータを流し込んで、結果を受け取って、といったのは
どうやってやるの?


>390
> ということで、HTMLの整形・解析処理のハードコーディングをやめて、ユーザがスクリプトを組んでHTMLの

スクリプト組んでやるってのは悪い考えではないと思うんだけど、エラー処理とか考えると
Webサービスとかでラッパーかました方がいいんじゃないかと思うのが僕の考え。
.NETの使えるレンタルサーバきぼぬ!

ローカルにダウンロードした板一覧から xmlファイル作るやつは
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=34&fi=no
に置いといた。

XML Schemaの書き方がまったくわからん。
402デフォルトの名無しさん:02/03/31 17:06
名前空間を自由に分けられるメリットを理解できない
アホが紛れ込んでいるようです。>>398-399
403デフォルトの名無しさん:02/03/31 18:12
まぁまぁ、煽りは無しで行こうよ。
404デフォルトの名無しさん:02/03/31 19:17
Process.Start("www.2ch.net");
ってやると、いきなり2chのトップページに飛べるのは便利。
でも、HTMLでいうところの、「今までのウィンドウで開く」に
なっちゃうんだよな。
<a href target = "_blank">
( 新しいウィンドウで開く)
みたいなことってどうやってやるの?

>>404
こういうこと?
System.Diagnostics.Process.Start("IEXPLORE","http://www.2ch.net/2ch.html");
406デフォルトの名無しさん:02/03/31 20:12
ありがとーーん。うまくいきました。
407デフォルトの名無しさん:02/03/31 22:32
SDKでGUIアプリ作り出したんだけど、やっぱりRAD環境が欲しい・・・・とか言ってみるテスト。
しかもage
408デフォルトの名無しさん:02/03/31 22:36
>>407
話題のEclipseSDKでつくってみよう。いや、マジで。
EclipseってJava専用ちゃうのん?
410407:02/03/31 22:49
>408
あれってC#で動くの?マジレスきぼん
411デフォルトの名無しさん:02/03/31 22:49
>>409
実装がJavaでできているだけ。
C/C++用のIDEなら既にプラグインが開発されてるらしいし。
C#だって可能だと思う。もともとJavaとライブラリ似たようなもんだし(藁
412デフォルトの名無しさん:02/03/31 22:58
>361
気になったんだけど売ってなかった。立ち読みしてみたい。
413:02/03/31 23:07
pictureBoxをAUTOSIZEにしておいて、それをパネルの中に入れると、パネル外にいくときは自動的にスクロールバーが出ますよね。
しかしスクロールした部分にGraphics.drawRectangleなどで描こうとしても、描けません。仕様ですか?
414:02/03/31 23:45
かんちがいしちゃった えへ ごめんね
415デフォルトの名無しさん:02/04/01 00:39
>421
同士よ。われらDQNには、やはりDQN向け紙媒体が必要であるな
速くイロイロだせやゴルァ!!!!
これからの時代はB#だよ!!すべてテキストだよ!!MSマンセーw
>>416 そうか、、今日は、、だったか。
419416:02/04/01 03:31
   ||
 Λ||Λ
( / ⌒ヽ
 | |   |
 ∪ 亅|
  | | |
  ∪∪
   :
   :

 ‐ニ三ニ‐
416はマジだと思ったのかな。
でもさー、しょぼい記事だよね がっかりしたよ
B#イイ!
423デフォルトの名無しさん:02/04/01 19:15
TextBox をさ、(べつにほかのコントロールでもいいけど)、
Console みたいに使いたいんだけど。
textbox += output;
ってやり続けると、どこかでバッファがあふれて破綻するでしょ。
コマンドラインのコンソールみたいに、
最大1000行まで。それ以上は、古いものから消えていく、、
とかやりたいんだけど。
public class DisposingTextBox : TextBox
{
//あとは任せた
}
// 終了
>>424
private:

//もうだめポ
>>424

private DisposingTextBox() {
throw new InvalidProgramException();
}
static DisposingTextBox() {
 throw new SystemException("ウイルスに感染しますた");
}
429390:02/04/01 20:00
>401
遅レススマソ&ありがとう。
コード動かしてみました。XML絡みの部分は重宝してます。

>Regex regTitle = new Regex(@"<b>(?<category>.+)</b>", RegexOptions.IgnoreCase);
>Regex regLink = new Regex(@"<a href=(?<url>\S+).*?>(?<name>.+?)</a>", RegexOptions.IgnoreCase);
この辺とかのHTML解析部分は、やっぱりハードコードするしかないのか・・・

>スクリプト組んでやるってのは悪い考えではないと思うんだけど、エラー処理とか考えると
あ、スクリプトエラーが出たら例外吐いて落ちてもOKって(個人的には)思ってます。
機動的にHTML解析部を変更できるメリットの方が重要でして。。。

430デフォルトの名無しさん:02/04/01 20:01
うえーん。いじめられてるYo〜
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
            ∧_∧
          ( ´Д⊂ヽ 
          ⊂    ノ
           人  Y
          し (_)



ネタスレになってる気がする・・・。
432デフォルトの名無しさん:02/04/01 21:52
すいません、.NETのエディタのマクロリファレンスって無いんですか?
ヘルプには Excel等で使った経験があれば分かるはず なんて
書いてあるんですけどこれってアリ?
433マイクロソフト最強:02/04/01 21:54
何気にオライリーはシーシャープ関係熱心だな。
http://oreilly.com/catalog/csharpnut/
http://www.oreilly.com/catalog/progcsharp2/

表紙は孔雀。やはりプログラミング言語の王様ってことに敬意を
表しているんだろうな。


434423:02/04/01 22:07
だれか教えてクリクリ。
>>424
TextBox.Linesの要素数を調べて一定以上あれば先頭の何行か削っていけばいいじゃん。
436デフォルトの名無しさん:02/04/02 00:02
あの、CopyMemoryみたいな関数はないのかな?
バイナリファイルからバッファに読み込むまでは出来たのだけど、
そこから文字列とかを取り出したい。
437デフォルトの名無しさん:02/04/02 00:17
>>436
Encoding.GetStringあたりを調べるとよいかと。
孔雀==ハッタリ
439デフォルトの名無しさん:02/04/02 01:16
どなたかC#でMySQLを利用する方法をご存知の方はいらっしゃいませんか?
参考になるページでも良いです。
ご教授ください。
440デフォルトの名無しさん:02/04/02 02:35
>>436
use unsafe and cast your buffer to a struct type.
no need to parse your buffer. use Csharp like C/C++.
>>439
Odbc.netで接続できるよ。
442423:02/04/02 10:36
>>435
そーゆー力技しかないのかな。
どっかに「いかにも」ってクラスが転がってそうなんだが。
だれか教えて。
443423:02/04/02 11:20
やってみた。
クソおそいよ。実用にならない。
いかにもなクラス、教えてくれ。
>>443
自前でエディタクラス作って好きなようにバッファ管理しる
445423:02/04/02 13:33
んな面倒なことできるかよ。
ていうか難しそう。
文字サイズを定義したり編集エリアとかキャレットも自分で描画するんでしょ。
フォントとかWordWrapどころかキーボードからの入力を受ける処理だけでも難しそう。。。
>>445
ていうかそんなに遅いか?
1500行を超えたら500行くらいに縮小するようにすれば遅くないんじゃないの。
行数のカウントもLinesじゃなくて自前でカウントしとくとかすれば改良できるし。
こんな教えて君は相手にすべきじゃないってばさ
449423:02/04/02 14:21
>>447

たとえば、300行あるときに、301行目を書くためには、
もとある300行の string に += して、それをTextBox.Text に
転送することになる。
それがクソ遅い。
やってみたが、これを100行分もくりかえせば、
1秒ぐらいかかる。
つまり、TextBox とは、Default の文字列はあるにせよ、
原則としては、user edit のためのコントロールであり、
AppのOutput を貼り付けるコントロールではないようだ。
AppのOutputを貼り付けるコントロールはないんか?
>>449 TextBoxBase.AppendText()はどう?
それだと全部メモリ書き換えることになるんじゃないの?
上のでだめならTextBoxBase.SelectionStartで一番後ろに
文字追加とかだめ?やってないからわからんけどね。
>>449
Label。

stringが遅いのはimmutableだから。
452デフォルトの名無しさん:02/04/02 15:29
>>449
string += するから遅いんであって、StringBuilderで文字列を操作しておいて、
TextBox.Text = StringBuilder(のインスタンス).ToString()
したらダメ?
(つまり、文字列は別に管理しておく)
453447:02/04/02 15:48
>>450を知らんとは…。そんなんで偉そうな口きくなや。
文字列全体を書き換えたら遅くなるくらいは、試す前に気がつけ。
見下し野郎がうざい。
初心者専用スレが必要だよ。
>>454
だよなあ・・・
>>454
そうかぁ?ずいぶんな態度だぜ、この初心者も。もうちょっと聞きかたってもんが
あるんじゃねーの?
457デフォルトの名無しさん:02/04/02 17:03
エージェント1号さんがでてこないと単なる糞スレですね、ここ!
>>457 お前が糞。
459デフォルトの名無しさん:02/04/02 17:19
>>457
この掲示板を匿名で利用できる無料のサポートセンターだと勘違いしていない?
自分の非力・無力を棚にあげて、なんて偉そうなんだ・・・。

> いかにもなクラス、教えてくれ。
なことばっかり偉そうに言っていたら、会社から捨てられるよ。モジュールの組み合わせなんて誰でもできるんだよ。結果(ソースだけ)を求めずにもっと考えたら? みんないろいろ考えてくれているのに・・・。
ここで一句。
ちょっと待て
  457は
   !423
字余り。
キューに入れて、Lines()にコピー、でいいんじゃネーノ?
スレが荒れると♯さんやその他すごい人が出てこなくなっちゃうよ。。。
煽りはなしで行こうよ。。。
ここは会社ではないが>>457は捨てる。
捨てるも何も、煽りにマヂレスカコ(略
465初心者:02/04/02 22:55
C#でオラクルに接続する方法を教えてください。
どこがマジレスなのか問い詰めたい
>>465
OleDb.NET でどうぞ
468439:02/04/03 00:43
>>441
どうもありがとうございます。
Odbc.netを調べてみます。
ありがとうございました。
うえーん、Programming C#まだ読み終わってないのに第2版が出たよ〜
http://dotnet.oreilly.com/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
            ∧_∧
          ( ´Д⊂ヽ 
          ⊂    ノ
           人  Y
          し (_)


470デフォルトの名無しさん:02/04/03 01:25
C#にはjavaでいうところのjavadocみたいなツールは
ないのでせうか?

あれって、結構便利なのですが、、、
CSC.exeに/docをつける。
コードには
///<summary>
///コメント!
///</summary>
などのXMLを書く。するとXMLドキュメントが生成される。XMLなのでJavadocよりも
後加工がしやすい。
472デフォルトの名無しさん:02/04/03 01:34
>>470
> C#にはjavaでいうところのjavadocみたいなツールは
> ないのでせうか?
>
> あれって、結構便利なのですが、、、

/// と XML タグを使ってドキュメントを記述。

csc の /doc オプションで XML ドキュメントを出力できる。
473デフォルトの名無しさん:02/04/03 01:35
C#もC++のようにGUI作るには訳わからないブラックボックスの森をさ迷わないといけないの?
474デフォルトの名無しさん:02/04/03 01:38
>>473
C/C++ で生API使うこと思えば、殺人的にラク。
475名も無き冒険者:02/04/03 01:40
ここでも見てぐっすり寝れ。

ttp://www.toyspress.co.jp/WF2002/costme.html
476475:02/04/03 01:41
+ 激しく誤爆 +

ごめんなさい。C#スレのみなさん。
475よ 疲れているみたいだな そろそろ寝たらどうかな
478デフォルトの名無しさん:02/04/03 07:04
Visual C# Standard 早売りしてるところないかな〜。
479デフォルトの名無しさん:02/04/03 08:38
           ▽
 時代はC♯ >◎
           |
           |
        □□□
      □□□□
      □  <
        /  >
480デフォルトの名無しさん:02/04/03 20:31
>>450 >>452
やってみましたが、ダメです。
どうも、遅いのは、文字列操作(これも遅いけど)というよりは、
TextBox クラスの内部処理みたいです。
Console的につかうには、一行ごとに出力できなきゃダメだし。

てゆーか、もっと簡単に実験できるんですが、
VS.net で TextBox のフォーム作って、そこに1Mバイトぐらいの
テキストを張ってみてください。その遅いこと遅いこと・・・。


>>451
Label は、コピペとかに対応していないし、スクロールバーも出ないので、ダメダメです。

うーむ。なんかいい方法ない?。
>>>480
コード見せてみな。
482デフォルトの名無しさん:02/04/03 21:01
protected void menu1_Click(object s, System.EventArgs e) {
for( int i=0; i<1000; i++ )
{
this.textBox1.AppendText(("Line:"+i+":ABCDEFG0123456789\n"));
}

あとは、.net studio の 出力そのままなんで・・・。
483初心者:02/04/03 21:44
C#でOO4Oを使ってる人いますか?
どうやって接続するの?
厨質ですみません。

VS.NETでボタンクリックのイベントを書いていたところ、
以下のようなパラメータヒントが出たんですが、void (.....) targetの部分の意味が
よく分かりません。

▲ 1/2 ▼ EventHandler.EventHander (void (object, System.EventArgs) target)

どなたか、この構文がどういうものかを教えてくださいませ。。。
>>484
void Hoge(object, System.EventArgs) という形のメソッドに
イベントハンドラを割り当てるということ。
>>482
これがあなたのいう「速い」という速度で実現できる処理系があるとは
思えません。何なら「速い」んですか?何を使っても同じだと思いますけど。
>485
ありがとうございます。
じゃあ、あのパラメータヒントの意味するところは
「void (object, System.EventArgs)」という定義のメソッド「target」を
指定してねってことっすか。。。なるほど、意味が分かりました。
>>483
COMInteropを使って、oo4oのラッパを使えばいけるはず。試してないけど。
489483:02/04/03 23:05
>>488
×使えば → ○作れば
490447:02/04/03 23:25
>>482
textBox1.Visible = false;
for( int i=0; i<1000; i++ ) {
  this.textBox1.AppendText("Line:"+i+":ABCDEFG0123456789\n");
}
textBox1.Visible = true;

でやってみ。瞬間で終わるから。これから考察すると(以下略)
>>480
1Mのテキストって。。。もしかして秀丸とかのエディタと比べて「遅い」とか
言ってます?そら工夫の問題でんがな。。。
>>490 それなつかしいなぁ。RBでやってたよ・・(遠い目
493デフォルトの名無しさん:02/04/04 01:04
あー、たしかに。激速い。
うーん。ということは、
遅いのは、windows.forms の画面処理だったのか。。

でも、この方法、ひとつ問題点があります。
「画面がちらつく!」
なんかいい方法ないですか?へこへこ。
BeginUpdate/EndUpdateはTextBoxにはないですねー。
WM_SETREDRAWってTEXTBOXには使えましたっけ。
知ってる人おしえてちょ。
495452:02/04/04 01:22
System.Text.StringBuilder str = new System.Text.StringBuilder();
for( int i=0; i<1000; i++ )
{
str.Append("Line:"+i+":ABCDEFG0123456789\n");
}
textBox1.Text = str.ToString();

ま、ちらつかないし、(それほど)遅くもない。

(って、最初から書いてたのに無視されてたんだけど)
496447:02/04/04 02:05
つーか、意図がまったく見えん。ログを拾うくらいならあの程度で十分だと思うが。
100行単位のログが瞬間的に発生して、しかも画面表示するシチュなんてそうざらにはないぞ。

これでも納得できなきゃListBox使え。一回ごとに再描画すれば似たようなもんだが、
for( int i=0; i<1000; i++ ) {
this.listBox1.Items.Add("Line:"+i+":ABCDEFG0123456789");
}
this.listBox1.SelectedIndex = this.listBox1.Items.Count-1;
だけなら劇速。
SPY++
498デフォルトの名無しさん:02/04/04 03:35
これは c# の質問というよりは Win32 の質問かもしれませんが、
WebClient() や WebRequest() などでHTMLデータを引っ張ってくる場合に、
ネットがつながっていなかったりしたときは、IEのキャッシュからとってくる、
という風にはできませんか?
>498
>これは c# の質問というよりは Win32 の質問かもしれませんが、
と言ってるのに WebClient() WebRequest とか言ってる時点で糞

将来的には Windows.Explorer が入るんじゃないかなぁー
と夢想。
500げーつ:02/04/04 10:15
IE ハ うぃんどうずノ イチブ デース。
とりはずしては、イケマセーン
501デフォルトの名無しさん:02/04/04 11:29
>>493
あんたいつまでドキュソ発言連発する気?Windows Formsの処理が遅いんじゃなくて
Windowsならなんでも同じなんだYO!
>>496さんの言うとおり、こんなコード何に使う気なんだよ。っていうかもしかして
あんたDel厨が放った新たな刺客?いや、ちがうか。Delでも同じだもんな、こんなコード....。
Windows Formsのせいにしてる時点で、春厨だね、君。他の環境使ったことない証拠。
502デフォルトの名無しさん:02/04/04 11:44
>「画面がちらつく!」
>なんかいい方法ないですか?へこへこ。

 こういう場合、Delphiだと、
 Visibleを操作する前に画面をビットマップに保存してビットマップを上に重ねておいてから
 処理するという方法が使えます。
 ただ、再描画の時にチラツカセナイ為に色々とあるので C#でどうやればいいかはまだ判らない
>>502
ダブルバッファって概念は知ってる?
504502:02/04/04 14:19
>>503 知ってるし 使ってるよ
 C#は今仕事の合間に触ってみてる状態だからさ
それをどうコードにすれば判らないと書いてるじゃないか

Delphiの場合コントロールのDoubleBufferをTrueにしたら勝手にダブルバッファ式になるけど
それは、グラフィックコントロールの場合で Windowsコントロールの場合は少しテクニックが
必要なんだよ
>>493
Console に出力したくて App の Output みたいに使いたいって言うけど
すごーーーく行間を読めば .NET 的には
System.Trace.WriteLine();

VS.NET 持ってるなら役に立つんじゃない。
SDKだと不明。

これ以上書くときは、意図をはっきりしてくれ。
506デフォルトの名無しさん:02/04/04 17:30
System.Environment.MachineName

System.Windows.Forms.SystemInformation.ComputerName
の違いってなんだろう?
前者はNetBIOS名、後者はコンピュータ名という説明だけど・・・。
507FERC.NET:02/04/04 17:48
すみません、どこに>>していいのやらわかりませんが、たぶん読めば何に対する
内容かわかると思います。

TextBoxの描画が遅いという話ですが、次のようなTextBoxExを作れば、それだけで描画時間が
1/3くらいになりました。これが求められているものかどうかわかりませんが、
ダブルバッファリングの例にもなりますし、一応書いてみます。たったこれだけです。

public class TextBoxEx : TextBox {
 public TextBoxEx() {
  this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint,true);
 }
}
役に立つかどうかわかりませんが、ご参考までに。

以上です、チーフ。
508デフォルトの名無しさん:02/04/04 19:05
ファーイーストリサーチ社恐るべし。
ArrayList.BinarySearch メソッドについて質問です。
ArrayListの中にはstring文字列が格納されています。
BinarySearchで格納した文字列を検索したいのですが
[1]のようなコードではうまくいきませんでした。
よろしくお願いします。
[1]
ArrayList.BinarySearch( SearchString , new CaseInsensitiveComparer(new System.Globalization.CultureInfo("ja") ));
>>509
ja-JPはどう?
>>510 有難うございます。試してみましたが、
成功するものもありますが、失敗するものもあります。困りました。
>>511 もっと調べてみると、同じ文字列でも失敗したり成功したりします。
なんなんだろ・・・・
513447:02/04/04 21:44
binary-searchって二分木探索するんじゃないのか?
>>513
そう思う。だから>509の前にArrayList.Sort()すればいいんじゃないかな?>509さん
>>513-514 二分探索はソートされてるのが前提でしたね・・
忘れてました。ソートしないと駄目なのでしょうね。
格納された順番が重要なのでArrayList使ってたのですが、
Hashtableと組み合わせるか、線形探索することにします。
お騒がせしまた。有難うございました。
C#で作った関数をVB6から使いたいのですが、できますか?COMオブジェクトにすれば
いいらしいのですが、できればDeclare Functionで使いたいのですが。
>>516
それは無理
518デフォルトの名無しさん:02/04/06 02:55
そーいや こんなもんが揚がっていたよ そういえば誰か探していたよね
.NET Data Provider for Oracle Beta 1
http://www.microsoft.com/downloads/release.asp?ReleaseID=37805
519デフォルトの名無しさん:02/04/06 02:59
C#でソフトを作るときはどんなモデルで作ればいいのでしょうか?

MFCの時はドキュメントビューアーキテクチャなるものがあったので、
それにそってコードを書けばよかったのですが、C#ではどんな感じで
コードを書くといいのでしょうか?MVC?

サンプルになるコードとかあります?
>>519
ms-help://MS.VSCC/MS.MSDNVS.1041/cssample/html/vcsamScribbleSampleCSharpMDIDrawingApplication.htm
>>517
出来るって。

>>516
Google あたりで C# "COM interoperability" とかで調べれ。
>>517はDeclare Functionのことを言ってるのでは?
523519:02/04/06 03:36
>>520
ScribbleのC#版があったとは知りませんでした。

サンプルみたところ、やっぱりドキュメントビューアーキテクチャ
なんですね。GetDocumentじゃないところがC#な感じなのでしょうか。

524519:02/04/06 03:39
ところで、どういったモデルでC#を組むかみたいた
説明ってヘルプに載ってるのでしょうか?
MFCの時はさんざんドキュメントビューアーキテクチャ
が解説されていましたが、C#ではそういったモデルの
解説が無いような気がするのですが、見落としてます?
>>524
MFCの頃と違って今はデザインパターンとかも概念として普及してるし、
もう説明不要なんじゃないかな。
ComboBoxって、マウスで普通に文字列を選択できませんね。
IEみたいな用途で使いたかったのですが、使いにくいですね。
なんとかなるものでしょうか?
>>517,521
COM相互運用は知っているのですが、Declare Functionで
関数呼び出しのほうが説明しやすいので。。。やっぱりできないんですね。
ありがとうございます。
528FERC.NET:02/04/06 10:17
>>527
FERC.NETエージェント1号が調べた結果、以下のことがわかった。

C#単独では無理だが、C#でメソッドを実装した後にILレベルで操作することで
実現できる。まず、通常通りにC#でメソッドを実装する。
class DLL { static int Add(int x, int y) { return (x + y) * z; } }

これをDLLにコンパイルする。
% csc.exe /t:library dll.cs

ILを取り出す。
% ildasm.exe dll.dll /out=dll.il

続きは追って報告する!
529FERC.NET:02/04/06 10:22
>>527
取り出したILの先頭のほうで、次の行を探す。
.corflags 0x00000001
これを次のように書き換える。
.corflags 0x00000002
さらに、この直下に次の2行を追加する。
.vtfixup [1] int32 fromunmanaged at D1
.data D1 = int32(0)

続けて、同じILの中でメソッドAddの中の次の行を探す。
// Code size nn (0xnn)
この直前に次の2行を追加する。
.vtentry 1 : 1
.export [1] as ExportedAdd

これで終了。保存して、ILAsmを行う。
% ilasm /dll dll.il /resource=dll.res

あとはVB6から次のように呼び出せる。
Private Declare Function Add Lib "dll.dll" Alias "ExportedAdd" (ByVal x As Long, ByVal y As Long) As Long
Private Sub Command1_Click()
Label1.Caption = Add(1, 2)
End Sub

COMにはtlbimpとtlbexpがあるのに、P/Invokeは片方向だけなのを不思議に
思ったことはないだろうか。このとおり、CLRには逆方向も存在するのだ!

以上です、チーフ。
530これからC#:02/04/06 10:25
グレープシティ(文化オリエント)のVB用コンポーネントを
C#で動作確認されたかたはいますか?
インプットマン、アクティブレポートとスプレッドあたりを希望します。
スプレッドは、DBに直接つながらなくていいや。
531デフォルトの名無しさん:02/04/06 10:39
SDKだけの環境で、DLLやEXEにアイコンなどのリソースを組み込む方法はどこをみたら載っているのでしょうか?
自力でresxファイルを作って、resgen.exeでresourceファイルにして、csc.exeに指定するというところまでは分かったのですが、肝心のresxファイルを手軽に作る方法がいまいち分からないのです。
>>531
resxファイルを手軽に作る方法resxファイルを手軽に作る方法resxファイルを手軽に作る方法
>>531
前スレ101に載ってるよ
534531:02/04/06 11:52
前スレ101はresxじゃなかった。ごめん。
でも同じような方法でResXResourceWriter使えばいいのか。
535デフォルトの名無しさん:02/04/06 13:40
C#関係のいいメーリングリストってどっかあるでしょうか?
536これからC#:02/04/06 15:08
自分で調べた報告
今売っているVBマガジン5月号の235Pに
VBを前提とするOO4OをVB.NETでの使用例を発見。
VB.NETでいけるなら構文が違うだけのC#もOKのはず

ほかにもC#での動作事例の情報を求む!!
共有したら便利だよ。

537これからC#:02/04/06 15:12
>>535
http://www.users.gr.jp/ml/
にC#のMLあるけどあまり情報はありません。
538デフォルトの名無しさん:02/04/06 15:14
日本ではここが一番レベルが高いという罠
539デフォルトの名無しさん:02/04/06 15:19
クールバーが。クールバーが。。。無い。。。。。。
>>539
ボタンの境界が分かりづらいので廃止されました。
541これからC#:02/04/06 15:30
当面は、旧技術ひきずってでも使わないと駄目ですね。
このスレッドの高度な話は分からないけど分かる範囲で
学んでゆきたい。
>>538
禿同。
C#系のコミュニティをみても、ここよりレベル高いとこは無い。
543これからC#:02/04/06 15:48
雑誌広告やネット上を見る限り現時点でC#対応のコンポーネントって見つからないね。
fjも廃れたし、世の中変わったなあ。
>>543 Delphi1の時は発表さてすぐに習作がパソコン通信とか覗いたらあったのにね

まさか C# のコンポーネントは実はDelphiのように簡単には作れない?
546これからC#:02/04/06 18:25
ActiveXコントロールなどのCOMは.NETじゃないから作れないみたいです。
しかし、.NETでコントロールは作れます。
やっと、フォームの派生が作れるようになったのはうれしい。
>>542
@ITは?
ttp://www.mamezou.com
>豆ナイト 第4回申し込み開始・・・お題は「JavaハッカーのためのC#入門」

東京在住の人、頼む。出席してレポートキボンヌ。

549デフォルトの名無しさん:02/04/06 21:39
>>548
言語仕様の表面だけかじって終わりの予感。
550デフォルトの名無しさん:02/04/06 21:40
Javaハッカーなんて自称する奴なんているのか
はっきり言って有害だな
551542じゃないけどさ:02/04/06 22:41
>>547
@ITは約1名気骨のある投稿者がいる
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=936&forum=7
あとは、MSがやっている専用ニュースグループがある。
US盤とは違ってMS社員が直接回答してくれないけどね
news://msnews.microsoft.com/microsoft.public.jp.dotnet.vsnet
552デフォルトの名無しさん:02/04/06 23:01
>>507でFERCさんが紹介してくれたクラスを試すと、文字が大きく表示
されてしまうんですけど使い方がおかしいのでしょうか?
C# プログラマーズ リファレンス
COM 相互運用性に関するチュートリアル
ms-help://MS.VSCC/MS.MSDNVS.1041/csref/html/vcoricominteroptutorial.htm
554デフォルトの名無しさん:02/04/06 23:37
Windowsフォームを使ってWM_PAINTのイベントハンドラをデリゲートに登録する
場合って InitializeComponent() の中で、多分次のようにすると思うのですが、

this.Paint += new PaintEventHandler (PaintHandler);

InitializeComponent() には「コード エディタで修正しないでください」とコメ
ントがついています。多分、直接編集せずに、VisualStudioを使って登録しろって
ことだと思うのですが、VisualStudioでデリゲートにハンドラを登録するにはどう
すればよいのでしょうか?
>>554 漏れは普通にいじってるが、、
でもそうゆうことしたいなら、コンストラクタでやってもいい。
556sage:02/04/06 23:56
WinXPのビジュアルスタイルに対応するにはどうしたらいいのでしょうか?
>>555
InitializeComponent() を直接いじってしまうということですか?
コンストラクタでもいいのですが、なんか、VisualStudioが生成した
ボタンのハンドラとかが InitializeComponent() に書かれているので
なんか方法があるかと思ったのですよ。
558FERC.NET:02/04/07 00:39
>>552
その後の追加調査の結果、この場合ダブルバッファリングは関係ないことがわかった。
SetStyleのパラメータのうち、本当に速度に影響しているのはこの設定だけだ。
public TextBoxEx() {
 this.SetStyle(ControlStyles.UserPaint, true);
}
つまり、TextBoxBaseのデフォルトのWM_PAINTの処理をしないことで、処理速度が
向上していたのだ!たとえば、OnPaintをオーバーライドしてそこでフォントを
設定してDrawStringすることもできるだろうが、それだと結局デフォルトのTextBoxと
同じ程度の速度しか出なくなるので、意味がないだろう。

以上です、チーフ。中途半端な回答でスマソ。
559デフォルトの名無しさん:02/04/07 00:45
>>556
マニフェストを書いて、リソースに突っ込む。コントロールのStyleプロパティを、
Systemにしておくのを忘れずに。
>>557 F4でプロパティウィンドウだして雷のアイコンクリックで
目的のイベントをダブルクリックするかメソッド名をいれる。
漏れが直接InitializeComponent() をいじる時は他のクラスに
イベントを渡したい時とかだけだけど。
でもInitializeComponent() ってどんどん項目増えて見通しが
悪いので、コンストラクタに手書きでやることが多いけどね。
そうゆう質問じゃなかったかな。スマソ。
TreeViewについての質問です。
あるフォームのインスタンス上のTreeViewのNodesを
新しく開くフォーム上のTreeViewに表示したいとおもっています。
そこで

Form1 form = new Form1();
TreeNode[] arrays = new TreeNode[this.treeView1.Nodes.Count];
this.treeView1.Nodes.CopyTo(arrays , 0);
form.treeView1.Nodes.AddRange( arrays );
form.Show();

とやってみたのですが
「複数の場所にアイテム 'hoge' を追加または挿入することはできません。
最初に現在の場所から削除するか、複製を作成しなければなりません。」
と例外が表示されてしまいます。

コピーされたTreeNodeの内容を調べてみるとTreeViewプロパティに現在の
TreeViewのインスタンスを設定されているようです。これが原因でしょうか、、
どうしたらいいでしょう、、TreeViewプロパティはgetだけだし、、
>>561
複製はTreeNode.Clone()で。
>>562 一つずつCloneしないといけないの?
既に試してたんだけどコピーしたTreeNodeコレクションをクローンしても
駄目でした。やっぱり一個ずつクローンか、、
>>563
最上位のノードだけでいいよ。子ノードは再帰で複製されるから。
>>564 ありがとうございます。うまく行きました。
Form1 form = new Form1();
TreeNode temp = (TreeNode)this.treeView1.Nodes[0].Clone();
form.treeView1.Nodes.Add( temp );
form.Show();
566デフォルトの名無しさん:02/04/07 21:27
>>558 説明ありがとん
567デフォルトの名無しさん:02/04/07 22:11
.NET FRAMEWORKでレジストリに相当するものは何でしょうか?
アプリの設定覚えさせるのにレジストリを今までみたいに使っていいものか悩んでます。
>>567
(exe名).configというXMLファイル
569567:02/04/07 23:22
>>568ありがとうございます。
System.Configurationの中のどれかのクラスを使うんですよね。
しかし、その先がさっぱりわからない。うーん。
ConfigurationSettings
571デフォルトの名無しさん:02/04/07 23:41
今からはじめるなら、 Java と C# どちらが面白いですか?
それから C# の開発環境は無料ですか。
>>571
煽り認定
>>571 放置認定
574デフォルトの名無しさん:02/04/08 00:14
>>571
C#, 無料
>571
認知してくれ
もしかして、.Configの作成はSystem.Xmlでやるの?
手で。
578デフォルトの名無しさん:02/04/08 12:44
C#初心者。けどうんこCOMと違い開発しやすそうなのでとってもお気に入り。
ただテンプレート使いだった自分にとってはgenericをどうするのかが疑問なのですが...
一般的意見をきぼん
>>578
ないものはないのでobjectに代入&復元
っつうかCOMがわかっていない時点でTemplateなんか使いこなせないに決まってる。
Templateってじきにつかえるようになるんだったね。C#でも。
>579
Templateはコンテナだけではない
583578:02/04/08 20:53
>>580
きめつけるなあほたれ。
>>581
そんな情報はどこで?
>>582
です...
ヴァカには決め付けが一番。一番が一番。

もっと決め付けてやろう。Googleで「C# generics」で検索することすら
思いつかないやつにはgenericsなんか使いこなせない。
>>584
煽りか親切かわからん。。。
586578:02/04/08 23:28
>>584
いわれてみればやってなかった...
かたじけない。
なんかC#って遅くない?
>>587
君の使っているDelphiのほうが速いと思う。
Del房ウザイ。
昔々の話だがCコンパイラなんて
遅くてでかくて使い物にならんとか
言ってた時代があったよ。
591567:02/04/08 23:55
NameValueCollection nvc;
nvc = System.Configuration.ConfigurationSettings.AppSettings;
nvc.Add("aaa","bbb");
というコードでは読み取り専用ですというエラーになるんだけど、
動的に書き換えることはできないのですかね?
>>591
書き換えはSystem.Xmlで。
593デフォルトの名無しさん:02/04/09 12:45
Windowsにsscliを入れたんですけど、VS.NETが入ってるせいで
プログラムが.NETのCLRで動いてしまいます。
Shared Source版のCLRで動かすにはどうすればいいでしょうか。
594デフォルトの名無しさん:02/04/09 12:48
>>593
パスをきりなおせばいいじゃん。
>>593
clixを使わないと動かないよ。ドキュメント読みなよ。
596593:02/04/09 13:23
>>595
clix.exeで動きました。ありがとうございます。
これからドキュメントじっくり読みます・・・。
597デフォルトの名無しさん:02/04/09 18:30
ところでRotorはどのモードでコンパイルしてる?
やっぱりfastchecked?
598名無しさん♯:02/04/09 19:09
>>597
漏れはfreeでやってるよん。
sscli\samples\corclass のソースを見てみると、いまだに「COM+ Runtime」という言い方してるね。
けっこう昔からあるソースなのかな?
600デフォルトの名無しさん:02/04/09 21:54
>>597-598
Rotorって何? 無知な私に助言をお願いします。
>>600
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/Dndotnet/html/mssharsourcecli.asp?frame=true
みんなかっこつけてRotorとか呼んでるだけ。Rotorって呼ばれてたころを知らないくせに。(プ
ちなみにRotor情報はとりあえずここ。
ttp://www.oreillynet.com/dotnet/
あと、MSのnewsとDMのML。
>>601
じゃあなんて呼ぶのが一般的なの?
SSCLI?
604デフォルトの名無しさん:02/04/09 23:29
private ArrayList hogeList = new ArrayList();
hogeList.Add(new Hoge(0));
hogeList.Add(new Hoge(1));
hogeList.Add(new Hoge(2));

ってした場合に

hogeList[0].page();

っていうような感じでメソッドの呼び出しができないのですが、
なんででしょうか?

Hoge n = (Hoge)hogeList[0];
n.page();

っていう具合にするとメソッドを呼べるのですが、、、
あほですか?
606604:02/04/09 23:36
>>605
すいません。
よく分からないので教えてください。
キャストしなさい
>>605
調子に乗りすぎ
609604:02/04/10 00:34
>>607
キャストするっていうことは >>604 に書いた
とおり、

Hoge n = (Hoge)hogeList[0];
n.page();

っていう処理をすることですよね。
なんていうか、一々変数に代入しないとメソッドを呼べない
のでしょうか。。。

(Hoge)hogeList[0].page();

っていう感じでも試してみたのですが、ダメみたいです。
>>609
((hoge)hogeList[0]).page();

(hoge)hogeList[0].page(); だと,hogeList[0].page() の結果を hoge にキャストすることになる。
だから一部の人が騒いでいるみたいに
C#にもgenericが欲スイーと...

タイプセーフなIListやICollection実装する
暮らす書きなさいっつー事ですにゃ。
hogeをよく使うんなら

sealed class HogeList : ArrayList {
new public Hoge this[int i] {
get {
return (Hoge)base[i];
}
}
}

っていうの作っとけ。
C#って何で引数の省略なくなっちゃったの?
C++で10個ある引数全部省略可能なメソッド使ってるけど、
これC#にもってったら同名のメソッドが10個も出来ちゃうよ(´Д`;
個人的には最後だけじゃなくて途中の引数も省略できるようにしてもらえたらうれしかったのに、まさかぜんぜん省略できなくなるなんて(´Д`;
614604:02/04/10 01:07
>>610-612
よく分かりました。
サンキュです。
>>613
VB.NET使ったって。
C#は、故意か否かにかかわらず、バグの原因となる要因を排除している。
その顕著な例が new & override であり、機械語的にはまったく意味のないものである。

そういう観点で考えると、引数の省略は関数の仕様変更に対し非常に脆弱である。
またほとんどの場合、省略は null で代用可能であることも忘れてはならない。
故に、そのような見つけにくいバグを一個生むより、10個のラップ関数を書かせるのだろう。
C++のは途中の引数省略できないから中途半端なんだよなあ
618613:02/04/10 01:41
>>616
ところがそのメソッドがコンストラクタだったりするんだけど(ラップ出来ない);´Д`)
初期化専用のメソッド別に作らなきゃだめ?
>617
そうそう、しかもその途中の引数のデフォルト値が
ネームスペース::長めのクラス名::enum値
とかだったりして、次のintの5を書くためだけにこれを書かなきゃいけなかったり。
620デフォルトの名無しさん:02/04/10 01:50
質問なのですが、C#ってJITコンパイラですよね?

JITの場合って実行時にコンパイルされるから、
起動が遅いだけで、その後の実行自体は普通のexe
と変わらないような気がするのですが、何で、普通の
exeより明らかに遅いのでしょうか?
あと、javaについても同じ疑問を持っているのですが、
どうなんでしょ?
621デフォルトの名無しさん:02/04/10 03:22
>>613
> C#って何で引数の省略なくなっちゃったの?

prams 修飾子で代用できないの?

>620
コンピューターサイエンスの歴史を紐解けば言語は常に更なるリソースを
必要とするようにしか進化しません。
引数の省略とparamsパラメータは両立出来ねーからじゃねーの。
>>620
やぱ、メモリを管理してる分遅くなるんじゃない?
>>620 VM。
つか、VB6の方が遅いって思わない?
>>620
君の使ってるDelphiのほうがずっと速いと思うよ。
627600:02/04/10 09:33
>>601-602
MSのShared Source CLI Implementationのことでしたか。
情報ありがとうございました。
6281:02/04/10 12:20
約半年間絵ばかり描いていたら、VB忘れてしまった。
もうとっくにご存知でしょうが、
Windows Updateで.NET Framework 再頒布パッケージが
落とせるようになったみたいですね。
うちはSDK入れてあるので表示されませんでしたが。
これからソフト続々出てくるかな?
貧乏学生な漏れは19日のアカデミック版を待ってるYO...
お前ら!!レスが少ないです。C#はあんまり人気ないの?

つーか、実際いろいろ作ってみてどうよ?
正直な感想を教えてくれYo!!
632デフォルトの名無しさん:02/04/11 00:10
>>618

class A
{
public int x;

public A() : this(0){}

public A(int x)
{
this.x=x;
}
}
>>631
レス少ないって言うけど、C++相談スレ程度にはレス付くようになってきたし。

漏れ、テクニカルプレビューのころから使ってみてるけど、いい言語だと思うよ。
こんなにいい言語なのに作ったのがMicrosoftだってだけで迫害受けてるのが居た堪れない。
まあ、作ったのがSUNだったがために発展の機会を失った言語よりはましだけど。
>>631
正直な感想。
Beta2以降新しい発見が少なくなって飽きてきた。
>>634
俺もそろそろ飽きてきたに1票。
>>634
だねー。MC++に漬かってみようかしら。
>>632
うおっ、thisで呼べるのか・・・
MC++はそもそもやる気にもなら無い。
かといって、MFC・ATL7は興味のかけらもないし。
難しい時期だなー。
VS.NET買ってCOM開発に励むのはある意味勇者だよな
>>639
そうそう、一時期喪失感にとらわれたけど、
今は久しぶりにC++を生でじっくり味わってるよ。
VB.NETやる!って人は見かけないな・・・
CLIのソース見てて思ったけど、C++ってもう基盤構築の裏方的な使われ方しかないのかな。
VC++NET=裏方職人さんの道具箱
>>643
例外処理とかRTTIとか、C++の高度な機能も空しいね・・・
646 :02/04/11 01:01
C#なぞ裏でも表でも使われてないが?
>>646
おめでてーな
あの腐った参照じゃなんもできんだろ>C++
649 :02/04/11 01:20
1)まず、C#を滅ぼす
2)次にJAVAを滅ぼす
3)そしてC、C++の理想を実現させる。
ついでにC++も滅ぼす。
気が付くとそこはサルの惑星であった
C99の次の規格C2005(仮)はC++を反面教師として
C#/JavaをベースにしたOO支援機能が実装されます。
言語オタに占拠されてしまったかこのスレも・・・
CLIでC/C++のソースって見てる?
漏れは.csしか見てないけど。
TextBoxの文字の中段揃えとか下端揃え
とかってどうやったらいいんですかね?

やっぱりAPI使わんと無理?
655デフォルトの名無しさん:02/04/11 05:53
>>654

C#てよくしらんけど、
TextBox自体にそういう機能ないんでないか?
なんぞリッチエディットとか使うんでないのん?
656655:02/04/11 05:54
あ、ごめんねアゲチャタ。まずかったかえ?
657デフォルトの名無しさん:02/04/11 06:00
CはCobalt Bomb(コバルト爆弾)の略です。
テストにでますよ。
658デフォルトの名無しさん:02/04/11 06:30
CASLはどこですか?

プロージット! ハンガリアン記法最後の年に――!(´ー`)_Y

ms-help://MS.VSCC/MS.MSDNVS.1041/vsent7/html/vxconcodingtechniques.htm
>オブジェクト指向言語の場合、クラス プロパティの名前にクラス名を含めると冗長になります。たとえば、Book.BookTitle などは避けます。代わりに、Book.Title とします。
>省略形の使用は最小限に抑えます。

その他諸々、いろいろとMSらしくないことが書いてありまんなあ(w
おい、Dr ADO.NET。
いちいちスレ立てんじゃねーよ!
>>660
はげどー!ウザイ!削除依頼スレはないのか!
>>660-661
コイツの本↓
ttp://www.amazon.co.jp/exec/obidos/ASIN/477411152X/
レビューの内容が怪しい。ジサクジエンのにおいがぷんぷん。なんだ、コイツ?
いつの間にかヲチスレと化してるな(w
664デフォルトの名無しさん:02/04/11 15:26
すんません。
今、独自のコントロールをControlからの派生で作ってんだけど・・・。
TextBoxみたく、Fontの大きさだけで高さを変化させて、
デザイン時は高さをいじれないようにしたいんだけど、
どうすればいい?

とりあえず、Height プロパティをオーバーライドして
setできなくしちゃうことを考えたけどこいつはVirtual
じゃないのでoverrideできないし。

SetStyleでControlStyles.FixedHeightしても無駄だった。

TextBoxもNumericUpDownもできるのだから、
なんか手はあると思うんだけど、あとどの辺を調べればいいっすかね?
誰かヒントおせ〜て。
C#でDirectXは使えるのか?
namapespace を日本語に変えたらいきなり下記のようなコンパイルエラー
初めてみたよ。今まで、日本語でも問題なかったし、同じネームスペース名
でも全然平気だったのに、、
---------------------------------------------------------------
内部コンパイラ エラー : ステージ 'BEGIN'
内部コンパイル エラー (0xc0000005 at address 531550F0) : 原因として 'BEGIN' が考えられます。

コンパイラで内部エラーが発生しました。この問題を回避するには、下記に挙げた場所に近いプログラムを簡略化するか変更するかを試みてください。一覧の上部の場所ほどインターネット エラーが起こった地点に近くなります。
-----------------------------------------------------------------
下記のって、、、ないんだけど(ワラ 日本語ネームスペースはテスト用に
「テスト」って一時的に使ってるだけで、いいんだけどさ、、なんなんだろう。
Del厨 vs ブビ坊白熱のバトルはこちら!↓
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=989&forum=7
粘着だな。(´ー`)y-~~
独自のデータプロバイダを作成してるんですが、
どこかに詳細な仕様か参考になるドキュマントはないですか?
>>642
>VB.NETやる!って人は見かけないな・・・
やってるよん。SDKで。(近所でVS.NET売ってるの見かけないから)

C#はやってないけど、C#系の情報の方が多いから、
そっちで情報集めてVB.NETに転用してる。
672デフォルトの名無しさん:02/04/12 01:06
>>642
おいらもやってるよん。確かに、情報が少ないのには困ってる
確かにVS.NETの箱って見かけないよね。実際に見かけた人いますか?
なぜかアカデミックの箱見かけた。中は空だったけど。
.NETのリファクタリングツールなんてあります?
676デフォルトの名無しさん:02/04/12 02:49
C#でスレッドプログラミングをやろうと思うのですが、
なんかいいサンプル or 解説は無いでしょうか?
>>676 あんまりいいサンプルとは言えないけど・・・
ttp://www.codeproject.com/csharp/index.asp#Threading
>>676
もし時間があるのなら、delegateを調べることをお勧めします。ハァ?といわずに
だまされたと思って。
葛西秋雄不買運動起こすか。
objectは本当にDel厨だったようだな。(w
こいつ相手を選ばないというか、かなりいい度胸してるよな。
この前スレで以前♯さんにけんか売ってたやつも実はobjectか?
682デフォルトの名無しさん:02/04/12 17:39
>>676
まずはTreadクラスの説明を読んでみたら?超簡単なサンプルもあるし。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemthreadingthreadclasstopic.asp
683デフォルトの名無しさん:02/04/12 19:20
GDI+ではbitmapやjpegなどのフォーマットをサポートしていますが、
新たなフォーマットを自作・追加したいのですが、どうすればいいでしょうか?

あと、とりあえず自分フォーマットの画を表示したいんですがメモリー上にbitmap形式の
データに変更してファイルに落とさずに表示することは可能でしょうか?
>>683
GDI+のドキュメントを読む限りでは、カスタムフォーマットには特に触れられてないねえ・・・。

http://msdn.microsoft.com/library/en-us/gdicpp/cpp_gdi+start_26ic.asp?frame=true
685デフォルトの名無しさん:02/04/12 20:37
>> 683 未確認だけど
Bitmap.LockBits().Scan0
あたりが使えないかなぁ・・。同サイズのBitmapオブジェクトを作成して、自分フォーマットの画像をbitmapデータに変換し、Scan0で得られるポインタにデータを流し込む。

1点ずつのBitmap.SetPixel()はいやだしねぇ・・・。
686デフォルトの名無しさん:02/04/12 23:16
●●.NETって死滅しちゃうの????●●
http://wininformant.com/Articles/Index.cfm?ArticleID=24818
>>686
「MS abandons .NET My Services」
このサイト信用できるん?
前からこの企画だけはやばいと思っていたし。
>>687
いろいろ報じられてるからね。TechEdで発表したみたいだし。生き残ってるのは
PassportとAlertだけ。
DotGNUのアンチ連中もこれで解散か?(禿藁
690名無しさん♯:02/04/12 23:47
691名無しさん♯:02/04/12 23:54
>>686
機能と運用モデルを見直すだけで、別にやめるわけじゃないよん。
本家/.じゃお祭り騒ぎになってたけど。(藁
692デフォルトの名無しさん:02/04/13 01:16
予算の都合でC#のみ購入しようと思っています。
Borland製品のPersonal版のように、商用不可とか、
VC++Standardのように要ランタイムなどの制限はあるんですか?
693デフォルトの名無しさん:02/04/13 01:31
>>659
>プロージット! ハンガリアン記法最後の年に――!(´ー`)_Y

静的フィールドの命名法のところにまだ残っている。
>・静的フィールド名には、ハンガリー表記法を使用したプリフィックスを付けます。

誤訳か!?と思ったけど、MS-USには、
>Use a Hungarian notation prefix on static field names.
とあるので、誤訳ではないらしい。
なんで、ここだけハンガリアン使え!なんだろうか?

VS.NET beta2の頃のネーミングガイドラインには、
>・Do not prefix static field names Hungarian type notation.
とあったのになぁ・・・・。
なんでだろう?
あといくつ寝たらVisual C#発売かな・・・
楽しみだな・・・

WindowsUpdateの.NET Framework追加 歓迎アゲ

ちなみにこんな感じ(みなさんには見えないでせう)
日本語版と二種類表示されるようです。
日本語版のがちょっとサイズでかいです。

########################################
Microsoft .NET Framework
21312 KB/ ダウンロード所要時間: 4 分
.NET Framework は、Windows の新しい機能です。
.NET Framework を使用して作成したアプリケーションは、
信頼性と安全性がより高くなります。
.NET Framework は、.NET Framework が
必要なソフトウェアを使用する場合にのみ、
インストールする必要があります。
#########################################
Microsoft .NET Framework 日本語版
22170 KB
<以下まったく同文>
#########################################
695694:02/04/13 02:10
サゲチャタアゲ
.NET Framework もWindowsUpdateで配布が開始されたことだし、
誰か、早くソフト公開しれ!!
そんなことより聞いてくれよ>>1-1000よ。
さっき googleapi.zip を落としたんですよ。googleapi.zip。
そしたらなんか「dotnet」ってディレクトリの中にいくつかファイルがあるんです。
で、よく見たらなんかなんか GoogleSearchService.cs とかいうファイルがあって
(後略)

2chブラウザと連動させられると面白そうなんだが・・・
ぱっと思いつくアイディアってーと、「カキコ中のURLのキャッシュを自動でとってくる」ぐらいだけど。

http://www.google.com/apis/index.html
http://www.watch.impress.co.jp/internet/www/article/2002/0412/googapi.htm
698デフォルトの名無しさん:02/04/13 06:06
Groove.netに美味しいところを持っていかれそうだな。
早くしないとまたWindowsアプリと同じことになりそうw。
Win32APIアプリよりも開発は猛スピードで進んでるだろうから
これはもう手遅れか?!
ミンナハヤオキダーネ
.netアプリもいいがsscliを弄る方が楽しいというワナ
701デフォルトの名無しさん:02/04/13 09:38
c#でPERLみたいな正規表現ってつかえるのか?
>>701
System.Text.RegularExpressions
704名無しさん♯:02/04/13 12:21
>>703
吉松さんってすごい活躍してるね。ヽ(´ー`)ノ
国内外問わず、いろんなコミュニティで見かけるね。
ドキュメントのリンク、新しいタブで開けないのがあるのを何とかしてほしぃ。
706デフォルトの名無しさん:02/04/13 19:10
で、誰かgoogleで遊んでみた?
>>706
自分の好きな言語で開発できるなんて.NETだけですね!

とか煽ってみる。
>>707
SOAPは言語を選びません。
perlでなら(w
つーかレスポンスをパージングしないといけないんですけど・・・
>>706
ソース見て、サンプル動かして、API見たがそこまで。
何もアイデアが浮かばなかった。
プログラム組むときのデザインパターンって
みんなどうしてる?
>>711
そんな意識してやるものじゃないでしょ。無意識のうちに適用してるよ。

とかっこつけてみるテスト
713デフォルトの名無しさん:02/04/14 12:23
>>712
>>711はGoFのことじゃなくて、一般的な意味でのパターンだと思われ。
でも、イディオム持つほど数をこなしてる人っているのかな・・・。
714711:02/04/14 12:29
まぁ、そうですね。一般的っていうか、普通のWindowフォーム
アプリケーションを作るときって、やっぱりドキュメントビュー
アーキテクチャーでやってるのでしょうか?

それとも、一個のビューの中にごちゃごちゃデータもいれちゃうとか、
(いわゆるダイアログタイプのやつ)いろいろパターンはあると思うの
ですが、どうよ?
>>714
データクラスを分けて、データクラスに照りゲート || イベントを持たせて
Observerもどきかな。
>>711
規模と再利用の可能性によるなあ。
やっつけ仕事なら、VBみたく全部一つのクラスに叩き込んでテストしておしまい。
2度目以降のリクエストがあって初めて考えるみたいな。

複数のドキュメント相当のクラスがあったりすると
ややこしいから改めて設計っぽいことをやる、ぐらいかと。
DBが絡めばいやでもDataSetを分けるしかないか。

\|/
/⌒ヽ、  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ゜Θ゜)<  >>717 そうでもないよ。
| ∵ つ \___________
| ∵ |
\__/

検索のみで速度重視なら、DataReaderを直接使ってしまうのもアリかと。
>>718
WinフォームでDataReaderはありえなーい。
720711:02/04/14 12:52
>>716
でも、実際の話、部品化はフレームワークで提供されている
クラスだけで、結構十分って感じしないですか?
特に.NET Frameworkで提供されているクラス群は、以前の
MFCなんかの時と違って、結構かゆい所に手が届くって感じのが
多いような気がします。

僕の場合サンデープログラマなので、よほど汎用的なもの、
例えば、文字コードの変換とか、HTTP通信系の自作クラス以外は
今まで、あんまり、再利用したいと思ったことはないです。

最も、業務でやっている人は部品化は必須なのかもしれないですが、、、
>>719
BindingのDataSourceに絡まないから、ということ?
722デフォルトの名無しさん:02/04/14 13:01
デリゲートとイベントを使った場合っていうのは、普通の関数呼び出し
じゃない、いわゆるWindowsのイベント処理と同じなのでしょうか?

昔でいうところのPostMessageとかSendMessageみたいなものの
違いとかはないのでしょうか?
>>722
普通の関数呼び出しだ。
724デフォルトの名無しさん:02/04/14 13:18
>>723
じゃ、PostMessageみたいに、とりあえずメッセージキューに入れておいて
後で実行してね、っていうような処理はどうかけばいいのさ。
>>724
Control.Invoke
>>714 設定変更なんかは、Observerでプロパティのsetにイベント発行させたり、
色々と面白いことできるね。シングルトンなんかもプロパティでできちゃうし。
727デフォルトの名無しさん:02/04/14 14:25
スレ違いかもしれませんが、
ここのPart2のログを見たいのですがなかなか
html化してくれません。
いつになったら見れますか?
>>727 テキスト形式のでよいなら、私がメールに添付して送ってもいいよ。
フリメでも晒してくれれば送るけど。
>>724-725
InvokeじゃブロックされちゃうからBeginInvokeのほうがいいんじゃない?
>>721
っていうか、WinFormでデータを扱うときに、ストリームが必要な場合って
まずない。がばちょとデータを取ってきて、思考時間中は接続解放すべき
だと思って。
731デフォルトの名無しさん:02/04/14 15:21
VS.NET上でコントロールをフォームに貼り付けると、
素のまま張られちゃうじゃないですか、んで、そうじゃ
なくてて、あるコントロールから派生したコントロールを
貼り付けたいのですが、どうすればいいのでしょうか?

自分でコード書いちゃえば早いのはわかるのですが、
VS.NETのオペレーションとしてはどうやるかが知りたいのです。

よろしくおながいします。
>>731 System.ComponentModel 名前空間
>>731
ツールボックスのカスタマイズで追加
734デフォルトの名無しさん:02/04/14 15:35
>>732
名前空間がどうこうという話ではなくて、VS.NETのオペレーションの
話なのですが、、、

ようは、フォームのデザイン画面で貼り付けたコントロールの派生クラス
をその場で作成して、いろいろいじくる方法は無いかという話です。
735デフォルトの名無しさん:02/04/14 15:40
>>731
その場合って、一回ライブラリというかコンポーネントというか、
なんかそんなやつを作らなきゃだめですよね。

そういうんじゃなくて、今回のプロジェクトに限り、ちょっとした
機能を追加したいのですよ。例えていうなら >>507 ぐらいの変更を
したコントロールの派生クラスを使いたいのですが、、、
>>735
コードを書くしかないね。でなかったらいったんビルドしてコンポーネントタブに
追加する以外にない。コードを書くったって、宣言とnewを変えるだけだしね。
737del厨:02/04/14 15:48
>>735
InitializeComponent()の中身を書き換えるとか。まあ不具合はのらりくらりと。
>>736
その通りなのですが、newの部分が↓みたいな感じなのですよ。

#region Windows Form Designer generated code
/// <summary>
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
/// </summary>
private void InitializeComponent()
{
this.treeView1 = new System.Windows.Forms.TreeView();
}

変更するなってことはVS.NETからなんらかの編集手段があるかと思った
分けです。。。
ここを手作業で編集しちゃうとなんか後々まずいのでしょうか?
>>738
問題ないよ。
つーか、これぐらいできないんじゃ、VS.NETはダメダメじゃん。
って感じなんですけど。。。。
>>739
プログラム的には問題無いと思うのですが、VS.NET的には
どうなんでしょうか?
後から、デザイン画面で新しいコントロールの貼り付け作業が
できなくなっちゃうとか、ソリューションエクスプローラや
クラスビューで情報が表示できないとか、、、そんなことは
無いのでしょうか?

確か、以前のVS6の時はVSが書いたところ編集しちゃうと、
いろいろ問題があったんですよねぇ、、、
>>741
問題あるよ。勝手に書き直されたりするし。
>>741
やってみればいいじゃん・・・。
デザイン画面で新しいコントロールの貼り付け作業もできるし、
ソリューションエクスプローラやクラスビューで情報が表示できる。
あと何が心配?ん?
>>742
やっぱりそんなこともあるんですか。。。

>>743
じゃ、なんでわざわざ「コード エディタで変更しないでください。」
なんて書いてあるのでしょうか。

うーん、どっちなんだろ。
745デフォルトの名無しさん:02/04/14 16:01
>>738
単純にコンストラクタ内でInitializeComponent呼び出しした直後に
やったらあかん理由があるってこと?

そこをいじるとデザイナなどでいじったときに更新がかかって、
せっかく書いたコードが消え失せたりするんじゃなかったっけ。
>>744 743に一票。
わしは困ったことない。全然。ただ自分がいじったコードが
どこに行ったかわからなくだけ(w
イベントハンドラとかの追加とか普通にいじるだろ普通。
ただ消しちゃいけないを消すなよ、ってことでしょ。
>>745
コンストラクタでやった場合、InitializeComponent内のnewが
無駄になるじゃないですが、かといって、InitializeComponent内
のnewの部分を消してしまうと、結局編集してしまったことになって
しまうし、、、デザイナ上からも一回消せば、InitializeComponent
的には問題無いのでしょうけど、それではVisual的な編集ができないです。

> せっかく書いたコードが消え失せたりするんじゃなかったっけ。
大問題じゃないですか、、、
748デフォルトの名無しさん:02/04/14 16:08
Windows.Forms.Splitter の挙動が分からないので教えてください。

ドキュメントに、左右で並べるときは
a.Dock = DockType.Left;
b.Dock = DockType.Left; // <-- Splitter
c.Dock = DockType.Fill;
this.Controls.AddRange(new Control[] { a, b, c,});
って書いてあったんだけど、左右に置く物によって挙動が変わってしまうんです。

たとえば
左 TreeView
右 ListView
正常

左 Button
右 Button
正常

左 Button
右 PropertyGrid
PropertyGrid が左に食い込む

左 Button
右 TextBox
TextBox が左に食い込む

こんな結果です。
TextBox・PropertyGrid が悪さをしてるようなんですが
なんでこうなるんですか?
>>746
イベントハンドラの時はプロパティの上にあるイナズママークを使って
イベントを追加すればInitializeComponent内にも自動で追加されると
思いますが、、、

こうした派生コントロールの追加の方法が無いっていうのもおかしな
話なので、ホントは何か方法があるのではないかと勘ぐっているのですが、、、

だって、こうした作業ってかなり頻繁に行いますよね?
>>748
this.Controls.AddRangeの中の、コントロールを追加する順番を変えてみてはどう?
751748:02/04/14 16:13
DockTypeではなく、DockStyleでした。スマソ
>>749
だーかーら、dll化してツールボックスに追加するんだってば。
一週間ほど前に入った新人を相手にしてるような感じだな。
笑える。
>>749 
>イベントハンドラの時はプロパティの上にあるイナズママークを使って
それで出来ない時いじるんだけどね。もちろん、、、
755デフォルトの名無しさん:02/04/14 16:17
>>753
うるせえ、はげ。
普通に考えてカスタムコントロールのように見た目が変わるものもあるわけで、
ソースの状態で動けってのは無茶だろうに。
そりゃVBはデバッグ中もソース編集すれば動くけどさ。
>>752
やはりそうなのでしょうか。

>>753
そんな変な質問でした?

>>754
じゃ、僕も、とりあえずはInitializeComponentの中を直接いじってみます。

758748:02/04/14 16:21
>750
うっ、うまくいきました。ありがとうございます。
けど何でなんですか?
仕組みが理解できない・・・・。


うえーん、Microsoftは、今までと違ってどういう順番で追加しても
ちゃんと処理するよって言ってたのに。
759750:02/04/14 16:28
>>758
よくわかんないけど、windes使ってたときからこういう挙動だった。
>>728
よろしくお願いいたしいます。
761728:02/04/14 17:01
>>760 先ほどメール発射しました。
>>761
助かりました。
ありがとうございます。
763デフォルトの名無しさん:02/04/14 17:41
>>748
Anchorプロパティでなんとかならんだろうか。
厳密に指定してやってなんとかなった。
(漏れはSDKを使用してる。VS.NET持ってない。)

VS.NETベータ2のときは、コントロールを選んで、最前面に移動とか、
最背面に移動とか、そういう指定でうまくいったりいかなかったりだった。
>>744
> じゃ、なんでわざわざ「コード エディタで変更しないでください。」
> なんて書いてあるのでしょうか。

InitializeComponentまわりとフォームデザイナの間はCodeDOM Treeの形で
保存されるんだけど、そのDOM Parserが限られた形式しか理解できないから。

DOM Treeで表現できない形式を書かれると、デザイナの表示エラーが起きたり、
コードの再生成時に自前のコードが消え去ったりと不具合が起きるから、
デフォルトは「ここは触らないでちょ」としてるんだと思われ。

逆にパースできる形式なら大きな問題はないんだけど、
じゃあ「どういう形式ならOKなの?」というのがあまりはっきりしない。

このへんの2-Wayぶり(?)はこれだけのコードで実験できるのでお試しあれ。

class Form1 : System.Windows.Forms.Form
{
  private void InitializeComponent()
  }
}

CodeDOM Parserに関しては、Microsoft.VisualStudio.dllで遊べたら
面白そうなんだけど、残念ながらほとんどのクラスがinternal...。
>>764
× private void InitializeComponent()
○ private void InitializeComponent() {
766デフォルトの名無しさん:02/04/14 22:33
ちょっとぐらい大丈夫だろう、ぐへへへへ・・・・と書き換えて元に戻せなくなったYO!
くそ、みんないいな
あといくつ寝たらC#発売なんだ
もう寝飽きたゾ。
768kuromo:02/04/15 01:02
ちょっと怠けすぎた。
今日から頑張ってプログラミングしよう!
まずはC#の新規プログラムを作ろう。
>>764-766
ここら辺のうまいやり方を見つけたやつは神!
770デフォルトの名無しさん:02/04/15 01:29
正式名称Application Desktop Toolbarの作り方を教えてください。
できれば、RADのデザイナーで作れると楽なのですが。
ReBarとか、ダイアログバーってどうやって作るのでしょうか?
何か、ツールバーコントロールしかないような気がするんですが。

気のせい?
つかぬことをお伺いしますが・・・C言語をマスター(今の俺じゃ、口にするのも
おこがましいですが)すれば職は見つかりますでしょうか?
773デフォルトの名無しさん:02/04/15 14:13
>>772
無理だね。プログラムだけなら猫でも出来る。プログラム+αが必要なのだよ。今の時代は。
んー、いくらでも見つかるんじゃない?
でも、あまり人間らしい扱いを期待しちゃ駄目だよ。
SDK DL中…ISDNだからつらいよ。
始めて1時間。現在20MB。
>>775
一括ダウソは途中で切れることがあるから分割の方がいいよ。
777775:02/04/15 18:45
>>776
FlashGetで落としてるから心配ないと思います。
さすがにIEで落とすのは無謀でしょう(w
>775
FlashGet使ってるなら、なおさら分割のほうが良くないか?
779728:02/04/15 22:16
>>772-779 他でやれ。オメーラ。オレモナ。
QueryInterface(REFIID iid,void** ppvObject)
のように、void*で結果を返しそれをキャストしたい場合、
どうすればいいんでしょうか?
781デフォルトの名無しさん:02/04/16 11:29
>>780
ref object じゃ駄目?
782お役立ちサイトです。:02/04/16 11:30
役立つサイトを満載したサイトです。
是非見にきてください。
http://home9.highway.ne.jp/cym10262/
>>660 >>679
すいません、マジでDr ADO.NETを絞めてやってください。
こいつウザすぎる。
>>783
しばらく見てなかったら、すごいことになってるな。(w
F5攻撃かけてやれ。
>>783
スレ立ても問題だが、質問・ツッコミ総シカトはもっと問題だ。
>>784
いや、それがニュースになって「ASP.NETは落ちる」って評判になると
俺の仕事が困るから勘弁してくれ(w
>>781
駄目でした。
引数の型が IntPtr になるようです。
>>787
Marshal.PtrToStructureかなぁ?
789デフォルトの名無しさん:02/04/16 20:31
SDKのコンパイラは最適化コンパイルできるの?
>>788
値型の場合はそれを使えばよさそうですが、
インターフェースの場合は駄目でした。
で結局、
Marshal.GetObjectForIUnknown()
でOKでした。
ありがとうございました。
すみません。
C#からズレてるかもしれませんが、ASPからASP.NETへの移行についてなんですが、
何かいいドキュメントとか説明してるサイトないでしょうか?
それともASPからASP.NETへ移行するというよりも、
既存のASP資産を生かすって方向の方がいいんでしょうか?
よろしくお願いします。
792デフォルトの名無しさん:02/04/17 03:00
前にこのスレで書いたときはなんかあっさり受け流されたが・・・

http://pc.2ch.net/test/read.cgi/tech/1006715468/137
実際どうよ?
漏れはかな〜り重大な問題だと思うんだが。
793748:02/04/17 03:23
>>759
>>763
亀レスすいません。
僕も、VS.NET 持ってないので SDKです。

3ペインなどいろいろ試してみた結果、
どうやら DockStyle.Fill から 追加していけば正常な画面になるようです。

GUIは、簡単になったから SDKでも十分だと思っていたんですけど
VS.NET なら考慮してくれるんでしょうかね?


SharpDevelop で動的に変化する時はどうやってるか
見たら全然分からなかった・・鬱死
794kuromo:02/04/17 04:52
>>792
そういう間違った設定をするのがいかんのでは、と書いてみよう。
>>794
できる時点で問題。
明示的なキャストも何も必要無く、他のところ(フォントスタイルとか)で当たり前にやっているのと同じようにできてしまう。

一方でintからbyteへの代入で暗黙に変換できないとか、outやrefなど助長な制限をつけてまでバグが起こらないような文法にしているくせに、これでは矛盾しているよ。
796kuromo:02/04/17 05:21
>>795
なこといってもなあ。
「バグは、できる時点で問題」って言ってるように聞こえるのだが。
enum値の捉え方の問題では?
>>795
> enum値の捉え方の問題では?

かもしれんが、じゃぁenumのメリットは?
現状じゃstatic const intとなんらのかわりもないのでは?
798デフォルトの名無しさん:02/04/17 05:44
>>797
SDKのEnumクラスのHelpを見てみれば?
いろんなメソッドが定義されてるよ。
結構便利に思えるが。
追加

> 「バグは、できる時点で問題」って言ってるように聞こえるのだが。

もしint*をchar*に暗黙に変換できたら、そりゃ言語がおかしいと思わない?

enum値の演算結果をまたenum値にキャスト無しで代入できるのは、そうすることが期待されるところでは便利だけど、そうでないところ(たとえば792のリンク先)では上のポインタの例と同じくらい危険なことだよ。
800デフォルトの名無しさん:02/04/17 06:00
いまからC++始めるのは時代遅れですか?
C#とC++の用途は違いますか?
俺もenumを暗黙で変換とかビット演算できない方がいいなぁ。
確かに気をつければいい話だけどさ、気に入らないといえば気に入らない。
>>800
時代遅れなんてことは無いと思うよ。
C#はVBと同じようなお手軽開発言語として、
出来て損は無いけど、それだけって感じ。
C++はプログラマのたしなみとしてやっとくべき。
803800:02/04/17 06:48
>>802
レスありがとうございます。
C++でがんばります。
804kuromo:02/04/17 07:46
>>797
基本的には、型チェックと、値の集合を明示的に規定できることだろうけど。

・・というか、調べてみたら・・・
列挙体に、[Flags](FlagsAttribute)の付いてるのと付いてないのがある。
付いているのには、
「この列挙体には、メンバ値をビットごとに演算するための FlagsAttribute 属性が含まれています」
などと書かれている。
その割に、[Flags]がついてないenumもビット演算はできる。??
そういう属性が最初から規定されてるのなら、区別があったほうが
よかったのではないかな。まあ、orするものじゃないとプログラマは区別できて、
いいことはいいんだけどね。

>>799
しかし、そのへん言い出したらキリないだろうよ。
D言語かな?Assertの進化したようなのつけても、やはりバグは防げない。
柔軟性とか、簡易さとか、レガシーとか、何か事情があるのよ、多分。
オレは知らないけど。
805麗恵香:02/04/17 07:52
魔法のiらんどでつくったHP不正に改ざんされてパスワード変えられた。誰か不正アクセスの仕方とか教えてください。お願いします。
806デフォルトの名無しさん:02/04/17 09:49
>>enum問題
それはまったよ。スレッド周りをいじるとき。
ステータスがorになってて
switch文で引っかかんねーしデバッガで見ても
値が入ってるしで。確かになんだかなぁ・・・っておもった。
>>792
M$に文句言ってみたら?
惨と比べたらまだユーザーの声に耳を傾けてくれそうだし。
808FERC.NET:02/04/17 10:44
>>804
エージェント1号の意見ですが..

enumは整数定数です。そのビット演算をしたコードのILを見てください。結果の数値しか書いてありません。
C#のenumはある意味、定数のシンタックスシュガーです。

FlagsAttributeは、Enumのメソッドの動作を変えるためのものです。Enumは整数定数ですから、
定数同士の演算には何の影響もありません。というのも、原始型の演算はIL命令(Addなど)が
吐き出されるので、属性が介入する余地がないからです。

enumのメリットは、引数や戻り値に指定できて、コンパイラが型チェックをできること。
たとえば、

enum Enu { a, b, c }
void Meth(Enu enu) { ... }
のとき、Meth(Enu.a); はできますが、Meth(System.Loader...); はできません。

ですが、この場合もこんなことはできてしまいます。
Meth((Enu)123);

Enumは整数定数です。ただ、Enumはその名前から意味がおおよそ推測できるので、
SingleDomainとMultiDomainを|することは実際あまり考えられないと思います。

ビット演算の出来るものをflags型、
そうでないものをenum型と分けるべきだ。
classとstructを分けたんだからこれくらいしる!

810FERC.NET:02/04/17 11:41
>>809
それも一理あるとは思うんですが、ただそうなると、今度は言語間の相互運用性が
問題になります。C#は新しい言語なので、どんなconstructを追加してもよさそうですが、
それを他の言語に公開できないとなると、利用価値が半減してしまいます。
他の言語に公開できないconstructですと、結局FCLで利用することもできませんし。
811デフォルトの名無しさん:02/04/17 13:13
ADO.NETの事で教えてください。
↓で、フィールドをプロパティのように扱えるように書いてあるのですが、
どうやればできるのでしょうか?

http://www.microsoft.com/japan/msdn/vstudio/techinfo/articles/upgrade/adoplus.asp
> 例えば、現在の一般的な、型付けの強くないプログラミング手法に従った、次の例をご覧ください。
>
> IF TotalCost > Table("Customer").Column("AvailableCredit")
>
> この例では、ADO のテーブルとコラムをプログラムしています。
> 型付けの強いプログラミングでは、同じ例がずっと簡単になります。
>
> IF TotalCost > Customer.AvailableCredit
>>811
フォームデザイナにテーブルをドラッグ&ドロップして、
[データセットの生成]を実行。
813麗恵香:02/04/17 14:55
HP不正改ざんされた!!
誰か不正アクセスの仕方とか、色々教えてください!!
犯罪には犯罪で。ニヤリ
宜しくお願いします。
メールください。
814811:02/04/17 16:18
>812 ありがとうございます。
なんか、DataSet1.xsdとかいうのが出てきました。
理解の範疇を超えたので、本買ってきます。
815デフォルトの名無しさん:02/04/17 22:06
激しく既出ですが、VisualC#.Net スタンダードで作成したアプリケーションは、
配布可能なのでしょうか?
今まではっきりとしたご意見がなかったので・・・・
有識者のご意見をお願いします。
816デフォルトの名無しさん:02/04/17 22:42
C#からVBと同じようにexcel や一太郎を制御ことはできますか?

COMはラッパを介して使用できると、どこかで読んだような気がするのですが・・・
>>816
Excelはできるよ。
一太郎は知らん。(COM経由で使えるの?)
818デフォルトの名無しさん:02/04/17 23:47
どこからダウソできるんだ・・・?

http://www.microsoft.com/presspass/press/2002/Apr02/04-17XMLWebPR.asp
>>810
僕は809とは別人ですが、Pascal, Modulaには「集合」があります。
set of 列挙型 と書きますが、列挙型のn番目の値が集合型ではn番目のビットとなります。
Adaも、「列挙型を添え字にしたBoolean配列」を集合のように使えます。

…というわけで相互運用性は問題ないかと。
むしろ存在してくれた方が集合の存在する言語が生かされるのでは無いでしょうか?

eventとdelegateだって、似て非なるこの両方を使い分けられる言語なんてそんなに存在しないのに
分けられてるじゃないですか。
820FERC.NET:02/04/18 11:25
>>819
>…というわけで相互運用性は問題ないかと。
>むしろ存在してくれた方が集合の存在する言語が生かされるのでは無いでしょうか?
各言語で独自にそのような型を利用することは可能です。ただし、それが「Common」か
どうかが問題です。ほぼすべての言語で一般的に利用できない以上は、CLSに
含めることはできません。PascalとModulaとAdaで利用できるから一般的だとはいえないと思います。
繰り返しますが、それらをPascal内部で使う分には問題ありません。

C#はMSがCLR向けに開発した言語ですから、C#でしか使えないconstructを
持ち込むつもりはなかったのでしょう。

>eventとdelegateだって、似て非なるこの両方を使い分けられる言語なんて
>そんなに存在しないのに分けられてるじゃないですか。

eventはメソッド+フィールドです。delegateは型です。両者はまったく異なります。
かつ、これらの概念はたいていどんな言語にもマップできます。
>>820
>かつ、これらの概念はたいていどんな言語にもマップできます。
例を挙げてほしいな。819さんのように。
PascalとModulaとAdaで利用できるから一般的とはいえないなら、どの言語と
どの言語で利用できれば一般的なのか知りたい。
822FERC.NET:02/04/18 12:15
>>821
>例を挙げてほしいな。819さんのように。
言語の例ということですか?それならすでにCLRをターゲットとする20を超える言語が
その例です、ということになるでしょう。

「一般」の定義は、実際にはMicrosoftが行った定義です。Microsoftは40数種類の言語を
考慮して、CTSとCLSのたたき台を定義したようです。これらMicrosoftが検証した言語に
共通に現れる、あるいは何らかの方法で表現できるconstructを抽出したのがCLSでしょう。

別にPascalとかModulaとかが特殊な言語で使ってはいけないとか言ってるわけでは
ありません。単にビット演算可能なフラグ型と単一の値を前提とする列挙型とを区別
できる言語はそんなに多くないのでは?と思うだけです。念のため。

返事になってますか?
>>822
Microsoftが定義すれば「一般」なのか、、、まあいいや。
結局はCLR設計者のポリシーの問題で、正当性をどうこう言う問題じゃない
気がするな。開発者がそれを認識していればいい話で、これ以上は水掛け論
になりそうだからやめとこう。(俺は)
824FERC.NET:02/04/18 12:33
>>823
わかりました。観点がずれていたようですね。820で私が言ったのは、.NET Framework上に
特化した話で、プログラミング言語一般の話をしていたわけではなかったんです。CLR上で
Enumがどう取り扱われるのかということだけを話していました。ですからこの場合、
Microsoftが定義したものが「一般」であることに何の疑問も感じません。

おっしゃる通り、CLRの設計者のポリシーの問題だと思います。CLRの設計者が、
CTSを定義するときに「関数型を基本にしよう」という決断をしていたら、
C#は関数型言語にかなり近いものになっていたでしょう。

水掛け論にはならないと思いますよ。答えはもう出ていますから。CLRはMicrosoftの
プラットフォームなので、Microsoftが考える一般がCLRの一般なんです。
もちろんそれに従うかどうかは自由です。
>繰り返しますが、それらをPascal内部で使う分には問題ありません。

Eiffel#は多重継承も総称も捨てられたじゃないですかぁ。
特に総称なんてEiffel内部で展開してしまえば問題無さそうなのに。
きっときっと、そういう建前があったとしても、事実上「C#は手本」となって、
C#に無い機能は捨てられるんだぁ…。

それにCLSに無いと、Pascalで定義した集合をModulaから使うことが難しくなるのでは…
内部で適当なstructにするにしても、言語間で構造を合せないといけないから、
PascalとModulaの開発元が同じか、どっちかがどっちかを考慮してくれるかしないと…

Pascalの集合をModulaで使えないとか、関数型言語同士で高階関数が非互換とか、
起きてからでは困る気が…

…と言っても相手が相手(Microsoft)なので、僕もこれ以上はやめときます。
さすがにリリース後だけあるね。1ヶ月で800オーバーだよ。。。
初代スレのときなんか半年かかってんのにさ。。。みんなC#に興味あるんだな。。
828デフォルトの名無しさん:02/04/18 18:49
ツールバーにボタンを配置したんだけど、どのボタン押しても同じ動作。
ボタンの一つ一つにイベントハンドラはないのかしら?

private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
{

if (openFileDialog1.ShowDialog()==DialogResult.OK)
{


};
}
ToolBarButtonClickEventArgsのプロパティを調べてみましょう。
830828:02/04/18 18:55
e.Button.Tag
を利用することになりました。どうもでした。
831デフォルトの名無しさん:02/04/18 18:56
.Net のC#って、DLLやActiveXモジュール作れます?
作れる物は、VC++と同じって考えて良いですか?
>>831
どちらも不可

C#は基本的に.NET Framework のサービス、アプリしか作れない
>>831
関数エクスポートの方法はこのスレでガイシュツ。
ActiveXモジュール(?)そのものはダメだが、そう見せかけることは可能。
>> 824
すべての言語で使えるわけではないenumは桶で集合は駄目ってのには何の根拠も無い気がする。
設計したやつがこれらの違いを認識できなかったか、または些細な問題だと判断したかだね。
製品出荷後だから何言っても無駄だろうけど。
>>834
エージェント1号さんじゃないけど。
>>808に書いてあるけど、enumは整数の定数に変換されるんだからすべての言語で使えるよ。
設計した人はそんなにバカじゃないさ。
>>835
そうそう、んでそういう言語では関係ない値を引数に渡すことも出来るわけじゃん。
同じように、他の言語ではただの定数だけど、C#ではビット演算も出来ない型があってしかるべきだよ。
>>836 自分で定義すれば?

>>826
>…と言っても相手が相手(Microsoft)なので、僕もこれ以上はやめときます。
君は掲示板で筋の通らない愚痴をこぼしてるだけでしょ。マイクロソフトが相手?ハァ?
そもそも多重継承も、総称も持つManaged C++があるのに、C#に無い機能がすてられるなぞという妄想はどこか
らでてくるんだ。
>>837
> 自分で定義すれば?

アフォですか?
すでに定義済みの.NETフレームワークはどうすんの?
>>838
どうしようもないに決まってるでしょ?
>C#ではビット演算も出来ない型があってしかるべきだよ。
.NETフレームワークはC#じゃないんだから、仮にC#にだけビット演算できない型があったって、問題解決しないじゃん。
良く考えてから書き込んでね。
840831:02/04/18 21:08
>>832
へぇーそうなんだ。
.Netって、VS6の後継という意識だったので・・・そうすると、VB.NetかVC.Net?
> .NETフレームワークはC#じゃないんだから、仮にC#にだけビット演算できない型があったって、問題解決しないじゃん。

してんじゃん。
少なくともC#上では演算を制限できる。
>>841 だからさぁ、それなら自分で定義したって同じでしょ?馬鹿なの?
それともあれか、君は過去にさかのぼってC#にだけビット演算できない型を作って、.
NETフレームワーク(っていってるけど付属のクラスライブラリのことか?)全部をC#
で書き直せといいたいのか?
843デフォルトの名無しさん:02/04/18 21:21
Staticの定義でおせてください。
たとえばPublic Static DataSetなんてものをユーティリティクラスで持っていて
インスタンス作らずに、それを使っちゃおうとすると、そのDataSetはガベージコレクションにはかからずに
いつまでもメモリを占有し続けるって解釈で間違ってないでしょうか?
>>842
> NETフレームワーク(っていってるけど付属のクラスライブラリのことか?)全部をC#で書き直せといいたいのか?

当然書き直しは必要だろうがC#で書き直す必要は無いだろ?
>>844
え、なんで?C#でそのビット演算の無い型とやらを使うために書き直すんじゃないの?
そうじゃないと書き直す意味が無いと思うんだが。

>>843 StaticはCのstaticとは全然意味違うから、ちゃんと勉強した方がいいよ。
インスタンスを作る作らないにかかわらず、ガベージコレクションにはかからないけどね。
846関係なし:02/04/18 21:45
なんやら荒れとるね。
若者は熱くてよいね。
明日単体発売上げ。
買う人手あげれ。
ガベージコレクションについて質問したいんですけど.

ツリー形式のオブジェクトで、親が子への参照を保持して、
子が親への参照を保持しているとします。
そしてアプリケーションが親への参照を保持しているばあい、
アプリケーションが親への参照をnullにしても、
親と子双方が双方への参照を保持しているので、
ゴミとはみなされず、ずっと開放されないって事はありますか?
ガベージコレクタは、ルートから辿れないオブジェクトを開放するという
動作になっているので、その場合でも大丈夫なはずです。
>845
ども、ありがとうございます。
やっぱり本買ってきた方がよさそうですね。逝ってきまする。
850デフォルトの名無しさん:02/04/18 23:09
.NETage
851デフォルトの名無しさん:02/04/18 23:11
>>190,>>191に出てくるフォルダ選択ダイアログについて教えてください。
表示はできるんですけど、選択されたフォルダ名を知るにはどうすればいいんでしょうか?
>>851
DirectoryPathプロパティ。
853デフォルトの名無しさん:02/04/18 23:20
>>852
ベータ2のころのドキュメントには載ってたけど、正式版には
載ってないねぇ。どうしても知りたい場合はIL DASMで覗く
しかないようだ。
>>848
ありがとう!!。

では、不用意にアプリケーションから途中の子を参照していて、
nullにし忘れると、オブジェクトツリーが開放されない場合も
あるのですね。

激しく参考になりました!
855デフォルトの名無しさん:02/04/18 23:31
関連づけで起動したときにアプリに渡されるファイル名をどうやって知りますか?
856851:02/04/18 23:47
>>852
ありがとうございます。できました。
857855:02/04/18 23:52
追記
static void Main(string[] args)
のargsをForm1から知りたい場合です。
>>854
その場合でも、スコープから抜けて、どこからも参照されない状態
になれば、ガベージコレクトの対象になります。
>>857
System.Environment.GetCommandLineArgs()
860デフォルトの名無しさん:02/04/19 00:28
すいません。ReBarというのは無くなってしまったのでしょうか?
>>843 845 849
正確には、AppDomainがアンロードされるまでGCにはかからない、ですな。
永遠にロードされっぱなしってことだとたとえばASP.NETどうすんのって
話になっちゃうから、一応。
862818:02/04/19 11:48
>>825
サンクス。登録要か。めんどくせー。
863デフォルトの名無しさん:02/04/19 16:06
STLでいうmapみたいなものはないですか?
>>863
Hashtable
>>864
ありがとー。
866728:02/04/19 16:38
ファイル名の変更をしたいのですが、
System.IOを探してみましたがみつかりません。
VB.NETのRename 関数というのは見つかったのですが、、
よろしくおねがいます。
>>866
File.Moveでどう?
>>866 あ、System.IO.File.Move でいけるかもしませんね。
試してみます。失礼しました。
>>867 ありがと〜
870デフォルトの名無しさん:02/04/19 16:59
配列と配列を結合するにはどうしたらよいのでしょう?
871870:02/04/19 17:06
書き忘れましたがもちろん、同じ型(もしくは互換型)です。
たとえば、
int[] a = new int[5];
int[] b = new int[7];
で、このaにbを加えた配列(int[] c)がほしいんです。
aとbのLengthをみて、cを確保し、コピーするしかない?
新しいサイズの配列を作成してArray.Copy。
873870:02/04/19 17:11
>>872
おー、サンキューです。Array.Copyってstaticメソッドなんですねー。
>>871
やり方はいろいろあると思うけど、とりあえずこんな感じ。

  int[] a = { 1, 2, 3 };
  int[] b = { 4, 5 };

  int[] c = new int[a.Length + b.Length];

  a.CopyTo(c, 0);
  b.CopyTo(c, a.Length);
動的にクラスのインスタンスを作成しようとして
System.Reflection.Assemblyを使用しています。

しかし、以下のSDKのマニュアルどおりかいてもなぜかエラーです。
ms-help://MS.NETFrameworkSDK.JA/cpref/html/frlrfsystemreflectionassemblyclassloadtopic3.htm

Assembly asm = Assembly.Load("System.Data");

これを実行すると

ハンドルされていない例外 : System.IO.FileNotFoundException: ファイルまたはアセン
ブリ名 System.Data、またはその依存関係の 1 つが見つかりませんでした。
ファイル名 : "System.Data"
at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, B
oolean isStringized, Evidence assemblySecurity, Boolean throwOnFileNotFound, Ass
embly locationHint, StackCrawlMark& stackMark)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Boolean
stringized, Evidence assemblySecurity, StackCrawlMark& stackMark)
at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence as
semblySecurity, StackCrawlMark& stackMark)
at System.Reflection.Assembly.Load(String assemblyString)
at ConsoleApplication1.Class1.Main()

長くてすいません。よろしくお願いします。
876870:02/04/19 17:32
>>874
おっ、こっちのほうがすっきりしますね。
ありがとうございますー。
>>875
お好きな方でどうぞ。

  Assembly.Load("System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
  Assembly.LoadFrom(@"C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.Data.dll");
878875:02/04/19 18:23
>>877
素早いです。
ありがとうございます。

どっから情報仕入れてるんですか?英語ですか?(鬱)
マニュアルが違ってると辛い・・。本でも買ってきます。
>>877
その2行の結果は微妙に異なるので気をつけてね。

>>875
構成ファイルを使う方法もあります。MSのニュースグループに出てました。
ttp://communities.microsoft.com/newsgroups/previewFrame.asp?ICP=JPN_com_support&sLCID=jp&sgroupURL=microsoft.public.jp.dotnet.vsnet&sMessageID=%253CeMpUFrU4BHA.2160@tkmsftngp02%253E
880デフォルトの名無しさん:02/04/19 18:46
Terrarium プログラミング コンテスト

http://www.microsoft.com/japan/msdn/net/terrarium/
881877:02/04/19 18:53
>>879
GACから読むかどうかということ以外に何か違いってありますか?
>>880
Xboxより.NETロゴ入りグッズの方が欲しいという罠。
>>882 米かカナダ在住じゃないとだめ?
>>881
>GACから読むかどうかということ
それが実は非常に大きい。
たとえば、Assembly.LoadでロードしてCreateInstanceしたSystem.Data.DataSetはSystem.Data.DataSetにキャストできるが、
LoadFromでロードしたやつはキャストできません。

それから、LoadFromではバージョニングもできません。
885877:02/04/19 20:06
>>884
おおー。ありがとうございます。
886今C ◆9u3P7D06 :02/04/19 22:03
あのーインストールって合計でどのくらい時間かかりますか?
残り時間2時間50分とか表示されてるんだけど・・・・
>>886
そりゃあ、マシンによりますがな。
おいらの場合はデフォルトオプションで2時間弱だったかな。
VSのインストールとかの話題は↓のスレでやるといいかも。
http://pc.2ch.net/test/read.cgi/tech/1017674939/l50
889 :02/04/19 23:13
OO4O使った人まだいませんか?
早く使い方教えて!!
>>889
ボラクルなんて個人で持ってないよなあ・・・
>>883

1. 参加資格:
このコンテストには、日本国に在住しているすべての人が参加できます。
http://www.microsoft.com/japan/msdn/net/terrarium/contest/
C++でないとポインタ使えないんですよね、でも単体だと最適化してくれないみたいだし
C#でもポインタの変わりになるようなものありますか?
チェーン構造とかやりたいんです。
>892 unsafe
即レスありがとうございます!!
c#.NETを買うことにしました!
これからはC#の時代ですね。
おお、terrariumがついにニポーンでも開催かっ。
もう動物作った?
897デフォルトの名無しさん:02/04/20 01:40
>>895
というか、君の考えていることは unsafe でなくても出来ると思うが…。
898892:02/04/20 01:56
ずばりファイル管理ソフトを作りたいのですが、ソートの方法は
リスト使うやり方しかしらなくて、それで・・・

時代に取り残されてますか?
>>898
生ポインタ使わんでもただのオブジェクト参照でできるがな、ということでしょ?
やっぱり、画像をいじる場合などはunsafe使わないと厳しい?
>>900
それはきびしい。
902デフォルトの名無しさん:02/04/20 02:42
ソケット&スレッドについて勉強しているのですが、
非同期ソケットの例に出てくる
ManualResetEvent
っていうのがよくわかりません。
何よこれ?
903デフォルトの名無しさん:02/04/20 05:30
>>902
その名の通り、手動リセットイベントの事。
AutoResetEventは、イベント状態を検出後自動的にリセットされるが、
ManualResetEventは自分で明示的にリセットしない限り勝手にはリセットされない。
イベントって何よ? ってのはWin32 APIのCreateEvent()とか同期オブジェクトに
ついて調べる事。Advanced Windows読むのでもいいけど。
904903:02/04/20 05:38
つーかManualResetEventクラスの「解説」にそのまんま書いてあるやん。
まずはそれ嫁 >902
905デフォルトの名無しさん:02/04/20 11:05
ヘルプを読んでみました。

ManualResetEvent.Reset メソッド
指定したイベントの状態を非シグナル状態に設定します。
ManualResetEvent.Set メソッド
指定したイベントの状態をシグナル状態に設定します。

という風に書いてあります。

多分、WaitHandle.WaitOne メソッド を使ってスレッドを待機状態に
しておいて、イベントの処理をフックし、指定されたイベントが
発生した場合に、スレッドを再開させる。みたいな捉え方をしているの
ですが、、、

よく分からないのが、指定されたイベントという説明のところで、
ここでいう指定されたイベントとは何か?といのが分かりません。
何か、イベントの指定をしておいて、それを待ち受けるというイメージ
なのでしょうか?それとも、何でもかんでもイベントが発生したら、
シグナルが出るのでしょうか?

ヘルプを呼んだ限りでは、イベントを指定して待機するというようなこと
はできないようですが、、、
イベントってClickイベントとかのことだと思ってない?
>>903 さんの言うとおり、Win32のヘルプも見たほうがいいよ。
勘違いしていたようです。
スンマソ
>>906
どっちかというとDOSのシグナルみたいな概念の方ね。
(´-`).。oO( 最近♯さん見かけないね・・・ )
>>548
どなたか参加されてませんか?>東京の方
豆さんのセミナーに派遣しようかどうしようか迷ってます。。。
911デフォルトの名無しさん:02/04/20 15:20
>>910
交通費+参加費の分で本を買って読ませた方がいいと思う。
>>890
OTN入ってりゃ、個人でもロハで試供品が手に排卵買ったっけ?
(´-`).。oO( ♯さんjavaスレの方でみかけたような・・・ )
本気で質問があるのですが、上級者のみなさんどうかよろしくお願いします。
今日、単品のC#を衝動買いしてきたのですが、これには機能制限があって
クラスライブラリとWindows/Webコントロールが作成できたないとのことですが
これができないとどういうソフトが作れなくなるのでしょうか?また、困難になるのでしょうか?
これから、おいおいわかっていくことだとは思いますが、参考までによろしくお願いします
>>914
プロジェクトのテンプレートがないだけで、作れないというわけじゃないよ。
作るんだったらSDKのみでもできるし。
>>914
僕は上級者ではありませんがね、
クラスライブラリとWindows/Webコントロールのいずれも
独自で再利用可能な部品というかを作りたい場合のものだと思いますよ。
なので、特定のソフト開発そのものが不可能になるのではなくて
より楽チンするための手段がひとつとれないって感じではないでしょうか
APIのSHGetFileInfoを使用して、拡張子からアイコンを得ようとしています。
そこで、[1]のようにし、SHFILEINFOを[2]のようにしました。
実行すると([3])、「Additional information: 型 SHFILEINFO はアンマネージ構造体として集成できません。有効なサイズ、またはオフセットの計算ができません。」
と例外がでて、実行することができません。
どうすればいいのでしょう。長くて申し訳ありません。
よろしくお願いします。
[1]
[System.Runtime.InteropServices.DllImport("shell32.dll")]
public static extern ulong SHGetFileInfo( string pszPath,long dwFileAttributes,ref SHFILEINFO sHFILEINFO,long cbFileInfo,long uFlags);
[2]
public struct SHFILEINFO{
public System.IntPtr hIcon;//アイコンハンドル
public long indexIcon;//アイコンインデックス
public long dwAttribute;//属性
[MarshalAs(UnmanagedType.LPArray, SizeConst=260)]
public char[] szDisplayName;//表示名
[MarshalAs(UnmanagedType.LPArray,SizeConst=80)]
public char[] szTypeName;//種類
}
[3]
ulong result = SHGetFileInfo( "*.txt",0,ref sHFileInfo,(long)Marshal.SizeOf(sHFileInfo),SHGFI_USEFILEATTRIBUTES | SHGFI_ICON | SHGFI_LARGEICON);
>>915-916
レスありがとうございます。とてもわかりやすくて参考になりました。
アプリ作成の過程が多くなるだけで、出来ないものはないってことですよね?
なんかちょっと安心しました。ソフトに振り回されないようにこれからがんばります。
>>919
サンプルまで頂きありがとうございます。感謝感激。
しかしDllImportする時の型やら構造体やら作るの難しいですね。
廚な私にはさっぱり・・ どう型を対応させていいのやら、、、
921デフォルトの名無しさん:02/04/21 02:31
C++のDLLで
HBITMAP foo(int p,int x,int y,BYTE b,long size,BYTE* data)
と宣言されているものをC#で宣言するときは
[Dll〜]
extern 〜 IntPtr foo(int p,int x,int y,byte b,long size,byte[] data)
これでいいのですか?
この関数を呼び出すとNullReferenceExceptionが帰ってきます。
関数の中身が悪いのか、宣言がまちがっているのか、わかりません。
>>921
引数の意味が分からないことには何とも・・・
>>919
XP環境だと.txtとか.htmlのアイコンが変なんだけど何でだろう。。。
>>921
最後の引数は ref byte[] だと思われ。
925917:02/04/21 02:49
>>923 私も同じ環境ですが、ちょっと変ですね。
私の用途ではこれでも十分なのですが。
とにかく、919さんは感謝。
>>923
txtは分からないが、html関連のアイコンがおかしくなる、
アイコン変更しても反映されないことがあるのでXPが悪いかと。
>>923
アイコンを保存するとき、フレームワークが16色に減色してるのだと思われ。
試しに ToBitmap() して保存したらフルカラーになってた。
Terraium の情報が ここと VisualStudioの板に分散しそうなんで
新しい板立てようとしたらけられてしまった・・・。

誰か立ててちょ!
以下、立てようとしたとき書いた文章


Terraiumは Microsoft.Net 対応プログラムで草食・肉食の動物を
作り繁殖させ戦う P2Pの要素もある「マルチプレイヤー・ネットワーク・ゲーム」です。

日本語公式サイト
http://www.microsoft.com/japan/msdn/net/terrarium/
英語公式サイト
http://www.gotdotnet.com/terrarium/
日本語の解説ページ
http://www.atmarkit.co.jp/fdotnet/wwebserv/wwebserv010/wwebserv010-001.html

2ch 関連スレ
VisualStudio.Net SP4/*.NETなんて、好きだー!!*/
http://pc.2ch.net/test/read.cgi/tech/1017674939/l50
C♯相談室 Part4
http://pc.2ch.net/test/read.cgi/tech/1016597767/l50


コンテストが 5/1〜6/28の期間で行われますが商品がXBOXかYO!
とか思わずに情報交換しましょう。
930デフォルトの名無しさん:02/04/21 14:23
>>929
新しい板って・・・。(w
Terraiumスレは一応あるよ。タイトルが煽りっぽいけど。

http://pc.2ch.net/test/read.cgi/tech/1013093589/l50
931929:02/04/21 18:24
>>930
全然わからなぇータイトルだ。ありがと

ジャンル-板-スレ-レスですね。すまんこ
932デフォルトの名無しさん:02/04/21 18:59
>>932
というか>>919>>928もそうじゃないの?
934デフォルトの名無しさん:02/04/22 22:39
Form1にBitmap型のメンバを追加したいんだけどどこに書けば良いんだろう?
935デフォルトの名無しさん:02/04/22 22:42
会社では使わないので Visual Studio 触れない。
かといって自腹で買うには高すぎるので、VC# Standard を買おうかと思うけど、どうよ。
もしかしてライブラリのヘルプとかないの?情報キヴォンヌ
>>935
クラスライブラリのヘルプあるよ。
っていうかクラスライブラリのヘルプなら.NET Framework SDKに付いてくるよ。
>>935 MSに詳しい情報あるよ。あとVS.NETスレもあるので、そちらもよいかと。
ライブラリヘルプなんぞはついてるよ。
>>934 分からないなら、C#勉強するかクラスビューアで右クリックで
フィールド追加してみれ。あせらず勉強しる。がんばれ。
938デフォルトの名無しさん:02/04/22 23:51
public class Form1 : System.Windows.Forms.Form
{
public Form1()
{ {
Cursor = new Cursor(@"C:\Sample.cur");
}
}

カーソルが黒抜けしてしまいます。
色をつけるにはどうしたらいいでしょうか?
色つきカーソル使うんではだめかい。黒い縁取りとかでさ。
などと言ってみるテスト。
940デフォルトの名無しさん:02/04/23 01:01
>>939
Sample.curは色つきカーソルなのですが、
枠だけが黒色で表示されてしまうんです。
>>940 OSの設定で影表示してるから、とか落ちはないよね?もちろん。
942939:02/04/23 02:24
>>941
Win2000とXPが開発環境ってわけで、それはありえますねー。
わしもテストしてみやう。
943749:02/04/23 03:33
ほんとやまっくろけになるわー。
なんでやろかー

↓こんな感じ。(もちろん黒で塗りつぶしたカーソルではない)
■■■□□□□
■■□□□□□
■□■□□□□
□□□■□□□
□□□□■□□
□□□□□■□
□□□□□□■
>>943
ちゃんと16x16で作ってる?
VS.NETでカーソル作ろうとすると、デフォルトは32x32で表示されるので要注意。
whileとかforループの処理ってFormのドラッグ中は
止まってしまうものなの?なにか対策はないもの?
946デフォルトの名無しさん:02/04/23 10:34
string.Trim()
って、MSDNによると、
> このインスタンス内に出現する空白文字をすべて削除します。
って書いてあるのに、別の場所をみると、
文字列の先頭と末尾から空白を削除します。
と書いてある。うーん、指定した文字を削除するにはどうしたら
いいのだろう・・・
947デフォルトの名無しさん:02/04/23 10:39
>>941
その落ちはないです。
>>944
16x16でないとだめなの?
表示しようとしてたのは、32x32 256colorです。
16x16で試してみます。
948お役立ちサイトです。:02/04/23 10:48
役立つサイトを満載したサイトです。
是非見にきてください。
http://home9.highway.ne.jp/cym10262/
949947:02/04/23 11:29
自己レスです。
32x32 16Colorで表示できました。
256Colorだったので駄目だったようです。
950デフォルトの名無しさん:02/04/23 12:34
>>945
ループを別スレッドで動かしてみたら大丈夫だったよ。
>>946
String.Replace()でどう?
952946:02/04/23 12:45
>>946
string a = "tes t".Replace(' ', '');

をコンパイルすると、

error CS1011: 空の文字リテラルです。

と怒られます。MFCのころはこれでOKだったんだけどなぁ・・・。
>>952
Replace(" ", "") でOKだと思われ。ちょっとムダがあるけど。
954名無しさん♯:02/04/23 12:54
新スレ立てますた。

C♯相談室 Part5
http://pc.2ch.net/test/read.cgi/tech/1019533942/
955946:02/04/23 13:29
>>953
そうか!stringにするのですね!ありがとうございました。
>>954
通報しますた
957935:02/04/24 21:56
>>936,>>937
わざわざありがd。
そうか、ヘルプはあるのか・・・GWの暇つぶし用に買ってみますか・・・
>>954のリンク踏んだらC Buliderのスレに飛んだような…。
きっと気のせいだよな。
959デフォルトの名無しさん:02/04/26 03:23
気のせいでしょ
                l`ヽ`ヽ、-─-、 _,. -─-, -‐_=‐┐
                  |:::::::ヽ-‐`‐-、  , -─-'、/:::::::: l
               !./           `ヽ::::: /、
              ,/  / /  ,ヘ   ヘ ヽ.ヽ.ヽ`〈 i
.                // l l | ! ! /^'^ヽ l| l l ! ! .l |
               l l ! | _Ll-l‐|    |-l‐L/!_l | | |
.              ヽ!l'└ 'T / Tヽ    / Tヽ. l T T  |
                    l |l ト' |:;;`‐!    |::;;`‐!´l l l   |
                   l. |.l ヽ `ー' 、   `ー‐' ! l l| | |
                l l l  !、"  ヽフ   "  l. ! l| | |    / ̄ ̄ ̄ ̄ ̄
                  l | l  ! `i 、 _ _. イ´ | .l  l! | |  < うめていいの?
               l  ! l  l l/,-「    「`l l  | | |   \_____
       ,-,─--、  l  l | !  l/ ,='=、_ -‐ '´ ノ .ノ__ノl | |
        〈〈 け^‐ ` 、l  l 「 T ,l.人¶_ノ ヽ_./  ̄ _`ヽ!. | |
.       `‐^-'´ヽ  ヽ_l  l l/  /o/       、/   〉 | |
           〉  Vヽ.,‐'l   |o.|      l /   ヽ、l l
            〈‐`一' /ヽ lヽ、 ̄  , '´ ̄ ``ヽニ ヽ-、! |
              `┬‐'´ ./ l    〈 l_l_l_けヽ  〉 〉 ヽ |    ミヽ、
                 `iヽ、 -‐'|l     `‐^' l ー`‐' /  l l     ミ  ミ
                 l l   | `ー        ``ー、'´  / l    ミ   ミ
                   l l  !         __ ノ   l T  ̄l l   ,,ミ    ミ
971
あう間違えた962
( ´_ゝ`)フ
 
  
   
    
      
                    
     
  
ヽ(`Д´)ノ
973デフォルトの名無しさん:02/05/04 11:10
うめて

埋められるとdat落ちして見れなくなるよ
975manko chinko:02/05/04 11:49
>>743
ほんとやまっくろけになるわー。
なんでやろかー

↓こんな感じ。(もちろん黒で塗りつぶしたカーソルではない)
■■■□□□□
■■□□□□□
■□■□□□□
□□□■□□□
□□□□■□□
□□□□□■□
□□□□□□■

↑これいやらしいぞ!!
sage
 
   
    
       
          
                 
                    
984
985
986
987
988
989
990
991
きゅうひゃくきゅうじゅうに
       oノハヽo   _ ドスッ
       (`.∀´) ─┴┴─┐
       /   つ.  9 9 3 .│
      /_____|└─┬┬─┘
        ∪ ∪.    ││ _ε3
       oノハヽo   _ ドスッ
       (`.∀´)┌─┴┴─┐
       /   つ.  9 9 4 │
      /_____|└─┬┬─┘
        ∪ ∪.    ││ _ε3
995
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| もうすぐ1000ですね。

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ・∀・) ∧ ∧ <  まったりしすぎだぞごるぁ。
 (     ) ( ゚Д゚)   \_________________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__     
 ̄ ̄ ̄日∇ ̄\| BIBLO|\  
        ̄   ======= .\

二重カキコといわれてしまう条件ってなんですか?
999
999
999
999
999
999
999
999
999
1000デフォルトの名無しさん:02/05/17 04:23

/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 1000いっちゃいましたね。

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ・∀・) ∧ ∧ <  はじめての1000げっとだごるぁ。
 (     ) ( ゚Д゚)   \_________________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__     
 ̄ ̄ ̄日∇ ̄\| BIBLO|\  
        ̄   ======= .\
                     ヒトリデヤッテルトナンカムナシイ・・・。ゴメンナサイモウシマセン。イッテキマス。

10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。