C♯相談室 Part5

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

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


過去スレ・関連リンクは>>2-10あたり
2名無しさん♯:02/04/23 12:52
関連スレ

VisualStudio.Net SP4/*.NETなんて、好きだー!!*/
http://pc.2ch.net/test/read.cgi/tech/1017674939/

お前ら頃し合いしてください
http://pc.2ch.net/test/read.cgi/tech/1013093589/
>>1 スレ立てお疲れ様です。しぃ#タン ハァハァ。
6デフォルトの名無しさん:02/04/23 16:51
C#StandardとSDKの違いって何?
C#品切れだったので入荷するまで
とりあえずSDKを使ってみようと思ったけど、
これからプログラミングを始める者なのでよくわからない。
プロジェクトフォルダに作成される
<VSMacros>ってなんだい?
消してもまたはえてくるけど。
8デフォルトの名無しさん:02/04/23 17:21
>>6

○C#Standard 統合開発環境
エディタ・テンプレートなどなど。当然便利な機能あり
この環境からは言語自体はC#しか使えない(下に説明するSDKも入っている)
びぢゅあーるな環境でウィンドウズあっぷりけーしょんなどを開発できる。
クラスライブラリ・自前コンポーネント作成用の環境はない(単体C#の機能制限)。
入門者向けテキスト等も同梱。金かかる。

○SDK 統合じゃない開発環境
C#に限らずなんでもできるがコマンドラインから操作せねばならん
ものが多いなどめんどい。
実はびぢゅあーるな感じでの
ウィンドウズあっぷりけーしょん開発ツールも入ってる。
クラスライブラリ・自前コンポーネントはきっと作れる(謎
金かからん。

金あるひとは上、ない人(品切れで買えない人)は下かと。
>>7
文字通りマクロの保存場所。
VS.NETはOfficeみたいにマクロを使えるよ。しかもコードはVB.NET。
10デフォルトの名無しさん:02/04/23 17:27
>>9
マクロか、そっかそのまんまだね。研究してみる。サンキュー。
>8
実はC#とC++のスタンダード版を買ってしまった高校教師です。
アカデミック版を買えるのですが、例のアクティべーションとかいうものの
正体がわからないので躊躇して買わなかったのです。買うべきでしょうか
クラスライブラリが作れないとは痛かったです。でも、すでに膨大なクラス
が用意されているので必要はないかなとも思うのですが。。。

アクティべーション自身を詳しく(裏事情も含めて)教えてください。
私はしょっちゅう環境を全部消してはまた再インストールするのです。MSから
つけねらわれるのでしょうか?
>>11
こっちで聞いた方がいいんじゃない?
http://pc.2ch.net/test/read.cgi/tech/1017674939/l50
13名無しの高校教師でごわす:02/04/23 22:18
>12
いや、ここで聞きたいのです。
つか、別にスタンダード版買ったのならそれでいいじゃん。
再インストールにしてもパーツ変えたにしても、電話するだけでオッケー
せっかく学生なんだから特権使ってVS.NET買えばいいのに、
おれだったらそうするね。

おれは、貧乏なC#Stdユーザーだけどな。
16名無しの高校教師でごわす:02/04/23 22:21
C++を使ってみた結果、やりたいことはほとんどC#で実現可能だと
いうことが分かりました。お金がない人はVC++を買う必要はまったく
ありません。
17名無しの高校教師でごわす:02/04/23 22:24
>15
アドバイスありがとうございます。
私は貧乏な「40歳」の高校教師です。学生ではありません。
統合開発環境はなんだかごちゃごちゃしていてまだ勝手がわかりません。
とりあえず、csc.exeで一通りC#の言語体系を眺めてみている最中です。
188を一生懸命書いたやつ:02/04/23 22:34
買ったんならそれ使えばええじゃんかー。
これからプログラミング始めるって書いてあるっしょ、
ならライブラリなんぞ作るのは当分さきじゃんかよ〜ぐわー
次のバージョンのときVS買ってもいいだろ〜あ〜?
>>18
同意。
初期のソースなんて汚くてあとで使いまわしするのに耐えないことが多いんだし。
高校教師うざ、、、VS.NETスレ逝け。
明日VB.NETカンファレンス行く人。。。いる?
22学習がはかどらない男:02/04/24 01:54
ねぇねぇ、あんたら今なにつくってんの?
もしくは
どんな感じで勉強してる?
ねぇ。

>>21
C#のカンファレンスはないのん?
23デフォルトの名無しさん:02/04/24 02:06
>>22
アリを眺めてる
マジで教師ならそんなやつの授業うけたかねー!!
失せろ!バカ教師!
25学習がはかどらない男:02/04/24 02:47
あ、なんか生態系つくって闘わせるやつかえ?
レベル高いのぅ。。。
んーなんか違うような気がしてきた・・・
アリは肉食動物なの?
雑談は他でやってくれる?独り言も他でね。
新手の荒しだな。放置しよ。俺もな。スマソ。
へいへいスンマセンでした。
29デフォルトの名無しさん:02/04/24 06:43
オハヨーゴザイマス

しっつもーん。

//////////////////////////////
switch(なんとかかんとか)
{
case 1:
int hogehoge;
....
break;
case 2:
hogehoge = 765;
....
////////////////////////////////

この場合のhogehogeはcase 1:で定義されてるけど、
case 2:などなど、switchスコープ内なら使いまわせるんだよね?
(C++とかでもできたっけ?)
>>29
気持ち悪い感じだけど、できるね。
C++だと出来ないよね。
31デフォルトの名無しさん:02/04/24 07:19
>>30

即お返事サンキュー
WinTalkって、SDKだかのサンプルにでてきたのん。
今読んでるとこ。
気持ち悪いか、そういわれればそうですねぇ。

C#って愉快。
>>11
もーおそいだろうけど。学生・教員ならアカデミックパック買うよりもアカデミックオープンライセンスで買うほうがよい。
アクティベーションなくなるし、若干安いし。

その代わり初回に5ライセンス分(別のソフトとあわせてでもいいが)買わなきゃいけないのが難点だが、
一緒に買う仲間を募ればどうにかなるし。
33デフォルトの名無しさん:02/04/24 09:22
属性として指定するFlagsAttributeって実際どんな効能があるんでしょう?
たとえば、enumの値がOR出来るように割り当ててくれるわけでもないようだし・・。
ファイルから一行ずつ読み込むにはどうしたらいいのでしょうか。
Readとかで読んで、改行をサーチしないとダメですか?
>>34
ReadLine
3634:02/04/24 11:51
>>35
できました。ありがとうございます。
37デフォルトの名無しさん:02/04/24 20:35
C#の本に、「単一文字からなる文字列は文字リテラルと異なる。例えば、'k'と"K"は違う」とあるんですが、
これはどういう意味なんでしょうか。
例で示してもらえると助かります。
>>37
型の取り扱いが違うということでは。

Console.WriteLine( 'k'.GetType() );
Console.WriteLine( "k".GetType() );
39名無しの高校教師でごわす:02/04/24 21:05
>32
ありがとうございました。店頭には見あたらなかったので
店員と相談します。
初心者、他力本願の方にやさしいスレですね。
以後、利用させていただきます。
>>40
自分で調べた方が早く、結局は楽に、身に付きますよ
>40 ワラタ
>>37
>>38さんも答えてるけど、
'k'は文字で、"k"はたまたま一文字な文字列。

ちなみに独習C#ですな?私も昨日読み始めた。
4440:02/04/25 09:36
プログラミングはコミュニケーションも必要とせず
閉鎖的な環境の中で一人黙々とやっていくものなのですね。
以後、引きこもります。
45pと:02/04/25 13:59
私16歳の女子高生。田舎の高校に通っています。(恋人募集中!)
質問ですが、C#の「#」って、本当は「C」の右肩に上付きでつけるもの
だと聞きました。本当ですか?

>>45
あなたに興味があります。
#についてあなたと一緒に語り明かしたいです。
こんにちは、45を監禁しているものです。
あれほど大人しくしてろと言ったのですが、勝手に漏れのパソコン使いやがって、
しかも、こんな糞レスさせてしまって申し訳ございません。
これから外出するときは、縄で縛って天井に吊るしておきます。
またほのぼのとしたやりとりを……。
49pと:02/04/25 15:20
ちょっと、まじめなレスを期待しているのです。

今、先生の目を盗んで授業中に書き込んでいます。今、英文Eメールの
作文練習時間です。田舎(福島)だけど、オーストラリアに姉妹校?があるのです。
パソコン教室に20台のパソコンがありますが、全然台数が足りません。
部活はもち!物理電算部です。白々しいけど将来の夢はIBMかマイクロソフトの
バリバリのOLを希望しています。ちなみに応援団もかけ持ちで入団しています。
すみません。自己紹介してしまいました。
C#好きです。がんばってください。さようなら。 近藤実華
バカなの?
>50
ワロタ
こんばんは、>>49の主治医です。
病院から抜け出したのを今取り押さえたところです。
彼女は幼いころに両親にひどい仕打ちを受けたのです。
父からは毎日のようにレイプされ、母からも暴行を繰り返されてきました。
入院してからは、日に日に良くなっていき、だいぶ精神状態も落ち着いてきたようなので
外出を許した途端逃げ出してしまいました。
私の担当不行き届きです。皆様にはご迷惑をお掛けしまして誠に申し訳ございません。
以後、浣腸してベッドに縛りつけておきます。
所詮C#はこうなる運命か。
54同じ女子高生として我慢できません:02/04/25 23:34
で、結局「#」は右上に字上げするのが正式な書き方なのかどうか

答え: 違います。文字の大きさは「C」といっしょです。

たぶん音楽記号的な発想からきたとのだと思いますが、これは元々はC++のジョークみたいな
発想で「さらに1つ追加」という考えから++++が変形してできました。
5554:02/04/25 23:38
>49
私は部活は文芸部ですが、創作はパソコンで執筆するように決められています。
うちはパソコン部とか物理電算部はありません。でも何故かパソコンの
台数は100台近くあります。それなのにインターネット出来ないので、
ネット上での活動は個人のパソコンを使っています。
がんばってください。
製品のロゴでは右上にあるぞ。

http://www.microsoft.com/japan/msdn/vcsharp/
57デフォルトの名無しさん:02/04/26 00:08
下のfor文はsという文字を打ったらエスケープする仕組みなんですが、
例えば1とか打った場合、3回ループされます。
CRとLFのぶんも回してるっぽいんですが、forの判定条件にRead()と書いただけで
内部ポインタ(?)みたいなものを進めてくれるんでしょうか。

for(int i = 0; (char)Console.Read() != 's'; i++)
Console.WriteLine("Pass #" + i);
>>57
1 s Enter(CR LF) と入力すると1回
1 s 2 Enter でも1回
1 Enter だと3回で入力待ちのまま

Consolw.Read()は
「入力ストリームの次の文字。または次の文字がない場合は -1。」
を(1文字ずつ)戻すから動作として正常なんだと思います
×Consolw
○Console
60デフォルトの名無しさん:02/04/26 08:53
SharpDevelopのバージョンが上がってた。

http://www.icsharpcode.net/OpenSource/SD/Download/default.asp
62デフォルトの名無しさん:02/04/26 09:41
Monoって何?
64デフォルトの名無しさん:02/04/26 11:44
>>54
C#の#は、音階のド(C)の一つ上(1オクターブは12段階)のド#と
言う意味でC#なんだと思うよ。
そういう意味では、C++と似た感じでパロディだね。
65デフォルトの名無しさん:02/04/26 13:00
>>64
おいらは、C++の「++」を近づけて「#」になったと聞いたけどな。
この説はここではでないね。
>>65
吉爺が「気づくのに0.2秒も掛かってしまった」とか書いてたやつだね
俺もそう思ってた
>>65
C#が出たての頃、M$のデモでそういうの見せてたよ。
会場に(うゎ、くだらねー!・・・)って空気流れたけど。
68デフォルトの名無しさん:02/04/26 13:36
WebアプリケーションからWebサービスに対し、とあるファイルをバイナリ(byteの配列)のまま渡したいのですが、どのようにしたらよいでしょうか?
そのとあるファイルは、Webアプリのあるマシンではなく、クライアントのファイルシステムにあるファイルです。
>>68
そのまんまやん。aspxで受け取ったbyte[]をasmxに渡せばええのんとちゃう?
>>68
base64に変換して渡してみたら?
Convert.ToBase64String、Convert.FromBase64String参照。
7170:02/04/26 13:54
byte[]そのままでやり取りできた。すまん。
72デフォルトの名無しさん:02/04/26 15:53
>>69
質問の仕方が悪かったですね。Webフォームで、<INPUT type="file">みたいなものを置いて、それをWebサービスに渡したいのですが、textboxでは「参照」ボタンを表示できないし・・・。
>>72
だから、Webフォームに<input type="file" runat="server">をおいて、
あがってきたFileStreamをbyte[]にして、SOAPでasmx呼び出せばいいんじゃないの?

WebサービスにはUIなんかないぜ、サービスなんだからさ。UIは各自が勝手に作るもの。
74デフォルトの名無しさん:02/04/26 17:01
C#のGUIプログラミングってVC++と同じような感じなのですか?
それともJavaのSwingに似ているとかあります?
>>74
VBに似ています。
>>74
VJ++にソクーリです
サブクラスでベースクラスのメソッドをnewで隠蔽した場合
ベースクラスの変数に格納して多態のつもりで呼び出しても
ベースクラスの方のメソッドが呼び出される
(同じケースでoverrideの場合は当然サブクラスの方が呼び出される)

これは仕様なんでしょうか
78デフォルトの名無しさん:02/04/26 17:30
>>77
仕様。
>>77
仕様っていうかまさにそれをやるのがnewの目的なんだけど?
>>79
多態には使うなということですか・・・
「ベースクラスのメソッドを隠蔽するため」
だと思ってたのに、隠蔽されるどころかしゃしゃり出てくるので
なんとも違和感があるのですが・・・

パラメータが同じなら素直にoverrideなんでしょうね
要するにnewで宣言したメソッドを使う場合は
ベースクラスの変数に格納するなということですか
8278:02/04/26 17:58
仮想メソッドの呼び出しでは、実際に呼び出されるメソッドの実装は、呼び出しが行われるインスタンスの<b>実行時の型</b>によって決まります。非仮想メソッドの呼び出しでは、インスタンスの<b>コンパイル時の型</b>によって決まります。

これが仕様です。
>>82
でもさ、別にnewつけたからってvirtualはvirtualなんだけど。だからあなたがいう
その「仕様」はnewには当てはまってないよね。newのメソッドをそのさらに派生型で
overrideできるんだし。

newはさ、同じ名前の新しいvirtualメソッドをもう1つ作れるようにする機能なんだよね。
継承関係をいったん断ち切って、自分が新しい基底型(そのメソッドに限ってだけど)に
なるのがnewの機能。だから、どの型の変数を使っているかによってvtblが変わるって
ことだよね。
>>78(=82)-79
レスありがとうございます

あるメソッドが 親(abstruct)-子(override)-孫(new) の場合
親の変数で孫を作成すると
コンパイルの段階で親に近い、子のメソッドが呼び出されるのでしょうね
>>83
>どの型の変数を使っているかによってvtblが変わるってことだよね。
はっきりと分かりました、ありがとうございます
8678:02/04/26 18:26
>>83
C#標準リファレンスのP313からP319あたりまでしっかり読んでごらん。詳しく書いてあるから。
すみません、おっしゃる意味がわかりません。
その本は持ってないのでなんて書いてあるのかわかりませんが、
newをつけると非仮想メソッドになるので、コンパイル時に型が決定するって書いてあるんですか???
それならその説明が*間違い*です。鵜呑みにするのはやめましょう。今出ている大抵の.NET本には
1つや2つ間違いがあるものです。

私は、newをつけてもvirtualはvirtualなのだから、82に書いてある
>非仮想メソッドの呼び出しでは、インスタンスの<b>コンパイル時の型</b>によって決まります。
っていうのは今回の中日ファンさんの例には当てはまっていないと主張しているのですよ。

実際overrideとnewの2つのメソッドを基底型の変数から呼び出すコードを書いて、
生成されたILをしっかり眺めてごらん、正しく書いてあるから。

(あー、またクソ本が一冊世の中に出回ったってことなのかしら。。。)
8878:02/04/26 19:10
>>87
using System;

class A {
public virtual void F()
{
Console.WriteLine("A.F");
}
}
class B : A {
public new void F()
{
Console.WriteLine("B.F");
}

static void Main()
{
A a = new B();
a.F();
}
}

の実行結果は
A.F
と理解して私は書いているのだけど。つまり、Bのインスタンスで、A.Fが呼び出されているのですが、なんか私は勘違いしているのでしょうか?
aのコンパイル時の型はAで間違いないと思いますが。
ちなみにB.Fがoverrideだったら、あなたのおっしゃるとおりB.Fですよ。
私からもソースを書き込みます・・・興味のある方はお試しください
using System;
public abstract class Shape{
private string petName;
public Shape(string name){petName = name;}
public abstract void Draw();
public string PetName{get { return petName; } set { petName = value; }}
}
public class Ring : Shape{
public Ring(string name) : base(name){}
public override void Draw()
{Console.WriteLine("Drawing Ring named {0}", PetName);}
}
public class Ellipse : Ring{
public Ellipse(string name) : base(name){}
public override void Draw()
{Console.WriteLine("Drawing Ellipse named {0}", PetName);}
}
public class Circle : Ellipse{
public Circle(string name) : base(name){}
public new virtual void Draw()
{Console.WriteLine("New Drawing Circle named {0}", PetName);}
}
public class ShapesApp{
public static int Main(string[] args){
Shape[] shapes = {new Ring("Rinda"), new Ellipse("Elly"), new Circle("Cindy")};
foreach(Shape s in shapes){s.Draw();}
Circle c = new Circle("Cuty");
c.Draw();
return 0;
}
}
>>88
実行結果はそのとおりです。
でもその実行結果が得られる理由は、あなたが82に書いたこととは何の関係もないと言っています。

で、もしもその本とやらに、この理由が82にあなたが書いたようなこととして説明されているのなら、
それはクソ本だとも言っています。でも、たぶん本にそう書いてあるわけじゃなくてあなたが勘違い
しているだけなんだろうな、とも思います。
9178:02/04/26 19:38
>>90
はいはい、もうなんとでも言ってください。ぜーんぶ、あなたのおっしゃるとおりですよ。
>>91
なんかキレたようだけどさ、本当に俺が言うとおりなんだからしょうがないよな、この場合。
もっとがんばって勉強しような、お互い。あと、本に書いてあることは鵜呑みにしない方がいいぞ。
粘着ハケーン {{゚д゜}}ブルブル
94デフォルトの名無しさん:02/04/26 21:37
この動作原理を教えてください(何故3回回るのか)。

do
{
ch = (char)Console.Read();

Console.Write(">>" + ch + "<<");
Console.Write("debug");
} while(ch != 'q');
>>94
sscliのソースを読めばわかる
>>94(=57さん?)
using System;
class TestApp
{
public static void Main()
{
char ch;
do
{
ch = (char)Console.Read();
Console.WriteLine("Read {0:X2} ", (byte)ch);
} while(ch != 'q');
}
}
↑自分はこれで納得しましたけど・・・
>>83

> newはさ、同じ名前の新しいvirtualメソッドをもう1つ作れるようにする機能なんだよね。

サンクス!
漏れの持ってる糞本「C#入門」はC#入門というよりプログラミング入門というべき低レベル本(簡単なクラスを作って満足して終わる)で(interfaceなんてキーワード自体1回も出てきません(;´Д`))、C#固有の文法にはほとんど触れてないんだよねぇ。
(今まで買ったプログラム言語の本の中では最低ランクに位置づけさせてもらったよ。)
newとか(特にnewという名前の理由)よくわかってなかったんだけどこの一言で氷解した。
ms-help://MS.VSCC/MS.MSDNVS.1041/cpref/html/frlrfSystemConsoleClassreadTopic.htm
↑戻り値と解説を読むと理解できるかと・・・
>>94
Console.Readは1文字だけ入力を受け付けるっていうイメージじゃなくて、
ReadLineでバッファにためて、そのバッファを1文字走査するという感じ。
10094:02/04/26 23:18
みなさんリプライありがとうございます。
色々と試してみたんですが、
Read()は、1文字Enter押したとしても内部的には
キー、CR、LFとストリーム上に残るということなんでしょうか。
(その間、>>96さんの例だとwhile条件を抜けない…?どうもここらへんがよくわかりません)
>Read()は、1文字Enter押したとしても内部的には
>キー、CR、LFとストリーム上に残るということなんでしょうか。
その通りだと思います

>while条件を抜けない…?
q Enter で抜けるはずですけど・・・
10294:02/04/27 00:11
>q Enter で抜けるはずですけど・・・
あ、すいません。そうですね。
ウインドウでタイトルバーを消す方法はどうやるのでしょうか?

最小化・最大化ボタンはプロパティで消せるんですが、
Windows.Forms.Formでは無理ですか?
>>103
Form.FormBorderStyleプロパティ
105デフォルトの名無しさん:02/04/27 01:15
>>104
FormBorderStyle.Noneでタイトルなど表示されなくなり思いどうりにできました。
ありがとうです。
106デフォルトの名無しさん:02/04/27 09:15
アクセスのレポートをC#から印刷してみたいんですけど
できます??


MSACC9.tbl を.net形式にしたDLLを
ディレクティブに加えた後どうすりゃいいのかわかりません。

using AccessObject;

AccessObject.ReportClass Report = new AccessObject.ReportClass();
>>106
ゆり子?
108デフォルトの名無しさん:02/04/27 09:29
DirectXを使ったアプリケーションを作ろうと思ってますが、
これからの配布形態を考えるとやっぱり.netで作ることを
考えるべきでしょうか?
DirectX9まで待つことになるぞ
110デフォルトの名無しさん:02/04/27 23:58
オレってWin32APIにやたらと詳しくてちょっと自慢なんだけど、
せっかくC#なんだからAPIなしで書きたいじゃん?
APIから先に発想して「C#ではどうするんだ?」ってときは、
どういう方法で探せば良いんだろう?
>110
おまえには無理
112デフォルトの名無しさん:02/04/28 00:52
>110
toriaezu shine!
>>110
最初はどうやってAPI探したんだよ、お前さんは。
やっぱさ、時代は 100% pure .NET だと思うのよね。
115デフォルトの名無しさん:02/04/28 04:43
VC#.NETPro版がでるらしいよ
VC#.NETstdからのアップグレード版もでたらいいなあ
ソースは?
Thread.Sleep( time );したスレッドを無理やり再開できませんか?
Resume();じゃだめなんですよね。
>>117
それはコールバックを使うのがいいと思うけど
ちょっとコールバック使ってどうやればいいのか思いつかないですが、
ヒントいただけませんか?教えて君で申し訳ない。
>>117
Thread.Sleep(int) の代わりに
System.Threading.ManualResetEvent の WaitOne(int, bool) じゃだめ?
121デフォルトの名無しさん:02/04/28 09:53
class <class name>{
}
という形式にする設定項目はあるのでしょうか?

ウィザードが作るコードは全て

class <class name>
{
}
なんですよね
>>121 あるよ。テキストエディタ −>C#ー>フォーマットあたりに
あったと思う。
>>122
それ、ウィザードには影響しない。
124121:02/04/28 11:48
>>123
ですよね。

update待ちですね。
.netになって、ショートカットの設定とかめちゃくちゃやりづらくなりましたね。
>>123
Ctrl+A → Ctrl+X → Ctrl+V
>>125
いちいちやってられっか。(w
127デフォルトの名無しさん:02/04/28 18:00
ログ出力に関してなんだけど、#define使えないC#でどうやって
デバッグ用のコード埋め込んでる?もしかしてif文でやってるとか?
Javaとかやってた人はどうやってたんだろ。
#define 使える
>>128
あ、ホントだ。失礼。
それにしても.netはこんなに早くからドキュメントを翻訳して
無料で配布してくれるのはさすがという感じだね。もっとよく読まないと。
>>130
なんかスレの流れがJAVAからC#に向かってってるのがワラタ。
前半でみんな無料なら使うって言ってたけど、ただで出ちゃったからね。
132デフォルトの名無しさん:02/04/28 22:02
>Ctrl+A → Ctrl+X → Ctrl+V
これって何のコマンド?

ところで、コード補完機能が上手く働かなくなってしまった場合
つまり、Ctrl+スペースを押してもリストの中に含まれていないのですが、
おそらくクラスの構造を解析していない状態だと思うのですが
更新する方法はありますか?
全選択→切り取り→貼り付け
>>132
> これって何のコマンド?

ソースをすべて選択 → 切り取り → 貼り付け。
これでソースが再整形される。

> ところで、コード補完機能が上手く働かなくなってしまった場合

ソースに文法ミスがある可能性大。
いったんビルドしてみるべし。
135デフォルトの名無しさん:02/04/28 22:06
C#の勉強できるスレ教えてください。もしくはそういうのが集まってる
スレでもいいです。
136デフォルトの名無しさん:02/04/28 22:09
>>135
勉強できるスレ=勉強できるHP

です
>>136
言語仕様がWEBで公開されてた気がする。
138デフォルトの名無しさん:02/04/28 23:06
MDI子フォームが閉じるとき、親フォームが閉じる子を特定する方法を教えてください。
親にメソッドを作って子から呼ぼうと思ったのですが、
静的とか動的とか参照とか叱られてビルドできず、
引数をどう書いて良いかいまいちわかりません。
よろしくお願いします。
>>138
残念だなぁ(´ー`)
もしそのエラーをちゃんと書いてたらもっと早くレスがつくのに。
140138:02/04/28 23:19
親に、
public void removedForm( System.Windows.Forms.Form targetForm)
{

}
とし、子で、
private void Form2_Closed(object sender, System.EventArgs e)
{
Form1.removedForm(this);
}
等とやっています。
エラーはF1でヘルプを見ても全然理解できません。
141138:02/04/28 23:43
((Form1)MdiParent).removedForm(this);
でできました。ありがとうございました。
スミマセンでした。
>>120 できました。WaitOne( time , true );で止めて
Set()で再開ですね。ありがとうございました。
143120:02/04/29 00:36
>>142
そういえばリセットする手間のいらない AutoResetEvent の方がよかったかな。
C#の文字列では設定された文字列の値を変更できないとのことですが、
これは例えば、

string strSql = "select"; を
strSql = "insert"; に変えたとき、実体が変更されるのではなくコピー
されてるっていうことなんでしょうか。
また、そうであれば、何でこのような動作をするんでしょうか。



>>144
stringが参照型だから
SDKの再頒布パッケージ インストしたらcscとかのパスとおります?
うちどうもインスト失敗したっぽくてパスは通ってないは、
削除はできないで、、、パスとおってないのが正常ならいいんですが。
今の再配布版にコンパイラついてるの?
148デフォルトの名無しさん:02/04/29 02:22
>>146
通らないみたい。再配布版でコンパイルしたければ、自分でPATHを切る必要があるよ。

>>147
含まれてる。だから、Windows 98で開発することも、一応可能。
>>148 146です。そうなんですね。ありがとうございました。
>>145
理由がちょいと違いますね。stringはimmutableだから、が正解。
immutableにすることでinternなどのテクニックが使えるようになり、
パフォーマンスが向上する。Javaと同じ理由だーね。
DelphiでのMemoコンポーネントってC#ではTextBoxだと思うんですけど、
Memo1.Lines.Addに相当する操作ってどうやったらいいですかねえ。
TextBox1.Linesは単なるstring[]?

厨な質問でスマソ。SDKのみです。
152デフォルトの名無しさん:02/04/29 11:48
>>151
Memoは知らないけど textBox.AppendText の事?
>>150
144の例は明らかに参照型だからジャン。
あれはただの代入だよ。
レスthx. 説明が足りなかったので自分が悪いのですが、求めているものと微妙に違うようです。
DelphiのMemoのLinesプロパティはAddしたときに自動的にstring配列を拡張してくれるので、
それに近いものをさがしているのでした。

現在のLinesより一つ大きいstring[]を確保して、そこにLinesをコピーして、そのあと参照先を変えるってのが
正攻法なんでしょうか?
あ、>>154>>152に対するものです。すんまそ。
156デフォルトの名無しさん:02/04/29 14:43
>>153
へ?
string s; s = "age";

string s = new String("age");
ってな意味だよ。代入じゃありませんよ。もちろんnew Stringはコンパイルできませんけどね。
immutableの意味がわかってませんね?
>>154
textBox1.AppendText("\r\nほげほげ");

こういう感じでいいんじゃないの?
すんませんが・・・

DirectoryInfo dir = new DirectoryInfo(@"\\Server-1\test");
この引数の頭についてる@はなんですか?
>>156
(´ー`)。o○(あんたほんとにimmutableわかってる?)
160デフォルトの名無しさん:02/04/29 16:15
>>159
あー、わかってるよ。一度作ったら中身が不変だってことだ。
だから、一見中身が変えられているような次のコード
string s = "age"; s = "sage";
は実は新しいstring(sage)を作って、sの参照先を変えているだけだってことだ。

これは型が参照型かどうかとは関係ない。不変の値型だってつくれるぜ。意味ないけど。

それじゃ応用問題だ。stringが不変であるメリットは何だ?ヒントはすでに
おれが言った。
(´ー`)。o○(開発者側のメリットなんてないよ)
>>160
・・・アフォ?
s = "sage";がsの参照先を変えるのはsが参照型だからだぞ?

> それじゃ応用問題だ。stringが不変であるメリットは何だ?

はぁ?何で俺がそんな事に答えにゃならんのよ。┐(´ー`)┌
あえて言うならそれはメリットがあるからじゃなくて必要条件だったからなんだがな。
>>158
@がないと
DirectoryInfo dir = new DirectoryInfo(@"\\\\Server-1\\test");
と書かなきゃいけないから。
>>163
@消し忘れ。
>>164
あ、しまった。ごめんなさい。
JavaからC#に引っ越してきたものなんですけど
ソーリューションって言う概念や単位?がいまいちわからんです
>>161
そう思う?ならどうしてstringは不変でStringBuilderなんちゅうクラスを作ったんだろ。
Javaにも同じ関係があるよね。おっと、たとえばパフォーマンスなんてのは
開発者のメリットじゃないって言いたい?

>>162
>s = "sage";がsの参照先を変えるのはsが参照型だからだぞ?
お前は参照型のオブジェクトとオブジェクトへの参照の区別がついてないな。
やり直し。

>あえて言うならそれはメリットがあるからじゃなくて必要条件だったからなんだがな。
なんで必要条件なんだよ。string(もどき)が不変じゃない言語なんていくらでもあるぞ。

開発するならこういうこと知っておいたほうがいいと思うんだけどなぁ。
しょせん小手先テクニックの魅力には勝てないか、こういう話題は。
Dr.GUIでも読んで頭冷やせよ。┐(´ー`)┌
>>166
プロジェクトってのが、実行単位というか、出力単位というか、
1つのEXEやDLL,Webサービスのことで。
ソリューションってのはそれをひとまとめにしたものかなぁ。

製品が複数のEXEやDLLからなってることもあるでしょ。
この製品がソリューションで、
EXEやDLLがプロジェクト。
>>169
なるほど、ありがと
171koubouV:02/04/29 19:19
C#ってなんて読むのが正しいんですか??
172デフォルトの名無しさん:02/04/29 19:27
拡張子が.csですので、シーシャープで宜しいかと思います。
173koubouV:02/04/29 19:32
シーシャープでいいらしい(調べたところによると
しかしなぜシャープでないのにシーシャープ
#もシャープ(♯)なのか・・・・・(意味不明
>>173
気づかなかったYO!
#と♯って別物だったんだ・・・
175koubouV:02/04/29 19:34
>>172
すいません。文読む前にヘンなこと言っちゃいました。
ほんとすいません。

どうもありがとうございます。
房らしい疑問だな
177koubouV:02/04/29 19:38
出直してきます・・・・(鬱
>>157
望む動作になりました。どうもです。

TextBoxのLinesプロパティがただのstring[]なのは理由があるんですかね?
自分の愚考ではVectorとか(Delphiの)TStringListみたいにしておいたほうが便利な気がするんですけど。
なんでもかんでもDelphiと比較すんなや
>>179
ごめん。Del経験者だとついDelのクラス名から機能を推測したりするのよ。
ヘジさんがかかわってるだけあって? かなりVCLに似てるもんで。
どっちが優れているとかは考えてもしょうがないんで、他意はないです。
  ,.-''"¨ ̄¨`' ‐ 、
 (,,(,,i,,,i,,,,,,,,i,,,,i,,),,)
    )  (       
    ( #゚ー゚) < いっちゃえ!
C#スタンダードかてきたー。
ヘタレプログラマーの俺も、ついにC#使いに。
よろすく。
183デフォルトの名無しさん:02/04/30 09:12
age
184デフォルトの名無しさん:02/04/30 11:42
DirectoryInfo.CreateSubdirectory が IOException を catch
しないんですが・・・

try
{
testdir.CreateSubdirectory("Test");
testdir.CreateSubdirectory("Test2");
}
catch(IOException e)
{
Console.WriteLine(e.Message);
}
としててTestもTest2も存在してるんですけど
185デフォルトの名無しさん:02/04/30 11:55
今までVBしかやってなかったんだけど、
C# ムズい…
186184:02/04/30 12:41
Exceptionしてみたけどなんも拾わない・・
ダレカタスケテー
187184:02/04/30 12:55
報告
ディレクトリ名を長くしたところPathTooLongException は catch できました
他のはやっぱり拾わないですね
ドキュメントの例外のところにIOExceptionやArgumentExceptionも
記載されてるので拾うと思ったのですが
188デフォルトの名無しさん:02/04/30 14:29
NET SDkのCLRのリファレンスが見れない。
開こうとすると「インストールします」とかいってででくる。
そんでできない。
全インストールしたんだけど??。
189デフォルトの名無しさん:02/04/30 14:44
もしかしてこのスレ死んでる?
C#は死にました。
>>188
オフィス入れてる?
192184:02/04/30 14:55
シンデルッポイネ・・・
未だに俺はエラーチャッチできないし
と言うかスローされて無いっぽい・・・どうするべ
>>188
トピックの階層はどこですかね
193デフォルトの名無しさん:02/04/30 15:09
>>184 よく読め
解説
path の一部が無効でない限り、path に指定したすべての
ディレクトリが作成されます。path パラメータでは、ファイル
パスではなく、ディレクトリ パスを指定します。
既存のサブディレクトリがある場合は、このメソッドは何も実行しません。

DirectoryInfo di = new DirectoryInfo("TempDir");
 if (di.Exists == false)
 di.Create();
これでいいんじゃないか?
194188:02/04/30 15:11
リファレンス->クラスライブラリ
以下全部です。
195188:02/04/30 15:14
reinstしたら直りました
>>184
ちなみに存在しないDirectoryInfoのオブジェクトに対して
CreateSubdirectoryを読んだときにだけIOExceptionを投げるみたい。
197184:02/04/30 15:31
>>193 196
どもすまんです

つまりDirectoryInfo自体が無効でないとIOExceptionやArgumentException
を投げないと言うことですかね?
とすると単純にディレクトリの存在をIOExceptionで確認することはできないわけですね
ArgumentExceptionはどうしよう
198デフォルトの名無しさん:02/04/30 15:35
C#の#って+が4つってこと?
C++++ってこと?
C♯==D(elphi)♭
200デフォルトの名無しさん:02/04/30 15:56
>>197
いろいろ試してみたけど、
・DirectoryInfoのコンストラクタやCreateSubdirectoryメソッドに対して
ファイルシステムと矛盾するようなディレクトリ名の指定
  ArgumentException
・指定したディレクトリに対して同名のファイルがある場合
  IOException

こんな感じかな?
おとといから.netを始めたばっかだから間違ってるかもしれないけど
>>197
存在チェックなら、DirectoryInfoのExistsがあるのだからいいんじゃない?
202デフォルトの名無しさん:02/04/30 16:55
俺もIOExceptionやArgumentExceptionがスローされない
ドキュメントにも
既存のサブディレクトリがある場合は、このメソッドは何も実行しません。
とあるのでスローもしないのだと思うが
例外の欄に
IOException
path に指定された名前のファイルまたはディレクトリが既に存在しています

とある理由がわからない
ま、判定にはCreateSubdirectoryは使うなという事なのかもしれんが

ArgumentExceptionに関しては実際無効な名前でテストしてみると(/を入れてみた)
ディレクトリは作成されないがスローもされずに最後まで走る

おれもC#初心者なんだけどね
分けわからんですな
もう少しこの辺をいろいろ試してみる
>>202
作ろうとしているサブディレクトリと同名のファイルが既に存在する場合は、
例外がスローされるね。
>>203
だね これはこれで実際同ディレクトリ内に作成不可なので
スローされていいわけですな

ということはドキュメントの
path に指定された名前のファイルまたはディレクトリが既に存在しています
と言う部分はCreateSubdirectoryに関しては
path に指定された名前のファイルが既に存在しています
と解釈すればいいと言うことかな
205デフォルトの名無しさん:02/04/30 18:08
Directory.CreateDirectoryのほうのIOExceptionもスロー条件は同じ
しかしドキュメントは更に謎
path によって指定されたディレクトリが、読み取り専用であるか、空ではありません。
だってさ
ためしに指定するパスのディレクトリを存在させて読取専用属性をつけてみた
IOExceptionどころかどの例外もスローされずにコードが走りました
対象のディレクトリはそのまま
分からないことがあったらsscliのソースを読むのが近道。
System.IOならsscliに頼らずとも.NET Frameworkのソースがほぼ読めるという罠
うむ ドキュメントおかしすぎ
C# または C++ の場合:

Directory::CreateDirectory("Public\\Html");


だってさ
ドキュメントよりもソースを信じよう。
原文もそうなのか、誤訳なのかどちらだろうね。
A file or directory
原文もそのままっぽいね
ドキュメントのフィードバックする人ってどれくらいいるのだろう
In C# or C++:
Directory::CreateDirectory("Public\\Html");

こういう間違いって見てマジ萎える

215デフォルトの名無しさん:02/04/30 21:38
STLの<algorithm>みたいなのってありませんか?
C#でメッセージループみたいな物を書くにはどうしたらいいですか?
ウインドウ開いてもすぐに終了しちゃうんですが
>>216
激しくガイシュツだが。
[STAThread]
static void Main() {
Application.Run(new Form1());
}
[assembly: 〜]
↑これ、何でしょうか?
.NET SDKのドキュメントのどのセクションを読めばいいのか教えてもらえませんか?
assemblyで検索するとVB.NETのドキュメントしか出てこないので・・・
219駆け出し初心者:02/05/01 00:36

>>202
気になったので試してみました
論点はズレてるかもしれんが...

using System;
using System.IO;
namespace test{
  class test{
    static void Main(string [] args)
    {
      DirectoryInfo testdir = new DirectoryInfo(".");
      try
      {
        testdir.CreateSubdirectory(args[0]);
      }
      catch(Exception e)
      {
        Console.WriteLine(e.ToString());
      }
    }
  }
}


上のソースをコンパイル後の名前をaとして

C:\>a A/   エラーにらずカレントディレクトリに"C:\A"ディレクトリが作成される。
C:\>a B/B  エラーにらずカレントディレクトリに"C:\B\B"ディレクトリが作成される。

結果を見てみるとUNIXのディレクトリ表記と同じにみえる
結論、.NETはUNIXも当然守備範囲に入れている?

同じく"\"も試してみたが同じ様にサブディレクトリが自動的に作成される。
考えようによっては、楽チンかも
>>218
アセンブリに適用する属性。「属性」とかで引いてみるべし。
>>220
ありがd調べてみます
222デフォルトの名無しさん:02/05/01 00:59
Math.Power(double a,double b)は
aのb乗ですが
5の1.5乗っていうのはどういう計算なんですか?
>>222
ぁ?
非自然数の階乗の計算方法がわからないのか?
また階乗かよ・・・(;´Д`)
>>222
中学生からやり直せ
それはC#以前の問題かと
>>223
中学生からやり直せ
∧∧  / ̄ ̄  
(*゚ー゚)< マターリシマショ。
UU  ̄ U U\__  
>>227
>>229
累乗
231202:02/05/01 01:29
>>219
ヒント有難う
というか俺がボケあがってますね
テストに/を使うのがバカでした
/が単純にディレクトリ名に使えないと思いついて試したんです、、、(恥
再度 < や > などで試すとちゃんと ArgumentException がスローされました
これでほぼ問題解決です
232デフォルトの名無しさん:02/05/01 01:32
教えて下シャア〜
C#のコンパイラは
C言語もできますか?
>>232
何ですか〜?
>>233
多分Visual C#のコンパイラでCのソースもコンパイルできるかどうか聞いているんだと思う。
>>234
なるほど〜

>>232
できませんよ〜CとC#の関係はCとC++の関係とは違いま〜す
似てるようだけど〜全然別の言語だと思ってくださ〜い
>>225,227
累乗も階上もならうの高校だぞ。

>>222
http://www.google.com/search?hl=ja&lr=lang_ja&q=指数関数
237デフォルトの名無しさん:02/05/01 16:58
Visual Studio.Netはアカデミックパックで大体いくらですか?
知らん。
239237:02/05/01 17:09
自分で調べました。
書く前に調べようね。
241237:02/05/01 17:35
自分で調べるんじゃ、質問する意味無いじゃん。
人生って孤独だよな・・・
少し調べれば分かるようなことを聞くな。
少し調べれば分かるかどうかが分からないから聞いてるのだ。
まず少しは調べろよ。

247237=241:02/05/01 18:16
>>245
おまえ、誰だよ
248237=245:02/05/01 18:17
>>247
おまえこそ、誰だよ
全然 C# の話題じゃねえな。
250デフォルトの名無しさん:02/05/01 19:02
>>237
今日、アカデミック買ってきてやったよ。
秋葉のソフマップ1号館では22800円だたよ。
2マンちょっとだったら買える値段だけど、ハードウェアがなあ…;−;
252デフォルトの名無しさん:02/05/01 20:19
MSDNプロに入ったんだけど、各種ダウンロードできるOSって、
全部CDで送られてくるの?それとも自分でダウンロードしなくちゃ
いけないの?
おくられてくるしおとせるしすれちがいだしいたちがいかもしれない
254デフォルトの名無しさん:02/05/01 20:31
ステータスバーに追加したパネルをバーの右端に表示したいのですが、
どのプロパティで設定したら良いのでしょうか?
今月からプログラミング始めました。
一定時間ごとに指定した音声ファイルの音を鳴らすようなプログラムは
どう書けばいいのでしょうか?
タイマーコントロール?を使えばいいのでしょうか。使い方がよく分かりません。
256_:02/05/02 00:25
>255
やる気があるのでしたら、以下のサイトのサンプルを作ってみましょう
宇宙仮面のC#プログラミング
ttp://isweb41.infoseek.co.jp/computer/ukamen/

ほとんどVBサンプルをC#に移植したようなものですが、本当の初心者さん
でしたら、非常に良いかと。
.NET環境で(COM Interopなしで)PDF出力するコンポーネント探してます。。。
有料でもおk。どなたかご存知ありませんでしょーか?
258デフォルトの名無しさん:02/05/02 00:48
ほんとに初心者ならGUIなんて無視してファイルのIOからはじめて見ては
C#Magazineみたいのは出ないのかな。
260デフォルトの名無しさん:02/05/02 01:05
ヘッダーコントロールを使いたいのですが、やはりAPIを直接呼ばないと無理でしょうか?
Windows FormsでHtmlを表示する方法ってないでしょうか?
MFCのChtmlView OR ChtmlEditViewのような感じの。
>>255
いきなり欲張る奴はたいがい挫折する.
263デフォルトの名無しさん:02/05/02 10:04
>>262
それがプログラミング的に欲張っているのかどうかわかんないんだよ。
ユーザからみたこの仕様はぜんぜんショボイもん。
タイマーコントロール使えばいいとわかってるのに
使い方がわからないというのは要勉強だね。
265デフォルトの名無しさん:02/05/02 10:10
>>257
使えるかどうか全く分からないけど、名前から推測するに
http://sourceforge.net/projects/pdflibrary/
あたりはどうだろう?
>>263
じゃあ
>今月からプログラミング始めました。
なんて書くなよ(w

そんな奴が
>ユーザからみたこの仕様はぜんぜんショボイもん。
なんて議論できんのかよ(W
267デフォルトの名無しさん:02/05/02 10:39
>215
STL関連ってそりゃC#にはまだtemplateがないんだから無理でしょ
早くC#にtemplateが実装されないかなぁ
開発中らしいけど
俺自身はまだC#環境持ってないんだけど、Delphiの開発者と同じ
人だからおそらくListというクラスはあるんでしょ
Delphiの時はListクラス使いまくりだったけど、今のC#もそうなの
でしょうか?
>>267
System.Collections ネームスペースにいろいろある。
データ構造は一通り揃ってるからあまり困らないね。
270263:02/05/02 12:41
>>266
ワシは255じゃないよ。勘違いしないでね。
C#のテンプレートは実行時に解決するような手段にしてほぢい
実行時に解決するなら別にテンプレートじゃなくてもよくないかなぁ?
273257:02/05/02 15:44
>>265
ありがとう!いまダウソしたんで試してみます。
274デフォルトの名無しさん:02/05/02 16:21
COMにアクセスするにはどうしたらいいんでしょうか?
>>274
tlbimp.exeでラッパークラスを作る。
実行時に解決するならどうせ型安全じゃないからテンプレートの意味無いよね。
テンプレートを実行時に解決する、のが具体的にどういう事かわからんけど。
なんか初代スレの話題をぶり返してるような・・・。
ms-help://MS.NETFrameworkSDK.JA/vcmxspec/html/vcmg_AccessingCOMObjectsfromtheRuntime.htm
279デフォルトの名無しさん:02/05/02 22:33
システムメニューをカスタマイズしたいんですが、
どうすりゃいいんでしょう。
>>271
http://research.microsoft.com/projects/clrgen/generics.pdf
↑によると、C#のテンプレートは実行時に解決するみたいよ。

>>272
キャスト演算の手間とかが減って、効率あがるし、バグも減る。
281デフォルトの名無しさん:02/05/02 23:17
//どう間違ってるのでしょうか。悩んでます、教えてください。
public struct Hoge{
 public int X;
 public int Y;
}
class Foo{
 Hoge[] m_points = null;
 public Foo(){}
 public void init(){m_points = new Hoge[10];}
 public void func(){
  foreach(Hoge ip in m_points){
   ip.X=0;//ここエラー
  }
 }
}
//: 代入式の左辺には変数、プロパティ、またはインデクサを指定しください。
initを呼んでいないに100万ペニシリン
いや、コンパイルが通りません。
つーか、なんでコンストラクタで初期化しないわけ?

ところで100万ペニシリンって何ユーロ?
あぁ、
Hogeがstructジャン。
286デフォルトの名無しさん:02/05/02 23:26
うぇーん
C#からDirectDraw使いたいけどわからないよー
287281:02/05/02 23:37
ああいう場合はforeach使えないんですね。了解しました。
>>281
structで引数なしコンストラクタは無理よ。
289288:02/05/02 23:39
おおっと、関係なかったか。スマソ
>>281
init()を↓にしてみたら?
 public void init()
 {
  m_points = new Hoge[10];
  for(int i=0; i<m_points.Length; i++)
  {
   m_points[i] = new Hoge();
  }
 }
291デフォルトの名無しさん:02/05/03 01:00
スタンダード版で作成できないクラスライブラリってなんのことをさしているのでしょうか。
自前のクラスは作成できるんですよね?
DLLなどがつくれないということでしょうか?
お恥ずかしい質問ですが、よろしくお願いいたします。
>>291
VS.NET Pro版の場合
新しいプロジェクト - Visual C# プロジェクト に出てくるテンプレートは
・Windows アプリケーション
・クラス ライブラリ
・Windows コントロール ライブラリ
・ASP.NET Web アプリケーション
・ASP.NET Web サービス
・Web コントロール ライブラリ
・コンソール アプリケーション
・Windows サービス
・空のプロジェクト
・空の Web プロジェクト
・既存フォルダ内の新しいプロジェクト
ですけど、他の版ではどうなんでしょう
ちなみに
・クラス ライブラリ
で作成されるのは「シングルファイル アセンブリ」で
.NETのDLLが作成されます
>潜入 女子更衣室「女子更衣室にカメラを仕掛け盗撮。オッパイや下着、オxxコまではっきり見える」
よくあるAVの広告のコピーだろうが
これって、どうやってオxxコが見えるのか知りたい。

それとは別にC#に将来はあると思いますか?
>>291
VS.NET Standard版の場合
新しいプロジェクト - Visual C# プロジェクト に出てくるテンプレートは
・Windows アプリケーション
・ASP.NET アプリケーション
・ASP.NET Webサービス
・コンソールアプリケーション
の4つかな。
うちのWin2000にはIISが入ってないので、本当は他にもあるのかも。
296デフォルトの名無しさん:02/05/03 07:37
クラスライブラリ作成のテンプレートって、一体どんなものなんでしょうか?
ただ普通にクラスを作ってDLLにするのとは違うものがあるんですか?
297VB厨:02/05/03 13:16
こんにちわVB厨ですが、C#かVB.NETかで迷っています。
VBマガジンでは、VB.NETを記事にしていますが、
どっちが優れているのでしょうか?
私が知る範囲では書き方が違うだけなのですが、
それなら2種類も言語を用意する意味が無いと思うのです。
そんなの混乱するだけです。
.NET FrameworkやVB.NETの文法はVB6とは全く別物で
C#にVB6のへんちくりんな「ぬいぐるみ」を着せているようで
気持ち悪いのです。
話は脱線しましたが、マジでどっちを選べばこの先、楽が出来るのでしょうか?
とりあえずC#の方が楽なことは確かでしょう。
299VB厨:02/05/03 13:24
>>298
お返事有り難うございます。
なぜC#の方が楽なのでしょうか?
私は、制御のCとASMならやったことがあります。
言語仕様としてはC#の方が評価が高く、MSの扱いもC#の方が上だと思うからです。
覚える為の労力はC#もVB.NETもあまり変わらないと思いますし、後々楽ではないかと。
ゼロから物作りするならC#でしょう。
CLIを前提に作ってるから素直な仕様だし。

でも仕事でVB資産を持ってるなら、VB.NETもやらざるを得ないでしょう。
といっても、C#を覚えとけば簡単に併用できると思うけど。
>299
> それなら2種類も言語を用意する意味が無いと思うのです。
.NETが今後普及し、定着していくと、マイクロソフトもそう考えるかも知れません。
そうすると立場が不利なのはVB.NETの方だと考えられます。

C#を身につけておけば、いざという時、Java等他のオブジェクト指向型言語に移ることも
比較的簡単にできると思います。

どちらをやるにしても、VB6からだとOOPの概念は覚えないといけないので、
どうせならバッサリC#に移行するのもアリだと思います。
>>297
Microsoftは複数の言語に対応できると言ってるが実質は
他の言語を C#化してるだけのような気がするよ。

C#・JavaScript.NET・VB.NETの言語仕様見てみたけどそんな感じしないか?
おそらく、Perl.NETがでても似たようになるんじゃないか思えるほど。
そんなもんだろ。
好みの言語の構文で同じ機能を実現するだけ。
そのうち、C#->VB.NETトランスレータとかも出てくるんじゃないのか?
>>304
VB.NETの逆コンパイラ作ればいいだけじゃん。
どうすればどの言語からもVB.NETソースに変換できる。
最適化されている可能性もあるから逆コンパイラは不可能
307デフォルトの名無しさん:02/05/03 20:46
すみません、2つ質問させてください。
・textboxに入力した数値を演算するにはどのようにしたらいいのでしょう。
int ans;
ans = this.textbox1.text * 2;
にすると型が違うというメッセージが表示させて演算できません。

・もう一つですが、Communicationコントロールについてですが、
例えば、16進数の「81」を出力するにはどのようにすればいいのでしょう。
this.axMscomm1.output = 0x81;
ではエラーになっていまいます。

どなたか教えて頂けませんでしょうか。お願いします。
308_:02/05/03 22:21
>307
サンプルソースなどに、以下のような記述を見たことはありませんか?
int intTest;
intTest = (int)this.txtNumber.text;
"型変換"、"キャスト"などで検索をしてみる事をオススメします。
text->int変換が標準で出来るのか?
VB.NETだと思いっきりできるな。怖・・・。
Int.fromString()みたいなのが勝手に呼ばれてると思えば・・・
でもキモいねえ
312デフォルトの名無しさん:02/05/04 00:01
>>308
その方法で型変換してコンパイルすると
"型stringを型intに変換できません" となってエラーとなります。
私も型変換だと思ってその方法を試しましたが、ダメでした。
どうしてでしょう。
うむ、安心したぞよ
>>312
>>311がヒントになっております
315デフォルトの名無しさん:02/05/04 00:29
>>308,311,314
Convertクラスを使ってできました。ありがとうございました。

316308:02/05/04 00:29
>310
そうなんですよね、VB.NETでできちゃうからC#でもできると思ってました。鬱。

>314
こんな感じ?間違ってましたらツッコミお願いします。
public int SFStoI(string value) {
try {
int i = int.FromString(value);
return (i);
} catch {
return (0);
}
}
あ、これだと"0"を渡すと意味不明だ(w
317デフォルトの名無しさん:02/05/04 00:30
RichTextBox(かTextBox)で指定した行の文字列を得るにはどうしたらいいですか?
318manko chinko:02/05/04 00:36
最強のmankoプログラムを組んでみました

class Manko{static void Main(){System.Console.WriteLine("manko daisuki");}}
それが?
320317:02/05/04 00:48
string s = rtBox.Lines[行]
で解決しました。。。鬱
321119:02/05/04 01:27
>>318
↓これでも見て、いいかげんに目を覚ませ
http://www.freepornpage.com/kkoo8va/58.jpg
>>321 119は間違い・・・スマソ
323デフォルトの名無しさん:02/05/04 01:45
たびたびすみません。
こちらのほうもご存じの方教えてください。

Communicationコントロールについてですが、
例えば、16進数の「81」を出力するにはどのようにすればいいのでしょう。
this.axMscomm1.output = 0x81;
ではエラーになっていまいます。

>>323
ms-help://MS.VSCC/MS.MSDNVS.1041/jpkbvb/vb/J0417_98.htm
ちょっと古いけど、まぁなんとかなるだろ。

#ここはC#スレだし、VB.NETの話は他でやったら?
323じゃないけど
>#ここはC#スレだし、VB.NETの話は他でやったら?
???C#でもaxMSCommは使えるんじゃないかと思うけど

それよりもせっかくの.NETでActiveXを使うというのが良く分からない
ActiveXを使いたいのなら旧VSの方が自然なのではなかろうか
漏れの環境ではmscomm32.ocxが見つからない。VS.NETフルインストなのに。
本気でCOMをあぼーんする気だな。
327デフォルトの名無しさん:02/05/04 11:59
>>325
axMSCommは置いておいても、まだ使いたいコンポーネントもあるな。
正直、OCXなんて使いたくないけど・・・・・・・・・。
なんでわざわざ。
329デフォルトの名無しさん:02/05/04 13:38
323じゃないけどC#とかVB.NETで
RS232Cシリアル通信のプログラム作る時って何を使うの?
API
331デフォルトの名無しさん:02/05/04 14:01
>>330
じゃあ、msCommよりも難しくなったっんだね。
msCommは使い方楽だったげと・・・
難しくなったというか枠組みは用意されてるのだから・・・。
Streamから継承すればすぐじゃん・・・。
そうすれば使い勝手はmsCommより格段に良くなると思う。
Formの裏で別のスレッドがあって、そのスレッドから非同期デリゲートで
新しいフォームを表示しています。コードは下みたいな感じです。

//ShowForm()で新しいフォーム表示。
ShowFormDelegate showFormDelegate = new ShowFormDelegate( ShowForm );
AsyncCallback cb = new AsyncCallback(CallBack);//CallBack(){}
IAsyncResult ar = showFormDelegate.BeginInvoke( cb ,null);

このままだとDragDropの登録ができないんで
[STAThread]属性をデリゲートの呼び出し先とかにつけてみたんだけど
うまくいきません。どうしたらいいでしょう?
>>333
Main()にSTAThreadはつけてないの?
>>334 ありがとうございます。もちろんつけています。
>>335
ならば別スレッドもSTAになってない?
Thread.ApartmentStateでも調べてみて。
>>336 MTAのようです。
Apartmentは一度セットされたら変更不可能・・・
>>337
MTAか。不思議だ・・・。Unknownならまだ分かるけど。
>>339 調べてみましたが、
スレッド開始時にはSTAに変更できますが、
変更してもデリゲートで呼ばれたShowForm()内では
MTAになってしまい変更もできないようです。
341デフォルトの名無しさん:02/05/04 20:53
>>333
メインフォームのUIスレッドがあって、その裏にワーカースレッドがあって、
そのワーカースレッドから新たにUIスレッドを立てようとしてるの?
なぜそんなことをしようとしてるのかよくわからん。
もっと詳細な情報があれば解決策なり代替案なり出るかもしれん。
というか、MTA上にフォーム作ってることには誰も突っ込まんのか・・・。
>>341 そのとおりです。ワーカースレッドはループを回してネットから
パケットを受け取り、あるパケットがきた時にダイアログや操作フォーム
を開くようにしています。
その場合、非同期デリゲートを使わないと、フォームを閉じるまでワーカースレッド
はShowDialog()した時点でとまった状態になります。
なので非同期デリゲートを使い対処していました。
今回は操作するフォームにドラッグドロップ操作を加えたかったのですが
STAスレッドでないため、例外を吐きフォームを開くことができなっかので
質問させていただきました。
ネットワークプログラミングは初めなものでとんでもないことしてるのかも
しれまん、、、
>>343
ワーカースレッドから作るウィンドウはメインフォームの子ということでいいの?
それだったら、子ウィンドウを表示するメソッドをメインフォームクラスに書いて、
ワーカースレッドからForm.BeginInvokeでそのメソッドを呼び出せばいいと思われ。
>>344 そうしているところもあるのですが、そうしたくない部分を
非同期デリゲートにしています。
ご指摘どおり、control.BeginInvoke()を使った方がいいのかもしれません。
ワーカスレッドがUIを直にいじるのはよくないと思う...
347333:02/05/04 22:37
素直にform.BeginInvoke()で実装したらうまくいきました。
数々のアドバイスありがとうございました。
VSのマクロとか、C#でも書けるかと思ったが、
結局VB.NETで書くのか……
(期待しすぎ?)
349デフォルトの名無しさん:02/05/06 00:05
>>348
そそ、そのへんちょっと不満。
やはり、Office.NETとかで、
VBA.NETって具合になるのだろうか?
>>348
C#だとレイトバインドとかパラメータ省略ができないから、
マクロ書くにはちょっとめんどいでしょ。
351デフォルトの名無しさん:02/05/06 00:24
超初心者質問なんですが、C#で cout みたいな簡単に入出力できる方法ってないんでしょうか?
Console.Write って書くのにちょっと疲れ気味・・・
>>351
文法的には遙かにそっちの方が気持ちいいけどね・・・。
関数ポインタ作ってConsole.Write放り込む。
>>351

using System.Runtime.InteropServices;

class Hello
{
  public static void Main() {
    printf("Hello World!!\n");
  }

  [DllImport("msvcrt.dll")]
  public static extern int printf(string s1);
}
>>353
それやるくらいだったら↓でいいと思われ。

class Hello
{
  public static void Main() {
    printf("Hello World!!\n");
  }

  public static extern int printf(string format, params object[] args)
{
Console.Write(format, args);
}

  public static extern int puts(object obj)
{
Console.Write(obj);
}
}
>>351
>Console.Write って書くのにちょっと疲れ気味・・・
どういうのを書きたいのか、知りたいですけど

完備とはいえないかもしれないけど
Console.Writeでもある程度のフォーマットは可能だから
({0:C}とか{0:D9}とか{0:F3}とか{0:X}とか)
今後のことも考えればこちらに慣れておくのが最善かと・・・
356デフォルトの名無しさん:02/05/06 03:07
std版ではクラスライブラリが作成できないみたいですが、
コマンドラインから csc /t:library でDLLを直接つくってやれば問題ない気がするのですが・・・?
357デフォルトの名無しさん:02/05/06 03:59
データの保存(MFCでいうところのWriteProfileInt()みたいなの)ってどうやるのかしらん?
>>357
Microsoft.Win32.Registry
359デフォ名無し:02/05/06 04:15
C#の標準にはGUIが含まれてないってほんとですか?
>>356 >>359

その通り。当たり前。
361359:02/05/06 06:56
当たり前?
JavaはGUIも、あまつさえWebアプリケーションの標準化もこころみてたというのに?
362359:02/05/06 06:57
ということはFreeBSD版のC#ではウィンドウは表示できないですか?
言語自体の標準でGUIが関係あるのかと、小一時間、、
std版はウィザードがついてないだけと思います。
365デフォルトの名無しさん:02/05/06 07:54
ファイル名から、
・拡張子だけを取得する
・拡張子以外を取得する
といった関数はありませんでしょうか?
>>365 PathかFileInfoあたりにあったとおもう。System.IOみてみ。
これから外出だからヘルプで確認してない。違ってたらゴメン。
367デフォルトの名無しさん:02/05/06 08:29
>>366
ありがとん。System.IO.Pathにありますた。
System.IO.FileHogeHogeばかり見てますた。

・拡張子だけを取得する -> GetExtention(string);
・拡張子以外を取得する -> GetFileNameWithoutExtention(string);
368367:02/05/06 08:31
>Extention×
Extension
INIファイルの代わりとしてXMLファイルを使おうとしてます。

まず、サンプルから適当に抜いてXMLを作成してみました。
XmlTextWriter myXmlTextWriter = new XmlTextWriter ("SaveData.xml", null);

myXmlTextWriter.Formatting = Formatting.Indented;
myXmlTextWriter.WriteStartDocument(false);
myXmlTextWriter.WriteStartElement("ApplicationData");
  myXmlTextWriter.WriteStartElement("Position", null);
    myXmlTextWriter.WriteElementString("x", "10");
    myXmlTextWriter.WriteElementString("y", "10");
  myXmlTextWriter.WriteEndElement();
myXmlTextWriter.WriteEndElement();
myXmlTextWriter.Flush();
myXmlTextWriter.Close();

作成されたファイルはこんな感じ。
<?xml version="1.0" standalone="no"?>
<ApplicationData>
 <Position>
  <x>10</x>
  <y>10</y>
 </Position>
</ApplicationData>

これでxとyの値を、xml回りのクラスを使って読むにはどうしたらいいのでしょうか?

#過去スレにsampleがあった気がするのですけど、dat落ちしてて調べられない。
370デフォルトの名無しさん:02/05/06 09:54
INIファイルのように使うには次のようなXMLファイルを作る。

<?xml version="1.0" encoding="shift_jis"?>
<configuration>
<appSettings>
<add key="x" value="aaa" />
<add key="y" value="bbb" />
</appSettings>
</configuration>

そしたら、System.Configuration.ConfigurationSettings.AppSettingsで簡単に読めるよ。
>>365
しかし、そんなもんファイル名が分かっているのなら自分で簡単に書けそうだが。
ファイル名の末尾から.までだろ?
>>370
AppSettingsは読めても書けないらしいんだけど、なんでぇ??
373デフォルトの名無しさん:02/05/06 10:07
>>370
ありがとうございます。今からやってみます。
374:02/05/06 10:13
ブラクラ張ってください!
願いします!!
375デフォルトの名無しさん:02/05/06 10:14
376370:02/05/06 10:16
>>372
AppSettingsはなぜか書き換えできないんで、保存するときはXMLファイル開いて処理してます。
書き換えできりゃ楽なんだけどね。
二番煎じは詰まらん
>>378
変なプログラムを「インストールしますか?」って聞いてくる分たちが悪い。
>>369 前すれPart2の258辺りが参考になると思われ。
しかし、最近#さんみないね。
381名無しさん♯:02/05/06 11:38
>>380
いるよー。ヽ(´ー`)ノ

っていうか、最近はほとんど名無しカキコ。
コテハンは主にスレ立て屋で使おうかと。

寺利編むのAPI Doc作ったり、他スレでもいろいろやってます。
>>381 お、おられましたかヽ(´ー`)ノ  口調変えてるのね。
いるのかわからなかったよ。涙ぐましい(笑 ちと安心。
>>380 まだhtml化してないみたいだね。
ソース置き場にハリコしたほうがええかな。
 
383367:02/05/06 12:13
>>371
実際、レスが帰ってくるまでに書いたよ。
でも既存の関数があればそれを使うだけ。
384367:02/05/06 12:14
関数あるのはわかってたからね
385369:02/05/06 12:20
>ソース置き場にハリコしたほうがええかな。
できたら、お願いできませんか(^^;
あさってなコードを書いてるっぽいです(鬱
387369:02/05/06 12:51
>>386 & #さん
ありがとうございます〜。これ元にコード書き直しに逝ってきます。
388名無しさん♯:02/05/06 14:06

うえーん、>>386は今見るとすごく恥ずかしいよー
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
            ∧_∧
          ( ´Д⊂ヽ
          ⊂    ノ
           人  Y
          し (_)


今ならこんな風にやるかも。ちょっと遅くなるけど。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=41
>>388 シリアライズ使うのか〜。
なるほどパブリックなプロパティ用意すればよかったんだ。
ああこっちの方が全然簡単でいいね。
全然思いつかなんだ。こんなの。さすが。
>>381
ドキュメント作った人の正体は#さんだったんだ。ありがとー。
391369:02/05/06 15:30
できました〜。ちゃんとXMLで読み書きできました。ワーイ
XmlSerializer使った方がswitch文の煩雑さが無くてウットリ
これってpublicなプロパティを勝手に探してget/putしてくれるってこと?
すげえなこりゃ。java beansもビックリだ。
>>392
javaでもできるっつの。
class >>393 {
 private 糞 糞;
 public 糞 get_糞() {
  return 糞;
 }
 public void put_糞 (糞 糞) {
  this.糞 = 糞
 }
}

なんて美しいんだ
>>394
あのー、リフレクションの話なんですが。。。プロパティの構文の話ではありませんよ。。。
>>394 そのコードだとスタックオーバーフローするぞ(ワラ
>>394
putじゃねえ。setだ。
あと、いらんアンダーバーつけんな。
3匹釣れたところでオシマイにします。ありがとうございました。
ナイス負け惜しみ。(w
Study: Microsoft's C# gaining ground
http://zdnet.com.com/2100-1104-899493.html
401デフォルトの名無しさん:02/05/07 11:43
お馬鹿な質問で恐縮ですが…
SharpDevelopで適当にFormsにパーツをくっつけてたんですけど、
Frame
MainMenu
ToolBar(DockはTop)
StatusBar(DockはBottom)
Panel(DockはFill)
GroupBox(DockはLeft)
GroupBox(DockはFill)
Splitter(両方のGroupBoxを結合)
としたんですけど、どのGroupBoxにTextBoxを貼り付けても
ToolBarの下に潜り込んで正しく表示されません(TextBoxの
上が削れてる)。
toolbar(Top)
panel(Fill)
StatusBar(Bottom)
Panel(Fill)
GroupBox(Left)
GroupBox(Fill)
Splitter(両方のGroupBoxを結合)
とやっても結果は同じでした。どうしてでしょうか?

(大人しくVisualC# Standard買ってこようかな……)
あぁぁぁ。御免なさい。Tabのままでした……。書き直しです。

Frame
  MainMenu
  ToolBar(DockはTop)
  StatusBar(DockはBottom)
  Panel(DockはFill)
    GroupBox(DockはLeft)
    GroupBox(DockはFill)
    Splitter(両方のGroupBoxを結合)
としたんですけど、どのGroupBoxにTextBoxを貼り付けても
ToolBarの下に潜り込んで正しく表示されません(TextBoxの
上が削れてる)。
  toolbar(Top)
  panel(Fill)
    StatusBar(Bottom)
    Panel(Fill)
      GroupBox(Left)
      GroupBox(Fill)
      Splitter(両方のGroupBoxを結合)
とやっても結果は同じでした。どうしてでしょうか?
>>401
なんでFillが2つもあるの?
404403:02/05/07 11:47
>>402
了解。
405403:02/05/07 11:56
>>401
VS.NETでは問題ないけど・・・。
ソース載せた方が早いかも。
>>402
Control.BringToFront();
Control.SendToBack();
407406:02/05/07 12:27
>>406 書き忘れた、コントロール追加する順番変えてみてもできる。
プロパティで直にいじれたかは忘れた。
408デフォルトの名無しさん:02/05/07 12:37
charles petzoldのC#の本を読んだ人はいますかー?
【Programming Windows(r) with C#】
http://www.amazon.com/exec/obidos/ASIN/0735613702/

C#の本を何か一冊欲しいのだけどこれはどんなもんでしょ
どの程度削ればいいかわからなかったんで、鯖たてました。
http://218.227.169.154

ちょっと追加する順番いじってみます。
あぁぁぁ。出来ました。
DockStyleで、TopやBottomなど「Fill以外のもの」より、まず
Fillのものを作れば良いということでしょうかね?そのようにやれば
出来たようです。

BringToFront()やSendToBack()等では何も変わりませんでした(涙)。

お騒がせしました(−−;
>>409
なんか面白そうなもの作ってるね。
完成したら公開して。
スレ違いだったらすみません。
Cって、0から勉強して、一通り覚えられるまでどのくらいかかりますか?
413デフォルトの名無しさん:02/05/07 13:14
>>412
プログラミング初心者かそうでないかによる。
>>412
C#じゃなくて?
作ろうとしてたのは、情報整理ソフトみたいなものです。
構造はXMLで組み上げて、それぞれのNodeには情報
へのリンクだけ。情報そのものには任意の個数のタイトル、
テキスト、リンクなどをたたき込めるようにしようと。
IEと連携できたら、結構おもしろいブラウザになるかも(
ネット上へのリンクと、ローカルに*.mhtで保存してる
ファイルへのリンクを同じ情報に置いたり、あるお気に入りの
親を複数持たせたり…)とか、創作物の構想練るとき
とかに使えるかなと。
(いままでネットで見かけた情報でも、簡単に頭から
すり抜けたりしてるもので…)

その前段階として、とりあえずXMLエディタでも作って
みようとしてたところでした。できたら公開します。
(元ヘタレC++Builder使いでしたが、UNICODEの扱いが面倒
だったのでC#に移行中です。)
>>413
VBをほんの少しだけ、したことがある程度です。
>>414
すみません。C#です。
.NET製の公開アプリが増えることは喜ばしいことだ。
みんながんばれ!
419デフォルトの名無しさん:02/05/07 14:17
クラスライブラリだけじゃタイトルバーを消すのは無理かな?
>>419 タイトルバーが何なのか分からんが
Formのタイトルバーのことだとしたら、
Form.FormBorderStyle FormBorderStyle.Noneにすればいい。
>>420 訂正
Form.FormBorderStyle = FormBorderStyle.None;
>>420
ありがとう。
おれいにあなたのことを考えながらオナニします!

ちなにみどのタイミングでFormの表示を変更するのが
正しいのでしょうか?OnPaint内だと再びここに入って
来てしまいます。GUIプログラミングは正直なところ
初めてなのでよく分かってません。
>>420
すみません。勘違いしてました。

protected override void OnPaint(PaintEventArgs e) {
  Graphics g = e.Graphics;

とGraphicsオブジェクトを取得するしかないと思ってました。
単純にstaticなGraphics.FromXXXメソッドで取得できるんですね。
どうもすみません。
>>423
GDI+のドキュメント読む方が分りやすいよ
C#には標準でINIファイルを扱うクラスは無いのでしょうか?
ヘルプやネット検索した限りでは無いようなので、正規表現で
INIファイルに検索かけて扱うのでしょうか?
INIファイル自体、Win32APIに依存したアプリぐらいしか使わないから
APIをそのまま使うのがいいんでないの?
>>426
.NETのLinuxへの移植作業も行われてることですし…。
>>427 LinuxでINIファイル使う気なの?ふつう.confでないかい?
.NET的にはXMLで設定保存がいいと思うんだけどね。
>>428
単純な定義さえできたらいいので、INIで良いかなと。Linuxなら
INIファイルは避けるべきだという理由も思いつきませんし。
けど、このスレの方が作ったXML形式のサンプルもありましたし、
そっちでやってみようかなと思います。
430デフォルトの名無しさん:02/05/08 00:14
#さんのソースですけど、「as演算子」なんてのがあったんですね。
初めて知りました。
Configuration config = serializer.Deserialize(reader) as Configuration;
一瞬、頭の中がVB.NETになったけど、キャストしてるんだ。奥が深い。
>>430
Delでもそうなので、珍しくないというか
あ、荒らしじゃないので・・・どぞよろしく
>>430
キャスト → 失敗すると例外が飛ぶ
as演算子 → 失敗すると null が返ってくる

微妙に違うよ。
const int a = 0;



static readonly int a = 0;

ってどう違うんですか?機能的に。
>>433
初期化できる場所。
>>434
いや、どっちもクラス変数になれるでしょ?
436430:02/05/08 00:34
>>431,432
確かに、ただキャストするのとは違いますね。
でも、VBが嫌いなので、asは抵抗あるなあ(笑)

ところで、皆さんの赤本、黄色本の評価はいかがでしょうか。
赤本の下巻は値段が高くて、目玉が飛び出る思いをしたけど、
下巻に限っては、赤本はなかなかいいですよね。
いっしょじゃね?
詳しくはワカンネ。
>>433
ええと・・・
constで指定された値はコンパイル時に解決され
staticでreadonlyなフィールドは実行時に解決されます
>>436
赤本、黄色本ですか・・・
黄色本って「標準 C#.NET プログラミング」?

まだ1の方しか完全に読んではいないのですが
1の最後の「7章」は間違い探しを楽しめました(w
全体的には分かりやすかったですよ
CD?
441デフォルトの名無しさん:02/05/08 01:45
C#はじめて2週間、だいぶ覚えて来たぞ〜
とこれで、だれか .NET Framework のリファレンスにできるような本紹介してくれませんか?
オンラインヘルプは目がちかちかしてきます。
全ページ印刷しる!
443朝までC#:02/05/08 02:16
デリゲートには、System.EventHandlerとかが使われていますが、
実装したいメソッドのポインタを呼び出し元のイベントに定義するのに、
System.Windows.Forms.ToolBarButtonClickEventHandlerとか、
いろんなポインタの変換みたいなのがあるのは何故ですか?

メソッドのポインタをコントロールに教えるだけなら
System.EventHandlerの1種類だけでいいような気がするのですが、
いろいろあるのは何か理由があるのでしょうか?

引数のデーターベースになっていてそれぞれ固有の情報を
渡しているとする割には、コントロールとデリゲート用の
なぞの変換関数?のネームスペースが違っていて
夜も眠れません。
>>442
俺はチャレンジしたけど400ページくらいで諦めた。。。
>>444
バカハケーン
黄色本、標準 C#.NET プログラミングだけど
ま、訳書独特の文なのは仕方ないとしても一つ一つの説明がくどい感じがする
その聖で要点がボケしまってる気がしないでもない

ドキュメントの?な部分を分かりやすく書き直したAPIリファレンスみたいな本が欲しいかな
言語仕様の本ならともかく、
クラスライブラリまで解説した本は出ないだろ
>>447
オライリーがJavaの出してるジャン。
あんな感じのあったらおれも欲しいな。
.net frameworkのクラスライブラリは
これから何年も付き合うものだからね。
本があってもいいと思うんだけど。
>>443 そらイベントプロパティの型が色々あるからでは?
450デフォルトの名無しさん:02/05/08 06:29
お前ら、今DirectXを.netから使うとしたらやっぱりDLL関数を直接コールが
一番ですか?
           ♪ シィシィシィ ♪
      ∧∧       
     (゚ー゚#)      
 ((( ;;"~;;;"~゛;;)  
  . ミ;,,_,ミ;,,_,,;ミ     

           ♪ シィシャープ ♪
      .∧∧       
      (#゚ー゚)      
    (;;"~゛;;;~゛;; )))  
    . ミ;,,_,,;ミ,_,,;ミ    
Hashtable
  String
  Hashtable
    String
    String
みたいに2層のデータ構造作ったんだけどXmlSerializerで
Serializeできない…。出来る物なの?
453デフォルトの名無しさん:02/05/08 07:24
ArrayListの要素をfor文でアクセスするとき
((Hoge)ar[i]).xx = yy;
とかなって見にくくなるんですけど何か方法あるんですか?
(foreach文除く)
454デフォルトの名無しさん :02/05/08 07:44
450の自己レスです。
こんなのがありました。
http://sunlightd.virtualave.net/Windows/DirectX.NET/
これを試してみます。
455452:02/05/08 07:57
Hashtableそのものが無理っぽいな…。
>>455 ISerializable実装してるからできるんじゃない?やってないからわからんけど。
>>448
ワニ本のことかな?

http://www.oreilly.co.jp/BOOK/jexam2/
逆にドキュメントを丸々プリントアウトしたような本はカンベンだね
2 in 1 で印刷しる
>>456
ISerializableとXmlSerializerは関係ないよん。
吉松さんが1年前に解決してたよ。。。ヽ(´ー`)ノ
http://discuss.develop.com/archives/wa.exe?A2=ind0108B&L=DOTNET&D=0&P=12453
>>460 なるほどねぇ、、出来ないときは素直にIFormatterでSerialize
するほうがいいのかな、無理やり出来そうだけど激しく面倒そう、、
462452:02/05/08 10:28
>>462
それだとSOAPになっちゃうんだよね。。。
464452:02/05/08 10:55
SoapFormatterで出来たことは出来たけど…。
>>452で書いた形式のデータ一つだけで、1.59KBいったよw。
ソースコードは短くて楽なんだけどなぁ。
ControlのTextプロパティに"&Hoge"と設定するとHにアンダーバーがつくけど
これをやめたい。Controlクラスを継承したクラス内でStringformatの
HotkeyPrefixプロパティを変更するとできそうなんだけどやり方がわからない。
だれか良い方法知ってます?
あ、"&&Hoge"ってのは無しにして。
UseMnemonic=falseじゃなかったっけ?
467465:02/05/09 09:25
>>466
LabelクラスにはUseMnemonicあるんだね。なんで他のにないんだろ?
468FERC.NET:02/05/09 13:06
>>465
こんな感じでしょうか?
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) {
  e.Graphics.DrawString(text, this.Font, SystemBrushes.WindowText, this.ClientRectangle, new StringFormat());
}
すみません。

C#標準リファレンスのクラスの所に

internal:アクセスはこのプログラムに制限される。

とのことなんですがいまいちよくわかりません。
教えてもらえないでしょうか?
数学関係のパッケージはsdkには含まれていないのでしょうか
行列はクラスがあったんですがベクトルとか複素数は見つかんないです.
自分で作れちゅうことですか?
>>470
>ベクトルとか複素数は見つかんないです.

贅沢だと思う。
クラスライブラリに溺れすぎないようにがんばろう!
472470:02/05/09 19:30
>>471
確かにそのとおりですね.ただ,自分の探し方が悪いのかなと思ったので聞いてみたんです
モジュールを作る練習を兼ねて自作してみようと思います
>>469
同一アセンブリからアクセス可能という意味です。
>>474
AをBの1モジュールとしたときBからAのinternalなメソッドなりプロパティにはアクセス出来ないんですか。
具体的な使い方がいまいちわかりませんが何となく概念はわかりました。
>>475
リフレクションを使わないと無理。
こういうときVB.NETが最強。
477470:02/05/09 22:06
>>473
どうもです.とりあえずのベクトルのクラスができたので.次はそこを参考に
複素数クラス作ろうと思います.
その前にコメントから生成されるxmlから,テストケースを作るプログラムに挑戦してみようかな..
478470:02/05/09 22:14
「xmlから,テストケースを作るプログラム」じゃなくて
「xmlから,テストケースのソースを吐き出すXSL」の方がいいのかな
知ったかぶりな書き込みしてスミマセン
479デフォルトの名無しさん:02/05/10 11:42
C#スタンダードを購入してDBとWEBの連携を勉強しようと思ってます。
DBはAccessとかMySQLを考えているのですが、
C#スタンダードでもWebDBアプリは開発は可能ですか?
DBを使って単純な掲示板みたいなプログラムから始めようと思ってます。
>>479
(Accessはもちろん使えるけど・・・)
MySQLって使えるんでしょうか?
一度確認の必要がありそうですね
MSDEでいいんでないの?
482479:02/05/10 11:59
まだ実装したことが無いので詳しくないのですが、
ODBC経由で使用したいと考えていました。
(他にWin環境でもっと良いインターフェイスがあるのでしょうか?)
ODBC経由のAccessがOKならMySQLもOKかなって思っています。
483479:02/05/10 12:04
MSDEならOKということですか。

ttp://www.microsoft.com/japan/msdn/vstudio/productinfo/featureview.asp
に表示されているデータベースツールの項目の内容を誤解していたようです。
>>482
>ODBC経由のAccessがOKならMySQLもOKかなって思っています。
今のところParadoxとFirebirdはODBCドライバがあるにも関わらず
.NETでは使用できていないので.NET対応のドライバが必要になると思います
485デフォルトの名無しさん:02/05/10 12:42
>>480
使えるよん。ODBC.NET + MySQL で実験した結果おっけーだった。
>>485
おお、サンクス
>>485
#さん?
>>479
ちなみにMySQLのADO.NETドライバもあるよん。漏れは試してないけど。
http://discuss.develop.com/archives/wa.exe?A2=ind0205A&L=DOTNET&P=R23601
やっぱ、#さんか(w いつもお世話になってます
490479:02/05/10 13:03
.NETファミリー製品別機能一覧表では

・データベースの作成、クエリ (MSDE)
・データベースの作成、クエリ (SQL Server)
・SQL スクリプトの作成

この3つの項目はC#スタンダードはサポートされていませんでした。
この3つの項目ってどういう機能なんでしょうか?
>>490
「鯖側の機能は無し」ということでしょうね
>>489
違うよ。
493479:02/05/10 13:56
レスしてくださった方々、ありがとうございました。
私が希望していることはC#スタンダードで問題無さそうなので
購入することにします。
パス(C:\hoge\hoge)から、それがファイルなのかディレクトリなのか判別する
にはどうしたらいいでしょう。
System.I0探してみたんですが、見つからない、鬱。
495名無しさん♯:02/05/10 18:39
>>487
>>489
両方ともちゃいますよん。
っていうか、漏れでも見分けがつかない。(藁
>>494
Console.WriteLine(Directory.Exists("c:\\temp"));
Console.WriteLine(File.Exists("c:\\temp"));
これでいけたよ。
>>496 ありがとうございます。うまくいきました。
498朝までC#:02/05/10 20:59
「標準C#.NET 1」と言う黄色い本でC#を勉強しています。
P78〜79のサンプルでよくわからないところがあります。

using System;
class ObjTest
{
〜中略〜
ObjTest c1 = new ObjTest();
〜中略〜
ObjTest c2 = c1;
Object c =c2;
〜以下略
c2への参照の代入は型が合っているので納得できるのですが、
cへの参照の代入は、System.Objectクラスの参照型への代入なので
エラーになるように思えます。
何故なのでしょうか?

たしかにVBではObject型に好きなオブジェクト型をいれれたので、
それと同じといえば同じですが、もっと型に厳しい言語ですよね?
ここだけアバウトなのでしょうか?
>>498
すべてのオブジェクトはSystem.Objectから継承されている。
子の型は親の型の参照型変数に代入できる。
>>498
オブジェクト指向の基礎を学べ。
501朝までC#:02/05/10 21:06
>>499 >>500
回答ありがとうございます。
すべての元でToString()とかもここから来ているのは
わかっていましたが、より源流?のオブジェクト型に下流?の型の
代入が出来るのですね。ありがとうございます。
>>501
そのためのオーバーライドですw。
オブジェクト配列もオブジェクトに代入できてしまうのはなんか違和感がある・・・。
>>498
そいつは「ポリモーフィズム」という機能だ。




・・・というか、黄本って、その辺の説明ないんか…
>>503
まぁ,配列も Array クラスだし...
>>505
インデクサ大活用って感じですか。
507デフォルトの名無しさん:02/05/10 22:18
>>504
黄本の「はじめに」に書いてある対象読者は
・何らかの最新のプログラミング言語(C++、Visual Basic、Javaなど)の知識を
 持つ経験のあるソフトウェアのプロフェッショナルであること
・オンラインヘルプを調べることに抵抗がないこと(さらに、恥ずかしがること
 なく、よく調べること)
となっているから

オブジェクト指向の基礎くらいは当然分かっているというのが前提と思われ
(ソフトウェアのプロフェッショナルなんだから)
>>507
3つ中2つがオブジェクト志向型言語だもんね(後1つは敢えて認めません)。
>>508
ヴァカ?
recvした内容をデコードする標準関数ってないの?
>>508
確かにC++は違うよな。
512朝までC#:02/05/10 22:34
VBからC#に行く人の多くは、VBでのObject型に
いろんなオブジェクトを入れることが出来たのを、
オブジェクト指向の基礎とは思ってないと思うよ。
VB自体のいろんなところに偽物オブジェクト指向が満載だから、
C#に移ったときにどれが偽物でどれが本物だったかを確認することに
なるのです。C++やJava、Delphiから入る人は
そうじゃないのかもしれないけどね。
>>512
VBのObjectってvoid *みたいなもんじゃないの?
>>512
Variantはpolymorphicだ!とか言ってみるテスト。
515朝までC#:02/05/10 22:37
うん、そんな感じ。
516朝までC#:02/05/10 22:40
>>514
なるほど・・・Integerやfloatの親だったのか!!
VB設計したのは、ObjectやVariantにそう言う意味を
込めて実装したのでしょうか?

実は昔の宣言なしな何とでもなる昔のBASIC
の名残ですよね。
C#もすべての値型もSystem.Objectから派生している罠。
インターフェースと強く型付されていない「何でもバケツ」なんて最悪。
おまえらアホか。社会人 PG 何年やってんだ。
519デフォルトの名無しさん:02/05/10 23:06
ところでC#のメーリングリストでいいとこある?
一番上のでいいんじゃない?
522朝までC#:02/05/10 23:19
当然、なんでもバケツが良いとは思ってないよ。
すでに書いているように昔のBASICの悪習の名残だと思っている
書いているようにね。
>>522
そうか、安心した。
いや、ちょっと Java の使い方覚えたのプログラマ連中が Object 型や
そのコレクション使いまくって悲惨なことになったプロジェクトのケツ
拭いた事あるもんでな。
まぁ抽象性を高めるのと曖昧性を高めるのとじゃまったく逆方向だって
言いたかっただけ。OO やってる誰もが通る道なんだろうけど。
>>521
つーか、一番上の以外ほとんど投稿なかったと思われ。
ついでに言うと、一番上のも今一盛り上がってなかったり。
このスレの方がよっぽどいい情報そろってる。
526朝までC#:02/05/11 00:37
なるほど・・・C#のObjectは、params修飾子とかで
使えるわけですね。
これはこれでワイルドな感じですが、
よくあるConsole.WriteLineの引数は、良い実装例ですね。
527デフォルトの名無しさん:02/05/11 11:39
現在のキー状態を取得するにはGetAsyncKeyStateを使わなきゃだめですか?
.NET Frameworkの範囲でどうにかなりますか?

ヘルプ検索してもうまく出てこない知っている人いたら教えて。
>>527
C#で出来る−>.NETの範囲じゃないの?
>>527に便乗で、
マウスの状態を取得する方法、わからないです。
だれか教えてください。
>>529
お前らさぁ。Form使ってるかどうかも書かないでよくもまぁぬけぬけと。
昼間っから何度もぬけぬけと。
全然関係ないですけど、
.NETフレームワークって雑誌のCDとかに付いてないですかね?
WindowsUpdate↓でこんなことになってるんで
メンドクサイです。とくに時間が・・・

Microsoft .NET Framework 日本語版
22170 KB/ ダウンロード所要時間: 5 時間 54 分
.NET Framework は、Windows の新しい機能です。
.NET Framework を使用して作成したアプリケーションは、
信頼性と安全性がより高くなります。
.NET Framework は、.NET Framework が必要な
ソフトウェアを使用する場合にのみ、インストールする必要があります。
最初にお読みください
>>532
ブロードバンドしてない人は死ぬ運命です。
あのー日本ではブロードバンド人口って
言うほど多くないんですが・・・・
>>534
あの会社はアメリカ中心です。
winXPのSP1には添付されるんじゃないかなあ。
つまりそれ以降にPC購入した人には自動的に入ると。
ブロードバンド率ってアメリカより日本の方が上じゃなかったっけ?
>>537
ウリナラが世界一ニダ
IE コンポーネントを使用しているのですが,BeforeNavigate2 イベントが発生されなくないですか?
もしかしたら漏れだけなのかな...
540527:02/05/11 16:42
あー、失礼。コンソールアプリなのでFormのOnKeyDownとかは使えないのです。
Console.ReadとかだとEnterキーが押されるまで待ってしまうので、WindowsAPIのGetKeyState等を使えば
できるのはわかっているのですが、.NET Frameworkの中に関数としてないかな?と思いまして。
なるべくWinAPIを直接呼ぶのは避けたいもので。
>>540
getchar
542539:02/05/11 16:50
http://news.devx.com/cgi-bin/dnewsweb.exe?cmd=article&group=csharp.general&item=3155&utag=
検索したら一発で出て来ちゃった...
スレ汚しスマソ
>>539
ほんとだ。呼ばれないね。
544デフォルトの名無しさん:02/05/11 16:59
Winでぐりぐり動くゲーム作れますか?
描画ライブラリとかに簡単にアクセスできますか?
>>544
Terrarium 3世代目 tabataって死滅しちゃうの?
http://pc.2ch.net/test/read.cgi/tech/1020339546/l50

このスレ>>1から参加していけば真実がわかる。
546539:02/05/11 17:07
IE コンポーネントでリンクをクリック

それを標準のブラウザで表示させるために BeforeNavigate2 イベントで Process.Start(e.uRL); としたい

呼び出されない

ガ━━Σ(゚д゚lll)━━ン

うーむ,どうしたものか...
547539:02/05/11 17:39
デキタ━━━━━━(゚∀゚)━━━━━━!!

http://www.syncfusion.com/FAQ/WinForms/FAQ_c100c.asp#q842q
>>547
なんかVJ++の頃を思い出す泥臭さね。(藁
549 :02/05/11 19:27
Double scale = 80/96;

でやると0が入ってきてしまいます。
どうして?
int/int = int だから。
551 :02/05/11 19:30
どうしたら結果が入りますか?
80.0/96
C# で 定数テーブルを作りたいんだけど、どうすればいいのか、わからないです。

c/c++でかけば、
const int table[5] = {1,4,9,16,25} ;
こんな感じのもの。

>>553
static readonly
555デフォルトの名無しさん:02/05/11 21:16
あの〜かなり初歩的なんですが
文字列が数字として認められるか(変換できるか)判断するにはどうしたら
IsNumeric関数みたいなやつ
>>555
ToStringにかけると例外出ちゃったりする?
557朝までC#:02/05/11 21:35
たとえば、intならIntのParseメソッドかな?
558半分ネタだが:02/05/11 21:55
bool b1 = Microsoft.VisualBasic.Information.IsNumeric("10");
bool b2 = Microsoft.VisualBasic.Information.IsNumeric("a");
>>558
そのnamespace自体がネタでしょ。
>>559
ちゃんとコンパイル通るよ。
561朝までC#:02/05/11 22:08
それは、旧VB互換のやつですね。・・(^^; 実在するしちゃんと動くと思うけど。
>>561
Framework2.2で推奨されなくなりFramework2.5から実装されなくなる罠w
563朝までC#:02/05/11 22:10
私は気持ち悪いので使わないけど、それ本当ですか?
>>563
いや、果てしなく冗談です。
でも、ありえないとh(略
というかVBプログラマをどこまであまやかさせるんだろ>ms
たまには厳しさを見せるのも親心ってもんだ。
566555:02/05/11 22:22
たとえば入力された値が数字かどうか判断したいんす
エラーチェックとして
みなさんどうなさってるんでせうか
>>566
関数がなければ文字コード調べる。
568朝までC#:02/05/11 22:29
独立したエラーチェックなしで、Parseメソッドで
いきなり変換をかけて駄目だったらエラーをcatchする。
569555:02/05/11 22:30
>>567
やはり1文字ずつチェックするしかないのですか...鬱だ
チェック用のクラスでも作るか
570朝までC#:02/05/11 22:33
1文字づつチェックする方法なら正規表現のクラスが
あるのでそれで確認するとちょっと楽かも?
C#のライブラリ、バグだらけ。
使い物にならん。
>>571
具体例挙げない場合は言われなき誹謗中傷と見なします。
根拠のない煽りは放置
>>571
最初の1行だけで初心者かどうかが分かるね(藁
string s1 = "test";
string s2 = "てすと";
Console.WriteLine(s1[1]+s2[1]);

とやると 12478という数字が出力されるんだけどバグかな?

Console.WriteLine(s1[1]);
Console.WriteLine(s2[1]);

はそれぞれe, す とうまく出力されます。
>>575
ごめん、もしかして+演算子の動作を誤解してたかな?調べてきます。
577575:02/05/11 22:54
単にchar型だから足し算されただけか…吊ってきます
>>575
s1[1]ってchar(16bit)じゃないの?

char + char = int
>>575
で、君は>>571で良いのかな?
だったとしたら今すぐMSに謝れ!
580デフォルトの名無しさん:02/05/11 22:58
C#の言語仕様、嘘だらけ。
シャレにならん。
581575:02/05/11 22:59
蛇足ですが、意図したように動かすには
Console.WriteLine(new string(s1[1],1) +s2[1]);
ですね。
582朝までC#:02/05/11 23:05
>>581
それは、文字列は変更できない、変更後のオブジェクトを
用意しないと駄目だってやつですね。
そのために、自在に文字列の編集をしたいときは、
StringBuilderオブジェクトに入れないとだめ・・
と勉強しながらですが、これでいいですか?
うぜえ、隔離スレに逝け
>>581
表示したいだけだったらこれでいけるよ。

  Console.WriteLine( new char[] { s1[1], s2[1] } );
>>575
素直にコレじゃいかんの?

Console.WriteLine(s1+s2);
>>585
仕様変わってますがな。
>>586
スマン
よく読んでなかった
588585:02/05/12 00:03
>>587

お詫びにこんなんどうすか?
あんま綺麗じゃないけど

Console.WriteLine(s1[1].ToString() + s2[1]);
589585:02/05/12 00:05
うう

>>587 じゃなくて >>586 です

鬱だ
>>588
なるほど。いろんな方法がありますなあ。
ところで
s1[1].ToString() + s2[1]

では+の左側がstringなので右側もstringに変換されますよね?
なのにcharをstringにキャストすることはできない……なぜ?
591デフォルトの名無しさん:02/05/12 00:16
charは文字列関連メソッドを持った数値であり値、Stringは参照。
charどうしだと、数値の足し算。Stringを混ぜるとStringの演算子の
オーバーロードで文字列の結合が発生するのかな?
>590
char.ToString じゃ駄目なの?
charは単なるunsigned shortだととらえたほうがいいと思うがなあ
>>590
ボクシングは出来そうだけどね。
>>593
System.UINT16の別名で良いの?ushortもcharも。
596590:02/05/12 00:23
自動的な型変換が起こるときは裏でキャストされているのかな、と思っていたのですが、
キャストとも違う処理が行われているんでしょうか。
597朝までC#:02/05/12 00:24
>>595
ちがうよ。charは、ユニコード用のメソッドとかが追加されている。
>>597
しかし、operator +()はushortな動きをするのね。

まぁ、そっちの方が

data[i] + '0';

とかするのに都合は良いか。
みなさーん、バカ↓が湧き出してきました
John ◆0z.4Is5E
いろんな板で誹謗を繰り返しています。
よっぽど自分に自信が無いんですね。

放置よろしくお願いします。
みなさーん、バカ↓が湧き出してきました
         >>599
>>599-600
誰でもいい、荒らすな。
602朝までC#:02/05/12 00:31
>>598
今調べたらStringで演算子のオーバーロードがかかっているのは、
=と!=だけだった。まだまだ謎がありますね。

>data[i] + '0';

たしかにこれは使いたい。
Console.WriteLine(s1[1] + s2[1]);

(s1[1] + s2[1]).ToString() が表示される。だから char + char で数値のまま。

Console.WriteLine(s1[1].ToString() + s2[1]);

( s1[1].ToString().Concat(s2[1]) ).ToString()が表示される。だから連結文字列になる。
604603:02/05/12 00:38
IL見たらちょっと違ってた。ごめんちゃい。

( String.Concat(s1[1].ToString(), s2[1]) ).ToString() みたいね。
>>603
つまり、string型が要求されるところにstringが来ると、自動的にToStringが呼ばれるわけですよね。
それ以外の自動型変換、たとえば
int i; double d; で i + d とか書いたときはキャストが起きているのでしょうか。
stringの場合だけToStringを呼ぶような仕組みになってんのかな。
>>605
打ちミスった。string型が要求されるところにstring型以外の変数が来ると、
の間違いです。
>>605
stringかどうかということよりは、ただ単にobject.ToString()を呼んでるだけだと思われ。

ちなみに、Console.WriteLine(i + d); は
( (double)i + d ).ToString() ね。
>>607
Object.ToStringって何してるの?オーバーライドされる前は。
>>608
ほい。Object.ToString() のソース。

  public virtual String ToString()

  {

    return GetType().FullName;

  }
>>609
あーあー、改行コード変になちゃーた・・・。
611607:02/05/12 01:00
>>606
スマソ。正解です。
stringにはわざわざ ToString() してない模様。
>>609
なる。Object(System.Object?)って文字列が帰るのか。

ソースって何に付いてくるんですか?
次から自分で調べようと思います。
613朝までC#:02/05/12 01:02
うーむ なるほど。 >>609 さんの情報ソースはどこですか?
>>565 俗に言う「囲い込み」というやつかと
616朝までC#:02/05/12 10:47
デザインパターンと呼ばれる「良くあるパターン」の辞書みたいなのが、
C++などであるようですが、C#の場合は、
それに関するツールのようなものが存在するのでしょうか?
それとも、デザインパターンは概念であり言語に依存しないので
しょうか?
>>616
依存しないと思うぞ。
618C ◆Hqkk7dyk :02/05/12 11:25
さっき初めてC#で書いてみたけどアプリの起動がやたら遅く感じる
のは俺だけですか?コンパイルは早いけど・・・
619朝までC#:02/05/12 11:38
>>617
ありがとうございます。と言うことは安心してデザインパターンの本を買えますね。
ここ最近、VBからC#へ移行として勉強して思ったんですが、
旧来のベテランがやっていた工夫を言語のほうが合わせたって感じですね。
オブジェクト指向を知らなくてもベテランにとっては、
ややこしく工夫していたところを簡潔に書けるように
なっただけで、初心者にはベテランの工夫を言語で矯正すると
いった感じに感じました。
当然、新しい言語仕様だから出来る機能もありますが・・

>>618
開発環境での起動はめちゃめちゃ遅いのでマシンを買い換えました。
実行ファイルだけだとそうでもないでしょ?
>>619
>開発環境での起動はめちゃめちゃ遅いのでマシンを買い換えました。

元のスペックと新スペックを教えてください。

テラリウム見てる分には割と軽いですね。(Duron 900)
621朝までC#:02/05/12 12:11
元は、セレロン566でメモリー256MBでした。
今は、P4 2Gでメモリー1GBです。

実行ファイルの方が早いと思うけど本格的なサイズのは
まだ作ってないので実行ファイルについてはなんとも言えないです。
>>621
う〜む、Duron900は判断が出来かねますな。
仕方がないので人柱になります。情報助かりました。
起動時にフォームアプリを起ち上げたり、ASP.NETのページにアクセスしておくと
その後は初回起動も速くなるよ。
要はネックはJITコンパイルじゃなくてランタイムのロードの方だから、
あらかじめキャッシュしておくと。
将来のWindowsは.NETアプリだらけになるだろうから、自然にこのキャッシュ効果が
出て初回起動の遅さはそんなに気にならなくなるだろうね。
漏れの場合、Duron800/640MBだったころは、
初回起動に15〜20秒ぐらいかかってたかな。
二度目からは平均5秒ぐらいだったよ。

#A1800+に移行してるんだけど、環境戻しで
#トラブってるんでまだテストできてません。
625デフォルトの名無しさん:02/05/12 14:13
>>616
依存しないけど、一部はライブラリに取り込まれてたり、ライブラリの他の機能で代替できる
のもあるよん。

VBやってたなら、VB/VB.NET用のデザインパターンサンプルを見てみると吉。
俺はPenV650/256MBだけど (゚ε゚)キニシナイ!!
PenV1G,512M起動遅し・・
628デフォルトの名無しさん:02/05/12 15:13
C#から作成したEXEって、
Win32ネイティブにできないんだよな?
629朝までC#:02/05/12 15:18
やったことないけど、ハードディスクに落とす瞬間にコンパイル
されてしまう方法があるそうだよ。(実行時ではない。)

頒布は環境に非依存でハードディスクに置けばネイティブって
ことかな?

>>625
ありがとう調べてみます。
630朝までC#:02/05/12 15:30
IEnumerableインターフェース(発音がわからない)についてですが、
IEnumerableで、GetEnmumeratorを実装させて、
戻り値のインターフェースのIEnumeratorで、
本当に欲しい機能であるReset,MoveNext,Currentを
再度インターフェースしているわけですが、なぜこんな2段が舞えに
しているのでしょうか?

IEnumeratorだけを実装してIEnumeratorであるかどうかだけを
チェックしてからreset....などのメソッドを使えばいいはずですよね?
同じ名前のメソッドでかぶったら面倒だぞう。
ちょっと面白かったので紹介。

C# FAQ
http://www.geocities.com/csharpfaq/

アンチな人のページなので心して読むべし。
>>632
面白かった。
>>632
まあJava厨も必死だなというか何というか。
IBM、Oracleが.NETに力を入れ出したので焦ってるのだろうけど。
635デフォルトの名無しさん:02/05/12 18:29
>>629
それは無理。中間コードも必要になるしね。
>>630
それだとEnumerableな型自身がEnumeratorも実装しなければならない。
Enumerableな型が自分の列挙を他の列挙子に頼むことは十分考えられる。
PenII 233MHz、160MB めっちゃ重い。
でもキャッシュされるとかなりいい。
Javaの糞さに比べたらはるかにまし。
>>630
そりゃあんた、例えばさ、C++だとポインタ使って

int array[N];
int* end = array + N;
for(int* p=array; p!=end; ++p)
{
for(int* q=array; q!=end; ++q)
{
//何らかの処理
}
}

ってやるだろ。
この int* p, q みたいに、現在どこを指してるかを保存しとく変数が必要なんよ。
それを用意するのが Enumerator の役目。
カーソルともいいますかね
>>638
スタックで言うところのスタックポインタですな。
641デフォルトの名無しさん:02/05/13 00:36
ComboBoxにに入力した文字を、カーソルで選択したいのですが、できません・・・。
どのようにすれば良いのでしょうか?ご存知のかた、よろしくお願いいたします。
/docで出力されるXMLのために,元のソースに勝手に新しいXMLタグを
追加するのはまずいですか?
>>641 あれなんでだろうね。使いにくいったらありゃしない。
漏れも未だに分からず。。
644デフォルトの名無しさん:02/05/13 10:12
実行ファイルのパス名を取得したいのですが、
VC++でのGetModuleFileName
VBでのApp.Path
に当たる物は何でしょうか?
.NETでは「アセンブリ名」になるよ。アセンブリを読み込んで実行する
主体は AppDomain なので、AppDomainから辿ってみてください。
>>631 >>636 >>638 みなさま解説ありがとうございます。
>>638 さんの言われるようにEnumerator がコレクションを
管理する情報が入っているのはわかりますが、
それを実装するクラスの宣言にIEnumerableもIEnumeratorも両方とも
入れてしまっているので、>>631 と >>636 さんの言われるメソッドが
被る件については、どのみちインターフェースを指定して
アクセスしているのでは無いでしょうか?
MSDN見てて思ったんだけど
SByte ←何でInt8じゃないんですか(;´Д`)
Int16
Int32
Int64
>>647
C++よりはましなんだから (゚ε゚)キニシナイ!!
649デフォルトの名無しさん:02/05/13 12:00
Bitmapクラスから生成した8bitインデックスカラーのビットマップ
における各ピクセルのインデックス値ってゲットできないんですか?
もしかしてLockBitsしてバイト単位で見ないとダメ?
なんかGDI+って256のイメージ扱おうとすると
ものすごく不便なんですが・・・
それと、ベースクラスを直接使う必要はほとんどないでしょ
651朝までC#:02/05/13 12:05
みなさん、コメントはどうされていますか?
いままで、
//===============================================================================
// ××定数定義
//===============================================================================
とか、そんな感じで付けていたのですが、
黄色本「標準C#.NETプログラミング1」のP299によると
ソース中にXMLを書いてVS搭載のWebページビルドで
ドキュメント化が可能だと言うことがわかりました。
やってみたのですが、それをやるとタグがうるさくなってかっこわるいです。
int i; //ループ変数
もうちょっとスマートに自動でドキュメントを作成したいのですが、
良いアイディアはありますか?
VBの頃はHotDocumentを使ってソースから
ドキュメントを生成していました。(無意味にデカイドキュメントが出る)

出来たらコメントからテスト仕様書(チェックリスト)とかも
出るようにしていきたいなぁ
コメント無しでも理解できるコードを書くのが基本。
>>652
そういう問題じゃなくて。
>>653
いや、なにぶん示された例が
> int i; //ループ変数
だったもので。
655朝までC#:02/05/13 12:25
>>652
個人的には、ソースはきれいでかつコメントが十分ついていて、
ソースさえあればドキュメント少なくていいようにしたいです。
(それが一番わかりやすいしバグも少ない。)
ドキュメントは概念図とテーブル設計書、プロトコル関係、
取り扱い説明書だけで終わることを目指しています。
それ以外に、より便利にするために活用したいと思っています。
>>631
メソッド名がかぶっても明示的に実装すれば問題ないよん。

interface Foo1
{
  void Bar();
}

interface Foo2
{
  void Bar();
}

// explicit implementation. (問題なし)
class FooImpl1 : Foo1, Foo2
{
  void Foo1.Bar() {
  }

  void Foo2.Bar() {
  }
}

// implicit implementation. (やや問題あり)
class FooImpl2 : Foo1, Foo2
{
  public void Bar() {
  }
}
>>655
賛否両論だと思うけど、
コメントがついてる=コメント無しじゃわかりにくいコード
ということは頭の片隅においておいたほうがいいかも
658朝までC#:02/05/13 12:36
コメント無しでも判るがコメントも付いているを目指します。
判りやすい・判りにくい と コメントが付いている・付いていない
は別だと思います。
659デフォルトの名無しさん:02/05/13 12:41
>>657
コメントなしで分かりやすいプログラムにコメントをつけると分かりにくくなる理由とはなんでしょうか?
660デフォルトの名無しさん:02/05/13 12:43
>>659
必ずしもわかりにくくなるわけじゃないけど、修正を加えていくことでコメントとコードの
整合がとれなくなったりすることが多いね。
661デフォルトの名無しさん:02/05/13 12:50
たとえば関数のインターフェイスとか利用方法のコメントなんですが、
これはいくら変数名を工夫したからといって、
付けてもらわないと困るとおもうのは私だけだろうか・・・・
いちいち全部関数の本体読めってか、やだなぁ
662朝までC#:02/05/13 12:50
>>660
慣れれば、ちゃんと合ってないといられなくなるよ。
>>659
別に俺はそんなこと言ってないけど。
本当にわかりやすいコードはコメントをつける必要なんてないってこと。
でもいつもそんなコードが書けるわけじゃないからコメントが必要になるけど。
コード無しでも十分わかりやすいコードにコメントをつけるとしたら、それは無駄な作業だと思う。
>>661
それはコメントしておいていい部分だと思うよ。
もちろんドキュメント化も。
665朝までC#:02/05/13 12:54
>>661
同感です。
実はコメントネタが終わったら、その時の終わり方次第ですけど、
変数名などのプレフィックス?(int intPtrBuff;とか)
についてもみんなどんな工夫をしているのか聞くつもりでした。
関数の機能くらいは大抵コメントしておくでしょ

問題はその中身にどこまでコメントをつける必要があるかということだよね
>>666
そそ。
コメントには2種類あって、
コードを読み飛ばすためのものと、コードを読むときの助けになるもの。
前者は大いに書くべき、いちいちコードを読み直すのは無駄。
後者も書くべきだけど、まず書かずに済む方法を考えたほうがいい。
>>658-659
657じゃないけど、
↓みたいなコメントは、蛇足でしょ。そう言うプログラムを目指せってことかな。
 // リストにオブジェクトを追加
 list.add(object);
もちろん、
 // リストにオブジェクトを追加
element = new ListElement();
 element.value = object;
 element.next = list.top;
 list.top = element;
にコメントを付けるなという意味ではない。
(こうするくらいなら、手続きにまとめて上のようにしろって事)

この例では、低レベルな処理を例としたけど、
もっと抽象どの高いレベルでもそうしたほうが良いでしょうという話。
まぁ、当然のことを言ってるだけなんだけど(でも守るのは意外と難しい)
669657:02/05/13 13:04
>>668
YES!!
670C ◆JhEYj/RI :02/05/13 13:06
コメントを書くということは、プログラムに、関数のシグネチャやコード自体を
見ただけでは分からない(分かりにくい)、処理や機能が含まれているということですな。
そう言うのは少なくしたほうが、結局は読みやすくなる。
>>665
自分の場合は
・英語の綴りは、慣用となっているものを除き、原則として省略しない
・引数であることを関数内部でも分かりやすくするためかならず頭に a をつける
 (例:int aMemberID)
ですけど
>>671
俺はCで引数は常にconstにして引数以外の目的で使われることを防いでたんだけど、
C#ではこれ出来ないの?
>>672
別のキーワードがあったはず。
>>673
う〜〜ん言語仕様も見てみたんだけど無いっぽい・・・?
C#のパラメータの修飾子を見ると
呼び出し側の便宜を図ることだけを考えているみたいだね

ref:参照呼出し→パラメータの中身は変更される可能性があるよ
out:出力専用呼び出し→パラメータは初期化しなくてもいいよ
という感じなのに対して

値渡しの場合は
呼び出し側から見れば内部でどう変えられようと構わないから
わざわざ変更不可を指示する必要もないかな・・・という具合
ローカル変数にも使えない模様
リファクタリングにけんか売ってますか?
677644:02/05/13 15:37
>>645
ありがとうございます、出来ました。
678sage:02/05/13 16:25
初歩的な質問で恐縮ですが、
Imageクラスを継承したMyImageクラスを作ろうとしたら
System.Drawing.Image.Image()はアクセスできない保護レベルになっています。
って怒られて出来ません。
ソースは
public class MyImage : System.Drawing.Image
{
ってやってるだけですが、こういうのは出来ないのでしょうか?
>>678
System.Drawing.Imageがsealされてるとか。
>>678
Imageクラスのコンストラクタはinternalなので、
同一アセンブリ(System.Drawing.dll)内でないと
たとえ子クラスでもアクセス不可。
681678:02/05/13 16:57
>>680
なるほど。そうでしたか。
要するに出来ない様にしてあったワケですね。
どうもありがとうございました。
>>672-674 readonly っすか?見当違いならスマソ
>>682
あれってstatic以外にも使えるの?
それ以前にローカルやパラメータには使えないじゃん>static, readonly
685682(見習い Lv.0x01):02/05/13 18:14
>>683
>>683 使える…と思う(自信なし)

赤本(「実践〜」のP129)みたら、
こんなコード↓載ってたよ。

public class Account
{
 public readonly string sortCode;

 public Account(string code)
 {
  sortCode = code;
 }
}
686682:02/05/13 18:23
>それ以前にローカルやパラメータには使えないじゃん>static, readonly

       》
     Λ《Λ  < そーでした。ちと吊ってきますー
    ( / ⌒ヽ
    ノノ   ノ     (´´;;;    (´
    (ノ  /ノ  ≡≡≡≡   (´´
    ノ ノノ ≡≡≡≡(´⌒(´⌒;;≡≡
   (ノノ     (´⌒(´⌒;;
    ̄ ̄ ̄ ̄ ̄ ̄

# ref/out かなぁ…
687682:02/05/13 18:26
>>675でref/outがいしゅつだった…スンマセン…
VS.NETスレで同じ質問をした者ですが
こちらの方が良いと言われ、参りました。
マルチポストになってしまいますがどうかご容赦ください。


C++とC#のコードを連携させようと思い
C#アプリとManaged C++ライブラリを
一つのソリューション内に作って
C#アプリがC++ライブラリを参照するようにしたのですが、

LNK1104: コンパイラは、ファイル 'xxx.dll' を開くことができません。
(xxx.dllはC++ライブラリの名前)

と出てライブラリが更新できないのです。

VSがxxx.dllとリンクして解放しないようなので
仕方なく、IDEを終了してxxx.dllを削除することで
改めて一回ビルドできるようにしているのですが、
何か解決策はないでしょうか?
よろしくお願いします。
C#を使い始めて4日ですが、分からない事があるので教えてください。

C++では他の人が作ったライブラリを使う場合でも、クラス情報はヘッダで
提供されますけど、C#ではdllに埋め込まれているからヘッダは必要ないん
ですよね?

その場合にdllから人間が読める形でクラス情報を抜き出す方法はあるので
しょうか?

ちなみにFrameworkSDKを利用していて、統合環境は無いです。
>>688
こっちでは再現しない。どんなコード?

>>689
ildasm.exeを探して起動してみよう。
691689:02/05/13 21:49
>>690
素早い回答ありがとうございました。感動して鼻汁でました。
これはいいですね。
692デフォルトの名無しさん:02/05/13 22:00
>>691
Ildasmだと、その名のとおりILレベルなので、Decompilerとか使うと吉。
>>692
ILが読めることは大事なことだから、おれはildasmを薦めるな
694デフォルトの名無しさん:02/05/13 22:41
>>693
もしかして、青(以下略)・・・
695   :02/05/13 22:51
ニューヨークはチャートを見れば分かるとおり下げ基調継続。
>>695
誤爆?
●●●欧米株スレ69●●●
http://money.2ch.net/test/read.cgi/stock/1021058122/l50

ここらへん↑に落とすつもりだったと予測してみるテスト

・・・つうか、株板とここ掛け持ちしてる奴がおるんか・・・
socket を非同期で受信して,受信したデータに応じてフォームを表示したいと考えています。
そのフォームには IE コンポーネントをおいているため,STA スレッドで呼び出さないといけないのですが...
Main に STAThread 付けておいても非同期受信で呼び出される関数では MTA のようなのです。(例外が投げられる)
何とかして STA にする方法はないのでしょうか?
(同期受信にしろというのはなしで...)
>>698
この質問、前にも見たような・・・。
過去ログの番号が分らないのなら無視すれば?>>699
>>699 私が過去に質問したのですが、>>698は私じゃないよ。
333から読んでね。
702698:02/05/13 23:32
・゚・(ノД`)・゚・ ウワーン
ごめんなさい,見落としてました...
逝ってきます...

レスthx >>699-701
703688:02/05/14 00:06
>>690
レスありがとう。

元のソリューションはちょっと複雑だったんですが、
簡単なコードでも再現できました。

方法
1,空のソリューション作成
2,その中にC# WindowsアプリケーションとManaged C++ クラスライブラリのプロジェクトを作成
3,「参照の追加」でC#アプリケーションからC++ライブラリを参照するようにする
4,ビルドする
5, 一回IDEを終了してから改めてIDEを起動

これで、以後C++ライブラリを更新しようとすると
エラーになってしまいます。
ビルドの順番変えてみたら?
>>703
やはり再現しない・・・。
706デフォルトの名無しさん:02/05/14 00:29
>>703
3. のときに、プロジェクトを参照してる?

あと、プロジェクトの依存関係を設定したほうがいいかも。
707688:02/05/14 00:33
>>704
依存関係を変えてビルドの順番を変えようとしても
「この依存関係は、プロジェクト システムによって追加されたため、削除することができません。」
と出てダメでした。
ちなみに現在の順番は
ライブラリ→アプリ です。

それに、ライブラリだけをビルドしようとしてもエラーになるし、
VS起動中はエクスプローラでもDLLが削除できないので
順番を変えても変わらないような気がします。
708688:02/05/14 00:41
>>705
うらやましい。
うちは何度やっても5の後、リビルドでエラーが....。

>>706
はい。
「.NET」「COM」「プロジェクト」の三つのタブの
一番右の「プロジェクト」タブで選択して追加しています。
709デフォルトの名無しさん:02/05/14 00:52
>>708
やってみたけど、こちらも駄目でした。VB.NETとかだと問題なくできるのに・・・
710デフォルトの名無しさん:02/05/14 10:53
簡単なゲームみたいなものを作っているのですが、
任意のタイミングでキーボードの状態を取得する方法がわかりません
KeyDownとKeyUpを片っ端から捕まえてフラグを立てたり降ろしたりすれば
できそうな気もしますが、もうちょいスマートなやり方を知っている方
いましたら教えてください m(_ _)m
一応DllImportでGetAsynkeyState,GetKeyboardState等試しましたが
無理でした
711デフォルトの名無しさん:02/05/14 11:46
ツールバーのボタンの間隔を調整したいのですが、
なんか左端からズラズラと並んじゃってカッコ悪いです。
どうすればいいのでしょうか?
712デフォルトの名無しさん:02/05/14 13:16
C#でWebDBのシステムを構築してみようと考えてます。
C#もASPのようにWWWサーバーはIISでないとダメなのでしょうか?
できればApacheで構築したいです。
>>712
ApacheでCGIならできるよ。
714デフォルトの名無しさん:02/05/14 14:11
>713
ありがとうございます。
Apache+.NET Frameworkの環境で実行可能ということですね?
ということは、.NET FrameworkはTOMCATのようなコンテナに
あたる物と考えてOKなんでしょうか?

それと、ASPのようにIISに組み込んで動作するような仕組みには
なっていないのですね?
715デフォルトの名無しさん:02/05/14 14:57
ASP.NETでページ間の移動をする際に
Server.Transfer("hogehoge.aspx",true);
ってやると、

このページの ViewState は無効です。壊れている可能性があります。

って言われるんだけど、何が原因だと思う?
716デフォルトの名無しさん:02/05/14 15:01
>>712
WinでApacheを使うつもりなの・・・?
珍しい人もいるものだ・・・
Apacheも色々とパフォーマンスに関しては言われてたけど、
2.0になって良くなったんだろうか?
718デフォルトの名無しさん:02/05/14 17:55
>>716
プププ
>>716=学生
>>719
で、君は窓際か。
窓際いいよね。
窓際地方公務員、憧れるなぁ。
>>721
仕事しなくて良いわリストラされないわか。
いいな。
それで2chばっかやってるわけか
個人的には、WindowsプラットフォームでApache使おうとは
思わないんだけど、Apacheにする理由って、何だろう・・・?

#単にApache使いこなせてないだけだけど、(自嘲
#*仮に*使いこなせても、Win上ではIIS選ぶと思う…

ってか、こういう質問とか議論って、どの板でやれば委員だろーか?
(多分ここだと「板違い」だよね、スマソです…)
>>724
index.html.ja
とか便利だと思った。
まぁ、今はASP.NET使うためにIISだけど。
Apacheは使わんなー。Tomcatは使うけど。
>>711
間隔の微調整は無理だと思われ。
ツールバーもどきのコントロールを自作すべし。

>>714
コンテナに相当する機能がデフォルトでついてて、IISと連携して動く。
>>724
Windowsサーバー運用スルとかいうのがあったと思う...
過去スレがようやく見れるようになったね
>724
業務では個々の開発用にWin+Apacheの環境で使うことよくあるよ。
Solarisとかの案件の為だけにLinuxなんか使ってられないしね。
731デフォルトの名無しさん:02/05/15 11:15
入門用の書籍でお勧めってありますか?
>>731
出始めだからない。
>>731
クソ本ならうなるほどある
734731:02/05/15 11:40
事故レス
関連すれありましたね、失礼しました。
735731:02/05/15 11:41
>>733>>734
そうですか・・・ じゃ待ちですね。
ありがとうございます!
>>733
でも、それすら読まないといけない状況が今。
737デフォルトの名無しさん:02/05/15 14:41
ところでさ。
以前のVC++6の時代って

EXE ファイルのデフォルトの配置場所 (0x00400000)
DLL ファイルのデフォルトの配置場所 (0x10000000)

だったと思うけど
C#のプロジェクトって、DLLも、EXEも (0x11000000)が
初期値なのね。

結局DLLはずらしてやるんだけど、単純に今までのMS推奨の
リベーシング規則に従っていいものかな。

DLL の先頭文字 開始アドレス
A-C 0x60000000
D-F 0x61000000
G-I 0x62000000
J-L 0x63000000
M-O 0x64000000
P-R 0x65000000
S-U 0x66000000
V-X 0x67000000
Y-Z 0x68000000
*同じ先頭文字の場合は上位三桁をずらす。
例:0x61000000,0x61100000

MFC DLLを使用しているなら、
ベースアドレスは0x5F400000〜0x5FFFFFFF以外を使用すること

.NET Frameworkがどの範囲を抑えてるか書いた資料
どこにあるか誰か知らない?
全部のMANIFEST見るのも手ではあるが・・・。


>>737
CLIのドキュメント Partition II Metadata の第24章・・・じゃあまり役に立たないか。
ダイアログのフォームに付けたスクロールバーが変です。
ステータスとかツールボックスとか巻き込んでスクロール
してくれちゃってます。
そもそも、縦のスクロールバーがステータスバーとツールボックスの
上に重なって表示されちゃってるよ。
どうしたらいいの?
>>739
オーナーが変?
>>739
ほんとだ。(w
742741:02/05/15 20:31
>>739
パネルをフォームにDockStyle.Fillで貼りつけるよろし。
button.OnClick += new EventHandler( this.ButtonClick );

を、デザイナ以外から追加するにはどのようにすれば良いのでしょうか?
(自作クラスへのイベントハンドラ追加の際など)

手動で追加するしかないのでしょうか?
オーバーロードは、ソリューションウィンドウから行えるのですが・・・
>>731
独習C#おすすめするね。後はアスキーの出たばっかのがWindowsアプリ組む
のにはわかりやすいと思う
745デフォルトの名無しさん:02/05/15 21:14
746デフォルトの名無しさん:02/05/15 21:23
関数直下に using を使うと、どうもエラーがでるようなのですが、
C# の using ディレクティブの配置位置は限定されているのでしょうか?
それとも記述が間違っているのでしょうか?
ご存知の方おられましたら教えてください。

これは OK
using System;
using System.IO;

namespace bin2asm {
  class Class1 {
    static void Main() {
      FileStream s2 = new FileStream( "test.txt" , FileMode.Open , FileAccess.Read , FileShare.Read ) ;
    }
  }
}

これは NG
namespace bin2asm {
  class Class1 {
    static void Main() {
      using System;
      using System.IO;
      FileStream s2 = new FileStream( "test.txt" , FileMode.Open , FileAccess.Read , FileShare.Read ) ;
    }
  }
}

>>746
それでエラー吐くのか。
こういうことができないんじゃ、Cのプリプロセッサ以下だな。
>>747
あなた口だけだね。

  ∧_∧  
 (  ∀ )   むぅ!
 (    )
 | | |    Σ ∩∩ 
 (__)_)    (゜x゜ )○
749デフォルトの名無しさん:02/05/15 21:28
>>746-747
はぁ?usingに何を期待しているのですか?単なるプレフィックスの省略なんですけど?
これで解決
namespace bin2asm {
  class Class1 {
    static void Main() {
#include <System>
#include <System.IO>
      FileStream s2 = new FileStream( "test.txt" , FileMode.Open , FileAccess.Read , FileShare.Read ) ;
    }
  }
}
>>746
コンパイルユニットの先頭か、ネームスペース本体の先頭にしか使えない。
↓の C.2.6 参照。

ms-help://MS.NETFrameworkSDK.JA/csspec/html/vclrfcsharpspec_C.htm
>>749
M$に躍らされたバカ一人、と。
>>752←1年後、一人だけ踊ってないバカ。
>>747
意外と言語仕様汚いよね。後発なくせに
>>754
論拠なしの批評はネタと見なされます。
>>755
なんでそんな神経質なの?
クソなだけに煽られるのが怖いのさ(プププ
758デフォルトの名無しさん:02/05/15 21:38
>>751
サンクス!
できればブロックの先頭でも指定できると便利なんですが・・・
まあ、そのうちできるようになる事を期待しましょう。
>>758
そういう事はリリースする前に言えっての(w
760not 755:02/05/15 21:40
>>756 過去に何度かそういう理由でスレが荒れたから、かも。
Delphi戦争はDelphi厨とVB厨の和解という意外な結末で幕を閉じた。
VB.NET厨(書けるかどうかも怪しいが。通称、このスレの癌さん)が目を付けたのがC#
VB.NETと似たようなレベルの言語仕様。これなら煽りがいあるんじゃない?
癌さんの自作自演は今日も続く・・・。
つーか隔離スレでやれよ。本スレ荒らしていいならこっちも出向くぞ。
763739:02/05/15 21:58
>>742
なるほど、パネルにスクロールバーを付けろと。
どうもありがとう。解決しました。
764デフォルトの名無しさん:02/05/15 22:09
>>758
using System;
using System.Reflection;
using System.Windows.Forms;
using System.IO;
:
FileStream fs;

ってなってるとき、コンパイラがFileStreamを解決できないのでusingを順番に引っ張ってきて、
System.FileStream・・・×
System.Reflection.FileStream・・・×
System.Windows.Forms.FileStream・・・×
System.IO.FileStream・・・キタ━━(゚∀゚)━━ !!
ってやるだけ。だからブロックとか全然関係ない。さよーなら。
765デフォルトの名無しさん:02/05/15 22:56
C#の配列って、どっからどうみてもCのポインタだよね。
Cでいう配列は、C#ではどうやって利用するの?
>>765
>C#の配列って、どっからどうみてもCのポインタだよね。
?まぁ、オブジェクト扱いになったけどね。

int[] a = new int[];

javaやってるとあんまり違和感ないと思うけど。
767デフォルトの名無しさん:02/05/15 23:12
配列がクラスになったのはセンセーショナル




でもない
768758=746:02/05/16 00:50
>>764
よく分からないです・・・(^^;
769デフォルトの名無しさん:02/05/16 11:24
C#で、SOAP+HTTPS(HTTP+SSL)をサポートすることは簡単なのでしょうか?
770デフォルトの名無しさん:02/05/16 12:35
ArrayListって、リンクドリストじゃなくて、配列ですよね?
リンクドリストってないんですか?
771朝までC#:02/05/16 16:26
うーん 黄色い本のデリゲートの説明がよくわからない。
優しい説明のある本かURLをご存じないですか?
>>771 優しいかどうかは各自判断よろ。
http://black.sakura.ne.jp/~third/cs54.html
773朝までC#:02/05/16 16:49
普通にメソッドやプロパティ参照は、電話を書けて情報交換みたいなもので、
デリゲードやイベントなどのコールバックは、
「なんかあったらこの関数を呼び出してくれ」と
伝えておけば、なんかあったときに呼んでもらえる
んですよね?
this.Resize += new System.EventHandler(this.ExTextBox_Resize);
と、書くのは、ユーザーコントロールの大きさの変更があったら
呼んでやるぞリスト(左の項)に追加(おそらく演算子のオーバーライド)
する形になっていて、そういった呼び先(関数へのポインタ)は、
System.EventHandlerの戻り値が関数へのポインタのようになっていて、
引数のthis.ExTextBox_Resizeを登録してやる

しかし、この関数へのポインタへ変換するらしきものが
System.EventHandlerだけじゃなくて、
System.Windows.Forms.LayoutEventHandlerとか
他の種類もあるのは何故ですか?

そしてこれらは、デリゲートなどの機能と密接に
関わっているんですよね?うーん。

たとえば、
TextBoxをユーザーコントロールでくるんで、
TextBoxのChengeイベントを、拾って文字の長さを
1文字にしてからそれを張っているフォームに
Chengeイベントを中継する場合の流れで
教えていただけませんか?
>>773 本読むのもいいけど、コード書いみた?
EventArgsの派生型の種類が多数あって
デリゲートの型が当然違ってくるからいくつもいるの。
別にイベントにsender とEvetnArgsの派生型がいるわけじゃない。
自分で書いてみりゃわかるって。

>>773
まったく解読できん。(w
776773:02/05/16 17:13
>>774 タイプミスりまくりだな。スマソ
777774:02/05/16 17:14
>>776 つか名前までミスった。ちと寝る はぁ、、
774 さんが退出されました
Delegateって+=演算子使えますけど複数のデリゲートを代入して一気に実行とか出来るんですか?

イベントハンドラに複数のメソッド割り当ててみたり。
>>779
delegateキーワードで作ったのはデフォルトでマルチキャスト。
>>773
この人↓に聞いてみれば。
http://www.atmarkit.co.jp/fdotnet/technology/index/index.html
「また、本稿に関するご質問、ご意見、取り上げてほしいテーマなどがあったら、
ぜひ掲示板(Insider.NET会議室)の方に書き込みをお願いしたい。
特に.NET Frameworkに関する情報では、WhatやHowが紹介されているだけで、
Whyが解説されていないものがほとんど、というのが筆者の現在の率直な感想だ。
筆者は本稿で、できるだけWhyを解説したいと思っているので、
もし知りたいWhyがあったらぜひ教えていただきたい。一緒に考えてみよう。」
>>781
C#入門やってたあの人には聞かないのか?(w
>>782
聞きたくないだろ?君も。(w
>>781
漏れはAppDoaminをキボン。
プロセスでもなくスレッドでもなく、どうしてAppDomainという単位が必要なのか。
AppDomain間の通信ってどうやるのか例示キボン
>>785
ん?Remotingのことかな?
>>786
あ、適当言ってみただけっす
プロセス間通信よりも低コストで通信できるのなら
AppDomainの価値があるかなあとか思って...
>>787
Remotingも一応プロセス間通信だよ。
>>788
AppDomainが同一プロセスにある場合は、なんらかの最適化が
行われるんでしょうか?
790デフォルトの名無しさん:02/05/16 23:29
すいません。質問君です。unsafeなコードを書かずに、
ROPを使ったBitblt相当の画像処理はできないのでしょうか。
リファレンスを探したんですが、そういった機能が見つからないんです。
>>790
論理演算くらい自前でやるのも吉。
Frameworkに頼るのも吉。
GDI+ってダメなん?
793デフォルトの名無しさん:02/05/17 00:20
GDI+はいろいろ面白い機能があるみたいなんですが、
ROPはサポートしていない?ぽいので。
自前でやるか、GDI呼び出すか考えてみます。
>>785
AppDomain越しのメソッド呼び出しのサンプル作ってみた。
こちらはHello.dllで。

using System;

public class Hello : MarshalByRefObject
{
  public string SayHello() {
    return "Hello World!!";
  }
}
795794:02/05/17 00:21
こっちが呼び出し例。
AppDomainのアンロード後、もう1度呼び出そうとしても例外が起きるのを確認してちょ。

using System;

class Test
{
  public static void Main() {
    try {
      AppDomain domain = AppDomain.CreateDomain("MyDomain");

      Hello h = domain.CreateInstanceAndUnwrap("Hello", "Hello") as Hello;
      Console.WriteLine( h.SayHello() );

      AppDomain.Unload(domain);

      // AppDomainをアンロード後、もう1度呼び出してみる。
      Console.WriteLine( h.SayHello() );
    }
    catch (Exception x) {
      Console.WriteLine("例外 : " + x.Message);
    }
  }
}
796794:02/05/17 00:22
んで、確認できたらさらにこういうケースで確認してちょ。

1. Helloクラスをただのクラスにした場合どうなるか。

  public class Hello

2. HelloクラスをMBROじゃなくて値渡しにしたらどうなるか。

  [ Serializable ]
  public class Hello

3. AppDomainを作らず、CurrentDomain上で今までのコードを動かしたらどうなるか。

このへんって.NETでも半端じゃなくむずかしい分野なのよねえ...。
>>794
スバラシイ!早速試してみます!
しかしこりゃあ難しそうですね、COMのアパートメントでも見たような...

>Hello h = domain.CreateInstanceAndUnwrap("Hello", "Hello") as Hello;
>Console.WriteLine( h.SayHello() );

別ドメインでインスタンス作って
そのインスタンスのメソッドを呼び出すんですか・・・
頭クラクラしてきました(笑)

>このへんって.NETでも半端じゃなくむずかしい分野なのよねえ...。

AppDomainに何か惹かれるモノを感じたので、
なんとか理解してみたいと思います。
>>795
AppDomainとHelloオブジェクトが__TransparentProxy型とかいうのになってるね。
何か壮大な仕掛けがあるのか・・・。
いまだにAppDomainがなんなのかよくわからない。。。ウワァァン…
>>799
ここ見るよろし。

ms-help://MS.NETFrameworkSDK.JA/cpguidenf/html/cpconapplicationdomains.htm
>>792
GDI+ってWindows2000にはなかったんじゃ?
OFFICEXPを入れると無理やり入ってくるみたいだけど。
.NET Frameworkについてくる
803デフォルトの名無しさん:02/05/17 11:30
VisualC#Standerdについている
これから始めるC#
という小冊子の使用感ははいかがなものでしょうか?
>>803
漏れもチラッと目を通した程度なんだが、
「これから始める」と書いてる割には他のプログラミング言語の経験者でないとちょっと読めなさそうな感じ。
>>804
便乗。VC# STDもライセンスは1ユーザで複数マシンにインストール可能なんですか?
>>805
購入者のみが使用するならOKなんじゃない?
807803:02/05/17 16:54
確かに付属の小冊子はまったくの0からは厳しいのかも。
と、VC#買ってきて思った。
でも、CとC++の構文くらい知っていれば何とかなるかも、と思ったりして。

また、インストールの件は1人が使うならコピーして使っても良いとは使用許諾書に書いてある。
企業でも1人に対してとなっております。
複数台のPCにインストールしてもいいのでは、とは思います。
>>801
> GDI+ってWindows2000にはなかったんじゃ?
えっ、ネイティブに半透明に対応してるんでWin2000は入ってるんじゃないの?
809デフォルトの名無しさん:02/05/18 12:43
Socketについてわかりやすいサイトとか書籍とかない?
(書籍はないか・・・)
>>808
半透明サポート = GDI+搭載
ではないでしょ。

>>809
http://pc.2ch.net/test/read.cgi/tech/1006258198/
811810:02/05/18 13:09
あ、C#でのSocketの使い方という事か。勘違いした。スマソ。
812808:02/05/18 17:20
>>810
ttp://www.interq.or.jp/jupiter/philsci/iw-html-02/shell-06a.html
に出てくる
『月刊ASCII DOS/V ISSUE』の記事を読んで勘違いしてました。
正直すまん。

WindowsXPには付属。
.NET 又は OfficeXPをインストールすると GDI+が入る。
と言うことですね。
=?iso-2022-jp?B?GyRCNjUkKCRGJC8kQCQ1JCQhIxsoQg==?=

↑メールのこういう文字列をデコードしたいんですが
どっかにサンプルコードが掲載されてたりしませんでしょうか?
814813:02/05/18 23:33
age忘れた…
どなたかお願いします。
>>813
BASE64?
816813:02/05/18 23:42
>>815さん
BASE64関連は System.Convert にあるものが使えそうなのですが
Quotedエンコードな場合もあるみたいなので…。よくわからん。
結構汎用的なコードだと思うんで、もし前に誰かが書いたものが
あるなら、是非裾分けしてもらたい次第であります。
>>816
後、uencodeとか。
818デフォルトの名無しさん:02/05/19 14:29
C#から、unlha32.dllのUnlhaFindNextを呼び出すと、1回目から-1(検索終了)が返ってきてしまいます。
誰か試したことある人います?
819デフォルトの名無しさん:02/05/19 16:15
マシン共有してて、C#使う場合はどうすんだ?
共有してるのは外注同士で、
完全に別プロジェクト。他人。無関係。
同じ日に作業する事は無い。
予算が無いのでマシンを分けられません?
ユーザー毎にC#インストールできんの?
何が言いたいのか良くわからないけど、普通マルチユーザー対応では。
WinXP対応を謳っている場合はマルチユーザー対応ですね。
822デフォルトの名無しさん:02/05/19 17:51
構造体をbyte[]に変換したいのですが、どうすればいいんでしょうか…
>>818
冷静に考えて先にFindFirst呼ぶべきではないかと?
824初心者:02/05/19 17:59
C♯かjavaどっちを始めればいいと思いますか?
プログラムは組んだことありません。
825デフォルトの名無しさん:02/05/19 18:00
>824
外出だがジャヴァ
819=824?
目的にもよりますが、学習のためであるならどちらでも構いません。
今のところJavaのほうがいい本が多いので、そちらをすすめます。
>>824
まず、ObjectPascalかC++を覚えて、作ったオブジェクトは必ず解放しなければならないことを学んで下さい。

C#/Java -> C++ -> 恐ろしい量のメモリリーク -> クビ
828824:02/05/19 18:10
>825,826,827
ご丁寧なレスありがとうございます。
C#はC++の改良版でJavaとC++のいいとこ取りという話を
雑誌で見かけたのですが、この解釈で正しいのでしょうか?
いいとこと思うか悪いとこと思うかは人それぞれ
>>828
C++のしがらみだらけの機能を整理し、特に重要でない機能を省いたもの。
だからC# -> C += 0.5
>>828
すみません、その手の発言はフレームが発生するので避けてくださいな。
初歩的な学習のうちはC#もJavaも変わりませんよ。
>>827
なんか凄く同意
メモリリークをまったく知らないプログラマは
いざ別の言語を使おうとするとパニックになりかねない

C++のようなGCのない言語の仕事が金輪際なくなるのなら話は別だけど
空のImageオブジェクトを作成する方法がわかりません。
どなたかご存知ありませんか。
>>831
揚げ足取る気はないが文章全体痛いから敢えて潰す。
フレームって何だ?
>>833
Image img;
836824:02/05/19 18:22
>829,830,831
質問ばかりしてすいませんでした。どうもありがとうございました。
>>834
おまえのほうが痛い。
>>835
Imageは抽象クラスなので単独でインスタンスは作成できません。
CreateImage(幅,高さ)みたいなメソッドを探しているのですが、見つかりません。

無理やりビットマップをメモリに作って、ストリームからロードするしかないのでしょうか。
>>838
継承して仮想関数何とかしてオーバーライドする。

と言うのが教科書的答え。

>>832
オブジェクトに関して生成後は無責任でいれるのがGCの良いところ。やるだけやって後はぽい。
GCの無い言語は中絶(不謹慎な例えスマソ)まで確実に女の名前を覚えていなければならない。

ヤリ逃げC#と責任感の固まりのC++が同じ生きかたをしているとは到底思えない。
Imageは継承できないとかいう話だった記憶
Bitmap使え
>>839
Imageオブジェクトは継承できないようになっているようです。
なぜなら一切ビット配列にアクセスできるようなインターフェイスが含まれていません。

独自のエンコーダー/デコーダーすら書けそうにありません。
なんでこんな糞仕様なんでしょうか。
>>841
GCがある方が安全だというのはその通り

ただ世の中には自分で言語を選べない状況というのもあるから
「使ったメモリは不要になったら開放しなければならない」
ということは体験的に知っておいたほうがいいと思われ
(頭で分かったつもりになるのではなく、実際にそういうコードを書くということね)
845843:02/05/19 20:41
なぜImageにビット配列のアクセスがないか解りました。
Imageはピクセルベースのグラフィックと、ベクトルベースのグラフィックを統一的に扱うための
アダプタなわけですね。
ピクセルへのアクセスはインスタンスを調べてBitmapにキャストしてから行うべきなのですね。
謎が解けました。

ただ、やはりBitmapを直接作成する方法も用意されていないようです。
Win32APIでCreateBitmapしてからハンドルを渡たすしかないのでしょうか、
あまりWindowsハンドル関係は抽象度が下がるので使いたくはないのですが。
846843:02/05/19 20:51
すみません勘違いでした。
Bitmapはインスタンスが直接作成できるのですね。

Bitmap = new Bitmap(幅,高さ);

で解決しました。
お騒がせしました。
よくわからない使用ですね。
Bitmapまで直接作成できないとは。
>>846

あなたのオブジェクト指向結構独特っぽい。
849843:02/05/19 20:58
>>848
えっとどういう意味ですか。
>>849
>>848 ではないけど、そう思いますよん。派生クラスだけで解決すればよいと思いますです。
なんか急に厳しいスレになったなぁ・・
>>851
>独自のエンコーダー/デコーダーすら書けそうにありません。
>なんでこんな糞仕様なんでしょうか。

自分の力不足をライブラリに転嫁する様な人間に優しくしろと?
853818:02/05/19 21:34
>>823
すいません。省略してましたが、UnlhaFindFirstはもちろん先に呼んでます。
長くなるけど、ソースをアップしたほうがいいですかねえ?
854デフォルトの名無しさん:02/05/19 21:42
C#ってさ、なんかC++っぽくなったVBってかんじ。
JavaっぽいDelphiと言ってくださいw
C#(&VB &Delphi)の共通点

厨にうける取っつき安さ
とことん作り込むには向かない
857デフォルトの名無しさん:02/05/19 21:54
C丼、汗だくで。
858843:02/05/19 21:54
>>850
派生クラスだけで解決するというのはどういうことですか?

>>852
いくら力があっても、肝心の部分を抽象化して隠蔽されたのでは何もできないでしょ。
昨日VS.NETを買ってきたばかりなので、ついImage、Graphics関係を見たときに、
実態のないJavaのImageクラスを思い浮かべて失望してしまったのです。
C#にはLock/Unlock,SetPixel/GetPixelがあってホッとしましたけどね。

それに実際問題、独自のエンコーダー/デコーダーを追加できるような仕様にはなっていないように見えますが。
>>858
>肝心の部分を抽象化して隠蔽
オブジェクト指向の肝。
>>856
C++でC#で作ったぐらい作りこんでください。
861デフォルトの名無しさん:02/05/19 22:01
>>860
日本人に理解できるくらい、文章を作りこんでください。
>>861
外人は国へ変えれ。
863デフォルトの名無しさん:02/05/19 22:08
まあC#は、出来合いの物を、組み合わせてありがたく使わせてもらう、
デパチカの総菜みたいなもんだな。適度な負担で、ある程度の物を。
手抜き主婦には愛されるが、一流シェフには無縁の物。
864デフォルトの名無しさん:02/05/19 22:11
>>862

おれもC#を擁護したいが・・・ あんたの日本語は良くわからん
独自のエンコーダー/デコーダー
System.Drawing.Imaging.ImageCodecInfoあたりかな名前だけ見ると
866843:02/05/19 22:13
>>859
確かに抽象化は肝ですが、
派生クラスにすら内部へのアクセスを許さない仕様だと、
結局与えられたこと以外何もできないライブラリへと成り下がります。

Javaなどは結局少し凝ったことをしようと思うと、
すべてint配列上で自前で処理してからImageを作成するという非常に効率の悪い方法しか取れませんでした。
>>866
>結局与えられたこと以外何もできない
オブジェクトの肝
868843:02/05/19 22:15
>>865
もちろん自分もその辺は調べたのですが、どこにも実体が見えないのです。
どうもWindowsが標準で提供するCodecしか使えないみたいにも読めます。
869デフォルトの名無しさん:02/05/19 22:15
>>867
ギャクだよね?
C++が鉄の中華鍋なら、C#はテフロン加工の鍋。
どちらがいいかは、使う人間により違う。
単純に鍋だけ比べてもねぇ。
871843:02/05/19 22:25
>>867
標準ライブラリとしては失格かと。
843さん、C#は用意されている物を組み合わせて、ソフトを作るもんです。
用意されていない物を無理につくりこんでも、まともな速度では動かないでしょう。
他の言語を使用するか、他の言語でコンポーネントを作成して、C#から使いましょう。
テフロン鍋に多くを期待するべきではないでしょう。
でもImageはC#じゃなくて.NET Class Libraryの話なので、
他の言語でも同じことでしょう。
875デフォルトの名無しさん:02/05/19 23:24
ヒョンゼチァングage
>>874
ブラクラ似、注意
IEnumeratorをコピーしたくて、以下のコードを書いたのですが、
これでいいのでしょうか?もっとスマートな方法があるような気がして・・・。

IEnumerator p,q;
〜中略〜
q = (IEnumerator)((ICloneable)p).Clone();
pは無理にIEnumerator型で宣言しないで、具体的なクラス型でいいのでは?
そうすれば q = (IEnumerator)p.Clone(); で済むし。
なんか勘違いしていると思われ。Cloneされるのはclassのインスタンスで、interface
なんざ、クローンしようがない。
だから、
q = (IEnumerator)p.Clone();
で十分じゃないの?
そもそも
class X : IEnumerator {
...
}
X p = new X();
X q = (X)p.Clone();
foreach (Y y in q) {
 ...
}
でいいんじゃないかい?
>>878さん、>>879さん、レスありがとうございます。
けど、ダメでした。
「'System.Collections.IEnumerator' に 'Clone' の定義がありません。」
とエラーが出てコンパイルできませんでした。

using System.Collections;
しているにも関わらず、

public Specialized.StringCollection Msg;

ではコンパイルが通らず、

public System.Collections.Specialized.StringCollection Msg;

と、しないと動きません。

using以外にすべきことがあるのでしょうか?
>>881
using System.Collections.Specialized;
して、
public StringCollection Msg;
じゃない?
>>882
例えば

using System

なら、Systemを省略して書けるんですよね。
じゃあ、

(System.)IO.File

とかも出来そうな。

なんかいまいち概念がわからない。。。
>>883
using System;は
Systemを省略可能にするんじゃなくて
System名前空間内の名前にSystem.をつけずにアクセスできるようにするだけ
>>884
usingしてもその名前空間に従属する名前空間にはアクセスできないと。
楽しようと思ったらusingだらけにしなきゃいけないのか。なるほど。
実際に見ていないし、目次もないのでよーわからんが、
雑誌でこんなのがあった。

日経BPパソコンベストムック
始めよう!C#
.NETと新言語C#をすぐに体験
http://store.nikkeibp.co.jp/item/main/148222168960.html
>>886
体験版ほしさに買った。
内容は・・・雑誌のDelphi始めよう!みたいなレベル。
888デフォルトの名無しさん:02/05/20 18:29
さすがartonさん。この本はお勧め。
http://www.ascii.co.jp/books/detail/4-7561/4-7561-4091-2.html
889デフォルトの名無しさん:02/05/20 18:30
artonって誰?
Ruby使いだろたしか。どうでもいいな。しかし。
891デフォルトの名無しさん:02/05/20 22:18
>>890
いや、Ruby使いだろうがなんだろうが、この本はC#初心者のキラー本だ。
892デフォルトの名無しさん:02/05/20 22:30
>>891
確かにね。
今日、同僚が買ってきてたのを読ませてもらった。
黄色本とあわせて読むといい感じだな。
イベントやデリゲートのあたりは特にこっちかな。
ただ、ページの割に密度が濃いので、若干読みにくいけどね。
あとは、「入門」ってことだが、完全なプログラミング初心者には
多分辛い。すでに別の言語やった人にとっての「入門」て感じだった。
こういうメソッドを作りました。

//2文字以上のセパレータに対応したSplit
static public StringCollection SplitEx(String Src,String Sep)
{
StringCollection dat = new StringCollection();

Src += Sep;

do
{
dat.Add(Src.Substring(0,Src.IndexOf(Sep)));
Src = Src.Remove(0,Src.IndexOf(Sep) + Sep.Length);
}
while(Src.Length != 0);

return dat;
}

そこに、
Src = "1021649890.dat<>゜。゜。゜。゜。゜。゜。゜。゜。゜。゜ (31)";
Sep = "<>";
と言う値を与えても文字列が分割されません。
(dat[0] == "1021649890.dat<>゜。゜。゜。゜。゜。゜。゜。゜。゜。゜ (31)<>")
他の文字列ではうまくいくのですが。
問題点があれば指摘して下さい。
なお、問題はラウンジのスレッド名です。


>>893
解答じゃないけど、Regex.Split の存在はご存知か?
>>894
ありがとう、十二分すぎる回答です。

「ああ、正規表現が使えれば・・・」

と、ため息をつきながらコーディングしていた自分も今では良い思い出です。
896デフォルトの名無しさん:02/05/21 00:57
以前、classの中のプロパティをXMLで一気にシリアル化する美しいコードの
サンプルを拝見したのですが、プロパティを配列にしたい場合には、
どうするのが一番スマートなのでしょうか。
(WindowのPositionやSizeを覚えこませるのと同じように、
ListBoxに表示していたものを保存したいのです)

違うclassにして、インデクサにした場合、シリアル化できるのかな。
もうちょっと調べないと。
それとも同じclass内に、うまく書く方法があるのでしょうか。

それにしても、レジストリに変わる、読み書き可能な動的プロパティ
のクラスをどうして作ってくれなかったのかなあ。
897デフォルトの名無しさん:02/05/21 11:16
サイズ可変のダイアログを、指定したクライアントサイズ
でサイズの変更を止めたいのですが、やり方がわかりません。
MaximumSizeにクライアントサイズ+枠サイズをいれるのだと
思うのですが、枠の大きさがわからないです。
しかも、ステータスとかツールバーとかつけたらそのサイズも
計算しないといけない気がするし。
なにか方法あるんですか?
>>893
はっはっは、何を馬鹿なことを・・・と思ったらホントだ・・・
>゜ ←この組み合わせが文字列検索素通りするみたい。
>>896
配列でもArrayListでも問題なくシリアライズできたよ。
>>897
System.Windows.Forms.SystemInformation を元に計算するとか。
901デフォルトの名無しさん:02/05/21 17:25
AppSettingsReader r = new AppSettingsReader();

*.configファイルの場所はどうやって設定すればよいのでしょうか?
>>898
MSに連絡すべきでしょうかねぇ・・・。
結局正規表現で回避しましたが。
>>901
configファイルはexeと同じディレクトリにある (exe名).config しか受け付けないよ。
>>902
結構深刻かもな。
エラー処理してないASP.NETのプログラムを例外で落としたりできそうだ。
C#でURLエンコーディングを行うにはどのような手段がありますか?
>>905
System.Web.HttpUtilityクラスを参照してちょ。
907デフォルトの名無しさん:02/05/22 04:36
using System;
using System.Text;
using System.Web;

class A
{
 static void Main() {
  string url = "ttp://www.google.co.jp/search?hl=ja&q=%90%B3%82%B5%82%A2%83I%83i%83j%81%5B%82%CC%8Ed%95%FB";
  Console.WriteLine(HttpUtility.UrlDecode(url, Encoding.Default));
 }
}
>>906-907
助かりました。
皆さんクラスライブラリは何で調べてますか?
>>908
オンラインドキュメントを使いこなすことが大事。
インデックス、検索、全文検索。これらを使いこなすことも、
プログラミングする上で大切だよ。
本やサンプルコードを見ることもいいけど、それは効率が悪い。
ワーカースレッドからイベントハンドラを削除すると処理がそこで
止まってしまう現象に悩まされています。
例外などではなく、全てのスレッドの処理がそこで停止してしまいます。

複数のスレッドがハンドラ追加したり削除したりしたりするものですが、
BeginInvokeなど試してみたんですが原因がいまいちわかりません。
なにか情報ありませんでしょうか?
>>910 自己レスです。原因らしきものはわかりました。
別のスレッドがイベントハンドラを追加しようとする時に
別のスレッドがハンドラを削除しようとすると起こるみたいです。
全てが止まってフリーズしたみたいになるので、
正確なところはわかりませんが、、、
>>911 また自己レスですが原因は違うところみたいです。
スレ汚してしまい、申し訳ない。
C#、J#と来て、次はF#が。(藁

http://research.microsoft.com/projects/ilx/fsharp.htm
早く・・・早くP#を・・・。
>>913
この文章で出てくる「ML language」ってどう解釈したらいいの?
NT Technology
917朝までC#:02/05/23 15:49
ユーザーコントロールでTextBoxを拡張しようとしています。
以下のようにTextプロパティをオーバーライトしたのですが、
拡張TextBoxを張った先のコードからは、Textプロパティが
見えるのですが、デザインのプロパティ一覧にはTextがありません。
よく考えるとユーザーコントロール自体がTextを持っているようなんですが、
最初からデザインからはTextが見えてなかったのです。
ちなみに、オーバーライトせずにExTextプロパティと
別の名前でプロパティを作ると問題有りません。
これはどうなっているのでしょうか?

private string strText;
public override string Text
{
get
{
strText = txtCtl.Text;
return strText;
}
set
{
strText = value;
txtCtl.Text = strText;
}
}
>>917
txtCtlとは何ぞや?
919朝までC#:02/05/23 16:23
説明不足ですみません。TextBoxコントロールです。
ユーザーコントロールのソースです。
public class TextBoxEx: TextBox
{
public override string Text {
get{
return base.Text;
}
set {
base.Text = value;
}
}

じゃないの?
921朝までC#:02/05/23 17:29
クラスのファイルを作ってやってみましたけど、
ツールボックスに乗っかりません。
GUIのデザイナで使えるようにするのにどんな条件があるのかな?
理屈でいうとユーザーコントロールに乗せるよりそれが一番素直な書き方
なんだけどなぁ・・・
TextChangeイベントもぶつかってる・・・うーむ。修行が足りない。
>>921
>ツールボックスに乗っかりません。

それは自分から追加しないと駄目。
>>921
>TextChangeイベントもぶつかってる・
嫌ならnewしなされ。って言うか親クラスのメンバくらい確認しながら実装しなされ。
924朝までC#:02/05/23 18:07
>>922
ありがとうございます。ううう・・・いままでユーザーコントロールを
使っていたのがアホみたいです。なんとも悔しい。これもVBの呪いか?

>>923
>>922 さんに指摘の方法でも同様の問題が出ると思われますので、
NEW で上書き実装してみます。・・・ってこの場合もイベントを
オーバーライドできるかもしれないので調べます。
>>924
>いままでユーザーコントロールを使っていたのがアホみたいです。

これはMS推奨の正攻法なのでアフォじゃないと思われ。

overrideするかbaseのイベントにわたされたでぇがてを+=
926朝までC#:02/05/23 19:25
>これはMS推奨の正攻法なのでアフォじゃないと思われ。

複数のコントロールの組み合わせだとコンテナが無いと困るので、
やり方を統一しているのでしょうね。
単純にTextBoxを拡張したいだけなら教えて頂いた方法が
さっぱりしてていいです。・・・しかし。
普通にイベントを追加したら当たり前だけど、TextBoxのTextChaneイベントが
子である。ExTextBoxクラスと、それを貼り付けたフォームの両方に
イベントが行くようになりました。
しかし、ExTextBoxクラス中のTextChangeでBase.Textを変更すると
2回目のイベントが発生してフォーム側にも2回のイベントがいます。
オーバーライドしていないので当たり前ですね。
overrideしたりNewで新しいもので書きつぶしたりして
横取りすればいいのは判るのですが、基本がわかってないせいか、
あちこちにキーワードを入れてみても上手くいきません。
フォームで += とかで関数へのポインタを登録するときに、
その登録先をオーバーライドすれば良いと思って。
ExTextBoxクラスにて、
public override event System.EventHandler TextChanged;
で良いと思ったのですが上手く行きません。
何が間違っているのでしょうか?
>>926
オーバーライド。
で、baseの処理を初めに済ます。
その後にbaseのイベントにNULLいれる。
その後に自分のイベントメソッド登録。

>>926
何を言ってるのかさっぱり分からんぞ
929朝までC#:02/05/23 20:41
判りにくくてすみません。
イベントにNullを入れるとはどのような記述になるのでしょうか?
base.TextChanged に呼び出し先が入っているのでこれの中身を
編集するのでしょうか?
そして、それからExTextBoxが発信元の新しいTextChangedを
発行をすると言う意味でしょうか?
この方向で模索してみます。

やりたいことは、TextBoxを継承したExTextBoxを
作り、TextBoxの内容が変更されたらExTextBox内でそれを修正して、
その後に、ExTextBoxを貼り付けたフォームへTextChangedを
送りたいです。
ExTextBox内でのTextBox.Textへの修正作業によるTextChangedイベントは
ExTextBox内で止めてしまってExTextBox自身は普通のTextBoxと
互換の振る舞いをしたいと思っています。
String型の文字列をSJISのByte[]に変換したいのですがEncordingの使い方がいまいちわかりません。
参考になる情報は無いでしょうか?
>>917
Textプロパティをわざと隠してるのだと思われ。
見せるようにするにはattributeをつければよろし。

  [ Browsable(true) ]
  public override string Text
  {
    ...
>>929
というか、どっちの方法でやってるの?
どっちにも読めてしまうので。

a) 継承

  public class ExTextBox : TextBox

b) コンポジション

  public class ExTextBox : UserControl
  {
    private TextBox textBox1;
>>930 Encoding.GetEncoding(932).GetBytes( "foo");
934デフォルトの名無しさん:02/05/23 23:30
MemoryStream m = new MemoryStream();
BinaryWriter b = new BinaryWriter(m);
b.Write(ArrayList.Count);
for(int i = 0 ; i > ArrayList.Count ; i++){
  b.Write((byte[])ArrayList[i]);
}

上記のようにArrayListの内容をMemoryStreamに書き込んで

MemoryStream m = new MemoryStream(hoge);
BinaryReader b = new BinaryReader(hoge);
int ct = b.ReadInt32();
for(int i = 0 ; i < ct ; i++){
  ArrayList.Add(b.ReadBytes(sizeof(ArrayList内のオブジェクト)));
}

こんな感じで復元したいのですが、sizeof使うと怒られます。(unsafeには出来ない)
何か良い方法無いでしょうか?
>>933
助かりました。精進します。

WebBrowserにファイル経由ではなくStreamを使ってHTMLを流し込み
たいのです。

http://members.jcom.home.ne.jp/monazilla/document/directwrite.html

ここで照会されているのは、delphiでの方法ですがこれをC#で実現する
にはどうすればよいのでしょうか?

System.Messaging.ActiveXMessageFormatterのInitStreamedObject メソッド
周辺にヒントがありそうなのですが、よくわかりません。

よろしくお願いします。
>>934
BinaryFormatter使った方が楽だと思われ。
940936:02/05/24 00:55
ありがとうございます。>>938 and >>939
MSHTMLを使うんですね。

こんなのも見つけました。

http://www.csharphelp.com/archives/archive146.html
Petzold, Richter 発売日予定がでた!
http://www.microsoft.com/japan/info/press/vs_net/vs_net.asp
942朝までC#:02/05/24 11:48
>>931 attribute の件ありがとうございます。

>>932 当初は、ユーザーコントロールを使った
コンポジションでしたが、>>920 さんのアドバイスを受けて
継承でやっています。
あのあと、@ITのC#入門のイベントの説明を読んで
勉強したのですが、書いてあることは理解したつもりですが、
(勉強になりました。)やりたいことの方は出来ていません。
ExTextBox内で
public override event EventHandler TextChanged;
とeventをオーバーライトしても

「C:\Org\dev\Menogaia\SangatuControlLibrary\ctlExTextBox.cs(36):
'SangatuControlLibrary.ExTextBox.TextChanged' : 継承メンバ
'System.Windows.Forms.Control.TextChanged' は、virtual、abstract、
または override に指定されていないので、オーバーライドできません。」

とエラーになります。

943デフォルトの名無しさん:02/05/24 12:19
>>942
Control.TextChangedイベントはvirtualではないので書き換え不可。
こういうときはControl.OnTextChangedメソッドの方をoverrideするよろし。
944デフォルトの名無しさん:02/05/24 19:23
net.sdkをdlしたんだけど、なんか使い方がいまいちわからないんです。
これってdosまどでやるんですか?
>>944
コードはメモ帳とかで書いてください。
コンパイルするにはDOS窓を開いてcsc sourcefile.csとでもやってください。
コンパイル終わるとexeファイルができますので、それをWクリックするなりして起動してください。
なお作成したexeファイルは.NET Frameworkがインストールされている環境でないと動きません まる。
>>945
優しすぎ。
947デフォルトの名無しさん:02/05/25 00:48
C#でCoCreateInstanceExに相当する関数は何ですか?
>>947
Type.GetTypeFrom〜でTypeを取って、Activator.CreateInstance。
949947:02/05/25 01:09
>>948
Activator.CreateInstanceでリモートマシン名を指定できるんですか?
950名無しさん♯:02/05/25 01:19
次スレです。

C♯相談室 Part6
http://pc.2ch.net/test/read.cgi/tech/1022257078/l50
>>949
Type.GetTypeFrom〜の方で指定できるよん。
1ヶ月で消費か。
953947:02/05/25 01:47
>>951
どうもありがとう!
保守
955朝までC#:02/06/09 00:37
保守
保守
保守
補習
♯さん、コテハンで活動してくれよ
保守
ほしゅ
962デフォルトの名無しさん:02/08/15 12:40
保守