C♯相談室 Part25

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

(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。


過去スレは>>2-5あたり。


関連リンク
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D
2名無しさん♯:2005/07/26(火) 13:38:04
3名無しさん♯:2005/07/26(火) 13:38:44
4デフォルトの名無しさん:2005/07/26(火) 13:43:39
4 Catch!
5デフォルトの名無しさん:2005/07/26(火) 14:12:08
public Catch(Exception ex) {
 if(ex is NewThreadException)
  ((NewThreadException)ex).Thread.Post("新スレ乙","sage");
}
6デフォルトの名無しさん:2005/07/26(火) 14:29:04
Catchネタはやめれw
7デフォルトの名無しさん:2005/07/26(火) 14:36:45
>>5
どんな例外だそれは。
8デフォルトの名無しさん:2005/07/26(火) 14:48:25
何で新スレ立つのが例外なんだw
……ああひょっとしてこういう違和感があれの違和感なのか……
9デフォルトの名無しさん:2005/07/26(火) 14:50:28
>>8
レス数が1000を超えたら例外が飛ぶはず
10デフォルトの名無しさん:2005/07/26(火) 14:55:49
例外は飛ばない。いずれ1000を超えることは分かり切ったことなんだから。
代わりに1000超えたイベントが発生する。
11デフォルトの名無しさん:2005/07/26(火) 15:00:17
そういうネタは前スレでやれ
12デフォルトの名無しさん:2005/07/26(火) 19:38:40
Excelを動かそうとしているのですが、
Microsoft Excel xx.x Object Libraryへの参照を追加して
Excel.Application app = new Excel.Application();
とすると、「抽象クラスまたはインターフェイスのインスタンスを作成出来ません」とエラーがでます。
なぜでしょうか??
13デフォルトの名無しさん:2005/07/26(火) 19:47:33
>>12
バージョン依存か?

Microsoft Excel 11.0 Object Library

では、問題なし。
14デフォルトの名無しさん:2005/07/26(火) 19:57:46
>>12
new Excel.ApplicationClass(); ではうまく行くというオチ?
15デフォルトの名無しさん:2005/07/26(火) 20:20:42
>>14
Excel._ExcelApplicationClass app = new Excel._ExcelApplicationClass();
だとうまくいきました。しかし、_ExcelApplicationClassにはVisibleプロパティが
ないみたいで、app.Visible = true;
でエラーが出てしまいます。

>>13
ちなみにversionは10.0でした。
1612:2005/07/26(火) 20:40:54
なんとか自己解決しました。ソリューションから作り直したらうまくいきました。
どうやら、フォルダにコピーされた
Microsoft Excel 10.0 Object Library(Interop.Excel.dll)が
壊れていたか、リンクがうまくいって無かったのだと思われます。

>>13 >>14
ありがとうございました
17デフォルトの名無しさん:2005/07/27(水) 21:35:59
1乙
18デフォルトの名無しさん:2005/07/28(木) 18:27:43
タブコントロールへ、Windows.Forms で作成した Form をはりつけたい
と思っています。

Form f = new ABCForm.FormMain();
this.TabPage1.Controls.Add(f);
f.Show();

のように、行なうと「トップレベルのコントロールをコントロールに追加できません。」
とエラーになります。

これを


Form f = new ABCForm.FormMain();
f.Toplevel = false;
this.TabPage1.Controls.Add(f);
f.Show();

とするとタブページの中にフォームは表示されますが、Windows の
ボーダー枠(閉じるボタンなど)も表示され、タブページの中を
フォームが移動できてしまいます。

そうではなくて、タブページに、フォーム自体をはりつけて表示
させたいのですが、タブコントロールではそのような事はできません
でしょうか?

実現させる方法がありましたらアドバイスよろしくお願いします。
19デフォルトの名無しさん:2005/07/28(木) 18:48:48
>>18

Form f = new ABCForm.FormMain();
f.Toplevel = false;
f.FormBorderStyle = FormBorderStyle.None;
this.TabPage1.Controls.Add(f);
f.Show();
2018:2005/07/28(木) 20:04:19
>>19
ありがとうございました。できました。

もう1つ教えてください。

Windows XP で、画面のプロパティ内のフォントサイズを
標準から大、特大に変更した時に、 C# で作成した自前の
アプリケーションのラベルなども変化させたいのですが、
何かの設定で、行なう事はできますでしょうか?

方法がありましたら教えてください。よろしくお願いします。
21デフォルトの名無しさん:2005/07/29(金) 09:53:33
Windows Forms 2.0 を待つのがいいんじゃね?
22デフォルトの名無しさん:2005/07/29(金) 11:47:16
C♯相談室 Part24
http://pc8.2ch.net/test/read.cgi/tech/1117631000/

前スレ先に埋めろ。
23デフォルトの名無しさん:2005/07/29(金) 11:48:13
埋め開始
24デフォルトの名無しさん:2005/07/29(金) 11:49:08
あ、間違った
埋めるの('A`)マンドクセ
25デフォルトの名無しさん:2005/07/29(金) 11:59:03
残り20レスをどう埋めるか、それが問題だ。
26デフォルトの名無しさん:2005/07/29(金) 16:41:29
EventHandler<T> があるのに EventHandler<TSender, TArgs> がないのはなぜですか
27デフォルトの名無しさん:2005/07/29(金) 18:21:21
senderは常に特定の型とは限らないから。
28デフォルトの名無しさん:2005/07/29(金) 19:04:20
やっと前スレ終わったか
29デフォルトの名無しさん:2005/07/30(土) 00:26:31
こんばんは。
計算式を現す文字列から結果を出す為にJScriptに投げて取得してるのですが、
文字列の中に変数があるので、変数の値は自分で解析したいのですが
うまい方法(変数の切り出し方?)はありませんか?
30デフォルトの名無しさん:2005/07/30(土) 00:42:21
var の後ろが変数じゃね?
宣言せずとも変数が使える言語だから var だけを頼りにしちゃだめだろうけど
31デフォルトの名無しさん:2005/07/30(土) 00:48:25
>>30
というか
3 * a + 2
の文字列からC#側でaに5を代入した上でEvalさせたいと言うことではない? よくわからんけど
32デフォルトの名無しさん:2005/07/30(土) 01:41:54
そんなこと何に使うんだ?
33デフォルトの名無しさん:2005/07/30(土) 01:53:18
再帰下降パーザでも書けば
34最凶VB厨房:2005/07/30(土) 02:06:38
文字列置換でいいんではないかと思われ。
3529:2005/07/30(土) 08:17:05
なんか単純に文字列置換で良い感じですね。
あと再帰下降パーザはググって見ました。
自前で構文解析して見たいので勉強します。
どうもでした。
36デフォルトの名無しさん:2005/07/30(土) 09:17:27
2a + 4
とか書かれたらどうするつもりなんだろう。
37デフォルトの名無しさん:2005/07/30(土) 11:30:57
>>36
正規表現の事前チェックで文法エラーははじくでしょ。たぶん。
38デフォルトの名無しさん:2005/07/30(土) 18:13:23
>>36
むしろそれをも包含した文法で。
39デフォルトの名無しさん:2005/07/31(日) 19:01:24
IEコンポーネントで表示したページ内のテキストボックスに文字入力したり
ボタンを押したりするのってどうするんでしょうか?

具体的にはOperaの認証管理みたいな感じなんですが。
40デフォルトの名無しさん:2005/07/31(日) 20:26:51
>>39
HTMLElement にたいして SetAttrubute でいくね?
41デフォルトの名無しさん:2005/07/31(日) 21:03:31
>>40
ぐぐったらJavaScript関連の物ばっかり出てきたんですが・・・
もう少し調べてみます。
42デフォルトの名無しさん:2005/07/31(日) 21:25:35
>>39
The Code Project - Microsoft Web Browser Automation using C# - C# Programming
http://www.codeproject.com/csharp/mshtml_automation.asp
43デフォルトの名無しさん:2005/07/31(日) 22:24:03
>>42
CodeProjectにあったんすか・・・
さすがにないと思って今回だけは見てなかったです。
44デフォルトの名無しさん:2005/07/31(日) 22:54:14
System.Collections 名前空間内の
CollectionBase, DictionaryBase, HashTable の実装の違いが
いまいちよく掴めないのですが、実際何が違うのでしょうか?
45デフォルトの名無しさん:2005/07/31(日) 23:02:36
CollectionBase : 特定の型に対応する値を格納する独自コレクションを作成するための基本抽象クラス
DirctionaryBase : 特定の型に対応するキーと値のペアを格納する独自コレクションを作成するための基本抽象クラス
Hashtable : キーと値にobject型を使用することで任意の型を格納できるキーと値のペアを格納するコレクションの実装クラス
46デフォルトの名無しさん:2005/07/31(日) 23:21:15
>>45
理解できました。
分かりやすい説明をしていただきありがとうございました。
47デフォルトの名無しさん:2005/07/31(日) 23:27:31
いや45本人だが改めて見直しても分かりやすいとは言いづらいよな。
分かったんならいいけど。
48デフォルトの名無しさん:2005/07/31(日) 23:56:35
質問です。
ttp://example.com/h.html
にアクセスしてHTTPのヘッダを取得したいのですが、
どのクラスを使えばよいですか?
4944:2005/07/31(日) 23:57:25
CollectionBase
  キー・値の概念を持たない純粋なコレクション
DictionaryBase
  DictionaryEntry(key, value) で固定された (厳密に型指定された) コレクション
  コレクションの延長線上?
Hashtable
  キー(key, value), 値(キーのhash) のコレクション

自分はこんな感じで解釈しましたが…
たぶん大筋では間違っていないような気がしますが。
50デフォルトの名無しさん:2005/08/01(月) 00:07:52
>>48
HttpWebRequest/HttpWebResponse

>>49
> CollectionBase
>   キー・値の概念を持たない純粋なコレクション
いやそれぞれの要素に格納されるのが"値"な。

> DictionaryBase
>   DictionaryEntry(key, value) で固定された (厳密に型指定された) コレクション
>   コレクションの延長線上?
延長というかなんというか。別物?
まあ要素へのアクセスにインデックスの代わりにキーを使うコレクションといった感じ?

> Hashtable
>   キー(key, value), 値(キーのhash) のコレクション
前述の通り要素に格納されているのが値。英語でvalue。
それにアクセスするのに使うのがキー。
キーの同一性チェックにハッシュを使う。

DictionaryBaseの一つの実装としてHashtableが存在すると考えれば。
//いや本当は順番は逆なんだけど。
CollectionBaseの一つの実装がArrayListとか。
//いやこれも順番が逆だけど。
51デフォルトの名無しさん:2005/08/01(月) 00:36:44
>>50
ありがとうございます。
やはり奥が深いです… しっかり頭の中を整理して考え直してみます。
5244:2005/08/01(月) 00:55:42
>>50
愛してる!今度夕食でもご一緒しませんか?
53デフォルトの名無しさん:2005/08/01(月) 20:05:14
string mail; のmailをJISコードからshift-JISに変換したいのですが

ぐぐって検索してみたところ
string str = System.Text.Encoding.GetEncoding(932).GetString(bytesData);
と、GetString()の中身がbyteデータなものばかりです。

string str = System.Text.Encoding.GetEncoding(932).GetString(mail);
このように変えましたが、byteデータじゃないとエラーがでます。

mailをいったんbyteデータ型に変換してからGetStringの引数に入れるしかないのでしょうか。
stringのmailを、shift-JISに変換して、stringのstrに入れるというもっとスマートな変換方法はないのでしょうか。
どなたか助言いただけるとうれしいです。
54デフォルトの名無しさん:2005/08/01(月) 20:08:32
>>53
C♯のstringがどういうエンコーディングで文字列データを
持っているか知っているかい?
5553:2005/08/01(月) 20:17:03
>>54
助言ありがとうございます。
ぱっとぐぐってみましたが、ずばりのページが見つからなかったので。
なんとなく勘で、.NETだからUnicodeでしょうか?

でも、Unicodeだとして、それがどのように解決に向かうのか思いつきません。
しかしこれはヒントなのですよね。もうちょっと調べて考えて見ます。
56デフォルトの名無しさん:2005/08/01(月) 20:33:27
考えることは大切だよ
5753:2005/08/01(月) 20:34:38
string mail; のmailの中身はJISコードだと思うんですよね。

メール受信のコードをそのままはりつけて使ったのですが、そのメール受信コードは、メール1通分のstring mailを返すんです。
メールの世界ではJISコードだから、きっとmailの中身はJISコードに違いないと思ったのですが。

そのコードを改めてよく見てみたところ
ReceiveData(stream, multiLines, bufferSize, Encoding.GetEncoding(50220))
の記述から、やっぱりJISに変換してると思うんですよね。

なので、string型の変数(オブジェクト?)に入っているのはJISコードの文字列だと思うのですが
なにかものすごい勘違いをしているでしょうか。
5853:2005/08/01(月) 20:39:02
これはもともとメールのチェック機能をつけようとしたのですが
タイトルに○○が含まれているメールが到着したら知らせるというような。

英文字ならひっかったり引っかからなかったりで、日本語を○○に指定するとひっかからない
ことから、どうもstring mailの中身はJISで、C#のコードがshift-JISだから、それでひっかからないのだな
と思い。
mailの中身はJISコードだろうと思ったのです。
なのでmailをshift-JISに変換しちゃえば、ちゃんとチェックにひっかかるだろうなと思ったわけです。
59デフォルトの名無しさん:2005/08/01(月) 20:39:49
してる。

単純に考えてさ、フレームワークが文字列型を処理するときに一々エンコードを考えて処理しなきゃならないってのは効率悪いと思わない?
6053:2005/08/01(月) 21:05:01
>>59
ヒントをくれまして、ありがとうございます。

やっぱり勘違いしてるのですね。
なるほど、このstringの中身は、JISコードだからとかshiftJISだからとかいちいち判別しながら処理しないといけないとなると面倒ですね。

http://www.atmarkit.co.jp/fdotnet/csharptips/010string/010string.html
の最初のほうに、オブジェクト内部では、文字列はUnicode文字として扱われる。 

と、書かれているので、stringに入っている文字列のコードは全部、Unicodeと。

で、C#のコードもUnicodeが扱えるから、特に文字コード変換する必要など最初からなかった。が解でしょうか。

メール受信コードも、もう一度よく見てみると、JISに変換しているというよりも、byteデータを文字列に変換しているように
みえます。

しかし、じゃあなぜメールチェック機能にひっかかってくれないのか。
特に、英文字がひっかかったりひっかからなかったりするのが気になります。
単にコードの書き方が悪いだけなのか。

ということは、stringに入れるとUnicodeになるから、JISやshift-JISはbyteデータに入れてたのですかね。
なぜ、ひっかからないのかに関しても、もうちょっと考えてみようと思います。

61デフォルトの名無しさん:2005/08/01(月) 22:34:08
自作ライブラリを配布したいんですが、
その際本体のdllやタイプライブラリをインポートしたアセンブリとか
どういう形態で配布したものでしょうか。

ユーザにgacutilやregasmさせるわけにはいきませんよね……
62デフォルトの名無しさん:2005/08/01(月) 22:47:09
.exeと同じ位置に配置させる。
63デフォルトの名無しさん:2005/08/01(月) 22:48:23
>>61
なにを迷っているのかいまいち分からんが…
自作ライブラリ配布ならDLL群をそのままzipにでも圧縮すればいいだろ
どうせ使うのDeveloperなんだし。
っていうかよっぽどのもの以外GACに入れるな。うざい
64デフォルトの名無しさん:2005/08/02(火) 00:44:29
GACには、地球上の80%以上の人間が使うかもしれないとき以外、使ってはならない。

exeと同じところにDLLがいっぱいあるとうざいから、フォルダ切ってそこに入れればすっきりするよ。

推奨はされてないが、.configファイルに
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <probing privatePath="bin" />
        </assemblyBinding>
    </runtime>
とか書いとけばよし。
65デフォルトの名無しさん:2005/08/02(火) 01:03:23
GACはもはやMSが作ったライブラリ専用
6661:2005/08/02(火) 01:06:59
>>63
>>64
>>65
ありがとうございます。
最近始めたんでGACに入れる重大さとか分かってませんでした。

聞かぬは一生の恥と思ってお訊ねしますが
http://mobiquitous.com/programming/ietoolbar.html
http://www.codeproject.com/csharp/dotnetbandobjects.asp
ここで見て自作ツールバーをつくったんです。
自作.dll、BandObjectLib.dll、Interop.SHDocVw.dll、Interop.Shell32.dll

以上のファイルを配布してインストールしてもらう場合、
どうしたらいいんでしょうか?
regasm /codebase....とバッチにでもするんでしょうか……
67デフォルトの名無しさん:2005/08/02(火) 01:11:08
GACに入れてくれてかつ複数バージョンのSXSをサポートしないという
とってもありがたい大手のライブラリもあったりするが
68デフォルトの名無しさん:2005/08/02(火) 02:35:32
まあいいじゃないの
おまえらのsystem32にもへんなDLLとかいっぱい入ってない?
69デフォルトの名無しさん:2005/08/02(火) 06:40:37
>>66
なに?配布対象はEndユーザー?
それならインストーラーつくるのが普通。VSでもWiXでも好きにどうぞ
70デフォルトの名無しさん:2005/08/02(火) 07:39:39
ファイルバージョンは違うのに、アセンブリバージョンが同じ、厳密名も同じ、
でもインターフェースが変わっててまるで互換性がないなんてdllがあったなぁ。
71デフォルトの名無しさん:2005/08/02(火) 07:41:52
.NETになってもDLL HELLは続きそうですね
72デフォルトの名無しさん:2005/08/02(火) 11:01:11
[STAThread] をつけると動作しなくなる ActiveX に対して
どういう対処をすればええ?
73デフォルトの名無しさん:2005/08/02(火) 11:08:18
MTAThreadのスレッド作ってそれにアクセスさせるとか?
74デフォルトの名無しさん:2005/08/02(火) 13:08:36
Subject: あいうえお
で、メールを送ったんです。そしてそれを受信したら

Subject: =?iso-2022-jp?B?GyRCJCIkJCQmJCgkKhsoQg==?=
と、このように文字化けしていました。
iso-2022-jpを調べてみると、JISコードの一種だということがわかりました。

C#はUnicodeだから、JISなのにUnicodeで変換したため文字化けしたものと思われます。

これをJISで変換してやって、stringに入れなおしてやれば
Subject: あいうえお
に戻るだろうと思い、下記のようにコードを書きましたが、相変わらず

Subject: =?iso-2022-jp?B?GyRCJCIkJCQmJCgkKhsoQg==?=

と表示され、まったく、あいうえおになってくれません。化けてしまったものを、元に戻そうと思ったら
こんな単純な変換だけじゃだめということなのでしょうか。

public Form1()
{
   string str = "Subject: =?iso-2022-jp?B?GyRCJCIkJCQmJCgkKhsoQg==?=";
   byte[] byteArray = Encoding.ASCII.GetBytes(str);

   string str2 = System.Text.Encoding.GetEncoding(50220).GetString(byteArray);

   MessageBox.Show(str2, "test32");
}
75デフォルトの名無しさん:2005/08/02(火) 13:17:31
>>74
お前はまずRFCを読め。
親切にヒントをやるが、それがメールのフォーマットなんだよ。
文字化けなどしていない。
76デフォルトの名無しさん:2005/08/02(火) 13:17:39
GyRCJCIkJCQmJCgkKhsoQg==

いかにもたこにもどう見てもBase64でエンコードされてるな。

そもそもどういうやり方でメールを受信してるのさ。
77デフォルトの名無しさん:2005/08/02(火) 13:20:25
あなたがメールの仕様を調べる必要がある。
そしてこのスレはC#相談室であるから、メールの仕様に関しての話題はふさわしくない。
7874:2005/08/02(火) 13:36:44
皆さんアドバイスありがとうございます。

>>75
http://www5d.biglobe.ne.jp/~stssk/rfcjlist.html
ここ長いのですが、iso-2022-jpとタイトル打ってるとこだけ読んでみます。
文字化けではないのですね。またなにか勘違いをしていたようです。

>>76
ということはBase64をデコードすればいいのかな。

string str = "Subject: =?iso-2022-jp?B?GyRCJCIkJCQmJCgkKhsoQg==?=";
byte[] byteArray = Encoding.ASCII.GetBytes(str);

string str2 = System.Convert.ToBase64String(byteArray);

MessageBox.Show(str2, "test32");

このように書いてデコードしてみましたが、あいうえおには戻りませんでした(T T)

メールの受信は、.NETでは標準でライブラリが提供されてないということで、ネットでいろいろ検索した
メール受信のコードをそのまま引用しました。

string msg = Encoding.GetEncoding(50220).GetString(ms.ToArray());

の記述から、JISにエンコードして、stringに入れて返してるんだろうなと思われます。

>>78
メールの仕様をまず勉強したほうがいいのですね。
調べてそれでもわからないときは、ふさわしそうなスレで相談しようかと思います。
79デフォルトの名無しさん:2005/08/02(火) 13:51:39
どぼんか。そうか。
80デフォルトの名無しさん:2005/08/02(火) 14:05:02
>>78
めんどくさいやつだな。よめ
ttp://www.y-adagio.com/public/standards/tr_mime-p3_2047/mime2047toc.htm

それとDecodeMailのサンプル。ぶっちゃけ即興で書いたのでバグってるだろうが。

private static readonly Regex regex = new Regex(@"=\?(?<Encoding>[^?]*)\?[B|Q]\?(?<EncodedText>.*?)\?=");
public static string DecodeMail(string value) {
 return regex.Replace(value, new MatchEvalator(OnMatch));
}
private static string OnMatch(Match m) {
 string encName = m.Result("${Encoding}");
 string encText = m.Result("${EncodedText}");
 return Encoding.GetEncoding(encName).GetString( Convert.FromBase64String(encText) );
}
8178:2005/08/02(火) 14:17:32
>>80
親切な方、どうもありがとうございます。
正直メールのどこから手をつけていいのかといったかんじだったので大変助かります。
読む範囲を限定していただいたので、紹介サイトを集中して読むことにします。

サンプルまで書いていただいて本当に親切にありがとうございます。
解読してよく勉強しようと思います。
82デフォルトの名無しさん:2005/08/02(火) 15:27:41
礼儀正しいのになんかイライラする奴だな(´д`)
8378:2005/08/02(火) 17:05:46
>>80
紹介サイト読みました。まだ5割ぐらいしか消化しきれてませんが、メーラーなんか作るとき困ると思うので
がんばって理解しようと思います。

サンプルをいろいろいじって動かしたところ、Subject: あいうえお が出力されましたヾ(*´∀`*)ノ
こちらも消化しきれてないので、解析して理解できるようにがんばろうと思います。

大変たすかりました。どうもありがとうございました。
84デフォルトの名無しさん:2005/08/02(火) 17:13:19
>>82
慇懃無礼な奴だからだよ。
言葉の端々から、「早く教えろヴォケ」という雰囲気がにじみ出てる。
85デフォルトの名無しさん:2005/08/02(火) 21:47:36
>>84
というか、突っ込みどころがありすぎるから。
レスもらった後理解&むかう方向が毎回間違ってるから、
「だから違うだろこのやろう」って突っ込みたくなるのです
86デフォルトの名無しさん:2005/08/02(火) 22:45:45
ム板の質問スレはそういう人には向かない
87デフォルトの名無しさん:2005/08/03(水) 11:46:49
データベースですがたとえば商品マスタテーブルに種別の列があって、
1が果物、2が野菜だとします。
これを普通にADO.NETでDataTableに読み込んで、DataViewを
そのままDataGridとかにバインドすると、種別の列には当然
1と2が表示されますが、これを果物とか野菜とか表示させるには
どういう方法がよいでしょうか。
C#のコード内では種別のenumを作ったので、GatName()で
名前が取れるんですが。
いまんとこ、
(1)種別名マスタを別テーブルで作ってLEFT JOIN
(2)DataTableに種別名のColumnを追加して、Fill後に1行ずつ埋める
くらいしか思いつきません。
88デフォルトの名無しさん:2005/08/03(水) 12:05:29
データベース板のADO.NETスレ向きのネタだな。
89デフォルトの名無しさん:2005/08/03(水) 13:13:03
多少面倒だが、
PropertyDescriptorを継承したクラスを作ってGetValueのオーバーライドで列挙体の値を返すようにする。
該当するカラムのDataGridColumnStyleのPropertyDescriptorプロパティに上記のクラスのインスタンスを設定。
で一応いける。
90デフォルトの名無しさん:2005/08/03(水) 14:47:36
あるコントロールを継承して新しくコントロールを作成します。

特定のプロパティを非公開にしたい場合
どうすれば?

91デフォルトの名無しさん:2005/08/03(水) 15:08:56
>>90
無理。派生クラスは「完全に」基底クラスとして振舞うことが出来る必要がある。
というか派生クラス⊂基底クラスの関係理解してる?
virtualプロパティなら上書きしてNotSupportedExceptionあたり投げることも出来るが、
あまり推奨しない。

ただしデザイナで表示させないことやエディタ(インテリセンス)で表示させないように
指定することなら出来る。前者がBrowsableAttribute、後者がEditorBrowsableAttribute。
指定しても普通にアクセスは出来るからあまり意味はないんだが。
92デフォルトの名無しさん:2005/08/03(水) 15:19:32
>>91
> ただしデザイナで表示させないことやエディタ(インテリセンス)で表示させないように
> 指定することなら出来る。前者がBrowsableAttribute、後者がEditorBrowsableAttribute。

こいつは派生クラスでいじるにはnewで隠蔽する必要があるんじゃないか?
93デフォルトの名無しさん:2005/08/03(水) 15:26:44
>>92
もちろん。でもその際のnew隠蔽はbaseそのまま呼ぶべきっていうか。

((Control)this.myControl).Visible = true;
((MyControl)this.myControl).Visible = true;

で結果が違うのでしゃれにならんというか、この例だとあからさまに変だけど

void myControl_Click(object sender, EventArgs e) {
 Control ctrl = sender as Control;
 if(ctrl!=null) {
  ctrl.Visible = true;
 }
}

とかもあるので・・・。
9493:2005/08/03(水) 15:35:09
追記。
そもそもControlクラス内で
this.Visible = true;
の一行があるだけでもアウトだわな。
9590:2005/08/03(水) 17:07:29
継承ではなく包含にします。
>>91-94 ありがとうございました。

参考までに
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=17197&forum=7
96デフォルトの名無しさん:2005/08/04(木) 01:03:12
log4netでローカルアプリケーションのログをとり、リアルタイムでログを閲覧するには
どのようにするのがベターでしょうか?

RollingFileAppenderを使ってファイルに書き込みつつ、ファイルを定期的にリロードしてみせるアプリ作るとか、
TraceAppenderを使って、GUIにログを吐き出すTraceListenerをアプリケーション側に実装するとか考えたんですけど。
97デフォルトの名無しさん:2005/08/04(木) 11:07:44
Visual Studioは11月17日発表
ttp://www.atmarkit.co.jp/news/200508/04/ms.html
98デフォルトの名無しさん:2005/08/04(木) 14:53:59
http://pc.watch.impress.co.jp/docs/2005/0804/mobile301.htm

マイクロソフトOBでWindows 1.xの時代からWindowsの開発に関わっていた方(2000年に退職)から
コメントをいただいた。引用させていただくと、
    
“私の住むシアトル近辺のマイクロソフトOBの間では、2004年の前半に「Longhornがキャンセルに
なったらしい」という噂がさかんに交わされ、その後次々と「OFSはLonghornとは別」、
「Managed APIは採用しない」とのアナウンスがありました。結局の所、もともと計画していた
Longhorn は出せなくなったけれども、いまさらキャンセルになったとは言えないので、出せるもの
だけかき集めてLonghornと呼ぶことにした、という見方がこちらでは一般的です”
99デフォルトの名無しさん:2005/08/04(木) 17:10:09
100デフォルトの名無しさん:2005/08/04(木) 17:11:56
C#ばかり最近使ってたけど、久しぶりにC++使ってみた。うむむ・・やっぱり速い。
C#は、小さなプログラムだと結構速いんだけど、少し大きなプログラムになると、
再トランスレート処理が途端に増えるのか、ものすごく重くなる。
101デフォルトの名無しさん:2005/08/04(木) 17:57:03
再トランスレート処理って何?
102デフォルトの名無しさん:2005/08/04(木) 20:49:15
103デフォルトの名無しさん:2005/08/04(木) 21:02:18
で、検索結果が無いんだが。
104102:2005/08/04(木) 21:04:37
>>103
つまりそういうことを言いたかったわけだ。
105デフォルトの名無しさん:2005/08/04(木) 21:17:09
なるほど、漏れも検索した、で>>100には是非、説明をして欲しい。
106デフォルトの名無しさん:2005/08/04(木) 21:17:10
再トランスレート でググレよ
107デフォルトの名無しさん:2005/08/04(木) 21:18:33
ファイルのパス or フォルダのパス が入っている文字列から
それがファイルなのかフォルダなのかを判断するにはどうしたらいいのでしょうか?

調べていて考え付いたのは
System.IO.File.ExistsとSystem.IO.Directory.Existsを使ってtrueな方
という方法なのですが,ほかによいやり方があったら教えてください.
108デフォルトの名無しさん:2005/08/04(木) 21:21:44
109デフォルトの名無しさん:2005/08/04(木) 21:21:45
それでいいんじゃない。
110デフォルトの名無しさん:2005/08/04(木) 21:22:06
それじゃできんだろ
111デフォルトの名無しさん:2005/08/05(金) 15:58:09
テキストファイルをexeに埋め込んで、「読み込む」は、ぐぐるといくつかヒットするのですが
「書き込む」が見当たりません。

exeに埋め込んだテキストファイルに書き込みといったことはできないのでしょうか。
112デフォルトの名無しさん:2005/08/05(金) 16:02:12
実行中の.exeをバイナリファイルで開いて、
どこか適当なリソース部分1バイト書き換えて保存してみたらどうなるか分かるか?
113デフォルトの名無しさん:2005/08/05(金) 16:14:41
windowsサービスは起動や停止が可能ですよね。
でもWebサービスの場合は、デプロイしたら自動的に起動して、
停止することができません。
IISごと停止することは可能ですが。

Webサービスを、一時的に停止できる方法って、特に無いですよね?
無理やり、エラーを返す状態にするしかないですよね?
114111:2005/08/05(金) 16:14:52
>>112
助言をありがとうございます。
想像ですが、固まってエラーはいて落ちちゃうんじゃないかなと思われるのですが

道理で書き込みの方法を解説した記述が見つからないなと思ったのですが
読み込みはできるけど書き込みはできないが解なのですね。

メールのパスワードを外部のテキストファイルに平文で書き込んでは、まずいかなと思い。
そのテキストファイルをexeに埋め込んじゃえば、セキュリティも保たれるし、簡単なんじゃと思いついたのですが
甘かったようです。

しょうがないので、パスワード部分を暗号化して、外部テキストファイルに保存しようと思うのですが
大体皆さん、ユーザが入力したパスワードを保存する場合、暗号化といった手法を使うのでしょうか。
パスワードをまずくないように保存しようと思えば、後は暗号化しか思いつかないのですが
115デフォルトの名無しさん:2005/08/05(金) 16:57:32
byte[] test;の中身を見たいのですが、どのようにすれば数値を見れるのでしょうか。

textBox1.Text = Encoding.Unicode.GetString(test);
このように書いて、textBoxに表示させましたが、stringに変換したため、筰・XッSィy|メー%A・,o桎r香E のような感じに出力され

BinaryWriterで、txtに保存すれば数値が見れるかもと思ったのですが、開いてみると、\り?ュ・%[オワ;ッシ=gツH・ハ( のような感じで
出力されます。

byte配列に入っている数値を見たいのですが、どのように書けばstringに変換せずに見ることができるでしょうか。
116デフォルトの名無しさん:2005/08/05(金) 17:02:46
中身ってなによって話。

まあ2桁16進表記なんだろうけど。
foreachでToString("X2")していくとか、
BitConverter.ToStringするとか。
117115:2005/08/05(金) 17:05:43
>>116
BitConverter.ToStringという便利なものがあるのですね。
それ使ってみます。どうもありがとうございました。
118デフォルトの名無しさん:2005/08/05(金) 17:24:14
ToStringの書式の質問です。
5桁の表示で110を ” 110"の文字列、前にスペース2個あるを取り出したいです。
D5も駄目だし,#####も駄目でした。何か書式ありますか?
119デフォルトの名無しさん:2005/08/05(金) 17:27:05
PadLeftすれば良いじゃない
120デフォルトの名無しさん:2005/08/05(金) 17:44:23
できました、有難うございます。
121最凶VB厨房:2005/08/05(金) 22:02:17
一方向関数
122デフォルトの名無しさん:2005/08/06(土) 00:59:06
すいません、ビューステイトにコレクションクラスを入れると怒られちゃうのですが
どうしたらいいんでしょうか?
データセットとかデータテーブルとかストリングクラスなんかは入るのですが・・・・
123デフォルトの名無しさん:2005/08/06(土) 01:25:57
stringまでカナ表記なのは珍しいな。
124デフォルトの名無しさん:2005/08/06(土) 01:30:22
中途半端に「クラス」だけ半角なのがもどかしい。
125デフォルトの名無しさん:2005/08/06(土) 01:40:22
いや、もどかしいの狙ったところもあるんで、あの、ビューステイと・・・
126デフォルトの名無しさん:2005/08/06(土) 02:48:55
>>122
シリアライゼーション&デシリアライゼーション出来ないから。
ちなみにセッションにも同じコレクションクラス入れてたりしないよな?そんなことすると
InProc以外で動かないアプリの出来上がりですよ?
127デフォルトの名無しさん:2005/08/06(土) 08:38:28
>>114
exe に埋め込んでもセキュリティは保たれない。
暗号化はここ参照。
http://dobon.net/vb/dotnet/string/encryptstring.html
128114:2005/08/06(土) 11:03:20
>>127
アドバイスをありがとうございます。
そうですか。埋め込んじゃえば見えなくなるからセキュリティも保たれて簡単なんじゃと思ったのですが。
セキュリティが保たれないのですか。解析なんかされると見えてしまう。ということなんでしょうかね。
埋め込んでも書き込めないし、最初からパスワードを保存する方法としてはふさわしくなかったのですね。

とりあえず、DESで暗号化してファイルに保存は実装成功しました。
保存したtxtファイルを開いたら、わけのわからない文字記号の羅列になってるし、保存したファイルから
復号も成功してるので、ちょっと不安要素もないわけでもないのですが、とりあえずこれでいいだろうと
思うことにしました。
129デフォルトの名無しさん:2005/08/06(土) 11:41:46
>>128
まぁそれ以上しようがないのです、ローカルに保存する限り。
最もセキュリティを保つには「復元できないもの」なわけですが、
当然「参照も出来ない」わけで処理を複雑にしたりして「誤魔化す」
しかないんですよ。解析されればどうしようと見ることができます。
130128:2005/08/06(土) 11:55:26
>>129
アドバイスありがとうございます。
ということはパスワードのセキュリティを保つ方法として、DESで暗号化して保存。でOKということですね。
もっと解析が難しい暗号技術を使うという手もあるかもしれませんが。
DESの方がC#で実装が簡単だし、とりあえずはこれでよしということで済まそうと思います。
131最凶VB厨房:2005/08/06(土) 12:07:39
です^3=3です
3です^3=6です
6です^3=9です
なんです。
132デフォルトの名無しさん:2005/08/06(土) 12:35:40
MailMessage mm = new MailMessage();
mm.To = "aaa@***.ne.jp; bbb@***.ne.jp";

このように書いて送信すると

To: <aaa@***.ne.jp>, <bbb@***.ne.jp>
上のように、To:に複数のメールアドレスが載ったものを受け取ることになりますよね。

ところが、プロバイダなどの大量に一気にメールを送信したであろうメールのToが
To: <aaa@***.ne.jp>

なんです。こういった大量送信されたメールは皆Bccに書いて送ってるものだと思っていたのです。
mm.Bcc = "aaa@***.ne.jp; bbb@***.ne.jp";

このように書いて送信すると

To:
Cc:

のように、ToにもCcにも何も書き込まれずに送られてきますよね。

大量送信されたであろうメールが、なぜTo: <aaa@***.ne.jp> で送られてくるのか不思議なのですが
一通ずつToにアドレスを入れて送ってるのか?とも思うのですが、そんな効率の悪いことするだろうか
という疑問がわきます。
大量送信されたメールが使っているメーラーでそういったふうになるようにしているのでしょうか。

133デフォルトの名無しさん:2005/08/06(土) 15:54:31
>132
スレ違い。
C#とは関係ないし。
UNIX板かLINUX板のメル鯖スレで聞け。
134132:2005/08/06(土) 17:11:56
>>133
誘導ありがとうございます。
メールサーバのスレが的確なのですね。
そちらで聞いてみようと思います。
135デフォルトの名無しさん:2005/08/06(土) 19:49:23
ウェブページのソースからリンクを抽出したいんですが
例外が出たり、リンク以外の物を抽出してたりします
どうすればうまくいくでしょうか

//リンク抽出
string link = "";
int s = 0;
int e;
while (true)
{
s = this.source.IndexOf("<a href=",s)+9;
e = this.source.IndexOf("target", s)-2;
link += this.source.Substring(s, e - s) + "\n";

if (this.source.IndexOf("<a href=") == 0)
break;
}

this.sourceにはウェブページのソースが入ってます
136デフォルトの名無しさん:2005/08/06(土) 19:52:59
>>135
正規表現にチャレンジ
137デフォルトの名無しさん:2005/08/06(土) 19:58:42
正規表現使え。
厳密に取るのは結構難しいが、
@"<a .*?href=(?:""(?<url>.*?)""|'(?<url>.*?)'|(?<url>.*?)[ >])"
こんな感じで。
138デフォルトの名無しさん:2005/08/06(土) 20:00:51
MSHTMLなら完璧に取ってこれね?
139デフォルトの名無しさん:2005/08/06(土) 20:04:31
正規表現ですか
難しそうなので避けてたんですがやるしかないみたいですね
ありがとうございました
140デフォルトの名無しさん:2005/08/06(土) 20:53:42
VS2003でソリューションを作って、中にC#のWinプロジェクトと
C++のDLLプロジェクトを作って、C#からDLL起動等、問題なく動作しているが。
C#内でブレークやデバックが出来るが、C++のDLL内でブレークが動作せず。
デバックが出来ない。何か設定ミスをしている?
それとも、出来ないのが正しいですか?
141デフォルトの名無しさん:2005/08/06(土) 21:20:56
MSHTMLで思い出した。
AxWebBrowserを介さずに直接MSHTMLでhtmlをパースすることってできるのかな?
HTMLDocumentをnewしたあとopenはずっとloadingのままになるしwriteでhtmlを書き込もうにもCOMException"種類が一致しません"。
HTMLWindow2はnewできない……。
142デフォルトの名無しさん:2005/08/06(土) 21:39:55
>>141
クラスを直接使うんじゃなくて変なおまじないが必要だった希ガス
たしか親ドキュメントに空のHTMLを書き込んでからなんかするような
143140:2005/08/06(土) 22:53:23
いろいろいじっていたら止まるようになった・・・・・・・・・・
144デフォルトの名無しさん:2005/08/07(日) 02:58:54
>>143
なにがいいたいのかわからん。
唯一わかってるのは、「いじってたら」でイジリー岡田を思い出したと言うことだ。
145122:2005/08/08(月) 00:18:07
146122:2005/08/08(月) 00:19:12
>>126
えー!そうなんですか?
でもdatasetとかdatatableはできますよね?

結局配列っぽいコレクション型をセッションやビューステイとにほうりこみたいなら
datatableの形式にしないとダメって事ですか?

uza−
147デフォルトの名無しさん:2005/08/08(月) 00:24:02
おまえがうざい
148デフォルトの名無しさん:2005/08/08(月) 00:32:03
代弁どうも
149デフォルトの名無しさん:2005/08/08(月) 01:09:35
>>146
基礎知識の足りないやつだな
「お前が必要なコードを書いていないから動きません」って話なんだが?
コードもかかんと動くわけがなかろう。そんな当たり前の話も分からないのか
150122:2005/08/08(月) 02:40:56
必要なコードって、
じゃあビューステイとにコレクションクラスを格納することも可能なんですか?
何かコードかけば。
151デフォルトの名無しさん:2005/08/08(月) 20:54:06
ビューステイ
152デフォルトの名無しさん:2005/08/08(月) 23:39:42
ていうかよ、コレクションて具体的に何よ?
コレクションクラスじゃなくて、中に格納してるもんが
シリアライズ出来るようになってないだけじゃないのか?
153デフォルトの名無しさん:2005/08/08(月) 23:53:55
>>130
DESのキーはどこに…
154デフォルトの名無しさん:2005/08/08(月) 23:54:01
もっと分かりやすく書け。
155154:2005/08/08(月) 23:54:32
>>152な。
156152:2005/08/08(月) 23:59:30
>>155
??
157デフォルトの名無しさん:2005/08/09(火) 02:53:45
DataGridのセルを編集できる状態にして、
そのテキストの一番右側までいくと勝手に
次のセルが選ばれてしまう。これを簡単に辞めさせる
方法はないのでしょうか?うっかり右キー押したら
編集ENDとか虚しすぎます
158デフォルトの名無しさん:2005/08/09(火) 04:40:39
環境:VS.NET2003pro

抽象クラスつくって、それを継承するクラスを書いているんだけど…
この抽象メソッドの実装を書くときに、自分でコピペしないとダメですか?
自動で継承もとからメソッドの概要copyしてくれる機能とかないでしょうか。

イベントハンドラのTAB押下での自動追加は便利だったんで、
そんな追加方法があるなら知りたいなぁ。
159デフォルトの名無しさん:2005/08/09(火) 07:08:05
継承してTAB押す
160デフォルトの名無しさん:2005/08/09(火) 07:39:52
2005最強と
161デフォルトの名無しさん:2005/08/09(火) 12:22:27
あの展開機能は萌える。
162デフォルトの名無しさん:2005/08/09(火) 13:36:11
自動スケルトン機能は確かに便利だがたまに発動しないことがあってむかつく
163デフォルトの名無しさん:2005/08/09(火) 15:06:18
言語習得と、パケット抜き(pop等の暗号化がされてないパス程度の)のソフト作成をあわせて2週間で
終わらせるということになったのですが、どれくらいのペースで進めたら良さそうかということと
お勧めの入門書などがあったら教えていただけないでしょうか?
164デフォルトの名無しさん:2005/08/09(火) 15:31:16
推薦図書/必読書のためのスレッド PART25
http://pc8.2ch.net/test/read.cgi/tech/1119115838/
165デフォルトの名無しさん:2005/08/09(火) 16:28:39
ピクチャーボックスを2つ重ねて
手前のイメージの背景を透明にしました。(MakeTransparent使用)


しかし手前のイメージの透明背景部分には
フォームの背景が見えます。

奧のイメージを見せるにはどうしたら?
166デフォルトの名無しさん:2005/08/09(火) 16:36:16
どぼんに書いてある
167デフォルトの名無しさん:2005/08/10(水) 17:22:38
VS.NET2002、ASP.NETで質問です
1列目:TemplateColumn 2列目:EditCommandColumn(編集、更新、キャンセル)
というDataGridがあるんですが、DataBindする前に、ソースの中でEditCommandColumn列の前に
↓のように連結列を動的に挿入してます。
dataGrid.Columns.AddAt(1,col1);
そうすると、編集とキャンセルは正常に動作するんですが、
更新をクリックすると何故かキャンセルのイベントハンドラに飛んでしまいます。
どなたかお助けを・・・。
//編集
private void EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
  dg.EditItemIndex = e.Item.ItemIndex;
  ListDataBind();
}
//更新
private void UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
  //アップデート処理
}
//キャンセル
private void CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
  dg.EditItemIndex = -1;
  ListDataBind();
}
private void ListDataBind()
{
  dg.Columns.AddAt(1,col1);
  dg.Columns.AddAt(2,col2);
  dg.Columns.AddAt(3,col3);
  dg.DataBind();
}
168デフォルトの名無しさん:2005/08/12(金) 00:11:15
更新リンクボタンのコマンド名がキャンセルになっていないか
169デフォルトの名無しさん:2005/08/12(金) 18:07:08
フォーム上のコントロールの重なり(ZOrder)を調べるにはどうしたらいいですか
170デフォルトの名無しさん:2005/08/12(金) 18:17:13
Controls.GetChildIndex
171デフォルトの名無しさん:2005/08/12(金) 18:19:22
ListViewの列の幅を、アプリを閉じても保存してくれるようなプロパティってないでしょうか。
一応、プロパティの説明を全部読んでみましたがそれらしいものはありませんでした。
しかし、もしあったら悔しいので、自分で各列の幅を記録するコードを書く前に聞いてみようと思い質問しました。
172デフォルトの名無しさん:2005/08/12(金) 18:23:43
質問です

dllというものを知り、フリーで公開されているのを使ってみようと思ったのですが、どのメソッドを使って読み込み、呼び出すかわかりません。
MSDNでもdllに関する記述はたくさんあるものの、関係のないものしか見つかりませんでした。
基礎的なサンプルソースをいただけませんか?
173デフォルトの名無しさん:2005/08/12(金) 18:30:51
174デフォルトの名無しさん:2005/08/12(金) 18:40:33
>>171
> ListViewの列の幅を、アプリを閉じても保存してくれるようなプロパティってないでしょうか。

フォームの位置とか保存してくれるプロパティも無いだろ?
ていうか"保存"は動作だからプロパティにはならないんじゃね?

>>172
ちなみにそれが.NETで書かれたDLLなら参照設定に追加するだけで自由に扱えるぞ。
175171:2005/08/12(金) 18:42:22
>>174
回答ありがとうございます。
やっぱりないのね。これで心置きなくコードが書けます。
176デフォルトの名無しさん:2005/08/12(金) 20:34:45

漏れはC++/Win32だとオーナーデータにしてタブ区切りのテキストファイルに吐いてたな。
結局、レジストリなりINIファイルなりに保存するのがセオリーかと。
177デフォルトの名無しさん:2005/08/12(金) 21:09:55
>>173-174
なるほど!こんなに簡単に使えるんですね
これは便利です、助かりました
ありがとうございました
178171:2005/08/12(金) 21:50:11
>>176
アドバイスありがとうございます。

列幅は、テキストファイルに吐き出さそうかと思ってました。
それはできるだけレジストリを使わずに、フォルダごとゴミ箱へとか、フォルダごとバックアップできるようにと考えたからですが。
そのため、テキストファイルが18個もできてしまい、更に、ユーザに簡単に開いていじれるようになってるっていうのはどうなの?という
疑問もわいてきて、どうしようか迷っていたところでした。

既存のメーラーがどのように設定を保存してるのか、フォルダを開いて探しましたがそれらしいファイルが見あたらないので
そういったソフトはやはりレジストリに保存してるのでしょうかね。フォルダの中のファイル数が少ないのですっきり見えます。

とりあえずは、テキストで作ってみて、フォルダの中のファイル数の具合や使い勝手なども考えて、どちらに保存するか
決めようかと思います。
179デフォルトの名無しさん:2005/08/12(金) 22:11:33
180デフォルトの名無しさん:2005/08/12(金) 22:19:54
ひょっとしてListViewのカラム幅だけでファイル一つ使ってるのか……?
181デフォルトの名無しさん:2005/08/12(金) 22:23:33
いくらなんでもそれはINIファイル使おうな
182デフォルトの名無しさん:2005/08/12(金) 22:29:45
>>178
素直にxml使えばいいのに……
183171:2005/08/12(金) 22:38:12
皆さんアドバイスありがとうございます。

>>179
参考サイトどうもありがとうございます。

>>180
そうですが、なんだかどんどん設定ファイルが増えるなと不安になってたんです。
現在設定ファイルが、5個。今回のカラム幅は、ListViewが3つあるので、更に3つファイルを作ろうかと思ってました。

>>181
やはりtxtはまずかったでしょうかね。

>>182
xml使えば設定の管理が楽になるのでしょうか。それならぜひ使いたいです。

今のところは
http://dobon.net/vb/dotnet/programing/storeappsettings.html
にある、設定をクラスで管理して、XMLファイルに保存という方法にしようかと傾いています。

この方法で、いくつもある設定ファイルを1つにできたらうれしいなと思います。

NETはXMLを扱う機能が充実しているそうで、サンプルコードが短かったので扱いやすそうなので、一度この
方法でやってみようかと思います。
184デフォルトの名無しさん:2005/08/12(金) 22:44:45
べつにINIファイルでも扱いには困らないけどな

[ListView1]
Column0Width=AAA
Column1Width=BBB
[ListView2]
Column0Width=CCC
Column1Width=DDD
[ListView3]
Column0Width=EEE
Column1Width=FFF

INIファイルを呼ぶのは一般的にはAPIコールになるけど
ググればそれなりにサンプルが出てくると思う

まあXMLベースのほうがいいだろうけど。
185171:2005/08/12(金) 22:51:21
>>184
アドバイスありがとうございます。
iniファイルの中身はそのように記述するのですね。

XMLのほうを推奨ということなので、とりあえず、XMLでいってみようと思います。
外部に書き出しとなると、txtかcsvしか扱ったことがないので、何もかもtxtで書き出してしまってました。
とにかく、ファイルが多くて不恰好なのでXMLの方法で1つにまとめられるようにやってみようかと思います。
186デフォルトの名無しさん:2005/08/12(金) 23:12:09
> 何もかもtxtで書き出して

それはそれでありな気が
187171:2005/08/12(金) 23:19:57
>>186
それでいいなら修正しなくていいから楽でいいんですけど。
設定ファイルのクラスの設計と、書き直す箇所とか考えると、txtで書き出しまくるのが標準だったらと思うこともないですね。
フォルダ開いたらファイルだらけってどうかなと、ファイルが増えるたびにちょっぴり不安な心持になってたので。
ありならありでそのまんまにしちゃおうかなという気持ちも半分あるし、XML扱う方法やっといた方がいいかなという気持ちも半分です。
188デフォルトの名無しさん:2005/08/12(金) 23:23:25
とりあえずSettingsフォルダとか作ってそこにいれちゃえば?
189デフォルトの名無しさん:2005/08/12(金) 23:26:56
Settingsフォルダ作るならSpecialFolder.LocalApplicationDataのほうがよくね?
190171:2005/08/12(金) 23:35:00
>>188-189
皆さん、アドバイスありがとうございます。

>>188
フォルダに入れちゃえば、ごちゃごちゃファイルが多い件は解決ですね。
そうしちゃおうかな。この方法ならすっきりするし、苦労もしなくてすみますね。
今夜は横になりながら考えて明日決断しようかと思います。

>>189
SpecialFolder.LocalApplicationData をざっとぐぐったところ。
どうやら隠しフォルダなのですかね。
見えないのならよけいに好都合ですね。
フォルダの中身がすっきりする上に、表示させる設定にすれば見えちゃうのかもしれませんが
ファイルの中身をいじられにくいのもいいですね。
191デフォルトの名無しさん:2005/08/12(金) 23:35:51
コピペで他の環境に移せないじゃないか

ところでXmlSerializerのインスタンス作るのって何であんなに重いんだろうね?
192デフォルトの名無しさん:2005/08/13(土) 00:43:55
ttp://msdn2.microsoft.com/library/7htf0516(en-us,vs.80).aspx

ListView(詳細)のオーナードローのサンプル↑をコンパイルしてみたのですが
マウスカーソルをListViewの上に持ってくると、マウスカーソルの指す領域の
ItemのSubItemが消えてしまいます。(消えるのははじめ一回だけで再描画後は消えない)
どこがおかしいのでしょうか?
193171:2005/08/13(土) 14:23:18
>>191
アドバイスありがとうございます。
なるほど、ユーザにフォルダの存在が見えなかったら、バックアップがしやすいメリットがなくなってしまいますね。
とりあえず、カラム幅の記録のみをXMLで保存してみようということにしました。
XML保存への変更が面倒だったら、Settingsフォルダを作ってそこにまとめてファイルを入れとこうと思います。
194デフォルトの名無しさん:2005/08/13(土) 18:59:41
System.Web.Mail.MailMessage mm = new System.Web.Mail.MailMessage();
mm.From = "[email protected]";

mm.Fromは、送信者のメールアドレスを入れますが、では送信者の名前はどのように書けばいいのでしょうか。
なんとなく、mm.From = "名前 <[email protected]>"; かなと思ったのですが
使っているメーラーの差出人のところが、名前 <[email protected]> のような記述なので。
195194:2005/08/13(土) 19:13:04
試しに、mm.From = "名前 <[email protected]>";  で送ってみたところ。
今度はOutlook Expressで確認したら、ちゃんと名前の欄に、名前 と載っていました。

mm.Name = "名前";

と書ければわかりやすいのに。と思います。
とりあえず
mm.From = "[email protected]";  の部分を、mm.From = "名前 <[email protected]>";
に書き換えようと思います。

何か、勘違いしていることなどありましたらご指摘いただけるとうれしいです。
どうもお騒がせいたしました。
196デフォルトの名無しさん:2005/08/13(土) 19:42:19
>>195
System.Web.Mail.MailMessage mm = new System.Web.Mail.MailMessage();
// 送信者
mm.From = "送信者のコメント <[email protected]>";
で合ってるよ。
e-mailのタグをベースにプロパティ名称を付与しているから、仕方がない。
197194:2005/08/13(土) 20:07:57
>>196
回答ありがとうございます。
あってるのですね。これですっきりしました。
198デフォルトの名無しさん:2005/08/15(月) 18:57:22
Form1(){} の中で、menuItem1_Click(Object sender, System.EventArgs e){} を呼びたいのですが

引数eに何を入れればいいのかわからず困ってます。

menuItem1_Click("基本設定", e); のように書いて呼び出そうとすると、ビルド時に

'e' は クラスまたは名前空間 'test41.Form1' に存在しません。 と、エラーが出るので

"基本設定"の部分はこれで大丈夫なのかなと思うのですが、eの部分に何を書いたらいけるでしょうか。
ちなみに"基本設定"は、メニューの[設定&S]-[基本設定&K] のテキスト部分です。
199デフォルトの名無しさん:2005/08/15(月) 19:02:34
>>198
それ以前に、普通のメソッド呼び出しすら分かってないような予感たっぷり


面倒だし、menuItem1_Click(null, null) で良いよ
200デフォルトの名無しさん:2005/08/15(月) 19:03:23
EventArgs.Empty
201198:2005/08/15(月) 19:11:47
>>199-200
皆さんアドバイスありがとうございます。

menuItem1_Click(null, null);
menuItem1_Click(null, EventArgs.Empty);
menuItem1_Click("基本設定", EventArgs.Empty);

どれも試しましたが、どれも成功しました。
正直いって、なんで全部いけるのか、さっぱり理解できてませんが、今度から、既存のイベント発生のメソッドを呼び出すときは
面倒なので、null, null でいこうと思います。
202デフォルトの名無しさん:2005/08/15(月) 19:14:49
>>201
いや、199 の身でなんだが、(this, EventArgs.Empty) を薦めるよ
もしくは、menuItem1_Click の処理を別なメソッドに分けて、分けた方のメソッドを呼び出すんだ
203デフォルトの名無しさん:2005/08/15(月) 19:16:19
PerformClick メソッドってなかったっけ?
204198:2005/08/15(月) 19:23:50
>>202
ご親切にどうもありがとうございます。
お勧めの、menuItem1_Click(this,EventArgs.Empty);
に書き換えました。
205デフォルトの名無しさん:2005/08/15(月) 20:10:07
原則論を言えば、イベントはマルチキャストなんだから
ハンドラ直接呼出しよりPerformClickの方がいいと思われ。
206デフォルトの名無しさん:2005/08/15(月) 20:12:48
>>198 に 「menuItem1_Click を直接予備隊」 って書いてあるんだが
207デフォルトの名無しさん:2005/08/15(月) 20:15:07
言われたことを何も考えずに従うだけのコーダー根性というやつか
208デフォルトの名無しさん:2005/08/15(月) 20:59:10
質問されたから素直に答えたのに、なんでケチつけられなきゃあかんねん
209デフォルトの名無しさん:2005/08/15(月) 21:03:34
2chだから
210198:2005/08/15(月) 21:10:46
>>205
アドバイスありがとうございます。
menuItem1.PerformClick();
でも呼び出せました。こちらに書き換えようと思います。
211デフォルトの名無しさん:2005/08/15(月) 23:04:27
いいなりだな
212デフォルトの名無しさん:2005/08/15(月) 23:52:24
log4netの使い方がいまいちわからないのですが教えてもらえませんか?
213デフォルトの名無しさん:2005/08/16(火) 09:37:48
ちょっとすいません。C++の
public:
virtual void func() = 0;
こういうのC#でどう書くんでしたっけ

public abstract void func();
にしたら抽象クラスに非抽象関数入れられないって蹴られたよ…
徹夜明けで参考書調べる余裕ないんだわ。頼む…
214デフォルトの名無しさん:2005/08/16(火) 09:49:56
>>213
> 抽象クラスに非抽象関数入れられない

こんなエラーメッセージをcsc.exeは吐かないので、スレが間違ってるんじゃないか?
215デフォルトの名無しさん:2005/08/16(火) 09:59:23
ぶっちゃけ「非抽象クラスに抽象メソッドは入れられない」ジャマイカ
216デフォルトの名無しさん:2005/08/16(火) 13:02:31
それなら class の前に abstract が入っていないだけだな
クラスを抽象クラスにすれば解決
217デフォルトの名無しさん:2005/08/16(火) 13:38:27
メインフォームが生成された直後に、メッセージボックスを表示させたいのですがうまくいきません。

public Form1()
{
   InitializeComponent();
   MessageBox.Show("てすと");
}
これだと、メインフォーム生成前に表示されてしまいます。

static void Main()
{
   Application.Run(new Form1());
   MessageBox.Show("てすと");
}
これだと、メインフォームを閉じた後に表示されてしまいます。

protected override void WndProc(ref Message m)
{
   if(m.Msg == 0x0001) //WM_CREATE
   {
      MessageBox.Show("てすと");
   }
}
ウィンドウプロシージャで、フォームが生成されたのをキャッチして表示させようと思ったのですが
これも、メインフォーム生成前に表示されてしまいます。
WM_SHOWWINDOW(0x0018)にもしてみましたが、こちらは生成前と生成後の2回も表示されてしまいます。

どのように書いたらメインフォーム生成後にひょうじさせることができるでしょうか。
218デフォルトの名無しさん:2005/08/16(火) 13:45:19
一つ確認したいが、"生成"じゃなくて"表示"だよな?

Application.Idleイベントにハンドラ追加して、
そのイベントハンドラで追加したハンドラ削除&したい処理をする。
219デフォルトの名無しさん:2005/08/16(火) 13:49:30
Form.Activatedの方がいいかも
220217:2005/08/16(火) 13:59:30
>>218-219
アドバイスありがとうございます。

>一つ確認したいが、"生成"じゃなくて"表示"だよな?
すみません、表現が正確じゃなかったですね。表示です。

無事メインフォーム表示後に表示させることができました。
221デフォルトの名無しさん:2005/08/17(水) 12:39:14
[やりたいこと]
ダイアログ A を表示した時点で
スクリーンセーバが起動中であっても解除し、
Aが表示されている間はスクリーンセーバを起動させない。
Aが表示されていない間は、時間経過後(画面のプロパティで設定する分)
スクリーンセーバを起動する。(ほうっておけば起動される)

[やってみたこと1]
ダイアログA表示中、タイマー(100ms周期)で座標0,0にマウス移動し、直後に移動前座標に戻る。

Point oldPos = new Point(System.Windows.Forms.Control.MousePosition.X,System.Windows.Forms.Control.MousePosition.Y);
System.Windows.Forms.Cursor.Position = new Point(0,0);
System.Windows.Forms.Cursor.Position = oldPos;

↑だと、画面のプロパティのプレビューを解除することは出来ましたが、
時間経過後(画面のプロパティで設定する分)に表示される、本当(?)の
スクリーンセーバでは解除ができません。

[やってみたこと2]
座標(0.0)から座標(100.100)にループにて順に移動させるも、やはりダメ。

うまいことやる方法、ありますでしょうか?
222デフォルトの名無しさん:2005/08/17(水) 13:07:38
223デフォルトの名無しさん:2005/08/17(水) 20:46:47
XMLでノードを追加したいんですが、任意の位置に追加できないもんでしょうか?
例えば、以下のような場合に、<Name>の次に<Age>を入れたいのです。
<Address>
<Name/>
<Tel/>
</Adress>

<Tel>の次に入れるなら、SelectSingleNodeで<Address>を取得し、
AppendChildすれば、自動的に最後である<Tel>の後に入ります。
でも、<Name>の次に入れるには、どのようにしたら良いのでしょうか?
そもそも、Xmlでこのようなことを求めること自体、間違ってます?
224デフォルトの名無しさん:2005/08/17(水) 21:04:07
XmlNode.InsertAfter/InsertBefore
225223:2005/08/17(水) 21:09:13
>>224
MSDNにおける以下の引数の意味が理解できなくて使えなかったのですが、

newChild 挿入する XmlNode 。
refChild 参照ノードである XmlNode 。 newNode は、 refNode の後に配置されます。

ここに書いてありました〜
http://dotnetjunkies.com/WebLog/sayadhashim/archive/2004/08/17/22287.aspx
226デフォルトの名無しさん:2005/08/17(水) 21:40:42
すみません、アドバイスお願いします。

COM化したDLLをIEのOBJECTタグを使って自動インストールさせ、
DLLのメソッドを使えるようにしたいと思っています。

色々テストしてみたのですが、
作成したインストーラを別のローカルマシンで実行したところ、
きちんとインストール・DLLのメソッドも実行できました。
しかし、OBJECTタグを使ってDL→インストールしようとすると、
「インストールしますか?」というメッセージはでるのですが、
まるで何もインストールされてないように、そのDLLのメソッドを使うことができません。
レジストリのClassID登録がローカルでインストールしたときと違っているようです。
(NameSpaceとClassが登録されていません)

イメージ的にはC++のOCXみたいに使いたいのですが…
227デフォルトの名無しさん:2005/08/17(水) 21:57:51
228デフォルトの名無しさん:2005/08/18(木) 20:55:28
アイコンを作成しました。
フォームの左上にあるアイコン、タスクバーに表示されるアイコンの設定はできたのですが。
アプリケーションのアイコンの設定がわからず困ってます。

参考書に、リソースビューを表示して設定する方法が書いてあるのですが、肝心のリソースビューを表示してみても
中身はまったくの空でどうしようもありません。
この参考書はC++.NETの参考書だからだめなのでしょうか。
C#でアプリケーションのアイコンの設定はどのようにすればできるでしょうか。
229デフォルトの名無しさん:2005/08/18(木) 21:04:42
/win32icon
VSだとプロジェクトのプロパティにあるだろ

ちなみにこのアイコンリソースをプログラム上から利用するにはWin32APIが必要になる
//あれ、/win32resが必要だったっけ? >プログラムから利用
230228:2005/08/18(木) 21:08:20
>>229
できました。どこいじったらいいかわからず困ってたので大変助かりました。
231デフォルトの名無しさん:2005/08/18(木) 22:35:42
エンコーディングが何かは分かっていないhtmlのソースを、ネットから
stringに読み込むにはどうしたら良いでしょうか?
232デフォルトの名無しさん:2005/08/18(木) 22:45:02
ヘッダにContent-Typeがあるならそれを使う
無ければデータの初めにBOMが無いかどうかチェック
見つからなければmeta要素でContent-Typeが定義されていないかチェック
それで見つからなければ自前で判断

文字コード判別にはこことか
ttp://www.gprj.net/
233デフォルトの名無しさん:2005/08/18(木) 22:51:44
>>232
C#の標準でコンバータが用意されていたりはしないのですね。
ありがとうございました。Microsoft最悪ですね。
234デフォルトの名無しさん:2005/08/18(木) 23:06:51
いやコンバートはともかく自動判別なんて普通標準ではないだろ
235デフォルトの名無しさん:2005/08/18(木) 23:12:29
>>234
これだけ文字コードが乱立しているのだから、あってもおかしくないとオモタ。
236デフォルトの名無しさん:2005/08/19(金) 00:39:09
Perl、PHP
237デフォルトの名無しさん:2005/08/19(金) 00:51:34
PHP.NET使えば無問題
238デフォルトの名無しさん:2005/08/19(金) 01:46:58
Perlが文字コード判定を標準装備してたのならなんでjcode.plなんてのがあったんだ?
239デフォルトの名無しさん:2005/08/19(金) 02:11:43
いや、っていうか「無理」なんだが。
「日本語」って限定すれば結構高確率で出来るけど言語限定しないと難しいし。
UTF16とか完璧に判別無理なのあるし
何で未だに文字化けがあるのかと小一時間(ry
そんなん標準で用意されてもその、なんだ、困る
240デフォルトの名無しさん:2005/08/19(金) 03:41:03
>>238
今は組み込まれたけど以前はなかった。
241デフォルトの名無しさん:2005/08/19(金) 08:14:09
>>240
てかそれってまさか日本語だけとか言うなよ・・・
242デフォルトの名無しさん:2005/08/19(金) 08:49:54
リッチテキストボックスにコピペ以外の方法で画像を貼り付けるにはどうしたら良いですか?
メソッドとか探してみたのですが見つからなかったので困っております
(最悪、クリップボード経由で貼り付ける方法もあるのですが、できれば普通にやりたいです)
243デフォルトの名無しさん:2005/08/19(金) 10:29:06
タスクトレイに表示される吹き出しのポップアップはどうやったら出せるのでしょうか?
244デフォルトの名無しさん:2005/08/19(金) 12:43:08
できあがったアプリのアイコンにカーソルをあてると
ファイル バージョン・作成日時・サイズ がチップに表示されますが
ファイル バージョンが、1.0.2056.38066
と長々しいので、1.02にしたいのですが、そういった設定はどのようにすればいいのでしょうか。

後、皆さんバージョンはどのようにつけているのでしょうか。
これはだいぶ機能を追加したからバージョンを1アップしようとか、これはちょっとした改変だから0.5だけアップしとこうとか
そういったどんぶり勘定でバージョンの数字をアップしているのでしょうか。
245デフォルトの名無しさん:2005/08/19(金) 13:11:08
>>244
AssemblyInfo.csの[assembly: AssemblyVersion("1.0.*")]
246244:2005/08/19(金) 13:15:05
>>245
任意のバージョンにすることができました。どうもありがとうございました。
247デフォルトの名無しさん:2005/08/19(金) 13:24:00 BE:174731257-
文字コードの判別はIEのコンポーネントを呼び出す方法をどっかで見た記憶が
あるけど、探せなかった。
248243:2005/08/19(金) 14:15:43
以下を参考にしてできました。

バルーンツールチップ
http://www.codeproject.com/cs/miscctrl/notifyiconex.asp
249デフォルトの名無しさん:2005/08/19(金) 15:52:43
>>247
つ[MLang]

Introduction to MLang
ttp://msdn.microsoft.com/workshop/misc/mlang/overview/overview.asp
ここの"Code Page Detection"あたりかな。
250デフォルトの名無しさん:2005/08/19(金) 16:10:59
C#で書いたアプリって、.NET Frameworkをダウンしてもらいさえすれば、95,98,Meなんかでも動くのでしょうか。
無難に2000,XPのみ対応を謳っておいたほうがいいでしょうか。
251デフォルトの名無しさん:2005/08/19(金) 16:16:13
2000,XPのみでいいと思う。
98でも動くが一部機能しない。
252250:2005/08/19(金) 16:18:54
>>251
回答ありがとうございます。
Framworkさえインストールすれば、どのOSでも動いてくれれば便利なのに残念です。
253デフォルトの名無しさん:2005/08/19(金) 16:31:52
95,98なんてとっとときりすてましょう
254デフォルトの名無しさん:2005/08/19(金) 16:45:56
VS.NET 2003 で作ったアプリに対応した.NET Frameworkは1.1であってるでしょうか。

最新の.NET Framework2.0Beta版をダウンしたとしてももちろん動きますよね。
255デフォルトの名無しさん:2005/08/19(金) 16:50:18
あってる。

2.0で1.1のアプリも一応うごく
256254:2005/08/19(金) 16:51:50
>>255
回答ありがとうございます。
Framworkがバージョンアップするたびに動かなくなったら大変だなと思ってたので安心しました。
257デフォルトの名無しさん:2005/08/19(金) 18:15:31
>>252
9xは動くかもしれないとだけでも書いておいてあげようよ。
まあ流石にWin95にFrameworkはインストールできないけど。
258254:2005/08/19(金) 19:33:06
>>257
そのように書いておけば、98もカバーできたようなきにはなりますね。
そのうように書いとこうと思います。
どうもアドバイスありがとうございます。
259デフォルトの名無しさん:2005/08/20(土) 12:43:14
>>242
クリップボード経由か、そうでなきゃRtfを直に操作するしかないんじゃないかな
260デフォルトの名無しさん:2005/08/20(土) 16:13:07
Dateをパースするとき
Thu, 2 Jun 2005 18:22:12 +0900
のようなメールで使われている形式をパースするにはどうするのが簡単でしょうか?

+0900のような形式が書式指定に無いのですが。
入力文字列を変換して 「 Thu, 2 Jun 2005 18:22:12 +09:00 」< コロンを入れた
でParseするのって適当ですかね?
261デフォルトの名無しさん:2005/08/20(土) 18:31:50
そのままやればいけるじゃん……と思いきや.NET 2.0限定か。
秒まで(Thu, 2 Jun 2005 18:22:12)でParseしてから時差を手計算、ということになるかなぁ。
262デフォルトの名無しさん:2005/08/20(土) 18:39:38
「Thu, 2 Jun 2005 18:22:12 +09:00」
こういう表記考えた奴アホでしょ。

「2005/08/20 18:30:00」とかでいいじゃん
263デフォルトの名無しさん:2005/08/20(土) 19:02:50
RFCなんてあんま考えずに出してるから
264デフォルトの名無しさん:2005/08/20(土) 19:10:37
>>262
はげしく同意。字句解析する身にもなってみろ!!
265デフォルトの名無しさん:2005/08/20(土) 19:42:43
C#でオススメの参考書とかってありますか?

大体の事はMSDN見ながらやってれば何とかなるんですが、
イベント、マルチスレッド、マーシャリング辺りに重点を置いた書籍があるなら、
手元に置いておきたいんですが。
266デフォルトの名無しさん:2005/08/20(土) 22:21:14
C#には、C++で言えばboost::regex_replace()に相当するクラスは標準で
含まれていますか?もし含まれていなければ、これは自分で作るしか
ありませんか?
boost::regex_replace→ttp://www.boost.org/libs/regex/doc/regex_replace.html
267デフォルトの名無しさん:2005/08/20(土) 22:30:49
268デフォルトの名無しさん:2005/08/20(土) 22:33:18
正規表現が含まれてないフレームワークって今の時代存在するのかな?
269デフォルトの名無しさん:2005/08/20(土) 22:40:02
>>262
いや、それだと国によって解釈がまちまちになってしまうし…
270デフォルトの名無しさん:2005/08/20(土) 22:40:31
>>268
Del厨をいじめないように。
271デフォルトの名無しさん:2005/08/20(土) 22:40:48
MFC
272デフォルトの名無しさん:2005/08/20(土) 22:44:55
>>261 返答thx
.net 2.0だとそのままいけるのかぁ
.net 1.1だとコロン入れればzzzだかの書式に当てはまるので普通にパースできるようです。
273266:2005/08/20(土) 22:50:46
>>267
ややこしくて申し訳ありませんが、boost::regex_replace()はreplaceと
言うよりもむしろformatterなのです。というわけで探していたものが
見つかりました。
System.Text.RegularExpressions.MatchのResultメソッドでした。
ご協力ありがとうございました。
274デフォルトの名無しさん:2005/08/20(土) 22:52:26
いや、多分それ取得時間狂ってるぞ。
DateTime.Parse("Thu, 2 Jun 2005 18:22:12 +09:00");
は.NET 1.0/1.1では
2005/06/02 9:00:12
と解釈されるはず。時間・分が後ろの+HH:mmに支配される。
275デフォルトの名無しさん:2005/08/20(土) 22:57:40
非同期デリゲートに関して、
EndInvokeの後に書いた処理と
AsyncCallbackで行わせる処理って実行順序は保障されない。でいいんですかね?

//...コード例
private void _processX(){
ThreadStart ts = new ThreadStart(_method);
ts.EndInvoke( ts.BeginInvoke(new AsyncCallback(_callback), null) );
Console.WriteLine("main thread");// A
}
//...
private void _method(){}
private void _callback(IAsyncResult r){
//...........
Console.WriteLine("thread pool thread");// B
}

とやると AとBの実行順序は保障されないのが仕様?
(自分で非同期処理関連実装しないといけなくてIAsyncResultを実装したクラスを作ろうとしてふと疑問に
276デフォルトの名無しさん:2005/08/20(土) 23:22:37
それであってる。
EndInvokeが待機するのはそれでいう_methodで実行される部分。
277デフォルトの名無しさん:2005/08/21(日) 01:44:14
>>259
回答ありがとうございます。
結局、

クリップボードの中身を変数(?)に退避

クリップボードに画像ファイルを読み込み

リッチテキストボックスにペースト

変数(?)に退避した中身をクリップボードに戻す

という方法を採用することにしました。
278デフォルトの名無しさん:2005/08/21(日) 01:54:11
>>272
ちょうど同じことやってる人がいた(^^)
RSS2.0で普通に使われてるのに困ったもんだねぇ。ということで>>274
内容を踏まえて書いてみた。間違ってたら指摘お願い。
date = System.DateTime.ParseExact(strdate, "ddd, d MMM yyyy HH:mm:ss zzz", System.Globalization.DateTimeFormatInfo.InvariantInfo);
279デフォルトの名無しさん:2005/08/21(日) 02:46:59
値型ってなんて読む?
280デフォルトの名無しさん:2005/08/21(日) 02:51:05
あたいがた
281デフォルトの名無しさん:2005/08/21(日) 02:55:42
Value Type
282デフォルトの名無しさん:2005/08/21(日) 03:01:14
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/118regget/regget.html
これを見てレジストリを読み書きしようとしたんですけれども
VS2005だとRegistryクラスのCurrentUserやLocalMachineメンバがヌルリです
VS2002では問題なく動いているので .NET 2.0 のバグなのでしょうか
283デフォルトの名無しさん:2005/08/21(日) 15:33:15
いや普通に取得できるが。
284デフォルトの名無しさん:2005/08/21(日) 20:58:41
RichTextBox内の現在のカーソルの位置に文字列を代入したいのですが、
AppendText()では常に最後に代入されてしまいます。

現在のカーソル位置に代入したい場合、どうすればよいのでしょうか?
285デフォルトの名無しさん:2005/08/21(日) 21:02:22
SelectedText?
286デフォルトの名無しさん:2005/08/21(日) 21:02:35
SelectとかSelectionStart/SelectionLengthで挿入したい位置にカーソルを動かしてSelectedText
287デフォルトの名無しさん:2005/08/21(日) 23:28:20
与えられたstringから改行を取り除いてその文字数を得たいのですが、
どうしたらよいでしょうか?
System.String replaced = System.Text.RegularExpressions.Regex.Replace(str, "[\\p{Zl}]", "", System.Text.RegularExpressions.RegexOptions.Multiline);
ではダメでした。
288デフォルトの名無しさん:2005/08/21(日) 23:45:47
String.Replace で充分じゃね?
289デフォルトの名無しさん:2005/08/22(月) 00:53:42
str.Replace("\r\n", "")で削除できました。System.Stringは\r\nで
改行を持ってたんですね…
290デフォルトの名無しさん:2005/08/22(月) 00:57:03
ちがうだろ。
たまたまStringに入ってた文字列の改行が\r\nだっただけだろ。
Windowsだと改行に\r\n使ってる場合が多いからな。

ただWebとかから拾ってきたファイルとかだと違う改行もありえる。
291デフォルトの名無しさん:2005/08/22(月) 01:05:09
>>290
と言う事は、一般的にSystem.Stringの改行を削除するには、改行と
解釈されうる全てのシーケンスを削除する必要があるということでしょうか。
292デフォルトの名無しさん:2005/08/22(月) 01:10:53
まあ\rと\nを全部取り除いてやればなんとかなりそうな気もする。
293デフォルトの名無しさん:2005/08/22(月) 01:14:18
>>292
ではstr.Replace("\n", "").Replace("\r", "")ですね。でもかっこ悪い…
294デフォルトの名無しさん:2005/08/22(月) 01:18:30
そこで正規表現だろ。
Regex.Replace(str, "[\r\n]", "");
295デフォルトの名無しさん:2005/08/22(月) 01:22:27
>>294
それでいきます。ありがとうございました。
296デフォルトの名無しさん:2005/08/22(月) 15:22:33
>>285-286
出来ました!
ありがとうございました!
297デフォルトの名無しさん:2005/08/22(月) 16:15:55
構造体をByte配列型でネットワークで送信して送信先で構造体に戻したいのですが
何か良い方法は無いでしょうか?
298デフォルトの名無しさん:2005/08/22(月) 16:26:50
ある程度制約があるが、
System.Runtime.InteropServices.Marshalクラスの
AllocHGlobal/FreeHGlobal/StructureToPtr/PtrToStructure/Copyメソッド。

素直なのは、その構造体にToBytesメソッドでも作って自前で実装。
299デフォルトの名無しさん:2005/08/22(月) 16:37:09
.NET同士ならBinaryFormatter辺りを使ってシリアライズ・デシリアライズというのも良いな。
300297:2005/08/22(月) 16:58:58
>>298,299
素早いレス有難う御座います!
今から早速試してみます。
301デフォルトの名無しさん:2005/08/22(月) 22:44:28
Visual Studioスレが2005になってしまったようで、微妙に場違いですがお許しください。

MSDNのインストールウィザードが変なタイミングで出るようになってしまいました。
WebからMSDNのオンラインを参照したり、
Windowsサービスのインストーラプロジェクトを作ってビルドの際などに、
確実にダイアログが出て、プログレスバーが進行していきます。

どうせ、そのまま続けてもエラーが出るので、キャンセルするのですが、
キャンセルすると、何事も無かったように動作します。

何か、対処法があるでしょうか?よろしくお願いします。
302デフォルトの名無しさん:2005/08/22(月) 22:45:27
修復インストールかな
303デフォルトの名無しさん:2005/08/22(月) 22:55:38
il||li _| ̄|○ il||l
やっぱり、そうなりますよね……
304デフォルトの名無しさん:2005/08/22(月) 23:00:54
インストールしたファイルやレジストリを知ってか知らずかいじるとそうなる。
その部分だけの修復だからすぐ終わるはず。
>>301 は違うようだが、
VSなのにOfficeが暴走したりするのがわけわかんないんところ。
305デフォルトの名無しさん:2005/08/22(月) 23:33:05
C#って将来的に普及しますか?(将来性ありますか?)
306デフォルトの名無しさん:2005/08/22(月) 23:37:09
ぶっちゃけJavaのが有望だろ
307デフォルトの名無しさん:2005/08/22(月) 23:40:02
しないのでJavaスレにお帰りください
308デフォルトの名無しさん:2005/08/22(月) 23:45:52
てかC#かJavaの選択なんて馬鹿げてる
両方使えこなしたらええやん
309デフォルトの名無しさん:2005/08/22(月) 23:46:43
よし、両者の最大公約数だ。
310デフォルトの名無しさん:2005/08/22(月) 23:56:55
出来る人間は両方臨機応変に使える
廃れたら捨てればいいだけ
無能な人間は一言語しか出来ないのでそれが廃れると困る
311デフォルトの名無しさん:2005/08/22(月) 23:58:41
>>305
ほい。

C#: Is the Party Over?
ttp://jdj.sys-con.com/read/117741_p.htm
312デフォルトの名無しさん:2005/08/23(火) 00:18:10
>>301
もしかしてjv16 Power Toolsでレジストリを掃除しなかった?
俺は前にそれ2回やって、2回とも君と同じ症状が出るようになり、二度とjv16を
使わない決心をした。修復インストールをしても直らず、全部削除してからもう
一度最初から入れ直した。

多分一つか二つのレジストリキーの問題だろうと思うんだけど・・・
313デフォルトの名無しさん:2005/08/23(火) 00:26:41
C#で作ったプログラムって動作遅いのですか?
ゲームとか作るのには向いていないでしょうか?
314デフォルトの名無しさん:2005/08/23(火) 00:31:36
速度は問題ないが実行できる環境が少ないから向いてない
315デフォルトの名無しさん:2005/08/23(火) 00:36:52
GDI+はやっぱちょっと遅いと思うよ
DirectX使うならいいけど
ManagedDirectX使うならフツーのDirectX使った方が・・・

というわけであんまり向いてないと思うよ
316デフォルトの名無しさん:2005/08/23(火) 00:37:22
>>313
パフォーマンスは悪くない。ただし、初回起動が遅い。
ゲームの場合、Managed DirectX を利用する事になるが、
ユーザにインストール方法を説明するのが面倒かも。
ただ、こういった環境面を考慮しないなら生産性は高い。
317デフォルトの名無しさん:2005/08/23(火) 00:58:25
初回起動が遅いってのはネイティブコードに落としたのを
どっかテンポラリディレクトリに隠してあるのけ?
318デフォルトの名無しさん:2005/08/23(火) 01:02:52
>>317
違う。メモリに入れている。だからメモリも馬鹿食いする。
319デフォルトの名無しさん:2005/08/23(火) 01:03:34
なんでわざわざそんなことを。
.NET Frameworkの起動に費やしてるだけだ。
だいたいネイティブコードへのコンパイルは実行中に行われるんであって起動時のみに行われるんではない。
320デフォルトの名無しさん:2005/08/23(火) 01:09:58
HTTPWebRequestクラスを使用するときに、
プロパティが存在しないContext-Encording;gzip, deflateを
指定し、gzip圧縮をしていないリクエストデータをサーバに送ると
タイムアウトはするものの、CPUの使用率が異常に跳ね上がります。
同じ症状に悩まされたことある人いませんか?
321デフォルトの名無しさん:2005/08/23(火) 01:11:32
>>317
ランタイムが異常に肥大しているので、それの読み込みに時間がかかる。
二回目以降はDLL保持してたり、ディスクキャッシュが効いてたりで早い。
322デフォルトの名無しさん:2005/08/23(火) 01:11:40
悩まされるどうこう以前にそんなことすんなよw
323デフォルトの名無しさん:2005/08/23(火) 07:58:12
>>320
そもそもgzipとdeflateを両方同時に指定するのは間違ってないか
324デフォルトの名無しさん:2005/08/23(火) 11:02:28
.net2.0 beta2でSystem.Collections.Genericから
Collection<T> が消えているのですが、どこへ行ってしまったのでしょうか。
325デフォルトの名無しさん:2005/08/23(火) 11:11:51
System.Collections.ObjectModel名前空間
326デフォルトの名無しさん:2005/08/23(火) 11:15:56
>>325
ありがとう。発見しました。
System.Collections.ObjectModel.Collection<T>
327313:2005/08/23(火) 13:13:36
やはり遅めですか・・・
大人しくC++にした方が無難ですかね?
328デフォルトの名無しさん:2005/08/23(火) 13:27:19
それで問題ないならそっちの方が良いな
ていうか上で言われてるのはインストールの面倒さが主だから。読んでる?
329デフォルトの名無しさん:2005/08/23(火) 14:11:40
静的コンストラクタというのはありますが、静的デストラクタというのはないのでしょうか。
330デフォルトの名無しさん:2005/08/23(火) 14:15:20
ない
331デフォルトの名無しさん:2005/08/23(火) 17:43:07
c#のswitch文は、intやchra,stringしか使えないそうですが、
実数を用いて条件分岐したい場合は、else ifしかないんですか?
というかcではそれがあたりまえなの?
332デフォルトの名無しさん:2005/08/23(火) 17:50:40
intだけじゃなくて整数型全部使える、あと列挙型も。
なんでfloat, double, decimalは駄目なんだろうな
333デフォルトの名無しさん:2005/08/23(火) 17:56:49
>>332
そうレスか
ということはひょっとしてVBよりショボチンってことかい
334デフォルトの名無しさん:2005/08/23(火) 18:07:33
いちいちbreakを書かなきゃいけないという点でも、VBより劣ってると思うよ。
フォールスルーの機能が無いのにいちいちbreakを書かされるのは、Cの流れを汲んでることの弊害だと思う。

話を戻して、

>というかcではそれがあたりまえなの?
これは俺にはわからんな
335デフォルトの名無しさん:2005/08/23(火) 18:12:27
>>334
漏れも、いちいちbreak;はめんどくさいのでgoto使ってみたが、
意外ときれいに書けた。 ここ以外goto使ってないがな。
336デフォルトの名無しさん:2005/08/23(火) 18:18:59
>>332
できるだけテーブルジャンプにしたいから、整数じゃないとまずい
むしろ string がなんで使えるのかが不思議

>>335
break を外に出る goto へ単純に置換するだけなら、それは違うんじゃないか?
337デフォルトの名無しさん:2005/08/23(火) 18:20:04
>>332
Cでの意図は整数・列挙型ならジャンプテーブルの最適化を狙うためだったんじゃないかと思う。
その仕様がC#にも引き継がれたってことでしょ。
338デフォルトの名無しさん:2005/08/23(火) 18:29:55
>>336
case:内の違う処理後に共通処理部分case:の一つに飛ぶんだが。
339デフォルトの名無しさん:2005/08/23(火) 18:31:28
VBがC#やJavaよりもさえている1つの事例 http://www.atmarkit.co.jp/fdotnet/vbcheer/vbcheer03/vbcheer03.html
この記事には納得した
340デフォルトの名無しさん:2005/08/23(火) 19:15:18
こんな恥ずかしい記事は久しぶりに見た
341デフォルトの名無しさん:2005/08/23(火) 19:20:37
>>301と同じ現象が起こってしまいます。
インストールの途中でCPUがフル稼働して固まります。
修復しても同じでした。

他に考えられる原因はありますか?
342デフォルトの名無しさん:2005/08/23(火) 19:23:16
ないねー
343デフォルトの名無しさん:2005/08/23(火) 19:42:22
(´・ω・`)
344デフォルトの名無しさん:2005/08/23(火) 19:58:16
>>341
VSを削除してインストール、それでも駄目なら、HDD初期化してOSからインストール。
たまーにやるけど、HDDが綺麗になっていい。
VSでおかしくなった事は無いけどね。
345デフォルトの名無しさん:2005/08/23(火) 20:01:43
OS再インストール(リカバリ)したばかりのXPで、試しにC#で作ったアプリをダブルクリックして実行してみたのですが
ちゃんと立ち上がってフォームが表示され、ちゃんと動きました。

XPも2000も初期状態では皆、.NETFrameworkが入ってないと思っていたのですが
最近のPCは入れてくれているものもあるのですね。
こういったPCが増えてくれれば、ユーザに.NETFrameworkのインストールの案内とかの手間が省けて助かりますね。
346デフォルトの名無しさん:2005/08/23(火) 20:17:28
全部がそうならない限り説明の手間を省くことはできないさ。
347345:2005/08/23(火) 20:25:06
>>346
それもそうだね。
.NETFrameworkのインストールという手間さえなければ、なかなか生産性も高くていい言語だと思うんだけどなあ。
348デフォルトの名無しさん:2005/08/23(火) 20:30:39
JREのインスコより簡単だろ
349デフォルトの名無しさん:2005/08/23(火) 20:35:54
まあ、Windows Updateで完了するだけましじゃないか。
MDXは再配布してやらにゃならん。
ここがC#でゲームを作る場合の鬼門なんだよな。作ってるけど。
350デフォルトの名無しさん:2005/08/23(火) 20:40:00
.NET をインストールしてから DirectX をインストールすれば
勝手に Managed DirectX もインストールされたと思ったんだけど
俺の記憶違い?
351デフォルトの名無しさん:2005/08/23(火) 20:40:57
漏れもC#で作ってる、できたらフリー公開予定。どんなアクションが起こってくるか不明だ。
MDXは添付していいものなのか?
352デフォルトの名無しさん:2005/08/23(火) 20:42:39
>>350
俺も昔そう思い込んでたのだが、残念ながら違う。
やっぱそう思うのが自然だよなあ。MSは変だよ。
353351:2005/08/23(火) 20:42:56
>>350
そうなのか?、そうなら嬉しい。(色々インストールしたが、何処で入ったか覚えてない。
354デフォルトの名無しさん:2005/08/23(火) 20:46:03 BE:179723366-##
>>339
この人は、どうでもいいような事を非常に重要なことのように書いたり、
センセーショナルに煽ったりするのが芸風だね。
355デフォルトの名無しさん:2005/08/23(火) 20:47:06
それが川俣クオリティ。
いや結構好きな人だけどね。
356デフォルトの名無しさん:2005/08/23(火) 20:53:18
3年ほど前に作ったMDXを使うアプリの説明書に
.NET 1.0 を入れてから DX 9 を入れれば大丈夫
って書いたけれど特に不具合の報告なかったぞ
357デフォルトの名無しさん:2005/08/23(火) 20:54:49
・ダウンロード数0
・たまたま入っていた
・動かないのですぐゴミ箱へ
さあどれだ。
358デフォルトの名無しさん:2005/08/23(火) 21:03:46
気になり始めました、教えて下さい。
OSは2000、昔、DX8で、DX9にして今DX9の最新を入れているが、意識してMDXを
インストールした記憶が無い、しかし普通にMDXを使用している。 (知らずに入れたかもしれない・・
この場合、古いMDXを使用している可能性もあるのだろうか? VS.NET 2003を使用。
普通に使っていたので気にもしなかった。 MDXにバージョンがあるのだろうか?
359デフォルトの名無しさん:2005/08/23(火) 21:04:25
>>331-332
遅レスだけど…実数型で==なんて比較(caseで指定する方法ね)をそもそもしてはダメポ。
だからfloatやdoubleはだめ。
decimalはまだいいけど・・・それでも無理にサポートする必要もないな

>>336
stringはimmutableなので、比較が高速に出来る場合があるからじゃない?
最適化次第だけど
360デフォルトの名無しさん:2005/08/23(火) 21:06:27
MDX SDK入れただろ。

MDXを使った代表的アプリとしてNASA制作のWorld Windがある。
それのインストールプロセスを調べてみれば?
361デフォルトの名無しさん:2005/08/23(火) 21:07:43
どっちかっつーとこっちの話題だけどまあいいか。
http://pc8.2ch.net/test/read.cgi/tech/1103998649/l50

MDXについてはこのあたりを一応参考に。
ttp://www.dwahan.net/nyaruru/getreadyformdx/runtime.html
362デフォルトの名無しさん:2005/08/23(火) 21:26:52
>>361
参考になりました、有難うございます。
363デフォルトの名無しさん:2005/08/24(水) 01:07:47
RichText.Rtfプロパティに\f2とか色つきのRTF
直接流し込んだら遅いのなんのって酷過ぎだよ。
10kで1秒ちょっとうんまぁまぁ
3M読み込みやってみたら10分は無反応、どうなんてるんだ?
<\cf2 td\cf1 >\cf3 test\cf1 <\cf4 /\cf2 td\cf1 >\par
こんなので3Mだよ?それで、javaより読み込み速度遅いわ、
糞クラス多すぎて本当に困るよ。
 みんなRichTexeBoxは使わないの?困らないの?
364デフォルトの名無しさん:2005/08/24(水) 03:31:35
.NETプログラムの起動遅すぎてオワットル……
MSはこんなのをWinのデフォにしようとしているんでしょ?
365デフォルトの名無しさん:2005/08/24(水) 05:26:37
>>364
最初からJava並みだと分かってたから、期待はしてなかった。
Javaよりも当然Windowsとの相性はずっといいけどな。

こんなんデフォにされたら、CPUをいくら速くしてももっさりして
溜まらんわ。絶対反対。
366デフォルトの名無しさん:2005/08/24(水) 09:31:41
>>365
技術者なら技術的な話をしようか。
実行ファイルを読み込むほうが全体としては時間かかるので、実際のところ
大体においてJITは誤差程度のはずなんだが。ngenやってどの程度速くなるか
確かめてみ。
大規模なライブラリにおいては確かに結構きくけどな。でもngenがあるわけで
解決策があるのにこれでも問題だというのはなぜ?
あ、それと、WinFormで遅いっていってるのは別の理由であって、JITの責任では
ないが?

実際のところJITとネイティブコンパイルを比較すれば最適化がひっくり返る手前
まで来ている時代だと思う(プロファイル最適化がVS2005ででた段階でもうこれ
以上望めんし)し、それ以上に他の要求を実現するために妥当な処置だと思う
けどな>JIT化
367デフォルトの名無しさん:2005/08/24(水) 10:59:53
>>366
そうか。ま、2005のC#が出てから使ってみて考えるわ。
2003のC#はもっさりしてて、ちょっと大きなプログラムを組むと、ユーザーが
ストレスを感じる。CPUをダウングレードしたような感覚に襲われる。
368デフォルトの名無しさん:2005/08/24(水) 13:22:32
それはプログラムがヘタれているからでは
369デフォルトの名無しさん:2005/08/24(水) 21:04:57
2.0 で ToolStrip をフォームにはっつけただけで
起動速度が劇的に遅くなったよ
370デフォルトの名無しさん:2005/08/24(水) 21:08:03
私の所ではそんなことないなぁ。
まあWinFormが全体に遅いのは事実だけど。
371デフォルトの名無しさん:2005/08/24(水) 22:02:09
ToolStripはくそ
定説
372デフォルトの名無しさん:2005/08/24(水) 22:55:46
まだ正式版じゃないのに酷いなあ
373デフォルトの名無しさん:2005/08/24(水) 23:03:28
ArrayListが遅いなあ。これは常識ですか?
374デフォルトの名無しさん:2005/08/24(水) 23:10:03
>>373
使い方による
375デフォルトの名無しさん:2005/08/24(水) 23:11:03
キューをArrayListで実装していた馬鹿がいた
376デフォルトの名無しさん:2005/08/24(水) 23:12:28
>>375
ワロス
377デフォルトの名無しさん:2005/08/24(水) 23:16:16
LinkedList<T> が直感的に使いにくいのは何とかならんの?
Java のは ArrayList と同じ感覚で使えるのに
378デフォルトの名無しさん:2005/08/24(水) 23:20:13
どの辺が?
379デフォルトの名無しさん:2005/08/24(水) 23:45:33
お前の直感なぞしるか
380デフォルトの名無しさん:2005/08/25(木) 00:07:00
LinkedList<T> も IList<T> を実装して欲しいなと思ったことはある
381デフォルトの名無しさん:2005/08/25(木) 01:12:15
>>380
LinkedListがインデクサなんか実装したら、構造とか頭に入れてない
奴が使いまくって遅くなる可能性あり、というfail safe。ということで実装
するべきではないと思うが。
382デフォルトの名無しさん:2005/08/25(木) 01:34:08
QueueとStackがあるからLinkedListなんて使う場面がほとんど無いと思う俺は浅はかですか
383デフォルトの名無しさん:2005/08/25(木) 02:34:36
普通、先にLinkedLis作ってQueueとStackちがうのか
384デフォルトの名無しさん:2005/08/25(木) 07:21:19
.NETってバージョンによって実行速度とかが違うのですか?
自分は学生の頃に買った初期のVS.NETアカデミックで開発しております。
VS.NET2005を購入しようか検討しているので教えて下さい。
385デフォルトの名無しさん:2005/08/25(木) 07:53:28
MB作戦への参戦、臨時召集について
V.V.V. ------------- Vank V.s. Vipperからのお願い。

VIPPERは韓国政府公認のサイバーテロリストVANKと
「日本海呼称問題」を巡り、臨戦体制に入っております。

現在、VIPPERは連中のメールボムのような抗議メールを周到し、
山のような抗議メール(嫌がらせ)を送るために、
VANK関連サイトのメールアドレスを収集しております。
わずかな情報でも構いません、重複でも構いません。
調べて分かったものがあったら、どんどん情報を下さい。
http://yy16.kakiko.com/test/read.cgi/vippervsvanker/1124879949/

御協力、お願い致します。
386デフォルトの名無しさん:2005/08/25(木) 08:05:02
>>384
まあそりゃ多少差はあるだろうが。
それよりもライブラリの追加変更の方がよほど重要。
VS2005ベータを試してみれば。
.NET 2.0のパフォーマンスについては正式版がでてないんだから評価するのは意味無い。
387デフォルトの名無しさん:2005/08/25(木) 11:41:59
ファイル名を指定して保存する機能を実現したいのですが、
入力したファイル名が正常(使えない文字を使っていないか)かをチェックする方法が分かりません。
どうすればファイル名のチェックを行えますか?
メソッドを探したけど見つかりませんでした。
388デフォルトの名無しさん:2005/08/25(木) 11:51:02
>>387
フィールド定義されてるよ。

System.IO.Path.InvalidPathChars
389デフォルトの名無しさん:2005/08/25(木) 11:57:10
>>388
ありがとう御座います。
390387:2005/08/25(木) 12:04:52
private bool checkFileName(string filename)
{
 char ch;

 for(int i = 0; i < filename.Length; i++)
 {
  ch = Convert.ToChar(filename.Substring(i, 1));

  for(int j = 0; j < Path.InvalidPathChars.GetLength(); j++)
  {
   if(ch == Path.InvalidPathChars[j])
   {
    return false;
   }
  }
 }

  return true;
}


こんな感じで使えば良いですかね?
391デフォルトの名無しさん:2005/08/25(木) 12:19:54
>>390
String.IndexOfAny 使えば?
あと
: * ? \ / もチェックしなきゃなんないよ。
InvalidPathCharsには含まれないがファイル名には使えない。
//GetInvalidFileNameCharsには含まれる。
392デフォルトの名無しさん:2005/08/25(木) 12:29:44 BE:269584496-##
>>390
Cのstrspn()に相当する関数ってないのかな?
393デフォルトの名無しさん:2005/08/25(木) 12:30:53
>>391
ありがとう御座います。
試してみます。
394デフォルトの名無しさん:2005/08/25(木) 12:37:56
>>391
> //GetInvalidFileNameCharsには含まれる。

それは2.0では・・・?
395デフォルトの名無しさん:2005/08/25(木) 12:38:22
>>394
だからコメントアウトw
396デフォルトの名無しさん:2005/08/26(金) 21:04:19
コンパイルしたPGとmdbを一緒に組み込んで配布することってできる?
ファイルをいくつか読み込んで吐き出す際SQL使いたいんだけど
クライアントにアクセス入ってない場合動くのかな
397デフォルトの名無しさん:2005/08/26(金) 21:17:57
>>396
Access入ってなくてもmdb操作できるよ。
398396:2005/08/27(土) 02:49:46
>>397
ありがと
ウィザード使ってコネクション作ってソース見たら絶対パスで書いてあったんだけど
インストーラにして配布したら相対パスになる??
ぐぐってみたけど探し方が悪いのかそこらへん書いてる資料見つからない・・・
399デフォルトの名無しさん:2005/08/27(土) 08:58:44
たしかならなかったような。
// 直接関係ないけど、mdb内のリンクテーブルとかも絶対パスなのよね。。。
400396:2005/08/27(土) 09:50:45
あー、確かにリンクテーブルも絶対パスか(;´Д`)
pgの下位フォルダ読んで探しに行くようにしなきゃ駄目かな・・・
401C ◆.6Hqkk7dyk :2005/08/27(土) 14:03:49
メニューに印刷機能を追加したいのですが、
C#での印刷機能の実現方法が分かりません。
できればプレビューとページ設定も追加したいのですが……
どうやればC#で印刷機能などを実現できますか?
印刷の対象はリッチテキストボックスです。
開発環境はVisualStudio.NET2002です。
402デフォルトの名無しさん:2005/08/27(土) 14:23:51
403C ◆.6Hqkk7dyk :2005/08/27(土) 14:27:46
ありがとうございます。
404デフォルトの名無しさん:2005/08/28(日) 04:03:56
VC# 2005 Express Beta2で、複数のプロジェクトで共有したいソースファイル(*.cs)をコピーせずに共有するには
[既存の項目追加]で[リンクとして追加]を実行するしか方法がないのでしょうか?
405デフォルトの名無しさん:2005/08/28(日) 12:38:32
リフレクションを使って特定クラスのinternalなコンストラクタを呼び出したいと考えています。
引数なしの場合はこんなコードでうまくいきました。

Activator.CreateInstance(typeof(Klass), true);

引数がある場合はこんな感じかなあ、と思ったのですが

typeof(Klass).InvokeMember(null, BindingFlags.CreateInstance | BindingFlags.NonPublic, null, null, new object[] { 100 });

例外が出てしまいます。
System.MissingMethodException: 型 'Klass' にコンストラクタが見つかりませんでした。

ご存知の方おられましたらご教示ください。
406デフォルトの名無しさん:2005/08/28(日) 12:46:53
| BindingFlags.Instance

InvokeMemberよりも一旦GetConstructorでConstructorInfoを取得する方をお薦め。
407デフォルトの名無しさん:2005/08/28(日) 13:11:00
>>405
BindingFlags.CreateInstance | BindingFlags.NonPublic | BindingFlags.Instance じゃね?

でも>>406に同意。
408デフォルトの名無しさん:2005/08/28(日) 13:12:04
>>406にも
> | BindingFlags.Instance

って書いてあったか。スマソ
409デフォルトの名無しさん:2005/08/28(日) 13:52:35
>>406-408
回答ありがとうございます。
ひとまず BindingFlags.Instance を追加して動作することを確認しました。
ConstructorInfo についても試してみます。
410デフォルトの名無しさん:2005/08/28(日) 15:29:49
質問です。
タイトルバーをドラッグしてウィンドウを移動している間は、処理を止める、
というような事をしたいのですが、タイトルバーを押下するのに対応するイベントは在るのでしょうか?
非クライアント領域に対する操作に関するイベントを探しているのですが、見つかりません。
WM_ENTERSIZEMOVEメッセージを処理するコールバックメソッドを用意しないとだめなのでしょうか?
VC#.net2003を使ってます。よろしくお願いします。
411デフォルトの名無しさん:2005/08/28(日) 15:42:52
>>410
ウィンドウ移動はFormのMoveイベントで取れるよ。
412デフォルトの名無しさん:2005/08/28(日) 15:48:11
>>411
いや、Moveイベントでは移動開始/終了判定がめんどくさい。
WM_ENTERSIZEMOVE / WM_EXITSIZEMOVEを自前で捕らえた方が楽かと。
413デフォルトの名無しさん:2005/08/28(日) 18:41:01
ありがとうございます。
今試して見たところ、移動に関してはMoveイベントで取れるのがわかりました
しかしタイトルバー押下したあとマウスを動かさなければ、
イベントが発生せず望み通りの動きをしてくれません。
些細な事なのですが、ゲーム用途なので数フレームでも無駄に進んでしまうと都合が悪く、
>>412さんが仰られるように自前で捕らえるしかないようです。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformscontrolclasswndproctopic.asp
こんな感じでやればいいんですよね?
414デフォルトの名無しさん:2005/08/29(月) 01:50:39
メニュー上で右クリックを検知ってできませんよね?
415デフォルトの名無しさん:2005/08/29(月) 03:27:07
できる
416デフォルトの名無しさん:2005/08/29(月) 10:53:34
文字列が整数部何桁以内、小数部何桁以内の数値の形かどうか
("-12345.6789"とか、指数形式とかはムシ)判断したいのですが
double.TryParseや正規表現だと、書式は判断できるんですが
何桁以内か、というのを調べる方法が分かりません。
いまはとりあえず上記の書式チェックをした後ピリオドでSplit
して調べてますが、一発で出来る方法ってありますか?
417デフォルトの名無しさん:2005/08/29(月) 10:56:05
一発?
正規表現で()を巧く使えばできるだろ
418デフォルトの名無しさん:2005/08/29(月) 11:05:05
例えば整数部5桁以内、小数部4桁以内なら
[1-9][0-9]{0,4}\.[1-9][0-9]{0,3}
とすればできるはずだけど
419デフォルトの名無しさん:2005/08/29(月) 11:58:45
>>418
0.0434とか拾えないぜ
あと必ず小数点が含まれているのかどうかとか、>416は条件を出し切れてないね
420デフォルトの名無しさん:2005/08/29(月) 14:59:38
>>415
うそ?
421414:2005/08/29(月) 15:18:16
>>415
方向性だけでも教えてくれませんか
422デフォルトの名無しさん:2005/08/29(月) 15:32:27
普通に、MouseDown MouseUpでできたが?
423414:2005/08/29(月) 15:45:53
error CS0117: 'System.Windows.Forms.MenuItem' に 'MouseDown'
の定義がありません。

とでますが……
424デフォルトの名無しさん:2005/08/29(月) 16:09:14
2.0使ってくれ。1.1環境は手元にねーから知らね。
425デフォルトの名無しさん:2005/08/29(月) 16:18:33
2.0でもMenuItemにMouseDownイベントなんてないぞ。
426デフォルトの名無しさん:2005/08/29(月) 16:26:51
ToolStripItemにはあるからそっちかね。

で、メニューってのはMainMenu? MenuItem?
MainMenu、つまりタイトルバーの下部分なら、フォームのWndProcで、WM_NCRBUTTONDOWN/UP/DBLCLKでwParamがHTMENUの時。
MenuItem、開いた後のメニューテーブルなら、同じくフォームのWndProcで、WM_MENURBUTTONUP辺りかな。
427414:2005/08/29(月) 16:47:01
>>426
右クリックでクリックの場所とハンドル取得できました。
ありがとうございました
428デフォルトの名無しさん:2005/08/29(月) 18:25:03
>>419
確かに・・・orz

[1-9][0-9]{0,4}(\.[0-9]{0.3}[1-9])?

これだとどうだろうか
429デフォルトの名無しさん:2005/08/29(月) 18:32:42
>>428
それだと0.なんとかが拾えない。
整数部を([1-9][0-9]{0,4}|0)にしないと。
あと1.0という表現を認めるとなると小数部も変わってくるな。まあ[1-9]の代わりに,の後ろを1増やすだけだが。
430デフォルトの名無しさん:2005/08/29(月) 18:42:35
>>367
C#の2005版でいつごろでるの?
431デフォルトの名無しさん:2005/08/29(月) 18:43:33
>>430
確か11月
432デフォルトの名無しさん:2005/08/29(月) 18:48:50
>>431
それじゃ今2003を買うのはハズレということか?
2003を安く買うのもありかな?
433デフォルトの名無しさん:2005/08/29(月) 19:34:58
リッチテキストボックスの内容を印刷する方法が分かりません。
ネットで検索とかしても分かりませんでした。
どうやれば印刷できるのですか?
434デフォルトの名無しさん:2005/08/29(月) 19:41:25
絶対調べてねーだろとしか思えないんだが……。
ttp://www.google.com/search?hl=ja&c2coff=1&q=richtextbox+%E5%8D%B0%E5%88%B7&lr=lang_ja
435デフォルトの名無しさん:2005/08/29(月) 19:54:26
HOWTOは読んでみたのですが、よく分からなかったのですよ
まだまだ初心者なもので・・・
436デフォルトの名無しさん:2005/08/29(月) 20:46:05
おいおまいら、コンストラクタ内で例外を発生させるのってどう思うよ?

個人的には気持ち悪いのだが。
437デフォルトの名無しさん:2005/08/29(月) 20:50:16
>>436
別にいい。。。
438デフォルトの名無しさん:2005/08/29(月) 21:02:57
>>436
そこで例外投げないとクラスができてしまうわけだが。
439デフォルトの名無しさん:2005/08/29(月) 21:05:35
クラスができちゃ駄目ー
440デフォルトの名無しさん:2005/08/29(月) 21:07:35
>>437-438
コンストラクタの中で例外発生させても安全なの?
C++だと御法度だったよね。
441デフォルトの名無しさん:2005/08/29(月) 21:13:02
>>440
俺もそう思ってなるべくやらないようにしてたが、
いかんせん、間違った引数渡されたおかげで
どうしても正常なクラスを作れない場合があるし。

それにMSのクラスの中にもコンストラクタから例外投げてるやつもいるし問題ないべ。
442デフォルトの名無しさん:2005/08/29(月) 21:22:37
>>440
Managedのありがたさを全身で受け取れ。
443デフォルトの名無しさん:2005/08/29(月) 21:23:05
>>441
ども、ありがとん。
444デフォルトの名無しさん:2005/08/29(月) 21:38:58
>>440
C++でデストラクタでは例外投げちゃ駄目ってのは、よく聞く話。
コンストラクタで例外投げるのはC++、C#、Java共にOK。
445デフォルトの名無しさん:2005/08/29(月) 21:47:21
>>440
最近はfunction-try-blockをちゃんとサポートしているコンパイラも増えてきているから、
ご法度と言うほどでもなくなっているように思う。
446デフォルトの名無しさん:2005/08/29(月) 23:06:08
画像の縮小について、
Graphics.ScaleTransform(float, float) ;
で縮小した画像が、イメージが劣化して醜くなってしまいます。

Windowsのペイントで同じ比率(50%)に縮小てみたところ、
ScaleTransformで縮小したものよりはきれいでした。
できるだけ綺麗なまま縮小したいのですが、
分かる方いらっしゃいますか?

447デフォルトの名無しさん:2005/08/29(月) 23:08:15
Grahpics.InterpolationMode
448デフォルトの名無しさん:2005/08/29(月) 23:38:12
>>447
ありがとうございます。
とりあえず
grf.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
とやって、なんとか綺麗な画像を得られました。
Modeにも色々あるのですね。これから試してみます。
449デフォルトの名無しさん:2005/08/30(火) 07:39:02
なあ、他人が書いたソースコード(ネットとか公開されてるやつ)をコピペして、
それをちょっと改造してプログラムを作った場合、
そのプログラムの著作権ってどうなるの?
アセンブリ情報のとこの著作権の欄に何て書こうか迷っているんだが
450デフォルトの名無しさん:2005/08/30(火) 07:45:53
>>449
気にしてるときりがないがw
向こうが要求してるところを除いて、特に書く必要はないと思ふ。
ヘルプとかリドミとかに参考サイトとしてURL挙げとけば良いんじゃないかな。
451デフォルトの名無しさん:2005/08/30(火) 11:31:35
9割方が他人のコードかのように読めちゃうんだけど
452デフォルトの名無しさん:2005/08/30(火) 14:31:50
>>449
コピペの量によるんじゃないか、APIの使い方程度のサンプルだったら問題ないと思う。
オリジナル性が認められる内容の引用なら著作権が発生するからそのサイトの方針しだい。
フリーウェアやオプソならその配布ルールに従う。
余談だけど、以前ソフトの著作権の裁判でここが類似していると指摘したところがSDK/DDKの
サンプルともそっくりだったって話があったのを思い出した。
453デフォルトの名無しさん:2005/08/30(火) 17:55:10
漢字入力を始めたときに飛んでくるWM_IME_STARTCOMPOSITIONなどを
監視して、以下のようなソフトを作りたいと思っています。
@ワード文書内において、
AIME入力、言い換えれば漢字入力を開始すると、
B入力された文字が確定されるまで、
C背景を薄いブルーにする、
というものです。

すでに私は、
ソリューションダイアログでWord.ObjectLibraryを参照するように設定することで、
@ワード文書に例えば文字列をinsertしたり、選択範囲を変更したりできるようになりました。
また、
自分のフォームに、テキストボックスから派生させたMyテキストボックスを
貼り付けて、そのMyテキストボックスに文字が入力されはじめたことを
ウィンドウメッセージとして取得できるようになりました。
具体的には、派生させたクラス(Myテキストボックス)のWndProcをOverrideして
m.MsgがWM_IME_STARTCOMPOSITIONかどうかを判定する機能を追加しました。

【質問】
しかしながら、Myテキストボックスでは「文字が入力されはじめたことを検知」する
機能を搭載することに成功したのですが、
ワード文書ではうまくいきません。とうかどうやるのかよくわかりません。
テキストボックスから、上記の機能を搭載したクラスを派生させるように、
例えば、Word.ApplicationやWord.Documentから派生クラスを用意して適宜同じように
WndProcをoverrideすればうまくいくでしょうか。
もっとも、Word.Applicationは、インターフェース型(?)ですが。

【質問2】
思いっきりすれ違いな予感もしますが、当方VisualC#2.0 beta2 , WindowsXPsp2,Word2000です。
よろしくお願いします。
454デフォルトの名無しさん:2005/08/30(火) 17:59:56
同じ板の中でマルチポストとは良い度胸だ。
回答まで貰ってるのに。
455デフォルトの名無しさん:2005/08/30(火) 19:36:39
XmlSerializerでUriクラスがシリアライズできないんですが、仕様ですか?
BinaryFormatterなどでは出来るんですが。

> System.InvalidOperationException: System.Uri
> に既定のパブリック コンストラクタが含まれていないため、シリアル化できません。

でもUriクラスをMSのサイトで見ると、[Serializable]とISerializableって書かれてるのに。。
456デフォルトの名無しさん:2005/08/30(火) 20:08:47
仕様だよ。
理由は例外メッセージの通り。
457デフォルトの名無しさん:2005/08/30(火) 21:14:04
>>456
そうですか。
仕方ないのでBinaryFormatterで我慢します。
レスサンクスコ!
458デフォルトの名無しさん:2005/08/30(火) 22:36:58
Drawing.Color もXMLシリアライズできないのは不便だな
459デフォルトの名無しさん:2005/08/30(火) 23:21:09
ColorTranslator.FromHtml使ってるわ
460デフォルトの名無しさん:2005/08/31(水) 16:57:05
PictureBoxに表示されてる画像のクリック時に
別のフォームでオリジナルサイズ表示したいのですが

Form frm = new Form();
frm.Size = picture.Image.Size;
frm.BackgroundImage = picture.Image;
frm.ShowDialog();

と書いても落ちてしまうんですよね
すでに表示してる画像を別のフォームで表示しようとしてるのがいけないのでしょうか・・・
461デフォルトの名無しさん:2005/08/31(水) 16:58:41
例外も書かずに、独り言かい?
462デフォルトの名無しさん:2005/08/31(水) 17:03:44
>>461
失礼しました
例外はShowした先のフォームで出るのですが

'System.OutOfMemoryException' のハンドルされていない例外が system.windows.forms.dll で発生しました。
追加情報 : メモリが不足しています

です。
メモリは512ありますし、普通にフォームを開くことは可能なので、画像が原因じゃないのかなと思っています。
なにか情報ありませんでしょうか?
463デフォルトの名無しさん:2005/08/31(水) 17:32:14
464416:2005/08/31(水) 17:36:21
>>416の正規表現の話です。詳しく説明します。
・先頭に+または-、または符号なし。
・符号は桁数に入れない。
・整数部または小数部のどちらかだけ省略可能。
・余分にゼロが入っていてもよし。
・10進表記。指数とかはなし。

たとえば4桁3桁なら以下の表現はセーフにしたいです。
-.123 / -1234. / -1234.000 / -0000.123

>>429だと、なんか桁数チェックが利いてないみたいです。
[0-9]{0,4}だと"12345"でもマッチしてしまいます。
あと"7F"みたいなのがOKになってしまいます。
465デフォルトの名無しさん:2005/08/31(水) 17:58:35
>>463
ありがとうございます
何がいけなかったのか良くわからないのですが
URLを参考に
Bitmap bmp = new Bitmap(picture.Image);
frm.Size = bmp.Size;
frm.BackgroundImage = bmp;
frm.ShowDialog();
で問題なく動きました

streamからpictureboxにimageをセットしてクローズしてたのですが
それが問題だったのでしょうか??
466デフォルトの名無しさん:2005/08/31(水) 18:08:37
>>464
小数点は入らない可能性もあるんだよな?
この場合整数部を持ってるかどうかで小数部の判定を分けるしかなさげだなー。
@"^[+-]?(?:[0-9]{1,4}(\.[0-9]{0,4})?|\.[0-9]{1,4})$"

無駄に複雑バージョン
@"^[+-]?(?<int>[0-9]{1,4})?(?(int)(\.[0-9]{0,4})?|\.[0-9]{1,4})$"
467デフォルトの名無しさん:2005/09/01(木) 21:35:36
IDE、というかMSDNのビューワーのことなんですが、どういう訳か
「.NET Framework クラス ライブラリ」のカテゴリ(検索結果のリストの「場所」の
列に「.NET Framework クラス ライブラリ」と表示されるグループ)のページが、
検索に一切引っかからなくなりました。

例えば、"form メンバ"で検索をかけると、以前はFormのメンバが乗っているページが
検索結果に出ていたのですが、これが出なくなりました。

もちろんフィルタ条件に(フィルタなし)を選択しても。

なにか解決法ご存知ないでしょうか?
MSDNのバージョンは2005 - Aprilです。
アンインストール/インストールは試しましたが変化なし。
468デフォルトの名無しさん:2005/09/02(金) 11:25:54
ブラウザコントロールでアドレスのファイルを読みに行くんじゃなくて
stringの変数を直接読むことってできないかな??
ページを生成して、保存する前にプレビューとかで使おうと思うんだけど
469デフォルトの名無しさん:2005/09/02(金) 11:30:10
そう言う場合は一旦about:blankにNavigateしてからDocument.writeを使うのが常道。
470デフォルトの名無しさん:2005/09/02(金) 12:37:03
>>469
ありがと、できたよ
一回保存するよりも楽だね
private void BrowserReload(){
//ブラウザコントロールに文字列から直接プレビュー表示
_previewData = CreatePreviewData();//プレビュー用HTMLを生成
object url = "about:blank";
object o = null;
this._browser.Navigate("about:blank", ref o, ref o, ref o, ref o);
}
private void browser_DocumentComplete(object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e) {
((mshtml.IHTMLDocument2)browser.Document).write(_previewData);

}
471デフォルトの名無しさん:2005/09/02(金) 12:44:51

object url = "about:blank";
は必要ないな
472デフォルトの名無しさん:2005/09/02(金) 21:20:05
それ系は結構サンプルあるから探してみるといいよ
473デフォルトの名無しさん:2005/09/03(土) 05:07:43
aspで質問。

グリッドのチェックボックスの全解除、全選択をしたいのですが
javascriptでグリッドのチェックボックスを舐めていく方法ってどうしたらいいのですか?
普通にdocument,grid.チェックボックスじゃ参照できないのですが・・・


サーバ側じゃなくてクライアント側でやりたいのですが。、


474デフォルトの名無しさん:2005/09/03(土) 09:39:27
HTMLでどう表現されるかを考えてみればすぐわかるでそ
475デフォルトの名無しさん:2005/09/03(土) 10:14:27
つスレ違い
476デフォルトの名無しさん:2005/09/03(土) 10:29:27
>>475
うぜー
スレ違いなんていわれて他で質問すると
マルチなんて言われる・・・
477デフォルトの名無しさん:2005/09/03(土) 10:35:10
いや一言「どこそこで聞いたんですがスレ違いと言われたので」と断れば誰もマルチだなんて言うかよ
元スレにも移動したことと移動先を書けば何の問題も無し
478デフォルトの名無しさん:2005/09/03(土) 10:36:26
>>473をよく読みなおせ。そしてここがなんのスレか考えろ。

ど う 見 て も ス レ 違 い だ
479デフォルトの名無しさん:2005/09/03(土) 10:39:00
C#で書いたアプリってショボのでも平気で20MB程度のメモリを
使うのはなぜ?
「Excelでも10MB位なのに、なんか下手な作り方してない?」
なんて言われちゃいました・・・
480デフォルトの名無しさん:2005/09/03(土) 10:41:21
「うるせーバーカお前にメモリの構造がわかるか!!」
って言っとけ
481デフォルトの名無しさん:2005/09/03(土) 10:42:30
C#で20MBなんて少ないほうだよ。
Windows Forms使ってるとね。

「定期的に最小化してください」って言っとけ
482デフォルトの名無しさん:2005/09/03(土) 10:42:40
C#を勉強したいと思っています。

Visual Studioの評価版って60日が過ぎても、再インストールすれば
もう1度使えるのですか??
483デフォルトの名無しさん:2005/09/03(土) 10:53:20
>>479
仮想マシンの上に乗っかっているから。
一定量のメモリを OS から貰って VM を構築し、その上でソフトを動かしてる。

……って思ってたけど合ってるのかなコレ


>>482
素直に買え。もしくは無料版があるからそれ使え
484デフォルトの名無しさん:2005/09/03(土) 11:02:28
>>483
無料版って評価版とどう違うの??
もしかして、試用期間がないの??
485デフォルトの名無しさん:2005/09/03(土) 11:04:04
VSなんてのは金持ちの使うもんだ 貧乏人はSDKとエディタ使っとけ
486デフォルトの名無しさん:2005/09/03(土) 11:06:04
ワレメ
487デフォルトの名無しさん:2005/09/03(土) 11:08:18
C言語での
int a[4][4];

これってC#の場合はどうするの?
488デフォルトの名無しさん:2005/09/03(土) 11:10:06
int[][] a = new int[4][4];
489デフォルトの名無しさん:2005/09/03(土) 11:11:02
int[,] a = new int[4, 4];

int[][] a = new int[4][];
for (int i = 0; i < a.Length; i++)
    a[i] = new int[4];

意味的には前者だがお薦めは後者だ。
490デフォルトの名無しさん:2005/09/03(土) 11:21:48
>>479
メモリは幻想だって何万回出ただろう。
http://www.itwriting.com/dotnetmem.php
491ふらっとスレ142:2005/09/03(土) 11:33:35
>>490
(´・∀・`)ヘー
私は≠479だけど。
492デフォルトの名無しさん:2005/09/03(土) 12:02:49
>>481
SetProcessWorkingSetSize を明に呼び出したほうがいいんじゃない(w
493デフォルトの名無しさん:2005/09/03(土) 13:56:28
Visual Studio2003Spokeを使ったC♯の質問なんですが
プログラムをデバックするときにVSでは引数を指定できないのでしょうか?
.NetSDKについてくるDbgCLRではできたんですが・・・。

それとVSでクラスを作成してクラスだけでデバッグなどはできないのでしょうか?
変数に値を代入してデバッグなどをしたいのですが。
494デフォルトの名無しさん:2005/09/03(土) 14:00:27
プロジェクトのプロパティに引数の項目あるだろ
後者は適当にMainメソッド書けば
495デフォルトの名無しさん:2005/09/03(土) 14:27:39
ちょっと確認したいのですが
C#では、ほかの人が作ったdllを自分のアプリでプログラム部品として利用する際

[DllImport("aaaaa.dll")]
public static extern uint bbbbb(uint a, uint b);

こんな感じに記述するだけで、Dll使えるようになるんですよね。
aaaaa.libファイルがあるのですが、C#ではlibファイルの統合開発環境での登録の設定はしなくても大丈夫でしょうか。
aaaaa.hファイルもC++だったら使うけどC#ではいらいないという理解であってますでしょうか。
496デフォルトの名無しさん:2005/09/03(土) 14:32:07
それがCで書かれたのならそうだな libは使えない hも使えない
497495:2005/09/03(土) 14:35:16
>>496
回答ありがとうございます。
dllファイルと一緒に入ってたlibファイルとhファイルを何かに使わなければいけないような不安にかられたのですっきりしました。
ちなみにそのdllファイルはC++でかかれてます。
498デフォルトの名無しさん:2005/09/04(日) 04:10:13
C#で書かれた商用アプリってある?
商用アプリの殆どがVC++で作られてる。

C#じゃ大したものできないのかな?
499デフォルトの名無しさん:2005/09/04(日) 04:15:18
まぁ、C#は2005が出れば終焉必至

C++/CLIがデファクトスタンダード最有力
500デフォルトの名無しさん:2005/09/04(日) 05:25:56
throw;
501デフォルトの名無しさん:2005/09/04(日) 05:54:09
リファクタリング機能がVC#2005だけに搭載されて、VC++2005にはなぜ無い?
502デフォルトの名無しさん:2005/09/04(日) 06:53:34
>>498
俺がいっぱい書いている。
503デフォルトの名無しさん:2005/09/04(日) 07:36:55
パッケージソフトを開発する言語に生産性は求められない
504デフォルトの名無しさん:2005/09/04(日) 09:27:13
ソースネクストの携帯電話メモリ編集ソフトが.NET Frameworkを要求するという噂を聞いた。
505デフォルトの名無しさん:2005/09/04(日) 10:48:18
うちは.NET系の受注が増えまくってるらしい。
506デフォルトの名無しさん:2005/09/04(日) 10:57:54
>>505
それが普通だと思うが。今更、Javaってこともないのでは。
507デフォルトの名無しさん:2005/09/04(日) 11:07:44
ありときりぎりす
.NETはまだ必須じゃないけど
必用になってから始めたら手遅れ
508デフォルトの名無しさん:2005/09/04(日) 11:08:34
ま、メインはASP.NETてことだな。
@ITの会議室とかでもWinFormの質問:ASP.NETの質問=1:2位だし。
509デフォルトの名無しさん:2005/09/04(日) 11:26:33
C#か知らんが
ttp://www.microsoft.com/japan/office/homestyle/prodinfo/default.mspx

これが.NET Frameworkが必要
510デフォルトの名無しさん:2005/09/04(日) 12:37:26
>>509
すまんが、日本語おかしくないか。
511デフォルトの名無しさん:2005/09/04(日) 13:31:12
C言語の
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
説明
fread 関数は stream ポインタで指定されたストリームから nmemb 個のデータを読み込み、 ptr で与えられた場所に格納する。個々のデータは size バイトの長さを持つ。
ファイル位置指示子を読み込んだデータバイト分進める。

これと同じことをC#に書き換えたいのですが
データバイト分進めたり、nmemb個のデータを読み込むといったことは、なんというクラスのメソッドを使えば簡単にできるでしょうか。

512デフォルトの名無しさん:2005/09/04(日) 13:37:18
StreamクラスのReadメソッド
ファイルならStreamから派生したFileStreamクラス
あるいはそれを元に作ったBinaryReaderオブジェクトの各種メソッド

そういえばReadInt32Arrayとかは無いな。不便を覚えたことはないが。
513511:2005/09/04(日) 13:38:57
>>512
ありがとうございます。それらのメソッド使ってやってみます。
514taka:2005/09/04(日) 15:21:37
VS.NET2003をインストールしたいんですが手元に
どのソフトがあればインストールできるかわかりますか?


515デフォルトの名無しさん:2005/09/04(日) 15:26:13
VS.NET 2003があればインストールできるな
516taka:2005/09/04(日) 15:37:00
僕が今もっているのは
VS.NET2003 Enterprise Dveloper,Disc1 Disc2
なんですけど他に必要なのってなんですか??
インストールできないんですよ…
517デフォルトの名無しさん:2005/09/04(日) 15:45:46
3がないとワレれないよ。
518taka:2005/09/04(日) 15:47:14
何枚必要なんですか?
519デフォルトの名無しさん:2005/09/04(日) 15:50:27
6枚ってかスレ違い消えろ
520511:2005/09/04(日) 15:56:10
今、
short[] ptr = new short[nmemb];
uint dwRead = 0;

while((dwRead = fread(ptr, sizeof(SHORT), nmemb, pFileIn)) > 0){}

ファイルから、sizeof(SHORT)バイトのデータnmemb個をptrに格納し、ファイルの終わりまで繰り返すという
C言語のコードをC#に書き直すということをやっているのですが、スマートなコードがかけなくて困っています。

C#で以下のように書き直しました。

FileStream fs = new FileStream("test.wav", FileMode.Open);
Binary br = new BinaryReader(fs);

br.ReadBytes(40); //40バイト飛ばす

while((ptr = br.ReadBytes(2)) > 0){}//short配列ptrに2バイトデータを格納の処理

このように書くと、>はshortとintを比べられない、byte[]をshort[]に変換できない。とエラーが出るし
nmemb個入れるという作業ができません。

521続きです:2005/09/04(日) 15:56:42
while(nmemb > 0)
{
ptr = br.ReadBytes(2);
nmemb--;
}
このように書くと、nmemb個入れれますが、bute[]をshort[]に変換できないというエラーは相変わらずです。

shortは2バイトだから2バイト入れようと思えば入れれるだろうと考えたのですが、エラーが出ます。
どうにかCのコードのように、nmemb個をptrに入れることと、ファイルの終了を感知する式を同時にwhile()に入れられるような
スマートなC#の書き方があれば助言いただけるとうれしいです。
522デフォルトの名無しさん:2005/09/04(日) 16:07:44
型というものをもっと意識しろと。
ReadInt16使えばいいじゃん。
523511:2005/09/04(日) 16:11:43
>>522
アドバイスありがとうございます。
ちょうど2バイトずつ読み込める関数があるんですね。
ReadInt16を使って書き直してみます。
524デフォルトの名無しさん:2005/09/04(日) 17:45:24
>>516
shareで
(アプリ) Microsoft VisualStudio.NET 2003 Professional 日本語版 CD6枚組.ccd+rr.rar
を拾えるぞ
2.7GB程度
俺も無論拾った。
あんなものに数万円はボッタ1確
525デフォルトの名無しさん:2005/09/04(日) 17:51:17
通報しました(・∀・)
526デフォルトの名無しさん:2005/09/04(日) 17:55:01
No way you can stop me!
527デフォルトの名無しさん:2005/09/04(日) 17:57:47
業務で使ってるとしたらアフォだな
528デフォルトの名無しさん:2005/09/04(日) 18:49:05
PictureBox1からPictureBox2へ
読み込んだ画像の一部を転送するプログラムをBitBltで作成しているのですが、
このとき転送先、転送元のハンドルの取得方法が分かりません。
教えてください。
Picturebox1.Handleとやってもダメでした。
529デフォルトの名無しさん:2005/09/04(日) 19:30:51
ハンドルはハンドルでもデバイスコンテキストのハンドルだろ。
GraphicsつくってGetHdcすれ。ReleaseHdcも忘れずにな。
でもなんでGraphics.DrawImageじゃ駄目なんだ?
530デフォルトの名無しさん:2005/09/04(日) 19:48:29
>>524
1確ってなんですか?
新手の2ちゃん語?
531デフォルトの名無しさん:2005/09/04(日) 21:01:02
C#って、ANSIだISOだで標準化されないのかな?
MSのWindowsだけのための言語で、どうしても勉強する気になれん。
532デフォルトの名無しさん:2005/09/04(日) 21:02:59
>>531
プギャー(AAry
533デフォルトの名無しさん:2005/09/04(日) 21:04:47
ローカルのHTMLファイルを表示するツールです。
作ったPCでは問題なく動くのですが、別PCではHtmlが表示しません。
どなたか動作確認して貰えないでしょうか。

http://49uper.com:8080/html/img-s/77058.zip
534デフォルトの名無しさん:2005/09/04(日) 21:11:39
>>531
もうされてますが・・・
535デフォルトの名無しさん:2005/09/04(日) 21:13:14
>>531
ECMA と JIS で標準化されてるハズ〜
某言語と違ってグローバルな言語だと主張したいのか、ECMA への登録は速かった
536デフォルトの名無しさん:2005/09/04(日) 21:20:40
>>533
単に表示されないだけなのか何らかの例外は吐かないのか
Microsoft.mshtml.dllは対象のPCに入っているのか? 
537デフォルトの名無しさん:2005/09/04(日) 21:29:00
HTMLが表示しないってのはボタンを押したら左にスクロールバーが出るのですが
何も表示せず真っ白けなんです。

>>536
メインプログラムの方でtry-catchを付けてみても何も引っかからなかったんです。
mshtml.dllはSystem32に入っています。
試しに実行ファイルと同じフォルダに入れてみても結果は同じでした。
538デフォルトの名無しさん:2005/09/04(日) 21:31:37
Microsoft.mshtml.dllでググれ。
それが原因だから。
539デフォルトの名無しさん:2005/09/04(日) 21:38:57
>>538
バッチリその通りでした。
と言っても「C:\Program Files\SharpDevelop\bin」に入ってたんですけどね・・・。
実行ファイルと同じフォルダに入れたらちゃんと表示するようになりました。

ありがとうございました。
540デフォルトの名無しさん:2005/09/04(日) 22:37:31
code projectから、C#のサンプルコードをダウンしたのですが
フォルダの中身は、C#(***.cs)のファイルいくつかと、Makeファイルと、Manifestファイルが入ってました。
プロジェクトもソリューションも入っていません。

こういった場合、Makeとかやったことないのですが、makeコマンドとかをいじったりすれば実行ファイルを作ることができる
ということでしょうか。
541デフォルトの名無しさん:2005/09/04(日) 22:40:57
1ソリューションに7つのプロジェクトがあるんですが、
そのうちの一つのプロジェクトをビルドしようとすると
一々マウスでプロジェクトを右クリックしてビルドしか
ないの?

マジ使いづれー > VS
542デフォルトの名無しさん:2005/09/04(日) 22:45:01
>>540
nmake Makeファイル名
で。
543デフォルトの名無しさん:2005/09/04(日) 22:46:17
お前ら、クリック以外の作業は全部面倒なのか?
544デフォルトの名無しさん:2005/09/04(日) 22:46:58
>>531
標準化はされているが、強くWindowsOSのアーキテクチャに依存している。
Windows以外のプラットフォームで満足に動かされたら、MSも商売上がったりだろ?
545540:2005/09/04(日) 22:47:49
>>542
ありがとうございます。makeファイルとかでぐぐったけど。説明が長すぎて、結局どうしたらいいのかわからなかったんです。
546デフォルトの名無しさん:2005/09/04(日) 22:51:53
>>544
別にC#はWindowsとはまるで無関係だろ?
.NETの実装とごっちゃにするのはいけない
.NETもWinFormのほか幾つかを除けばそれなりにプラットフォーム中立だしな
547540:2005/09/04(日) 22:55:40
コマンドプロンプトから
nmake makefile.mak

と打ったのですが、
nmakeは、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。

と出てしまいます。
試しに
make makefile.mak
と打ってみましたが、同じ言葉が返ってきます。

何かmakeコマンドを設定する必要があるのでしょうか。
548デフォルトの名無しさん:2005/09/04(日) 22:57:47
>>546
じゃあ、おまえはCとUNIXも無関係だと?
549デフォルトの名無しさん:2005/09/04(日) 22:57:48
パスが通ってないだけちゃうんかと・・・・・・・
550デフォルトの名無しさん:2005/09/04(日) 22:58:11
>>547
pathを通す
551デフォルトの名無しさん:2005/09/04(日) 22:58:19
>>548
無関係ちゃうんかと・・・・・・・
552デフォルトの名無しさん:2005/09/04(日) 22:58:42
>>548
無関係
553540:2005/09/04(日) 23:00:40
>>549-550
なるほど、パスが通ってないのですか。makeコマンドにパスが通るようにやってみます。
どうもありがとうございました。
554デフォルトの名無しさん:2005/09/04(日) 23:01:41
どこにパスを通せばいいか聞いてくるに違いない
555デフォルトの名無しさん:2005/09/04(日) 23:02:03
>>553
makeなんてないし。
とりあえずPCの中に nmake.exe があるか検索。
556デフォルトの名無しさん:2005/09/04(日) 23:05:18
パスを通すと言うこと自体分かってなかったりして……まさかな
557デフォルトの名無しさん:2005/09/04(日) 23:10:15
>>554
これに1票追加
558540:2005/09/04(日) 23:10:19
>>554
そのとおりかもです。「パスを通 make」で一生懸命ぐぐってました。

>>555
検索して発見しました。
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin
ここにありました。

>>556
そのとおりです。具具って見たら

特に問題なければC:\Windowsに入れてしまえばよいですが、
AUTOEXEC.BATに
SET PATH="%PATH%";"フォルダ名"
という行を追加すれば任意のフォルダにパスを通すことができます。

と書いてあるので、この方法でやってみます。

どうも皆さんアドバイスありがとうございます。助かりました。
559デフォルトの名無しさん:2005/09/04(日) 23:11:08
MSBuild.exe は結構便利だと思った
560デフォルトの名無しさん:2005/09/04(日) 23:12:21
>>558
autoexec.bat ってことは Win9x か?
NT系では別方法だぞ
561デフォルトの名無しさん:2005/09/04(日) 23:13:35
Win9xではVSもSDKも入れられない罠
562デフォルトの名無しさん:2005/09/04(日) 23:15:14
パスの次に、LIB、INCLUDE他必要な環境変数を聞いてくるに違いない。
563デフォルトの名無しさん:2005/09/04(日) 23:15:53
>>533は割れ
564540:2005/09/04(日) 23:17:27
>>560
OSはXPです。ということはパスの通し方の別方法なのですね。
今日はもう遅いので明日ぐぐって調べることにします。

>>562
何かほかにまだ設定しないとmakeできないのですか。面倒ですね。
まあ、とりあえず、明日やってみて、できなかったらまた考えるということで今日はもう眠ります。

どうも皆さんアドバイスありがとうございました。
565デフォルトの名無しさん:2005/09/04(日) 23:23:08
つか普通にスタートメニュー>全てのプログラムの中のどっかにVisualStudio .NETコマンドプロンプトがあるだろ、と言う件
566デフォルトの名無しさん:2005/09/04(日) 23:35:55
>>563
usoiuna
dokodewakarunosa?
567デフォルトの名無しさん:2005/09/04(日) 23:47:49
XXXなんてディレクトリ作っている時点で変な奴だな

D:\XXX\works\Visual C# .net\WindowsApplication2\
568デフォルトの名無しさん:2005/09/05(月) 14:59:11
>>533じゃないけど普通ソースを配布するときはどのファイルを付ければいいの?
例えばフォームが一つだけのアプリだったらそのフォームのCSファイルだけで良いのかな
569デフォルトの名無しさん:2005/09/05(月) 15:07:59
VSでやってるんだったらそのソリューションのフォルダまるごと
コマンドラインでやるなら.resxを一旦resgenして/resに含めるとかしないといかんし
570デフォルトの名無しさん:2005/09/05(月) 15:46:29
asp.netでajax.netを使ってるんだけど、
ajaxで動的にコンボボックスを生成した後に
asp.netのボタンクリックなどのイベントハンドラが発動すると、
ajaxで変更した部分が初期状態(コンボボックスを生成する前)に戻っちゃうんだけど、
何か回避策ありませんか・・・?
571デフォルトの名無しさん:2005/09/05(月) 17:06:49
>>569
レスありがとうございます。
VSを使っているのですが、>>533みたいな添付の仕方で良いんですね。
って事は>>567みたいにディレクトリが知られてしまうのは仕方がないって事ですか・・・。
572デフォルトの名無しさん:2005/09/05(月) 17:18:17
>>571
ソリューションファイルがあるところに隠しファイルがある
その隠しファイルには検索履歴とかも保存されているんで
消しておくのが吉
573デフォルトの名無しさん:2005/09/05(月) 17:51:15
C#で簡単な暗号化ソフトを作りたいのですが、
暗号化するためのメソッドとかはデフォで用意されてませんか?
APIとかでもOKです
574573:2005/09/05(月) 17:53:44
途中で送信してしまったので……
以下続き

暗号化する対象は様々な種類のファイルです
バイト単位(或いはビット単位)で暗号化したいです
アセンブリとして公開されているものでも構いません
基本的に文系なので自分で暗号方式を考えるのは不可能に近いです
なので既存のものを部分的に利用したいと考えています
575デフォルトの名無しさん:2005/09/05(月) 18:01:33
>>571
*.suoファイルを消しとけばいいのでしょうか。
で、>>533はそれも添付してしまったからディレクトリが分かってしまったと言うことですね。
576デフォルトの名無しさん:2005/09/05(月) 18:01:39
System.Security.Cryptography 名前空間
577デフォルトの名無しさん:2005/09/05(月) 19:30:10
>>576
大感謝っす!
578デフォルトの名無しさん:2005/09/05(月) 19:40:15
あのさ、ふと思ったんだけどさ、
標準ライブラリとかでキー指定して暗号化するじゃん
これってさ、何かあったときのためにさ、
すぐに復号してしまえるような仕組みが組み込まれてないか不安になるんだよね
まあ、暗号化した後にXORで一部ビット反転とか簡単な暗号化をやってしまえば良いんだけどさ
579デフォルトの名無しさん:2005/09/05(月) 19:44:07
何かあった時って何よw
そのレベルで心配するのならプロプライエタリなもんは使えないことになるぜ
580デフォルトの名無しさん:2005/09/05(月) 19:47:24
>>578
チラシの裏にでもかいてろカス
.NETのプログラムは逆コンパイルできるしそもそも.NETの標準ライブラリは
ただのWIN32APIのラッパーだから暗号ならcrypt.dllあたりを逆汗すればいいだけ
581デフォルトの名無しさん:2005/09/05(月) 19:49:16
>>579
何かあった時ってのはだな、
犯罪の証拠となるファイルとかそういうのを犯人が暗号化してさ、
それでキーを忘れたとか言って煙に巻こうとするような時だよ
582デフォルトの名無しさん:2005/09/05(月) 19:55:22
絶対に自分しか復号できない暗号化方式って無いかな?
将来のスーパーコンピュータでの力ずくの復号とかは考えずに
583デフォルトの名無しさん:2005/09/05(月) 20:11:17
>>582
絶対って何だろうな…
584デフォルトの名無しさん:2005/09/05(月) 20:14:31
日々の胸中を本音で書いた秘密の日記ファイルとかさ、
そういったのは確実に暗号化して隠したいよな
585デフォルトの名無しさん:2005/09/05(月) 20:16:11
>>582
復号の仕方を知っているのが自分だけという状況にする。(公開鍵暗号方式の基本だが)
ファイルを読み込むプログラムを配布するようだとそもそも無理ぽ。
586デフォルトの名無しさん:2005/09/05(月) 20:18:32
>>585
プログラムは非公開
ってか、キー値さえばれなきゃ大丈夫なんじゃないの?
587デフォルトの名無しさん:2005/09/05(月) 20:23:09
>>586
まあ世の中に絶対は無いので、絶対とは言わんが。
あとは処理速度と強度のバランスを調整しつつ実装すればよかろ。
588デフォルトの名無しさん:2005/09/05(月) 20:27:37
取りあえずそこらの奴が考えた非公開アルゴリズムよりは公開・利用されているアルゴリズム使った方が安全度は高いと思う今日この頃
589デフォルトの名無しさん:2005/09/05(月) 20:31:17
>>588
確かにそうだな
多くのエンジニアの目に触れる訳だからな
ヘタなものは出さないだろ
590デフォルトの名無しさん:2005/09/05(月) 20:35:13
現在C#でWebサービスを作成しはじめたのですが
公開したメソッドにアクセスしたクライアントのIPアドレスをログとして残そうと思っています
Webサービス側でクライアントのIPアドレスを取得するにはどのプロパティ?メソッドを
使えばすれば良いのでしょうか?
591デフォルトの名無しさん:2005/09/05(月) 20:43:10
592デフォルトの名無しさん:2005/09/05(月) 20:55:38
.NETで作ったアプリは逆コンパイルができるそうですが
ということは、C#でシェアウェアのアプリを作るというのはそもそも向いてないということなのでしょうか。
593デフォルトの名無しさん:2005/09/05(月) 21:05:44
そういう質問する奴には向いてないのでしょう
594デフォルトの名無しさん:2005/09/05(月) 21:10:04
>>592
難読化ツールを使っておくと、複雑なものほどネイティブの逆汗よりも面倒になる。
595592:2005/09/05(月) 21:16:04
>>594
アドバイスありがとうございます。
ネイティブよりも面倒になるのなら逆コンパイルを心配することもないようですね。

.NET逆コンパイラとコードを難読化するDotfuscator
http://www.atmarkit.co.jp/fdotnet/tools/dotfuscator/dotfuscator_03.html

上記サイトによると難読化するDotfuscatorがVS2003についてるそうなのでこれでやってみようと思います。
596デフォルトの名無しさん:2005/09/05(月) 21:16:54
クラスウィザードでクラスを追加しようとすると
「エラーを特定できません」というダイアログが出て、
それを閉じるとクラスウィザードが終了するようになった。
ほかのプロジェクトに切り替えても変わらず。
「既存項目の追加」で追加することは可能。
こういう症状の出たことある人っている?
環境はVC#2003, XP Pro SP2。
597デフォルトの名無しさん:2005/09/05(月) 21:21:27
国家機密とか価値の高い企業秘密とかじゃなければ
たとえ簡単な暗号化しかしてなくても
「暗号化してあります」と書いておくだけでも十分有効
598590:2005/09/05(月) 21:24:04
>>591
有り難うございました
599デフォルトの名無しさん:2005/09/06(火) 00:17:44
シェアで公開できるようなアプリはC#で作ることは不可能。

結局VC+++MFCしかないと思う


くだなねー突っ込みがきそうw
600デフォルトの名無しさん:2005/09/06(火) 00:33:54
throw;
601デフォルトの名無しさん:2005/09/06(火) 00:35:44
602デフォルトの名無しさん:2005/09/06(火) 01:52:19
C++/CLIでC#はお役ご免になりそうな勢いですよね
せっかく勉強したのにちょっと残念
603デフォルトの名無しさん:2005/09/06(火) 02:10:02
throw;
604デフォルトの名無しさん:2005/09/06(火) 04:23:53
>>602
@ITの読みすぎ
605デフォルトの名無しさん:2005/09/06(火) 05:22:32
「MSはC++を見捨ててません!」って宣伝してなかったか?
もう過去の資産扱いだと思うんだが
606デフォルトの名無しさん:2005/09/06(火) 06:01:00
ネイティブAPI直接呼び出しとかメモリ管理つかえんとC++使う甲斐がないよな
マネージドC++って使われてんのかな?
607デフォルトの名無しさん:2005/09/06(火) 11:12:14
test.wavの.wavを削除したいのですが

"test.wav".TrimEnd(".wav");

としたいのですが、引数はcharの配列でないとだめみたいでうまく.wavを削除できません。
後ろから4文字削除したいのですがどのように記述すればできるでしょうか。
608デフォルトの名無しさん:2005/09/06(火) 11:15:02
String.SubstringとかRegex.Replaceとか
609607:2005/09/06(火) 11:18:47
>>608
String.Replace("oldword", "newword");
でできました。
どうもありがとうございました。
610デフォルトの名無しさん:2005/09/06(火) 11:20:16
test.wav.gz とかはどうするんだろう
611デフォルトの名無しさん:2005/09/06(火) 11:25:36
.wavを取り除きたいのか、後ろの4文字を取り除きたいのか、拡張子を取り除きたいのか
612デフォルトの名無しさん:2005/09/06(火) 11:35:30
.emacs とかはどうなっちゃうんだろう
613デフォルトの名無しさん:2005/09/06(火) 11:42:10
なんでわざわざ敢えて608で出さなかったものを使うんだろうw
614607:2005/09/06(火) 12:48:46
>>610
アプリの処理の流れ上、test.wav.gz というファイルは処理しないようになってるので大丈夫です。

>>611
拡張子を取り除きたいです。
ただこの場合、.wavしかありえないので、String.Replaceで十分満たせます。

>>613
"test.wav". と.を押してみたら、Replaceが出てきたので、これも使えるなと思い。
使ってみました。
615デフォルトの名無しさん:2005/09/06(火) 12:57:07
test.wav.wavなんて名前でも普通に存在しうるんだが
616607:2005/09/06(火) 13:16:30
>>615
もっともなご指摘ありがとうございます。
そのようなファイル名をつけようと思えばつけれますね。

そういった名前のファイルだと、String.Replaceでは対応しきれませんね。
やっぱり末尾から4文字削除するというのが一番汎用性がありそうですね。
末尾から4文字取り除くのにぴったりのメソッドとかないでしょうか。
617607:2005/09/06(火) 13:23:18
"test.wav".Remove("test.wav".Length - 4, 4)

で末尾から4文字削除できました。
皆さんアドバイスどうもありがとうございました。
618デフォルトの名無しさん:2005/09/06(火) 13:23:23
>>616
System.IO.Path.GetFileNameWithoutExtension
619デフォルトの名無しさん:2005/09/06(火) 13:23:39
>>616
すでに>>608 で出てるけど・・・
620デフォルトの名無しさん:2005/09/06(火) 13:23:57
うがっ。。。
621607:2005/09/06(火) 13:29:43
>>618
これが一番どの拡張子にも対応できて汎用性がありますね。
便利なメソッドを教えていただいてどうもありがとうございます。

>>619
String.SubstringやRegex.Replaceとかもいじれば同じような処理ができるようですね。
案外いろんなメソッドで実現できることだったのですね。
これらのメソッドも参考にします。
622デフォルトの名無しさん:2005/09/06(火) 15:09:46
Pathクラスは便利なんだからもっと使ってやろうぜ。
623デフォルトの名無しさん:2005/09/06(火) 15:14:39
BitArrayクラスは使い所が分からないぜ
624デフォルトの名無しさん:2005/09/06(火) 15:14:48
test.wav.wav.wav.wavとかだったらどうすんの?
625デフォルトの名無しさん:2005/09/06(火) 15:21:00
何を言いたいの?
626デフォルトの名無しさん:2005/09/06(火) 15:22:40
そんな名前つける奴が悪い
627デフォルトの名無しさん:2005/09/06(火) 15:43:28
拡張子を削除したいならもう結論は出てるから、
そんな例を出しても無意味
628デフォルトの名無しさん:2005/09/06(火) 18:16:23
C#で簡単なゲームを作りたいのですが、参考になるゲームの
ソースコードが公開されているHPがありましたら教えて下さい。
629デフォルトの名無しさん:2005/09/06(火) 18:23:51
素晴らしく抽象的だな
630デフォルトの名無しさん:2005/09/06(火) 18:26:19
ソースは抽象的なほど良い
631デフォルトの名無しさん:2005/09/06(火) 18:33:07
質問は具体的なほど良い。
632デフォルトの名無しさん:2005/09/06(火) 19:02:06
>>628
DigiPen Institute Of Technology
MSDN Webcast Archive Video Game Development Learn to Write C# the Fun Way
http://www.digipen.edu/webcast/
633デフォルトの名無しさん:2005/09/06(火) 19:27:10
>>629-631
この流れに妙に感動した俺がいる。疲れてるのかな・・・。
634デフォルトの名無しさん:2005/09/06(火) 19:37:24
ADO.NET(System.Data.SqlClient)でレコードを追加するとき、
キーがダブっているとSqlExceptionが出るのでcatchするのですが、
この例外がPK違反かどうかというのはどこを見ればよいんでしょう?
Number? ErrorsのいずれかのNumber? それ以外?
Numberだとしたら、何番が何とか言うのはまさかcatch内で定数
べた打ち判断ですか?
PK違反だったらキーを付け直してリトライしたいです。
635デフォルトの名無しさん:2005/09/06(火) 19:42:10
Numberでヘルプ見たらmaster.dbo.sysmessages の値だと
書いてありました。これって不変なんでしょうか。
636デフォルトの名無しさん:2005/09/06(火) 19:53:40
SqlClientつーことは少なくともSQL Server限定やね。
俺が以前実装したときはNumberが2601か2627の時はユニーク制約違反と
みなすようなベタなコーディングをした。
特にお勧めはしないが。気になるならまあ具体的な数値は設定ファイルか何かで
持っておけば。

ユニーク制約違反かどうかを知りたいアプリ的に知りたいケースって
多いのに、一般的で移植性の高い方法は無いんだよな。
637デフォルトの名無しさん:2005/09/06(火) 20:07:30
私もADO.NETでOleDbを使ってるんだけど
OleDbException捕まえてErrorCodeでベタうち
なんか良い方法があれば良いんだけどね
638デフォルトの名無しさん:2005/09/06(火) 20:12:47
SQL Server限定ならともかくOLEDBではどうしようもないんじゃないか流石に
639デフォルトの名無しさん:2005/09/06(火) 20:16:25
C#の配列は最大どのくらいのサイズまで可能ですか?
つまり、

byte[] b = new byte[*];

で、 * の場所に入れれる最大数は何ですか?
1億は可能ですか?
640デフォルトの名無しさん:2005/09/06(火) 20:20:03
メモリが許す限り
一応の制限として2GB前後でなんかの壁があったような気がする
641デフォルトの名無しさん:2005/09/06(火) 20:21:26
LongLength があるから、long まで OK のはず
つまり 9223372036854775808 まで OK

多分、その前に OutOfMemoryException 出るけど
642デフォルトの名無しさん:2005/09/06(火) 20:24:13
ごめん。long の最大値が 1 大きかった
643デフォルトの名無しさん:2005/09/06(火) 20:29:44
longまでOKだろうけど、IndexOfとかはintを返すよなぁ……
644デフォルトの名無しさん:2005/09/06(火) 20:29:53
>>640-642
ありがとうございます!
645デフォルトの名無しさん:2005/09/06(火) 20:38:50
確認したら死ぬほど違ってたよ
new byte[] の [] 内に入る値は int みたいだ
646デフォルトの名無しさん:2005/09/06(火) 20:50:17
MSIL的には、配列型はnatual int == アンマネージドポインタ のサイズでやりとりするようだから、プラットフォームに因るようだが。
System.Arrayの制限としてはInt32.MaxValueが上限っぽいねー。
647デフォルトの名無しさん:2005/09/07(水) 01:40:37
>>645
longの値も普通に入るみたいだけど。
手元のメモリではint.MaxValue/3くらいまでが限界でしたが。

>>641
2次元配列とかにしたらintでもLongLengthが必要になる状況が起こりうる気がする。
648デフォルトの名無しさん:2005/09/07(水) 09:34:12
>>636
やっぱり数字で判断ですか。SQL Server限定なので
その数字参考にします。さんくす
649デフォルトの名無しさん:2005/09/07(水) 12:52:41
>>647
new byte[3000000000L]; だと OverflowException 出たのよ
650デフォルトの名無しさん:2005/09/07(水) 12:55:21
>>649
持ってたら64bit環境でやってみてくれないか (>>646)
651デフォルトの名無しさん:2005/09/07(水) 14:02:09
静的コンストラクタっていつ呼ばれるんでしょうか。
ヘルプには必要になったらすぐに呼ばれるようなことが書いてありますが
下のクラスのFooを呼んでもNameを呼んでもコンストラクタが
呼ばれません。
あとこれとは別に、静的コンストラクタを含むクラスを継承したら、
派生クラスの静的メンバを呼んでるのに基底クラスの静的
コンストラクタしか呼ばれなかったりしています。

  public class ClassA
  {
    static ClassA()
    {
      Debug.WriteLine("ClassA()");
    }

    public static string Name
    {
      get
      {
        return "ClassA";
      }
    }

    public static void Foo()
    {
      Debug.WriteLine("Foo()");
    }
  }
652デフォルトの名無しさん:2005/09/07(水) 14:15:15
>>651
> 静的コンストラクタっていつ呼ばれるんでしょうか。

そのクラスが初めて使われるとき。

> 下のクラスのFooを呼んでもNameを呼んでもコンストラクタが呼ばれません。

呼ばれてるよ?

> あとこれとは別に、静的コンストラクタを含むクラスを継承したら、
> 派生クラスの静的メンバを呼んでるのに基底クラスの静的
> コンストラクタしか呼ばれなかったりしています。

呼んでるのは基底クラスの静的メンバであって派生クラスとは何の関係もないから。
//個人的には"派生クラス.基底クラスの静的メンバ"って表記は分かりにくいので使いたくない。
653デフォルトの名無しさん:2005/09/07(水) 15:09:31
>>652
>呼ばれてるよ?
呼ばれてました。勘違いですスマソ
なんかステップ実行してもとまってくれないみたいで。

>何の関係もないから
ああ つまりたとえばClassAを継承してClassBを作ったとして
ClassB.Foo()って書いても、実行するのはClassA.Foo()だから
ClassBのメンバを参照したことにならないと。なろふど。。。
同じ名前のnewを作って委譲みたいなことしないとだめか。
ちょっと設計みなおしますorz
654デフォルトの名無しさん:2005/09/07(水) 15:57:13
>>653
> 同じ名前のnewを作って委譲
隠蔽な。

つか静的コンストラクタの呼ばれ方に依存するコードってどんなんだ?
655デフォルトの名無しさん:2005/09/07(水) 20:12:50
>>648
スレ違いなレスだが俺はINSERTの前はCOUNTで確認取る。
どの言語でもこれが普通だと思ってるが。
面倒かもしれんが、catchに色々書くぐらいなら同じじゃない?
まあCOUNTからINSERTの間に割り込まれる可能性はあるんだけど、それはエラーとして扱ってる。
そういうタイミングが頻繁に起こりえるシステムなら間違ってるけどね。
656デフォルトの名無しさん:2005/09/07(水) 20:58:36
ファイル圧縮/解凍用のライブラリってどこかにありませんか?
圧縮形式はZIPでも何でも結構です
今、自分専用のツールを作りながらC#の勉強をしているので
657デフォルトの名無しさん:2005/09/07(水) 21:04:32
探せよ
だいたいNativeCLRでの解凍ツールは少ないというか遅くて意味がない
zlibと7zipのホームページにそれぞれdllラッパーした.NET用のライブラリがある
658デフォルトの名無しさん:2005/09/07(水) 21:07:27
gzipとあとなんかのストリームが標準で付いてるね
659デフォルトの名無しさん:2005/09/07(水) 21:08:13
>>657
ありがとうござい
660デフォルトの名無しさん:2005/09/07(水) 23:10:11
遅レスだけど、秘密日記の暗号化ならまず破られないよ。
自作するかどっかから拾ってきたランダム関数使って、ランダムシードをkeyにxor。
暗号化されたファイルは乱数列にしか見えないし、
暗号複合プログラムはどっかのフォルダに隠蔽すればいい。
661デフォルトの名無しさん:2005/09/07(水) 23:26:50
マネージコードからアンマネージDLLの呼び出しに関する質問です。
アンマネージDLLにコールバック関数を指定する関数があって、
マネージコードからその関数にデリゲートを渡しているのですが、
初回だけデリゲートが呼ばれて、その後まったく呼ばれなくて困っています。

アンマネージDLL(ソースコード無し)を使ったWin32のサンプルコードは完全に動作しています。
ソースコードはだいたい以下のような感じです。
マネージコードからアンマネージDLLを呼び出すとアンマネージDLLでスレッドが起動できないとか、
なにか特別なルールがあるのでしょうか?アドバイスお願いします。

public delegate void CallBack();

[DllImport("CallBack.dll")]
public static extern void SetCallBack(CallBack cb);

-------------

public void Main()
{
CallBack cb = new CallBack(call_back);
SetCallBack(cb);

while (true)
{
Thread.Sleep(100);
}
}

public static void call_back()
{
DoSomething();
}
662デフォルトの名無しさん:2005/09/07(水) 23:27:32
ウィンドウをフローティングさせる機能を実現するためにはどのようにすればいいのでしょうか?
(OpenJaneのアンカー’>>’ポップアップ機能みたいな)

Formを作ってポップアップウィンドウを表示させると、ポップアップウィンドウのほうに
フォーカスが移ってしまうのですが
どなたか実現方法をご存知の方いませんか?

例 メインフォーム上のLinkLabel llにカーソルがいったときにポップアップするようなコード
LinkLabel ll = new LinkLabel();
ll.MouseHover += new EventHandler(ll_MouseHover);

//
private void ll_MouseHover(object sender, EventArgs e){
FloatingForm ff = new FloatingForm();//< NoBorderなポップアップ用の自作継承Form
ff.Location = MousePosition;
ff.Show();
//この時点でメインフォームのフォーカスがポップアップウィンドウに行ってしまい、タイトルが薄い青に
}
663デフォルトの名無しさん:2005/09/07(水) 23:34:21
>>661
GCのせい。
アンマネージドにデリゲートオブジェクトの参照を渡そうとしても、
参照じゃなくてデリゲートオブジェクトがマーシャリングされた関数ポインタとして渡される。
だからGCは、スコープを抜けた時点でもうそのデリゲートオブジェクトへの参照がないと判断してデリゲートオブジェクトを破棄しちゃうって訳。
フィールドとしてデリゲートオブジェクトを持っておけば、
その保持クラスのインスタンスが破棄されるまで(staticならアプリケーションの終了まで)破棄されることはない。
664デフォルトの名無しさん:2005/09/07(水) 23:34:47
>>662

ShowWindow(this.Handle, 8);
this.Visible = true;


ShowWindowはWin32APIね。

ttp://www.gotdotnet.com/workspaces/workspace.aspx?id=167542e0-e435-4585-ae4f-c111fe60ed58
これのNotificationWindowを参考にした。
665662:2005/09/07(水) 23:43:50
即レス感謝です。とんでもなく早いですね
この程度でWin32APIを使わないといけないのか(´・ω・`)
666デフォルトの名無しさん:2005/09/07(水) 23:52:02
>>654
1つ目のクラスのstaticコンストラクタから呼び出してるクラスがstaticコンストラクタで1つ目のクラスを呼ぶ場合とか。
667デフォルトの名無しさん:2005/09/08(木) 00:00:43
>>663
MSDNでコールバック関数にデリゲートを渡しているサンプルとかでも考慮されてないんだけど、
GCが通常のオブジェクト同様にデリゲートのメモリ位置の再配置をやらないのか不安になります。
デリゲートのメモリ再配置は行なわないみたいな仕様があるのでしょうか?
668デフォルトの名無しさん:2005/09/08(木) 13:22:40
http://msdn.microsoft.com/windowsmedia/downloads/default.aspx
ここから、Windows Media Encoder 9 Series SDK をダウンしてインストールしたのですが

コードに、using WMEncoderLib; を記述すると
型または名前空間名 'WMEncoderLib' が見つかりませんでした。ディレクティブを使うかアセンブリ参照を使ってください。

とエラーが出るので、参照の追加から、それらしきものを追加したのですが、どれもはずれでした。
ちなみに追加してみたのは以下のものです
Windows Media Player Compatibility Layer
Windows Media Player
Windows Media Player Launcher
Windows Media Streamer Plugin Type Library

調べてみると、コンポーネント名が、Windows Media Encoder object library
のものを追加すればいいのだと思うのですが、どこにもないので
どうも参照の追加の一覧に載ってないのではと思うのですが、こういった場合どうすればいいのでしょうか。


669デフォルトの名無しさん:2005/09/08(木) 13:46:07
>>668
とりあえずローカルにWMEncoderLib.dllがあるか検索。
670デフォルトの名無しさん:2005/09/08(木) 13:58:19
>>669
アドバイスありがとうございます。
検索はしたんです。
で、WMEncoderLib.dllを2つ発見しました。正しくはinterrop.WMEncoderLib.dllでした。
C:\WMSDK\WMEncSDK9\samples\C#\remadmin\WMEWebSvc\bin の中と
C:\WMSDK\WMEncSDK9\samples\Vb\Batcher の中です。

発見したinterrop.WMEncoderLib.dllを、開発中のアプリのDebugフォルダにほうりこみましたが

型または名前空間名 'WMEncoderLib' が見つかりませんでした。ディレクティブを使うかアセンブリ参照を使ってください。
とエラーがでます。

ためしに、using interrop.WMEncoderLib; にしてみましたが結果は同じでした。
どのようにしたらこのdllを使えるようになるんでしょうか。
671デフォルトの名無しさん:2005/09/08(木) 14:14:43
MSDNを見ると
using WMEncoderLib;
using WMPREVIEWLib;
using WMDEVICECONTROLLib;
この3つを一緒にプロジェクトへ追加せ〜
とあるけど…どうなんでしょ(横レス、スマソ)
672668:2005/09/08(木) 14:23:28
>>671
貴重な情報ありがとうございます。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmencode/htm/encodingafilecsh.asp
ここにあるC#のサンプルコードには、using WMEncoderLib;
しか記述されていないので、WMEncoderLibさえ設定してしまえば大丈夫かと思ったのですが
ほかにもいるのでしょうか。

参照の追加の一覧のWindows Media 関係のものはあらかた試しましたが
using WMPREVIEWLib;
using WMDEVICECONTROLLib;
に関連があるらしきものは見当たりませんでした。

もしかして、Windows Media Encoder 9 Series SDK 以外にも何かインストールしなければいけなかったのでしょうか。
普通は、SDKダウンしてインストールしたら、COMだったら参照の設定の一覧にあるはずですよね。
673デフォルトの名無しさん:2005/09/08(木) 14:39:51
label名を連番にしていて
ラベルへの文字列代入させていきたいのですが
label名 + 連番用変数 .Text = "文字列";
のような処理はできないのできませんか?
よろしくおねがいします。
674デフォルトの名無しさん:2005/09/08(木) 14:41:54
>>673
できます。
675デフォルトの名無しさん:2005/09/08(木) 14:42:43
>>673
reflection
番号どおりに配列にでもぶっこんどくのが楽だろうけど
676デフォルトの名無しさん:2005/09/08(木) 14:45:16
>>668
WMEncoderLib.dllじゃなかった、スマソ。
using WMEncoderLib; に相当するものは、
Windows Media Encoder (wmenc.exe)
using WMPREVIEWLib; に相当するものは、
Windows Media Encoder Preview Control (wmprevu.dll)
677668:2005/09/08(木) 14:50:09
>>676
情報ありがとうございます。
さっそくwmenc.exeを探したところ、何も見つかりませんでした。
これは結局、Windows Media Encoder 9 Series SDK じゃなくて別のSDKをダウンしなければいけなかったのでしょうか。
名前からしてずばりWindows Media Encoder 9 Series SDKだと思ったのですが。
678デフォルトの名無しさん:2005/09/08(木) 14:58:56
>>677
wmenc.exeはSDKじゃない只のWindows Media Encdoer、それを入れる。
679668:2005/09/08(木) 15:02:51
>>678
ありがとうございます(T T) やってみます。
680673:2005/09/08(木) 15:15:34
ありがとうございます。
ちょっとやってみたのですが

"label"+"連番変数".Text = "line";
のように処理するとstringにTextの定義がありません。
とエラーがでます。

reflectionについてもちょっと調べたのですが
少し難しくてまだ理解できてません。
どのように処理するのが正しいのでしょうか?
しょぼい質問で申し訳ありません。

681668:2005/09/08(木) 15:46:17
>>678
WMEncoderをダウンしてインストールしたところ
参照の追加の一覧に
Windows Media Encoder が現れました。
それを追加したところエラーはなくなりビルドできました。
どうもありがとうございました。
682デフォルトの名無しさん:2005/09/08(木) 16:07:23
>>680
諦めて事前に配列に突っ込んでおく。
683デフォルトの名無しさん:2005/09/08(木) 16:40:32
>>673

Label[] lab = new Label[3];

lab[0] = label1;
lab[1] = label2;
lab[2] = label3;

for (int i = 0; i < lab.Length -1; i++)
{
lab[i].Text = i.ToString();
}
684デフォルトの名無しさん:2005/09/08(木) 16:48:33
フォルダごと複数ファイルを読み込むにはどうしたら良いでしょうか?
Lhacaみたいな圧縮ソフトを作りたいので
685デフォルトの名無しさん:2005/09/08(木) 16:57:59
子コントロールを名前で見つけるメソッドがあってもいいのにね
686デフォルトの名無しさん:2005/09/08(木) 17:03:32
>>684
普通にDirectory.GetFilesとか使えばいじゃん
687673:2005/09/08(木) 17:21:15
みなさんどうもありがとうございました。
じゃんぬねっとさんでそれらしきものを見つけました。
http://jeanne.wankuma.com/tips/form/29-findcontrol.html
が、>>683さんのやり方でやってみようと思います。
ありがとうでした!
688デフォルトの名無しさん:2005/09/08(木) 17:34:52
>>687
Control.NameはVisual Studioのデザイナーは自動でNameプロパティに
フィールド名を入れてるがあれは規定値は空文字列のプロパティで
必ずしもフィールド名が入ってるわけじゃないので頼らないほうがいい。
689デフォルトの名無しさん:2005/09/08(木) 19:33:17
じゃんぬめっとはクソ
690デフォルトの名無しさん:2005/09/08(木) 19:59:18
おまえは?
691デフォルトの名無しさん:2005/09/08(木) 21:59:58
2005発売後C++/CLIよりC#を使うメリットはあるかな?
692デフォルトの名無しさん:2005/09/08(木) 22:02:49
throw;
693デフォルトの名無しさん:2005/09/08(木) 22:30:20
asp.net webアプリケーションに初挑戦なんですが、
WebForm1.aspx から、WebForm2.aspxを呼び出すにはどうしたらいいんでしょうか?
Transferを試してみましたが、URLがWebForm1.aspxのままで同一ブラウザ内で
開いてしまいました。

別ブラウザで開かせることはできないのでしょうか?
694デフォルトの名無しさん:2005/09/08(木) 22:44:23
まずHTMLを勉強してね
695デフォルトの名無しさん:2005/09/08(木) 22:46:50
>>691
まあ、C# の方が必要なものだけ機能しぼられてて綺麗し。
696デフォルトの名無しさん:2005/09/08(木) 23:06:34
>>693
たとえばformタグのtarget属性追加。
次は遷移について学習。
697デフォルトの名無しさん:2005/09/08(木) 23:17:43
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("WebForm2.aspx");
}

見たいな感じで、同様に、プログラム中で新しいブラウザで表示させるようなものは無いのでしょうか?
698デフォルトの名無しさん:2005/09/08(木) 23:19:42
だからHTMLの勉強をしろって。
699デフォルトの名無しさん:2005/09/09(金) 00:10:18
すいません。。本当にhtml勉強したら出来ました。。。。
ありがとうございました^^
700デフォルトの名無しさん:2005/09/09(金) 00:41:05
いいってことよ
701デフォルトの名無しさん:2005/09/09(金) 14:36:01
SqlCommandにParameterを作ってDataAdapterでFillして
エラーが出たとき、どうやらSQLが原因だとします。
Fill中のイベントでCommandTextを見ると、パラメータ部分がパラメータ名の
ままなのでですが、ここにそのときの具体的な値が入った状態の
完成したSQL文字列って、どこかで取得できませんでしょうか。
702デフォルトの名無しさん:2005/09/09(金) 15:55:48
code project でダウンしたコードが不思議な構造しているので質問します。

Form1.vb があり、VBで書かれています。
そのForm1.vbから、 

Dim a As Aclass
Dim b As Bclass

a = New A()
b = New B()

といった具合に、クラスをインスタンス化して使うわけですが、なんとクラスaはC#で書かれており
クラスbはC++で書かれています。

Form1.bと、 a.csと、b.cpp、1つのソリューションの中にそれぞれ別プロジェクトとして入っていて
ちゃんとビルドできるし、ビルドできたアプリはきちんと動作しました。

こんな書き方できるのでしょうか。
Form1はvbで書くとして、クラスはプロジェクトが別なら別の言語で記述しても大丈夫ということでしょうか。
更に、それが可能だとします。可能だった場合

Form1をC#、クラスAをcppでといったことも可能でしょうか。
703デフォルトの名無しさん:2005/09/09(金) 15:59:45
可能。なんでかっつーと、別プロジェクトということは、ソースコードは参照してないんだよ。
コンパイル済みのアセンブリを参照してる。アセンブリってことは言語は関係ない。
704702:2005/09/09(金) 16:02:33
>>703
回答どうもありがとうございます。

できるんですか。最初見たときは驚愕でした。
なるほどコードじゃなくてアセンブリを参照なのですか。納得。
アセンブリなためどの言語でも関係ないとなると
Form1をC#、クラスAをcppでといったことも可能ですね。
705デフォルトの名無しさん:2005/09/09(金) 16:12:39
>>704
そりゃ、それが .NET Framework の理念だから。
C# で書いたクラスAの派生クラスBをC++で書いて、そのBをVBで使ったりも出来るよ。
706702:2005/09/09(金) 16:18:25
>>705
書いたクラスをいろんな言語で使いまわせるんですね。
言語乗り換えたときなんかに便利ですね。
これができるんならひとつの言語に執着しなくても気軽に別の言語も使ってみたくなります。
どうもありがとう。
707デフォルトの名無しさん:2005/09/09(金) 16:20:49
ただ、異言語間で使う場合、たいてい問題ないが、知識無しだと、引っかかることがある。
クロスプラットフォーム共通言語仕様CLSっていうのを知っておく必要がある。


C#で作ったクラスライブラリをVB.NETで使う(クラスライブラリの作り方と共通言語仕様CLS)
http://santamartadotnet.hp.infoseek.co.jp/documents/dotnet/classlibrary.html
708702:2005/09/09(金) 16:50:02
>>707
詳しい解説サイトを教えてくださってありがとうございます。
読んでみて実際やってみようと思います。
709デフォルトの名無しさん:2005/09/09(金) 17:23:55
2.0だと同一プロジェクトのソースでも使いまわし可能だとか。
710デフォルトの名無しさん:2005/09/09(金) 18:19:52
質問させてください。

自分が作ったクラスをXML形式に(XMLシリアライズ?)して
そのままオラクルにCLOB型で入れたいのですがやり方がわからずに困っています。。。
どなたか教えてください。
711デフォルトの名無しさん:2005/09/09(金) 18:20:52
byte配列にshift-jisエンコードの文字列が入っています。
その配列から部分文字列(開始位置と文字数はバイト数指定)を取り出しstringに変換したいのですが、
みなさんならどうやってやりますか?

BinaryReaderのReadChars(int count)を使ってみたところ、
shift-jisの文字幅でポインタが進められてしまって、うまく取得できません。
よろしくお願いします。
712デフォルトの名無しさん:2005/09/09(金) 18:24:15
>>711
Encoding.GetString
713デフォルトの名無しさん:2005/09/09(金) 18:25:38
>>710
で、その流れのどの部分が分からないの?
キーワードはそれなりに揃ってるようだけど?
714デフォルトの名無しさん:2005/09/09(金) 18:31:16
>>712
素早いレスありがとうございました。
715596:2005/09/09(金) 19:49:09
こういうケースってあまりないのかな。
検索してもあまり引っかかってこない。
何か手がかりを知ってる人がいたらよろしくです。
716デフォルトの名無しさん:2005/09/09(金) 20:27:42
まあぶっちゃけわざわざウィザード使うより手で書いた方が早いし……
717デフォルトの名無しさん:2005/09/09(金) 20:34:19
テキストボックスかリッチテキストボックスで、
縦書きにすることってできませんか?
718デフォルトの名無しさん:2005/09/09(金) 20:51:32
VC6だったら再インストール勧めるんだけどな。
.NET半日かかるし。
719710:2005/09/09(金) 20:53:48
>>713
レスありがとうございます!

まず自作のクラスをXML形式に変換したいのですが
XMLシリアライズのようにファイルに書き出すことなく
オラクルに格納する方法がわからないんです。
720デフォルトの名無しさん:2005/09/09(金) 21:12:22
XMLシリアライザはファイルに書き出しているんじゃなくてストリームに書き出しているだろ
721596:2005/09/09(金) 21:14:32
>>716
それもそうだが、ファイル作って名前つけて
(最低限だが)クラス定義のコードも書いてくれて、と
便利だったんだよ。
でも楽をしすぎるのもいかんか。

>>718
OS入れる方がまだ時間かからないからなあ。
.NET Frameworkのインストールで手間取るのかな。

必須のことでもないしあきらめるよ。ありがとう。
722デフォルトの名無しさん:2005/09/09(金) 21:30:14
723デフォルトの名無しさん:2005/09/09(金) 23:17:38
リッチテキストボックスのコンテキストメニューを
簡単にテキストボックスのデフォルトメニューにすることはできませんか?
地道に実装するしかないのでしょうか?
724デフォルトの名無しさん:2005/09/09(金) 23:23:18
リッチテキストボックスをテキストボックスとして使えばよい
725710:2005/09/09(金) 23:28:40
>>720
ストリームですか・・・それをどうオラクルに書き出せば良いのか分らないです orz
726押忍、オラ狂う!:2005/09/09(金) 23:55:18

727デフォルトの名無しさん:2005/09/10(土) 00:14:13
男ならテキストエディタ+コマンドラインコンパイル。
・・・2005が出たらさすがに買います。 つд`)モウチョットヤスクシテクレ
728デフォルトの名無しさん:2005/09/10(土) 01:22:26
Expressは5000円くらいの予定じゃなかったっけ
729デフォルトの名無しさん:2005/09/10(土) 01:25:52
でもExpressってオリジナルのコントロール使ったり(参照)出来ないんでしょ
前に誰かそんなこと言ってなかったっけ?
730デフォルトの名無しさん:2005/09/10(土) 01:27:07
>>728
うむ。2005は割と良心的な値段設定になってるとおもた。
Team Systemなんかは逆の方向に吹っ切れてるけどなw
731デフォルトの名無しさん:2005/09/10(土) 01:32:54
普通にRichTextBoxをフォームに貼り付けて使ったらコンテキストメニューがでないのでは?
732デフォルトの名無しさん:2005/09/10(土) 02:55:38
どうせ、すぐにshareで公開されるから
買ったらアフォ
733デフォルトの名無しさん:2005/09/10(土) 04:27:44
>>729
使えないのではなく作れない。
というか、単にウィザードが用意されてないだけだから
技量のある人なら作れるのかもしれないが俺は知らん。
734デフォルトの名無しさん:2005/09/10(土) 09:26:11
C#のウィンドウズアプリから、LinuxのPostgreSQLに接続するにはどんな方法があるのか教えてください。

ググった感じだと、
インターウィズのPostgreSQL ODBC Driver 日本語版をつかってODBC接続?
monoのnpgsqlを使ってADO.net接続?
このどちらかでいけるのかな?といった気がしましたが、詳しい手順等ポインタをいただけたらと思います。
よろしくお願いします。
735デフォルトの名無しさん:2005/09/10(土) 09:32:51
相談というか疑問なんだけど、
C#は仮想(抽象)メソッドを静的にできないんだけど何故だと思います?
駄目な理由が分からない。。。
private virtual static int hoge() {}
protected abstract static int foo();
736デフォルトの名無しさん:2005/09/10(土) 09:44:56
静的メンバは継承されないからさ。
737デフォルトの名無しさん:2005/09/10(土) 10:07:48
あとprivate virtualは有り得ないな。
738デフォルトの名無しさん:2005/09/10(土) 10:14:24
>>735
それ、C# はっていうか、Java や C++ でできるか?
739デフォルトの名無しさん:2005/09/10(土) 10:54:00
できる言語もある
740デフォルトの名無しさん:2005/09/10(土) 10:54:28
Delphiとかいう糞言語
741デフォルトの名無しさん:2005/09/10(土) 13:36:16
Form1.csから、別プロジェクトのForm1.vbのAメソッドを呼び出すにはどのように記述すればいいでしょうか。
Form1.csに
Form1.とインテリセンスを出してみましたが、当然のようにAメソッドはインテリセンスの一覧にはありません。

どのようにすればインテリセンスに登場させることができるでしょうか。
742デフォルトの名無しさん:2005/09/10(土) 13:42:12
参照してなかったら不可能。
参照しているのなら、クラスからじゃなくて名前空間から書いていく。
あといつまでもForm1なんて名前使ってるのはださくね?
743741:2005/09/10(土) 14:15:53
>>742
回答ありがとうございます。参照設定やってみます。
744デフォルトの名無しさん:2005/09/10(土) 14:20:28
vbの人はtextbox1、textbox2、3,4,5
これ定番
745デフォルトの名無しさん:2005/09/10(土) 14:22:26
>>740
マジで?
Delphi のイメージがまたちょっと悪化。
static virtual ってどういう扱いになるん?
746デフォルトの名無しさん:2005/09/10(土) 14:48:50
Delphi6 しかもってないんだが、Delphi では C# で言う static virtual は
「TClass.Method;」で呼び出すと C# の static メソッド風に、
「Object.Method;」で呼び出すと C# の non-static メソッド風に振舞う。

……みたい。ガイドを見る限りでは。多分。
747デフォルトの名無しさん:2005/09/10(土) 16:21:27
糞っていうな糞って
748デフォルトの名無しさん:2005/09/10(土) 16:24:34
ごめん、糞じゃなくてウンコ
749名無しさん@そうだ選挙に行こう:2005/09/10(土) 21:02:09
それならよし
750デフォルトの名無しさん:2005/09/10(土) 22:33:57
テキストボックスの文を、。と\r\nで区切ってsplit配列に入れていくというのをやりたいのですが
下のコードだとビルドは通るのですが、実行したらアプリが固まってしまいます。
Splitメソッドを使おうと思ったのですが、1つの文字しか指定できないのでやむなく下のように書いたのですが
どなたか何かヒントをいただけるとうれしいです。

string[] split;
string moji = textBox1.Text;
int count = 0;
int a;
int b;

while(moji.Length > 0)
{
a = moji.IndexOf("。"); //。の最初の出現位置
b = moji.IndexOf("\r\n"); //\r\nの最初の出現位置

if(a > b) //。と\r\nのどちらが先に出現するかで処理をわける
{
split[count] = moji.Substring(0, a + 1); //文の最初から。までを抜き出す
moji = moji.Remove(0, a+ 1); //文の最初から。までを削除したものをmojiに入れる
}
if(b < a)
{
split[count] = moji.Substring(0, b + 1);
moji = moji.Remove(0, b + 1);
}
count++;
}
751名無しさん@そうだ選挙に行こう:2005/09/10(土) 22:35:22
Regex.Split使えば?
752名無しさん@そうだ選挙に行こう:2005/09/10(土) 22:37:21
このスレはRegexが大人気ですね
753750:2005/09/10(土) 22:37:40
>>751
便利なメソッド教えていただいてありがとうございます。
これで楽できます。
754名無しさん@そうだ選挙に行こう:2005/09/10(土) 23:35:27
お絵描きツールを作る時、描画されるオブジェクト(四角、三角、円)などは
Controlを継承して作るのとそうでない方法、どちらがよいのだろうか。

各、描画オブジェクトは摘んで動かしたりできる機能を持つとして
試しに、ドラッグして動かすものをつくってみたのですが

Controlで作った場合 Locationプロパティを変更するだけで綺麗に描画できた。
Controlを継承せずに OnPaint(Graphics), NotifyView(Rectangle), MoveTo(int,int)などを
実装したオブジェクトを使った場合、かなりちらつきがあったり、遅かったりしたんですけど。
どちらの方が一般的なんでしょうか?
755名無しさん@そうだ選挙に行こう:2005/09/10(土) 23:38:07
アンマネージdllの読み込みについて質問です。
DllImport属性だとDllの場所を動的に指定できないみたいなのですが、
実行時にdllの場所を指定して読み込ますことはできないんでしょうか?

それができるDllImportの代替手段などもあれば教えてください。
756名無しさん@そうだ選挙に行こう:2005/09/10(土) 23:42:48
>>754
前者はウィンドウハンドルの無駄遣いっぽい。
後者を使ってダブルバッファリングさせるのが一般的じゃないかな?
757名無しさん@そうだ選挙に行こう:2005/09/10(土) 23:44:01
>>754
オブジェクトの数が増えるとそれが逆転する可能性がある。

>>755
俺も調べたことがあってそういう方法を紹介してたサイトがあったが、
それがとてつもなく面倒な手間がかかって欠点もある、ということで結局
アンマネージDLLを呼ぶアンマネージDLLという馬鹿馬鹿しくなるものを作った覚えがある。

つまりお勧めできない。
758名無しさん@そうだ選挙に行こう:2005/09/10(土) 23:46:33
Controlクラスはリソース食うからあんまり大量に使うもんじゃないんじゃない?

構造をDocumentとViewにわけてDocumentで描画オブジェクトを管理。
View部分にはTimerクラスをくっつけて、
Documentの更新状況に関係なく毎秒nフレームとかで描画すればそんなに遅くならないよ。

ちらつきはBMPのバックバッファ用意して、そこに描画して一気にメインバッファに
流し込めば起きなくなる。描画するコントロールのOnPaintbackgroudを無効にしておくのも忘れずに。
759名無しさん@そうだ選挙に行こう:2005/09/10(土) 23:46:40
遅延バインディングによりアンマネージDLL関数を呼び出す
http://dobon.net/vb/dotnet/links/extractarchive.html

これを参考に。ちなみに俺には中身は理解できなかった。
760名無しさん@そうだ選挙に行こう:2005/09/10(土) 23:48:42
>>755
.NET2.0になればMarshal.GetDelegateForFunctionPointerで関数ポインタをデリゲートに変換できるんだが。
Managed C++でLoadLibraryをラッピングするしかないかな。
761名無しさん@そうだ選挙に行こう:2005/09/10(土) 23:54:22
>>759
LoadLibrary使うのにこんなメンドクサイ事するとは……。
システム寄りの事をするにはC++のほうが適してるな、こりゃ。
762名無しさん@そうだ選挙に行こう:2005/09/11(日) 00:01:22
>>761
何を今更
ま、Managed用の言語であるC#とUnmanagedのDLLで食い合わせが悪いのは当然だわな
763758:2005/09/11(日) 00:02:21
764名無しさん@そうだ選挙に行こう:2005/09/11(日) 00:26:58
>>755
set PATHすればええやん。
そういう問題じゃないのか?
765名無しさん@そうだ選挙に行こう:2005/09/11(日) 00:31:49
プラグインみたいなのを想定してるとか。
766名無しさん@そうだ選挙に行こう:2005/09/11(日) 00:43:01
>>761-762
そのためのManaged C++でしょう。
767名無しさん@そうだ選挙に行こう:2005/09/11(日) 01:19:59
コウイチ
768名無しさん@そうだ選挙に行こう:2005/09/11(日) 01:47:40
うわ…よくそんなもの見つけましたね。
IDEで出ちゃいます?
769755:2005/09/11(日) 01:59:59
Program Filesにインストールされてる製品に付属するアンマネージDLLを参照したかったんです。
でもラッパーDLLをそのフォルダに置いて、それを呼び出せば良さそうですね。
たくさんのレスありがとうございました。

ところでマネージDLLを実行時に場所を指定して読み込むのってどうやるんでしたっけ?
770名無しさん@そうだ選挙に行こう:2005/09/11(日) 02:02:48
Assembly.LoadFrom
771755:2005/09/11(日) 02:06:03
あと、ここにもそれっぽい記事が・・・ここまでやるならラッパーDLLを作った方が早いでしょう。
ttp://www.misuzilla.org/docs/net/dynamic-pinvoke
772755:2005/09/11(日) 02:06:58
>>770
ありがとうございます。
773名無しさん@そうだ選挙に行こう:2005/09/11(日) 02:17:17
>>768
>571-575
774754:2005/09/11(日) 11:43:18
>>756-758 ありがとうございます。
オブジェクト4000個で実験したところ
Controlだと消費メモリは+3M@タスクマネージャ
遅い原因はView側のOnPaintがClipRectangleに対応していなかったようです
775名無しさん@そうだ選挙に行こう:2005/09/11(日) 11:55:23
DocumentViewアーキテクチャ
776名無しさん@そうだ選挙に行こう:2005/09/11(日) 14:49:13
yield return/break って使い道あんのか
777名無しさん@そうだ選挙に行こう:2005/09/11(日) 15:51:06
今時、Doc/View?

ポトペタ最高
778名無しさん@そうだ選挙に行こう:2005/09/11(日) 19:58:22
>777
その発言の意図がわからん。
古いっつーなら勉強し直した方がいいかも。
779名無しさん@そうだ選挙に行こう:2005/09/11(日) 20:08:54
いや古いだろ。
MFC信者?
780名無しさん@そうだ選挙に行こう:2005/09/11(日) 20:52:23
「古いから使わない」はおかしいな。
781デフォルトの名無しさん:2005/09/11(日) 22:39:04
ちょっと確認したいのですが
C#でシェアウェアを作ったとします。
コードの中にパスワードが書いてあった場合、逆コンパイルでパスワードって見えちゃうんじゃないかと思うのですが
どうなんでしょうか。
782名無しさん@そうだ選挙に行こう:2005/09/11(日) 22:41:29
>>781
普通、そういう場合はパスワードを暗号化したものを入れておくんじゃないか。
ユーザーに入力された文を暗号化して結果が、暗号化されてるパスワードと比較する。
783名無しさん@そうだ選挙に行こう:2005/09/11(日) 22:42:37
>>781
そこでMD5暗号化
しかし固定文字列では割れ厨はシリアル集からパス入手するかもね。
784名無しさん@そうだ選挙に行こう:2005/09/11(日) 22:43:31
そういやDotFuscatorの製品版は内部の文字列も暗号化してたはずだな。
785781:2005/09/11(日) 22:46:58
>>782
なるほど、それなら見えちゃっても大丈夫ですね。ありがとうございます。そのようにしようと思います。

>>783
MD5という暗号技術がお勧めですか。ありがとうございます。やってみます。
そんなに需要のあるジャンルじゃないので洩れて晒されるほどではないのでわと思っているのですが。

>>784
文字列の暗号化は確か有料でけっこうなお値段だったような気がするのですが、いくらだったか。
ちょっと見てみます。
786781:2005/09/11(日) 22:48:52
http://www.agtech.co.jp/products/preemptive/price.html
このサイトに30万とか書いてますよ。
787名無しさん@そうだ選挙に行こう:2005/09/11(日) 22:59:01
>>786
お前は何も見なかった。
788名無しさん@そうだ選挙に行こう:2005/09/11(日) 23:05:24
>>785
UPX 圧縮するともしかするかも
マネージコードで試したこと無いからわかんないけど
789名無しさん@そうだ選挙に行こう:2005/09/11(日) 23:08:00
Shareware Starter Kit使えよ。
2005だけど。
790781:2005/09/11(日) 23:17:13
皆さんアドバイスありがとうございます。

>>788
UPX圧縮って、調べてみたら実行ファイルを圧縮して、サイズが小さくなって起動が早くなるとかいう説明でしたが
ひょっとして圧縮ファイルにパスワードとかかけられるのでしょうか。
それか圧縮した状態だから中のパスが見られないということかな。

http://www.vector.co.jp/soft/win95/util/se246580.html
実は、シェアだけど、これも圧縮ファイルにパスワードかけるやつなのですが、これ使っちゃおうかなと思ってたんですけど
一応プログラマーなんだから自分のシェアソフトのパスぐらい自分でなんとかしないといけないんじゃないかというジレンマがあって
こういうの使うのが一番簡単な気がするのですがいまだに迷ってます。

>>789
2005には便利なものがついてるのですね。
使っているのはVS2003です。
確か2005はまだベータでしたよね。
791名無しさん@そうだ選挙に行こう:2005/09/11(日) 23:20:00
C#を勉強して良いものだろうか・・・
いまだに悩んでる。
MSが簡単に「もう辞めた」と言いそうで怖い
792名無しさん@そうだ選挙に行こう:2005/09/11(日) 23:21:57
>>791
複数の言語を使えるに越したことはない。
特に.NETでは。
793名無しさん@そうだ選挙に行こう:2005/09/11(日) 23:23:57
>>791
現在ver2は開発中だしver3は仕様の構想中だよ
C++と違って実装できた機能が規格に追加されるので堅実だと思う
M$は.netいじりにはC#が最適と言いたいみたいだし
794名無しさん@そうだ選挙に行こう:2005/09/11(日) 23:29:42
.NETにはC++/CLIが最適に思えるのだが・・・
795名無しさん@そうだ選挙に行こう:2005/09/11(日) 23:42:21
>>794
今までの資産が大きすぎるからなぁ。両方できればそれに越したことは
ないけど、そうでない、頭が固まってしまった人がかなりいるし。
796デフォルトの名無しさん:2005/09/11(日) 23:50:24
>>776
他人が読むときに不便になりそうな奇抜な機能は付けないでほしい…
797デフォルトの名無しさん:2005/09/12(月) 00:00:01
>>791
次のタマはないんだよ。
現在研究中の言語もC#に取り込まれていくだけ。
798デフォルトの名無しさん:2005/09/12(月) 00:25:10
>>791
幅広く何でもやりたいなら、当分の間安泰なC/C++がお勧め。
799デフォルトの名無しさん:2005/09/12(月) 02:08:24
ちょっと自分で描画系を勉強するに当りScrollWindowExやScrollWindowを使ってスクロールをしようとしているのですが、

UserControlを継承したクラスで

OnPaint(Graphics g)内で
g.DrawString(...)を読んで文字列を書いて

ScrollWindowExやScrollWindow読んで画面をスクロールさせるようなサンプルありませんでしょうか?
どうにもどうすればいいのかつまってしまって困ってます3ヶ月前まで、Linux一筋だったので助けてください。
800デフォルトの名無しさん:2005/09/12(月) 03:03:29
>>799

Microsoft .NET Framework の Windows フォームを使用したペインティング テクニック
http://www.gotdotnet.com/japan/team/windowsforms/windowsformspainting.aspx

サムネイル画像コントロールを作ろう
http://www.atmarkit.co.jp/fdotnet/practprog/wisearch02/wisearch02_01.html
801デフォルトの名無しさん:2005/09/12(月) 03:44:14
このままC#の勉強を続けるべきか
それともJavaの勉強をするべきか
或いはネイティブのC/C++の勉強をするべきだろうか
正直悩むな
どれが一番将来性があるのか
802デフォルトの名無しさん:2005/09/12(月) 04:27:51
>>801
3つとも大して難しい言語でもなく、ましてや基本的には似た言語であるので
人並みの能力があれば3つの勉強を同時にこなすぐらいわけないことだ。

つまり一番将来性がないのはそれができないお前。
803デフォルトの名無しさん:2005/09/12(月) 04:52:25
VS2005出るまでC++の勉強すれば?
出たらC++/CLIで.NETの勉強すればいいじゃん。

俺の見解だけどその中で一番将来性ないのはJAVAじゃないのか?
JAVAのコンセプトは悪くないんだけど、コンセプトを実現させるパワーに欠ける気がする。
あくまでMSと比較してだけどな。
804デフォルトの名無しさん:2005/09/12(月) 06:23:20
>>754
後者でやる場合、四角、三角、円などのクラスに自分の位置とサイズを表すプロパティをつける。
描画する先のコントロールのOnPaintをオーバーライドして
ClipRectangleから描画する必要があるオブジェクトだけを求めて
必要ならダブルバッファリングして、最終的に描画するって感じかな

おもしろそうだったんで試しに作ってみた。VS2005 Beta2
http://49uper.com:8080/html/img-s/79426.zip
805デフォルトの名無しさん:2005/09/12(月) 07:47:04
ここでJavaの話をすると荒れそうだからやめとこう
806デフォルトの名無しさん:2005/09/12(月) 16:30:28
>>801
あえて将来性の無い言語を選ぶのも悪くないね
ひとつの言語しか使用経験がないのに比べ
複数の言語を使った経験があると
その言語でしか通用しない概念か
多くの言語でも通用する概念かの区別がつくので
未経験の言語を使い始めるときに苦労が少ないよ

要するに「未経験の言語=使えない言語」ではなくなる
807デフォルトの名無しさん:2005/09/12(月) 16:32:44
シェアウェアで買ってもらったらパスワード渡しますよね。
そして、ユーザがパスワードを入力して制限が外れます。

毎回毎回起動の度にパスワードを入力させるわけにもいかないから当然、ユーザが入力したパスワードを
どこかに保存することになりますよね。

今までテキストに書き込んでおいたのですが、内部に保持する方法はないでしょうか。
コンボボックスを作っといて、コンボボックスのアイテムとして書き込んだら内部に保持できるかなあとか考えて

comboBox1.Items.Add((object)textBox1.Text);

このように書いてみたりしたのですが、アプリを終了して再度起動したときには、せっかく追加した文字が消えており
保持に失敗。
ユーザの入力したパスワードをアプリ内部に保持する方法があれば教えていただけるとうれしいです。
808デフォルトの名無しさん:2005/09/12(月) 16:38:37
>>807
自分なら暗号化してレジストリへ書き込みますね
MACアドレスなども含めて暗号化することで
同じ値を入れたのでは他のPCで使えないようにすることもできます
809807:2005/09/12(月) 16:43:08
>>808
アドバイスありがとうございます。
やはり外部に書き込むしかないのですね。
テキストにパスワードそのまんま書き込んでたので、あんまりかなあと思っていたので暗号化はしようかと思います。
MACアドレスを含む技も、1台に1ライセンスのシェアを作ったときに使わせていただこうと思います。
810デフォルトの名無しさん:2005/09/12(月) 18:25:53
>comboBox1.Items.Add((object)textBox1.Text);
>このように書いてみたりしたのですが、アプリを終了して再度起動したときには、せっかく追加した文字が消えており
こんな知識で一体どんなシェアウエアつくる気だ?
811デフォルトの名無しさん:2005/09/12(月) 19:59:24
CompJapon
812754:2005/09/12(月) 21:51:25
>>804 DLして見ました。
綺麗ですね。
ダブルバファリングはControlStyleに任せていたので参考になります。
Point + Sizeとか始めて見ました。
ForEach(delegate(T){});とか2005のソースは面白いですね。
813デフォルトの名無しさん:2005/09/12(月) 22:00:54
2005じゃなくて2.0のソースだろ
814デフォルトの名無しさん:2005/09/12(月) 22:14:08
.slnとか.csprojとかにも面白みがあるんだよ! 多分
815デフォルトの名無しさん:2005/09/12(月) 22:18:12
匿名メソッドは便利やね
816デフォルトの名無しさん:2005/09/13(火) 00:56:31
Generics使って
特定のカスタムアトリビュートが付与されているクラス
のみTに取るとかって指定できませんか

たとえば
List<T>
のTは[serializable]が付与されているものだけに限定とか

型は指定できるけどアトリビュートはできないのでしょうか?
817デフォルトの名無しさん:2005/09/13(火) 00:59:10
すべてがObjectから派生しているからListには
なんでもいれられるじゃないですか
それなのにGenericってなんの意味があるんですか?
818デフォルトの名無しさん:2005/09/13(火) 00:59:18
where じゃないっけ?
819デフォルトの名無しさん:2005/09/13(火) 01:05:43
Genericsってセカンダリ制約ってAND条件のみ?

IAかIBってインターフェイスを実装しているType指定って
できないのかな?

Factoryかませないとできないか?
820デフォルトの名無しさん:2005/09/13(火) 01:14:52
>>816
少なくとも.NET 2.0ではできない

>>817
キャストしないで良いじゃん

>>819
ANDのみだね
821デフォルトの名無しさん:2005/09/13(火) 01:16:25
>>820
だったら配列に入れればキャストしなくてもよくね?
822最凶VB厨房:2005/09/13(火) 01:19:48
配列とリストは構造が違う。
823デフォルトの名無しさん:2005/09/13(火) 01:20:11
Genericsはリストだけで使うわけじゃないから
824デフォルトの名無しさん:2005/09/13(火) 01:20:52
配列だと気軽にAdd/Removeできないじゃん
825デフォルトの名無しさん:2005/09/13(火) 01:46:35
Genericの目的は、キャストよりもアルゴリズムの一般化じゃない?
List<T>で言えばPredicate<T>での検索とかComparison<T>でのソートとか
型に合わせた部分だけ変えればいいっていう
826デフォルトの名無しさん:2005/09/13(火) 02:02:16
テンプレートなくても
javaで言えばComparatorを実装するオブジェクトはソートできる
みたいにアルゴリズムの再利用はできるぞ
827デフォルトの名無しさん:2005/09/13(火) 11:12:15
>>817
何でも入れられるのは問題あるから、型 T だけしか入らないように限定しよう
……というコンセプトもある
828デフォルトの名無しさん:2005/09/13(火) 12:04:07
確かに object 型のリスト作ればどんな型でも格納できるんだけど、
いちいちキャストが必要。
キャストが必要と言うことは、InvalidCastException 発生の危険性が常に伴う。
Generics 使えば、この例外の発生はありえない。
これは、実行時エラーの回避、効率の両面で有効。
829デフォルトの名無しさん:2005/09/13(火) 12:04:16
まぁ型総称性とかで調べてみると理論は分かると思うが。
オブジェクト指向と絡むとちょっと重要なところが変わるんだけどな

実は配列ってのも似たような機能を固定的に成り立たせている
ところもあるっていうか、MyClassって型があったとして、MyClass[]
って型が暗黙的に存在しているだろ。この関係はList<MyClass>と一緒だ
C++のtemplateみたいな一種のコードジェネレータで実現できる機能って
ことは重要で継承とはちがった拡張性が型パラメータによる総称性って
いうか何かに何かを「適用する」って概念だな

で?なんの役に立つのそれ?ってのがたぶん大半の理解できないひとの
いいぶんだと思うけど、それは使ってみて分かるしかないと思うよ
830デフォルトの名無しさん:2005/09/13(火) 13:37:26
HttpUtilityクラスを使って文字列をデコードしたいんですが

using System;
using System.Text;
using System.Web;

とやっても名前空間に見つからないって言われてしまいます。

System.Web.
まで送って、コード補完かけても、AspNetHosting〜しかでてきません。

何か足りないものがあるんでしょうか(´・ω・`)
831デフォルトの名無しさん:2005/09/13(火) 13:40:51
>>830
参照を追加しろ
832830:2005/09/13(火) 14:19:52
>>831
おおっっっっ。ありがとうございます!
できますた!
833デフォルトの名無しさん:2005/09/13(火) 17:13:27
質問させてください。
とある自作ゲームで、CPU側の動作(AI)をユーザが
DLLでプラグインできるようにしたいのですが、、

まず、ゲーム本体はプラグインするDLLから動的にアセンブリを呼び、
どういう動作をするのかを問い合わせる形をとるものとします。

しかし、ゲームの本体で持っているデータ構造をDLLと
共有する方法がわかりません

ゲーム本体で使っているクラスとゲーム中のデータを
プラグインするDLLがそのまま参照できると嬉しいのですが、
そういうことは可能でしょうか?
834デフォルトの名無しさん:2005/09/13(火) 17:23:38
>>833
データやクラスを定義したDLLを作成し、本体とプラグインの両方から参照する。
MSのTerrariumが実際にそんな方法でやってるからTerrariumやってみたら?

http://www.microsoft.com/japan/msdn/net/terrarium/
835デフォルトの名無しさん:2005/09/13(火) 17:25:52
>>833
意味不明な部分もあるが、全部可能。
ググルで 
C# DLL 遅延
C# DLL 構造体
C# DLL コールバック
で検索して、読めれば全部解決する。
836833:2005/09/13(火) 18:14:26
>>834
めちゃめちゃ参考になりそうです、ありがとうございます!
データとクラスを定義したものをDLLに分離したらよいのですね
ところで、共有したいクラス(シングルトンで使っている)を別DLL内に
閉じ込めたとして、プラグインとゲーム本体で同じDLLを参照したとすると、
中身のデータも共有できるんでしょうか??

>>835
説明が下手ですいません。
とっかかりとなることがわからない状態ですので
キーワードを提示していただけて助かります、早速調べてみます
837デフォルトの名無しさん:2005/09/13(火) 18:33:51
>>836
>共有したいクラス(シングルトンで使っている)を別DLL内に
>閉じ込めたとして、プラグインとゲーム本体で同じDLLを参照したとすると、
>中身のデータも共有できるんでしょうか??

なにをどうしたいのかいまいちよく見えないが、
ゲーム本体がプラグインのDLLと共有クラスDLLから
インスタンスを作って使うわけで可能じゃね?
とゆーか調べてから設計しる。
838833:2005/09/13(火) 18:53:21
ありがとうございました、望みどおりの動作になりました

>>837
そのとおりでした。ゲーム本体が共有データを持つDLLの
インスタンスを作って、その後からプラグインがゲーム本体から
動的にロードされて共有データのDLLを見に行くので
問題無しでした

>とゆーか調べてから設計しる。
そうっすね・・・
839デフォルトの名無しさん:2005/09/13(火) 20:15:17
C#で作るほにゃらら、みたいな感じの、初学者でも順を追ってそれなりの
プログラムが組めるような書籍、どなたかご存知じゃないでしょうか?
ジャンルは問いません、友達に教えてあげたいので教えてください。よろしくおねがいします。
840デフォルトの名無しさん:2005/09/13(火) 20:16:24
↑追記
例えば、rubyで言えば、恋するプログラム〜Rubyでつくる人工無脳
のような本ですね。
841デフォルトの名無しさん:2005/09/13(火) 20:18:42
MSDN
842デフォルトの名無しさん:2005/09/13(火) 20:19:37
それなりのレベルのものしか作れないんで意味ないと思うよ
843デフォルトの名無しさん:2005/09/13(火) 20:20:40
うわ。MSDN がそれなりのレベルみたいなレス配置に orz
844デフォルトの名無しさん:2005/09/13(火) 20:32:41
VSについてくるチュートリアル結構よかったよ
文法だけでライブラリのことはノータッチだけど
845デフォルトの名無しさん:2005/09/13(火) 20:42:55
>初学者でも順を追ってそれなりのプログラムが組めるような書籍

『初心者でも順を追ってそれなりの小説が書けるようになる書籍』って読み替えてみた。
こういうのを探すと多分無駄足を踏む事になるね。
俺も >>841 とか >>844 が素直な正解だと思う。
846デフォルトの名無しさん:2005/09/13(火) 20:50:23
ペゾルドを参照せよ!
847デフォルトの名無しさん:2005/09/13(火) 22:26:17
配列と配列を比較するのに推奨の方法は何でしょうか。
要素数は同じです。

参考サイト
ttp://blog.livedoor.jp/gushwell/archives/2005-03.html

やはり逐一比較しかないのでしょうか?
848デフォルトの名無しさん:2005/09/13(火) 22:29:07
しかとは言わないが、まあそれが一番手っ取り早かろう
849デフォルトの名無しさん:2005/09/14(水) 04:15:37
>>834
Terrarium って今でも活発に使われてますか?
850名無しさん♯:2005/09/14(水) 04:16:24
C# 3.0ですよ。( ゚д゚)ノ
http://msdn.microsoft.com/vcsharp/future/
851デフォルトの名無しさん:2005/09/14(水) 04:26:18
また doc ファイルかよ
852デフォルトの名無しさん:2005/09/14(水) 04:47:08
Implicitly typed local variables
Extension methods
Lambda expressions
Object and collection initializers
Anonymous types
Implicitly typed arrays
Query expressions
Expression trees
853デフォルトの名無しさん:2005/09/14(水) 04:50:28
var がキーワードになるのかよ
死ねよ
854デフォルトの名無しさん:2005/09/14(水) 04:54:54
>>849
Terrariumはもともと学習用のゲームみたいな面があった。
855デフォルトの名無しさん:2005/09/14(水) 05:52:31
デフォルトのメーラを起動して、Process.Start("mailto:〜〜");では添付できないので、
ファイルが添付されているところまで持って行きたいのですが、
ちょうどInternetExplorerの、ツールメニュー -> メールとニュース -> 「ページの送信」
を実行した後の様な形です。

よい方法ありませんか?
856デフォルトの名無しさん:2005/09/14(水) 05:59:09
var var イエッツ!

とか振っても、この板では元ネタ知ってる人が居なさそう_| ̄|○|||
857デフォルトの名無しさん:2005/09/14(水) 06:04:10
>>850
きたー。
でもあんまり感動がねえなあ。
858デフォルトの名無しさん:2005/09/14(水) 07:41:14
>>853
プださ
859デフォルトの名無しさん:2005/09/14(水) 12:17:09
lambda はいやじゃー
860デフォルトの名無しさん:2005/09/14(水) 13:06:03
複数のForm間で共有するデータを保持するクラスを作成したのですが、
インスタンスを生成する良い場所が思いつきません。自動的に
生成されるForm1のメンバとして作成するのが定石なのでしょうか?
861デフォルトの名無しさん:2005/09/14(水) 13:11:15
必要なときに作れば良いんでないの
862デフォルトの名無しさん:2005/09/14(水) 13:40:36
>>860
ヒント:シングルトン サービスロケータ
863デフォルトの名無しさん:2005/09/14(水) 16:06:32
Webサービスの開発しているんですが
Web.conifgの設定を変更したらWebサービスは再起動するのでしょうか?
864デフォルトの名無しさん:2005/09/14(水) 16:09:54
しない、はず
いちいちファイル監視なんてやってられないでしょ
865デフォルトの名無しさん:2005/09/14(水) 16:31:45
>>864
有難うございます
普通のWindowsアプリは再起動するらしいので
Webサービスもするのかどうか分からなかったので心配でした
866デフォルトの名無しさん:2005/09/14(水) 16:38:54
ちょっと待て、ひょっとして「再起動するのか」じゃなくて「再起動させなきゃいけないのか」って事か?
それなら当然設定を反映させるのには再起動が必要だぞ。
867デフォルトの名無しさん:2005/09/14(水) 16:46:50
IISが自動的にやってくれるけどな。
868デフォルトの名無しさん:2005/09/14(水) 17:13:45
>>866
>>867

プログラム少し変更して
Global.asaxのApplication_Start内でWeb.config変更ログ取るようにしてから
メモ帳でWeb.configを変更してみたんですが
いじる前といじる後ではこちらで再起動掛けなくても変更がログに残ってたんですが
理由は>>867だったんですね
納得しました

お二人とも有難うございました
869デフォルトの名無しさん:2005/09/14(水) 21:10:35
自己解凍形式の圧縮ファイルみたいに、
プログラム内部にファイル(データ)を内包した感じのプログラムを作りたいのですが、
どうやれば作れますか?
870デフォルトの名無しさん:2005/09/14(水) 21:14:26
ん、リソースを埋め込みたいって事?
どぼんでも見に行ってみたらどう?
871デフォルトの名無しさん:2005/09/14(水) 21:20:09
Web.conifg書き換えるとワーカプロセスが再起動するよ
872デフォルトの名無しさん:2005/09/14(水) 21:26:00
>>870
レスありがとうございます。
どぼん見ても分からなかったらまた来ます。
873デフォルトの名無しさん:2005/09/15(木) 01:38:35
C#でこんなカコイイアプリ作ったぞ
なんて自慢できる人いますか?

つっこみ来る前にw
デザインがダサかったら萎え
874デフォルトの名無しさん:2005/09/15(木) 01:40:16
デザインなんてどうでもいいや
ユーザビリティが優れてればそれで
875デフォルトの名無しさん:2005/09/15(木) 01:42:49
>>873
晒してみる。

【実況用】2chブラウザ「Balloo!」スレ Part2
http://pc8.2ch.net/test/read.cgi/software/1107744498/
876デフォルトの名無しさん:2005/09/15(木) 02:30:52
それ一度使おうと思ったけどインストーラがまんどくさかったから使ってないや
877デフォルトの名無しさん:2005/09/15(木) 22:16:39
配列を定数として宣言したいのですが、どうすればいいのでしょうか?

const uint[] Color = new uint[]{0xFF006000,0xFF0060FF,0xFF00FF00}

としてもエラーになってしまいます。
878デフォルトの名無しさん:2005/09/15(木) 22:19:47
static const でもダメ?
879デフォルトの名無しさん:2005/09/15(木) 22:20:54
>>877
配列自体はconstでも中身が操作できるから。
880デフォルトの名無しさん:2005/09/15(木) 22:21:18
readonly
881デフォルトの名無しさん:2005/09/15(木) 22:28:56
>>880
readonly も中身は操作できなかったっけ?
882デフォルトの名無しさん:2005/09/15(木) 22:40:03
参照型はstring以外constはできない。
static readonlyにするぐらい。
各要素の変更まで禁じようと思ったら独自クラス作るかArrayList.ReadOnly使うとか。
883デフォルトの名無しさん:2005/09/15(木) 23:24:34
c#のconstはつかいにくいんじゃー
884877:2005/09/15(木) 23:31:58
あちゃ配列ってconstできないんですか…

今回はこれまでコードの中できめ打ちしてたのを
頭でconstにまとめて読みやすくと思っただけなのでまぁ諦めます

ありがとうございました。
885デフォルトの名無しさん:2005/09/15(木) 23:33:40
それだけならstatic readonlyで十分だと思うが。
886デフォルトの名無しさん:2005/09/15(木) 23:34:05
final しかない言語よりはましだろ
887デフォルトの名無しさん:2005/09/16(金) 01:07:52
っていうかC#のconstは意味がはっきりしてるっていうか
正確に意味理解しとき。
あれは、バイナリイメージにそのまんま「埋め込む」んだ。
だから基本型しか適用できないし、リンク時の動作も埋め込みに
なるんだ。
888デフォルトの名無しさん:2005/09/16(金) 01:09:46
つまりは #define マクロか
889デフォルトの名無しさん:2005/09/16(金) 02:09:48
実行中のWindows Media Playerを他のプログラムから制御する方法はありませんか?
890889:2005/09/16(金) 02:22:14
自己解決スマソ。
Ctrl+Pとかを送ってやることにしました。
891デフォルトの名無しさん:2005/09/16(金) 02:26:34
AxWindowsMediaPlayer だったかなんかで自作すればいいじゃん
892デフォルトの名無しさん:2005/09/16(金) 03:42:10
>>887
だが、publicやprotectedの別アセンブリ内のconstを参照するときには埋め込まないでほしかったよ。
constはreadonlyにすればいいんだけど、enumが値の埋め込みになるのが痛い。
893デフォルトの名無しさん:2005/09/16(金) 09:57:52
.NET2.0SDKっていつでるの?
894デフォルトの名無しさん:2005/09/16(金) 10:00:20
>>887
俺は877じゃないし、現状、const でも readonly でも 877 の望むようなことはできないのはわかるけど、
バイナリイメージにそのまま埋め込むタイプの、固定長・中身 const の配列欲しくない?
System.Array 型にマッピングされるんじゃなくて。

>>892
いや、それは readonly でもなくて、public プロパティにしろって MSDN かなんかにかかれてたぞ。
public const にしていいのは、円周率 Math.PI みたいに、ほんとに絶対変わらない値だけ。
895デフォルトの名無しさん:2005/09/16(金) 10:00:32
VS2005発売開始と同時じゃね?
896デフォルトの名無しさん:2005/09/16(金) 12:08:54
public static readonlyにするのは、私の場合高機能列挙型作るときぐらいかな。
あと構造体の初期値。
897デフォルトの名無しさん:2005/09/17(土) 00:47:32
>>896
ハイハーイ。おれはこんなコード書くことが多いです

public static readonly Regex regex = new Regex(@"...", RegexOptions.Compiled);
898デフォルトの名無しさん:2005/09/17(土) 00:58:47
俺はそういうのは private で宣言するなぁ……
899デフォルトの名無しさん:2005/09/17(土) 01:12:41
なんでもpublicにするなよクソが
900デフォルトの名無しさん:2005/09/17(土) 01:14:37
そして再利用されないクラスが増えていく……
901デフォルトの名無しさん:2005/09/17(土) 01:36:38
疑問なんだけど RegexOptions.Compiled って目に見えて効果ある?
902897:2005/09/17(土) 02:04:33
あ、internal class内かprivate nest class内ね…
これかいとかないと確かにダメダメだ…orz
903デフォルトの名無しさん:2005/09/17(土) 02:11:51
>>901
気持ち速くなってる。
かなり頻繁に呼ばれないと最初のコンパイルのコストを取り返せないような、微妙。
もっと速くなると思ってたので期待はずれだった。
904デフォルトの名無しさん:2005/09/17(土) 02:27:32
より長く複雑なパターンだと、もっと顕著に効果が現れるのかもね
905デフォルトの名無しさん:2005/09/17(土) 11:48:45
2の補数表現で表されたバイナリデータ(16bit)があるのですが、
これを適切に読み込むにはどうしたらいいのでしょうか?
int data[]として、
data[i] = fs.ReadByte()<<8 + fs.ReadByte();
としているのですが、
0x0000が最小0xFFFFが最大として扱われてしまいます。
符号ビットによって場合わけして読みこむように自分でコードを書かないとだめなのでしょうか?
906デフォルトの名無しさん:2005/09/17(土) 12:03:33
16bitならInt16==short使えばいい話でない?
ついでにBinaryReaderとか(EOF検出が例外によるものしかないっぽいので使いにくいが)
907905:2005/09/17(土) 12:07:23
うほっ
intって32bitだってなぜか忘れてました orz...

(short)( fs.ReadByte()<<8 + fs.ReadByte());
でばっちりいけますた。
即レス多謝。
908デフォルトの名無しさん:2005/09/17(土) 13:12:49
.NETは、C++/CLIになるのに、なんでいまだにC#?
909デフォルトの名無しさん:2005/09/17(土) 13:48:57
C++/CLI?
なんじゃそりゃ?
910デフォルトの名無しさん:2005/09/17(土) 13:56:43
>>908
C++/CLIでASP.NETしてろよ。
911デフォルトの名無しさん:2005/09/17(土) 14:29:34
ASP.NET?
なんじゃそりゃ?
912デフォルトの名無しさん:2005/09/17(土) 15:54:51
デザイナでのコード生成に関しての質問です。

自作コンポーネントを作成して、プロパティにMyCollectionというクラスを作った場合
コードの自動生成で
MyCollection.AddRange( new AbstractClass[]{
new ClassA(), new ClassA(), new ClassB, new ClassB));

のように記述されるためにはどのようにすればよいのでしょうか?
http://www.comrade.co.jp/component/dotnetroom/kt_vsdn/kt_vs5b.htm#4
を見て単純な場合はうまくいったのですが、CollectionEditorをカスタマイズすると
追加された内容が反映されなくなってしまいます (コードが自動生成されない)

こんな感じのコード
[Editor(typeof(MyCollectionEditor), typeof(UITypeEditor))]
[Serializable]
public class MyCollection : IList{ /* */}
public class MyCollectionEditor : CollectionEditor{/* 具象クラスを何種類か選ばせて追加できるようなエディタ */}
913デフォルトの名無しさん:2005/09/17(土) 18:02:43
とりあえずこの辺見てみれば?
ttp://www.codeproject.com/csharp/DzCollectionEditor.asp
914デフォルトの名無しさん:2005/09/17(土) 22:55:07
ASP.NETが動く無料のサーバーってありませんか?
公開できないとなると作る気もなくなるので
915デフォルトの名無しさん:2005/09/17(土) 22:57:07
そんなの公開しても恥ずかしくないようなものができてからでも
遅くなくね?
916デフォルトの名無しさん:2005/09/17(土) 23:03:22
>>915の無能なレスにワロタ
微笑ましいね
917デフォルトの名無しさん:2005/09/18(日) 00:21:42
露骨過ぎる釣り
918デフォルトの名無しさん:2005/09/18(日) 00:30:28
>>914
ASP.NET デベロッパー センター ホスティング情報
http://www.microsoft.com/japan/msdn/asp.net/hosting/
919 :2005/09/18(日) 00:42:26
JAVA勉強してるのだけど、
JAVAからc♯へ移行ってどの程度かかりますか?
最終的にJSP サーブレットをある程度できるようになったら
.NETとasp.netも勉強しようと思ってます。
.NETのほうが簡単に見えてきて。
920デフォルトの名無しさん:2005/09/18(日) 00:51:11
>>919
本腰入れて学習が必要なのはASP.NETくらいかな?
VS.NETの使い方、.NET FrameworkのAPI、C#.NETの文法なんかは
それぞれ本一冊あればどうとでもなる。
921デフォルトの名無しさん:2005/09/18(日) 02:54:42
>>920
C# の文法とかはむしろ、ウェブ上の情報だけでも十分かも。
ほとんど Java だし。
922デフォルトの名無しさん:2005/09/18(日) 03:07:20
言語の違いなんてそうたいしたものではない。
JavaもC#もオブジェクト指向に根ざした言語なのだから、
片方で得られたテクニックなんかもそのまま適当できるっしょ。
923デフォルトの名無しさん:2005/09/18(日) 03:11:22
だから?
924デフォルトの名無しさん:2005/09/18(日) 08:14:03
あるメソッドから、別のメソッドを呼び出すとします。
別のメソッドで行う処理は数分かかるので、その処理が終わるまで
待つのは避けたいんです。
どうすればいいのですか?
925デフォルトの名無しさん:2005/09/18(日) 08:20:36
System.Threading.Thread

整合性に気をつけて
926デフォルトの名無しさん:2005/09/18(日) 11:01:27
WjnFormの場合Invoke/BeginInvoke/InvokeRequiredにも気をつけて
927デフォルトの名無しさん:2005/09/18(日) 11:17:01
delegateにメソッド入れてinvokeで呼び出せばマルチスレッドになるんでしたっけ?
928デフォルトの名無しさん:2005/09/18(日) 11:21:54
ならないよ
BeginInvokeの方
929デフォルトの名無しさん:2005/09/18(日) 11:24:34
d
930デフォルトの名無しさん:2005/09/18(日) 11:54:43
>>920
VS.NETの使い方が本一冊ぶんも書いてある書籍なんてあるの?
ちょっと気になるので、参考書名を教えて欲しいのですが。
931デフォルトの名無しさん:2005/09/18(日) 12:20:47
MSCOMMを使ってモデムとシリアル通信しようとおもうのですが、うまくいきません。
モデムと通信するための新しいスレッドを立てて、たとえばATなどを送信して、
返っていた文字列の最後が「OK\r\n」か「ERROR\r\n」になるまでループして待機、
ということをやっているのですが、
while(CommString.EndsWith("OK\r\n") || CommString.EndsWith("ERROR\r\n"));
のところで、「スレッドを中止しようとしました」との例外が出ます。
解決策をお願いします。


do
{

 CommString += ((string) mscomm.Input);

 //リソースを食い尽くさないように待機
 Thread.Sleep(100);

}while(CommString.EndsWith("OK\r\n") || CommString.EndsWith("ERROR\r\n"));

return CommString;
932デフォルトの名無しさん:2005/09/18(日) 12:28:40
>>931
> while(CommString.EndsWith("OK\r\n") || CommString.EndsWith("ERROR\r\n"));

訳:CommStringの末尾が"OK\r\n"か"ERROR\r\n"である限りループを繰り返せ
  そうでない場合はループを終了せよ
933デフォルトの名無しさん:2005/09/18(日) 13:50:03
.NETって普及しますかねえ?
934デフォルトの名無しさん:2005/09/18(日) 14:29:08
Windows環境での普及率なら既に JRE < .NET Framework だしょ
935デフォルトの名無しさん:2005/09/18(日) 14:44:51
Javaと同じで利用分野によりますね。
イントラWebや以前はVB6などで作ってた事務系システムの分野ではかなり使われてる。
Longhornが最初の予定通りなら利用分野が広がった可能性もあるがかなり後退してしまった。
んなもんで、大型のパッケージソフトやユーティリティ系のソフトはネイティブのC++が主流。
そんなこんなでシェアウェア作家あたりが.NET使えねーとかいってこういうスレッドで
暴れだす例が後を絶たない。
936デフォルトの名無しさん:2005/09/18(日) 15:58:17
>>933
分野にもよるけど今だにそんなこと本気でいってる人は少ないと思われ。
937デフォルトの名無しさん:2005/09/18(日) 16:01:58
普及しなかった、と。
938デフォルトの名無しさん:2005/09/18(日) 16:12:49
939デフォルトの名無しさん:2005/09/18(日) 16:17:30
つーかおれが普段使ってるPCに.NET入ってない時点で普及してるとはとても言えないナー
940デフォルトの名無しさん:2005/09/18(日) 16:17:39
コンテナコントロール上に透明な色にて描画したいのですが
(PhotoShopでいうレイヤーが常に透明な色で重なっている状態)

Graphicsで描画すると描画した直後はいいのですが
コンテキスト等でその領域に何か表示された後に
その無効領域を取得する方法がわかりません。

どうすればいいのでしょうか?

全部再描画かけてしまうと透明な描画が
2枚以上重なってしまう部分等があり悩んでいます。


941デフォルトの名無しさん:2005/09/18(日) 16:21:33
>>939
WindowsUpdateで入れようと思えば入れられるものを
入れてないから普及してないと言い張るのは根拠としてはいまいちだな。
942デフォルトの名無しさん:2005/09/18(日) 16:25:19
どうでもいいだろそんなことより940に誰か応えてやれよ
943デフォルトの名無しさん:2005/09/18(日) 16:32:08
>>931
MSCommってCOM(ややこしいな)でしょ?
COMってスレッドセーフ違うんじゃなかったっけ?
というか、0.1秒も眠らせるなら別にスレッドでやることないと思うんだが。

>>940
普通にOnPaintかPaintイベントで再描画するだけでしょ。
正直「どうすればいいでしょうか」なんて他人に質問する以前の問題だね。
944デフォルトの名無しさん:2005/09/18(日) 16:52:58
>>943
コンテナPaint→レイヤー描画→コンテナ無効領域発生
のコンボはどうするんだ?

945デフォルトの名無しさん:2005/09/18(日) 17:02:25
意味ワカンネ。
因果関係の順番が狂ってないか。
無効領域が発生したからOnPaintが呼ばれるわけだが。
946デフォルトの名無しさん:2005/09/18(日) 17:34:02
PointF[]で1000〜1M個くらいの座標リスト作って(Y座標のデータはMAX-10〜+10くらいなので拡大処理)
それを画面サイズ内で縮小して描画したいのですが、
普通にg.ScaleTransformしてからg.DrawLinesで描くと線が拡大されて表示が汚くなります。
座標データの位置だけを画面サイズに変換してその間を結ぶ線は細いままにしたいのですが
どうしたらいいでしょうか?

色々見る感じだと、g.TransformPointsってのがあるのですが、
System.Drawing.Drawing2D.CoordinateSpaceとかがよくわかりません。
よろしくお願いします。
947デフォルトの名無しさん:2005/09/18(日) 17:57:18
Penを細くしたらいいんじゃない
948946:2005/09/18(日) 18:01:20
自己レスです。色々見てたのですが、
Matrixを定義してやればいけるっぽいです。

グラフィクス周り触るのは初めてで変換行列の定義から読んでるので時間がかかりそうですが…

949デフォルトの名無しさん:2005/09/18(日) 18:18:25
Threadは、voidでかつパラメータ無しのメソッドでしか使えないんですか?
用途が限られてくると思うのですが。
950デフォルトの名無しさん:2005/09/18(日) 18:20:07
ようは、Javaのパクリじゃん
951デフォルトの名無しさん:2005/09/18(日) 18:21:13
そのためにそれ用のクラスを作るの。必要なパラメータと起動メソッド持たせて。別に不自由ないよ。
ちなみに.NET 2.0でParameterizedThreadStartってobjectを一つ引数に取るデリゲートが追加される。
952デフォルトの名無しさん:2005/09/18(日) 18:21:47
940とかぶるが

コンテナにいくつかコントロールが足されている場合
もともとのコンテナ領域分レイヤー描画ってどうするん?

普通に描画してもコンテナにコントロールが
足されていない部分は描画できるが
足されたコントロール上の領域にもかかなきゃならんやん

953デフォルトの名無しさん:2005/09/18(日) 18:28:32
>>951
なるほど、クラスを作るんですね。
954デフォルトの名無しさん:2005/09/18(日) 18:55:30
C#で角が丸い四角を描画する方法ってどんな感じになりますかね
Pointを8つ指定してDrawCurveを使うしかない?
955デフォルトの名無しさん:2005/09/18(日) 19:09:32
>>953
Thread じゃなくて Delegate を使えばよろし
956デフォルトの名無しさん:2005/09/18(日) 19:48:49
>>954
GraphicsPathを作ってAddLineとAddCurveを繰り返し、FillPath/DrawPath
957デフォルトの名無しさん:2005/09/18(日) 19:49:53
AddCurveじゃなくてAddArcだった……
958デフォルトの名無しさん:2005/09/18(日) 21:15:34
>>946
やりたいことがいまいちよく理解できないけど、
要は座標変換だけしたいってこと?
Graphics.PageScaleの使い方は知ってるのかなあ。

この辺は読んだ?
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/_gdiplus_types_of_coordinate_systems_about.asp
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnprogvbnet/htm/chapter18.asp
959デフォルトの名無しさん:2005/09/19(月) 00:28:58
非同期デリゲートがあれば、スレッドっていらないんじゃないの?
960デフォルトの名無しさん:2005/09/19(月) 00:30:49
いらないよ
961デフォルトの名無しさん:2005/09/19(月) 00:33:40
まじかよ
962デフォルトの名無しさん:2005/09/19(月) 00:34:57
まじだよ
963デフォルトの名無しさん:2005/09/19(月) 00:49:14
ちがうよ。要るよ。非同期デリゲートは ThreadPool の中で待機している Thread によって実行されてるんだよ
964デフォルトの名無しさん:2005/09/19(月) 00:54:51
つ、つれた
965デフォルトの名無しさん:2005/09/19(月) 01:03:44
な、なんだって〜
966デフォルトの名無しさん:2005/09/19(月) 01:07:21
そんな中学生みたいなやり取りして楽しいか?

まあリアルで厨房のとき友達がいなかったからそういう精神的成長段階を
卒業できてない可哀想な奴らなんだろうけど。
967デフォルトの名無しさん:2005/09/19(月) 01:19:14
StreamReader型をHashtable型に変換する方法をご存知の方がいましたら
御教授お願いします。
968デフォルトの名無しさん:2005/09/19(月) 01:22:50
ありません
969デフォルトの名無しさん:2005/09/19(月) 01:23:45
あ、ごめん。単純にキャストすればいいだけかも
970デフォルトの名無しさん:2005/09/19(月) 01:27:02
うむ。やはりキャストはだめだった。ということで 「ない」 が正解
971931:2005/09/19(月) 01:43:30
遅くなりました。
>>932>>943
ありがとうございました。
972デフォルトの名無しさん:2005/09/19(月) 01:49:54
質問です
[Q]キーを押した時にアプリケーションを終了させる事を意図して、
次のようなコードを書いたのですが、
qキーではなく、Shift+qキーを押さないと、思った通り終了してくれません。
qキーを押した事を拾うにはどのように書いたら良いのでしょうか・・・?
ご教示お願いします

protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e)
{
switch ((int)(byte)e.KeyChar)
{
case (int)System.Windows.Forms.Keys.Q:
this.Dispose();
break;
}
}
973デフォルトの名無しさん:2005/09/19(月) 01:57:54
Shift + q を押したら q になるようなキーボードレイアウトになってんじゃないの?
974972:2005/09/19(月) 02:00:59
>>973
PC2台で確認しましたが、両方とも駄目でした。
975973:2005/09/19(月) 02:05:33
switch ((int)(byte)e.KeyChar)
   => switch (e.KeyChar)
