C♯相談室 Part6

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

  ,.-''"¨ ̄¨`' ‐ 、
 (,,(,,i,,,i,,,,,,,,i,,,,i,,),,)
    )  (
    ( #゚ー゚) < C#,.NET関連の話題はこちらでどうぞ。


過去スレ・関連リンクは>>2-10あたり
2名無しさん♯:02/05/25 01:18
関連スレ

Got.VisualStudio.Net 5
http://pc.2ch.net/test/read.cgi/tech/1019968974/l50

【Terrarium】 .NET で虫をつくろう!
http://pc.2ch.net/test/read.cgi/tech/1022037047/l50
5>>1 乙:02/05/25 01:33
新スレおめ
>>1
いや、ほんとに名スレですね!ありがとう!
.NET はまだしも、C#には幻滅した人の数 : 10,203
.NET にも愛想がつきた人の数 : 34,017
8_:02/05/26 09:39
C#って分割コンパイルは一方をDLLにするんですよね。
でもお互いを参照しあったらどうなるの?同時にDLLするしかないのかな?
98:02/05/26 09:41
訂正:同時にDLLする→同時にDLLにする
>>9
DLLまで考えてダイナミックリンクを忘れるお前はアホか?
118:02/05/26 12:06
>>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の別名を作りたいんですがどうしたらよいのでしょうか??
148:02/05/26 12:31
>>12
なるほど、インターフェースを使うのか。確かになんとかなりそう。thx
>>13
using T = System.UInt32;
1613:02/05/26 12:53
>>15
素早いレスどうもありがとうございます。
できれば、そのTの使用をクラス内限定にさせたいのですが、
そんな方法ありますかね?
1713:02/05/26 13:03
間違えました。
クラスの型として宣言する方法でした。
C++で言うところの
class A
{
 typedef unsigned int T;
};
をしたいのですが。
>>17
それは無理。
別名のスコープはnamespace全体かソースファイル全体。
1913:02/05/26 13:18
>>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;
  }
}
2113:02/05/26 14:09
おっと!
>>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にしていっしょにコンパイルするだけ。
2823:02/05/26 19:09
できた!さんきゅ〜。

でもSDKのヘルプにはちゃんと載ってはいないような?
各々のキーワードで全文検索しても見つからなかった。。

(プロパティでは表示されていないらしい)AssemblyConfigurationの意味、
「言語」欄を日本語にする方法、
AssemblyVersionの"*"の法則も教えていただけますか?
// "*"はコンパイル日時がベース?
>>28
ms-help://MS.NETFrameworkSDK.JA/cpref/html/frlrfSystemReflectionAssemblyVersionAttributeClassctorTopic.htm
つーかヘルプにちゃんと書いてあるよ・・・。
>>29-30
あれ?ほんとだ。トピックにはちゃんとある。
全文検索に頼りすぎたらしい。。スマソ。
>>7
C#の、言語そのものはいいんだけど、IDE部分がいただけない。
Borland C# Builder出んかなあ
>>32
じゃあ作れば?
>>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、、、
なるべく組込型使った方が良いか。。。むぅ。
>>43-45
キーワードを使った方がエディタの支援があって楽でし
voidとkusakabe、どっちが王道ですか?
>>47
組込型や予約語は補完してくれない罠。
ところで、C#の矩形配列って右側と左側どちらのindexがメモリ内で連続的に
なるんでしょうか?c[x,y]のときにxとyのどちらが連続かという事です。
>>50
気にしちゃ逝けないことだと思う。せっかくメモリアドレスを隠匿してるのに。
と消極的意見。
5250:02/05/27 19:22
>>51
気にしちゃいけないのかもしれないけど、サイズが大きくなると速度が倍じゃ
済まなくなるんで気になります。
そういや、fixedでアドレス取れるんだっけ。自分で実験してきます。
5350:02/05/27 19:47
試してみました。右側が連続ですね。array[x,y]ならyの方が連続です。
>>52
パフォーマンスならstackallocとかもみておくんなまし。
5550:02/05/27 23:23
>>54
なるほど、こんなのもあるんだね。
ただ、Terrariumのためのプログラムなんで、unsafeコードは使えないです。
(試しに使ってみたらシステムに怒られました)
連想配列みたいなクラスない?
>>56
思いっきりある。System.Collectionsあさって見なされ。
IDictionaryか・・・気が付かなかった。
mapとかhashとかいう名前を想像してたんで。
5958:02/05/27 23:40
IDictionaryはインターフェースだった(;´Д`)
Hashtableでいいの?
intに変換するときって、
Convert.ToInt32()
Convert.ToInt64()
どちらにしたらいいん?
>>60
Int64はlongだぞ
62デフォルトの名無しさん:02/05/28 00:47
質問君No.10650です。
複数の色を使いたいために、
TextBoxをRichTextBoxに置き換えたんですが、
ずいぶんと行間があいてしまいます。
Fontもいろいろ弄ってみましたが、駄目です。
なんとかならないのでしょうか。
>>62
仕様。ワードパッドと同じ。
6462:02/05/28 01:35
がーん(T_T
ありがとございましたー
C++で、自作TextBoxコンポつくれ。
>>65
>C++で
なぜに?
>>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?
73朝までC#:02/05/29 00:52
前スレで、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
TopIndex
>>74
普通、ログ表示にはリストボックスよりもエディットコントロールを使うかと。
ReadOnlyのエディットコントロールを使うと楽。
>>75
見落としてました。サンクス。

>>76
ListBoxの元ネタ。
http://www.atmarkit.co.jp/fdotnet/csharptips/002anchor/002anchor.html

エディットコントロールってTextBoxでよいのでしょうか?
使い勝手がいまいちよくない気がするし、
これこそスクロールさせられないような…。
ちょっと詳しく教えていただけませんか?
79デフォルトの名無しさん:02/05/30 10:16
http://www.c-sharpcorner.com/

C#の情報やサンプルコードたくさんあっていいんだけど
日本でもこういうサイトないかな?
8076:02/05/30 12:15
>>78
VBとかC#でTextBox使ったことないので、エディットコントロールを生で使う
場合しか知らないけど、EM_SETSELで末尾を選択してEM_REPLACESELで追加する
と勝手にスクロールするよ。
えーと、TextBoxのヘルプ見てみたけど、AppendText()で簡単に追加できるのかな?
それだと自動でスクロールしない場合は、SelectionStartとSelectedText使って
手動で追加すれば自動でスクロールしてくれるんじゃない?
それでも駄目ならScrollToCaretで何とかなるかと。
>>78
既出。文字列の末尾を選択すればスクロールする。
ただしTextBox.HideSelectionプロパティをfalseにセットすること。
82 :02/05/30 12:33
IDisposableとusingでできることって、try 〜 finallyで実現できるという理解でよろしいか?
するとusingというのはC++が好きな人のための書き換えに過ぎない?
Webページからリンクを抽出するにはどうやったらいいですか?
ページのソースは取得出来てるんですが。。。
>>83
正規表現クラス使って、「<a href」〜「</a>」をキャプチャすればよいのでは?
見当はずれならスマン
85 :02/05/30 16:40
>>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);
}

ファイルとかリンクの場合が分からないです。
9088:02/05/31 03:19
おおっ、まさに望んでいた答えです。
ありがとうございます。
System.Windows.Forms.ListView
のオーナードローについてのサンプルなど
を探しているですが、どこかにありませんでしょうか。
コラムをちょっとオーナードローしてるのは見つけたんですが。

ListBoxでは簡単にできるんですが、
まさかListViewで出来ないなんて思ってなかったので鬱。
>>92
ありがとございました。
そのリンク先にあるサンプル[1]が参考になりそうです。
[1]
ttp://www.codetools.com/cs/miscctrl/sortedlistview.asp
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
9694:02/05/31 22:41
>>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では、どうしても行単位になってしまいますよね?
10278:02/06/01 09:11
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
後学のために、もしかして英語版だとエラー番号違う?
>>105
VC#買う。
114デフォルトの名無しさん:02/06/01 12:45
>>111
ありがとうございます。エラー番号は同じでした。
エラー番号で検索していなかったです。
英語版も日本語版も同じなんですね、エラー番号は。
どうもです
>>104
http://support.microsoft.com/
ここで調べるべし。PRJ0016で載ってるから。

>>105
.NET Framework SDKをダウンロードすれば。雑誌にもついてる。
VS.NET60日間限定体験版もあるぞ。
↑日経ソフトウェアとかそれの特別編とかに付録で付いてる
>>105
.NET Framework SDK
>>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
ああ、良い感じですね。試してみます。
>>117
GetInstance()を省略する方法はありますか?
121 :02/06/01 23:05
>>120
ワラタ
見る前からリンクの色が紫になってたよ。。。
>>119
無理。
どうしても... というんだったら,呼び出し元のフォームに
Form1 main = Form1.GetInstance();
と書いて,main.member と呼び出すのもアリ。
.NET関連増えすぎだよ。(;´Д`)

http://discuss.develop.com/
125デフォルトの名無しさん:02/06/02 01:41
TextBoxのKeyPressイベントの
e.Handled = true;にしても日本語が入ってしまう・・・
126 :02/06/02 02:20
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
自分にスキルが無いことを言語の所為にするヤシ、ハケーン
130 :02/06/02 06:04
>>129
言語っつーよりゃ環境だわな
MS製品はバージョン3から良くなるのは定説じゃない?
VBでやってたようなお仕事は、C#に置き換わるでしょう。
それくらいの能力が、C#にはある。
凝った物を作ろうとするから、問題が出るんです。
与えられた物の範囲内で、機能を実現しましょう。
132 :02/06/02 09:32
>>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みたいなクズアプリでも、ワープロと呼ぶのかな?
>>138
頭弱い人は来なくていいよ。
釣られすぎだおまいら。
>>135
ワープロじゃないが、
http://www.icsharpcode.net/OpenSource/SD/default.asp
の立場はどうなる。
その前に.NETのクラスライブラリの立場はどうなる。あほだろちみ。
現状の.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するとか・
147145:02/06/03 01:02
>>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しかない)すると元の画面に戻ります。
何度やっても同じです。
どうすればいいでしょうか?
>>162
C++スレ逝け
164& ◆UMzR.EvE :02/06/03 23:12
C#とC++ってまったく別物と考えて正しいのでしょうか?
C# > C++ ではないですよね?
>>164
CからC++のときと違って、
C#はこれらの直線上にあるものではないから比較は無意味
よく言われるけどC#はC++よりもむしろJavaに近い。
>>164
むしろJavaと比較した方がマシかと。

