1 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 23:56:27 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part47 pc12.2ch.net/test/read.cgi/tech/1257067411/
2 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 23:56:43 ] -----関連スレ C#, C♯, C#相談室 Part55 pc12.2ch.net/test/read.cgi/tech/1255530225/ WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part4 pc12.2ch.net/test/read.cgi/tech/1245384489/ ----参考サイト www.google.co.jp/ msdn.microsoft.com/ja-jp/library/default.aspx homepage3.nifty.com/midori_no_bike/CS/ www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html dobon.net/vb/dotnet/ jeanne.wankuma.com/tips/ www.labasp.net/CsharpNote/
3 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 00:10:27 ] zip解凍を下記コードでしているのですが、 ClickOnesで発行しインストールしたPCの中で一台だけ例外で動作しません。 VisualStudioから「デバックを開始」だと正常に動きます。 動かないOSはXPです。(他のXP機やVista・7は動作します。) Shell32は参照設定してローカルコピーもしてます。 try { Shell32.ShellClass s32 = new Shell32.ShellClass(); Shell32.Folder zip = s32.NameSpace(filename); Shell32.Folder zipex = s32.NameSpace(dir); Shell32.FolderItems zipItem = zip.Items(); zipex.CopyHere(zipItem, 20); } catch (Exception e) { MessageBox.Show(e.ToString()); } <例外の内容> System.InvalidCastException: 型 'Shell32.ShellClass'のCOMオブジェクトを インターフェイス型'Shell32.IShellDispatch5'にキャスト出来ません。 IID '{866738b9-6cf2-・・・略}'が指定されたインターフェイスのCOMコンポーネント上でのQueryInterface 呼び出しのときに 次のエラーが発生したため、この操作に失敗しました: インターフェイスがサポートされていません(HRESULTからの例外:0x80004002 (E NOINTERFACE))。 場所 Shell32.ShellClass.NameSpace(Object vDir) エスパーな内容で申し訳ありませんが、宜しくお願いします。
4 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 00:11:30 ] 前スレ950です >>前991 確かに、1/3で呼ばれることも有りますね… 幸い除外値は1つなのですが、他に方法ありますか?
5 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 00:15:24 ] よっぽど極端な場合なら int[] 全ての許容値 = {…}; result = 全ての許容値[random.Next(0, 全ての許容値.Length)];
6 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 01:26:52 ] >>3 msdn.microsoft.com/en-us/library/bb774116 (VS.85).aspx IShellDispatch5 は、Vista 以降に追加されたインターフェース XPからは使えないわな。 bin以下に interopなんたらって生成されてない? されてるなら、そいつはdllコピーを見に行かずPCにインストールされてるdllを見にいく。 動作しているXPのマシンはたぶんXPでも動作するようなパッチがあたってんじゃね? MSUpdateでとりあえず全部最新にしてみたら?
7 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 08:29:54 ] >>4 結果をずらせばいい。 2〜8の乱数で除外値5の場合、 2〜7の乱数を発生させて、結果が5以上なら+1する。 一般化すると・・・ min〜max-1の範囲で乱数発生 結果がexclusion以上の場合は+1する。 これだと乱数発生は一回ですむし、ループもいらない。
8 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 08:51:50 ] Visual C# 2008 Express Edition で勉強中です 全国の市町村検索データベースを作成しようと思っています (漢字、よみがなであいまい検索できるようにしたいと思っています) 全国の市町村の数くらいなら、テンプレートの「データセット」でも大丈夫でしょうか? またはSQLiteを使った方がいいでしょうか? それとも他にいい方法がありますでしょうか? 初心者すぎて、入り口が広すぎで検索しても絞り込めないです お知恵をお貸し下さい
9 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 09:23:17 ] >>8 せめてDB使ったほうがいいんじゃないかな?
10 名前:デフォルトの名無しさん [2009/11/19(木) 10:39:56 ] Graphics#DrawString() を使って縦書き描画をすると、 ローマ数字が90度回転して描画されてしまうのですが、 どうしたら良いでしょうか? [ソース] Graphics g = pictureBox1.CreateGraphics(); String drawString = "あいうえおTUV"; Font fnt = new Font("@MS ゴシック", 16, FontStyle.Bold); StringFormat sf = new StringFormat(); sf.FormatFlags = StringFormatFlags.DirectionVertical; g.DrawString(drawString, fnt, Brushes.Black, 0.0F, 0.0F, sf); fnt.Dispose(); g.Dispose();
11 名前:3 mailto:sage [2009/11/19(木) 12:20:05 ] >>6 >bin以下に interopなんたらって生成されてない? されてましたorz DotNetZip Libraryを使ってみる事にします。 回答ありがとうございました!
12 名前:3 mailto:sage [2009/11/19(木) 14:00:41 ] ウィンドウに関連付けられたテキストを取得したいのですが、 取得するテキストサイズが分からない場合どうすればいいのでしょうか。 あらかじめ大きめにサイズを指定しておくしか無いですか。 現在は下記のようにしていますが、途中までしか取得できません。 byte[] buf = new byte[255]; StringBuilder sb = new StringBuilder(); sb.Length = 255; SendMessage(hWnd, WM_GETTEXT, 255, sb);
13 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 14:03:52 ] WM_GETTEXTは見つけられて何で気付かないのかねぇ
14 名前:3 mailto:sage [2009/11/19(木) 14:23:44 ] >>13 ありがとうございます! WM_GETTEXTLENGTHで取得出来そうです。
15 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 15:20:04 ] そもそも3の質問は解決してるんだから 同じ人って主張する必要ないんじゃない?w
16 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 15:41:02 ] >>15 恥ずかしながら名前の消し忘れです。 >>12 を書き込んでから赤面しましたが、 書いてしまったので質問中は統一しました><
17 名前:8 mailto:sage [2009/11/19(木) 18:18:22 ] >>9 いろいろ調べて、敷居を低くしました(涙 ・System.Data.SQLiteでデーベース構築 ・PupSQLiteで市町村データベースインポート 後は検索するコードをがんばればいけると思っています まぁすんなりはいかないと思いますが、その時はみなさんのお力を貸して下さい
18 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 19:07:08 ] >>17 イイヨイイヨー 頑張れ
19 名前:デフォルトの名無しさん [2009/11/19(木) 19:24:51 ] ComboBoxのDatasourceにDataTableをぶち込んだ後に、Datasourceから値を取得したらArrayになります。 ここからLINQで操作したいのですがいい方法ないでしょうか?
20 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 20:09:46 ] datasourceから取り出すときにキャスト
21 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 20:48:11 ] まえスレ>>998 できるよ。
22 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 22:02:17 ] タブコントロールを使ってるんですが デフォルトがだっさくてしょうがない 外見変える方法はないですか?
23 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 22:07:10 ] 自分で描画すればー 検索キーワードはオーナードローとカスタムドローでどうぞ
24 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 22:09:22 ] WPFならコード書かずに見た目変え放題
25 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 22:10:32 ] >>24 XAML弄るのはコード書かないとは言えない気がするぜ ハードル的な意味で
26 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 22:15:28 ] Expression Blendと格闘中 変え放題ねぇ、いつになったらできるようになるんだろう
27 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 22:16:28 ] プログラマならXAMLは手書きから入った方が理解しやすいと思うよ
28 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 22:34:53 ] ありがとうございました
29 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 22:35:16 ] C#のMSDNみても情報量膨大すぎて何からはじめればいいかわからん。 C#初めてなんだけどまずMSDNのどのページを見ればいいの?
30 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 22:44:30 ] C#の言語仕様についてなら・・・ MSDNのC#プログラミングガイド msdn.microsoft.com/ja-jp/library/67ef8sbd.aspx MSDNでもいいけど↓なんかもお勧め www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html
31 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 22:49:31 ] 将来的な需要を言うとC++とC#だとどっちが良いのかな?
32 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 22:50:43 ] C++じゃねえかなあ 個人的にはC#のが好きだが
33 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 22:51:56 ] だよね・・・C++を学ぶなら先にC#学んでおいた方がいいかな?
34 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:05:25 ] 設定を効率よく保存する方法ってどんなのがありますか? バイナリやテキスト(.iniなど)などが主流だとは思うんですけどね
35 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:08:13 ] 将来的な需要ならC#だろ
36 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:09:51 ] アプリケーション設定かXmlSeriarizer
37 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:10:46 ] >>34 どの観点から見て効率よくなのかが分からない プログラム的にはシリアライズしてファイルに書き出した方が楽だろうけど 人間がそれを読むのはテキストや設定ファイルに比べれば多少面倒臭い
38 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:13:48 ] バイナリとテキストってそれ以外になにがあるっちゅーねんってつっこみはおいといて、 C#でやるならxmlが主流ですよ。 >>31 Windows上でアプリケーション書くだけっていうならC#じゃないのかねぇ。 言語学ぶだけならC#先でもC++先でもどっちでもいいけど VC++は色々ややこしいからやめといた方がいいと個人的には思う
39 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:15:38 ] もうヘッダ眺めただけで拒絶反応でるくらいC++嫌いになった
40 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:21:30 ] 今のC++は変態的なテンプレートプログラミング言語って感じがするなぁ 大人しくC#から入った方が幸せじゃね?
41 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:24:11 ] 構造体が嫌いでxmlよりini使ってるんだけど 実際どうなのかな?
42 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:26:38 ] >>41 読み書きって自前で実装してるの?
43 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:27:10 ] 構造体とXMLに何の関係があるのかも分からんし どうなの?って何聞いてるんだか意味不明だよ
44 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:29:53 ] わかりません
45 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:33:23 ] iniはフラットな構造だけど xmlは階層構造してる(=構造体)ってことじゃないかね? どうなのかなって言われても時代遅れですとしか。
46 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:40:04 ] >>45 iniも一応階層構造だし、むしろシンプルな構造体はiniに近いでしょ
47 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:42:36 ] じゃあマークアップ言語が嫌いってことか WPFとか駄目なんかな
48 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:43:28 ] >>10 "@MS ゴシック" を "MS ゴシック" にする
49 名前:デフォルトの名無しさん [2009/11/19(木) 23:47:28 ] すいません質問させてください。 以下のようなプログラムを動かした場合に、Main()の中の @をAに書き換えても(どちらでも)問題なく動作します。 Func()内部で生成されるインスタンスArrayListのスコープを考えると @の書き方が正しいのでしょうか? そもそもAでは Func()から復帰するときに復帰値をコピーしようとして 復帰値をコピーする受け皿インスタンスが無い。→例外! みたいな動作かと思っていました。 Aにしたとき、al = b.Func();の行で何が起こっているのでしょうか? 解かりにくい説明かもしれませんが、よろしくお願いします。 class aaa { public static void Main() { @ArrayList al = new ArrayList(); //AArrayList al; bbb b = new bbb(); al = b.Func(); foreach (string s in al) Console.WriteLine(s); } } class bbb { public ArrayList Func() { ArrayList al = new ArrayList(); al.Add("111"); al.Add("222"); return al; } }
50 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:56:23 ] newされた参照型のオブジェクトはどこかになんとなく存在してて、 常にそのオブジェクトの電話番号でやり取りするの 変数に入ってるのもメソッドの引数も戻り値も全て実体ではなくて電話番号
51 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 23:59:32 ] 受け皿インスタンってなんだよw
52 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 00:06:14 ] 参照型について勉強しましょう どんな本やサイトにも説明があります ここでちょっと聞いて解るようなものではありません
53 名前:49 [2009/11/20(金) 00:22:42 ] どうも回答ありがとうございます。 >>50 なるほど、newしたインスタンスのスコープを勘違いしていました。 メソッド内で生成したものでも、メソッド復帰時に解放される わけではないのですね。 null指定したりGCで殺されるまでnewで生成されたインスタンスは生きつづける、 と理解できました。 >>51 いや〜、Cだと関数呼び出しで構造体受け渡すとコピーが発生するじゃないですか? そういうイメージなのかと勘違いしていました。 >>52 ポインタ参照だと理解しています。
54 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 00:24:34 ] 参照型なんて余裕 msdn.microsoft.com/ja-jp/library/cc406735.aspx 下のほうにある図みりゃおk
55 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 00:28:54 ] >>53 null指定したり〜〜行き続ける いくらなんでも使用中に勝手に殺されたら嫌過ぎるだろwwwwwwww つかいものになんねぇよwwwwwwwww
56 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 00:53:47 ] null代入しても消えません 使われなくなったらそのうちいつのまにか消えてます
57 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 03:42:22 ] int a; double b=2.32; a=(int)b; //a=bはダメ みたいに(int)をつけなきゃいけなくなってるのは int型やdouble型にimplicitだかが定義されていなくて explicitだけオーバーロードされてるから ってあってますか? でもMSDNのdouble構造体ってとこみたら 演算子のオーバーロードにexplicit書いてないけど 何か特殊な方法でやってるわけじゃないよね?
58 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 05:50:33 ] 組み込み型とか配列は特殊で、機能がILや言語レベルで実装されていたりする
59 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 09:22:30 ] システムの機能に任意のタイミングで SQL鯖2008のバックアップを出来るようにしてほしいと言われたんだけど どれでいこうか迷ってる @マネージメントスタジオを直で使わせる Aosqlのバッチを用意して使わせる B2のバッチをPGからキック CPGから直でバックアップSQL実行 DSQLDMOを使う 他にもありそうですが、皆さんどのような方法で実装していますか? あと皆トランザクションをある程度の量で切り捨てなければいけないような環境だとどうしてるんだろう・・・
60 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 09:39:53 ] Microsoft SQL Server 総合スレ 7 pc11.2ch.net/test/read.cgi/db/1231665917/l50
61 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 10:06:02 ] >>60 サンクス すれ違いごめ そっちで聞いてきます。
62 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 11:43:31 ] リストビューでカラムを適用したアイテムのtextをカラムの長さに合わせて自動で折り返して 欲しいのですが、これはラベルワープtrueではだめなのでしょうか?。 自分で長さに合わせて改行しないとだめですか?。
63 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 11:56:17 ] 改行を入れても改行されませんよ フフンw
64 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 12:10:09 ] 高さの計算とかめんどくさいだろうしオーナードロ-とかでやるのも厳しいからやろうとしたこともないが DataGridViewで代用してるなぁ…
65 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 12:29:35 ] ラベルワープって何だよ
66 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 12:34:12 ] ワードラップだろ
67 名前:デフォルトの名無しさん [2009/11/20(金) 12:54:43 ] (Keys.G | Keys.Alt)をXmlSerializerでシリアライズすると <Keys>LButton RButton Cancel MButton XButton1 XButton2 A B C D E F G Alt</Keys> こうなるんですけど、 なんで <Keys>G Alt</Keys> こうならないのか意味がわかりません 誰か助けてください
68 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 13:00:31 ] FlagsAttributeがついてるせいで内部で少しややこしい処理をしている デシリアライズすれば元に戻るから気にするな
69 名前:デフォルトの名無しさん [2009/11/20(金) 13:06:59 ] ありがとうございます!! ファイルの中身がめちゃくちゃになってたからびっくりして質問しちゃいました 助かりました!!
70 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 14:07:35 ] >>57 それはintとdoubleに互換性が無いから。 それぞれ用途が違い内部表現も違うので、相互に変換する場合には明示的に変換処理が必要。 C#の場合はキャストまたはas構文を使う。 intとdoubleに関しては組み込み型なのでキャストで十分。 IEEE754 で調べてごらん。
71 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 14:14:36 ] すいませんListViewで垂直スクロールバーが出ているかどうか知りたいんですが 何か方法はありませんか?
72 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 14:24:09 ] ListViewを継承したクラスを作って protectedなメソッド調べてごらん。
73 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 14:25:43 ] >>21 ありがとです。 だったらスマートフォン買うときはWindowsMobile機にしよっと。
74 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 15:48:46 ] C#の配列って C言語の配列と違って メモリ上に物理的に連続してないの? C言語なら 405FAC40にa[0]があったら 405FAC44にa[1]があって ・・・・AC48にa[2]、というふうに 連続してたけどC#は違う?
75 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 15:51:27 ] 違う。 stackalloc使いなさい。
76 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 15:53:44 ] もしくはfixed
77 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 16:05:49 ] へぇ。C#の配列ってめちゃくちゃに並んでるんだ?C言語と比べて効率悪そうだね。
78 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 16:08:40 ] 連続してる。だからunsafeでポインタが使える。 ただし配列全体は固定されていない。移動することがある。
79 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 16:11:52 ] それはガベージコレクタが勝手にやってるんでしょ? C#の参照型はポインタ型と違って直接アドレスを表示できないけど 例えば 405FAC40にa[0]があったら 405FAC44にa[1]があって ・・・・AC48にa[2]、というふうにならんでたのがガベージコレクタが勝手にコンパクションを実行して 638AC044にa[0] 638AC048にa[1] ・・・・C04Bにa[2] みたいになっちゃうってことでいいの?
80 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 16:17:29 ] それを知って一体何する気なんだろう・・・・ あ、いや 気になることってあるもんね
81 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 16:20:13 ] 効率の観点から言ったら内部では連続してるんじゃねえかなぁ それを前提にしてはいけないんだろうが
82 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 16:33:52 ] おれも連続しているとは思う どうせアドレスなんか使わないけど
83 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 16:43:55 ] データがそこに直接あるのではなくてJPがあるんじゃないの
84 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 16:44:14 ] C#(CLR)の配列は本質的にはgcnewなので、連続はしている。 79のいうように、知らない間にアドレスが変わってる、なんてことはありうる。 そういうことをやってもらうためのガベージコレクションでもあるわけで。
85 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 16:50:28 ] 参照は移動しても大丈夫。 ポインタはそうはいかない。 配列全体は連続してる。
86 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 19:37:27 ] そんな事より>>1よ、ちょいと聞いてくれよ。スレとあんま関係ないけどさ。 昨日、近所のメモリ内行ったんです。メモリ内。 そしたらなんかインスタンスがめちゃくちゃいっぱいで座れないんです。 で、よく見たらなんか垂れ幕下がってて、ジェネレート2、とか書いてあるんです。 もうね、アホかと。馬鹿かと。 お前らな、ジェネレート2如きで普段来てないメモリに来てんじゃねーよ、ボケが。 ジェネレート2だよ、ジェネレート2。 なんかダイナミック変数とかもいるし。ダイナミック配列でメモリか。おめでてーな。 よーしパパ逆参照しちゃうぞー、とか言ってるの。もう見てらんない。 お前らな、ガベージコレクションやるからその席空けろと。 メモリ内ってのはな、もっと殺伐としてるべきなんだよ。 隣のアドレスに座った奴といつ喧嘩が始まってもおかしくない、 刺すか刺されるか、そんな雰囲気がいいんじゃねーか。女子供は、すっこんでろ。
87 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 19:42:53 ] garbage collector in real-life
88 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 22:13:01 ] ホームページビルダーみたいなエディタをC#で 作ってみたいなー
89 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 22:14:59 ] ホームページビルダー懐かしいな 今はWikiみたいに簡単に自分のページを作れるけど ページビルダーみたいなのっていまだに売れてるんだろうか
90 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 22:15:12 ] ここはお前の日記帳じゃねえんだ
91 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 22:16:06 ] WPFのRichTextBoxで作ったFlowDocumentをXHTMLに変換すれば楽勝
92 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 22:41:40 ] >>87 パソコンがなくなった。どうしてくれる
93 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 22:42:48 ] 友達いない奴はみんなGCに回収されるんですね
94 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 22:47:40 ] 明示的にDispose()実行するまではまだなんとかなる。早まるな。
95 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 22:50:34 ] つまりガベージコレクションは俺たちの社会の縮図だったわけか・・・
96 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:06:14 ] 気付かないのか? お前達はusingステートメントで初期化されていたことに…
97 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:28:32 ] さてと、米にバルス!
98 名前:97 mailto:sage [2009/11/20(金) 23:29:13 ] ごばく すまそ
99 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:29:28 ] ラピュタは2ちゃんの鯖を落とす程度の能力か
100 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 02:36:28 ] ガベージコレクションってメモリの管理だけをする道具 っていう認識でいいの?
101 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 02:44:45 ] >>100 それじゃあメモリアロケーターだ。 ガベージコレクションはインスタンスの寿命を管理するシステムのこと。
102 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 02:51:06 ] じゃあ構造体はインスタンスじゃないから ガベージコレクションに管理されないの?
103 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 03:16:18 ] インスマウス
104 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 03:22:29 ] 邪神崇拝者の来る場所じゃないぞ
105 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 06:07:27 ] WinXP Pro SP3、VS2008, .Net 3.5 C#で開発を行っております。 以下のコードを実行したところ、System.Runtime.Remoting.RemotingExceptionが出てきたり、出てこなかったりするケースがあって困っております。 Exceptionのメッセージは以下の通りです。 オブジェクト '○○' が切断されたか、サーバーに存在しません。 どなたかもしよろしければ、原因・対策などご教示いただければ幸いです。 よろしくお願いします。 //コード private HogeHogeHoge x = null; private AppDomain hostedAppDomain = null; //初期化 private void Init() { AppDomainSetup setup = new AppDomainSetup(); setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory.ToString(); Evidence evidence = new Evidence(); evidence.AddHost(new Zone(SecurityZone.MyComputer)); hostedAppDomain = AppDomain.CreateDomain("XXX", evidence, setup); x = hostedAppDomain.CreateInstanceAndUnwrap("HogeHoge", "HogeHogeHoge") as HogeHogeHoge; } //終了 private void Exit() { if (x != null) { // xの終了処理 ここでSystem.Runtime.Remoting.RemotingException x.Disose(); } AppDomain.Unload(hostedAppDomain); }
106 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 08:46:14 ] Exitが2回呼ばれているんじゃ?
107 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 09:06:38 ] >>102 構造体はスタックに確保されるからGCで管理はされない。
108 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 12:34:53 ] え?
109 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 13:25:46 ] 「え?」とか「は?」とかバカじゃないの、もうちょっと何か書こうよ。 クラスのメンバーに構造体がある場合や、Boxingされたケースとか、 例外はあるが基本的に言ってることは正しいと思うけど。
110 名前:デフォルトの名無しさん [2009/11/21(土) 13:47:38 ] 今回初めて印刷のロジックを作ることになりました。 「PageSettings.HardMarginX」と「MarginBounds.X」 のちがいは何でしょうか? 実行して値を表示させたとき、 「MarginBounds.X」 = 100、 「PageSettings.HardMarginX」= 13 となりました。 どちらも印刷可能範囲の左上端を示していると思いきや全く異なる値でした。 どういうちがいがあるのか、 ご存知の方、教えてください…!
111 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 13:50:16 ] マージンは印刷しないサイズ、ハードマージンは印刷できないサイズ ハードマージンは見なくて大丈夫だと思う
112 名前:デフォルトの名無しさん [2009/11/21(土) 14:14:08 ] >>111 さんありがとうございます。 今作成中のアプリケーションは、 全国の何ヵ所かの家庭や店舗で利用してもらおうとしており、 それぞれの家庭や店舗のプリンタの機種が様々なのですが、 どんな機種でも、おおよそ決まった位置に明細を印刷しようと思っています。 この場合もマージンで問題ないでしょうか。 たびたびの質問で恐縮ですが、よろしくお願いします。
113 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 14:53:53 ] >>112 印刷は所詮はアナログの世界なので、どうしても狂うことが出てくる。 オフセット(マージン)、縮尺は、ある程度印刷時に変えられるように作っておいたほうがいいよ。
114 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:22:26 ] >>113 だから、前にもこのスレあたりで書いたと思ったが、そんな訳がないだろう、ってw プリンタの実装がそんないい加減なものならどうして葉書の郵便番号なんか ちゃんと枠内に印刷できるんだ。 テキトーなこと言う奴が多すぎるな。
115 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:30:58 ] つーか、フチなし印刷できるプリンタ、できないプリンタでハードマージンは違うだろよ。 調整機能は必須。
116 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:35:52 ] >>115 だから、そういうテキトーなことを言わないこと。 葉書印刷ソフトだけでも世の中にいろいろあるが、そんな「調整機能」が 付いたソフトは見たことがない。 そんな泥臭い作業を人間様に任せるようなダメ設計になってるのなら windowsもページプリンタもこんなに普及してねえよ。
117 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:37:16 ] これがゆとりってやつか・・・。
118 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:39:18 ] www.yomiuri.co.jp/net/qanda/qanda081215.htm > 「筆まめ」の「印刷位置微調整」機能 > > 筆まめ19など、はがき作成ソフトには印刷位置をミリ単位で微調整する機能が備わっている。 > 筆まめの場合は、ファイルメニューの「印刷位置微調整」から利用する > 郵便番号の位置だけを微調整する機能もある。
119 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:42:31 ] >>116 ____ / \ /\ キリッ . / (ー) (ー)\ / ⌒(__人__)⌒ \ <そんな「調整機能」が | |r┬-| | 付いたソフトは見たことがない。 \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <.だっておwww /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / | | l||l 从人 l||l l||l 从人 l||l バ ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、 ン ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) バ ン
120 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:44:45 ] >>118 それは古い精度の悪いプリンタ(現実にはあまりないが)を使っている人を 想定した「念のための機能」であって、>>115 が主張するように必須の機能なんかじゃない。 通常はそんな馬鹿げたことをしなくても、少なくともmmオーダーの精度で 正確に位置決めされた印刷が行えるようになっている。 っていうか、印刷のコード書いたことがない馬鹿は黙っていた方がいいよ。
121 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:47:42 ] で? ユーザーがどんなプリンタを使ってるのか特定できない以上、>>118 みたいな 調整機能は必須だろ?
122 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:47:56 ] というか、.NETだとそのためのプロパティがHardMarginX,HardMarginYなんだよ。 これで用紙の左上とプリンタの印刷可能領域(印刷時のハードウエア座標の原点) のズレが取得できるようになっている。
123 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:47:58 ] >そんな「調整機能」が付いたソフトは見たことがない。
124 名前:デフォルトの名無しさん [2009/11/21(土) 15:48:17 ] プリンターの印刷可能領域に左右されずに、 用紙の左上から決まった場所に印刷するには、 例えば(100-ハードマージンX,200-ハードマージンY) とすべきですか?それとも 例えば(100-マージンX,200-マージンY) とすべきですか? マージンはプログラム上で何も設定していません。 よろしくお願いいたします。
125 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:49:55 ] >>121 だから、現実問題としてはそんなプリンタは市場にほとんど存在してない。 紙送りの精度が悪いので有名だったHPの10年前の製品だって、そんな機能が 必要になるほどズレたりはしない。
126 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:53:50 ] まー、そう思うなら調整機能付けなきゃいいだけだわな。 実際、有名どころの年賀状印刷ソフトにはついてるし、俺もあとで修正するのは面倒だから、 そういう機能を付けるけど。
127 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:56:59 ] >>124 用紙の、の場合は、マージンは使わない。 ハードマージンの分を含むか含まないかは、試してみてくれ
128 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:57:55 ] HTMLエディタを作る場合の内部的なデータの持ち方は どんなのがいいでしょう?
129 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:58:37 ] 機能によって違うんじゃね?
130 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 16:01:19 ] データ実体はHTML&CSSだろうな
131 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 16:33:34 ] プリンタによって1ページに収まったり収まらなかったりするんだから、 その手の調整機能は普通いるんじゃないの?
132 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 16:36:11 ] ____ / \ /\ キリッ . / (ー) (ー)\ / ⌒(__人__)⌒ \ <そんな「調整機能」が | |r┬-| | 付いたソフトは見たことがない。 \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
133 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 16:46:33 ] どうでもいいが、幼稚な奴が多いのな。 俺は馬鹿な奴は嫌いじゃないが、幼稚な奴とコミュニケーションができない 真性ヲタはどうしようもないクズだと思ってる。
134 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 16:51:07 ] 揚げ足取りで勝った気になる困ったちゃんは少なからずいるものだ
135 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 16:51:24 ] >>133 お前みたいな幼稚なレスしかしない奴もクズだけどな
136 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 16:52:58 ] 僕.NEET 喧嘩はやめて
137 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 16:54:41 ] みんなゴメン。
138 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:04:54 ] >>133 俺も幼稚な奴は嫌いだけど論理的じゃない奴も嫌い 前2行をどう呼んだら3行目に繋がるんだ?
139 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:27:04 ] 幼稚な奴は小学校からやり直した方がいいな。 年賀状印刷ソフトに調整機能なんてついてない! とか言い張って、 ソースが提示されてるのに、現実問題としてそんなプリンタはほとんどない! か。 ほんと、テキトーなことを言う奴が多いなw
140 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:30:18 ] プリンタはアナログの世界で動く機械であって、 必ずしもアプリ側で指定した内容でずれなく印刷できる保証がどこにもない。 で、プリンタドライバのユーリティーでもある程度調整は効くだろうけど、 それで無理なような突っ込んだ内容はアプリ側でもある程度対応できるようにしておくべきだろう、という話。 必要だと思わないならやらなきゃいいだけさ。 別にスレが荒れるような内容じゃない。
141 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:36:06 ] >>114 と >>116 が釣り師ということで。この話題終了。
142 名前:デフォルトの名無しさん [2009/11/21(土) 17:44:15 ] マージンは余白で、 ハードマージンは常用プリンターの印刷可能開始位置だよね。 ところで、 マージンの値をページ設定ダイアログから指定していないときは、 C♯上のマージンの初期値はいくらになるの?
143 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:46:21 ] >>140-141 無知無能なくせにしつこいなお前さん。 本当にプログラマか? っていうか、君(ら)は今までプリンタ使ったことないのかね。 1万前後で買えるキャノンやエプソンの最下位グレードのインクジェットだって 位置決めの問題なんかないんだよ。 そんなことは例えばワードで葉書印刷をしたってわかるし、 自分でコードを書いて印刷されたものを物理的に測定したって分かる。 馬鹿な癖に頭の中だけで考えているからそういうとんでもない勘違いをすることになる。
144 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:57:38 ] 俺、キヤノンiP3100の付属CD印刷ソフト使ってるけど、微調整しなきゃズレるぞ?
145 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:04:32 ] >>144 俺もそれ使ってるけど微調整したことない なんでクエスチョンマークをつけるんだ?
146 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:06:08 ] 同じプリンタで同じように印刷すれば、そりゃ、位置はズレないだろうよ。 ズレるようなら、それは不良品。 そんな話をしてるんじゃなくて、違うプリンタで位置がズレるか、って話。 印字位置の調整機能を持ったソフトなんて、それほど山のようにあるだろ? もう釣りはいいから、さっさと死ねよ。
147 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:09:13 ] >>145 微調整したことない? 妙だな、CDのメーカーによって変更しなきゃいけないのに ああ、気にしてないってだけか
148 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:11:53 ] >>146 だから、プリンタの違いによる物理座標の違いを補正できないような糞設計には、 プリンタ側もウィンドウズ側もなってはいないの。 何度も言うように、.NETでも2.0以降はHardMarginX、HardMarginYプロパティが ちゃんと容易されていて、必要ならこういう差異をちゃんと補正できるようになっているんだよ。 ウダウダ言ってないで実際コード書いてみれば分かるから。 プリンタぐらい持ってるでしょ。
149 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:13:10 ] 同人でズレてるのは見かけるな。
150 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:16:41 ] フォントなんて3だか9だかの倍数じゃないと、メーカーによって大きさがバラバラだったよね。
151 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:17:45 ] なら、年賀状印刷ソフト会社にでも教えてやれよ。「調整機能は不要です!」って。
152 名前:デフォルトの名無しさん [2009/11/21(土) 18:27:13 ] >>142 ですが、ご存知の方、教えてください… (>_<)。
153 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:29:39 ] 「同じように印刷すれば、どのプリンタでも印字位置はズレない」 こんな命題が成り立つわけないのは自明だろ。全メーカーの全プリンタで検証して はじめて成り立つわけだし。 俺はそんな検証したくないし、そもそも、位置ズレに悩まされたこともあるから、 調整機能を付けるよ。
154 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:29:50 ] >>152 やってみればいいじゃん。
155 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:42:50 ] 万人が使えるUIなら当然微調整機能くらいは付けるわな
156 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:43:42 ] このどうでもいい議論いつまで続くんだろう
157 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:44:37 ] C#でグローバルIPを取得するにはどうすればいいですか?
158 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:46:26 ] >>157 ルータに問い合わせるかリモホを表示するサイトにアクセスして その結果を利用するか
159 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:46:52 ] >>157 なんのグローバルIPをどんなアプリから取得したいんだよ? LAN 内からルーターのグローバルIPが取りたい、ってことなら、UPnP か、 いったん外部にアクセスしてそっちからもらうか、だな。
160 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:48:32 ] >>158 ,159 ルータに問い合わせるって簡単に出来ますか? リモホを返すページ作ってアクセスさせてみます
161 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:52:13 ] perl だけど、サンプルあったぞ。 hydro.energy.kyoto-u.ac.jp/~sekiyama/upnp/upnp-get-extaddr
162 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:54:43 ] あ、SSI使えたので流用しようかと思いましたが、 ありがとうございます。使わさせて頂きます。
163 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 19:53:58 ] デリゲートはメソッドをカプセル化する型
164 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 01:10:28 ] SMTPClientを使ってメールを送るプログラムを作っていたのですが、 WinXPの自分のPCだと問題無く動作するのですが、 Vistaの友人のPCだと、 メールを送信できませんでした。 場所 System.Net.Mail.SmtpClient.Send(MailMessage message) 場所 ConnectForm.Sendmail_DoWork(Object sender, DoWorkEventArgs e)] となり、詰まってます。smtpはVistaで使えないのですか?
165 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 01:17:08 ] >>164 メール送受信関係はWindowsのアキレス腱。 だって、元々SMTPはメールサーバー同士でメールをやり取りするためのプロトコルだぞ。 メールサーバーをローカルに立てているWindows機なんてそこらにはないだろ? ってことで、メール送信に関しては失敗したときの動作を必ず決めておくべき。 質問の答えだが、別にVistaだから使えないってことはない。 クライアントマシンの環境次第。例えばオレのマシンじゃ動かない。
166 名前:164 mailto:sage [2009/11/22(日) 01:34:04 ] 言葉足らずでした。 自分の場合、どの環境からも送信出来るようにと思い、 YahooやGoogleのフリーメールをsmtp経由で送信しているのですが、 それでもそんなものなんでしょうかね?
167 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 01:47:03 ] >>166 だから、クライアントマシンの環境次第だと言ってるじゃないか。察してくれよ。 ちなみに今時SMTPの標準のポートが空いてるプロバイダなんてまずねーよ。
168 名前:デフォルトの名無しさん [2009/11/22(日) 07:02:38 ] FillRectangleメソッドではRectangleFを指定できるのに、 DrawRectangleメソッドではなぜRectangleFが指定できず、Rectangleしか指定できないのでしょうか? floatのX,Y,Width,Heightを直接記述するとデバッグでエラーにならないのだから--- RectangleFが指定できたらいいのですが・・・・・できますでしょうか。 ご存知の方よろしくお願いいたします。
169 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 09:05:49 ] 言われてMSDN見てみた。ホントに一貫性無いな・・・なんでだろ。 Graphics..::.DrawRectangle メソッド (Pen, Single, Single, Single, Single) あるから出来ないわけないよね。 Graphics..::.DrawRectangles メソッド (Pen, array<RectangleF>[]()[]) に食わせるか、ラップ関数作って食わせるか。
170 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 09:16:37 ] >>164 とりあえずエラーの場所だけ書かれてもな
171 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 11:07:51 ] C#はCと違って文字列はアドレスはないの? char *P="もじれつれつ"; みたいなことできない?
172 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 11:09:56 ] うん。
173 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 11:13:21 ] そうなんだ。不便だのぉ
174 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 11:17:12 ] ポインタ管理しなくていいから楽でいいじゃん
175 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 11:21:37 ] >>171 ポインタは無いけど、イテレータ(Enumerator)ならあるよ。 ただし、string自体がimmutableなので、読み取り専用になるけど
176 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 11:21:39 ] GCって何ですか
177 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 11:22:43 ] ググレ
178 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 11:29:40 ] エンスーな写真月刊誌
179 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 12:10:22 ] C#は、他プロセスにアタッチして、 そのプロセスが持つフォームのタイトルテキストを変更するような プログラムを作成出来ますか?
180 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 12:13:32 ] うん 大抵はDllImport祭りになるけど
181 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 12:14:59 ] XPでVistaのガジェットのようにデスクトップに表示するアプリを作りたいのですが どのようにすればいいのでしょうか
182 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 12:30:24 ] 作ればいいと思うよ
183 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 13:03:14 ] 文字列を区切って変数に代入するメソッドはどうすればいい? class Test{ public int x; public int y; public void func(string s){ } } func("132/145")みたいに/で区切ると x=132、y=145が入る ようなことがやりたいんだけど。
184 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 13:05:34 ] string や int の性的メソッドを調べてみるべし
185 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 13:14:19 ] >>183 Splitかければいい。というか、こんなのは基本だろ? 分割できなかったときは、たぶんこの場合はnullを返すよりは例外を出したほうがいいだろうな。
186 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 13:16:33 ] >>183 ttp://www.atmarkit.co.jp/fdotnet/dotnettips/317vbsplit/vbsplit.html
187 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 13:26:37 ] unsafeでポインタ使えるから色々試してみるのも面白いよ splitより簡単にできることはないけど
188 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 13:33:31 ] 実はただの分割じゃなく数式の解析が目的でしたとかなー
189 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 13:39:55 ] >>71 で、「ListViewで垂直スクロールバーが出ているかどうか知りたいんですが」ってカキコしたんだが スルーされてしまったけど、やはり無理?
190 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 13:45:34 ] それが人に物を聞く態度か?
191 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 13:54:07 ] 教えてくれたらロリ画像だします・・・
192 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 14:02:55 ] そうしたら通報します・・・
193 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 14:05:16 ] >>189 ClientRectangleの外にItem(かSubItem)が存在するかどうかで判定するとか。 …泥臭いやり方だなw
194 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 14:28:01 ] >>193 どうもです。ListViewをOwnerDrawしている状態で、ヘッダーの長さを水平スクロールバーの出ない長さに調整したいのですが 縦スクロールバーを考慮いてその分ヘッダの長さを短くすると、バーが出ない時に白く残っちゃうんですよね これを何とか消したいんですが他のアプローチ考えてみます
195 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 14:31:55 ] >>189 ListViewのカスタムコントロール作ったことあるが、そのときはGetScrollBarInfoでやった 表示/非表示を知りたかったわけじゃなく、縦横それぞれのスクロールバーの 自動表示をコントロールしたくて実装した副産物 初心者スレでAPI薦めるってどうよって思ったが、正直ほかの方法は知らない
196 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 15:01:46 ] >>195 ありがとうございます。一応サンプル有ったからこれからテストしてみようと思います www.pinvoke.net/default.aspx/user32.getscrollbarinfo
197 名前:デフォルトの名無しさん [2009/11/22(日) 16:32:01 ] PrintDocumentにて、商品明細書を作成しています。、A4縦の単表に100ほどの項目名称や金額をDrawStringメソッドやDrawRectangleメソッドを併用して記述しているのですが、プレビューが出るのに15秒かかってしまいます (>_<;)。 項目数が多い場合、これくらい時間がかかるものなのでしょうか…。 皆様はどのような工夫をして、レスポンスを上げていますか? よろしくお願いします。
198 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 16:35:50 ] どのようにしているからレスポンスが遅いのかが分かりません。 各処理の区切りごとに時間を計測してどのボトルネックになている部分をまず探してみてはどうでしょう? 例えばDBからデータの取得が遅いとか色々あると思います。
199 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 16:37:15 ] 15秒は遅いな 単票なら座標計算に手間取る事は無いだろうから、データ取得あたりで時間掛かってないか見てみた方がいい
200 名前:デフォルトの名無しさん [2009/11/22(日) 17:05:30 ] >>199 ありがとうございます。 データは、今は直接、DrawStringメソッド内に文字列を指定しています。 DrawStringメソッドにて文字列の右揃えや左揃えを細かく指定し、さらに背景にFillRectangleでグレーの網掛けも随所に入れています。 DrawStringメソッドと DrawRectangleメソッド、 FillRectangleメソッドを 1つの関数に定義して、100項目ほどの文字列の描画について、全てその関数で行う形にしています。 いい方法と思いましたが、項目定義が増えるほど一気に重たくなりました (T_T;)。 DrawStringメソッドの中でPointのみを指定し、Rectangleを使わないようにした方が軽いかもしるません。 これから随所を削りながら試験してみます。 もし、何かコツなどのご意見がありましたらぜひ教えてくださいっ…!!
201 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 17:11:35 ] >>200 どちらかっつーと、データをレンダリングするのより データを取ってくるのに時間が掛かってるんじゃないかと思うが。 コードの断片ごとに掛かってる時間を計測して、標準出力に出して眺めてごらんよ。
202 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 17:11:39 ] たかだか100項目程度のそれで15秒もかかるとは思えない 生で書き込んでるんだったら 適当に文字を置換して晒してみれば? 座標計算の所が気になると言えば気になるけど
203 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 17:20:59 ] PDFにしないからだよ
204 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 17:23:46 ] >>203 え?
205 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 17:35:35 ] >>200 半分の50項目だったら何秒? 半分コメントアウトして試してみて
206 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:04:12 ] ListViewの話ですが、スクロールバーの検出に成功してカラムの調整まで成功しました が、水平スクロールバーの再描画というか消えるところまでは出来ませんでした もう少し頑張ってみます
207 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:41:52 ] 配列と列挙型ってどう違う? いやまぁ違うところは違うけどさ。 列挙型でできることって配列使っても簡単に同じことできね? 列挙型の存在価値がわからんがなんのためにあるの?
208 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:43:33 ] 全く違うだろう というかどういうのをして同じことって言うの?
209 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:46:00 ] 配列だと代入できんじゃん わざわざラップクラス作る? そのほうが無駄な手間だ
210 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:50:29 ] >>207 , 209 ????? 何を言ってるんだ???
211 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:51:44 ] >>209 は>>207 に向けてるんだと思う。
212 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:51:55 ] もう一度教科書読むことを勧める
213 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:53:36 ] >>211 それはそれでイミフだ >>207 のイミフな発言をどう解釈して>>209 の回答になったのかも非常に気になる
214 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:53:38 ] >>206 194を読まずにレスしたからGetScrollBarInfoっていったけど 本来の目的は横スクロールバーの表示抑制なんじゃないの? そうであるならイベントハンドラでカラムサイズを調整すれば済むと思うけどダメだった?
215 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:55:58 ] >>207 列挙型で出来ることを配列で簡単に実現してるケースを知りたいわ enum Color { Red, Blue, Green }; = String[] color = {"Red", "Blue", "Green"}; とでも思ってるんだろうか・・・
216 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:56:05 ] string[] 時間={"あさ","ひる","よる"} enum 時間 {あさ,ひる,よる} Now=時間[1]; if(ひるなら) ほにゃらら if(Now==時間.ひる) ほにゃらら これは何がどうちがうの?
217 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:56:40 ] >>214 カラムサイズ調整までは何の問題もないけど、リストにロード直後だと再描画してくれませんでした カラム調整は確認したから大丈夫ですよ
218 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:00:04 ] >>216 なんで自分で調べないの?
219 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:00:11 ] >>216 列挙体を関数の引数にした場合、列挙体以外の値以外入ってくる余地無くなるよね これだけでも全然違うと理解できないかな?
220 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:01:56 ] >>216 ぜんぜん違うだろ。 時間[1]っての見てだれが"ひる"だってわかんだよ。 それに Now に "まよなか" ってまちがって入れちゃった場合だれが気付いてくれるんだ? もし時間の種類に "ひづけへんこうせんをこえるまではよるのつもりでいます" なんて長いパターン入れたら 比較に時間かかるわ無駄なメモリ使うわでもったいないよな。
221 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:05:30 ] >>220 突っ込み所はそこなのか? >>216 は上ではNowに時間[1]ってのを代入してて、下じゃ比較してるだけなんだぞ
222 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:07:55 ] enum は定数のラベル 実態は 1 とか 2 とか 3 なわけよ。 プログラムを組むときって状態を管理することが多いんだけど(あさだったらXX、ひるだったらYYとか) 状態の数が3つとか4つなら文字列なんか使うより数字使った方がメモリが無駄にならないし 処理も速いよね。 でも 1 とか 2 とかをプログラム中に直接書くと、書いてる人が混乱しちゃうし間違いやすい。 一人で数百行ぐらいのコード書くならまだしも2人3人ぐらいでやってるとあっというまに破綻する。 で、その 1 とか 2 のマジックナンバーに名前を付けることにしたのが enum なわけだ。 C時代は enum の他に #define なんてのもあったけど。 enum のいいところは変数にあらかじめきめられた数字「しか」代入出来なくしてくれる作用があって、 1 とか 2 で管理してる場合に間違って 9 とかが入っちゃって誤動作するのをコンパイルする段階で 見付けてくれるのよ。
223 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:11:46 ] お前ら釣りに優しいなw enum使ってくる時点で初めてではないだろ
224 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:15:19 ] 経験者があの質問するのは釣りでも無理だろ・・・
225 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:17:23 ] 時間.ひる == "ひる" だと思ってるのか?もしかすると。
226 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:20:27 ] >>205 レスの流れからして、読み込み済みデータで描画して何秒なら分かるが。
227 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:21:06 ] >>217 いや、なんというかアプローチの仕方が違うんじゃないかなって思ってさ 最初は縦スクロールの表示判定だったけど、その真意は横いっぱいに 表示したカラムのせいでアイテム数が増えて縦スクロールが出ると 結果的に横スクロールバーも出るっていう話ではないの? そうであるなら、例えば縦スクロールバーのみ出しっぱなしにすれば 処理はシンプルになると思うし、縦スクロールバー隠しておくつもりなら 横スクロールバーは出ないようにしてしまったほうが、カラム調節で チラツキの押さえ込みと格闘するより楽なんじゃないかなぁと・・・
228 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:26:39 ] enumすら説明出来ないクズスレ
229 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:29:37 ] >>226 半分の印刷で、時間が半分になるのか1/4になるのか、まさかの1/9になるのか と言うことの確認。つまり二重ループ三重ループの疑い。
230 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:35:20 ] 1/9ってなんだオレ…三重なら1/8だorz
231 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:56:13 ] なんでいちいちちょっとしたことするだけなのに Mainを意味のないクラスで囲まなければならないんだ!不便!
232 名前:デフォルトの名無しさん [2009/11/22(日) 19:58:46 ] >>205 50項目のときは5秒でした。 サブルーチンの中で ※背景の塗りつぶしが必要ならFillRectangleを実行する。 ※文字列を囲むならばDrawRectangleを実行する。 ※文字列については常にRectangle構造体の中で水平垂直位置をパラメーターから与える …これを150項目分行うようにしています。 項目が増えれば増えるほど、倍以上に遅くなっています。 FontなどのオブジェクトのDisposeが足りないのかなと思って直しましたが、結果はやはり15秒弱です。
233 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:59:52 ] Font? 一項目ごとにフォント読み込んだりしてない?
234 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 20:06:57 ] >>231 そこまで考えてるのになんで ちょっとしたことするだけなのに Main なんて意味のないメソッドで囲まなければならないんだ!不便! まで発想が飛ばないのかねぇ。
235 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 20:08:29 ] どう見ても>>231 はわかってる奴の発想だな >>209 にはとても及ばない
236 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 20:16:45 ] >>181
237 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 20:24:43 ] >>229 え、多重ループの疑いがあったとして項目数減らしても計算量は線形でしか減らないキガス・・・ ああ、そもそもルーチンを何回も何回も呼び出している疑いか。あるね、そんな事。
238 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 20:25:44 ] >>227 用途は趣味で作っているメディアプレーヤーだから、1行の時もあれば100行近い場合もあるんですよ で、曲名のカラムを調整して縦スクロールバーが無い時はいっぱいまでカラムを延ばして バーが出たらバーの分だけ曲名を縮める。 そうしないと縦スクロールバーが無いとOwnerDrawしたカラムヘッダーの最後が真っ白けになっちまうし、 逆に縦スクロールバーが出ている時に伸ばしたら横スクロールバーが出るのがちょっとウザイ 現状、調整後に横スクロールバーが残っても、縦または横にスクロールした瞬間に消えるんですけどね
239 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 20:29:26 ] 一回5secとして三回回って15sec。項目半分に減らして2.5secとして三回回って7.5sec。 減らした比率でしか計算量は減らないから、237は勘違い。
240 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 20:30:52 ] >>235 しかしながらC++とかに慣れてるとは・・・とてもじゃないが思いにくい 不便とかを超えてもう当たり前になっている所だからぶっちゃけどうでもいい そして、そんな一か所がなんだってんだ もっといろいろあるだろう orz
241 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 20:34:40 ] >>232 1/3だと微妙だけど二重ループの可能性は高いな ありそうなのは、 項目1つ目の場合は1つ目を描画し、2つ目の時は1つ目と2つ目を描画し…のパターンと 項目1つ描画するつもりが全項目描画している関数を呼び出している…のパターン
242 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 20:36:07 ] >>232 disposeしたところでGCに回収してもらわないと意味がない そんで強制的に回収させてたら余計に遅くなるんではないかと・・・ メモリがないわけではないんなら ところで150項目てあるけどループ回数は何回? 単純に150? それとも違う? 1項目は そのサブルーチンを何回使う? フォントはでいるだけ使いまわしてる? (例えば明細用を最初に定義して使いまわす)
243 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 21:04:27 ] 描画するデータをその都度どこかから持ってきてるとかかな
244 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 21:09:01 ] スタティック変数使って、何回通ったか数えてみてから考えても良いかも
245 名前:241 mailto:sage [2009/11/22(日) 21:12:26 ] オレ算数できてなかったorz 1/3の数の描画で1/3の時間だったら、1項目の描画の途中で変に遅い部分があると言うだけだな
246 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 21:16:24 ] >>238 それなら、縦スクロールバーは常に出しっぱなしにして、 横スクロールバーは常に非表示にしておけば一番スッキリするんじゃないの? 少なくともカラムの幅に関係なく横スクロールバーは出ないようにしてしまえば かなり問題は簡単になると思うんだがなぁ
247 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 21:16:57 ] >>232 さっきから埒が明かないな。ソースコードさらしたほうが早いんじゃね? おそらく相当ひどい実装になってるんじゃないかと予想。
248 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 21:55:21 ] >>246 どうもListViewでは、スクロールバー自動と無ししか選択できないみたいです ShowScrollBarをテストしてみたんですが、無効化されるようですね 他にやり方有りましたら教えていただけませんか?
249 名前:デフォルトの名無しさん [2009/11/22(日) 22:01:17 ] FontオブジェクトやRectangleオブジェクトを生成するのって そんなに負荷がかかるものなのですか? 明朝体やゴシックが入り混じっているときも、 変更があるときだけ生成し直すのが良策なのかな。
250 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 22:03:28 ] Fontはアンマネージリソース抱えてるので特に生成が重い類 Rectangleは構造体だからほとんどノーコストで作れる
251 名前:デフォルトの名無しさん [2009/11/22(日) 22:10:22 ] >>250 アンマネージリソース…? はじめて聞いた。 クグルとするか (>_<;)。
252 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 22:20:52 ] Fontを150回作るだけで何秒もかかるものでもないんだから、気にするだけ無意味
253 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 22:22:20 ] 原因でないのは間違いないが普通は避ける
254 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 22:31:43 ] >>232 一度FillRectangle、DrawRectangle、DrawStringを全部外して時間を計測してみて それで1,2秒になるならそのどれが遅いかをどれか一つだけ描画するようにして試して さっぱり速くならないなら、描画処理以前の問題と言うことで。
255 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 22:53:47 ] 問題の切り分け方から説明しないといけないのか 言語以前の問題では?
256 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 22:56:53 ] >>181
257 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:02:23 ] >>256 あれ、単なる非矩形ウィンドウだろ。
258 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:06:31 ] form.FormBorderStyle = FormBorderStyle.None; form.ShowInTaskbar = false; はい終わり
259 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:09:35 ] >>248 ShowScrollBarするという基本的な方針は間違ってない 俺はこんな感じで制御してる(thisは独自のスクロールバークラス) どうしても分からなければメアド晒せばソースあげるよ protected void ShowScrollBar(bool show) { if (show != this.Visible){NativeMethods.ShowScrollBar(this.Handle, this.Orientation, show);} if (show == true) { SCROLLINFO info = new SCROLLINFO(); info.cbSize = Marshal.SizeOf(info); info.fMask = ScrollInfoFlags.RANGE | ScrollInfoFlags.PAGE; NativeMethods.GetScrollInfo(this.Handle, this.Orientation, ref info); this.Enabled = (info.nMax >= info.nPage); } }
260 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:27:12 ] >>255 まぁ初心者スレだから・・・・ 荒れているC#相談室では叩かれるかもしれんがw
261 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:31:29 ] >>258 それでWin+Dの時はどうなるのか分かる?w
262 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:39:45 ] そんな後出し言われてもなぁ・・・。
263 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:44:25 ] いやガジェットのようにって書いたじゃん・・・
264 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:58:18 ] でも、Win+D のときの話なんてひとつも書いてないじゃん。 ガジェットのように、なら、JavaScript で実装できること、とかも条件になんの?
265 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:08:19 ] 火病った きもちわるい
266 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:11:07 ] >>264 C#スレでJavaScriptとは? Vistaは使ってなくて、お聞きしたいのですがガジェットはWin+Dでデスクトップから見えなくなる、 つまりWindowStateはMinimizedになるのですか?
267 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:18:11 ] >>264 いい加減にしろオマエの知識じゃ無理
268 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:37:34 ] ネイティブC++のDLLを作成→C++/CLIでラップ→C#で参照しています。 ネイティブDLLに含まれる列挙型AをC#で変数宣言しようとすると、 "'AI.Schedule' はアクセスできない保護レベルになっています。"とエラーになります。 これを何とかC#上で利用できるようにする方法はないでしょうか?
269 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:40:21 ] そのAをどのように宣言しているのか・・・
270 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:47:16 ] ネイティブの型はC#では扱えない
271 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 01:00:21 ] >269 enum A{A1,A2,A3...}; このようなかんじです。 >270 やっぱりそうなりますね。C++/CLIで対応する列挙型を宣言し、 キャストして使うことにします。ありがとうございました。
272 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 01:34:30 ] aの文字列の中に、bの文字列が何回入っているか調べて intで回数を返すメソッドはどうやって作るんですか?
273 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 02:04:49 ] string A = "こんにちはああこんにちはあははこんにちは" ; string[] kugiri = { "こんにちは" }; int i = (A.Split(kugiri, StringSplitOptions.None).Length-1); //3 一例
274 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 02:31:56 ] a = "abaababa" b = "aba" の結果は普通に3でいいのか?
275 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 02:36:20 ] >>273 あー、配列で区切って長さを取得してるんですね。 とても参考になりました。ありがとうございます。 >>274 そうですね。
276 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 08:40:20 ] >>272 の見てて思いだしたけど もしString.IndexOf()使って処理する場合は気をつけた方がいいかもね。 blogs.wankuma.com/naka/archive/2009/11/11/182901.aspx d.hatena.ne.jp/siokoshou/20091112/p1
277 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 08:45:58 ] >>276 こっちのが良い d.hatena.ne.jp/siokoshou/20091111#p1
278 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 08:49:45 ] >>275 >>273 のやり方では>>274 は2になるのに気づいているか?
279 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 10:30:19 ] FxCop使ってないと絶対気付かんわな
280 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 10:58:45 ] >>277 デフォルトのIndexOfはなんであんな変な結果になるんだろな
281 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:05:30 ] String.ToLowerとかもカレントカルチャで動くから、そうおかしな琴ではないだろう
282 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:08:38 ] MS自身がおかしな挙動だと思ってるからFxCopで警告出たりするんだろう
283 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:09:00 ] Console.WriteLine( "AA".IndexOf("〇A") ); // 0 Console.WriteLine( "〇A〇A".IndexOf("AA") ); // 1 これは「〇」がなかったことにされるってことなのかね? やっぱりよくわかんない・・・
284 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:11:27 ] うおーうおー なんで同じことをするのにいくつもやり方があるんだよおおおおおおおおお
285 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:13:53 ] >>283 それはUnicodeの規格がおかしいのを忠実に実装したらそうなってるだけ
286 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:15:06 ] >>284 それぞれに顕著な差(状況毎の性能差とか)があればいいんだけど そんなでもないときは叫びたくもなるわなw
287 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:15:57 ] >>285 なるほど。実装がおかしいんじゃなくて規格がおかしいのか。 ありがとう!
288 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:21:15 ] これって最初からそろってるものが高性能すぎて自分で文法を覚えたりクラス作る必要ないね。 最初からそろってるフォーム等のクラスや構造体の使い方覚えるだけで十分そうだ。
289 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:27:14 ] >>288 いや文法は覚えないと書けないだろw あと、ポトペタで書く分にはそれでいいかもしれないけど ちょっと何かしようと思うとすぐクラス書きたくなると思うよ。
290 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:37:00 ] >>288 そうでもあるし、そうでもない。 またフォームのような基礎的な部品も時々アーキテクチャーが変わったりするから (System.Windows.Forms→Windows Presentation Foundation) いつまでも同じ部品を使い続ける、という方針はあまりお勧めできない。 クラスにせよメソッドにせよコードの仕切りに過ぎないので、 分ける必要のないコード量なら分けなくても別にいいし、 分けるべきだと判断すれば分ければいい。
291 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:48:10 ] >>288 やればわかるけどそれで出来ることには限界があるよ もっとも、教科書に載ってるようなアルゴリズムの実装なんかは ほとんどしなくてよくなったとは思う
292 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:48:45 ] ローカル変数とグローバル変数の中間みたいなのないの? class Test{ private int x; public void func1(){ } public void func2(){ } public void func3(){ } } func1とfunc2でxは共有したいけど func3などそれ以外の部分でxを書き換えられなくない みたいな。
293 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:50:47 ] そんなものはありません func3を別のクラスに移してください
294 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:50:51 ] 同一クラスの中で把握しきれないようなのならクラスの分割を考えた方がいいんじゃないか
295 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:53:10 ] >>292 なんでわけたいのかとか設計によるけど ■継承 class Test{ private int x; public void func1(){} .... } class Test2 : Test { public void func3(){} } とか ■移譲 class Test2 { Test test = new Test(); public void func1() { test.func1();} ... public void func3(){} } 実装を見せたく無い場合は普通はクラスをわける設計になるはず
296 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:55:05 ] ×移譲 ◯委譲 でした・・・
297 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:58:07 ] 基本的にはない。クロージャ使うとか、そういうテクニックはあるけど。
298 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:01:37 ] こういうことか class Test { public readonly Action func1, func2; public Test() { int x; func1 = () => { Console.WriteLine(x); }; func2 = () => { MessageBox.Show(x.ToString()); }; } public void func3(){ /*xは見えない*/ } } 「こういうこともできる」というだけに留めておいてくれ 絶対使うな
299 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:12:32 ] 委譲の変形パターンだな
300 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:42:21 ] それ int x; 大丈夫なのか?と思ったら、ラムダ式における変数のスコープって いう新しい規則で保証されてるのか・・・やっぱラムダ式は敵だ。
301 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:48:25 ] クロージャはその場限りのコールバックとして使うだけならきちんと理解して使えば全く問題ない >>298 みたいにローカル変数の寿命が延びるような使い方はあんまりよろしくない
302 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 13:25:33 ] オブジェクトが生存する限り生存するという、インスタンス変数と たいして変わんないものなんだけどなぁ。
303 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 13:32:23 ] スタックがそのまんま残るとでも思ってるんじゃね
304 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 13:33:14 ] クロージャは、俺にとってはあれば便利だけど、なけりゃないで困らない、 ってレベルだなぁ。
305 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:01:57 ] スレッド活用しようとすると無ければ困る。
306 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:25:11 ] >>259 色々ありがとうございました。原因がわかりましたので仮の修正で一応動き出しました 原因はItem追加をDrawItemで検出していたんですが、この時はBeginUpdateと EndUpdateの間である為、数値的にはカラムもクライアント領域の大きさも変更されているのに 描画が更新されないことでした。仮の処理ですがタイマー起動してEndUpdate後にカラムを弄ると 水平スクロールバーを消すことが出来ました まだ、不具合があるから色々煮詰めないと行けないけど何とかなりそうです
307 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:33:40 ] 研究室の先輩から引き継いだC#のプログラムがあるんですが、当方はQtでC++しか触ったことがありません。 それでこのプログラムを簡単にC++に変換できるのでしょうか? それとも諦めてC#を覚えた方がいいでしょうか?
308 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:34:42 ] あきらめた方がいい。
309 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:36:03 ] C++/QtからC#/WinForms or WPF・・・ 簡単にはいかないけど プログラムが綺麗に作られてるならクラス設計とかはそのまんま引っ越せるとは思う。
310 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:36:52 ] そういえばQt#ってあったな 今回の話とは一切関係ないだろうけど
311 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:36:59 ] 研究室ならどうせ中身はほとんどベターCだろ GUI周りだけちょっと練習すれば十分
312 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:59:39 ] まて、本人がC++の人でソースはC#だ。
313 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:01:05 ] 実際、C++はアセンブラ扱いだから、C#のほうが楽だよ。
314 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:02:26 ] 何を言っているんだ
315 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:28:56 ] >>306 よかったね 質問と関係ないけど、タイマー使うよりメッセージ投げた方がスッキリするよ const int LVEX_COLUMNRESIZE = WM_APP + 1; // 独自のメッセージ定義 PostMessage(this.Handle, LVEX_COLUMNRESIZE, 0, 0);
316 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:34:13 ] ・研究室の先輩から引き継いだC#のプログラム ・当方はQtでC++しか触ったことがない という状況で A.簡単にC++に変換できるのでしょうか? B.それとも諦めてC#を覚えた方がいいでしょうか? という質問に、 C#を覚えた方が楽と薦めてみたんだが・・・どっか勘違いしてるかな?
317 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:35:19 ] C++がアセンブラ扱いってのが問題発言だろ。
318 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:36:56 ] C++やっててJavaもやったことあるならすんなりいけるけど C++だけだとちょっとはまるかもね。 移植するにしてもC#の知識は必要になるから、そのままC#覚えたほうが早そう。
319 名前:デフォルトの名無しさん [2009/11/23(月) 16:39:36 ] 覚えたほうが早いに1票
320 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:47:30 ] >>315 WinForm的にはBeginInvokeだろう
321 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:58:10 ] クラスの設計がよくわからなくなってきたので助けてください。 ■前提 複数のミニブログ(例えばTwitterとはてなハイク)のタイムラインを一つのリストにまとめて表示する プログラムを作るとします。 基本的な機能は一緒なので、最大公約数的な抽象クラスを作り、画面の方でも抽象クラスで提供 されているプロパティに従って最大公約数的な画面表示を行なっていました。 例) 名前 - メッセージ - 日付 - システム ----------------------------- 太郎 - ほげほげ - 12 days ago in Twitter 次郎 - ふがふが - 30 days ago in HatenaHaiku ■質問 ここで、各ミニブログ特有の機能も画面上に反映させたくなった場合、画面側の方で 例えば if(message is TwitterMessage)... else if (message is HatenaHaikuMessage)みたいに どのサブクラスのインスタンスか一々調べて処理を書くしかないのでしょうか? 例) HatenaHaiku の場合、キーワードも表示されるようにする 名前 - メッセージ - 日付 - システム ----------------------------- 太郎 - ほげほげ - 12 days ago in Twitter 次郎 - [独り言] ふがふが - 30 days ago in HatenaHaiku
322 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:03:10 ] 制御のモデルを変える。 メッセージに描画させればいい。
323 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:03:30 ] 固有メッセージ追加とかカスタマイズ用のメソッドとかインターフェースとか そういうのを追加する。 細かいところのやり方はいろいろだけど。
324 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:04:46 ] それが一般的な機能なら、クラス側に機能(インターフェイス)を持たせちゃうな。 で。Twitter 用のクラスでは何もしない、と。 特殊な機能なら、UI 側での判定もありじゃない?
325 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:07:56 ] >>320 同期処理かつメインスレッドが所有するListViewを処理するのに わざわざ非同期のBeginInvokeはねえよw EndUpdateまで待つためにlockかWaitHandleまで必要になるぞ
326 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:09:30 ] >>321 Decorator パターンで考える。 Decorate する必要がない時は空の ConcreteDacorator で代用。
327 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:09:39 ] >>322 なるほど、各メッセージ自身が自分自身の描画方法を知っている形にするってわけですね。 そういった場合でモデルと画面描画を分離させたい場合は間にもう1クラスぐらいかませるようなやり方で 良いでしょうか? [データモデル] MessageModel + Name : string + Message : string TwitterMessageModel → MessageModel + HashCode : string HatenaHaikuMessageModel → MessageModel + Keyword : string [画面表示用のコンポーネント] MessageComponent + Draw() : bool TwitterMessageComponent → MessageComponent - model : TwitterMessageComponent HatenaHaikuComponent → MessageComponent - model : HatenaHaikuMessageComponent
328 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:13:32 ] そういうクラスを考えるのは楽しいんだけどさ。 あんまり役に立たないよね。
329 名前:307 mailto:sage [2009/11/23(月) 17:13:43 ] とりあえずC#をボチボチ勉強します。
330 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:15:23 ] >>326 すまん、空の ConcreteDacorator で代用する必要はないか。 ConcreteComponent をそのまま使えばいいんだ。 ・・・ってもう解決しそうだから、どうでもいいか
331 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:15:31 ] >>323 各システム固有の何かをする、ってメソッドを追加する、みたいな解釈でしょうか? なるほど・・・ >>324 抽象クラスにメソッドを持たせるということですよね。 この場合、特殊な機能が少ないうちは良さそうなんですが、 増えていくと抽象クラスが煩雑になりそうで・・・ #そもそもそんなに特殊機能がばらばらなのを抽象化して良いのか?って問題もあるけど。 >>326 Decoratorパターンを良く理解していないので調べてみます。 デザインパターンちゃんと勉強しないといけないなぁ・・・
332 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:16:36 ] interface IExtraMessageField { public ExtraMessageField Type { get; } // {Name,Message,Date,System} public string Message { get; } } class TwitterMessage{ } class HatenaHaikuMessage: IExtraMessageField { public ExtraMessageField { get{ return ExtraMessageField.Message; } } public string Message { get{ return ''[' +Keyword+ ']; } } }
333 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:16:53 ] >>328 switch とか if 連打の方がわかりやすかったり工数少なかったりするよなw
334 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:19:50 ] 初心者程抽象化したがるからなぁ
335 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:19:58 ] そこまで拡張する必要性に迫られたことないし
336 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:21:09 ] この場合の正しい解は、画面側で"is"使ってインスタンス判定、固有の処理をするだよ。
337 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:21:59 ] 仕事がありません 誰か下さい
338 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:24:22 ] 俺の仕事をあげようか 給料は俺がもらっとくけど
339 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:26:25 ] うーん、何が正しいんだかよくわからなくなってきました・・・ 設計難しいなぁ。 泥臭く書くだけならいくらでもできるんだけど 綺麗に書くとなるとさーっぱりだ・・・ こういう場合に >>336 みたいに「こういう場合はこれが正しい」って断言出来るようになるには どんだけ経験つめばいいんでしょうね。
340 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:27:58 ] 断言したいだけなら、今すぐにもできるだろw
341 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:32:01 ] >>336 は馬鹿すぎだろいくらなんでも。 オブジェクト指向言語使ってる意味ないよ。 Twitterがverupして機能増えた・・・なんて時に改修場所がいたるところにちらばるでしょ、それじゃ。 ちゅーことで断言するやつは疑ってかかった方がいいんじゃないかと思う。