C♯相談室 Part4

このエントリーをはてなブックマークに追加
748デフォルトの名無しさん
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を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。