C#の正式名称はJava++だと言ってみるテスト。
168167:02/06/03 23:19
>>166
息が合うね。w
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();  // ← 忘れずに!!
175.NETレス:02/06/04 01:11
>>171
キャストじゃなくコピーになるが・・・
Marshal.Copyメソッド
素直にunsafe使うか、自前の配列クラスを作るのが吉
177171:02/06/04 08:22
みんなありがとう!!
やはりここは素直にunsafeを使う方向で考えてみます。
配列と同様に、クラスのキャストもしょーがないんですかね。
C#は、メインストリームになるという(幻想を)植え付けるため、
現在の主流C++から名付けた。(C -> C++ -> C++++)
しかし実体は、JAVA+VBといった色合いが濃い。
>>178 誤爆ですか? 

こちらにどうぞ

C .NETが流行らなかったらどうなる?
http://pc.2ch.net/test/read.cgi/prog/1021993329/
>>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
>>187
記法は激しくJavaよりかと。
>>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にするかではないかな。
198 :02/06/04 16:44
自分の気に入らないメソッドを全部空メソッドでオーバーライドして無効化しろ
>>195
こんな感じで。

class TextBoxEx : TextBox {

  protected override bool ProcessDialogKey(Keys keyData) {
    if (keyData == Keys.Enter) {
      return true;
    }

    return base.ProcessDialogKey(keyData);
  }
}
200195:02/06/04 17:12
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

ってどんなの?
>>206
製品ならあるんだけど・・・。
http://www.devexpress.com/products/net/xtratreelist/index.asp

ソースつきのはMFCしか見たことない。
http://www.codeguru.com/treeview/treelist.shtml
>>205
ありがとうございます!エラーの原因が分かりました。
ServiceController.ServiceName にはサービスの「表示名」を指定するのが
正しいことが分かりました。Timer.Elapsed イベント内で Status を見てサービスを
(例外を発生させずに)停止させられることも確認できました。

今までは IDEで生成された InitializeComponent() の中にある、
this.ServiceName = "bluebirdservice";
この名前↑を使ってましたが、表示名が「bluebird service」となっていたため、
サービスの制御が出来ていませんでした。Stop()メソッドを実行した際に
サービスが停止していたのは、「停止」ではなく「異常終了」だったことになります。

お騒がせしてすみませんでした。

>でもよくよく考えてみると、サービス内でServiceControllerを使うってのも何か変だな。
>他のサービスを操るならともかく。
確かに違和感を持ったのですが、私がヘルプを調べた限りでは、サービスの挙動を制御する
メソッドを持っているのは「ServiceController」しか見つけられなかったもので、とりあえず
使ってます。
>>208
ありがとうございます。
しかし厳しいですね。私の手に負えません。MFCは、、
>>195
もう解決済みみたいだけど、
KeyPressイベントでEnter押下のときにe.Handled=Trueでどう?
従来の方法そのまんまだけど、試してないので、いけるかどうか不明。
212199:02/06/05 01:43
>>211
バッチリです。サブクラス化する必要なんてなかったのか・・・。
213朝までC#:02/06/05 11:17
TextBoxに漢字で入力したら別のTextBoxにフリガナを自動で入れるのは、
VB6同様APIを使わないと駄目なようですねぇ
めちゃローカルな機能だから仕方ないか。
Microsoft Java Language Conversion Assistant Beta 2
http://msdn.microsoft.com/vstudio/downloads/jlca/default.asp
215朝までC#:02/06/05 14:48
DateTimePickerコントロール(日付入力)には、
BackColorプロパティが無いのですが、
どうにかして背景色を変更できないでしょうか?
DateTimePickerを継承したコントロールを作っています。
216デフォルトの名無しさん:02/06/05 15:40
>>215

dateTimePicker1.BackColor = System.Drawing.Color.Yellow;
これ自体はコンパイル通るね。
マニュアルにもあるし。
でも確かに反映はされないな・・・。
217デフォルトの名無しさん:02/06/05 15:50
>>216

自己レス
ttp://www.dotnet247.com/247reference/msgs/15/77551.aspx
にもあるが、どうやらあきらめるか、
Controlから自前で作成してやるしかなさそうですね。
>>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で。
>>218
unmanagedな罠。
220218:02/06/05 17:07
これぐらい作った方がいいか。

[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型に変えればよろし。
221218:02/06/05 17:12
こうすりゃいいか。

[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;
}
}
223朝までC#:02/06/05 17:45
みなさん、背景色の対策ありがとうございます。
しかし・・・色が変わるのはカレンダーのポップアップしてくる
ウインドウの背景だけで、目的のポップアップしていないときの
テキストボックスみたいなのの背景は白いままです。
ちなみに今回APIで変更できた部分は普通にプロパティで変更できます。

副産物的に良いAPIの使い方のサンプルになったので、
これを応用してフリガナ自動入力もチャレンジします。
224朝までC#:02/06/05 17:49
DateTimePickerにはBackColorが有るんだけど動かないですね。
あと、Clickイベントも全然入らないですね。
せっかくのインターフェースとかの言語仕様が泣いてるぞぉ。
225218:02/06/05 17:50
>>223
> ちなみに今回APIで変更できた部分は普通にプロパティで変更できます。

ああああああああああああああ。やってもうた・・・。
226朝までC#:02/06/05 18:04
DateTimePickerってValueChangedも登録してイベント発生まで
行くんだけど、その後、プロパティからイベントの表示が消えたり不気味ですね。

VB6の時も標準的ではないコントロールで不気味なやつがありましたが、
C#でも派手ぎみのコントロールは使わない方がいいのかも?
227朝までC#:02/06/05 20:33
とりあえずこんなことがありましたと言う報告を・・

ユーザーコントロールの上に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あたりでそんな噂を
>>232
通報すますた
234232:02/06/06 00:28
ひどい(;; )
違法じゃないよぅ
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
>>235
あなたアフォですか?
君ほどじゃないと思うけど。
正規表現リファレンス見れ
MSDNライブラリにあったはず
239デフォルトの名無しさん:02/06/06 02:56
>>235
ワイルドカードと正規表現は違う。
Regexのヘルプの関連リンクチェックしてみ。
240 :02/06/06 02:59
ワイルドカード相当の正規表現は "..*" でいいのかしらん
>>240
.が一個多かった
acdとか、abbbbbbbcdとかならひっかかるだろうねぇ。。
243242:02/06/06 03:28
あ、タイミングわるいな。あれは「*だったら」。

ワイルドカードは.*でよいんじゃない?
.+のような気もしないでもないけど。
ワイルドカードの性質を忘れてしまったよ。
"ab(.*)cd" だと "abfcdmmmmabgcd" が丸ごと引っかかってしまうな・・・。
.*? ならいいのか。
246朝までC#:02/06/06 13:41
P4-2GHzで開発していると気にならなかったんだけど、
作ったものをP3-500で走らせるとあまりもの起動の遅さに絶句・・
起動時のコンパイルをあらかじめしておくツールとしてPreJit.exeってのが
提供される予定なんだそうだけど、
http://www.microsoft.com/japan/msdn/net/mag00/framework.asp
まだでてこかいのかなぁ 標準のIDEにオプションで「PreJITでコンパイル」ってのを
付けて欲しかったなぁ
>>246
ms-help://MS.NETFrameworkSDK.JA/cptools/html/cpgrfnativeimagegeneratorngenexe.htm
248195:02/06/06 14:37
>>211
遅レスですがこちらでも確認しましたm(__)mカンシャ

で、今はShift+Enterの時に前のコントロールに戻るってのやろうとしているんですが...(涙)
>>247
ngen.exeって単体で配っていいのかな?再配布パッケージだと
パス通ってなくてbatファイルでngenさせられないしさ。
インストーラ作るしかないのかな。
>>249
パス通せばいいだろ・・・
>>250
ユーザーにいちいちパス通させることはできんでしょ。
252朝までC#:02/06/06 15:29
>>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げっと
257254:02/06/06 17:46
(keyData & (Keys)0xffff) == Keys.Enter; ってやらないと動かないね...
今気付いたよ (´・ω・`)ショボーン
258195:02/06/06 18:12
>>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
どうしてその演算子の腐った優先順位受け継いじゃったんだろうね
262195:02/06/06 18:52
>>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バイトのファイルを開いて閉じると
アセンブリのあるディレクトリが変更されて、
アセンブリがデスクトップにあることになってしまった。
アセンブリのルートにある設定ファイルなどに、
アクセスできなくなったので調べてわかった。
試しに、コンパイラの最適化オプションでビルドすると再現しない。

また、単純化したコードで上記を再現しようと思ったけど再現しないし、、
アセンブリの操作なんて何にもしてないんだけどね、、

これじゃ単なる愚痴だね。スマソ
269266:02/06/07 08:04
のどこですか?
270デフォルトの名無しさん:02/06/07 16:12
>>266
MSDN検索しろ。ビルドオプションでもちゃんと出てくる。
271266:02/06/07 19:26
知ってるなら、教えてくれてもいいのに。。。
>>271
プログラマ適性ないね。君。
         へ        ヘ
        /  \     / \
       /    \__/   \
      /              \
     /  O        O      |  C#のいい本がないの
     |       ⌒   ∪  #   |
     |                  | ___
      |                 |    /\
    / \_   ___   __ ノ   /   \
  /| ̄ ̄ ̄|    |  |    |   ̄ ̄ ̄| \    \
/   |     \_/   \_/       |  \   /
    |                      |    \/
    |                      |   |
    |                      |  /
    |_______________|/
>>273
洋書ならイパーイあるよ
>>273
もうすぐでまーす。がまんがまん。
277268:02/06/07 20:12
>>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 じゃダメなの?
279268:02/06/07 21:12
>>278
いいのですが、
ソフト使用する人が相対パスでパス指定したら面倒だなぁと思いまして。。
これは普通の仕様なんでしょうか?ちょっとびっくりしたのですが、、
280278:02/06/07 21:12
追記。
.\ はあくまでカレントディレクトリなので,実行ファイルがあるフォルダとは限らないよ。
ショートカットを作って,「作業フォルダ」に別のパスを指定すれば,そこがカレントディレクトリ .\ になる。

アセンブリのあるディレクトリを取得する場合は,>>278 の通りです。
281268:02/06/07 21:19
>>280
よくわかりました。どっちにしても.\でアセンブリのあるフォルダに
アクセスするのは危険なんですね。
282268:02/06/07 21:21
278さん ありがとうございました。
アセンブリのあるディレクトリは

Directory.GetCurrentDirectory()

で取れるよ。
>>279
>これは普通の仕様なんでしょうか?
OpenFileDialog(内部的にはCommonDialog)を使っているからです。
普通の仕様です。
>>283
思いっきりカレントディレクトリじゃん(w
>>283
お前、>>280 の話ちゃんと聞いてたか?
>285
DLLを別ディレクトリに配置して、その中で呼んだ場合はDLLのあるディレクトリが取れるよ。
Application.StartupPathだとDLLから呼んでも常に起動アセンブリのディレクトリが取れる。

そういう話じゃないの?
>>273
こういうのが出るみたいです。どうなんでしょうか。
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=4-7741-1484-7
>>288
Webページを印刷しただけかよ!(;´Д`)
System.Reflection.Assembly.Location
>>289
??
292通りすがり:02/06/08 00:27
>>276
で早速いれようとしたのですが...。
Win2kProに、.NET Framework SDK日本語版入れた環境で、 WindowsUpdateして、

