トップページ⇒tech
1001コメント351KB

C♯相談室 Part16

レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん♯NGNG

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


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

関連リンク
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D
0002名無しさん♯NGNG
過去スレ
Part15 http://pc5.2ch.net/test/read.cgi/tech/1083066815/
Part14 http://pc5.2ch.net/test/read.cgi/tech/1076933504/ (現在HTML化待ち)
Part13 http://pc2.2ch.net/test/read.cgi/tech/1071663456/ (ログ行方不明)
Part12 http://pc5.2ch.net/tech/kako/1066/10660/1066038651.html
Part11 http://pc5.2ch.net/tech/kako/1061/10612/1061262958.html
Part10 http://pc5.2ch.net/tech/kako/1051/10518/1051842450.html
Part9 http://pc2.2ch.net/tech/kako/1039/10396/1039646808.html
Part8 http://pc3.2ch.net/tech/kako/1032/10324/1032488831.html
Part7 http://pc3.2ch.net/tech/kako/1027/10275/1027531796.html
Part6 http://pc3.2ch.net/tech/kako/1022/10222/1022257078.html
Part5 http://pc3.2ch.net/tech/kako/1019/10195/1019533942.html
Part4 http://pc.2ch.net/tech/kako/1016/10165/1016597767.html
Part3 http://pc.2ch.net/tech/kako/1009/10094/1009473982.html
Part2 http://pc.2ch.net/tech/kako/1002/10024/1002468050.html
Part1 http://pc.2ch.net/tech/kako/977/977112364.html
0003デフォルトの名無しさんNGNG
C#のお勧めの参考書があれば教えてください。

いまはnagadon氏のメルマガバックナンバで勉強中です。
0004デフォルトの名無しさんNGNG
Webからhtmlを取得するのにこのような方法を取ってますが、何度も繰り返していると
「WebResponse res = req.GetResponse() as HttpWebResponse;」の箇所で何故か
”メモリが不足しています”というcatchできない例外が発生してしまいます。
メモリや不要リソースは意識してDispose()やnullしてるので、例外発生時でも余裕で700MBほど空いています。
一度に接続しているのは1本のみで、1本読み終わって次に移るようにしています。

色んなサイトのサンプル(@IT、Space仮面、緑単車等)で試して今は"as"でやってますが、
「HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;」を
「HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);」でやっていたときでも同じでした。

解決策のヒントだけでもおながいします。

// 最低限で書きましたが、実際にはそれぞれの処理でtry&catchしてます。
private void gethtml(string url, ArrayList htmlbuff) {
  ArrayList txt = new ArrayList();
  HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;
  webreq.KeepAlive = true;
  webreq.Timeout = 30 * 1000;
  WebResponse res = req.GetResponse() as HttpWebResponse;
  System.IO.StreamReader rd = new StreamReader(res.GetResponseStream(),
              System.Text.Encoding.GetEncoding("euc-jp"));
  while(true) {
    string str = rd.ReadLine();
    if(str == null) break;
    htmlbuff.Add(str);
  }
  rd.Close();
  res.Close();
}
00054NGNG
あ、「private void gethtml(string url, ref ArrayList htmlbuff) 」のref書き忘れてました。
実際にはrefついてます。
0006デフォルトの名無しさんNGNG
前スレに100件以上のフィールドがうんたらって話がありましたけど、
私の環境は2003なのに、100件以上のフィールドを持つテーブルを使用したところ
コマンド文の自動生成のところでエラーが出ました。
クエリビルダで数を減らしたところ、正常に各コマンドが生成されてました。

これは一体なぜですか?
0007デフォルトの名無しさんNGNG
>>4
再現しないなぁ……。
00084NGNG
取り込みルーチンをThreadでやってるせいなんでしょうか。

1)ArrayListに10個ほどのURLを入れる
2)読み込み用スレッドを起動
3)スレッド内で>>4のような方法で読み込み
4)全部読んだらスレッドを終了
5スレッドの終了を確認 (全て読み込み成功)

6)またArrayListに10個ほどのURLを入れる
7)読み込み用スレッドを起動
8)スレッド内で>>4のような方法で読み込み
9)ここでreq.GetResponse()で「メモリ不足」例外が発生
10)でも、例外を無視して”継続”を押すと何事も無かったかのように以後は正常に動作 (全て読み込み成功)

11)更にまた1〜を行っても、もう例外はでない

・・・というような感じで「メモリ不足」が発生するのは2回目のスレッド起動の1回目の
req.GetResponse()だけなんです。1回目や3回目以降のスレッド起動では発生しません。

しかもreq.GetResponse()で発生してるにもかかわらず、何故かエラーの内容が
「メモリ不足/System.Drwaing.dll」なので原因の特定もできずにまいってます。
00094NGNG
もしかしたらVS.NET20003のバグかもしれません。
Debugだと確実に再現するんですが、Releaseだと何の問題もありませんでした。
0010デフォルトの名無しさんNGNG
>>9
VC++ での話だけれども
バッファあふれのあるプログラムで Debug だと実行時エラーになるけれども
Release では実行時にエラーが出ないことがあったよ
0011デフォルトの名無しさんNGNG
>>10
その辺もチェックしてみます。
ありがとうございます。
0012デフォルトの名無しさんNGNG
アプリケーションのセットアップを作成して
デスクトップにショートカットを作成したのですが、
作成したショートカットにファイルをドラッグしても
禁止マークが出てしまいます。
ダブルクリックしてアプリケーションの起動は普通に
出来るのですが、原因が良くわかりません。
インストールしたアプリケーションより直接
ショートカットを作成した場合は普通にドラッグして
ファイルを渡すことが出来ます。

作成手順は
ファイルシステムの「ユーザのデスクトップ」に
ショートカットを作成し、以下のように設定しました。
Name:アプリ名
Arguments:(空欄)
Description:(空欄)
Folder:ユーザーのデスクトップ
Icon:(アイコン)
ShowCmd:vsdscNormal
Target:プライマリ出力
Transitive:False
WorkingFolder:アプリケーション フォルダ

です。

どこが問題なのか指摘していただければ幸いです。
よろしくお願いいたします。
0013デフォルトの名無しさんNGNG
C#でUPnP使いたい時に参考になるリソース教えてください
0014デフォルトの名無しさんNGNG
dobonで以下の記事を発見して、アプリケーションに関連
づけられている動詞の取得を試しているのですが
どうもデフォルトで起動する動詞が出ない気がします。
あと、動詞をコンテキストメニューのように日本語化
したいのですがそれもいまいち解りません。
もしご存知の方がおられましたらお教えください。
宜しくお願いいたします。

ttp://dobon.net/vb/dotnet/process/getverbs.html

0015デフォルトの名無しさんNGNG
>>14
自力でレジストリを参照するしか無いっぽいよ。
因みにProcessStartInfo.Verbsはアルファベット順に並ぶだけ。
ProcessStartInfo.Verbは自分で設定する用(デフォルトは空文字列)。
0016デフォルトの名無しさんNGNG
Anders Hejlsberg - Programming data in C# 3.0
http://channel9.msdn.com/ShowPost.aspx?PostID=10276

"On of the things that we are trying to think about deeply in C# 3.0 is this big gap
that I still see between general purpose languages and databases...
Anyone who's building an enterprise app is using both worlds...
There's certainly a lot of progress we can make by truly marrying these worlds...
It's nothing but mismatch. We gotta do away with that."


Xen(,Cω)取り込んで、Xen自身は陽の目を見ない、あるいはF#的な扱いってことかな?
0017デフォルトの名無しさんNGNG
Cω

しーふぐり?
0018デフォルトの名無しさんNGNG
(,Cω)
0019デフォルトの名無しさんNGNG
質問です。
C#で、SQL文でウェブサービスを使ってDataSetを取ってきてるのですが、
その最中に、
スレッド '<名前がありません>' コード 0 (0x0) で終了しました。
という文が、出力欄に出てきます。
データ量の多いものだと、4回くらい出てきます。
これが時間のかかる原因だと思っているのですが、
このメッセージの意味は何なのでしょうか?

よろしくお願いします。
0020デフォルトの名無しさんNGNG
初心者というか今から始める入門者です。
 オセロや将棋や囲碁を自分のPCで一からプログラムしたいのですがお勧めの
書籍&ソフトを教えてください
0021デフォルトの名無しさんNGNG
>>20
必要なソフト:Windows
本:「馬鹿でも分る日本語入門」

以上
0022●NGNG
ASP.NETで、CAB圧縮/解凍を行いたいのですが、いいコンポーネントは
ないですか。
0023デフォルトの名無しさんNGNG
>19
それは単に内部で起動されたスレッドの終了時
メッセージでは?

Webサービスは基本的に遅いね。
なので多少の遅さには目を瞑ってSOAPの相互運用性を
生かしたいときに粒度の大きいメソッドで作るのがコツ。
現場でもJavaとの相互運用案件ばっかりだしな。

DataSetなんて、ほとんど.NET前提なんだから
ASP.NET経由のリモーティングでもいいような気が
するよ。

0024デフォルトの名無しさんNGNG
>22
前スレ685
0025デフォルトの名無しさんNGNG
>20
二人用の将棋ゲームなら簡単だな
画面描画が中心だ

コンピュータと対戦できるようにするなら
大変そうだな
0026デフォルトの名無しさんNGNG
>>20
スレ違いな気はするけど、一応。

http://www.amazon.co.jp/exec/obidos/ASIN/4875934289/ref=pd_sim_dp_4/249-7917612-4955516
http://www.amazon.co.jp/exec/obidos/ASIN/4320026810/qid=1087559066/sr=1-5/ref=sr_1_10_5/249-7917612-4955516
http://www.amazon.co.jp/exec/obidos/ASIN/4320028929/qid=1087559066/sr=1-2/ref=sr_1_10_2/249-7917612-4955516
http://www.amazon.co.jp/exec/obidos/ASIN/4320029569/qid=1087559066/sr=1-3/ref=sr_1_10_3/249-7917612-4955516
http://www.amazon.co.jp/exec/obidos/ASIN/4320120744/qid=1087559066/sr=1-4/ref=sr_1_10_4/249-7917612-4955516
http://www.amazon.co.jp/exec/obidos/ASIN/4781907237/qid=1087559066/sr=1-8/ref=sr_1_10_8/249-7917612-4955516
0027デフォルトの名無しさんNGNG
streamreaderを使ってウェブを読み取ろうとするとたまに
データが欠落することがあるんですが下のコードって間違ってますか?

WebResponse response = request.GetResponse();
Stream recieveStream = response.GetResponseStream();
Encoding encode = Encoding.GetEncoding("EUC-JP");
StreamReader sr = new StreamReader(recieveStream, encode);
StringBuilder data = new StringBuilder();

int bufSize = 1024;
char[] buf = new char[bufSize];
int count = sr.Read(buf,0,bufSize);

while(count>0)
{
data.Append(buf);
count = sr.Read(buf,0,bufSize);
}
sr.Close();
recieveStream.Close();
response.Close();
0028デフォルトの名無しさんNGNG
C#でWinアプリを作成しています。
PictureBox上にマウス動作で描画するアプリなのですが、
そのままではPictureBoxがフォーカスを受け取らないので
カーソルキーでの操作等を実装しようとしたとき、ほかのコン
トロールに制御を奪われ困っています。
マウスでクリックしたとき強制的にフォーカスを移動したりした
のですが、スマートクライアントにするとエラーが出ます。
できればタブキーでフォーカスを受け取るコントロールにしたい
のですがどのようにすればよいのでしょうか。
アドバイスよろしくお願いいたします。
0029最凶VB厨房NGNG
>>27
たまにか?毎回最後欠落するだろ。
簡単にやるならsr.ReatToEndだったか忘れたが、それ使え。
0030デフォルトの名無しさんNGNG
>>29
Reatしてもいいですか?
0031最凶VB厨房NGNG
ワロタ。ReadToEndね
0032デフォルトの名無しさんNGNG
>>28
FormのKeypreviewプロパティを使えばどうですか?
0033デフォルトの名無しさんNGNG
>>29

27でつ。.net FWのヘルプにはstreamreader.readtoendはあんまり信頼性
がないからなるべく使わないでね、的なことが書いてあったのでreadでいったん
ですが、、、、

参考までに>>27のコードはどこがタコなんでしょう。
とりあえずきちんとゲットできているように思えるときもあるんですが
0034デフォルトの名無しさんNGNG
クリックとかのイベント時に音を鳴らしたいのですが、どうすればよいでしょう?
お願いします。
0035デフォルトの名無しさんNGNG
>>33
Streamから直接Readするってのは?
バイト配列を一旦MemoryStreamに納めて、後で文字列にエンコード。
//過去ログにサンプルコードがあったはずだがみつかんない……
0036デフォルトの名無しさんNGNG
>>35
今はこんな風にしてますがこれだと何の問題もありません。

MemoryStream ms = new MemoryStream();
int count;
while((count = recieveStream.Read(buf,0,bufSize)) > 0)
{
ms.Write(buf,0,count);
}

buf = ms.ToArray();
string data = encode.GetString(buf);

27のコードはなんかおかしいんだすかね、、、、
0037デフォルトの名無しさんNGNG
多分だけど、途中でエンコードが入ってしまうのがまずいんだと思う。
半端な長さまでダウンロード・バッファリングしたところでエンコードが発生するからじゃないかな。
0038デフォルトの名無しさんNGNG
同期で読むときは漏れはいつもこうしてる。
もちろんtry/catchも入れてるが。

ArrayList buff = new ArrayList();
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
WebResponse res = (WebResponse)req.GetResponse();
System.IO.Stream s = res.GetResponseStream();
System.IO.StreamReader r = new System.IO.StreamReader(s, System.Text.Encoding.GetEncoding("euc-jp"));
while(true) {
string str = r.ReadLine();
if(str == null) break;
buff.Add(str);
}
r.Close();
s.Close();
res.Close();
0039デフォルトの名無しさんNGNG
>>34
MMControl
0040デフォルトの名無しさんNGNG
これだけ言わせてくれ


「Unicode逝ってよし!」


と
0041デフォルトの名無しさんNGNG
ListBoxにおいて、MouseWheelイベントを使って、独自のスクロールを
させたいのですが、何もしなくてもWheelで動いてしまうため、
動きがバッティングしてしまいます。
Wheelを完全に横取りするにはどうすればよいでしょうか。
宜しくお願いいたします。
0042デフォルトの名無しさんNGNG
>>41
hook
0043デフォルトの名無しさんNGNG
早速の返事ありがとうございます。

キーワードより以下のページを見つけました。
http://support.microsoft.com/default.aspx?scid=kb;ja;318804

色々試して見ます。
004441NGNG
うーむ、難しいっす
0045デフォルトの名無しさんNGNG
Javaみたいにメソッドとかを非推奨に指定して
そのメソッド呼び出しを含むコードをコンパイルすると
warningが出るようにする方法ってないでしょうか?
0046デフォルトの名無しさんNGNG
>>45
Obsolete Attribute使えばいいんじゃないかな。
0047デフォルトの名無しさんNGNG
C#のプロパティって結局メソッドとあまり変わらないじゃん?
Java派の俺から見たら混乱を生むだけのゴミに過ぎん。
0048デフォルトの名無しさんNGNG
なんか痛い人が...
0049デフォルトの名無しさんNGNG
Javaのget/setって結局プロパティとあまり変わらないじゃん?
C#派の俺から見たら混乱を生むだけのゴミに過ぎん。
0050デフォルトの名無しさんNGNG
sageて書き込んでは説得力無し。
005145NGNG
>>46
こいつを探してたんです。
ありがたいです。
0052デフォルトの名無しさんNGNG
>>50
ageてる方が厨房。
0053デフォルトの名無しさんNGNG
FontクラスのインスタンスからToString()で文字列形式に変換したのですが、
この変換後の文字列を再びFontクラスのインスタンスに戻すことはできますか?

つまりこういうことです
  Font → string → Font
なぜこんなことをやっているかというと、XMLにシリアライズするときに
Fontをダイレクトにシリアライズできないのでいったん文字列を
経由するというわけです。
ヘルプを読んでもこの逆方向のメソッドが見あたりません・・・
よい手だてがありましたら教えて頂けると幸いです。
よろしくお願いいたします。
0054デフォルトの名無しさんNGNG
>53
カスタムシリアライゼーションやるんでしょ?じぶんでFontつくればいいじゃない
0055デフォルトの名無しさんNGNG
>>54
そうです。
仕方ないので、フォント名、色、サイズについて抽出して
保存することにしました。
書式に関しては使うつもりはないので。

Colorについても同様の現象で困ってるのですが、
Color.Nameで抽出した文字列からColor型のインスタンスにすることは
できないのでしょうか?
Fontと違って構造体だからコンストラクタもついてないんですよね・・・
0056デフォルトの名無しさんNGNG
Colorに関してはColorTranslator.FromHtml(string)
でいけました。
Fontなんてよく使うクラスがシリアライズできないなんて
不便ですね・・・
0057デフォルトの名無しさんNGNG
FontConverterクラスで
0058デフォルトの名無しさんNGNG
基本的にこの辺の奴はTypeConverterを使うのが簡単。
0059デフォルトの名無しさんNGNG
スクロールバーをクリックしたときのイベントハンドラって
存在しないんでしょうか。

ttp://dobon.net/vb/dotnet/control/firescrollevent.html
これを試してみましたが、フォーム上のパネルの
スクロールバーをクリックしても何の通知も来ませんでした。
(フォームのスクロールバーのみ可?)
0060デフォルトの名無しさんNGNG
>>59
>  スクロールバーをクリックしても何の通知も来ませんでした。
Formの子クラスでWndProcをオーバーライドしてない?
メッセージを受け取るコントロールでオーバーライドしないと駄目だよ。
その場合なら
public class ScrollPanel : Panel {
   protected override void WndProc(ref Message m) {...}
}
ScrollPanel panel1 = new ScrollPanel();
//以下略
006159NGNG
>>60
早いレスをありがとうございます。いけました。
C♯って、かゆところへ変に手が届かない場面が多々で
先行き不安です。
0062デフォルトの名無しさんNGNG
EmEditor のように JavaScript や VBScript を使うことは可能でしょうか?
Microsoft.JScript を試してみましたがなんか違うような・・・。
0063デフォルトの名無しさんNGNG
があ、何がやりたいんだ???
0064デフォルトの名無しさんNGNG
>>61
そういうのは特殊だからな。
嫌ならスクロールバー単体を自前で貼り付けろ。
0065デフォルトの名無しさんNGNG
単なるクリックならコントロールでイベント発生させなくても
MouseDownで座標チェックすればいいんじゃ?
0066デフォルトの名無しさんNGNG
vb6で使ってたOcxをC#でも使って見ようと思って乗せて見たんですが、
Ocxのあるメソッドを使うとSystem.NullReferenceExceptionが発生します。

最初はエラーすら出なかったんですが、try/catch をつけたら例外出してる所を
見つけました。が、なんでSystem.NullReferenceExceptionなのかがわかりません。

そのメソッドに渡してる変数の中身は、デバッグウィンドウで確認しましたが
空ではありませんでした。

Ocxの使用はC#で何か特に注意事項ってあるんでしょうか?
0067デフォルトの名無しさんNGNG
>>66 これ?
スレッド: VB6.0で作成したユーザーコントロールについて
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=10836
0068デフォルトの名無しさんNGNG
>そういうのは特殊
スクロールバーのクリックを取得するのって特殊かなあ。
それよりスクロールバーコントロールを貼りつける方がよほど特殊かと。
バーの描画やスクロール位置も全部自前で行わないといけなくなるし、
パネルの右下が
  V               V
>□    ではなく    >    とか    >V    
になるんじゃない?
実用上は問題ないかもしれないけどスマートじゃないなあ。

>MouseDownで座標チェックすれば
MouseDownはクライアント領域上でないと発生しないから、
スクロールバーのクリックは検知できないよ。
0069デフォルトの名無しさんNGNG
.NETがラップしてない部分をDllImportで書いてゴリっちゃうのは難しくないが、
将来的に互換性が不安。
0070デフォルトの名無しさんNGNG
多分当分は大丈夫だと思うけど。
LonghornでWinFXになっても、Win32APIのDLLはManagedのラッパとして残るだろうから。
二度手間でパフォーマンス低下は当然だが。
007162NGNG
>>63
EmEditor のようなことがしたいのです。
たとえば、文字列操作など
0072デフォルトの名無しさんNGNG
>>71
WSHとかを使うのなら、アセンブリをCOMに登録するのが基本。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconExposingNETFrameworkComponentsToCOM.asp

簡単な物なら自前でインタプリタそのものを作ってみても良いかもしれんけどね。
0073デフォルトの名無しさんNGNG
単刀直入に聞こう。
C#でネトゲを作ることはできるか?
0074デフォルトの名無しさんNGNG
おまえならできる。
0075デフォルトの名無しさんNGNG
>>68
MouseDownをoverride
0076デフォルトの名無しさんNGNG
>>73
DirectX使えるんだからできるでしょ。
0077デフォルトの名無しさんNGNG
>>73
単刀直入に言おう。
お前にはできん。
俺が10年は保証する。
0078デフォルトの名無しさんNGNG
タイプライブラリを公開してないDLLから取得できる
生のCOMインタフェースポインタを触る必要がある場合
どうするのがいいんでしょう
0079デフォルトの名無しさんNGNG
>>78
リフレクションかレイトバインド。
VB.NETの方が扱いが楽。
0080デフォルトの名無しさんNGNG
>>79
回答ありがとうございます
ええとそれはDispatchインタフェースの場合の話でしょうか?
私が想定しているのは、(Extended)MAPIでして
Dispatchじゃなくてtypesafeなインタフェースポインタが取れるんですが
typelibはないんです。
同じ話になりますか?
0081デフォルトの名無しさんNGNG
>>80
ほれ。
http://g8.cx/mapi/
0082デフォルトの名無しさんNGNG
>>81
あ、実はそこは調べて発見したのですが

オープンソースでないのでちょっと不安というのと
私の環境ではエラーになっちゃうみたいで……
mscorlibのバージョン違いなのかなと思われるんですが
0083デフォルトの名無しさんNGNG
何度もすいません。C#でUPnPを使うサンプル等あれば教えてください。
0084デフォルトの名無しさんNGNG
IntelのUPnP SDKあたりをみてみては?
0085デフォルトの名無しさんNGNG
分数や循環小数を結構正確に扱うクラスまたは構造体を作ろうと考えています。
クラスと構造体、どちらで作ったほうがいいでしょうか?
0086デフォルトの名無しさんNGNG
意味的には値型の方が相応しいだろうね。
派生させる必要がない限り構造体の方が良いんじゃないかな。
0087デフォルトの名無しさんNGNG
メモリはガベコレが解放するけど、GDIリソースは自前で解放するルールみたいですが、
Brushを解放しないままアプリが落ちちゃった場合、リソースは解放されますか?
また、staticでBrushを保持して、Disposeなしでアプリ終了したときはどうですか?
0088デフォルトの名無しさんNGNG
>>87
ランタイム終了時にきちんと開放されるから心配するな。

> メモリはガベコレが解放するけど、GDIリソースは自前で解放するルール

これはあくまでアプリを長期起動したり、リソースの確保が頻繁な場合の話。
0089デフォルトの名無しさんNGNG
>>87
APIなどでOSのリソースを直接使用した場合はOSの仕様で決まる。
NT系OSなら大丈夫だ。9x系は怪しそう。
0090デフォルトの名無しさんNGNG
>>89
でもストリームは自分で閉じなきゃダメでしょ?
StreamReaderとか。
0091デフォルトの名無しさんNGNG
覚えても反復しないとすぐ忘れてしまう。
皆さん物覚えがいいですね
0092デフォルトの名無しさんNGNG
>>91
年ですね。引退を考えた方がいいかも。
0093和田NGNG
プログラミングなんて所詮暗記力が命だからな
0094デフォルトの名無しさんNGNG
>>91
体に痛みを与えると記憶力が上がる。
ストレッチをしながら本やドキュメントを読むと
もしかしたらスっと頭に入る、かも。
ストレッチといっても激痛を感じる程にやるんだぞ。
試してみることを勧める。
0095和田NGNG
>>94はおれ
0096デフォルトの名無しさんNGNG
ListViewについて教えてください。

あるArrayListの内容を1データずつ取り出してListViewItemを作成して、
ListViewに入れたとします。
ListViewからSelectedItemsで取り出したものとArrayListのデータを
結び付けるにはどうすればよいのでしょうか?
選択されたものをArrayListから消したいんです。
0097デフォルトの名無しさんNGNG
>>96
ArrayListの中に入ってるデータのクラスに依るけど。

一番手っ取り早いのは、各ListViewItemのTagプロパティにそれぞれのArrayListから取り出したデータを入れとくことだ。
こうしとけば、
foreach (ListViewItem item in listView.SelectedItems)
   arrayList.Remove(item.Tag);
だけで済む。
0098デフォルトの名無しさんNGNG
プログラムのX印を普通に押したときの終了処理と、VSStudioの■の停止ボタン押したときの終了処理って
何が違うんでしょか?

デバッグ中、■ボタンならエラーがでらんのですが、フォームのXで終了するとエラーが出ます。
なして?
0099デフォルトの名無しさんNGNG
>>98
強制終了させてる
0100デフォルトの名無しさんNGNG
>>90でもストリームは自分で閉じなきゃダメでしょ?
>>89が言ってる意味では別に駄目じゃない、別の意味で普通は駄目だけど。
「ストリームは自分で閉じなきゃダメ」の意味を取り違えてないかい?
0101デフォルトの名無しさんNGNG
>>98そりゃあんたのプログラムに問題があるからだろう。
0102デフォルトの名無しさんNGNG
>>87
最終的には普通OSがちゃんと開放するし、
Disposeがある奴は標準のクラスならFinalizeで開放されるから、
普通は大丈夫。普通はね。
0103デフォルトの名無しさんNGNG
>>98VSStudioってなんじゃらけ?
何が違うってか、全然違う。
0104デフォルトの名無しさんNGNG
ハンドルが足りなくなったときにGCしてくれるかというと
んなことはないので結局ダメだよ
0105デフォルトの名無しさんNGNG
>>104そういう意味ではもちろん駄目なんだが、
今の話はアプリが終了した場合の話だから、
こちらの意味では別に大丈夫なんでないの?
0106デフォルトの名無しさんNGNG
C#の普及は進んできてるようですが、実行速度とかはどうなんでしょうか
0107デフォルトの名無しさんNGNG
単純に実行速度自体は思ったより早い。
WindowsForm関連は遅い。
ってのが何となくの印象。
0108デフォルトの名無しさんNGNG
JAVAよりは早いな
0109デフォルトの名無しさんNGNG
初回起動時は致命的に遅いけど、後は普通。
初回起動時の重たさもJAVAの重さに比べれば許せないほどじゃない。
0110デフォルトの名無しさんNGNG
Socketクラスでホストの移行を処理するにはどうすればいいんだ。
DirectPlayならHostMigrateイベントを処理して終了なんだがなぁ。
0111デフォルトの名無しさんNGNG
起動と終了は遅いね。

実行中の速度に不満を感じたことはない。
++コンパイラのノウハウが継承されてるんだろうからそれなりに最適化はされてるんだと思う。

メモリは新しいものを無尽蔵に使っていくみたいだから、メモリ周りに関してはその場その場で
やり繰りしている++よりは速いかもしれない。
ただしメモリに余裕のある環境だけね。メモリ少ないと頻繁にGC発生して遅くなるかも。
0112デフォルトの名無しさんNGNG
例えばほかのプロセスをアクセス禁止にしてFileStream開いて、閉じ忘れると、GCが開放するまでほかのプロセスが開けなくなるし、
GCがいつ開放するかはわからない。ただ必ず開放されることは確か。
0113デフォルトの名無しさんNGNG
それはGCとはまた別のネタだな。ってか相談しろ。
0114デフォルトの名無しさんNGNG
> 112
そういう時のための IDisposable(と言語組み込みの using (...) { ... } pattern)

# IDisposable を実装する場合は ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconfinalizedispose.asp この辺りを参考に…
# ただ IDisposable を実装しても、そいつを複数箇所から参照してる場合は『誰が責任持ってツブすのか』という問題は結局 programmer の責任なんだけど

>111

領域取得に関しては Generation 0 heap が尽きていなければ、通常の malloc よか速い…とかなんとか MSDN のどっかに書いてあったよーな記憶があります(単に使えるとこを頭から切り出してるだけですから)

GCに関しては頑張って実装してるような印象です。あまり酷い目にあったことが無いからなのかもしれませんが。
0115デフォルトの名無しさんNGNG
GC 便利なんだけど、確かに C++ のときより激しく .Close() とか .Dispose() とか書かされてるな・・・
0116デフォルトの名無しさんNGNG
C#.NET でのデバッグについて質問です.
デバッグ中のアプリのどのオブジェクトがどれだけメモリを使って
いるかを一覧でみるような事はできないでしょうか?

OutOfMemory Exception が出るのですが,一体どのオブジェクトが
メモリを食っているのかがわからなくて困っています.

よろしくお願いします.
0117デフォルトの名無しさんNGNG
使用メモリが1GBくらいになると問答無用で
OutOfMemoryException出たような気がするけど、
それとは違うの?



0118デフォルトの名無しさんNGNG
>>116
CLR Profiler
0119デフォルトの名無しさんNGNG
あんまりWindows環境開発経験ない漏れが質問です。
フォームの継承って多用しても問題ないの?

なんか隣の香具師がフォーム継承したらフリーズするってぶつぶつ言ってんだけど。

明日までに似たようなフォームを持つシステム10本くらい作れって言われたんだけど
いっこいっこフォームつくるのめんどいから継承しちゃいたいのさー。
あんま考えずにやって問題ない?

間抜けな質問ならごめんよ。
0120デフォルトの名無しさんNGNG
>>119
フォームに限らず継承するつもりのクラスはある程度考える必要があるべ。

単にコントロールの配置が同じフォームの派生クラスを作る、
というならあんまりエラーは起きないと思う、
0121デフォルトの名無しさんNGNG
>>117
stringやEncode.GetBytesを多用するループを書いたら、あっという間にメモリリークしたよ。
使い終わった変数にnullを代入しても同じ。
さんざん悩んだ挙句、null後にGC.Collectしてみたら嘘のようにエラーは無くなった。
0122デフォルトの名無しさんNGNG
メモリリーク?
メモリ枯渇じゃなくて?
0123デフォルトの名無しさんNGNG
>>121具体的にどんなプログラム?
0124デフォルトの名無しさんNGNG
>>121
メモリリークじゃなくて単に新しい領域を食いまくってるだけでしょ?
.NETだとnullしたって枯渇してない限りはどんどん新しいとこ使いまくるわけだから。

