,.-''"¨ ̄¨`' ‐ 、
(,,(,,i,,,i,,,,,,,,i,,,,i,,),,)
) (
( #゚ー゚) < C#,.NET関連の話題はこちらでどうぞ。
過去スレ・関連リンクは
>>2-10あたり
新スレおめ
.NET はまだしも、C#には幻滅した人の数 : 10,203
.NET にも愛想がつきた人の数 : 34,017
C#って分割コンパイルは一方をDLLにするんですよね。
でもお互いを参照しあったらどうなるの?同時にDLLするしかないのかな?
訂正:同時にDLLする→同時にDLLにする
>>9 DLLまで考えてダイナミックリンクを忘れるお前はアホか?
>>10 でも source1.cs と source2.csの中のクラスのフィールドとか互いに参照してると
@cs source2.cs /t:library
Acs source1.cs /r:source2.dll
1の時点でコンパイルエラーがでるんですが・・・
targetをmoduleっていうのでもやってみたんですが駄目で
cs source1.cs source2.cs
だといけたので。
>>11 デザインの問題だと思われ。
相互参照してるなら、実装に依存しないインターフェイスを抽出して
まず最初にそちらをDLL化すべき。
あくまで原則論だけど。
13 :
デフォルトの名無しさん:02/05/26 12:30
typedef見たいにuintの別名を作りたいんですがどうしたらよいのでしょうか??
>>12 なるほど、インターフェースを使うのか。確かになんとかなりそう。thx
>>13 using T = System.UInt32;
>>15 素早いレスどうもありがとうございます。
できれば、そのTの使用をクラス内限定にさせたいのですが、
そんな方法ありますかね?
間違えました。
クラスの型として宣言する方法でした。
C++で言うところの
class A
{
typedef unsigned int T;
};
をしたいのですが。
>>17 それは無理。
別名のスコープはnamespace全体かソースファイル全体。
>>18 またまた、素早いレスどうもです。
そのクラス特有のものだったので、クラス内に収めておきたいと思ったもので。
namespace被せておきます。
>>19 ちょっと苦しいけど、こんな手もある。
using System;
namespace Hoge {
using T = System.Int32;
class Foo
{
T n;
}
}
namespace Hoge {
using T = System.String;
class Bar
{
T n;
}
}
おっと!
>>20見て気づきました。
>>18の内容をちゃんと理解してなかったみたいです。
ほかのファイルからは別名を参照で出来ないんですね。
ボケてました。スイマセン…
23 :
デフォルトの名無しさん:02/05/26 17:29
//C++スレに誤爆済み。コピペ失礼。(爆
C#っていうか.NET Framework SDK(VS.NETにあらず)の問題なのですが、
吐かれた.exeファイルをエクスプローラのプロパティで見たときに表示される
「バージョン情報」に情報を書き込むにはどうすればよいのでしょうか?
たぶんテキストのリソースを作るのでしょうけど、方法と書式が…。
「バージョン情報」タブを非表示にさせる方法もあれば、お願いします。
>>23 System.ReflectionのAssembly〜Attributeを参照してちょ。
> 「バージョン情報」タブを非表示にさせる方法
いったん.exeをILDASMして、(ここでWin32リソースが出てくるはず)
で、ILのみをILASMかな。
>>23 SDKでは↓の方法は使えないんでしょうか
using System.Reflection;
using System.Runtime.CompilerServices;
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("TestTest")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.0.*")]
>using System.Runtime.CompilerServices;
これはいらなかったか・・・
>>23 SDK使いですが、
>>25 の方法でOKっす。
ソースをダウンロードするとAssemblyInfo.cs付いてることあるっしょ。
それです。
つまり
>>25 をAssemblyInfo.csにしていっしょにコンパイルするだけ。
できた!さんきゅ〜。
でもSDKのヘルプにはちゃんと載ってはいないような?
各々のキーワードで全文検索しても見つからなかった。。
(プロパティでは表示されていないらしい)AssemblyConfigurationの意味、
「言語」欄を日本語にする方法、
AssemblyVersionの"*"の法則も教えていただけますか?
// "*"はコンパイル日時がベース?
>>28 ms-help://MS.NETFrameworkSDK.JA/cpref/html/frlrfSystemReflectionAssemblyVersionAttributeClassctorTopic.htm
つーかヘルプにちゃんと書いてあるよ・・・。
>>29-30 あれ?ほんとだ。トピックにはちゃんとある。
全文検索に頼りすぎたらしい。。スマソ。
>>7 C#の、言語そのものはいいんだけど、IDE部分がいただけない。
Borland C# Builder出んかなあ
>>32 アウトラインで折り畳めるコードエディタすごく便利だと思うんだが。
>>34 エディタは便利なのだが、フォームデザイナが…。
コードとの連携も悪いし。
まあここで完璧なもの作られたらBorlandが商売上がったりだから、それでいいのかも
Borlandが作るとエディタ部分がいただけない出来になるという罠
エディタはM$製、デザイナは某製か・・・
自由に選んで組み合わせたり出来るようにならんかな〜
エディタはgVImがいーなー
39 :
デフォルトの名無しさん:02/05/27 00:25
>>38 激しく同意。VisVimの.NET版でないかなー。
だから作れと。
CodeDOM渡河すれば良いんじゃないの?
41 :
デフォルトの名無しさん:02/05/27 15:42
明日からMSのカンファレンスが大阪であるけど、
ここ見てる人たちで、行くって人どれくらいいる?
とか尋ねてみるテスト
ま、行くとしてもみんな全部T1トラック
とかなんだろか。
MSCのこと?あれって営業マン向けのイベントでしょ?
すみません。
Stringとstring、どっちが王道ですか?
>>43 Int32とint、どっちが王道ですか?
Voidとvoid、Int64とlong、、、
なるべく組込型使った方が良いか。。。むぅ。
voidとkusakabe、どっちが王道ですか?
ところで、C#の矩形配列って右側と左側どちらのindexがメモリ内で連続的に
なるんでしょうか?c[x,y]のときにxとyのどちらが連続かという事です。
>>50 気にしちゃ逝けないことだと思う。せっかくメモリアドレスを隠匿してるのに。
と消極的意見。
>>51 気にしちゃいけないのかもしれないけど、サイズが大きくなると速度が倍じゃ
済まなくなるんで気になります。
そういや、fixedでアドレス取れるんだっけ。自分で実験してきます。
試してみました。右側が連続ですね。array[x,y]ならyの方が連続です。
>>52 パフォーマンスならstackallocとかもみておくんなまし。
>>54 なるほど、こんなのもあるんだね。
ただ、Terrariumのためのプログラムなんで、unsafeコードは使えないです。
(試しに使ってみたらシステムに怒られました)
連想配列みたいなクラスない?
>>56 思いっきりある。System.Collectionsあさって見なされ。
IDictionaryか・・・気が付かなかった。
mapとかhashとかいう名前を想像してたんで。
IDictionaryはインターフェースだった(;´Д`)
Hashtableでいいの?
intに変換するときって、
Convert.ToInt32()
Convert.ToInt64()
どちらにしたらいいん?
62 :
デフォルトの名無しさん:02/05/28 00:47
質問君No.10650です。
複数の色を使いたいために、
TextBoxをRichTextBoxに置き換えたんですが、
ずいぶんと行間があいてしまいます。
Fontもいろいろ弄ってみましたが、駄目です。
なんとかならないのでしょうか。
がーん(T_T
ありがとございましたー
C++で、自作TextBoxコンポつくれ。
>>66 C#じゃ遅いからでない?
MC++使って自作しれってことだと
>>67 C#がMC++よりおそいなんてこたあない。
済みません。
Stream(MemoryStream)でデータの受け渡しを行いたいのですが、
writeしたストリームのデータを読み込むにはどうしたらいいですか?
MemoryStream ms = new MemoryStream();
ms.Write(data,0,1024);
???????
hogehoge(ms);
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
publicvoid hogehoge(Stream Ds)
{
???????
}
ageさせて下さい。
seekか?
BinaryReader?
前スレで、TextBoxからの継承でイベントをオーバーライドする
問題の件、上手くいきましたありがとうございます。>答えて下さったみなさま。
今は、ADO.NETをやっています。
ADOとはずいぶん違うというか凄い高機能になって驚いています。
VBとADOの時は、結局コントロールとのバインディングを
するとユーザーインターフェースを使いやすくしにくかったので
コードでコントロールとインターフェースしていましたが、
ADO.NETはどうだろうか?
ヘッダと明細のある部分もADO.NETなら表現できてしまうわけだけど、
どこまで用意された機能を使うか使わないかが難しいところですね。
みなさん、ADO.NETでどんな実装をしていますか?
とうぜんやりたいことによって何を使うかは変わると思いますが。
印象とか期待とかが聞きたいです。
74 :
デフォルトの名無しさん:02/05/29 23:44
Windows.Formsでリアルタイムにログ表示をしたいのですけど、
Iriaとかのログのようにどんどんスクロールさせるには
どうすればよいのでしょうか?
とりあえずListBoxを使ってみたのですが
Items.Addではスクロールさせないと表示してくれませんし、
かといってプログラム側からスクロールをさせる方法がなさそうなので。。
Items.Insert(0,message)という代替手段もありますけど、これは避けたいです。
>>74 普通、ログ表示にはリストボックスよりもエディットコントロールを使うかと。
ReadOnlyのエディットコントロールを使うと楽。
79 :
デフォルトの名無しさん:02/05/30 10:16
>>78 VBとかC#でTextBox使ったことないので、エディットコントロールを生で使う
場合しか知らないけど、EM_SETSELで末尾を選択してEM_REPLACESELで追加する
と勝手にスクロールするよ。
えーと、TextBoxのヘルプ見てみたけど、AppendText()で簡単に追加できるのかな?
それだと自動でスクロールしない場合は、SelectionStartとSelectedText使って
手動で追加すれば自動でスクロールしてくれるんじゃない?
それでも駄目ならScrollToCaretで何とかなるかと。
>>78 既出。文字列の末尾を選択すればスクロールする。
ただしTextBox.HideSelectionプロパティをfalseにセットすること。
IDisposableとusingでできることって、try 〜 finallyで実現できるという理解でよろしいか?
するとusingというのはC++が好きな人のための書き換えに過ぎない?
Webページからリンクを抽出するにはどうやったらいいですか?
ページのソースは取得出来てるんですが。。。
>>83 正規表現クラス使って、「<a href」〜「</a>」をキャプチャすればよいのでは?
見当はずれならスマン
>>83 そのくらいだったら、自分で考えてみるのをお勧めする。
そうでないと言語処理系なんて持ってる甲斐が無い。
冷たいなどと思わずに。
86 :
デフォルトの名無しさん:02/05/30 18:32
>>81 78じゃないけど、HideSelectionプロパティを教えてくれてありがとう。
仕方なくFocus()取得->ScrollToCaret()してた箇所がすっきりした。
うれしー。
87 :
デフォルトの名無しさん:02/05/31 02:33
LoadLibrary()にあたるものって何?
88 :
デフォルトの名無しさん:02/05/31 02:57
windowsフォームのListViewでファイルのドラッグ&ドロップや
IEのリンクのドラッグ&ドロップを受け付けるにはどうすればいいのでしょうか?
ちなみに、テキストのドラッグ&ドロップはサンプルを見たところ、
次のようなイベントハンドラを実装すればなんとなったのですが、、
private void listView_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) {
if (e.Data.GetDataPresent(DataFormats.Text))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
private void listView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) {
String s = (String)e.Data.GetData(DataFormats.Text);
MessageBox.Show(s);
}
ファイルとかリンクの場合が分からないです。
おおっ、まさに望んでいた答えです。
ありがとうございます。
System.Windows.Forms.ListView
のオーナードローについてのサンプルなど
を探しているですが、どこかにありませんでしょうか。
コラムをちょっとオーナードローしてるのは見つけたんですが。
ListBoxでは簡単にできるんですが、
まさかListViewで出来ないなんて思ってなかったので鬱。
94 :
デフォルトの名無しさん:02/05/31 20:14
tlbimp で EXCEL.EXE より Excel.dll を作成。
csc /r:Excel.dll test.cs で test.exe というプログラムを作成。
現在、Excel.dll は test.exe と同じディレクトリに置いてあり問題なく動いていますが、
test.exe から見て bin\ というディレクトリに Excel.dll を置きたいのです。
同じフォルダか、Excel\Excel.dll にないとだめなんでしょうか?
あるいは、csc でコンパイル時に何か指定すれば可能なのでしょうか??
>>94 .configに書けばよろし。
ms-help://MS.VSCC/MS.MSDNVS.1041/cpgenref/html/gngrfprobing.htm
>>95 test.exe.config を
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin"/>
</assemblyBinding>
</runtime>
</configuration>
としてできました、ありがとう♪(^_^)
>>81 それは、TextBox.Multiline=trueではムリっぽいです。
選択はできてもスクロール無し…。
>>80 ScrollToCaretなら大丈夫でしたけどCaret移動のためにFocusが必要になるので、
UIが使いにくくなってしまいました。。
ログと言っても内容をコピーする必要のないものなので、
ListBoxで済ませたいと思います。
ありがとうございました。
>>97 うちでは問題ないですが?
まあ、どうでもいいみたいですね。ListBox使うみたいだし。
ListBoxでもコピーできますがね。
99 :
デフォルトの名無しさん:02/06/01 00:34
できてるけどな…。
t.Multiline = true;
t.HideSelection = false;
の状態で、
t.Select( t.TextLength, 0 );
t.AppendText( "ぱやぱや" );
だよね。
t.HideSelection = true; だと駄目みたいだが。
100 :
デフォルトの名無しさん:02/06/01 00:47
あ、AppendText()はスクロールには余計か。
コピったもんで。w
>>98-100 スマソ、確認しました。できてますね。。
もはや、今までなんでできなかったのかがサパーリ。(爆
ちなみに、
>ListBoxでもコピーできますがね
「任意の範囲でのコピー」が必要ないという意味でした。
ListBoxでは、どうしても行単位になってしまいますよね?
Cでエディットボックスを生で使う場合は、HideSelectionはtrue相当でも
SETSELで末尾を選択してREPLACESELで追加すればスクロールするけどなぁ。
リッチエディットだとHideSelectionをfalse相当にしないとスクロール
しなかった。結局、ログに追加する瞬間だけHideSelectionをfalseにして
追加したらtrueに戻す事で解決したけど。
それにしてもTextBoxの説明読んでると、生でエディットボックス使う
のがアホに思えるくらい便利そうだなー。
生のエディットボックスはAppendTextに相当する機能すら無いよ。
文末を選択してから選択範囲の置換で追加するの。
あるフォームから別のフォームのpublicなメンバを操作するにはどんな手がありますか?
static void Main()
{
Application.Run(new Form1());
}
を
public Form1 forma;
static void Main()
{
forma = new Form1();
Application.Run(forma);
}
とするしかないでしょうか?
104 :
デフォルトの名無しさん:02/06/01 11:18
C#じゃないんですが、VS.NETを買って、Cを実行しようとしてるのですが、
まずはじめに、visual C++ consoleを選んで、Cのハローワールド
などの簡単なプログラムを実行しようとすると”セキュリティーの
ためにプロセスが中断されました”みたいなエラーがでてきて
うまくコンパイルすることができません。
C#のほうは何の問題もなくコンパイルできるのですが・・・
なにをどうすればCのソースをコンパイルできるんでしょうか?
教えてください。
お願いします
105 :
デフォルトの名無しさん:02/06/01 11:21
C#やりたいんですがVSは買いたくありません。
どうすればいいですか?
>>104 そのエラーメッセージをキーワードにぐぐれ、すぐ見つかる。
107 :
デフォルトの名無しさん:02/06/01 11:23
>>105
万引きする
108 :
デフォルトの名無しさん:02/06/01 11:28
>>106 探してみたのですが、それらしいのがどれかわかりません。
お手数ですがもうちょっと詳しく教えてください。
お願いします
>>108 マジかよ、キーワード何入れた?
普通思いっきり1つ目にヒットするが。
110 :
デフォルトの名無しさん:02/06/01 11:37
>>109 英語版のVS.NETを使ってるのでコンパイルエラーが
"The users security settings prevent Project"
とでてくるので、それをサーチしてみたら沢山でてきて
どれがどれだかわからなくて・・・
>>110 後学のために、もしかして英語版だとエラー番号違う?
114 :
デフォルトの名無しさん:02/06/01 12:45
>>111 ありがとうございます。エラー番号は同じでした。
エラー番号で検索していなかったです。
英語版も日本語版も同じなんですね、エラー番号は。
どうもです
>>103 呼び出し先フォームが 1 つしか作成されないことを前提にするのならば,Singleton を使うのも手。
private static Form1 _instance = null;
public static Form1 GetInstance()
{
if (_instance == null) _instance = new Form1();
return _instance;
}
private Form1() // アクセサは private にする
{
// constructor...
}
static void Main()
{
Application.Run(Form1.GetInstance());
}
これなら,別フォームから Form1.GetInstance().member っていう形で呼び出すことができるよ。
>>117 GetInstance()を省略する方法はありますか?
見る前からリンクの色が紫になってたよ。。。
>>119 無理。
どうしても... というんだったら,呼び出し元のフォームに
Form1 main = Form1.GetInstance();
と書いて,main.member と呼び出すのもアリ。
125 :
デフォルトの名無しさん:02/06/02 01:41
TextBoxのKeyPressイベントの
e.Handled = true;にしても日本語が入ってしまう・・・
AxSHDocVw.AxWebBrowserコントロールを継承したユーザーコントロールを
作っています。
やりたいことは、クリックしたlink先URLに応じて使用するブラウザを選択したい
ので、AxWebBrowserコントロールで表示したページのlinkをクリックしたときの
イベントを横取りして独自の動作をさせたい。
クリックしたイベント自体は、BeforeNavigate2で捕らえる事ができましたが
AxWebBrowserコントロール自体の処理は行われてしまいます。(当然ですが、)
どのようにすれば良いでしょうか?
>>126 e.cancel = true にすればブラウザ側の処理はキャンセルされます。
...けど,.NET 環境で BeforeNavigate2 イベント動きました?
前スレにもあったんだけど,BeforeNavigate2 イベントが発生されない...
解決策は SHDocVw.WebBrowser_V1 の BeforeNavigate イベントを使うことなんでしたけど...
C#って、JAVA・VBほど惨くないけど、Delphi未満のアプリしか作れんね。鬱だ・・・
何を作れるかは、作る人間によるってのは無しね。
そりゃ、BASICでも高速Windwosアプリ作れるかもしれないけどさ。俺はやりたくないよ。
>>128 自分にスキルが無いことを言語の所為にするヤシ、ハケーン
>>129 言語っつーよりゃ環境だわな
MS製品はバージョン3から良くなるのは定説じゃない?
VBでやってたようなお仕事は、C#に置き換わるでしょう。
それくらいの能力が、C#にはある。
凝った物を作ろうとするから、問題が出るんです。
与えられた物の範囲内で、機能を実現しましょう。
>>127 そう、BeforeNavigate"2"じゃありませんでした。
>e.cancel = true にすればブラウザ側の処理はキャンセルされます。
ありがとう、やってみます。
133 :
デフォルトの名無しさん:02/06/02 12:02
>>128 激しく無能さん?でなけりゃ、Del万歳厨?ま、なんにしてもネタだね。
P/Invokeなんてあまり使いたくないけど、使わないとまともにUIが作れないね。
135 :
デフォルトの名無しさん:02/06/02 16:19
ワープロのような高度なアプリケーションを
C#でと考えるような奴は厨
>>135 リッチエディットコンポーネントの立場は?
>ワープロのような高度なアプリケーション
素人の方ですか?
C#厨は、WordPadみたいなクズアプリでも、ワープロと呼ぶのかな?
釣られすぎだおまいら。
現状の.NET Frameworkが重い(特に起動)のは事実だから、
この点をつっこまれたらC#erは下唇噛んで頷くしかないな。
でも、言語仕様はイイぞ。override周りが少々気に食わんが
概ね好みだ。Java以上のシェアとかC++並みの実行速度とか
無茶は言わんから、せめてVBを駆逐してくれれば・・・(無理)。
VB駆逐まではいかなくても、
新しいバージョンのAccess、Excelには
C#風の言語での開発も出来るようにしてホスィ。
144 :
デフォルトの名無しさん:02/06/03 00:31
VS.NETが.NETで動作していることを知らないのか・・・。
145 :
デフォルトの名無しさん:02/06/03 00:32
[DllImport]使ってDLLの関数を呼び出しているんですけど、
その関数使わないとDLLそのものがロードされないようなのです。
関数を呼ぶよりも前にDLLをメモリにロードしておく方法はないですか?
LoadLibraryをDllImportするとか・
>>146 やっぱりそんな方法しかないですか(;´Д`)
>>142 PreJITでもまだ遅い?
っていうかPreJITって実装されてたっけ…?
>>148 つかngenしても一発目の.NETアプリの起動は激遅い。
何とかしてくりMSタン
System.IO.FileSystemWatcher つかってファイルの更新を監視したいと思ったら・・・
ファイルを変更したときに「Renamed」のイベントハンドラに処理が飛ばされる・・・ショック
>>149 ngen…かぁ。
それでもダメなのはイタイぞ.NET。
>>142 142のVBはこれまでのVBか?それともVB.NETか?
VB.NETはC#と肩を並べられる程度の能力がある。
まぁ、クラスライブラリが共通だからだが。
一発目の起動が遅いなんてのはサーバーサイドでは問題にならない。。。Javaでも.NETでも
とか言ってみるテスト
154 :
デフォルトの名無しさん:02/06/03 11:55
.net studioのideで、コンポーネントのclick イベント以外のイベントハンドラ
はコードを自動生成する方法ないんでしょうか?
デル厨なもんで、これが面倒くさくてたまりません。
>>154 プロパティウィンドウの雷マークのアイコンクリックしてみ。
156 :
デフォルトの名無しさん:02/06/03 12:09
>>155 おー!こんなところに隠れていたのか!サンクスです!
今までしこしこコード書いてたのがあほみたいっす
訳もなくパソコンに詳しい振りをせずに本色を現わしなさい世の中で第一
さもしくて卑怯なやつらよ汚いやつらカアックトェ!!!!!!!
トェトェトェ!!!!!!
汚いやつら地球上で消えてしまいなさい!!!!! カアックトェ! 与えなさい
お前のたまに運ゲイツ奴ら汚いやつらさもしいやつら疎ましいやつら
あなたたち見ていれば吐くようだ分かるのか? この汚くて邪悪学高疎ましいやつら
カアックトェ~! トェトェトェ変態やつら汚いやつら変態無理集団変態たち
鼻持ちならない吐くようだあなたたち見ていれば 1年前に買ったWin2000上って来ようとする
分かるのか? 是非消えなさいこの邪悪で汚くてさもしいMSの奴隷よカアックトェ!! トェトェトェ!!
カアアックトェトェトェ!!!!!!
------ カアックトェ!! トェトェトェ!!
カアアックトェトェトェ!!!!!!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
´ ヾ
゛ (⌒) ヽ
((、´゛))
||||||
||||||
∧_∧
<丶`Д´>∩
(つ 丿
( ヽ ノ
し(_フ
158 :
デフォルトの名無しさん:02/06/03 18:28
すんません
string []Mailer = RegMailer.GetSubKeyNames();
みたいな感じで配列に入れたときに
何個配列ができてるか?(=何個配列があるのか)調べるにはどうしたら
いいんでしょうか?
System.Array.Length
160 :
デフォルトの名無しさん:02/06/03 18:30
>>159 あんがと!
調べても出てこない俺はまだ初心者だね・・・。
<ぐち>
最近やること成すこと全然うまくいかない…
FileSystemWatcher で changedのイベント発生しないし、
Assembly.Load("System.Data");で FileNotFoundException とか言われるし…
何が悪いのかさえわからないんじゃ質問のしようもないし…
とほほ…今日一日で5行しか書いてないよ…
</ぐち>
OpenWatcomを落としたのですが、
落としたアイコンをダブルクリックすると
Could not intialize inst・・(省略)・・パラメータが正しくありません。
とでてOKをクリック(OKしかない)すると元の画面に戻ります。
何度やっても同じです。
どうすればいいでしょうか?
164 :
& ◆UMzR.EvE :02/06/03 23:12
C#とC++ってまったく別物と考えて正しいのでしょうか?
C# > C++ ではないですよね?
>>164 CからC++のときと違って、
C#はこれらの直線上にあるものではないから比較は無意味
よく言われるけどC#はC++よりもむしろJavaに近い。
>>164 むしろJavaと比較した方がマシかと。
C#の正式名称はJava++だと言ってみるテスト。
C#はむしろCの進化形な気がするよと言ってみるテスト。
170 :
デフォルトの名無しさん:02/06/03 23:49
素人目にはVBと見た目が似てたと言ってみるαテスト
これから徐々に勉強するから許して・・・(涙
171 :
デフォルトの名無しさん:02/06/03 23:58
配列をIntPtrにキャストする場合、どうすればよいでしょうか?
C/C++なら…
Byte[] p = new Byte[100];
int* z = (int*)p;
と記述できますが、C#だとわかりません。
unsafe使わないでやりたいのですが、どうすればよいのでしょうか?
そりゃ配列はポインタでねぇんだからキャストなんぞできねぇべ
>>171 C#の配列はSystem.Arrayから派生するオブジェクトだというのが
C/C++との決定的な違いだよん
>>171 unsafe使うのとほとんど変わらないんだけど、こんな感じ。
byte[] b = new byte[100];
GCHandle handle = GCHandle.Alloc(b, GCHandleType.Pinned);
IntPtr ptr = handle.AddrOfPinnedObject();
...
handle.Free(); // ← 忘れずに!!
>>171 キャストじゃなくコピーになるが・・・
Marshal.Copyメソッド
素直にunsafe使うか、自前の配列クラスを作るのが吉
みんなありがとう!!
やはりここは素直にunsafeを使う方向で考えてみます。
配列と同様に、クラスのキャストもしょーがないんですかね。
C#は、メインストリームになるという(幻想を)植え付けるため、
現在の主流C++から名付けた。(C -> C++ -> C++++)
しかし実体は、JAVA+VBといった色合いが濃い。
>>179 C#に不利な意見だけ、誤爆というのはどうかなぁ。
164-165-166-167-169-170-171の流れでしょう。
C#でクライアントソフトってのは、現実的にどうよ?
シェアウェアつくりたいんだけど、俺はこのままC#でいいのか?
みんなの率直な意見を聞かしちくれ。
>>180 わざわざ、質問スレ荒らすなってことでしょう。
他にもやりあってるところはいくらでもあるんだから、そっちでやれと。
>>178 同意
>>182 別に荒らすつもりは無いけど、俺もC#って名前は気に入らない。
C/C++ユーザーを強引に取り込むつもりなんだろうけ、
中身はC++とは似ても似つかないし。
J#だったらまだ良かった。
>>181 C#でかちゃ〜しゃクローンを作ってちょ。あんま意味ないけど。
C# = (Java + Delphi + C++) / 3 でいいじゃん
せっかくだからBorlandにはD#作って欲しいな
186 :
デフォルトの名無しさん:02/06/04 12:49
C# = (Java + Delphi) / 2 でいいじゃん
C# = (Java(機能) + Delphi(ヘジたん) + C++(記法) )/3
>>188 namespaceや継承の書き方など。
それ以外にC++とC#の共通点がいまいち見えてこないが。
>>189 テンプレートでも載ってれば堂々といえたのにね。
もうやめようぜ。JAVAと比べてどうとかは、激しく既出。
他でやってね。
>>191 良くなったC++とか言ってれば、他へ行けとか言われないのにね。
193 :
デフォルトの名無しさん:02/06/04 14:30
このスレでは、C#は進化したC++って結論で。
もう、話を終わりにしようや。
宗教戦争は隔離スレでやってくれ。
195 :
デフォルトの名無しさん:02/06/04 16:26
TextBoxでEnter押したときのBeepってどうやって止めるのですか?
ブザー(音源)を全部はずす。
>>195 APIでやるか、デフォルトボタンおくか、Multilineにするかではないかな。
自分の気に入らないメソッドを全部空メソッドでオーバーライドして無効化しろ
>>195 こんな感じで。
class TextBoxEx : TextBox {
protected override bool ProcessDialogKey(Keys keyData) {
if (keyData == Keys.Enter) {
return true;
}
return base.ProcessDialogKey(keyData);
}
}
199さんの方法でできました、感謝。
ブザーを外すってのもなかなか魅力的なアイデアだったのですが...
201 :
デフォルトの名無しさん:02/06/04 17:19
Windows Service(旧 NTサービス)アプリケーションを作っているのですが、
OnStart メソッド処理中に例外が発生した場合、サービスを停止させたいと思い、
Catch 句の中で ServiceController クラスの Stop メソッドを呼んだのですが、
イベントログを見ると、以下のようなエラーが出てしまいました。
----
サービスを開始できません。System.InvalidOperationException:
サービス bluebirdservice がコンピュータ '.' で見つかりませんでした。
---> System.ComponentModel.Win32Exception: 指定されたサービスは
インストールされたサービスとして存在しません。
----
これを回避する方法が分からないのです。
ご存知の方、ご教授ください。。。
>>202 ServiceController.Statusはどうなってるの?
Runningじゃなきゃ止められないのは当然。
>>203 ありがとうございます。
Status値を調べてみようと、OnStart メソッド内(とTimer.Elapsedイベント内)で
//private ServiceController srvctrl; で定義済み
srvctrl.Status.ToString()
とやって Status を確認しようとしたのですが、System.InvalidOperationException が
発生して確認できませんでした(EventLogに書き出しても、IDEのクイックウォッチ使っても)。
#その後の Stop() で、所望のサービス停止そのものは行われているのですが…
> Runningじゃなきゃ止められないのは当然。
とのことなので、System.Timers.Timer.Elapsed イベントと ServiceController.Status を
組み合わせて、Running の時に停止させるようにしたいと思います。
が、Elapsed内でもStatusを確認できません(サービスを正常に起動させてみても、です。)
ServiceController.Status の確認はどうやればいいのでしょうか? 度々すみません…
>>204 ServiceController.ServiceNameをちゃんと設定してる?
あるいはコンストラクタで。
でもよくよく考えてみると、サービス内でServiceControllerを使うってのも何か変だな。
他のサービスを操るならともかく。
Multi Column なTreeViewを作成したいと思っているのですが、
ヘルプを調べた限りでは正攻法では無理みたいですね。
Webで調べてみましたが、なかなか見つかりません。
なにか参考になるサンプルなどありませんでしょうか?
>206
>Multi Column なTreeView
ってどんなの?
>>205 ありがとうございます!エラーの原因が分かりました。
ServiceController.ServiceName にはサービスの「表示名」を指定するのが
正しいことが分かりました。Timer.Elapsed イベント内で Status を見てサービスを
(例外を発生させずに)停止させられることも確認できました。
今までは IDEで生成された InitializeComponent() の中にある、
this.ServiceName = "bluebirdservice";
この名前↑を使ってましたが、表示名が「bluebird service」となっていたため、
サービスの制御が出来ていませんでした。Stop()メソッドを実行した際に
サービスが停止していたのは、「停止」ではなく「異常終了」だったことになります。
お騒がせしてすみませんでした。
>でもよくよく考えてみると、サービス内でServiceControllerを使うってのも何か変だな。
>他のサービスを操るならともかく。
確かに違和感を持ったのですが、私がヘルプを調べた限りでは、サービスの挙動を制御する
メソッドを持っているのは「ServiceController」しか見つけられなかったもので、とりあえず
使ってます。
>>208 ありがとうございます。
しかし厳しいですね。私の手に負えません。MFCは、、
>>195 もう解決済みみたいだけど、
KeyPressイベントでEnter押下のときにe.Handled=Trueでどう?
従来の方法そのまんまだけど、試してないので、いけるかどうか不明。
>>211 バッチリです。サブクラス化する必要なんてなかったのか・・・。
TextBoxに漢字で入力したら別のTextBoxにフリガナを自動で入れるのは、
VB6同様APIを使わないと駄目なようですねぇ
めちゃローカルな機能だから仕方ないか。
DateTimePickerコントロール(日付入力)には、
BackColorプロパティが無いのですが、
どうにかして背景色を変更できないでしょうか?
DateTimePickerを継承したコントロールを作っています。
216 :
デフォルトの名無しさん:02/06/05 15:40
>>215 dateTimePicker1.BackColor = System.Drawing.Color.Yellow;
これ自体はコンパイル通るね。
マニュアルにもあるし。
でも確かに反映はされないな・・・。
217 :
デフォルトの名無しさん:02/06/05 15:50
>>217 意外と簡単にできたよ。
const int DTM_SETMCCOLOR = 0x1006;
const int MCSC_MONTHBK = 4;
[DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
で、適当なところで
SendMessage(dateTimePicker1.Handle, DTM_SETMCCOLOR, new IntPtr(MCSC_MONTHBK), new IntPtr(0xdddddd));
色の設定は0xbbggrrで。
これぐらい作った方がいいか。
[StructLayout(LayoutKind.Sequential)]
struct COLORREF {
public byte Red;
public byte Green;
public byte Blue;
public COLORREF(byte red, byte green, byte blue) {
Red = red;
Green = green;
Blue = blue;
}
}
で、SendMessageのlParamをCOLORREF型に変えればよろし。
こうすりゃいいか。
[DllImport("user32.dll")]
public static extern COLORREF SendMessage(IntPtr hWnd, int Msg, int wParam, COLORREF lParam);
>>220 ついでに
property RGB
{
get
{
return = Red * 255 * 255 + Green * 255 + Blue;
}
}
みなさん、背景色の対策ありがとうございます。
しかし・・・色が変わるのはカレンダーのポップアップしてくる
ウインドウの背景だけで、目的のポップアップしていないときの
テキストボックスみたいなのの背景は白いままです。
ちなみに今回APIで変更できた部分は普通にプロパティで変更できます。
副産物的に良いAPIの使い方のサンプルになったので、
これを応用してフリガナ自動入力もチャレンジします。
DateTimePickerにはBackColorが有るんだけど動かないですね。
あと、Clickイベントも全然入らないですね。
せっかくのインターフェースとかの言語仕様が泣いてるぞぉ。
>>223 > ちなみに今回APIで変更できた部分は普通にプロパティで変更できます。
ああああああああああああああ。やってもうた・・・。
DateTimePickerってValueChangedも登録してイベント発生まで
行くんだけど、その後、プロパティからイベントの表示が消えたり不気味ですね。
VB6の時も標準的ではないコントロールで不気味なやつがありましたが、
C#でも派手ぎみのコントロールは使わない方がいいのかも?
とりあえずこんなことがありましたと言う報告を・・
ユーザーコントロールの上にTextBoxを2個置いてコントロールを作ると、
開発環境を終わらせるなどのなんらかのタイミング以後、
そのコントロールのデザインの表示でエラーが起きます。
「メンバ'Size'の宣言が重複しています。」
もともとは、TextBoxを継承したコントロールを2個のせて
起きたのですが、普通のTextBoxでも起きるみたいですね。
環境は、WinXpPro VS6Ent VS.NET OfficeXp IE6 です。
そのコントロールを使ったフォームの表示には問題ありません。
直接ソースをさわってユーザーコントロール上のTextBoxを
削除すると正常に戻ります。
気づいた報告はここではなくM$へ・・・
SPで直してもらいたいので
DirectInputを使って,キーボードの入力を取得したいのですが,
データ取得の段になってエラーが出てしまいます.
もしかしたら初期化部分でパラメータの設定に失敗しているのかもしれませんが,
なにぶん資料が少ないのでどうすればいいのかわかりません.
using DxVBLib;
//初期化部分
DirectX7 Directx = new DirectX7();
DirectInput DInput = Directx.DirectInputCreate();
DirectInputDevice DIKeyboardDev = DInput.CreateDevice("GUID_SysKeyBoard");
DIKeyboardDev.SetCommonDataFormat(DxVBLib.CONST_DICOMMONDATAFORMATS.DIFORMAT_KEYBOARD);
DIKeyboardDev.SetCooperativeLevel(this.Handle.ToInt32(),
CONST_DISCLFLAGS.DISCL_NONEXCLUSIVE |
CONST_DISCLFLAGS.DISCL_BACKGROUND);
DIKeyboardDev.Acquire();
//データ取得部分
DxVBLib.DIKEYBOARDSTATE kState = new DxVBLib.DIKEYBOARDSTATE();
DIKeyboardDev.GetDeviceStateKeyboard(ref kState);//ここでエラー
成功した方いましたら,方法を教えてくれませんでしょうか
230 :
デフォルトの名無しさん:02/06/05 22:13
C# Standardだと、IDEからdllにコンパイルでけんの?
>>230 standardはクラスライブラリは作れなかったような・・・
DOSから叩け、叩け、叩けぇ〜
プロジェクトのテンプレートをゲトすれば出来るんでなかったけ
Terrariumあたりでそんな噂を
ひどい(;; )
違法じゃないよぅ
MSの公式サイトにも書いてあるはず
Regexでワイルドカードはどう使ったらいいんでしょう?
"abfcd"と"abgcd"を取り出したいんですが何も表示されないんです。
public class TestClass
{
public static Regex regex = new Regex("ab*cd");
[STAThread]
static void Main(string[] args)
{
foreach(Match match in regex.Matches("abfcdmmmmabgcd"))
{
if(match.Success)
Console.WriteLine(match.Value);
}
Console.ReadLine();
}
236 :
デフォルトの名無しさん:02/06/06 02:48
君ほどじゃないと思うけど。
正規表現リファレンス見れ
MSDNライブラリにあったはず
239 :
デフォルトの名無しさん:02/06/06 02:56
>>235 ワイルドカードと正規表現は違う。
Regexのヘルプの関連リンクチェックしてみ。
ワイルドカード相当の正規表現は "..*" でいいのかしらん
acdとか、abbbbbbbcdとかならひっかかるだろうねぇ。。
あ、タイミングわるいな。あれは「*だったら」。
ワイルドカードは.*でよいんじゃない?
.+のような気もしないでもないけど。
ワイルドカードの性質を忘れてしまったよ。
"ab(.*)cd" だと "abfcdmmmmabgcd" が丸ごと引っかかってしまうな・・・。
.*? ならいいのか。
>>246 ms-help://MS.NETFrameworkSDK.JA/cptools/html/cpgrfnativeimagegeneratorngenexe.htm
>>211 遅レスですがこちらでも確認しましたm(__)mカンシャ
で、今はShift+Enterの時に前のコントロールに戻るってのやろうとしているんですが...(涙)
>>247 ngen.exeって単体で配っていいのかな?再配布パッケージだと
パス通ってなくてbatファイルでngenさせられないしさ。
インストーラ作るしかないのかな。
>>250 ユーザーにいちいちパス通させることはできんでしょ。
>>247 ありがとうございます。
すごい!ngen.exe
コンパイル済みをキャッシュさせるなんて方法もあったんですね。
起動速度は全然問題なしになりました。
さて・・自動でキャッシュさせる方法ですね。
VS.NETが自動生成したフォームにunsafeコードを追加し
IDEでImageListを追加し、ImageListのプロパティウィンドウから画像を追加し
起動するとInitializeComponent()内の(1)のところで
下記のような例外がでてとまってしまいます。
unsafeコードが無ければ例外はでません。宜しくお願いします。
「An unhandled exception of type 'System.Resources.MissingManifestResourceException' occurred in mscorlib.dll
Additional information: 指定されたカルチャ (またはニュートラル カルチャ) に必要なリソースがアセンブリに見つかりません。
"Form1.resources" が、アセンブリ "TreeView" に正しく埋め込まれているか、またはリンクされているかを確認してください。」
(1)
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
>>248 かなり無理矢理っぽいけど,確実にやるなら以下の方法が一番...かも。
>>199 と同じようなクラスを作って,
protected override bool ProcessDialogKey(Keys keyData) {
bool IsEnterPressed = (keyData & 0xffff) == Keys.Enter;
if (IsEnterPressed && (keyData & Keys.Shift) != 0) {
// Shift+Enter の処理
return true;
} else {
return base.ProcessDialogKey(keyData);
}
}
イベントハンドラを作って,Shift+Enter のところでイベントを発生させて,
テキストボックスを置いてるフォームで処理するようにしたほうが楽かも。
255 :
デフォルトの名無しさん:02/06/06 17:29
今日出た[Visual C# .NET実践講座]の本はどうですか?
情報お願いします。
256 :
デフォルトの名無しさん:02/06/06 17:40
256げっと
(keyData & (Keys)0xffff) == Keys.Enter; ってやらないと動かないね...
今気付いたよ (´・ω・`)ショボーン
>>257 感謝ですm(__)m
何とか期待した動作になりました。
(皆さんのソースのコピペですが...)
protected override bool ProcessDialogKey(Keys keyData)
{
bool IsEnterPressed = (keyData & (Keys)0xffff) == Keys.Enter;
if (IsEnterPressed && (keyData & Keys.Shift) != 0)
{
// Shift+Enterの処理
this.Parent.SelectNextControl(this, false, true, true, true);
return true;
}
else
{
if (keyData == Keys.Enter)
{
// Enterの処理
this.Parent.SelectNextControl(this, true, true, true, true);
return true;
}
else
{
return base.ProcessDialogKey(keyData);
}
}
}
と、しておきました。
これからIME起動の禁止、数字のみの入力等々と拡張していきたいのです...
フォームクラスでこんな感じでどう?
protected override bool ProcessDialogKey(Keys keyData) {
if (keyData == (Keys.Shift | Keys.Enter)) {
keyData = Keys.Shift | Keys.Tab;
}
return base.ProcessDialogKey(keyData);
}
>>258 これでどう?
protected override bool ProcessDialogKey(Keys keyData) {
if ((keyData & Keys.Enter) == Keys.Enter) {
keyData &= ~Keys.Enter;
keyData |= Keys.Tab;
}
return base.ProcessDialogKey(keyData);
}
>>257 どうしてその演算子の腐った優先順位受け継いじゃったんだろうね
>>260 動きました!
こんな簡素に書けるのですね(^^ゞ
やはり基本から勉強しないとイカンですね。
VBではサードパーティのコントロール使いまくりで
こういった事を全くやらなかったので戸惑うことばかりです。
263 :
デフォルトの名無しさん:02/06/06 19:18
NotifyIconでタスクトレイに入れたアイコンをダブルクリックした時に
フォームを表示させようとして・・
notifyIcon1_DoubleClickに
this.Enabled = true;
this.ShowInTaskbar = true;
を書いたんですが・・・タスクバーに出るだけでフォームがでないんですが・・
こんな馬鹿にお助けを。
>>263 this.Visible = true; にするだけでいいと思われ。
ってか、ShowInTaskbar はここでは関係ないような・・・。
265 :
デフォルトの名無しさん:02/06/06 19:57
>>264 ありがとございます。
ただ問題がタスクバーではアクティブなんですが画面には表示されて
ないんです・・・これは俺のマシンがおかしいと言う事?
266 :
デフォルトの名無しさん:02/06/06 20:52
C#のstanderdを買いました。
VC6.0のようにビルドオプションを変更するのは
どこでやればよいのでしょうか?
267 :
デフォルトの名無しさん:02/06/06 21:14
プロジェクトのソリューションエクスプローラでプロパティ
のとこにあるやつ?
これはバグなんだろうね、、、
デスクトップにある0バイトのファイルを開いて閉じると
アセンブリのあるディレクトリが変更されて、
アセンブリがデスクトップにあることになってしまった。
アセンブリのルートにある設定ファイルなどに、
アクセスできなくなったので調べてわかった。
試しに、コンパイラの最適化オプションでビルドすると再現しない。
また、単純化したコードで上記を再現しようと思ったけど再現しないし、、
アセンブリの操作なんて何にもしてないんだけどね、、
これじゃ単なる愚痴だね。スマソ
のどこですか?
270 :
デフォルトの名無しさん:02/06/07 16:12
>>266 MSDN検索しろ。ビルドオプションでもちゃんと出てくる。
知ってるなら、教えてくれてもいいのに。。。
へ ヘ
/ \ / \
/ \__/ \
/ \
/ O O | C#のいい本がないの
| ⌒ ∪ # |
| | ___
| | /\
/ \_ ___ __ ノ / \
/| ̄ ̄ ̄| | | |  ̄ ̄ ̄| \ \
/ | \_/ \_/ | \ /
| | \/
| | |
| | /
|_______________|/
>>268 原因がわかりましたが、対処法がわかりませんので宜しくお願いします。
デスクトップうんぬんは関係ありませんでした。失礼しました。
実行ファイルがあるフォルダに相対パス".\\"でアクセスしています。
この時、OpenFileDialogでファイルを選択した後、
".\\"がOpenFileDialogで選択したファイルの親フォルダになってしまいます。
簡単な再現コードです。ボタン2つのクリックイベントです。
private void button1_Click(object sender, System.EventArgs e){//ファイル選択ダイアログ
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "All files (*.*)|*.*" ;
string[] fileName = null;
if(openFileDialog1.ShowDialog() == DialogResult.OK){
fileName = openFileDialog1.FileNames;
System.IO.FileStream stream = new System.IO.FileStream( fileName[0] , FileMode.Open);
stream.Close();
}
}
private void button2_Click(object sender, System.EventArgs e){//アプリのフォルダ開きます。
System.Diagnostics.Process.Start( ".\\" );
}
相対パス使うこと自体がまずいのかな。長くなって申し分けありません。
>>277 Application.StartupPath じゃダメなの?
>>278 いいのですが、
ソフト使用する人が相対パスでパス指定したら面倒だなぁと思いまして。。
これは普通の仕様なんでしょうか?ちょっとびっくりしたのですが、、
追記。
.\ はあくまでカレントディレクトリなので,実行ファイルがあるフォルダとは限らないよ。
ショートカットを作って,「作業フォルダ」に別のパスを指定すれば,そこがカレントディレクトリ .\ になる。
アセンブリのあるディレクトリを取得する場合は,
>>278 の通りです。
>>280 よくわかりました。どっちにしても.\でアセンブリのあるフォルダに
アクセスするのは危険なんですね。
278さん ありがとうございました。
アセンブリのあるディレクトリは
Directory.GetCurrentDirectory()
で取れるよ。
>>279 >これは普通の仕様なんでしょうか?
OpenFileDialog(内部的にはCommonDialog)を使っているからです。
普通の仕様です。
>>283 思いっきりカレントディレクトリじゃん(w
>285
DLLを別ディレクトリに配置して、その中で呼んだ場合はDLLのあるディレクトリが取れるよ。
Application.StartupPathだとDLLから呼んでも常に起動アセンブリのディレクトリが取れる。
そういう話じゃないの?
>>288 Webページを印刷しただけかよ!(;´Д`)
System.Reflection.Assembly.Location
>>276 で早速いれようとしたのですが...。
Win2kProに、.NET Framework SDK日本語版入れた環境で、 WindowsUpdateして、
Q322289 ASP.NET ワーカー プロセスに未チェックのバッファが含まれる
Microsoft .NET Framework Service Pack 1 (SDK を適用した英語版)
と表示され、上は直接実行ファイルをダウンロードして実行したら、SDKの中身を要求されたので
展開して指定したらすっきりインストールされた。
しかし、下は二度同じ操作をやってもダメだし、実行ファイルでもだめでした。
うまく入った人います?
298 :
デフォルトの名無しさん:02/06/08 01:18
前にも出てたけど
Visual C# .NET実践講座ってのもある。でたばっかで見た事ないけど。
299 :
デフォルトの名無しさん:02/06/08 01:46
Inside Microsoft .NET IL Assembler
という本がお勧めです。
.NET使うプログラマは必読です。
300 :
デフォルトの名無しさん:02/06/08 02:54
激しく基礎だが、
「始めよう!C#」(日経BP)とか、わかりやすいかと。
無難に独習C#でよいかと。
302 :
デフォルトの名無しさん:02/06/08 04:19
入門書に良書なしと思うのは漏れだけか?
5月初めにVB厨からC#の勉強を始めました。
SEの黄色本こと、「C#.NETプログラミング」が
入りやすかったです。しかしサンプルプログラムが細切れなのと
イベントやデリゲートの所がなんのこっちゃさっぱり判りませんでした。
そして、日経ソフトウエアの「始めよう!C#」が発売されました。
これはなかなか良い本です。判りやすい分情報量が少ないので、
もうちょっと詳しい入門書と合わせて読む必要があります。
インプレスの赤本こと、「プロフェッショナルC#」は、堅くて
つらいのですが、ADO.NETとかはここで勉強しています。(下巻)
川俣氏著の「C#がわかる+使える」 は、VBとC#の概念的な違いが
判りやすく説明されているのでオブジェクト指向言語が初めての人に
おすすめです。Web上では読みにくいので必要な所だけを
印字して読んでいましたが、やはり本の方がいいですね。
マイクロソフトのオフィシャル本のたぐいはヘルプがあるから
いりません。買ったけど活躍の場が無いよ。
308 :
デフォルトの名無しさん:02/06/08 13:12
Windowsが終了処理を始めたらある処理をしたいんですが、
Windowsの終了処理の時にアプリが何らかの処理って
できるんでしょうか?
できるのであれば方法お願いします。
Microsoft.Win32.SystemEvents.SessionEnding
別のスレッドから呼ばれるらしい
310 :
デフォルトの名無しさん:02/06/08 13:53
>>309 あ〜こんなとこにあるのか・・・俺も検索下手だわ。。。
ありがとう!
すみません。
どう記述していけばいいのやら・・・ってな状態なんです。
Formsでのボタンのイベントハンドラとかと同じじゃないの?
なんか違うっぽい。イベントバンドラの一覧には無いし。
当然同じ用に記述しても意味不明コンパエラー。
>>313 こんな感じでどう?
SystemEvents.SessionEnding += new SessionEndingEventHandler(〜);
そういうのでやってみたんだけど・・・
戻り値が必要だとか出た。
少し調べてみるわ。
ありがと。
プラグインとして動作するC#製DLLを作る際、LPTSTR型を引数として受け取った時のデータ渡しってどうやればよいの?
ms-help://MS.NETFrameworkSDK.JA/cpref/html/frlrfSystemRuntimeInteropServicesUnmanagedTypeClassTopic.htm
この辺っぽいけど、よくわからなくて。
C#でふりがなを取得するコード書いているんだけどいろいろやっても
うまくいきません。・・・・・・・・ヽ(`Д´)ノウワァァァン
教えて下さい。
------------------------------VBで動くコード
Text1,Text2を配置して以下コードをフォームに置く
Private blnChenge As Boolean
Private Sub Text1_Change()
blnChenge = True '元テキストが変更され
End Sub
Private Sub Text1_KeyUP(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 And blnChenge = True Then '改行キーのアップなら
If Len(Text1) = 0 Then '空白ならフリガナもクリア
Text2 = ""
Else
Text2 = Text2 & S_Furigana(Text1) '新たな変換フリガナを追加
End If
End If
blnChenge = False
End Sub
Public Function S_Furigana(SrcObj As Control) As String
Dim himc As Long
Dim dwSize As Long
Dim strOut As String
himc = ImmGetContext(SrcObj.Hwnd) 'IMEのコンテキスト取得?
If himc = 0 Then 'コンテキストの取得に失敗
S_Furigana = ""
Exit Function
End If
'取得サイズを取得
dwSize = ImmGetCompositionStringSize(himc, GCS_RESULTREADSTR, 0, 0)
strOut = Space$(dwSize + 1) 'バッファの確保
'strOutに値を取得
dwSize = ImmGetCompositionString(himc, GCS_RESULTREADSTR, strOut, dwSize)
ImmReleaseContext SrcObj.Hwnd, himc 'コンテキストの解放
S_Furigana = Left$(strOut, Len(strOut) - 1) '値を整理
End Function
------------------------------C#でいろいろやったけどコンパイラに通すことすら出来ないコード
IntPtr GCS_RESULTREADSTR = (IntPtr)0x200;
[DllImport("imm32.dll")]
public static extern IntPtr ImmGetContext(IntPtr hWnd);
public static extern IntPtr ImmGetCompositionStringSize(IntPtr himc, IntPtr dw, IntPtr ipv, IntPtr dw2);
public static extern IntPtr ImmGetCompositionString(IntPtr himc, IntPtr dw, String ipv, IntPtr dw2);
public static extern IntPtr ImmReleaseContext(IntPtr hWnd, IntPtr himc);
private void textBox1_TextChanged(object sender, System.EventArgs e)
{
IntPtr himc;
IntPtr dwSize;
string strOut;
// byte[] bytOut;
himc = ImmGetContext(textBox1.Handle);
if (himc != (IntPtr)0)
{
dwSize = ImmGetCompositionStringSize(himc,GCS_RESULTREADSTR,(IntPtr)0,(IntPtr)0);
byte[] bytOut = new byte[(int)dwSize + 1];
dwSize = ImmGetCompositionString(himc,GCS_RESULTREADSTR,(IntPtr)bytOut,dwSize);
}
himc = ImmGetContext(textBox1.Handle,himc);
label2.Text=bytOut;
}
>>318 System.IntPtr っぽいです。
>>321 サンキュ。
でも悲しいほどに疑問だらけ。
IntPtrの指すメモリにstringを書くには?
ついでに、FARPROCはどうすれば??
#VC++6.0のほうがよいのか?持ってないけど。。
>>318 [MarshalAs(UnmanagedType.LPTStr)] string 〜; という感じでどう?
>>322 私の長いソースの疑問もAPIへの文字列渡しの問題が入ってます。
シコシコしらべよう。
>>320 いちおう動いたけど、ふりがなの後ろにゴミがついたりつかなかったり。
const int GCS_RESULTREADSTR = 0x0200;
[DllImport("imm32.dll")]
static extern IntPtr ImmGetContext(IntPtr hWnd);
[DllImport("imm32.dll")]
static extern int ImmGetCompositionString(IntPtr hIMC, int dwIndex, StringBuilder lpBuf, int dwBufLen);
[DllImport("imm32.dll")]
static extern bool ImmReleaseContext(IntPtr hWnd, IntPtr hIMC);
private void textBox1_TextChanged(object sender, System.EventArgs e) {
IntPtr himc = ImmGetContext(textBox1.Handle);
if (himc == IntPtr.Zero) {
return;
}
try {
int dwSize = ImmGetCompositionString(himc, GCS_RESULTREADSTR, null, 0);
StringBuilder lpBuf = new StringBuilder(dwSize);
ImmGetCompositionString(himc, GCS_RESULTREADSTR, lpBuf, dwSize);
label1.Text = lpBuf.ToString();
}
finally {
ImmReleaseContext(textBox1.Handle, himc);
}
}
長さを再調整すれば大丈夫みたいね。
lpBuf.Length = dwSize;
label1.Text = lpBuf.ToString();
>>323 おお、いい感じ。
でもどうもうまくいかないから、もしかしてDLLの作り方が間違ってるのかと思って
やたら単純なものを作って試してみたんだけど。。
//testdll.cs (/target:library)
using System;
using System.Runtime.InteropServices;
namespace testdll {
class testdll {
public static int Start(){
return 1;
}
}
}
//testexe.cs
using System;
using System.Runtime.InteropServices;
class testexe {
[DllImport("testdll.dll")]
public static extern int Start();
static void Main() {
int res = Start();
Console.WriteLine("{0}", res);
}
}
この二つをコンパイルしてtestexe.exeを実行すると、
ハンドルされていない例外 : System.EntryPointNotFoundException: DLL testdll.dll
の Start というエントリ ポイントが見つかりません。
at testexe.Start()
at testexe.Main()
…鬱。
おお!ありがとうございます。
>>326 さん
それを元に問題点を探索して・・
label2.Text=string.Empty;
for(int i = 0;i < dwSize;i++)
{
label2.Text=label2.Text+lpBuf[i].ToString();
}
だと上手く行く事が判明。さらに・・と調べていると、
>>327さんの書き込みありがとうございます。
Lengthで長さの調整が出来るなんて思いもよらなかったです。
ついでに、VB6で言うところのMID関数も発見!
public StringBuilder Append(char[], int, int);
>>323 DllImportはunmanaged (C++とかで作ったDLL) に対して使うものだぞ。
>>330 ms-help://MS.NETFrameworkSDK.JA/cptutorials/html/a_component_in_c_.htm
managedなDLLは/r:での指定だったのか。ありがと。
#ついでに、testdllのクラスにpublicをつけ忘れてる。。
となると、unmanagedなクライアントに読み込ませるmanagedなDLLを作るにはどうすれば??
classという枠がジャマになっているような気がするんだけど。
>>332 また、大はずししそうですが、C#のコンポーネントをActiveXにする
ラッパで被せてそのActiveXをunmanagedなVCでつくるDLLに
再度ラップするしかないのかなぁ?
ms-help://MS.NETFrameworkSDK.JA/cpguidenf/html/cpconinteropmarshalingoverview.htm
正攻法ではできないくさい。VS.NETを注文したところなのに、イタイ。。
>>333 やっぱそのあたりしかないのかな。うぅ、めんどくさい。
というかVC++6.0コンパイラって無償配布されてます?
うーん それは知らないなぁ。少なくともVB6では普通のDLLが
作れないのですね。だからいつもVBだったけど作れない部分だけ限定的に
VC6使っていました。
似たような話ですがC#は起動が遅いので、アンマネVCでスプラッシュ画面を出して
すぐC#をキックして起動の遅さを誤魔化そうかなと思います。
以前のレスでキャッシュを作る方法だけどその後、再度やってみたら
早くならない・・なんでだろう? これももうちょっと調べよう。
ふりがなの件、その後も上手くいってます。感謝!!
私の勘違いの可能性も多々ありますが、以下のような現象があります。
問題:クラスのprivateのフィールドをそのクラス内のメソッド中で認識しなくなる。別の同様のフィールドで認識できるものもある。
対策:フィールドのprivateをはずす。
問題:ユーザーコントロールにTextBoxやLabelを複数置くとデザインの画面でSizeが重複していると怒られる。
対策:ユーザーコントロールのデザインは一発で決める。
問題:1カ所でしか定義していない列挙型に対して、複数の場所で定義していると編集中に警告が出るが、コンパイルは問題がない。
対策:シカトする。
>Char 値型は、Unicode 文字を 16 進数値 0x0000 〜 0xFFFF で表します。
ってあるんですけど、具体的に文字コードとしてはUTF-16なんですか?
そもそもUnicode文字ってなんぞや。
16ビットだし、UCS-2のこと?
文字コードには疎いので変なこと言ってたらワラってちょ
338 :
デフォルトの名無しさん:02/06/09 11:42
>>314 その方法で少しイジればできました。
ありがと。一応報告。
>>334 >というかVC++6.0コンパイラって無償配布されてます?
MSDNのPro以上ならダウンロードできるというかCDが送られてくる。
>>337 charsetはUCS2相当で、encodingはUTF16相当。
>>340 サンクス
相当ってことは完全にUTF-16ではない?
サロゲート無しってところ?
>アンマネVCでスプラッシュ画面を出してすぐC#をキックして
いいね。VSにスプラッシュウィザードがつくともっとよい
相当ワルの相当?
完全対応なんて言ったらキチガイが騒ぎ出すからだろ
>>335 >以前のレスでキャッシュを作る方法だけどその後、再度やってみたら
>早くならない・・なんでだろう? これももうちょっと調べよう。
たぶんJITコンパイルよりも、巨大なランタイムのロードの方がボトルネックということでしょうな。
.NETアーキテクチャの場合、アセンブリ全体をスキャンして不正な改変がないかチェックするから
巨大なランタイムだと起動が遅くなるんだと思います。
>>345 ちがいます。CLRはGACからロードされたあせんぶりの署名チェックはしません。
>>337 内部でどのようにデータを持っているかということと、それを外部に
どのように出力するのかは分けて考えましょう。
というわけで、CharはUTF-16でもUTF-8でもSJISでもありません。内部では
Unicodeで表せる文字をすべて格納できる形式でデータを持っています。
それをUTF-16で出力することもSJISで出力することもできます。
>>348 ども。
文字コードには疎いながらも気になったのは、サロゲートとかあると一文字が16bitで表現できないことです。
stringはcharの配列(みたいなもの)ですが、hoge[5]とか指定したときに一文字を取り出せないことを
危惧しなければならんのか?とかが気になったもので。
あとバイト数/2が文字数でないという現象が生じたりするのか?とか。
そーゆーことはないと思ってていいんでしょうか。
あ、あと文字コードを直接数値で入力するツールとか作ったときに内部表現がどうしても気になるとかもあります。
現在の日付と時刻はどうやって取得すればいいんでしょう?
VB には Now() があるようですが・・・
System.DateTime.Now
>>351 プロパティにあったんだ!!
メソッドになくて断念して質問してしまった・・・打つ出し乃
どうもありがとう!
353 :
デフォルトの名無しさん:02/06/09 17:49
C#をJavaへ変換するアプリケーションってありますでしょうか?
C#に興味があるのですが、ターゲットがJavaなもので。
C#で開発して、Javaで使うと言う風にしたのです。
どうかよろしくお願いいたします。
ウルトラ・ハイパー・ビギナーのプログラマーです。
もっとも分かりやすいC#の入門本はどれですか?
ステップバイステップを買いましたが、最初から専門用語でまくりで
わかりませんでした。
356 :
デフォルトの名無しさん:02/06/09 21:05
>ウルトラ・ハイパー・ビギナーのプログラマー
それならC#を最初にする時点で間違ってる。
日本よえー
確かに弱い・・・
C#のコンパイル最適化ってどの程度行われているのでしょうか?
よく次のようなコードを特に意識することなく書くのですが
string hoge;
for(int i=0;i<hoge.length;i++)
{
...
}
これって i<hoge.length の部分をforループの回数分評価
しているとしたら
string hoge;
int cnt = i<hoge.length;
for(int i=0;i<cnt;i++)
{
...
}
としたほうが良い?
それともこの程度の最適化はしているのかな。
あと、C#から離れますが
C++スタンダードは最適化なしって話ですが
上のような最適化ぐらいはしてくれるのでしょうか?
無しは無しでしょう
>>359 そういうときは悩まずネイティブ出力を確認すべし。
DebugBreak()を呼び出して、ダイアログが出たらデバッグボタンを押して、
あとはVS.NETを起動すれば確認できるよ。
[DllImport("kernel32.dll")]
public static extern void DebugBreak();
public static void Main() {
DebugBreak();
// ...
}
363 :
デフォルトの名無しさん:02/06/09 22:01
.NETで、IEのツールバー見たいのをつくりたいのですが、どうすればいいんでしょうか。
というか、可能ですか?
364 :
誤爆しちまった…(汗):02/06/09 22:06
C#に触れて5分の者だけど、
C#のdelegateってC++のfunctorみたいなもの?
言い換えればlispの手続き抽象?
>>361 どうも。
>>362 それはC++の話ではないですか?
C#だとildasm.exeでマネージコードが見れるのですが
コレがなんだか良くわからない。
>>363 ActiveXのCoolBarではダメですか?
ってコレはVB6持ってる人にしか入ってないのかな。
#日本イレブンおめでとう!!
366 :
デフォルトの名無しさん:02/06/09 22:48
>>365 IEのツールバーですが、見た目の話じゃなくて、IEにアドインするそのものをつくりたいんです・・・。
368 :
デフォルトの名無しさん:02/06/09 23:58
アンマネージの関数を呼び出しているんだけど、
unsafeにしても関数ポインタ使えないの?
関数ポインタ返す関数をどう宣言すればいいのやら。
370 :
デフォルトの名無しさん:02/06/10 00:20
>>369 実験の為にdll作って
public delegate int FUNC();
[DllImport("test.dll")][return:MarshalAs(UnmanagedType.FunctionPtr)]
public static extern FUNC GetFunctionPointer();
↓
FUNC a;
a = GetFunctionPointer();
とやってみたんですが、
例外:関数のポインタは、Delegate により作成されませんでした。
と言われるんですけど、何か間違ってますかね?
a = new FUNC(GetFunctionPointer());
でもだめでした。
>>354 即レスありがとうございます&亀レスすみません。
やっぱりだめですか。
Java遅いんですよね。C#はどうなんでしょうか。
では、また。
>>370 これでいけると思われ。
public delegate int FUNC();
[DllImport("test.dll")]
public static extern IntPtr GetFunctionPointer();
で、
FUNC a;
a = Activator.CreateInstance(typeof(FUNC), new object[] { null, GetFunctionPointer() }) as FUNC;
a();
むー。
>>372は偶然動いてるっぽいね。
関数の形を変えるとほとんどで例外が出るや。(w
374 :
デフォルトの名無しさん:02/06/10 16:38
.netで設定をファイルに保存する(iniファイルみたいな感じ)クラスとかは
用意されているんでしょうか?
MC++でこうするしかないのかな・・・。
#using <mscorlib.dll>
using namespace System;
using namespace System::Runtime::InteropServices;
typedef int (*FUNC)();
[DllImport("test.dll")]
FUNC GetFunctionPointer();
int main(void)
{
FUNC f = GetFunctionPointer();
Console::WriteLine(f());
return 0;
}
377 :
デフォルトの名無しさん:02/06/10 17:53
378 :
デフォルトの名無しさん:02/06/10 18:14
気づくの遅いけど・・・・XMLも勉強しなきゃならないね・・・
うう。とりあえずレジストリにでも保存しておこう・・・ボソ。
Windows APIのGetAsyncKeyState相当の機能って.NET frameworkにはありません?
TerrariumでDllImportで使おうとしたら怒られてしまって・・・
亀々レスで申し訳ないです。
>>372-373 試して見ましたが、例外が発生するようです。
偶然とはいえ動くと言うことは、
関数ポインタ自体使えないことはないってことでしょうかねぇ?
とりあえず、Activator.CreateInstanceについて調べてみます。
>>375 MC++ではそのまま関数ポインタ使えるんですね。
とはいえ、本体がC#なもので出来ればC#上で呼びたいと思っているので…。
スマセン。
382 :
デフォルトの名無しさん:02/06/11 01:16
.NETでクールなドッキング/フローティングコンポーネントってないっすか?
てくろうと思ったんだけど本格的なものになると俺の手にはおえないっす。
>>381 せっかくの.NETなのだし、DLLを呼ぶ部分だけMC++で記述してモジュール化、
C#からそれを呼び出して利用というのは?
#ファイル数が増えてしまうのが玉にきず。
>>383 ある意味、これぞ.NETという使い方でもありますね。
もしかして、MC++ならDLLつくれる?
私はC#で手いっぱい。(^^;;;
ついでにまた発見。
TextBoxのIMEModeプロパティに半角カナに設定すると、
ちゃんと動作しますが、プログラムで設定すると全角カナになる
問題を見つけました。IMEでもATOKでも同じみたい。
環境は、WinXP、VS.NET Ent、枠組SP1
>>385 >もしかして、MC++ならDLLつくれる?
>>333あたりのこと?
"Managed" C++という罠があるかと。
つーか
>>387のリンク先のUpdate 1.2 と 1.4 のところの画像のXPテーマがもろにつぼにはまったんだけど、誰か知ってたらゲト出来るアドレス教えて。
>>384 カコイイなぁ。
ていうかVS.NETのUIのエミュレートかな思うんだけど、
M$のコンポーネントオンリーじゃ作れないの?
出し惜しみ?
>>385 VB.NETですが、こちらでは再現しません。
環境 Win2000SP2、.NET Framework SDK(SP1)、IDEなし
以下のコードで、(1),(2)のコメントを片方だけはずしてコンパイルして試しましたが、
どっちも半角カナモードになります。
'vbc /t:winexe /out:ImeTest.exe /r:System.dll /r:System.Drawing.dll /r:System.Windows.Forms.dll /optimize+ /optionstrict+ ImeTest.vb
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Public Class ImeTest
Inherits Form
Friend textBox1 As TextBox = New TextBox()
Friend button1 As Button = New Button()
Public Sub New()
MyBase.New()
button1.Location = New Point(0,textBox1.Height)
button1.Size = New Size(60,20)
button1.Text = "半角カナ"
'(1)
'textBox1.ImeMode = ImeMode.KatakanaHalf
Me.Controls.Add(textBox1)
Me.Controls.Add(button1)
AddHandler button1.Click , AddressOf button1_Click
End Sub
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
'(2)
'textBox1.ImeMode = ImeMode.KatakanaHalf
End Sub
Public Shared Function Main(ByVal CmdArgs() As String) As Integer
Application.Run(New ImeTest())
Return 0
End Function
End Class
393 :
デフォルトの名無しさん:02/06/12 16:38
Outlookのイベントをフックしたいのですがうまくいきません。
たとえば
private Outlook.Application olApp = new Outlook.ApplicationClass(); //outlook.applicationの作成
olApp.NewMail += Outlook.ApplicationEvents_10_NewMailEventHandler(OnNewMail);
private void OnNewMail()
{
(なんらかの処理)
}
とするとコンパイルは通るんですが、実行すると
「'System.InvalidCastException' のハンドルされていない例外が
interop.outlook.dll で発生しました。追加情報 : インターフェイスがサポートされていません」
というメッセージが出て実行できません。
インターフェイスがサポートされていないとはcomとマネージドコードのどちらに、なんのインターフェイスが
ないという意味なんでしょうか??
なんかusersとかMSのnntpみたいな雰囲気になってきたな。。。低レベルなQ&Aばっかだ。ツマラン。
>>394 あのレベルは到底マネできんと思う。特にnewsgroup。
>>394 DevelopMentorもUS Newsgroupも最近は・・・。
かく言う漏れはMonoを生暖かく見守ってまふ。
>>398 sscliは動きがないからね・・・。なんていうか興味が長続きしない。
でも.csとinternalcallの実装部は役に立ったけど。
M$信者はオプソへの食いつき悪いね
401 :
デフォルトの名無しさん:02/06/13 00:11
>>400 そりゃあオプソのものを使いこなせるぐらいなら、M$製品なんか(以下略
403 :
デフォルトの名無しさん:02/06/13 01:05
クライアント側で、IE上においてアクセスしたページの情報を
取得するにはどうすれば良いでしょうか?
例えば、ページのURLやXMLファイルのルート要素を変数に格納したいのですが…
プログラミング自体初心者です、低レベルな質問ですみません。
>403
その質問が低レベルと判断できるなら、
初心者はとっくに卒業でしょう。
オプソ関係って環境整えるだけでお腹イッパイになってる連中が多くて
その先にすすまないんだよねえ。gnomeとか。そりゃつまらんわ。
ああ全然関係ないね。スマソ
406 :
デフォルトの名無しさん:02/06/13 02:34
Win系のプログラマは厨房多し。
犬房はプログラミングにすら手が届かないやつ多し。
ああ全然関係ないね。スマソ
>>407 処理系が複雑になると、
表面的には処理が簡単になり、
本質的には理解が困難になる。
アセンブリは取っ付きにくいが、理解はやさしい。
故に、アセンブリプログラマに厨は少ない。
Unix は取っ付きにくいが、理解はやさしい。
故に、Unix ユーザーに厨は少ない。
Windows は入るのは敷居が低いが、
青木ヶ原樹海のようなもので、
理解して出てくる人間はほとんどいない。
>>407 俺は
>>407がその事例のどっちに所属するか興味がある。
俺は違うぜ!とか思ってたら失笑。
>408
大学は入りにくいが、卒業しやすい。
官僚はなりにくい、そして一旦なれたら仕事はやさしい。
んで?厨は少ないか?敷居?ハァッ (われながら下手な例だw
ついでにいうとおまえのような下らん決め付けをわざわざ頭悪そうな書き方で、
ご丁寧にも無意味な空白つけて、無神経にも批判する相手がたくさんいるところに
カキコするような豪傑のことを、2ch一般的には厨という。
412 :
デフォルトの名無しさん:02/06/13 11:58
まあ、このスレではまともにUNIXを使える奴はいないでしょう。(w
まじで他でやってくれ。あとでログみるの苦労するから。
このスレはオプソネタ禁止!
なかなかADO.NETは、難しいです。
VBの時も複雑なことをしようとすると画面に置く系のデータコントロール
より、コードで直接レコードセットを扱ってゴリゴリ書いた方が良かったのですが、
ADO.NETになってさらに複雑になったので複雑なことに対して柔軟に対応できる
落としどころを探しています。
今のところ、DataSetでデータを編集したあとのアップデートは
ADOにお任せして、DataSetと画面上との関係はゴリゴリと行こうかと
思っています。
そこで、SqlCommandBuilderオブジェクトなのですが、
これを使ってInsert,Update,DeleteのSqlを自動生成することは、
判ったのですが、その自動生成するコードを修正しようにも
なんだか判らない引数みたいのがついてしまい困っています。
INSERT INTO cTest( idCtsKey , jpCtsName , nmCtsSort ) VALUES ( @p1 , @p2 , @p3 )
UPDATE cTest SET idCtsKey = @p1 , jpCtsName = @p2 , nmCtsSort = @p3 WHERE ( (idCtsKey = @p4) AND ((jpCtsName IS NULL AND @p5 IS NULL) OR (jpCtsName = @p6)) AND ((nmCtsSort IS NULL AND @p7 IS NULL) OR (nmCtsSort = @p8)) )
DELETE FROM cTest WHERE ( (idCtsKey = @p1) AND ((jpCtsName IS NULL AND @p2 IS NULL) OR (jpCtsName = @p3)) AND ((nmCtsSort IS NULL AND @p4 IS NULL) OR (nmCtsSort = @p5)) )
引数はみてのとおりストアドプロシジャの一部みたいな書き方なのですが、
やりたいこととして、最初の表示時に更新タイムスタンプを読み込み
更新時にタイムスタンプに変更がなければ実行したいのです。
DataSetには、ローカルでの変更前の値もバージョンとして持っているので、
それをうまいこと比較して更新時の排他をやりたいのです。
宗教戦争しているみなさんも判りましたらよろしくお願いします。
補足
質問の補足ですがどこの何をもって@p1なのかといったことと、
DataSetが持っている最初に読み込んだときの値と更新の瞬間の
比較 WHERE OldTimeStamp = NewTimeStamp の書き方を
知りたいと思います。
こういった例の判りやすいソースがありましたらよろしくお願いします。
>>416 仕事の丸投げですか?
お勉強のためのネタとはとても思えない。
>416
仕事の手伝いもいいが、丸投げをやさしく受け止めてくれるほど、
このスレの人はやさしくない(アホじゃない)
さあ宗教戦争続けるぞw
421 :
デフォルトの名無しさん:02/06/13 17:34
イベントの呼び出しって必ずnullのチェックが必要なの?
if(MyEvent != null){ MyEvent(1,2,3); }
どうして1,多の呼び出しには自動的にやってくれるのに0は駄目なのか...
>>421 nullポインタの関数ポインタを実行したときどうなると思う?
C言語なら飛んでる。
この場合デリゲーとだけど。
無用なオーバーヘッドを減らすと言う意味もあるんじゃない?
デリゲートみたいに細かく記述するならnullチェックが要るのは判るけど、
Eventはデリゲートの使い方の一例を使いやすくしてくれているだけなのに
なぜ、nullチェック(nullならイベントを発行せず素通り)だけ
見える形にしているのかと私も不思議に思っています。
なんか応用技があるんだろうか?
>>421 NullPointerExceptionでアプリが終了しないように念のため。
例えばエディタアプリだったら、そのせいで編集してたファイルがパーになったら困るでしょ?
>>424 NullReferenceExceptionの間違い・・・
こんなん見つかりました。ちょっと急いでいるので現象の絞り込みは後日です。
【注意】現象は絞り込んでいません。
問題点:設定ファイルを読み込むクラスで、SqlConnection、SqlCommand、SqlDataReaderを
使って10以上のテーブルを次々と読み込むスタティックのメソッドで9つ目以後はエラーになります。
対策:そのメソッドから別のローカル関数に処理を移して呼び出してやれば解消します。
このスレが荒れてきた発端は、
>>394の青臭い一言からです。
さあ、みなさん。存分に自分の宗教観を披露してください。
UNIX 信者って、学生に多いよね。
金なし、開発力なし、専門知識なしの
アマチュアが使えるのは、UNIX ってだけなのに。
頭の固い教授に、洗脳されちゃうんだろうな。
なんか、昔のマック信者みたい。
431 :
デフォルトの名無しさん:02/06/15 10:11
.NETによってセキュアになるという口約束は脆くも崩れ去った。
さらばM$。さらば.NET。
1人でネガティブキャンペーンやってるやつがいるようだ。
>>431 ウィルスつきで配布するのも間抜けだが感染できないVS.NETにくっついてくNimdaもなんだか微笑ましいな
>>429 すみません。調べてみたところ私のミスでした。
前に書いた以下の障害の方は、「一発でデザインを決める」以外の対策が見つかりました。
問題:ユーザーコントロールにTextBoxやLabelを複数置くとデザインの画面でSizeが重複していると怒られる。
対策:ソースの全行をカットして別のテキストにペーストする。プロジェクトを保存で終わらせてから立ち上げてソースの全行をペーストする。
>>433 VS.NETはVC++で書かれているから.NETは関係ないと思うが。
…ってマジレスしとかないと勘違いする人いそうなんで。
>>439 コアはVC++だと思うけど、
GUIとかは.NETだよ。
>>433 Nimdaウイルスの混入と、.NETの安全性はまったく関係がないが?
単に、配布ファイルの中にNimdaが作ったファイルが含まれていたってだけでしょ。
ド素人だと.NETのセキュアが崩壊したみたいに見えるんだろうか。
C#の練習のために2ch用クラスを作ってみようと思った。
2chブラウザ作ってる人いない?C#で。
>442
何人かいるみたい。
俺もいまやってる。
このスレも終わりか?
>>394みたいな奴がいるようじゃ仕方がないか。
>>444 そうかぁ?漏れは394に同意。過去スレより数段レベルが下がってて
♯さんとか何人かの人はもう出てこなくなっちゃった。素人スレなら
たくさんあるから用はないんじゃねーの?
>>445 ♯さんって今は名無しでカキコしているんじゃなかったっけ?
sprintfの替りってStringWriter?
とか探してたらStringBuilder.AppendFormatというものを発見。
たいていはこっちで間に合いそうだ。
各クラスのToStringで直接フォーマッティングできたのか。気づかなかった。
昔はM$のβ製品に手を出すような酔狂な人等が集まってたけど、
最近はVB厨が大量にこのスレに流れ込んで来たっぽいしねぇ。
>>449 ベータの頃は好きでやってる奴が集まる。→ (゚д゚)ウマー
正式リリースされれば仕事上仕方なくやってる奴が集まる。 → (-д-)マズー
>>451 Managed Codeだけで作られてるみたいね。
しかも律儀に逆コン対策までされてる・・・。
453 :
デフォルトの名無しさん:02/06/18 21:34
現在の操作してるユーザー名をゲットするクラス?とかってありますか?
もち、探してはいるんですが・・・。みつからん・・・
>>453 System.Environment.UserName
455 :
デフォルトの名無しさん:02/06/18 22:08
>>453 System.Security.Principal.WindowsIdentityと、そのGetCurrent()も。
何度も質問出てるわりに答えの無いGetKeyStateに対応する.NET API・・・
やっぱり無いのかね
457 :
デフォルトの名無しさん:02/06/18 23:21
>>454,453
ありがとう。検索下手だなとつくづく思う・・・ボソ。
>>451 IIS不要でASP.NETが動くのがいいね。
MonoのXSPといい、非IISのウェブサーバがもっと増えてほしい。
ms-help://MS.VSCC/MS.MSDNVS.1041/cpref
/html/frlrfSystemEnvironmentSpecialFolderClassTopic.htm
これ使って、お気に入りフォルダへのパスって取得できない?っていうか、
できるんだろうけどわからん・。インスタンス作っても駄目だし・・・
460 :
デフォルトの名無しさん:02/06/18 23:34
GDI、やたらおそいね。なんでこんなに遅いの?これじゃDirectX使わないとゲームなんか作れないよ。
>>459 こんな感じ?
Environment.GetFolderPath(Environment.SpecialFolder.Favorites);
464 :
デフォルトの名無しさん:02/06/19 00:10
VS.NETでASP.NETやってますが、
Webコントロールに、いっぱいパラメータつけて
デザイン画面とコード画面を往き来すると、
タグ内の改行が消されて
横スクロールしないと見えなくなってしまいますが、
これはどうしようもないんですか?
きれいに整形したい欲望に駆られて
無駄な努力と知りつつ、改行してしまう毎日・・・
468 :
デフォルトの名無しさん:02/06/19 00:33
>>466 それだとドキュメントのフォーマットになるんで、
一度デザイン画面を表示さすのと一緒で、
逆にタグが一行にまとめられてしまいませんか?
そうじゃなくて改行したままにしておきたいってこと
なんですが・・・・
>>468 だったらエディタ自体を右端で折り返す設定にすれば?
470 :
デフォルトの名無しさん:02/06/19 05:33
超ド素人な質問ですいません。
今までVB、Delphiをやってきたんですが、C#を仕事でやることになって意味不明です。
変数の宣言とかどうしたらいいのか・・・。
むか〜しにDOSのC言語でゲーム作った覚えはあるんですがもう忘れちゃって全然駄目です。
お薦めの本やサイトなどでも構いません。
こんな私に救いの手を!
471 :
デフォルトの名無しさん:02/06/19 06:23
シリアルポートと通信したいんですけど
Streamクラスとかでは無理っぽいみたいな感じなんで
やっぱりWindowsAPIとかいうのを使わなくてはだめでしょうか?
>470
金ないならVS.NETのヘルプやチュートリアルでも詠め。
出来るやつはそれだけで十分。(最初はね)
わかる+使えるC#
って本、なかなかわかりやすくて良いかなと思いました。
>>475 出来る!とか、わかる!とかついたタイトルは嫌だな・・・
これでわかるWindows95!みたいで・・・
>>470 本ネタ、ガイシュツ。
そのレベルなら475に禿同。
>>476 =470?
変数宣言できないレベルなら、「わかる」と銘打った本がお似合い。
それがイヤならヘルプ読むなり、本屋にいろいろ立ち読みしに逝け。
おっと、失礼。勘違いした。
>475に禿同
すまんがこれは撤回。
漏れも@ITのお世話になっているから同意なんだけど、
サイトの焼き直しという点で萎えたから「禿」はつかない。(苦笑
漏れが禿同したかったのは「始めよう!C#」だった。
#そしてガイシュツ。
>>477 ゴメンゴメン、別人なんだわ。
しかし他言語をやってるなら変数宣言くらいちょっとサンプルでも見ればわかりそうなもんだと思うんだけどね。
>478
その@ITというのはなんでしょうか?
>>482 あ、これだったのね。あの本の内容。
個人的には紙媒体が好きだから本が良いけど\2300はつらいなぁ・・・。
プログラミング Microsoft Windows with C#.NET の発売はまだですか?
というか、今月も新刊イパーイあるね。
.csから.exe作らずに直接実行できないの?
>>488 スクリプティングホストでも作ればできる。
といっても、裏ではテンポラリアセンブリを作ってるけど。
プロジェクトとソリューションの違いがよく分かりません>VS.net
だれか可哀相な漏れに教えてください。
>>490 1つのソリューションには複数のプロジェクトを含むことができる。
プログラミングMicrosoft .NET Frameworkがかなりの良書だと聞いた。
洋書読んだ人いたら感想お願いします。
しかし、調べないやつ多いね。
>>495 Visual C#.netには“ワークスペース”という概念はないんじゃありません?
ms-help://MS.VSCC/MS.MSDNVS.1041/vsintro7/html/vxconVisualStudioSolutionsProjects.htm
>>497 吉松さんの記事は読んでて面白いよね。
掲示板でも活躍してるみたいだし。
>>497 新連載って、Inside .NET Frameworkの方はどうなるんだ?(ワラ
500 :
デフォルトの名無しさん:02/06/20 02:11
>>489 え、WSHでC#つかえるんですか? language="C#"ってやったけどダメだったんだけど、
どうやるの?
>>500 その昔、Don Box氏直伝のCLR Scripting Hostというサンプルがあったんだけど
今は入手不可・・・。
>>501 なんとなくC# Script(?)に興味があったから探してみたけど、その壁にぶつかった。。
だれかローカル保存をしている人、コピペお願い!
いまさら気づいたんだけどさ、
デリゲートを他のオブジェクトのイベントに繋ぐと、
そのオブジェクトが死ぬか、明示的にイベントとデリゲートを切り離さない限り、
自分自身はガベコレの対象にならないよね。
class TempObjClass
{
TempObjClass( Form ownerForm )
{
ownerForm.Click += new EventHandler( this.Handler );
}
~TempObjClass(){ /*切り離し忘れ*/ }
void Handler( object sender, EventArgs e ){}
}
TempObjClass のインスタンスを作るたびにメモリに蓄積していく。
ms-help://MS.VSCC/MS.MSDNVS.1041/cpref/html/
frlrfSystemConfigurationAppSettingsReaderClassGetValueTopic.htm
なんですが
GetValue("QFitst",String);
では駄目みたいなんです。
TypeっていうのはStringっていう意味では無いの?
って書くのは駄目みたいなんです・・・・
PrintDialog表示したときにユーザーが設定した
印刷範囲や印刷部数で印刷する場合、
PrintDocument→printDocument
PrintDialog→printDialog
if(printDialog.ShowDialog()==DialogResult.OK)
{
printDocument.PrinterSettings=printDialog.PrinterSettings;
printDocument.Print();
}
だとうまくいかないんですが、PrintDocumentの
PrintPageイベント処理で自分で処理を書く必要あるのでしょうか?
>>509 その通り。QuickStartチュートリアルでも見れ。
string から int などに変換する関数ってない?
atoi みたいなの
Convertってのがあったのか^^;
スレ汚しスマソ
514 :
デフォルトの名無しさん:02/06/23 00:08
[コントロールパネル]→[管理ツール]→[データソース(ODBC)]
をチェキ
ユーザデータソースは
名前:mysql
ドライバ:MySQL
で登録してあります。
もしかして違うタブ(ファイルDSN)とかに設定しないといけないのでしょうか??
ODBCの設定したことなくて、よくわかっていなくてすいません。
517 :
デフォルトの名無しさん:02/06/23 02:11
長いぞ。前のほうでリクエストが出てたDonのスクリプトホストだが。
///////////////////////////////////////////////////////////////////
//
// DevelopMentor (TM) CLR Script Host Version 0.9 for Windows
// Copyright (C) DevelopMentor 2000. All rights reserved.
//
// Author: Don Box
// Date: August 31, 2000
//
//
using System;
using System.Reflection;
using System.Collections;
using System.IO;
using System.CodeDOM;
using System.CodeDOM.Compiler;
/// <summary>This exception gets thrown when a processing error occurs</summary>
class Ouch : Exception
{
internal Ouch(String s) : base(s) {}
}
/// <summary>This exception gets thrown when there is an invalid argument</summary>
class Usage : Ouch
{
public static String Logo { get { return logo; } }
static String logo = "DevelopMentor (TM) CLR Script Host Version 0.9 for Windows\nCopyright (C) DevelopMentor 2000. All rights reserved.\n\n";
static String s = "Usage: CLRScript [option...] scriptname.extension [arguments...]\n\n"
+ "Options:\n"
+ " //r[eference]:ass Reference this assembly\n"
+ " //f[ile]:file Compile 'file' as an additional source file\n"
+ " //m[ain]:type Type containing Main (defaults to EntryPoint)\n"
+ " //o[ut]:file Generate an on-disk assembly named 'file'\n"
+ " //norun Don't run the program\n"
+ " //Logo Display Logo (default)\n"
+ " //Nologo Prevent logo display: No banner will be shown at execution time\n"
;
internal Usage() : base(logo + s) {}
}
続きだ
/// <summary>EntryPoint is where all of the action is</summary>
public class EntryPoint
{
static void Error(String s)
{
throw new Ouch(s);
}
static String[] StringArrayFromCollection(StringCollection coll)
{
String[] rgs = new String[coll.Count];
coll.CopyTo(rgs, 0);
return rgs;
}
続き
/// <summary>This method runs the correct compiler and returns an assembly</summary>
static Assembly GetAssemblyFromFiles(StringCollection filenames,
StringCollection assemblies,
String outputAssembly,
String mainClass)
{
Assembly result = null;
// guess the language based on extension
String firstFile = filenames[0];
IBatchCompiler compiler = null;
if (firstFile.EndsWith(".cs"))
compiler = new CSharpCodeGenerator();
else if (firstFile.EndsWith(".vb"))
compiler = new VBCodeGenerator();
else if (firstFile.EndsWith(".js"))
compiler = new JSCodeGenerator();
else
Error("Unrecognized extension for file: " + firstFile);
// construct the parameters based on command line args
CompilerParameters prms = new CompilerParameters();
prms.GenerateInMemory = true;
if (outputAssembly == null)
{
prms.GenerateExecutable = false;
}
else
{
prms.GenerateExecutable = true;
prms.OutputAssembly = outputAssembly;
}
prms.MainClass = mainClass;
foreach (String s in assemblies)
prms.ReferencedAssemblies.Add(s);
// run the compiler
CompilerResults results = compiler.CompileAssemblyFromFileBatch(prms, StringArrayFromCollection(filenames));
// process output
if (results.Errors.Count > 0)
{
foreach (CompilerError e in results.Errors)
{
System.Console.WriteLine(e);
}
Error("Compiler Error");
}
else
result = results.CompiledAssembly;
return result;
}
520 :
デフォルトの名無しさん:02/06/23 02:16
めんどうだな。やめちまうか……
/// <summary>This method cracks the command line arguments, compiles, and optionally runs the program</summary>
static int Process(String[] args)
{
// we need some arguments
if (args.Length == 0)
throw new Usage();
StringCollection filenames = new StringCollection();
StringCollection assemblies = new StringCollection();
StringCollection subArgs = new StringCollection();
String outputAssembly = null;
String mainClass = "EntryPoint";
bool noRun = false;
bool noLogo = false;
// walk through the list marshaling options and filenames
bool foundFilename = false;
foreach (String s in args)
{
if (s.StartsWith("//"))
{
int indexOfColon = s.IndexOf(':');
String option = null;
if (indexOfColon == -1)
option = s.Substring(2).ToUpper();
else
option = s.Substring(2, indexOfColon - 2).ToUpper();
ぐは、名前にsageとか入れちゃってたし、萎えたなぁ
switch (option)
{
case "NORUN":
noRun = true;
break;
case "NOLOGO":
noLogo = true;
break;
case "LOGO":
noLogo = false;
break;
case "R":
case "REFERENCE":
assemblies.Add(s.Substring(indexOfColon + 1));
break;
case "F":
case "FILE":
filenames.Add(s.Substring(indexOfColon + 1));
break;
case "O":
case "OUT":
outputAssembly = s.Substring(indexOfColon + 1);
break;
case "M":
case "MAIN":
mainClass = s.Substring(indexOfColon + 1);
break;
default:
throw new Usage();
}
}
else if (!foundFilename)
{
filenames.Add(s);
foundFilename = true;
}
else
{
subArgs.Add(s);
}
}
後はMainだけだから自分で考えてちょ。
// we need a filename
if (filenames.Count == 0)
throw new Usage();
// print the shameless logo unless supressed
if (!noLogo)
Console.Write(Usage.Logo);
// compile the code
Assembly ass = GetAssemblyFromFiles(filenames, assemblies, outputAssembly, mainClass);
// load the MainClass
Type entryPointShell = ass.GetType(mainClass);
if (entryPointShell == null)
Error("Public class named '" + mainClass + "' not found");
// run that sucker
if (!noRun)
{
MethodInfo method = entryPointShell.GetMethod("Main");
if (method == null)
Error("No entry point defined");
ParameterInfo[] subParams = method.GetParameters();
Object[] passThese = null;
switch (subParams.Length)
{
case 0:
passThese = null;
break;
case 1:
passThese = new Object[] { StringArrayFromCollection(subArgs) };
break;
default:
Error("Main had wrong signature");
}
Object result = method.Invoke(null, passThese);
return result == null ? 0 : (int)result;
}
else
return 0;
}
524 :
デフォルトの名無しさん:02/06/23 03:59
テキストボックスのMaxLengthプロパティで最大文字数を6に設定して
いて、キーボードからの入力は制限されるのですが、Button_Clickイベント
(数字ボタン)からの入力は制限されません。何か良い方法はありますか?
>>524 そりゃボタンのイベントハンドラで制御すればいいだけでしょ。
Button_Clickイベント内で入力を6文字で制限するコードを自力で書くんだよ。
MaxLengthプロパティみたいに自動で制御する方法はない。
…頼むから自力で制御コードを書く方法がわかりませんなんてタコなことを言い出すなよ。
>>523 ODBCをインストールすればいいだけだと思っていました。
OLEDBをインストールしたらうまくいきました。
どうもありがとうございました。
.configファイルから設定を読みとろうとして・・・
AppSettingsReader Settings = new AppSettingsReader();
string MailerName = Settings.GetValue("Setting1",typeof(string) ).ToString();
exe.configには
<?xml version="1.0" encoding="shift_jis" ?>
<configuration>
<appSettings>
<add key="Setting1" value="setting1" />
</appSettings>
</configuration>
って書いてるんだけど・・・
Setting1が無いって出る・・・・。help!
>>530 これ1行でいけるはず。
string MailerName = ConfigurationSettings.AppSettings["Setting1"];
ちなみに、
>>530の方法でもちゃんと表示されてるけど・・・。
533 :
デフォルトの名無しさん:02/06/23 15:57
Visualstudio.Netで作成したC#のexeファイルを友人に渡したら「初期化エラー」って出たそうです
何が原因なのでしょうか?
もしかしてFrameWorksが必要なのでしょうか。
ネイティブコンパイルでもランタイム要るの?
当たり前か。
>>536 >ネイティブコンパイルでも
C#に何を望んでいるのか・・・。
538 :
デフォルトの名無しさん:02/06/23 16:51
>>533 .NET Framework 再頒布パッケージ (20.4 MB)
>>532 exe名.configってのを置けば良いんだよね?
531のでやってみたら
Setting1はnullのまんま・・・・。
ごめん、できた。
exeName.exe.configって置かないと駄目なんだね・・・
こんな馬鹿な事になかなか気づかなかった。・・・すまん。
.configから読み込む方法はあるみたいですが・・・
書き込むのは無いみたいです・・何か方法あるでしょうか?
>>542 あ〜、これこれ。.configの説明。
ms-help://MS.NETFrameworkSDK.JA/cpguidenf/html/cpconconfigurationfiles.htm
545 :
デフォルトの名無しさん:02/06/23 19:27
ふつーは、XMLシリアライズ。
だよね?
じゃ.iniに変わる物ってどれになるんでしょうか?
.xmlですが。何か。
つまり普通にxmlをシリアライズして読み書きするって事ですよね?
C#には特別に.iniにあたる設定保存ファイルを準備してないってこと。
Windowsシステムでは設定はレジストリ使用を推奨だろ。
レジストリは嫌いだ・・・・。
ユーザーの中にもレジストリを汚すのに嫌悪感を持ってるやつもいると
思うが。。。。
まぁ、みなありがと。.configでしばらくはやってみる。
>>551 Setting.xmlに保存しますわ。
となるとXMLも勉強せなならん・・・・参ったな。
>>552 XmlSerializer使えって。
public class Config
{
public string Setting1;
}
// 読み込み
XmlSerializer xml = new XmlSerializer(typeof(Config));
FileStream fs = new FileStream("c:\config.xml", FileMode.OpenOrCreate);
Config config = (Config)xml.Deserialize(fs);
fs.Close();
// 書き込み
FileStream fs = new FileStream("c:\config.xml", FileMode.Create);
config.Setting1 = "Setting1";
xml.Serialize(fs, config);
fs.Close();
>>553 XmlSerializerって既出だけど、重いんだよね。
結局普通にXML使った方がええかも。
普通にと言いますと?
そこまで速度を気にするんだったら普通にStream.WriterでCSVを吐いたら?
もともと.iniファイルってそんなもんだし。
重いって、どれくらい重いんだろう
>>558 調査はしていないが、XmlSerializerはReflectionを使っているのでは?
それなら想像ができる?
560 :
デフォルトの名無しさん:02/06/24 11:10
class AppConfig
{
const string FILE_NAME = "App.exe.config";
const string KEY_CFG1 = "Cfg1";
public string setting1;
public static void Save()
{
XmlTextWriter tw = new XmlTextWriter( FILE_NAME, null );
tw.Formatting = Formatting.Indented;
tw.WriteStartDocument( false );
tw.WriteStartElement( "configuration" );
tw.WriteStartElement( "appSettings" );
tw.WriteStartElement( "add", null );
tw.WriteAttributeString( "key", KEY_CFG1 );
tw.WriteAttributeString( "value", setting1 );
tw.WriteEndElement();
tw.WriteEndElement();
tw.WriteEndElement();
tw.WriteEndElement();
tw.Flush();
tw.Close();
}
public static void Restore()
{
AppSettingsReader ar = new AppSettingsReader();
try {
setting1 = (string)ar.GetValue( KEY_CFG1, typeof(string) );
} catch ( Exception e ) {
setting1 = "";
}
}
}
しまつた!!Ageてもた。スマソ
しかもWriteEndElement();ひとつ多い?w
>>560 そこまでして.configを使いたいのかと尋ねてみるテスト。
DLLとかを別ディレクトリに置いていて(.configでの指定が必要なはず)、
もし.config書き出しに失敗したら、そのプログラムは起動できなくなるぞ。
悪いことは言わん。Restoreメソッドをちゃんと書いて、
任意のファイルに出力・読み込みができるようにしたほうがよいよ。きっと。
>>562 そうかもねー。
まぁ、俺は仕事では全然C#使ってないから、
お遊びなんで許してちょ。
564 :
デフォルトの名無しさん:02/06/24 13:44
C#はランタイムが必要と聞いたのですがどのように配布したら良いのでしょうか?
ランタイムパッケージが有るのでしょうか。
友人の家ではC#実行ファイルが動作しないもので。
566 :
デフォルトの名無しさん:02/06/24 16:37
568 :
デフォルトの名無しさん:02/06/24 19:35
メモリの使用状況を出力させるプログラムを考えてるのですが…
どなたか教えてください。
どうしてもプロセスだけのメモリ取得になってしまいます。
C#ではJavaでいうJUnitのようなものはありますか?
576 :
デフォルトの名無しさん:02/06/25 01:38
>>575 .NET Framework アプリケーション配布ガイド
Microsoft Corporation
January 2002
日本語版最終更新日 2002 年 5 月 20 日
まぁ一応、ね。
577 :
デフォルトの名無しさん:02/06/26 02:23
VS.NETベータ2版が削除できないのですが・・・原因分かる人居ませんか?
「プログラムの追加と削除」からVS.NETを選択、メニューから「2」を選択した後に
「VS.NETの削除」を選択。処理が始まるのですが、「セットアップに失敗しました」と
エラーメッセージが。何度やっても消せないです。
これ消さなきゃ製品版が入れられないのに・・・
ちなみに当方XPproを使っています。
578 :
デフォルトの名無しさん:02/06/26 02:25
>>577 それは、もうOSから再インストールしかないらしいですよ
>>577 betaが削除できない人って結構いるはず。
レジストリを駄目もとで消してやったら成功したってのも聞いた事あるが。
>>577 俺はアンインストは問題なくいけたのに、Terraがはいんなかったよ。
beta2が入ってるって怒られて。mscoree.dllもちゃんと手動で削除してから、
SDKとSP1入れたのにさ。
581 :
デフォルトの名無しさん:02/06/26 03:10
>>577 は
578〜580の中のどれを選びますか?
582 :
デフォルトの名無しさん:02/06/26 12:46
583 :
デフォルトの名無しさん:02/06/26 12:58
っていうか、OSクリンインストできるん良い機会だし普通に578でしょ、
回答どうもです。
とりあえず
>>579-580を試してみます。
それでダメならOS再インストールしたほうがいいんですか?
・・・何か騙されてるような・・・
>>585 俺は再インストしました。
見事にバックアップ忘れましたが、何か?
588 :
デフォルトの名無しさん:02/06/27 11:08
Internet Mobile Toolkit で携帯用サイト作っているんですが、
WML形式で出力したときにページのデザインによっては
強制改ページされてしまいます。なんかカードとかいうらしいんですが。
これをやめさせる方法ご存知の方いない?
589 :
ヅラトンパ:02/06/27 12:17
ヅラ
591 :
デフォルトの名無しさん:02/06/29 02:09
System.Web.UI.LiteralControl
と
System.Web.UI.WebControls.Literal
って機能的に何が違うんですか?
>>591 前者は暗黙的に作られる。
後者は自分で明示的に作る。
あ、LiteralControlはコード(.cs)の方では明示的に作れるか。失敬。
594 :
デフォルトの名無しさん:02/06/29 18:22
>>103 のやっている事をやろうとしてるんですが
public Form1 forma;
っていうのはどこに書けば良いんでしょうか?
どこに書いてもはじかれます。
>>594 class Form1のなかに。
static付けてね。
Formにstaticをつけるって言う事はどういう効果が出るんですか?
イマイチSDKみても意味わからなくて・・・
>>596 Mainはstaticなメソッド。
インスタンスが無くても使用できる。
そこから使用できる変数もインスタンスが無くても使えなくてはならない。
そこでstaticを付ける。
なるほど!言われてみると分かった。サンクス!
>>588 これは改行であって改ページではないのれす…
スタートアップにショートカットファイルを置きたいですが、
ショートカットファイルを開いてみたら文字化け状態なんですね・・・。
ショートカットって作れない?
VB理解できん。
ショートカットの作り方求む・・・・。
誰か移植してやれ
すみません、VB一切理解不能です。
DimもSDK読んでも??でした。
>>608 ありがと。とりあえず立ち読みしてみる。っていうか、
近くにC#の本なんて扱ってる本屋無いから
かなり遠くまで行かんと・・・。
文字化けってのはlnkファイルを無理矢理FTPソフトで
拡張子変えて開いてみたら文字化けって意味。
ショートカットファイルそのものもインターネットショートカットみたいに
ただの文字情報だけのファイルだと思ってたわけ。
googleで検索したら出てきたし助かったわ。長くなってゴメン。
>>609 もともとバイナリだよ。文字化け以前に、文字じゃない。
ていうか確認。そのショートカットファイルは不正だったの?
実行できなかった?
使用上問題がないのなら、そのまま使えばよいし。
ついでにその部分のソースの提示希望。
使用上は問題無い。っていうか、いつも使ってるショートカットファイル。
俺がやろうとしてるのは現在のexeへのショートカットをスタートアップ
フォルダに作ろうとしてる。
lnkを拡張子変えて開いたらProgram Fileとかいう文字は読めたよ。
>>611 こんな感じ?
using System;
using System.IO;
using System.Reflection;
using IWshRuntimeLibrary;
class Test
{
[ STAThread ]
public static void Main() {
WshShell shell = new WshShellClass();
object o = "Startup";
string assembly_path = Assembly.GetExecutingAssembly().Location;
string shortcut_path = shell.SpecialFolders.Item(ref o) +
"\\" + Path.GetFileNameWithoutExtension(assembly_path) + ".lnk";
IWshShortcut shortcut = shell.CreateShortcut(shortcut_path) as IWshShortcut;
shortcut.TargetPath = assembly_path;
shortcut.Save();
}
}
// tlbimp C:\WINDOWS\system32\wshom.ocx
>>611 >lnkを拡張子変えて開いたらProgram Fileとかいう文字は読めたよ。
そりゃそうだ。文字列をわざわざコード変換して保存する必要はないよ。
でも、その部分だけ読めたからってどうってこともないだろ?
文字にならないコードも含まれているから、バイナリ。
人間に可読性がないから、バイナリ。
バイナリエディタを使ってみることを激しくおすすめ。
つーか、
601>ショートカットって作れない?
>使用上は問題無い。
ショートカットを作れないのではなく、
問題は単にショートカットの出力位置だと思われ。
>>612 うぉ!助かります!WSHやってたけどさっきからエラー出まくりで。
けど、ここの人ホントみんなすごいね・・・。
俺が無能なだけだとも思うけど・・・。
とりあえず、コード見ながらどういう処理か少し考えて見ます。
結構海外にはC#とか.netのサイトってあるもんだね。
>>613 って言うかショートカットはSJIS、.NETはunicode
>>617 知ったかする前にショートカットファイルの中身を確認しろよ
619 :
デフォルトの名無しさん:02/07/01 21:14
VC++では __LINE__や__FILE__ マクロでソースファイル名、ソース中行数を
コードに埋め込めたけど、C#にはそういうのは無いんですか?
ログファイルに使いたいのですが…。
617はショートカットファイルをSJISだと思っているって事ですか??
[customcommand("usage", "モジュールで使用できるコマンド一覧を取得します。", "<module-name> usage")]
とまぁこんな属性を作ったんですが、↑の文字列を .resx から拾おうと画策してます。が、
[customcommand("usage", resources.GetString("custcom.usage.desc"), resources.GetString("custcom.usage.usg"))]
とやるとコンパイルエラーになります(定数でないとだめらしい)。
どなたか、いい知恵ありませんでしょうか・・・
>>622 [customcommand("usage", "custcom.usage.desc", "custcom.usage.usg")]
にして、属性を吸い出す側でGetStringするとか。
初歩っぽい質問なんですがリストビューで無くてデータグリッドの違いは
何なのでしょうか?
データ扱う場合はデータグリッドって解釈でいんでしょうか?
XML使ってデータ保存するならデータグリッドの方が良さそうだけど。
かなりややこしいね、これ。
メモリ上にDB作るようなもんだしねえ・・・
なんらかのスキーマと連動するような仕組みがあると
すげえ便利なのかもしれん。やったことないけど。
>>623 サンクス!
で、今やってるんですが、まだリソースを拾えてません。
customcommandAttributeを定義してるのは、共通ライブラリ的な
位置付けで作ってあるアセンブリで、このアセンブリからは実際に
customcommand属性を使っているクラス名を把握できません。つまり、
[AttributeUsage(AttributeTargets.Method)]
public class customcommandAttribute : System.Attribute
{
private ResourceManager resources;
public string description;
public string usage;
public customcommandAttribute(string description, string usage)
{
resources = new ResourceManager(■■■■);
this.description = description;
this.usage = usage;
}
}
の ■■■■ に何を入れればいいかが分からないのです(泣
customcommand属性を定義してあるアセンブリに .resx を入れるのは
避けたいのですが(というか、属性を使っているアセンブリに入れたい)、
いい考えが浮かびません・・・
>>625,626
宇宙仮面とかのサイトみてるとね・・・・。
どっちで作ろうか迷うね。。。。
>>627 attribute内部でResourceManager使うんじゃなくて、
attributeを拾う側(GetCustumAttribute()を呼び出す側)で使ってみては。
>>629 サンクス!出来ましたっ!
ちなみにVS.NETでリソースファイルを手動でビルド対象に含める際は、
.csprojにDependentUpon項目が自動でつかないので少しハマりました。
<File
RelPath = "plugin1.resx"
DependentUpon = "plugin1.cs" ← これを手動で追加した
BuildAction = "EmbeddedResource"
/>
とやってあげないと、
ResourceManager resources = new ResourceManager(this.GetType());
みたいな型指定でのりソース取得に失敗するようです。(埋め込まれた
りソース名が「(クラス名).(リソースファイル名).resouces」になってしまう)
631 :
デフォルトの名無しさん:02/07/03 09:39
チュートリアルのサンプルをやって勉強しているのですが、
非常に不思議に感じています。
private メンバのついた構造体の存在意義ってなんなんでしょう?
struct1.cs を見ていると new するのならばメンバ変数を 0 で初期設定するから
問題なさそうですが、そのまま生成するとメンバが初期化できません。
当然エラーとなりますが、構造体の強みは new しないことによる高速性ですが
本末転倒な気がしてならないです。
どういう利用価値があるんでしょうか?
>>631 カプセル化しつつスタック上で効率よく、ってのがあってもいいんじゃないの?
既存コントロールと、独自インターフェイスを継承した拡張
コントロールを作って、既にデザインしてあるWinフォームの
コントロールを拡張コントロールに変えると、デザイン画面に
表示されなくなります。
何とか表示する方法はないでしょうか?
たとえば、
public interface IFoo
{
string hage { get; set; }
}
public class MyTextBox : TextBox, IFoo
{
private string _hage;
public MyTextBox()
{
}
public string hage
{
get { return _hage; }
set { _hage = value; }
}
}
こんな内容のクラスライブラリを作って、フォームに貼り付けた
テキストボックスを、MyTextBoxに変えると、デザイン画面から
消えます。
実行すれば期待通りに動くんですが、フォームデザイン画面が
つかえないと面倒だなぁと思いまして。
たすけてくだしゃい。
>>633 メンバ定義のところと,そのメンバのインスタンス作成のコンストラクタの両方を変えてみては?
# 既に変えていたらスマソ
>>633 おいらもほぼ同じことやってるけどデザイン画面に出てるよ。
#region Windows Form Designer generated code 〜 #endregion
の内部には手を加えないようにすれば大丈夫だと思うが・・・
根拠レスだけど、一度デザイン画面から消えたのは、元のコードに
戻してもフカーツしないような気が・・・というか俺はも一度TextBoxを
配置しなおして直しただけなんだけどね。
あまりアドバイスできなくてすまん。
デザインウィンドウを一度閉じて開けば?
>>634 ありがとうございます。
どちらも変えてみたんですが、だめでした。
>>635 えぇぇ、出てるんですか?
確かに #region Windows Form Designer generated code 〜 #endregion
の中の newしている行を、自分のクラスをnew するように修正してしまいましたが...
そこでやらずにできるっちゅう事でしょうか?
>>636 それが直らなかったんすよ。。。
InitializeComponentの中身をかなり書き換えてしまって、
デザイナに表示されなくなったもんだからバックアップから
コードコピペで戻したんだけど、何度か閉じて開いてもダメ
ですた。コピペした元コードが腐ってた可能性もあるけど…
#と悩むより、ばっさり削って再配置のほうが早いかなぁと。
>>639 そりゃ、再表示しても表示されないならコードが腐ってるんでしょ。
>>638 >そこでやらずにできるっちゅう事でしょうか?
いや、そこでやって出来てます。
MyTextBox textBox1 = new MyTextBox(なんか引数);
とかやってたら、↓次のことを試してみるといいかも。おいらはそれで出来た。
(名前空間).MyTextBox textBox1 = new (名前空間).MyTextBox(); //引数なしで呼んでみる
642 :
デフォルトの名無しさん:02/07/03 23:32
そのフォームのソースを丸ごとカットして別のエディタにペーストして保存。
ソースの無いフォームのまま実行して終了。
そして、再度プロジェクトを開いて保存していたソースをペースト
それでどう?
>>640 認めたくないものだな。自分の厨房ゆえの過ちというものを・・・
>>642 次そういう機会があればトライしてみます。。
>>643 誰でもあることさ。
俺はタグ閉じ忘れでほぼ完成してたWebFormをお釈迦にしたよ
>>631 RomanNumeral まで行ったところで、自己解決
class Test
{
struct Hoge
{
private int v ;
public Hoge( int a )
{
v = a ;
}
}
static public void Main()
{
Hoge a ;
a = new Hoge( 7 ) ; // ヒープは使われず、単にa のコンストラクタが呼ばれる
}
}
C++ とはなかなか勝手が違うもんです。
>>645 構造体ってnewする必要あったかいな?
>>646 v に代入しないで a 使ったらエラーじゃん。
v は private だから外からはアクセスできんでしょ
648 :
デフォルトの名無しさん:02/07/05 12:03
>>647 class Test
{
struct Hoge
{
public int v ;
public Hoge( int a )
{
v = a ;
}
}
static public void Main()
{
Hoge a ;
a.v = 32;
}
}
通ったけど?例外無しに。
引数無しのコンストラクタは認められないみたいだけどね。
「構造体に明示的なパラメータのないコンストラクタを含めることはできません。」
>>648 public int v ;
だから流れ読めよ
v は private
650 :
デフォルトの名無しさん:02/07/05 13:30
ユーザーコントロールだけじゃなくて、フォームの継承も
デザインで表示できなくなったりするね。
これってウチだけの現象?
651 :
デフォルトの名無しさん:02/07/05 19:33
俺も起きる・・・。例外・・・・バグか?
この前晩までどうって事も無かったんだけど、何もしてないのに
翌日になったらフォームのデザインがエラーで表示されなくなった時はマジ
たちなおれんかった。なんとか直ったけど。
652 :
デフォルトの名無しさん:02/07/05 19:36
VSをいったん終わらせるともう駄目なんだよね。
フォームの継承ができなくてがっくり。
全然話題にならないから自分だけかと思ったよ。
653 :
デフォルトの名無しさん:02/07/06 02:35
フォームにインターフェース継承をして実装したけど、大丈夫だったよ。
654 :
デフォルトの名無しさん:02/07/06 11:57
constなtableを作る方法は、Stringしかできない?
>>654 そのクラス継承してセッターを実装しないとか。
前々から思って異端だけど、なんでC#にはconst配列がないんだろう?
>>657 いいたいことがあるなら、ちゃんと書いてくれ(w
:::::::::::::::::::::::::::::. .☆ .:::::::::::::::::::::::::::::::::::::::::::::::::::..:.....:::.::...::::::::::::::::::::::
:::::::::::::::::::::::::::::::::..:..:::::::::::::::::::::::。:::::::::::::::::::::::::::::::::::::::::::::::::::::。:::::::::
::::::::::::::::::::::::。::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::。:::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::。:::::::::::::::::::::::
 ̄`''--、__,,,_,,,,__,;;w--─--、___:::::::::::::::::::::::::::::::::::::::::::::::::::,,;;;;;;;;
_ ___ ____--─ー──~'''~`─-、._,,、w─''"" ̄  ̄
─''"~  ̄  ̄  ̄^ー-‐''''"~~~`‐-‐''~^ヘ,,__,, _____
/ ̄\
∨***\
∠〃~ヽヽ> /⌒ヽ
||| #゚ ー゚)|| (ノハヽ)○
/ つ☆と)ヽ (^▽^ )⌒ヽ
∠_, (^)(^)> ☆☆★と.,,ノ__ )
゛"゛"゛"゛"゛"゛"゛"゛"゛"゛"゛"""゛"゛"゛"゛"゛"゛"゛"゛"゛"゛"゛"""
おお!すくなくともフォームの継承は私のミスが原因でした。
継承元と先で同じ名前のイベントを作っていて
それでのエラーでした。
エラーは以下のモノでした。
ms-help://MS.VSCC/MS.MSDNVS.1041/vbref/html/vberrduplicatedeclarationofmember{0.htm
しかし、ユーザーコントロールで出る同様のエラーは
原因がわからないままです。継承なんかしてないし・・・
ms-help://MS.MSDNQTR.2002APR.1041/cpguide/html/cpconasynchronousprogramming.htm
↑この非同期呼び出しっていうのと、スレッドの違いがよく分からない・・・
662 :
リンク先読まずにレス:02/07/07 00:35
>>661 内部で持ってるスレッドを利用して非同期な呼び出しをしてくれる
ってTechEDでいってた。
>>662 サンクス!
非同期呼び出し(Async〜)にしても、
内部的にはスレッドを利用してるんですか。
本質的にはあまり変わりはないって感じですね…
>>663 スレッドというものを意識しなくても、単に非同期にメソッドを
呼び出したいっていう要求をみたせる(内部でスレッドが使用されない
機構もありうる?)など云々いってたけど、
確かに似たようなもんだと思う。
>>664 >スレッドというものを意識しなくても、単に非同期にメソッドを
>呼び出したいっていう要求をみたせる
必要性がなければスレッドを直でやらなくてもAsync〜の方が
簡単に非同期処理ができるよってことのようですね。
ヘルプ読んでて、どちらでコード組むかでちと迷ってたんですが、
Async〜の方で逝ってみたいと思います。
ワーカースレッドプールを作る前に検討したほうがよさそうですねえ
667 :
デフォルトの名無しさん:02/07/07 11:59
Standard Edition で socketクラスを使えますか?
>>667 取りあえず.netの事勉強しなされ・・・。
.NNETFrameworkにあるクラスは無条件に使える。
って言うかMFCでもそんな差別無かったろうて・・・。
669 :
デフォルトの名無しさん:02/07/07 13:01
670 :
デフォルトの名無しさん:02/07/07 14:43
users の C# メーリングリストに C# のグラフィック描写は遅いって書いてあったけど、
これってGDI+が 汎用性>速度 で設計されてるせい?
それとも、ネイティブコードじゃないから遅いの?
いくら users のメーリングリストでも、OnPaint イベントをやめて
OnPaintBackground イベント使うようにしたら解決するとか言う落ちじゃないよな?
>>670 まあC++ベースだし、機能も多いから遅いのは確かなんだろうけど。
ちなみにDX9で速度改善がされてるという噂。
パイプとかはどの辺のクラスを探せばいいですかねえ?
裏でコンソールアプリを実行させて、
表示内容をまるまる取得したいと考えています。
いやー、うまくいきました。
継承したコントロールを含むDLLへの参照をいったん削除して、参照しなおしただけでOKでした。
デザイン画面でばっちりです。
>>674 そのコンソールアプリも自分で書いてるなら、
プロパティで公開すれば。出力先を指定できるように。
>>674 ProcessStartInfoとProcessあたりを見るよろし。
こんな感じかな?デッドロックにはくれぐれも要注意!
ProcessStartInfo info = new ProcessStartInfo("Hoge.exe");
info.UseShellExecute = false;
info.RedirectStandardOutput = true;
Process p = new Process();
p.StartInfo = info;
p.Start();
string s = p.StandardOutput.ReadToEnd();
680 :
デフォルトの名無しさん:02/07/08 10:14
初心者なんですが、統合環境の使い方の本で良い本があったら紹介してもらえませんか?
682 :
デフォルトの名無しさん:02/07/08 12:46
総合環境というのがどういう意味を指すのかがよくわからん。
>>682 総合じゃなくて統合。IDEの直訳でしょ。
684 :
デフォルトの名無しさん:02/07/08 16:32
2つのbyte[]の配列が等しいかどうか知るにはどうしたらよいでしょうか?
つまり、memcmp()のようなことがしたいのですが・・・。
>>684 byte [] test = (なんかのデータ)';
test.Equals(比較したいbyte配列);
とかは?
両方falseだね。ということは、自前で比較か・・・。
using System;
class Test
{
public static void Main() {
byte[] b1 = new byte[] { 1, 2, 3 };
byte[] b2 = new byte[] { 1, 2, 3 };
Console.WriteLine( b1 == b2 );
Console.WriteLine( b1.Equals(b2) );
}
}
|| : ::.゜ ゜ ゜゜。・。゜.゜..
|| ミ /彡 :::.゜。 ゜・。゜゜. . . .
||..ミ、|ミ //彡 夏休みにC#おぼえられますように。☆彡
||ミ.|.ミ/ ./.| :::.゜。 ゜・。゜゜. . . .
||.|//|. [] ∧v∧ : ::.゜ ゜ ゜゜。・。゜
||/. [] ( #゚ー゚) :::.゜。 ゜・。゜゜. . . .
||┬┬┬┬┬-O∞O‐┬┬
||‐┼┼┼┼┼‐┼┼┼┼┼
||┼┼┼┼┼┼‐┼┼┼┼┼
夏休みなんてないわい!
>>686 調べもせずに書いてスマンかった。
Falseが返るね・・・
>>686 Equalsもfalseなんだ・・・なんか変な感じ
>>686 やっぱりこれっきゃないですか。ありがとうございます。
なんか、ありそうでないんですね。これ。
692 :
デフォルトの名無しさん:02/07/08 21:28
マイクロソフト以外にC#開発ツールは、
でるのでしょうか?
一言言わせろゴルァ!!
FormのHelpButtonプロパティが機能しないっちゅーねん
一度Formをローカライズ可能にすると並みの方法じゃ元に戻せないんですけど
突然色分け&メンバ表示が壊れるのはなぜですか?
>>693 これじゃないの?
(ヘルプより)
>最大化ボタンまたは最小化ボタンが表示されている場合は、 HelpButton
>プロパティの値は無視されます。
>>690 デフォルトのEqualsは参照の比較を行ってるだけだから、そりゃ一致しない。
696 :
デフォルトの名無しさん:02/07/08 23:53
長尾高弘さんにやってほしかった・・・
>>697 どうして?
長尾高弘はプログラミング言語C++の翻訳でボロクソに言われてるよ
誰が訳しても叩かれる罠
なんかComboBox変じゃないですか?
マウスでテキストの範囲選択が出来ないとかコンテキストメニューが出せないとか。
漏れだけ?
>>700 漏れもそう。既出だがどうすりゃいいかは、わかんない。
702 :
デフォルトの名無しさん:02/07/09 00:34
>>696 アスキー出版だったらある程度は安心できるんだけど、日経BPかあ。
あんまり期待しないでおこう。
2ちゃんで叩かれてもなあ・・・
>>692 既出だが、SharpDevelopとか。
707 :
デフォルトの名無しさん:02/07/09 07:41
709 :
デフォルトの名無しさん:02/07/09 19:57
710 :
デフォルトの名無しさん:02/07/09 21:11
>>707 15日じゃなくて、実際は明後日発売だそうです。
見に行ってみるか
『Applied〜』レベルの知識が要る人ってどれぐらいなんだろう・・・。
712 :
デフォルトの名無しさん:02/07/09 21:25
おいおい、それ知らなきゃコード書けんだろ。
>>712 そうなの?じゃ、そんな深い内容じゃないんだ。
714 :
デフォルトの名無しさん:02/07/09 22:41
あー、深くはないね。基本。
>>716 監訳者本人が書評書いちゃ駄目じゃん。(藁
ほんとだ。。。
自分で自分の本の事書いてもね。。。
まぁゴーストライターに全部書かせて、金を積んで新聞の書評欄に宣伝載せる
どこぞの経済評論家のソレからすれば目くじら立てるほどでもないかと・・・
あまり自分で自分の本ほめるとデムパ度ランクがT田氏と並べられてしまうぞ。
しかし、デザイナでユーザーコントロールをフォームに貼り付けただけでOnLoad()を実行してしまうのはいかがなもんかと。しかもプロジェクトをロードするたんびに実行します。
>>716 あ、この人の講演TechEdで聴いた。
最後にきっちり自分の本の宣伝してたよ。
ん。。。ますます駄目人の予感。
けど、本そのものはかなりの良書と聞いた。あとはこの人の日本語能力に
かけるしかないね。。
で、みなはどうするのよ。
プログラミングC#は内容が薄い可能性。
.net Frameworkは翻訳者が・・・・。
立ち読みしに電車で行かないとならないんで・・・・
726 :
デフォルトの名無しさん:02/07/10 08:23
>>725 やっぱり.プログラミング Microsoft NET frameworkでいいんじゃない。
Advanced Windowsの.NET版だと考えれば・・・。
も一つのほうは様子見して、金に余裕があるときでいいかも。
といいつつ、全部予約してしまったけど・・・。
そろそろ浅めのC#本は出揃ってきた感があるな。
これからは、もっと個々のテーマで
深〜く突っ込んだ本が欲しいころだよね。
お 前 ら 、
手 取 り 足 取 り 本 無 い と プ ロ グ ラ ム の
一 つ も 出 来 な い ん で す か ?
728 :
デフォルトの名無しさん:02/07/10 09:25
.NETごときにわざわざ無駄な苦労する必要はないと思われ。
所詮金のためなんだから、金で解決するのが筋。
VSユーザーは確か割引で日経の本買えるはずだけど、パンフまだ来ないね。
.net FrameworkとC#の割引の値段知ってたら教えてください。
730 :
デフォルトの名無しさん:02/07/10 14:00
C#なんて、VB厨雑誌の入門記事とSDKのドキュメントで十分じゃん。
値段教えて。。。。ステップバイステップくらいにしか安くならない
なら書店で買うけど
メニュー項目のプロパティ一覧にBreakやBarBreakが無いっす。
>>732 BrowsableAttributeがfalseになってるからっす。
734 :
デフォルトの名無しさん:02/07/10 21:15
早くADO.NETの詳しい本でないかなぁ。
>>701 サンクスです。漏れだけじゃないんですね。
昨日の時点ではちょっと使いにくいな程度だったんですけど、
今日はもうコントロールとしてまともに機能して無かったです。
どうやらフォーカスのあたり具合で入力したテキストが勝手に別のテキストに変わるようです。
もう何がなんだか・・・漏れの理解の範疇を大きく超えますた。
はよ直してホスィ・・・
>>727 漏れは.NET Framework SDK ドキュメントっちゅう
手取り足取りマニュアルないとプログラミングできんわぁ〜(はぁと)
737 :
デフォルトの名無しさん :02/07/10 22:35
日本語版のpeverifyコマンドで、エラーメッセージは出力されてますか?
(英語版は正しく出力されます)。
739 :
デフォルトの名無しさん:02/07/10 23:08
738さん、ありがとうございます。
私の環境(Win2000Pro + 日本語版.NET Framework 1.0.3705.0)で
実行すると、以下のようになってしまい、
[IL]: Error: [D:\a.exe : m::Main] [ ←ここに何も出ない!
[IL]: Error: [D:\a.exe : m::Main] [HRESULT 0x80004005] -
2 Errors Verifying a.exe
肝心のエラーの理由が出てきません(英語版だと出ます)。
会社でMSDNの契約をしているので、MSに相談してみます。
>>739 あ、managed exeの検証はしてないや。
普通のexeにpeverifyしたみただけ。
>>730 >VB厨雑誌の入門記事とSDKのドキュメント
わ か っ て な い バ カ が い ら っ し ゃ い ま す
730はなぜここに通ってるのだろうか・・・・。
あ!これから本買いに行ってきます。
本の宣伝うぜえよ。関係者か?
リチャー氏は.NET出たばっかの頃MSDN Mag.でもいろいろ書いてたけど、
あれとはどう違うんだろ?
なんだかんだ思いながら結局3冊買ってしまった。まだ詳しくは読み込んで
無いんだけど
「プログラミング.net framework」
思ってたよか悪いかな?クラスの全体像を扱ってるのかと思ってた。
表紙に載ってる通り.net frameworkと共通ランタイムについてはそれなりに
詳しく書かれてる。
普通にWindowsアプリ作ったりするならしばらくは不要だと思う。
MSプレスの専門書はどれも同じなんだが図が少ないからかなり難しく
思う。
「C#によるプログラミングWindows」
http://bpstore.nikkeibp.co.jp/msp/book/02921/02921c.html に載ってる内容からするとかなり初心者向けっぽく思ってたけど、一つ一つの
内容についてが、かなり濃くかかれてるので立ち読みしててこっちは買おう
と思った。
上と下に分かれてるけど、.net frameworkでWinアプリ作る基礎的な部分
の深い事はマジ知れると思うよ。普通にアプリ作る上では不必要かと。
プログラミング.net Frameworkよかこっちの方がお勧め。
二つともMSプレスはどれも図とか少ないから読みやすくは無いと思うし、
難しく感じる。まーなんとも言えないとこだけどね。
それと最近C#始めたばっかだから買う参考にはしない方が良いと思う。どれも
5000以上するし立ち読みで決めるのがやっぱ一番。
プログラミング.net frameworkとC#によるプログラミング 上と下
で三冊っす。
ややこしくてスマン。
>>746 このクソ暑い中、あれだけブ厚い3冊を持ち帰ったの?
すごい根性だ。
755 :
デフォルトの名無しさん:02/07/11 19:31
今日話題の3冊を買いに行ったら無かったです。
台風の影響ですね。しょぼーん。
Java関連のスレが下がっているので嬉しいです。
『プログラミング Microsoft .NET Framework』読んできた。
入門的でもなければ中・上級者向けでもなく、各節の深さがなんとなく中途半端な感じがした。
本が出た当時のことを考えれば、貴重な情報が満載なのは分かるんだけど、
今はsscliがあるからね・・・。
漏れ的にはCLIに絞ったディープな本がすごくホスィ・・・。
>>758 できる範囲で見てるけど、個人では限界がある・・・。
>>757 C#の言語仕様書が1冊の本になるぐらいだから、CLIの仕様書も出してもいいと思うのだが。
761 :
デフォルトの名無しさん:02/07/12 10:36
ここしばらくコードに関する質問がないね
762 :
デフォルトの名無しさん:02/07/12 11:10
もう、だいぶ色々できるようになってもうすぐ納品だよ。
みんなありがと。
763 :
デフォルトの名無しさん:02/07/12 11:43
>>760 InsideMicrosoft IL Assembler
という本がお勧め。
DLLの構造から、アーキテクチャ、インストラクションセットまで全部載っている
>>763 Sergeたんの本だね。
某MLを見ても、本当に知り尽くしてるもんなあ・・・。
日本でももっとインサイドの話ができるMLとかあればいいのにねぇ。
USERSとかMS Newsgroupを見てると激しく萎える。
766 :
デフォルトの名無しさん:02/07/12 14:20
週末は読書三昧
768 :
デフォルトの名無しさん:02/07/12 21:20
Petzold本、ここまで意地になってWindowsFormsのみってのも逆に新鮮だね。
771 :
デフォルトの名無しさん:02/07/12 22:50
まだ翻訳されてない良書って他に何があるだろう。
>>763も含めて。
Essential ADO.NET
>>771 O'REILLYとかAPRESSが穴場だと思われ。
777 :
名無しさん#:02/07/13 00:08
VS.NETのプロパティウインドウとかでつかってる、
移動できるタブってどうやんの?
781 :
デフォルトの名無しさん:02/07/13 00:32
C#でGeneticProgoramingはどうやってやるんですか?
782 :
名無しさん#:02/07/13 00:35
Genericでした。すみません。
C++で言うテンプレートはC#だと何にあたるのかな。
ボクシング?
784 :
デフォルトの名無しさん:02/07/13 02:25
>>783 Reflection 使え。
ついでに言うと、MS はいずれは C# に template を実装すると思われ。
>>785 amazon.co.jpで代引きで買えるよ。
XMLからのデータをリストボックスに追加しようとしてます。
XmlTextReader ReadXML = new XmlTextReader("Data.xml");
while(ReadXML.Read())
{
if(ReadXML.NodeType == XmlNodeType.Element)
{
while(ReadXML.MoveToNextAttribute());
TodayListBox.Items.Add(ReadXML.Name.ToString()).SubItems.Add(ReadXML.ReadString());
}
}
XMLファイルは
<?xml version="1.0" encoding="utf-8" ?>
<One>
<JobData1>
<Name>NameData</Name>
<StartTime>StartTimeData</StartTime>
<EndTime>EndTimeData</EndTime>
<Details>DetailsData</Details>
<Place>PlaceData</Place>
</JobData1>
</One>
どうやってもOneがリストボックスに追加されるんですが。。。JobDataは
追加されないのに・・・・
>>787 ListBoxじゃなくてListViewじゃないの?
ごめん。そうだ。
けど、それでもOneが出てくる。
>>787 Read()で<One>にたどり着いて、次のReadString()で<JobData1>に進んでるのだと思われ。
>>787 これでどう?
XmlTextReader ReadXML = new XmlTextReader("Data.xml");
string elem = null;
while (ReadXML.Read()) {
if (ReadXML.NodeType == XmlNodeType.Element) {
elem = ReadXML.Name;
}
else if (ReadXML.NodeType == XmlNodeType.Text) {
TodayListBox.Items.Add(elem).SubItems.Add(ReadXML.Value);
}
}
こっちの方がいいかな?
while (ReadXML.Read()) {
if (ReadXML.NodeType == XmlNodeType.Element) {
while (ReadXML.MoveToNextAttribute());
string name = ReadXML.Name;
if (ReadXML.Read()) {
if (ReadXML.NodeType == XmlNodeType.Text) {
TodayListBox.Items.Add(name).SubItems.Add(ReadXML.Value);
}
}
}
}
あ、MoveToNextAttribute()は要らんかった。
794 :
デフォルトの名無しさん:02/07/14 06:52
C:\dev\Menogaia\ControlLibrary\ctlExDbcode.cs(272): 'ControlLibrary.frmcDbname' は 'C:\Org\dev\Menogaia\SangatuControlLibrary\frmcDbname.cs' の定義を使って、複数の場所で定義されています。
いろんなクラスでこんな警告が山ほど出るのですが、原因がさっぱりわかりません。
みなさんはどうやって回避していますか?
795 :
デフォルトの名無しさん:02/07/14 06:55
C:\dev\ControlLibrary\ctlExDbcode.cs(272): 'ControlLibrary.frmcDbname' は 'C:\dev\ControlLibrary\frmcDbname.cs' の定義を使って、複数の場所で定義されています。
引用する警告のソースをまちがえました、こんなんです。
>>791 あ〜助かった。ありがとう。これ解決に数日かかってた。
すまん問題出た。
リストビューとリストボックスってどっちもViewをDetailsにしたら
同じようなのになるんだけど、何が違うの。。。。
>>797 ん、何が問題?
Columnsに2列追加しとけば両方出るよ。
いや、リストビューとリストボックスの違いが今一わからん。
>>799 ListViewの方がスタイル変更できるとか、(大きなアイコン、小さなアイコン、一覧、詳細)
あとはListViewItemクラスが柔軟にカスタマイズできるとか。(並べ替えのカスタマイズなど)
803 :
デフォルトの名無しさん:02/07/14 21:52
>>802 わかった、とりあえずリストビューでやってみるわ。
こんにちは
Bitmap を Graphics に拡大表示したいのですが、
勝手にアンチエイリアスがかかってしまいます。
SmoothingMode などいじってみたものの変化ありません。
単純に拡大コピーする方法は無いものでしょうか。
>>804 Graphics.InterpolationModeをNearestNeighborにしてみるとか。
806 :
デフォルトの名無しさん:02/07/15 13:54
バージョン違いのアセンブリを共存できるのはすごいことだと思うけど、
GACがバージョン違いのものだらけ・バージョンの依存関係が複雑で下手に触れない
言わば「Assembly Hell」にならないかものすごく心配。
やっぱりデフォルトは「下手に置き換えないで、古いバージョンは残しておこう」でしょ?
XPのWinSxSなんかを見ても、今の時点で各DLLが2つづつあるし。
これがGACで同じことになったら…。
>>805 Σ(゜д゜;)出来ました!
助かりました、ありがとうございます。
あれかな、MSだから力の理論で。
HDどうせあまってるからDLLいくらあってもいいよ。ソフトが(とくにうちのが)
動ければいいんだよという考え方。
それはそれでいいけどね。
CLRそのものもサイドバイサイド、アセンブリもサイドバイサイド。
もう無限の組み合わせやね。
>>806 DLLでHDDを埋め尽くす新たなDLL HELLが・・・・
まじで心配。
812 :
デフォルトの名無しさん:02/07/15 23:00
アセンブリのファイルサイズなんて小さいもんだよ。
...ってそういう問題じゃない?
一個が約50KBとして、100GB埋め尽くすには約200万個のDLLが必要だな。
万個
珍個
なんかわかった気がするよ・・・
既定ではインターネットからのプログラムは実行されないことになってるんだ
.NET Wizardでセキュリティを変更してやればいい、と、
見る人間全てにそんなの強要してられないぞ・・・
署名とか言うのすればいいのだろうか、やり方わからんけど。
せめてJavaと同じくらいのの実行権は既定で欲しかったなぁ
>>816 リモートオブジェクトのactivateのタイミングを拾うのは簡単だけど、
deactivateを拾うのは半端じゃなくむずかしいと思われ。
(LifetimeServicesあたりを触るしかないのかな・・・。)
なので、すごく原始的だけど、MessageSinkの中で
メソッド名を見て処理を切り替えるのがいちばん楽だと思われ。
具体的なイメージが湧かないときは言ってちょ。
>>816 というか、わざわざContextAttributeを使う必要があるのかな。
普通にコンストラクタ・ファイナライザに処理を埋め込めばいいのでは?
822 :
デフォルトの名無しさん:02/07/16 19:05
Whidby&Everettあげ
>>816 ContextAttributeじゃダメっぽいね。問題だらけだわ。(;´Д`)
・IContributeObjectSinkを使った場合
MessageSinkでコンストラクタをインターセプトできない。
・IContributeServerContextSinkを使った場合
こちらはコンストラクタをインターセプトできるが、
呼び出し元のContextBoundObjectを取得する手段がない。
・IContributeObjectSink+IContributeServerContextSinkの場合
コンストラクタの問題は解決できるけど、
やっぱりファイナライザはインターセプトできない。
IDisposableでも使うしかないけど、規約的にちょっと違う。
それと、LifetimeServicesのカスタマイズは無理だった。
つーことで、悲しいけど
>>821が正解のような・・・。
816です。
>>819さん、
>>821さん、
>>823さん、ありがとうございます。
ContextAttributeでは厳しそうですね・・・結局
>>821 で要件を満た
せるので、それで逝ってみたいと思います。
>>823さん、わざわざ調べて
下さったのにすみませんでした。。。
>>820 ありがとう、それで行くことにしますた
ちょっと手間取ったので次のチャレンジャーのために一言
AssemblyInfo.csに
[assembly: AllowPartiallyTrustedCallers]
を付け加えるのを忘れずに
あらら?出来たと思ったのは夢だったみたいだ・・・
表示出来ない・・・何でやろ・・・
827 :
デフォルトの名無しさん:02/07/17 00:30
テキストの描画ですが、GraphicsPath.AddString を使った場合は
Graphics.DrawString よりも汚くなってしまいます。
どうすれば Graphics.DrawString 並にきれいに表示できるでしょうか。
RichTextBoxで、テキストの背景色(マーカー)を
つけるにはどうしたらいいんでしょうか。
>>828 指定した部分だけ背景色を変えるということ?
ワードパッドでできなかったら、そういう機能は元からないと思われ。
>>827 文字の輪郭をなぞってるだけだから、細かいピクセル単位まで再現するのは無理そうね・・・。
832 :
デフォルトの名無しさん:02/07/19 14:15
>>832 .NETのサンプルがないのがちょっと悲しい・・・。
でもwsdl.exeはあっさり通ったけど。
SoapRequestSamples見ながらやったらちゃんと動いた。
using System;
using System.Web.Services;
class AmazonTest
{
public static void Main() {
KeywordRequest req = new KeywordRequest();
req.keyword = "dog";
req.page = "1";
req.mode = "book";
req.tag = "webservices-20";
req.type = "lite";
req.devtag = "your-dev-tag";
AmazonSearchService service = new AmazonSearchService();
ProductInfo info = service.KeywordSearchRequest(req);
Details[] results = info.Details;
foreach (Details d in results) {
Console.WriteLine(d.ProductName);
}
}
}
using System.Web.Services; は必要なかった・・・。
836 :
デフォルトの名無しさん:02/07/20 02:22
838 :
デフォルトの名無しさん:02/07/20 23:04
IO.File.Createでファイルを作ったんだけど。
次の処理でファイルを開こうとするとどうしてか
IOExceptionが発生するんです。なんででしょうか?
839 :
デフォルトの名無しさん:02/07/20 23:06
838です。
クローズしわすれですた。作ってもクローズしなきゃならないんだ・・・
∩
| |
| |
∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)// < 先生!RichTextの仕様はどこで見れますか!?
/ / \
/ /| /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
__| | .| |
\  ̄ ̄ ̄ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´∀`)/<先生!ありがとうございます!
_ / / / \_____________________
\⊂ノ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄||
|| || ̄ ̄ ̄ ̄ ̄||
.|| ||
843 :
デフォルトの名無しさん:02/07/22 00:36
MDIアプリケーションはデフォルトで、親ウィンドウの閉じるを押すと
子ウィンドウが一個ずつ閉じていくようなのですが、親ウィンドウの
閉じるを押した時に一斉に閉じるようにするにはどうすればよろしいのでしょうか?
# 子ウィンドウが3個あると3回クリックで子ウィンドウが全て閉じ、四回目で親ウィンドウが閉じる
#というような状態になってしまっています。
>>843 え?こっちでは一斉に閉じてくれるけど・・・。
どんなコード書いてる?
>>844 どうもありがとうございます。
メニューから子ウィンドウの表示の有無を決めることができるようにして、
子ウィンドウの閉じるがクリックされると、Visibleがfalseになるように、
そのメニュのイベントを呼び出すように設定しています。
親ウィンドウ Form1 ------------------------------------------------
// 子ウィンドウの登録
layerForm = new LayerForm(this);
layerForm.MdiParent = this;
layerForm.Show();
// イベント
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
DialogResult d = MessageBox.Show("終了しますか?", "終了", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if(d == DialogResult.No)
e.Cancel = true;
}
子ウィンドウ LayerForm ------------------------------------------------
private void LayerForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if(sender.Equals(this))
{
e.Cancel = true;
mainForm.menuItemLayerForm_Click(this, null);
}
}
846 :
843 ・ 845:02/07/22 01:44
他に必要そうな部分をあげておきます
親ウィンドウ Form1 ------------------------------------------------
public void menuItemLayerForm_Click(object sender, System.EventArgs e)
{
if(layerForm.Visible)
{
layerForm.Visible = false;
menuItemLayerForm.Checked = false;
}
else
{
layerForm.Visible = true;
menuItemLayerForm.Checked = true;
}
}
}
親ウィンドウ Form1 子ウィンドウ LayerForm 同じ------------------------------------------------
private System.ComponentModel.Container components = null;
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
847 :
デフォルトの名無しさん:02/07/22 01:45
848 :
デフォルトの名無しさん:02/07/22 03:11
テキストボックスの特定の単語に色をつけるにはどうすればいいのですか。
>>848 RichTextBoxを使うのが吉かと。
Find()とかSelectionColorがあるので。
>>846 子ウィンドウはあるのに、フィールドlayerFormが1個しかないのは何か変じゃない?
851 :
843 ・ 845 ・ 846:02/07/22 09:08
>>843 >>845 >>846 >>850 どうもありがとうございます。
他にもtoolForm 、 tipsFormなどが全く同じように
実装されています。
なぜか全てのFormのVisibleがfalseにならないと
閉じないようで、どこかでおかしな処理をしていると思うのですが、
なかなかどこか分かりません
どうかよろしくお願いします。
>>851 あー、現象再現したわ。
> private void LayerForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
> {
> if(sender.Equals(this))
親フォームの閉じるボタンを押してもsenderがthis(child)で飛んできてるからだ。
しかも親のClosingイベントより先に子のClosingが処理されてる。
(だから、親フォームクラスに親のクローズかのフラグも置けない。)
こりゃ厄介だね。
853 :
843 ・ 845 ・ 846:02/07/22 09:36
原因が分かりました。
>>845のLayerForm_Closingの中のif(sender.Equals(this))で
親ウィンドウか自分かが判断できていないようです。
他に
if(sender.GetType().Equals(this.GetType()))
if(sender.GetType().ToString().Equals(this.GetType().ToString()))
なども試してみたのですが、うまくいきません。
親ウィンドウから呼ばれているのか、子ウィンドウから
呼ばれているのかを知るにはどのようにすればよろしいのでしょうか?
854 :
843 ・ 845 ・ 846 :02/07/22 09:38
>>852 あぁ、どうもありがとうございます。
>親フォームの閉じるボタンを押してもsenderがthis(child)で飛んできてるからだ。
子ウィンドウからよばれているのですか。
ということは
>>853でやった方法でもダメなのは当然ですね・・・
別の方法でないとだめっぽいですね
855 :
843 ・ 845 ・ 846:02/07/22 09:49
解決しました。
>>852さんの指摘の通り、このままではだめっぽかったので
キャンセルはやめて閉じてしまうようにして、メニューをクリックすると
再びShow()を呼び出して表示しました。
どうもありがとうございました。
>>845 LayerForm_Closing
if(sender.Equals(this))
{
e.Cancel = true;
mainForm.menuItemLayerForm_Click(this, null);
}
↓
mainForm.menuItemLayerForm_Click(this, null);
>>846 menuItemLayerForm_Click
layerForm.Visible = true;
↓
layerForm.Show();
>>854 何とか行けた。
親のClosingイベントで子ウィンドウをすべて非表示にすれば大丈夫だね。
foreach (Form f in this.MdiChildren) {
f.Visible = false;
}
857 :
843 ・ 845 ・ 846 :02/07/22 09:52
>>856 ありがとうございます。
そっちの方が自然っぽいですね。
使わせていただきます。
どうもありがとうございました。
ごめん。
>>856は間違ってた。うまくいってない・・・。
>>858 いえいえ、とんでもないです。どうもありがとうございました。
日本語になってなかった。(;´Д`)
>>850 > 子ウィンドウはあるのに、
↓
子ウィンドウは複数あるのに、
ひょっとしてもう出てるのかも分かりませんが‥‥。
C#で、クラスの配列を作製するのはどうすればいいのでしょうか?
普通の配列みたく、
public class Class01{ 略 }
public class Class02{
public static void Main(){
Class01[] c1 = new Class[3];
:
}
とかにすると、コンパイルは出来るのですが、そのクラスを使おうとすると、
「System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません」
どうかよろしくお願いします〜。
862 :
デフォルトの名無しさん:02/07/22 16:06
>861
new Class[3]は空のClass01型のオブジェクトを3つつくるという意味です。
863 :
デフォルトの名無しさん:02/07/22 16:12
>849
できました。どうもありがとうございました。
>>864 親フォームのWndProcを直接触れば
>>856の考え方でいけたよ。
const int WM_CLOSE = 0x0010;
protected override void WndProc(ref Message m) {
if (m.Msg == WM_CLOSE) {
foreach (Form f in this.MdiChildren) {
f.Visible = false;
}
}
base.WndProc(ref m);
}
866 :
デフォルトの名無しさん:02/07/22 19:25
Xmlにデータを追記しようとしてるんですが。
XmlDocument doc = new XmlDocument();
doc.LoadXml("data.xml");
XmlElement root = doc.CreateElement("SubData2");
root.InnerText ="InnnerTextData";
doc.AppendChild(doc);
doc.Save("data.xml");
XmlElement root = doc.CreateElement("SubData2");
ここですでにXmlExceptionエラーが発生するんです。
doc.AppendChild(doc);
で間違ってるのは分かってるけど、追加すらできない状態です。
<?xml version="1.0" encoding="utf-8" ?>
<Data>
<subData>SubData1</SubData>
</Data>
に
<subData2>SubData2</SubData>
を追加したい時はどうやれば良いんでしょうか?
867 :
デフォルトの名無しさん:02/07/22 19:27
すまんミスった。コードは下が正解。けど、うまくいかん。。。。
XmlDocument doc = new XmlDocument();
doc.LoadXml("data.xml");
XmlElement root = doc.CreateElement("SubData2");
root.InnerText ="InnnerTextData";
doc.AppendChild(root); //ここを今打ち違っただけ
doc.Save("data.xml");
>>865 こんなすごい方法があるんですね。
どうもありがとうございます。
まだまだ勉強不足なので頑張りたいと思います。
>>867 これでいける?
> doc.LoadXml("data.xml");
doc.Load("data.xml");
> doc.AppendChild(root);
doc.DocumentElement.AppendChild(root);
870 :
デフォルトの名無しさん:02/07/22 21:23
あ!出来ました。ありがとう。
<?xml version="1.0" encoding="utf-8" ?>
<Data>
<subData>SubData1</SubData>
<subData2>SubData2</SubData>
</Data>
みたいに途中とかに入れたい場合ってどうすればいいんでしょうか?
教えてクレクレばっかですみません。
871 :
デフォルトの名無しさん:02/07/22 21:31
さらにスミマセン。上のは普通にできるんですね。
<?xml version="1.0" encoding="utf-8" ?>
<Data>
<subData>
<subSubData>SubSubData</subsubData>
</SubData>
</Data>
ってな感じに深い位置?にデータを追記したいんですが、
何を使えば良いのやら・・・・。
どうでもいいけど、XMLなんだからタグの大文字・小文字は統一してくれ・・・。
873 :
デフォルトの名無しさん:02/07/22 21:42
またまた申し訳ない。
<?xml version="1.0" encoding="utf-8" ?>
<Data>
<SubData>
<SubSubData>SubSubData</SubSubData>
</SubData>
</Data>
>>871 こんな感じ?
XmlElement root = doc.CreateElement("SubData2");
root.InnerText ="InnnerTextData";
XmlNode node = doc.DocumentElement["SubData"];
node.AppendChild(root);
おっと。XmlNodeじゃなくてXmlElementでいいんだね。
XmlElement node = doc.DocumentElement["SubData"];
さらに追加するノードの場所が深くなる場合はもう GetElementsByTagName() しかないのかな?
あ〜ありがとう。
しばらく書いてみるわ。
Xpathもやった事ねーけど、とりあえずやってみます。
880 :
デフォルトの名無しさん:02/07/23 00:16
初歩的な質問で恐縮ですが、
C#stdでバイナリファイルの編集ソフトとか開発できますか?
それようの便利なコンポーネントなどあるのでしょうか?
お願いします。
881 :
デフォルトの名無しさん:02/07/23 00:31
ちん毛
883 :
デフォルトの名無しさん:02/07/23 01:01
才能も何もはじめたばかりなのですが・・・
>>883 才能と努力って違います。
初心者のうちから「便利なライブラリありますか?」なんて言ってちゃあ。
885 :
デフォルトの名無しさん:02/07/23 07:53
テキストオブジェクトなのどに入力された16進数を表す文字列を
byteやint型に変換する方法がどうしてもわかりません。
多分下記のが関係してると思うのですが、簡単な例でいいのでお願いします。
public override byte[] GetBytes(string);
>>885 こんな感じ?
Console.WriteLine( Convert.ToByte("0x00ff", 16) );
Console.WriteLine( Convert.ToInt32("0xffff", 16) );
>>885 int acc = 1;
for(int i = 0;i < dat.length();i++)
acc *= 2;
int sum = 0;
for(int i = 0;i < dat.length();i++)
{
switch(dat[i])
{
case '0':
sum += 0;
break;
case '1':
sum += 1 * acc;
break;
・
・
・
・
}
acc /= 2;
}
>>888 ベタですがやらせていただきます。
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
>>888 VBかよ!
ってさすがは林檎男だ。(w
>886
おおおお、できました!!苦闘6時間・・!
ほんとにありがとうございます!!!
それまでこんな感じでやってました
string str=textBox1.text;
int i=int.Parse(str);
実行するとエラーが出ます
>>892 NumberStylesを引数に取るやつを使わんとダメでしょ。
それでも "0x" をつけるとパースしてくれないけど。
>>894 Convert.ToInt32とInt32.Parseは違うロジックを使ってるみたいね。
Int32.Parseの方はinternalcallだった。
896 :
デフォルトの名無しさん:02/07/23 10:42
ヘルプ見たのですがいまいちよくわからないのですが
基数=進数って感じでしょうか?
Parseを使う場合だとこんな感じでしょうか?
using System.Globalization;(←これ必要だったんですね^^;)
int i=Int32.Parse(string strhex,NumberStyles.AllowHexSpecifier);
MessageBox.Show(i.ToString());
なんとなくわかってきたけど、ここでつまづいてたら先が長いなあ。
いろいろ、お騒がせしました。ありがとうございます。
今参考にしてる本は
「C#,NET プログラミング1 (株)翔泳社」
「独習C#」
なんですが、もっとわかりやすい本ってありますか?
WINアプリを作る技が列挙されてるような・・
なんか、ショウエイかどっかから300個くらいの技?が載ってる
本がでてたような。。。
あんまり役に立つとは思えないが立ち読みしてみれば?
この前でたプログラミングC#はWinフォームについて詳しすぎるくらい
解説されてる。普通に作る上ではSDKで十分かもしれないと俺も
思った。
つーか出版ラッシュで内容を追いきれないな。
901 :
デフォルトの名無しさん:02/07/23 14:04
>>899 買ったけど、内容が浅くて・・・駄目本でした。
902 :
デフォルトの名無しさん:02/07/23 14:17
>>897 これは結構よさげですね。わたしにはちょうどいいかも
今から買いにいってきまーす
908 :
デフォルトの名無しさん:02/07/23 16:33
>>906 それは、固くてしんどいので黄色い本で勉強しました。
>>907 これは、まだ読んでないけど、巨大な本ですね。
907の本っすね。上の前にこれが発売された時に少しネタになってたと
思うよ。
C#の基本なら俺も黄色いあの本がまだエエと思うよ。
@ITの連載が本になったやつは持ち運びに便利(買ってないけど)
お前らにとって良本とはどんな本ですか?
>>910 SDKドキュメントでもあまり深く取り扱ってないことをじっくり解説した本かな・・・。
912 :
デフォルトの名無しさん:02/07/23 19:26
>>909 私も@ITの本はいいと思うよ。ただ好みに合わない人はいそうな感じだね。
考え方を紐解いてくれる感じでいいです。
>>910 はやく、ADO.NETの本が出て欲しい。
目の覚めるような上手い使い方とかね。
>>907 その本、本屋で見ました。
丁寧に説明されていてわかりやすかったけど、
浅く広くがよかったので結局300の技を買ってきました。
今から勉強しまーす。
>>911 現時点ではPetzold本とRichter本ぐらいか。。。
VC6.0の頃に同梱されていた厚いリファレンスマニュアルって
C#にはないんですかね?あんな薄っぺらいのじゃわからん
917 :
デフォルトの名無しさん:02/07/23 21:22
一日格闘したけど駄目でしたのでHELP
<?xml version="1.0" encoding="utf-8" ?>
<SubData>
<SubSubData>
<SubSubSubData>
<title>titleData</title>
</SubSubSubData>
</SubSubData>
</SubData>
XmlDocument xd = new XmlDocument();
xd.Load("data.xml");
XPathNavigator xpn = xd.CreateNavigator();
XPathNodeIterator xpni = xpn.Select("/SubData/SubSubData/SubSubData");
XmlElement root = xd.CreateElement("Details");
root.InnerText ="InnnerTextData";
xd.AppendChild(root);
Detailsデータを追記しようとしてるんですが、どっかが根本的に間違って
ると思う。
>>917 こんな感じで。
XmlDocument xd = new XmlDocument();
xd.Load("data.xml");
XmlNodeList nodes = xd.SelectNodes("/SubData/SubSubData/SubSubSubData");
if (nodes.Count > 0) {
XmlElement root = xd.CreateElement("Details");
root.InnerText ="InnnerTextData";
nodes[0].AppendChild(root);
}
919 :
デフォルトの名無しさん:02/07/23 22:13
できた!!
参考にいろいろ付け加えたりしてみるわ。
前にXPath使った方が良いって言われたんだが、そっちの方わかりますか?
>>919 いや、XPathってこれのこと。
> XmlNodeList nodes = xd.SelectNodes("/SubData/SubSubData/SubSubSubData");
>>920 >xd.SelectNodes("/SubData/SubSubData/SubSubSubData");
ああ。俺が作ろうとしてたのはこれだ・・・。
JavaのSunが作ったDOMにもあります?これ。
>>899 はげどう。意味なさすぎ。数あつめりゃいいって姿勢に辟易。
>>921 最新版のJAXPにもまだないね。Xalanでも使うしかないのかな?
924 :
デフォルトの名無しさん:02/07/23 23:32
>>922 いや、初心者向けにはあれでいいんだよ。
技評のページでは「中級者向け」になってるけど。(w
>>923 まぁ、がんばれば作れるからいいんだけどね。
でも、アレって同じ階層に同じ名前の要素があったらどうなるの?
>>925 ん?NodeListでまとめて返ってくるよ。
>>926 getElementbytagnameと同じ仕様ね。納得。
931 :
デフォルトの名無しさん:02/07/24 09:28
すれ違いかも知れませんが、某パソゲーのチートツールなるものを作ったのですが
公開するとやっぱりやばいですかね?
使い方が明確なんで法律的にやばいかなあと
>>928 System.Data.OracleClientって・・・。
Oracle製の立場がないよ。(;´Д`)
936 :
デフォルトの名無しさん:02/07/24 17:42
既出だと思うけどC#で正規表現って使えるの?
>>936 System.Text.RegularExpression
938 :
デフォルトの名無しさん:02/07/24 18:20
939 :
デフォルトの名無しさん:02/07/24 21:01
恥を忍んで。。。
SDKでコンパイルしたC#のFormを使ったexe、
なんでJavaみたいにDOS窓が開くの???(汗
こんなバカな質問に答えていただける方いらっしゃったらお願いします。
>>939 /t:winexe をつけてコンパイルしよう
941 :
デフォルトの名無しさん:02/07/24 21:17
>>940さん
939です。ありがとうございました!!!(泣
csc /target:winexe X.cs ですね。
HELP見ててもピンときませんでした(汗
943 :
デフォルトの名無しさん:02/07/25 01:39
>>943 もらえるみたいだ。
でも、MSDN入ってないの?