Q322289 ASP.NET ワーカー プロセスに未チェックのバッファが含まれる
Microsoft .NET Framework Service Pack 1 (SDK を適用した英語版)

と表示され、上は直接実行ファイルをダウンロードして実行したら、SDKの中身を要求されたので
展開して指定したらすっきりインストールされた。
しかし、下は二度同じ操作をやってもダメだし、実行ファイルでもだめでした。

うまく入った人います?
>>291
http://www.atmarkit.co.jp/fdotnet/csharp_abc/index/index.html
これがベース。印刷した"だけ"ではないようだけどね、いちおう。
>>291
多分
http://www.atmarkit.co.jp/fdotnet/csharp_abc/index/index.html
の事かと。

それにしても...原理主義者って奴は(以下略)
>>293-294
ケコーン
296294:02/06/08 00:49
>>295
私には妻と子供が(藁
297293=167:02/06/08 00:51
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
>>298
俺も知りたい。誰か情報!!

>>299
洋書?

>>300
確かに、基礎固めにはベストだね。

>>301
でかいのだけが×。ただその分開いておいても閉じないので持ち運ばないなら
使える。
入門書に良書なしと思うのは漏れだけか?
ガイシュツかもしれんが、洋書ならここ。
ttp://www.dotnetbookreviews.com/default.asp

全般的なんはここ。
ttp://www.microsoft.com/japan/msdn/books/

>入門書に良書なしと思うのは漏れだけか?
良書にあたったことがないだけじゃない?
.NET系に関して言えば、単に未成熟なだけかと。
>>304
MSのサイト
更新3月かよ・・・。
>>304
マイクロソフトプレスの本なら
http://www.microsoft.com/japan/info/press/vs_net/vs_net.asp
に情報があるよ。7月15日にPetzold本とRichter本が出るみたいね。
TechEdで先行販売しないのかな・・・
307朝までC#:02/06/08 11:50
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
あ〜こんなとこにあるのか・・・俺も検索下手だわ。。。
ありがとう!
311310:02/06/08 14:42
すみません。
どう記述していけばいいのやら・・・ってな状態なんです。
Formsでのボタンのイベントハンドラとかと同じじゃないの?
313310:02/06/08 14:55
なんか違うっぽい。イベントバンドラの一覧には無いし。
当然同じ用に記述しても意味不明コンパエラー。
>>313
こんな感じでどう?

  SystemEvents.SessionEnding += new SessionEndingEventHandler(〜);
315310:02/06/08 15:12
そういうのでやってみたんだけど・・・

戻り値が必要だとか出た。
>>313
delegateを調べてみるとか。
317310:02/06/08 15:19
少し調べてみるわ。
ありがと。
プラグインとして動作するC#製DLLを作る際、LPTSTR型を引数として受け取った時のデータ渡しってどうやればよいの?

ms-help://MS.NETFrameworkSDK.JA/cpref/html/frlrfSystemRuntimeInteropServicesUnmanagedTypeClassTopic.htm
この辺っぽいけど、よくわからなくて。
319朝までC#:02/06/08 16:22
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

320朝までC#:02/06/08 16:23
------------------------------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;
}
321朝までC#:02/06/08 16:27
>>318
System.IntPtr っぽいです。
>>321
サンキュ。
でも悲しいほどに疑問だらけ。
IntPtrの指すメモリにstringを書くには?
ついでに、FARPROCはどうすれば??

#VC++6.0のほうがよいのか?持ってないけど。。
>>318
[MarshalAs(UnmanagedType.LPTStr)] string 〜; という感じでどう?
324朝までC#:02/06/08 17:28
>>322
私の長いソースの疑問もAPIへの文字列渡しの問題が入ってます。
シコシコしらべよう。
325朝までC#:02/06/08 17:37
文字列渡しは、ここが参考になりそう。>>323 さんの書いているやり方ですね。ありがとう。

http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_020/csharp_abc04.html
>>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()

…鬱。
329朝までC#:02/06/08 18:18
おお!ありがとうございます。>>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) に対して使うものだぞ。
331330:02/06/08 18:53
>>328だった。ゴメソ・・・。
>>330
ms-help://MS.NETFrameworkSDK.JA/cptutorials/html/a_component_in_c_.htm
managedなDLLは/r:での指定だったのか。ありがと。
#ついでに、testdllのクラスにpublicをつけ忘れてる。。

となると、unmanagedなクライアントに読み込ませるmanagedなDLLを作るにはどうすれば??
classという枠がジャマになっているような気がするんだけど。
333朝までC#:02/06/08 19:26
>>332
また、大はずししそうですが、C#のコンポーネントをActiveXにする
ラッパで被せてそのActiveXをunmanagedなVCでつくるDLLに
再度ラップするしかないのかなぁ?
ms-help://MS.NETFrameworkSDK.JA/cpguidenf/html/cpconinteropmarshalingoverview.htm
正攻法ではできないくさい。VS.NETを注文したところなのに、イタイ。。

>>333
やっぱそのあたりしかないのかな。うぅ、めんどくさい。
というかVC++6.0コンパイラって無償配布されてます?
335朝までC#:02/06/09 09:01
うーん それは知らないなぁ。少なくともVB6では普通のDLLが
作れないのですね。だからいつもVBだったけど作れない部分だけ限定的に
VC6使っていました。

似たような話ですがC#は起動が遅いので、アンマネVCでスプラッシュ画面を出して
すぐC#をキックして起動の遅さを誤魔化そうかなと思います。

以前のレスでキャッシュを作る方法だけどその後、再度やってみたら
早くならない・・なんでだろう? これももうちょっと調べよう。

ふりがなの件、その後も上手くいってます。感謝!!
336朝までC#:02/06/09 10:46
私の勘違いの可能性も多々ありますが、以下のような現象があります。

問題:クラスの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アーキテクチャの場合、アセンブリ全体をスキャンして不正な改変がないかチェックするから
巨大なランタイムだと起動が遅くなるんだと思います。




>>339
ACなので、MSDNとは無縁です。
>>345
ちがいます。CLRはGACからロードされたあせんぶりの署名チェックはしません。
>>337
内部でどのようにデータを持っているかということと、それを外部に
どのように出力するのかは分けて考えましょう。

というわけで、CharはUTF-16でもUTF-8でもSJISでもありません。内部では
Unicodeで表せる文字をすべて格納できる形式でデータを持っています。
それをUTF-16で出力することもSJISで出力することもできます。
>>348
ども。
文字コードには疎いながらも気になったのは、サロゲートとかあると一文字が16bitで表現できないことです。
stringはcharの配列(みたいなもの)ですが、hoge[5]とか指定したときに一文字を取り出せないことを
危惧しなければならんのか?とかが気になったもので。
あとバイト数/2が文字数でないという現象が生じたりするのか?とか。
そーゆーことはないと思ってていいんでしょうか。


あ、あと文字コードを直接数値で入力するツールとか作ったときに内部表現がどうしても気になるとかもあります。
350 :02/06/09 17:09
現在の日付と時刻はどうやって取得すればいいんでしょう?
VB には Now() があるようですが・・・
System.DateTime.Now
352350:02/06/09 17:17
>>351
プロパティにあったんだ!!
メソッドになくて断念して質問してしまった・・・打つ出し乃

どうもありがとう!
353デフォルトの名無しさん:02/06/09 17:49
C#をJavaへ変換するアプリケーションってありますでしょうか?
C#に興味があるのですが、ターゲットがJavaなもので。
C#で開発して、Javaで使うと言う風にしたのです。
どうかよろしくお願いいたします。
>>353
大人しく最初からJAVAで組め。
ウルトラ・ハイパー・ビギナーのプログラマーです。
もっとも分かりやすいC#の入門本はどれですか?
ステップバイステップを買いましたが、最初から専門用語でまくりで
わかりませんでした。
356デフォルトの名無しさん:02/06/09 21:05
>ウルトラ・ハイパー・ビギナーのプログラマー
それならC#を最初にする時点で間違ってる。
日本よえー
確かに弱い・・・
359 :02/06/09 21:32
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++)
{
...
}

としたほうが良い?
それともこの程度の最適化はしているのかな。
360 :02/06/09 21:35
あと、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の手続き抽象?
365 :02/06/09 22:25
>>361
どうも。

>>362
それはC++の話ではないですか?
C#だとildasm.exeでマネージコードが見れるのですが
コレがなんだか良くわからない。

>>363
ActiveXのCoolBarではダメですか?
ってコレはVB6持ってる人にしか入ってないのかな。

#日本イレブンおめでとう!!
366デフォルトの名無しさん:02/06/09 22:48
>>365

IEのツールバーですが、見た目の話じゃなくて、IEにアドインするそのものをつくりたいんです・・・。
>>363 >>366
こんなやつ?

Extending Explorer with Band Objects using .NET and Windows Forms
http://www.codeproject.com/csharp/dotnetbandobjects.asp
368デフォルトの名無しさん:02/06/09 23:58
アンマネージの関数を呼び出しているんだけど、
unsafeにしても関数ポインタ使えないの?
関数ポインタ返す関数をどう宣言すればいいのやら。
>>368
delegate
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());
でもだめでした。
371353:02/06/10 00:51
>>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();
373372:02/06/10 09:58
むー。>>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;
}
>>374
既出。前スレにXML形式で保存する話題があるよ。
http://pc.2ch.net/test/read.cgi/tech/1019533942/
377デフォルトの名無しさん:02/06/10 17:53
>>376
ありがと
378デフォルトの名無しさん:02/06/10 18:14
気づくの遅いけど・・・・XMLも勉強しなきゃならないね・・・