case (int)System.Windows.Forms.Keys.Q:
   => case 'q':

紛らわしいから間違えちまったよ
976名無しさん♯:2005/09/19(月) 02:13:45
次スレです。( ゚д゚)ノ
http://pc8.2ch.net/test/read.cgi/tech/1127063469/l50
977972:2005/09/19(月) 02:25:30
ああ、なるほど…
ありがとうございました
あと紛らわしくてすいませんでした
インデントしてたのですが反映されなかったもので…
978デフォルトの名無しさん:2005/09/19(月) 02:49:40
複数のコントロールでCreateGraphics()つかって
描画しようとしているのですが

各コントロールの描画を一端メモリ上に書き込んで
全てのコントロールでの描画を一括で画面に反映させるには
どうしたらいいんでしょうか
979デフォルトの名無しさん:2005/09/19(月) 10:15:38
ControlへのDrawStringについて質問です。
可変領域へ文字列を書き込む必要がありDrawStringしてるのですがうまくいきません。

例えば、FormのOnPaintをオーバライドして実行し
フォームをリサイズしてWidthを0にして、少しづつ大きくするとStringが描画されないのですが
どなたか解決方法を知っている人いますでしょうか
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint (e);
e.Graphics.DrawString("WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
this.Font, Brushes.Black, this.DisplayRectangle);
}
980デフォルトの名無しさん:2005/09/19(月) 10:24:38
ResizeRedraw?
981デフォルトの名無しさん:2005/09/19(月) 11:20:59
>>976
982946:2005/09/19(月) 11:35:11
>>958
二個目のリンクを発見してワールド変換することで対応しました。
一個目のリンクもよんで勉強します。