メモリリークっていうのはメモリが確保されたまま、そのアプリを終了しても
永遠に開放されない場合のことをいうのであって、いつかは開放されるのなら
それはメモリリークではない。

そいつをアプリAとして、もう一つGC.Collect()するだけのアプリBを作ってみ。
「メモリ確認→アプリA実行→メモリ確認→アプリA終了→メモリ確認→アプリB実行→メモリ確認」
これで開放されてるならそれはメモリリークとは呼ばない。
0125デフォルトの名無しさんNGNG
>メモリリークっていうのはメモリが確保されたまま、そのアプリを終了しても
>永遠に開放されない場合のことをいうのであって、いつかは開放されるのなら
>それはメモリリークではない。
無意味な定義だなこれ
0126デフォルトの名無しさんNGNG
>>120
レスさんくす。

となりのやつのフリーズするソースを見てみた。
基本フォームにコンボボックスが3つある。
3つのコンボに対応してるオブジェクトがインスタンス時にDBから値をとってきてるらしい。
3つのオブジェクトは基本クラスのコンストラクタでインスタンスしてる。

それをフォームロードで連結してるだけなんだけど、実際にフリーズしてる・・。

なんだろ、そいつのマシンのスペックの問題かな?
0127デフォルトの名無しさんNGNG
>126
それは本当に"フォームの継承"が問題なの?
複数のフォームから同時に処理にいってデッドロックしてるとか、
継承元にある(protected staticな)共有オブジェクトを継承先でも使って状態を破壊してるとか。


0128デフォルトの名無しさんNGNG
>>127
継承先では何もしてないっぽい。
見てみると、継承ピッカー?なるもので、VSから派生フォームを自動的に作ってるみたいなんだけど。
その時点でフリーズしちゃってるみたい。
ローカルのプロジェクトフォルダにCSファイルは出来てるらしい。

基本クラスのイベントとかが怪しいなーと思ってるんだけど。

基本クラスのフォームロードイベントとか、ちゃんと正常に動くのかな?
0129デフォルトの名無しさんNGNG
PropetyGrid
0130デフォルトの名無しさんNGNG
>>126
スレッド考慮してないからでねーの?
0131129NGNG
失礼しました。

PropertyGridをUIに使ったアプリを作っています。
PropertyGridで操作するオブジェクトのプロパティがStructまたは
オブジェクトの配列の場合、値の変更がキャンセルされてしまいます。

ただ普通にstruct Pointなどへの設定は有効ですのでstructの定義もしくは
使用するTypeConvertorに一工夫必要なのだと思うのですが。
どなたが情報をお持ちではないでしょうか?


0132129NGNG
あげ忘れてた…
サンプルです。

public class Test
{
public Test()
{
}

//反映される
public Test1 t1
{
get { return _t1; }
set { _t1 = value; }
}
Test1 _t1= new Test1();
//反映されない
public Test2 t2
{
get { return _t2; }
set { _t2 = value; }
}
Test2 _t2;
}

0133129NGNG
つづき
[TypeConverter(typeof(ExpandableObjectConverter))]
public class Test1
{
public string t1
{
get {return _t1;}
set { _t1 = value; }
}
string _t1;
}

[TypeConverter(typeof(ExpandableObjectConverter))]
public struct Test2
{
public string t2
{
get {return _t2;}
set { _t2 = value; }
}
string _t2;
}
0134デフォルトの名無しさんNGNG
>>130
すまぬ・・・漏れがスレッドをイマイチ理解してない。

そいつのソース貰って、基本クラスの
コンストラクタ内の処理・各イベントを全部コメントアウトしたらフリーズしなくなった。

フォームロードとかのイベントは、派生フォームでやればいいってことなのかな。
でもそれじゃ意味ないよね・・。
0135デフォルトの名無しさんNGNG
モーダルフォームについて質問させてください。

メインのフォーム(A)から、Bフォームをモーダルで表示させ、

dlgA DlgB = new dlgB();
DlgB.ShowDialog();

Bフォームで何らかの処理が行われたときに、Cフォームを処理選択用にモーダル表示します。

dlgA DlgC = new dlgC();
DlgC.ShowDialog();

で、Cフォームに「終了」「キャンセル」のようなボタンを配置し、「終了」が押された時、Cフォームで
Close();を行うとBフォームも終了してAフォームまで戻ってしまいます。

処理としては、Cフォームのみ消して、Bフォームに処理を戻したいのですが、なんか処理の仕方を
間違えておりますでしょうか?

 よろしくお願いいたします。
0136130NGNG
んー、派生フォームの方にイベントなど書いてコンパイルしたら動いた。

けど・・・。
派生フォームをVSから表示(デザイン画面)するとフリーズする。
実行は出来るのに、なんでだろ。
これじゃ編集できねーいw
0137デフォルトの名無しさんNGNG
>134
コンストラクタでDBを見に行っているせいで継承元と派生側と二重にDBアクセスして
コンストラクタで例外飛んじゃってるとか?

>135
普通は勝手に他のフォームを閉じたりはしませんが。
書かれているコードもよくわからないし
(型はdlgAではなくdlgBとかdlgCでないの?)
そもそもデバッガで追っかければわかる内容では?
0138デフォルトの名無しさんNGNG
>136
デザイン時にもインスタンス化の処理は走るから、Component.DesigneModeを参照して
デザイン時はDB処理をしないようにすればよいのでは?
0139デフォルトの名無しさんNGNG
>>133
TypeConvertorを継承してTest2StructConvertorとでも作って
ExpandableObjectConverterの代わりに与えれば可能だとは思うが、
もっと簡単なやり方があったらごめん。
0140130NGNG
>>137
レスありがとねー。感謝。
ちょっと流れをまとめてみる。
考え違いあったらつっこんでください。

1.基本クラスで、コントロールの配置をしている。(コンボ3つ)
2.基本クラスで、各コンボのイベントプロシジャを定義。(イベントハンドラに追加)
3.派生クラスで、コンボ3つに対応する3のオブジェクトをインスタンス。DB接続しデータ取得。
4.派生クラス、Form_Loadイベントで、オブジェクトとコンボを関連づける。

これでやってみて、コンパイルし実行も成功。
しかし、デザイン画面で派生フォームを編集しようとするとフリーズ。開かない。

2.でイベントハンドラに追加せずに、派生クラスでイベントハンドラに追加。
これだとデザイン画面でも開ける。

んー。イベントプロシジャの定義は基本クラスでやって良いけど、ハンドラに追加は派生クラスじゃないと
だめってことかな。

長文ごめん。
0141135NGNG
試しに、Form ABCだけの単純なコード書いたらちゃんと動作しました。

そんなトリッキーな事やった覚えはないんですが・・もう一度ソース見直して、
報告いたします。
0142デフォルトの名無しさんNGNG
>139
サンクス。
何の型に対して、どのメソッドをオーバーライドしてやればよい?
よくサンプルとかに出てくるstringに対する変換は非展開時の表示・編集用だよね…
0143デフォルトの名無しさんNGNG
>>131
ExpandableObjectConverter内のConvertFromメソッドが、
受け取ったパラメータのプロパティを直接弄ってるのが原因と見た。

ExpandableObjectConverterを継承したTest2Converterクラスを作って、
bool CanConvertFrom(ITypeDescriptorContext, Type)
objectConvertFrom(ITypeDescriptorContext, CultureInfo, object)
object ConvertTo(ITypeDescriptorContext, CultureInfo, object, Type)
辺りをオーバーライドしてやればいける。
ヘルプの「型コンバータの実装」参照。

……残った問題は、各プロパティをグリッド上で編集しても即座には反映されないって事だ。
(ex.)
+Test2  hoge
  t2    hoge    //ここをfooに書き換えてもTest2のhogeが書き換えられない。Test2にフォーカスを当てた時に書き換えられる。
                //実際のTest2オブジェクトのプロパティは書き換えられているんだが。
0144143NGNG
速攻で訂正。
//私こそヘルプを良く読め。

オーバーライドするのは
object ConvertTo(ITypeDescriptorContext, CultureInfo, object, Type)
bool GetCreateInstanceSupported(ITypeDescriptorContext)
object CreateInstance(ITypeDescriptorContext, IDictionary)
だ。
0145デフォルトの名無しさんNGNG
>>143
ポイントはCreateInstance()とConvertToでのInstanceDescriptorに対する処理みたいですね。

英語だと割とマンマの内容の記事を見つけました。
ttp://www.morganskinner.com/Articles/AStructTypeConverter/
今googleのキャッシュでしか読めませんが。
0146デフォルトの名無しさんNGNG
byte[0],byte[1]をushortに型変換するとか
ushortを型変換してbyte配列に入れるとか
出来る関数ってのはBASEライブラリにはないでしょうか?
0147デフォルトの名無しさんNGNG
>>146
BitConverter
0148デフォルトの名無しさんNGNG
>>146
System.BitConverter
0149デフォルトの名無しさんNGNG
なぜかBitConverterは影が薄いよなぁ。
0150デフォルトの名無しさんNGNG
>>147-148
さんくす
0151デフォルトの名無しさんNGNG
・必要な場面が微妙
・自前で関数書くのも大した手間じゃない

からなー。
//BitConverter.IsLittleEndianは(自前で関数書くときも)重要だが
0152デフォルトの名無しさんNGNG
C#って
クラス名(文字列)からインスタンスって生成できますか?

Hoge createInstance(string className)

というメソッドが有って
こいつに"Hoge"とか"ExtendHoge"とか文字列を渡すと
対応したクラスのインスタンスを返すことってできますか?
0153デフォルトの名無しさんNGNG
>>140
構成ファイルに接続文字列出してたりしてんじゃないの?
基底のフォームが例外で落ちてるってのがいかにもありがち。
ってかそういう突っ込みあるのに確認してないのか?

ちなみに、デザイナで表示してるフォーム自身は完全に動作してなくても
デザイナで表示は出来たりするが、その継承元はちゃんと動作して無いと
駄目な用に思う(なんか、そんな感じに動いてるっぽい)。
だから、デザイナで表示してるフォーム自身が例外はいてるときは
デザイナ自体はちゃんと動いたりする。
※結局、デザイン時に例外はくようなフォームは作るなってこった。
0154デフォルトの名無しさんNGNG
>>152ActivatorとかTypeとか調べろ。
0155デフォルトの名無しさんNGNG
>>152
書き込みに使ってるキーワードだけで、山のように見つかったぞ。
2ちゃんに書き込む時間があったらぐぐった方が早いのくらい知っとけカスが。

カスでも分かる一例
ttp://dobon.net/vb/dotnet/programing/createinstancefromstring.html
0156デフォルトの名無しさんNGNG
C#やる前に言語の特徴の一覧ぐらい見ないのか?
0157デフォルトの名無しさんNGNG
MSDN TV: Whiteboard with Anders Hejlsberg
http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20040624CSHARPAH/manifest.xml
0158デフォルトの名無しさんNGNG
IEの標準の接続設定で自動構成スクリプトを使用している場合の
プロキシを取得したいのですが何かいい方法はないでしょうか?
System.Net.WebProxy.GetDefaultProxy()を使っても自動構成スクリプト
を使用している場合、プロキシを取得できないみたいなのですが……。
0159152NGNG
>>154
>>155
サンクス次からはちゃんと調べるYO
0160デフォルトの名無しさんNGNG
クラス名・メソッド名・変数名に2バイト文字使えること最近知ったんだけど、2バイト文字にすると何か問題ありますか?
0161デフォルトの名無しさんNGNG
かっこ悪い
0162デフォルトの名無しさんNGNG
オープンソースであなたが使う2バイト文字がうまく表示できない人に見てもらわない限り大丈夫じゃん?
0163デフォルトの名無しさんNGNG
そもそも文字コードがUTF16で管理される以上、2バイト文字という表現っておかしいよな。
0164デフォルトの名無しさんNGNG
>>163
ああ、そうだった
0165デフォルトの名無しさんNGNG
ttp://bunzin.s33.xrea.com/cgi-bin/up/img/amf1048.gif
C#をインスコしたら、上のようなダイアログがでてきて起動できない・・・orz
環境は
Windows2000
pentiumIII600
メモリ:514MB
で、インスコしたのは、Visual C#.net Standard version2003 アカデミック
です。
なにか、対策はありませんか??
0166デフォルトの名無しさんNGNG
>>165
それまで割れ物のVS.NET使ってたろ。
0167165NGNG
いえ、それまでは、VS.netC++のアカデミックつかってますた・・・。それも購入したやつです。
原因がわからんヽ(`Д´)ノ
0168デフォルトの名無しさんNGNG
adminで入れてないとか?
0169165NGNG
Administratorでインスコして、Administratorで起動したんですがうまくいきませんですた・・・。
.netとframeworkをアニンスコして再インスコしてみます。
成功しても失敗して報告しますんで・・・よろしく・・・orz
0170デフォルトの名無しさんNGNG
>>160
IME立ち上げるのが面倒。
0171デフォルトの名無しさんNGNG
>>160
スペースでなにか問題起こさなかったっけ?
0172165NGNG
だめだ。なおらん!!でも、ダイアログを表示したままならソフトが動くみたいだから、しばらくそれでやってみようかしら(´・ω・`)
0173デフォルトの名無しさんNGNG
.NET Frameworkにコンパイラ付いてるんで、
これだけでもプログラム開発できるみたいね。
SDKを入れると何がインストールされるん?
0174デフォルトの名無しさんNGNG
>>173
ライブラリとか
0175デフォルトの名無しさんNGNG
>>174
てことは、フレームワークだけだと利用できるクラスに制限があるってことか。
ありがと。
0176デフォルトの名無しさんNGNG
enumに対するXMLドキュメントってどう書けばいいんですか?
enumの定義とは無関係にlistでちまちま書かないと駄目なんですかね。
0177デフォルトの名無しさんNGNG
>>175
制限ないし。
0178デフォルトの名無しさんNGNG
>>176
VSのインテリセンスに有効な書き方は以下の通り。

///<summary>何らかの状態</summary>
public enum Hoge {
   ///<summary>状態A</summary>
   StateA,
   ///<summary>状態B</summary>
   StateB
}
0179デフォルトの名無しさんNGNG
>>178
ありがとうございます。その情報ってどこに載ってますか?
このあたりを一通り読んでみたんですけど・・・
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vcwlkxmldocumentationtutorial.asp
0180デフォルトの名無しさんNGNG
>>179
手探り(きっぱり

//ちょっと必要があったので以前全部調べたんだ。
//メソッド以外はほぼsummaryだけっぽい。
0181デフォルトの名無しさんNGNG
その辺は結局手探りのが早いよねえ
///とタイプしてみればとりあえずわかるし
0182デフォルトの名無しさんNGNG
プロジェクト全体に対するコメントも付けられそうなんだけどよく分からない。
0183デフォルトの名無しさんNGNG
>>>181
"/// " の自動補完ってちょっと異常だよな
始めて知ったときは笑いがとまんなかった
0184デフォルトの名無しさんNGNG
double hoge; /// <何?>なんとかかんとか</何?>
「何?」の部分を何にしたら良いのか分からんが、
この形式でインテリセンス働かせる方法無い?

///<summary>なんとかかんとか</summary>
double hoge;

だと上手くいくのは知っているけど、変数宣言で二行取るのは醜いしさ
0185デフォルトの名無しさんNGNG
>>184
うちはC++のころは

/*
コメント。
↓の説明とか
*/
int m_nValue;

とか書いてたから醜いとは思わないけれど、でもそれぐらいの柔軟さはあってもいい気がする。
属性の記述の仕方にあわせてるんだろうか。
0186デフォルトの名無しさんNGNG
.NETFW2.0ではドキュメント(特に見てくれ)周りも改善されるのかな。
それともNDocに丸投げしちゃうのかね。
0187デフォルトの名無しさんNGNG
http://s03.2log.net/home/nsharp/archives/blog31.html

MVPを名乗ってるのが(♯さんじゃなくてリンク先の方が)こんないい加減なこと書いてていいのか?
0188デフォルトの名無しさんNGNG
晒し上げるならこっちだろ。
ttp://blogs.users.gr.jp/hidori/archive/2004/06/26/3331.aspx
0189デフォルトの名無しさんNGNG
monoの開発者がSSCLIの中見ても平気なのかね…
Shared Sourceなライセンスだと汚染が起こる気がするんだが。
0190デフォルトの名無しさんNGNG
なんだかなあ・・・。
0191デフォルトの名無しさんNGNG
string型のasciiエンコード文字列を、JISエンコード文字列に直す方法を教えてください。
0192デフォルトの名無しさんNGNG
自作の複数のプロパティをグループ化する方法ってありますか?
例えばフォームのサイズプロパティはwidthとheightとあるけど
sizeのところで両方指定もできるし、展開して個々に指定もできる。
0193デフォルトの名無しさんNGNG
>192
Sizeはグループ化してるわけではなく、フォームのWidthとHeightはフォームが持ってる
Sizeへのエイリアスみたいなもので、WidthとHeight自体にはBrowsable(false)がついてるのではと言って見る。
public class Form
{
Size _size;
public Size Size
{
get { return _size; }
set { _size = value; }
}
[Browsable(false)]
public int Height
{
get { return _size.Height; }
set { _size.Height = value; }
}
[Browsable(false)]
public int Width
{
get { return _size.Width; }
set { _size.Width = value; }
}
}
こんな感じ?
自作classを展開指定ならExpandObjectConverter属性をつける。
structを展開したいのなら>139,143-145あたり参照。
0194デフォルトの名無しさんNGNG
>>191
.NET Frameworkではstring型はUnicodeなわけで、
string型のASCIIエンコード文字列だのJISエンコード文字列だのはあり得ない。

バイト配列を変換したいならEncoding.ConvertとかEncoding.GetBytesとか。
0195デフォルトの名無しさんNGNG
ascii charset文字列を...なら分からんでもないけど
0196デフォルトの名無しさんNGNG
PropertyGridの話が出たので便乗ですが、

あるプロパティの値が変更されたとき、
ある他のプロパティの表示/非表示や変更可能/不可能を切り替えることはできますか?
0197デフォルトの名無しさんNGNG
>>196
少し頑張れば可能。

The Code Project - Unleash PropertyGrid with Dynamic Properties and Globalization - C# Programming
http://www.codeproject.com/csharp/DzDynamicProperties.asp
0198192NGNG
>193
thx
こちらの思い通りにできました。
0199デフォルトの名無しさんNGNG
MySqlを使いたいのだけど、OleDbConnectionに渡す接続
文字列ってなにを渡せばよいのでしょうか。
MDBの場合だと、
"Provider=MIcrosoft.Jet.OLEDB.4.0;Data Source=mdbファイル名"
っていうのを書籍でみたのですが、
MySqlの場合はどうしたらよいのでしょうか。
いろいろ検索してみましたがわかりませんでした。
なんか根本から勘違いしてる?
0200デフォルトの名無しさんNGNG
使うOLEDBプロバイダがMySQL用のものならそのOLEDBプロバイダ用の接続文字列、
OLE-ODBC(って今も使うのかな?)だったらODBC用の接続文字列、では?
0201199NGNG
>200
レスありがとうございます。
せっかく回答いただきましたが、私の知識が乏しすぎて、
さっぱり理解できませんでした。
どこぞで勉強しなおしてくることにします。
勉強になるサイトまたは書籍などあれば教えていただけると
助かります。
0202デフォルトの名無しさんNGNG
>>197
ありがとうございます。
少しというかかなりがんばらないといけないようですね・・・。

PropertyGridは手軽に使えるのはいいんですがこういう痒いところには手が届かないんでしょうか。
PropertyGrid使うのやめてちゃんとGUI作ったほうがよさそうですね。
0203デフォルトの名無しさんNGNG
「VB MySQL」とか「ADO MySQL」で検索したらすぐに出てきたぞ。
0204199NGNG
>203
検索すると、java+MySqlの情報がたくさんあるのですが、
C#からMySqlを使用するような情報がみつからないんです。
java+MySqlは過去にやったことがあるのですが、DB接続部分は
サンプルからぱくってましたから理解できてません。
この当りを応用すればうまくできるのかなあ。
0205デフォルトの名無しさんNGNG
>>204
検索の仕方が悪い。

ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=SJIS&oe=SJIS&num=100&q=NET%20MySQL%20接続文字列
0206デフォルトの名無しさんNGNG
C#の話じゃなさそうだし、たぶんよく知られていることかもしれないけど、
forやwhileの条件式って、ループのたびに計算される?

while(i < GetSomething()){
// 何かの処理
}

public int GetSomething(){
// 結構面倒な処理だけど、返る値は最初の1回目以降は同一
}

上の式を何百、何千回と回すんだったら下のように書き直した方が、
オーバーヘッドは少なくて済むかな?
それともこの辺りはコンパイラが最適化してくれて、
手作業で小細工しなくてもよかったりするんだろうか。

j = GetSomething();
while(i < j){ ... }
0207デフォルトの名無しさんNGNG
>>206
自分で試そうね。

for (int i = 0; i < GetSomething(); i++) {...}

int GetSomething() {
   System.Console.Write(".");
   return 10;
}
0208デフォルトの名無しさんNGNG
>>207の例では毎回関数が実行されるが、
毎回実行する必要がないときはJITで最適化される事になっている。
むしろ、小細工してコンパイラを出し抜くな、よけい遅くなる、と言うことになっている。
0209デフォルトの名無しさんNGNG
しかし現状の実装では理想に追いつけてない。

int GetSomething() {
   int a = 0;
   for (int i = 0; i < 100; i++)
      a++;
   return 100;
}
って毎回実行する必要の全くない関数でも毎回実行されてるし。
これが完全に最適化される日が来るのかな……。
0210デフォルトの名無しさんNGNG
それを最適化できるような機能を実装する意味が分からない。
0211デフォルトの名無しさんNGNG
そう?
「計算結構長くなるなー、関数にくくり出しちゃえ」とかってそれなりにあると思うけど。
その上で>>208なんだし。
0212デフォルトの名無しさんNGNG
>211
それは最適化ではなく設計の範疇だと思うんだけど。
0213デフォルトの名無しさんNGNG
>211

『毎回評価される』という言語仕様は変わらないんだから、素直に中間変数取るのがこの場合は自然な気がする…(C,C# 的思考に毒されてるだけなのかもしれない)

inlining が効果的な場合はキチンと inline して JIT する機能は機能で必要なんだけど、ここでそれに頼るのはワシ的には微妙に違和感があります。
0214デフォルトの名無しさんNGNG
STL とか使っていて

for (std::vector<foo>::const_iterator it (bar.begin ()), it_end (bar.end ()) ; it != it_end ; ++it) { ... }

なんて書き方してるしなぁ…(勿論 std::vector 程度じゃ bar.end () を条件のトコに生で書いても大差ないと思うけど)

確か std::foreach の中身では同じ様な書き方してた記憶がある…

# C# な話でなくてスマヌ…
0215デフォルトの名無しさんNGNG
え、毎回呼ばれないのでしょう。
大きいメソッドだと呼ばれちゃうのかな?
http://www.microsoft.com/japan/msdn/net/general/dotnetperftechs.asp
0216デフォルトの名無しさんNGNG
>215
JITが呼び出し先を静的に評価できない可能性があると判断したら
呼び出しのまま残る(というか残ってくれないと困る)のでは?
0217デフォルトの名無しさんNGNG
1) 32 IL instruction 以下
2) flow 解析は限定されてる

の二つの制約から実際に inlining されるのはかなり単純なものに限定されている気はする…( get { return foo_ ; } みたいな奴とかかな?)

勿論 216 で言及されてるいる様に静的に評価出来ないとか(virtual になってるとか)副作用があるとかだと、残っててもらわないと inlining の有無で結果が違うという具合の悪いことに…

# de-virtualizing なんていう optimization も世の中には存在するけどもささささ…まだ一般的じゃないよなぁ(?)
0218デフォルトの名無しさんNGNG
使われてないインスタンスを特定することってできますか?
XXXUser(アカウント用)クラスのインスタンスを、ユーザーがデータを入力するたびに新しく作りたいんですが、
ユーザーが使わなくなったアカウントを逐次的に削除したいんです。
0219デフォルトの名無しさんNGNG
>218

それは GCの神しか知らない情報… instance が消える timing は不定なのが GC ある世界の掟ですが…
0220デフォルトの名無しさんNGNG
テキストボックス等に繋げられたDBのフィールド名を知る術ってありますか?
0221199NGNG
>205
どうもありがとう。
探してみます。
0222206NGNG
いろんな人の話が聞けてためになったよ。ありがとう。
簡易に試したところでは、差がほとんどなかったり、
30%〜40%の違いが出たりとまちまちだった。
>>206 の前者のようなパターンを、コンパイラが
「戻り値は一定だからここの呼び出しは省ける」とかいった
おせっかいは焼かないんだね。
単純なことでも人の手で速度アップを図れるところはあると。
0223206NGNG
今、>>215 のMSのサイトを読んでたらこんなのがあった。

 for(int i = 0; i < myArray.length; i++){}

 int l = myArray.length;
 for(int i = 0; i < l; i++){}

 コンパイラはおそらく myArray の長さが一定であることを確認し、
 for ループの比較に定数を挿入するでしょう。

おー、ここまで見てくれるんだ。
ここでも「コンパイラを出し抜こうと考えるな」って言ってるね。
確かにint型など単純な値型ならLengthでもGetLength()でも差はなかったけど、
myArrayを自前の構造体(いろんなメンバが突っ込んである)で試したら
それなりの差は出た。
0224デフォルトの名無しさんNGNG
>222

強い最適化を施せば >209 みたいな奴を呼び出してても定数との比較に出来るとは思うけど、Just-In-Time compling だからあんまり頑張ると最初の1発目が遅くなってしまう…

実行時 profiling を使って、段階的に optimize level を強くする様な仕掛けを JIT compiler が実装してこない限りはつらそうだなぁ(そのうちやるとは思うけども)

mono project の JIT の optimize は何処までやってんだろうか?

# efficeon の CMS は4段ギアになってるなんて話もあったな… ttp://pc.watch.impress.co.jp/docs/2003/1104/kaigai041.htm
0225デフォルトの名無しさんNGNG
64bit化による高速化とアプリの64bit化における注意点(MYCOM PC WEB)
http://pcweb.mycom.co.jp/articles/2004/06/24/win64/

マネージコードなら 32bit環境だろうが、64bit環境だろうが x86だろうが
x86-64だろうが、Itaniumだろうが動くと思ってたんだけど・・・
俺の勘違い??

0226デフォルトの名無しさんNGNG
>>225
いや、Managedなら基本的に問題なく使えると書いてある。
ただ、x64だけ、とかいう風に制限を「かけることもできる」という話。
//Win32APIを使ったアプリのための制限とかそんなんかな。
0227225NGNG
>>225
へんな文章書いてごめん。
たしかに問題なく使えると書いてあります。


http://pcweb.mycom.co.jp/photo/articles/2004/06/24/win64/images/016l.jpg
>32bit .NETコードはWOW64で実行
>64bit .NETコードはネイティブ環境で実行

僕が疑問に思ったのはマネージコードに32bit、64bitっていう区分けが可能なの?
とか、
おいおい、WOW64上で実行って事は普通の32bitアプリじゃねえか?
と思ったんですけど・・。いかがでしょうか?
0228デフォルトの名無しさんNGNG
ふーん。.NETは64ビット環境以降への布石でもあったって言うことかい?
0229デフォルトの名無しさんNGNG
>227

.NET Framework を立ち上げるスタブの部分は今のところ X86-32 のコードが入ってるから、立ち上げるところは WOW64 で
hosting 環境が出来てしまえば残りの MSIL の部分は host native 実行…って事なのかしらん?
0230デフォルトの名無しさんNGNG
C#(Windowsアプリケーション)とMVCの説明したHPとかないでしょうかー?
検索してもWEBアプリのサンプルばっかりなので。

Windowsアプリの開発ってあんまりやったことないんですが、画面にイベントハンドラとかプロシジャとか記述するんですよね?
MVCって考えはWindowsアプリにはないのでしょうか。

ちっと悩んでます。
0231デフォルトの名無しさんNGNG
>>227
IntPtrとかサイズが変わる。
0232デフォルトの名無しさんNGNG
>>228
常識。
0233デフォルトの名無しさんNGNG
UTF8からUTF7への文字コードの変換はどうやったらいいでしょうか?
下のような使い方をしたいのですが・・

//引数1に対象文字列、2に変換前Encoding(UTF8)、3に変換後Encoding(UTF7)
public string (string text, Encoding encode, Encoding encode)
{
return text2;//戻り値はエンコード変換後の文字列
}
0234デフォルトの名無しさんNGNG
>>227
.NETアセンブリは、外見はPEフォーマットになっているんだけど、そのヘッダーに
マジックナンバーとして、どのコードなのかが書かれている。
dumpbin /headers で見てみ。
で、ネイティブなマネージコード、仮にPEヘッダーにPE32とかx86と書かれていても
64bit .NET frameworkでは、64bit用にコンパイルされて動作する。
もちろん、CCW、RCWとか使ってちゃだめよ。

あと、J#だけは、WOW64上の動作に限られる。
0235デフォルトの名無しさんNGNG
>>233
>  UTF8からUTF7への文字コードの変換はどうやったらいいでしょうか?

過去何度か出てるけど、string型はUnicode(UTF16)。
そんなメソッドに意味はない。

バイト配列が必要なときにSystem.Text.Encoding.GetBytes()とか使うといい。

あるいはもっと具体的な話をしてくれればほかの助言もできるかもしれないけど。
0236デフォルトの名無しさんNGNG
リフレクションで取得できるフィールドの一覧とか、
プロパティの一覧って必ず宣言した順番に並んでいるのでしょうか?
順番が保証されてるとかないですか?
0237デフォルトの名無しさんNGNG
>>236
何がやりたいの?
アンマネージコードにエクスポートしたいの?なら、LayoutKindがあるけど。
0238デフォルトの名無しさんNGNG
>>237
リフレクションで取得した一覧の順番に依存したコードがあるんで、
それを修正するための理由を探しているんです。
0239デフォルトの名無しさんNGNG
>238

順番を保障してないと考えるのが妥当だと思うけどなぁ…

# custom serialization が実装されているとかすると順番とかそんなの全く関係ないし…
0240デフォルトの名無しさんNGNG
そこらへんのこまい仕様決めてるものないんかい?
0241165NGNG
このダイヤログを表示したままだとプロパティが使用できない・・・。
どうやら、VC#.netに問題があるのではなく、visual studioに問題があるみたいです。
アプリケーションの追加と削除に、Framework1.1とVC#.netを削除する部分があるんだけど、visual studioを削除する部分がないですよね。。。どこにある??
完全に削除して再インスコを試みたいです・・・orz
0242デフォルトの名無しさんNGNG
こういうのはあきらめてOSから再インスコするのが無難、というか結果的に一番早く解決する。