うう。とりあえずレジストリにでも保存しておこう・・・ボソ。
Windows APIのGetAsyncKeyState相当の機能って.NET frameworkにはありません?
TerrariumでDllImportで使おうとしたら怒られてしまって・・・
381368:02/06/10 23:11
亀々レスで申し訳ないです。
>>372-373
試して見ましたが、例外が発生するようです。
偶然とはいえ動くと言うことは、
関数ポインタ自体使えないことはないってことでしょうかねぇ?
とりあえず、Activator.CreateInstanceについて調べてみます。
>>375
MC++ではそのまま関数ポインタ使えるんですね。
とはいえ、本体がC#なもので出来ればC#上で呼びたいと思っているので…。
スマセン。
382デフォルトの名無しさん:02/06/11 01:16
.NETでクールなドッキング/フローティングコンポーネントってないっすか?
てくろうと思ったんだけど本格的なものになると俺の手にはおえないっす。
>>381
せっかくの.NETなのだし、DLLを呼ぶ部分だけMC++で記述してモジュール化、
C#からそれを呼び出して利用というのは?
#ファイル数が増えてしまうのが玉にきず。
385朝までC#:02/06/11 02:00
>>383
ある意味、これぞ.NETという使い方でもありますね。
もしかして、MC++ならDLLつくれる?
私はC#で手いっぱい。(^^;;;

ついでにまた発見。
TextBoxのIMEModeプロパティに半角カナに設定すると、
ちゃんと動作しますが、プログラムで設定すると全角カナになる
問題を見つけました。IMEでもATOKでも同じみたい。
環境は、WinXP、VS.NET Ent、枠組SP1
>>385
>もしかして、MC++ならDLLつくれる?
>>333あたりのこと?

"Managed" C++という罠があるかと。
>>384
イイ!
http://www.codeproject.com/cs/miscctrl/VSNetToolBar.asp
このツールバー(フローティング出来ないのが残念)と組み合わせればクールなGUIの出来上がりだね
つーか>>387のリンク先のUpdate 1.2 と 1.4 のところの画像のXPテーマがもろにつぼにはまったんだけど、誰か知ってたらゲト出来るアドレス教えて。
>>388
●好き好き大スキン!WindowsXPスキンスレッド 7●
http://pc.2ch.net/test/read.cgi/win/1021130372/l50

この辺の話かと・・・
ちなみに漏れは知らないっす。スマソ。
>>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
>>391
SDKでVB.NETとは漢だね
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ばっかだ。ツマラン。
オーナードローリストボックスについて質問です。
http://ja.gotdotnet.com/QuickStart/aspplus/default.aspx?url=/quickstart/howto/doc/WinForms/WinFormsOwnerDrawListBox.aspx

にある、サンプルなのですがアイテムが無い所をクリックすると一番下のアイテムが選択されてしまいます。
アイテムがないところをクリックした時、全部の選択を外したいのですが。どうすればいいででしょう。

MouseDownイベントで
if( listBox1.IndexFromPoint( e.X, e.Y) == ListBox.NoMatches ){
this.listBox1.ClearSelected();
}
としてみたのですが、どこをクリックしてもIndexFromPointで一番下の項目が返ってきてしまい困っています。
>>394
あのレベルは到底マネできんと思う。特にnewsgroup。
>>394
DevelopMentorもUS Newsgroupも最近は・・・。
かく言う漏れはMonoを生暖かく見守ってまふ。
>>397
sscliじゃ駄目なの?
>>398
sscliは動きがないからね・・・。なんていうか興味が長続きしない。
でも.csとinternalcallの実装部は役に立ったけど。
M$信者はオプソへの食いつき悪いね
401デフォルトの名無しさん:02/06/13 00:11
>>393

自己レスです
tlibbmpのバグでした

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q309336

