ふらっとC#,C♯,C#(初心者用) Part21
■ このスレッドは過去ログ倉庫に格納されています
0001ななしぃ#
2007/11/18(日) 15:53:41「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
前スレ: ふらっとC♯, C#(初心者用) Part20
http://pc11.2ch.net/test/read.cgi/tech/1191036844/
0310デフォルトの名無しさん
2007/12/03(月) 14:48:470311デフォルトの名無しさん
2007/12/03(月) 15:12:18教えてくださいお願いします。
0312デフォルトの名無しさん
2007/12/03(月) 15:39:330313デフォルトの名無しさん
2007/12/03(月) 15:51:42それはジェラート。
0314デフォルトの名無しさん
2007/12/03(月) 16:19:29もたいな文字列が在る場合。↓みたいな感じで表示するにはどうすれば良いですか?
M-SEARCH * HTTP/1.1\r\n
MX: 3\r\n
HOST: 239.255.255.250:1900\r\n
MAN: "ssdp:discover"\r\n
ST: urn:schemas-upnp-org:service:WANIPConnection:1\r\n
\r\n
0315デフォルトの名無しさん
2007/12/03(月) 16:25:330316デフォルトの名無しさん
2007/12/03(月) 19:24:06夢幻ループ化。
処理をWindowsに返さないといけないんです。
Windowsから仕事しロッテ言われてから動けばいいんです。
自分から動きたい場合は、そのタイミングで呼び出してもらえるように約束を取り付けておけばいいんです。
0317デフォルトの名無しさん
2007/12/03(月) 21:27:09GUI関係ないだろ・・・
Timer使え
0318デフォルトの名無しさん
2007/12/03(月) 21:49:01名前空間は、団体名. 技術名. 分野と記述するのが推奨だと始めて知ったのですが、
普通はこの形式で名前空間定義をしているのでしょうか?
0319デフォルトの名無しさん
2007/12/03(月) 21:53:090320デフォルトの名無しさん
2007/12/03(月) 21:59:430321デフォルトの名無しさん
2007/12/03(月) 22:10:15しかし、どこのスレも下らん馴れ合いで嬉しくなっちゃう単細胞な馬鹿が多いな。
0322デフォルトの名無しさん
2007/12/03(月) 22:19:57ググるといろんなサイトや掲示板で、Cなどで作ったdllのimportに苦労してる人がけっこう見つかります。
でも、アドバイスしてる人も“難しい”とは言いますが“不可能”と言ってる人は見かけません。
理論的に不可能ではないが、非常に難しい場合もある、ということでしょうか?
0323デフォルトの名無しさん
2007/12/03(月) 22:36:55Cのdllなら基本的に難しいことはないと思うが・・・。
C++のクラスライブラリをインポートするのは不可能。
0324322
2007/12/04(火) 01:13:57引数が構造体だったりすると大変にならないですか?
実は以前、他所様のCで書かれたdllを使おうと試みたんですが、
引数の構造体の中身が分からなくて断念したことがあります・・・
私の能力が至らないだけで、本当はできるんでしょうか?
>C++のクラスライブラリをインポートするのは不可能。
え、そうなんですか?すいません、どうして不可能なのか簡単に教えて頂けないでしょうか?
0325デフォルトの名無しさん
2007/12/04(火) 01:24:16C#でプログラミングしてるからここに。
TcpClient使ってネットワークストリームから出力すると
レスポンスヘッダと内容自体がいっしょくたになるけど
これをレスポンスヘッダと内容を効率よく分解する方法ってない?
TcpClient以外を使うっていうのは無しで。
0326デフォルトの名無しさん
2007/12/04(火) 01:29:44C++のABIは標準化されてないから
0327デフォルトの名無しさん
2007/12/04(火) 02:19:00構造体なんて定義すればいいだけだよ
C同士だって構造体の中身がわからなければ何もできないでしょ
0328322
2007/12/04(火) 02:51:26アンマネージなC++クラスライブラリだと駄目ってことでしょうか?
やるとしたら、マネージなのに作り直すか、クラスを使わないようにする、という認識で合ってますか
0329デフォルトの名無しさん
2007/12/04(火) 02:55:37もちろんクラスをマネージコードとやりとりしなければいいのであって、DLL内だけで使用する分には問題ないよ。
0330デフォルトの名無しさん
2007/12/04(火) 03:14:460331デフォルトの名無しさん
2007/12/04(火) 04:49:49DllImportのCallingConvention.ThisCallを使えばできるが、
ファクトリや開放用のメソッドが必要になったりで
正直おすすめしない。
0332322
2007/12/04(火) 06:09:38いや、中身が分からないんです。非公開というか勝手に使ってるだけなので。
で、もう一度トライしてみたらできました!朝までかかってしまいましたが・・・
dll内の関数の引数や返り血が構造体のポインタなのですが、C#のほうで適当に
struct hoge{};
と空っぽの構造体を作ってしまいました。とりあえず正常に動きました!(´∀`)ヤッター
でも、何故これで動くのかあんまりよく分かってないのですが、このまま使って大丈夫でしょうか??
unsafeでやってるので少し不安です・・・
>>329
探したら↓などを見つけました。
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20010&forum=7
COMを使えばクラスライブラリも呼べるようですが、茨の道みたいですね
>>330
無理してコードを変えるより、そのままC++/CLIでラップするほうが楽だし安全、ということでしょうか。
・・・というか、これ使えば何でもできるんじゃ?もしかして相当すごい機能?
>>331
すいません、まだそういうことできるレベルじゃないです。。
もう寝ます。皆様お付きあい頂いて、ありがとうございました。
0333デフォルトの名無しさん
2007/12/04(火) 10:47:07このMonthCalendarコントロールを表示した際にフォーム内からはみ出た部分が表示され
ないのですが、回避するにはどうしたらよいのでしょうか?
0334デフォルトの名無しさん
2007/12/04(火) 11:39:040335デフォルトの名無しさん
2007/12/04(火) 12:18:46これらを配列として扱うには下記の方法でよろしいでしょうか?
label1〜label4がフォームに置いたラベルです
Label[] lblArr = new Label[4];
lblArr[0] = label1;
lblArr[1] = label2;
lblArr[2] = label3;
lblArr[3] = label4;
考え方がよくなかったりしたら教えてください
0336デフォルトの名無しさん
2007/12/04(火) 12:33:27あらかじめ貼っておくか、追加するときに場所と大きさ計算してフォームのサイズを調整したら
>>335
いいよ
Label[] lblArr = new Label[]{ label1, label2, label3, label4 };
でもいい
0338デフォルトの名無しさん
2007/12/04(火) 13:34:32一応こういうのもある
>>335-336の方が好ましいのでできればやめた方がいいけど
0339デフォルトの名無しさん
2007/12/04(火) 15:05:320340339
2007/12/04(火) 15:10:04タイマーイベントのハンドラの中で、現在押下されているキーをすべて取得するといった内容で考えております。
0341デフォルトの名無しさん
2007/12/04(火) 15:13:29UDPポートをbindして、クライアントから一方的にudpデータが
送られてくる状況で、パケットの取りこぼしが発生してしまいます。
クライアントから送られてくるデータの、先頭2バイトをインクリメントデータの
シーケンス番号としておりまして、これを連続して取り出したところ
最大で10パケットほどごっそり抜けるといった現象が発生しています。
以下がプログラムの流れです。
1.ソケット作成
2.Socket.BeginReceiveFrom〜で非同期受信開始
3.コールバックメソッドで、先頭2バイトを読み出してシーケンス番号を確認。
4. 3.のシーケンス番号を保存して、再びSocket.BeginReceiveFrom〜を呼び出し。
5.再度のコールバックメソッドで、4.で保存したシーケンス番号と
新しいシーケンス番号に2以上の差があるときがある。(おおよそ2〜10程度)
UDP自体は信頼性のないネットワークなのは十分承知しているのですが、
クライアントからのデータはCore2DuoのPCでデータを受信しているので、
CPUパワーからして本当に取りこぼすのか疑問に思っております。
Wiresharkでパケットをキャプチャするとネットワークライン上には
正しくデータは流れているので、Windowsは取りこぼしていないが、
アプリケーションの段階で取りこぼしているのかなと想像はしているのですが……。
どなたか同じような症状の方おりませんでしょうか。
またわかる方がいればご教示願えませんでしょうか。
orz
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
ライセンス的に大丈夫なのか知らないけどこういうのも可能みたい
■ このスレッドは過去ログ倉庫に格納されています