ウィザード系が走るときにオブジェクトの作成に失敗しましたと出て、コンポーネントの追加やら何やらが
できなくなった状態のがうちにも1台ある。
VS.NET自体は何度か再インスコしたが改善せず。
そのうちOSごとと思ってうっちゃってるけど。
0243デフォルトの名無しさんNGNG
あるアセンブリが別のアセンブリを参照している場合、
その参照される側が更新されると、動作に支障がなくても参照できなくなります。
厳密名とか署名とかいったことが行われている場合だけそうなるようです。
参照する側をいじるにしてもされる側をいじるにしても、
たとえばメジャーバージョンが変更されない限り参照しちゃえみたいな指令はできませんか?
0244デフォルトの名無しさんNGNG
>>243
遅延署名?
0245デフォルトの名無しさんNGNG
>243

[assembly: AssemblyVersion ("1.0.*")] とかやってない?

ttp://www.atmarkit.co.jp/fdotnet/technology/idnfw11_04/idnfw11_04_02.html の version redirect なんてのもあるにはあるけど…
0246165NGNG
>>242
THX...
OS再セットします。。。私事ですが、家族共有PCだから、いつできるかな・・・orz
0247デフォルトの名無しさんNGNG

0248デフォルトの名無しさんNGNG
>>244
なぜにそこで遅延署名…
0249デフォルトの名無しさんNGNG
string url;
HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest ;
HttpWebResponse res = null ;
try
{
 res = req.GetResponse() as HttpWebResponse ;
 StreamReader reader = new StreamReader(res.GetResponseStream(),Encoding.GetEncoding("Shift-JIS")) ;
 textBox1.Text = reader.ReadToEnd() ;
 reader.Close() ;
}
catch
{
 textBox1.Text = "Not Found!";
}

こんな感じでWebページのソースファイルを取ってきたいのですが、
2chのスレッドのソースを取得するにはどうすればよいでしょうか?
url に http://pc5.2ch.net/test/read.cgi/tech/1087297504/ といれても Not Found になってしまうのですが。
0250デフォルトの名無しさんNGNG
http://pc5.2ch.net/tech/dat/1087297504.dat
0251デフォルトの名無しさんNGNG
req.UserAgentに適当な文字列を入れる
0252デフォルトの名無しさんNGNG
ARGB を RGB に変換したいのですが、方法が見つかりません。

Alphaを無視するのではなく、Alphaが有効な状態での、
赤緑青の値を取得したいのです。
0253デフォルトの名無しさんNGNG
>>252
(゚д゚)ハァ?
0254デフォルトの名無しさんNGNG
>>252
背景の色は?
0255252NGNG
例えば、
ColorFromArgb(255,Color.Red).ToArgb()
とすると、-65536 が返されます。

これを、255,0,0 に変換したいということです。
0256デフォルトの名無しさんNGNG
>Alphaを無視するのではなく、Alphaが有効な状態での、
>赤緑青の値を取得したいのです。

ここが禿しく意味不明なんだが。
Aが有効なRGBっていうと普通は合成先のRGBも必要だろ。

>>255を読む限りAを無視すればそれでいいじゃんって思うんだが?


byte r = System.Drawing.Color.FromArgb(255,Color.Red).R;
byte g = System.Drawing.Color.FromArgb(255,Color.Red).G;
byte b = System.Drawing.Color.FromArgb(255,Color.Red).B;
これで何か不都合でもあるのか?
0257デフォルトの名無しさんNGNG
俺にはなぜこんな人を相手にするのかがわからない。
0258デフォルトの名無しさんNGNG
>>252
言ってる意味がわからんのだが、
とりあえずRGB(0,0,0)かARGB(0,0,0,0)と合成してみれ。
それで気に入った色が出てこないんならもっぺん整理して出直せ。
0259デフォルトの名無しさんNGNG
良く考えると >>257 が一番マトモなこと言ってるね。
メシ食ってくる。
0260デフォルトの名無しさんNGNG
>>252の意味不明な返答を聞きたい
0261デフォルトの名無しさんNGNG
ブラウザでコピーしたHtmlを
クリップボードで受け取ろうと思ったのですが
文字化けしてしまいます。
回避策はあるのでしょうか?

string dataHtml =
Clipboard.GetDataObject().GetData(DataFormats.Html,true) as string;
0262デフォルトの名無しさんNGNG
エンコードが合ってないのか・・・
0263デフォルトの名無しさんNGNG
>>261
http://santamartadotnet.hp.infoseek.co.jp/documents/dotnettips/tips015.html
文字コード変換で解決できると思う。
0264261NGNG
>>261,262
参考URLを元に、こんな感じで全部試してみた。
foreach ( Encoding encoding in encodings ){
foreach (Encoding sourceEncoding in sourceEncodings){
byte[] buf = sourceEncoding.GetBytes(dataHtml);
Console.WriteLine( encoding.GetString(buf) );
}}

整理すると
一部の文字化けが解消するパターンはあったけど
完全には戻らなかった。...orz
//一部だけだが文字化けが解消したもの
byte[] bytes =Encoding.Default.GetBytes(dataHtml);
string data = Encoding.UTF8.GetString(bytes);
Console.WriteLine(data);
0265デフォルトの名無しさんNGNG
.NET のガベージコレクタについて聞きたいのですが,

ある static なインスタンスの中で byte array の配列を用意して
(かなり大きな配列になる)使用しています.

次に,この配列の中身を削除して(例えば null を代入するなり)
GC.Collect() を呼んでも,その配列で使用していたであろうメモリ
が解放されない時があります.(される時もあるんです)

で,その状態で,再度同じ byte array に
ドカンと領域を取ると OutOfMemory 例外となってしまいます.
この時,最初に取得した byte array の分が正しく解放されて
いれば,OutOfMemory にはならないはずなのですが,どこからも
参照していない状態(null を代入するなりして)
どうしても解放されない時があります.

GC.Collect() を行なっても解放されていないメモリ領域が
存在して,かつ,そのメモリ領域が原因で OutOfMemory となるので
プログラム的にどのように対応すればよいのか困っています.

何か注意する点などアドバイスなど頂けませんでしょうか?
0266デフォルトの名無しさんNGNG
GC.Collect()って、「開放してもいいよ」って合図であって、
実際に開放されるタイミングはGCが決めるんじゃなかったっけ?
0267デフォルトの名無しさんNGNG
・再利用する可能性があるなら自前でメモリ管理する
・OutOfMemoryになるようなハードウェアは使わない
・そもそも設計がおかしい
・どこかで参照が残っている可能性がある
・GC.Collect(int)
0268266NGNG
思いっきり勘違いしてたw
0269デフォルトの名無しさんNGNG
ttp://www.devdex.com/asp/message.asp?p=2911&r=4203037

.NET Framework 1.0 には large object heap の管理に bug が存在していた模様です。

もしかしたらこいつに引っかかってるのでは?
0270265NGNG
みなさん,ありがとうございます.

>>266 そうでしたか.では GC.Collect 呼んでもガベージコレクションされる
とは限らないんですね.強制的にガベージコレクションを行なう方法
っていうのは用意されていないんでしょうか?

>>267 自前でのメモリ管理ってどのように行なうのでしょうか?
URL などの情報でもいいので教えていただけないでしょうか?
参照が残っている可能性ですが間違いなく null を代入しているの
ですが,それでは確実ではないでしょうか?
ハードウェアは換えられないし,設計がおかしい可能性も否定は
できませんが….

>> 269
情報ありがとうございます.ゆっくり目を通してみます.

よろしくお願いします.
0271デフォルトの名無しさんNGNG
>270
メモリ管理というのは必要量を最初に確保したまま開放せず、
使いまわせばということです。
可変長であればサイズ管理を追加してしまえばいいのでは。

クラスライブラリのメリットをスポイルしてしまいますが、システムが確保できないような
量を要求している以上仕方ない気もしますが…。

設計がおかしいとは、結局メモリ管理を見直すか、メモリ必要量を見直すしかないのでは?
ということで。

0272デフォルトの名無しさんNGNG
システムが確保できないような量を要求している
っつー点で破綻しているような。
0273デフォルトの名無しさんNGNG
GC.Collect()はパラメータなしだとGC.Collect(0)と同等じゃなかったっけ?
だから第二世代以降の変数は保持されたままになる。

全部開放したいならGC.Collect(2)にしなきゃダメ。
(2)はMaxGenerationだったかで値取得した方がいい。
0274デフォルトの名無しさんNGNG
うそをつけ。
0275デフォルトの名無しさんNGNG
すべてのジェネレーションのガベージ コレクションを強制的に実行します。
public static void Collect();

まあ、こんなものなので鵜呑みにせずちゃんと確認しろってこった。
0276デフォルトの名無しさんNGNG
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/021gc/gc.html
ここの「より高度なガベージ・コレクションを行う」の実行結果を見る限りでは
ジェネレーション指定なしだと開放されずに残るっぽいが?
0277276NGNG
あ、すまん、勘違いだわ。
0278デフォルトの名無しさんNGNG
エラーコードについて質問です。

Win32 APIの、DdeConnectという関数をC#のPlatform Invokeで呼んでいます。
DdeGetLastErrorの戻り値によると、16390, 16394のエラーが出ているのですが
このエラーの意味を調べるにはどうすれば良いんでしょうか?

MSDNサイトを見ると、15999までのErrorしか記載されていませんでした。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/system_error_codes.asp

16000番以上のエラーコードが調べられるページやファイルがありましたら教えてください。

初歩的な質問かもしれませんが、よろしくおながいします。
0279デフォルトの名無しさんNGNG
図形の再描画について質問ですあ。
テキストボックスに数値を入れてボタンを押すと、計算をしてグラフを描画するプログラムを作ったのですが、
プログラムのウィンドウの上に他のウィンドウを重ねたりスクロールバーでスクロールさせてもどすと、
いままで隠れていた部分の「描画した線」が見えなくなってしまいます。
消えないようにするにはどうしたらよいのでしょうか?
0280デフォルトの名無しさんNGNG
>>279
Paintイベント・・・・・
0281デフォルトの名無しさんNGNG
>>278
ttp://www.google.co.jp/search?num=100&hl=ja&inlang=ja&ie=UTF-8&c2coff=1&q=ddegetlasterror+16390%7C4006%7C0x4006&lr=lang_ja
と16進でも検索しよう。
ここの一番上でエラーコードとそれの定数が分かる。あとはDdeGetLastErrorのMSDNの解説。

>>279
PictureBox.ImageなりForm.BackgroundImageなりのImageに対して描画する。
0282デフォルトの名無しさんNGNG
>279
入門スレで出直して来い
0283デフォルトの名無しさんNGNG
>>280
Piantイベントを試してみたのですが、

private void button1_Click_1(object sender, System.EventArgs e) 
{ 
  private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) 
  { //演算、描画のコード 
  }
}

このような形にしてしまうとエラーがたくさん出てきてしまいます。
かといってpaintイベントをclickイベントの外に出すと、最初から決まっている線については描画できますが
計算によって求まる線については、まだテキストボックスに数値を入力してないということでプログラムが固まってしまいます。
どのようにすればよいのでしょうか・・・
0284デフォルトの名無しさんNGNG
( ゚Д゚)
0285デフォルトの名無しさんNGNG
>>283
イベントの下にイベントを置くという、C#のルールそのものを無視したやり方自体が間違っている。
C#というよりVisualC#の動作をちゃんと理解した方がいいよ。

> まだテキストボックスに数値を入力してないということでプログラムが固まってしまいます
だったら、先に値をチェックして関数を終了すればいい。
0286デフォルトの名無しさんNGNG
textBox に文字入力した後Enterを押すと
ボーン てBeep音が出るのですが、
これを鳴らないようにするにはどうすれば良いのでしょうか?
0287デフォルトの名無しさんNGNG
>>286
KeyPressイベントでHandledをtrueにすれば出来たような気がする
0288デフォルトの名無しさんNGNG
>>281
BackgroundImageを利用するの好きだなー。
上からさらに描画したりして応用きくしね。
0289デフォルトの名無しさんNGNG
>279というか>283はあれなんで回答する気力もなくなるんだけど、
>285の
>イベントの下にイベントを置くという、
という表現もなんだかなぁと思う日曜の昼下がり。


0290デフォルトの名無しさんNGNG
>>285
「先に値をチェックして関数を終了」というのはどのようにすればよいのでしょうか?
0291286NGNG
>>287
お〜出来ました!
どうもありがとうございます!!
0292デフォルトの名無しさんNGNG
>>290
いいから入門書を買ってこい。
0293デフォルトの名無しさんNGNG
>>292
すいません、それについては解決しました。実はこのスレには
http://pc5.2ch.net/test/read.cgi/tech/1083995297/
から誘導されてきたのですが(315が私です)、新たな質問は向こうのスレに書きましたので
よろしければご教授願います。ちなみに入門書は何冊か持ってます。
0294デフォルトの名無しさんNGNG
StreamReader reader = new StreamReader();
のStreamReaderはnewしないと使えないのに、
NetworkStream stream = new TcpClient("hage.net",100).GetStream();
のNetworkStreamはnewしないで使えるのは何故なんですか?
0295デフォルトの名無しさんNGNG
>>293
だからなんでFormへの直接描画にこだわるのさ。

>>294
GetStreamメソッドの中でnewされてるんだろ。


//夏……。
0296デフォルトの名無しさんNGNG
the Spokeの発売は失敗だったのじゃないだろうか(w
0297デフォルトの名無しさんNGNG
PictureBoxに図形を描画するため、とりあえず
http://dobon.net/vb/dotnet/graphics/pictureboximageanddrawimage.html
ここのプログラムを実行してみたのですが、ボタンをクリックすると

'System.ArgumentNullException' のハンドルされていない例外が system.drawing.dll で発生しました。
追加情報 : 値を Null にすることはできません。

というメッセージが出てて、ソースコードの中の
Graphics g = Graphics.FromImage(PictureBox1.Image);
の行が緑色にマーキングされます。これってどういうことでしょうか?
0298デフォルトの名無しさんNGNG
もっとサンプルをよく読め。
何がnullなのか考えてみろ。
0299デフォルトの名無しさんNGNG
>>293
買ったなら読め。
0300デフォルトの名無しさんNGNG
うちのモニター、1024*768が限界なんですが、1600*1400くらいにするプログラム教えてください。
0301300NGNG
要するに、モニターに表示されるグラフィックのサイズを全部まとめて調整できないかな、と。
0302デフォルトの名無しさんNGNG
釣りかと思いきや意味不明だった、
0303デフォルトの名無しさんNGNG
>>300
別スレで答え出てただろうに。
0304デフォルトの名無しさんNGNG
>296
安くなったりして間口が広がればそこから入ってくるのは当然従来よりも
質の低いものの割合が増えるのは世の習い。
ある意味、金がかかることがユーザの平均的な質を維持してたんじゃないの?
0305デフォルトの名無しさんNGNG
>>290
「まだテキストボックスに数値を入力してないということで」が判明しているのでしょ?
なら、そうなっているかを調べればいい。
0306デフォルトの名無しさんNGNG
>>305
すいません。それについては解決できました。
そして今は>>293や>>297の問題でつまずいております・・・
0307デフォルトの名無しさんNGNG
>>298
すいません。どうしても分かりません。これさえ分かれば全ての問題が連鎖的に解決し、
これ以上皆さんにご迷惑をかけることもないと思うのですが、教えてくださいませんでしょうか・・・?
0308デフォルトの名無しさんNGNG
絶対無理だからあきらめろ。
0309デフォルトの名無しさんNGNG
あきらめきれません。
0310デフォルトの名無しさんNGNG
>>307
何がnullか分からなかったらデバッガで追っかけてみろ。

それ以前に、文法を一通り学べ。
今のおまえじゃ連鎖的に解決なんか絶対しない。
0311デフォルトの名無しさんNGNG
入れ違いで申し訳ありませんが>>297は下地となる白いgif画像を用意したら解決しました。
世の中に絶対なんてありません。このまま一気に突き進みたいと思います。
0312デフォルトの名無しさんNGNG
やっぱりファイルを読み込んでるんだろうなー。
どぼんの中の人もわざわざ書いてあることを無視されて切ないだろうなー。
0313デフォルトの名無しさんNGNG
Form1のButtonAをクリックして、Form2をモーダルダイアログボックスとして表示します。
Form2には、textBoxとButtonOK、ButtonCancelが用意されていて、
ButtonCancelが押された場合は何もせず、閉じて、
ButtonOKが押された場合には、textBoxに入力された値を
Form1のhogeStrに保存して、閉じたいと思います。

分からないのは、どうやってForm1のhogeStrに代入するかです。教えてください。
0314デフォルトの名無しさんNGNG
問題は全て解決しました。ヒントをくれた皆様には感謝の言葉もございません。
くじけそうになったこともありましたが、あきらめずに頑張り続ければいつかきっと報われるということを学びました。
0315デフォルトの名無しさんNGNG
>>313
参考例として、コモンダイアログのOpenFileDialogで考えてみよう。

1)OpenFileDialogを初期化する(Filterの設定とかも含む
2)OpenFileDialog.ShowDialog()を実行する
3)ShowDialogの返り値がDialogResult.OKの場合、
 ダイアログでユーザが選択したファイル名が
 FileNameプロパティに入っている
0316デフォルトの名無しさんNGNG
表示したウィンドウ全体に対して、
あらかじめ定めたテーブルにしたがって、
色を変換するという処理を行ないたいです。
例えば、フォームの中に画像を表示していたら、
画像を含めて表示したウィンドウ全体に
「白黒表示をする」とか「RGBを入れ替える」という処理をしたいのです。
0317313NGNG
314は偽者です。こういうとき、ID表示板だったら、と思います。トリップつければ良かったんですけど。


>>315
Form1で、hogeStr = Form2.textBox.Text; とするということですか?

Form1からForm2のtextBoxが見えないのかと思い、 publicにしてみたけどだめでした。
既に閉じた後なのでForm2オブジェクト(?)が消えたんですか?

case DialogResult.OK:
MessageBox.Show(Form2.textBox.Text);break;

とやってみたところ、ビルドエラータスクに
「型or名前空間Form2が見つからない。ディレクティブorアセンブリ参照を使え」
と出ましたが、この意味すらわからないです。
0318311=314NGNG
>>317
すいません。騙るつもりはなかったんですが、タイミングが悪かったです。
0319313NGNG
>>318 こちらこそ、前後の流れを考えずスマソ orz

>>315 ヒント、Thanx!
ヘルプ見ながら考えていて、ついに分かりました。
---------Form1
Form2 f = new Form2();
if ( f.ShowDialog() == DialogResult.OK )
        MessageBox.Show(f.MAGE);
---------Form2
public string MAGE { get{ return textBox1.Text; } }

Form1で Form f と宣言していたために、ドツボにはまっていました。
0320デフォルトの名無しさんNGNG
>>317
ようは、こういう流れを再現できるようなForm2を作ればいいの。

Form2 d = new Form2;
if(d.ShowDialog(this) == DialogResult.OK){
MessageBox.Show(d.Atai)
}



で、Form2にある確定ボタンのイベントにて、

this.Atai = textBox.Text; // public string Atai;というメンバかプロパティを作っとく
this.DialogResult = DialogResult.OK;
this.Close();