>>400
そりゃあオプソのものを使いこなせるぐらいなら、M$製品なんか(以下略
403デフォルトの名無しさん:02/06/13 01:05
クライアント側で、IE上においてアクセスしたページの情報を
取得するにはどうすれば良いでしょうか?
例えば、ページのURLやXMLファイルのルート要素を変数に格納したいのですが…
プログラミング自体初心者です、低レベルな質問ですみません。
>403
その質問が低レベルと判断できるなら、
初心者はとっくに卒業でしょう。
オプソ関係って環境整えるだけでお腹イッパイになってる連中が多くて
その先にすすまないんだよねえ。gnomeとか。そりゃつまらんわ。
ああ全然関係ないね。スマソ
406デフォルトの名無しさん:02/06/13 02:34
Win系のプログラマは厨房多し。
犬房はプログラミングにすら手が届かないやつ多し。
ああ全然関係ないね。スマソ
>>407

処理系が複雑になると、
表面的には処理が簡単になり、
本質的には理解が困難になる。

アセンブリは取っ付きにくいが、理解はやさしい。
故に、アセンブリプログラマに厨は少ない。
Unix は取っ付きにくいが、理解はやさしい。
故に、Unix ユーザーに厨は少ない。

Windows は入るのは敷居が低いが、
青木ヶ原樹海のようなもので、
理解して出てくる人間はほとんどいない。
>>405 >>407-408
宗教戦争は他でやれYO!
>>407
俺は>>407がその事例のどっちに所属するか興味がある。
俺は違うぜ!とか思ってたら失笑。
>408
大学は入りにくいが、卒業しやすい。
官僚はなりにくい、そして一旦なれたら仕事はやさしい。
んで?厨は少ないか?敷居?ハァッ (われながら下手な例だw
ついでにいうとおまえのような下らん決め付けをわざわざ頭悪そうな書き方で、
ご丁寧にも無意味な空白つけて、無神経にも批判する相手がたくさんいるところに
カキコするような豪傑のことを、2ch一般的には厨という。
412デフォルトの名無しさん:02/06/13 11:58
まあ、このスレではまともにUNIXを使える奴はいないでしょう。(w
>>412
お前を含めてと言うなら同意。
まじで他でやってくれ。あとでログみるの苦労するから。
このスレはオプソネタ禁止!
416朝までC#:02/06/13 13:47
なかなか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には、ローカルでの変更前の値もバージョンとして持っているので、
それをうまいこと比較して更新時の排他をやりたいのです。

宗教戦争しているみなさんも判りましたらよろしくお願いします。
417朝までC#:02/06/13 13:53
補足

質問の補足ですがどこの何をもって@p1なのかといったことと、
DataSetが持っている最初に読み込んだときの値と更新の瞬間の
比較 WHERE OldTimeStamp = NewTimeStamp の書き方を
知りたいと思います。

こういった例の判りやすいソースがありましたらよろしくお願いします。
>>416
仕事の丸投げですか?
お勉強のためのネタとはとても思えない。
>>418 は厨なので答えられない。(w
>416
仕事の手伝いもいいが、丸投げをやさしく受け止めてくれるほど、
このスレの人はやさしくない(アホじゃない)
さあ宗教戦争続けるぞw
421デフォルトの名無しさん:02/06/13 17:34
イベントの呼び出しって必ずnullのチェックが必要なの?
if(MyEvent != null){ MyEvent(1,2,3); }
どうして1,多の呼び出しには自動的にやってくれるのに0は駄目なのか...
>>421
nullポインタの関数ポインタを実行したときどうなると思う?
C言語なら飛んでる。

この場合デリゲーとだけど。
無用なオーバーヘッドを減らすと言う意味もあるんじゃない?
423朝までC#:02/06/13 17:49
デリゲートみたいに細かく記述するならnullチェックが要るのは判るけど、
Eventはデリゲートの使い方の一例を使いやすくしてくれているだけなのに
なぜ、nullチェック(nullならイベントを発行せず素通り)だけ
見える形にしているのかと私も不思議に思っています。
なんか応用技があるんだろうか?
>>421
NullPointerExceptionでアプリが終了しないように念のため。
例えばエディタアプリだったら、そのせいで編集してたファイルがパーになったら困るでしょ?
>>424
NullReferenceExceptionの間違い・・・
>>424
Java厨は(・∀・)カエレ!
427朝までC#:02/06/13 20:38
こんなん見つかりました。ちょっと急いでいるので現象の絞り込みは後日です。


【注意】現象は絞り込んでいません。

問題点:設定ファイルを読み込むクラスで、SqlConnection、SqlCommand、SqlDataReaderを
使って10以上のテーブルを次々と読み込むスタティックのメソッドで9つ目以後はエラーになります。
対策:そのメソッドから別のローカル関数に処理を移して呼び出してやれば解消します。
428 :02/06/14 22:46
このスレが荒れてきた発端は、>>394の青臭い一言からです。
さあ、みなさん。存分に自分の宗教観を披露してください。
>>427
意味わからん。後、なんてエラーだよ。
UNIX 信者って、学生に多いよね。
金なし、開発力なし、専門知識なしの
アマチュアが使えるのは、UNIX ってだけなのに。
頭の固い教授に、洗脳されちゃうんだろうな。
なんか、昔のマック信者みたい。
431デフォルトの名無しさん:02/06/15 10:11
.NETはもう終わったな。(ゲラ
http://www.zdnet.co.jp/news/0206/15/nebt_03.html
>>431
おまえ朝から何やってんだ?
.NETによってセキュアになるという口約束は脆くも崩れ去った。
さらばM$。さらば.NET。
1人でネガティブキャンペーンやってるやつがいるようだ。
>>431
ウィルスつきで配布するのも間抜けだが感染できないVS.NETにくっついてくNimdaもなんだか微笑ましいな
436朝までC#:02/06/15 16:45
>>429
すみません。調べてみたところ私のミスでした。

前に書いた以下の障害の方は、「一発でデザインを決める」以外の対策が見つかりました。

問題:ユーザーコントロールにTextBoxやLabelを複数置くとデザインの画面でSizeが重複していると怒られる。
対策:ソースの全行をカットして別のテキストにペーストする。プロジェクトを保存で終わらせてから立ち上げてソースの全行をペーストする。
http://research.microsoft.com/programs/europe/rotor/default.asp

RFP Awardsってので何か面白そうなことやってる。
>>433
VS.NETはVC++で書かれているから.NETは関係ないと思うが。
…ってマジレスしとかないと勘違いする人いそうなんで。
>>439
コアはVC++だと思うけど、
GUIとかは.NETだよ。
>>433
Nimdaウイルスの混入と、.NETの安全性はまったく関係がないが?
単に、配布ファイルの中にNimdaが作ったファイルが含まれていたってだけでしょ。

ド素人だと.NETのセキュアが崩壊したみたいに見えるんだろうか。
C#の練習のために2ch用クラスを作ってみようと思った。

2chブラウザ作ってる人いない?C#で。
443IRON ◆O7DWnnn. :02/06/17 00:44
>442
何人かいるみたい。
俺もいまやってる。
このスレも終わりか?
>>394みたいな奴がいるようじゃ仕方がないか。
>>444
そうかぁ?漏れは394に同意。過去スレより数段レベルが下がってて
♯さんとか何人かの人はもう出てこなくなっちゃった。素人スレなら
たくさんあるから用はないんじゃねーの?
>>445
♯さんって今は名無しでカキコしているんじゃなかったっけ?
sprintfの替りってStringWriter?
とか探してたらStringBuilder.AppendFormatというものを発見。
たいていはこっちで間に合いそうだ。
448447:02/06/18 07:52
各クラスのToStringで直接フォーマッティングできたのか。気づかなかった。
昔はM$のβ製品に手を出すような酔狂な人等が集まってたけど、
最近はVB厨が大量にこのスレに流れ込んで来たっぽいしねぇ。
>>449
ベータの頃は好きでやってる奴が集まる。→ (゚д゚)ウマー
正式リリースされれば仕事上仕方なくやってる奴が集まる。 → (-д-)マズー
ASP.NET Web Matrix
http://www.asp.net/webmatrix/

WebForms版windes.exeって感じで激しく(・∀・)イイ!
>>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);
>>460
確かにおそいねー。
>>461
マジありがとう!
464デフォルトの名無しさん:02/06/19 00:10
VS.NETでASP.NETやってますが、
Webコントロールに、いっぱいパラメータつけて
デザイン画面とコード画面を往き来すると、
タグ内の改行が消されて
横スクロールしないと見えなくなってしまいますが、
これはどうしようもないんですか?

きれいに整形したい欲望に駆られて
無駄な努力と知りつつ、改行してしまう毎日・・・
>>464
言語書かないあなたが素敵。
>>464
Ctrl+K,Ctrl+D
>>465
C#スレで何を言うかと思えば(藁
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
上司や先輩に相談しろ。
>>470
お前、言語仕様って知ってるか?
>470
金ないならVS.NETのヘルプやチュートリアルでも詠め。
出来るやつはそれだけで十分。(最初はね)
わかる+使えるC#

って本、なかなかわかりやすくて良いかなと思いました。
>>475
出来る!とか、わかる!とかついたタイトルは嫌だな・・・
これでわかるWindows95!みたいで・・・
>>470
本ネタ、ガイシュツ。
そのレベルなら475に禿同。

>>476
=470?
変数宣言できないレベルなら、「わかる」と銘打った本がお似合い。
それがイヤならヘルプ読むなり、本屋にいろいろ立ち読みしに逝け。
478477:02/06/19 10:52
おっと、失礼。勘違いした。

>475に禿同
すまんがこれは撤回。
漏れも@ITのお世話になっているから同意なんだけど、
サイトの焼き直しという点で萎えたから「禿」はつかない。(苦笑

漏れが禿同したかったのは「始めよう!C#」だった。
#そしてガイシュツ。
479476!=470:02/06/19 10:56
>>477
ゴメンゴメン、別人なんだわ。

しかし他言語をやってるなら変数宣言くらいちょっとサンプルでも見ればわかりそうなもんだと思うんだけどね。
>>478
悪い、日本語にコンパイルしてくれ。
481便乗質問:02/06/19 11:01
>478
その@ITというのはなんでしょうか?
482477:02/06/19 11:09
>>479
こちらこそスマソ。

たしかに「わかる!」がつくとなんか頼りない。

>>480
わかりにくいな。重ね重ね失礼。
どのへんをコンパイルすればよい?

とりあえず本に関して。

http://www2.gihyo.co.jp/books/bookinfo.asp?ID=4-7741-1484-7

http://www.atmarkit.co.jp/fdotnet/csharp_abc/index/index.html
の焼き直し。

記事自体はかなり役に立ったから、お金に余裕があるのなら本もオススメなんだけど、
でも普通はwebの記事を読めば済むかな、と。

>>481
そういうサイト。詳しくは上記リンクからたどってくれ。
>>482
あ、これだったのね。あの本の内容。

個人的には紙媒体が好きだから本が良いけど\2300はつらいなぁ・・・。
プログラミング Microsoft Windows with C#.NET の発売はまだですか?
DBに内容を絞った本もあるね。
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=4-7741-1483-9
というか、今月も新刊イパーイあるね。
.csから.exe作らずに直接実行できないの?
>>488
スクリプティングホストでも作ればできる。
といっても、裏ではテンポラリアセンブリを作ってるけど。
プロジェクトとソリューションの違いがよく分かりません>VS.net
だれか可哀相な漏れに教えてください。
>>490
1つのソリューションには複数のプロジェクトを含むことができる。
プログラミングMicrosoft .NET Frameworkがかなりの良書だと聞いた。
洋書読んだ人いたら感想お願いします。

しかし、調べないやつ多いね。
>>493
http://www.microsoft.com/mspress/books/5353.asp
こっちだと思う。MSのサイトからリンクされてたのと発売日からするとね。
@ITの会議室でちょろっとイイってのを見た。
>>491
ワークスペース?
>>495
 Visual C#.netには“ワークスペース”という概念はないんじゃありません?
ms-help://MS.VSCC/MS.MSDNVS.1041/vsintro7/html/vxconVisualStudioSolutionsProjects.htm
結構面白かった。

@IT:連載 One Point .NET クロス言語開発は本当にできるのか?
http://www.atmarkit.co.jp/fdotnet/onepoint/onepoint01/onepoint01_01.html
>>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(?)に興味があったから探してみたけど、その壁にぶつかった。。
だれかローカル保存をしている人、コピペお願い!
>>499
そっちメインで続きますよん。
いまさら気づいたんだけどさ、
デリゲートを他のオブジェクトのイベントに繋ぐと、
そのオブジェクトが死ぬか、明示的にイベントとデリゲートを切り離さない限り、
自分自身はガベコレの対象にならないよね。

class TempObjClass
{
 TempObjClass( Form ownerForm )
 {
  ownerForm.Click += new EventHandler( this.Handler );
 }
 ~TempObjClass(){ /*切り離し忘れ*/ }
 void Handler( object sender, EventArgs e ){}
}

TempObjClass のインスタンスを作るたびにメモリに蓄積していく。
>>504
既出。その通りです。
ms-help://MS.VSCC/MS.MSDNVS.1041/cpref/html/
frlrfSystemConfigurationAppSettingsReaderClassGetValueTopic.htm
なんですが
GetValue("QFitst",String);
では駄目みたいなんです。

TypeっていうのはStringっていう意味では無いの?


って書くのは駄目みたいなんです・・・・
>>506
typeof(String)
>>507
Thanks!
PrintDialog表示したときにユーザーが設定した
印刷範囲や印刷部数で印刷する場合、
PrintDocument→printDocument
PrintDialog→printDialog

if(printDialog.ShowDialog()==DialogResult.OK)
 {
  printDocument.PrinterSettings=printDialog.PrinterSettings;
  printDocument.Print();
 }
だとうまくいかないんですが、PrintDocumentの
PrintPageイベント処理で自分で処理を書く必要あるのでしょうか?
>>509
その通り。QuickStartチュートリアルでも見れ。
string から int などに変換する関数ってない?
atoi みたいなの
Convertってのがあったのか^^;
スレ汚しスマソ
>>511
Int32.Parseとかもあり。
514デフォルトの名無しさん:02/06/23 00:08
こんばんは。
C#からMySQLへの接続に挑戦しています。
MySQLをインストールして、ODBCもインストールし
ttp://www.csharphelp.com/archives2/archive288.html
上記URLのサンプルを実行してみたのですが、
「MySQLProvプロバイダはローカルコンピュータに登録されていません」
というメッセージが出てしまいます。

ODBCの設定が悪いのでしょうか?
MySQL自体は正常に動いています。

ご教授ください。
よろしくお願いします。
[コントロールパネル]→[管理ツール]→[データソース(ODBC)]
をチェキ
516514:02/06/23 00:55
ユーザデータソースは
名前: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) {}
}

518sage:02/06/23 02:15
続きだ
/// <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;
}

519sage:02/06/23 02:16
続き
/// <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;
}

>>516
試してないけど、該当ページの(3)もちゃんとインストールした?
ODBCだけインストールしてもプロバイダはインストールされないはず。

それ以上詳しく知りたければ↓へ
http://pc.2ch.net/test/read.cgi/tech/1008316065/
524デフォルトの名無しさん:02/06/23 03:59
テキストボックスのMaxLengthプロパティで最大文字数を6に設定して
いて、キーボードからの入力は制限されるのですが、Button_Clickイベント
(数字ボタン)からの入力は制限されません。何か良い方法はありますか?
>>524
そりゃボタンのイベントハンドラで制御すればいいだけでしょ。
>>525
どうやってやるの?
Button_Clickイベント内で入力を6文字で制限するコードを自力で書くんだよ。
MaxLengthプロパティみたいに自動で制御する方法はない。

…頼むから自力で制御コードを書く方法がわかりませんなんてタコなことを言い出すなよ。
>>517-522 乙!

でも >>2 にある

ソース置き場.NET
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&rm=10

に貼ったほうが楽だったかモナー
529514:02/06/23 13:43
>>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が必要なのでしょうか。
>>533
・・・(;´Д`)
>>533 要ランタイム

ネイティブコンパイルでもランタイム要るの?

当たり前か。
>>536
>ネイティブコンパイルでも
C#に何を望んでいるのか・・・。
538デフォルトの名無しさん:02/06/23 16:51
>>533
.NET Framework 再頒布パッケージ (20.4 MB)
>>532
exe名.configってのを置けば良いんだよね?

531のでやってみたら
Setting1はnullのまんま・・・・。

540539:02/06/23 17:18
ごめん、できた。
exeName.exe.configって置かないと駄目なんだね・・・
こんな馬鹿な事になかなか気づかなかった。・・・すまん。
>>536
ネイティブじゃないし。
542539:02/06/23 18:09
.configから読み込む方法はあるみたいですが・・・
書き込むのは無いみたいです・・何か方法あるでしょうか?
>>542
.configの使い道が間違っていると思われ。
あれはインストーラとかが環境設定をするのに使うものでない?

いちおう↓
http://pc.2ch.net/test/read.cgi/tech/1019533942/369
544543:02/06/23 19:22
>>542
あ〜、これこれ。.configの説明。
ms-help://MS.NETFrameworkSDK.JA/cpguidenf/html/cpconconfigurationfiles.htm
545デフォルトの名無しさん:02/06/23 19:27
ふつーは、XMLシリアライズ。
だよね?
546539:02/06/23 20:37
じゃ.iniに変わる物ってどれになるんでしょうか?
.xmlですが。何か。
548539:02/06/23 20:52
つまり普通にxmlをシリアライズして読み書きするって事ですよね?
C#には特別に.iniにあたる設定保存ファイルを準備してないってこと。
Windowsシステムでは設定はレジストリ使用を推奨だろ。
550539:02/06/23 20:59
レジストリは嫌いだ・・・・。
ユーザーの中にもレジストリを汚すのに嫌悪感を持ってるやつもいると
思うが。。。。

まぁ、みなありがと。.configでしばらくはやってみる。
>>549 >>550
だから今後の標準はXMLファイルだって。
552539:02/06/23 21:43
>>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ファイルってそんなもんだし。
重いって、どれくらい重いんだろう
>>557 調査して報告きぼんぬ。
>>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 = "";
  }
 }
}
561560:02/06/24 11:13
しまつた!!Ageてもた。スマソ
しかもWriteEndElement();ひとつ多い?w
>>560
そこまでして.configを使いたいのかと尋ねてみるテスト。
DLLとかを別ディレクトリに置いていて(.configでの指定が必要なはず)、
もし.config書き出しに失敗したら、そのプログラムは起動できなくなるぞ。
悪いことは言わん。Restoreメソッドをちゃんと書いて、
任意のファイルに出力・読み込みができるようにしたほうがよいよ。きっと。
563560:02/06/24 11:58
>>562
そうかもねー。
まぁ、俺は仕事では全然C#使ってないから、
お遊びなんで許してちょ。
564デフォルトの名無しさん:02/06/24 13:44
C#はランタイムが必要と聞いたのですがどのように配布したら良いのでしょうか?
ランタイムパッケージが有るのでしょうか。

友人の家ではC#実行ファイルが動作しないもので。
566デフォルトの名無しさん:02/06/24 16:37
>>565
ここは相談室です
>>566
ワラタ
568デフォルトの名無しさん:02/06/24 19:35
メモリの使用状況を出力させるプログラムを考えてるのですが…
どなたか教えてください。
どうしてもプロセスだけのメモリ取得になってしまいます。
>>568
自分で作るな。いくらでもある。
>>658
ここは相談室です
>>658 ×
>>569
>>566 >>570
相談系番組の中尾彬みたいなもんだ。
C#ではJavaでいうJUnitのようなものはありますか?
>>573
NUnit
>>533
>>564
答えを言うのは簡単なんだけど、後学のために。

ヘルプやらサイトやらで、.NETの仕組みや
using System;
がなんなのか(なにをロードしているのか)を調べてみるべし。
自ずと「なにが必要なのか」がわかってくると思われ。

いちおうこの辺かな?
http://www.atmarkit.co.jp/fdotnet/special/dotnetframework_overview/dotnframewk_over03.html
http://www.atmarkit.co.jp/fdotnet/special/dotnetframework_overview/dotnframewk_over04.html

まあ相談室なんだしw、一番単純な答えを言っておくと、
「友達にWindows Updateをさしる」です。
見るからに必要そうなモノが見つかるはず。

ちなみに>>565のリンクは、M$鯖に接続できず確認できませんでした。(苦笑
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
>>581
経験者的には578を強くお勧めする。
583デフォルトの名無しさん:02/06/26 12:58
>>582
俺も、経験からいって578だね!!
っていうか、OSクリンインストできるん良い機会だし普通に578でしょ、
585577:02/06/26 19:25
回答どうもです。
とりあえず>>579-580を試してみます。
それでダメならOS再インストールしたほうがいいんですか?
・・・何か騙されてるような・・・
>>585
俺は再インストしました。
見事にバックアップ忘れましたが、何か?
Don Box氏のページ
http://www.gotdotnet.com/team/dbox/
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;
っていうのはどこに書けば良いんでしょうか?
どこに書いてもはじかれます。

595質問した俺:02/06/29 18:26
>>594
class Form1のなかに。

static付けてね。
Formにstaticをつけるって言う事はどういう効果が出るんですか?
イマイチSDKみても意味わからなくて・・・
>>596
Mainはstaticなメソッド。
インスタンスが無くても使用できる。
そこから使用できる変数もインスタンスが無くても使えなくてはならない。
そこでstaticを付ける。
なるほど!言われてみると分かった。サンクス!
>>588
これは改行であって改ページではないのれす…
>>580誤り>>590です。
自己レスしてどうすんだ…。
スタートアップにショートカットファイルを置きたいですが、
ショートカットファイルを開いてみたら文字化け状態なんですね・・・。

ショートカットって作れない?
>>601
対決スレでショートカットのお題があったよ。
http://pc.2ch.net/test/read.cgi/tech/1022662451/l50
VB理解できん。
ショートカットの作り方求む・・・・。
誰か移植してやれ
>>604
つぅかわざわざC#でやることか?
すみません、VB一切理解不能です。
DimもSDK読んでも??でした。
>>606
つぅかC#スレで言うようなことか?
>>601
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=4-7741-1507-x
によると、WSHのCOMを使って作れとのこと。

ていうか文字化け状態ってなに?
>>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やってたけどさっきからエラー出まくりで。
けど、ここの人ホントみんなすごいね・・・。
俺が無能なだけだとも思うけど・・・。

とりあえず、コード見ながらどういう処理か少し考えて見ます。
>>603
http://www.msjogren.net/dotnet/eng/samples/dotnet_shelllink.asp
大昔に見つけたやつ。
C#からIShellLinkインタフェースを利用してショートカットを操作。
結構海外にはC#とか.netのサイトってあるもんだね。
>>613
って言うかショートカットはSJIS、.NETはunicode
>>617
知ったかする前にショートカットファイルの中身を確認しろよ
619デフォルトの名無しさん:02/07/01 21:14
VC++では __LINE__や__FILE__ マクロでソースファイル名、ソース中行数を
コードに埋め込めたけど、C#にはそういうのは無いんですか?

ログファイルに使いたいのですが…。
>>619
さぁ
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作るようなもんだしねえ・・・
なんらかのスキーマと連動するような仕組みがあると
すげえ便利なのかもしれん。やったことないけど。
627622:02/07/02 21:19
>>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 するように修正してしまいましたが...

そこでやらずにできるっちゅう事でしょうか?
639635:02/07/03 23:16
>>636 それが直らなかったんすよ。。。
InitializeComponentの中身をかなり書き換えてしまって、
デザイナに表示されなくなったもんだからバックアップから
コードコピペで戻したんだけど、何度か閉じて開いてもダメ
ですた。コピペした元コードが腐ってた可能性もあるけど…

#と悩むより、ばっさり削って再配置のほうが早いかなぁと。
>>639
そりゃ、再表示しても表示されないならコードが腐ってるんでしょ。
641635:02/07/03 23:25
>>638
>そこでやらずにできるっちゅう事でしょうか?
いや、そこでやって出来てます。

MyTextBox textBox1 = new MyTextBox(なんか引数);
とかやってたら、↓次のことを試してみるといいかも。おいらはそれで出来た。

(名前空間).MyTextBox textBox1 = new (名前空間).MyTextBox(); //引数なしで呼んでみる
642デフォルトの名無しさん:02/07/03 23:32
そのフォームのソースを丸ごとカットして別のエディタにペーストして保存。
ソースの無いフォームのまま実行して終了。
そして、再度プロジェクトを開いて保存していたソースをペースト
それでどう?
643635:02/07/03 23:41
>>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配列がないんだろう?
658656:02/07/06 14:19
>>657
いいたいことがあるなら、ちゃんと書いてくれ(w
:::::::::::::::::::::::::::::. .☆ .:::::::::::::::::::::::::::::::::::::::::::::::::::..:.....:::.::...::::::::::::::::::::::
:::::::::::::::::::::::::::::::::..:..:::::::::::::::::::::::。:::::::::::::::::::::::::::::::::::::::::::::::::::::。:::::::::
::::::::::::::::::::::::。::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::。:::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::。:::::::::::::::::::::::
 ̄`''--、__,,,_,,,,__,;;w--─--、___:::::::::::::::::::::::::::::::::::::::::::::::::::,,;;;;;;;;
    _  ___  ____--─ー──~'''~`─-、._,,、w─''"" ̄  ̄
─''"~   ̄   ̄    ̄^ー-‐''''"~~~`‐-‐''~^ヘ,,__,, _____

        / ̄\
        ∨***\
        ∠〃~ヽヽ>     /⌒ヽ
        ||| #゚ ー゚)||    (ノハヽ)○
        / つ☆と)ヽ   (^▽^ )⌒ヽ
       ∠_, (^)(^)> ☆☆★と.,,ノ__ )
