∧_∧____
/(#゚ー゚) ./\
/| ̄∪∪ ̄|\/ C#,.NET関連の話題はこちらでどうぞ。
|____|/
,,,,∪∪,,, ,,
過去スレ・関連リンクは
>>2-10あたり
>>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から
つけねらわれるのでしょうか?
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#の言語体系を眺めてみている最中です。
18 :
8を一生懸命書いたやつ: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
マジで教師ならそんなやつの授業うけたかねー!!
失せろ!バカ教師!
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とかで読んで、改行をサーチしないとダメですか?
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#ですな?私も昨日読み始めた。
プログラミングはコミュニケーションも必要とせず
閉鎖的な環境の中で一人黙々とやっていくものなのですね。
以後、引きこもります。
私16歳の女子高生。田舎の高校に通っています。(恋人募集中!)
質問ですが、C#の「#」って、本当は「C」の右肩に上付きでつけるもの
だと聞きました。本当ですか?
>>45 あなたに興味があります。
#についてあなたと一緒に語り明かしたいです。
こんにちは、45を監禁しているものです。
あれほど大人しくしてろと言ったのですが、勝手に漏れのパソコン使いやがって、
しかも、こんな糞レスさせてしまって申し訳ございません。
これから外出するときは、縄で縛って天井に吊るしておきます。
またほのぼのとしたやりとりを……。
ちょっと、まじめなレスを期待しているのです。
今、先生の目を盗んで授業中に書き込んでいます。今、英文Eメールの
作文練習時間です。田舎(福島)だけど、オーストラリアに姉妹校?があるのです。
パソコン教室に20台のパソコンがありますが、全然台数が足りません。
部活はもち!物理電算部です。白々しいけど将来の夢はIBMかマイクロソフトの
バリバリのOLを希望しています。ちなみに応援団もかけ持ちで入団しています。
すみません。自己紹介してしまいました。
C#好きです。がんばってください。さようなら。 近藤実華
バカなの?
>50
ワロタ
こんばんは、
>>49の主治医です。
病院から抜け出したのを今取り押さえたところです。
彼女は幼いころに両親にひどい仕打ちを受けたのです。
父からは毎日のようにレイプされ、母からも暴行を繰り返されてきました。
入院してからは、日に日に良くなっていき、だいぶ精神状態も落ち着いてきたようなので
外出を許した途端逃げ出してしまいました。
私の担当不行き届きです。皆様にはご迷惑をお掛けしまして誠に申し訳ございません。
以後、浣腸してベッドに縛りつけておきます。
所詮C#はこうなる運命か。
54 :
同じ女子高生として我慢できません:02/04/25 23:34
で、結局「#」は右上に字上げするのが正式な書き方なのかどうか
答え: 違います。文字の大きさは「C」といっしょです。
たぶん音楽記号的な発想からきたとのだと思いますが、これは元々はC++のジョークみたいな
発想で「さらに1つ追加」という考えから++++が変形してできました。
>49
私は部活は文芸部ですが、創作はパソコンで執筆するように決められています。
うちはパソコン部とか物理電算部はありません。でも何故かパソコンの
台数は100台近くあります。それなのにインターネット出来ないので、
ネット上での活動は個人のパソコンを使っています。
がんばってください。
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
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参照。
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に似ているとかあります?
サブクラスでベースクラスのメソッドをnewで隠蔽した場合
ベースクラスの変数に格納して多態のつもりで呼び出しても
ベースクラスの方のメソッドが呼び出される
(同じケースでoverrideの場合は当然サブクラスの方が呼び出される)
これは仕様なんでしょうか
78 :
デフォルトの名無しさん:02/04/26 17:30
>>77 仕様っていうかまさにそれをやるのがnewの目的なんだけど?
>>79 多態には使うなということですか・・・
「ベースクラスのメソッドを隠蔽するため」
だと思ってたのに、隠蔽されるどころかしゃしゃり出てくるので
なんとも違和感があるのですが・・・
パラメータが同じなら素直にoverrideなんでしょうね
要するにnewで宣言したメソッドを使う場合は
ベースクラスの変数に格納するなということですか
仮想メソッドの呼び出しでは、実際に呼び出されるメソッドの実装は、呼び出しが行われるインスタンスの<b>実行時の型</b>によって決まります。非仮想メソッドの呼び出しでは、インスタンスの<b>コンパイル時の型</b>によって決まります。
これが仕様です。
>>82 でもさ、別にnewつけたからってvirtualはvirtualなんだけど。だからあなたがいう
その「仕様」はnewには当てはまってないよね。newのメソッドをそのさらに派生型で
overrideできるんだし。
newはさ、同じ名前の新しいvirtualメソッドをもう1つ作れるようにする機能なんだよね。
継承関係をいったん断ち切って、自分が新しい基底型(そのメソッドに限ってだけど)に
なるのがnewの機能。だから、どの型の変数を使っているかによってvtblが変わるって
ことだよね。
>>78(=82)-79
レスありがとうございます
あるメソッドが 親(abstruct)-子(override)-孫(new) の場合
親の変数で孫を作成すると
コンパイルの段階で親に近い、子のメソッドが呼び出されるのでしょうね
>>83 >どの型の変数を使っているかによってvtblが変わるってことだよね。
はっきりと分かりました、ありがとうございます
>>83 C#標準リファレンスのP313からP319あたりまでしっかり読んでごらん。詳しく書いてあるから。
すみません、おっしゃる意味がわかりません。
その本は持ってないのでなんて書いてあるのかわかりませんが、
newをつけると非仮想メソッドになるので、コンパイル時に型が決定するって書いてあるんですか???
それならその説明が*間違い*です。鵜呑みにするのはやめましょう。今出ている大抵の.NET本には
1つや2つ間違いがあるものです。
私は、newをつけてもvirtualはvirtualなのだから、82に書いてある
>非仮想メソッドの呼び出しでは、インスタンスの<b>コンパイル時の型</b>によって決まります。
っていうのは今回の中日ファンさんの例には当てはまっていないと主張しているのですよ。
実際overrideとnewの2つのメソッドを基底型の変数から呼び出すコードを書いて、
生成されたILをしっかり眺めてごらん、正しく書いてあるから。
(あー、またクソ本が一冊世の中に出回ったってことなのかしら。。。)
>>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にあなたが書いたようなこととして説明されているのなら、
それはクソ本だとも言っています。でも、たぶん本にそう書いてあるわけじゃなくてあなたが勘違い
しているだけなんだろうな、とも思います。
>>90 はいはい、もうなんとでも言ってください。ぜーんぶ、あなたのおっしゃるとおりですよ。
>>91 なんかキレたようだけどさ、本当に俺が言うとおりなんだからしょうがないよな、この場合。
もっとがんばって勉強しような、お互い。あと、本に書いてあることは鵜呑みにしない方がいいぞ。
粘着ハケーン {{゚д゜}}ブルブル
94 :
デフォルトの名無しさん:02/04/26 21:37
この動作原理を教えてください(何故3回回るのか)。
do
{
ch = (char)Console.Read();
Console.Write(">>" + ch + "<<");
Console.Write("debug");
} while(ch != 'q');
>>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文字走査するという感じ。
みなさんリプライありがとうございます。
色々と試してみたんですが、
Read()は、1文字Enter押したとしても内部的には
キー、CR、LFとストリーム上に残るということなんでしょうか。
(その間、
>>96さんの例だとwhile条件を抜けない…?どうもここらへんがよくわかりません)
>Read()は、1文字Enter押したとしても内部的には
>キー、CR、LFとストリーム上に残るということなんでしょうか。
その通りだと思います
>while条件を抜けない…?
q Enter で抜けるはずですけど・・・
>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();
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#ー>フォーマットあたりに
あったと思う。
>>123 ですよね。
update待ちですね。
.netになって、ショートカットの設定とかめちゃくちゃやりづらくなりましたね。
>>123 Ctrl+A → Ctrl+X → Ctrl+V
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
>>136 言語仕様がWEBで公開されてた気がする。
138 :
デフォルトの名無しさん:02/04/28 23:06
MDI子フォームが閉じるとき、親フォームが閉じる子を特定する方法を教えてください。
親にメソッドを作って子から呼ぼうと思ったのですが、
静的とか動的とか参照とか叱られてビルドできず、
引数をどう書いて良いかいまいちわかりません。
よろしくお願いします。
>>138 残念だなぁ(´ー`)
もしそのエラーをちゃんと書いてたらもっと早くレスがつくのに。
親に、
public void removedForm( System.Windows.Forms.Form targetForm)
{
}
とし、子で、
private void Form2_Closed(object sender, System.EventArgs e)
{
Form1.removedForm(this);
}
等とやっています。
エラーはF1でヘルプを見ても全然理解できません。
((Form1)MdiParent).removedForm(this);
でできました。ありがとうございました。
スミマセンでした。
>>120 できました。WaitOne( time , true );で止めて
Set()で再開ですね。ありがとうございました。
>>142 そういえばリセットする手間のいらない AutoResetEvent の方がよかったかな。
C#の文字列では設定された文字列の値を変更できないとのことですが、
これは例えば、
string strSql = "select"; を
strSql = "insert"; に変えたとき、実体が変更されるのではなくコピー
されてるっていうことなんでしょうか。
また、そうであれば、何でこのような動作をするんでしょうか。
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をコピーして、そのあと参照先を変えるってのが
正攻法なんでしょうか?
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");
と書かなきゃいけないから。
JavaからC#に引っ越してきたものなんですけど
ソーリューションって言う概念や単位?がいまいちわからんです
>>161 そう思う?ならどうしてstringは不変でStringBuilderなんちゅうクラスを作ったんだろ。
Javaにも同じ関係があるよね。おっと、たとえばパフォーマンスなんてのは
開発者のメリットじゃないって言いたい?
>>162 >s = "sage";がsの参照先を変えるのはsが参照型だからだぞ?
お前は参照型のオブジェクトとオブジェクトへの参照の区別がついてないな。
やり直し。
>あえて言うならそれはメリットがあるからじゃなくて必要条件だったからなんだがな。
なんで必要条件なんだよ。string(もどき)が不変じゃない言語なんていくらでもあるぞ。
開発するならこういうこと知っておいたほうがいいと思うんだけどなぁ。
しょせん小手先テクニックの魅力には勝てないか、こういう話題は。
Dr.GUIでも読んで頭冷やせよ。┐(´ー`)┌
>>166 プロジェクトってのが、実行単位というか、出力単位というか、
1つのEXEやDLL,Webサービスのことで。
ソリューションってのはそれをひとまとめにしたものかなぁ。
製品が複数のEXEやDLLからなってることもあるでしょ。
この製品がソリューションで、
EXEやDLLがプロジェクト。
171 :
koubouV:02/04/29 19:19
C#ってなんて読むのが正しいんですか??
172 :
デフォルトの名無しさん:02/04/29 19:27
拡張子が.csですので、シーシャープで宜しいかと思います。
173 :
koubouV:02/04/29 19:32
シーシャープでいいらしい(調べたところによると
しかしなぜシャープでないのにシーシャープ
#もシャープ(♯)なのか・・・・・(意味不明
>>173 気づかなかったYO!
#と♯って別物だったんだ・・・
175 :
koubouV:02/04/29 19:34
>>172 すいません。文読む前にヘンなこと言っちゃいました。
ほんとすいません。
どうもありがとうございます。
房らしい疑問だな
177 :
koubouV: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# ムズい…
Exceptionしてみたけどなんも拾わない・・
ダレカタスケテー
報告
ディレクトリ名を長くしたところPathTooLongException は catch できました
他のはやっぱり拾わないですね
ドキュメントの例外のところにIOExceptionやArgumentExceptionも
記載されてるので拾うと思ったのですが
188 :
デフォルトの名無しさん:02/04/30 14:29
NET SDkのCLRのリファレンスが見れない。
開こうとすると「インストールします」とかいってででくる。
そんでできない。
全インストールしたんだけど??。
189 :
デフォルトの名無しさん:02/04/30 14:44
もしかしてこのスレ死んでる?
C#は死にました。
シンデルッポイネ・・・
未だに俺はエラーチャッチできないし
と言うかスローされて無いっぽい・・・どうするべ
>>188 トピックの階層はどこですかね
193 :
デフォルトの名無しさん:02/04/30 15:09
>>184 よく読め
解説
path の一部が無効でない限り、path に指定したすべての
ディレクトリが作成されます。path パラメータでは、ファイル
パスではなく、ディレクトリ パスを指定します。
既存のサブディレクトリがある場合は、このメソッドは何も実行しません。
DirectoryInfo di = new DirectoryInfo("TempDir");
if (di.Exists == false)
di.Create();
これでいいんじゃないか?
リファレンス->クラスライブラリ
以下全部です。
reinstしたら直りました
>>184 ちなみに存在しないDirectoryInfoのオブジェクトに対して
CreateSubdirectoryを読んだときにだけIOExceptionを投げるみたい。
>>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のドキュメントしか出てこないので・・・
>>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 アセンブリに適用する属性。「属性」とかで引いてみるべし。
222 :
デフォルトの名無しさん:02/05/01 00:59
Math.Power(double a,double b)は
aのb乗ですが
5の1.5乗っていうのはどういう計算なんですか?
>>222 ぁ?
非自然数の階乗の計算方法がわからないのか?
また階乗かよ・・・(;´Д`)
それはC#以前の問題かと
∧∧ / ̄ ̄
(*゚ー゚)< マターリシマショ。
UU  ̄ U U\__
>>219 ヒント有難う
というか俺がボケあがってますね
テストに/を使うのがバカでした
/が単純にディレクトリ名に使えないと思いついて試したんです、、、(恥
再度 < や > などで試すとちゃんと ArgumentException がスローされました
これでほぼ問題解決です
232 :
デフォルトの名無しさん:02/05/01 01:32
教えて下シャア〜
C#のコンパイラは
C言語もできますか?
>>233 多分Visual C#のコンパイラでCのソースもコンパイルできるかどうか聞いているんだと思う。
>>234 なるほど〜
>>232 できませんよ〜CとC#の関係はCとC++の関係とは違いま〜す
似てるようだけど〜全然別の言語だと思ってくださ〜い
237 :
デフォルトの名無しさん:02/05/01 16:58
Visual Studio.Netはアカデミックパックで大体いくらですか?
知らん。
自分で調べました。
書く前に調べようね。
自分で調べるんじゃ、質問する意味無いじゃん。
人生って孤独だよな・・・
少し調べれば分かるようなことを聞くな。
少し調べれば分かるかどうかが分からないから聞いてるのだ。
まず少しは調べろよ。
全然 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
ステータスバーに追加したパネルをバーの右端に表示したいのですが、
どのプロパティで設定したら良いのでしょうか?
今月からプログラミング始めました。
一定時間ごとに指定した音声ファイルの音を鳴らすようなプログラムは
どう書けばいいのでしょうか?
タイマーコントロール?を使えばいいのでしょうか。使い方がよく分かりません。
.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のような感じの。
263 :
デフォルトの名無しさん:02/05/02 10:04
>>262 それがプログラミング的に欲張っているのかどうかわかんないんだよ。
ユーザからみたこの仕様はぜんぜんショボイもん。
タイマーコントロール使えばいいとわかってるのに
使い方がわからないというのは要勉強だね。
265 :
デフォルトの名無しさん:02/05/02 10:10
>>263 じゃあ
>今月からプログラミング始めました。
なんて書くなよ(w
そんな奴が
>ユーザからみたこの仕様はぜんぜんショボイもん。
なんて議論できんのかよ(W
267 :
デフォルトの名無しさん:02/05/02 10:39
>215
STL関連ってそりゃC#にはまだtemplateがないんだから無理でしょ
早くC#にtemplateが実装されないかなぁ
開発中らしいけど
俺自身はまだC#環境持ってないんだけど、Delphiの開発者と同じ
人だからおそらくListというクラスはあるんでしょ
Delphiの時はListクラス使いまくりだったけど、今のC#もそうなの
でしょうか?
>>267 System.Collections ネームスペースにいろいろある。
データ構造は一通り揃ってるからあまり困らないね。
>>266 ワシは255じゃないよ。勘違いしないでね。
C#のテンプレートは実行時に解決するような手段にしてほぢい
実行時に解決するなら別にテンプレートじゃなくてもよくないかなぁ?
>>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
システムメニューをカスタマイズしたいんですが、
どうすりゃいいんでしょう。
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使いたいけどわからないよー
ああいう場合はforeach使えないんですね。了解しました。
>>281 structで引数なしコンストラクタは無理よ。
おおっと、関係なかったか。スマソ
>>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にするのとは違うものがあるんですか?
こんにちわVB厨ですが、C#かVB.NETかで迷っています。
VBマガジンでは、VB.NETを記事にしていますが、
どっちが優れているのでしょうか?
私が知る範囲では書き方が違うだけなのですが、
それなら2種類も言語を用意する意味が無いと思うのです。
そんなの混乱するだけです。
.NET FrameworkやVB.NETの文法はVB6とは全く別物で
C#にVB6のへんちくりんな「ぬいぐるみ」を着せているようで
気持ち悪いのです。
話は脱線しましたが、マジでどっちを選べばこの先、楽が出来るのでしょうか?
とりあえずC#の方が楽なことは確かでしょう。
>>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;
ではエラーになっていまいます。
どなたか教えて頂けませんでしょうか。お願いします。
>307
サンプルソースなどに、以下のような記述を見たことはありませんか?
int intTest;
intTest = (int)this.txtNumber.text;
"型変換"、"キャスト"などで検索をしてみる事をオススメします。
text->int変換が標準で出来るのか?
VB.NETだと思いっきりできるな。怖・・・。
Int.fromString()みたいなのが勝手に呼ばれてると思えば・・・
でもキモいねえ
312 :
デフォルトの名無しさん:02/05/04 00:01
>>308 その方法で型変換してコンパイルすると
"型stringを型intに変換できません" となってエラーとなります。
私も型変換だと思ってその方法を試しましたが、ダメでした。
どうしてでしょう。
うむ、安心したぞよ
315 :
デフォルトの名無しさん:02/05/04 00:29
>>308,311,314
Convertクラスを使ってできました。ありがとうございました。
>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)で指定した行の文字列を得るにはどうしたらいいですか?
318 :
manko chinko:02/05/04 00:36
最強のmankoプログラムを組んでみました
class Manko{static void Main(){System.Console.WriteLine("manko daisuki");}}
それが?
string s = rtBox.Lines[行]
で解決しました。。。鬱
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でも調べてみて。
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を直にいじるのはよくないと思う...
素直に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
C#の標準にはGUIが含まれてないってほんとですか?
当たり前?
JavaはGUIも、あまつさえWebアプリケーションの標準化もこころみてたというのに?
ということは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);
>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 ありがとうございます。今からやってみます。
ブラクラ張ってください!
願いします!!
375 :
デフォルトの名無しさん:02/05/06 10:14
>>372 AppSettingsはなぜか書き換えできないんで、保存するときはXMLファイル開いて処理してます。
書き換えできりゃ楽なんだけどね。
二番煎じは詰まらん
>>378 変なプログラムを「インストールしますか?」って聞いてくる分たちが悪い。
>>369 前すれPart2の258辺りが参考になると思われ。
しかし、最近#さんみないね。
>>380 いるよー。ヽ(´ー`)ノ
っていうか、最近はほとんど名無しカキコ。
コテハンは主にスレ立て屋で使おうかと。
寺利編むのAPI Doc作ったり、他スレでもいろいろやってます。
>>381 お、おられましたかヽ(´ー`)ノ 口調変えてるのね。
いるのかわからなかったよ。涙ぐましい(笑 ちと安心。
>>380 まだhtml化してないみたいだね。
ソース置き場にハリコしたほうがええかな。
>>371 実際、レスが帰ってくるまでに書いたよ。
でも既存の関数があればそれを使うだけ。
関数あるのはわかってたからね
>ソース置き場にハリコしたほうがええかな。
できたら、お願いできませんか(^^;
あさってなコードを書いてるっぽいです(鬱
>>386 & #さん
ありがとうございます〜。これ元にコード書き直しに逝ってきます。
>>388 シリアライズ使うのか〜。
なるほどパブリックなプロパティ用意すればよかったんだ。
ああこっちの方が全然簡単でいいね。
全然思いつかなんだ。こんなの。さすが。
>>381 ドキュメント作った人の正体は#さんだったんだ。ありがとー。
できました〜。ちゃんとXMLで読み書きできました。ワーイ
XmlSerializer使った方がswitch文の煩雑さが無くてウットリ
これってpublicなプロパティを勝手に探してget/putしてくれるってこと?
すげえなこりゃ。java beansもビックリだ。
class
>>393 {
private 糞 糞;
public 糞 get_糞() {
return 糞;
}
public void put_糞 (糞 糞) {
this.糞 = 糞
}
}
なんて美しいんだ
>>394 あのー、リフレクションの話なんですが。。。プロパティの構文の話ではありませんよ。。。
>>394 そのコードだとスタックオーバーフローするぞ(ワラ
>>394 putじゃねえ。setだ。
あと、いらんアンダーバーつけんな。
3匹釣れたところでオシマイにします。ありがとうございました。
ナイス負け惜しみ。(w
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 VS.NETでは問題ないけど・・・。
ソース載せた方が早いかも。
>>402 Control.BringToFront();
Control.SendToBack();
>>406 書き忘れた、コントロール追加する順番変えてみてもできる。
プロパティで直にいじれたかは忘れた。
408 :
デフォルトの名無しさん:02/05/07 12:37
あぁぁぁ。出来ました。
DockStyleで、TopやBottomなど「Fill以外のもの」より、まず
Fillのものを作れば良いということでしょうかね?そのようにやれば
出来たようです。
BringToFront()やSendToBack()等では何も変わりませんでした(涙)。
お騒がせしました(−−;
>>409 なんか面白そうなもの作ってるね。
完成したら公開して。
スレ違いだったらすみません。
Cって、0から勉強して、一通り覚えられるまでどのくらいかかりますか?
413 :
デフォルトの名無しさん:02/05/07 13:14
>>412 プログラミング初心者かそうでないかによる。
作ろうとしてたのは、情報整理ソフトみたいなものです。
構造はXMLで組み上げて、それぞれのNodeには情報
へのリンクだけ。情報そのものには任意の個数のタイトル、
テキスト、リンクなどをたたき込めるようにしようと。
IEと連携できたら、結構おもしろいブラウザになるかも(
ネット上へのリンクと、ローカルに*.mhtで保存してる
ファイルへのリンクを同じ情報に置いたり、あるお気に入りの
親を複数持たせたり…)とか、創作物の構想練るとき
とかに使えるかなと。
(いままでネットで見かけた情報でも、簡単に頭から
すり抜けたりしてるもので…)
その前段階として、とりあえずXMLエディタでも作って
みようとしてたところでした。できたら公開します。
(元ヘタレC++Builder使いでしたが、UNICODEの扱いが面倒
だったので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;
ってどう違うんですか?機能的に。
>>434 いや、どっちもクラス変数になれるでしょ?
>>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ページくらいで諦めた。。。
黄色本、標準 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
Hashtableそのものが無理っぽいな…。
>>455 ISerializable実装してるからできるんじゃない?やってないからわからんけど。
逆にドキュメントを丸々プリントアウトしたような本はカンベンだね
2 in 1 で印刷しる
>>460 なるほどねぇ、、出来ないときは素直にIFormatterでSerialize
するほうがいいのかな、無理やり出来そうだけど激しく面倒そう、、
>>462 それだとSOAPになっちゃうんだよね。。。
SoapFormatterで出来たことは出来たけど…。
>>452で書いた形式のデータ一つだけで、1.59KBいったよw。
ソースコードは短くて楽なんだけどなぁ。
ControlのTextプロパティに"&Hoge"と設定するとHにアンダーバーがつくけど
これをやめたい。Controlクラスを継承したクラス内でStringformatの
HotkeyPrefixプロパティを変更するとできそうなんだけどやり方がわからない。
だれか良い方法知ってます?
あ、"&&Hoge"ってのは無しにして。
UseMnemonic=falseじゃなかったっけ?
>>466 LabelクラスにはUseMnemonicあるんだね。なんで他のにないんだろ?
>>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 >ベクトルとか複素数は見つかんないです.
贅沢だと思う。
クラスライブラリに溺れすぎないようにがんばろう!
>>471 確かにそのとおりですね.ただ,自分の探し方が悪いのかなと思ったので聞いてみたんです
モジュールを作る練習を兼ねて自作してみようと思います
>>469 同一アセンブリからアクセス可能という意味です。
>>474 AをBの1モジュールとしたときBからAのinternalなメソッドなりプロパティにはアクセス出来ないんですか。
具体的な使い方がいまいちわかりませんが何となく概念はわかりました。
>>475 リフレクションを使わないと無理。
こういうときVB.NETが最強。
>>473 どうもです.とりあえずのベクトルのクラスができたので.次はそこを参考に
複素数クラス作ろうと思います.
その前にコメントから生成されるxmlから,テストケースを作るプログラムに挑戦してみようかな..
「xmlから,テストケースを作るプログラム」じゃなくて
「xmlから,テストケースのソースを吐き出すXSL」の方がいいのかな
知ったかぶりな書き込みしてスミマセン
479 :
デフォルトの名無しさん:02/05/10 11:42
C#スタンダードを購入してDBとWEBの連携を勉強しようと思ってます。
DBはAccessとかMySQLを考えているのですが、
C#スタンダードでもWebDBアプリは開発は可能ですか?
DBを使って単純な掲示板みたいなプログラムから始めようと思ってます。
>>479 (Accessはもちろん使えるけど・・・)
MySQLって使えるんでしょうか?
一度確認の必要がありそうですね
MSDEでいいんでないの?
まだ実装したことが無いので詳しくないのですが、
ODBC経由で使用したいと考えていました。
(他にWin環境でもっと良いインターフェイスがあるのでしょうか?)
ODBC経由のAccessがOKならMySQLもOKかなって思っています。
>>482 >ODBC経由のAccessがOKならMySQLもOKかなって思っています。
今のところParadoxとFirebirdはODBCドライバがあるにも関わらず
.NETでは使用できていないので.NET対応のドライバが必要になると思います
485 :
デフォルトの名無しさん:02/05/10 12:42
>>480 使えるよん。ODBC.NET + MySQL で実験した結果おっけーだった。
やっぱ、#さんか(w いつもお世話になってます
.NETファミリー製品別機能一覧表では
・データベースの作成、クエリ (MSDE)
・データベースの作成、クエリ (SQL Server)
・SQL スクリプトの作成
この3つの項目はC#スタンダードはサポートされていませんでした。
この3つの項目ってどういう機能なんでしょうか?
>>490 「鯖側の機能は無し」ということでしょうね
レスしてくださった方々、ありがとうございました。
私が希望していることはC#スタンダードで問題無さそうなので
購入することにします。
パス(C:\hoge\hoge)から、それがファイルなのかディレクトリなのか判別する
にはどうしたらいいでしょう。
System.I0探してみたんですが、見つからない、鬱。
>>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から継承されている。
子の型は親の型の参照型変数に代入できる。
501 :
朝までC#:02/05/10 21:06
>>499 >>500 回答ありがとうございます。
すべての元でToString()とかもここから来ているのは
わかっていましたが、より源流?のオブジェクト型に下流?の型の
代入が出来るのですね。ありがとうございます。
オブジェクト配列もオブジェクトに代入できてしまうのはなんか違和感がある・・・。
>>498 そいつは「ポリモーフィズム」という機能だ。
・・・というか、黄本って、その辺の説明ないんか…
>>503 まぁ,配列も Array クラスだし...
507 :
デフォルトの名無しさん:02/05/10 22:18
>>504 黄本の「はじめに」に書いてある対象読者は
・何らかの最新のプログラミング言語(C++、Visual Basic、Javaなど)の知識を
持つ経験のあるソフトウェアのプロフェッショナルであること
・オンラインヘルプを調べることに抵抗がないこと(さらに、恥ずかしがること
なく、よく調べること)
となっているから
オブジェクト指向の基礎くらいは当然分かっているというのが前提と思われ
(ソフトウェアのプロフェッショナルなんだから)
>>507 3つ中2つがオブジェクト志向型言語だもんね(後1つは敢えて認めません)。
recvした内容をデコードする標準関数ってないの?
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 ブロードバンドしてない人は死ぬ運命です。
あのー日本ではブロードバンド人口って
言うほど多くないんですが・・・・
winXPのSP1には添付されるんじゃないかなあ。
つまりそれ以降にPC購入した人には自動的に入ると。
ブロードバンド率ってアメリカより日本の方が上じゃなかったっけ?
IE コンポーネントを使用しているのですが,BeforeNavigate2 イベントが発生されなくないですか?
もしかしたら漏れだけなのかな...
あー、失礼。コンソールアプリなのでFormのOnKeyDownとかは使えないのです。
Console.ReadとかだとEnterキーが押されるまで待ってしまうので、WindowsAPIのGetKeyState等を使えば
できるのはわかっているのですが、.NET Frameworkの中に関数としてないかな?と思いまして。
なるべくWinAPIを直接呼ぶのは避けたいもので。
544 :
デフォルトの名無しさん:02/05/11 16:59
Winでぐりぐり動くゲーム作れますか?
描画ライブラリとかに簡単にアクセスできますか?
IE コンポーネントでリンクをクリック
↓
それを標準のブラウザで表示させるために BeforeNavigate2 イベントで Process.Start(e.uRL); としたい
↓
呼び出されない
↓
ガ━━Σ(゚д゚lll)━━ン
うーむ,どうしたものか...
>>547 なんかVJ++の頃を思い出す泥臭さね。(藁
Double scale = 80/96;
でやると0が入ってきてしまいます。
どうして?
int/int = int だから。
どうしたら結果が入りますか?
80.0/96
C# で 定数テーブルを作りたいんだけど、どうすればいいのか、わからないです。
c/c++でかけば、
const int table[5] = {1,4,9,16,25} ;
こんな感じのもの。
555 :
デフォルトの名無しさん:02/05/11 21:16
あの〜かなり初歩的なんですが
文字列が数字として認められるか(変換できるか)判断するにはどうしたら
IsNumeric関数みたいなやつ
>>555 ToStringにかけると例外出ちゃったりする?
557 :
朝までC#:02/05/11 21:35
たとえば、intならIntのParseメソッドかな?
bool b1 = Microsoft.VisualBasic.Information.IsNumeric("10");
bool b2 = Microsoft.VisualBasic.Information.IsNumeric("a");
>>558 そのnamespace自体がネタでしょ。
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
たまには厳しさを見せるのも親心ってもんだ。
たとえば入力された値が数字かどうか判断したいんす
エラーチェックとして
みなさんどうなさってるんでせうか
568 :
朝までC#:02/05/11 22:29
独立したエラーチェックなしで、Parseメソッドで
いきなり変換をかけて駄目だったらエラーをcatchする。
>>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 ごめん、もしかして+演算子の動作を誤解してたかな?調べてきます。
単にchar型だから足し算されただけか…吊ってきます
>>575 s1[1]ってchar(16bit)じゃないの?
char + char = int
580 :
デフォルトの名無しさん:02/05/11 22:58
C#の言語仕様、嘘だらけ。
シャレにならん。
蛇足ですが、意図したように動かすには
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);
>>587 お詫びにこんなんどうすか?
あんま綺麗じゃないけど
Console.WriteLine(s1[1].ToString() + s2[1]);
>>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だととらえたほうがいいと思うがなあ
>>593 System.UINT16の別名で良いの?ushortもcharも。
自動的な型変換が起こるときは裏でキャストされているのかな、と思っていたのですが、
キャストとも違う処理が行われているんでしょうか。
597 :
朝までC#:02/05/12 00:24
>>595 ちがうよ。charは、ユニコード用のメソッドとかが追加されている。
>>597 しかし、operator +()はushortな動きをするのね。
まぁ、そっちの方が
data[i] + '0';
とかするのに都合は良いか。
みなさーん、バカ↓が湧き出してきました
John ◆0z.4Is5E
いろんな板で誹謗を繰り返しています。
よっぽど自分に自信が無いんですね。
放置よろしくお願いします。
みなさーん、バカ↓が湧き出してきました
>>599
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()が表示される。だから連結文字列になる。
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 あーあー、改行コード変になちゃーた・・・。
>>606 スマソ。正解です。
stringにはわざわざ ToString() してない模様。
>>609 なる。Object(System.Object?)って文字列が帰るのか。
ソースって何に付いてくるんですか?
次から自分で調べようと思います。
613 :
朝までC#:02/05/12 01:02
うーむ なるほど。
>>609 さんの情報ソースはどこですか?
デザインパターンと呼ばれる「良くあるパターン」の辞書みたいなのが、
C++などであるようですが、C#の場合は、
それに関するツールのようなものが存在するのでしょうか?
それとも、デザインパターンは概念であり言語に依存しないので
しょうか?
さっき初めてC#で書いてみたけどアプリの起動がやたら遅く感じる
のは俺だけですか?コンパイルは早いけど・・・
>>617 ありがとうございます。と言うことは安心してデザインパターンの本を買えますね。
ここ最近、VBからC#へ移行として勉強して思ったんですが、
旧来のベテランがやっていた工夫を言語のほうが合わせたって感じですね。
オブジェクト指向を知らなくてもベテランにとっては、
ややこしく工夫していたところを簡潔に書けるように
なっただけで、初心者にはベテランの工夫を言語で矯正すると
いった感じに感じました。
当然、新しい言語仕様だから出来る機能もありますが・・
>>618 開発環境での起動はめちゃめちゃ遅いのでマシンを買い換えました。
実行ファイルだけだとそうでもないでしょ?
>>619 >開発環境での起動はめちゃめちゃ遅いのでマシンを買い換えました。
元のスペックと新スペックを教えてください。
テラリウム見てる分には割と軽いですね。(Duron 900)
元は、セレロン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ネイティブにできないんだよな?
やったことないけど、ハードディスクに落とす瞬間にコンパイル
されてしまう方法があるそうだよ。(実行時ではない。)
頒布は環境に非依存でハードディスクに置けばネイティブって
ことかな?
>>625 ありがとう調べてみます。
IEnumerableインターフェース(発音がわからない)についてですが、
IEnumerableで、GetEnmumeratorを実装させて、
戻り値のインターフェースのIEnumeratorで、
本当に欲しい機能であるReset,MoveNext,Currentを
再度インターフェースしているわけですが、なぜこんな2段が舞えに
しているのでしょうか?
IEnumeratorだけを実装してIEnumeratorであるかどうかだけを
チェックしてからreset....などのメソッドを使えばいいはずですよね?
同じ名前のメソッドでかぶったら面倒だぞう。
>>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のイメージ扱おうとすると
ものすごく不便なんですが・・・
それと、ベースクラスを直接使う必要はほとんどないでしょ
みなさん、コメントはどうされていますか?
いままで、
//===============================================================================
// ××定数定義
//===============================================================================
とか、そんな感じで付けていたのですが、
黄色本「標準C#.NETプログラミング1」のP299によると
ソース中にXMLを書いてVS搭載のWebページビルドで
ドキュメント化が可能だと言うことがわかりました。
やってみたのですが、それをやるとタグがうるさくなってかっこわるいです。
int i; //ループ変数
もうちょっとスマートに自動でドキュメントを作成したいのですが、
良いアイディアはありますか?
VBの頃はHotDocumentを使ってソースから
ドキュメントを生成していました。(無意味にデカイドキュメントが出る)
出来たらコメントからテスト仕様書(チェックリスト)とかも
出るようにしていきたいなぁ
コメント無しでも理解できるコードを書くのが基本。
>>653 いや、なにぶん示された例が
> int i; //ループ変数
だったもので。
>>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 賛否両論だと思うけど、
コメントがついてる=コメント無しじゃわかりにくいコード
ということは頭の片隅においておいたほうがいいかも
コメント無しでも判るがコメントも付いているを目指します。
判りやすい・判りにくい と コメントが付いている・付いていない
は別だと思います。
659 :
デフォルトの名無しさん:02/05/13 12:41
>>657 コメントなしで分かりやすいプログラムにコメントをつけると分かりにくくなる理由とはなんでしょうか?
660 :
デフォルトの名無しさん:02/05/13 12:43
>>659 必ずしもわかりにくくなるわけじゃないけど、修正を加えていくことでコメントとコードの
整合がとれなくなったりすることが多いね。
661 :
デフォルトの名無しさん:02/05/13 12:50
たとえば関数のインターフェイスとか利用方法のコメントなんですが、
これはいくら変数名を工夫したからといって、
付けてもらわないと困るとおもうのは私だけだろうか・・・・
いちいち全部関数の本体読めってか、やだなぁ
>>660 慣れれば、ちゃんと合ってないといられなくなるよ。
>>659 別に俺はそんなこと言ってないけど。
本当にわかりやすいコードはコメントをつける必要なんてないってこと。
でもいつもそんなコードが書けるわけじゃないからコメントが必要になるけど。
コード無しでも十分わかりやすいコードにコメントをつけるとしたら、それは無駄な作業だと思う。
>>661 それはコメントしておいていい部分だと思うよ。
もちろんドキュメント化も。
>>661 同感です。
実はコメントネタが終わったら、その時の終わり方次第ですけど、
変数名などのプレフィックス?(int intPtrBuff;とか)
についてもみんなどんな工夫をしているのか聞くつもりでした。
関数の機能くらいは大抵コメントしておくでしょ
問題はその中身にどこまでコメントをつける必要があるかということだよね
>>666 そそ。
コメントには2種類あって、
コードを読み飛ばすためのものと、コードを読むときの助けになるもの。
前者は大いに書くべき、いちいちコードを読み直すのは無駄。
後者も書くべきだけど、まず書かずに済む方法を考えたほうがいい。
>>658-659 657じゃないけど、
↓みたいなコメントは、蛇足でしょ。そう言うプログラムを目指せってことかな。
// リストにオブジェクトを追加
list.add(object);
もちろん、
// リストにオブジェクトを追加
element = new ListElement();
element.value = object;
element.next = list.top;
list.top = element;
にコメントを付けるなという意味ではない。
(こうするくらいなら、手続きにまとめて上のようにしろって事)
この例では、低レベルな処理を例としたけど、
もっと抽象どの高いレベルでもそうしたほうが良いでしょうという話。
まぁ、当然のことを言ってるだけなんだけど(でも守るのは意外と難しい)
コメントを書くということは、プログラムに、関数のシグネチャやコード自体を
見ただけでは分からない(分かりにくい)、処理や機能が含まれているということですな。
そう言うのは少なくしたほうが、結局は読みやすくなる。
>>665 自分の場合は
・英語の綴りは、慣用となっているものを除き、原則として省略しない
・引数であることを関数内部でも分かりやすくするためかならず頭に a をつける
(例:int aMemberID)
ですけど
>>671 俺はCで引数は常にconstにして引数以外の目的で使われることを防いでたんだけど、
C#ではこれ出来ないの?
>>673 う〜〜ん言語仕様も見てみたんだけど無いっぽい・・・?
C#のパラメータの修飾子を見ると
呼び出し側の便宜を図ることだけを考えているみたいだね
ref:参照呼出し→パラメータの中身は変更される可能性があるよ
out:出力専用呼び出し→パラメータは初期化しなくてもいいよ
という感じなのに対して
値渡しの場合は
呼び出し側から見れば内部でどう変えられようと構わないから
わざわざ変更不可を指示する必要もないかな・・・という具合
ローカル変数にも使えない模様
リファクタリングにけんか売ってますか?
初歩的な質問で恐縮ですが、
Imageクラスを継承したMyImageクラスを作ろうとしたら
System.Drawing.Image.Image()はアクセスできない保護レベルになっています。
って怒られて出来ません。
ソースは
public class MyImage : System.Drawing.Image
{
ってやってるだけですが、こういうのは出来ないのでしょうか?
>>678 System.Drawing.Imageがsealされてるとか。
>>678 Imageクラスのコンストラクタはinternalなので、
同一アセンブリ(System.Drawing.dll)内でないと
たとえ子クラスでもアクセス不可。
>>680 なるほど。そうでしたか。
要するに出来ない様にしてあったワケですね。
どうもありがとうございました。
>>682 あれってstatic以外にも使えるの?
それ以前にローカルやパラメータには使えないじゃん>static, readonly
>>683 >>683 使える…と思う(自信なし)
赤本(「実践〜」のP129)みたら、
こんなコード↓載ってたよ。
public class Account
{
public readonly string sortCode;
public Account(string code)
{
sortCode = code;
}
}
>それ以前にローカルやパラメータには使えないじゃん>static, readonly
》
Λ《Λ < そーでした。ちと吊ってきますー
( / ⌒ヽ
ノノ ノ (´´;;; (´
(ノ /ノ ≡≡≡≡ (´´
ノ ノノ ≡≡≡≡(´⌒(´⌒;;≡≡
(ノノ (´⌒(´⌒;;
 ̄ ̄ ̄ ̄ ̄ ̄
# ref/out かなぁ…
>>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を探して起動してみよう。
>>690 素早い回答ありがとうございました。感動して鼻汁でました。
これはいいですね。
692 :
デフォルトの名無しさん:02/05/13 22:00
>>691 Ildasmだと、その名のとおりILレベルなので、Decompilerとか使うと吉。
>>692 ILが読めることは大事なことだから、おれはildasmを薦めるな
694 :
デフォルトの名無しさん:02/05/13 22:41
ニューヨークはチャートを見れば分かるとおり下げ基調継続。
socket を非同期で受信して,受信したデータに応じてフォームを表示したいと考えています。
そのフォームには IE コンポーネントをおいているため,STA スレッドで呼び出さないといけないのですが...
Main に STAThread 付けておいても非同期受信で呼び出される関数では MTA のようなのです。(例外が投げられる)
何とかして STA にする方法はないのでしょうか?
(同期受信にしろというのはなしで...)
過去ログの番号が分らないのなら無視すれば?
>>699
・゚・(ノД`)・゚・ ウワーン
ごめんなさい,見落としてました...
逝ってきます...
レスthx
>>699-701
>>690 レスありがとう。
元のソリューションはちょっと複雑だったんですが、
簡単なコードでも再現できました。
方法
1,空のソリューション作成
2,その中にC# WindowsアプリケーションとManaged C++ クラスライブラリのプロジェクトを作成
3,「参照の追加」でC#アプリケーションからC++ライブラリを参照するようにする
4,ビルドする
5, 一回IDEを終了してから改めてIDEを起動
これで、以後C++ライブラリを更新しようとすると
エラーになってしまいます。
ビルドの順番変えてみたら?
706 :
デフォルトの名無しさん:02/05/14 00:29
>>703 3. のときに、プロジェクトを参照してる?
あと、プロジェクトの依存関係を設定したほうがいいかも。
>>704 依存関係を変えてビルドの順番を変えようとしても
「この依存関係は、プロジェクト システムによって追加されたため、削除することができません。」
と出てダメでした。
ちなみに現在の順番は
ライブラリ→アプリ です。
それに、ライブラリだけをビルドしようとしてもエラーになるし、
VS起動中はエクスプローラでもDLLが削除できないので
順番を変えても変わらないような気がします。
>>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で構築したいです。
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
窓際いいよね。
窓際地方公務員、憧れるなぁ。
>>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
入門用の書籍でお勧めってありますか?
事故レス
関連すれありましたね、失礼しました。
>>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 パネルをフォームに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
クソなだけに煽られるのが怖いのさ(プププ
758 :
デフォルトの名無しさん:02/05/15 21:38
>>751 サンクス!
できればブロックの先頭でも指定できると便利なんですが・・・
まあ、そのうちできるようになる事を期待しましょう。
>>758 そういう事はリリースする前に言えっての(w
>>756 過去に何度かそういう理由でスレが荒れたから、かも。
Delphi戦争はDelphi厨とVB厨の和解という意外な結末で幕を閉じた。
VB.NET厨(書けるかどうかも怪しいが。通称、このスレの癌さん)が目を付けたのがC#
VB.NETと似たようなレベルの言語仕様。これなら煽りがいあるんじゃない?
癌さんの自作自演は今日も続く・・・。
つーか隔離スレでやれよ。本スレ荒らしていいならこっちも出向くぞ。
>>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
配列がクラスになったのはセンセーショナル
でもない
769 :
デフォルトの名無しさん:02/05/16 11:24
C#で、SOAP+HTTPS(HTTP+SSL)をサポートすることは簡単なのでしょうか?
770 :
デフォルトの名無しさん:02/05/16 12:35
ArrayListって、リンクドリストじゃなくて、配列ですよね?
リンクドリストってないんですか?
うーん 黄色い本のデリゲートの説明がよくわからない。
優しい説明のある本かURLをご存じないですか?
普通にメソッドやプロパティ参照は、電話を書けて情報交換みたいなもので、
デリゲードやイベントなどのコールバックは、
「なんかあったらこの関数を呼び出してくれ」と
伝えておけば、なんかあったときに呼んでもらえる
んですよね?
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の派生型がいるわけじゃない。
自分で書いてみりゃわかるって。
>>776 つか名前までミスった。ちと寝る はぁ、、
774 さんが退出されました
Delegateって+=演算子使えますけど複数のデリゲートを代入して一気に実行とか出来るんですか?
イベントハンドラに複数のメソッド割り当ててみたり。
>>779 delegateキーワードで作ったのはデフォルトでマルチキャスト。
>>781 C#入門やってたあの人には聞かないのか?(w
>>781 漏れはAppDoaminをキボン。
プロセスでもなくスレッドでもなく、どうしてAppDomainという単位が必要なのか。
AppDomain間の通信ってどうやるのか例示キボン
>>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!!";
}
}
こっちが呼び出し例。
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);
}
}
}
んで、確認できたらさらにこういうケースで確認してちょ。
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なんじゃない?
確かに付属の小冊子はまったくの0からは厳しいのかも。
と、VC#買ってきて思った。
でも、CとC++の構文くらい知っていれば何とかなるかも、と思ったりして。
また、インストールの件は1人が使うならコピーして使っても良いとは使用許諾書に書いてある。
企業でも1人に対してとなっております。
複数台のPCにインストールしてもいいのでは、とは思います。
>>801 > GDI+ってWindows2000にはなかったんじゃ?
えっ、ネイティブに半透明に対応してるんでWin2000は入ってるんじゃないの?
809 :
デフォルトの名無しさん:02/05/18 12:43
Socketについてわかりやすいサイトとか書籍とかない?
(書籍はないか・・・)
あ、C#でのSocketの使い方という事か。勘違いした。スマソ。
=?iso-2022-jp?B?GyRCNjUkKCRGJC8kQCQ1JCQhIxsoQg==?=
↑メールのこういう文字列をデコードしたいんですが
どっかにサンプルコードが掲載されてたりしませんでしょうか?
age忘れた…
どなたかお願いします。
>>815さん
BASE64関連は System.Convert にあるものが使えそうなのですが
Quotedエンコードな場合もあるみたいなので…。よくわからん。
結構汎用的なコードだと思うんで、もし前に誰かが書いたものが
あるなら、是非裾分けしてもらたい次第であります。
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呼ぶべきではないかと?
C♯かjavaどっちを始めればいいと思いますか?
プログラムは組んだことありません。
825 :
デフォルトの名無しさん:02/05/19 18:00
>824
外出だがジャヴァ
819=824?
目的にもよりますが、学習のためであるならどちらでも構いません。
今のところJavaのほうがいい本が多いので、そちらをすすめます。
>>824 まず、ObjectPascalかC++を覚えて、作ったオブジェクトは必ず解放しなければならないことを学んで下さい。
C#/Java -> C++ -> 恐ろしい量のメモリリーク -> クビ
>825,826,827
ご丁寧なレスありがとうございます。
C#はC++の改良版でJavaとC++のいいとこ取りという話を
雑誌で見かけたのですが、この解釈で正しいのでしょうか?
いいとこと思うか悪いとこと思うかは人それぞれ
>>828 C++のしがらみだらけの機能を整理し、特に重要でない機能を省いたもの。
だからC# -> C += 0.5
>>828 すみません、その手の発言はフレームが発生するので避けてくださいな。
初歩的な学習のうちはC#もJavaも変わりませんよ。
>>827 なんか凄く同意
メモリリークをまったく知らないプログラマは
いざ別の言語を使おうとするとパニックになりかねない
C++のようなGCのない言語の仕事が金輪際なくなるのなら話は別だけど
空のImageオブジェクトを作成する方法がわかりません。
どなたかご存知ありませんか。
>>831 揚げ足取る気はないが文章全体痛いから敢えて潰す。
フレームって何だ?
>829,830,831
質問ばかりしてすいませんでした。どうもありがとうございました。
>>835 Imageは抽象クラスなので単独でインスタンスは作成できません。
CreateImage(幅,高さ)みたいなメソッドを探しているのですが、見つかりません。
無理やりビットマップをメモリに作って、ストリームからロードするしかないのでしょうか。
>>838 継承して仮想関数何とかしてオーバーライドする。
と言うのが教科書的答え。
>>832 オブジェクトに関して生成後は無責任でいれるのがGCの良いところ。やるだけやって後はぽい。
GCの無い言語は中絶(不謹慎な例えスマソ)まで確実に女の名前を覚えていなければならない。
ヤリ逃げC#と責任感の固まりのC++が同じ生きかたをしているとは到底思えない。
Imageは継承できないとかいう話だった記憶
Bitmap使え
>>839 Imageオブジェクトは継承できないようになっているようです。
なぜなら一切ビット配列にアクセスできるようなインターフェイスが含まれていません。
独自のエンコーダー/デコーダーすら書けそうにありません。
なんでこんな糞仕様なんでしょうか。
>>841 GCがある方が安全だというのはその通り
ただ世の中には自分で言語を選べない状況というのもあるから
「使ったメモリは不要になったら開放しなければならない」
ということは体験的に知っておいたほうがいいと思われ
(頭で分かったつもりになるのではなく、実際にそういうコードを書くということね)
なぜImageにビット配列のアクセスがないか解りました。
Imageはピクセルベースのグラフィックと、ベクトルベースのグラフィックを統一的に扱うための
アダプタなわけですね。
ピクセルへのアクセスはインスタンスを調べてBitmapにキャストしてから行うべきなのですね。
謎が解けました。
ただ、やはりBitmapを直接作成する方法も用意されていないようです。
Win32APIでCreateBitmapしてからハンドルを渡たすしかないのでしょうか、
あまりWindowsハンドル関係は抽象度が下がるので使いたくはないのですが。
すみません勘違いでした。
Bitmapはインスタンスが直接作成できるのですね。
Bitmap = new Bitmap(幅,高さ);
で解決しました。
お騒がせしました。
よくわからない使用ですね。
Bitmapまで直接作成できないとは。
>>846 ?
あなたのオブジェクト指向結構独特っぽい。
>>849 >>848 ではないけど、そう思いますよん。派生クラスだけで解決すればよいと思いますです。
なんか急に厳しいスレになったなぁ・・
>>851 >独自のエンコーダー/デコーダーすら書けそうにありません。
>なんでこんな糞仕様なんでしょうか。
自分の力不足をライブラリに転嫁する様な人間に優しくしろと?
>>823 すいません。省略してましたが、UnlhaFindFirstはもちろん先に呼んでます。
長くなるけど、ソースをアップしたほうがいいですかねえ?
854 :
デフォルトの名無しさん:02/05/19 21:42
C#ってさ、なんかC++っぽくなったVBってかんじ。
JavaっぽいDelphiと言ってくださいw
C#(&VB &Delphi)の共通点
厨にうける取っつき安さ
とことん作り込むには向かない
857 :
デフォルトの名無しさん:02/05/19 21:54
C丼、汗だくで。
>>850 派生クラスだけで解決するというのはどういうことですか?
>>852 いくら力があっても、肝心の部分を抽象化して隠蔽されたのでは何もできないでしょ。
昨日VS.NETを買ってきたばかりなので、ついImage、Graphics関係を見たときに、
実態のないJavaのImageクラスを思い浮かべて失望してしまったのです。
C#にはLock/Unlock,SetPixel/GetPixelがあってホッとしましたけどね。
それに実際問題、独自のエンコーダー/デコーダーを追加できるような仕様にはなっていないように見えますが。
>>858 >肝心の部分を抽象化して隠蔽
オブジェクト指向の肝。
>>856 C++でC#で作ったぐらい作りこんでください。
861 :
デフォルトの名無しさん:02/05/19 22:01
>>860 日本人に理解できるくらい、文章を作りこんでください。
863 :
デフォルトの名無しさん:02/05/19 22:08
まあC#は、出来合いの物を、組み合わせてありがたく使わせてもらう、
デパチカの総菜みたいなもんだな。適度な負担で、ある程度の物を。
手抜き主婦には愛されるが、一流シェフには無縁の物。
864 :
デフォルトの名無しさん:02/05/19 22:11
>>862 おれもC#を擁護したいが・・・ あんたの日本語は良くわからん
独自のエンコーダー/デコーダー
System.Drawing.Imaging.ImageCodecInfoあたりかな名前だけ見ると
>>859 確かに抽象化は肝ですが、
派生クラスにすら内部へのアクセスを許さない仕様だと、
結局与えられたこと以外何もできないライブラリへと成り下がります。
Javaなどは結局少し凝ったことをしようと思うと、
すべてint配列上で自前で処理してからImageを作成するという非常に効率の悪い方法しか取れませんでした。
>>866 >結局与えられたこと以外何もできない
オブジェクトの肝
>>865 もちろん自分もその辺は調べたのですが、どこにも実体が見えないのです。
どうもWindowsが標準で提供するCodecしか使えないみたいにも読めます。
869 :
デフォルトの名無しさん:02/05/19 22:15
C++が鉄の中華鍋なら、C#はテフロン加工の鍋。
どちらがいいかは、使う人間により違う。
単純に鍋だけ比べてもねぇ。
843さん、C#は用意されている物を組み合わせて、ソフトを作るもんです。
用意されていない物を無理につくりこんでも、まともな速度では動かないでしょう。
他の言語を使用するか、他の言語でコンポーネントを作成して、C#から使いましょう。
テフロン鍋に多くを期待するべきではないでしょう。
でもImageはC#じゃなくて.NET Class Libraryの話なので、
他の言語でも同じことでしょう。
875 :
デフォルトの名無しさん:02/05/19 23:24
ヒョンゼチァングage
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だらけにしなきゃいけないのか。なるほど。
>>886 体験版ほしさに買った。
内容は・・・雑誌のDelphi始めよう!みたいなレベル。
888 :
デフォルトの名無しさん:02/05/20 18:29
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
>>908 オンラインドキュメントを使いこなすことが大事。
インデックス、検索、全文検索。これらを使いこなすことも、
プログラミングする上で大切だよ。
本やサンプルコードを見ることもいいけど、それは効率が悪い。
ワーカースレッドからイベントハンドラを削除すると処理がそこで
止まってしまう現象に悩まされています。
例外などではなく、全てのスレッドの処理がそこで停止してしまいます。
複数のスレッドがハンドラ追加したり削除したりしたりするものですが、
BeginInvokeなど試してみたんですが原因がいまいちわかりません。
なにか情報ありませんでしょうか?
>>910 自己レスです。原因らしきものはわかりました。
別のスレッドがイベントハンドラを追加しようとする時に
別のスレッドがハンドラを削除しようとすると起こるみたいです。
全てが止まってフリーズしたみたいになるので、
正確なところはわかりませんが、、、
>>911 また自己レスですが原因は違うところみたいです。
スレ汚してしまい、申し訳ない。
早く・・・早く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;
}
}
919 :
朝までC#:02/05/23 16:23
説明不足ですみません。TextBoxコントロールです。
ユーザーコントロールのソースです。
public class TextBoxEx: TextBox
{
public override string Text {
get{
return base.Text;
}
set {
base.Text = value;
}
}
じゃないの?
クラスのファイルを作ってやってみましたけど、
ツールボックスに乗っかりません。
GUIのデザイナで使えるようにするのにどんな条件があるのかな?
理屈でいうとユーザーコントロールに乗せるよりそれが一番素直な書き方
なんだけどなぁ・・・
TextChangeイベントもぶつかってる・・・うーむ。修行が足りない。
>>921 >ツールボックスに乗っかりません。
それは自分から追加しないと駄目。
>>921 >TextChangeイベントもぶつかってる・
嫌ならnewしなされ。って言うか親クラスのメンバくらい確認しながら実装しなされ。
>>922 ありがとうございます。ううう・・・いままでユーザーコントロールを
使っていたのがアホみたいです。なんとも悔しい。これもVBの呪いか?
>>923 >>922 さんに指摘の方法でも同様の問題が出ると思われますので、
NEW で上書き実装してみます。・・・ってこの場合もイベントを
オーバーライドできるかもしれないので調べます。
>>924 >いままでユーザーコントロールを使っていたのがアホみたいです。
これはMS推奨の正攻法なのでアフォじゃないと思われ。
overrideするかbaseのイベントにわたされたでぇがてを+=
>これはMS推奨の正攻法なのでアフォじゃないと思われ。
複数のコントロールの組み合わせだとコンテナが無いと困るので、
やり方を統一しているのでしょうね。
単純にTextBoxを拡張したいだけなら教えて頂いた方法が
さっぱりしてていいです。・・・しかし。
普通にイベントを追加したら当たり前だけど、TextBoxのTextChaneイベントが
子である。ExTextBoxクラスと、それを貼り付けたフォームの両方に
イベントが行くようになりました。
しかし、ExTextBoxクラス中のTextChangeでBase.Textを変更すると
2回目のイベントが発生してフォーム側にも2回のイベントがいます。
オーバーライドしていないので当たり前ですね。
overrideしたりNewで新しいもので書きつぶしたりして
横取りすればいいのは判るのですが、基本がわかってないせいか、
あちこちにキーワードを入れてみても上手くいきません。
フォームで += とかで関数へのポインタを登録するときに、
その登録先をオーバーライドすれば良いと思って。
ExTextBoxクラスにて、
public override event System.EventHandler TextChanged;
で良いと思ったのですが上手く行きません。
何が間違っているのでしょうか?
>>926 オーバーライド。
で、baseの処理を初めに済ます。
その後にbaseのイベントにNULLいれる。
その後に自分のイベントメソッド登録。
?
判りにくくてすみません。
イベントに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には出来ない)
何か良い方法無いでしょうか?
>>934 BinaryFormatter使った方が楽だと思われ。
>>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がインストールされている環境でないと動きません まる。
947 :
デフォルトの名無しさん:02/05/25 00:48
C#でCoCreateInstanceExに相当する関数は何ですか?
>>947 Type.GetTypeFrom〜でTypeを取って、Activator.CreateInstance。
>>948 Activator.CreateInstanceでリモートマシン名を指定できるんですか?
>>949 Type.GetTypeFrom〜の方で指定できるよん。
1ヶ月で消費か。
保守
保守
保守
保守
補習
♯さん、コテハンで活動してくれよ
保守
ほしゅ
962 :
デフォルトの名無しさん:02/08/15 12:40
保守