直接TextBoxを参照するのは後々困るので、例はAtaiって変数に入れるようにしてみた。
0321デフォルトの名無しさんNGNG
うわかぶっちまった (´・ω・`)ホーケー
0322デフォルトの名無しさんNGNG
>>320
>  で、Form2にある確定ボタンのイベントにて、
>  
>  this.Atai = textBox.Text;  // public string Atai;というメンバかプロパティを作っとく
>  this.DialogResult = DialogResult.OK;
>  this.Close();

Close()しちゃ駄目ー。
DialogResultへの代入でメソッド終了。
あと>>319のようにプロパティが直接textBox.Textを参照するほうがスマートかな。

>>319
私もダイアログ間の値の受け渡しは初めえらく悩んだ記憶がある。
特にモードレスの。
//オブジェクト指向を全く理解してなかったからなー。
//クラスとインスタンスの違いすら……。
0323デフォルトの名無しさんNGNG
>>322
自動的にCloseしてくれるんすか。ありがとっす。

> あと>>319のようにプロパティが直接textBox.Textを参照するほうがスマートかな。

個人的には、ブラックボックス化するのがよりスマートかなと。
クライアントの要望で泣く泣くダイアログのデザインが変えなあかん場合、
場合によっちゃそれまで参照していたコントロールが変わるケースは多々あるわけで、
その場合に親ダイアログをすべて変更せなあかんのは死ねる……。
0324デフォルトの名無しさんNGNG
OEの受信トレイとか送信トレイって、同じコントロール(ListView)ですよね。

同じの作りたいんですが、トレイごとにインスタンス作ったほうがいいんですか?
それとも、インスタンスは一つで、トレイ切り替え時にアイテムや表示項目を読み込んだほうがいいですか?
OEではどうなってるか、見当付きませんか?
0325デフォルトの名無しさんNGNG
>>323
>  >>322
>  自動的にCloseしてくれるんすか。ありがとっす。

違う違う。
ダイアログの場合、OKが押されても不可視にするだけでフォームは閉じないってこと(不可視化はset_DialogResultで行われる)
Closeしちゃったら自動的にオブジェクトが廃棄されちゃう。

>  個人的には、ブラックボックス化するのがよりスマートかなと。
>  クライアントの要望で泣く泣くダイアログのデザインが変えなあかん場合、
>  場合によっちゃそれまで参照していたコントロールが変わるケースは多々あるわけで、
>  その場合に親ダイアログをすべて変更せなあかんのは死ねる……。

この辺の感覚は流石に分からないな……。
個人的にはClickイベントの中を書き換えるかプロパティの中を書き換えるかで、
カプセル化として差はないと考えるけど。
//public string Text {get {return textBox.Text;}}
//の返すべき値がlistBox.SelectedItem.ToString()になったところで
//このプロパティの中だけ書き換えればダイアログ呼び出し元に変更はないし。

>>324
別々にインスタンスを持つほうが自然ではある。
0326デフォルトの名無しさんNGNG
>>324
Outlook Expressは、ひとつのウィンドウで表示項目によって分けている。
実際、ATLで書かれているんだけどね。spy++でじっくりと見てみ。
0327デフォルトの名無しさんNGNG
すみません。教えて下さい。

1.TcpListenerを使って通信をする時、AcceptTcpClient()で繋がった
 相手のIPとポートの取得方法がわかりません。
 TcpClient からは取得できないようなのですが、どうしたらいいのでしょうか?

2.ルーターがいる場合、ルーター側のグローバルIPってわかりませんか?

お願いします。

0328デフォルトの名無しさんNGNG
ソースコードの一部分だけコンパイラの警告を止めるって出来ますか?
推奨されないことをあえてやっているのですが、
エラーじゃなくて警告なのでコンパイルは通ってます。
ただ、その警告の量が多すぎて、必要な警告が見づらくなってきました。
警告を出すクラスは一つなので、そのクラスについてだけ警告やめて欲しいんです。
0329デフォルトの名無しさんNGNG
byte[]型にされた文字列のエンコードを調べるにはどうしたらいいんでしょうか?
0330デフォルトの名無しさんNGNG
>328

現時点では、VC++ にある #pragma warning に相当するものが無いんすよね… orz

C# 2.0 には増えたみたいだけど(ttp://lab.msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_csref/html/723493d5-9753-4cec-babb-54e2b8eb36b6.asp)

# Generics と partial type と anonymous method(と iterator support)を早く使わせてくれ(笑)> MS
0331デフォルトの名無しさんNGNG
>329

一旦 byte [] 化されちゃったら、あとは中身を見て推論するしか手が無いのでは?

# nkf とか jcode.pl とかがやってる様に…
0332デフォルトの名無しさんNGNG
>>328
同じ警告が大量発生するなら、
ソリューションエクスプローラのプロジェクトの「プロパティ」
↓
構成プロパティ→ビルドで、特定の警告を表示しない、の項目で設定できます。
0333デフォルトの名無しさんNGNG
>>329
もちろん自前で判別。
//フレームワークで用意してくれても良いと思うんだけど。


というのもなんなので。
ttp://kasumi.sakura.ne.jp/~gm/gpj/index.shtml
こういうありがたいページがある。

>>328
その部分だけDLLにしとくとか……?
0334329NGNG
>>331
>一旦byte[]化されちゃったら
文字列データの場合だと、判別する方法はあるんですか?

OEからJISエンコードで送ったメールを、自作POP3で受信すると、受け取ったメールが文字化けしてるので、直したいんです。
(ほかの文字コードで送られた場合も判別変換できたらいいな、と)
0335デフォルトの名無しさんNGNG
>>334
> 文字列データの場合だと、判別する方法はあるんですか?

文字列になったんだったらもうエンコードを気にする必要がなくなってるじゃないか。
0336278NGNG
>>281
ありがとうございました!
エラーの内容がわかったので解決できそうな気がしてきました。
0337デフォルトの名無しさんNGNG
C#でDelphiのProcessMessagesのような処理を行うにはどうすればいいでしょうか。
重い計算をしていると、フォームのコントロールの描画がメチャクチャになるのを
直したいのですが・・・・

this.Refresh(); をはさんでみましたが、フォームそのものが一度フォーカスを失う
とその後は「応答なし」になってしまいます。
0338デフォルトの名無しさんNGNG
>>337
小細工してないで非同期で計算しろ
0339デフォルトの名無しさんNGNG
>>337
重い処理は別スレッドで。これ常識。
0340デフォルトの名無しさんNGNG
まえから思ってたが、このスレってダメな人が常駐してわざとダメな答え返してるね。
Application.DoEvents();
0341デフォルトの名無しさんNGNG
>>338>>339
まだよくわかりません。
>>340
ありがとうございました。バッチリです。
0342デフォルトの名無しさんNGNG
DoEvents()の副作用までわかってるんならいいんだけどね。
0343デフォルトの名無しさんNGNG
DoEventsはむしろ軽い処理の合間に入れるものだろ。

例えばWebからデータを拾ってくるときに相手サーバーの応答が遅かった場合なんかは
DoEvents入れたって応答なしになるぞ。
0344デフォルトの名無しさんNGNG
見ての通りのDel厨に、スレッド使えだの副作用覚えろだの無理言うなよ。
0345デフォルトの名無しさんNGNG
でもシリアライズとかデシリアライズしている時にDoEvents()挟むと、
統合環境から実行したら大丈夫だけどスタンドアロンでEXEを実行
するとランタイムエラー出ません?
0346デフォルトの名無しさんNGNG
カスタムコントロール(WindowsForm)を作ろうと思って居ます

作りたい物
複数行(行数は可変でかなり横長)で
Excelのような縦横のスクロールバーを持つ物です

単純なコントロールならUserControl、Contorolどちらからでも一応作ることは出来ます

悩んでいる所はExcelのような奴です

ご存知のようにExcelは横スクロールバーをスライドさせると
列のタイトル(A,B,Cって奴)も一緒にスクロールしますが行タイトル(1,2,3って奴)は固定
縦スクロールバーをスライドさせると行のタイトルはスクロールしますが列のタイトルは固定

これをどの様に実装したらいいのか分かりません

普通にスクロールバーを使用すると、横にスライドすると行のタイトルもスクロールしてしまい
表示枠の外に出てしまいます。

何かアドバイスでも頂けないでしょうか

0347デフォルトの名無しさんNGNG
>346
釣られてしまたが、それがわからない人はカスタム作ろうと思わないほうがいいと思う
0348デフォルトの名無しさんNGNG
>>346
その辺を自動で簡単にやってくれる魔法は用意されていません。
そういう動作をさせるのに、数千行から数万行のコードを書いた経験があります。
やり方を聞かれても、やることが多すぎて答えるのに何日もかかります。
作るための知識もどこから得たのかわからないくらい広範に勉強しました。
参照URLも出せません。
あなたもがんばってください。
もしくは好みの市販コンポかエクセルを買ってください。
0349デフォルトの名無しさんNGNG
>>347さん>>348さん

レスありがとうございます

とても大変そうですが、時間だけは有るので
出来る所までやってみようと思います
0350デフォルトの名無しさんNGNG
ここは君の日記帳じゃないから@ITあたりでスレ立てて相手してくれる人探した方がいいよ。
0351デフォルトの名無しさんNGNG
スレッドの使い方で悩んでいます。

メインの処理A ――□□□□………………☆☆☆―――
スレッド処理B ――――□□□□□□□□――――――

やりたいのは上の図のようなイメージです。
AからBのスレッドを開始させて、Bの終了後に☆を実行したいです。
どうやったらAを待機させられますか
0352デフォルトの名無しさんNGNG
いべんと
0353デフォルトの名無しさんNGNG
>>325
> 違う違う。
> ダイアログの場合、OKが押されても不可視にするだけでフォームは閉じないってこと(不可視化はset_DialogResultで行われる)
> Closeしちゃったら自動的にオブジェクトが廃棄されちゃう。

俺もそう思ってたんだけど、どうやら違うみたいよ。
Form1 から Form2をShowDialog(Form1)で開いて Form2のボタンのイベントなんかで
.Close()かけても ちゃんとForm1からForm2のpublicなものは参照できる。

どうやらForm2.Dispose()かけるまで破棄されないみたい。
ヘルプ読むとCloseメソッドはフォームを破棄するように書いてあるとしか
読めないんだけどね。


0354デフォルトの名無しさんNGNG
> どうやらForm2.Dispose()かけるまで破棄されないみたい。

GC様に笑われるぞ。
つか俺が真っ先に笑ったが。
0355デフォルトの名無しさんNGNG
353でつ、

俺の大きな勘違いでした。
Form2のButton.DialogResult にOK属性を設定していたので、
ボタンクリックとともにForm2.DialogResultに代入が起こり、それで
Form2からForm1に制御が戻って Form2.Button_Click イベントに
書いてあった Form2.Close()が単に実行されていないだけでした。
0356デフォルトの名無しさんNGNG
>>346
素直にExcelを貼り付けなさい。
0357デフォルトの名無しさんNGNG
>>351
JoinかManualResetEventあたりを使えば?
0358デフォルトの名無しさんNGNG
windowsアプリってMDI形式で作るのが一般的なのかな
0359デフォルトの名無しさんNGNG
SDIまんせー
特にタブブラウザなんかは芯でいいよ
0360デフォルトの名無しさんNGNG
>>340
おまえ、恥ずかしくないか…
0361デフォルトの名無しさんNGNG
>>345
シリアライズ、デシリアライズが具体的に何をさしてるのか分からんが、
普通に所謂シリアライズだとして、どうやって間にDoEventsをはさむんだ?
まさか、…
0362デフォルトの名無しさんNGNG
>>325
お前が間違ってるよ。
>>354
ちょっと意味が分からんが、
>>355
だまされてるよ、あんた。
0363デフォルトの名無しさんNGNG
>>354
そこでGCが出てくる時点で、多分おまいはちゃんと理解してない。
理解してるんなら意味不明なこと書くなよ…
0364デフォルトの名無しさんNGNG
>>325の後半は書いてること自体はそのとおりだと思うんだけど、
多分>>323は
> あと>>319のようにプロパティが直接textBox.Textを参照するほうがスマートかな。
これの意味を取り違えただけだと思う。ってか俺も一瞬取り違えかけた。
※「プロパティが」直接参照するんじゃなくて「親フォームが」と思ったんじゃないかと
0365デフォルトの名無しさんNGNG
367.999という、整数部3桁、小数部3桁の数字があるとして、
この数字の小数部を取り出したいんです。どうすればいいですか?
整数部を取り出すのはDecimalのメンバを探せばそれらしいのが見つかったんですが。
0366デフォルトの名無しさんNGNG
>>365
Mathとかにあると思うが、多分次は、
それが本当に小数点以下3桁か?と言う点にはまる。
0367デフォルトの名無しさんNGNG
>>366
Mathを探したんですけど見つかりませんでした。

普通は小数点をさがして、そこで切るとかするんでしょうか?
0368デフォルトの名無しさんNGNG
整数部がわかるならそれを引けばいいんじゃないの
0369デフォルトの名無しさんNGNG
>>361
いや、例えばBinaryFormatterを通して合計800MBほどのファイルになるデータ
のコンバートを行っているんだけど、当然Serialize()とDeserialize()メソッドを
呼び出すよね?

800MBほどになるとさすがに時間がかかるのでプログレス・バーなんかを付けて
みたんだけど、フォームそのものが一旦フォーカスを失うともう一度フォーカスを
当ててやってもプログレス・バーが固まってしまう。

そこで変換ループの中にDoEvents()を入れてやったわけですよ。すると、統合環境
から実行する分には何の問題も起きないのに、デスクトップからショートカットで起動
すると、FileStreamをClose()しようとする時に"System.Runtime.InteropServices.
SEHException"なんて例外が出るんですよ。いやはや困ってます。
0370デフォルトの名無しさんNGNG
>>365
浮動少数だと下手に演算すると誤差がでるかもしれんから、漏れは文字列に直してやってる。

float a = (float)367.999;
string b = a.ToString(@"F3");
int c = int.Parse(b.ToString().Substring(b.ToString().IndexOf(@".") + 1));

0371デフォルトの名無しさんNGNG
BCD演算ユニットとか変数を充実してくれよ
0372デフォルトの名無しさんNGNG
デシマルでも誤差は出ないのでは?
0373デフォルトの名無しさんNGNG
キャストだと誤差でるね。

float a = (float)367.999;
float b = (float)((int)a);
int c = (int)((float)((float)a - (float)b) * (float)1000.0);
0374デフォルトの名無しさんNGNG
受信したメールの文字化けを直したいんですが。
文字コードを変更するには、必ずいったんbyte配列に直さないといけないんですか?
Encoding.Default.GetBytes(s);
の部分のエンコードを、Defaultにしても"shift_jis"にしても"utf-8"にしても正しく表示されるんですが、変換の方法としてはこれでいいんでしょうか?
(戻り値のstringはRichTextBox.Textに入れます。)

public string GetEnc(string s) //sは受信したJISエンコードのメール
{
byte[] bytes = Encoding.Default.GetBytes(s);
return Encoding.GetEncoding("iso-2022-jp").GetString(bytes);
}
0375デフォルトの名無しさんNGNG
369です。くそっ原因がわかった。
↓↓
Application.EnableVisualStyles();

こいつがすべての元凶ですた。XPスタイルをmanifestを作らずに済まそうと
思っていたのに、Application.DoEvents()と猛烈に相性が悪いだけでなくて
描画速度も大幅に遅くなる。ぐぐってみたら「不具合」の言葉が散在しています。

.NET FrameWork 2.0 では直っている事を強く期待しますぜ。
0376デフォルトの名無しさんNGNG
>373
プッ
0377デフォルトの名無しさんNGNG
>>370
参考になりました。ありがとうございます。
0378デフォルトの名無しさんNGNG
>>373
フロートじゃなくてデシマルの話。
0379デフォルトの名無しさんNGNG
プログラム初心者です。
C#で画像処理ボードを使って動画像のキャプチャーを行いたいと思っています。
大抵の商品は、MFC対応とはなっていますが、C#からでも動作可能でしょうか?
お勧めのボードなどありましたら、お教えください。
0380デフォルトの名無しさんNGNG
C#だからできないと言うことはないが、初心者にはできないな。
正確には、買ったボードの寿命までにはできない。
0381373NGNG
一番単純でありがちな誤差の出る例を示しただけだが、何かおかしかったか?
「キャストだと誤差が出る」とは書いたが、「デシマルでも誤差が出る」とは書いてないだろ。
0382デフォルトの名無しさんNGNG
C#でaxWebBrowser+mshtmlを使用してテキスト入力→submitを自動化しようとしています。
Yahooは普通に動くのですがGoogleが動きません。
NavigateComplete2イベント後のwww.google.co.jpのouterHTMLを見ると下記の通りで
ブラウザ→ソースで表示される物と違いBodyタグがありません。
何か原因分かる方いらっしゃいますでしょうか?
---------------------------------------------------------------
<HTML><HEAD><TITLE>Google</TITLE>
<META http-equiv=content-type content="text/html; charset=UTF-8">
<STYLE><!--
body,td,a,p,.h{font-family:arial,sans-serif;}
.h{font-size: 20px;}
.q{color:#0000cc;}
//-->
</STYLE>

<SCRIPT>
<!--
function sf(){document.f.q.focus();}
// -->
</SCRIPT>
</HEAD></HTML>
0383デフォルトの名無しさんNGNG
>>382
原因は分からないし、もう知ってるかもしれないけどとりあえずできている例

The Code Project - Microsoft Web Browser Automation using C# - C# Programming
http://www.codeproject.com/csharp/mshtml_automation.asp
0384デフォルトの名無しさんNGNG
>>383
ありがとうございます、大変助かりました。
NavigateComplete2じゃ無くて、DocumentCompleteイベントを使用するんでした。
0385デフォルトの名無しさんNGNG
>381
必死なキャストっぷりを笑っただけですが?

そんな後だしじゃんけんするんならちゃんとどの部分でどのオーダーでの
誤差が生じるかくらいはレポートしてもらわないと。
0386デフォルトの名無しさんNGNG
>>381
float=浮動小数点なので、誤差が出るのは当たり前ってことでそ?
つまり、実際にベンチさせなくても分かる訳。

この意味が分からなければ、手計算でfloat型に変換してみるとイメージしやすいかも。
0387デフォルトの名無しさんNGNG
>>374
そもそも s はどうやって作ったの?メールのデータなら元はバイト列だったはずで、
それをなんらかの Encoding で string にしたんだろうから、そのときの Encoding を
使うのがまぁ妥当だと思うけど(←この場合 ASCII 推奨)。

iso-2022-jp に限定せずに一般論を言えば、コード不明のバイト列は string には
入らないので (string は常に unicode 文字列)、byte [] のまま持ち歩いて、
使われているエンコードにしたがって文字列化するのが正しい方法。
0388デフォルトの名無しさんNGNG
C#でASPやってるんですが、戻るボタン押すとページ真っ白になります。
これはどう回避したらいいでしょう?
0389デフォルトの名無しさんNGNG
コンパイル時に参照するアセンブリを指定しないで、
あるコードに達したときに、そこからアセンブリへの参照を追加することはできますか?
0390デフォルトの名無しさんNGNG
>>389
System.Assembly.LoadFromでできるんじゃない?
0391デフォルトの名無しさんNGNG
System.Reflection.Assemblyだった
0392デフォルトの名無しさんNGNG
C#でSQLサーバのmoney型の範囲にあるかどうか調べたいんですけど、
べた書きしか方法はないんでしょうか?
あと、あるテキストボックスに入力された数字が少数第4位まできちんと入力
されているかチェックしたいのです。どういった方法がありますか?
0393デフォルトの名無しさんNGNG
>374
そう、必ずしなくちゃならない。
最初はおそらく、エンコードされていない状態で、stringに入っていて、
それで、どんなエンコードでGetBytesしても正しく表示できるんだと思う。

0394デフォルトの名無しさんNGNG
>>393
>  最初はおそらく、エンコードされていない状態で、stringに入っていて、

果てしなく意味不明だな。
受け取ったbyte配列の各要素をそれぞれchar型にキャストしたchar配列でnew stringしてるってか?
0395デフォルトの名無しさんNGNG
>>393
ありえん…
0396デフォルトの名無しさんNGNG
ああ、すいません。メールを受けてる部分のソースはこれです。
(長いので例外処理とかは削除してます。)
public string RETR(int number)
{

string temp;


command = "RETR "+number+"\r\n";
cmdbuffer = System.Text.Encoding.ASCII.GetBytes(command.ToCharArray());
networkStream.Write(cmdbuffer,0,cmdbuffer.Length);
temp = streamReader.ReadLine();

if(temp[0] != '-')
{
while(temp != ".")
{
response += temp + "\r\n";
temp = streamReader.ReadLine();
}
}
else
{
return temp;
}

return response;
}
0397デフォルトの名無しさんNGNG
>>394
ASCIIエンコーディングで入れてるかどっちかかな
ASCIIってバイトそのまま下位バイトにコピーしてるだけかな?
ひょっとして8ビット目は消える?ま、iso-2022-jpなら関係ないか。

>>393のは、デコードしない状態でそのままStringの下位バイトに入ってるんならってことかな。
それにしたところで、どんなエンコーディングでも復元できるわけがない。
たまたまShift_JISとUTF8でやったからだろ。
0398デフォルトの名無しさんNGNG
>>396
…やってること分かってんじゃん…
必ずByteに直すんでなくて初めからByteじゃねーか。
ま、それは分かってる事だが(手を出せない部分なのかと思った)。
StreamReader使わずにStreamそのまま使った方が素直な気がするが…
0399デフォルトの名無しさんNGNG
いや、違うか、ちょっと読み違えてた。
streamReaderをどうやって作ってるんだ?
ま、ASCIIにしてもUTF8にしてもShift_JISにしても結果は同じだが。
0400デフォルトの名無しさんNGNG
StreamReaderは、

tcpClient = new TcpClient(server, port);
networkStream = tcpClient.GetStream();
streamReader = new StreamReader(tcpClient.GetStream());

こういう感じで作ってます。
0401デフォルトの名無しさんNGNG
それによってどんなエンコーディングで解釈されているか理解してる?
0402デフォルトの名無しさんNGNG
してません。(自信を持って断言できます)
0403デフォルトの名無しさんNGNG
ヘルプぐらい読めやゴルア
てのは置いといて、まあ気持ち悪いからせいぜいASCIIで読み取って
ASCIIで戻す方法で今まで通りにやるか、
無駄がいやなら読み込みの処理自体Byteでやるかだな。
StraemReaderとかでやるよりもコード上はやや面倒になるかもしれんが。
0404デフォルトの名無しさんNGNG
実はASCII文字のみのメールで動作確認しているせいで同じ結果を出してたりして。
メールに日本語入ってるんか?
0405デフォルトの名無しさんNGNG
カスタム属性の使い道がいまいち思いつかんのだが...
0406デフォルトの名無しさんNGNG
>>404
いや、上にも書いてるけど、JISコードって言ってるから(ま、メールだからね)、
結局はASCIIにしてもUTF8にしてもShift_JISにしても「結果は同じ」になるわけで。
0407デフォルトの名無しさんNGNG
>>405
テラリウムで遊んでくればとりあえず感じはつかめる。
0408デフォルトの名無しさんNGNG
>>407
それは提供されてる属性の使い方の感じでないの?
# や、実はテラリウム触った事ないから全然知らないんだが。
>>405は、どういう時に自分で定義してうまく活用できるんだということのような。
0409デフォルトの名無しさんNGNG
>>408
テラリウムにはゲーム本体を動かしてるアセンブリと、
そのゲーム本体アセンブリが読み込むクラスの基本クラスの入ったアセンブリがあって、
その基本クラスの入ったアセンブリにカスタム属性が定義されてる。

で、この基本クラスの入ったアセンブリを使って
プレイヤーは派生クラスをつくってゲーム本体に読む込ませて遊ぶんだが、
このとき派生クラスとそのアセンブリの補足的な情報を得るために
ゲーム本体は派生クラスやアセンブリなどから設定されたカスタム属性を読み取ってる。
0410405NGNG
>409
エクスプローラとか使っててファイルになんか印つけさせろとかそんな感じね

うーん継承とかとの使い分けが微妙だけど使い道あるかも
でもやはり動的生成がらみかな
0411デフォルトの名無しさんNGNG
>>409
なるほど、てか、いかにもって使い方ね。
>>408でこういうのを提供されてる属性の使い方って書いたんだけど、
考えてみれば、そりゃこういう風に活用するって参考にはなるね。
0412デフォルトの名無しさんNGNG
>>410
継承とかインターフェイスの実装で代用できるような使い方もあるけど、
それらとは違ってあらゆる要素に適用できるのも特徴かな。
0413デフォルトの名無しさんNGNG
そういえば属性で設定した値って、実行時に変えられたっけ?
変えられるかどうかはカスタム属性の定義しだいだっけ?


と、最近DllImportAttributeの値を実行時に変更できなくて面倒な思いをしたやつが言ってみる。
0414デフォルトの名無しさんNGNG
>412
なっとく。これはおもしろひ。
あとはGenericsさえ実装されればC#メインにしたいんだが...
0415デフォルトの名無しさんNGNG
ttp://66.102.7.104/search?q=cache:2sx4zD-Rp-0J:www.kanazawa-net.ne.jp/~pmansato/Books.htm+Anders+Hejlsberg&hl=ja&lr=lang_ja&inlang=ja
↑に載っている「C# 標準リファレンス」がMSのサイトで公開されてると書いてますが、それはここのことでしょうか?
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csspec/html/CSharpSpecStart.asp
0416デフォルトの名無しさんNGNG
クラスのオブジェクトをメソッドに渡すときにrefをつけて渡すのとそのまま渡すのでは違いはあるのでしょうか?
もとから参照型なので違いはないように思うのですが。
0417デフォルトの名無しさんNGNG
>>416
参照のコピーを渡すか参照の参照を渡すか。
メソッド内でnewしたときとかでかわってくる。
0418416NGNG
>>417
refで渡した参照をメソッド内でnewして別のアドレスを参照するようにしてしまうと
元のアドレスのオブジェクトが残ってしまうということですか?
0419デフォルトの名無しさんNGNG
>>416
void A(ref object x) { x = null; }
void B(object x) { x = null; }

object a = "abc";
object b = "def";
A( ref a);
B( b);

a は null になる。b は null にならない。
0420デフォルトの名無しさんNGNG
TextBoxでテキストがCutされた時のイベントって、どうやったらいいんでしょうか。
TextBox.TextChangedイベントはあるんですけど、Cut限定じゃないんで、Pasteにも反応してしまいます。
0421デフォルトの名無しさんNGNG
>>420
マネージコードでやるのなら右クリックされたときのテキストを保存しておいて
次のTextChangedでテキストを比べて違っている部分がクリップボードの中身と一致すれば切り取られたってのは?

めんどくさそうだが。
0422421NGNG
他にはテキストボックスのコンテキストメニューを自分で作成して監視するのと
KeyDownイベントでCtrl+Xを監視するのをするとか
0423デフォルトの名無しさんNGNG
c#勉強して、とりあえず簡単なプログラム作ったんですがいきなりつまづいてしまいました。
静的でないフィールド、メソッド、またはプロパティ 'test.x' で、オブジェクト参照が必要です。
と表示されてエラーが出ます。
public class test
{
  int x=100;
      public static void Start()
     {
      System.Console.WriteLine(x);
     }
      public static void Main(string[] args)
     {
      Start();
     }
}
0424デフォルトの名無しさんNGNG
>423
int x = 100;の前にもstatic
0425420NGNG
>>421-422
面倒でも不備は無くしたいので、両方とも実装することにします。
どうもありがとうございました。
0426デフォルトの名無しさんNGNG
>>421か>>422の片方でいいと
0427デフォルトの名無しさんNGNG
Application.IdleイベントでGC.Collect()っていいアイデアだと思わない?
このタイミングならウェイトが入っても問題ないし、
次のイベント発生時にもっともゴミの少ない状態になれる。
Windowsフォームアプリみたいなイベント駆動では必須かなとか思ってる。

ただし、連続してイベントが発生したとき、
イベント→アイドルなし→イベント、
という動作をしてくれると期待してるんだけど、
イベント→ビジーなのにアイドルイベント→イベント、
という動作をされたら逆効果だよね。
アイドルイベントの発生タイミングってどうやって調べる?
0428デフォルトの名無しさんNGNG
>427

多分 bad idea … profiling して GC が性能上の bottle-neck に本当になってるのを確認した上で、object pooling だとかの技法をつかっても駄目だったときなら OKなのかもしれないけども。

# GC.Collect () しちゃうとすべての object をナメる上に、thread も一時停止させられちゃうからなぁ…
# N88 basic の string の GC とかとはワケが違うから、.NET Framework の GC をもーすこし信用みるべし(笑)
0429デフォルトの名無しさんNGNG
>>427
それでいけるならFrameworkに組み込まれていると思われ…
0430427NGNG
そういったデメリットがApplication.Idleのタイミングなら発生しても問題ないと思うんだけどな。
どこで起こるかわからないより、起こっても問題ないところで起こしてしまおうと。

で、WindowsアプリなのにConsoleアプリでビルドして、IdleでWriteLineしてみた。
フォーム上でマウスが動くたびに出力があった。
放置状態やメニューのポップアップ中などは出力がなかった。
この仕様なら俺的にはGOサインだなと思ったよ。
0431デフォルトの名無しさんNGNG
>>427
GCがアプリのスループットを悪化させているか
GCがアプリのレスポンスを悪化させているか
>>427の対策がそれらを改善するのか
を実際に検証しないと意味がないと思う。

2ch見てると.NETの中間コード・GCの遅さが必要以上に強調されすぎてるような気がするよ。
今現在のパフォーマンスの悪さは後付されたランタイムのロードと
Win32APIのラッパーであるWindows.Formsの遅さに起因していると思う。
0432デフォルトの名無しさんNGNG
>>431
禿同
0433デフォルトの名無しさんNGNG
漏れ的には、何らかのアクションが終了したタイミングで GC 走らせる方が好みだけど。
(重い処理の終了時にどさくさにまぎれて、とか)

キー操作やボタン等へのレスポンスは大切だから、ユーザがアクションを起こそうとした瞬間
(←もちろん予知できない)にGCが先んじて動いてユーザが待たされる、ってのは気に入らない。
0434デフォルトの名無しさんNGNG
>>433
だから妄想はいいから428,431を検証したのかと。
0435デフォルトの名無しさんNGNG
C#で大きいアプリ作ってないから分からないんだが、ガベコレでどのぐらい固まるんだい?
0436デフォルトの名無しさんNGNG
C#でhttpファイル転送をするコードを書いたのですが…

private void hoge()
{
System.Net.HttpWebRequest webreq;
System.Net.HttpWebResponse webres;
//Webリクエストインスタンス生成
webreq = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(@"http://hoge/hoge.CAB");
//認証の設定
webreq.Credentials = new System.Net.NetworkCredential("hoge, "hoge");
//HttpWebResponseの取得
webres = (System.Net.HttpWebResponse)webreq.GetResponse();
//応答データを受信するためのStreamを取得
br = new BinaryReader(webres.GetResponseStream());
//ファイルに書き込むためのFileStreamを作成
bw = new BinaryWriter(new FileStream("C:\hoge.CAB", FileMode.Create, FileAccess.Write));※1
// ファイルにサーバから取得したデータを書き込む
bw.Write(br.ReadBytes((int)webres.ContentLength), 0, (int)webres.ContentLength);※2
//閉じる
bw.Close();
br.Close();
}

↓;※1か;※2でこういうエラー(例外)が起きることがあって困っています。
きわめて稀に起きるのですが、何がまずくてどうすれば解決するのでしょうか?
教えてください

mscorlib:パス "C:\hoge.CAB" の一部が見つかりませんでした。
2004/07/06,23:30:35.913,0x00f3ff03,0x00000002,0x668,0x32c, at System.IO.__Error.WinIOError(Int32 errorCode, String str)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access)
at RmAAIpAprInfLst0.CApproval.CApproval_Load(Object sender, EventArgs e)
0437デフォルトの名無しさんNGNG
あのね、GCを実行したとき参照が残ってるオブジェクトはどうなるか分かってるかい?
0438デフォルトの名無しさんNGNG
>>428や>>431の立場は俺とは逆だな。
GCがボトルネックやら関わるっていう状況は経験がないか、認識したことがない。
GCってたまにCollect()してあげないとスワップしてもどんどんメモリ消費してる。
俺のところでは百メガ超えてまだがんばってるので、
GCが”起こる”ことがボトルネックではなく、
”起こらない”ことがシステム全体をパフォーマンスダウンさせてる。
だから一つアクション起こし終えたらなるべくCollect()させることにした。
もちろん、Collect後に続いて何もしなくていいようなケースで。
何かさせる前にメモリ不足でモタつくくらいなら、させた後に解放でモタついた方が、
ユーザーにストレスを与えない作りに出来ると思う。
0439デフォルトの名無しさんNGNG
思う。
0440428 ◆Qgg7HIarPg NGNG
>438

後学のため、どういう状況でそうなるのかチョット知りたい気もする… > heap が大きくなりすぎる

# Gen 2 とか large object heap に何か山盛り残ってるとかそういうことなんだろうか?
0441438NGNG
特別なことさせてるつもりもないのでどういう状況かも説明出来ないよ。
起動して、ドキュメントを扱って、保存して、別のドキュメントも読み込んで、
その繰り返しというだけのつもりだが、どうせ参照が残ってるとか言われるんだろうな。
GC.Collect()でガクっと減るから残ってはいない。
0442デフォルトの名無しさんNGNG
>>437
どうなるの?
世代がシフトするかなと思うけどそれって好都合。
勝手に発動するGCにはかかりにくく、GCしたいときにかかる。
0443デフォルトの名無しさんNGNG
>>436
typo じゃないとするなら、C:\\hoge.CAB って書いてないため、
Cドライブのカレントディレクトリが使えない状況のときエラーになってるんだと思う。
0444デフォルトの名無しさんNGNG
C++の__FILE__や__LINE__みたいな指定はC#ではどうやればいいのでしょうか?
0445デフォルトの名無しさんNGNG
出来ませんorz
0446簡単なベンチとってみたNGNG
環境:CPU AthlonXP3000+ MEM:512MB(テスト中は大きなスワップ無し)
テスト内容:GC.Collect()の空実行10000回の実行時間。

テスト結果
フォーム一枚+ボタン数個の場合:1432ms
フォーム一枚+ボタン数個+objectインスタンス10000個+その参照を保持した配列の場合:4066ms

>>438の言うようにメモリぎりぎりの状態でCollectで100MB稼げるなら効果はありそう。
GC.Collectのオーバーヘッドもそれほど大きくは無い。
ただ個人的にGCで100MB減るような現象は見たことが無く、メモリに余裕がある場合にも効果はない。
さらにApplication.IdleでCollectするテクニックが横行した場合、
複数のアプリケーションで頻繁にCollectされるのでそのオーバーヘッドは無視できないものとなる。
なので.NET製アプリケーションの作法としては行儀のいいやり方とはいえないと思う。
結論:IdleでCollectは楽しすぎ。
0447デフォルトの名無しさんNGNG
ところでApplication.Idleって非アクティブ状態でも0.1秒間隔で
発生するんだけど、いったいなにが起ってるんだろう。
0448427NGNG
テスト中だけど、今のところIdleでGCやらせても問題ない気がする。(憶測)

>>447
Idleイベントで何させてるかで、何度もIdleイベントが呼ばれる。(危険)
最初、Idleの度にフォームのテキストを書き換えたらそうなって困った。
Consoleに書き出せばフォームにイベントが起こらないので、
毎回GCしても非アクティブ時にはイベント発生しなくなる。

だから>>446の、
>複数のアプリケーションで頻繁にCollectされる
という状況にはならないんじゃないかな。
0449428 ◆Qgg7HIarPg NGNG
>441

うーむ、20Kbytes 以上のデカい instance が悪さしてるんだろうか?

>446

ワシも見たこと無いですねぇ>GC.Collect () でドカンと減る奴
0450デフォルトの名無しさんNGNG
Form.Closingで、ドキュメントを保存するかどうか確認させているのですが、
アプリ終了前にWindows自体シャットダウンをされたとき、
確認ダイアログとともに「応答なし?秒で閉じます」的なダイアログが出てしまいます。
これはどうやって回避するんですか?
0451デフォルトの名無しさんNGNG
>>448
一般的には問題なさげなタイミングのようだけど、
ことネットワーク関連アプリの場合は、UI処理が終わって idle が発生するときは
UI操作によって動き始めたワーカスレッドがまさに全力で処理中だったりするので、
なんか最悪のタイミングなような気がする。
0452デフォルトの名無しさんNGNG
>>450
ドキュメントのSessionEnding イベントの解説を参考にして、WM_QUERYENDSESSION
をトラップしてそこで処理する。
0453デフォルトの名無しさんNGNG
>>433みたいに、突然モタモタする事ってよくあるけど、
これってGCが発動したからじゃなくて、GC終えてもまだメモリ不足でスワップしたからだよ。
GCはいつ起こったか気がつかないほどスマートな仕事してるから、
while内みたいなループ部分で呼ばない限り、パフォーマンスダウンを実感できない。
0454デフォルトの名無しさんNGNG
GCってメモリ再配置までやるの?
それとも未使用状態にもどすだけ?
0455デフォルトの名無しさんNGNG
>>454
http://www.microsoft.com/japan/msdn/net/general/dotnetperftechs.asp
0456デフォルトの名無しさんNGNG
無駄にGC呼ぶとCPUの一次二次キャッシュが吹き飛びそうだな
0457デフォルトの名無しさんNGNG
なるほど、キャッシュがあるからGC速いのか。
0458デフォルトの名無しさんNGNG
>457

それもあるけど、速さの主たる理由ではないと思う…
0459デフォルトの名無しさんNGNG
質問があります。
Form2からForm1のコントロールを操作するのに、Form1のコントロールの
可視性をPublicにしても良いのでしょうか?
0460フェルトNGNG
パソコンのゴミ箱アイコンで、ゴミ箱を空にするを選択したら、Dd121を削除できませんって出ます。
Dd121ってなんですか?
0461フェルトNGNG
書き込むところを間違えました
0462デフォルトの名無しさんNGNG
>>459
状況によるけど、BeginInvokeかな。
0463デフォルトの名無しさんNGNG
>>459
コントロールのフィールドに限っては、Publicに変更でも別に良いと思う。
オブジェクト指向の完璧主義者なら、コントロールのスコープはPrivateのままで、
コントロールにアクセスするにはプロパティを作成して内部でアクセスするけど、
それだと余りにもプロパティーの数が増えすぎてソースは長くなるし、読みづらく
なるので、オブジェクト指向の完璧主義者でもないなら手っ取り早くPublicで良いのではと思う。
VB.NETなら直接コントロールにアクセ可能だしね。
0464 ◆Qgg7HIarPg NGNG
# C# に限った話ではないケドも…

ttp://msdn.microsoft.com/netframework/downloads/updates/sptechpreview/default.aspx

.NET Framework 1.0SP3 & 1.1SP1 technical preview … 正式 release は何時頃になんだろなぁ…
0465デフォルトの名無しさんNGNG
1.0なんてもうイラネ
0466デフォルトの名無しさんNGNG
>>462
…うーん、状況によるってもちょっとそれは出てこん…
0467デフォルトの名無しさんNGNG
>>464
Windows XP SP2 と同時期かと。
XP SP2 RC版で既に .NET Framework 1.1 SP1 が入っていたので、一緒に試しているけど、
Visual Studio .NET 2003 でいじっている分には、今のところ、問題ないです。
0468デフォルトの名無しさんNGNG
タイマで1msec単位でイベント発生できますが、
もう3桁こまかくμsec単位でイベントを制御したいときはどうしたらいいですか?
0469デフォルトの名無しさんNGNG
Windowsはそんな高精度に動作できない
0470デフォルトの名無しさんNGNG
そんな高精度タイマが使えたら携帯電話にすら.NETがのってるだろうな。
0471468NGNG
Windowsからは制御できませんか…
わかりました。

0472デフォルトの名無しさんNGNG
>>471
一応、単なる高精度カウンタだったらQueryPerformanceCounter()なるAPIがあるよと言っておこう。
まぁ、多分あなたがやりたいことにはあんまり役に立たないと思うが…参考までに一応な。
0473デフォルトの名無しさんNGNG
ハードウェアクロックが8192Hzとすると
...123マイクロ秒
0474デフォルトの名無しさんNGNG
最強の時計はな、太陽系と、それに含まれる星の公転、時点速度を割り出してエミュレート。
そこから地球上の時間を割り出すんだよ。
0475デフォルトの名無しさんNGNG
>>474
知ったかぶりと言うよりは、子供の戯れ言レベルのアホだな。
0476デフォルトの名無しさんNGNG
Application.Run(Form)はForm.ShowDialog()に比べて何か特別なことしてるの?
0477デフォルトの名無しさんNGNG
先生!>>476にツッコんでいいのかどうか微妙です!
0478デフォルトの名無しさんNGNG
初めての人には優しくしてあげなさい。
0479デフォルトの名無しさんNGNG
ASPから他のEXEにデータを渡したいのですが、どういう方法があるのでしょうか?

今は毎回
StartInfo.Arguments
を与えた上で
Start();
させてるのですが、常駐しているexeに渡すいい方法はないでしょうか?
0480デフォルトの名無しさんNGNG
>>479
Winに特化した方法としては、EXE 側が COM サーバになって COM オブジェクト経由で渡す。
一般的な方法としては、何かプロトコルを考えてソケットやネームドパイプで渡す。
0481476NGNG
どこが変?
Application.RunをShowDialogに変えても動作したんだけどどうなのよ?
0482デフォルトの名無しさんNGNG
>>481
ttp://dobon.net/vb/dotnet/form/notopenform.html
まずこの辺でも読め。
0483479NGNG
れすありがとうございます。

なんかCOMサーバーとか難しそうですね…

どうしようかな… がんばるか…
0484デフォルトの名無しさんNGNG
>479 .NETリモーティングとか使えへんの?
0485デフォルトの名無しさんNGNG
Form間の値の受け渡しについて教えてくだされ。
FormHogeからFormFugaを呼び出すとすると、
ShowDialog(this)みたいに呼び出しているんだから
FormFugaからFormHogeの変数(private/public)にはアクセスできるはず。

で、どんな風にして値を読めば良いの?
0486デフォルトの名無しさんNGNG
>>485
FormHoge.ShowDialog(FormFuga)としたとき、
FormFugaのOwnerプロパティにFormHogeの参照が入ってる。

>  FormFugaからFormHogeの変数(private/public)にはアクセスできるはず。
いやprivateは無理だろ。
0487デフォルトの名無しさんNGNG
アクセスできなければエラーが出るからまずはアクセスしてみれ。
エラー内容聞いてから一緒に考えようじゃないか。
0488デフォルトの名無しさんNGNG
>>468
Win32APIのtimeSetEventは試した?
それがアプリレベルで一番精度が高いんじゃない。
0489デフォルトの名無しさんNGNG
メディアプレイヤーのバーを出さないで、
指定した音楽ファイルを再生する方法を教えてください。
BGMみたいなものをつけたいです。
また、再生が終了したことを検地する方法も教えてください
0490485NGNG
>>486
じゃあ、HogeからFugaの値を読むためだけに、
特定の変数をpublicにしないといけないってこと?
なんでもオープンな体質はOO的にはよくないって聞いたけど…
0491デフォルトの名無しさんNGNG
>>490
他のオブジェクトにprivateメンバまで見せる方がよっぽど「オープン」じゃないか?
というか設計が変だ。

前もやったがOpenFileDialogを例にしよう。

OpenFileDialog dialog = new OpenFileDialog(); //そのオブジェクトに必須のデータはコンストラクタで設定する
dialog.Filter = "すべてのファイル|*.*";      //オブジェクトの処理に使う各種データをプロパティに書き込む
if (dialog.ShowDialog(this) == DialogResult.OK) { //ダイアログを開く
   filename = dialog.FileName;   //必要なデータをダイアログのプロパティから読み込む
}
0492デフォルトの名無しさんNGNG
>>489
BGMのような扱いをするならメディアプレイヤーでなくてManaged DirectXを使うのが一番簡単じゃない?

>>490
internalにするとか。
0493デフォルトの名無しさんNGNG
>>492
BGMというか、ボタンを押した時にサウンドを鳴らすようなことがしたいんです。
C#標準では無い機能なんですかねぇ?
検索しても余り出てこないし、これだけのためにDirectXの勉強なんてできません
0494デフォルトの名無しさんNGNG
>>493
確か.NET Framework2.0でサウンド処理も追加されるはずだがね。

Managed DirectXでサウンドを再生するのに勉強と言うほどのこともない。
再生・停止するだけならAudioVideoクラスでほとんど手間なく実装できる。
//ボリュームの指定にちょっとはまったけどな。
0495デフォルトの名無しさんNGNG
>>493
メディアプレイヤーを表示しないようにする。
DirectXなら
Microsoft.DirectX.AudioVideoPlayback.Audio hoge = new Microsoft.DirectX.AudioVideoPlayback.Audio("hoge.wav");
hoge.Play();
.NET 2.0なら
System.Windows.Forms.SoundPlayer hoge = new System.Windows.Forms.SoundPlayer("hoge.wav");
hoge.Play();
0496デフォルトの名無しさんNGNG
半角・全角を判断する方法は
char ch = '半角文字か全角文字(一文字です)'
byte[] byt = Encoding.Default.GetBytes(ch.ToString());
で、byt.Length が 2 だったら全角
というような判断でいいですかね。
もっと良さそうな方法があれば教えてください
0497デフォルトの名無しさんNGNG
>>496
文字コードを見ればいいんじゃない?
もしくは、強引だけどlstrlenを呼び出してきて、1なら半角、2なら全角。
0498デフォルトの名無しさんNGNG
HailStormって今どうなってるの?
最近あまり話を聞かないんだけど。
検索で見つかるのは2001年の情報ばっかり。
0499デフォルトの名無しさんNGNG
>>498
正式名称は.NET My Servicesで、
ttp://itpro.nikkeibp.co.jp/free/NBY/NEWS/20030320/1/
こういうことらしい。
0500デフォルトの名無しさんNGNG
500get!
じゃなくて、
ループの中で、
Console.Writeline(hoge[i]);
ってやると
hoge[i]
hoge[i+1]
って表示されますが、これを改行なしで
hogehage
にするにはどうすればいいでしょうか?
0501デフォルトの名無しさんNGNG
>>500
WriteLineじゃなくてWrite
0502デフォルトの名無しさんNGNG
なんか逝っちゃった質問ばっかだ…
0503デフォルトの名無しさんNGNG
theSpoke効果だなw
0504479NGNG
噂のthespoke買ったものです。

100010010110101...
といった二進数をそのままバイナリファイルとして保存するにはどうすればいいのでしょうか?
BinaryWriteというのはどうつかえばいいんですか?
0505デフォルトの名無しさんNGNG
>>504
まずその二進数とやらを何の型で保持してるかが問題だ。
0506デフォルトの名無しさんNGNG
504は混乱した。
0507504NGNG
とりあえずStringでもってます。
同時にchar[i]で一文字ずつのもあります。

0508デフォルトの名無しさんNGNG
>>507
例えばConvert.ToByteとBinaryWriter.Write

問題は一番最後の桁、これが8ビットに足りない場合だな。
どう処理するかによって適当にビットシフトだ。

//ってことが分かるくらいならそもそも聞かないかもなーw

try&errorで経験を積み重ねていこうや。
0509504NGNG
FileStream fs = new FileStream(@"c:\tete.bin",FileMode.CreateNew);
BinaryWriter bw = new BinaryWriter(fs);

なんちゃらかんちゃら

bw.Flush();
bw.Close();

でいけました。 ありがとうございました。
0510デフォルトの名無しさんNGNG
水平/垂直帰線割り込みってある?
0511デフォルトの名無しさんNGNG
>>510
そりゃC#じゃなく
0512デフォルトの名無しさんNGNG
>>511
こっちのスレで聞いてみるとか。

Managed DirectX vol.2
http://pc5.2ch.net/test/read.cgi/tech/1061285378/l50
0513512NGNG
>>511じゃなくて>>510だった。
0514デフォルトの名無しさんNGNG
>509

折角構文にあるんだから

using (BinaryWriter bw = new BinaryWriter (File.Open (@"foo.bin", FileMode.Create)))
{
// ... Do what you want...
}

するのが美しいかと…本質的ではないのだが…
0515デフォルトの名無しさんNGNG
timerって割り込み?それともイベント?
0516デフォルトの名無しさんNGNG
割り込みとイベントをどういう意味で書いてるんだよ?
ついでにtimerって何のことを言ってるんだよ?
0517デフォルトの名無しさんNGNG
wm_timerイベント
0518デフォルトの名無しさんNGNG
>>515
がんばっても答えようがないほどあいまいは質問だな。
ちなみにWM_TIMERは割り込みでもイベントでもなく、整数。
0519デフォルトの名無しさんNGNG
( ゚д゚)ポカーン
0520デフォルトの名無しさんNGNG
>>518
まぁ、整数は整数なわけだが、「メッセージ」ぐらいにしておいてやれよ。
0521デフォルトの名無しさんNGNG
>>517は自分で「イベント」と言ってるけれど。
0522デフォルトの名無しさんNGNG
>>517
> wm_timerイベント

そんなものはない。
0523デフォルトの名無しさんNGNG
イベントというならTimer.Tickイベントだろ。
0524デフォルトの名無しさんNGNG
theSpoke発売&夏到来ということで、
これから1〜2ヶ月をがんばって乗り切りましょう。>ALL
0525デフォルトの名無しさんNGNG
>>524
なぜここでお前が仕切っているのか知らんが、
がんばって乗り切るというのは、これからうじゃうじゃ湧いてくるであろう厨房の対策か?
それなら俺はごめんだな。
0526デフォルトの名無しさんNGNG
そう。お前みたいな奴の対策だよ
0527デフォルトの名無しさんNGNG
>>524-527
失せろ
0528デフォルトの名無しさんNGNG
>>527
バイバイ!(w
0529デフォルトの名無しさんNGNG
>524はとばされた
>525はとばされた
>526はとばされた
>527はこんらんしている
0530デフォルトの名無しさんNGNG
>529はふしぎなおどりをおどった!
>529はしんでしまった!
0531デフォルトの名無しさんNGNG
へんじがない。
0532529NGNG
>529はいきかえった!
0533デフォルトの名無しさんNGNG
しかし >529 のようすがへんだ。
そういえば、ここはペットセメタリー・・・・
0534デフォルトの名無しさんNGNG
初めまして〜質問してもいいでしょうか・・・

VisualStudio.NETでWindowsフォームのアプリを作っています。
TreeNodeクラスを継承し、1つだけプロパティを追加した
CustomTreeNodeクラスなるものを作りました。

ある処理で、TreeNodeオブジェクトを受け取る場面があるのですが、
その受け取ったTreeNodeオブジェクトの内容を全てコピーした
CustomTreeNodeオブジェクトを作成することは可能でしょうか?
0535デフォルトの名無しさんNGNG
>>534
簡単には、できない。

なんと>529の中身はミミックだった!
0536534NGNG
>>535
明示的にキャストするとできるのかなぁと思ったのですが、
実行時にエラーになりました・・・

あれ〜親子関係にある場合は、キャストできるんじゃなかったっけ???
わからん・・・・
0537デフォルトの名無しさんNGNG
>>536
子は親の情報に加えて自分独自の情報をもっている。
子から親へのキャストは独自の情報を捨てればいいが、
親から子へのキャストで独自の情報はどう処理すればいい?

だから(実は)子だけど親の型の参照で保持されていたものをキャストすれば
当然問題なく子にキャストできる。
しかし親の型で参照された親の型のオブジェクトは子の型にはキャストできない。
0538デフォルトの名無しさんNGNG
TreeNodeでしかないものをどうやってCustomTreeNodeにするんだボケ
キャストできるのはTreeNodeの振りしたCustomTreeNode以上のものだ
0539534NGNG
>>537、538

大変勉強になりました!どうもです!
0540デフォルトの名無しさんNGNG
using(hogehogehogehoge)
{
   foobar.foo();
   ...
}
っていう書き方を見かけるんだけど、どういう使い方をする構文なの?
マイクソ公認のVisualC#本読んだけどほとんど説明なかったんで、さくっと説明きぼん
0541デフォルトの名無しさんNGNG
>>540
using (Font MyFont = new Font("Arial", 10.0f), MyFont2 = new Font("Arial", 10.0f)) {
   //use MyFont and MyFont2
}
は
try {
   Font MyFont = new Font("Arial", 10.0f), MyFont2 = new Font("Arial", 10.0f));
   //use MyFont and MyFont2
}
catch (Exception ex) {
   throw ex;
}
finally {
   MyFont.Dispose();
}
と等価。
宣言されるオブジェクトはIDisposableを実装する必要あり。

しかしエラー処理に結局try-catchを使うならついでにfinallyも実装してやればいいからなぁ。
私はファイル処理なんかだとusingよりtry-catch-finally派だな。
0542デフォルトの名無しさんNGNG
あ、やべ。
Font MyFont = null;
try {
   MyFont = new Font("Arial", 10.0f), MyFont2 = new Font("Arial", 10.0f));
   //use MyFont and MyFont2
}
catch (Exception ex) {
   throw ex;
}
finally {
   if (MyFont != null)
      MyFont.Dispose();
}
だな。
0543デフォルトの名無しさんNGNG
usingを使うと、抜ける時にDisposeメソッドが呼ばれるってのがミソなんじゃないの?

>>541が等価なコードを示してるとおりで、try-catch使うよりもスッキリとしたコードに
仕上がってるよね。
0544デフォルトの名無しさんNGNG
Dispose される順番とかを厳密解釈すると…

using (Font MyFont = new Font ("Arial", 10.f), MyFont2 = new Font ("Arial", 10.0f)) {
// Using MyFont, MyFont2
}

は

{
Font MyFont ;
try {
MyFont = new Font ("Arial", 10.0f) ;
Font MyFont2 ;
try {
MyFont2 = new Font ("Arial", 10.0f) ;
// Using MyFont, MyFont2
}
finally {
IDisposable d = MyFont2 as IDisposable ;
if (d != null)
d.Dispose () ;
}
}
finally {
IDisposable d = MyFont as IDisposable ;
if (d != null)
d.Dispose () ;
}
}

…なげぇ…素直に using (...) {} すべし。
0545デフォルトの名無しさんNGNG
細かい子というようだが...
FONTで例やってるがFONTごときほっとけと思うんですが
0546デフォルトの名無しさんNGNG
>>545
ふぉんとにな。
0547デフォルトの名無しさんNGNG
ついでに言っておくと勝手にキャッチするような迷惑な事はされない。
0548デフォルトの名無しさんNGNG
メモ。マネージドのアセンブリをリソースとして他のアセンブリに格納する。

まず参照されるdll。
[DllPart.cs] csc /t:library /out:DllPart.dll DllPart.cs
using System;
using System.Reflection;
[assembly: AssemblyKeyFile("DllPart.snk")]  //sn.exeで作ったキーペアファイル。使いたいのに意味がない(詳しくは後述
namespace Test {
   public class DllPart {
      public string Name {get {return name;} set {name = value;}}
      private string name;
      public void SetId(int id) {
         this.id = id;
      }
      public int GetId() {
         return id;
      }
      private int id;
   }
}
0549デフォルトの名無しさんNGNG
で、DllPart.dllを参照する本体。実際には例外処理を入れるべき。
[MainPart.cs] csc /t:exe /res:DllPart.dll
using System;
using System.Reflection;
using System.IO;
namespace Test {
   public class MainPart {
      public static void Main() {
         Assembly assembly = null;
         using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("DllPart.dll")) {
            byte[] bytes = new byte[(int)stream.Length];
            stream.Read(bytes, 0, bytes.Length);
            assembly = Assembly.Load(bytes);
         }
         Type type = assembly.GetType("Test.DllPart");
         object dllpart = Activator.CreateInstance(type);
         PropertyInfo nameInfo = type.GetProperty("Name");
         nameInfo.SetValue(dllpart, "Test.", null);
         string name = nameInfo.GetValue(dllpart, null) as string;
         Console.WriteLine(name);
         MethodInfo setIdInfo = type.GetMethod("SetId");
         setIdInfo.Invoke(dllpart, new object[]{1});
         MethodInfo getIdInfo = type.GetMethod("GetId");
         int id = (int)getIdInfo.Invoke(dllpart, null);
         Console.WriteLine(id);
      }
   }
}
/r:DllPart.dllしてやればコード内でdllpartをDllPart型にキャストしてやれるじゃん? と思うのだが、
(コンパイルは通るが)なぜか実行時エラーがでてしまう。厳密名まで同じだってのに。
0550デフォルトの名無しさんNGNG
これでは使い勝手が悪いのでプロクシクラスを作って多少の楽を。
namespace Test {
   public class ProxyObject {
      private object obj;
      private Type type;
      public ProxyObject(Type type) {
         this.type = type;
         obj = Activator.CreateInstance(type);
      }
      public object this[string memberName] {
         get {
            return type.GetProperty(memberName).GetValue(obj, null);
         }
         set {
            type.GetProperty(memberName).SetValue(obj, value, null);
         }
      }
      public object Invoke(string methodName, params object[] arguments) {
         MethodInfo method = type.GetMethod(methodName);
         return method.Invoke(obj, arguments);
      }
   }
}
アクセサのパラメータがmemberInfoなのはFieldの可能性も考慮に入れて。
上のコードでは省略。
0551デフォルトの名無しさんNGNG
ProxyObjectを使って書き直したMainPart。
namespace Test {
   public class MainPart {
      public static void Main() {
         Assembly assembly = null;
         using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("DllPart.dll")) {
            byte[] bytes = new byte[(int)stream.Length];
            stream.Read(bytes, 0, bytes.Length);
            assembly = Assembly.Load(bytes);
         }
         Type type = assembly.GetType("Test.DllPart");
         ProxyObject proxy = new ProxyObject(type);
         proxy["Name"] = ".tseT";
         Console.WriteLine(proxy["Name"]);
         proxy.Invoke("SetId", 2);
         id = (int)proxy.Invoke("GetId");
         Console.WriteLine(id);
      }
   }
}

なんとかコード内で直接DllPart型を使えるようにならないものかなぁ……。
0552デフォルトの名無しさんNGNG
実行時エラーってやっぱりInvalidCastException?
厳密名なしでも駄目なんだよね?(って最初に試してるだろうけど)
0553デフォルトの名無しさんNGNG
VBでやれっていう神の啓示か…
0554デフォルトの名無しさんNGNG
bool型の変数を一発で反転させる方法ってありますか?

今は 
if(b)
b=false;
else
b=true
ってやってるのですが。もっとスマートな方法無いですか?
b = ~b;
はコンパイラに怒られます
0555デフォルトの名無しさんNGNG
>>554
>  bool型の変数を一発で反転させる方法ってありますか?
b = !b;

>>552
> 実行時エラーってやっぱりInvalidCastException?
そう。
> 厳密名なしでも駄目なんだよね?(って最初に試してるだろうけど)
駄目だね。

これさえ解決すればちょっと便利になるのになぁ。
0556デフォルトの名無しさんNGNG
関係ないが、InvalidCastExceptionとか、
もっと詳細な追加情報くれって思わん?
0557デフォルトの名無しさんNGNG
http://www.gotdotnet.com/japan/student/column/firststep/firststep11.aspx
↑これの通りやっているんですが、うまくいきません。
VisibleChangedが2回されるからか、scoreが+2されます。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&rs=77&re=78&fi=no
↑レス77目が、メインとなるForm8、78がユーザーコントロールのMoleです。
0558デフォルトの名無しさんNGNG
>534
CustomTreeNodeクラスにTreeNodeクラスからの、
暗黙の型変換演算子を宣言すればいいのではないかと思う。
implicitを調べてみて。
0559デフォルトの名無しさんNGNG
>>558
そういうことじゃない。
0560デフォルトの名無しさんNGNG
nullについて質問です。
Platform Invokeで呼び出したいWin32APIが以下のようになっています。

HDDEDATA DdeClientTransaction(LPBYTE pData,
DWORD cbData, HCONV hConv, HSZ hszItem,UINT wFmt,
UINT wType, DWORD dwTimeout, LPDWORD pdwResult);

下のように1番目の引数(LPBYTE pData)をSystem.Byteで
定義した場合には、呼び出し時にpDataにnullを渡せません。
[DllImport("User32.dll")]
public static extern IntPtr DdeClientTransaction(
ref Byte pData, UInt32 cbData, IntPtr hConv, IntPtr hszItem,
UInt32 wFmt, UInt32 wType, UInt32 dwTimeout, ref UInt32 pdwResult);

1番目の引数に、nullを渡すにはどのようにすればよいのでしょうか?
よろしくお願いします。。
0561デフォルトの名無しさんNGNG
>>560
IntPtr.ZeroがNULLポインタだからして、0を渡してやればいいんではないかい。
//XTYP_EXECUTEかXTYP_POKE以外の時は無視されるだけだと思うけど。
0562デフォルトの名無しさんNGNG
>>555
そういうことやったことは無いから適当な意見なんだけど、
namespace変えるのはどうよ?寝るけど。
0563デフォルトの名無しさんNGNG
>>560
そもそもバイト列のポインタに対してref Byteで宣言するのが正しいの?
System.Byteは1バイトのデータしか持たない気がするんだけど。

0564デフォルトの名無しさんNGNG
>559
え?TreeNodeからCustomTreeNodeへ変換できれば簡単じゃないかな?
だけど、書いてから調べたけどimplicitじゃ無理ですね。
0565デフォルトの名無しさんNGNG
>>558
じゃあその演算子の中身のコードの例を示してくれ。
その過程で気づくだろう。
自分はバカかと。アホかと。
0566デフォルトの名無しさんNGNG
>>562
そ、それをやると…何が変わるんだ…?
0567デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1089284784/242より来ました。

http://www.gotdotnet.com/japan/student/column/firststep/firststep12.aspx
「残り時間を表示するユーザーコントロール」ができません。
Startメソッドをpublicに修正し、
スタートボタンのクリックイベントハンドラで
this.lastTimer1.Start(10);
と記述したんですが、ずっと「残り10秒」なままです。
どう書けば作動してくれるんでしょうか?
0568デフォルトの名無しさんNGNG
>>561
ガッ
0569デフォルトの名無しさんNGNG
Dotfuscatorは無料版だと貧弱だし、高機能版は高価すぎる。
海外製のオブファスケータはいろいろあるけど、どれもとんでもなく高価だ。
体験版を試しても、マトモに動かないものとかあるのに、製品は数十万円とか。
とても購入意欲は湧かないので自前でどうにかしようと思っている。
アルゴリズムはそれほど難しくなさそうだけど、アセンブリのいじり方がわからない。
Reflectionで様々な情報が取得出来るけど、情報を書き換えるにはどうするの?
0570デフォルトの名無しさんNGNG
ildasm.exe
0571名無しさん@そうだ選挙に行こうNGNG
日本の尖閣諸島付近には、
イラクに匹敵する世界第2位の量の石油が眠っている。
そしてその資産はなんと、640兆円にもなる
 (日本の年間国家予算は約80兆円なので8年分に相当)

        ミ     ∧_∧
        ⊂ヾ(・∀・ )  ヘェーヘェーヘェーヘェーヘェ
        ∩ ゝヽ ⊂_ノヽ 

だが、その資源が日本政府のせいで全て水の泡になりそうだ

えぇ━━(゚Д゚;)━━━!!!!!

詳しくわ↓
http://mobius1.nobody.jp/
http://blog.livedoor.jp/team_lifeline/

0572名無しさん@そうだ選挙に行こうNGNG
>>571
すれ違い宣伝だが、600兆も本当にあれば、借金の半分は減らせるねぇ。うん。
ま、戦争などで輸入ができなくなったときのために「貯蔵」したいのか
単に中国が怖いのかだ
0573名無しさん@そうだ選挙に行こうNGNG
>>566
いや、別アセンブリで同namespaceってのが同居できると気持ち悪いな、と思って。
厳密名が被る可能性があるような気が。まあ適当に言ってるだけなんだけど。
0574名無しさん@そうだ選挙に行こうNGNG
厳密名ってそういう意味だっけ?
0575573NGNG
あ、言葉間違えてるねすまん。普通に名前って書きたかった。
0576573NGNG
バージョンが違うけどインタフェースが同じアセンブリを2つ同時にとか。
typeがstringから生成出来るし、名前が被るとどうなるのかなあと思って。
まあ知らないことに適当に口を挟んでも馬鹿にされるだけだね。ここらでやめとく。
0577名無しさん@そうだ選挙に行こうNGNG
まあ、別のクラスの名前がかぶるのは基本的に不要な混乱をもたらす
可能性があるので、止めた方がいい、というのはそうだと思うんだが…
# ちなみに同じ名前空間が別のアセンブリというのは、標準ライブラリでさえある。

問題は今回の話とつながらないってことだ。
0578573NGNG
> # ちなみに同じ名前空間が別のアセンブリというのは、標準ライブラリでさえある。

だとしたら本当に話がつながらなくて申し訳ないんだけど、
これは本当なの?俺が馬鹿なのかな?参考のために教えて欲しい。

SystemとSystem.Reflectionは名前空間違うって認識で合ってる?それとも俺馬鹿?
0579デフォルトの名無しさんNGNG
>>478
>> # ちなみに同じ名前空間が別のアセンブリというのは、標準ライブラリでさえある。
> これは本当なの?
本当。
例えばわかりやすいのはSystem名前空間。
System名前空間直下の型なんかは、いろんなアセンブリに存在してる。
※念のため、もちろん同じ名前のクラスじゃないよ。誤解を招いてたらスマン。
0580573NGNG
> System名前空間直下の型なんかは、いろんなアセンブリに存在してる。

System.DesignがSystem.Design.dllに入ってるよ、って言ってるならやっぱおかしい。
System.Designは名前空間であって型じゃないよ。

System.ArrayがSystem.dll以外に入ってるってなら合ってるけどマジで?
つーか>>550-551のnamespace別々にして試してみない?とりあえず。
俺会社に行かないと環境無い。
0581デフォルトの名無しさんNGNG
>System.DesignがSystem.Design.dllに入ってるよ、って言ってるならやっぱおかしい。
だからSystem名前空間「直下」の型って書いてるだろうに、ちゃんと読めってか確認してみたら?

>つーか>>550-551のnamespace別々にして試してみない?
だから、全然関係ないの。
っていうか、どれとどれの名前空間を変えろって言ってるのかよく分かんらんけどね。

大体元の問題は、同じアセンブリ(って化クラスと)認識されるはずなのに、
別物と認識されてキャストできないって言ってるんだ。
問題は「同じクラスなのに同じと認識されない」事。
名前空間を変えるって方向が理解できないってことが分かるだろ。
0582デフォルトの名無しさんNGNG
ついでだ、
>System.ArrayがSystem.dll以外に入ってるってなら合ってるけどマジで?
そこまで言ってるんなら、System.Arrayがどこに入ってるか一回確認してみろよ。
0583デフォルトの名無しさんNGNG
>>580
うだうだ言ってないで会社行ったらオブジェクトブラウザでも見てみれば?
0584581NGNG
>>581の最初のは俺の読み違いだった。
俺が名前空間を型だと勘違いしてるんじゃないかって思われたわけね?
# まあ、そんな勘違いは最初からしとらんが。
0585573NGNG
試せない状況でうだうだ言ってごめん。
そもそも俺が疑問を持った経緯を書いてないのが悪かった。

同じnamespaceでclass名が重複したらコンパイルエラーになるよね。
俺はそもそも同じnamespaceでアセンブリが分けられるとは思ってなかったんだけど、
静的に参照しているならアセンブリが分かれててもコンパイルは通せて、
型が保証されるのは納得できるのよ。

で、動的にロードすると同じclass名とかもうどうしようも無いから、
そもそも同じnamespaceが許されてないんじゃない?と思った。
いやもう馬鹿でいいけど、ごめんよ。明日自分で試して納得するよ。
0586デフォルトの名無しさんNGNG
>>585
それは逆。
名前空間、クラス名が別のアセンブリで重複するとき怒られるのは
静的に参照してる場合の話(コンパイル時の話)。
動的にロードした場合は問題ない(扱う側で注意は要るけど)。
※念のため、もちろん別クラスとして認識される。

静的に参照したアセンブリと動的にリソースからロードしたアセンブリが
同じと認識されないのはどういうことだってのが問題。
0587573NGNG
>>586
あー、一晩寝たら少し話が見えてきた。
実装をすげ替えるんだったらinterface経由でやればいいんじゃないの?
一応以下は会社で試して、動いたよ。まだ勘違いしてたらすまん。

//InterfacePart.cs
//csc /t:library /out:InterfacePart.dll InterfacePart.cs
namespace Test
{
public interface IDllPart
{
string Name { get; set; }
void SetId(int id);
int GetId();
}
}
0588573NGNG
//DllPart.cs
//csc /t:library /res:InterfacePart.dll /out:DllPart.dll DllPart.cs
namespace Test
{
public class DllPart : IDllPart
{
public string Name {get {return name;} set {name = value;}}
private string name;
public void SetId(int id)
{
this.id = id;
}
public int GetId()
{
return id;
}
private int id;
}
}
0589573NGNG
あー読みにくいねすまん。
//MainPart.cs
//csc /t:exe /r:InterfacePart.dll /res:DllPart.dll MainPart.cs
namespace Test
{
public class MainPart
{
public static void Main()
{
Assembly assembly = null;
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("DllPart.dll"))
{
byte[] bytes = new byte[(int)stream.Length];
stream.Read(bytes, 0, bytes.Length);
assembly = Assembly.Load(bytes);
}
Type type = assembly.GetType("Test.DllPart");
object o = Activator.CreateInstance(type);
IDllPart dllpart = o as IDllPart;
dllpart.Name = "Test.";
dllpart.SetId(1);
Console.WriteLine(dllpart.Name);
Console.WriteLine(dllpart.GetId());
}
}
}
0590デフォルトの名無しさんNGNG
うるさい
0591デフォルトの名無しさんNGNG
>>590
カルシウムは足りてるか?
錠剤じゃ吸収率がよくないそうだぞ。

>>587-589
これはこれで面白い結果だが。
//いまいち言葉にしにくいので考察はパス。

しかしこの場合参照ファイルとしてInterfacePart.dllが必要なわけで、
アセンブリの格納としては意味が薄れてしまう……。
//InterfacePart.dllを作って参照するくらいなら初めからDllPart.dllを参照する。
//「実行時に参照ファイルが必要ない」が目指すところ。
//DllPart.dllをいじらない、ってのも必要か?
//ソースがあるならMainPartコンパイル時にDllPart.csも含めればいいんだし。
0592デフォルトの名無しさんNGNG
System.Windows.Forms.Keys.Clearはウチのキーボードにないのですが、
何をするキーだと思えばいいですか?
0593デフォルトの名無しさんNGNG
>>592
そのまんま、クリアするキーらしい。
テキストボックスやら電卓の計算結果やら。
Windowsでは一般的ではない、と思う。(というか有効な(日本製)アプリってあるのか?)
AppleのキーボードにESCのそばにあるとかなんとか。
0594デフォルトの名無しさんNGNG
リッチエディットのデフォルトショートカットにCtrl + Clearが載ってる
0595デフォルトの名無しさんNGNG
>>591
そんなに条件厳しかったのね。
マネージドじゃちょっと思いつかないなあ。
0596デフォルトの名無しさんNGNG
http://www.microsoft.com/japan/msdn/net/general/persistappsettnet.asp
ここを参考にとりあえず、フォームのLocationを
Closingイベント時にXMLで保存しようとしたのですが、
どうも上手くいかず、空のファイルが出来るだけです。
疲れたよ・・・

ヒント教えて
0597デフォルトの名無しさんNGNG
>>596
独り言で済まされたくないのならもうちょっと文章を考えるべきだと思う。

XmlSerializerのシリアライズとデシリアライズをきっちり勉強しろ、としか。
0598デフォルトの名無しさんNGNG
>>596
具体的にどのようなコードを書いて上手く行かなかったのか全く記述なし、
そもそも質問する態度がなってない、
もうぬるぽ。
0599560NGNG
>>561
>>563
解決しました。ありがとうございました。
IntPtr.Zeroは便利そうなので乱用してみます

0600デフォルトの名無しさんNGNG
>>599
どう解決したのか書こうよ。
0601デフォルトの名無しさんNGNG
>>600
600を取ったおまえをガメラは許さない。
0602152NGNG
C#の参照ってC++の参照とほぼ同じなのでしょうか?

呼び出し元の変数の内容を書き換える場合はどうすれば良いのでしょうか?
呼び出し元のvalueをクラス hoge内部で書き換えたい場合は
ポインタを使用するしかないのでしょうか?

    private void button2_Click(object sender, System.EventArgs e)
    {
      bool value = false;
      Hoge foo = new Hoge(value);
      foo.getStatus();

      if (value) MessageBox.Show(this,"ok");
    }

    public class Hoge
    {

      private bool hoge;
      public Hoge(bool value)
      {

        hoge = value;
        hoge = true;
      }

      public void getStatus()
      {
        if (hoge) MessageBox.Show("");
      }

    }
0603152NGNG
あ、refを使用した場合でも書き換わりませんでした
0604デフォルトの名無しさんNGNG
>>602
「参照」ならC++のように呼び出しもとの値を書き換えられる。
0605602NGNG
>>604
サンクスです
いろいろと実験したら
クラスで包んでやればできました。

boolとかintの場合はなんかクラスで包んでやらないといけないのですね
0606デフォルトの名無しさんNGNG
んなこたない。

public class Hoge {
  public static void Main(){
    int x = 100, y = 200;
    System.Console.WriteLine("x = " + x + "   y = " + y);
    swap(ref x, ref y);
    System.Console.WriteLine("x = " + x + "   y = " + y);
  }
  static void swap(ref int a, ref int b){
    int tmp = a; a = b; b = tmp;
  }
}
0607602NGNG
>>606
すんません
ちょっとサンプルが悪かったです


    private void button2_Click(object sender, System.EventArgs e)
    {
      // 初期値でfalse
      bool value = false;
      Hoge foo = new Hoge(value);
      
      // クラスHoge内部でvalueの値を書き換えたい!
      foo.updateStatus();
    1  
      if (value) MessageBox.Show(this,"ok");

    public class Hoge
    {

      private bool hoge;
      public Hoge(bool value)
      {
        hoge = value;
      }
  
      public void updateStatus()
      {
        hoge = true;
      }
    }
0608デフォルトの名無しさんNGNG
>>602
おまいはいったい何がしたい?
クラスとかインスタンスとかいうもののイメージが理解できてるか?
0609デフォルトの名無しさんNGNG
この例なら返り値を取らせればいいとおもうけどね。
0610602NGNG
要するになにがしたいかというと
デザインパターンでいうObserverのような機能を実現したいのです

もうちょっと自分でやってみます
0611デフォルトの名無しさんNGNG
>>607
少なくとも、そのコードではhogeに渡しているのは valueのコピーであって参照ではない。
0612デフォルトの名無しさんNGNG
ある変数と同じオブジェクトを別のクラス内で参照しておきたいと言う事なら、
object型などの参照型にアップキャストして保持しとくしかない。
使う時にダウンキャストしないといけなくなるので今一だが。
# まあ、ラッパークラス作ってもいいんだけど。

しかしながら、
if (value) MessageBox.Show(this,"ok");
のところを、
if (foo.value) MessageBox.Show(this,"ok");
みたいな形では駄目なのかを考えた方がいい。
# valueはprivateだなんて突っ込みは不要。
0613デフォルトの名無しさんNGNG
そもそもboolを持たせといてObserverってのがよくわからんな。
0614デフォルトの名無しさんNGNG
Observerパターン?
>>607のコードがいまいちピンとこないんだが…
0615602NGNG
ユーザーコントロールでテキストボックスを拡張した物を作りました
EditBoxという名前とします

フォーム上に30個ぐらいEditBoxを配置するとします
このときにEditBoxに呼び出し元のフォームを知らせます

どれか一つでもテキストボックスの値が変更された場合は
呼び出し元のフォームの更新フラグを更新します
# コントロールの数が増えたり減ったりすることがあるので
# 戻り値で受け取るのはミスが増えるのでやりたくないんです

こうすれば
呼び出しもとのフォームは個々のコントロールの更新未更新を考えずに
画面の内容の更新をしることができると思うんです
こういうのを考えているんですが
javaだとできるんですがC#だとうまくいきません

0616デフォルトの名無しさんNGNG
>>615
フォームにフラグ更新メソッド作っておいて、
そのEditBoxとやらに呼ばせれば?
0617デフォルトの名無しさんNGNG
そもそも親フォームの更新フラグの存在をEditBoxが知っていることが間違ってる。
いや親フォームの存在すら知るべきではない
0618デフォルトの名無しさんNGNG
「Observerのような機能」じゃなくて「Observerの機能」を持たせればいいと思います。
0619602NGNG
>>613
Observerだとメソッドをたたくじゃやないですか
そうじゃなくて更新フラグとかで通知だけしたいなと思ったんです

boolじゃなくてsetUpdateFlag()
とかのほうがスマートなんだろうか・・・

>>612
参照型として保持しておけば(・∀・)イイ!!んですね
プリミティブ型のラッパークラスは標準では用意されてないんですね
ありがとうございました

>>614
たぶんうまく伝わってませんすみません

>>616
そうですねラッパークラスを作るより
その方が早そうですね

>>618
その方向でやってみます

>>617
Observerにしてしまえば親フォームでコントロールの更新状況などを
考えなくて良いのは便利だと思うのですがどうでしょう?
単一の部品としではなくフレームワークとして考えてですが

とりあえず眠くなってきたので
みなさんのアドバイスを元に起きたらいろいろと試してみてみます
なんかできそうな気がしてきた
0620デフォルトの名無しさんNGNG
なんでJavaで出来てC#で出来ない?
大体フラグ更新という考え方(最初の考え方)だと
Observerのようにならないってのは分かるか?
# それでいいなら別にいいんだけど、そりゃObserverとは言わないだろ。

やり方なんていくらでもあって、EditBoxの既存のイベントを利用する、
独自のイベントを追加して利用する、更新通知メソッドをフォームに用意して
呼び出す、同じようなもんだがフラグプロパティをフォームに用意する、
更新通知デリゲートを渡してフォームに通知する(こりゃイベントとあまり変わらんが)、
なんて辺りがざっと考えられるが。
0621デフォルトの名無しさんNGNG
あと、もしフラグ更新でやるとしたら、そのフラグは
通知側が持つんじゃなくて通知される側の参照経由でセットするのが普通。
て結局は>>620と同じようになるけどな。
0622デフォルトの名無しさんNGNG
C#製アプリに.NET製言語のマクロ機能を搭載しようと思ったらどうすればいいんでしょう。
0623デフォルトの名無しさんNGNG
>>622
完全な独自実装ではなく.NETの機能を使って、例えばC#でマクロ書かせるとして、
document.new();
で、コンパイルエラー出さないためには、
using MyApp;
public class MyMacro
{
public MyMacro()
{
document.new();
}
}
最低でもこれだけ必要で、
ユーザーにとってはマクロなんて気軽なものじゃなくて完全に.NETプログラミング。
それでもかまわないならコンパイラ起動だけすればいい。
document.new();だけで動作できるVSA関連の機能は、
.NET 2.0 betaではobsoleteになってて将来使えなくなる。
0624デフォルトの名無しさんNGNG
ホストアプリと連携できなきゃ意味無いんじゃないの。
.NETでCOMサーバみたいなのって書けるのかね。
0625デフォルトの名無しさんNGNG
HTMLのテーブルの値って簡単に取得する方法ありますか?
<td>hoge</td>
htmlはstring変数に取得したのでhogeの部分を取得したい。
0626デフォルトの名無しさんNGNG
正規表現
0627デフォルトの名無しさんNGNG
VSAはobsoleteだからナシとして、コンパイラでやる例を書いておく。
MyApp.exeにBaseMacroクラスを作り、そのメンバとしてホスト連携部を用意しとく。
ユーザーのマクロはBaseMacroを継承したクラスでを書かせる。
using MyApp;
public class MyMacro : BaseMacro
{
}
MyApp.exeを参照させてDLLをコンパイルする。
作成したDLLを動的に呼び出す。
これでstaticの値が連携部になる。
0628デフォルトの名無しさんNGNG
>>626
もうちょっと具体的に教えてよ。
正規表現でhogeの部分を取得するのは、どういう風に書くの?
0629デフォルトの名無しさんNGNG
>>628
ここはC#相談室
正規表現
http://pc5.2ch.net/test/read.cgi/tech/1062152374/
0630デフォルトの名無しさんNGNG
>>628
ここで結構解説してあるよ
http://www.atmarkit.co.jp/fdotnet/basics/regex01/regex01_01.html
0631デフォルトの名無しさんNGNG
頭から尻尾まで人に聞いてると成長できないぞ。
質問するのは頭と尻尾だけだ。
0632デフォルトの名無しさんNGNG
C#の正規表現めんどくさいね。
いちいち変数宣言してプロパティセットしてメソッド呼んでとか。
ループの内部で呼ぶとパフォーマンス落ちるから
前もって別の場所で初期化しておかないといけなかったり。
スクリプト言語みたいにもっとお手軽に使えないのかね。
0633デフォルトの名無しさんNGNG
じゅうぶんお手軽だと思うんだけどなぁ。
あんまり色んな言語いじったことが無いからかも知れんけど。
0634デフォルトの名無しさんNGNG
言語組み込みの正規表現じゃなく、クラスライブラリなのでしょうがない。
0635デフォルトの名無しさんNGNG
お手軽だからこそスクリプト言語
0636デフォルトの名無しさんNGNG
データグリッドの使い方を教えてください。
検索してもデータベースサーバからごにょごにょすることばかりなのです。
0637デフォルトの名無しさんNGNG
ngen /delete * /show するつもりが、
誤って ngen /delete * してしまいました…_| ̄|○
ネイティブキャッシュを初期状態に戻す方法はないですか?
0638デフォルトの名無しさんNGNG
.NET Frameworkを入れなおすとか・・・
0639デフォルトの名無しさんNGNG
入れなおします…(ノ∀`)
0640デフォルトの名無しさんNGNG
今オリジナルメーラーを作ってます。
添付ファイルを表示するListViewにファイルをドラッグアンドドロップするとそのまま
添付ファイルとして送信できるようにしたいのです。