゛"゛"゛"゛"゛"゛"゛"゛"゛"゛"゛"""゛"゛"゛"゛"゛"゛"゛"゛"゛"゛"゛"""
660652:02/07/07 00:03
おお!すくなくともフォームの継承は私のミスが原因でした。
継承元と先で同じ名前のイベントを作っていて
それでのエラーでした。
エラーは以下のモノでした。
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でいってた。
663661:02/07/07 01:09
>>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
>>668
試してみたら使えました。
あんがと。
670デフォルトの名無しさん:02/07/07 14:43
users の C# メーリングリストに C# のグラフィック描写は遅いって書いてあったけど、
これってGDI+が 汎用性>速度 で設計されてるせい?
それとも、ネイティブコードじゃないから遅いの?
いくら users のメーリングリストでも、OnPaint イベントをやめて
OnPaintBackground イベント使うようにしたら解決するとか言う落ちじゃないよな?
>>670
まあC++ベースだし、機能も多いから遅いのは確かなんだろうけど。
ちなみにDX9で速度改善がされてるという噂。
>>671
>まあC++ベースだし

??
>>672
http://msdn.microsoft.com/library/en-us/gdicpp/cpp_aboutgdip01_4bas.asp

>GDI+ is an application programming interface (API) that is exposed
>through a set of C++ classes.
674_:02/07/07 23:23
パイプとかはどの辺のクラスを探せばいいですかねえ?
裏でコンソールアプリを実行させて、
表示内容をまるまる取得したいと考えています。
675633:02/07/07 23:34
いやー、うまくいきました。
継承したコントロールを含むDLLへの参照をいったん削除して、参照しなおしただけでOKでした。

