1 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:15:52 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part51 pc12.2ch.net/test/read.cgi/tech/1233757615/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>2-5 くらい
800 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:24:26 ] いつものC++の頭おかしい人では、ほんと困ります
801 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:25:21 ] うん。スレ違いです。
802 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:26:16 ] C++のスレもヤツと思わしき書き込みでメチャメチャになってるんだが C++の中の人も大変だなw
803 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:33:16 ] >>798 仮にそうだとしても、配列由来の操作を隠蔽しなければならない確固たる理由はなくね? 事実、C#以外の多くの言語では、スタック操作は配列操作の一部として扱われているわけで。
804 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:45:28 ] ゲームプログラムなら俺に聞けスレも悲惨な有様だね、死んでしまえばいいのに
805 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:47:56 ] 自分は、VectorからStackが派生しているJavaは気持ち悪いと思う。 反対の、IStackやIQueueがあって、IListがその2つ(やその他)を継承するという作りのほうが自然に感じる。
806 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:48:31 ] framework 4.0 の並列処理機能についてMSをのぞいて詳しく書いてあるサイトでわかりやすいところない?
807 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:52:42 ] 継承しないで、独立の実装されるのが理想だと思うな。 class ListStack : IList , IStack ←ないけど class Stack : IStack ←ないけど どちらも実装は同じでもいいだろう、しかし使う側がちゃんと考えて配列アクセスが不要ならStackを使うとしてくれるとListStackとStackの実装は後で変えることもできる。 基礎ライブラリなので変えることはしないだろうが、実際の開発ではこれが決定的な差になる。
808 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:57:02 ] >>805 それだと、スタック操作を定義しないListが作れないような
809 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:57:51 ] 作りとしてはこんな感じかな class ListStack : IList , IStack { List list; 各種実装 } class Stack : IStack { ListStack list; IStack で公開されるメンバーのみ公開しておく } これならListより配列の方が効率的だからという理由で後から object [] といった具合に変えて高速化する事も可能だろう。 上のDoubleListの例でいえば、Listを継承してしまうとListの機能に固定されてしまう訳だ。
810 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:30:22 ] ふらっとが落ち着いたと思ったら、今度はこっちが荒されてて笑った >>806 一番詳しい所は、Parallel Extensionsチームのブログ 日本語で詳しく書いてある所は知らない。
811 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:30:12 ] あまりの流れに素で>>806 をスルーしてたw >>810 を見て初めて存在に気づいたw
812 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:49:31 ] うん、確かに分かりやすく記述してあるな。 ただbeta1だけにそもそも手を出さないのが正解かもしれんな。
813 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:55:20 ] >>803 配列由来の操作を隠蔽しなかったら 他の実装に変えられなくなるじゃん。
814 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:41:17 ] 現在、とある目的のための汎用エディタをつくっているのですが、 GUIを楽に実装したいのでPropertyGrid を使いたいです。 しかし、なんせ汎用エディタなので、設定の項目は xml で定義できるようになっているため、 設定項目をまとめたものをクラスとして定義して PropertyGridに渡す」ということができません。 そういう場合でも PropertyGrid を使う事はできますか? もしくは、空のクラスをつくって、設定ファイルに従って動的にプロパティを追加.. といったことができれば素直に PropertyGrid を使う事ができて楽なんですけど...
815 名前:デフォルトの名無しさん [2009/06/09(火) 01:51:26 ] 何に対して汎用的なのかサッパリーで なんで汎用的だと設定項目がxmlになるのかよくわからん IXmlSerializerとかなかったっけ
816 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:54:03 ] できます
817 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 02:15:42 ] すみません、まぎらわしい書き方でしたね。XMLうんぬんは全然関係なくて、 ようするに 項目名(プロパティ名)とその型(整数、文字列、実数)が設定ファイルで定義されている ↓ 設定をロードするまでプロパティの個数も名前も型もわからない ↓ ソースコード上でクラスを定義できない ↓ だから PropertyGridもつかえない?? ←ここが問題 こういう目的で PropertyGridをつかうにはどうすればいいのでしょう? もしくは、動的にクラスのプロパティを追加したり削除したりするにはどうすればいいのでしょう?
818 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 02:40:53 ] なんかnotepad++とかeclipseみたいな感じか 設定項目をxmlで記述するとして, その設定項目を実際に反映させるのは誰の役目? プラグイン方式にするのだったら設定項目を集めたクラスを,プラグイン側で公開するようにすればいいだけなんだけど
819 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 03:45:21 ] TypeConverter を継承して、好き勝手な property を登録するという方法でやてみました。 その結果、TypeConverter を継承した MyPropConverter をつくり、 [TypeConverter(typeof(MyPropConverter))] class Hoge{} という空っぽの Hoge クラスのインスタンスを PropertyGrid.SelectedObject に指定することにより、 好きなだけ任意のプロパティ項目を表示できるようになりました。しかし... たとえば オブジェクトAを選択すると、設定テキストAの内容をつかってプロパティを表示、 オブジェクトBを選択すると、設定テキストBの内容をつかってプロパティを表示、 オブジェクトCを選択すると ... するというようにしたいのですが、 すると、いま選択されているのが AなのかBなのか、なんなのかを MyPropConverterが知る必要があります。 (オブジェクトの種類によって GetProperties の戻り値を帰る必要があるため) これはどのように指定すれば良いのでしょう? 理想をいえば、MyTypeConverter のコンストラクタでそのまま設定テキストを渡して解析させ、 結果に応じて GetProperties の戻り値をかえたいです。しかしそのようにすると、 propertyGrid.SelectedIndex = new Hoge(); の行で実行時エラーになります。問題はそもそも MyPropConverterのコンストラクタの呼び出し元はどこなのか?ということですが....
820 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 04:11:56 ] >>819 ほれ msdn.microsoft.com/ja-jp/library/system.reflection.emit.typebuilder.aspx これなら何でもできるぞ
821 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 08:50:01 ] プロパティの中にプロパティが入ってるやつ Size 10, 10 Width 10 Height 10 それに似た感じで Cube 10, 10, 10 X 10 Y 10 Height 10 を作るにはどうしたらいいですか?
822 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 08:59:28 ] 何が分からないのか分からない クラス/構造体の作り方が分からないのか?
823 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:17:26 ] それは分かりました クラスの中に構造体が入りません
824 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:20:04 ] class Hoge { struct Point { public int X, Y } Point Size { set; get; } }
825 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:27:10 ] >>824 C/C++が混ざってるぞ
826 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:38:41 ] >>825 いや、Y の後ろの ; 忘れてる以外は C# 的に問題ない。 コンパイル通るぞ。
827 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:57:30 ] XとYのsetとgetはどこに書くのですか?
828 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:01:05 ] 構造体の中にプロパティが入らないからわけわからん・・・・
829 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:07:12 ] >>826 ごめんPoint型のSizeは盲点だった public struct Cube { private int width, height, length; public int Width { get { return this.width; } } public int Height { get { return this.height; } } public int Length { get { return this.length; } } public Cube(int width, int height, int length) { this.width = width; this.height = height; this.length = length; } }
830 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:08:44 ] >>827 クラスと同じ >>828 何で入らないと思ったのかkwsk
831 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:39:17 ] 最後にreturn this;入れるのかな? とりあえず仕組みは分かりました ありがとうございます!
832 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:58:24 ] この後この構造体使うプロパティ作ったんだけどビルドでIDE落ちる
833 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:36:21 ] え、これ構造体の中のプロパティって全部使えないの?? 外にまたそれ用のWidth、Height、Lengthのプロパティも作るなら構造体の中にプロパティじゃなくて変数だけでよくない? と思い始めてるけど勘違いしてるのかな
834 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:10:44 ] >え、これ構造体の中のプロパティって全部使えないの?? イミフ。set書け >外にまたそれ用のWidth、Height、Lengthのプロパティも作るなら構造体の中にプロパティじゃなくて変数だけでよくない? プロパティが何のためにあるか理解してないようだな。
835 名前:デフォルトの名無しさん [2009/06/09(火) 12:24:54 ] NetworkStream読み出し用のバッファとして、Queueクラス使うのって大げさすぎる? なるべくコンパクトでオーバーヘッドの少ない方法がいいのだけど、自前でByte用の リングバッファクラス作った方がよい?
836 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:51:55 ] そのbyte列ってどういう用途に使って、どのくらいのサイズがあるの?
837 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:59:37 ] >>836 相手PCからほぼ間断なく来るバイト列を読み込みながら、パケットとして処理出来るまで溜め込んで パケットを解析して次の処理に渡します。 パケットのサイズは200バイト未満で可変です。 パケット間は区切り文字も何もなくダラダラと流れてきますが、途中○バイト目がパケットサイズに なっているので、それを頼りにパケットを解析します。
838 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 13:24:36 ] TypeDescriptorから深い世界へどうぞ。
839 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 13:59:32 ] なんかここ最近どっかのスレで見たことあるような質問だな・・・
840 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 14:16:41 ] >>837 Queueは大袈裟っつーか使い道が違うんじゃないかな NetworkStreamから1バイトずつ読み取るつもりなわけでもあるまい
841 名前:デフォルトの名無しさん [2009/06/09(火) 15:05:23 ] WebBrowser.GoSearch メソッド で、IEのデフォルトの検索ページに飛ばしています。 デフォルト設定では Google になっていて、これまでは必ずGoogleに飛んでいた のですが、ここ数日設定していないのに、Bing に飛んでしまいます。 WebBrowser.GoSearch メソッドを使うとこのBingが自動的に選ばれてしまうのを これまで通り正しくIEのデフォルトの検索ページに飛ばせるように戻せないでしょうか? できましたら、変更の仕方を教えていただきたく、何卒よろしくです。
842 名前:841 [2009/06/09(火) 15:07:12 ] OSはWindowsXpSP3、.NETはVer2.0です。よろしくお願いします。
843 名前:841 [2009/06/09(火) 15:11:43 ] ああ!!わかりました、標準の検索ページ自体が書き換えられていました。 すみませんでした。。。申し訳ありません。。。
844 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 15:38:00 ] バイト数が送られてくるならリングバッファとかじゃなくて、 単にキューでバイト配列を管理したらいいんじゃない?
845 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 15:45:01 ] 受信単位の内部バッファをQueueで溜め込むのは普通にありだろう。 深く考えずに単一バッファにして追記していって消費したバイト分を前にずらすという力技でもいけちゃいそう。 サーバの話なら論外だけど。
846 名前:デフォルトの名無しさん [2009/06/09(火) 16:32:02 ] tcpClient tcp; public NetworkStream ns; public Queue<Byte> ReadQueue = new Queue<Byte>(); Byte[] ReadData = new byte[512]; public Test(string hostname, int port) { tcp = new TcpClient(hostname, port); ns = tcp.GetStream(); ns.BeginRead(ReadData, 0, ReadData.Length, CBRead, ns); } private void CBRead(IAsyncResult ar) { NetworkStream ns = (NetworkStream)ar.AsyncState; Int32 cnt = ns.EndRead(ar); for (int i = 0; i < cnt; i++) { ReadQueue.Enqueue(ReadData[i]); } ns.BeginRead(ReadData, 0, ReadData.Length, CBRead, ns); } Queueを使ってやりたいことは大体こんな感じです。 延々とバックグラウンドで受信しているイメージです。 パフォーマンス的にどうなのかなあ、自前リングバッファの方がいいのかなあと言う疑問でした。 ちょっと質問からずれるのですが、連続してストリームを処理する場合のBeginReadの 使い方ってこれであってます?
847 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 16:34:52 ] Mainが無かったです static void Main(string[] args) { test("192.168.1.100", 10001); while (true) { while (wl.ReadQueue.Count > 0) { Byte b = wl.ReadQueue.Dequeue(); Console.Write(b.ToString("X2")); } } }
848 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 16:47:38 ] もうQueueなんて使わないでMemoryStreamに流し続ければいいんでない? そしてCBRead()の最後がキモい だれも止められないじゃん
849 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 16:55:12 ] >>848 どうしてもバッファから取り出した分を詰める作業が必要なのでMemoryStreamはちょっと。 最後キモイですか。 我ながらこりゃあいいやと思ったんですが、どうしましょうか。
850 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 17:08:55 ] んーいまいちQueueの用途がわからない もしかして>>846 は肝心の”取り出した分を詰める作業”が書かれていない? しかも,そもそもTCPなんだからByte型のデータを自前でバッファする必要性をあまり感じないんだが. むしろQueueに突っ込むのは,データストリームから取り出した使えるデータの方がヨサゲ
851 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 17:13:56 ] だよね 少なくともバイト数が分かる仕様ぽいから、 受信スレッドがひたすらまとまり単位でバイト配列に取り出してバイト配列をキューに追加 処理スレッドがキューからひたすら取り出して処理すればいいような気がする。 ああ、スレッド間の同期はちゃんとやってね。
852 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 17:15:44 ] その場合は簡単なブロッキングキューを作ればよりシンプルになるかも。
853 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 19:30:09 ] >>810 亀だけどサンクス 思ったより知りたいことが書いてあったので為になった!
854 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:41:04 ] public static object GetMyObject() { AssemblyName asmName = new AssemblyName("myAsm"); AssemblyBuilder asmBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.Run); ModuleBuilder modBuilder = asmBuilder.DefineDynamicModule("myModule"); TypeBuilder typeBuilder = modBuilder.DefineType("myClass", TypeAttributes.Public, typeof(object)); typeBuilder.DefineField("x", typeof(int), FieldAttributes.Public); typeBuilder.DefineField("y", typeof(int), FieldAttributes.Public); Type mytype = typeBuilder.CreateType(); return Activator.CreateInstance(mytype); } という動的クラスのインスタンスを返す関数を作って propertyGrid.SelectedObject = GetMyObject(); とやってみましたが、プロパティグリッドにはなにも表示されません。 GetMyObject() の戻り値をみてみたところ、クラス名 myClass で メンバ x, y も存在し、意図したとおりのクラスとインスタンスが 生成されているように見えるのですが、プロパティグリッド反映されないのはなぜなのでしょうか?
855 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:45:43 ] だってobjectだもの
856 名前:デフォルトの名無しさん [2009/06/09(火) 20:46:32 ] 肝心のプロパティを定義してないじゃないか
857 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:53:34 ] そうだった objectじゃなくてもいいんだった
858 名前:デフォルトの名無しさん [2009/06/09(火) 20:56:33 ] プロパティグリッドで使うだけなら本当に型を生成しなくてもTypeDescriptorで簡単にプロパティを追加できるよ
859 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:57:59 ] >>856 の書いてるように、フィールドでは駄目だよ。 基本的には読み書き可能なプロパティを定義しないと。
860 名前:デフォルトの名無しさん [2009/06/09(火) 21:04:18 ] プロパティを定義するならアクセサメソッドの実装を ILGeneratorで生成しないといけないので超面倒だぜ
861 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:12:53 ] まあぶっちゃけDataSetに読み込んでDataRowViewを使えばいいんじゃないかなw
862 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:15:02 ] ここまでしてpropertygrid使う意味があるのだろうか
863 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:25:16 ] 自分で作ることと総合的に考えれば、圧倒的に楽になる可能性はあるよ。 DataTableに一行目とかに読み込んで、DataRowView(DefaultViewでもいい)を取り出して、 1行目をPropertyGridにバインドすれば簡単なことならできる。 これで事足りれば、新しいクラスを作ったりTypeDescripter絡みを自分で処理する必要はない。
864 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:30:30 ] 1行に1文字以上typoがあるはつは信用ならにゃい
865 名前:デフォルトの名無しさん [2009/06/09(火) 21:31:39 ] CLR型やアセンブリを作り捨てしたらメモリリークするぞ
866 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 22:34:41 ] ちょっと教えてください。 ListViewのList表示で横スクロールするときになめらかにスクロール させたいんだけど、どうすればいいんでしょうか。 エクスプローラみたいなスクロールじゃなくてFileVisorみたいなスク ロールといえばイメージ伝わるかな。 ListBoxに無理矢理描画しようかとも思ったけど面倒だし、うまい方法 はないでしょうか。よろしくお願いします。
867 名前:デフォルトの名無しさん [2009/06/09(火) 22:37:22 ] WPFに移行する
868 名前:デフォルトの名無しさん [2009/06/10(水) 07:38:42 ] 今勉強中なんですけど カプセル化って隠すという意味ですよね? デリゲートが何でカプセル化になるのか今一ピンとこないんですが
869 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:09:36 ] >カプセル化って隠すという意味ですよね? 多分違う
870 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:19:23 ] どのメソッドを呼び出すか?を隠してる
871 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:29:56 ] 隠してない
872 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:41:45 ] ある意味隠してる
873 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 09:16:07 ] アクセス制限として見ると隠してないが、 カプセル化として見れば隠してる
874 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 09:51:36 ] >>868 雑だが Commandパターン クロージャ
875 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 10:27:40 ] ヘジたん的にはデザイナでコントロールクリック一発、それそこに書けを実現するための部品の一つでしかないんだろうな。 複数のメソッドが登録できるあたり、発想は明らかにクロージャー等ではないし、今ではクロージャー化しつつあるけど
876 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 10:38:35 ] 小理屈よりも、まずやりたい事ありきというC#の考え方は嫌いじゃないです IDEの支援を想定した文法とか、常識的にはこの文法冗長でだるいだろう普通やめるだろうというのが平気で入っている。
877 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 11:08:08 ] カプセル化も大きなウェイトを占める概念の一つであって それがすべてじゃないと思うよ。
878 名前:デフォルトの名無しさん [2009/06/10(水) 11:10:29 ] オブジェクト指向的にはメソッド一つだけのインターフェイスと等価 パターンとしてよく必要になるんだけど>>876 の言うように面倒だから言語に取り込んだ
879 名前:デフォルトの名無しさん [2009/06/10(水) 16:45:29 ] 非同期実行する場合に new Thread ThreadPool.QueueUserWorkItem BackgroundWorker delegate.BeginInvoke …ほかにもある? なんか色々あって混乱するけど、どういう場合にどれを使えばいいの?
880 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 16:49:47 ] どうぞ ttp://codezine.jp/article/detail/144?p=1
881 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 17:25:53 ] >>880 ありがとう、でももうちっと最近の記事じゃないとBackgroundWorkerとか扱ってないかも private void BackgroundStart() { Action act = () => { while (true) { Thread.Sleep(50); Console.WriteLine("にゃー!"); } }; act.BeginInvoke(null, null); } static void Main(string[] args) { BackgroundStart(); while (true) { Thread.Sleep(50); Console.WriteLine("わんわん!"); } } 今はこんな感じで書いてるけど、可読性いいのかこれ? BackgroundWorkerはいろいろリッチだけど、使うの難しそう。
882 名前:854 mailto:sage [2009/06/10(水) 17:31:56 ] どうもありがとう filed ではなくて property をつくったら見事意図したとおりにできました! 最後にひとつ。 動的に作ったクラス、のインスタンスのプロパティに値を設定するには どうすればよいですか? もしくは、PropertyGird をプログラム側から操作して、PropertyGrid.SelectedObject のプロパティを変更することはできますか?
883 名前:デフォルトの名無しさん [2009/06/10(水) 17:44:41 ] リフレクションを使う プロパティを生成できた奴がそんな質問をするなんて考えられないと思うんだが
884 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 17:48:08 ] わざとだろ、自分で考えろ以上終了だな
885 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:30:56 ] ボスケテー AA作成支援ソフトっぽいもの作ってまして 標準環境(www.geocities.co.jp/HeartLand-Yurinoki/1836/mona_font_settei.html ) で指定した文字列の表示幅を取得する方法を探してます Graphics.MeasureStringや TextRenderer.MeasureTextなんかを使えばいけるんだと思うんですが どーにもIE標準環境の作り方がわかりません(Graphicsオブジェクトどーやってもってくるの?) おせーてくださーい
886 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:37:54 ] onpaintとかのじゃだめなのかな?
887 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:48:23 ] 普通にControl.CreateGraphicsでもいいしGetDCしたのからFromHdcでもいいし
888 名前:885 mailto:sage [2009/06/10(水) 22:50:23 ] 何が文字列の表示幅を決定している要因なのかよく理解していないものでして てっきりGraphicsオブジェクトのプロパティに大きく依存するのかと思ったんですが 今メンバ見てもそれっぽいもの無いみたいですね。。 例えば下の二つの文字列 「ああああああ」 「..............................」 を長さ測定関数に渡した時に同一の値が帰ってくるような 状態をとりあえず目指していろいろやってるんですが なかなかうまくいかないですね・・・ とりあえずもうちょっと調べてみますー
889 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:12:03 ] フォントだよ
890 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:33:33 ] あー なんとかできたっぽいです 同じフォントでも環境によって表示のされ方違うのかと思ってました レスくれた方ありがとでしたー
891 名前:854 mailto:sage [2009/06/11(木) 00:54:54 ] 以下のようにしたらうまくいきました リフレクターというヒントをくれたかた、どうもありがとう Type type = (Type)MyClass; type.GetProperty("x").SetValue(propertyGrid.SelectedObject, 1234, null); いままでずっと C をやっていて C# も .Net おとといはじめたばかりなので、 ヒントがなければライブラリのどこに何があるかさっぱりわかりませんでした。 どうもありがとう!
892 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:01:32 ] どういたしまして お役に立てて光栄です
893 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 07:42:51 ] 質問者の笑顔のために
894 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 08:25:30 ] >>881 > Action act = () => なんぞこれ
895 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 08:38:37 ] lambda式でしょ。
896 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 13:05:26 ] >>894 actという名前の変数はAction型 () => {...} はAction型のリテラル(ラムダ式)で,空の引数を受け取って何かしてる
897 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 17:52:31 ] C#のAAはこれでおk? (c_c#)
898 名前:デフォルトの名無しさん [2009/06/11(木) 22:31:35 ] C#の式として有効なものしか認めない
899 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:56:39 ] >>897 //(c_c#) でOK
900 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:57:17 ] "(c_c#)"
901 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 23:33:06 ] (^c_^#)
902 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 23:42:17 ] (T_T)=>("^A^")
903 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 11:28:58 ] */
904 名前: ◆BOHwjyHW6o [2009/06/12(金) 12:24:43 ] 完全にハマりました。 質問させてください。 今、S/C間の通信プログラムを書いています。 -------- //↓サーバー側プログラム this.mListener = new TcpListener(IPAddress.Any, 58201); this.mListener.Start(); clTCPClient = this.mListener.AcceptTcpClient(); -------- //↓クライアント側プログラム TcpClient tcp = new TcpClient(); tcp.Connect("@", 58201); -------- @をlocalhostにすると接続が確認できます。 @をグローバルIPにすると接続できなくなります。 SocketExceptionが出ました。 ErrorCodeは10061 エラーメッセージは「対象のコンピュータによって拒否されたため、接続できませんでした。@:59201」と出ました。
905 名前: ◆BOHwjyHW6o mailto:sage [2009/06/12(金) 12:26:01 ] ポートが空いていないのだろうと思い、 ttp://www.navnav.jp/port/ ココでポートの解放チェックを行いました。 結果、ポートは空いていました。 (ポート解放用と思われる接続もサーバー側のAcceptTcpClientでキャッチできました) @をグローバルIPにして接続を行いたいのですが、どうすれば良いでしょうか? また、何を確認すべきでしょうか? 環境は以下の通りです。 ・PCは1台でテストしています。(OSはXP) ・Visual Studio 2008 で開発を行っています。 ・ウィルスバスターは終了させた状態です。 ・ルーターはフレッツ光のCTUです。 ・ハブはBUFFALOのAirStationをルーターOFFモードで利用しています。
906 名前: ◆BOHwjyHW6o mailto:sage [2009/06/12(金) 12:28:30 ] すいません。エラーメッセージ間違いました。 正しくは、 「対象のコンピュータによって拒否されたため、接続できませんでした。@:58201」 です。 よろしくお願いします。
907 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 12:33:04 ] どこか上流でファイアウォールでも動いているんじゃない?
908 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 12:37:08 ] ん? ルータの内側にいるのに,外側のIPに接続しようとしてる? ルータの実装によるけど,ふつーはつなげないんじゃないかな
909 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2009/06/12(金) 12:41:36 ] NAPTしてるのを適切に処理してないって落ちじゃないの
910 名前:777 mailto:sage [2009/06/12(金) 13:12:08 ] SqlConnectionStringBuilderでAttachDBFilenameだけをクリア したいのですが、ヘルプ通りnullを渡すとエラーになります。 他にどんな方法があるんでしょうか?
911 名前:910 mailto:sage [2009/06/12(金) 13:13:29 ] 申し訳ない。 >>910 の名前間違いです。777ではありません
912 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:19:59 ] SqlConnectionStringBuilder strbld = new SqlConnectionStringBuilder(); strbld.AttachDBFilename = "";
913 名前:910 mailto:sage [2009/06/12(金) 13:24:23 ] >>912 やっぱりそれしかないんですね。 最終的な文に"AttachDbFilename=;"が入っちゃうんで消せないかなと 思ってたんですが、そうしておきます。ありがとう。
914 名前: ◆BOHwjyHW6o mailto:sage [2009/06/12(金) 13:41:29 ] >>907-909 返答ありがとうございます。 色々試行錯誤しているのですが、結局駄目でした。 localhostで作業を進め、サーバー立ては次の機会に行います。 ありがとうございました。
915 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 15:13:46 ] 試行錯誤ってルーターを別の機種にするしか無いんじゃ・・・
916 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 16:13:14 ] フレッツ光のCTUは変更できないよ。 専用ルーターだから。
917 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 19:44:54 ] >>905 そういうルータ越しの環境だと、自分とこからグローバルIPアドレスでルータを越えてまた自分とこにくる通信は無理だと思う。 クライアントを別の回線(携帯とか友人宅・会社・学校)からやってみたらどう?
918 名前:デフォルトの名無しさん [2009/06/12(金) 22:28:23 ] VS2008Pro、WinXPPro、C#で開発しています。 単体テストの機能を始めて使ってみたのですが、これには 「あるディレクトリ以下にある全てのデータファイルでテストを実施する」 という総当り的な、機能は付いているのでしょうか? csvで、テストケースを一個一個作成していくのも面倒なので、個人的にはデータファイルを作って、 それをあるディレクトリ以下に放り込めば、勝手にテストしてくれるような機能を期待していたのですが…… やはり、自前で作るしかないですかねぇ。とはいっても、自前で作ってるのは、すでにあって、 今回はそれを既製品に移行しようという話なので、自前で作る云々になると話がズレて来るんです。 どなたか回答をお願いします。
919 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:45:39 ] 自分の場合、ひかりone(旧テプコひかりからの移行なのでちょっと構成が違う)で 「光モデム」−「ルーター(ヤマハ)」−「サーバーやらクライアントやら」 って構成でグローバルIPアドレス指定で内部のクライアントからサーバー見えてるよ
920 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:50:22 ] >>914 はflet'sつまりntt製のモデム兼ルータってことじゃないかと
921 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 23:13:48 ] >>913 SqlConnectionStringBuilder strbld = new SqlConnectionStringBuilder(); strbld.AttachDBFilename = ""; ↓ SqlConnectionStringBuilder strbld = new SqlConnectionStringBuilder(); strbld.Remove("AttachDBFilename");
922 名前:デフォルトの名無しさん [2009/06/13(土) 21:45:53 ] フォルダが「共有フォルダ」かどうかを知ってアイコンに手のマークを 付けるにはどうしたらいいか知りたく。 「共有フォルダ」の一覧を得るには System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_Share"); これでいいという情報は得ましたものの、これでなくてDirevtoruInfoのAttributes のように高速で一発でわかる方法があれば尚ありがたく。 またアイコンに手のマークを付けるにはどのようにするものでしょう、 ご指導をいただきたく。
923 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 21:52:29 ] 別管理なんだから、なんたらInfo からじゃ取れないだろ。 まっとうにやるなら、NetShareEnum() だな。それほど遅くない。 オーバーレイは ImageList_SetOverlayImage() とかで。
924 名前:デフォルトの名無しさん [2009/06/13(土) 22:23:34 ] >>923 おお!!そういう方法があったのですか! ありがとうございます。勉強してみます!! 助かりました!