ListViewのlist_temp_DragEnterイベントを使ってDoDragDropメソッドを実行し、
とりあえず、DragDropEffects.Copyにしています。
この後、list_temp_DragDropイベントが実行されて、ファイル名を取得・・と考えていたのですが、
なぜかlist_temp_DragDropイベントが連続して起こります。

どうしてでしょうか。質問が下手ですみません。
0641デフォルトの名無しさんNGNG
>>640
DragEnterイベント内でDoDragDropやっちゃ駄目。
DoDragDropは自分コントロールからよそにドラッグドロップさせるためのメソッド。
(MouseDownイベントで実行させるのが普通)

DragEnterでは受け取ったDragEventArgsのEffectプロパティを操作するだけでいい。

void listView1_DragEnter(object sender, DragEventArgs e) {
   if (//e.Dataが要求する型だった) {
      e.Effect = DragDropEffects.Copy;
   }
}
0642デフォルトの名無しさんNGNG
「Windows フォーム デザイナで生成されたコード 」の中のあるコントロールの座標値を
変更した後、デザイン画面を見たらそのコントロールが消えてしまいました。
このコントロールを復活させる事はできないのでしょうか?
0643デフォルトの名無しさんNGNG
SOAPっていうのでさ、情報を取得するプログラムを書いてみたんだが、
FWで接続を許可しないといつまで経っても接続できないだろ?
もしくは、ケーブルが抜けていたらいつまで経っても接続できないだろ?