デザイン画面でばっちりです。
>>674
そのコンソールアプリも自分で書いてるなら、
プロパティで公開すれば。出力先を指定できるように。
>>674
ProcessStartInfoとProcessあたりを見るよろし。
679678:02/07/08 00:51
こんな感じかな?デッドロックにはくれぐれも要注意!

  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
初心者なんですが、統合環境の使い方の本で良い本があったら紹介してもらえませんか?
>>680
ない。
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‐┬┬
||‐┼┼┼┼┼‐┼┼┼┼┼
||┼┼┼┼┼┼‐┼┼┼┼┼
夏休みなんてないわい!
689685:02/07/08 19:30
>>686
調べもせずに書いてスマンかった。
Falseが返るね・・・
>>686
Equalsもfalseなんだ・・・なんか変な感じ
691684:02/07/08 19:49
>>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
http://search.goo.ne.jp/search/search.jsp?MT=c%23&SM=MC&DC=10&IM=1

gooで、サイト検索かけると上記のようにサイトのスクリーンショットがでるんですけど、
あれっていうのは一体どういう仕組なんでしょうか。
いや、仕組っていうか、どうやりゃ、ああいう風なスクリーンショットが自動的にとれるかが知りたいっていうかなんていうか。
昔、ASP.NETのサンプルかなんかで見かけた覚えがあるんですが、知ってるからいましたら教えてください。
>>696
アスキー出版だったらある程度は安心できるんだけど、日経BPかあ。
あんまり期待しないでおこう。
2ちゃんで叩かれてもなあ・・・
>>692
既出だが、SharpDevelopとか。
707デフォルトの名無しさん:02/07/09 07:41
>>703
最近アスキーから良書出てない気が・・・

http://bpstore.nikkeibp.co.jp/msp/book/03030/03030.html
こっちを俺は買う予定。

696は立ち読みしてから買うか判断。けど、なんか目次見てると
内容が薄いような気がするのは俺だけ?
709デフォルトの名無しさん:02/07/09 19:57
>>485の本、ドキュソ本かと思ったら読み物としては意外と良かった。
少なくともこの本よりは。
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=4-7741-1349-2
710デフォルトの名無しさん:02/07/09 21:11
>>707
15日じゃなくて、実際は明後日発売だそうです。
見に行ってみるか
『Applied〜』レベルの知識が要る人ってどれぐらいなんだろう・・・。
712デフォルトの名無しさん:02/07/09 21:25
おいおい、それ知らなきゃコード書けんだろ。
>>712
そうなの?じゃ、そんな深い内容じゃないんだ。
714デフォルトの名無しさん:02/07/09 22:41
あー、深くはないね。基本。
O'Reillyもいよいよ出てくるみたいだね。

http://www.oreilly.co.jp/soon.htm
BookReview 吉松 史彰
プログラミング Microsoft .NET Framework
http://www.atmarkit.co.jp/fdotnet/bookreview/prog_dotnetfw/prog_dotnetfw.html
>>716
監訳者本人が書評書いちゃ駄目じゃん。(藁
ほんとだ。。。
自分で自分の本の事書いてもね。。。
>>715
いくらぐらいなるんだろ・・・・。
まぁゴーストライターに全部書かせて、金を積んで新聞の書評欄に宣伝載せる
どこぞの経済評論家のソレからすれば目くじら立てるほどでもないかと・・・
あまり自分で自分の本ほめるとデムパ度ランクがT田氏と並べられてしまうぞ。
722:02/07/10 00:41
しかし、デザイナでユーザーコントロールをフォームに貼り付けただけで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コマンドで、エラーメッセージは出力されてますか?
(英語版は正しく出力されます)。

>>737
英語で出てきたよ。
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に相談してみます。
740738:02/07/10 23:14
>>739
あ、managed exeの検証はしてないや。
普通のexeにpeverifyしたみただけ。
>>730
>VB厨雑誌の入門記事とSDKのドキュメント

わ か っ て な い バ カ が い ら っ し ゃ い ま す
730はなぜここに通ってるのだろうか・・・・。

あ!これから本買いに行ってきます。
本の宣伝うぜえよ。関係者か?
>>742
レビューよろ
リチャー氏は.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以上するし立ち読みで決めるのがやっぱ一番。
>>746
残りの2冊は何?
749748:02/07/11 16:44
>>747のことね。ゴメソ
プログラミング.net frameworkとC#によるプログラミング 上と下
で三冊っす。
ややこしくてスマン。
http://www.c-sharpcorner.com/
http://www.codeproject.com/index.asp

他にこういうサイトってどこか有る?
>>752
Thanks 他に有ったら教えて。
>>746
このクソ暑い中、あれだけブ厚い3冊を持ち帰ったの?
すごい根性だ。
755デフォルトの名無しさん:02/07/11 19:31
今日話題の3冊を買いに行ったら無かったです。
台風の影響ですね。しょぼーん。
Java関連のスレが下がっているので嬉しいです。
『プログラミング Microsoft .NET Framework』読んできた。
入門的でもなければ中・上級者向けでもなく、各節の深さがなんとなく中途半端な感じがした。
本が出た当時のことを考えれば、貴重な情報が満載なのは分かるんだけど、
今はsscliがあるからね・・・。
漏れ的にはCLIに絞ったディープな本がすごくホスィ・・・。
>>757
解析すればいいのに・・・。
>>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
『プログラミング Microsoft .NET Framework』買ってきたぞ(゚Д゚)ゴルァ
この本読んだらこの講座との差別化は大丈夫なのか(゚Д゚)ゴルァ
http://www.atmarkit.co.jp/fdotnet/technology/index/index.html
週末は読書三昧
768デフォルトの名無しさん:02/07/12 21:20
Petzold本、ここまで意地になってWindowsFormsのみってのも逆に新鮮だね。
>>763
うぉすっげ欲しいーー。
>>768
逆に詳しすぎる気もする・・・。
771デフォルトの名無しさん:02/07/12 22:50
まだ翻訳されてない良書って他に何があるだろう。>>763も含めて。
Essential ADO.NET
>>771
>>763のって翻訳されていないの?だったら、なおさら欲しいぞぉ。
>>771
O'REILLYとかAPRESSが穴場だと思われ。
よさげなタイトルがイパーイ。
http://www.apress.com/category.html?nID=27
>>763
欲しい
777名無しさん#:02/07/13 00:08
VS.NETのプロパティウインドウとかでつかってる、
移動できるタブってどうやんの?
>>777
Magicでも使ってみれ。ってソースはついてこないのか・・・。

http://www.crownwood.net/
>>778
ソースついてたよ。
780778:02/07/13 00:30
>>779
ほんとだ。ゴメソ
781デフォルトの名無しさん:02/07/13 00:32
C#でGeneticProgoramingはどうやってやるんですか?
782名無しさん#:02/07/13 00:35
>>778
>>779
おー!!
ベリーサンキュ!!
783781:02/07/13 00:37
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);
    }
  }
792791:02/07/13 23:23
こっちの方がいいかな?

  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);
        }
      }
    }
  }
793791:02/07/13 23:28
あ、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列追加しとけば両方出るよ。
いや、リストビューとリストボックスの違いが今一わからん。
>>797
自由度。
>>800
どっちが自由なん?
>>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で同じことになったら…。
808804:02/07/15 16:38
>>805
Σ(゜д゜;)出来ました!
助かりました、ありがとうございます。
あれかな、MSだから力の理論で。
HDどうせあまってるからDLLいくらあってもいいよ。ソフトが(とくにうちのが)
動ければいいんだよという考え方。
それはそれでいいけどね。
CLRそのものもサイドバイサイド、アセンブリもサイドバイサイド。
もう無限の組み合わせやね。
>>806
DLLでHDDを埋め尽くす新たなDLL HELLが・・・・
まじで心配。
812デフォルトの名無しさん:02/07/15 23:00
アセンブリのファイルサイズなんて小さいもんだよ。
...ってそういう問題じゃない?
一個が約50KBとして、100GB埋め尽くすには約200万個のDLLが必要だな。
万個
珍個
>>530 で出てたような設定ファイルの読み書きを自前
で指示するのではなく、オブジェクトの生成直後・消滅
直前に自動的に呼び出すような機構を作ろうと思い、
ContextAttribute の使用を検討してるんですが、、、

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=12&fi=no
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=13&fi=no

の例だとメソッドの呼び出し毎に作動してしまいます。
オブジェクト生成直後・消滅直前にのみ作動させたい
のですが、やり方がサパーリ分かりません。
MSDN見ても「このメンバは、.NET Framework インフラ
ストラクチャのサポートを目的としています・・・」としか
書いておらず、Googleで検索してもそれらしいものは
見つかりませんでした・・・

どなたか知恵を貸してください。おながいします。
http://www.csharphelp.com/archives/archive109.html

ここのアプレットって誰か表示できた人います?
信頼済みサイトに登録しないと表示できないみたいなんだけど。

自分で作ってたのもイントラネットでは動いたのに、
インターネットにしたとたん動かなくなってがっかり。

誰か動かし方教えて
818817:02/07/16 04:30
なんかわかった気がするよ・・・
既定ではインターネットからのプログラムは実行されないことになってるんだ
.NET Wizardでセキュリティを変更してやればいい、と、
見る人間全てにそんなの強要してられないぞ・・・

署名とか言うのすればいいのだろうか、やり方わからんけど。
せめてJavaと同じくらいのの実行権は既定で欲しかったなぁ
>>816
リモートオブジェクトのactivateのタイミングを拾うのは簡単だけど、
deactivateを拾うのは半端じゃなくむずかしいと思われ。
(LifetimeServicesあたりを触るしかないのかな・・・。)

なので、すごく原始的だけど、MessageSinkの中で
メソッド名を見て処理を切り替えるのがいちばん楽だと思われ。

具体的なイメージが湧かないときは言ってちょ。
>>818
エンドユーザー対策では、インストーラ作って自動設定させるのがいちばん楽かな。
有名どこではここ↓のサンプル見てちょ。

