ふらっとC#,C♯,C#(初心者用) Part21
■ このスレッドは過去ログ倉庫に格納されています
0001ななしぃ#
2007/11/18(日) 15:53:41「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
前スレ: ふらっとC♯, C#(初心者用) Part20
http://pc11.2ch.net/test/read.cgi/tech/1191036844/
0342デフォルトの名無しさん
2007/12/04(火) 15:19:061パケットに複数まとまってるんでない?
0343デフォルトの名無しさん
2007/12/04(火) 15:20:32C#の文法規則の意味について教えてください。
C++は理解しており、メンバーに対するアクセス指定は理解できるのですが
クラスに対するアクセス指定の意味がわかりません。
名前空間内でクラス宣言を行うときにクラス自体にpublicかinternalの
アクセス指定ができますが、これらは何を意味するのでしょうか?
理解していること
・名前空間内で指定可能なアクセス指定子はpublicかinternalのみ
・省略するとinternalとなる
0344デフォルトの名無しさん
2007/12/04(火) 15:26:07GetAsyncKeyState()等のAPI 使うとかでどうか
0345デフォルトの名無しさん
2007/12/04(火) 15:29:00http://msdn2.microsoft.com/ja-jp/library/ba0a1yw2(VS.80).aspx
0346339
2007/12/04(火) 16:02:59ビンゴでした。THANKS!
http://www.cam.hi-ho.ne.jp/oishi/tips.html#keystate
を参考に、GetKeyStateで出来ました。
[DllImport("user32.dll")]
private extern static Int16 GetKeyState(VirtualKeyStates nVirtKey);
private enum VirtualKeyStates : int
{
VK_LBUTTON = 0x01,
VK_RBUTTON = 0x02,
}
public void OnTimedEvent(Object sender, ElapsedEventArgs e)
{
bool fLeftPressed = (GetKeyState(VirtualKeyStates.VK_LEFT) & 0x8000) != 0;
bool fRightPressed = (GetKeyState(VirtualKeyStates.VK_RIGHT) & 0x8000) != 0;
}
0347339
2007/12/04(火) 16:16:20private enum VirtualKeyStates : int
{
VK_LEFT = 0x25,
VK_RIGHT = 0x27,
}
必要な定義はこちらでした。
0348デフォルトの名無しさん
2007/12/04(火) 16:51:16ありがとうございます。
『public と宣言された型には、他のすべての型がアクセスできます。
internal と宣言された型には、同じアセンブリに所属する型だけが
アクセスできます。』
とあるのですが、ここでいうアセンブリとはソースファイルという理解
で正しいでしょうか?
0349348
2007/12/04(火) 16:55:18ということは、internal指定のクラスの場合は同一DLL, EXE
からしか参照できなくて、public指定のクラスの場合は
別のDLLやEXEから参照できるということですね。
0350デフォルトの名無しさん
2007/12/04(火) 16:57:510351デフォルトの名無しさん
2007/12/04(火) 16:59:18Keysつかえよ。
0352デフォルトの名無しさん
2007/12/04(火) 22:38:31kernel32.dllやuser32.dllなどといったものは64ビットWindowsにも存在するのでしょうか?
またこれらに64ビットポインタを渡しても問題ないのでしょうか?
手元に64ビット環境がないので、よろしくお願いします。
0353デフォルトの名無しさん
2007/12/04(火) 22:46:1864bitのAPIも同名DLL
WoW64で動くかどうかでどっちを使うか自動判断
明示したけりゃ/platform
0354デフォルトの名無しさん
2007/12/04(火) 23:03:46どうもありがとうございます。
特別な理由がなければ何も考えずに書けばいいんですね。
もう一つ質問があるのですが、32用と64ビット用の二つのdllがある場合、
P/Invokeで実行環境に適したdllを読み込むことはできますか?
0355デフォルトの名無しさん
2007/12/04(火) 23:22:37>>353のレスちゃんと読んでやれよ・・・
0356352
2007/12/04(火) 23:38:07どういうことです?
WOW64上で動作させて32ビット用を読み込めということですか?
ちなみにこの場合のdllはシステムにあるものではなく、自作のdllという意味です。
0357デフォルトの名無しさん
2007/12/04(火) 23:40:210358デフォルトの名無しさん
2007/12/04(火) 23:46:040359デフォルトの名無しさん
2007/12/04(火) 23:49:07シングルトンで実装させれば使う側は気にしなくてすむようになるけど
DLL検索パスを利用してうまいことやればdll名だけ違うDllImportとか書かなくてもなんとかなるかな
0360デフォルトの名無しさん
2007/12/04(火) 23:53:100361352
2007/12/04(火) 23:56:03最悪そうせざるをえないですね。
>>359
実行時に検索パスを設定するorアーキテクチャによって変更するってできるんですかね?
できたらかなりすっきり書けそうですが。
>>360
そうしたら実行環境が限られてしまうんじゃないですか?
0362デフォルトの名無しさん
2007/12/05(水) 00:01:510363デフォルトの名無しさん
2007/12/05(水) 00:02:26PATH
> そうしたら実行環境が限られてしまうんじゃないですか?
限られるんじゃなくて限らせるの。
x86とx64両方つくりゃいいだけ。
0364デフォルトの名無しさん
2007/12/05(水) 00:08:05それはちょっと保守の手間が増えるので避けたいです。
>>362
そうですね。とりあえずその方法でいきたいと思います。
どうもありがとうございました。
0365352
2007/12/05(水) 00:08:480366デフォルトの名無しさん
2007/12/05(水) 00:30:28継承を使って派生させて使うのとどっちがいいのでしょうか?
今までベースクラスに汎用メソッドを書いていたのですが、
Xmlの操作とか、クラスの本質に関係のない部分はユーティリティクラスのほうがいいのかな
と最近思うようになってきました。
HttpUtility.UrlEncodeみたいに、.NETでもユーティリティクラスの存在そのもの
を禁止されているわけではないですよね・・・
0367デフォルトの名無しさん
2007/12/05(水) 00:31:10Mathとか
0368デフォルトの名無しさん
2007/12/05(水) 00:41:310369デフォルトの名無しさん
2007/12/05(水) 00:45:570370デフォルトの名無しさん
2007/12/05(水) 01:11:47作ってみたいと思いました。
WebAPIを作るにあたり必要なスキルは何でしょうか?
またWebAPIの開発の参考書などがあればご紹介ください。
WebAPIを利用するための参考書じゃなくて自分でWebAPIを開発する参考書です。
0371デフォルトの名無しさん
2007/12/05(水) 01:27:34レスありがとうございます。
staticメソッドを計算の代用とか気軽な目的で自体は
問題なさそうですね・・・。
0372デフォルトの名無しさん
2007/12/05(水) 01:48:25Google Maps API 質問箱
http://pc11.2ch.net/test/read.cgi/tech/1131627583/
0373デフォルトの名無しさん
2007/12/05(水) 09:13:16まあユーティリティと言ってるものの内容にもよるけど。
0374デフォルトの名無しさん
2007/12/05(水) 12:14:480376デフォルトの名無しさん
2007/12/05(水) 12:59:050377デフォルトの名無しさん
2007/12/05(水) 14:53:400378デフォルトの名無しさん
2007/12/05(水) 16:05:400379デフォルトの名無しさん
2007/12/05(水) 17:04:150380デフォルトの名無しさん
2007/12/05(水) 17:07:520381デフォルトの名無しさん
2007/12/05(水) 17:13:42ガイジン特有の変な例えのせいでデリゲートが全然理解できなかったが。
0382デフォルトの名無しさん
2007/12/05(水) 17:27:25なかなか読みやすかったのを覚えてる。
0383デフォルトの名無しさん
2007/12/05(水) 17:31:370384335
2007/12/05(水) 18:07:26やばいかな
0385335
2007/12/05(水) 18:08:050386デフォルトの名無しさん
2007/12/05(水) 18:08:570387デフォルトの名無しさん
2007/12/05(水) 18:32:16いや分からんかも…
0388デフォルトの名無しさん
2007/12/05(水) 18:36:23でも動画なんて埋め込みたいとは思わないな俺は
0389デフォルトの名無しさん
2007/12/05(水) 18:36:330390デフォルトの名無しさん
2007/12/05(水) 18:44:00メモリに読めば何とかなるのなら、APIでリソースから直接読むのは可能。
0391デフォルトの名無しさん
2007/12/05(水) 20:23:14メモリにあるものをどうやって再生するかって話じゃないの?
テンポラリフォルダにでも展開しちゃえばいいんじゃないかと思うが
0392デフォルトの名無しさん
2007/12/05(水) 22:24:32川俣氏のやつですよね
以前2chで叩かれてるところに本人降臨してたスレがありましたが、中身はガチと思っていいんですかね?
0393デフォルトの名無しさん
2007/12/05(水) 22:30:06内容は悪くないというか、簡潔でいいと思うけど、
あれで習得できるのは「ミニマムリクワイアメント」に過ぎないね。
0394デフォルトの名無しさん
2007/12/05(水) 22:32:37あの人どうも筆が走りすぎる感があるな
C#入門とかあの辺はよく書けてるんだけど
0395デフォルトの名無しさん
2007/12/05(水) 22:38:30俺が思うに、川俣の文体に反発する人間っていうのはたぶんあまり読書経験がないというか、
文芸的な文章を読まないタイプの人でしょ。
あれはああいう文体で、あんなものベタにとって反発するってどんだけオボコいんだよ、
と俺なんか思っちゃうけど。
0396デフォルトの名無しさん
2007/12/05(水) 22:47:510397デフォルトの名無しさん
2007/12/05(水) 22:48:390398デフォルトの名無しさん
2007/12/05(水) 22:52:07ここは初心者用質問スレだ
0399デフォルトの名無しさん
2007/12/05(水) 22:52:110400デフォルトの名無しさん
2007/12/05(水) 22:53:08>オボコい
久しぶりに見たよw
0401デフォルトの名無しさん
2007/12/06(木) 00:33:010402デフォルトの名無しさん
2007/12/06(木) 01:01:450403デフォルトの名無しさん
2007/12/06(木) 02:34:50他者の発言を取得して画面を更新したりするプログラムを作りたいと思っています。
以下のような構造になるのかなと考えています。
【ユーザ】←HTTP→【画面側プログラム�@】←なんらかの方法→【プログラム�A】←→インターネット
�@:
ASPで、他者の発言の取得はn秒ごとにポーリングを行う。
(サーバプッシュ型にできればなお良い)
�A:
EXEにしてサービス化?ともかく常時起動しており、チャットには繋がりっぱなしにする。
�@の状態には依存しない。
ASPにして�@と同化させると、ユーザが画面を開くたびにインスタンスが新しくなってしまうのと
ユーザが画面を開かなければインスタンスを作れないので分ける必要がある(と思っている)
そこでよく分からないんですが、まず、IISの起動と終了のイベントを拾って
プログラムを動かすことができるのでしょうか。
可能なら、�@と�Aを一緒くたにして、IIS起動でチャット接続して、その状態をstaticメンバにして
全インスタンスで共有し、終了で切断するということでASP一本にできると思ってます。
これは可能でしょうか。
もう一つ、分ける場合には�@と�Aで情報のやりとりをする必要があります。
�Aでインタフェースを提供し、�@はそれを呼び出すだけという形にしたいです。
�@から見たときに利用を簡単にしたいので、できればWebサービスとしてインタフェースを
提供できないかなと思うのですが、�AがASPじゃなく普通のEXEの時に、�AでWebサービスを
実装するにはどのようにすればいいのでしょうか。
(�AがASPなら、IISが良きに計らってくれますが…)
また、Webサービスが無理ならどういう方法で通信するのがベターでしょうか。プロセス間通信とか?
妄想段階なので曖昧な点が多いのですが、アドバイスをいただければ幸いです。
よろしくお願いします。
0404デフォルトの名無しさん
2007/12/06(木) 03:10:01その暗号化キーをどこに保存しようか悩んでいます。
Firefox のマスタパスワードみたいに毎回問い合わせるのは最終手段にしたいと思ってまして、
じゃあどこにどうやって保存しようかな……という話です。
0405デフォルトの名無しさん
2007/12/06(木) 13:26:26まあ反発してたってのがどんなんかしらんから何とも言えんけど、
誤解を招きやすい文章だと思ったことは何回かある。
0406デフォルトの名無しさん
2007/12/06(木) 13:36:090407デフォルトの名無しさん
2007/12/06(木) 14:05:11ASPスレで聞いたほうがよい
たぶんセッションで出来る
0408デフォルトの名無しさん
2007/12/06(木) 14:48:03また、そういうったアイコンは勝手に使ってもいいんでしょうか?
0409デフォルトの名無しさん
2007/12/06(木) 15:00:29http://i-keisuke.at.webry.info/200701/article_13.html
ライセンス的に大丈夫なのか知らないけどこういうのも可能みたい
0410デフォルトの名無しさん
2007/12/06(木) 15:51:04private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
{
e.Cancel = true;
}
では上手くいきません。
どのようにしたら良いのか教えてください
0411デフォルトの名無しさん
2007/12/06(木) 17:30:21どうやったら解消されるか教えてください。
目的は、csvファイルからデータを読み込んで、2番目のデータを配列に
挿入することです。
class FileRead2
{
public int[] data;
public void fileRead()
{
string[] list;
string line;
int k = 0;
StreamReader r = new StreamReader("data.csv",Encoding.Default);
while ((line = r.ReadLine()) != null)
{
list = line.Split(',');
/*1*/ data[k] = Convert.ToInt32(list[1]);
k++;
}
r.Close();
}
}
0412デフォルトの名無しさん
2007/12/06(木) 18:01:29空文字なんじゃねーの?
Console.writeline(list[1] == string.Empty);
/*1*/ data[k] = Convert.ToInt32(list[1]);
でやってみれ
0413デフォルトの名無しさん
2007/12/06(木) 18:21:520414デフォルトの名無しさん
2007/12/06(木) 18:27:31なんでエラーの内容を書かないかな。
list[1]がないか、Parseに失敗してるかのどちらかだろうけど。
0415411
2007/12/06(木) 18:43:07オブジェクト参照がオブジェクト インスタンスに設定されていません。
というものです。
エラー発生時のlistの中身を確認してみると6番目までデータが
入っているので、どうやらparseに失敗しているようです。
0416デフォルトの名無しさん
2007/12/06(木) 19:05:13そりはもしかして public int[] data; のdataを初期化してないのでは?
0417デフォルトの名無しさん
2007/12/06(木) 19:24:00配列の境界を越えてるとかなら分かるが
0418デフォルトの名無しさん
2007/12/06(木) 19:24:35B.Hoge(){};
using A;
using B;
public static void Main{
Hoge();
}
この場合どっらのHoge()が呼び出されんですか?
0419デフォルトの名無しさん
2007/12/06(木) 19:27:010420デフォルトの名無しさん
2007/12/06(木) 19:27:400421デフォルトの名無しさん
2007/12/06(木) 19:35:09data == null
0422デフォルトの名無しさん
2007/12/06(木) 19:37:05それしかないな
0423デフォルトの名無しさん
2007/12/06(木) 19:37:30ファイルの行数が決まってないから初期化できない、というならList<string>を使え。
0424デフォルトの名無しさん
2007/12/06(木) 19:48:230425デフォルトの名無しさん
2007/12/06(木) 19:49:28Silverlight
0426411
2007/12/06(木) 20:03:15配列を初期化していないことが原因でした。
無事解決できて良かったです。
0427デフォルトの名無しさん
2007/12/06(木) 21:15:55遅くなりましたがありがとうございました。
EEを使ってる人は標準のアイコンすらないんですね;
0428デフォルトの名無しさん
2007/12/06(木) 22:18:54ToolStripやMenuStripなら「標準項目の挿入」でいくつかアイコンがつくね。
そいつをなんとか保存しといて使い回したら? ちっこいけど。
0429デフォルトの名無しさん
2007/12/06(木) 23:16:30インスタンスが理解できません
だれかわかりやすく説明してください
0430デフォルトの名無しさん
2007/12/06(木) 23:33:450431デフォルトの名無しさん
2007/12/06(木) 23:35:190432デフォルトの名無しさん
2007/12/06(木) 23:49:37クラス…社員
インスタンス…平社員の山本
みたいなのって余計混乱させるだけだと思う
0433デフォルトの名無しさん
2007/12/06(木) 23:58:59使ってりゃ分かる
0434デフォルトの名無しさん
2007/12/07(金) 00:44:24「標準項目の挿入」というのはどこにあるんですか??
0435デフォルトの名無しさん
2007/12/07(金) 01:46:15半角英文で書かれたWord文書を読み込んでXMLに出力するプログラムをC#(VS2003)で作成しています。
問題なのは、Word文書中に半角の「μ(みゅー)」や「π(ぱい)」が存在する場合で、読み込んでstring変数に格納した時点で「(」のような文字に変わってしまいます。
化けずにうまく読み込む方法はありますでしょうか?
ちなみに、半角の「μ」や「π」は、Wordの「挿入−記号と特殊文字」 メニューから挿入したものです。
よろしくお願いします。
0436デフォルトの名無しさん
2007/12/07(金) 01:55:51ポトペタしたあと、そいつをクリックするとそいつの右上あたりに矢印がでて、
そいつクリックすると出るウィンドウの中。
0437デフォルトの名無しさん
2007/12/07(金) 03:32:17コンソール出力だけど普通に化けなかったよ?
なんか情報出てないんじゃない?
0438デフォルトの名無しさん
2007/12/07(金) 05:22:03わ!
ありがとうございます!!
0439デフォルトの名無しさん
2007/12/07(金) 13:53:40トレースで出力してみましたが、文字化けしています。
全角なら問題ないのですが...。
0440デフォルトの名無しさん
2007/12/07(金) 13:55:36どう化けるの?
実際に出力してるコードは16進でダンプしてみた?
表示のフォントはどれにしてるの?
0441デフォルトの名無しさん
2007/12/07(金) 14:13:07string変数の中身はセミコロンのような文字になっています。
フォントは、Wordはセンチュリーで、VSの出力ウィンドウのフォントもセンチュリーに変更したら、こちらは正しく表示されました。
■ このスレッドは過去ログ倉庫に格納されています