「接続できない」ことを検出して、ダイアログボックスを表示したいんだが、
どうやって検出するんだ?教えてくれ。
0644デフォルトの名無しさんNGNG
>>642
プロパティをいじる。それで駄目なら作り直し。
0645643NGNG
御免、例外投げていてくれた。

Thread使っていたからか、「異常終了」にならなかったから気付かなかった。
0646デフォルトの名無しさんNGNG
>>641
ありがとうございます!
解決できました!
0647646NGNG
ついでに質問です。
メールの添付ファイルに使う場合、ドロップしたDataObject型を何に変換させるのがよいでしょうか。
ファイル名と、フルパスさえ取得できればいいと思っています。

FileInfo型にできればよいのですが・・。
0648デフォルトの名無しさんNGNG
>>647
いや普通DataFormats.FileDropのみ受け取るようにするんじゃないだろうか。
0649デフォルトの名無しさんNGNG
メインウィンドウから新しいウィンドウを呼び出して
setting sw = new setting();
this.Enabled = false;
sw.Show();
両者でstringをやりとりしたいのですがどうしたらいいですか?
Form1のテキストボックスに、
swのopenfileダイアログで選んだファイル名を入れたいです。
0650646NGNG
>>647
FileDropがいまいちわかりませぬ・・。
調べてきます!

0651デフォルトの名無しさんNGNG
>>649
Show()ってことはモードレス? モーダルなら>>315なんだけど。

C#的にはイベントで通知、かな。
あとはForm1に
public void ChangeTextBox1(string text) {
   textBox1.Text = text;
}
とかいといてswで実行するか。
0652649NGNG
レスありがとうございます。

>>あとはForm1に 〜〜 とかいといてswで実行するか。
ってのはどういうことなんでしょうか?

swから
Form1.ChangeTextBox1(openFileDialog1.FileName);
とすると、
静的でないフィールド、メソッド、またはプロパティ '温度計.Form1.ChangeTextBox1(string)' で、オブジェクト参照が必要です。

となってしまいます。

0653デフォルトの名無しさんNGNG
>>652
オブジェクト指向は理解できてるかな、と。

form1でsettingクラスのインスタンスswを作成して、sw.Ownerに自分自身の参照thisを入れる。
//OwnerだとForm型であとでキャストする必要があるからForm1型の別プロパティを作ってもいいけど。
//スマートなのはOwnerプロパティを隠蔽することかな。

sw側からは自身のOwnerプロパティ越しにform1のパブリックメソッドを操作する。
通常OwnerプロパティはForm型なのでForm1型にキャストする必要がある。
//Ownerプロパティのnullチェックもやっておくと多い日も安心。
0654646NGNG
646です。
おかげさまでドラッグアンドドロップからのメール添付できました!
大変ありがとうございました。


ListViewにアイコンが表示できますが、メール添付するファイルの拡張子にあわせてアイコン表示なんて事も簡単にできるのでしょうか?
ヒントいただけると幸いです。
0655デフォルトの名無しさんNGNG
普通のコントロールで、値が変更されたら〜する、って処理をする場合には、
OnTextChanged += new TextChangeDelegate( this.hoge );
みたいにイベント使うデソ。

同じノリで、
setting.cs で

 public delegate void SetFileNameDelegate(string filename);
 public SetFileNameDelegate OnFileSelected;

と delegate を宣言して、Form1 の方には
void SetFileName(string s) { this.textBox.text = s; } を追加、その上で

setting sw = new setting();
sw.OnFileSelected = new setting.SetFileNameDelegate( this.SetFileName );
sw.show();

sw ではファイル名の選択が済んだ段階で this.OnFileSelected(s); として呼び出す。

0656デフォルトの名無しさんNGNG
>>654
ttp://santamartadotnet.hp.infoseek.co.jp/documents/dotnettips/tips021.html
Win32API使わないと実装できないんじゃないかな。

>>655
デリゲートを使うならこの場合eventを使った方が自然。
0657646NGNG
>>656
おおお!これでいけそうです!多謝!
0658デフォルトの名無しさんNGNG
.NET 2.0 なら
Icon.ExtractAssociatedIcon()
でいけますよ。
0659658NGNG
あー、でも exe からアイコン数を取得ってできませんね_| ̄|○
0660649NGNG
owner 等のキーワードでぐぐってみてやっとわかりました。

フィールドって初めて知りました…orzがんがります
ありがとうございました。
0661デフォルトの名無しさんNGNG
フィールドを使うところあったっけ……?
0662649NGNG
http://dobon.net/vb/dotnet/form/accessanotherformdata.html
の下の方を見たんですが…

フィールドつかわなくてもできた…んですか… orz
やってみよっと。
0663デフォルトの名無しさんNGNG
ああいや、そういう意味なら問題ない。
フィールドをパブリックフィールドととってしまっただけ。
0664デフォルトの名無しさんNGNG
dataAdapterで複数のselectを一度に実行したくて
string sqlStr= "select a from b;" + "select c from d";
と繋げて実行したのですが、
「コマンドの後に文字があるぞ!」って怒られてしまいます。
どなたかアドバイスをお願いします。。。
初心者丸出しですみません。
0665デフォルトの名無しさんNGNG
WinAPI使わないと実装できないことがあるわけ?
どとねとふれーむわーくの意味ないじゃん!
0666デフォルトの名無しさんNGNG
>>665
遅っ
0667デフォルトの名無しさんNGNG
本命はWinFXだし。
0668デフォルトの名無しさんNGNG
ということは今のどとねと環境での開発は
FXまでの予行演習みたいなものか。
0669デフォルトの名無しさんNGNG
うーんでもやっぱしAPI新しくすることと
どとねと構想とあまし関係ないっつぅか
やっぱどとねとてその存在意義がよくわかんねぇ
DLLひとまとめにしたようなもんか?
0670デフォルトの名無しさんNGNG
>>664
あんた、T-SQLを勉強した方がいいぞ。
0671602NGNG
602ですが
参照型でいったらできました
ありがとうございました

#refと参照型は違うんですね
0672デフォルトの名無しさんNGNG
WSE2.0を使ってみたんですが、クライアントとサーバの
システム時間が5分ぐらいずれているとエラーとなってしまいます。
エラー:Message Expired

WSE1.0ではRequestSoapContext.Timestamp.Ttlの値を0にすれば
よかったんですが、WSE2.0にはそのようなプロパティが存在しません。。

上記エラーを回避するには、WSE2.0に対してどのような設定を
すればよろしいでしょうか。
0673デフォルトの名無しさんNGNG
>>672
参考になりそうなのはこれかなー。
ttp://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=12825
0674デフォルトの名無しさんNGNG
C#のWindowsフォームアプリから、外部コマンドを実行するにはどうしたらいいですか?
0675デフォルトの名無しさんNGNG
System.Diagnostics.Process
0676デフォルトの名無しさんNGNG
>>675
ありがとん!
0677デフォルトの名無しさんNGNG
Visual C#で作ったアプリをPocket PCで動かすことは出来ますか?
0678デフォルトの名無しさんNGNG
VC++かC#で、IEのツールバー(googleToolbarのようなものを想像してください)を作りたいのですが、
作成方法を解説しているサイトをご存知ありませんか?
0679デフォルトの名無しさんNGNG
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/Shell/programmersguide/shell_adv/bands.asp
0680デフォルトの名無しさんNGNG
>>678
The Code Project - Extending Explorer with Band Objects using .NET and Windows Forms - C# Programming
http://www.codeproject.com/csharp/dotnetbandobjects.asp
0681デフォルトの名無しさんNGNG
>>678
リバー
http://home.att.ne.jp/banana/akatsuki/doc/atlwtl/atlwtl13-02/
0682677NGNG
よろしこおながいします。
0683デフォルトの名無しさんNGNG
C#かDelphiで彼女を作りたいんです。
作成方法を解説しているサイトをご存知ありませんか?
あ、最低で柴崎コウさん、堀江由衣さんくらいの彼女が作りたいんです。
C#かDelphiで無理ならC++かVHDLでも問題ありません。
0684デフォルトの名無しさんNGNG
> C#かDelphiで彼女を作りたいんです。

1.C#かDelphiのプログラムが動かず悩んでいる、柴崎コウか堀江由衣くらいの女の子を捜す。
2.答えてあげる。
3.ヽ(゚∀゚)ノヤッター!!
0685デフォルトの名無しさんNGNG
>>682
ttp://www.microsoft.com/japan/
0686デフォルトの名無しさんNGNG
>>684
漏れはその手で会社の後輩をゲトしようと思って、かなりいい線まで逝ったと思うのだが
ある日彼女の妊娠が発覚(入社1ヶ月目でオメデタ3ヶ月)、そのまま退社された orz
0687677NGNG
Pocket PC(Windows CE)上で、.NET Frameworkが動いていれば実行できて、
Visual C#は、Visual Studio .NETのなかに付属している。で、合っていますか?
勘違いしているようでしたら教えてください。失礼します。
0688デフォルトの名無しさんNGNG
>>687
普通にC#で作ったWindowsFormアプリは動かない。
PocketPC向けに.NETCompactFrameworkで作ったアプリはPocketPCのAPIをP/Invokeで呼び出していなければ
大体のものはWindowsXPとかで動く。
0689677NGNG
>>688
レスありがとうございます。取っ掛かりができました。助かりました。
0690デフォルトの名無しさんNGNG
ブラウザ(AxWebBrowser)上のリンクにマウスが乗ったとき、
どのようにすればステータスバーにURLを表示できますでしょうか、、、
タイミングなどよくわかりません・・・
0691デフォルトの名無しさんNGNG
>>690
StatusTextChangeイベント
0692デフォルトの名無しさんNGNG
>>691
正気?
0693デフォルトの名無しさんNGNG
テキストボックス等を以下のように
TextBox[] txtaaaaa = new TextBox[10];
コントロールの配列として扱う方法と、普通にtxtaaaaa1.txtと扱う方法を
1つのプログラムで混ぜていいのですか?
0694デフォルトの名無しさんNGNG
>>693
別に言語仕様上何の問題もない。
コードが読みやすければそれでいい。
混合させれば場面によっては可読性を損なうだろうし、場面によってはよりわかりやすくなることもある。
複数人でコードを扱う場合は多くの場合好まれないだろう。
まあコントロールの配列はコントロールを動的に作成する以外必要性少ないが。
0695デフォルトの名無しさんNGNG
>>694
特に問題はないんですね。
ありがとうございます。
0696デフォルトの名無しさんNGNG
ほかのアプリケーションを操作する方法って、どんなのがありますか?

キーストロークを送信したりできないのでしょうか?

0697デフォルトの名無しさんNGNG
> キーストロークを送信したりできないのでしょうか?

今んとこ、APIを呼び出すしかない。
0698デフォルトの名無しさんNGNG
SendKeys.Send()
0699デフォルトの名無しさんNGNG
Buttonの宣言位置なんですが、
public class MainForm : System.Windows.Forms.Form
{
  private System.Windows.Forms.Button button1;

  public MainForm()
  {
    InitializeComponent();
  }
}
なら普通に動くんですが、下のだと動きません。
public class MainForm : System.Windows.Forms.Form
{

  public MainForm()
  {
    System.Windows.Forms.Button button1;
    InitializeComponent();
  }
}
一応はButtonのインスタンス(button1)を初期化するInitializeComponent()の前でbutton1を宣言してるんですが、
InitializeComponent()内で、button1の定義が無いとエラーが出ます。
(InitializeComponent()内で、button1 = new Button()やってます)
MainForm()内の、button1宣言文とInitializeComponent()の呼び出し順ってどうなってるんでしょうか?
0700デフォルトの名無しさんNGNG
>>699
ttp://black.sakura.ne.jp/~third/programming/cs/cs.html
この辺で一から勉強し直した方がよくないか。

簡単に言えば、
クラスのメンバとして宣言された変数はオブジェクトが破棄されるときに破棄される。
あるメソッド内で宣言された変数はそのメソッドから抜けるときに破棄される。
また、別のメソッドを呼んだとき、
呼出先メソッドでは呼出元メソッドのローカル変数は扱えない。
0701699NGNG
あの、それじゃあこの場合で普通に動くんですが、
public class MainForm : System.Windows.Forms.Form
{
  public MainForm()
  {
    InitializeComponent();
  }
  System.Windows.Forms.Button button1;
}

button1を初期化するInitializeComponent()の後にbutton1を宣言してもOKなのはなんででしょう?
0702デフォルトの名無しさんNGNG
>701
入門書読んでからこい
ヒント
スコープ
メンバ
0703デフォルトの名無しさんNGNG
> button1を初期化するInitializeComponent()の後にbutton1を宣言してもOKなのはなんででしょう?

後じゃないしなあ。
入門書に書いてあるかどうかも不安なレベルだ。
0704699NGNG
あー、なんか分かりました。
public MainForm()
{
  InitializeComponent(new Button());
}

private void InitializeComponent(Button button1)
{
  button1.Location = new System.Drawing.Point(40, 104);
  button1.Name = "button1";
  button1.TabIndex = 0;
  button1.Text = "button1";
}
これなら動きました。
0705デフォルトの名無しさんNGNG
何がわかったのか書いてみな。
大事なとこだ
0706デフォルトの名無しさんNGNG
CommandBarとかDocking Windowとか作りたいんだけど、無理?
海外のコンポーネントだとソースコードがないのが多い・・・_| ̄|○
0707デフォルトの名無しさんNGNG
>>705
あんた親切だなあ。
0708699NGNG
button1はInitializeComponent()で初期化するにはクラスのメンバーである必要があるけど、
上の駄目な例だと、MainForm()のローカル変数として宣言してたってことですよね。

で、InitializeComponent()にとって、MainForm()のローカル変数button1はスコープ外だと。
0709デフォルトの名無しさんNGNG
>>706
.NET Framework 2.0でToolStripやらRaftingContainerやらが増えてるが。

ttp://www.google.co.jp/search?q=cache:dobon.net/vb/dotnet/links/coolbar.html
にCommandBarコンポーネントがいくつか紹介されてる。
0710デフォルトの名無しさんNGNG
はずれでもないが、オブジェクトのライフサイクルについても考察せよ
0711699NGNG
↓こんな感じでやってたと。
public void Test()
{
  int a = 0;
}

public void Test2()
{
  a=1;
}
0712デフォルトの名無しさんNGNG
>>708
書いていること自体は間違いではないが、まだまだ周りは
「分かってんのかな?」という感想だと思う。

button2を押したら、button1.Textを書き換えるとかはどうする?
0713デフォルトの名無しさんNGNG
>>711
そういう例だと、引数で渡さずにTest()とTest2()で同じaという変数を扱う、
って話をクリアして欲しい。
0714デフォルトの名無しさんNGNG
>699  MainForm()内の、button1宣言文とInitializeComponent()の呼び出し順ってどうなってるんでしょうか?

この時点でおまいはクラスのことを何も分かってないことがわかってしまう
分かってから自分がどれだけばかたりな質問をしたか分かるぞ
責めてるんじゃないが。ある意味その新鮮さがうらやましい
0715デフォルトの名無しさんNGNG
このスレってこんなに親切だったっけ?
あんまり親切すぎるの反対。
0716デフォルトの名無しさんNGNG
そだね。入門スレに帰れ!
0717699NGNG
>>712
>>704のだと、InitializeComponent()の中でbutton2を作って初期化しないと駄目ですね。
InitializeComponent(Button button1)
{
  button1 = new Button();
  Button button2 = new Button();
  button2.Text = "button2";
  button2.Click += new EventHandler(button2_Click);
}

private void button2_Click(object s,EventArgs e)
{
  button1.Text = "書き換え後のテキスト";
}

いまオブジェクトのライフサイクルってのを調べてます。
0718699NGNG
ああ、すいません。
ふらっとC#ってスレがあるので、今後はそっちをメインに利用します。
0719デフォルトの名無しさんNGNG
699のC#ライフに幸あれかし。
0720デフォルトの名無しさんNGNG
うむ、好感の持てるお人だった。
でも>>717は無茶苦茶だ。
0721デフォルトの名無しさんNGNG
後輩が>717のようなソースを持ってきてキラキラした目をしながら「先輩何とか動きました」といってきたらどうする?
0722デフォルトの名無しさんNGNG
>>721
>どうする?
困る。
0723デフォルトの名無しさんNGNG
>722
いや,そのまっすぐな目で見つめられたらおまえは
0724デフォルトの名無しさんNGNG
まあ717はコンパイル通らないから問題ないが。
……いや、button1がフィールドにもある可能性もあるか。

目を逸らしつつ入門書を差し出すかな。
0725699NGNG
あぁすいません。
>>717のInitializeComponentは、
public MainForm()
{
  InitilaizeComponent(new Button());
}
って感じで呼び出してます。
とりあえず動作するのは確認してたので・・・というか気になって戻ってきましたw
0726699NGNG
あああ、テストしたのと書き込んだの違った・・・
0727699NGNG
 ∧||∧