http://www.sellsbrothers.com/wahoo/
>>816
というか、わざわざContextAttributeを使う必要があるのかな。
普通にコンストラクタ・ファイナライザに処理を埋め込めばいいのでは?
822デフォルトの名無しさん:02/07/16 19:05
Whidby&Everettあげ
>>816
ContextAttributeじゃダメっぽいね。問題だらけだわ。(;´Д`)

・IContributeObjectSinkを使った場合

 MessageSinkでコンストラクタをインターセプトできない。

・IContributeServerContextSinkを使った場合

 こちらはコンストラクタをインターセプトできるが、
 呼び出し元のContextBoundObjectを取得する手段がない。

・IContributeObjectSink+IContributeServerContextSinkの場合

 コンストラクタの問題は解決できるけど、
 やっぱりファイナライザはインターセプトできない。

 IDisposableでも使うしかないけど、規約的にちょっと違う。

それと、LifetimeServicesのカスタマイズは無理だった。

つーことで、悲しいけど>>821が正解のような・・・。
824816:02/07/16 20:57
816です。>>819さん、>>821さん、>>823さん、ありがとうございます。

ContextAttributeでは厳しそうですね・・・結局 >>821 で要件を満た
せるので、それで逝ってみたいと思います。>>823さん、わざわざ調べて
下さったのにすみませんでした。。。
>>820
ありがとう、それで行くことにしますた
ちょっと手間取ったので次のチャレンジャーのために一言

AssemblyInfo.csに
[assembly: AllowPartiallyTrustedCallers]
を付け加えるのを忘れずに
826825:02/07/16 23:19
あらら?出来たと思ったのは夢だったみたいだ・・・
表示出来ない・・・何でやろ・・・
827デフォルトの名無しさん:02/07/17 00:30
テキストの描画ですが、GraphicsPath.AddString を使った場合は
Graphics.DrawString よりも汚くなってしまいます。
どうすれば Graphics.DrawString 並にきれいに表示できるでしょうか。
RichTextBoxで、テキストの背景色(マーカー)を
つけるにはどうしたらいいんでしょうか。
>>828
指定した部分だけ背景色を変えるということ?
ワードパッドでできなかったら、そういう機能は元からないと思われ。
>>827
文字の輪郭をなぞってるだけだから、細かいピクセル単位まで再現するのは無理そうね・・・。
>>830
そうなんですか…
わかりました。
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);
    }
  }
}
835834:02/07/19 15:01
using System.Web.Services; は必要なかった・・・。
836デフォルトの名無しさん:02/07/20 02:22
http://upload.fam.cx/cgi-bin/img-box/img20020720021852.jpg
これの日付のカレンダーの部分ってどういうフォームのコントロール
使ってるかわかる?こういうのが作りたいんですが、パネルの中に
リストビューか?とも思うんだけど、そうすると分厚くなりすぎるし。
Don Box氏作成のAmazonサンプル

http://www.gotdotnet.com/team/dbox/downloads/amazon.net.zip
838デフォルトの名無しさん:02/07/20 23:04
IO.File.Createでファイルを作ったんだけど。
次の処理でファイルを開こうとするとどうしてか
IOExceptionが発生するんです。なんででしょうか?
839デフォルトの名無しさん:02/07/20 23:06
838です。
クローズしわすれですた。作ってもクローズしなきゃならないんだ・・・
                 ∩
                 | |
                 | |
        ∧_∧   | |  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ( ´Д`)//  < 先生!RichTextの仕様はどこで見れますか!?
      /       /    \
     / /|    /        ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  __| | .|    |
  \   ̄ ̄ ̄ ̄ ̄ ̄ ̄\
  ||\             \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||
842840:02/07/21 00:55
     ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´∀`)/<先生!ありがとうございます!
 _ / /   /   \_____________________
\⊂ノ ̄ ̄ ̄ ̄\  
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||          ||
843デフォルトの名無しさん:02/07/22 00:36
MDIアプリケーションはデフォルトで、親ウィンドウの閉じるを押すと
子ウィンドウが一個ずつ閉じていくようなのですが、親ウィンドウの
閉じるを押した時に一斉に閉じるようにするにはどうすればよろしいのでしょうか?

# 子ウィンドウが3個あると3回クリックで子ウィンドウが全て閉じ、四回目で親ウィンドウが閉じる
#というような状態になってしまっています。
>>843
え?こっちでは一斉に閉じてくれるけど・・・。
どんなコード書いてる?
845843:02/07/22 01:07
>>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);
   }
}
846843 ・ 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個しかないのは何か変じゃない?
851843 ・ 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が処理されてる。
(だから、親フォームクラスに親のクローズかのフラグも置けない。)

こりゃ厄介だね。
853843 ・ 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()))
なども試してみたのですが、うまくいきません。

親ウィンドウから呼ばれているのか、子ウィンドウから
呼ばれているのかを知るにはどのようにすればよろしいのでしょうか?
854843 ・ 845 ・ 846 :02/07/22 09:38
>>852
あぁ、どうもありがとうございます。

>親フォームの閉じるボタンを押してもsenderがthis(child)で飛んできてるからだ。
子ウィンドウからよばれているのですか。
ということは>>853でやった方法でもダメなのは当然ですね・・・
別の方法でないとだめっぽいですね
855843 ・ 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;
  }
857843 ・ 845 ・ 846 :02/07/22 09:52
>>856
ありがとうございます。
そっちの方が自然っぽいですね。
使わせていただきます。
どうもありがとうございました。
858856:02/07/22 09:54
ごめん。>>856は間違ってた。うまくいってない・・・。
859843 ・ 845 ・ 846:02/07/22 10:00
>>858
いえいえ、とんでもないです。どうもありがとうございました。
日本語になってなかった。(;´Д`)

>>850
> 子ウィンドウはあるのに、
    ↓
子ウィンドウは複数あるのに、
861かぐら:02/07/22 15:59
 ひょっとしてもう出てるのかも分かりませんが‥‥。
 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
できました。どうもありがとうございました。
864843:02/07/22 17:46
>>843 >>845 >>846 >>851 >>853 >>854 >>855

>>855 で解決したと思ったのですが、子ウィンドウの閉じるボタンを押すと
Close()でウィンドウが破棄されてしまい、Show()で再び表示しようとしても、
表示されませんでした。

何かうまい方法はないものでしょうか?
>>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");
868843 ・ 864:02/07/22 19:56
>>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() しかないのかな?
>>876
XPathという手も。
878876:02/07/22 22:03
>>877
なるほど。そっちの方がきれいだね。
879873:02/07/22 22:27
あ〜ありがとう。
しばらく書いてみるわ。

Xpathもやった事ねーけど、とりあえずやってみます。
880デフォルトの名無しさん:02/07/23 00:16
初歩的な質問で恐縮ですが、
C#stdでバイナリファイルの編集ソフトとか開発できますか?
それようの便利なコンポーネントなどあるのでしょうか?
お願いします。
881デフォルトの名無しさん:02/07/23 00:31
>>880
正直、才能ない
ちん毛
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
>>890
どこが?
892885:02/07/23 09:44
>886
おおおお、できました!!苦闘6時間・・!
ほんとにありがとうございます!!!

それまでこんな感じでやってました
string str=textBox1.text;
int i=int.Parse(str);
実行するとエラーが出ます
>>892
そらFとかAとかあったら怒るわさ。
>>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で十分かもしれないと俺も
思った。
つーか出版ラッシュで内容を追いきれないな。
>>897
ガリバーとかいう会社。立ち読みした限りでは買う価値なし。
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=4-7741-1507-x
>>898
良本はほとんどないという罠
901デフォルトの名無しさん:02/07/23 14:04
>>899
買ったけど、内容が浅くて・・・駄目本でした。
902デフォルトの名無しさん:02/07/23 14:17

 クレイジー☆ダイ VS web製作板住人
 http://pc3.2ch.net/test/read.cgi/hp/1027150209/l50

 いったい!どうなってしまうのか!
903885:02/07/23 15:07
>>897
これは結構よさげですね。わたしにはちょうどいいかも
今から買いにいってきまーす
904885:02/07/23 15:14
間違い
>>899
905885:02/07/23 15:27
間違いじゃなかった
>>897,899
906885:02/07/23 15:33
908デフォルトの名無しさん:02/07/23 16:33
>>906
それは、固くてしんどいので黄色い本で勉強しました。

>>907
これは、まだ読んでないけど、巨大な本ですね。
909897:02/07/23 17:35
907の本っすね。上の前にこれが発売された時に少しネタになってたと
思うよ。
C#の基本なら俺も黄色いあの本がまだエエと思うよ。
@ITの連載が本になったやつは持ち運びに便利(買ってないけど)
お前らにとって良本とはどんな本ですか?
>>910
SDKドキュメントでもあまり深く取り扱ってないことをじっくり解説した本かな・・・。
912デフォルトの名無しさん:02/07/23 19:26
>>909
私も@ITの本はいいと思うよ。ただ好みに合わない人はいそうな感じだね。
考え方を紐解いてくれる感じでいいです。

>>910
はやく、ADO.NETの本が出て欲しい。
目の覚めるような上手い使い方とかね。
913885:02/07/23 19:52
>>907
その本、本屋で見ました。
丁寧に説明されていてわかりやすかったけど、
浅く広くがよかったので結局300の技を買ってきました。
今から勉強しまーす。
>>911
現時点ではPetzold本とRichter本ぐらいか。。。
VC6.0の頃に同梱されていた厚いリファレンスマニュアルって
C#にはないんですかね?あんな薄っぺらいのじゃわからん
>>915
本を買ってというスタンスみたいね。
↓からお好きなのをどうぞって感じで。

http://bpstore.nikkeibp.co.jp/msp/
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と同じ仕様ね。納得。
>>928-929
こりゃ迷うな。(w
931デフォルトの名無しさん:02/07/24 09:28
すれ違いかも知れませんが、某パソゲーのチートツールなるものを作ったのですが
公開するとやっぱりやばいですかね?
使い方が明確なんで法律的にやばいかなあと
>>931
じゃあ捨てろ。
>>928
System.Data.OracleClientって・・・。
Oracle製の立場がないよ。(;´Д`)
936デフォルトの名無しさん:02/07/24 17:42
既出だと思うけどC#で正規表現って使えるの?
>>936
System.Text.RegularExpression
938デフォルトの名無しさん:02/07/24 18:20
おお、>>937さんきゅ
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
>>942
タダでもらえるの?
>>943
もらえるみたいだ。
でも、MSDN入ってないの?
945名無しさん♯
新スレ立てますた。

C♯相談室 Part7
http://pc3.2ch.net/test/read.cgi/tech/1027531796/l50