ご丁寧にありがとうございました。
983デフォルトの名無しさん:2005/09/19(月) 11:37:32
>>979
>this.DisplayRectangle
これの中身ヲチしてみた?
これって画面座標なんじゃないの?
コントロールGraphicsに描画するんだから、座標系はコントロールのクライアント座標を
つかわなきゃダメでしょ。

984979:2005/09/19(月) 12:14:20
>>980, >>983 解決しました。ありがとうございました
StringFormatのStringTrimmingをNoneに設定で解決しました。
(ResizeRedrawを有効にするのもOK)
985デフォルトの名無しさん:2005/09/20(火) 08:05:12
埋めないか
986デフォルトの名無しさん:2005/09/20(火) 16:24:16
うほ、いいC#
987デフォルトの名無しさん:2005/09/20(火) 16:35:11
            , '´  ̄ ̄ ` 、
          i r-ー-┬-‐、i
           | |,,_ C#_,{|
          N| "゚'` {"゚`lリ
             ト.i   ,__''_  !
          /i/ l\ ー .イ|、
    ,.、-  ̄/  | l   ̄ / | |` ┬-、
    /  ヽ. /    ト-` 、ノ- |  l  l  ヽ.
  /    ∨     l   |!  |   `> |  i
  /     |`二^>  l.  |  | <__,|  |
_|      |.|-<    \ i / ,イ____!/ \
  .|     {.|  ` - 、 ,.---ァ^! |    | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
__{   ___|└―ー/  ̄´ |ヽ |___ノ____________|
  }/ -= ヽ__ - 'ヽ   -‐ ,r'゙   l                  |
__f゙// ̄ ̄     _ -'     |_____ ,. -  ̄ \____|
  | |  -  ̄   /   |     _ | ̄ ̄ ̄ ̄ /       \  ̄|
___`\ __ /    _l - ̄  l___ /   , /     ヽi___.|
 ̄ ̄ ̄    |    _ 二 =〒  ̄  } ̄ /     l |      ! ̄ ̄|
_______l       -ヾ ̄  l/         l|       |___|
988デフォルトの名無しさん:2005/09/21(水) 01:00:59
いいこと思いついた。お前メモリの中でお漏らししろ
989デフォルトの名無しさん:2005/09/21(水) 01:44:25
それを許さないのがC#のいいところ。
990デフォルトの名無しさん
>>988
「これがホントのメモリリーク」
「山田君、座布団ぜんぶとっちまいな」
とか言いたいのかテメコノヤロウ