(  ⌒ ヽbutton1はInitializeComponent()のローカル変数だから
 ∪  ノ     button2_Click()からはbutton1.Textにアクセスできないや。
  ∪∪      さっき出たネタなのに。
0728デフォルトの名無しさんNGNG
>727
心配するな。








それ以上に突込みどころ満載のソースだから
0729699NGNG
やっぱり、VS.NETのデザイナーで生成されるソース使ったほうがいいんですか?
雛形どおり使うのって凄い抵抗あるんですが・・・とにかく変えたい症候群で。
0730デフォルトの名無しさんNGNG
>>729
まずはエディタとcsc.exeとコマンドプロンプトから始めるのを勧めるな。
全ての基本はHello worldだ。

自分がそういうレベルの質問してるという自覚はあるよな?
0731デフォルトの名無しさんNGNG
壮大な釣りの予感
0732699NGNG
先月からcsc,nmake→SharpDevelopでやってたんですが、
theSpokeの激安VS.NET買っちゃったので使いたいんです(;´Д`)

レベルについては自覚してます。
0733デフォルトの名無しさんNGNG
>>729
> とにかく変えたい症候群で。

どうやら学生のようだが、プロになったらそんなポリシーなど三秒で駆逐されるから、
今のうちに変えたい症候群を楽しんでおこうね。
0734デフォルトの名無しさんNGNG
というか、雛形どおりにやってたら楽だが、理解も応用もできなくなるからな。
変えたいというか、自分で最初から構築したいんだろう。いいことだよ。
0735デフォルトの名無しさんNGNG
改善はいいが改悪は止めてくれ
0736デフォルトの名無しさんNGNG
byte[] hogehoge = new byte[10 * 1024 * 1024];
って感じで大きめの領域を確保して、使い終わったら早めに片づけておきたいんだけど
C++のdelete[] に相当するものってないの?
0737デフォルトの名無しさんNGNG
>>736
ぬるぽGC
0738デフォルトの名無しさんNGNG
ファイル→新規→プロジェクト→C#と巡っても、「Windows Control Library」が無いんですが…。
ちなみにVisual C# .NET 2003 使ってます。
もし私の環境で"WCL"が使えないなら、どうにかして使えるようにする方法はありませんか?
MSのサイトにそのためのプラグインか何かが公開されているとか、
SharpDevelopならば使えるとか、
空のプロジェクトにごにょごにょファイルを追加すればそれ相当になるとか。
0739デフォルトの名無しさんNGNG
ヽ(`Д´)ノ ウリャアage
0740デフォルトの名無しさんNGNG
>>738
ごにょごにょすればできるよ。
試してないけどそれっぽいツールもある。
オレはそれを知らずにごにょごにょしてしまった。
0741デフォルトの名無しさんNGNG
>>738
これ?
> ■ Visual C#.NET Standard で DLLをビルドする方法。
>
> (1)普通にプロジェクトを作る
> (2)プロジェクトを保存したフォルダの「プロジェクト名.csproj」をテキストエディタで開く
> (3)Settings要素の OutputType属性を "Library"に書き換える
>
> これでビルドするときに Main()がなくても怒られない。
0742デフォルトの名無しさんNGNG
ちょっと教えて下さい。

Cで記述されたDLLから、大量のコールバックを呼び出す必要があるのですが、
DLL内の初期化関数呼び出し時に、利用しそうなコールバック関数を一気に登録しておき、
必要に応じて、該当コールバック関数をコールする。

と言う事は可能なのでしょうか?

あと、コールバック用に作成したデリゲートのライフタイムは
どのへんに依存するのでしょうか?

どこかに、「コールバック登録したデリゲートが勝手に破棄されないようにする」
というような、記述を見た気がするのですが、何処で見たのか・・・
0743デフォルトの名無しさんNGNG
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)

でファイル開くダイアログを出して、.lnkファイルをダブルクリックすると
リンク先のフォルダへ行かず、リンクファイルを開いて終わってしまいました。
FileDialog.DereferenceLinksプロパティをいじっても変わりません。
なんとかなりませんか?
0744デフォルトの名無しさんNGNG
>>743
・FileNameがDereferenceLinksに関わらず.lnkを取得
・.NET Frameworks 2.0βだとDereferenceLinks=trueでリンク先フォルダの選択画面になる

バグか未実装のようだな。
//コモンコントロールなのに……。
0745デフォルトの名無しさんNGNG
>>742
delegateもCLR的には単なるObjectなんだから、
そのポインタをpinしておけばいいのですよ。
つかMC++経由だったらそんなにトリッキーなことにはならんと思うが。
0746デフォルトの名無しさんNGNG
どこで聞いたらいいのか迷ったので…スレ違いだったら誘導してもらえると助かります。

System.Net.HttpWebRequest/HttpWebResponse クラスを使って
簡易HTTPクライアントを作成しているのですが、IEが吐いたクッキーを食わせる方法がわかりません。

hoge.hoge.tldサーバ -[Cookie]-> IE ([email protected][x].txt に出力されている)

この状態で、自作プログラムから hoge.hoge.tld 上のリソースにアクセスする際に
IEで受け取ったクッキーを食わせたいんです。

ぐぐったところ
クッキー受け取り->そのクッキーを送出
というものは見つかったのですが、試しにその通りにやっても
期待通りの(クッキーが受け入れられた)動作は得られませんでした。

どなたかご教示いただけませんでしょうか?
0747デフォルトの名無しさんNGNG
>>746
せめてアドレスくらい書いてくれよー。
0748746NGNG
>>747
Amazon.co.jpのトップページでやってみてます。IEでアクセスすると、

こんにちは、hogehogeさん。おすすめ商品を〜

となるんですが、HttpWebResponseで取得すると

こんにちは。おすすめ商品を〜

となり、Cookieが受理されていないようです。
0749デフォルトの名無しさんNGNG
アプリケーション自身が入ってるフォルダを調べるのはどうするんだった?
0750デフォルトの名無しさんNGNG
>>749
Path.GetDirectory(Application.ExcutablePath);

Path.GetDirectory(GetType().Assembly.Location);

でどうでしょうか?
0751746NGNG
追記です。
request.CookieContainer.SetCookies(request.Address,"session-id-time=xxxx,session-id=xxxx…");
というふうに、Cookieファイルの内容を直接記述したら受理されました。
プロクシの設定みたいに、デフォルトの値を取得できないもんでしょうか?

>>749
Application.ExecutablePath でアプリケーションのフルパス(x:\hoge\hogehoge\foo.exe)
Application.StartupPath で実行パス(y:\foo\bar)

0752デフォルトの名無しさんNGNG
>>751
ファイルから読み込んでSetCookiesしてやればいいんじゃない?
HttpWebRequestでやる以上IEとは関係ないんだし。
デフォルトの値って何よ。
0753デフォルトの名無しさんNGNG
>>750-751
StartupPathだとなぜか一つ上のフォルダが出てきた・・・
Path.GetDirectoryName(GetType().Assembly.Location);でいけますた。
0754746NGNG
>>752
デフォルトって言い方は変でしたね。
プロクシについては GetDefaultProxy()で取得できてたので、
同じように取得できないかな、と思ったのですが。

ファイルから読み込むしかないかな…
レジストリ検索したら、
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cookies
にフルパスを格納した値があったので、試しにこれでやってみたいと思います。
0755デフォルトの名無しさんNGNG
>>754
もっとエレガントに、
Environment.GetFolderPath(Environment.SpecialFolder.Cookies)
Environment.UserName
0756746NGNG
>>755
_| ̄|○

迅速かつエレガントなレスthxです。

>>753
見当違いでした(´・ω・`)sry
0757746NGNG
駄目だ、ディレクトリまでは簡単に取得できるけど
肝心のファイル名が一意に特定できない

foo.bar.hoge.ne.jpの場合、
...\Cookies\ユーザ名@foo.bar.hoge.ne[n].txt
になる、と思ってたらそうでもなく、
ディレクトリによっても左右されるみたいですね…

Cookiesディレクトリの*.txtを片っ端から走査して、
3行目のドメイン指定(?)が一致するものを探すしかない気がします。
index.datがくさい気がするんですが、ぐぐってもよくわからないし。


連続書き込みで申し訳ない。>ALL
0758デフォルトの名無しさんNGNG
>>757
ググってみたけど、そこまでベタにやるならおとなしく
InternetGetCookie と InternetSetCookie を使うのがいいんじゃない?
0759746NGNG
>>758 さんに頂いたキーワードで検索したところ、ズバリなページを発見。
http://www.rendelmann.info/blog/default.aspx?date=2003-12-12#abd99bcd5-7088-4d46-801e-c0fe622dc2e5
ここのRetrieve〜関数をいじって(そのままだとエラーが出た)

   [DllImport("wininet.dll", CharSet=CharSet.Auto , SetLastError=true)]
   public static extern bool InternetGetCookie (string url, string name, StringBuilder data, ref int dataSize);

   private static string GetIECookiesForUrl(string url)
   {
       StringBuilder cookieHeader = new StringBuilder(new String(' ', 256), 256);
       int datasize = cookieHeader.Length;
       if (!InternetGetCookie(url, null, cookieHeader, ref datasize))
       {
           if (datasize < 0)
               return String.Empty;
           cookieHeader = new StringBuilder(datasize); // resize with new datasize
           InternetGetCookie(url, null, cookieHeader, ref datasize);
       }
       return System.Text.RegularExpressions.Regex.Replace(cookieHeader.ToString(),";",",");
   }

       // クッキーを食わせる ( HttpWebRequest request )
       request.CookieContainer = new System.Net.CookieContainer();
       request.CookieContainer.SetCookies(request.Address,GetIECookiesForUrl(request.Address.ToString()));

のようにしたところ、ちゃんとCookieが受理されました。
アドバイスを下さった皆さん、ありがとうございました。
0760デフォルトの名無しさんNGNG
>759

ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconplatforminvokedatatypes.asp

P/Invoke するときに、LPSTR とか LPCSTR が来るところは System.String でも System.StringBuilder でも大丈夫なんだ…知らなかった orz

# 確かに、StringBuilder でないと微妙に具合悪いよなぁ…
0761デフォルトの名無しさんNGNG
LPSTRにSystem.Stringは変なような。ああ、書き換わっても反映されないだけか。
0762デフォルトの名無しさんNGNG
.NET2.0は1.0時代のコードをコチョコチョっと
書き直す程度ビルドできるものなんだろうか。

嫌々使っていたソースの無いサードパーティ部品をやめて
2.0で増えたネイティブコントロールを使いたいんだけど、
あんまり修正部分が広いとしんどい。
0763デフォルトの名無しさんNGNG
>>762
Ruby や perl で変換プログラムを書いたら。
0764デフォルトの名無しさんNGNG
ふと気づいたんだがみんなツールバーの画像とかどうしてる?
0765デフォルトの名無しさんNGNG
エレメンツのシェイプとか使って描いてる。
0766デフォルトの名無しさんNGNG
>764
まんどくせから全部■
0767デフォルトの名無しさんNGNG
漢だ… > 766
0768デフォルトの名無しさんNGNG
>762
英語版のお試し版ならダウンロードしてインストールできるでそ
0769デフォルトの名無しさんNGNG
ツールバーの画像探したけど16色のしかなかったよ(;つД`)
どっかXP風なアイコン無料で公開してるとこない?
0770KazMAX ◆CaGD7FUGns NGNG
>>769
http://kde-look.org/
このへんで探してみるとか。
0771デフォルトの名無しさんNGNG
system32\SHELL32.dll
あたりのリソースを無断使用するとか。
0772デフォルトの名無しさんNGNG
>>769
GlyphsXP
0773デフォルトの名無しさんNGNG
>>772はshell32.dllに入ってるものだけだった
できればウィンドウ関係のアイコンが欲しいがみつからない・・・
自分で作るしかないのかなー・・・
0774デフォルトの名無しさんNGNG
>>762
全くと言っていいほどコード書き直す必要ないはずなんだけど。
0775デフォルトの名無しさんNGNG
2.0でgenerics期待したんだけどなー
0776デフォルトの名無しさんNGNG
だけど?
0777デフォルトの名無しさんNGNG
>>745
callback関数の一括登録できました。

遅ればせながら、ありがとうございました。



0778デフォルトの名無しさんNGNG
>>771

system32\SHELL32.dll のリソースを見てみました。

ツールバーの画像はアルファ付きBMPらしいのですが
リソースのBMPにはアルファ情報は入っていないみたいです。
カラーキーで背景色を抜いただけではかなり変な表示になってしまいます。
アルファ情報はどこにあるんでしょうか???

・・・・・・って完璧にスレ違いだったスマソ
0779デフォルトの名無しさんNGNG
C#って言語仕様としてアスペクト指向をサポートしてますか?
そのあたりを解説したサイトがあれば教えてください。
0780デフォルトの名無しさんNGNG
theSpoke効果
0781デフォルトの名無しさんNGNG
DirectXのプロジェクトが「アセンブリが見つからん」と言われて作成できない。
解決策を教えてくれ
0782デフォルトの名無しさんNGNG
>>781
C#板のみ入れた?
0783デフォルトの名無しさんNGNG
>>782
いや、、VisualStudioのセットで入っていてそのままSDKをインストールしたのだが、、

え、もしかして、単体じゃないと駄目なのか?だとしても何か解決方法があるんでしょ?
0784デフォルトの名無しさんNGNG
>>783
C#版だと問題で、全部入りは問題なかったはずだが。

Managed DirectX vol.2
http://pc5.2ch.net/test/read.cgi/tech/1061285378/
の前スレで
0785デフォルトの名無しさんNGNG
VC#.NET 2003 Standardを購入してインストールしたのですが、
試しにビルドした空のアプリ(画面・コマンドラインとも)を
デバッグ実行すると、戻ってこなくなります。
DirectX 9.0 SDKのC#サンプルも同様に戻ってこなくなります。

.NET FrameWorkの問題でしょうか?
環境はAthronXP、Windows2000Professional、
常駐APはNortonの防火壁とアンチウィルスです。
0786デフォルトの名無しさんNGNG
戻ってこないってのはどういうことを言っているのかね。
0787785NGNG
当該プログラムのプロセスだけが残った状態になります。
C#開発環境はプロセスが反応を返さないのでフリーズします。
DirectXのサンプルブラウザはフリーズはしませんが。
0788デフォルトの名無しさんNGNG
>>781
そういうのは、まずオブジェクトブラウザを見直す。
0789デフォルトの名無しさんNGNG
WinXP ProにVS入れて使ってたとき、
>785に似た現象が出たことある。Norton IS & Antivirusも入れてた。

・F5(開始)でビルドするとVSがフリーズする。
・でもアプリのプロセスは存在する。
・EXE自体は正常にできてる。

VSを強制終了させてexeを直接起動すると
それは問題なく動いたんだよね。

F5(開始)でやるんじゃなくて、
メインメニュー → ビルド → HOGEのビルド
からビルドしてexeを直接起動することで対処してたけど、
いい加減面倒なのでOSごと再インストールしたら直った。

全く同じコードがF5(開始)でビルド&起動できたね。

移行した環境がWin2003Ent + Norton IS + AVGと全然違うし、
他で再現性を試したわけじゃないから
この現象が環境依存なのかどうかはハッキリ言えないけど。
0790785NGNG
>>788
オブジェクトブラウザ以前に、
インストール>とりあえず空のプロジェクトを作る>デバッグ実行>フリーズなもので…。

>>789
どうも環境依存ぽいです。
C#のアンインストーラもスクリプトを設定中に止まってしまうので
アンインストールもできない…。
状況としては同じで、EXEファイルはできてるんですよね。
0791デフォルトの名無しさんNGNG
>>785
ひょっとしてNIS/NAVにてVSが必要とするスクリプトを弾いてしまってませんかね。
NISとNAVを止めておいて実行したらどうなりましょう?
0792785NGNG
>>786,788,789,791

ご協力ありがとう御座いました。
一先ず解決しました。
.NETインストール時に追加したIISが原因だったようで、アンインストールしたら正常化しました。
とりあえずウェブサービスを利用する予定はないので、これで良しとします。
0793デフォルトの名無しさんNGNG
つい昨日の事だけど、俺の開発マシン、ノートン先生が devenv.exe を
違法なスクリプトとして排除してました。
ソリューションの新規作成が出けんつーの!
0794デフォルトの名無しさんNGNG
ノートンをぬっころせ
0795デフォルトの名無しさんNGNG
C++なんかでプログラムを作るときは大抵、main関数で変数を宣言して、
関数の引数に値やポインタを渡すと思うのですが、
C#では classのなかでグローバル(?)に宣言して 使うのと、
Mainの関数で宣言して渡すのとどちらが よろしいとされていますか?
0796デフォルトの名無しさんNGNG
case by case
0797デフォルトの名無しさんNGNG
グローバルにする「必要」がなければローカル。
ってかmainから関数に渡す引数を何でグローバルにする必要がある?
# 本当に必要のある変数は別よ、>>795はそういう意味では言ってないと思うので。
0798デフォルトの名無しさんNGNG
自分自身のインスタンスを参照する場合は this を
使えば良いですけど、自分自身のクラスをこのように
具体的な名前を書かずに指定することはできないん
でしょうかね。

これができると、singletonの実装とかタイプセーフ
enumとかの実装などなどで使いたいんだけど。

インスタンスと違って特定できるんだから名前を
そのまま書けばいいじゃないってのは言う人が
いるだろうけど、ある意味便利だと思われ。

0799798NGNG
補足すると、自分自身のクラスと同じ型の戻り値を
返すときなどで、一般的な書き方が出来て可読性が
多少良くなるかなというイメージです。
0800デフォルトの名無しさんNGNG
確かにね、欲しいと思う事はよくある。
下手に言語仕様を膨らませないためだとは思うんだけどね…
0801デフォルトの名無しさんNGNG
ま、俺の場合は自分自身の型を返す場合と言うよりは、
他のクラスでも同様の記述を行う場合があるようなときかな。
0802デフォルトの名無しさんNGNG
リフレクションじゃだめなの?
0803デフォルトの名無しさんNGNG
全く代用にならん。
もちろん場合によっては使えない事もないけど。
0804デフォルトの名無しさんNGNG
>>803
どうしてリフレクションじゃダメなんだ?
代用にならない例を教えてくれ。
0805デフォルトの名無しさんNGNG
>>804
例を見れば分かるけど、求められているのはコンパイル時に解決しうる静的なもの。
よりスマートなコードを作りたいわけだ。

で、リフレクションはもともと動的にあれこれするものだし。

//そんなに出番のない余計な実装(言語の無闇な複雑化)という感じはする。
0806デフォルトの名無しさんNGNG
class foo : IClonable {
:
public foo Clone () { ... }
public object IClonable.Clone () { return this.Clone () ; }
:
}

みたいな奴を書くとき、

public thisclass Clone () {...}

とか書けると、class 名を書き換えたりしたときにちょっとだけラクできる…って事なのかしらん…

# STL とかは typedef で逃げてるかな
0807デフォルトの名無しさんNGNG
クラス名なんて変えないし
0808デフォルトの名無しさんNGNG
フォームから別のフォームを開いた場合、最初のフォームを閉じると、呼び出された新フォームも閉じますよね。
最初のフォームを閉じた際に、開いた新フォームをメインフォームとして使うにはどうしたらいいんでしょうか?
0809デフォルトの名無しさんNGNG
ApplicationCOntextを引数にとるApplication.Runを使って開始。
メインフォームを変える際にApplicationContextのプロパティを変更。
0810808NGNG
>>809
できました。ありがとうございます。
0811デフォルトの名無しさんNGNG
そういう時に、
Form1 firstForm = new Form1();
firstForm.ShowDialog();
Form2 mainForm = new Form2();
Application.Run(mainForm)

とやる俺はヘタレですか?
0812デフォルトの名無しさんNGNG
書いててふと思ったのですが

  // 読み取り中
  intdata;
  while (-1 != (data = readStream.ReadByte()))
  {
    writeStream.WriteByte((byte)data);
  }

これ遅いですか?
0813デフォルトの名無しさんNGNG
ループ内でキャストしない方法を考えて見ると良いかも。
0814812NGNG
原因はキャストか
MSIL だとチェックが入ってたような気がするけど、それが遅いのかな?

回避策……「BinaryReader で ReadByte、末尾は例外待ち」しか考え付かない

バイナリじゃなかったら StreamWriter.ReadToEnd とか使えるけど (確かそっちの方が速かった)
流されるデータがバイナリの場合があるので、Stream じゃないと変な変換入りそうで
0815デフォルトの名無しさんNGNG
こうするんだよ。
const int buffer_size = 1024*1024; // 1Mバイト
byte [] buffer = new byte [buffer_size];
int got;
do {
 got = iStream.Read(buffer, 0, buffer_size);
 oStream.Write(buffer, 0, got);
} while (got != 0);
0816デフォルトの名無しさんNGNG
>>815
ごめん、最後まで Stream.Write の 3 番目の引数に気づかなかった
普段 Stream なんて使わないから_| ̄|○
0817デフォルトの名無しさんNGNG
1Mものバッファを使わないでくれ…
0818デフォルトの名無しさんNGNG
ちなみに2〜8Kくらいが速度的にベストなバッファサイズ。
大きすぎると逆に遅くなる。
0819 ◆FLAlLDIW4w NGNG
> 一行で素敵な人生を送れます。
>
> MyLife.Idle += new EventHandler(TieUpLooseEnds);
0820デフォルトの名無しさんNGNG
>>818
C# だとそうなんだ。
C++ で大きい(数M〜2G程度)ファイルのコピーのときにはハードディスクの
内部バッファ(512K程度が多い?)あたりを指定するのが一番速かったけど。
0821デフォルトの名無しさんNGNG
メニューに CTRL-ALT-A のような、Ctrl キーと ALT キーを同時に押すことを
あらわすショートカットキーを指定するにはどうすればよいのでしょうか?

System.Windows.Forms.Shortcut 列挙体に定義がない。ということは WinForm アプリでは
Ctrl-Alt-A とかいうショートカットキーは定義できない?
Alt 単独の場合も数字(ALT-0 から ALT-9 まで)しかなく ALT-X とかを定義できないようなのですが..

C# というか WinForm の話なので、スレ違いならご指摘ください。
0822デフォルトの名無しさんNGNG
>>821
Altを含む、またはF10を含むキーの場合(はShortcutでいいか)、
ProcessCmdKeyをオーバーライドしてWM_SYSKEYDOWNを受け取ったときに動作を実装。
メニュー項目には\tの後にショートカット文字を手書き。
0823デフォルトの名無しさんNGNG
>>822
Alt-X は自分で実装ということですね。
Ctrl-Alt は SYSKEYDOWN にならないので、そちらは WM_KEYDOWN を使う。と。

なんでこんな中途半端なんだろう。

で、ctrl-alt はヨーロッパではアクセント付文字の入力にも使うので、RigthAlt と
Ctrl-LeftALt を別処理しなきゃいけないのだが、このへんの情報をもしお持ちなら..

Win32/MFC だとアクセラレータがこの処理をやってくれるんだけど、WinForm のメッセージ
ポンプに TranslateAccelarator を押し込むことってできましたっけ?
0824デフォルトの名無しさんNGNG
>>823
そっち方面には全く詳しくないので何とも言えないけど、
.NET Frameworkと簡単なP/Invokeで済ますなら
メッセージ/イベントを捕まえたときにGetKeyState関数でチェックするとか?
0825デフォルトの名無しさんNGNG
C# + .NET Framework で作成するアプリケーションで作成する
アプリケーションで,そのアプリケーションを
タスクマネージャや,その他のランチャソフトから終了しようと
した場合に,それを感知する事はできますか?

自分のアプリケーションの中からの終了の時の処理と
外から終了させられる時の処理を変更させたいのですが….
0826デフォルトの名無しさんNGNG
for(int i=0; i< array.Length; i++) array[i] = i;
みたいなことをforeachで書き換えられますか?
0827デフォルトの名無しさんNGNG
Formの上にPanelを上下に2つおいてSplitterでサイズ変更
できるようにしたいんだけどうまくいかない・・・
上のPanelのDockをFillにしたいんだけど、どうすればいい?
0828デフォルトの名無しさんNGNG
>>827
そんなあなたにSplitContainer。

てのはおいといて、何がどううまくいかないのかさっぱり分からないのだけれど?
0829デフォルトの名無しさんNGNG
>>828
サイズ変更が出来ない。
0830デフォルトの名無しさんNGNG
DockがFillでサイズ変更・・・?
0831デフォルトの名無しさんNGNG
>>830
>  DockがFillでサイズ変更・・・?
それは問題ない。

>>829
その説明でどう理解しろと言うのだろう……?
とりあえずまっとうに動くサンプルコード。
Splitterの大抵の問題はControlにAddする順番か。
下のコードもAddRangeの配列の順番を変えると……。

public class Hoge : Form {
   public static void Main() {Application.Run(new Hoge());}
   public Hoge() {
      Panel p = new Panel();
      Panel q = new Panel();
      Splitter s = new Splitter();
      p.BackgroundImage = Image.FromFile("a.bmp");
      q.BackgroundImage = Image.FromFile("b.bmp");
      p.Dock = DockStyle.Fill;
      q.Dock = DockStyle.Top;
      s.Dock = DockStyle.Top;
      s.BorderStyle = BorderStyle.Fixed3D;
      Controls.AddRange(new Control[]{s, q, p});
   }
}
0832デフォルトの名無しさんNGNG
あー、DockStyleはご要望だとBottomになるか。
0833デフォルトの名無しさんNGNG
>>827
1. Panelを下に配置。DockをBottom
2. Splitterを配置。 DockをBottom
3. Panelを上に配置。DockをFill

順番が肝心。後でもできるがややこしくなったりしてしまう。
0834デフォルトの名無しさんNGNG
>>831-833
うまく動きますた。サンクス!
0835 ◆FLAlLDIW4w NGNG
コントロールの位置関係は、Controlsの末尾から先頭に向かって順番に描画される
イメージさえ持っておけば全てが分かる。

領域が重なったコントロール同士は、
より先頭に近いほうがより手前に見える。

同じDockプロパティを持つコントロール同士は、
より末尾に近いほうがより外側に配置される。

DockStyle.Fillスタイルを持つコントロールより先頭側には、
DockStyle.None以外のスタイルを持つコントロールを置いてはいけない。
0836デフォルトの名無しさんNGNG
自らのインスタンスをコピーする機能を実装する場合に
ICloneableインターフェイスをもつ形で明示的にclone()
を実装すると戻り値の型がObject型になり、使用する側で
キャストをかける必要があったりするわけだけど、なんか
他に良い方法は無いんでしょうかね。

VBなら別名としてICloneableのclone()をもちつつ、これを
別のclone()メソッドから呼ぶ方法があるみたいだけど、
C#でスマートな方法が無いものでしょうかね。
0837デフォルトの名無しさんNGNG
>>836
えーと、明示的なインターフェースの実装っていうと
public class A : ICloneable {
   object ICloneable.Clone() {...}
   public A Clone() {...}
}
みたいのを指すと思うんだけどそういうことじゃないの?
0838デフォルトの名無しさんNGNG
普通にCloneメソッドも書けばいいだけ。
C#の明示実装はクラスのパブリックなインターフェイスからは消えるから、
名前を変えたりする必要なし。
0839デフォルトの名無しさんNGNG
StringCollectionなんかは最大限に使ってるね。
IListやらの返値・パラメータがobjectのを全部stringにしたメソッド・インデクサ。
0840836NGNG
>>837,838
明示実装すれば同名のメソッドが共存できるのを
すっかり見落としていました。

どうもありが�d
0841デフォルトの名無しさんNGNG
>>835
>>831のソースと思いっきり矛盾しているように見えるんだが。
0842デフォルトの名無しさんNGNG
>>841
どこが?
Controls.AddRange(new Control[]{s, q, p});
DockがFillのpを最後に置いてるから矛盾はしてないと思うが
0843デフォルトの名無しさんNGNG
> DockStyle.Fillスタイルを持つコントロールより先頭側には、
> DockStyle.None以外のスタイルを持つコントロールを置いてはいけない。

と

> DockがFillのpを最後に置いてるから矛盾はしてないと思うが

は明らかに矛盾しているように見えるんだが。
試してないんだが>>831のコードは本当に期待した通りに動くのか?
0844843NGNG
ごめん勘違いスマソ逝ってきます
0845デフォルトの名無しさんNGNG
画面のプロパティで、画面のデザインのフォントをデフォルトのやつから変えているのですが、
作ったアプリケーションの中にあるTreeViewやListviewのフォントは
ちゃんとそのフォントで表示されるのですが、
途中で出すダイアログの中にあるラベルやComboBoxの文字だけは
デフォルト?のフォントのままで指定したフォントになりません。

指定したフォントにするには、どうすればよいのでしょうか?
0846デフォルトの名無しさんNGNG
>>845
ComboBox.Fontプロパティは?
0847デフォルトの名無しさんNGNG
>>846
ComboBoxを直接フォームに貼り付けたときは、
ちゃんと指定したフォントになるのですが、
ダイアログとか、ツールバーに乗せたComboBoxではだめなのです。

何かの設定をすると、いちいち全てのFontプロパティを設定しなくても、
指定したフォントになるんじゃないかと思うんですが・・・
0848821NGNG
>>824
ご協力ありがとうございました。
そのあと調べましたが、MS としてはショートカットキーの組み合わせを絞る方針みたい。
ctrl-alt が Right-ALT にぶつかる問題が大きいのと、Ctrl や ALt とかが特定の
キーボード実装を前提にしているから。らしい。Java はどうやっているんだっけ。

こんなところ「だけ」抽象化されてもなぁ。
折角 TranslateAccelarator の内部で処理しているんだから、その機構を公開して
もらわないと。

VS, Office など MS 製品も ctrl-alt の組み合わせは多用しているのだが、MFC から
.NET に移行する際にどのように変更するのだろうか。
0849821NGNG
>>824 に追伸
>メッセージ/イベントを捕まえたときにGetKeyState関数でチェックするとか?

それだけでは判断できないんです。
現在のキーレイアウトが Right-ALT をサポートしているかどうかの情報を
入手しないと判定できない。
公開 API には存在せず、TranslateAccelarator の内部で処理している。
0850デフォルトの名無しさんNGNG
あのー >>825 はスルーなんでしょうか?
0851デフォルトの名無しさんNGNG
Processとかで外部アプリ起動させたりする場合、ファイルパスとかに全角の特殊記号(【】)とかが入ってる場合に
エラーとか出ませんか?俺は出てるんですが、これはどうすれば回避できるんでしょうか?
0852851NGNG
ちがった。特殊記号じゃなくて、空白スペースでした。
0853デフォルトの名無しさんNGNG
「"」で囲めば?
0854デフォルトの名無しさんNGNG
>>851
そんなことは全くないが。

そもそもなんてエラーなのさ。
どんなコードなのさ。
0855デフォルトの名無しさんNGNG
>>850
「自分のアプリケーションの中からの終了処理」って自分で書いてるんだから、
その場合だけフラグでも立ててやればいいんじゃない?

具体的には、「閉じる」「終了」等のメニューやボタンで自分で終了するとき、
および WndProc で WM_SYSCOMMAND 捕まえて SC_CLOSE で閉じられるとき、
とか。
0856デフォルトの名無しさんNGNG
if ($hoge =~ /[^a-zA-Z0-9.]/)
# Perlで「hogeにa-zA-Z0-9.以外の文字が含まれていたら」の意味

これをC#で書くにはどうしたらいいですか?
正規表現クラスを見ても複雑すぎてよく分からない。
0857デフォルトの名無しさんNGNG
if (Regex.IsMatch(hoge, "[^a-zA-Z0-9.]"))

言うほど複雑でもないけどね。
0858デフォルトの名無しさんNGNG
RegexIsMatchに該当するページが見つかりませんでした。
"regexismatch"を含むページは見つかりませんでした。

