C♯相談室 Part28
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん♯
2005/12/14(水) 07:47:02(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
過去スレは>>2-5あたり。
関連リンク
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D
0232デフォルトの名無しさん
2005/12/24(土) 04:36:34各クラスが独自に実装してしまってもそう困るもんでないような気が
>>231
object ICloneable.Clone() {...}
public Hoge Clone() {...}
じゃ駄目?
0233デフォルトの名無しさん
2005/12/24(土) 04:53:31>282にそう書いてあるじゃん
0234デフォルトの名無しさん
2005/12/24(土) 05:06:53public interface ICloneable<T> : ICloneable
になりそうな予感。
0235デフォルトの名無しさん
2005/12/24(土) 11:36:08あんまり有効な使い方は思い付かん。
0236デフォルトの名無しさん
2005/12/24(土) 13:28:03using System.Web.UI.HtmlControls;
を使うと
エラー 型または名前空間名 'UI' は名前空間 'System.Web' に存在しません。アセンブリ参照が不足しています。
と出て、UIに青い波線が入ります。
オブジェクトブラウザをみるとちゃんと存在します。
どこがいけないのでしょうか?ヘルプをみても問題ない気がします。
昔VBの経験があり、OSはXP2、PCは自作です。お願いします。
0237デフォルトの名無しさん
2005/12/24(土) 13:30:310238デフォルトの名無しさん
2005/12/24(土) 13:32:48参照の追加
0239デフォルトの名無しさん
2005/12/24(土) 13:42:52おお、早速の返答ありがとうございます。
しかし悲しいかな、いまひとつ理解できず苦しんでおります。
もう少し詳しい説明をお願いできないでしょうか。
0240デフォルトの名無しさん
2005/12/24(土) 13:47:39ソリューションエクスプローラのプロジェクトのところに参照ってない?
右クリックしてみ
しまった、俺まだ2003だった
0241デフォルトの名無しさん
2005/12/24(土) 13:52:22おお、これか!
動いた!
ありがとうございました!!!
0242デフォルトの名無しさん
2005/12/24(土) 15:30:07呼び出し先の関数が null 返した時にもこの例外は出るんだっけ?
0243デフォルトの名無しさん
2005/12/24(土) 15:39:370244236
2005/12/24(土) 15:47:18C#でHPに自動ログインさせようとしてるのですが、うまくいきません。
HtmlDocumentを使うのは分かったのですが、Itemプロパティが何故か使えません。
仕方ないの調べたらSetAttributeが使えそうなのですがこれも何故かうまく使えません。
Helpファイルの使用例も変です。恐れ入りますがよろしくお願いします。
0245236
2005/12/24(土) 15:54:010246デフォルトの名無しさん
2005/12/24(土) 15:54:37Itemなんてプロパティは見当たらないが。HtmlElementにも。
うまく使えないってなにがどううまく使えないんだ。
……ってSystem.Web?
その名前空間は基本的にASP.NET用の名前空間であってWinFormアプリには使わないぞ?
0247242
2005/12/24(土) 16:00:53ん〜。NULL 以外の値が帰ってくる時には正常に動作するらしい。
NULL を返す時に限って例外出てくるんだけど……。それとも内部でこけてるだけかな……?
ちなみに宣言は
[DllImport("dxwrap.dll")] private extern static IntPtr DXMusic_New_FromFile(IntPtr hWnd, string filename);
0248236
2005/12/24(土) 16:11:22実は下記のサイトを参考に自分なりに作り直しています。
http://peace.poosan.net/investor/workshop/2512.htm
このページからダウンロードしたソリューションは動くんです。
C#のバージョンが違うのですが、新しいバージョンならもっと簡単に出来るのではないかと勉強がてらにやっていました。
ここではログインページを管理する変数とタイマーを使ってるのですが、DocumentCompletedを使ってやれないか模索していました。
ですがうまくデータを書き込めないんです。
0249デフォルトの名無しさん
2005/12/24(土) 16:26:09System.Windows.Forms名前空間のWebBrowser/HtmlDocument/HtmlElementの仕様の差がわからないと。
ヘルプ嫁としか言いようが無いな。
//しかしそのサンプルもずいぶん無造作にCOMオブジェクトを使ってるねー。
0251236
2005/12/24(土) 17:00:50要は自動ログインしたいだけなんです。
WebBrowser.Document プロパティのヘルプに
「HTML ドキュメント オブジェクト モデル (DOM: Document Object Model) によって、
WebBrowser コントロールに表示されている Web ページのコンテンツにアクセスするには、このプロパティを使用します。」
とあるのですが、うまくログインできないんです。
他に参考になるページは http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=18348 ですが、
ここもやり方が古い(?)ようです。
お付き合いくださってありがとうございました。頑張って試行錯誤を続けます。
0252デフォルトの名無しさん
2005/12/24(土) 17:06:18なにやら果てしない飛躍だな。
0253236
2005/12/24(土) 17:15:370254デフォルトの名無しさん
2005/12/24(土) 17:25:50列の入れ替えができるリストビュ−ってどうやれば実装できるのでしょうか?
コンポーネントの名前とかも分らないので教えてもらえないでしょうか〜。m(_ _)m
0255デフォルトの名無しさん
2005/12/24(土) 17:26:42質問するときは具体的に、なにをどうやってどうなったかをはっきりと。
0256デフォルトの名無しさん
2005/12/24(土) 17:27:53AllowColumnReorder?
アイテムの管理が大変だけど。
0257デフォルトの名無しさん
2005/12/24(土) 17:30:31サンクスです!
0258デフォルトの名無しさん
2005/12/24(土) 17:43:112005で付いたブラウザコンポーネントは、
フレーム超えられないみたいだから注意してね。
まぁ、ネイティブのインタフェースも実装してるから
そっち使えばいいだけだけどね。
そんじゃ、これからデートで体力限界までハッスルしてきまつ!
0259236
2005/12/24(土) 18:00:55private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://login.yahoo.co.jp/config/login?.src=www&.done=http://www.yahoo.co.jp");
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserNavigatedEventArgs e)
{
HtmlDocument doc = this.webBrowser1.Document;
doc.All.Item("login",0).value = "名前"; //axwebBrowserの例からこれでいけると思ったがダメ。itemの定義がないとエラー
}
この後SetAttributeを使ったり、書き方を変えてみたりしたが全滅でした。
現在もググってますが良い例が見つかっていません。
0260デフォルトの名無しさん
2005/12/24(土) 18:05:200261デフォルトの名無しさん
2005/12/24(土) 18:15:35つかVS2005使ってないの?
まずHtmlDocument.Allを調べる。するとHtmlElementCollection型のインスタンスが返ってくると言うことが分かる。
HtmlElementCollectionのItemプロパティを調べる。
で、ここでC#の一般常識:Itemって名前の"引数をとるプロパティ"は、普通C#ではインデクサで表現する。
インデクサの使い方を調べる。
改めてHtmlElementCollection.Itemプロパティを見てみる。
と言う風に順番に解決してけ。
0262236
2005/12/24(土) 18:51:09VS2005使ってますがhelpでクリックして辿ってる内に変なところにたどり着いていたようです。
半ばヤケになっていろいろ試していました。もう一度最初から調べてみます。
ありがとうございました。
0263デフォルトの名無しさん
2005/12/24(土) 21:05:13namespace Lib{
class ClassA{
}
}
というのがあるんだが、ほかのプロジェクトで使うときLib.ClassAじゃあかんのですか?
リファレンス参照追加しても見つけてくれない・・・orz
0264デフォルトの名無しさん
2005/12/24(土) 21:09:100265デフォルトの名無しさん
2005/12/24(土) 21:14:45public class にせいや
0266デフォルトの名無しさん
2005/12/24(土) 21:18:52ビルドはしてます。
現状:
ライブラリプロジェクトを同じソリューションに追加。
ライブラリのDLLは作成されている。
リフレクターで見ると対象のクラスなどは存在する。
ライブラリを参照したいプロジェクトにはDLLは存在しない←これがおかしい?
0267263
2005/12/24(土) 22:24:47でもライブラリいじっても古いDLLのままなので手動でコピーしないといけないですね。
0268デフォルトの名無しさん
2005/12/24(土) 23:44:49理由わかったら結果報告します。
0269デフォルトの名無しさん
2005/12/24(土) 23:53:440270デフォルトの名無しさん
2005/12/25(日) 01:12:30文字列の文字コードは UTF-8, UTF-16, ASCII, SHIFT-JIS, EUC-JP などさまざまです。
そこで、文字コードと string の関係がすごく気になります。
EUC-JP とか SHIFT-JIS の文字列を string に代入したら、内容は破壊されるんでしょうか。
もし破壊されないのなら、string で渡された文字列を byte[] に変換して、
それから正しい文字コードを指定して表示するなり変換するなりできますが、
場合によって破壊されてしまうのなら、そもそもそのコンポーネントの仕様に
問題があることになるので…。
0271デフォルトの名無しさん
2005/12/25(日) 01:18:48内容が破壊とか意味不明。
EUC-JPなりShift_jisなりで表現されるのは所詮バイト列。stringとは関係無い。
0272デフォルトの名無しさん
2005/12/25(日) 01:34:18・そのコンポーネントは文字列を string として返してくる。
・しかし、その内容は UTF-8, Shift_JIS, EUC-JP などさまざま。
という点が問題なのです。
おっしゃるとおり string の内部表現は UTC-16 です。
しかし、実際にコンポーネントが EUC-JP の文字列を string に
入れて返してきたものを、そのまま UTF-16 のつもりで表示すると、
化け化けでまったく表示できないんです。
ですので。
コンポーネントが string に入れてきた文字列は、 UTF-16 のように
みせているが byte[] としてとりだすと元のエンコーディングの
文字列のバイト列のままで、バイト列から正しいエンコーディングに
変換することができるのか。
それとも、そもそも string に入れて返されてきた(もともと UTF で
はない EUC-JP などだった)文字列は、UTF-16 と思って表示すると
化け化けなことから、既に破壊されていて、そこから変換して正しい
文字列を EUC-JP なり UTF-8 なりとして取り出すなんてことは、
不可能なのか。
そのどちらなのかが、わからないのです。
0273デフォルトの名無しさん
2005/12/25(日) 01:39:54コンポーネント内部の処理の時点で既におかしくなっている
気がしてきました。
string で値を渡してくるわけだから、string として表示
なりなんなりしたときに化ける時点で値をセットした側の
処理に問題がある気がします。
0274デフォルトの名無しさん
2005/12/25(日) 01:56:10普通にデコードためしてみりゃ良かろうに
0275デフォルトの名無しさん
2005/12/25(日) 02:00:13勿論stringはstringなのだから、stringで返してきた文字列が化けているのならそれはコンポーネントのデコードミスだ。
コンポーネントがバイト列からstringに変換するときに正しいエンコーディングを使わなかったんだろう
> 化け化けなことから、既に破壊されていて、そこから変換して正しい
> 文字列を EUC-JP なり UTF-8 なりとして取り出すなんてことは、
> 不可能なのか。
例えば「あいうえお」という文字列をUTF-8で表現すると
E3 81 82 E3 81 84 E3 81 86 E3 81 88 E3 81 8A
ってバイトの列になる。
これをShift_jisでデコードするとまあ当然化けるわけだが、
その化けた文字列を再びShift_jisとしてバイト列にしてみると、
E3 81 82 E3 81 84 E3 81 81 45 81 88 E3 81 81 45
って感じになる。
何故かと言うと、途中変換できない文字は?または・に強制的に変更してしまうから。
だから>>272が言う「既に破壊」はある意味では正しい。
0276デフォルトの名無しさん
2005/12/25(日) 02:01:38実際に byte[] に変換して元データのエンコーディングを使って
再度 string にして確かめてみろということですね。
やってみます。ありがとう。
0277デフォルトの名無しさん
2005/12/25(日) 02:06:56なんかかなりまんどくせそうなんだが。
0278デフォルトの名無しさん
2005/12/25(日) 02:13:36呼び出し関係を調べたいならコンパイルしてからILを読めばいいだけだし
0279デフォルトの名無しさん
2005/12/25(日) 02:17:590280デフォルトの名無しさん
2005/12/25(日) 02:30:25それはただのスレ違いレスとどう違うんだ?
0281デフォルトの名無しさん
2005/12/25(日) 02:32:25かなり。
とりあえずC#の言語仕様を精査するところから開始。
気が遠くなるだろ?
0282デフォルトの名無しさん
2005/12/25(日) 02:37:23どこで使われてるか調べるならObsolete付けてビルドするのが手っ取り早いと思う。
0283デフォルトの名無しさん
2005/12/25(日) 02:39:330284デフォルトの名無しさん
2005/12/25(日) 02:42:550285デフォルトの名無しさん
2005/12/25(日) 02:47:12よく調べてないんだけど、実質パーサー何もなくない?
0286デフォルトの名無しさん
2005/12/25(日) 02:56:240287デフォルトの名無しさん
2005/12/25(日) 02:59:13まぁ、System.CodeDom名前空間のクラス郡か、ANTLRでも持ってくるかって感じだな。
0288デフォルトの名無しさん
2005/12/25(日) 03:21:12System.Text.Encoding
0289デフォルトの名無しさん
2005/12/25(日) 09:38:26DLLの直接参照をやめて、プロジェクト参照にしたら動きました・・・
デモなんかそれができなかったりしたんだよな・・・
0290236
2005/12/25(日) 16:16:56丸三日掛かりましたがようやく出来ました。
ありがとうございました。
0291デフォルトの名無しさん
2005/12/25(日) 16:52:47させる時に、スペースやカンマだけは読み込まないように
したいのですがどうすればいいのでしょうか?
誰か助けて!
0292デフォルトの名無しさん
2005/12/25(日) 16:58:55とりあえずReplaceで取り除くという簡単な手段を提示。
0293デフォルトの名無しさん
2005/12/25(日) 17:11:15エクスプローラでファイルの操作とかしたいんですが、できますかね?
具体的にはどうやったらいいんでしょう
0294デフォルトの名無しさん
2005/12/25(日) 17:19:200295デフォルトの名無しさん
2005/12/25(日) 18:04:490296デフォルトの名無しさん
2005/12/25(日) 20:23:300297デフォルトの名無しさん
2005/12/25(日) 20:34:050298デフォルトの名無しさん
2005/12/25(日) 20:37:01生で出し入れするのか…。
ありがとう。RFC文書探してみるよ。
0299デフォルトの名無しさん
2005/12/25(日) 20:41:530300デフォルトの名無しさん
2005/12/25(日) 20:42:02Socket使って生からで作る事自体は大した手間ではなかったり
0301デフォルトの名無しさん
2005/12/25(日) 21:01:54ヘルプには「Connection HTTP ヘッダーの値を取得または設定します。 」って書いてあるけど、
ヘルプのサンプルを動かしたら、
HttpWebRequest myHttpWebRequest2 =
(HttpWebRequest)WebRequest.Create("http://www.contoso.com");
myHttpWebRequest2.Connection = "Close"; ←ここでエラーが起こる。
このプロパティを使用して、Keep-Alive および Close を設定することはできません。
パラメータ名: value
なんてエラーが出やがった。
0302デフォルトの名無しさん
2005/12/25(日) 21:09:240303デフォルトの名無しさん
2005/12/25(日) 21:11:57生で出し入れだと!
0304デフォルトの名無しさん
2005/12/25(日) 21:13:03ってすればいいだけなのか。サンクス。
0305デフォルトの名無しさん
2005/12/25(日) 23:54:1553番のネェちゃんがアナ開けて待ってるから
そこにナマで出し入れしてネタを聞き出すんだよ。
0306デフォルトの名無しさん
2005/12/26(月) 00:24:55今年は2日で計8戦して、摩擦しすぎで腫れちゃって
風呂入っても凍みるんだから。
くだらない妄想なんてやめて、
世界がどうやったら平和になるか考えようよ。
0307デフォルトの名無しさん
2005/12/26(月) 00:55:29人類が滅べば平和
0308デフォルトの名無しさん
2005/12/26(月) 01:33:520309デフォルトの名無しさん
2005/12/26(月) 01:34:08俺は真っ先に死にそうだがorz
0310デフォルトの名無しさん
2005/12/26(月) 03:28:26最後が頭だとダメだろ
0311デフォルトの名無しさん
2005/12/26(月) 18:36:44List<T>ならList<T>.Sortメソッドがあるし配列ならArray.Sortメソッドがあるんですが
そのどちらかわからない場合はどうすれば・・・
0312デフォルトの名無しさん
2005/12/26(月) 18:37:400313311
2005/12/26(月) 19:10:20インターフェースってIList<T>のことですか?
ドキュメントによるとIList<T>にソートをするメソッドはないみたいです。
0314デフォルトの名無しさん
2005/12/26(月) 19:14:140316デフォルトの名無しさん
2005/12/26(月) 20:28:21KeyEventArgsで
KeyCodeとKeyDataってどう違うんですか?
ただコンボボックスでEnterが押されたらコマンドを実行するようにしたいだけなんですが
0317デフォルトの名無しさん
2005/12/26(月) 20:53:140318デフォルトの名無しさん
2005/12/26(月) 23:18:03caretを直接扱えないってことでしょうか。
ドローソフトみたいに画面上の任意の位置に文字を入力できるようなのを
作りたいのですが……。
0319デフォルトの名無しさん
2005/12/26(月) 23:23:330320デフォルトの名無しさん
2005/12/26(月) 23:25:460321デフォルトの名無しさん
2005/12/27(火) 00:43:25/t Hogeって単体は指定できるのですが・・
0322デフォルトの名無しさん
2005/12/27(火) 00:44:58sgenの情報が少ないな
0323311
2005/12/27(火) 05:44:32ArrayList.AdapterメソッドがIListをArrayListに変換するのに使えるようです。
内容のコピーはしないらしいのでIListのコピーに使えそうです。
0324311
2005/12/27(火) 05:45:17○ IListのソート
0325デフォルトの名無しさん
2005/12/27(火) 10:05:280326311
2005/12/27(火) 12:19:29そうでした・・・
List<T> と配列が両方 IList を継承していたからうまくいっただけでした。
IList<T> をソートする方法は依然として不明のままです。
0327デフォルトの名無しさん
2005/12/27(火) 14:35:34一体何を悩んでいるのか読めない。
0328311
2005/12/27(火) 16:15:10>>323 の方法で問題ないです。すみません。
ただ IList<T> を実装したコレクションを共通の方法でソートする場合はどうするのかなあと思っただけです。
0329デフォルトの名無しさん
2005/12/28(水) 00:07:51MediaPlayerをウィンドウに配置してMDIとして再生するのと
DirectShowを使ってウィンドウに直接描画し、MDIアプリとして再生するのでは
どちらの方が処理が軽くなるでしょうか?
再生する動画の数は1〜4つを想定しています。
また、DirectShowを使う場合はマルチスレッドにする必要がありますか?
0330デフォルトの名無しさん
2005/12/28(水) 00:31:180331デフォルトの名無しさん
2005/12/28(水) 00:42:17わかりました。
■ このスレッドは過去ログ倉庫に格納されています