4 Catch!
public Catch(Exception ex) {
if(ex is NewThreadException)
((NewThreadException)ex).Thread.Post("新スレ乙","sage");
}
Catchネタはやめれw
何で新スレ立つのが例外なんだw
……ああひょっとしてこういう違和感があれの違和感なのか……
例外は飛ばない。いずれ1000を超えることは分かり切ったことなんだから。
代わりに1000超えたイベントが発生する。
そういうネタは前スレでやれ
12 :
デフォルトの名無しさん:2005/07/26(火) 19:38:40
Excelを動かそうとしているのですが、
Microsoft Excel xx.x Object Libraryへの参照を追加して
Excel.Application app = new Excel.Application();
とすると、「抽象クラスまたはインターフェイスのインスタンスを作成出来ません」とエラーがでます。
なぜでしょうか??
>>12 バージョン依存か?
Microsoft Excel 11.0 Object Library
では、問題なし。
>>12 new Excel.ApplicationClass(); ではうまく行くというオチ?
15 :
デフォルトの名無しさん:2005/07/26(火) 20:20:42
>>14 Excel._ExcelApplicationClass app = new Excel._ExcelApplicationClass();
だとうまくいきました。しかし、_ExcelApplicationClassにはVisibleプロパティが
ないみたいで、app.Visible = true;
でエラーが出てしまいます。
>>13 ちなみにversionは10.0でした。
16 :
12:2005/07/26(火) 20:40:54
なんとか自己解決しました。ソリューションから作り直したらうまくいきました。
どうやら、フォルダにコピーされた
Microsoft Excel 10.0 Object Library(Interop.Excel.dll)が
壊れていたか、リンクがうまくいって無かったのだと思われます。
>>13 >>14 ありがとうございました
1乙
タブコントロールへ、Windows.Forms で作成した Form をはりつけたい
と思っています。
Form f = new ABCForm.FormMain();
this.TabPage1.Controls.Add(f);
f.Show();
のように、行なうと「トップレベルのコントロールをコントロールに追加できません。」
とエラーになります。
これを
Form f = new ABCForm.FormMain();
f.Toplevel = false;
this.TabPage1.Controls.Add(f);
f.Show();
とするとタブページの中にフォームは表示されますが、Windows の
ボーダー枠(閉じるボタンなど)も表示され、タブページの中を
フォームが移動できてしまいます。
そうではなくて、タブページに、フォーム自体をはりつけて表示
させたいのですが、タブコントロールではそのような事はできません
でしょうか?
実現させる方法がありましたらアドバイスよろしくお願いします。
>>18 Form f = new ABCForm.FormMain();
f.Toplevel = false;
f.FormBorderStyle = FormBorderStyle.None;
this.TabPage1.Controls.Add(f);
f.Show();
20 :
18:2005/07/28(木) 20:04:19
>>19 ありがとうございました。できました。
もう1つ教えてください。
Windows XP で、画面のプロパティ内のフォントサイズを
標準から大、特大に変更した時に、 C# で作成した自前の
アプリケーションのラベルなども変化させたいのですが、
何かの設定で、行なう事はできますでしょうか?
方法がありましたら教えてください。よろしくお願いします。
Windows Forms 2.0 を待つのがいいんじゃね?
埋め開始
あ、間違った
埋めるの('A`)マンドクセ
残り20レスをどう埋めるか、それが問題だ。
EventHandler<T> があるのに EventHandler<TSender, TArgs> がないのはなぜですか
senderは常に特定の型とは限らないから。
やっと前スレ終わったか
こんばんは。
計算式を現す文字列から結果を出す為にJScriptに投げて取得してるのですが、
文字列の中に変数があるので、変数の値は自分で解析したいのですが
うまい方法(変数の切り出し方?)はありませんか?
var の後ろが変数じゃね?
宣言せずとも変数が使える言語だから var だけを頼りにしちゃだめだろうけど
>>30 というか
3 * a + 2
の文字列からC#側でaに5を代入した上でEvalさせたいと言うことではない? よくわからんけど
そんなこと何に使うんだ?
再帰下降パーザでも書けば
文字列置換でいいんではないかと思われ。
35 :
29:2005/07/30(土) 08:17:05
なんか単純に文字列置換で良い感じですね。
あと再帰下降パーザはググって見ました。
自前で構文解析して見たいので勉強します。
どうもでした。
2a + 4
とか書かれたらどうするつもりなんだろう。
>>36 正規表現の事前チェックで文法エラーははじくでしょ。たぶん。
IEコンポーネントで表示したページ内のテキストボックスに文字入力したり
ボタンを押したりするのってどうするんでしょうか?
具体的にはOperaの認証管理みたいな感じなんですが。
>>39 HTMLElement にたいして SetAttrubute でいくね?
>>40 ぐぐったらJavaScript関連の物ばっかり出てきたんですが・・・
もう少し調べてみます。
>>42 CodeProjectにあったんすか・・・
さすがにないと思って今回だけは見てなかったです。
44 :
デフォルトの名無しさん:2005/07/31(日) 22:54:14
System.Collections 名前空間内の
CollectionBase, DictionaryBase, HashTable の実装の違いが
いまいちよく掴めないのですが、実際何が違うのでしょうか?
CollectionBase : 特定の型に対応する値を格納する独自コレクションを作成するための基本抽象クラス
DirctionaryBase : 特定の型に対応するキーと値のペアを格納する独自コレクションを作成するための基本抽象クラス
Hashtable : キーと値にobject型を使用することで任意の型を格納できるキーと値のペアを格納するコレクションの実装クラス
>>45 理解できました。
分かりやすい説明をしていただきありがとうございました。
いや45本人だが改めて見直しても分かりやすいとは言いづらいよな。
分かったんならいいけど。
49 :
44:2005/07/31(日) 23:57:25
CollectionBase
キー・値の概念を持たない純粋なコレクション
DictionaryBase
DictionaryEntry(key, value) で固定された (厳密に型指定された) コレクション
コレクションの延長線上?
Hashtable
キー(key, value), 値(キーのhash) のコレクション
自分はこんな感じで解釈しましたが…
たぶん大筋では間違っていないような気がしますが。
>>48 HttpWebRequest/HttpWebResponse
>>49 > CollectionBase
> キー・値の概念を持たない純粋なコレクション
いやそれぞれの要素に格納されるのが"値"な。
> DictionaryBase
> DictionaryEntry(key, value) で固定された (厳密に型指定された) コレクション
> コレクションの延長線上?
延長というかなんというか。別物?
まあ要素へのアクセスにインデックスの代わりにキーを使うコレクションといった感じ?
> Hashtable
> キー(key, value), 値(キーのhash) のコレクション
前述の通り要素に格納されているのが値。英語でvalue。
それにアクセスするのに使うのがキー。
キーの同一性チェックにハッシュを使う。
DictionaryBaseの一つの実装としてHashtableが存在すると考えれば。
//いや本当は順番は逆なんだけど。
CollectionBaseの一つの実装がArrayListとか。
//いやこれも順番が逆だけど。
>>50 ありがとうございます。
やはり奥が深いです… しっかり頭の中を整理して考え直してみます。
52 :
44:2005/08/01(月) 00:55:42
>>50 愛してる!今度夕食でもご一緒しませんか?
53 :
デフォルトの名無しさん:2005/08/01(月) 20:05:14
string mail; のmailをJISコードからshift-JISに変換したいのですが
ぐぐって検索してみたところ
string str = System.Text.Encoding.GetEncoding(932).GetString(bytesData);
と、GetString()の中身がbyteデータなものばかりです。
string str = System.Text.Encoding.GetEncoding(932).GetString(mail);
このように変えましたが、byteデータじゃないとエラーがでます。
mailをいったんbyteデータ型に変換してからGetStringの引数に入れるしかないのでしょうか。
stringのmailを、shift-JISに変換して、stringのstrに入れるというもっとスマートな変換方法はないのでしょうか。
どなたか助言いただけるとうれしいです。
>>53 C♯のstringがどういうエンコーディングで文字列データを
持っているか知っているかい?
55 :
53:2005/08/01(月) 20:17:03
>>54 助言ありがとうございます。
ぱっとぐぐってみましたが、ずばりのページが見つからなかったので。
なんとなく勘で、.NETだからUnicodeでしょうか?
でも、Unicodeだとして、それがどのように解決に向かうのか思いつきません。
しかしこれはヒントなのですよね。もうちょっと調べて考えて見ます。
考えることは大切だよ
57 :
53:2005/08/01(月) 20:34:38
string mail; のmailの中身はJISコードだと思うんですよね。
メール受信のコードをそのままはりつけて使ったのですが、そのメール受信コードは、メール1通分のstring mailを返すんです。
メールの世界ではJISコードだから、きっとmailの中身はJISコードに違いないと思ったのですが。
そのコードを改めてよく見てみたところ
ReceiveData(stream, multiLines, bufferSize, Encoding.GetEncoding(50220))
の記述から、やっぱりJISに変換してると思うんですよね。
なので、string型の変数(オブジェクト?)に入っているのはJISコードの文字列だと思うのですが
なにかものすごい勘違いをしているでしょうか。
58 :
53:2005/08/01(月) 20:39:02
これはもともとメールのチェック機能をつけようとしたのですが
タイトルに○○が含まれているメールが到着したら知らせるというような。
英文字ならひっかったり引っかからなかったりで、日本語を○○に指定するとひっかからない
ことから、どうもstring mailの中身はJISで、C#のコードがshift-JISだから、それでひっかからないのだな
と思い。
mailの中身はJISコードだろうと思ったのです。
なのでmailをshift-JISに変換しちゃえば、ちゃんとチェックにひっかかるだろうなと思ったわけです。
してる。
単純に考えてさ、フレームワークが文字列型を処理するときに一々エンコードを考えて処理しなきゃならないってのは効率悪いと思わない?
60 :
53:2005/08/01(月) 21:05:01
>>59 ヒントをくれまして、ありがとうございます。
やっぱり勘違いしてるのですね。
なるほど、このstringの中身は、JISコードだからとかshiftJISだからとかいちいち判別しながら処理しないといけないとなると面倒ですね。
http://www.atmarkit.co.jp/fdotnet/csharptips/010string/010string.html の最初のほうに、オブジェクト内部では、文字列はUnicode文字として扱われる。
と、書かれているので、stringに入っている文字列のコードは全部、Unicodeと。
で、C#のコードもUnicodeが扱えるから、特に文字コード変換する必要など最初からなかった。が解でしょうか。
メール受信コードも、もう一度よく見てみると、JISに変換しているというよりも、byteデータを文字列に変換しているように
みえます。
しかし、じゃあなぜメールチェック機能にひっかかってくれないのか。
特に、英文字がひっかかったりひっかからなかったりするのが気になります。
単にコードの書き方が悪いだけなのか。
ということは、stringに入れるとUnicodeになるから、JISやshift-JISはbyteデータに入れてたのですかね。
なぜ、ひっかからないのかに関しても、もうちょっと考えてみようと思います。
自作ライブラリを配布したいんですが、
その際本体のdllやタイプライブラリをインポートしたアセンブリとか
どういう形態で配布したものでしょうか。
ユーザにgacutilやregasmさせるわけにはいきませんよね……
.exeと同じ位置に配置させる。
>>61 なにを迷っているのかいまいち分からんが…
自作ライブラリ配布ならDLL群をそのままzipにでも圧縮すればいいだろ
どうせ使うのDeveloperなんだし。
っていうかよっぽどのもの以外GACに入れるな。うざい
GACには、地球上の80%以上の人間が使うかもしれないとき以外、使ってはならない。
exeと同じところにDLLがいっぱいあるとうざいから、フォルダ切ってそこに入れればすっきりするよ。
推奨はされてないが、.configファイルに
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin" />
</assemblyBinding>
</runtime>
とか書いとけばよし。
GACはもはやMSが作ったライブラリ専用
66 :
61:2005/08/02(火) 01:06:59
GACに入れてくれてかつ複数バージョンのSXSをサポートしないという
とってもありがたい大手のライブラリもあったりするが
まあいいじゃないの
おまえらのsystem32にもへんなDLLとかいっぱい入ってない?
>>66 なに?配布対象はEndユーザー?
それならインストーラーつくるのが普通。VSでもWiXでも好きにどうぞ
ファイルバージョンは違うのに、アセンブリバージョンが同じ、厳密名も同じ、
でもインターフェースが変わっててまるで互換性がないなんてdllがあったなぁ。
.NETになってもDLL HELLは続きそうですね
[STAThread] をつけると動作しなくなる ActiveX に対して
どういう対処をすればええ?
MTAThreadのスレッド作ってそれにアクセスさせるとか?
74 :
デフォルトの名無しさん:2005/08/02(火) 13:08:36
Subject: あいうえお
で、メールを送ったんです。そしてそれを受信したら
Subject: =?iso-2022-jp?B?GyRCJCIkJCQmJCgkKhsoQg==?=
と、このように文字化けしていました。
iso-2022-jpを調べてみると、JISコードの一種だということがわかりました。
C#はUnicodeだから、JISなのにUnicodeで変換したため文字化けしたものと思われます。
これをJISで変換してやって、stringに入れなおしてやれば
Subject: あいうえお
に戻るだろうと思い、下記のようにコードを書きましたが、相変わらず
Subject: =?iso-2022-jp?B?GyRCJCIkJCQmJCgkKhsoQg==?=
と表示され、まったく、あいうえおになってくれません。化けてしまったものを、元に戻そうと思ったら
こんな単純な変換だけじゃだめということなのでしょうか。
public Form1()
{
string str = "Subject: =?iso-2022-jp?B?GyRCJCIkJCQmJCgkKhsoQg==?=";
byte[] byteArray = Encoding.ASCII.GetBytes(str);
string str2 = System.Text.Encoding.GetEncoding(50220).GetString(byteArray);
MessageBox.Show(str2, "test32");
}
>>74 お前はまずRFCを読め。
親切にヒントをやるが、それがメールのフォーマットなんだよ。
文字化けなどしていない。
GyRCJCIkJCQmJCgkKhsoQg==
いかにもたこにもどう見てもBase64でエンコードされてるな。
そもそもどういうやり方でメールを受信してるのさ。
あなたがメールの仕様を調べる必要がある。
そしてこのスレはC#相談室であるから、メールの仕様に関しての話題はふさわしくない。
78 :
74:2005/08/02(火) 13:36:44
皆さんアドバイスありがとうございます。
>>75 http://www5d.biglobe.ne.jp/~stssk/rfcjlist.html ここ長いのですが、iso-2022-jpとタイトル打ってるとこだけ読んでみます。
文字化けではないのですね。またなにか勘違いをしていたようです。
>>76 ということはBase64をデコードすればいいのかな。
string str = "Subject: =?iso-2022-jp?B?GyRCJCIkJCQmJCgkKhsoQg==?=";
byte[] byteArray = Encoding.ASCII.GetBytes(str);
string str2 = System.Convert.ToBase64String(byteArray);
MessageBox.Show(str2, "test32");
このように書いてデコードしてみましたが、あいうえおには戻りませんでした(T T)
メールの受信は、.NETでは標準でライブラリが提供されてないということで、ネットでいろいろ検索した
メール受信のコードをそのまま引用しました。
string msg = Encoding.GetEncoding(50220).GetString(ms.ToArray());
の記述から、JISにエンコードして、stringに入れて返してるんだろうなと思われます。
>>78 メールの仕様をまず勉強したほうがいいのですね。
調べてそれでもわからないときは、ふさわしそうなスレで相談しようかと思います。
どぼんか。そうか。
>>78 めんどくさいやつだな。よめ
ttp://www.y-adagio.com/public/standards/tr_mime-p3_2047/mime2047toc.htm それとDecodeMailのサンプル。ぶっちゃけ即興で書いたのでバグってるだろうが。
private static readonly Regex regex = new Regex(@"=\?(?<Encoding>[^?]*)\?[B|Q]\?(?<EncodedText>.*?)\?=");
public static string DecodeMail(string value) {
return regex.Replace(value, new MatchEvalator(OnMatch));
}
private static string OnMatch(Match m) {
string encName = m.Result("${Encoding}");
string encText = m.Result("${EncodedText}");
return Encoding.GetEncoding(encName).GetString( Convert.FromBase64String(encText) );
}
81 :
78:2005/08/02(火) 14:17:32
>>80 親切な方、どうもありがとうございます。
正直メールのどこから手をつけていいのかといったかんじだったので大変助かります。
読む範囲を限定していただいたので、紹介サイトを集中して読むことにします。
サンプルまで書いていただいて本当に親切にありがとうございます。
解読してよく勉強しようと思います。
礼儀正しいのになんかイライラする奴だな(´д`)
83 :
78:2005/08/02(火) 17:05:46
>>80 紹介サイト読みました。まだ5割ぐらいしか消化しきれてませんが、メーラーなんか作るとき困ると思うので
がんばって理解しようと思います。
サンプルをいろいろいじって動かしたところ、Subject: あいうえお が出力されましたヾ(*´∀`*)ノ
こちらも消化しきれてないので、解析して理解できるようにがんばろうと思います。
大変たすかりました。どうもありがとうございました。
>>82 慇懃無礼な奴だからだよ。
言葉の端々から、「早く教えろヴォケ」という雰囲気がにじみ出てる。
>>84 というか、突っ込みどころがありすぎるから。
レスもらった後理解&むかう方向が毎回間違ってるから、
「だから違うだろこのやろう」って突っ込みたくなるのです
ム板の質問スレはそういう人には向かない
87 :
デフォルトの名無しさん:2005/08/03(水) 11:46:49
データベースですがたとえば商品マスタテーブルに種別の列があって、
1が果物、2が野菜だとします。
これを普通にADO.NETでDataTableに読み込んで、DataViewを
そのままDataGridとかにバインドすると、種別の列には当然
1と2が表示されますが、これを果物とか野菜とか表示させるには
どういう方法がよいでしょうか。
C#のコード内では種別のenumを作ったので、GatName()で
名前が取れるんですが。
いまんとこ、
(1)種別名マスタを別テーブルで作ってLEFT JOIN
(2)DataTableに種別名のColumnを追加して、Fill後に1行ずつ埋める
くらいしか思いつきません。
データベース板のADO.NETスレ向きのネタだな。
多少面倒だが、
PropertyDescriptorを継承したクラスを作ってGetValueのオーバーライドで列挙体の値を返すようにする。
該当するカラムのDataGridColumnStyleのPropertyDescriptorプロパティに上記のクラスのインスタンスを設定。
で一応いける。
あるコントロールを継承して新しくコントロールを作成します。
特定のプロパティを非公開にしたい場合
どうすれば?
>>90 無理。派生クラスは「完全に」基底クラスとして振舞うことが出来る必要がある。
というか派生クラス⊂基底クラスの関係理解してる?
virtualプロパティなら上書きしてNotSupportedExceptionあたり投げることも出来るが、
あまり推奨しない。
ただしデザイナで表示させないことやエディタ(インテリセンス)で表示させないように
指定することなら出来る。前者がBrowsableAttribute、後者がEditorBrowsableAttribute。
指定しても普通にアクセスは出来るからあまり意味はないんだが。
>>91 > ただしデザイナで表示させないことやエディタ(インテリセンス)で表示させないように
> 指定することなら出来る。前者がBrowsableAttribute、後者がEditorBrowsableAttribute。
こいつは派生クラスでいじるにはnewで隠蔽する必要があるんじゃないか?
>>92 もちろん。でもその際のnew隠蔽はbaseそのまま呼ぶべきっていうか。
((Control)this.myControl).Visible = true;
((MyControl)this.myControl).Visible = true;
で結果が違うのでしゃれにならんというか、この例だとあからさまに変だけど
void myControl_Click(object sender, EventArgs e) {
Control ctrl = sender as Control;
if(ctrl!=null) {
ctrl.Visible = true;
}
}
とかもあるので・・・。
94 :
93:2005/08/03(水) 15:35:09
追記。
そもそもControlクラス内で
this.Visible = true;
の一行があるだけでもアウトだわな。
95 :
90:2005/08/03(水) 17:07:29
96 :
デフォルトの名無しさん:2005/08/04(木) 01:03:12
log4netでローカルアプリケーションのログをとり、リアルタイムでログを閲覧するには
どのようにするのがベターでしょうか?
RollingFileAppenderを使ってファイルに書き込みつつ、ファイルを定期的にリロードしてみせるアプリ作るとか、
TraceAppenderを使って、GUIにログを吐き出すTraceListenerをアプリケーション側に実装するとか考えたんですけど。
98 :
デフォルトの名無しさん:2005/08/04(木) 14:53:59
http://pc.watch.impress.co.jp/docs/2005/0804/mobile301.htm マイクロソフトOBでWindows 1.xの時代からWindowsの開発に関わっていた方(2000年に退職)から
コメントをいただいた。引用させていただくと、
“私の住むシアトル近辺のマイクロソフトOBの間では、2004年の前半に「Longhornがキャンセルに
なったらしい」という噂がさかんに交わされ、その後次々と「OFSはLonghornとは別」、
「Managed APIは採用しない」とのアナウンスがありました。結局の所、もともと計画していた
Longhorn は出せなくなったけれども、いまさらキャンセルになったとは言えないので、出せるもの
だけかき集めてLonghornと呼ぶことにした、という見方がこちらでは一般的です”
C#ばかり最近使ってたけど、久しぶりにC++使ってみた。うむむ・・やっぱり速い。
C#は、小さなプログラムだと結構速いんだけど、少し大きなプログラムになると、
再トランスレート処理が途端に増えるのか、ものすごく重くなる。
再トランスレート処理って何?
で、検索結果が無いんだが。
104 :
102:2005/08/04(木) 21:04:37
>>103 つまりそういうことを言いたかったわけだ。
なるほど、漏れも検索した、で
>>100には是非、説明をして欲しい。
再トランスレート でググレよ
107 :
デフォルトの名無しさん:2005/08/04(木) 21:18:33
ファイルのパス or フォルダのパス が入っている文字列から
それがファイルなのかフォルダなのかを判断するにはどうしたらいいのでしょうか?
調べていて考え付いたのは
System.IO.File.ExistsとSystem.IO.Directory.Existsを使ってtrueな方
という方法なのですが,ほかによいやり方があったら教えてください.
それでいいんじゃない。
それじゃできんだろ
111 :
デフォルトの名無しさん:2005/08/05(金) 15:58:09
テキストファイルをexeに埋め込んで、「読み込む」は、ぐぐるといくつかヒットするのですが
「書き込む」が見当たりません。
exeに埋め込んだテキストファイルに書き込みといったことはできないのでしょうか。
実行中の.exeをバイナリファイルで開いて、
どこか適当なリソース部分1バイト書き換えて保存してみたらどうなるか分かるか?
windowsサービスは起動や停止が可能ですよね。
でもWebサービスの場合は、デプロイしたら自動的に起動して、
停止することができません。
IISごと停止することは可能ですが。
Webサービスを、一時的に停止できる方法って、特に無いですよね?
無理やり、エラーを返す状態にするしかないですよね?
114 :
111:2005/08/05(金) 16:14:52
>>112 助言をありがとうございます。
想像ですが、固まってエラーはいて落ちちゃうんじゃないかなと思われるのですが
道理で書き込みの方法を解説した記述が見つからないなと思ったのですが
読み込みはできるけど書き込みはできないが解なのですね。
メールのパスワードを外部のテキストファイルに平文で書き込んでは、まずいかなと思い。
そのテキストファイルをexeに埋め込んじゃえば、セキュリティも保たれるし、簡単なんじゃと思いついたのですが
甘かったようです。
しょうがないので、パスワード部分を暗号化して、外部テキストファイルに保存しようと思うのですが
大体皆さん、ユーザが入力したパスワードを保存する場合、暗号化といった手法を使うのでしょうか。
パスワードをまずくないように保存しようと思えば、後は暗号化しか思いつかないのですが
115 :
デフォルトの名無しさん:2005/08/05(金) 16:57:32
byte[] test;の中身を見たいのですが、どのようにすれば数値を見れるのでしょうか。
textBox1.Text = Encoding.Unicode.GetString(test);
このように書いて、textBoxに表示させましたが、stringに変換したため、筰・XッSィy|メー%A・,o桎r香E のような感じに出力され
BinaryWriterで、txtに保存すれば数値が見れるかもと思ったのですが、開いてみると、\り?ュ・%[オワ;ッシ=gツH・ハ( のような感じで
出力されます。
byte配列に入っている数値を見たいのですが、どのように書けばstringに変換せずに見ることができるでしょうか。
中身ってなによって話。
まあ2桁16進表記なんだろうけど。
foreachでToString("X2")していくとか、
BitConverter.ToStringするとか。
117 :
115:2005/08/05(金) 17:05:43
>>116 BitConverter.ToStringという便利なものがあるのですね。
それ使ってみます。どうもありがとうございました。
ToStringの書式の質問です。
5桁の表示で110を ” 110"の文字列、前にスペース2個あるを取り出したいです。
D5も駄目だし,#####も駄目でした。何か書式ありますか?
PadLeftすれば良いじゃない
できました、有難うございます。
一方向関数
122 :
デフォルトの名無しさん:2005/08/06(土) 00:59:06
すいません、ビューステイトにコレクションクラスを入れると怒られちゃうのですが
どうしたらいいんでしょうか?
データセットとかデータテーブルとかストリングクラスなんかは入るのですが・・・・
stringまでカナ表記なのは珍しいな。
中途半端に「クラス」だけ半角なのがもどかしい。
125 :
デフォルトの名無しさん:2005/08/06(土) 01:40:22
いや、もどかしいの狙ったところもあるんで、あの、ビューステイと・・・
>>122 シリアライゼーション&デシリアライゼーション出来ないから。
ちなみにセッションにも同じコレクションクラス入れてたりしないよな?そんなことすると
InProc以外で動かないアプリの出来上がりですよ?
128 :
114:2005/08/06(土) 11:03:20
>>127 アドバイスをありがとうございます。
そうですか。埋め込んじゃえば見えなくなるからセキュリティも保たれて簡単なんじゃと思ったのですが。
セキュリティが保たれないのですか。解析なんかされると見えてしまう。ということなんでしょうかね。
埋め込んでも書き込めないし、最初からパスワードを保存する方法としてはふさわしくなかったのですね。
とりあえず、DESで暗号化してファイルに保存は実装成功しました。
保存したtxtファイルを開いたら、わけのわからない文字記号の羅列になってるし、保存したファイルから
復号も成功してるので、ちょっと不安要素もないわけでもないのですが、とりあえずこれでいいだろうと
思うことにしました。
>>128 まぁそれ以上しようがないのです、ローカルに保存する限り。
最もセキュリティを保つには「復元できないもの」なわけですが、
当然「参照も出来ない」わけで処理を複雑にしたりして「誤魔化す」
しかないんですよ。解析されればどうしようと見ることができます。
130 :
128:2005/08/06(土) 11:55:26
>>129 アドバイスありがとうございます。
ということはパスワードのセキュリティを保つ方法として、DESで暗号化して保存。でOKということですね。
もっと解析が難しい暗号技術を使うという手もあるかもしれませんが。
DESの方がC#で実装が簡単だし、とりあえずはこれでよしということで済まそうと思います。
です^3=3です
3です^3=6です
6です^3=9です
なんです。
132 :
デフォルトの名無しさん:2005/08/06(土) 12:35:40
MailMessage mm = new MailMessage();
mm.To = "aaa@***.ne.jp; bbb@***.ne.jp";
このように書いて送信すると
To: <aaa@***.ne.jp>, <bbb@***.ne.jp>
上のように、To:に複数のメールアドレスが載ったものを受け取ることになりますよね。
ところが、プロバイダなどの大量に一気にメールを送信したであろうメールのToが
To: <aaa@***.ne.jp>
なんです。こういった大量送信されたメールは皆Bccに書いて送ってるものだと思っていたのです。
mm.Bcc = "aaa@***.ne.jp; bbb@***.ne.jp";
このように書いて送信すると
To:
Cc:
のように、ToにもCcにも何も書き込まれずに送られてきますよね。
大量送信されたであろうメールが、なぜTo: <aaa@***.ne.jp> で送られてくるのか不思議なのですが
一通ずつToにアドレスを入れて送ってるのか?とも思うのですが、そんな効率の悪いことするだろうか
という疑問がわきます。
大量送信されたメールが使っているメーラーでそういったふうになるようにしているのでしょうか。
>132
スレ違い。
C#とは関係ないし。
UNIX板かLINUX板のメル鯖スレで聞け。
134 :
132:2005/08/06(土) 17:11:56
>>133 誘導ありがとうございます。
メールサーバのスレが的確なのですね。
そちらで聞いてみようと思います。
ウェブページのソースからリンクを抽出したいんですが
例外が出たり、リンク以外の物を抽出してたりします
どうすればうまくいくでしょうか
//リンク抽出
string link = "";
int s = 0;
int e;
while (true)
{
s = this.source.IndexOf("<a href=",s)+9;
e = this.source.IndexOf("target", s)-2;
link += this.source.Substring(s, e - s) + "\n";
if (this.source.IndexOf("<a href=") == 0)
break;
}
this.sourceにはウェブページのソースが入ってます
正規表現使え。
厳密に取るのは結構難しいが、
@"<a .*?href=(?:""(?<url>.*?)""|'(?<url>.*?)'|(?<url>.*?)[ >])"
こんな感じで。
MSHTMLなら完璧に取ってこれね?
正規表現ですか
難しそうなので避けてたんですがやるしかないみたいですね
ありがとうございました
VS2003でソリューションを作って、中にC#のWinプロジェクトと
C++のDLLプロジェクトを作って、C#からDLL起動等、問題なく動作しているが。
C#内でブレークやデバックが出来るが、C++のDLL内でブレークが動作せず。
デバックが出来ない。何か設定ミスをしている?
それとも、出来ないのが正しいですか?
MSHTMLで思い出した。
AxWebBrowserを介さずに直接MSHTMLでhtmlをパースすることってできるのかな?
HTMLDocumentをnewしたあとopenはずっとloadingのままになるしwriteでhtmlを書き込もうにもCOMException"種類が一致しません"。
HTMLWindow2はnewできない……。
>>141 クラスを直接使うんじゃなくて変なおまじないが必要だった希ガス
たしか親ドキュメントに空のHTMLを書き込んでからなんかするような
143 :
140:2005/08/06(土) 22:53:23
いろいろいじっていたら止まるようになった・・・・・・・・・・
>>143 なにがいいたいのかわからん。
唯一わかってるのは、「いじってたら」でイジリー岡田を思い出したと言うことだ。
145 :
122:2005/08/08(月) 00:18:07
146 :
122:2005/08/08(月) 00:19:12
>>126 えー!そうなんですか?
でもdatasetとかdatatableはできますよね?
結局配列っぽいコレクション型をセッションやビューステイとにほうりこみたいなら
datatableの形式にしないとダメって事ですか?
uza−
おまえがうざい
代弁どうも
>>146 基礎知識の足りないやつだな
「お前が必要なコードを書いていないから動きません」って話なんだが?
コードもかかんと動くわけがなかろう。そんな当たり前の話も分からないのか
150 :
122:2005/08/08(月) 02:40:56
必要なコードって、
じゃあビューステイとにコレクションクラスを格納することも可能なんですか?
何かコードかけば。
ビューステイ
ていうかよ、コレクションて具体的に何よ?
コレクションクラスじゃなくて、中に格納してるもんが
シリアライズ出来るようになってないだけじゃないのか?
もっと分かりやすく書け。
155 :
154:2005/08/08(月) 23:54:32
156 :
152:2005/08/08(月) 23:59:30
DataGridのセルを編集できる状態にして、
そのテキストの一番右側までいくと勝手に
次のセルが選ばれてしまう。これを簡単に辞めさせる
方法はないのでしょうか?うっかり右キー押したら
編集ENDとか虚しすぎます
環境:VS.NET2003pro
抽象クラスつくって、それを継承するクラスを書いているんだけど…
この抽象メソッドの実装を書くときに、自分でコピペしないとダメですか?
自動で継承もとからメソッドの概要copyしてくれる機能とかないでしょうか。
イベントハンドラのTAB押下での自動追加は便利だったんで、
そんな追加方法があるなら知りたいなぁ。
継承してTAB押す
2005最強と
あの展開機能は萌える。
自動スケルトン機能は確かに便利だがたまに発動しないことがあってむかつく
言語習得と、パケット抜き(pop等の暗号化がされてないパス程度の)のソフト作成をあわせて2週間で
終わらせるということになったのですが、どれくらいのペースで進めたら良さそうかということと
お勧めの入門書などがあったら教えていただけないでしょうか?
ピクチャーボックスを2つ重ねて
手前のイメージの背景を透明にしました。(MakeTransparent使用)
しかし手前のイメージの透明背景部分には
フォームの背景が見えます。
奧のイメージを見せるにはどうしたら?
どぼんに書いてある
167 :
デフォルトの名無しさん:2005/08/10(水) 17:22:38
VS.NET2002、ASP.NETで質問です
1列目:TemplateColumn 2列目:EditCommandColumn(編集、更新、キャンセル)
というDataGridがあるんですが、DataBindする前に、ソースの中でEditCommandColumn列の前に
↓のように連結列を動的に挿入してます。
dataGrid.Columns.AddAt(1,col1);
そうすると、編集とキャンセルは正常に動作するんですが、
更新をクリックすると何故かキャンセルのイベントハンドラに飛んでしまいます。
どなたかお助けを・・・。
//編集
private void EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dg.EditItemIndex = e.Item.ItemIndex;
ListDataBind();
}
//更新
private void UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//アップデート処理
}
//キャンセル
private void CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dg.EditItemIndex = -1;
ListDataBind();
}
private void ListDataBind()
{
dg.Columns.AddAt(1,col1);
dg.Columns.AddAt(2,col2);
dg.Columns.AddAt(3,col3);
dg.DataBind();
}
168 :
デフォルトの名無しさん:2005/08/12(金) 00:11:15
更新リンクボタンのコマンド名がキャンセルになっていないか
フォーム上のコントロールの重なり(ZOrder)を調べるにはどうしたらいいですか
Controls.GetChildIndex
171 :
デフォルトの名無しさん:2005/08/12(金) 18:19:22
ListViewの列の幅を、アプリを閉じても保存してくれるようなプロパティってないでしょうか。
一応、プロパティの説明を全部読んでみましたがそれらしいものはありませんでした。
しかし、もしあったら悔しいので、自分で各列の幅を記録するコードを書く前に聞いてみようと思い質問しました。
質問です
dllというものを知り、フリーで公開されているのを使ってみようと思ったのですが、どのメソッドを使って読み込み、呼び出すかわかりません。
MSDNでもdllに関する記述はたくさんあるものの、関係のないものしか見つかりませんでした。
基礎的なサンプルソースをいただけませんか?
>>171 > ListViewの列の幅を、アプリを閉じても保存してくれるようなプロパティってないでしょうか。
フォームの位置とか保存してくれるプロパティも無いだろ?
ていうか"保存"は動作だからプロパティにはならないんじゃね?
>>172 ちなみにそれが.NETで書かれたDLLなら参照設定に追加するだけで自由に扱えるぞ。
175 :
171:2005/08/12(金) 18:42:22
>>174 回答ありがとうございます。
やっぱりないのね。これで心置きなくコードが書けます。
漏れはC++/Win32だとオーナーデータにしてタブ区切りのテキストファイルに吐いてたな。
結局、レジストリなりINIファイルなりに保存するのがセオリーかと。
>>173-174 なるほど!こんなに簡単に使えるんですね
これは便利です、助かりました
ありがとうございました
178 :
171:2005/08/12(金) 21:50:11
>>176 アドバイスありがとうございます。
列幅は、テキストファイルに吐き出さそうかと思ってました。
それはできるだけレジストリを使わずに、フォルダごとゴミ箱へとか、フォルダごとバックアップできるようにと考えたからですが。
そのため、テキストファイルが18個もできてしまい、更に、ユーザに簡単に開いていじれるようになってるっていうのはどうなの?という
疑問もわいてきて、どうしようか迷っていたところでした。
既存のメーラーがどのように設定を保存してるのか、フォルダを開いて探しましたがそれらしいファイルが見あたらないので
そういったソフトはやはりレジストリに保存してるのでしょうかね。フォルダの中のファイル数が少ないのですっきり見えます。
とりあえずは、テキストで作ってみて、フォルダの中のファイル数の具合や使い勝手なども考えて、どちらに保存するか
決めようかと思います。
ひょっとしてListViewのカラム幅だけでファイル一つ使ってるのか……?
いくらなんでもそれはINIファイル使おうな
183 :
171:2005/08/12(金) 22:38:12
皆さんアドバイスありがとうございます。
>>179 参考サイトどうもありがとうございます。
>>180 そうですが、なんだかどんどん設定ファイルが増えるなと不安になってたんです。
現在設定ファイルが、5個。今回のカラム幅は、ListViewが3つあるので、更に3つファイルを作ろうかと思ってました。
>>181 やはりtxtはまずかったでしょうかね。
>>182 xml使えば設定の管理が楽になるのでしょうか。それならぜひ使いたいです。
今のところは
http://dobon.net/vb/dotnet/programing/storeappsettings.html にある、設定をクラスで管理して、XMLファイルに保存という方法にしようかと傾いています。
この方法で、いくつもある設定ファイルを1つにできたらうれしいなと思います。
NETはXMLを扱う機能が充実しているそうで、サンプルコードが短かったので扱いやすそうなので、一度この
方法でやってみようかと思います。
べつにINIファイルでも扱いには困らないけどな
[ListView1]
Column0Width=AAA
Column1Width=BBB
[ListView2]
Column0Width=CCC
Column1Width=DDD
[ListView3]
Column0Width=EEE
Column1Width=FFF
INIファイルを呼ぶのは一般的にはAPIコールになるけど
ググればそれなりにサンプルが出てくると思う
まあXMLベースのほうがいいだろうけど。
185 :
171:2005/08/12(金) 22:51:21
>>184 アドバイスありがとうございます。
iniファイルの中身はそのように記述するのですね。
XMLのほうを推奨ということなので、とりあえず、XMLでいってみようと思います。
外部に書き出しとなると、txtかcsvしか扱ったことがないので、何もかもtxtで書き出してしまってました。
とにかく、ファイルが多くて不恰好なのでXMLの方法で1つにまとめられるようにやってみようかと思います。
> 何もかもtxtで書き出して
それはそれでありな気が
187 :
171:2005/08/12(金) 23:19:57
>>186 それでいいなら修正しなくていいから楽でいいんですけど。
設定ファイルのクラスの設計と、書き直す箇所とか考えると、txtで書き出しまくるのが標準だったらと思うこともないですね。
フォルダ開いたらファイルだらけってどうかなと、ファイルが増えるたびにちょっぴり不安な心持になってたので。
ありならありでそのまんまにしちゃおうかなという気持ちも半分あるし、XML扱う方法やっといた方がいいかなという気持ちも半分です。
とりあえずSettingsフォルダとか作ってそこにいれちゃえば?
Settingsフォルダ作るならSpecialFolder.LocalApplicationDataのほうがよくね?
190 :
171:2005/08/12(金) 23:35:00
>>188-189 皆さん、アドバイスありがとうございます。
>>188 フォルダに入れちゃえば、ごちゃごちゃファイルが多い件は解決ですね。
そうしちゃおうかな。この方法ならすっきりするし、苦労もしなくてすみますね。
今夜は横になりながら考えて明日決断しようかと思います。
>>189 SpecialFolder.LocalApplicationData をざっとぐぐったところ。
どうやら隠しフォルダなのですかね。
見えないのならよけいに好都合ですね。
フォルダの中身がすっきりする上に、表示させる設定にすれば見えちゃうのかもしれませんが
ファイルの中身をいじられにくいのもいいですね。
コピペで他の環境に移せないじゃないか
ところでXmlSerializerのインスタンス作るのって何であんなに重いんだろうね?
193 :
171:2005/08/13(土) 14:23:18
>>191 アドバイスありがとうございます。
なるほど、ユーザにフォルダの存在が見えなかったら、バックアップがしやすいメリットがなくなってしまいますね。
とりあえず、カラム幅の記録のみをXMLで保存してみようということにしました。
XML保存への変更が面倒だったら、Settingsフォルダを作ってそこにまとめてファイルを入れとこうと思います。
194 :
デフォルトの名無しさん:2005/08/13(土) 18:59:41
System.Web.Mail.MailMessage mm = new System.Web.Mail.MailMessage();
mm.From = "
[email protected]";
mm.Fromは、送信者のメールアドレスを入れますが、では送信者の名前はどのように書けばいいのでしょうか。
なんとなく、mm.From = "名前 <
[email protected]>"; かなと思ったのですが
使っているメーラーの差出人のところが、名前 <
[email protected]> のような記述なので。
195 :
194:2005/08/13(土) 19:13:04
試しに、mm.From = "名前 <
[email protected]>"; で送ってみたところ。
今度はOutlook Expressで確認したら、ちゃんと名前の欄に、名前 と載っていました。
mm.Name = "名前";
と書ければわかりやすいのに。と思います。
とりあえず
mm.From = "
[email protected]"; の部分を、mm.From = "名前 <
[email protected]>";
に書き換えようと思います。
何か、勘違いしていることなどありましたらご指摘いただけるとうれしいです。
どうもお騒がせいたしました。
>>195 System.Web.Mail.MailMessage mm = new System.Web.Mail.MailMessage();
// 送信者
mm.From = "送信者のコメント <
[email protected]>";
で合ってるよ。
e-mailのタグをベースにプロパティ名称を付与しているから、仕方がない。
197 :
194:2005/08/13(土) 20:07:57
>>196 回答ありがとうございます。
あってるのですね。これですっきりしました。
198 :
デフォルトの名無しさん:2005/08/15(月) 18:57:22
Form1(){} の中で、menuItem1_Click(Object sender, System.EventArgs e){} を呼びたいのですが
引数eに何を入れればいいのかわからず困ってます。
menuItem1_Click("基本設定", e); のように書いて呼び出そうとすると、ビルド時に
'e' は クラスまたは名前空間 'test41.Form1' に存在しません。 と、エラーが出るので
"基本設定"の部分はこれで大丈夫なのかなと思うのですが、eの部分に何を書いたらいけるでしょうか。
ちなみに"基本設定"は、メニューの[設定&S]-[基本設定&K] のテキスト部分です。
>>198 それ以前に、普通のメソッド呼び出しすら分かってないような予感たっぷり
面倒だし、menuItem1_Click(null, null) で良いよ
EventArgs.Empty
201 :
198:2005/08/15(月) 19:11:47
>>199-200 皆さんアドバイスありがとうございます。
menuItem1_Click(null, null);
menuItem1_Click(null, EventArgs.Empty);
menuItem1_Click("基本設定", EventArgs.Empty);
どれも試しましたが、どれも成功しました。
正直いって、なんで全部いけるのか、さっぱり理解できてませんが、今度から、既存のイベント発生のメソッドを呼び出すときは
面倒なので、null, null でいこうと思います。
>>201 いや、199 の身でなんだが、(this, EventArgs.Empty) を薦めるよ
もしくは、menuItem1_Click の処理を別なメソッドに分けて、分けた方のメソッドを呼び出すんだ
PerformClick メソッドってなかったっけ?
204 :
198:2005/08/15(月) 19:23:50
>>202 ご親切にどうもありがとうございます。
お勧めの、menuItem1_Click(this,EventArgs.Empty);
に書き換えました。
原則論を言えば、イベントはマルチキャストなんだから
ハンドラ直接呼出しよりPerformClickの方がいいと思われ。
>>198 に 「menuItem1_Click を直接予備隊」 って書いてあるんだが
言われたことを何も考えずに従うだけのコーダー根性というやつか
質問されたから素直に答えたのに、なんでケチつけられなきゃあかんねん
2chだから
210 :
198:2005/08/15(月) 21:10:46
>>205 アドバイスありがとうございます。
menuItem1.PerformClick();
でも呼び出せました。こちらに書き換えようと思います。
いいなりだな
log4netの使い方がいまいちわからないのですが教えてもらえませんか?
ちょっとすいません。C++の
public:
virtual void func() = 0;
こういうのC#でどう書くんでしたっけ
public abstract void func();
にしたら抽象クラスに非抽象関数入れられないって蹴られたよ…
徹夜明けで参考書調べる余裕ないんだわ。頼む…
>>213 > 抽象クラスに非抽象関数入れられない
こんなエラーメッセージをcsc.exeは吐かないので、スレが間違ってるんじゃないか?
ぶっちゃけ「非抽象クラスに抽象メソッドは入れられない」ジャマイカ
逆
それなら class の前に abstract が入っていないだけだな
クラスを抽象クラスにすれば解決
217 :
デフォルトの名無しさん:2005/08/16(火) 13:38:27
メインフォームが生成された直後に、メッセージボックスを表示させたいのですがうまくいきません。
public Form1()
{
InitializeComponent();
MessageBox.Show("てすと");
}
これだと、メインフォーム生成前に表示されてしまいます。
static void Main()
{
Application.Run(new Form1());
MessageBox.Show("てすと");
}
これだと、メインフォームを閉じた後に表示されてしまいます。
protected override void WndProc(ref Message m)
{
if(m.Msg == 0x0001) //WM_CREATE
{
MessageBox.Show("てすと");
}
}
ウィンドウプロシージャで、フォームが生成されたのをキャッチして表示させようと思ったのですが
これも、メインフォーム生成前に表示されてしまいます。
WM_SHOWWINDOW(0x0018)にもしてみましたが、こちらは生成前と生成後の2回も表示されてしまいます。
どのように書いたらメインフォーム生成後にひょうじさせることができるでしょうか。
一つ確認したいが、"生成"じゃなくて"表示"だよな?
Application.Idleイベントにハンドラ追加して、
そのイベントハンドラで追加したハンドラ削除&したい処理をする。
Form.Activatedの方がいいかも
220 :
217:2005/08/16(火) 13:59:30
>>218-219 アドバイスありがとうございます。
>一つ確認したいが、"生成"じゃなくて"表示"だよな?
すみません、表現が正確じゃなかったですね。表示です。
無事メインフォーム表示後に表示させることができました。
221 :
デフォルトの名無しさん:2005/08/17(水) 12:39:14
[やりたいこと]
ダイアログ A を表示した時点で
スクリーンセーバが起動中であっても解除し、
Aが表示されている間はスクリーンセーバを起動させない。
Aが表示されていない間は、時間経過後(画面のプロパティで設定する分)
スクリーンセーバを起動する。(ほうっておけば起動される)
[やってみたこと1]
ダイアログA表示中、タイマー(100ms周期)で座標0,0にマウス移動し、直後に移動前座標に戻る。
Point oldPos = new Point(System.Windows.Forms.Control.MousePosition.X,System.Windows.Forms.Control.MousePosition.Y);
System.Windows.Forms.Cursor.Position = new Point(0,0);
System.Windows.Forms.Cursor.Position = oldPos;
↑だと、画面のプロパティのプレビューを解除することは出来ましたが、
時間経過後(画面のプロパティで設定する分)に表示される、本当(?)の
スクリーンセーバでは解除ができません。
[やってみたこと2]
座標(0.0)から座標(100.100)にループにて順に移動させるも、やはりダメ。
うまいことやる方法、ありますでしょうか?
223 :
デフォルトの名無しさん:2005/08/17(水) 20:46:47
XMLでノードを追加したいんですが、任意の位置に追加できないもんでしょうか?
例えば、以下のような場合に、<Name>の次に<Age>を入れたいのです。
<Address>
<Name/>
<Tel/>
</Adress>
<Tel>の次に入れるなら、SelectSingleNodeで<Address>を取得し、
AppendChildすれば、自動的に最後である<Tel>の後に入ります。
でも、<Name>の次に入れるには、どのようにしたら良いのでしょうか?
そもそも、Xmlでこのようなことを求めること自体、間違ってます?
XmlNode.InsertAfter/InsertBefore
225 :
223:2005/08/17(水) 21:09:13
226 :
デフォルトの名無しさん:2005/08/17(水) 21:40:42
すみません、アドバイスお願いします。
COM化したDLLをIEのOBJECTタグを使って自動インストールさせ、
DLLのメソッドを使えるようにしたいと思っています。
色々テストしてみたのですが、
作成したインストーラを別のローカルマシンで実行したところ、
きちんとインストール・DLLのメソッドも実行できました。
しかし、OBJECTタグを使ってDL→インストールしようとすると、
「インストールしますか?」というメッセージはでるのですが、
まるで何もインストールされてないように、そのDLLのメソッドを使うことができません。
レジストリのClassID登録がローカルでインストールしたときと違っているようです。
(NameSpaceとClassが登録されていません)
イメージ的にはC++のOCXみたいに使いたいのですが…
228 :
デフォルトの名無しさん:2005/08/18(木) 20:55:28
アイコンを作成しました。
フォームの左上にあるアイコン、タスクバーに表示されるアイコンの設定はできたのですが。
アプリケーションのアイコンの設定がわからず困ってます。
参考書に、リソースビューを表示して設定する方法が書いてあるのですが、肝心のリソースビューを表示してみても
中身はまったくの空でどうしようもありません。
この参考書はC++.NETの参考書だからだめなのでしょうか。
C#でアプリケーションのアイコンの設定はどのようにすればできるでしょうか。
/win32icon
VSだとプロジェクトのプロパティにあるだろ
ちなみにこのアイコンリソースをプログラム上から利用するにはWin32APIが必要になる
//あれ、/win32resが必要だったっけ? >プログラムから利用
230 :
228:2005/08/18(木) 21:08:20
>>229 できました。どこいじったらいいかわからず困ってたので大変助かりました。
エンコーディングが何かは分かっていないhtmlのソースを、ネットから
stringに読み込むにはどうしたら良いでしょうか?
ヘッダにContent-Typeがあるならそれを使う
無ければデータの初めにBOMが無いかどうかチェック
見つからなければmeta要素でContent-Typeが定義されていないかチェック
それで見つからなければ自前で判断
文字コード判別にはこことか
ttp://www.gprj.net/
>>232 C#の標準でコンバータが用意されていたりはしないのですね。
ありがとうございました。Microsoft最悪ですね。
いやコンバートはともかく自動判別なんて普通標準ではないだろ
>>234 これだけ文字コードが乱立しているのだから、あってもおかしくないとオモタ。
Perl、PHP
PHP.NET使えば無問題
Perlが文字コード判定を標準装備してたのならなんでjcode.plなんてのがあったんだ?
いや、っていうか「無理」なんだが。
「日本語」って限定すれば結構高確率で出来るけど言語限定しないと難しいし。
UTF16とか完璧に判別無理なのあるし
何で未だに文字化けがあるのかと小一時間(ry
そんなん標準で用意されてもその、なんだ、困る
>>240 てかそれってまさか日本語だけとか言うなよ・・・
242 :
デフォルトの名無しさん:2005/08/19(金) 08:49:54
リッチテキストボックスにコピペ以外の方法で画像を貼り付けるにはどうしたら良いですか?
メソッドとか探してみたのですが見つからなかったので困っております
(最悪、クリップボード経由で貼り付ける方法もあるのですが、できれば普通にやりたいです)
タスクトレイに表示される吹き出しのポップアップはどうやったら出せるのでしょうか?
244 :
デフォルトの名無しさん:2005/08/19(金) 12:43:08
できあがったアプリのアイコンにカーソルをあてると
ファイル バージョン・作成日時・サイズ がチップに表示されますが
ファイル バージョンが、1.0.2056.38066
と長々しいので、1.02にしたいのですが、そういった設定はどのようにすればいいのでしょうか。
後、皆さんバージョンはどのようにつけているのでしょうか。
これはだいぶ機能を追加したからバージョンを1アップしようとか、これはちょっとした改変だから0.5だけアップしとこうとか
そういったどんぶり勘定でバージョンの数字をアップしているのでしょうか。
>>244 AssemblyInfo.csの[assembly: AssemblyVersion("1.0.*")]
246 :
244:2005/08/19(金) 13:15:05
>>245 任意のバージョンにすることができました。どうもありがとうございました。
文字コードの判別はIEのコンポーネントを呼び出す方法をどっかで見た記憶が
あるけど、探せなかった。
248 :
243:2005/08/19(金) 14:15:43
250 :
デフォルトの名無しさん:2005/08/19(金) 16:10:59
C#で書いたアプリって、.NET Frameworkをダウンしてもらいさえすれば、95,98,Meなんかでも動くのでしょうか。
無難に2000,XPのみ対応を謳っておいたほうがいいでしょうか。
2000,XPのみでいいと思う。
98でも動くが一部機能しない。
252 :
250:2005/08/19(金) 16:18:54
>>251 回答ありがとうございます。
Framworkさえインストールすれば、どのOSでも動いてくれれば便利なのに残念です。
95,98なんてとっとときりすてましょう
254 :
デフォルトの名無しさん:2005/08/19(金) 16:45:56
VS.NET 2003 で作ったアプリに対応した.NET Frameworkは1.1であってるでしょうか。
最新の.NET Framework2.0Beta版をダウンしたとしてももちろん動きますよね。
あってる。
2.0で1.1のアプリも一応うごく
256 :
254:2005/08/19(金) 16:51:50
>>255 回答ありがとうございます。
Framworkがバージョンアップするたびに動かなくなったら大変だなと思ってたので安心しました。
>>252 9xは動くかもしれないとだけでも書いておいてあげようよ。
まあ流石にWin95にFrameworkはインストールできないけど。
258 :
254:2005/08/19(金) 19:33:06
>>257 そのように書いておけば、98もカバーできたようなきにはなりますね。
そのうように書いとこうと思います。
どうもアドバイスありがとうございます。
>>242 クリップボード経由か、そうでなきゃRtfを直に操作するしかないんじゃないかな
260 :
デフォルトの名無しさん:2005/08/20(土) 16:13:07
Dateをパースするとき
Thu, 2 Jun 2005 18:22:12 +0900
のようなメールで使われている形式をパースするにはどうするのが簡単でしょうか?
+0900のような形式が書式指定に無いのですが。
入力文字列を変換して 「 Thu, 2 Jun 2005 18:22:12 +09:00 」< コロンを入れた
でParseするのって適当ですかね?
そのままやればいけるじゃん……と思いきや.NET 2.0限定か。
秒まで(Thu, 2 Jun 2005 18:22:12)でParseしてから時差を手計算、ということになるかなぁ。
「Thu, 2 Jun 2005 18:22:12 +09:00」
こういう表記考えた奴アホでしょ。
「2005/08/20 18:30:00」とかでいいじゃん
RFCなんてあんま考えずに出してるから
>>262 はげしく同意。字句解析する身にもなってみろ!!
C#でオススメの参考書とかってありますか?
大体の事はMSDN見ながらやってれば何とかなるんですが、
イベント、マルチスレッド、マーシャリング辺りに重点を置いた書籍があるなら、
手元に置いておきたいんですが。
266 :
デフォルトの名無しさん:2005/08/20(土) 22:21:14
正規表現が含まれてないフレームワークって今の時代存在するのかな?
>>262 いや、それだと国によって解釈がまちまちになってしまうし…
MFC
>>261 返答thx
.net 2.0だとそのままいけるのかぁ
.net 1.1だとコロン入れればzzzだかの書式に当てはまるので普通にパースできるようです。
273 :
266:2005/08/20(土) 22:50:46
>>267 ややこしくて申し訳ありませんが、boost::regex_replace()はreplaceと
言うよりもむしろformatterなのです。というわけで探していたものが
見つかりました。
System.Text.RegularExpressions.MatchのResultメソッドでした。
ご協力ありがとうございました。
いや、多分それ取得時間狂ってるぞ。
DateTime.Parse("Thu, 2 Jun 2005 18:22:12 +09:00");
は.NET 1.0/1.1では
2005/06/02 9:00:12
と解釈されるはず。時間・分が後ろの+HH:mmに支配される。
275 :
デフォルトの名無しさん:2005/08/20(土) 22:57:40
非同期デリゲートに関して、
EndInvokeの後に書いた処理と
AsyncCallbackで行わせる処理って実行順序は保障されない。でいいんですかね?
//...コード例
private void _processX(){
ThreadStart ts = new ThreadStart(_method);
ts.EndInvoke( ts.BeginInvoke(new AsyncCallback(_callback), null) );
Console.WriteLine("main thread");// A
}
//...
private void _method(){}
private void _callback(IAsyncResult r){
//...........
Console.WriteLine("thread pool thread");// B
}
とやると AとBの実行順序は保障されないのが仕様?
(自分で非同期処理関連実装しないといけなくてIAsyncResultを実装したクラスを作ろうとしてふと疑問に
それであってる。
EndInvokeが待機するのはそれでいう_methodで実行される部分。
277 :
デフォルトの名無しさん:2005/08/21(日) 01:44:14
>>259 回答ありがとうございます。
結局、
クリップボードの中身を変数(?)に退避
↓
クリップボードに画像ファイルを読み込み
↓
リッチテキストボックスにペースト
↓
変数(?)に退避した中身をクリップボードに戻す
という方法を採用することにしました。
>>272 ちょうど同じことやってる人がいた(^^)
RSS2.0で普通に使われてるのに困ったもんだねぇ。ということで
>>274の
内容を踏まえて書いてみた。間違ってたら指摘お願い。
date = System.DateTime.ParseExact(strdate, "ddd, d MMM yyyy HH:mm:ss zzz", System.Globalization.DateTimeFormatInfo.InvariantInfo);
値型ってなんて読む?
あたいがた
Value Type
いや普通に取得できるが。
RichTextBox内の現在のカーソルの位置に文字列を代入したいのですが、
AppendText()では常に最後に代入されてしまいます。
現在のカーソル位置に代入したい場合、どうすればよいのでしょうか?
SelectedText?
SelectとかSelectionStart/SelectionLengthで挿入したい位置にカーソルを動かしてSelectedText
与えられたstringから改行を取り除いてその文字数を得たいのですが、
どうしたらよいでしょうか?
System.String replaced = System.Text.RegularExpressions.Regex.Replace(str, "[\\p{Zl}]", "", System.Text.RegularExpressions.RegexOptions.Multiline);
ではダメでした。
String.Replace で充分じゃね?
str.Replace("\r\n", "")で削除できました。System.Stringは\r\nで
改行を持ってたんですね…
ちがうだろ。
たまたまStringに入ってた文字列の改行が\r\nだっただけだろ。
Windowsだと改行に\r\n使ってる場合が多いからな。
ただWebとかから拾ってきたファイルとかだと違う改行もありえる。
>>290 と言う事は、一般的にSystem.Stringの改行を削除するには、改行と
解釈されうる全てのシーケンスを削除する必要があるということでしょうか。
まあ\rと\nを全部取り除いてやればなんとかなりそうな気もする。
>>292 ではstr.Replace("\n", "").Replace("\r", "")ですね。でもかっこ悪い…
そこで正規表現だろ。
Regex.Replace(str, "[\r\n]", "");
>>294 それでいきます。ありがとうございました。
構造体をByte配列型でネットワークで送信して送信先で構造体に戻したいのですが
何か良い方法は無いでしょうか?
ある程度制約があるが、
System.Runtime.InteropServices.Marshalクラスの
AllocHGlobal/FreeHGlobal/StructureToPtr/PtrToStructure/Copyメソッド。
素直なのは、その構造体にToBytesメソッドでも作って自前で実装。
.NET同士ならBinaryFormatter辺りを使ってシリアライズ・デシリアライズというのも良いな。
300 :
297:2005/08/22(月) 16:58:58
>>298,299
素早いレス有難う御座います!
今から早速試してみます。
301 :
デフォルトの名無しさん:2005/08/22(月) 22:44:28
Visual Studioスレが2005になってしまったようで、微妙に場違いですがお許しください。
MSDNのインストールウィザードが変なタイミングで出るようになってしまいました。
WebからMSDNのオンラインを参照したり、
Windowsサービスのインストーラプロジェクトを作ってビルドの際などに、
確実にダイアログが出て、プログレスバーが進行していきます。
どうせ、そのまま続けてもエラーが出るので、キャンセルするのですが、
キャンセルすると、何事も無かったように動作します。
何か、対処法があるでしょうか?よろしくお願いします。
修復インストールかな
il||li _| ̄|○ il||l
やっぱり、そうなりますよね……
インストールしたファイルやレジストリを知ってか知らずかいじるとそうなる。
その部分だけの修復だからすぐ終わるはず。
>>301 は違うようだが、
VSなのにOfficeが暴走したりするのがわけわかんないんところ。
305 :
デフォルトの名無しさん:2005/08/22(月) 23:33:05
C#って将来的に普及しますか?(将来性ありますか?)
ぶっちゃけJavaのが有望だろ
しないのでJavaスレにお帰りください
てかC#かJavaの選択なんて馬鹿げてる
両方使えこなしたらええやん
よし、両者の最大公約数だ。
出来る人間は両方臨機応変に使える
廃れたら捨てればいいだけ
無能な人間は一言語しか出来ないのでそれが廃れると困る
>>301 もしかしてjv16 Power Toolsでレジストリを掃除しなかった?
俺は前にそれ2回やって、2回とも君と同じ症状が出るようになり、二度とjv16を
使わない決心をした。修復インストールをしても直らず、全部削除してからもう
一度最初から入れ直した。
多分一つか二つのレジストリキーの問題だろうと思うんだけど・・・
313 :
デフォルトの名無しさん:2005/08/23(火) 00:26:41
C#で作ったプログラムって動作遅いのですか?
ゲームとか作るのには向いていないでしょうか?
速度は問題ないが実行できる環境が少ないから向いてない
GDI+はやっぱちょっと遅いと思うよ
DirectX使うならいいけど
ManagedDirectX使うならフツーのDirectX使った方が・・・
というわけであんまり向いてないと思うよ
>>313 パフォーマンスは悪くない。ただし、初回起動が遅い。
ゲームの場合、Managed DirectX を利用する事になるが、
ユーザにインストール方法を説明するのが面倒かも。
ただ、こういった環境面を考慮しないなら生産性は高い。
初回起動が遅いってのはネイティブコードに落としたのを
どっかテンポラリディレクトリに隠してあるのけ?
>>317 違う。メモリに入れている。だからメモリも馬鹿食いする。
なんでわざわざそんなことを。
.NET Frameworkの起動に費やしてるだけだ。
だいたいネイティブコードへのコンパイルは実行中に行われるんであって起動時のみに行われるんではない。
HTTPWebRequestクラスを使用するときに、
プロパティが存在しないContext-Encording;gzip, deflateを
指定し、gzip圧縮をしていないリクエストデータをサーバに送ると
タイムアウトはするものの、CPUの使用率が異常に跳ね上がります。
同じ症状に悩まされたことある人いませんか?
>>317 ランタイムが異常に肥大しているので、それの読み込みに時間がかかる。
二回目以降はDLL保持してたり、ディスクキャッシュが効いてたりで早い。
悩まされるどうこう以前にそんなことすんなよw
>>320 そもそもgzipとdeflateを両方同時に指定するのは間違ってないか
324 :
デフォルトの名無しさん:2005/08/23(火) 11:02:28
.net2.0 beta2でSystem.Collections.Genericから
Collection<T> が消えているのですが、どこへ行ってしまったのでしょうか。
System.Collections.ObjectModel名前空間
>>325 ありがとう。発見しました。
System.Collections.ObjectModel.Collection<T>
327 :
313:2005/08/23(火) 13:13:36
やはり遅めですか・・・
大人しくC++にした方が無難ですかね?
それで問題ないならそっちの方が良いな
ていうか上で言われてるのはインストールの面倒さが主だから。読んでる?
329 :
デフォルトの名無しさん:2005/08/23(火) 14:11:40
静的コンストラクタというのはありますが、静的デストラクタというのはないのでしょうか。
ない
331 :
デフォルトの名無しさん:2005/08/23(火) 17:43:07
c#のswitch文は、intやchra,stringしか使えないそうですが、
実数を用いて条件分岐したい場合は、else ifしかないんですか?
というかcではそれがあたりまえなの?
intだけじゃなくて整数型全部使える、あと列挙型も。
なんでfloat, double, decimalは駄目なんだろうな
333 :
デフォルトの名無しさん:2005/08/23(火) 17:56:49
>>332 そうレスか
ということはひょっとしてVBよりショボチンってことかい
いちいちbreakを書かなきゃいけないという点でも、VBより劣ってると思うよ。
フォールスルーの機能が無いのにいちいちbreakを書かされるのは、Cの流れを汲んでることの弊害だと思う。
話を戻して、
>というかcではそれがあたりまえなの?
これは俺にはわからんな
>>334 漏れも、いちいちbreak;はめんどくさいのでgoto使ってみたが、
意外ときれいに書けた。 ここ以外goto使ってないがな。
>>332 できるだけテーブルジャンプにしたいから、整数じゃないとまずい
むしろ string がなんで使えるのかが不思議
>>335 break を外に出る goto へ単純に置換するだけなら、それは違うんじゃないか?
>>332 Cでの意図は整数・列挙型ならジャンプテーブルの最適化を狙うためだったんじゃないかと思う。
その仕様がC#にも引き継がれたってことでしょ。
>>336 case:内の違う処理後に共通処理部分case:の一つに飛ぶんだが。
こんな恥ずかしい記事は久しぶりに見た
>>301と同じ現象が起こってしまいます。
インストールの途中でCPUがフル稼働して固まります。
修復しても同じでした。
他に考えられる原因はありますか?
ないねー
(´・ω・`)
>>341 VSを削除してインストール、それでも駄目なら、HDD初期化してOSからインストール。
たまーにやるけど、HDDが綺麗になっていい。
VSでおかしくなった事は無いけどね。
345 :
デフォルトの名無しさん:2005/08/23(火) 20:01:43
OS再インストール(リカバリ)したばかりのXPで、試しにC#で作ったアプリをダブルクリックして実行してみたのですが
ちゃんと立ち上がってフォームが表示され、ちゃんと動きました。
XPも2000も初期状態では皆、.NETFrameworkが入ってないと思っていたのですが
最近のPCは入れてくれているものもあるのですね。
こういったPCが増えてくれれば、ユーザに.NETFrameworkのインストールの案内とかの手間が省けて助かりますね。
全部がそうならない限り説明の手間を省くことはできないさ。
347 :
345:2005/08/23(火) 20:25:06
>>346 それもそうだね。
.NETFrameworkのインストールという手間さえなければ、なかなか生産性も高くていい言語だと思うんだけどなあ。
JREのインスコより簡単だろ
まあ、Windows Updateで完了するだけましじゃないか。
MDXは再配布してやらにゃならん。
ここがC#でゲームを作る場合の鬼門なんだよな。作ってるけど。
.NET をインストールしてから DirectX をインストールすれば
勝手に Managed DirectX もインストールされたと思ったんだけど
俺の記憶違い?
漏れもC#で作ってる、できたらフリー公開予定。どんなアクションが起こってくるか不明だ。
MDXは添付していいものなのか?
>>350 俺も昔そう思い込んでたのだが、残念ながら違う。
やっぱそう思うのが自然だよなあ。MSは変だよ。
353 :
351:2005/08/23(火) 20:42:56
>>350 そうなのか?、そうなら嬉しい。(色々インストールしたが、何処で入ったか覚えてない。
>>339 この人は、どうでもいいような事を非常に重要なことのように書いたり、
センセーショナルに煽ったりするのが芸風だね。
それが川俣クオリティ。
いや結構好きな人だけどね。
3年ほど前に作ったMDXを使うアプリの説明書に
.NET 1.0 を入れてから DX 9 を入れれば大丈夫
って書いたけれど特に不具合の報告なかったぞ
・ダウンロード数0
・たまたま入っていた
・動かないのですぐゴミ箱へ
さあどれだ。
気になり始めました、教えて下さい。
OSは2000、昔、DX8で、DX9にして今DX9の最新を入れているが、意識してMDXを
インストールした記憶が無い、しかし普通にMDXを使用している。 (知らずに入れたかもしれない・・
この場合、古いMDXを使用している可能性もあるのだろうか? VS.NET 2003を使用。
普通に使っていたので気にもしなかった。 MDXにバージョンがあるのだろうか?
>>331-332 遅レスだけど…実数型で==なんて比較(caseで指定する方法ね)をそもそもしてはダメポ。
だからfloatやdoubleはだめ。
decimalはまだいいけど・・・それでも無理にサポートする必要もないな
>>336 stringはimmutableなので、比較が高速に出来る場合があるからじゃない?
最適化次第だけど
MDX SDK入れただろ。
MDXを使った代表的アプリとしてNASA制作のWorld Windがある。
それのインストールプロセスを調べてみれば?
RichText.Rtfプロパティに\f2とか色つきのRTF
直接流し込んだら遅いのなんのって酷過ぎだよ。
10kで1秒ちょっとうんまぁまぁ
3M読み込みやってみたら10分は無反応、どうなんてるんだ?
<\cf2 td\cf1 >\cf3 test\cf1 <\cf4 /\cf2 td\cf1 >\par
こんなので3Mだよ?それで、javaより読み込み速度遅いわ、
糞クラス多すぎて本当に困るよ。
みんなRichTexeBoxは使わないの?困らないの?
364 :
デフォルトの名無しさん:2005/08/24(水) 03:31:35
.NETプログラムの起動遅すぎてオワットル……
MSはこんなのをWinのデフォにしようとしているんでしょ?
>>364 最初からJava並みだと分かってたから、期待はしてなかった。
Javaよりも当然Windowsとの相性はずっといいけどな。
こんなんデフォにされたら、CPUをいくら速くしてももっさりして
溜まらんわ。絶対反対。
>>365 技術者なら技術的な話をしようか。
実行ファイルを読み込むほうが全体としては時間かかるので、実際のところ
大体においてJITは誤差程度のはずなんだが。ngenやってどの程度速くなるか
確かめてみ。
大規模なライブラリにおいては確かに結構きくけどな。でもngenがあるわけで
解決策があるのにこれでも問題だというのはなぜ?
あ、それと、WinFormで遅いっていってるのは別の理由であって、JITの責任では
ないが?
実際のところJITとネイティブコンパイルを比較すれば最適化がひっくり返る手前
まで来ている時代だと思う(プロファイル最適化がVS2005ででた段階でもうこれ
以上望めんし)し、それ以上に他の要求を実現するために妥当な処置だと思う
けどな>JIT化
>>366 そうか。ま、2005のC#が出てから使ってみて考えるわ。
2003のC#はもっさりしてて、ちょっと大きなプログラムを組むと、ユーザーが
ストレスを感じる。CPUをダウングレードしたような感覚に襲われる。
それはプログラムがヘタれているからでは
2.0 で ToolStrip をフォームにはっつけただけで
起動速度が劇的に遅くなったよ
私の所ではそんなことないなぁ。
まあWinFormが全体に遅いのは事実だけど。
ToolStripはくそ
定説
まだ正式版じゃないのに酷いなあ
ArrayListが遅いなあ。これは常識ですか?
キューをArrayListで実装していた馬鹿がいた
LinkedList<T> が直感的に使いにくいのは何とかならんの?
Java のは ArrayList と同じ感覚で使えるのに
どの辺が?
お前の直感なぞしるか
LinkedList<T> も IList<T> を実装して欲しいなと思ったことはある
>>380 LinkedListがインデクサなんか実装したら、構造とか頭に入れてない
奴が使いまくって遅くなる可能性あり、というfail safe。ということで実装
するべきではないと思うが。
QueueとStackがあるからLinkedListなんて使う場面がほとんど無いと思う俺は浅はかですか
普通、先にLinkedLis作ってQueueとStackちがうのか
384 :
デフォルトの名無しさん:2005/08/25(木) 07:21:19
.NETってバージョンによって実行速度とかが違うのですか?
自分は学生の頃に買った初期のVS.NETアカデミックで開発しております。
VS.NET2005を購入しようか検討しているので教えて下さい。
385 :
デフォルトの名無しさん:2005/08/25(木) 07:53:28
MB作戦への参戦、臨時召集について
V.V.V. ------------- Vank V.s. Vipperからのお願い。
VIPPERは韓国政府公認のサイバーテロリストVANKと
「日本海呼称問題」を巡り、臨戦体制に入っております。
現在、VIPPERは連中のメールボムのような抗議メールを周到し、
山のような抗議メール(嫌がらせ)を送るために、
VANK関連サイトのメールアドレスを収集しております。
わずかな情報でも構いません、重複でも構いません。
調べて分かったものがあったら、どんどん情報を下さい。
http://yy16.kakiko.com/test/read.cgi/vippervsvanker/1124879949/ 御協力、お願い致します。
>>384 まあそりゃ多少差はあるだろうが。
それよりもライブラリの追加変更の方がよほど重要。
VS2005ベータを試してみれば。
.NET 2.0のパフォーマンスについては正式版がでてないんだから評価するのは意味無い。
387 :
デフォルトの名無しさん:2005/08/25(木) 11:41:59
ファイル名を指定して保存する機能を実現したいのですが、
入力したファイル名が正常(使えない文字を使っていないか)かをチェックする方法が分かりません。
どうすればファイル名のチェックを行えますか?
メソッドを探したけど見つかりませんでした。
>>387 フィールド定義されてるよ。
System.IO.Path.InvalidPathChars
389 :
デフォルトの名無しさん:2005/08/25(木) 11:57:10
390 :
387:2005/08/25(木) 12:04:52
private bool checkFileName(string filename)
{
char ch;
for(int i = 0; i < filename.Length; i++)
{
ch = Convert.ToChar(filename.Substring(i, 1));
for(int j = 0; j < Path.InvalidPathChars.GetLength(); j++)
{
if(ch == Path.InvalidPathChars[j])
{
return false;
}
}
}
return true;
}
こんな感じで使えば良いですかね?
>>390 String.IndexOfAny 使えば?
あと
: * ? \ / もチェックしなきゃなんないよ。
InvalidPathCharsには含まれないがファイル名には使えない。
//GetInvalidFileNameCharsには含まれる。
>>390 Cのstrspn()に相当する関数ってないのかな?
393 :
デフォルトの名無しさん:2005/08/25(木) 12:30:53
>>391 ありがとう御座います。
試してみます。
>>391 > //GetInvalidFileNameCharsには含まれる。
それは2.0では・・・?
コンパイルしたPGとmdbを一緒に組み込んで配布することってできる?
ファイルをいくつか読み込んで吐き出す際SQL使いたいんだけど
クライアントにアクセス入ってない場合動くのかな
>>396 Access入ってなくてもmdb操作できるよ。
398 :
396:2005/08/27(土) 02:49:46
>>397 ありがと
ウィザード使ってコネクション作ってソース見たら絶対パスで書いてあったんだけど
インストーラにして配布したら相対パスになる??
ぐぐってみたけど探し方が悪いのかそこらへん書いてる資料見つからない・・・
たしかならなかったような。
// 直接関係ないけど、mdb内のリンクテーブルとかも絶対パスなのよね。。。
400 :
396:2005/08/27(土) 09:50:45
あー、確かにリンクテーブルも絶対パスか(;´Д`)
pgの下位フォルダ読んで探しに行くようにしなきゃ駄目かな・・・
401 :
C ◆.6Hqkk7dyk :2005/08/27(土) 14:03:49
メニューに印刷機能を追加したいのですが、
C#での印刷機能の実現方法が分かりません。
できればプレビューとページ設定も追加したいのですが……
どうやればC#で印刷機能などを実現できますか?
印刷の対象はリッチテキストボックスです。
開発環境はVisualStudio.NET2002です。
403 :
C ◆.6Hqkk7dyk :2005/08/27(土) 14:27:46
ありがとうございます。
VC# 2005 Express Beta2で、複数のプロジェクトで共有したいソースファイル(*.cs)をコピーせずに共有するには
[既存の項目追加]で[リンクとして追加]を実行するしか方法がないのでしょうか?
リフレクションを使って特定クラスのinternalなコンストラクタを呼び出したいと考えています。
引数なしの場合はこんなコードでうまくいきました。
Activator.CreateInstance(typeof(Klass), true);
引数がある場合はこんな感じかなあ、と思ったのですが
typeof(Klass).InvokeMember(null, BindingFlags.CreateInstance | BindingFlags.NonPublic, null, null, new object[] { 100 });
例外が出てしまいます。
System.MissingMethodException: 型 'Klass' にコンストラクタが見つかりませんでした。
ご存知の方おられましたらご教示ください。
| BindingFlags.Instance
InvokeMemberよりも一旦GetConstructorでConstructorInfoを取得する方をお薦め。
>>405 BindingFlags.CreateInstance | BindingFlags.NonPublic | BindingFlags.Instance じゃね?
でも
>>406に同意。
>>406にも
> | BindingFlags.Instance
って書いてあったか。スマソ
>>406-408 回答ありがとうございます。
ひとまず BindingFlags.Instance を追加して動作することを確認しました。
ConstructorInfo についても試してみます。
質問です。
タイトルバーをドラッグしてウィンドウを移動している間は、処理を止める、
というような事をしたいのですが、タイトルバーを押下するのに対応するイベントは在るのでしょうか?
非クライアント領域に対する操作に関するイベントを探しているのですが、見つかりません。
WM_ENTERSIZEMOVEメッセージを処理するコールバックメソッドを用意しないとだめなのでしょうか?
VC#.net2003を使ってます。よろしくお願いします。
>>410 ウィンドウ移動はFormのMoveイベントで取れるよ。
>>411 いや、Moveイベントでは移動開始/終了判定がめんどくさい。
WM_ENTERSIZEMOVE / WM_EXITSIZEMOVEを自前で捕らえた方が楽かと。
メニュー上で右クリックを検知ってできませんよね?
できる
416 :
デフォルトの名無しさん:2005/08/29(月) 10:53:34
文字列が整数部何桁以内、小数部何桁以内の数値の形かどうか
("-12345.6789"とか、指数形式とかはムシ)判断したいのですが
double.TryParseや正規表現だと、書式は判断できるんですが
何桁以内か、というのを調べる方法が分かりません。
いまはとりあえず上記の書式チェックをした後ピリオドでSplit
して調べてますが、一発で出来る方法ってありますか?
一発?
正規表現で()を巧く使えばできるだろ
例えば整数部5桁以内、小数部4桁以内なら
[1-9][0-9]{0,4}\.[1-9][0-9]{0,3}
とすればできるはずだけど
>>418 0.0434とか拾えないぜ
あと必ず小数点が含まれているのかどうかとか、>416は条件を出し切れてないね
421 :
414:2005/08/29(月) 15:18:16
普通に、MouseDown MouseUpでできたが?
423 :
414:2005/08/29(月) 15:45:53
error CS0117: 'System.Windows.Forms.MenuItem' に 'MouseDown'
の定義がありません。
とでますが……
2.0使ってくれ。1.1環境は手元にねーから知らね。
2.0でもMenuItemにMouseDownイベントなんてないぞ。
ToolStripItemにはあるからそっちかね。
で、メニューってのはMainMenu? MenuItem?
MainMenu、つまりタイトルバーの下部分なら、フォームのWndProcで、WM_NCRBUTTONDOWN/UP/DBLCLKでwParamがHTMENUの時。
MenuItem、開いた後のメニューテーブルなら、同じくフォームのWndProcで、WM_MENURBUTTONUP辺りかな。
427 :
414:2005/08/29(月) 16:47:01
>>426 右クリックでクリックの場所とハンドル取得できました。
ありがとうございました
>>419 確かに・・・orz
[1-9][0-9]{0,4}(\.[0-9]{0.3}[1-9])?
これだとどうだろうか
>>428 それだと0.なんとかが拾えない。
整数部を([1-9][0-9]{0,4}|0)にしないと。
あと1.0という表現を認めるとなると小数部も変わってくるな。まあ[1-9]の代わりに,の後ろを1増やすだけだが。
>>431 それじゃ今2003を買うのはハズレということか?
2003を安く買うのもありかな?
433 :
デフォルトの名無しさん:2005/08/29(月) 19:34:58
リッチテキストボックスの内容を印刷する方法が分かりません。
ネットで検索とかしても分かりませんでした。
どうやれば印刷できるのですか?
435 :
デフォルトの名無しさん:2005/08/29(月) 19:54:26
HOWTOは読んでみたのですが、よく分からなかったのですよ
まだまだ初心者なもので・・・
436 :
デフォルトの名無しさん:2005/08/29(月) 20:46:05
おいおまいら、コンストラクタ内で例外を発生させるのってどう思うよ?
個人的には気持ち悪いのだが。
>>436 そこで例外投げないとクラスができてしまうわけだが。
クラスができちゃ駄目ー
>>437-438 コンストラクタの中で例外発生させても安全なの?
C++だと御法度だったよね。
>>440 俺もそう思ってなるべくやらないようにしてたが、
いかんせん、間違った引数渡されたおかげで
どうしても正常なクラスを作れない場合があるし。
それにMSのクラスの中にもコンストラクタから例外投げてるやつもいるし問題ないべ。
>>440 Managedのありがたさを全身で受け取れ。
>>440 C++でデストラクタでは例外投げちゃ駄目ってのは、よく聞く話。
コンストラクタで例外投げるのはC++、C#、Java共にOK。
>>440 最近はfunction-try-blockをちゃんとサポートしているコンパイラも増えてきているから、
ご法度と言うほどでもなくなっているように思う。
446 :
デフォルトの名無しさん:2005/08/29(月) 23:06:08
画像の縮小について、
Graphics.ScaleTransform(float, float) ;
で縮小した画像が、イメージが劣化して醜くなってしまいます。
Windowsのペイントで同じ比率(50%)に縮小てみたところ、
ScaleTransformで縮小したものよりはきれいでした。
できるだけ綺麗なまま縮小したいのですが、
分かる方いらっしゃいますか?
Grahpics.InterpolationMode
448 :
デフォルトの名無しさん:2005/08/29(月) 23:38:12
>>447 ありがとうございます。
とりあえず
grf.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
とやって、なんとか綺麗な画像を得られました。
Modeにも色々あるのですね。これから試してみます。
449 :
デフォルトの名無しさん:2005/08/30(火) 07:39:02
なあ、他人が書いたソースコード(ネットとか公開されてるやつ)をコピペして、
それをちょっと改造してプログラムを作った場合、
そのプログラムの著作権ってどうなるの?
アセンブリ情報のとこの著作権の欄に何て書こうか迷っているんだが
>>449 気にしてるときりがないがw
向こうが要求してるところを除いて、特に書く必要はないと思ふ。
ヘルプとかリドミとかに参考サイトとしてURL挙げとけば良いんじゃないかな。
9割方が他人のコードかのように読めちゃうんだけど
>>449 コピペの量によるんじゃないか、APIの使い方程度のサンプルだったら問題ないと思う。
オリジナル性が認められる内容の引用なら著作権が発生するからそのサイトの方針しだい。
フリーウェアやオプソならその配布ルールに従う。
余談だけど、以前ソフトの著作権の裁判でここが類似していると指摘したところがSDK/DDKの
サンプルともそっくりだったって話があったのを思い出した。
453 :
デフォルトの名無しさん:2005/08/30(火) 17:55:10
漢字入力を始めたときに飛んでくるWM_IME_STARTCOMPOSITIONなどを
監視して、以下のようなソフトを作りたいと思っています。
@ワード文書内において、
AIME入力、言い換えれば漢字入力を開始すると、
B入力された文字が確定されるまで、
C背景を薄いブルーにする、
というものです。
すでに私は、
ソリューションダイアログでWord.ObjectLibraryを参照するように設定することで、
@ワード文書に例えば文字列をinsertしたり、選択範囲を変更したりできるようになりました。
また、
自分のフォームに、テキストボックスから派生させたMyテキストボックスを
貼り付けて、そのMyテキストボックスに文字が入力されはじめたことを
ウィンドウメッセージとして取得できるようになりました。
具体的には、派生させたクラス(Myテキストボックス)のWndProcをOverrideして
m.MsgがWM_IME_STARTCOMPOSITIONかどうかを判定する機能を追加しました。
【質問】
しかしながら、Myテキストボックスでは「文字が入力されはじめたことを検知」する
機能を搭載することに成功したのですが、
ワード文書ではうまくいきません。とうかどうやるのかよくわかりません。
テキストボックスから、上記の機能を搭載したクラスを派生させるように、
例えば、Word.ApplicationやWord.Documentから派生クラスを用意して適宜同じように
WndProcをoverrideすればうまくいくでしょうか。
もっとも、Word.Applicationは、インターフェース型(?)ですが。
【質問2】
思いっきりすれ違いな予感もしますが、当方VisualC#2.0 beta2 , WindowsXPsp2,Word2000です。
よろしくお願いします。
同じ板の中でマルチポストとは良い度胸だ。
回答まで貰ってるのに。
XmlSerializerでUriクラスがシリアライズできないんですが、仕様ですか?
BinaryFormatterなどでは出来るんですが。
> System.InvalidOperationException: System.Uri
> に既定のパブリック コンストラクタが含まれていないため、シリアル化できません。
でもUriクラスをMSのサイトで見ると、[Serializable]とISerializableって書かれてるのに。。
仕様だよ。
理由は例外メッセージの通り。
>>456 そうですか。
仕方ないのでBinaryFormatterで我慢します。
レスサンクスコ!
Drawing.Color もXMLシリアライズできないのは不便だな
ColorTranslator.FromHtml使ってるわ
PictureBoxに表示されてる画像のクリック時に
別のフォームでオリジナルサイズ表示したいのですが
Form frm = new Form();
frm.Size = picture.Image.Size;
frm.BackgroundImage = picture.Image;
frm.ShowDialog();
と書いても落ちてしまうんですよね
すでに表示してる画像を別のフォームで表示しようとしてるのがいけないのでしょうか・・・
例外も書かずに、独り言かい?
>>461 失礼しました
例外はShowした先のフォームで出るのですが
'System.OutOfMemoryException' のハンドルされていない例外が system.windows.forms.dll で発生しました。
追加情報 : メモリが不足しています
です。
メモリは512ありますし、普通にフォームを開くことは可能なので、画像が原因じゃないのかなと思っています。
なにか情報ありませんでしょうか?
464 :
416:2005/08/31(水) 17:36:21
>>416の正規表現の話です。詳しく説明します。
・先頭に+または-、または符号なし。
・符号は桁数に入れない。
・整数部または小数部のどちらかだけ省略可能。
・余分にゼロが入っていてもよし。
・10進表記。指数とかはなし。
たとえば4桁3桁なら以下の表現はセーフにしたいです。
-.123 / -1234. / -1234.000 / -0000.123
>>429だと、なんか桁数チェックが利いてないみたいです。
[0-9]{0,4}だと"12345"でもマッチしてしまいます。
あと"7F"みたいなのがOKになってしまいます。
>>463 ありがとうございます
何がいけなかったのか良くわからないのですが
URLを参考に
Bitmap bmp = new Bitmap(picture.Image);
frm.Size = bmp.Size;
frm.BackgroundImage = bmp;
frm.ShowDialog();
で問題なく動きました
streamからpictureboxにimageをセットしてクローズしてたのですが
それが問題だったのでしょうか??
>>464 小数点は入らない可能性もあるんだよな?
この場合整数部を持ってるかどうかで小数部の判定を分けるしかなさげだなー。
@"^[+-]?(?:[0-9]{1,4}(\.[0-9]{0,4})?|\.[0-9]{1,4})$"
無駄に複雑バージョン
@"^[+-]?(?<int>[0-9]{1,4})?(?(int)(\.[0-9]{0,4})?|\.[0-9]{1,4})$"
IDE、というかMSDNのビューワーのことなんですが、どういう訳か
「.NET Framework クラス ライブラリ」のカテゴリ(検索結果のリストの「場所」の
列に「.NET Framework クラス ライブラリ」と表示されるグループ)のページが、
検索に一切引っかからなくなりました。
例えば、"form メンバ"で検索をかけると、以前はFormのメンバが乗っているページが
検索結果に出ていたのですが、これが出なくなりました。
もちろんフィルタ条件に(フィルタなし)を選択しても。
なにか解決法ご存知ないでしょうか?
MSDNのバージョンは2005 - Aprilです。
アンインストール/インストールは試しましたが変化なし。
ブラウザコントロールでアドレスのファイルを読みに行くんじゃなくて
stringの変数を直接読むことってできないかな??
ページを生成して、保存する前にプレビューとかで使おうと思うんだけど
そう言う場合は一旦about:blankにNavigateしてからDocument.writeを使うのが常道。
>>469 ありがと、できたよ
一回保存するよりも楽だね
private void BrowserReload(){
//ブラウザコントロールに文字列から直接プレビュー表示
_previewData = CreatePreviewData();//プレビュー用HTMLを生成
object url = "about:blank";
object o = null;
this._browser.Navigate("about:blank", ref o, ref o, ref o, ref o);
}
private void browser_DocumentComplete(object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e) {
((mshtml.IHTMLDocument2)browser.Document).write(_previewData);
}
あ
object url = "about:blank";
は必要ないな
それ系は結構サンプルあるから探してみるといいよ
473 :
デフォルトの名無しさん:2005/09/03(土) 05:07:43
aspで質問。
グリッドのチェックボックスの全解除、全選択をしたいのですが
javascriptでグリッドのチェックボックスを舐めていく方法ってどうしたらいいのですか?
普通にdocument,grid.チェックボックスじゃ参照できないのですが・・・
サーバ側じゃなくてクライアント側でやりたいのですが。、
HTMLでどう表現されるかを考えてみればすぐわかるでそ
つスレ違い
476 :
デフォルトの名無しさん:2005/09/03(土) 10:29:27
>>475 うぜー
スレ違いなんていわれて他で質問すると
マルチなんて言われる・・・
いや一言「どこそこで聞いたんですがスレ違いと言われたので」と断れば誰もマルチだなんて言うかよ
元スレにも移動したことと移動先を書けば何の問題も無し
>>473をよく読みなおせ。そしてここがなんのスレか考えろ。
ど う 見 て も ス レ 違 い だ
479 :
デフォルトの名無しさん:2005/09/03(土) 10:39:00
C#で書いたアプリってショボのでも平気で20MB程度のメモリを
使うのはなぜ?
「Excelでも10MB位なのに、なんか下手な作り方してない?」
なんて言われちゃいました・・・
「うるせーバーカお前にメモリの構造がわかるか!!」
って言っとけ
C#で20MBなんて少ないほうだよ。
Windows Forms使ってるとね。
「定期的に最小化してください」って言っとけ
482 :
デフォルトの名無しさん:2005/09/03(土) 10:42:40
C#を勉強したいと思っています。
Visual Studioの評価版って60日が過ぎても、再インストールすれば
もう1度使えるのですか??
>>479 仮想マシンの上に乗っかっているから。
一定量のメモリを OS から貰って VM を構築し、その上でソフトを動かしてる。
……って思ってたけど合ってるのかなコレ
>>482 素直に買え。もしくは無料版があるからそれ使え
484 :
デフォルトの名無しさん:2005/09/03(土) 11:02:28
>>483 無料版って評価版とどう違うの??
もしかして、試用期間がないの??
VSなんてのは金持ちの使うもんだ 貧乏人はSDKとエディタ使っとけ
ワレメ
487 :
デフォルトの名無しさん:2005/09/03(土) 11:08:18
C言語での
int a[4][4];
これってC#の場合はどうするの?
int[][] a = new int[4][4];
int[,] a = new int[4, 4];
int[][] a = new int[4][];
for (int i = 0; i < a.Length; i++)
a[i] = new int[4];
意味的には前者だがお薦めは後者だ。
>>490 (´・∀・`)ヘー
私は≠479だけど。
>>481 SetProcessWorkingSetSize を明に呼び出したほうがいいんじゃない(w
493 :
デフォルトの名無しさん:2005/09/03(土) 13:56:28
Visual Studio2003Spokeを使ったC♯の質問なんですが
プログラムをデバックするときにVSでは引数を指定できないのでしょうか?
.NetSDKについてくるDbgCLRではできたんですが・・・。
それとVSでクラスを作成してクラスだけでデバッグなどはできないのでしょうか?
変数に値を代入してデバッグなどをしたいのですが。
プロジェクトのプロパティに引数の項目あるだろ
後者は適当にMainメソッド書けば
495 :
デフォルトの名無しさん:2005/09/03(土) 14:27:39
ちょっと確認したいのですが
C#では、ほかの人が作ったdllを自分のアプリでプログラム部品として利用する際
[DllImport("aaaaa.dll")]
public static extern uint bbbbb(uint a, uint b);
こんな感じに記述するだけで、Dll使えるようになるんですよね。
aaaaa.libファイルがあるのですが、C#ではlibファイルの統合開発環境での登録の設定はしなくても大丈夫でしょうか。
aaaaa.hファイルもC++だったら使うけどC#ではいらいないという理解であってますでしょうか。
それがCで書かれたのならそうだな libは使えない hも使えない
497 :
495:2005/09/03(土) 14:35:16
>>496 回答ありがとうございます。
dllファイルと一緒に入ってたlibファイルとhファイルを何かに使わなければいけないような不安にかられたのですっきりしました。
ちなみにそのdllファイルはC++でかかれてます。
498 :
デフォルトの名無しさん:2005/09/04(日) 04:10:13
C#で書かれた商用アプリってある?
商用アプリの殆どがVC++で作られてる。
C#じゃ大したものできないのかな?
499 :
デフォルトの名無しさん:2005/09/04(日) 04:15:18
まぁ、C#は2005が出れば終焉必至
C++/CLIがデファクトスタンダード最有力
throw;
リファクタリング機能がVC#2005だけに搭載されて、VC++2005にはなぜ無い?
パッケージソフトを開発する言語に生産性は求められない
ソースネクストの携帯電話メモリ編集ソフトが.NET Frameworkを要求するという噂を聞いた。
うちは.NET系の受注が増えまくってるらしい。
>>505 それが普通だと思うが。今更、Javaってこともないのでは。
ありときりぎりす
.NETはまだ必須じゃないけど
必用になってから始めたら手遅れ
ま、メインはASP.NETてことだな。
@ITの会議室とかでもWinFormの質問:ASP.NETの質問=1:2位だし。
511 :
デフォルトの名無しさん:2005/09/04(日) 13:31:12
C言語の
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
説明
fread 関数は stream ポインタで指定されたストリームから nmemb 個のデータを読み込み、 ptr で与えられた場所に格納する。個々のデータは size バイトの長さを持つ。
ファイル位置指示子を読み込んだデータバイト分進める。
これと同じことをC#に書き換えたいのですが
データバイト分進めたり、nmemb個のデータを読み込むといったことは、なんというクラスのメソッドを使えば簡単にできるでしょうか。
StreamクラスのReadメソッド
ファイルならStreamから派生したFileStreamクラス
あるいはそれを元に作ったBinaryReaderオブジェクトの各種メソッド
そういえばReadInt32Arrayとかは無いな。不便を覚えたことはないが。
513 :
511:2005/09/04(日) 13:38:57
>>512 ありがとうございます。それらのメソッド使ってやってみます。
514 :
taka:2005/09/04(日) 15:21:37
VS.NET2003をインストールしたいんですが手元に
どのソフトがあればインストールできるかわかりますか?
VS.NET 2003があればインストールできるな
516 :
taka:2005/09/04(日) 15:37:00
僕が今もっているのは
VS.NET2003 Enterprise Dveloper,Disc1 Disc2
なんですけど他に必要なのってなんですか??
インストールできないんですよ…
3がないとワレれないよ。
518 :
taka:2005/09/04(日) 15:47:14
何枚必要なんですか?
6枚ってかスレ違い消えろ
520 :
511:2005/09/04(日) 15:56:10
今、
short[] ptr = new short[nmemb];
uint dwRead = 0;
while((dwRead = fread(ptr, sizeof(SHORT), nmemb, pFileIn)) > 0){}
ファイルから、sizeof(SHORT)バイトのデータnmemb個をptrに格納し、ファイルの終わりまで繰り返すという
C言語のコードをC#に書き直すということをやっているのですが、スマートなコードがかけなくて困っています。
C#で以下のように書き直しました。
FileStream fs = new FileStream("test.wav", FileMode.Open);
Binary br = new BinaryReader(fs);
br.ReadBytes(40); //40バイト飛ばす
while((ptr = br.ReadBytes(2)) > 0){}//short配列ptrに2バイトデータを格納の処理
このように書くと、>はshortとintを比べられない、byte[]をshort[]に変換できない。とエラーが出るし
nmemb個入れるという作業ができません。
521 :
続きです:2005/09/04(日) 15:56:42
while(nmemb > 0)
{
ptr = br.ReadBytes(2);
nmemb--;
}
このように書くと、nmemb個入れれますが、bute[]をshort[]に変換できないというエラーは相変わらずです。
shortは2バイトだから2バイト入れようと思えば入れれるだろうと考えたのですが、エラーが出ます。
どうにかCのコードのように、nmemb個をptrに入れることと、ファイルの終了を感知する式を同時にwhile()に入れられるような
スマートなC#の書き方があれば助言いただけるとうれしいです。
型というものをもっと意識しろと。
ReadInt16使えばいいじゃん。
523 :
511:2005/09/04(日) 16:11:43
>>522 アドバイスありがとうございます。
ちょうど2バイトずつ読み込める関数があるんですね。
ReadInt16を使って書き直してみます。
524 :
デフォルトの名無しさん:2005/09/04(日) 17:45:24
>>516 shareで
(アプリ) Microsoft VisualStudio.NET 2003 Professional 日本語版 CD6枚組.ccd+rr.rar
を拾えるぞ
2.7GB程度
俺も無論拾った。
あんなものに数万円はボッタ1確
通報しました(・∀・)
526 :
デフォルトの名無しさん:2005/09/04(日) 17:55:01
No way you can stop me!
業務で使ってるとしたらアフォだな
PictureBox1からPictureBox2へ
読み込んだ画像の一部を転送するプログラムをBitBltで作成しているのですが、
このとき転送先、転送元のハンドルの取得方法が分かりません。
教えてください。
Picturebox1.Handleとやってもダメでした。
ハンドルはハンドルでもデバイスコンテキストのハンドルだろ。
GraphicsつくってGetHdcすれ。ReleaseHdcも忘れずにな。
でもなんでGraphics.DrawImageじゃ駄目なんだ?
530 :
デフォルトの名無しさん:2005/09/04(日) 19:48:29
>>524 1確ってなんですか?
新手の2ちゃん語?
C#って、ANSIだISOだで標準化されないのかな?
MSのWindowsだけのための言語で、どうしても勉強する気になれん。
>>531 ECMA と JIS で標準化されてるハズ〜
某言語と違ってグローバルな言語だと主張したいのか、ECMA への登録は速かった
>>533 単に表示されないだけなのか何らかの例外は吐かないのか
Microsoft.mshtml.dllは対象のPCに入っているのか?
HTMLが表示しないってのはボタンを押したら左にスクロールバーが出るのですが
何も表示せず真っ白けなんです。
>>536 メインプログラムの方でtry-catchを付けてみても何も引っかからなかったんです。
mshtml.dllはSystem32に入っています。
試しに実行ファイルと同じフォルダに入れてみても結果は同じでした。
Microsoft.mshtml.dllでググれ。
それが原因だから。
>>538 バッチリその通りでした。
と言っても「C:\Program Files\SharpDevelop\bin」に入ってたんですけどね・・・。
実行ファイルと同じフォルダに入れたらちゃんと表示するようになりました。
ありがとうございました。
540 :
デフォルトの名無しさん:2005/09/04(日) 22:37:31
code projectから、C#のサンプルコードをダウンしたのですが
フォルダの中身は、C#(***.cs)のファイルいくつかと、Makeファイルと、Manifestファイルが入ってました。
プロジェクトもソリューションも入っていません。
こういった場合、Makeとかやったことないのですが、makeコマンドとかをいじったりすれば実行ファイルを作ることができる
ということでしょうか。
541 :
デフォルトの名無しさん:2005/09/04(日) 22:40:57
1ソリューションに7つのプロジェクトがあるんですが、
そのうちの一つのプロジェクトをビルドしようとすると
一々マウスでプロジェクトを右クリックしてビルドしか
ないの?
マジ使いづれー > VS
お前ら、クリック以外の作業は全部面倒なのか?
>>531 標準化はされているが、強くWindowsOSのアーキテクチャに依存している。
Windows以外のプラットフォームで満足に動かされたら、MSも商売上がったりだろ?
545 :
540:2005/09/04(日) 22:47:49
>>542 ありがとうございます。makeファイルとかでぐぐったけど。説明が長すぎて、結局どうしたらいいのかわからなかったんです。
>>544 別にC#はWindowsとはまるで無関係だろ?
.NETの実装とごっちゃにするのはいけない
.NETもWinFormのほか幾つかを除けばそれなりにプラットフォーム中立だしな
547 :
540:2005/09/04(日) 22:55:40
コマンドプロンプトから
nmake makefile.mak
と打ったのですが、
nmakeは、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。
と出てしまいます。
試しに
make makefile.mak
と打ってみましたが、同じ言葉が返ってきます。
何かmakeコマンドを設定する必要があるのでしょうか。
548 :
デフォルトの名無しさん:2005/09/04(日) 22:57:47
>>546 じゃあ、おまえはCとUNIXも無関係だと?
パスが通ってないだけちゃうんかと・・・・・・・
553 :
540:2005/09/04(日) 23:00:40
>>549-550 なるほど、パスが通ってないのですか。makeコマンドにパスが通るようにやってみます。
どうもありがとうございました。
どこにパスを通せばいいか聞いてくるに違いない
>>553 makeなんてないし。
とりあえずPCの中に nmake.exe があるか検索。
パスを通すと言うこと自体分かってなかったりして……まさかな
558 :
540:2005/09/04(日) 23:10:19
>>554 そのとおりかもです。「パスを通 make」で一生懸命ぐぐってました。
>>555 検索して発見しました。
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin
ここにありました。
>>556 そのとおりです。具具って見たら
特に問題なければC:\Windowsに入れてしまえばよいですが、
AUTOEXEC.BATに
SET PATH="%PATH%";"フォルダ名"
という行を追加すれば任意のフォルダにパスを通すことができます。
と書いてあるので、この方法でやってみます。
どうも皆さんアドバイスありがとうございます。助かりました。
MSBuild.exe は結構便利だと思った
>>558 autoexec.bat ってことは Win9x か?
NT系では別方法だぞ
Win9xではVSもSDKも入れられない罠
パスの次に、LIB、INCLUDE他必要な環境変数を聞いてくるに違いない。
564 :
540:2005/09/04(日) 23:17:27
>>560 OSはXPです。ということはパスの通し方の別方法なのですね。
今日はもう遅いので明日ぐぐって調べることにします。
>>562 何かほかにまだ設定しないとmakeできないのですか。面倒ですね。
まあ、とりあえず、明日やってみて、できなかったらまた考えるということで今日はもう眠ります。
どうも皆さんアドバイスありがとうございました。
つか普通にスタートメニュー>全てのプログラムの中のどっかにVisualStudio .NETコマンドプロンプトがあるだろ、と言う件
>>563 usoiuna
dokodewakarunosa?
XXXなんてディレクトリ作っている時点で変な奴だな
D:\XXX\works\Visual C# .net\WindowsApplication2\
>>533じゃないけど普通ソースを配布するときはどのファイルを付ければいいの?
例えばフォームが一つだけのアプリだったらそのフォームのCSファイルだけで良いのかな
VSでやってるんだったらそのソリューションのフォルダまるごと
コマンドラインでやるなら.resxを一旦resgenして/resに含めるとかしないといかんし
570 :
デフォルトの名無しさん:2005/09/05(月) 15:46:29
asp.netでajax.netを使ってるんだけど、
ajaxで動的にコンボボックスを生成した後に
asp.netのボタンクリックなどのイベントハンドラが発動すると、
ajaxで変更した部分が初期状態(コンボボックスを生成する前)に戻っちゃうんだけど、
何か回避策ありませんか・・・?
>>569 レスありがとうございます。
VSを使っているのですが、
>>533みたいな添付の仕方で良いんですね。
って事は
>>567みたいにディレクトリが知られてしまうのは仕方がないって事ですか・・・。
>>571 ソリューションファイルがあるところに隠しファイルがある
その隠しファイルには検索履歴とかも保存されているんで
消しておくのが吉
573 :
デフォルトの名無しさん:2005/09/05(月) 17:51:15
C#で簡単な暗号化ソフトを作りたいのですが、
暗号化するためのメソッドとかはデフォで用意されてませんか?
APIとかでもOKです
574 :
573:2005/09/05(月) 17:53:44
途中で送信してしまったので……
以下続き
暗号化する対象は様々な種類のファイルです
バイト単位(或いはビット単位)で暗号化したいです
アセンブリとして公開されているものでも構いません
基本的に文系なので自分で暗号方式を考えるのは不可能に近いです
なので既存のものを部分的に利用したいと考えています
>>571 *.suoファイルを消しとけばいいのでしょうか。
で、
>>533はそれも添付してしまったからディレクトリが分かってしまったと言うことですね。
System.Security.Cryptography 名前空間
577 :
デフォルトの名無しさん:2005/09/05(月) 19:30:10
578 :
デフォルトの名無しさん:2005/09/05(月) 19:40:15
あのさ、ふと思ったんだけどさ、
標準ライブラリとかでキー指定して暗号化するじゃん
これってさ、何かあったときのためにさ、
すぐに復号してしまえるような仕組みが組み込まれてないか不安になるんだよね
まあ、暗号化した後にXORで一部ビット反転とか簡単な暗号化をやってしまえば良いんだけどさ
何かあった時って何よw
そのレベルで心配するのならプロプライエタリなもんは使えないことになるぜ
580 :
デフォルトの名無しさん:2005/09/05(月) 19:47:24
>>578 チラシの裏にでもかいてろカス
.NETのプログラムは逆コンパイルできるしそもそも.NETの標準ライブラリは
ただのWIN32APIのラッパーだから暗号ならcrypt.dllあたりを逆汗すればいいだけ
581 :
デフォルトの名無しさん:2005/09/05(月) 19:49:16
>>579 何かあった時ってのはだな、
犯罪の証拠となるファイルとかそういうのを犯人が暗号化してさ、
それでキーを忘れたとか言って煙に巻こうとするような時だよ
582 :
デフォルトの名無しさん:2005/09/05(月) 19:55:22
絶対に自分しか復号できない暗号化方式って無いかな?
将来のスーパーコンピュータでの力ずくの復号とかは考えずに
584 :
デフォルトの名無しさん:2005/09/05(月) 20:14:31
日々の胸中を本音で書いた秘密の日記ファイルとかさ、
そういったのは確実に暗号化して隠したいよな
>>582 復号の仕方を知っているのが自分だけという状況にする。(公開鍵暗号方式の基本だが)
ファイルを読み込むプログラムを配布するようだとそもそも無理ぽ。
586 :
デフォルトの名無しさん:2005/09/05(月) 20:18:32
>>585 プログラムは非公開
ってか、キー値さえばれなきゃ大丈夫なんじゃないの?
>>586 まあ世の中に絶対は無いので、絶対とは言わんが。
あとは処理速度と強度のバランスを調整しつつ実装すればよかろ。
取りあえずそこらの奴が考えた非公開アルゴリズムよりは公開・利用されているアルゴリズム使った方が安全度は高いと思う今日この頃
589 :
デフォルトの名無しさん:2005/09/05(月) 20:31:17
>>588 確かにそうだな
多くのエンジニアの目に触れる訳だからな
ヘタなものは出さないだろ
現在C#でWebサービスを作成しはじめたのですが
公開したメソッドにアクセスしたクライアントのIPアドレスをログとして残そうと思っています
Webサービス側でクライアントのIPアドレスを取得するにはどのプロパティ?メソッドを
使えばすれば良いのでしょうか?
592 :
デフォルトの名無しさん:2005/09/05(月) 20:55:38
.NETで作ったアプリは逆コンパイルができるそうですが
ということは、C#でシェアウェアのアプリを作るというのはそもそも向いてないということなのでしょうか。
593 :
デフォルトの名無しさん:2005/09/05(月) 21:05:44
そういう質問する奴には向いてないのでしょう
>>592 難読化ツールを使っておくと、複雑なものほどネイティブの逆汗よりも面倒になる。
595 :
592:2005/09/05(月) 21:16:04
クラスウィザードでクラスを追加しようとすると
「エラーを特定できません」というダイアログが出て、
それを閉じるとクラスウィザードが終了するようになった。
ほかのプロジェクトに切り替えても変わらず。
「既存項目の追加」で追加することは可能。
こういう症状の出たことある人っている?
環境はVC#2003, XP Pro SP2。
国家機密とか価値の高い企業秘密とかじゃなければ
たとえ簡単な暗号化しかしてなくても
「暗号化してあります」と書いておくだけでも十分有効
598 :
590:2005/09/05(月) 21:24:04
599 :
デフォルトの名無しさん:2005/09/06(火) 00:17:44
シェアで公開できるようなアプリはC#で作ることは不可能。
結局VC+++MFCしかないと思う
↑
くだなねー突っ込みがきそうw
throw;
602 :
デフォルトの名無しさん:2005/09/06(火) 01:52:19
C++/CLIでC#はお役ご免になりそうな勢いですよね
せっかく勉強したのにちょっと残念
throw;
「MSはC++を見捨ててません!」って宣伝してなかったか?
もう過去の資産扱いだと思うんだが
ネイティブAPI直接呼び出しとかメモリ管理つかえんとC++使う甲斐がないよな
マネージドC++って使われてんのかな?
607 :
デフォルトの名無しさん:2005/09/06(火) 11:12:14
test.wavの.wavを削除したいのですが
"test.wav".TrimEnd(".wav");
としたいのですが、引数はcharの配列でないとだめみたいでうまく.wavを削除できません。
後ろから4文字削除したいのですがどのように記述すればできるでしょうか。
String.SubstringとかRegex.Replaceとか
609 :
607:2005/09/06(火) 11:18:47
>>608 String.Replace("oldword", "newword");
でできました。
どうもありがとうございました。
test.wav.gz とかはどうするんだろう
.wavを取り除きたいのか、後ろの4文字を取り除きたいのか、拡張子を取り除きたいのか
.emacs とかはどうなっちゃうんだろう
なんでわざわざ敢えて608で出さなかったものを使うんだろうw
614 :
607:2005/09/06(火) 12:48:46
>>610 アプリの処理の流れ上、test.wav.gz というファイルは処理しないようになってるので大丈夫です。
>>611 拡張子を取り除きたいです。
ただこの場合、.wavしかありえないので、String.Replaceで十分満たせます。
>>613 "test.wav". と.を押してみたら、Replaceが出てきたので、これも使えるなと思い。
使ってみました。
test.wav.wavなんて名前でも普通に存在しうるんだが
616 :
607:2005/09/06(火) 13:16:30
>>615 もっともなご指摘ありがとうございます。
そのようなファイル名をつけようと思えばつけれますね。
そういった名前のファイルだと、String.Replaceでは対応しきれませんね。
やっぱり末尾から4文字削除するというのが一番汎用性がありそうですね。
末尾から4文字取り除くのにぴったりのメソッドとかないでしょうか。
617 :
607:2005/09/06(火) 13:23:18
"test.wav".Remove("test.wav".Length - 4, 4)
で末尾から4文字削除できました。
皆さんアドバイスどうもありがとうございました。
>>616 System.IO.Path.GetFileNameWithoutExtension
うがっ。。。
621 :
607:2005/09/06(火) 13:29:43
>>618 これが一番どの拡張子にも対応できて汎用性がありますね。
便利なメソッドを教えていただいてどうもありがとうございます。
>>619 String.SubstringやRegex.Replaceとかもいじれば同じような処理ができるようですね。
案外いろんなメソッドで実現できることだったのですね。
これらのメソッドも参考にします。
Pathクラスは便利なんだからもっと使ってやろうぜ。
BitArrayクラスは使い所が分からないぜ
test.wav.wav.wav.wavとかだったらどうすんの?
何を言いたいの?
そんな名前つける奴が悪い
拡張子を削除したいならもう結論は出てるから、
そんな例を出しても無意味
C#で簡単なゲームを作りたいのですが、参考になるゲームの
ソースコードが公開されているHPがありましたら教えて下さい。
素晴らしく抽象的だな
ソースは抽象的なほど良い
質問は具体的なほど良い。
634 :
デフォルトの名無しさん:2005/09/06(火) 19:37:24
ADO.NET(System.Data.SqlClient)でレコードを追加するとき、
キーがダブっているとSqlExceptionが出るのでcatchするのですが、
この例外がPK違反かどうかというのはどこを見ればよいんでしょう?
Number? ErrorsのいずれかのNumber? それ以外?
Numberだとしたら、何番が何とか言うのはまさかcatch内で定数
べた打ち判断ですか?
PK違反だったらキーを付け直してリトライしたいです。
635 :
デフォルトの名無しさん:2005/09/06(火) 19:42:10
Numberでヘルプ見たらmaster.dbo.sysmessages の値だと
書いてありました。これって不変なんでしょうか。
SqlClientつーことは少なくともSQL Server限定やね。
俺が以前実装したときはNumberが2601か2627の時はユニーク制約違反と
みなすようなベタなコーディングをした。
特にお勧めはしないが。気になるならまあ具体的な数値は設定ファイルか何かで
持っておけば。
ユニーク制約違反かどうかを知りたいアプリ的に知りたいケースって
多いのに、一般的で移植性の高い方法は無いんだよな。
私もADO.NETでOleDbを使ってるんだけど
OleDbException捕まえてErrorCodeでベタうち
なんか良い方法があれば良いんだけどね
SQL Server限定ならともかくOLEDBではどうしようもないんじゃないか流石に
639 :
デフォルトの名無しさん:2005/09/06(火) 20:16:25
C#の配列は最大どのくらいのサイズまで可能ですか?
つまり、
byte[] b = new byte[*];
で、 * の場所に入れれる最大数は何ですか?
1億は可能ですか?
メモリが許す限り
一応の制限として2GB前後でなんかの壁があったような気がする
LongLength があるから、long まで OK のはず
つまり 9223372036854775808 まで OK
多分、その前に OutOfMemoryException 出るけど
ごめん。long の最大値が 1 大きかった
longまでOKだろうけど、IndexOfとかはintを返すよなぁ……
644 :
デフォルトの名無しさん:2005/09/06(火) 20:29:53
確認したら死ぬほど違ってたよ
new byte[] の [] 内に入る値は int みたいだ
MSIL的には、配列型はnatual int == アンマネージドポインタ のサイズでやりとりするようだから、プラットフォームに因るようだが。
System.Arrayの制限としてはInt32.MaxValueが上限っぽいねー。
>>645 longの値も普通に入るみたいだけど。
手元のメモリではint.MaxValue/3くらいまでが限界でしたが。
>>641 2次元配列とかにしたらintでもLongLengthが必要になる状況が起こりうる気がする。
648 :
デフォルトの名無しさん:2005/09/07(水) 09:34:12
>>636 やっぱり数字で判断ですか。SQL Server限定なので
その数字参考にします。さんくす
>>647 new byte[3000000000L]; だと OverflowException 出たのよ
651 :
デフォルトの名無しさん:2005/09/07(水) 14:02:09
静的コンストラクタっていつ呼ばれるんでしょうか。
ヘルプには必要になったらすぐに呼ばれるようなことが書いてありますが
下のクラスのFooを呼んでもNameを呼んでもコンストラクタが
呼ばれません。
あとこれとは別に、静的コンストラクタを含むクラスを継承したら、
派生クラスの静的メンバを呼んでるのに基底クラスの静的
コンストラクタしか呼ばれなかったりしています。
public class ClassA
{
static ClassA()
{
Debug.WriteLine("ClassA()");
}
public static string Name
{
get
{
return "ClassA";
}
}
public static void Foo()
{
Debug.WriteLine("Foo()");
}
}
>>651 > 静的コンストラクタっていつ呼ばれるんでしょうか。
そのクラスが初めて使われるとき。
> 下のクラスのFooを呼んでもNameを呼んでもコンストラクタが呼ばれません。
呼ばれてるよ?
> あとこれとは別に、静的コンストラクタを含むクラスを継承したら、
> 派生クラスの静的メンバを呼んでるのに基底クラスの静的
> コンストラクタしか呼ばれなかったりしています。
呼んでるのは基底クラスの静的メンバであって派生クラスとは何の関係もないから。
//個人的には"派生クラス.基底クラスの静的メンバ"って表記は分かりにくいので使いたくない。
653 :
デフォルトの名無しさん:2005/09/07(水) 15:09:31
>>652 >呼ばれてるよ?
呼ばれてました。勘違いですスマソ
なんかステップ実行してもとまってくれないみたいで。
>何の関係もないから
ああ つまりたとえばClassAを継承してClassBを作ったとして
ClassB.Foo()って書いても、実行するのはClassA.Foo()だから
ClassBのメンバを参照したことにならないと。なろふど。。。
同じ名前のnewを作って委譲みたいなことしないとだめか。
ちょっと設計みなおしますorz
>>653 > 同じ名前のnewを作って委譲
隠蔽な。
つか静的コンストラクタの呼ばれ方に依存するコードってどんなんだ?
>>648 スレ違いなレスだが俺はINSERTの前はCOUNTで確認取る。
どの言語でもこれが普通だと思ってるが。
面倒かもしれんが、catchに色々書くぐらいなら同じじゃない?
まあCOUNTからINSERTの間に割り込まれる可能性はあるんだけど、それはエラーとして扱ってる。
そういうタイミングが頻繁に起こりえるシステムなら間違ってるけどね。
656 :
デフォルトの名無しさん:2005/09/07(水) 20:58:36
ファイル圧縮/解凍用のライブラリってどこかにありませんか?
圧縮形式はZIPでも何でも結構です
今、自分専用のツールを作りながらC#の勉強をしているので
657 :
デフォルトの名無しさん:2005/09/07(水) 21:04:32
探せよ
だいたいNativeCLRでの解凍ツールは少ないというか遅くて意味がない
zlibと7zipのホームページにそれぞれdllラッパーした.NET用のライブラリがある
gzipとあとなんかのストリームが標準で付いてるね
659 :
デフォルトの名無しさん:2005/09/07(水) 21:08:13
遅レスだけど、秘密日記の暗号化ならまず破られないよ。
自作するかどっかから拾ってきたランダム関数使って、ランダムシードをkeyにxor。
暗号化されたファイルは乱数列にしか見えないし、
暗号複合プログラムはどっかのフォルダに隠蔽すればいい。
マネージコードからアンマネージDLLの呼び出しに関する質問です。
アンマネージDLLにコールバック関数を指定する関数があって、
マネージコードからその関数にデリゲートを渡しているのですが、
初回だけデリゲートが呼ばれて、その後まったく呼ばれなくて困っています。
アンマネージDLL(ソースコード無し)を使ったWin32のサンプルコードは完全に動作しています。
ソースコードはだいたい以下のような感じです。
マネージコードからアンマネージDLLを呼び出すとアンマネージDLLでスレッドが起動できないとか、
なにか特別なルールがあるのでしょうか?アドバイスお願いします。
public delegate void CallBack();
[DllImport("CallBack.dll")]
public static extern void SetCallBack(CallBack cb);
-------------
public void Main()
{
CallBack cb = new CallBack(call_back);
SetCallBack(cb);
while (true)
{
Thread.Sleep(100);
}
}
public static void call_back()
{
DoSomething();
}
662 :
デフォルトの名無しさん:2005/09/07(水) 23:27:32
ウィンドウをフローティングさせる機能を実現するためにはどのようにすればいいのでしょうか?
(OpenJaneのアンカー’>>’ポップアップ機能みたいな)
Formを作ってポップアップウィンドウを表示させると、ポップアップウィンドウのほうに
フォーカスが移ってしまうのですが
どなたか実現方法をご存知の方いませんか?
例 メインフォーム上のLinkLabel llにカーソルがいったときにポップアップするようなコード
LinkLabel ll = new LinkLabel();
ll.MouseHover += new EventHandler(ll_MouseHover);
//
private void ll_MouseHover(object sender, EventArgs e){
FloatingForm ff = new FloatingForm();//< NoBorderなポップアップ用の自作継承Form
ff.Location = MousePosition;
ff.Show();
//この時点でメインフォームのフォーカスがポップアップウィンドウに行ってしまい、タイトルが薄い青に
}
>>661 GCのせい。
アンマネージドにデリゲートオブジェクトの参照を渡そうとしても、
参照じゃなくてデリゲートオブジェクトがマーシャリングされた関数ポインタとして渡される。
だからGCは、スコープを抜けた時点でもうそのデリゲートオブジェクトへの参照がないと判断してデリゲートオブジェクトを破棄しちゃうって訳。
フィールドとしてデリゲートオブジェクトを持っておけば、
その保持クラスのインスタンスが破棄されるまで(staticならアプリケーションの終了まで)破棄されることはない。
665 :
662:2005/09/07(水) 23:43:50
即レス感謝です。とんでもなく早いですね
この程度でWin32APIを使わないといけないのか(´・ω・`)
>>654 1つ目のクラスのstaticコンストラクタから呼び出してるクラスがstaticコンストラクタで1つ目のクラスを呼ぶ場合とか。
>>663 MSDNでコールバック関数にデリゲートを渡しているサンプルとかでも考慮されてないんだけど、
GCが通常のオブジェクト同様にデリゲートのメモリ位置の再配置をやらないのか不安になります。
デリゲートのメモリ再配置は行なわないみたいな仕様があるのでしょうか?
668 :
デフォルトの名無しさん:2005/09/08(木) 13:22:40
http://msdn.microsoft.com/windowsmedia/downloads/default.aspx ここから、Windows Media Encoder 9 Series SDK をダウンしてインストールしたのですが
コードに、using WMEncoderLib; を記述すると
型または名前空間名 'WMEncoderLib' が見つかりませんでした。ディレクティブを使うかアセンブリ参照を使ってください。
とエラーが出るので、参照の追加から、それらしきものを追加したのですが、どれもはずれでした。
ちなみに追加してみたのは以下のものです
Windows Media Player Compatibility Layer
Windows Media Player
Windows Media Player Launcher
Windows Media Streamer Plugin Type Library
調べてみると、コンポーネント名が、Windows Media Encoder object library
のものを追加すればいいのだと思うのですが、どこにもないので
どうも参照の追加の一覧に載ってないのではと思うのですが、こういった場合どうすればいいのでしょうか。
>>668 とりあえずローカルにWMEncoderLib.dllがあるか検索。
670 :
デフォルトの名無しさん:2005/09/08(木) 13:58:19
>>669 アドバイスありがとうございます。
検索はしたんです。
で、WMEncoderLib.dllを2つ発見しました。正しくはinterrop.WMEncoderLib.dllでした。
C:\WMSDK\WMEncSDK9\samples\C#\remadmin\WMEWebSvc\bin の中と
C:\WMSDK\WMEncSDK9\samples\Vb\Batcher の中です。
発見したinterrop.WMEncoderLib.dllを、開発中のアプリのDebugフォルダにほうりこみましたが
型または名前空間名 'WMEncoderLib' が見つかりませんでした。ディレクティブを使うかアセンブリ参照を使ってください。
とエラーがでます。
ためしに、using interrop.WMEncoderLib; にしてみましたが結果は同じでした。
どのようにしたらこのdllを使えるようになるんでしょうか。
MSDNを見ると
using WMEncoderLib;
using WMPREVIEWLib;
using WMDEVICECONTROLLib;
この3つを一緒にプロジェクトへ追加せ〜
とあるけど…どうなんでしょ(横レス、スマソ)
672 :
668:2005/09/08(木) 14:23:28
label名を連番にしていて
ラベルへの文字列代入させていきたいのですが
label名 + 連番用変数 .Text = "文字列";
のような処理はできないのできませんか?
よろしくおねがいします。
>>673 reflection
番号どおりに配列にでもぶっこんどくのが楽だろうけど
>>668 WMEncoderLib.dllじゃなかった、スマソ。
using WMEncoderLib; に相当するものは、
Windows Media Encoder (wmenc.exe)
using WMPREVIEWLib; に相当するものは、
Windows Media Encoder Preview Control (wmprevu.dll)
677 :
668:2005/09/08(木) 14:50:09
>>676 情報ありがとうございます。
さっそくwmenc.exeを探したところ、何も見つかりませんでした。
これは結局、Windows Media Encoder 9 Series SDK じゃなくて別のSDKをダウンしなければいけなかったのでしょうか。
名前からしてずばりWindows Media Encoder 9 Series SDKだと思ったのですが。
>>677 wmenc.exeはSDKじゃない只のWindows Media Encdoer、それを入れる。
679 :
668:2005/09/08(木) 15:02:51
>>678 ありがとうございます(T T) やってみます。
680 :
673:2005/09/08(木) 15:15:34
ありがとうございます。
ちょっとやってみたのですが
"label"+"連番変数".Text = "line";
のように処理するとstringにTextの定義がありません。
とエラーがでます。
reflectionについてもちょっと調べたのですが
少し難しくてまだ理解できてません。
どのように処理するのが正しいのでしょうか?
しょぼい質問で申し訳ありません。
681 :
668:2005/09/08(木) 15:46:17
>>678 WMEncoderをダウンしてインストールしたところ
参照の追加の一覧に
Windows Media Encoder が現れました。
それを追加したところエラーはなくなりビルドできました。
どうもありがとうございました。
>>673 Label[] lab = new Label[3];
lab[0] = label1;
lab[1] = label2;
lab[2] = label3;
for (int i = 0; i < lab.Length -1; i++)
{
lab[i].Text = i.ToString();
}
684 :
デフォルトの名無しさん:2005/09/08(木) 16:48:33
フォルダごと複数ファイルを読み込むにはどうしたら良いでしょうか?
Lhacaみたいな圧縮ソフトを作りたいので
子コントロールを名前で見つけるメソッドがあってもいいのにね
>>684 普通にDirectory.GetFilesとか使えばいじゃん
687 :
673:2005/09/08(木) 17:21:15
>>687 Control.NameはVisual Studioのデザイナーは自動でNameプロパティに
フィールド名を入れてるがあれは規定値は空文字列のプロパティで
必ずしもフィールド名が入ってるわけじゃないので頼らないほうがいい。
じゃんぬめっとはクソ
おまえは?
691 :
デフォルトの名無しさん:2005/09/08(木) 21:59:58
2005発売後C++/CLIよりC#を使うメリットはあるかな?
throw;
693 :
デフォルトの名無しさん:2005/09/08(木) 22:30:20
asp.net webアプリケーションに初挑戦なんですが、
WebForm1.aspx から、WebForm2.aspxを呼び出すにはどうしたらいいんでしょうか?
Transferを試してみましたが、URLがWebForm1.aspxのままで同一ブラウザ内で
開いてしまいました。
別ブラウザで開かせることはできないのでしょうか?
まずHTMLを勉強してね
>>691 まあ、C# の方が必要なものだけ機能しぼられてて綺麗し。
>>693 たとえばformタグのtarget属性追加。
次は遷移について学習。
697 :
デフォルトの名無しさん:2005/09/08(木) 23:17:43
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("WebForm2.aspx");
}
見たいな感じで、同様に、プログラム中で新しいブラウザで表示させるようなものは無いのでしょうか?
だからHTMLの勉強をしろって。
699 :
デフォルトの名無しさん:2005/09/09(金) 00:10:18
すいません。。本当にhtml勉強したら出来ました。。。。
ありがとうございました^^
いいってことよ
701 :
デフォルトの名無しさん:2005/09/09(金) 14:36:01
SqlCommandにParameterを作ってDataAdapterでFillして
エラーが出たとき、どうやらSQLが原因だとします。
Fill中のイベントでCommandTextを見ると、パラメータ部分がパラメータ名の
ままなのでですが、ここにそのときの具体的な値が入った状態の
完成したSQL文字列って、どこかで取得できませんでしょうか。
702 :
デフォルトの名無しさん:2005/09/09(金) 15:55:48
code project でダウンしたコードが不思議な構造しているので質問します。
Form1.vb があり、VBで書かれています。
そのForm1.vbから、
Dim a As Aclass
Dim b As Bclass
a = New A()
b = New B()
といった具合に、クラスをインスタンス化して使うわけですが、なんとクラスaはC#で書かれており
クラスbはC++で書かれています。
Form1.bと、 a.csと、b.cpp、1つのソリューションの中にそれぞれ別プロジェクトとして入っていて
ちゃんとビルドできるし、ビルドできたアプリはきちんと動作しました。
こんな書き方できるのでしょうか。
Form1はvbで書くとして、クラスはプロジェクトが別なら別の言語で記述しても大丈夫ということでしょうか。
更に、それが可能だとします。可能だった場合
Form1をC#、クラスAをcppでといったことも可能でしょうか。
703 :
デフォルトの名無しさん:2005/09/09(金) 15:59:45
可能。なんでかっつーと、別プロジェクトということは、ソースコードは参照してないんだよ。
コンパイル済みのアセンブリを参照してる。アセンブリってことは言語は関係ない。
704 :
702:2005/09/09(金) 16:02:33
>>703 回答どうもありがとうございます。
できるんですか。最初見たときは驚愕でした。
なるほどコードじゃなくてアセンブリを参照なのですか。納得。
アセンブリなためどの言語でも関係ないとなると
Form1をC#、クラスAをcppでといったことも可能ですね。
>>704 そりゃ、それが .NET Framework の理念だから。
C# で書いたクラスAの派生クラスBをC++で書いて、そのBをVBで使ったりも出来るよ。
706 :
702:2005/09/09(金) 16:18:25
>>705 書いたクラスをいろんな言語で使いまわせるんですね。
言語乗り換えたときなんかに便利ですね。
これができるんならひとつの言語に執着しなくても気軽に別の言語も使ってみたくなります。
どうもありがとう。
707 :
デフォルトの名無しさん:2005/09/09(金) 16:20:49
708 :
702:2005/09/09(金) 16:50:02
>>707 詳しい解説サイトを教えてくださってありがとうございます。
読んでみて実際やってみようと思います。
2.0だと同一プロジェクトのソースでも使いまわし可能だとか。
質問させてください。
自分が作ったクラスをXML形式に(XMLシリアライズ?)して
そのままオラクルにCLOB型で入れたいのですがやり方がわからずに困っています。。。
どなたか教えてください。
byte配列にshift-jisエンコードの文字列が入っています。
その配列から部分文字列(開始位置と文字数はバイト数指定)を取り出しstringに変換したいのですが、
みなさんならどうやってやりますか?
BinaryReaderのReadChars(int count)を使ってみたところ、
shift-jisの文字幅でポインタが進められてしまって、うまく取得できません。
よろしくお願いします。
>>710 で、その流れのどの部分が分からないの?
キーワードはそれなりに揃ってるようだけど?
715 :
596:2005/09/09(金) 19:49:09
こういうケースってあまりないのかな。
検索してもあまり引っかかってこない。
何か手がかりを知ってる人がいたらよろしくです。
まあぶっちゃけわざわざウィザード使うより手で書いた方が早いし……
717 :
デフォルトの名無しさん:2005/09/09(金) 20:34:19
テキストボックスかリッチテキストボックスで、
縦書きにすることってできませんか?
VC6だったら再インストール勧めるんだけどな。
.NET半日かかるし。
719 :
710:2005/09/09(金) 20:53:48
>>713 レスありがとうございます!
まず自作のクラスをXML形式に変換したいのですが
XMLシリアライズのようにファイルに書き出すことなく
オラクルに格納する方法がわからないんです。
XMLシリアライザはファイルに書き出しているんじゃなくてストリームに書き出しているだろ
721 :
596:2005/09/09(金) 21:14:32
>>716 それもそうだが、ファイル作って名前つけて
(最低限だが)クラス定義のコードも書いてくれて、と
便利だったんだよ。
でも楽をしすぎるのもいかんか。
>>718 OS入れる方がまだ時間かからないからなあ。
.NET Frameworkのインストールで手間取るのかな。
必須のことでもないしあきらめるよ。ありがとう。
723 :
デフォルトの名無しさん:2005/09/09(金) 23:17:38
リッチテキストボックスのコンテキストメニューを
簡単にテキストボックスのデフォルトメニューにすることはできませんか?
地道に実装するしかないのでしょうか?
リッチテキストボックスをテキストボックスとして使えばよい
725 :
710:2005/09/09(金) 23:28:40
>>720 ストリームですか・・・それをどうオラクルに書き出せば良いのか分らないです orz
726 :
押忍、オラ狂う!:2005/09/09(金) 23:55:18
男ならテキストエディタ+コマンドラインコンパイル。
・・・2005が出たらさすがに買います。 つд`)モウチョットヤスクシテクレ
Expressは5000円くらいの予定じゃなかったっけ
でもExpressってオリジナルのコントロール使ったり(参照)出来ないんでしょ
前に誰かそんなこと言ってなかったっけ?
>>728 うむ。2005は割と良心的な値段設定になってるとおもた。
Team Systemなんかは逆の方向に吹っ切れてるけどなw
普通にRichTextBoxをフォームに貼り付けて使ったらコンテキストメニューがでないのでは?
732 :
デフォルトの名無しさん:2005/09/10(土) 02:55:38
どうせ、すぐにshareで公開されるから
買ったらアフォ
>>729 使えないのではなく作れない。
というか、単にウィザードが用意されてないだけだから
技量のある人なら作れるのかもしれないが俺は知らん。
734 :
デフォルトの名無しさん:2005/09/10(土) 09:26:11
C#のウィンドウズアプリから、LinuxのPostgreSQLに接続するにはどんな方法があるのか教えてください。
ググった感じだと、
インターウィズのPostgreSQL ODBC Driver 日本語版をつかってODBC接続?
monoのnpgsqlを使ってADO.net接続?
このどちらかでいけるのかな?といった気がしましたが、詳しい手順等ポインタをいただけたらと思います。
よろしくお願いします。
相談というか疑問なんだけど、
C#は仮想(抽象)メソッドを静的にできないんだけど何故だと思います?
駄目な理由が分からない。。。
private virtual static int hoge() {}
protected abstract static int foo();
静的メンバは継承されないからさ。
あとprivate virtualは有り得ないな。
>>735 それ、C# はっていうか、Java や C++ でできるか?
できる言語もある
Delphiとかいう糞言語
741 :
デフォルトの名無しさん:2005/09/10(土) 13:36:16
Form1.csから、別プロジェクトのForm1.vbのAメソッドを呼び出すにはどのように記述すればいいでしょうか。
Form1.csに
Form1.とインテリセンスを出してみましたが、当然のようにAメソッドはインテリセンスの一覧にはありません。
どのようにすればインテリセンスに登場させることができるでしょうか。
参照してなかったら不可能。
参照しているのなら、クラスからじゃなくて名前空間から書いていく。
あといつまでもForm1なんて名前使ってるのはださくね?
743 :
741:2005/09/10(土) 14:15:53
>>742 回答ありがとうございます。参照設定やってみます。
vbの人はtextbox1、textbox2、3,4,5
これ定番
>>740 マジで?
Delphi のイメージがまたちょっと悪化。
static virtual ってどういう扱いになるん?
Delphi6 しかもってないんだが、Delphi では C# で言う static virtual は
「TClass.Method;」で呼び出すと C# の static メソッド風に、
「Object.Method;」で呼び出すと C# の non-static メソッド風に振舞う。
……みたい。ガイドを見る限りでは。多分。
糞っていうな糞って
ごめん、糞じゃなくてウンコ
それならよし
750 :
デフォルトの名無しさん:2005/09/10(土) 22:33:57
テキストボックスの文を、。と\r\nで区切ってsplit配列に入れていくというのをやりたいのですが
下のコードだとビルドは通るのですが、実行したらアプリが固まってしまいます。
Splitメソッドを使おうと思ったのですが、1つの文字しか指定できないのでやむなく下のように書いたのですが
どなたか何かヒントをいただけるとうれしいです。
string[] split;
string moji = textBox1.Text;
int count = 0;
int a;
int b;
while(moji.Length > 0)
{
a = moji.IndexOf("。"); //。の最初の出現位置
b = moji.IndexOf("\r\n"); //\r\nの最初の出現位置
if(a > b) //。と\r\nのどちらが先に出現するかで処理をわける
{
split[count] = moji.Substring(0, a + 1); //文の最初から。までを抜き出す
moji = moji.Remove(0, a+ 1); //文の最初から。までを削除したものをmojiに入れる
}
if(b < a)
{
split[count] = moji.Substring(0, b + 1);
moji = moji.Remove(0, b + 1);
}
count++;
}
Regex.Split使えば?
このスレはRegexが大人気ですね
753 :
750:2005/09/10(土) 22:37:40
>>751 便利なメソッド教えていただいてありがとうございます。
これで楽できます。
754 :
名無しさん@そうだ選挙に行こう:2005/09/10(土) 23:35:27
お絵描きツールを作る時、描画されるオブジェクト(四角、三角、円)などは
Controlを継承して作るのとそうでない方法、どちらがよいのだろうか。
各、描画オブジェクトは摘んで動かしたりできる機能を持つとして
試しに、ドラッグして動かすものをつくってみたのですが
Controlで作った場合 Locationプロパティを変更するだけで綺麗に描画できた。
Controlを継承せずに OnPaint(Graphics), NotifyView(Rectangle), MoveTo(int,int)などを
実装したオブジェクトを使った場合、かなりちらつきがあったり、遅かったりしたんですけど。
どちらの方が一般的なんでしょうか?
アンマネージdllの読み込みについて質問です。
DllImport属性だとDllの場所を動的に指定できないみたいなのですが、
実行時にdllの場所を指定して読み込ますことはできないんでしょうか?
それができるDllImportの代替手段などもあれば教えてください。
>>754 前者はウィンドウハンドルの無駄遣いっぽい。
後者を使ってダブルバッファリングさせるのが一般的じゃないかな?
>>754 オブジェクトの数が増えるとそれが逆転する可能性がある。
>>755 俺も調べたことがあってそういう方法を紹介してたサイトがあったが、
それがとてつもなく面倒な手間がかかって欠点もある、ということで結局
アンマネージDLLを呼ぶアンマネージDLLという馬鹿馬鹿しくなるものを作った覚えがある。
つまりお勧めできない。
Controlクラスはリソース食うからあんまり大量に使うもんじゃないんじゃない?
構造をDocumentとViewにわけてDocumentで描画オブジェクトを管理。
View部分にはTimerクラスをくっつけて、
Documentの更新状況に関係なく毎秒nフレームとかで描画すればそんなに遅くならないよ。
ちらつきはBMPのバックバッファ用意して、そこに描画して一気にメインバッファに
流し込めば起きなくなる。描画するコントロールのOnPaintbackgroudを無効にしておくのも忘れずに。
>>755 .NET2.0になればMarshal.GetDelegateForFunctionPointerで関数ポインタをデリゲートに変換できるんだが。
Managed C++でLoadLibraryをラッピングするしかないかな。
>>759 LoadLibrary使うのにこんなメンドクサイ事するとは……。
システム寄りの事をするにはC++のほうが適してるな、こりゃ。
>>761 何を今更
ま、Managed用の言語であるC#とUnmanagedのDLLで食い合わせが悪いのは当然だわな
763 :
758:2005/09/11(日) 00:02:21
>>755 set PATHすればええやん。
そういう問題じゃないのか?
プラグインみたいなのを想定してるとか。
コウイチ
うわ…よくそんなもの見つけましたね。
IDEで出ちゃいます?
769 :
755:2005/09/11(日) 01:59:59
Program Filesにインストールされてる製品に付属するアンマネージDLLを参照したかったんです。
でもラッパーDLLをそのフォルダに置いて、それを呼び出せば良さそうですね。
たくさんのレスありがとうございました。
ところでマネージDLLを実行時に場所を指定して読み込むのってどうやるんでしたっけ?
Assembly.LoadFrom
771 :
755:2005/09/11(日) 02:06:03
772 :
755:2005/09/11(日) 02:06:58
774 :
754:2005/09/11(日) 11:43:18
>>756-758 ありがとうございます。
オブジェクト4000個で実験したところ
Controlだと消費メモリは+3M@タスクマネージャ
遅い原因はView側のOnPaintがClipRectangleに対応していなかったようです
DocumentViewアーキテクチャ
yield return/break って使い道あんのか
777 :
名無しさん@そうだ選挙に行こう:2005/09/11(日) 15:51:06
今時、Doc/View?
ポトペタ最高
>777
その発言の意図がわからん。
古いっつーなら勉強し直した方がいいかも。
いや古いだろ。
MFC信者?
「古いから使わない」はおかしいな。
781 :
デフォルトの名無しさん:2005/09/11(日) 22:39:04
ちょっと確認したいのですが
C#でシェアウェアを作ったとします。
コードの中にパスワードが書いてあった場合、逆コンパイルでパスワードって見えちゃうんじゃないかと思うのですが
どうなんでしょうか。
>>781 普通、そういう場合はパスワードを暗号化したものを入れておくんじゃないか。
ユーザーに入力された文を暗号化して結果が、暗号化されてるパスワードと比較する。
>>781 そこでMD5暗号化
しかし固定文字列では割れ厨はシリアル集からパス入手するかもね。
そういやDotFuscatorの製品版は内部の文字列も暗号化してたはずだな。
785 :
781:2005/09/11(日) 22:46:58
>>782 なるほど、それなら見えちゃっても大丈夫ですね。ありがとうございます。そのようにしようと思います。
>>783 MD5という暗号技術がお勧めですか。ありがとうございます。やってみます。
そんなに需要のあるジャンルじゃないので洩れて晒されるほどではないのでわと思っているのですが。
>>784 文字列の暗号化は確か有料でけっこうなお値段だったような気がするのですが、いくらだったか。
ちょっと見てみます。
786 :
781:2005/09/11(日) 22:48:52
>>785 UPX 圧縮するともしかするかも
マネージコードで試したこと無いからわかんないけど
Shareware Starter Kit使えよ。
2005だけど。
790 :
781:2005/09/11(日) 23:17:13
皆さんアドバイスありがとうございます。
>>788 UPX圧縮って、調べてみたら実行ファイルを圧縮して、サイズが小さくなって起動が早くなるとかいう説明でしたが
ひょっとして圧縮ファイルにパスワードとかかけられるのでしょうか。
それか圧縮した状態だから中のパスが見られないということかな。
http://www.vector.co.jp/soft/win95/util/se246580.html 実は、シェアだけど、これも圧縮ファイルにパスワードかけるやつなのですが、これ使っちゃおうかなと思ってたんですけど
一応プログラマーなんだから自分のシェアソフトのパスぐらい自分でなんとかしないといけないんじゃないかというジレンマがあって
こういうの使うのが一番簡単な気がするのですがいまだに迷ってます。
>>789 2005には便利なものがついてるのですね。
使っているのはVS2003です。
確か2005はまだベータでしたよね。
C#を勉強して良いものだろうか・・・
いまだに悩んでる。
MSが簡単に「もう辞めた」と言いそうで怖い
>>791 複数の言語を使えるに越したことはない。
特に.NETでは。
>>791 現在ver2は開発中だしver3は仕様の構想中だよ
C++と違って実装できた機能が規格に追加されるので堅実だと思う
M$は.netいじりにはC#が最適と言いたいみたいだし
794 :
名無しさん@そうだ選挙に行こう:2005/09/11(日) 23:29:42
.NETにはC++/CLIが最適に思えるのだが・・・
>>794 今までの資産が大きすぎるからなぁ。両方できればそれに越したことは
ないけど、そうでない、頭が固まってしまった人がかなりいるし。
>>776 他人が読むときに不便になりそうな奇抜な機能は付けないでほしい…
>>791 次のタマはないんだよ。
現在研究中の言語もC#に取り込まれていくだけ。
>>791 幅広く何でもやりたいなら、当分の間安泰なC/C++がお勧め。
ちょっと自分で描画系を勉強するに当りScrollWindowExやScrollWindowを使ってスクロールをしようとしているのですが、
UserControlを継承したクラスで
OnPaint(Graphics g)内で
g.DrawString(...)を読んで文字列を書いて
ScrollWindowExやScrollWindow読んで画面をスクロールさせるようなサンプルありませんでしょうか?
どうにもどうすればいいのかつまってしまって困ってます3ヶ月前まで、Linux一筋だったので助けてください。
801 :
デフォルトの名無しさん:2005/09/12(月) 03:44:14
このままC#の勉強を続けるべきか
それともJavaの勉強をするべきか
或いはネイティブのC/C++の勉強をするべきだろうか
正直悩むな
どれが一番将来性があるのか
>>801 3つとも大して難しい言語でもなく、ましてや基本的には似た言語であるので
人並みの能力があれば3つの勉強を同時にこなすぐらいわけないことだ。
つまり一番将来性がないのはそれができないお前。
VS2005出るまでC++の勉強すれば?
出たらC++/CLIで.NETの勉強すればいいじゃん。
俺の見解だけどその中で一番将来性ないのはJAVAじゃないのか?
JAVAのコンセプトは悪くないんだけど、コンセプトを実現させるパワーに欠ける気がする。
あくまでMSと比較してだけどな。
ここでJavaの話をすると荒れそうだからやめとこう
>>801 あえて将来性の無い言語を選ぶのも悪くないね
ひとつの言語しか使用経験がないのに比べ
複数の言語を使った経験があると
その言語でしか通用しない概念か
多くの言語でも通用する概念かの区別がつくので
未経験の言語を使い始めるときに苦労が少ないよ
要するに「未経験の言語=使えない言語」ではなくなる
807 :
デフォルトの名無しさん:2005/09/12(月) 16:32:44
シェアウェアで買ってもらったらパスワード渡しますよね。
そして、ユーザがパスワードを入力して制限が外れます。
毎回毎回起動の度にパスワードを入力させるわけにもいかないから当然、ユーザが入力したパスワードを
どこかに保存することになりますよね。
今までテキストに書き込んでおいたのですが、内部に保持する方法はないでしょうか。
コンボボックスを作っといて、コンボボックスのアイテムとして書き込んだら内部に保持できるかなあとか考えて
comboBox1.Items.Add((object)textBox1.Text);
このように書いてみたりしたのですが、アプリを終了して再度起動したときには、せっかく追加した文字が消えており
保持に失敗。
ユーザの入力したパスワードをアプリ内部に保持する方法があれば教えていただけるとうれしいです。
>>807 自分なら暗号化してレジストリへ書き込みますね
MACアドレスなども含めて暗号化することで
同じ値を入れたのでは他のPCで使えないようにすることもできます
809 :
807:2005/09/12(月) 16:43:08
>>808 アドバイスありがとうございます。
やはり外部に書き込むしかないのですね。
テキストにパスワードそのまんま書き込んでたので、あんまりかなあと思っていたので暗号化はしようかと思います。
MACアドレスを含む技も、1台に1ライセンスのシェアを作ったときに使わせていただこうと思います。
>comboBox1.Items.Add((object)textBox1.Text);
>このように書いてみたりしたのですが、アプリを終了して再度起動したときには、せっかく追加した文字が消えており
こんな知識で一体どんなシェアウエアつくる気だ?
CompJapon
812 :
754:2005/09/12(月) 21:51:25
>>804 DLして見ました。
綺麗ですね。
ダブルバファリングはControlStyleに任せていたので参考になります。
Point + Sizeとか始めて見ました。
ForEach(delegate(T){});とか2005のソースは面白いですね。
2005じゃなくて2.0のソースだろ
.slnとか.csprojとかにも面白みがあるんだよ! 多分
匿名メソッドは便利やね
816 :
デフォルトの名無しさん:2005/09/13(火) 00:56:31
Generics使って
特定のカスタムアトリビュートが付与されているクラス
のみTに取るとかって指定できませんか
たとえば
List<T>
のTは[serializable]が付与されているものだけに限定とか
型は指定できるけどアトリビュートはできないのでしょうか?
817 :
デフォルトの名無しさん:2005/09/13(火) 00:59:10
すべてがObjectから派生しているからListには
なんでもいれられるじゃないですか
それなのにGenericってなんの意味があるんですか?
where じゃないっけ?
819 :
デフォルトの名無しさん:2005/09/13(火) 01:05:43
Genericsってセカンダリ制約ってAND条件のみ?
IAかIBってインターフェイスを実装しているType指定って
できないのかな?
Factoryかませないとできないか?
821 :
デフォルトの名無しさん:2005/09/13(火) 01:16:25
>>820 だったら配列に入れればキャストしなくてもよくね?
配列とリストは構造が違う。
Genericsはリストだけで使うわけじゃないから
配列だと気軽にAdd/Removeできないじゃん
Genericの目的は、キャストよりもアルゴリズムの一般化じゃない?
List<T>で言えばPredicate<T>での検索とかComparison<T>でのソートとか
型に合わせた部分だけ変えればいいっていう
テンプレートなくても
javaで言えばComparatorを実装するオブジェクトはソートできる
みたいにアルゴリズムの再利用はできるぞ
>>817 何でも入れられるのは問題あるから、型 T だけしか入らないように限定しよう
……というコンセプトもある
確かに object 型のリスト作ればどんな型でも格納できるんだけど、
いちいちキャストが必要。
キャストが必要と言うことは、InvalidCastException 発生の危険性が常に伴う。
Generics 使えば、この例外の発生はありえない。
これは、実行時エラーの回避、効率の両面で有効。
まぁ型総称性とかで調べてみると理論は分かると思うが。
オブジェクト指向と絡むとちょっと重要なところが変わるんだけどな
実は配列ってのも似たような機能を固定的に成り立たせている
ところもあるっていうか、MyClassって型があったとして、MyClass[]
って型が暗黙的に存在しているだろ。この関係はList<MyClass>と一緒だ
C++のtemplateみたいな一種のコードジェネレータで実現できる機能って
ことは重要で継承とはちがった拡張性が型パラメータによる総称性って
いうか何かに何かを「適用する」って概念だな
で?なんの役に立つのそれ?ってのがたぶん大半の理解できないひとの
いいぶんだと思うけど、それは使ってみて分かるしかないと思うよ
830 :
デフォルトの名無しさん:2005/09/13(火) 13:37:26
HttpUtilityクラスを使って文字列をデコードしたいんですが
using System;
using System.Text;
using System.Web;
とやっても名前空間に見つからないって言われてしまいます。
System.Web.
まで送って、コード補完かけても、AspNetHosting〜しかでてきません。
何か足りないものがあるんでしょうか(´・ω・`)
832 :
830:2005/09/13(火) 14:19:52
>>831 おおっっっっ。ありがとうございます!
できますた!
833 :
デフォルトの名無しさん:2005/09/13(火) 17:13:27
質問させてください。
とある自作ゲームで、CPU側の動作(AI)をユーザが
DLLでプラグインできるようにしたいのですが、、
まず、ゲーム本体はプラグインするDLLから動的にアセンブリを呼び、
どういう動作をするのかを問い合わせる形をとるものとします。
しかし、ゲームの本体で持っているデータ構造をDLLと
共有する方法がわかりません
ゲーム本体で使っているクラスとゲーム中のデータを
プラグインするDLLがそのまま参照できると嬉しいのですが、
そういうことは可能でしょうか?
>>833 意味不明な部分もあるが、全部可能。
ググルで
C# DLL 遅延
C# DLL 構造体
C# DLL コールバック
で検索して、読めれば全部解決する。
836 :
833:2005/09/13(火) 18:14:26
>>834 めちゃめちゃ参考になりそうです、ありがとうございます!
データとクラスを定義したものをDLLに分離したらよいのですね
ところで、共有したいクラス(シングルトンで使っている)を別DLL内に
閉じ込めたとして、プラグインとゲーム本体で同じDLLを参照したとすると、
中身のデータも共有できるんでしょうか??
>>835 説明が下手ですいません。
とっかかりとなることがわからない状態ですので
キーワードを提示していただけて助かります、早速調べてみます
>>836 >共有したいクラス(シングルトンで使っている)を別DLL内に
>閉じ込めたとして、プラグインとゲーム本体で同じDLLを参照したとすると、
>中身のデータも共有できるんでしょうか??
なにをどうしたいのかいまいちよく見えないが、
ゲーム本体がプラグインのDLLと共有クラスDLLから
インスタンスを作って使うわけで可能じゃね?
とゆーか調べてから設計しる。
838 :
833:2005/09/13(火) 18:53:21
ありがとうございました、望みどおりの動作になりました
>>837 そのとおりでした。ゲーム本体が共有データを持つDLLの
インスタンスを作って、その後からプラグインがゲーム本体から
動的にロードされて共有データのDLLを見に行くので
問題無しでした
>とゆーか調べてから設計しる。
そうっすね・・・
839 :
デフォルトの名無しさん:2005/09/13(火) 20:15:17
C#で作るほにゃらら、みたいな感じの、初学者でも順を追ってそれなりの
プログラムが組めるような書籍、どなたかご存知じゃないでしょうか?
ジャンルは問いません、友達に教えてあげたいので教えてください。よろしくおねがいします。
840 :
デフォルトの名無しさん:2005/09/13(火) 20:16:24
↑追記
例えば、rubyで言えば、恋するプログラム〜Rubyでつくる人工無脳
のような本ですね。
MSDN
それなりのレベルのものしか作れないんで意味ないと思うよ
うわ。MSDN がそれなりのレベルみたいなレス配置に orz
VSについてくるチュートリアル結構よかったよ
文法だけでライブラリのことはノータッチだけど
>初学者でも順を追ってそれなりのプログラムが組めるような書籍
『初心者でも順を追ってそれなりの小説が書けるようになる書籍』って読み替えてみた。
こういうのを探すと多分無駄足を踏む事になるね。
俺も
>>841 とか
>>844 が素直な正解だと思う。
ペゾルドを参照せよ!
しかとは言わないが、まあそれが一番手っ取り早かろう
849 :
デフォルトの名無しさん:2005/09/14(水) 04:15:37
>>834 Terrarium って今でも活発に使われてますか?
また doc ファイルかよ
Implicitly typed local variables
Extension methods
Lambda expressions
Object and collection initializers
Anonymous types
Implicitly typed arrays
Query expressions
Expression trees
var がキーワードになるのかよ
死ねよ
>>849 Terrariumはもともと学習用のゲームみたいな面があった。
855 :
デフォルトの名無しさん:2005/09/14(水) 05:52:31
デフォルトのメーラを起動して、Process.Start("mailto:〜〜");では添付できないので、
ファイルが添付されているところまで持って行きたいのですが、
ちょうどInternetExplorerの、ツールメニュー -> メールとニュース -> 「ページの送信」
を実行した後の様な形です。
よい方法ありませんか?
var var イエッツ!
とか振っても、この板では元ネタ知ってる人が居なさそう_| ̄|○|||
>>850 きたー。
でもあんまり感動がねえなあ。
lambda はいやじゃー
複数のForm間で共有するデータを保持するクラスを作成したのですが、
インスタンスを生成する良い場所が思いつきません。自動的に
生成されるForm1のメンバとして作成するのが定石なのでしょうか?
必要なときに作れば良いんでないの
>>860 ヒント:シングルトン サービスロケータ
Webサービスの開発しているんですが
Web.conifgの設定を変更したらWebサービスは再起動するのでしょうか?
しない、はず
いちいちファイル監視なんてやってられないでしょ
>>864 有難うございます
普通のWindowsアプリは再起動するらしいので
Webサービスもするのかどうか分からなかったので心配でした
ちょっと待て、ひょっとして「再起動するのか」じゃなくて「再起動させなきゃいけないのか」って事か?
それなら当然設定を反映させるのには再起動が必要だぞ。
IISが自動的にやってくれるけどな。
>>866 >>867 プログラム少し変更して
Global.asaxのApplication_Start内でWeb.config変更ログ取るようにしてから
メモ帳でWeb.configを変更してみたんですが
いじる前といじる後ではこちらで再起動掛けなくても変更がログに残ってたんですが
理由は
>>867だったんですね
納得しました
お二人とも有難うございました
869 :
デフォルトの名無しさん:2005/09/14(水) 21:10:35
自己解凍形式の圧縮ファイルみたいに、
プログラム内部にファイル(データ)を内包した感じのプログラムを作りたいのですが、
どうやれば作れますか?
ん、リソースを埋め込みたいって事?
どぼんでも見に行ってみたらどう?
Web.conifg書き換えるとワーカプロセスが再起動するよ
>>870 レスありがとうございます。
どぼん見ても分からなかったらまた来ます。
873 :
デフォルトの名無しさん:2005/09/15(木) 01:38:35
C#でこんなカコイイアプリ作ったぞ
なんて自慢できる人いますか?
つっこみ来る前にw
デザインがダサかったら萎え
デザインなんてどうでもいいや
ユーザビリティが優れてればそれで
それ一度使おうと思ったけどインストーラがまんどくさかったから使ってないや
877 :
デフォルトの名無しさん:2005/09/15(木) 22:16:39
配列を定数として宣言したいのですが、どうすればいいのでしょうか?
const uint[] Color = new uint[]{0xFF006000,0xFF0060FF,0xFF00FF00}
としてもエラーになってしまいます。
static const でもダメ?
>>877 配列自体はconstでも中身が操作できるから。
readonly
>>880 readonly も中身は操作できなかったっけ?
参照型はstring以外constはできない。
static readonlyにするぐらい。
各要素の変更まで禁じようと思ったら独自クラス作るかArrayList.ReadOnly使うとか。
c#のconstはつかいにくいんじゃー
884 :
877:2005/09/15(木) 23:31:58
あちゃ配列ってconstできないんですか…
今回はこれまでコードの中できめ打ちしてたのを
頭でconstにまとめて読みやすくと思っただけなのでまぁ諦めます
ありがとうございました。
それだけならstatic readonlyで十分だと思うが。
final しかない言語よりはましだろ
っていうかC#のconstは意味がはっきりしてるっていうか
正確に意味理解しとき。
あれは、バイナリイメージにそのまんま「埋め込む」んだ。
だから基本型しか適用できないし、リンク時の動作も埋め込みに
なるんだ。
つまりは #define マクロか
889 :
デフォルトの名無しさん:2005/09/16(金) 02:09:48
実行中のWindows Media Playerを他のプログラムから制御する方法はありませんか?
890 :
889:2005/09/16(金) 02:22:14
自己解決スマソ。
Ctrl+Pとかを送ってやることにしました。
AxWindowsMediaPlayer だったかなんかで自作すればいいじゃん
>>887 だが、publicやprotectedの別アセンブリ内のconstを参照するときには埋め込まないでほしかったよ。
constはreadonlyにすればいいんだけど、enumが値の埋め込みになるのが痛い。
893 :
デフォルトの名無しさん:2005/09/16(金) 09:57:52
.NET2.0SDKっていつでるの?
>>887 俺は877じゃないし、現状、const でも readonly でも 877 の望むようなことはできないのはわかるけど、
バイナリイメージにそのまま埋め込むタイプの、固定長・中身 const の配列欲しくない?
System.Array 型にマッピングされるんじゃなくて。
>>892 いや、それは readonly でもなくて、public プロパティにしろって MSDN かなんかにかかれてたぞ。
public const にしていいのは、円周率 Math.PI みたいに、ほんとに絶対変わらない値だけ。
VS2005発売開始と同時じゃね?
public static readonlyにするのは、私の場合高機能列挙型作るときぐらいかな。
あと構造体の初期値。
>>896 ハイハーイ。おれはこんなコード書くことが多いです
public static readonly Regex regex = new Regex(@"...", RegexOptions.Compiled);
俺はそういうのは private で宣言するなぁ……
なんでもpublicにするなよクソが
そして再利用されないクラスが増えていく……
疑問なんだけど RegexOptions.Compiled って目に見えて効果ある?
902 :
897:2005/09/17(土) 02:04:33
あ、internal class内かprivate nest class内ね…
これかいとかないと確かにダメダメだ…orz
>>901 気持ち速くなってる。
かなり頻繁に呼ばれないと最初のコンパイルのコストを取り返せないような、微妙。
もっと速くなると思ってたので期待はずれだった。
より長く複雑なパターンだと、もっと顕著に効果が現れるのかもね
905 :
デフォルトの名無しさん:2005/09/17(土) 11:48:45
2の補数表現で表されたバイナリデータ(16bit)があるのですが、
これを適切に読み込むにはどうしたらいいのでしょうか?
int data[]として、
data[i] = fs.ReadByte()<<8 + fs.ReadByte();
としているのですが、
0x0000が最小0xFFFFが最大として扱われてしまいます。
符号ビットによって場合わけして読みこむように自分でコードを書かないとだめなのでしょうか?
16bitならInt16==short使えばいい話でない?
ついでにBinaryReaderとか(EOF検出が例外によるものしかないっぽいので使いにくいが)
907 :
905:2005/09/17(土) 12:07:23
うほっ
intって32bitだってなぜか忘れてました orz...
(short)( fs.ReadByte()<<8 + fs.ReadByte());
でばっちりいけますた。
即レス多謝。
.NETは、C++/CLIになるのに、なんでいまだにC#?
909 :
デフォルトの名無しさん:2005/09/17(土) 13:48:57
C++/CLI?
なんじゃそりゃ?
>>908 C++/CLIでASP.NETしてろよ。
911 :
デフォルトの名無しさん:2005/09/17(土) 14:29:34
ASP.NET?
なんじゃそりゃ?
912 :
デフォルトの名無しさん:2005/09/17(土) 15:54:51
デザイナでのコード生成に関しての質問です。
自作コンポーネントを作成して、プロパティにMyCollectionというクラスを作った場合
コードの自動生成で
MyCollection.AddRange( new AbstractClass[]{
new ClassA(), new ClassA(), new ClassB, new ClassB));
のように記述されるためにはどのようにすればよいのでしょうか?
http://www.comrade.co.jp/component/dotnetroom/kt_vsdn/kt_vs5b.htm#4 を見て単純な場合はうまくいったのですが、CollectionEditorをカスタマイズすると
追加された内容が反映されなくなってしまいます (コードが自動生成されない)
こんな感じのコード
[Editor(typeof(MyCollectionEditor), typeof(UITypeEditor))]
[Serializable]
public class MyCollection : IList{ /* */}
public class MyCollectionEditor : CollectionEditor{/* 具象クラスを何種類か選ばせて追加できるようなエディタ */}
914 :
デフォルトの名無しさん:2005/09/17(土) 22:55:07
ASP.NETが動く無料のサーバーってありませんか?
公開できないとなると作る気もなくなるので
915 :
デフォルトの名無しさん:2005/09/17(土) 22:57:07
そんなの公開しても恥ずかしくないようなものができてからでも
遅くなくね?
露骨過ぎる釣り
919 :
:2005/09/18(日) 00:42:26
JAVA勉強してるのだけど、
JAVAからc♯へ移行ってどの程度かかりますか?
最終的にJSP サーブレットをある程度できるようになったら
.NETとasp.netも勉強しようと思ってます。
.NETのほうが簡単に見えてきて。
>>919 本腰入れて学習が必要なのはASP.NETくらいかな?
VS.NETの使い方、.NET FrameworkのAPI、C#.NETの文法なんかは
それぞれ本一冊あればどうとでもなる。
>>920 C# の文法とかはむしろ、ウェブ上の情報だけでも十分かも。
ほとんど Java だし。
言語の違いなんてそうたいしたものではない。
JavaもC#もオブジェクト指向に根ざした言語なのだから、
片方で得られたテクニックなんかもそのまま適当できるっしょ。
923 :
デフォルトの名無しさん:2005/09/18(日) 03:11:22
だから?
924 :
デフォルトの名無しさん:2005/09/18(日) 08:14:03
あるメソッドから、別のメソッドを呼び出すとします。
別のメソッドで行う処理は数分かかるので、その処理が終わるまで
待つのは避けたいんです。
どうすればいいのですか?
System.Threading.Thread
整合性に気をつけて
WjnFormの場合Invoke/BeginInvoke/InvokeRequiredにも気をつけて
delegateにメソッド入れてinvokeで呼び出せばマルチスレッドになるんでしたっけ?
ならないよ
BeginInvokeの方
d
>>920 VS.NETの使い方が本一冊ぶんも書いてある書籍なんてあるの?
ちょっと気になるので、参考書名を教えて欲しいのですが。
MSCOMMを使ってモデムとシリアル通信しようとおもうのですが、うまくいきません。
モデムと通信するための新しいスレッドを立てて、たとえばATなどを送信して、
返っていた文字列の最後が「OK\r\n」か「ERROR\r\n」になるまでループして待機、
ということをやっているのですが、
while(CommString.EndsWith("OK\r\n") || CommString.EndsWith("ERROR\r\n"));
のところで、「スレッドを中止しようとしました」との例外が出ます。
解決策をお願いします。
do
{
CommString += ((string) mscomm.Input);
//リソースを食い尽くさないように待機
Thread.Sleep(100);
}while(CommString.EndsWith("OK\r\n") || CommString.EndsWith("ERROR\r\n"));
return CommString;
>>931 > while(CommString.EndsWith("OK\r\n") || CommString.EndsWith("ERROR\r\n"));
訳:CommStringの末尾が"OK\r\n"か"ERROR\r\n"である限りループを繰り返せ
そうでない場合はループを終了せよ
933 :
デフォルトの名無しさん:2005/09/18(日) 13:50:03
.NETって普及しますかねえ?
Windows環境での普及率なら既に JRE < .NET Framework だしょ
Javaと同じで利用分野によりますね。
イントラWebや以前はVB6などで作ってた事務系システムの分野ではかなり使われてる。
Longhornが最初の予定通りなら利用分野が広がった可能性もあるがかなり後退してしまった。
んなもんで、大型のパッケージソフトやユーティリティ系のソフトはネイティブのC++が主流。
そんなこんなでシェアウェア作家あたりが.NET使えねーとかいってこういうスレッドで
暴れだす例が後を絶たない。
>>933 分野にもよるけど今だにそんなこと本気でいってる人は少ないと思われ。
普及しなかった、と。
つーかおれが普段使ってるPCに.NET入ってない時点で普及してるとはとても言えないナー
940 :
デフォルトの名無しさん:2005/09/18(日) 16:17:39
コンテナコントロール上に透明な色にて描画したいのですが
(PhotoShopでいうレイヤーが常に透明な色で重なっている状態)
Graphicsで描画すると描画した直後はいいのですが
コンテキスト等でその領域に何か表示された後に
その無効領域を取得する方法がわかりません。
どうすればいいのでしょうか?
全部再描画かけてしまうと透明な描画が
2枚以上重なってしまう部分等があり悩んでいます。
>>939 WindowsUpdateで入れようと思えば入れられるものを
入れてないから普及してないと言い張るのは根拠としてはいまいちだな。
どうでもいいだろそんなことより940に誰か応えてやれよ
>>931 MSCommってCOM(ややこしいな)でしょ?
COMってスレッドセーフ違うんじゃなかったっけ?
というか、0.1秒も眠らせるなら別にスレッドでやることないと思うんだが。
>>940 普通にOnPaintかPaintイベントで再描画するだけでしょ。
正直「どうすればいいでしょうか」なんて他人に質問する以前の問題だね。
944 :
デフォルトの名無しさん:2005/09/18(日) 16:52:58
>>943 コンテナPaint→レイヤー描画→コンテナ無効領域発生
のコンボはどうするんだ?
意味ワカンネ。
因果関係の順番が狂ってないか。
無効領域が発生したからOnPaintが呼ばれるわけだが。
946 :
デフォルトの名無しさん:2005/09/18(日) 17:34:02
PointF[]で1000〜1M個くらいの座標リスト作って(Y座標のデータはMAX-10〜+10くらいなので拡大処理)
それを画面サイズ内で縮小して描画したいのですが、
普通にg.ScaleTransformしてからg.DrawLinesで描くと線が拡大されて表示が汚くなります。
座標データの位置だけを画面サイズに変換してその間を結ぶ線は細いままにしたいのですが
どうしたらいいでしょうか?
色々見る感じだと、g.TransformPointsってのがあるのですが、
System.Drawing.Drawing2D.CoordinateSpaceとかがよくわかりません。
よろしくお願いします。
Penを細くしたらいいんじゃない
948 :
946:2005/09/18(日) 18:01:20
自己レスです。色々見てたのですが、
Matrixを定義してやればいけるっぽいです。
グラフィクス周り触るのは初めてで変換行列の定義から読んでるので時間がかかりそうですが…
949 :
デフォルトの名無しさん:2005/09/18(日) 18:18:25
Threadは、voidでかつパラメータ無しのメソッドでしか使えないんですか?
用途が限られてくると思うのですが。
ようは、Javaのパクリじゃん
そのためにそれ用のクラスを作るの。必要なパラメータと起動メソッド持たせて。別に不自由ないよ。
ちなみに.NET 2.0でParameterizedThreadStartってobjectを一つ引数に取るデリゲートが追加される。
952 :
デフォルトの名無しさん:2005/09/18(日) 18:21:47
940とかぶるが
コンテナにいくつかコントロールが足されている場合
もともとのコンテナ領域分レイヤー描画ってどうするん?
普通に描画してもコンテナにコントロールが
足されていない部分は描画できるが
足されたコントロール上の領域にもかかなきゃならんやん
954 :
デフォルトの名無しさん:2005/09/18(日) 18:55:30
C#で角が丸い四角を描画する方法ってどんな感じになりますかね
Pointを8つ指定してDrawCurveを使うしかない?
>>953 Thread じゃなくて Delegate を使えばよろし
>>954 GraphicsPathを作ってAddLineとAddCurveを繰り返し、FillPath/DrawPath
AddCurveじゃなくてAddArcだった……
959 :
デフォルトの名無しさん:2005/09/19(月) 00:28:58
非同期デリゲートがあれば、スレッドっていらないんじゃないの?
960 :
デフォルトの名無しさん:2005/09/19(月) 00:30:49
いらないよ
まじかよ
962 :
デフォルトの名無しさん:2005/09/19(月) 00:34:57
まじだよ
ちがうよ。要るよ。非同期デリゲートは ThreadPool の中で待機している Thread によって実行されてるんだよ
964 :
デフォルトの名無しさん:2005/09/19(月) 00:54:51
つ、つれた
な、なんだって〜
そんな中学生みたいなやり取りして楽しいか?
まあリアルで厨房のとき友達がいなかったからそういう精神的成長段階を
卒業できてない可哀想な奴らなんだろうけど。
967 :
デフォルトの名無しさん:2005/09/19(月) 01:19:14
StreamReader型をHashtable型に変換する方法をご存知の方がいましたら
御教授お願いします。
ありません
あ、ごめん。単純にキャストすればいいだけかも
うむ。やはりキャストはだめだった。ということで 「ない」 が正解
971 :
931:2005/09/19(月) 01:43:30
質問です
[Q]キーを押した時にアプリケーションを終了させる事を意図して、
次のようなコードを書いたのですが、
qキーではなく、Shift+qキーを押さないと、思った通り終了してくれません。
qキーを押した事を拾うにはどのように書いたら良いのでしょうか・・・?
ご教示お願いします
protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e)
{
switch ((int)(byte)e.KeyChar)
{
case (int)System.Windows.Forms.Keys.Q:
this.Dispose();
break;
}
}
Shift + q を押したら q になるようなキーボードレイアウトになってんじゃないの?
974 :
972:2005/09/19(月) 02:00:59
>>973 PC2台で確認しましたが、両方とも駄目でした。
975 :
973:2005/09/19(月) 02:05:33
switch ((int)(byte)e.KeyChar)
=> switch (e.KeyChar)
case (int)System.Windows.Forms.Keys.Q:
=> case 'q':
紛らわしいから間違えちまったよ
977 :
972:2005/09/19(月) 02:25:30
ああ、なるほど…
ありがとうございました
あと紛らわしくてすいませんでした
インデントしてたのですが反映されなかったもので…
978 :
デフォルトの名無しさん:2005/09/19(月) 02:49:40
複数のコントロールでCreateGraphics()つかって
描画しようとしているのですが
各コントロールの描画を一端メモリ上に書き込んで
全てのコントロールでの描画を一括で画面に反映させるには
どうしたらいいんでしょうか
979 :
デフォルトの名無しさん:2005/09/19(月) 10:15:38
ControlへのDrawStringについて質問です。
可変領域へ文字列を書き込む必要がありDrawStringしてるのですがうまくいきません。
例えば、FormのOnPaintをオーバライドして実行し
フォームをリサイズしてWidthを0にして、少しづつ大きくするとStringが描画されないのですが
どなたか解決方法を知っている人いますでしょうか
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint (e);
e.Graphics.DrawString("WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
this.Font, Brushes.Black, this.DisplayRectangle);
}
ResizeRedraw?
982 :
946:2005/09/19(月) 11:35:11
>>958 二個目のリンクを発見してワールド変換することで対応しました。
一個目のリンクもよんで勉強します。
ご丁寧にありがとうございました。
>>979 >this.DisplayRectangle
これの中身ヲチしてみた?
これって画面座標なんじゃないの?
コントロールGraphicsに描画するんだから、座標系はコントロールのクライアント座標を
つかわなきゃダメでしょ。
984 :
979:2005/09/19(月) 12:14:20
>>980,
>>983 解決しました。ありがとうございました
StringFormatのStringTrimmingをNoneに設定で解決しました。
(ResizeRedrawを有効にするのもOK)
埋めないか
うほ、いいC#
987 :
デフォルトの名無しさん:2005/09/20(火) 16:35:11
, '´  ̄ ̄ ` 、
i r-ー-┬-‐、i
| |,,_ C#_,{|
N| "゚'` {"゚`lリ
ト.i ,__''_ !
/i/ l\ ー .イ|、
,.、-  ̄/ | l  ̄ / | |` ┬-、
/ ヽ. / ト-` 、ノ- | l l ヽ.
/ ∨ l |! | `> | i
/ |`二^> l. | | <__,| |
_| |.|-< \ i / ,イ____!/ \
.| {.| ` - 、 ,.---ァ^! | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
__{ ___|└―ー/  ̄´ |ヽ |___ノ____________|
}/ -= ヽ__ - 'ヽ -‐ ,r'゙ l |
__f゙// ̄ ̄ _ -' |_____ ,. -  ̄ \____|
| | -  ̄ / | _ | ̄ ̄ ̄ ̄ / \  ̄|
___`\ __ / _l - ̄ l___ / , / ヽi___.|
 ̄ ̄ ̄ | _ 二 =〒  ̄ } ̄ / l | ! ̄ ̄|
_______l -ヾ ̄ l/ l| |___|
いいこと思いついた。お前メモリの中でお漏らししろ
それを許さないのがC#のいいところ。
>>988 「これがホントのメモリリーク」
「山田君、座布団ぜんぶとっちまいな」
とか言いたいのかテメコノヤロウ