検索のヒント
- キーワードに誤字・脱字がないか確かめてください。
- 違うキーワードを使ってみてください。
- より一般的な言葉を使ってみてください。
0859デフォルトの名無しさんNGNG
モーダルダイアログを表示し、textBoxになにかを入力させて、OKを押すと閉じるように成っています。
OKボタンを押した時に、textBoxの内容が正しいかどうかを検証する処理を入れました。
でも、OKボタンには DialogResultが設定されているので、
OKボタンのClickされたときの関数を通ると、フォームが閉じられてしまいます。
エラーのあるときは、フォームを閉じないようにするにはどうしたらいいんですか?
0860デフォルトの名無しさんNGNG
>>858 「.」が抜けているぞ。
0861デフォルトの名無しさんNGNG
>>858
○ Regex.IsMatch
× RegexIsMatch
目が悪くて文字が読みにくいなら、コピペしたほうがいいよ。
0862デフォルトの名無しさんNGNG
>>858
>  RegexIsMatchに該当するページが見つかりませんでした。
いつのまにC#は素性の知れない関数を扱えるようになったんだ?
ttp://www.google.co.jp/search?num=100&lr=lang_ja&oe=utf8&ie=shift_jis&q=Regex.IsMatch

>>859
正しくなかったときはDialogResultを設定しなけりゃ良いんじゃ?
0863デフォルトの名無しさんNGNG
859
DialogResult を None にしておいて、
Click のハンドラでエラーが無いときだけ this.DialogResult = DialogResult.OK; とでもしてみては?
0864デフォルトの名無しさんNGNG
>>820
藻前が自分のマシンだけで動かす物を作るならそれでいいんじゃないか?

公開して色んな人に使ってもらうなら、一般的に速いといわれる手法を取り入れるべきだが。
0865デフォルトの名無しさんNGNG
>でも、OKボタンには DialogResultが設定されているので
自分で作ってんだろうに、何でそれをやめようとしないんだろう…
それともその動作を変えてはならない理由でもあるんだろうか…
0866デフォルトの名無しさんNGNG
雑誌でも買おうと思うんだが
C Magazineと.NET Magazineのどっちのほうがいいよ?
0867デフォルトの名無しさんNGNG
C#は基本的に扱わないC Magazineと.NETは.NETでもVB.NETメインな.NET Magazineでは
このスレ的にはどっちもどっち

つか指向性がかなり違わないかその二つ
単純に比較できるもんでもない気が
0868デフォルトの名無しさんNGNG
DDJとかなくなったのが痛い...
0869866NGNG
>>867
じゃあ、おすすめの雑誌とかある?
0870デフォルトの名無しさんNGNG
SD
0871デフォルトの名無しさんNGNG
NikSof
0872デフォルトの名無しさんNGNG
不思議なことがあったので、聞いてくらはい。

RichTextBoxの文字属性変更をできるだけ高速にしたかったので、
SendMessageでEM_SETSELしながら変えてました。
開発機(XP Home)だと普通に動いていたんですが、これをXP Proへ持っていくと
選択位置がずれて、文字属性がばらばらになってました。どうやらASCIIだと
いいんだけど、日本語だと駄目みたいで、要するに文字数じゃなくてバイト数扱いで
文字選択がされてたみたいでした。
実際SendMessageWにしてやると、正常動作しました。要するに何故かProの方では
Unicodeで動作していなかったみたいなんです。

そもそもSendMessageはOSによって勝手にA系かW系か判別して動くものと
思ってましたが、何でしかもHomeとProなのにこんな違いが出たんでしょうか??
そんなことってあるの??
0873デフォルトの名無しさんNGNG
初歩的な質問になってしまうのですが、下記の2つのプログラムの実行結果が異なることが納得いきません。
誰か詳しく教えていただけないでしょうか?

int main(void)
{
double a;
a = 5 / 2;
printf("5÷2 = %f\n", a);
return(0);
}
実行結果:2.000000

int main(void)
{
double a, b;
a = 5;
b = 2;
printf("a÷b = %f\n", a / b);
return(0);
}

実行結果:2.500000
0874デフォルトの名無しさんNGNG
>>873
最初の a = 5/2; は、整数で演算された結果をdouble型のaに入れてる(計算時点では整数)。
次の a/b は、演算する前からdouble型ってことでは?
0875873NGNG
最初に
double a;
a = 5 / 2;
と宣言されているのに計算は整数になってしまうんですか?
そのへんがよく分からないんです。
0876デフォルトの名無しさんNGNG
>>875
a = 5.0/2.0;
a = (double)5/2;
なら上も2.5になる。
数字を書いたときに、小数点を書かなかったら自動的に整数扱い。
手続きとしては、
1.与えられた数値(5と2)を計算する
2.計算結果をaに代入する
だから、aをdoubleで宣言しても、計算時に5と2は整数のまま。
0877デフォルトの名無しさんNGNG
君が書いた 5/2 の 5 と 2 は
あくまで"整数"なんだよね。

すると当然少数以下は無視される(ここはわかるよね?)から、
5/2 == 2 ということになるんですな。

つまり、
double a = 5/2; というのは、
double a = 2; と等価なわけで、
結果は2.00000...になると。
0878デフォルトの名無しさんNGNG
>小数点を書かなかったら自動的に整数扱い。
ちゃんと宣言時に
double a = 5;
みたいに、型を明記してやれば、小数点なしでもdoubleになるけど。
0879デフォルトの名無しさんNGNG
うを、のろのろ書いてたら被った。
0880873NGNG
奥が深いと言うか、謎が多いんですね。
どうもありがとうございます。
0881デフォルトの名無しさんNGNG
言語違いにマジレスするなよ
0882デフォルトの名無しさんNGNG
ダブルバッファリングっていうのを詳しく教えてください。
0883デフォルトの名無しさんNGNG
>>882
バッファリングをダブルで行うことです
いろんな場所で使われていますが真っ先に思いつくのが描画関連
0884デフォルトの名無しさんNGNG
http://www.google.co.jp/search?ie=UTF-8&q=%e3%83%80%e3%83%96%e3%83%ab%e3%83%90%e3%83%83%e3%83%95%e3%82%a1%e3%83%aa%e3%83%b3%e3%82%b0%e3%81%a8%e3%81%af
0885882NGNG
概念は分かりましたが、一時的に画像を溜めようとして
g = PictureBox1.CreateGraphics();
g.DrawImage(image2, rect,rect2, GraphicsUnit.Pixel);
とすると、PictureBoxが必要になります。
これを、メモリー上に置くにはどうしたら良いのでしょうか?
0886デフォルトの名無しさんNGNG
>>885
C# でやったことないから自信ないけど、Bitmap クラスあたり使えると思う
0887デフォルトの名無しさんNGNG
C#において、intは常に32bitでしょうか?
CPUが64bitの場合、64bitになりますか?
0888デフォルトの名無しさんNGNG
>>887
C# (というか .NET Framework) において int は常に Systen.Int32 クラスのオブジェクト
つまり 32bit です
0889デフォルトの名無しさんNGNG
>>878
スレ違いだがお前は分かってないだろ。
0890デフォルトの名無しさんNGNG
>C# (というか .NET Framework) において int は常に Systen.Int32 クラスのオブジェクト
ちがうなあ、「C#において」 int は Systen.Int32構造体とイコール、で、
.NET Framework において Systen.Int32 は常に 32ビット、としないとおかしいなあ。
0891888NGNG
>>889
878 を 888 の間違いとみて間違えたのは俺か?
……どうだろ?判っていないのかなぁ
0892888NGNG
>>890
あ、ごめんクラスじゃなくて構造体だった

ついでに言うと「int」と「int 型の数値」を書き間違えてた
普段区別してないから尚更

ま、int は常に 32bit ということでFA?
0893デフォルトの名無しさんNGNG
>>891
スレ違いといっているところから、>>888に対してではない事がうかがえよう。
0894デフォルトの名無しさんNGNG
>>892
> (というか .NET Framework) において int は常に
に対して、.NET Frameworkにintはないと言いたいのだと思われ。
0895888NGNG
>>894
それもそうだ
いや恥ずかしいところをお見せいたしましたOTL
0896デフォルトの名無しさんNGNG
XML文書をReadで次のノードを読み込んだ後に
そのノードに戻ってくるっていうのはできないの?

微妙にわかりにくい文章スマソ。
0897デフォルトの名無しさんNGNG
ユーザから文字列を受け取って、その文字列のインスタンスを生成するってことはできますか?

base_hogeクラスから、fooクラス、barクラスが派生しているとき、
ユーザの"foo"や"bar"の入力に応じ

base_hoge Base_Hoge = null;
Base_Hoge = new ユーザが渡したクラス名(コンストラクタ引数,…);
のようなことがしたいのですが、可能でしたらご教示願います。

検索しようにもどういったキーワードで検索するべきか迷ったのでここで聞かせて頂きました。
よろしくお願いします。
0898デフォルトの名無しさんNGNG
>>897
リフレクション で検索

ちなみにmscorlibに入ってるクラスと実行中のアセンブリに入ってるクラス以外は
事実上不可能と見た方が良いかも。
0899デフォルトの名無しさんNGNG
>>898それってどういう意味?
0900デフォルトの名無しさんNGNG
>>897
Assembly.LoadWithPartialName() からの流れでどうでしょう?
アセンブリ名を決めうちにしない限り、
(アセンブリ名, クラス名)のセットで受け取る必要がある。
0901897NGNG
リフレクション でぐぐったらズバリなサイトが見つかりました。
http://dobon.net/vb/dotnet/programing/createinstancefromstring.html

ですが、プロセスが複雑になる(メンバ関数呼び出しが面倒)気がするので、
素直に switch(userString){ ... } で実装した方がスッキリしそうです。

アドバイス頂きありがとうございました。

>899
Type.GetType(hoge) でTypeが取得できないってことでは?
0902デフォルトの名無しさんNGNG
ああ、アセンブリ名指定せずにクラス名だけなのね…

あと勘違いしてるようだが、メソッドまでリフレクションで呼び出す必要はないぞ。
っていうか、呼び出す必要がないように作るのが普通。
Hoge_baseを継承してるんだろ?独自のメンバを呼び出したいんじゃないよね?
0903897NGNG
>>902
書いてあることのうわべだけをすくって、いじくり回してみるのを忘れてました。

object tmp = type.InvokeMember(null,System.Reflection.BindingFlags.CreateInstance,null,null,new object[]{引数リスト});
でリフレクションでインスタンス生成して、あとはキャストして使えるんですね。反省。
0904デフォルトの名無しさんNGNG
Docking Windowを再現するおすすめのコンポーネントありますか?
出来ればフォームデザイナでできるものがいいんですが・・・
Docking Suiteは使ってみましたが、自動的に隠れるようにしたときフェードしなかったのがいまいちでした。
0905デフォルトの名無しさんNGNG
C#でWindowsサービス作ってるんですが、OnShutdownイベントが取れません。
CanShutdown を trueには設定してるんですが・・・
OnShutdownをoverrideするだけじゃ駄目なんでしょうか?

ぐぐってみてもイベント取れない話はあっても、解決方法が
見つからない・・・・

0906デフォルトの名無しさんNGNG
C++からC#に移ったひとどうですか?
ここがよかったあれが出来ないとか感想聞きたいんですが...
0907デフォルトの名無しさんNGNG
>>906
WindowsアプリでCやC++を使う場面は皆無になったね。ドライバはC
やC++で書いてるけど、アプリケーションはC#で充分いけると思う。
0908906NGNG
んーなんつーか、次のような違いがあると思うんですよ.
C++:テンプレート、STL,BOOST使える。メモリマンドクサ。。NET実質使いずれ
C#:.NETつかえる。。NETしかつかえない。デリゲート、リフレクションとかも使える.テンプレート使えネ。

そこらへんでテンプレートのないC#に移るの躊躇してるんですけど、その辺は余り気にしませんでしたか?
0909デフォルトの名無しさんNGNG
>>908
boostの中の何を使っているかによるのでは?
signal, function, regex なんかはC#言語仕様&ライブラリで
ある程度は代用になるっしょ。

個人的にはコンテナが型なしなのが気になるが、
キャストが一つ入るだけなので我慢している。
C#2.0が出たら解決されるしね。
0910906NGNG
派生させるのがマンドクサくてテンプレート多用してるんですけど、その辺はどうでしょう?
0911906NGNG
2.0は心待ちにしてマフ。。。
0912デフォルトの名無しさんNGNG
テンプレートってアドホックな機能だから削除されたんでは?
0913デフォルトの名無しさんNGNG
>>912
ソース何処、マジだったら急いでC++に戻さなきゃならないシステムがあんるんで・・・
0914デフォルトの名無しさん NGNG
C#のスキルがあるとC、C++も実質のスキルはなくともスキル有りと
みられるみたいだね。
CができるからといってC++ができるとはみられないし
その反対もそうだ。
C#のスキルを高めることはとてもPGとして幅を広げることになるだろう。
0915デフォルトの名無しさんNGNG
>CができるからといってC++ができるとはみられないし
そりゃC++がCを完全に含んでいるからだろ、はみ出していればそう結論できんがな。

C++が使える⇒{Cが使える,C#は使えるか不明}
Cが使える⇒{C++は一部使える,C#は使えるか不明}
C#が使える⇒{Cは使えるか不明,C++は使えるか不明}
0916デフォルトの名無しさんNGNG
おりゃC++つかいだが、Cでコード核自信ないぞ
あんなテンプレート内の使えるか
0917デフォルトの名無しさんNGNG
>>916
それは
「おりゃC++つかいだが、Cでコード核自信ないぞ」=「C++が使えない」
って事です。
勝手に使えるなんて勘違いしちゃいけません。
0918デフォルトの名無しさんNGNG
>917
C++で必要とされるすきるとCのそれとは別物だと思う.
元は一緒でもネ
0919デフォルトの名無しさんNGNG
>>917
馬鹿?
0920デフォルトの名無しさんNGNG
>>918
必死だな
0921デフォルトの名無しさんNGNG
「C++を使ってまともに仕事してるけど、Cのみの環境は
実戦経験がないので自信なし」
なんていうのはゴロゴロいそうだ。
「それをC++ができるとは言わない」って言いたいんだろうけど
ちょっとマニアックだな。
0922デフォルトの名無しさんNGNG
なんだか変なのがいるな

C出来る C++やC#が出来るかどうかなんて不明
C++出来る Cが出来ない奴がC++出来るはずないだろ C#はCやC++と種類が違う
C#出来る VB出来るみたいなもん
Java出来る COBOL出来るみたいなもん
0923デフォルトの名無しさんNGNG
C++使えると言うためにはCとの境界を理解して無いと駄目だそうだ。
0924デフォルトの名無しさんNGNG
C++には名前空間があるけど、Cにはない。
0925デフォルトの名無しさんNGNG
C++にはcoutがあるけど、Cにはない。
0926デフォルトの名無しさんNGNG
C++には++があるけど、Cにはない。
0927デフォルトの名無しさんNGNG
ウザ
0928デフォルトの名無しさんNGNG
裏バッファに色々な画像パーツを転送して貯めておき、本番で裏バッファから
Pictureboxに映すってことはできますか?
0929928NGNG
やりたいことはシューティングゲームのようなものを目指しています。
0930デフォルトの名無しさんNGNG
できる
0931928NGNG
VBではBitbltでできたのですが、C#ではやり方がわかりません。
どなたか教えてください。
0932デフォルトの名無しさんNGNG
すまん、PictureBoxじゃ無理かも。
FormだったらPaintイベント時に
GraphisオブジェクトのGetHDCメソッドでDCのハンドルが取得できるよ。
んでDllImportでBitBltを使えるようにすればいいんでない?
まあ試してないんでこれ以上はなんとも言えないのだが・・・。
0933デフォルトの名無しさんNGNG
動作が遅くてもいいのなら、Bitmap オブジェクトあたりに画像パーツをためておいて、
Graphics.DrawImage で良いんでないかい?
0934デフォルトの名無しさんNGNG
Person 型の大きさ3の配列を作成し、それを周囲3人の名前と年齢で初期化し、foreach 文を使って年齢の合計を求めるプログラムを作りなさい。

課題1からもうわかりません。
0935デフォルトの名無しさんNGNG
課題は自分でがんばってやり遂げることに意味がある。
がんばれ。
0936デフォルトの名無しさんNGNG
>>934
多分 Person 型には、人の名前と年齢が格納されているんだと思う
これが名前と年齢で初期化されるんだから

public struct Person {
  string Name;
  ubyte Age;
  public Person (string name, ubyte age) { Name = name; Age = age; }
}

これで Person 型の定義は終わり
続いて、年齢の合計だけど、これは簡単で

Person[] member = { new Person("name1", age1), new Person("name2", age2), new Person("name3", age3) };

とかなっている Person 型の大きさ3の配列に対し

int sum = 0;
foreach (Person p in member) { sum += p.Age; }

とかすればいいと思う
0937デフォルトの名無しさんNGNG
フォームでOffice2003のLook&Feelを実現しようとすると
市販のコントロールを使用しないといけないのでしょうか。
0938デフォルトの名無しさんNGNG
>>937 仕事なら市販、趣味ならフリーもある。どっちにしても、素では無理。
0939デフォルトの名無しさんNGNG
>>937
そんなもんトライアル版クラ・・・
だめか_| ̄|○
0940デフォルトの名無しさんNGNG
>>936
ありがとう。できました。
foreachの使い方が?マークでいっぱいでした。

課題2は今頑張ってます。
行列の計算ってのがいまいちわからないけど。
0941デフォルトの名無しさんNGNG
>>940
「ありがとう、できました。」って、>936 をそのまま使ったんだろ。
ちゃんと理解しておけよ。がんがれ。
0942名無しさん♯NGNG
次スレドゾー ( ゚д゚)ノ
http://pc5.2ch.net/test/read.cgi/tech/1091284402/l50
0943デフォルトの名無しさんNGNG
実数の2次元配列を使って以下の3行4列の行列と4行3列の行列を表現し、その行列の積である4行4列の行列を求め表示しなさい。
0.5 8.4 3.4     0.4 3.3 3.4 2.0
2.1 2.5 3.5  ×  1.1 1.8 1.9 1.9
8.4 3.2 4.5     3.4 3.8 2.0 2.5
3.3 2.9 1.0
static void Main(string[] args)
{
double[,] jissuu1 = {
{0.5,8.4,3.4},
{2.1,2.5,3.5},
{8.4,3.2,4.5},
{3.3,2.9,1.0}};
double[,] jissuu2 = {
{0.4,3.3,3.4,2.0},
{1.1,1.8,1.9,1.9},
{3.4,3.8,2.0,2.5}};
double[,] sum = new double[4,4];
for(int i=0;i<=2;i++)
{
for(int j=0;j<=3;j++)
{
sum[i,j] = jissuu1[i,0] * jissuu2[0,j];
sum[i,j] += jissuu1[i,1] * jissuu2[1,j];
sum[i,j] += jissuu1[i,2] * jissuu2[2,j];
Console.WriteLine(sum[i,j]);
}
}
できたっぽいです。もっとうまくやる方法があれば教えていただけないでしょうか。
0944デフォルトの名無しさんNGNG
>>938
>>939

やはり外部のコントロール必要っすか。
自分で作る!という選択肢もあるんですが・・・
とりあえずフリーの試してみます。
0945デフォルトの名無しさんNGNG
DotNetBarのバージョン3.2ってどっかにない?
一応Internet Archiveとかあさってみたけど3.1.0.0までしかなかったorz
0946デフォルトの名無しさんNGNG
リテラルにできる型と、変数にしか出来ない型って、どんなのがありますか?
0947デフォルトの名無しさんNGNG
…newを書かずにインスタンスを作成できる型のこと?
数値型、文字列型くらいじゃないの?ヘルプ見た方が早そうだが。
0948デフォルトの名無しさんNGNG
>>943
内積を計算するサブルーチンとか
転置行列を計算するサブルーチンとか
0949デフォルトの名無しさんNGNG
C# で,あるディレクトリ内に存在するファイルの数とそのファイルの
合計サイズを求めたいのですが,ファイル数を求める,ディレクトリ内の
ファイルサイズの合計を求めるメソッドがあれば教えてください.
0950デフォルトの名無しさんNGNG
今、絵描きソフトを作っているのですが、
System.Drawing.Pen mypen =new Pen(Color.Red,this.trackBar1.Value);

これで太さは設定できるようになっているのですが、
色の指定がどうやったらいいのか全くわかりません。
どなたか教えてください。
0951デフォルトの名無しさんNGNG
すいません、間違ってました。
補足します。
ColorDialog等で指定したいろにペンの色を設定したいのですが、
いくらがんばってもうまくいきません。
0952946NGNG
http://www-ise2.ist.osaka-u.ac.jp/~iwanaga/programming/csharp/st_embeddedtype.html
ここを見てたらなんか混乱しちゃったんです。

たとえば、Console.WriteLine("Hello World"); の "Hello World" は文字列リテラル(定数)ですよね。
で、
string s = "Hello World";
って変数 s に代入した場合、「変数 s に、定数 "Hello World" を代入」っていうことでいいんでしょうか?

constが付いた変更禁止なものだけが定数だと思ってたんですが、違うんでしょうか。
0953デフォルトの名無しさんNGNG
>>952
>string s = "Hello World";
この式で変更されているのは s だけなので特に不思議は無いかと。
0954デフォルトの名無しさんNGNG
>>951
もうちょっと具体的な説明よろ。
0955デフォルトの名無しさんNGNG
>>951
ColorDialog dialog = new ColorDialog();
dialog.ShowDialog();
System.Drawing.Pen mypen =new Pen(dialog.Color,this.trackBar1.Value);

でどうでしょうか?
0956デフォルトの名無しさんNGNG
private void Form1_Paint(object sender,
System.Windows.Forms.PaintEventArgs e)
{
System.Drawing.Pen mypen =
new Pen(Color.Red,this.trackBar1.Value);
for(int i=1; i<maxpoints;i++)
{
e.Graphics.DrawLine(mypen, points[i-1],points[i]);
}
}
これで、トラックバーを使ってペンの太さを設定できる状態になっていて、Color.Redと
ペンの色は赤色と定義されています。
これだとペンの色が赤しか使えないので、ColorDialogを使ってユーザーがペンの色を設定できるようにしたいのです。

private Color getColor()
{
Color myColor = new Color(); // 色情報格納用
// 【色の設定】ダイアログの【OK】ボタンが押されたとき
if(colorDialog1.ShowDialog() == DialogResult.OK)
{
myColor = colorDialog1.Color; // 色情報の引渡し
}
return myColor; // 戻り値
}
0957946NGNG
>>953

int a = 30;   //変数 a に定数 30 を代入
int b = 40;   //変数 b に入っているのは定数 40
Console.WriteLine( 30 + 40 );   //定数 30 と 40 を計算
Console.WriteLine( a + b );    //変数 a と b を計算
Console.WriteLine((a+b.ToString()));    //変数 a と bを計算して文字列定数にする

こういう感じで理解してOKなんでしょうか。
0958デフォルトの名無しさんNGNG
>>955
ありがとうございます。
試してみます。
0959946NGNG
Console.WriteLine((a+b).ToString());    //変数 a と bを計算して文字列定数にする
です。括弧の位置間違えました。
0960デフォルトの名無しさんNGNG
>>957
んー、30とか40を”定数”と考えるんじゃなくて、
単純に”値”でいいんじゃないの?
あと、5行目は「3040」という文字列になるよ。
0961デフォルトの名無しさんNGNG
>>959
了解
0962デフォルトの名無しさんNGNG
>>943
改悪サブルーチンにしてみた
static double[,] MulMatrix(double [,]left,double [,]right){
 if(left.GetLength(1) != right.GetLength(0) || left.GetLength(0)*right.GetLength(1)*left.GetLength(1) == 0)
  throw new System.ArgumentException("ボケか?計算できねぇよ、マジ頭わりぃんじゃねぇの") ;
 double[,] result = new double[left.GetLength(0),right.GetLength(1)] ;
 for(int i=0;i<left.GetLength(0);i++)
  for(int j=0;j<right.GetLength(1);j++)
   for(int k=0;k<left.GetLength(1);k++)
    result[i,j] += left[i,k]*right[k,j] ;
 return result ;
}
0963デフォルトの名無しさんNGNG
private void Form1_Paint(object sender,
System.Windows.Forms.PaintEventArgs e)
{
System.Drawing.Pen mypen =
new Pen(○○○○,this.trackBar1.Value);
for(int i=1; i<maxpoints;i++)
{
e.Graphics.DrawLine(mypen, points[i-1],points[i]);
}
}

private void menuItem11_Click(object sender, System.EventArgs e)
{
ColorDialog dialog = new ColorDialog();
dialog.ShowDialog();
}

こんな感じでやろうと思ってるんですがうまくいきません。。
これだけで三時間以上なやんでる・・・。
どうしたらいいんでしょうか。
0964デフォルトの名無しさんNGNG
>>963
フォームにPenオブジェクトを持っておいて

ColorDialog dialog = new ColorDialog();
dialog.ShowDialog();
mypen.Color = dialog.Color;

でいいんじゃない?
0965デフォルトの名無しさんNGNG
画像のURLを指定して、それをC#のWindowsアプリケーション内に
表示するにはどうしたらいいでしょうか。

ファイルをDLしてそれを表示→インスタンスが複数あるときに微妙
Webブラウザを組み込んで表示→画像のためだけにCOM埋め込むのが微妙。

単純にファイル名を指定してpictureBoxにセットするかのように
URLを指定できる方法ってないでしょうか?
0966デフォルトの名無しさんNGNG
絵画するたびに、Form1_Paintが呼び出されるので、この部分をどうにかしてやらないといけないのです。
根本的にだめなのかな。。。
0967デフォルトの名無しさんNGNG
>>966
つまりね、Form1_PaintでPenオブジェクトを毎回作るんじゃなくて、
クラスのメンバとして保持しとけばいいかと。
んで、コードは↓のような感じ。

private void Form1_Paint(object sender,
  System.Windows.Forms.PaintEventArgs e)
{
  for(int i=1; i<maxpoints;i++)
  {
    e.Graphics.DrawLine(mypen, points[i-1],points[i]);
  }
}

private void menuItem11_Click(object sender, System.EventArgs e)
{
  ColorDialog dialog = new ColorDialog();
  dialog.ShowDialog();
  mypen.Color = dialog.Color;
}
0968965NGNG
自己解決しました。

解決方法を1行で書くとこんな感じ。
pictureBox1.Image = new Bitmap(new WebClient().OpenRead("http://hoge/image.png"));
0969デフォルトの名無しさんNGNG
>>967さん
名前 'mypen' は クラスまたは名前空間 'System.Drawing.Drawing2D.WindowsAplication4.Form1' に存在しません。

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

こんなのがでました…。
本当に素人ですいません…。
明日の朝にはできないとまずいのでがんばってるんだけど、C#はやっぱりわからない…。
0970デフォルトの名無しさんNGNG
>>969
どっかにソースをうpすれば、メモ付きで修正してやるが。
0971デフォルトの名無しさんNGNG
>>970さん
ttp://smash.s68.xrea.com/uploader/filez/820.txt
うpしました。
よければお願いします。
0972デフォルトの名無しさんNGNG
>>971
とりあえずmypenは初期化できた。
で、testメニューから色を選択して、キャンパスに線を引くと、
既に書かれていた線も、新しく選択した色で書き直されるんだけど、これはOKなの?
0973デフォルトの名無しさんNGNG
http://smash.s68.xrea.com/uploader/filez/821.txt
>>971
21行目と85行目でmypen初期化。
0974デフォルトの名無しさんNGNG
> 名前空間 'System.Drawing.Drawing2D.WindowsAplication4.Form1' に存在しません。

俺はこんな名前空間に住むのはごめんだな。
0975デフォルトの名無しさんNGNG
確かに香ばしいネームスペースのネスト。
0976デフォルトの名無しさんNGNG
>972-973
ありがとうございます。おかげで明日はなんとかなりそうです。
既に書かれた線も新しい色になっちゃいますが、なんとか大丈夫…
だと思います。ありがとうございます。そこまでになると全くわかりそうにないんで…。
>>974-975
課題で出すだけなんでもう適当です。
すいません。
0977デフォルトの名無しさんNGNG
>>949
MSDNが手元にありますよね。検索かければ出てきます。
適切な語句の使用と、検索結果から的確に情報を拾い上げる
センスを磨いておくのは大切なことです。
0978デフォルトの名無しさんNGNG
>>977
検索かけましたが見付けられませんでした.
私にはセンスが無いようです.
ちなみに,どのようなキーワードで検索したか
教えて頂けませんか?
0979デフォルトの名無しさんNGNG
>>978
http://dobon.net/vb/dotnet/file/foldersize.html
0980デフォルトの名無しさんNGNG
このページいい感じ
http://www.microsoft.com/japan/msdn/net/general/win32map.asp#win32map_alphalist
0981デフォルトの名無しさんNGNG
>>978
>>979が答えを示してしまいましたが、
MSDNでの検索では「ファイル ディレクトリ サイズ 取得」
という単語を用いたところ、
File, Directory, FileInfo, DirectoryInfo
が見つかります。
必要な情報をたぐりよせていくセンスは、
みがけば誰でも修得できるものです。(宝石が初めから
光ってはいないのと同じように)
我々プログラマーは、これらのリテラシーを軽んじるべきではありません。
0982デフォルトの名無しさんNGNG
>>981
特に異論はないんだけど、センスを磨くと言うより
検索方法がMSのHELPに特化していくだけの気もする。
0983デフォルトの名無しさんNGNG
>>982
同感
0984デフォルトの名無しさんNGNG
/// デザイナ サポートに必要なスレです。このスレの内容を
/// コード エディタで変更しないでください。
0985デフォルトの名無しさんNGNG
>>984
コードエディタでどうやって変更するのかと小一時間問い詰めたい
0986デフォルトの名無しさんNGNG
>>985
板の管理人に頼んでdatファイルを(ry
0987デフォルトの名無しさんNGNG
987
0988デフォルトの名無しさんNGNG
次スレ
http://pc5.2ch.net/test/read.cgi/tech/1091284402/
0989デフォルトの名無しさんNGNG
ここも次スレ
http://pc5.2ch.net/test/read.cgi/tech/1065535118/
0990デフォルトの名無しさんNGNG
990
0991デフォルトの名無しさんNGNG
ヽ(・∀・)ノ●ウンコー
0992デフォルトの名無しさんNGNG
992getttttttttttttttttttttttttttttttttttt+++++++++!!!

>>998 考えるのも面倒くさい。
>>999 ハァ?
>>1000 負け犬
>>1001 乙彼
0993デフォルトの名無しさんNGNG
そろそろ埋め時
0994デフォルトの名無しさんNGNG
ヌルリ
0995デフォルトの名無しさんNGNG
>>992
自分がゲトしたいから牽制している罠
0996デフォルトの名無しさんNGNG
996
0997デフォルトの名無しさんNGNG
ぬるぽ
0998デフォルトの名無しさんNGNG
997
0999デフォルトの名無しさんNGNG
!
1000デフォルトの名無しさんNGNG
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。