ふらっとC#,C♯,C#(初心者用) Part48
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/11/18(水) 23:56:27「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
前スレ
ふらっとC#,C♯,C#(初心者用) Part47
http://pc12.2ch.net/test/read.cgi/tech/1257067411/
0002デフォルトの名無しさん
2009/11/18(水) 23:56:43C#, C♯, C#相談室 Part55
http://pc12.2ch.net/test/read.cgi/tech/1255530225/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part4
http://pc12.2ch.net/test/read.cgi/tech/1245384489/
----参考サイト
http://www.google.co.jp/
http://msdn.microsoft.com/ja-jp/library/default.aspx
http://homepage3.nifty.com/midori_no_bike/CS/
http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html
http://dobon.net/vb/dotnet/
http://jeanne.wankuma.com/tips/
http://www.labasp.net/CsharpNote/
0003デフォルトの名無しさん
2009/11/19(木) 00:10:27ClickOnesで発行しインストールした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)
エスパーな内容で申し訳ありませんが、宜しくお願いします。
0004デフォルトの名無しさん
2009/11/19(木) 00:11:30>>前991
確かに、1/3で呼ばれることも有りますね…
幸い除外値は1つなのですが、他に方法ありますか?
0005デフォルトの名無しさん
2009/11/19(木) 00:15:24int[] 全ての許容値 = {…};
result = 全ての許容値[random.Next(0, 全ての許容値.Length)];
0006デフォルトの名無しさん
2009/11/19(木) 01:26:52http://msdn.microsoft.com/en-us/library/bb774116(VS.85).aspx
IShellDispatch5 は、Vista 以降に追加されたインターフェース
XPからは使えないわな。
bin以下に interopなんたらって生成されてない?
されてるなら、そいつはdllコピーを見に行かずPCにインストールされてるdllを見にいく。
動作しているXPのマシンはたぶんXPでも動作するようなパッチがあたってんじゃね?
MSUpdateでとりあえず全部最新にしてみたら?
0007デフォルトの名無しさん
2009/11/19(木) 08:29:54結果をずらせばいい。
2〜8の乱数で除外値5の場合、
2〜7の乱数を発生させて、結果が5以上なら+1する。
一般化すると・・・
min〜max-1の範囲で乱数発生
結果がexclusion以上の場合は+1する。
これだと乱数発生は一回ですむし、ループもいらない。
0008デフォルトの名無しさん
2009/11/19(木) 08:51:50全国の市町村検索データベースを作成しようと思っています
(漢字、よみがなであいまい検索できるようにしたいと思っています)
全国の市町村の数くらいなら、テンプレートの「データセット」でも大丈夫でしょうか?
またはSQLiteを使った方がいいでしょうか?
それとも他にいい方法がありますでしょうか?
初心者すぎて、入り口が広すぎで検索しても絞り込めないです
お知恵をお貸し下さい
0009デフォルトの名無しさん
2009/11/19(木) 09:23:17せめてDB使ったほうがいいんじゃないかな?
0010デフォルトの名無しさん
2009/11/19(木) 10:39:56ローマ数字が90度回転して描画されてしまうのですが、
どうしたら良いでしょうか?
[ソース]
Graphics g = pictureBox1.CreateGraphics();
String drawString = "あいうえお�T�U�V";
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();
00113
2009/11/19(木) 12:20:05>bin以下に interopなんたらって生成されてない?
されてましたorz
DotNetZip Libraryを使ってみる事にします。
回答ありがとうございました!
00123
2009/11/19(木) 14:00:41取得するテキストサイズが分からない場合どうすればいいのでしょうか。
あらかじめ大きめにサイズを指定しておくしか無いですか。
現在は下記のようにしていますが、途中までしか取得できません。
byte[] buf = new byte[255];
StringBuilder sb = new StringBuilder();
sb.Length = 255;
SendMessage(hWnd, WM_GETTEXT, 255, sb);
0013デフォルトの名無しさん
2009/11/19(木) 14:03:520015デフォルトの名無しさん
2009/11/19(木) 15:20:04同じ人って主張する必要ないんじゃない?w
0016デフォルトの名無しさん
2009/11/19(木) 15:41:02恥ずかしながら名前の消し忘れです。
>>12を書き込んでから赤面しましたが、
書いてしまったので質問中は統一しました><
00178
2009/11/19(木) 18:18:22いろいろ調べて、敷居を低くしました(涙
・System.Data.SQLiteでデーベース構築
・PupSQLiteで市町村データベースインポート
後は検索するコードをがんばればいけると思っています
まぁすんなりはいかないと思いますが、その時はみなさんのお力を貸して下さい
0018デフォルトの名無しさん
2009/11/19(木) 19:07:08イイヨイイヨー
頑張れ
0019デフォルトの名無しさん
2009/11/19(木) 19:24:51ここからLINQで操作したいのですがいい方法ないでしょうか?
0020デフォルトの名無しさん
2009/11/19(木) 20:09:460021デフォルトの名無しさん
2009/11/19(木) 20:48:11できるよ。
0022デフォルトの名無しさん
2009/11/19(木) 22:02:17デフォルトがだっさくてしょうがない
外見変える方法はないですか?
0023デフォルトの名無しさん
2009/11/19(木) 22:07:10検索キーワードはオーナードローとカスタムドローでどうぞ
0024デフォルトの名無しさん
2009/11/19(木) 22:09:220025デフォルトの名無しさん
2009/11/19(木) 22:10:32XAML弄るのはコード書かないとは言えない気がするぜ
ハードル的な意味で
0026デフォルトの名無しさん
2009/11/19(木) 22:15:28変え放題ねぇ、いつになったらできるようになるんだろう
0027デフォルトの名無しさん
2009/11/19(木) 22:16:280028デフォルトの名無しさん
2009/11/19(木) 22:34:530029デフォルトの名無しさん
2009/11/19(木) 22:35:16C#初めてなんだけどまずMSDNのどのページを見ればいいの?
0030デフォルトの名無しさん
2009/11/19(木) 22:44:30MSDNのC#プログラミングガイド
http://msdn.microsoft.com/ja-jp/library/67ef8sbd.aspx
MSDNでもいいけど↓なんかもお勧め
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html
0031デフォルトの名無しさん
2009/11/19(木) 22:49:310032デフォルトの名無しさん
2009/11/19(木) 22:50:43個人的にはC#のが好きだが
0033デフォルトの名無しさん
2009/11/19(木) 22:51:560034デフォルトの名無しさん
2009/11/19(木) 23:05:25バイナリやテキスト(.iniなど)などが主流だとは思うんですけどね
0035デフォルトの名無しさん
2009/11/19(木) 23:08:130036デフォルトの名無しさん
2009/11/19(木) 23:09:510037デフォルトの名無しさん
2009/11/19(木) 23:10:46どの観点から見て効率よくなのかが分からない
プログラム的にはシリアライズしてファイルに書き出した方が楽だろうけど
人間がそれを読むのはテキストや設定ファイルに比べれば多少面倒臭い
0038デフォルトの名無しさん
2009/11/19(木) 23:13:48C#でやるならxmlが主流ですよ。
>>31
Windows上でアプリケーション書くだけっていうならC#じゃないのかねぇ。
言語学ぶだけならC#先でもC++先でもどっちでもいいけど
VC++は色々ややこしいからやめといた方がいいと個人的には思う
0039デフォルトの名無しさん
2009/11/19(木) 23:15:380040デフォルトの名無しさん
2009/11/19(木) 23:21:30大人しくC#から入った方が幸せじゃね?
0041デフォルトの名無しさん
2009/11/19(木) 23:24:11実際どうなのかな?
0042デフォルトの名無しさん
2009/11/19(木) 23:26:38読み書きって自前で実装してるの?
0043デフォルトの名無しさん
2009/11/19(木) 23:27:10どうなの?って何聞いてるんだか意味不明だよ
0044デフォルトの名無しさん
2009/11/19(木) 23:29:530045デフォルトの名無しさん
2009/11/19(木) 23:33:23xmlは階層構造してる(=構造体)ってことじゃないかね?
どうなのかなって言われても時代遅れですとしか。
0046デフォルトの名無しさん
2009/11/19(木) 23:40:04iniも一応階層構造だし、むしろシンプルな構造体はiniに近いでしょ
0047デフォルトの名無しさん
2009/11/19(木) 23:42:36WPFとか駄目なんかな
0048デフォルトの名無しさん
2009/11/19(木) 23:43:28"@MS ゴシック" を
"MS ゴシック" にする
0049デフォルトの名無しさん
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;
}
}
0050デフォルトの名無しさん
2009/11/19(木) 23:56:23常にそのオブジェクトの電話番号でやり取りするの
変数に入ってるのもメソッドの引数も戻り値も全て実体ではなくて電話番号
0051デフォルトの名無しさん
2009/11/19(木) 23:59:320052デフォルトの名無しさん
2009/11/20(金) 00:06:14どんな本やサイトにも説明があります
ここでちょっと聞いて解るようなものではありません
005349
2009/11/20(金) 00:22:42>>50
なるほど、newしたインスタンスのスコープを勘違いしていました。
メソッド内で生成したものでも、メソッド復帰時に解放される
わけではないのですね。
null指定したりGCで殺されるまでnewで生成されたインスタンスは生きつづける、
と理解できました。
>>51
いや〜、Cだと関数呼び出しで構造体受け渡すとコピーが発生するじゃないですか?
そういうイメージなのかと勘違いしていました。
>>52
ポインタ参照だと理解しています。
0054デフォルトの名無しさん
2009/11/20(金) 00:24:34http://msdn.microsoft.com/ja-jp/library/cc406735.aspx
下のほうにある図みりゃおk
0055デフォルトの名無しさん
2009/11/20(金) 00:28:54null指定したり〜〜行き続ける
いくらなんでも使用中に勝手に殺されたら嫌過ぎるだろwwwwwwww
つかいものになんねぇよwwwwwwwww
0056デフォルトの名無しさん
2009/11/20(金) 00:53:47使われなくなったらそのうちいつのまにか消えてます
0057デフォルトの名無しさん
2009/11/20(金) 03:42:22double b=2.32;
a=(int)b; //a=bはダメ
みたいに(int)をつけなきゃいけなくなってるのは
int型やdouble型にimplicitだかが定義されていなくて
explicitだけオーバーロードされてるから
ってあってますか?
でもMSDNのdouble構造体ってとこみたら
演算子のオーバーロードにexplicit書いてないけど
何か特殊な方法でやってるわけじゃないよね?
0058デフォルトの名無しさん
2009/11/20(金) 05:50:330059デフォルトの名無しさん
2009/11/20(金) 09:22:30SQL鯖2008のバックアップを出来るようにしてほしいと言われたんだけど
どれでいこうか迷ってる
�@マネージメントスタジオを直で使わせる
�Aosqlのバッチを用意して使わせる
�B2のバッチをPGからキック
�CPGから直でバックアップSQL実行
�DSQLDMOを使う
他にもありそうですが、皆さんどのような方法で実装していますか?
あと皆トランザクションをある程度の量で切り捨てなければいけないような環境だとどうしてるんだろう・・・
0060デフォルトの名無しさん
2009/11/20(金) 09:39:53http://pc11.2ch.net/test/read.cgi/db/1231665917/l50
0061デフォルトの名無しさん
2009/11/20(金) 10:06:02サンクス
すれ違いごめ
そっちで聞いてきます。
0062デフォルトの名無しさん
2009/11/20(金) 11:43:31欲しいのですが、これはラベルワープtrueではだめなのでしょうか?。
自分で長さに合わせて改行しないとだめですか?。
0063デフォルトの名無しさん
2009/11/20(金) 11:56:17フフンw
0064デフォルトの名無しさん
2009/11/20(金) 12:10:09高さの計算とかめんどくさいだろうしオーナードロ-とかでやるのも厳しいからやろうとしたこともないが
DataGridViewで代用してるなぁ…
0065デフォルトの名無しさん
2009/11/20(金) 12:29:350066デフォルトの名無しさん
2009/11/20(金) 12:34:120067デフォルトの名無しさん
2009/11/20(金) 12:54:43<Keys>LButton RButton Cancel MButton XButton1 XButton2 A B C D E F G Alt</Keys>
こうなるんですけど、
なんで
<Keys>G Alt</Keys>
こうならないのか意味がわかりません
誰か助けてください
0068デフォルトの名無しさん
2009/11/20(金) 13:00:31デシリアライズすれば元に戻るから気にするな
0069デフォルトの名無しさん
2009/11/20(金) 13:06:59ファイルの中身がめちゃくちゃになってたからびっくりして質問しちゃいました
助かりました!!
0070デフォルトの名無しさん
2009/11/20(金) 14:07:35それはintとdoubleに互換性が無いから。
それぞれ用途が違い内部表現も違うので、相互に変換する場合には明示的に変換処理が必要。
C#の場合はキャストまたはas構文を使う。
intとdoubleに関しては組み込み型なのでキャストで十分。
IEEE754 で調べてごらん。
0071デフォルトの名無しさん
2009/11/20(金) 14:14:36何か方法はありませんか?
0072デフォルトの名無しさん
2009/11/20(金) 14:24:09protectedなメソッド調べてごらん。
0073デフォルトの名無しさん
2009/11/20(金) 14:25:43ありがとです。
だったらスマートフォン買うときはWindowsMobile機にしよっと。
0074デフォルトの名無しさん
2009/11/20(金) 15:48:46C言語の配列と違って
メモリ上に物理的に連続してないの?
C言語なら
405FAC40にa[0]があったら
405FAC44にa[1]があって
・・・・AC48にa[2]、というふうに
連続してたけどC#は違う?
0075デフォルトの名無しさん
2009/11/20(金) 15:51:27stackalloc使いなさい。
0076デフォルトの名無しさん
2009/11/20(金) 15:53:440077デフォルトの名無しさん
2009/11/20(金) 16:05:490078デフォルトの名無しさん
2009/11/20(金) 16:08:40ただし配列全体は固定されていない。移動することがある。
0079デフォルトの名無しさん
2009/11/20(金) 16:11:52C#の参照型はポインタ型と違って直接アドレスを表示できないけど
例えば
405FAC40にa[0]があったら
405FAC44にa[1]があって
・・・・AC48にa[2]、というふうにならんでたのがガベージコレクタが勝手にコンパクションを実行して
638AC044にa[0]
638AC048にa[1]
・・・・C04Bにa[2]
みたいになっちゃうってことでいいの?
0080デフォルトの名無しさん
2009/11/20(金) 16:17:29あ、いや 気になることってあるもんね
0081デフォルトの名無しさん
2009/11/20(金) 16:20:13それを前提にしてはいけないんだろうが
0082デフォルトの名無しさん
2009/11/20(金) 16:33:52どうせアドレスなんか使わないけど
0083デフォルトの名無しさん
2009/11/20(金) 16:43:550084デフォルトの名無しさん
2009/11/20(金) 16:44:1479のいうように、知らない間にアドレスが変わってる、なんてことはありうる。
そういうことをやってもらうためのガベージコレクションでもあるわけで。
0085デフォルトの名無しさん
2009/11/20(金) 16:50:28ポインタはそうはいかない。
配列全体は連続してる。
0086デフォルトの名無しさん
2009/11/20(金) 19:37:27昨日、近所のメモリ内行ったんです。メモリ内。
そしたらなんかインスタンスがめちゃくちゃいっぱいで座れないんです。
で、よく見たらなんか垂れ幕下がってて、ジェネレート2、とか書いてあるんです。
もうね、アホかと。馬鹿かと。
お前らな、ジェネレート2如きで普段来てないメモリに来てんじゃねーよ、ボケが。
ジェネレート2だよ、ジェネレート2。
なんかダイナミック変数とかもいるし。ダイナミック配列でメモリか。おめでてーな。
よーしパパ逆参照しちゃうぞー、とか言ってるの。もう見てらんない。
お前らな、ガベージコレクションやるからその席空けろと。
メモリ内ってのはな、もっと殺伐としてるべきなんだよ。
隣のアドレスに座った奴といつ喧嘩が始まってもおかしくない、
刺すか刺されるか、そんな雰囲気がいいんじゃねーか。女子供は、すっこんでろ。
0087デフォルトの名無しさん
2009/11/20(金) 19:42:530088デフォルトの名無しさん
2009/11/20(金) 22:13:01作ってみたいなー
0089デフォルトの名無しさん
2009/11/20(金) 22:14:59今はWikiみたいに簡単に自分のページを作れるけど
ページビルダーみたいなのっていまだに売れてるんだろうか
0090デフォルトの名無しさん
2009/11/20(金) 22:15:120091デフォルトの名無しさん
2009/11/20(金) 22:16:060092デフォルトの名無しさん
2009/11/20(金) 22:41:40パソコンがなくなった。どうしてくれる
0093デフォルトの名無しさん
2009/11/20(金) 22:42:480094デフォルトの名無しさん
2009/11/20(金) 22:47:400095デフォルトの名無しさん
2009/11/20(金) 22:50:340096デフォルトの名無しさん
2009/11/20(金) 23:06:14お前達はusingステートメントで初期化されていたことに…
0097デフォルトの名無しさん
2009/11/20(金) 23:28:32009897
2009/11/20(金) 23:29:13すまそ
0099デフォルトの名無しさん
2009/11/20(金) 23:29:280100デフォルトの名無しさん
2009/11/21(土) 02:36:28っていう認識でいいの?
0101デフォルトの名無しさん
2009/11/21(土) 02:44:45それじゃあメモリアロケーターだ。
ガベージコレクションはインスタンスの寿命を管理するシステムのこと。
0102デフォルトの名無しさん
2009/11/21(土) 02:51:06ガベージコレクションに管理されないの?
0103デフォルトの名無しさん
2009/11/21(土) 03:16:180104デフォルトの名無しさん
2009/11/21(土) 03:22:290105デフォルトの名無しさん
2009/11/21(土) 06:07:27以下のコードを実行したところ、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);
}
0106デフォルトの名無しさん
2009/11/21(土) 08:46:140107デフォルトの名無しさん
2009/11/21(土) 09:06:38構造体はスタックに確保されるからGCで管理はされない。
0108デフォルトの名無しさん
2009/11/21(土) 12:34:530109デフォルトの名無しさん
2009/11/21(土) 13:25:46クラスのメンバーに構造体がある場合や、Boxingされたケースとか、
例外はあるが基本的に言ってることは正しいと思うけど。
0110デフォルトの名無しさん
2009/11/21(土) 13:47:38「PageSettings.HardMarginX」と「MarginBounds.X」
のちがいは何でしょうか?
実行して値を表示させたとき、
「MarginBounds.X」 = 100、
「PageSettings.HardMarginX」= 13
となりました。
どちらも印刷可能範囲の左上端を示していると思いきや全く異なる値でした。
どういうちがいがあるのか、
ご存知の方、教えてください…!
0111デフォルトの名無しさん
2009/11/21(土) 13:50:16ハードマージンは見なくて大丈夫だと思う
0112デフォルトの名無しさん
2009/11/21(土) 14:14:08今作成中のアプリケーションは、
全国の何ヵ所かの家庭や店舗で利用してもらおうとしており、
それぞれの家庭や店舗のプリンタの機種が様々なのですが、
どんな機種でも、おおよそ決まった位置に明細を印刷しようと思っています。
この場合もマージンで問題ないでしょうか。
たびたびの質問で恐縮ですが、よろしくお願いします。
0113デフォルトの名無しさん
2009/11/21(土) 14:53:53印刷は所詮はアナログの世界なので、どうしても狂うことが出てくる。
オフセット(マージン)、縮尺は、ある程度印刷時に変えられるように作っておいたほうがいいよ。
0114デフォルトの名無しさん
2009/11/21(土) 15:22:26だから、前にもこのスレあたりで書いたと思ったが、そんな訳がないだろう、ってw
プリンタの実装がそんないい加減なものならどうして葉書の郵便番号なんか
ちゃんと枠内に印刷できるんだ。
テキトーなこと言う奴が多すぎるな。
0115デフォルトの名無しさん
2009/11/21(土) 15:30:58調整機能は必須。
0116デフォルトの名無しさん
2009/11/21(土) 15:35:52だから、そういうテキトーなことを言わないこと。
葉書印刷ソフトだけでも世の中にいろいろあるが、そんな「調整機能」が
付いたソフトは見たことがない。
そんな泥臭い作業を人間様に任せるようなダメ設計になってるのなら
windowsもページプリンタもこんなに普及してねえよ。
0117デフォルトの名無しさん
2009/11/21(土) 15:37:160118デフォルトの名無しさん
2009/11/21(土) 15:39:18> 「筆まめ」の「印刷位置微調整」機能
>
> 筆まめ19など、はがき作成ソフトには印刷位置をミリ単位で微調整する機能が備わっている。
> 筆まめの場合は、ファイルメニューの「印刷位置微調整」から利用する
> 郵便番号の位置だけを微調整する機能もある。
0119デフォルトの名無しさん
2009/11/21(土) 15:42:31____
/ \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \ <そんな「調整機能」が
| |r┬-| | 付いたソフトは見たことがない。
\ `ー'´ /
ノ \
/´ ヽ
| l \
ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <.だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー'´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l バ
ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、 ン
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) バ
ン
0120デフォルトの名無しさん
2009/11/21(土) 15:44:45それは古い精度の悪いプリンタ(現実にはあまりないが)を使っている人を
想定した「念のための機能」であって、>>115が主張するように必須の機能なんかじゃない。
通常はそんな馬鹿げたことをしなくても、少なくともmmオーダーの精度で
正確に位置決めされた印刷が行えるようになっている。
っていうか、印刷のコード書いたことがない馬鹿は黙っていた方がいいよ。
0121デフォルトの名無しさん
2009/11/21(土) 15:47:42調整機能は必須だろ?
0122デフォルトの名無しさん
2009/11/21(土) 15:47:56これで用紙の左上とプリンタの印刷可能領域(印刷時のハードウエア座標の原点)
のズレが取得できるようになっている。
0123デフォルトの名無しさん
2009/11/21(土) 15:47:580124デフォルトの名無しさん
2009/11/21(土) 15:48:17用紙の左上から決まった場所に印刷するには、
例えば(100-ハードマージンX,200-ハードマージンY)
とすべきですか?それとも
例えば(100-マージンX,200-マージンY)
とすべきですか?
マージンはプログラム上で何も設定していません。
よろしくお願いいたします。
0125デフォルトの名無しさん
2009/11/21(土) 15:49:55だから、現実問題としてはそんなプリンタは市場にほとんど存在してない。
紙送りの精度が悪いので有名だったHPの10年前の製品だって、そんな機能が
必要になるほどズレたりはしない。
0126デフォルトの名無しさん
2009/11/21(土) 15:53:50実際、有名どころの年賀状印刷ソフトにはついてるし、俺もあとで修正するのは面倒だから、
そういう機能を付けるけど。
0127デフォルトの名無しさん
2009/11/21(土) 15:56:59用紙の、の場合は、マージンは使わない。
ハードマージンの分を含むか含まないかは、試してみてくれ
0128デフォルトの名無しさん
2009/11/21(土) 15:57:55どんなのがいいでしょう?
0129デフォルトの名無しさん
2009/11/21(土) 15:58:370130デフォルトの名無しさん
2009/11/21(土) 16:01:190131デフォルトの名無しさん
2009/11/21(土) 16:33:34その手の調整機能は普通いるんじゃないの?
0132デフォルトの名無しさん
2009/11/21(土) 16:36:11/ \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \ <そんな「調整機能」が
| |r┬-| | 付いたソフトは見たことがない。
\ `ー'´ /
ノ \
/´ ヽ
| l \
ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
0133デフォルトの名無しさん
2009/11/21(土) 16:46:33俺は馬鹿な奴は嫌いじゃないが、幼稚な奴とコミュニケーションができない
真性ヲタはどうしようもないクズだと思ってる。
0134デフォルトの名無しさん
2009/11/21(土) 16:51:070135デフォルトの名無しさん
2009/11/21(土) 16:51:24お前みたいな幼稚なレスしかしない奴もクズだけどな
0136デフォルトの名無しさん
2009/11/21(土) 16:52:58喧嘩はやめて
0137デフォルトの名無しさん
2009/11/21(土) 16:54:410138デフォルトの名無しさん
2009/11/21(土) 17:04:54俺も幼稚な奴は嫌いだけど論理的じゃない奴も嫌い
前2行をどう呼んだら3行目に繋がるんだ?
0139デフォルトの名無しさん
2009/11/21(土) 17:27:04年賀状印刷ソフトに調整機能なんてついてない! とか言い張って、
ソースが提示されてるのに、現実問題としてそんなプリンタはほとんどない! か。
ほんと、テキトーなことを言う奴が多いなw
0140デフォルトの名無しさん
2009/11/21(土) 17:30:18必ずしもアプリ側で指定した内容でずれなく印刷できる保証がどこにもない。
で、プリンタドライバのユーリティーでもある程度調整は効くだろうけど、
それで無理なような突っ込んだ内容はアプリ側でもある程度対応できるようにしておくべきだろう、という話。
必要だと思わないならやらなきゃいいだけさ。
別にスレが荒れるような内容じゃない。
0141デフォルトの名無しさん
2009/11/21(土) 17:36:060142デフォルトの名無しさん
2009/11/21(土) 17:44:15ハードマージンは常用プリンターの印刷可能開始位置だよね。
ところで、
マージンの値をページ設定ダイアログから指定していないときは、
C♯上のマージンの初期値はいくらになるの?
0143デフォルトの名無しさん
2009/11/21(土) 17:46:21無知無能なくせにしつこいなお前さん。
本当にプログラマか?
っていうか、君(ら)は今までプリンタ使ったことないのかね。
1万前後で買えるキャノンやエプソンの最下位グレードのインクジェットだって
位置決めの問題なんかないんだよ。
そんなことは例えばワードで葉書印刷をしたってわかるし、
自分でコードを書いて印刷されたものを物理的に測定したって分かる。
馬鹿な癖に頭の中だけで考えているからそういうとんでもない勘違いをすることになる。
0144デフォルトの名無しさん
2009/11/21(土) 17:57:380145デフォルトの名無しさん
2009/11/21(土) 18:04:32俺もそれ使ってるけど微調整したことない
なんでクエスチョンマークをつけるんだ?
0146デフォルトの名無しさん
2009/11/21(土) 18:06:08ズレるようなら、それは不良品。
そんな話をしてるんじゃなくて、違うプリンタで位置がズレるか、って話。
印字位置の調整機能を持ったソフトなんて、それほど山のようにあるだろ?
もう釣りはいいから、さっさと死ねよ。
0147デフォルトの名無しさん
2009/11/21(土) 18:09:13微調整したことない?
妙だな、CDのメーカーによって変更しなきゃいけないのに
ああ、気にしてないってだけか
0148デフォルトの名無しさん
2009/11/21(土) 18:11:53だから、プリンタの違いによる物理座標の違いを補正できないような糞設計には、
プリンタ側もウィンドウズ側もなってはいないの。
何度も言うように、.NETでも2.0以降はHardMarginX、HardMarginYプロパティが
ちゃんと容易されていて、必要ならこういう差異をちゃんと補正できるようになっているんだよ。
ウダウダ言ってないで実際コード書いてみれば分かるから。
プリンタぐらい持ってるでしょ。
0149デフォルトの名無しさん
2009/11/21(土) 18:13:100150デフォルトの名無しさん
2009/11/21(土) 18:16:410151デフォルトの名無しさん
2009/11/21(土) 18:17:450152デフォルトの名無しさん
2009/11/21(土) 18:27:13ですが、ご存知の方、教えてください…
(>_<)。
0153デフォルトの名無しさん
2009/11/21(土) 18:29:39こんな命題が成り立つわけないのは自明だろ。全メーカーの全プリンタで検証して
はじめて成り立つわけだし。
俺はそんな検証したくないし、そもそも、位置ズレに悩まされたこともあるから、
調整機能を付けるよ。
0154デフォルトの名無しさん
2009/11/21(土) 18:29:50やってみればいいじゃん。
0155デフォルトの名無しさん
2009/11/21(土) 18:42:500156デフォルトの名無しさん
2009/11/21(土) 18:43:420157デフォルトの名無しさん
2009/11/21(土) 18:44:370158デフォルトの名無しさん
2009/11/21(土) 18:46:26ルータに問い合わせるかリモホを表示するサイトにアクセスして
その結果を利用するか
0159デフォルトの名無しさん
2009/11/21(土) 18:46:52なんのグローバルIPをどんなアプリから取得したいんだよ?
LAN 内からルーターのグローバルIPが取りたい、ってことなら、UPnP か、
いったん外部にアクセスしてそっちからもらうか、だな。
0160デフォルトの名無しさん
2009/11/21(土) 18:48:32ルータに問い合わせるって簡単に出来ますか?
リモホを返すページ作ってアクセスさせてみます
0161デフォルトの名無しさん
2009/11/21(土) 18:52:13http://hydro.energy.kyoto-u.ac.jp/~sekiyama/upnp/upnp-get-extaddr
0162デフォルトの名無しさん
2009/11/21(土) 18:54:43ありがとうございます。使わさせて頂きます。
0163デフォルトの名無しさん
2009/11/21(土) 19:53:580164デフォルトの名無しさん
2009/11/22(日) 01:10:28WinXPの自分のPCだと問題無く動作するのですが、
Vistaの友人のPCだと、
メールを送信できませんでした。
場所 System.Net.Mail.SmtpClient.Send(MailMessage message)
場所 ConnectForm.Sendmail_DoWork(Object sender, DoWorkEventArgs e)]
となり、詰まってます。smtpはVistaで使えないのですか?
0165デフォルトの名無しさん
2009/11/22(日) 01:17:08メール送受信関係はWindowsのアキレス腱。
だって、元々SMTPはメールサーバー同士でメールをやり取りするためのプロトコルだぞ。
メールサーバーをローカルに立てているWindows機なんてそこらにはないだろ?
ってことで、メール送信に関しては失敗したときの動作を必ず決めておくべき。
質問の答えだが、別にVistaだから使えないってことはない。
クライアントマシンの環境次第。例えばオレのマシンじゃ動かない。
0166164
2009/11/22(日) 01:34:04自分の場合、どの環境からも送信出来るようにと思い、
YahooやGoogleのフリーメールをsmtp経由で送信しているのですが、
それでもそんなものなんでしょうかね?
0167デフォルトの名無しさん
2009/11/22(日) 01:47:03だから、クライアントマシンの環境次第だと言ってるじゃないか。察してくれよ。
ちなみに今時SMTPの標準のポートが空いてるプロバイダなんてまずねーよ。
0168デフォルトの名無しさん
2009/11/22(日) 07:02:38DrawRectangleメソッドではなぜRectangleFが指定できず、Rectangleしか指定できないのでしょうか?
floatのX,Y,Width,Heightを直接記述するとデバッグでエラーにならないのだから---
RectangleFが指定できたらいいのですが・・・・・できますでしょうか。
ご存知の方よろしくお願いいたします。
0169デフォルトの名無しさん
2009/11/22(日) 09:05:49Graphics..::.DrawRectangle メソッド (Pen, Single, Single, Single, Single)
あるから出来ないわけないよね。
Graphics..::.DrawRectangles メソッド (Pen, array<RectangleF>[]()[])
に食わせるか、ラップ関数作って食わせるか。
0170デフォルトの名無しさん
2009/11/22(日) 09:16:37とりあえずエラーの場所だけ書かれてもな
0171デフォルトの名無しさん
2009/11/22(日) 11:07:51char *P="もじれつれつ";
みたいなことできない?
0172デフォルトの名無しさん
2009/11/22(日) 11:09:560173デフォルトの名無しさん
2009/11/22(日) 11:13:210174デフォルトの名無しさん
2009/11/22(日) 11:17:120175デフォルトの名無しさん
2009/11/22(日) 11:21:37ポインタは無いけど、イテレータ(Enumerator)ならあるよ。
ただし、string自体がimmutableなので、読み取り専用になるけど
0176デフォルトの名無しさん
2009/11/22(日) 11:21:390177デフォルトの名無しさん
2009/11/22(日) 11:22:430178デフォルトの名無しさん
2009/11/22(日) 11:29:400179デフォルトの名無しさん
2009/11/22(日) 12:10:22そのプロセスが持つフォームのタイトルテキストを変更するような
プログラムを作成出来ますか?
0180デフォルトの名無しさん
2009/11/22(日) 12:13:32大抵はDllImport祭りになるけど
0181デフォルトの名無しさん
2009/11/22(日) 12:14:59どのようにすればいいのでしょうか
0182デフォルトの名無しさん
2009/11/22(日) 12:30:240183デフォルトの名無しさん
2009/11/22(日) 13:03:14class Test{
public int x;
public int y;
public void func(string s){
}
}
func("132/145")みたいに/で区切ると
x=132、y=145が入る
ようなことがやりたいんだけど。
0184デフォルトの名無しさん
2009/11/22(日) 13:05:340185デフォルトの名無しさん
2009/11/22(日) 13:14:19Splitかければいい。というか、こんなのは基本だろ?
分割できなかったときは、たぶんこの場合はnullを返すよりは例外を出したほうがいいだろうな。
0186デフォルトの名無しさん
2009/11/22(日) 13:16:33ttp://www.atmarkit.co.jp/fdotnet/dotnettips/317vbsplit/vbsplit.html
0187デフォルトの名無しさん
2009/11/22(日) 13:26:37splitより簡単にできることはないけど
0188デフォルトの名無しさん
2009/11/22(日) 13:33:310189デフォルトの名無しさん
2009/11/22(日) 13:39:55スルーされてしまったけど、やはり無理?
0190デフォルトの名無しさん
2009/11/22(日) 13:45:340191デフォルトの名無しさん
2009/11/22(日) 13:54:070192デフォルトの名無しさん
2009/11/22(日) 14:02:550193デフォルトの名無しさん
2009/11/22(日) 14:05:16ClientRectangleの外にItem(かSubItem)が存在するかどうかで判定するとか。
…泥臭いやり方だなw
0194デフォルトの名無しさん
2009/11/22(日) 14:28:01どうもです。ListViewをOwnerDrawしている状態で、ヘッダーの長さを水平スクロールバーの出ない長さに調整したいのですが
縦スクロールバーを考慮いてその分ヘッダの長さを短くすると、バーが出ない時に白く残っちゃうんですよね
これを何とか消したいんですが他のアプローチ考えてみます
0195デフォルトの名無しさん
2009/11/22(日) 14:31:55ListViewのカスタムコントロール作ったことあるが、そのときはGetScrollBarInfoでやった
表示/非表示を知りたかったわけじゃなく、縦横それぞれのスクロールバーの
自動表示をコントロールしたくて実装した副産物
初心者スレでAPI薦めるってどうよって思ったが、正直ほかの方法は知らない
0196デフォルトの名無しさん
2009/11/22(日) 15:01:46ありがとうございます。一応サンプル有ったからこれからテストしてみようと思います
http://www.pinvoke.net/default.aspx/user32.getscrollbarinfo
0197デフォルトの名無しさん
2009/11/22(日) 16:32:01(>_<;)。
項目数が多い場合、これくらい時間がかかるものなのでしょうか…。
皆様はどのような工夫をして、レスポンスを上げていますか?
よろしくお願いします。
0198デフォルトの名無しさん
2009/11/22(日) 16:35:50各処理の区切りごとに時間を計測してどのボトルネックになている部分をまず探してみてはどうでしょう?
例えばDBからデータの取得が遅いとか色々あると思います。
0199デフォルトの名無しさん
2009/11/22(日) 16:37:15単票なら座標計算に手間取る事は無いだろうから、データ取得あたりで時間掛かってないか見てみた方がいい
0200デフォルトの名無しさん
2009/11/22(日) 17:05:30ありがとうございます。
データは、今は直接、DrawStringメソッド内に文字列を指定しています。
DrawStringメソッドにて文字列の右揃えや左揃えを細かく指定し、さらに背景にFillRectangleでグレーの網掛けも随所に入れています。
DrawStringメソッドと
DrawRectangleメソッド、
FillRectangleメソッドを
1つの関数に定義して、100項目ほどの文字列の描画について、全てその関数で行う形にしています。
いい方法と思いましたが、項目定義が増えるほど一気に重たくなりました
(T_T;)。
DrawStringメソッドの中でPointのみを指定し、Rectangleを使わないようにした方が軽いかもしるません。
これから随所を削りながら試験してみます。
もし、何かコツなどのご意見がありましたらぜひ教えてくださいっ…!!
0201デフォルトの名無しさん
2009/11/22(日) 17:11:35どちらかっつーと、データをレンダリングするのより
データを取ってくるのに時間が掛かってるんじゃないかと思うが。
コードの断片ごとに掛かってる時間を計測して、標準出力に出して眺めてごらんよ。
0202デフォルトの名無しさん
2009/11/22(日) 17:11:39生で書き込んでるんだったら 適当に文字を置換して晒してみれば?
座標計算の所が気になると言えば気になるけど
0203デフォルトの名無しさん
2009/11/22(日) 17:20:590204デフォルトの名無しさん
2009/11/22(日) 17:23:460205デフォルトの名無しさん
2009/11/22(日) 17:35:35半分の50項目だったら何秒?
半分コメントアウトして試してみて
0206デフォルトの名無しさん
2009/11/22(日) 18:04:12が、水平スクロールバーの再描画というか消えるところまでは出来ませんでした
もう少し頑張ってみます
0207デフォルトの名無しさん
2009/11/22(日) 18:41:52いやまぁ違うところは違うけどさ。
列挙型でできることって配列使っても簡単に同じことできね?
列挙型の存在価値がわからんがなんのためにあるの?
0208デフォルトの名無しさん
2009/11/22(日) 18:43:33というかどういうのをして同じことって言うの?
0209デフォルトの名無しさん
2009/11/22(日) 18:46:00わざわざラップクラス作る?
そのほうが無駄な手間だ
0210デフォルトの名無しさん
2009/11/22(日) 18:50:29?????
何を言ってるんだ???
0211デフォルトの名無しさん
2009/11/22(日) 18:51:440212デフォルトの名無しさん
2009/11/22(日) 18:51:550213デフォルトの名無しさん
2009/11/22(日) 18:53:36それはそれでイミフだ
>>207のイミフな発言をどう解釈して>>209の回答になったのかも非常に気になる
0214デフォルトの名無しさん
2009/11/22(日) 18:53:38194を読まずにレスしたからGetScrollBarInfoっていったけど
本来の目的は横スクロールバーの表示抑制なんじゃないの?
そうであるならイベントハンドラでカラムサイズを調整すれば済むと思うけどダメだった?
0215デフォルトの名無しさん
2009/11/22(日) 18:55:58列挙型で出来ることを配列で簡単に実現してるケースを知りたいわ
enum Color { Red, Blue, Green };
=
String[] color = {"Red", "Blue", "Green"};
とでも思ってるんだろうか・・・
0216デフォルトの名無しさん
2009/11/22(日) 18:56:05enum 時間 {あさ,ひる,よる}
Now=時間[1];
if(ひるなら)
ほにゃらら
if(Now==時間.ひる)
ほにゃらら
これは何がどうちがうの?
0217デフォルトの名無しさん
2009/11/22(日) 18:56:40カラムサイズ調整までは何の問題もないけど、リストにロード直後だと再描画してくれませんでした
カラム調整は確認したから大丈夫ですよ
0218デフォルトの名無しさん
2009/11/22(日) 19:00:04なんで自分で調べないの?
0219デフォルトの名無しさん
2009/11/22(日) 19:00:11列挙体を関数の引数にした場合、列挙体以外の値以外入ってくる余地無くなるよね
これだけでも全然違うと理解できないかな?
0220デフォルトの名無しさん
2009/11/22(日) 19:01:56ぜんぜん違うだろ。
時間[1]っての見てだれが"ひる"だってわかんだよ。
それに Now に "まよなか" ってまちがって入れちゃった場合だれが気付いてくれるんだ?
もし時間の種類に "ひづけへんこうせんをこえるまではよるのつもりでいます" なんて長いパターン入れたら
比較に時間かかるわ無駄なメモリ使うわでもったいないよな。
0221デフォルトの名無しさん
2009/11/22(日) 19:05:30突っ込み所はそこなのか?
>>216は上ではNowに時間[1]ってのを代入してて、下じゃ比較してるだけなんだぞ
0222デフォルトの名無しさん
2009/11/22(日) 19:07:55実態は 1 とか 2 とか 3 なわけよ。
プログラムを組むときって状態を管理することが多いんだけど(あさだったらXX、ひるだったらYYとか)
状態の数が3つとか4つなら文字列なんか使うより数字使った方がメモリが無駄にならないし
処理も速いよね。
でも 1 とか 2 とかをプログラム中に直接書くと、書いてる人が混乱しちゃうし間違いやすい。
一人で数百行ぐらいのコード書くならまだしも2人3人ぐらいでやってるとあっというまに破綻する。
で、その 1 とか 2 のマジックナンバーに名前を付けることにしたのが enum なわけだ。
C時代は enum の他に #define なんてのもあったけど。
enum のいいところは変数にあらかじめきめられた数字「しか」代入出来なくしてくれる作用があって、
1 とか 2 で管理してる場合に間違って 9 とかが入っちゃって誤動作するのをコンパイルする段階で
見付けてくれるのよ。
0223デフォルトの名無しさん
2009/11/22(日) 19:11:46enum使ってくる時点で初めてではないだろ
0224デフォルトの名無しさん
2009/11/22(日) 19:15:190225デフォルトの名無しさん
2009/11/22(日) 19:17:230226デフォルトの名無しさん
2009/11/22(日) 19:20:27レスの流れからして、読み込み済みデータで描画して何秒なら分かるが。
0227デフォルトの名無しさん
2009/11/22(日) 19:21:06いや、なんというかアプローチの仕方が違うんじゃないかなって思ってさ
最初は縦スクロールの表示判定だったけど、その真意は横いっぱいに
表示したカラムのせいでアイテム数が増えて縦スクロールが出ると
結果的に横スクロールバーも出るっていう話ではないの?
そうであるなら、例えば縦スクロールバーのみ出しっぱなしにすれば
処理はシンプルになると思うし、縦スクロールバー隠しておくつもりなら
横スクロールバーは出ないようにしてしまったほうが、カラム調節で
チラツキの押さえ込みと格闘するより楽なんじゃないかなぁと・・・
0228デフォルトの名無しさん
2009/11/22(日) 19:26:390229デフォルトの名無しさん
2009/11/22(日) 19:29:37半分の印刷で、時間が半分になるのか1/4になるのか、まさかの1/9になるのか
と言うことの確認。つまり二重ループ三重ループの疑い。
0230デフォルトの名無しさん
2009/11/22(日) 19:35:200231デフォルトの名無しさん
2009/11/22(日) 19:56:13Mainを意味のないクラスで囲まなければならないんだ!不便!
0232デフォルトの名無しさん
2009/11/22(日) 19:58:4650項目のときは5秒でした。
サブルーチンの中で
※背景の塗りつぶしが必要ならFillRectangleを実行する。
※文字列を囲むならばDrawRectangleを実行する。
※文字列については常にRectangle構造体の中で水平垂直位置をパラメーターから与える
…これを150項目分行うようにしています。
項目が増えれば増えるほど、倍以上に遅くなっています。
FontなどのオブジェクトのDisposeが足りないのかなと思って直しましたが、結果はやはり15秒弱です。
0233デフォルトの名無しさん
2009/11/22(日) 19:59:52一項目ごとにフォント読み込んだりしてない?
0234デフォルトの名無しさん
2009/11/22(日) 20:06:57そこまで考えてるのになんで
ちょっとしたことするだけなのに Main なんて意味のないメソッドで囲まなければならないんだ!不便!
まで発想が飛ばないのかねぇ。
0235デフォルトの名無しさん
2009/11/22(日) 20:08:29>>209にはとても及ばない
0236デフォルトの名無しさん
2009/11/22(日) 20:16:450237デフォルトの名無しさん
2009/11/22(日) 20:24:43え、多重ループの疑いがあったとして項目数減らしても計算量は線形でしか減らないキガス・・・
ああ、そもそもルーチンを何回も何回も呼び出している疑いか。あるね、そんな事。
0238デフォルトの名無しさん
2009/11/22(日) 20:25:44用途は趣味で作っているメディアプレーヤーだから、1行の時もあれば100行近い場合もあるんですよ
で、曲名のカラムを調整して縦スクロールバーが無い時はいっぱいまでカラムを延ばして
バーが出たらバーの分だけ曲名を縮める。
そうしないと縦スクロールバーが無いとOwnerDrawしたカラムヘッダーの最後が真っ白けになっちまうし、
逆に縦スクロールバーが出ている時に伸ばしたら横スクロールバーが出るのがちょっとウザイ
現状、調整後に横スクロールバーが残っても、縦または横にスクロールした瞬間に消えるんですけどね
0239デフォルトの名無しさん
2009/11/22(日) 20:29:26減らした比率でしか計算量は減らないから、237は勘違い。
0240デフォルトの名無しさん
2009/11/22(日) 20:30:52しかしながらC++とかに慣れてるとは・・・とてもじゃないが思いにくい
不便とかを超えてもう当たり前になっている所だからぶっちゃけどうでもいい
そして、そんな一か所がなんだってんだ もっといろいろあるだろう orz
0241デフォルトの名無しさん
2009/11/22(日) 20:34:401/3だと微妙だけど二重ループの可能性は高いな
ありそうなのは、
項目1つ目の場合は1つ目を描画し、2つ目の時は1つ目と2つ目を描画し…のパターンと
項目1つ描画するつもりが全項目描画している関数を呼び出している…のパターン
0242デフォルトの名無しさん
2009/11/22(日) 20:36:07disposeしたところでGCに回収してもらわないと意味がない
そんで強制的に回収させてたら余計に遅くなるんではないかと・・・
メモリがないわけではないんなら
ところで150項目てあるけどループ回数は何回?
単純に150?
それとも違う?
1項目は そのサブルーチンを何回使う?
フォントはでいるだけ使いまわしてる?
(例えば明細用を最初に定義して使いまわす)
0243デフォルトの名無しさん
2009/11/22(日) 21:04:270244デフォルトの名無しさん
2009/11/22(日) 21:09:010245241
2009/11/22(日) 21:12:261/3の数の描画で1/3の時間だったら、1項目の描画の途中で変に遅い部分があると言うだけだな
0246デフォルトの名無しさん
2009/11/22(日) 21:16:24それなら、縦スクロールバーは常に出しっぱなしにして、
横スクロールバーは常に非表示にしておけば一番スッキリするんじゃないの?
少なくともカラムの幅に関係なく横スクロールバーは出ないようにしてしまえば
かなり問題は簡単になると思うんだがなぁ
0247デフォルトの名無しさん
2009/11/22(日) 21:16:57さっきから埒が明かないな。ソースコードさらしたほうが早いんじゃね?
おそらく相当ひどい実装になってるんじゃないかと予想。
0248デフォルトの名無しさん
2009/11/22(日) 21:55:21どうもListViewでは、スクロールバー自動と無ししか選択できないみたいです
ShowScrollBarをテストしてみたんですが、無効化されるようですね
他にやり方有りましたら教えていただけませんか?
0249デフォルトの名無しさん
2009/11/22(日) 22:01:17そんなに負荷がかかるものなのですか?
明朝体やゴシックが入り混じっているときも、
変更があるときだけ生成し直すのが良策なのかな。
0250デフォルトの名無しさん
2009/11/22(日) 22:03:28Rectangleは構造体だからほとんどノーコストで作れる
0251デフォルトの名無しさん
2009/11/22(日) 22:10:22アンマネージリソース…?
はじめて聞いた。
クグルとするか
(>_<;)。
0252デフォルトの名無しさん
2009/11/22(日) 22:20:520253デフォルトの名無しさん
2009/11/22(日) 22:22:200254デフォルトの名無しさん
2009/11/22(日) 22:31:43一度FillRectangle、DrawRectangle、DrawStringを全部外して時間を計測してみて
それで1,2秒になるならそのどれが遅いかをどれか一つだけ描画するようにして試して
さっぱり速くならないなら、描画処理以前の問題と言うことで。
0255デフォルトの名無しさん
2009/11/22(日) 22:53:47言語以前の問題では?
0256デフォルトの名無しさん
2009/11/22(日) 22:56:530257デフォルトの名無しさん
2009/11/22(日) 23:02:23あれ、単なる非矩形ウィンドウだろ。
0258デフォルトの名無しさん
2009/11/22(日) 23:06:31form.ShowInTaskbar = false;
はい終わり
0259デフォルトの名無しさん
2009/11/22(日) 23:09:35ShowScrollBarするという基本的な方針は間違ってない
俺はこんな感じで制御してる(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);
}
}
0260デフォルトの名無しさん
2009/11/22(日) 23:27:12まぁ初心者スレだから・・・・
荒れているC#相談室では叩かれるかもしれんがw
0261デフォルトの名無しさん
2009/11/22(日) 23:31:29それでWin+Dの時はどうなるのか分かる?w
0262デフォルトの名無しさん
2009/11/22(日) 23:39:450263デフォルトの名無しさん
2009/11/22(日) 23:44:250264デフォルトの名無しさん
2009/11/22(日) 23:58:18ガジェットのように、なら、JavaScript で実装できること、とかも条件になんの?
0265デフォルトの名無しさん
2009/11/23(月) 00:08:19きもちわるい
0266デフォルトの名無しさん
2009/11/23(月) 00:11:07C#スレでJavaScriptとは?
Vistaは使ってなくて、お聞きしたいのですがガジェットはWin+Dでデスクトップから見えなくなる、
つまりWindowStateはMinimizedになるのですか?
0267デフォルトの名無しさん
2009/11/23(月) 00:18:11いい加減にしろオマエの知識じゃ無理
0268デフォルトの名無しさん
2009/11/23(月) 00:37:34ネイティブDLLに含まれる列挙型AをC#で変数宣言しようとすると、
"'AI.Schedule' はアクセスできない保護レベルになっています。"とエラーになります。
これを何とかC#上で利用できるようにする方法はないでしょうか?
0269デフォルトの名無しさん
2009/11/23(月) 00:40:210270デフォルトの名無しさん
2009/11/23(月) 00:47:160271デフォルトの名無しさん
2009/11/23(月) 01:00:21enum A{A1,A2,A3...}; このようなかんじです。
>270
やっぱりそうなりますね。C++/CLIで対応する列挙型を宣言し、
キャストして使うことにします。ありがとうございました。
0272デフォルトの名無しさん
2009/11/23(月) 01:34:30intで回数を返すメソッドはどうやって作るんですか?
0273デフォルトの名無しさん
2009/11/23(月) 02:04:49string[] kugiri = { "こんにちは" };
int i = (A.Split(kugiri, StringSplitOptions.None).Length-1); //3
一例
0274デフォルトの名無しさん
2009/11/23(月) 02:31:56b = "aba"
の結果は普通に3でいいのか?
0275デフォルトの名無しさん
2009/11/23(月) 02:36:20あー、配列で区切って長さを取得してるんですね。
とても参考になりました。ありがとうございます。
>>274
そうですね。
0276デフォルトの名無しさん
2009/11/23(月) 08:40:20もしString.IndexOf()使って処理する場合は気をつけた方がいいかもね。
http://blogs.wankuma.com/naka/archive/2009/11/11/182901.aspx
http://d.hatena.ne.jp/siokoshou/20091112/p1
0277デフォルトの名無しさん
2009/11/23(月) 08:45:58こっちのが良い
http://d.hatena.ne.jp/siokoshou/20091111#p1
0278デフォルトの名無しさん
2009/11/23(月) 08:49:45>>273のやり方では>>274は2になるのに気づいているか?
0279デフォルトの名無しさん
2009/11/23(月) 10:30:190280デフォルトの名無しさん
2009/11/23(月) 10:58:45デフォルトのIndexOfはなんであんな変な結果になるんだろな
0281デフォルトの名無しさん
2009/11/23(月) 11:05:300282デフォルトの名無しさん
2009/11/23(月) 11:08:380283デフォルトの名無しさん
2009/11/23(月) 11:09:00Console.WriteLine( "〇A〇A".IndexOf("AA") ); // 1
これは「〇」がなかったことにされるってことなのかね?
やっぱりよくわかんない・・・
0284デフォルトの名無しさん
2009/11/23(月) 11:11:27なんで同じことをするのにいくつもやり方があるんだよおおおおおおおおお
0285デフォルトの名無しさん
2009/11/23(月) 11:13:53それはUnicodeの規格がおかしいのを忠実に実装したらそうなってるだけ
0286デフォルトの名無しさん
2009/11/23(月) 11:15:06それぞれに顕著な差(状況毎の性能差とか)があればいいんだけど
そんなでもないときは叫びたくもなるわなw
0287デフォルトの名無しさん
2009/11/23(月) 11:15:57なるほど。実装がおかしいんじゃなくて規格がおかしいのか。
ありがとう!
0288デフォルトの名無しさん
2009/11/23(月) 11:21:15最初からそろってるフォーム等のクラスや構造体の使い方覚えるだけで十分そうだ。
0289デフォルトの名無しさん
2009/11/23(月) 11:27:14いや文法は覚えないと書けないだろw
あと、ポトペタで書く分にはそれでいいかもしれないけど
ちょっと何かしようと思うとすぐクラス書きたくなると思うよ。
0290デフォルトの名無しさん
2009/11/23(月) 11:37:00そうでもあるし、そうでもない。
またフォームのような基礎的な部品も時々アーキテクチャーが変わったりするから
(System.Windows.Forms→Windows Presentation Foundation)
いつまでも同じ部品を使い続ける、という方針はあまりお勧めできない。
クラスにせよメソッドにせよコードの仕切りに過ぎないので、
分ける必要のないコード量なら分けなくても別にいいし、
分けるべきだと判断すれば分ければいい。
0291デフォルトの名無しさん
2009/11/23(月) 11:48:10やればわかるけどそれで出来ることには限界があるよ
もっとも、教科書に載ってるようなアルゴリズムの実装なんかは
ほとんどしなくてよくなったとは思う
0292デフォルトの名無しさん
2009/11/23(月) 11:48:45class Test{
private int x;
public void func1(){
}
public void func2(){
}
public void func3(){
}
}
func1とfunc2でxは共有したいけど
func3などそれ以外の部分でxを書き換えられなくない
みたいな。
0293デフォルトの名無しさん
2009/11/23(月) 11:50:47func3を別のクラスに移してください
0294デフォルトの名無しさん
2009/11/23(月) 11:50:510295デフォルトの名無しさん
2009/11/23(月) 11:53:10なんでわけたいのかとか設計によるけど
■継承
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(){}
}
実装を見せたく無い場合は普通はクラスをわける設計になるはず
0296デフォルトの名無しさん
2009/11/23(月) 11:55:05◯委譲
でした・・・
0297デフォルトの名無しさん
2009/11/23(月) 11:58:070298デフォルトの名無しさん
2009/11/23(月) 12:01:37class Test {
public readonly Action func1, func2;
public Test() {
int x;
func1 = () => { Console.WriteLine(x); };
func2 = () => { MessageBox.Show(x.ToString()); };
}
public void func3(){ /*xは見えない*/ }
}
「こういうこともできる」というだけに留めておいてくれ
絶対使うな
0299デフォルトの名無しさん
2009/11/23(月) 12:12:320300デフォルトの名無しさん
2009/11/23(月) 12:42:21いう新しい規則で保証されてるのか・・・やっぱラムダ式は敵だ。
0301デフォルトの名無しさん
2009/11/23(月) 12:48:25>>298みたいにローカル変数の寿命が延びるような使い方はあんまりよろしくない
0302デフォルトの名無しさん
2009/11/23(月) 13:25:33たいして変わんないものなんだけどなぁ。
0303デフォルトの名無しさん
2009/11/23(月) 13:32:230304デフォルトの名無しさん
2009/11/23(月) 13:33:14ってレベルだなぁ。
0305デフォルトの名無しさん
2009/11/23(月) 15:01:570306デフォルトの名無しさん
2009/11/23(月) 15:25:11色々ありがとうございました。原因がわかりましたので仮の修正で一応動き出しました
原因はItem追加をDrawItemで検出していたんですが、この時はBeginUpdateと
EndUpdateの間である為、数値的にはカラムもクライアント領域の大きさも変更されているのに
描画が更新されないことでした。仮の処理ですがタイマー起動してEndUpdate後にカラムを弄ると
水平スクロールバーを消すことが出来ました
まだ、不具合があるから色々煮詰めないと行けないけど何とかなりそうです
0307デフォルトの名無しさん
2009/11/23(月) 15:33:40それでこのプログラムを簡単にC++に変換できるのでしょうか?
それとも諦めてC#を覚えた方がいいでしょうか?
0308デフォルトの名無しさん
2009/11/23(月) 15:34:420309デフォルトの名無しさん
2009/11/23(月) 15:36:03簡単にはいかないけど
プログラムが綺麗に作られてるならクラス設計とかはそのまんま引っ越せるとは思う。
0310デフォルトの名無しさん
2009/11/23(月) 15:36:52今回の話とは一切関係ないだろうけど
0311デフォルトの名無しさん
2009/11/23(月) 15:36:59GUI周りだけちょっと練習すれば十分
0312デフォルトの名無しさん
2009/11/23(月) 15:59:390313デフォルトの名無しさん
2009/11/23(月) 16:01:050314デフォルトの名無しさん
2009/11/23(月) 16:02:260315デフォルトの名無しさん
2009/11/23(月) 16:28:56よかったね
質問と関係ないけど、タイマー使うよりメッセージ投げた方がスッキリするよ
const int LVEX_COLUMNRESIZE = WM_APP + 1; // 独自のメッセージ定義
PostMessage(this.Handle, LVEX_COLUMNRESIZE, 0, 0);
0316デフォルトの名無しさん
2009/11/23(月) 16:34:13・当方はQtでC++しか触ったことがない
という状況で
A.簡単にC++に変換できるのでしょうか?
B.それとも諦めてC#を覚えた方がいいでしょうか?
という質問に、
C#を覚えた方が楽と薦めてみたんだが・・・どっか勘違いしてるかな?
0317デフォルトの名無しさん
2009/11/23(月) 16:35:190318デフォルトの名無しさん
2009/11/23(月) 16:36:56C++だけだとちょっとはまるかもね。
移植するにしてもC#の知識は必要になるから、そのままC#覚えたほうが早そう。
0319デフォルトの名無しさん
2009/11/23(月) 16:39:360320デフォルトの名無しさん
2009/11/23(月) 16:47:30WinForm的にはBeginInvokeだろう
0321デフォルトの名無しさん
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
0322デフォルトの名無しさん
2009/11/23(月) 17:03:10メッセージに描画させればいい。
0323デフォルトの名無しさん
2009/11/23(月) 17:03:30そういうのを追加する。
細かいところのやり方はいろいろだけど。
0324デフォルトの名無しさん
2009/11/23(月) 17:04:46で。Twitter 用のクラスでは何もしない、と。
特殊な機能なら、UI 側での判定もありじゃない?
0325デフォルトの名無しさん
2009/11/23(月) 17:07:56同期処理かつメインスレッドが所有するListViewを処理するのに
わざわざ非同期のBeginInvokeはねえよw
EndUpdateまで待つためにlockかWaitHandleまで必要になるぞ
0326デフォルトの名無しさん
2009/11/23(月) 17:09:30Decorator パターンで考える。
Decorate する必要がない時は空の ConcreteDacorator で代用。
0327デフォルトの名無しさん
2009/11/23(月) 17:09:39なるほど、各メッセージ自身が自分自身の描画方法を知っている形にするってわけですね。
そういった場合でモデルと画面描画を分離させたい場合は間にもう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
0328デフォルトの名無しさん
2009/11/23(月) 17:13:32あんまり役に立たないよね。
0329307
2009/11/23(月) 17:13:430330デフォルトの名無しさん
2009/11/23(月) 17:15:23すまん、空の ConcreteDacorator で代用する必要はないか。
ConcreteComponent をそのまま使えばいいんだ。
・・・ってもう解決しそうだから、どうでもいいか
0331デフォルトの名無しさん
2009/11/23(月) 17:15:31各システム固有の何かをする、ってメソッドを追加する、みたいな解釈でしょうか?
なるほど・・・
>>324
抽象クラスにメソッドを持たせるということですよね。
この場合、特殊な機能が少ないうちは良さそうなんですが、
増えていくと抽象クラスが煩雑になりそうで・・・
#そもそもそんなに特殊機能がばらばらなのを抽象化して良いのか?って問題もあるけど。
>>326
Decoratorパターンを良く理解していないので調べてみます。
デザインパターンちゃんと勉強しないといけないなぁ・・・
0332デフォルトの名無しさん
2009/11/23(月) 17:16:36{
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+ ']; } }
}
0333デフォルトの名無しさん
2009/11/23(月) 17:16:53switch とか if 連打の方がわかりやすかったり工数少なかったりするよなw
0334デフォルトの名無しさん
2009/11/23(月) 17:19:500335デフォルトの名無しさん
2009/11/23(月) 17:19:580336デフォルトの名無しさん
2009/11/23(月) 17:21:090337デフォルトの名無しさん
2009/11/23(月) 17:21:59誰か下さい
0338デフォルトの名無しさん
2009/11/23(月) 17:24:22給料は俺がもらっとくけど
0339デフォルトの名無しさん
2009/11/23(月) 17:26:25設計難しいなぁ。
泥臭く書くだけならいくらでもできるんだけど
綺麗に書くとなるとさーっぱりだ・・・
こういう場合に >>336 みたいに「こういう場合はこれが正しい」って断言出来るようになるには
どんだけ経験つめばいいんでしょうね。
0340デフォルトの名無しさん
2009/11/23(月) 17:27:580341デフォルトの名無しさん
2009/11/23(月) 17:32:01オブジェクト指向言語使ってる意味ないよ。
Twitterがverupして機能増えた・・・なんて時に改修場所がいたるところにちらばるでしょ、それじゃ。
ちゅーことで断言するやつは疑ってかかった方がいいんじゃないかと思う。
0342デフォルトの名無しさん
2009/11/23(月) 17:35:430343デフォルトの名無しさん
2009/11/23(月) 17:40:13BeginInvokeはマネージドなPostMessageだよ
BeginInvokeが非同期というならPostMessageも非同期になる
0344デフォルトの名無しさん
2009/11/23(月) 17:42:37一行追加修正で呼ばないって選択肢もある
0345デフォルトの名無しさん
2009/11/23(月) 17:44:06オブジェクト指向なんてこれっぽっちも考慮していない件
もし仕事じゃないなら、
どう綺麗に設計するかなんかより素早く楽しいものを作れるようにしたほうがいいよ
マジで
0346デフォルトの名無しさん
2009/11/23(月) 17:47:250347デフォルトの名無しさん
2009/11/23(月) 17:49:410348デフォルトの名無しさん
2009/11/23(月) 17:52:12趣味のコードだとひたすら速度を追求したりする
0349デフォルトの名無しさん
2009/11/23(月) 17:52:53初心者みたいにデータを表示側で加工判定とかもうね
設計の基礎中の基礎でしょうが
>>332
あとこれもおかしい
interfaceは主に汎用性のある振る舞いの定義に使う物
採用度の低い(このケースは一つのデータクラスだけ)ものにinterface作ってどうすんの
いったい何に怯えて定義したのさ?
あ、ちなみに俺、>>346じゃないよ
ただの無職だよ(∀`*ゞ)テヘッ
0350デフォルトの名無しさん
2009/11/23(月) 17:53:590351デフォルトの名無しさん
2009/11/23(月) 17:56:48その流れでいくと
「本物のプログラマ」文章に行きつくw
ttp://www.genpaku.org/realprogrammerj.html
>本物のプログラマは、GOTO を恐れずに使う。
>本物のプログラマは、5ページにわたる長い DO ループを混乱せずに書ける。
>本物のプログラマは 算術 IF ステートメントを好む -- こうするとコードがもっと面白くなる。
>本物のプログラマは自己拡張コードを書く。とりわけ、タイトなループの途中で 20 ナノセカンドを節約できる場合には。
>本物のプログラマにコメントは不要である -- コードは一目瞭然なのだ。
>FORTRAN では IF 文や REPEAT...UNTIL、や CASE 文が構造化されていないので、本物のプログラマはこれらを使わないことを気に病む必要はない。そのうえ、これらの文は GOTO 指定で必要に応じて代替可能である。
0352デフォルトの名無しさん
2009/11/23(月) 17:58:05Fontサイズについて、
13.5F、10F、9.5F、8.5F
のパターンのflort値を指定しています。
そこでお聞きしたいのですが、
(1)
パソコンによっては13.5Fなどのフォントサイズがないかもしれないですが、
できるだけ整数のフォントサイズを指定した方がいいのでしょうか。
皆さんは一般的に、
フォントサイズをどの範囲で選択されているのでしょうか。
(2)
極端なケースになりますが、
例えば13.1Fとか、7.3Fなどの端数を含めたフォントサイズの指定をすると
どういう扱いになるのでしょうか。
よろしくお願いします。
0353デフォルトの名無しさん
2009/11/23(月) 17:59:07表示とデータをバインドするクラスで
switchしたりif ... is ... するわけですね、わかります。
0354デフォルトの名無しさん
2009/11/23(月) 18:09:21今だとOSたんが許してくれません><
ところで、(意味を理解はしたんだけど)自己拡張って何だ?
self extending code か?と思って原文みたら
>self-modifying code
訳が違うよなぁ
0355デフォルトの名無しさん
2009/11/23(月) 18:13:300356デフォルトの名無しさん
2009/11/23(月) 18:17:13えぇそうです
良くできました(´д`)エエコヤノ- ←これかわいくね?
表示フォーマットにあわせてそのクラスを作りそれにデータクラスをマップします
プログラム出来ても設計出来ない人に多いのが表示フォーマット=実データフォーマットとするパターン
もう目も当てられません
(C#なら属性使ってリフレクションでやっちまう方法もあるけどな(∀`*ゞ)テヘッ)
0357デフォルトの名無しさん
2009/11/23(月) 18:20:05後半の本物のプログラマは仕様書を書かないってのもおもしろいな
> 本物のプログラマは仕様書を書かない。ユーザーはどんなプログラムも手に入る身の上を幸運と思い、ありがたくおしいただくべきである。
だといいなあ
0358デフォルトの名無しさん
2009/11/23(月) 18:21:13それって今流行り(?)のM-V-VMってやつじゃね??
0359デフォルトの名無しさん
2009/11/23(月) 19:08:510360デフォルトの名無しさん
2009/11/23(月) 19:10:530361デフォルトの名無しさん
2009/11/23(月) 19:16:49MVVMはWPFにあわせてMSの社員が考案したもの
コマンドバインディングっていうWPFの概念を活用する
0362デフォルトの名無しさん
2009/11/23(月) 19:26:180363デフォルトの名無しさん
2009/11/23(月) 19:35:33ViewをViewModelになんでもかんでもバインドするんだっけ
0364デフォルトの名無しさん
2009/11/23(月) 19:46:36うまくモデル化出来ないことも結構多くて不完全な気がする
0365デフォルトの名無しさん
2009/11/23(月) 19:50:06投稿に失敗した場合、戻り値で失敗を知らせるのと
例外で失敗を知らせるのはどちらが正しい処理なんでしょうか。
失敗にバリエーションがある場合は例外の方がスマートかなと思ったんですが
使っていいのか今一わかりません。
0366デフォルトの名無しさん
2009/11/23(月) 19:55:39結果をまとめたオブジェクトを返すのがいいんじゃないか
0367デフォルトの名無しさん
2009/11/23(月) 19:56:51ですが、どなたか、アドバイスをよろしくお願いします…
(>_<)。
0368デフォルトの名無しさん
2009/11/23(月) 19:58:34ヽ(・ω・)ノ フォッフォッフォッ
/ /
ノ ̄ゝ
0369デフォルトの名無しさん
2009/11/23(月) 19:58:57更に上とかその上で纏めてなら例外だな
0370デフォルトの名無しさん
2009/11/23(月) 20:01:45それはC#じゃなくてWindowsの仕様とか各種プリンタのドライバに関する話だからスレチ気味だと思う
まずOSごとに挙動が違うし(ここで聞いてるって事は対象はWindowsだろうけど)
後者は多分、内部的には切り上げなり切り捨てなりやってるとは思うけど
ドライバに端数ありでもノーチェックで投げてるのか、プログラム側でPCにあるサイズに対応させてドライバに投げてるのかはどうなんだろう
おそらくあんまりそういうことする人居ないから自分で試してみる方が早いかもしれん
0371デフォルトの名無しさん
2009/11/23(月) 20:06:45印刷するところがよきに計らってくれる
0372デフォルトの名無しさん
2009/11/23(月) 20:24:1020年前のビットマップフォントじゃないんだから、
「サイズがない」なんてことは杞憂過ぎる。
これよく読んだほうがいいよ。
http://msdn.microsoft.com/ja-jp/library/dd297679.aspx
0374デフォルトの名無しさん
2009/11/23(月) 20:33:24なるほど…いいリンクありがとうです。
俺も勉強になりました。
ところで、エクセルで8.25とかのフォントが指定できないのは、
ただ、エクセルがフォントを限定しているだけだからかな。
0375デフォルトの名無しさん
2009/11/23(月) 21:34:31C#(vc2008)をはじめました。
初心者サイトを見ながら
System.Console.Write みたいなのでいじっている程度です。
そこで、突然こういった行が出て来ました。
System.Console.Write(2.ToString().PadLeft(10, '.'));
お聞きしたいのは 2.ToString().PadLeft(10, '.') の考え方についてです。
いろいろと調べてみると、System.Console.Write を
Systemという名前空間のConsoleというクラスのWriteというメソッドに
ドット演算子でアクセス(Cの構造体みたいな?)しているような感覚で
考えることができそうです。
その流れでいくと、2.ToString().PadLeft(10, '.') を理解することができません。
int型整数 2 のToStringメソッドの戻り値のPadLeftメソッドの戻り値?
intのメソッド?メソッドのメソッド?
どのように捉えたらいいのか何卒お教えください。
0376デフォルトの名無しさん
2009/11/23(月) 21:36:310377デフォルトの名無しさん
2009/11/23(月) 21:38:03string ss = s.PadLeft(10, '.');
Console.WriteLine(ss);
0378デフォルトの名無しさん
2009/11/23(月) 21:40:37メソッドは戻り値があるよな?
2.ToStringも戻り値がある。この場合はString型を戻り値にしてる。
"2"が返ってくるわけだ。
で、string型にもメソッドがあり、
PadLeftというメソッドがある。
これは文字を右寄せにするというメソッドだ。もちろん戻り値はString型
0379デフォルトの名無しさん
2009/11/23(月) 22:04:30重ね重ねで申し訳ありませんが、
int型の整数(この場合は 2 )自体がメソッドをもっていて、
クラス(?) 2 のメソッドToString の戻り値が string型(例えば)"s"で、
string型の文字列(この場合は例えば"s")自体がメソッドをもっていて、
クラス(?) ”s”のメソッドPadLeftの戻り値がstring型例えば(”ss”)で、
それをConsole.Writeしてその戻り値が出力された・・・といった感じに
捉えてよろしいでしょうか?(冗長表現で申し訳ありません)
int や stringといった「型」がメソッドを持つというのが感覚的に捉えづらいのですが、
これはもうオブジェクト指向(?)プログラミングの本質を理解しない現状では
当然のことなのでしょうか…?
0380デフォルトの名無しさん
2009/11/23(月) 22:09:560381デフォルトの名無しさん
2009/11/23(月) 22:10:09string型はそのままじゃintにならない
string s="2345";
int i;
i=s; //エラー
これは
i=int.Parse(S);
でok。
int自体がメソッドをもつってのはCから来たら新鮮(?)かもね
0382デフォルトの名無しさん
2009/11/23(月) 22:13:31難しいかな?
「型がメソッドを持つ」なんて言ったって、
要は構造体へのポインタを引数にとってその構造体をいじる関数ってだけだよ。
ただ第一引数の「構造体へのポインタ」がシンタックスシュガーで省略できるようになってるだけ。
なーんにも難しくない。
0383デフォルトの名無しさん
2009/11/23(月) 22:14:14string も実態は String
0384デフォルトの名無しさん
2009/11/23(月) 22:26:04かなりのことが理解できるようになり、今日一日唸っていたことが解決できました。
本当にありがとうございました!
0385デフォルトの名無しさん
2009/11/23(月) 22:27:16そのTextBoxのなかになにかしらのコードを書くことによって
実行時にForm上のコントロールをいじりたい場合、どうやったらいいんでしょうか?
2008Expressを使ってます
0386デフォルトの名無しさん
2009/11/23(月) 22:31:100387デフォルトの名無しさん
2009/11/23(月) 22:34:53できないと思った方がいい。
CodeDOM使って実行時にコードをコンパイルすればできなくはないけど
一度読み込んだコードは解放できないので>>385のような使い方をするとメモリリークする。
C#でなくてよければIronPythonやIronRubyを組み込むのが簡単。
0388デフォルトの名無しさん
2009/11/23(月) 22:45:33Windows フォーム アプリケーションを新規作成したとき
デフォルトの名前空間のusingが
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
これだけなんだけど、System.IOもよく使うから
いちいち新規作成するたびにusing System.IOって書くより最初から
using System.IOが入ってるようにしたいんだ。
どうやればいい?
0389デフォルトの名無しさん
2009/11/23(月) 23:09:53そんな余計なことは考えるな。
お前にとってはそうかもしれんが、世の中全体ではSystem.IOを使わないソースコードのほうが大半だ。
0390デフォルトの名無しさん
2009/11/23(月) 23:10:40無理なんですか、残念
IronPython、Expressでいけます?
0391デフォルトの名無しさん
2009/11/23(月) 23:12:43プロジェクトテンプレートを弄るしかないような気がする。
作ったことないけど
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\VCSExpress\ProjectTemplates\1041
の中に
WindowsApplication.zip
ってのがあって、
それ解凍して出てくる Program.cs だの form1.cs ってのの頭にいれるしかないのかなぁ。
デフォルトの壊したくなければユーザテンプレートのフォルダにコピーしてから編集だと思う。
たぶん。
0392デフォルトの名無しさん
2009/11/23(月) 23:12:440393デフォルトの名無しさん
2009/11/23(月) 23:15:43何を言ってるのこの方は…
0394デフォルトの名無しさん
2009/11/23(月) 23:16:12ここ見ながらプロジェクトテンプレート作るといい。
http://msdn.microsoft.com/ja-jp/library/ms247120(VS.80).aspx
System.IO どころじゃなく
他にも良く書くパターンを色々盛りこんでつくりやすいテンプレート作るといいよ。
0395デフォルトの名無しさん
2009/11/23(月) 23:18:07System.IOを使わないと
ファイルの保存とかができないorz
もっと簡単にファイルに保存とかできる?
0396デフォルトの名無しさん
2009/11/23(月) 23:19:030397デフォルトの名無しさん
2009/11/23(月) 23:22:51System.IO なんか普通使わない
0398デフォルトの名無しさん
2009/11/23(月) 23:24:02System.IOそんなに使わないだろってのには同意するけど
使ってないやつはIDEでまとめて除去できるんで、好きなようにやりゃいいと思う。
過剰反応しすぎじゃね。何か嫌なことでもあって機嫌悪いのか?
0399デフォルトの名無しさん
2009/11/23(月) 23:24:32おお、めっちゃわかりやすいz!
ありがとう!すげー、こんな便利な機能あったのか
0400デフォルトの名無しさん
2009/11/23(月) 23:30:270401デフォルトの名無しさん
2009/11/23(月) 23:33:30いやだといえばいやなんだがとりあえずすぐに Ctrl + . で
終わりだな。
0402デフォルトの名無しさん
2009/11/23(月) 23:39:43Ctrl + . で勝手に追加されるんですか??
やっても上手くいかない・・・どうやるんでしょう??
0403デフォルトの名無しさん
2009/11/23(月) 23:43:36StreamReaderって打ってからおもむろに「Ctrl+.」
難点はStreamReader部分だけはIntellisenseが効かないから
そのパッケージの良く使うクラス名しっかり覚えとかなきゃいけない点。
0404デフォルトの名無しさん
2009/11/23(月) 23:44:47スマートタグのショートカットだよ。
using されてなくて見つからないクラス名書いたらその部分の
右下あたりになんか四角いの出るだろ。
そのときに using かフルネームか選んで完了。
スマートタグ自体はインターフェイスの実装とか名前の変更とか
色々他にもあるけども。
0405デフォルトの名無しさん
2009/11/23(月) 23:45:450406デフォルトの名無しさん
2009/11/23(月) 23:46:00例えば、銀行口座クラス
class Bank
{
public string Name; //銀行名
public string Number; //口座番号(数学的計算対象にならないのでstringでok?)
}
というclassを作るとすると、銀行口座は最低でも店番、普通/当座、口座番号の3つに細分化出来るので
class Account
{
public string StoreNumbar; //店番
public int Type; //0と1で区別
public string Number; //口座番号
}
というclassを作ったほうがよいのでしょうか?
0407デフォルトの名無しさん
2009/11/23(月) 23:46:46とヘルプに書いてるんですが
これって参照設定を右クリックして参照の追加でSystem.Messagingを追加するという意味なんでしょうか?
dllの追加、参照の追加、usingの違いがよくわかりません
0408デフォルトの名無しさん
2009/11/23(月) 23:55:23どう使うかによるんじゃないかな。
銀行名と口座番号だけ必要なら上でいいし、
銀行コード/店舗コードや口座の種類で処理わけるんだったら下だろうし。
必要な機能だけモデルに盛り込めばいいと思うよ。
0409デフォルトの名無しさん
2009/11/23(月) 23:59:21口座番号は string で良いけど、数字以外が設定された場合の処理を書いといたほうがいいよ。
あと普通/当座の区分け用の public int Type は enum にした方がよいかと。
0410406
2009/11/24(火) 00:07:22>>408
確かに、必要に応じて必要な機能のみ実装しないと、どんなモデルも果てしなく巨大化しますよね。
事前にしっかり設計を考えるようにします。
>>409
enumは初めて知りましたorz
機能を知らないと余計な迷いや曖昧さが残ってしまいますね。
まず機能を把握出来るよう頑張ります。
0411デフォルトの名無しさん
2009/11/24(火) 00:10:44まあ、何が聞きたいのかよくわからないけど、とりあえず銀行クラスが口座番号の
情報を持つのはかなり奇妙に見える。
ひょっとしてこういうことが聞きたいのかな?
銀行口座を表すクラスAccountがあるとして、その中に全ての情報を平坦に並べるか、
それとも契約者氏名や口座番号といった口座情報を表すAccountInfoクラスと、
取引の履歴を表すTradeHistoryクラスを用意して、Accountクラスはそれらのインスタンスの
フィールドを持つようにすべきか、みたいなことを聞きたいんだろうか。
0413デフォルトの名無しさん
2009/11/24(火) 00:25:39> これって参照設定を右クリックして参照の追加でSystem.Messagingを追加するという意味なんでしょうか?
うん
> dllの追加、参照の追加、usingの違いがよくわかりません
dllの追加って表現はMSDNにあったっけ?
dllへの参照を追加って感じの文言じゃない?
ソースファイル冒頭にずらずら書くusingは
コードでその名前空間を書くのは省略していきなりクラス名書きますから
コンパイラさんは適当に補ってくださいねって意味
dllとは関係ない
0414デフォルトの名無しさん
2009/11/24(火) 00:34:360415デフォルトの名無しさん
2009/11/24(火) 00:40:550416デフォルトの名無しさん
2009/11/24(火) 00:59:31[DllImport("Kernel32")]
static extern bool SetProcessWorkingSetSize(IntPtr handle, uint min, uint max);
static void Main(string[] args) {
SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, 0xFFFFFFFFU, 0xFFFFFFFFU);
Console.ReadKey();
}
0417デフォルトの名無しさん
2009/11/24(火) 02:10:46>一度読み込んだコードは解放できないので
んあこたあない
0418デフォルトの名無しさん
2009/11/24(火) 02:14:280419デフォルトの名無しさん
2009/11/24(火) 02:15:150420デフォルトの名無しさん
2009/11/24(火) 02:47:32コンパイルできました。
20MBから2MBに減りました
コンソールアプリのテンプレートを書き換えて使うことにします。ありがとうございました。
0421デフォルトの名無しさん
2009/11/24(火) 03:01:35>>420
http://msdn.microsoft.com/ja-jp/library/cc429341.aspx
> dwMinimumWorkingSetSize と dwMaximumWorkingSetSize の両方に 0xffffffff を指定すると、
> 指定したプロセスのワーキングセットのサイズが一時的に 0 になります。
> プロセスは実質上、物理 RAM メモリから仮想メモリにスワップアウトします。
0422デフォルトの名無しさん
2009/11/24(火) 03:22:16object型を継承してるから
インスタンス作成できず無意味なToString()が残っちゃうね。
あるのに使えないって気持ち悪いね。変な仕様にするなよなー。
0423デフォルトの名無しさん
2009/11/24(火) 03:35:46filestreamからバイト配列に読み込んで、
Array.IndexOfとやったのですが、1バイトしか
検索出来ないみたいで詰まってます。
1バイトずつ確認するしか方法は無いのでしょうか。
バイナリエディタのように、たとえば16進数で[00 4B 16]が
あるかを確認したいです。
0424デフォルトの名無しさん
2009/11/24(火) 03:39:320425デフォルトの名無しさん
2009/11/24(火) 04:42:13こんな小さな箱にすげー膨大な情報が入ってて、無線で遠距離通信が可能で
超高速で計算ができるなんてどうみても魔法。
0426デフォルトの名無しさん
2009/11/24(火) 05:28:470427デフォルトの名無しさん
2009/11/24(火) 05:47:440428デフォルトの名無しさん
2009/11/24(火) 07:56:200x00 で検索、あったら次が 0x4B か確認、あったら次が 0x16 か確認ってことかなぁ。
部分配列を検索するメソッドはたぶん無いから自分でメソッド作るしかなさそう。
普通に一個づつ検索する他にBM法とかKMP法とかのアルゴリズムがあるから
がんばって!
0429デフォルトの名無しさん
2009/11/24(火) 08:28:010430デフォルトの名無しさん
2009/11/24(火) 14:49:56>BM法とかKMP法
ありがとうございます!知りませんでした。
理解するまで時間がかかりそうですが、頑張ってみます!
0431デフォルトの名無しさん
2009/11/24(火) 16:12:12エラー 1 ResX ファイル 行 171、位置 5 上のデータの型 は、作成中に次の例外をスローしたため読み込めません: GDI+ で汎用エラーが発生しました。 が無効です。
エラー 2 TargetInvocationException: 行 171、位置 5 上のデータの型 は、作成中に次の例外をスローしたため読み込めません: GDI+ で汎用エラーが発生しました。
場所 System.Resources.ResXResourceReader.ParseXml(XmlTextReader reader)
場所 System.Resources.ResXResourceReader.EnsureResData()
場所 System.Resources.ResXResourceReader.GetEnumerator()
場所 Microsoft.Build.Tasks.ProcessResourceFiles.ReadResources(IResourceReader reader, String fileName)
場所 Microsoft.Build.Tasks.ProcessResourceFiles.ReadResources(String filename, Boolean shouldUseSourcePath)
場所 Microsoft.Build.Tasks.ProcessResourceFiles.ProcessFile(String inFile, String outFile)
XmlException: 行 171、位置 5 上のデータの型 は、作成中に次の例外をスローしたため読み込めません: GDI+ で汎用エラーが発生しました。 行 171、位置 5 です。
0432デフォルトの名無しさん
2009/11/24(火) 16:17:55見た感じコンパイル中にリソースのファイルが
ぶっ壊れてて続行できなかったといった感じだが。
0433デフォルトの名無しさん
2009/11/24(火) 16:37:24そのプログラムはXMLを使ってる?
0434デフォルトの名無しさん
2009/11/24(火) 17:57:56名前ってのと
ソリューションディレクトリを作成ってあるけど
ソリューションディレクトリってただプロジェクトのファイルの階層がちょっと変わるだけ?
作ったプログラム自体には何も影響なし?
0435デフォルトの名無しさん
2009/11/24(火) 18:04:240436431
2009/11/24(火) 19:20:01ビルドしている時に出るの。
リソースの中にxml使っているけど、もらい物だから分からない。
どうしたら良いんだろう?(´・ω・`)
0437デフォルトの名無しさん
2009/11/24(火) 19:23:29質問したらどうだろうか
0438デフォルトの名無しさん
2009/11/24(火) 19:33:290439デフォルトの名無しさん
2009/11/24(火) 20:59:45オーバーライドとかとかめんどくさいなぁ。
同じ名前なのに全く別の処理すんな!まぎらわしいだろ!
0440デフォルトの名無しさん
2009/11/24(火) 21:02:050441デフォルトの名無しさん
2009/11/24(火) 21:09:43printf("%d\n", x);
0442デフォルトの名無しさん
2009/11/24(火) 21:43:47初心者にとってはアプリはプロジェクト一個に納まるものという認識。
しかし熟練してくると一つのアプリでもDLLとEXEに分けるようになる。(例えば単体テストのため)
つまり、アプリ≠プロジェクト。
そうすると、関連するプロジェクトを纏めて管理できる機能が非常に有り難く感じてくる。
0443デフォルトの名無しさん
2009/11/24(火) 21:48:450444デフォルトの名無しさん
2009/11/24(火) 21:50:19・関数をC向けにエクスポートしてC#からDllImport
・C++/CLI
・COM
0445デフォルトの名無しさん
2009/11/24(火) 22:05:49テストプロジェクトなんかは良く作るよな
0446デフォルトの名無しさん
2009/11/24(火) 22:26:000447デフォルトの名無しさん
2009/11/24(火) 22:27:010448デフォルトの名無しさん
2009/11/24(火) 22:30:41public struct abc
{
public bool name;
}
0449デフォルトの名無しさん
2009/11/24(火) 22:33:26勘違いしてそうだけどboolは1バイトだからbyteと同じ大きさ
0450デフォルトの名無しさん
2009/11/24(火) 22:38:41それはしりませんでした
(*- -)(*_ _)
0451デフォルトの名無しさん
2009/11/24(火) 22:39:120452デフォルトの名無しさん
2009/11/24(火) 22:41:310453デフォルトの名無しさん
2009/11/24(火) 22:42:01それに絡んだすっごい雑談だがそのせいで bool は
blittable ではない(マーシャリング後は 4 byte)。
0454デフォルトの名無しさん
2009/11/24(火) 22:44:31MSDN見てもSystem.Booleanのサイズはなかなか載ってない
0455デフォルトの名無しさん
2009/11/24(火) 22:48:220456デフォルトの名無しさん
2009/11/24(火) 23:13:580457デフォルトの名無しさん
2009/11/24(火) 23:16:13なんでソフトが遅いのか調べるのに苦労するんですが、こういう本番では使わない方がいいメソッドって区別する方法ないんですか?
0458デフォルトの名無しさん
2009/11/24(火) 23:19:02たとえば,GetTypeはたいていリフレクションに使われるけど,
後に続くリフレクションの処理の方がずっと重いと考えられるからGetType自体のコストはほとんど無視できる。
0459デフォルトの名無しさん
2009/11/24(火) 23:24:47とかは知りたいわな。
0460デフォルトの名無しさん
2009/11/24(火) 23:26:490461デフォルトの名無しさん
2009/11/24(火) 23:27:32普通に作って遅い所を直すのが正解。
0462デフォルトの名無しさん
2009/11/24(火) 23:29:020463デフォルトの名無しさん
2009/11/24(火) 23:32:57実装のしやすさとコストを天秤にかけらんないじゃんね。
0464デフォルトの名無しさん
2009/11/24(火) 23:33:000465デフォルトの名無しさん
2009/11/24(火) 23:34:50わかんないならわかんないっていえばいいのに。
明後日の方向いた回答しか出来ないんだったら黙ってればいいのに。
なんでリフレクションは必要ですみたいな話になってんのよ。
0466デフォルトの名無しさん
2009/11/24(火) 23:37:26いいだしっぺの法則ktkr
0467デフォルトの名無しさん
2009/11/24(火) 23:38:07>わかんないならわかんないっていえばいいのに。
>明後日の方向いた回答しか出来ないんだったら黙ってればいいのに。
わかんないなら黙ってろよwwwww
0468デフォルトの名無しさん
2009/11/24(火) 23:39:420469デフォルトの名無しさん
2009/11/24(火) 23:41:00どのように書けば良いのでしょうか?。
public FormName( ref int count)
{
InitializeComponent();
this.count= count;
}
0470デフォルトの名無しさん
2009/11/24(火) 23:41:18ところで普通のプログラム書いてる時ってそんなにリフレクション使うか??
0471デフォルトの名無しさん
2009/11/24(火) 23:41:38大量の項目のテキストデータを読み込む処理なのですが、項目数が420程あり、accessではテストデータの作成ができません。
皆さんは、この項目数のテキスト型のテストデータを作成されるとき、どのように編集されていますか?
0472デフォルトの名無しさん
2009/11/24(火) 23:42:13int の参照をクラス内に保持したいってことなんだろうけど
それは出来無い相談だぜ
0473デフォルトの名無しさん
2009/11/24(火) 23:43:48CSVみたいなのだったら perl だの ruby だのでテストデータを生成するプログラム書くことが多いなぁ。
0474デフォルトの名無しさん
2009/11/24(火) 23:44:25やはりそうですか、参照元に通知したい事があったので試みたのですが上手く動きませんでした。
他の手を考えてみようと思います。
0475デフォルトの名無しさん
2009/11/24(火) 23:45:17int なんかじゃなくイベントで通知したらいいんじゃないかと思います。
0476デフォルトの名無しさん
2009/11/24(火) 23:51:13まともに設計してるなら使わんよ
開発ツールなら使いまくり
0477デフォルトの名無しさん
2009/11/24(火) 23:54:31評価 このスレ評価 = 評価.良い;
0478デフォルトの名無しさん
2009/11/25(水) 00:02:12誰かも言ってるがバインド処理系にはよく使う
使わないと100ステップ〜数万ステップ以上かかないといけなくなる
10万ステップいかない小さなプログラムを作ったり、分業でちまちま作ってる人達には無縁の代物かもね
0479デフォルトの名無しさん
2009/11/25(水) 00:05:37仕事にけちをつけるつもりはないが、420項目が並列に並んでいることはまずありえないので、
まずはデータベースを正規化することから考える。
0480デフォルトの名無しさん
2009/11/25(水) 00:29:340481デフォルトの名無しさん
2009/11/25(水) 00:30:02知らんけど
0482デフォルトの名無しさん
2009/11/25(水) 00:30:52面倒だから Excel
0483デフォルトの名無しさん
2009/11/25(水) 00:35:37メソッドにぶちこんでも変わらないやつ
参照型
メソッドにつっこむとかわっちゃうやつ
でおk?
func(int x){
x=3;
}
ってやっても、funcにint変数つっこんでも3にならないけど
func(class X){
X.abc=4;
}
ってやったら4にかわっちゃう
みたいな?
0484デフォルトの名無しさん
2009/11/25(水) 00:40:36C# 値型 参照型 でググって出てきたのを片っぱしから読んできなさい
0485デフォルトの名無しさん
2009/11/25(水) 01:54:42基本的なことはだいたい勉強した。
配列の宣言のほうほうとかif文とかdo〜whileを使うときはwhileのうしろに;をつけるとか。
次なにやればいい?
0486デフォルトの名無しさん
2009/11/25(水) 01:59:34ゲームでもツールでも、何かしら作りたいものがあるんじゃないの?
0487デフォルトの名無しさん
2009/11/25(水) 02:03:200488デフォルトの名無しさん
2009/11/25(水) 03:46:17public readonly int x=20;
}
class B{
public const int y=20;
}
この場合、readonlyとconstの違いはインスタンスを作成しなくても使えるかどうかってだけですか?
0489デフォルトの名無しさん
2009/11/25(水) 06:46:08420項目ほどを打ち出す単票の帳票を作成するプログラムを作成していているのですが、
その帳票を後で再印刷するかもしれないんです。
なので、420項目のデータを考えています。
Perlなどの技術を知らないので、Excelしかないでしょうか…。
accessは項目数が超過してしまうと思います。
0490デフォルトの名無しさん
2009/11/25(水) 06:59:28まあ、作る前にクラスを勉強するべきだな
0491デフォルトの名無しさん
2009/11/25(水) 07:09:21デリゲートなんかわざわざ作らないで呼び出される側のコードを書き換えた方が早いと思うんですが、
一人でソフト作ってる時にデリゲート使う事ってありえなくないですか?
0492デフォルトの名無しさん
2009/11/25(水) 07:11:260493デフォルトの名無しさん
2009/11/25(水) 07:47:10DTでアクセシビリティに一貫性がありませんというエラーが出てしまいます。
class delegateTest
{
delegate void call();
public void DT( call test )
{
test();
}
}
class Program
{
static void Main(string[] args)
{
delegateTest b = new delegateTest();
b.DT(A);
}
void A(){}
}
0494デフォルトの名無しさん
2009/11/25(水) 08:27:24それ設計おかしいよw
素人さん?
0495デフォルトの名無しさん
2009/11/25(水) 08:30:13とりあえずそのソースでは、classやdelegateがpublicじゃないため
0496デフォルトの名無しさん
2009/11/25(水) 09:28:38デリゲートは型だからクラスの外で宣言していい
0497デフォルトの名無しさん
2009/11/25(水) 09:32:38で、これはどう使えばいいんですか?
0498デフォルトの名無しさん
2009/11/25(水) 09:38:120499デフォルトの名無しさん
2009/11/25(水) 09:39:47そんな設計ありえねーから頭冷やしてよく考え直せ。
0500デフォルトの名無しさん
2009/11/25(水) 09:41:19ID, 項目ID, 値
っていうテーブルを作って420行にすればいいじゃん
0501デフォルトの名無しさん
2009/11/25(水) 11:51:21420項目を単票に印刷するとしても単純に420項目並べないでしょ?
見やすい様にグループ分けするでしょ?
そうやってテーブルも作ればいいじゃない
0502デフォルトの名無しさん
2009/11/25(水) 14:25:13そうじゃなくて都合上
a[0]="aaa";
a[1]="bbb";
a[2]="ccc";
a[4]="ddd";
a[8]="eee"; //a[5]〜a[7]は存在しない
みたいにしたいんだが
2の累乗しかとれないようにするにはどうやればいい?
0503デフォルトの名無しさん
2009/11/25(水) 14:31:160504デフォルトの名無しさん
2009/11/25(水) 14:35:03a[0]="aaa";
a[1]="bbb";
a[2]="ccc";
a[3]="ddd";
a[4]="eee";
で適当にインデックス変換すればいいだろ
0505デフォルトの名無しさん
2009/11/25(水) 14:36:450506デフォルトの名無しさん
2009/11/25(水) 14:42:58内部管理はディクショナリが適当
0507デフォルトの名無しさん
2009/11/25(水) 14:44:01スレ違い
0508デフォルトの名無しさん
2009/11/25(水) 14:47:510509デフォルトの名無しさん
2009/11/25(水) 15:51:58匿名関数を使用した場合、実装されているスコープのデータにアクセスできますが
ThreadStart等に匿名関数を指定して別スレッドで実行した場合、呼び出し元の関数が抜けても
スレッド内からは安全に呼び出し元のスコープ内の変数にアクセスできますか?
0510デフォルトの名無しさん
2009/11/25(水) 16:14:42MSDNをちゃんと読もうね。
0511デフォルトの名無しさん
2009/11/25(水) 16:14:550512デフォルトの名無しさん
2009/11/25(水) 16:15:260513デフォルトの名無しさん
2009/11/25(水) 16:18:48Aさんが大雑把なクラスの設計をして
Bさんがそのクラスの細かい動作を使うときに役に立つのか。
たった一人で全部作る場合いらないのかなぁ
0514デフォルトの名無しさん
2009/11/25(水) 16:25:390515デフォルトの名無しさん
2009/11/25(水) 16:25:440516デフォルトの名無しさん
2009/11/25(水) 16:39:02サブクラスを数揃える手もあるが、デリゲートを使った方がスマートに設計できる時もある
道具の機能は使う人の能力次第だわ
0517デフォルトの名無しさん
2009/11/25(水) 16:43:13辺りでイベント以外のデリゲートの使い方を実感しておくと
後々「デリゲート使えば便利じゃね?」的な発想ができるようになると思う
0518デフォルトの名無しさん
2009/11/25(水) 16:44:54たしかにその人の能力しだいだが
能力のない人でも
道具の機能を有用に使える方法を集めたデザインパターンみたいのがもっとあればいいな
0519509
2009/11/25(水) 17:12:58これで安心して使えます
0520デフォルトの名無しさん
2009/11/25(水) 17:24:13switch 〜case使う必要ない。
switch (a){
case 0:「あさです」と表示 壊れる
case 1:「ひるです」と表示 壊れる
case 2:「よるです」と表示 壊れる
}
これやるより
readonly string[] a={"あさです","ひるです","よるです"};
a[x]を表示
このほうが簡潔にできる。
0521デフォルトの名無しさん
2009/11/25(水) 17:29:26どう考えても最初から後者を考えるのだが( ・ω・)y─┛〜〜
0522デフォルトの名無しさん
2009/11/25(水) 17:29:58enumいらないって言ってたやつと同一人物か??
0523デフォルトの名無しさん
2009/11/25(水) 17:31:37>>216と同じ空気を感じるwww
壊れるって何かと思ったらbreakのことか。
まあその例ではそれでいいんじゃね?
0524デフォルトの名無しさん
2009/11/25(水) 17:32:56そうだね。そういう場合は switch - case 使わなくていいね。
0525デフォルトの名無しさん
2009/11/25(水) 17:33:030526デフォルトの名無しさん
2009/11/25(水) 17:37:400527デフォルトの名無しさん
2009/11/25(水) 17:38:490528デフォルトの名無しさん
2009/11/25(水) 17:39:20enum 時間{ 朝, 昼, 夜}
Now=時間.朝とかやるより
abstract class 時間{
}
class 朝 : 時間{
}
class 昼 : 時間{
}
class 夜 : 時間{
}
時間 Now=new 朝();
ってやったほうがenum使うより細かい制御できね?
0529デフォルトの名無しさん
2009/11/25(水) 17:44:31細かい制御する必要ないときに enum 使うんだよ。
実際 Java とかで enum なかったころは似たようなことしてた。
それに >>528 のケースだと、一々インスタンス作ることになって無駄だよね。
以下が定石。
public class 時間 {
private 時間() {}
public static readonly 時間 朝 = new 時間();
public static readonly 時間 昼 = new 時間();
public static readonly 時間 夜 = new 時間();
}
時間 Now = 時間.朝;
0530デフォルトの名無しさん
2009/11/25(水) 17:46:47多分>>216と同一人物なんだろうけど・・・
君の場合は四の五の言わずに一度通しでプログラム書いてみた方がいいと思うよ。
煽りでもなんでもなく。その方が教科書に書いてあることも実感をともなって理解出来ると思う。
0531デフォルトの名無しさん
2009/11/25(水) 17:48:00他の方法で実現出来るならそれで実現すればいい。
0532デフォルトの名無しさん
2009/11/25(水) 17:48:38foreachも不要(直接IEnumerator操作)
クラスの継承もデリゲートも不要(インターフェイス)
0533デフォルトの名無しさん
2009/11/25(水) 17:50:48GOTOさえあればより細かい制御ができてなんでもできるよね。
ってことですね!
0534デフォルトの名無しさん
2009/11/25(水) 17:52:45真面目な話、クラスの継承不要説ってたまに出るよね。
インターフェースのみ存在してて、実装の継承は委譲で賄えってやつ。
どっかの言語がそんな風だった記憶がある。
0535デフォルトの名無しさん
2009/11/25(水) 17:56:29>>222
ちなみに細かい制御が必要な時すら enum と switch 使うのは悪い使い方。
0536デフォルトの名無しさん
2009/11/25(水) 17:57:40おー その方法がいちいちインスタンス作らなくてよさそうだ。なんて素晴らしい方法だ。
もうenumつかわんでその方法使うわ。
0537デフォルトの名無しさん
2009/11/25(水) 18:04:050538デフォルトの名無しさん
2009/11/25(水) 18:07:04細かい制御が必要ならそうするけど
普段はそんな制御要らん
スーパーに買い物に行くのに自家用ジェット使うかお前は?
0539デフォルトの名無しさん
2009/11/25(水) 18:09:180540デフォルトの名無しさん
2009/11/25(水) 18:10:020541デフォルトの名無しさん
2009/11/25(水) 18:11:240542デフォルトの名無しさん
2009/11/25(水) 18:11:42普通に歩くのは遅いけど細かい動作が可能
自家用ジェットは早いけど細かい制御が不可能
そうか!enumは自家用ジェットか。
0543デフォルトの名無しさん
2009/11/25(水) 18:14:180544デフォルトの名無しさん
2009/11/25(水) 18:17:27飛行許可とらないと違法だから気をつけろよ
0545デフォルトの名無しさん
2009/11/25(水) 18:23:580546デフォルトの名無しさん
2009/11/25(水) 18:25:040547デフォルトの名無しさん
2009/11/25(水) 18:32:00なるほど!すっきりしました。
0548デフォルトの名無しさん
2009/11/25(水) 18:58:51ローラースルーって何ぞやと思ってぐぐったら、もの自体は見覚えあった
0549デフォルトの名無しさん
2009/11/25(水) 19:21:46何でもかんでもWebRequestじゃまずいんでしょうか?
0550デフォルトの名無しさん
2009/11/25(水) 19:25:27ちょっとWebClientの方が細かいことできない分簡単ってだけ
0551デフォルトの名無しさん
2009/11/25(水) 19:38:29ありがとうございます
0552デフォルトの名無しさん
2009/11/25(水) 19:49:32インターフェイス未定義エラーがでました。しかし、すでに同じ名前のメソッドを定義しており、
修正の仕方が分かりません。やり方をご存知の方、よろしくお願いします。
public class ToolStripRadioGroup<T> : IEnumerable<T> where T : ToolStripMenuItem
{
List<T> list;
public void Add(T item)
{
list.Add(item);
}
public IEnumerator<T> GetEnumerator()
{
foreach (var l in list)
{
yield return l;
}
}
}
エラー CS0738: 'ToolStripRadioGroup<T>' はインターフェイス メンバ 'System.Collections.IEnumerable.GetEnumerator()' を実装しません。
'ToolStripRadioGroup<T>.GetEnumerator()' は、一致する 'System.Collections.IEnumerator' の戻り値の型を
持たないため、'System.Collections.IEnumerable.GetEnumerator()' を実装できません。
0553デフォルトの名無しさん
2009/11/25(水) 19:51:560554デフォルトの名無しさん
2009/11/25(水) 19:53:10そういう問題じゃねーよ馬鹿。
低脳は引っ込んでろ。
0555デフォルトの名無しさん
2009/11/25(水) 19:55:04インターフェイスの明示的実装
0556デフォルトの名無しさん
2009/11/25(水) 20:03:46それを実装する必要がある。
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
return GetEnumerator();
}
0557デフォルトの名無しさん
2009/11/25(水) 20:40:08クラス設計が複数考えられる場合
どんなクラス設計にすればいいのかな?
0558デフォルトの名無しさん
2009/11/25(水) 20:48:270559デフォルトの名無しさん
2009/11/25(水) 20:52:52エスパーを期待しすぎだwwww
保守性が高くて速度性能が良くてメモリ効率が良いクラス設計にすればいいんじゃね?
0560デフォルトの名無しさん
2009/11/25(水) 21:02:18アップデートを確認する
とか、自動アップデートがついてるソフトがありますが
あれはどうやって実装してるんですか?
ちょっと考えてみたのが
Updata.txtというファイルと
アップデートするファイルをサーバー上に置いておいて
Updata.txtにアクセス
Upload.txtにはバージョンとダウンロードするファイルを記載
もし、バージョンが今より新しければアップデートするファイルをダウンロード
今あるものを削除して置き換え
という方法なのですが
起動してる状態で削除できないし
みなさんはどういった方法で自動アップデートを実装していますか?
0561デフォルトの名無しさん
2009/11/25(水) 21:03:14設計の善し悪しを測る客観的で一般的な評価基準はたぶん無い。
色々な本やサイトで人それぞれが色々なこと言ってるから
そういうの拾い集めて自分なりの考えもつしかないんじゃないかねぇ。
>>559で言ってるように
実際に全部の方法試してメンテしやすさだの性能だので評価するのもいいかもね。
冗談でもなんでもなく、でかいプロジェクト作る前にはプロトタイピングだの
パイロット版だのでよく行われる行為ではある。
0562デフォルトの名無しさん
2009/11/25(水) 21:04:47Update用の小さなプログラムを別に用意しておいて、
アップデート可能な状態だったらそっちを起動、自身は終了って流れにする。
0563デフォルトの名無しさん
2009/11/25(水) 21:29:030564デフォルトの名無しさん
2009/11/25(水) 21:39:450565デフォルトの名無しさん
2009/11/25(水) 21:52:430566デフォルトの名無しさん
2009/11/25(水) 22:00:550567デフォルトの名無しさん
2009/11/25(水) 22:12:150568デフォルトの名無しさん
2009/11/25(水) 22:16:04>Show を呼び出す前に、フォームの Visible プロパティを false にしてください。
と怒られるのですが同じフォームを2つ以上表示できないのでしょうか?
0569デフォルトの名無しさん
2009/11/25(水) 22:17:54余計なこと考えなくていいし、フールプルールだしねえ
0570デフォルトの名無しさん
2009/11/25(水) 22:23:280571デフォルトの名無しさん
2009/11/25(水) 22:23:42ClickOnce使っとけ
0572デフォルトの名無しさん
2009/11/25(水) 22:24:20もいっこインスタンス作ればいいじゃん
0573デフォルトの名無しさん
2009/11/25(水) 22:25:36一度に1個しか表示しないからモーダルダイアログっていうんだ。
複数同時に表示したモードレスダイアログじゃねぇか。絶対おかしいだろ。
0574デフォルトの名無しさん
2009/11/25(水) 22:34:22new Form().Showとしてありますし同じ系統のほかのフォームは普通に開けるのです。
0575デフォルトの名無しさん
2009/11/25(水) 22:34:29犬が尾を振る ワンダフル・・・
ごめんfool proofね
0576574
2009/11/25(水) 22:36:21お騒がせしました
0577デフォルトの名無しさん
2009/11/25(水) 22:36:260578デフォルトの名無しさん
2009/11/25(水) 22:38:48素直にSettingsをつかっとけ
プロバイダも実装すれば好きな場所に初期化ファイルを配置できる
0579デフォルトの名無しさん
2009/11/25(水) 22:41:10普通にテキストファイルとして読めばいいんだけど、API 使った方が楽。
0580デフォルトの名無しさん
2009/11/25(水) 22:41:49自分で実装してもたいした手間じゃないと思うけど
>>578
>>577は保存したいとは言ってないようだが・・・
0581デフォルトの名無しさん
2009/11/25(水) 22:47:03言って無いけど、そういう意味だと解釈するのが当然。
0582デフォルトの名無しさん
2009/11/25(水) 22:47:390583デフォルトの名無しさん
2009/11/25(水) 22:47:48try〜catchでチェックするのと
tryParseでチェックするのとどっちがいい?
0584デフォルトの名無しさん
2009/11/25(水) 22:48:140585デフォルトの名無しさん
2009/11/25(水) 22:51:59お好きな方でどうぞ。
0586デフォルトの名無しさん
2009/11/25(水) 22:52:50TryParse
絶対に失敗しない確信があるならParseでもいいけどそれなら例外をキャッチしないようにするべき
もしくは上の方でまとめてキャッチしたい場合
0587デフォルトの名無しさん
2009/11/25(水) 23:05:47ユーザーコントロールのdll作って、
他のプロジェクトでコントロール貼ってデバッグしたら、
ソースコードが丸見えになるんだけど、MS社製のコントロールみたいに
中身完全防護することできないのかな?
0588デフォルトの名無しさん
2009/11/25(水) 23:12:330589デフォルトの名無しさん
2009/11/25(水) 23:14:500590デフォルトの名無しさん
2009/11/25(水) 23:22:18pdbファイルの意味が分かった。
0591デフォルトの名無しさん
2009/11/25(水) 23:23:24pdbファイルを消せばデバッグでステップインできなくなる。
・そもそも.NETのアセンブリは中間ファイルなのでいくらでも逆アセンブル・逆コンパイルできる。
.NETの標準ライブラリでも普通にできる(ただしほんとにやったらライセンス違反のはず)。
0592デフォルトの名無しさん
2009/11/25(水) 23:24:350593デフォルトの名無しさん
2009/11/25(水) 23:25:45C#だとソース丸見えなのはどうしょうもない
そのために難読化ツールなんて言うものが沢山ある
0594デフォルトの名無しさん
2009/11/25(水) 23:27:432005以降は適当なdllをディレクトリに置いてプロジェクトに追加して、
プロパティグリッドで「ビルド時にbinディレクトリにコピー」の設定ができるのに。
0595デフォルトの名無しさん
2009/11/25(水) 23:29:06それ>>587の言ってることとズレてるよ。
そういう問題じゃないの。
0596デフォルトの名無しさん
2009/11/25(水) 23:30:36たとえば、C#プログラムaaa.exe内にあるメソッド「public string method(string1,string2);//2つの文字列を結合するメソッド」を、
aaa.exe /method aaa bbb
といった形式で呼び出し、「aaabbb」という戻り値を得たいんです。
0597デフォルトの名無しさん
2009/11/25(水) 23:31:050598デフォルトの名無しさん
2009/11/25(水) 23:31:31アセンブリをロードしてリフレクションで。
0599デフォルトの名無しさん
2009/11/25(水) 23:35:470600デフォルトの名無しさん
2009/11/26(木) 00:03:08そのaaa.exeとやらを参照設定に追加して、method()とやらを普通に呼び出してやればいい。
コマンドラインいらね。
0601デフォルトの名無しさん
2009/11/26(木) 02:05:26次の一文だけでも4つの例外が発生する可能性があります。
(controlObject as NumericUpDown).Value = decimal.Parse(valueString);
この場合、4つを個別にcatchしないといけないのでしょうか。
昔Javaを使っていたとき、ExceptionやThrowable等の基本クラスをcatchしてはいけないと習いました。
理由は失念しましたが、想定外の実行時例外までcatchしてしまうからでしょうか。
C#でもExceptionをcatchすべきではないのでしょうか。catchの羅列が鬱陶しくなりますが・・・。
0602デフォルトの名無しさん
2009/11/26(木) 02:08:300603デフォルトの名無しさん
2009/11/26(木) 02:11:26as キャストしてんだから null チェックは当然
valueStringのnull/空文字列チェックも事前にしてておかしくない
Parseは代わりにTryParseを使う
Valueに代入する前にMaximum/Minimumで範囲チェック
なんだそもそも例外出る余地ないじゃん
0604デフォルトの名無しさん
2009/11/26(木) 02:35:23>>602
Valueへの代入時にArgumentOutOfRangeException
ParseでArgumentNull、Format、OverFlowの3つを想定していました。
adキャストのnullついては、上位コントロールのControlsから取得するため想定してませんでした。
>>603
値の事前チェックをちゃんとすれば良かったのですね。
.Netにはそもそも検査例外は存在しないし、今回想定してた例外の内容自体も
Javaでは実行時例外であるものばかりですし・・・。
どうも、C#の例外の取り扱いと、「Javaでは検査例外をcatchしなければならない」という事がごっちゃになっていたようです。
0605デフォルトの名無しさん
2009/11/26(木) 08:09:39using 〜〜っていう名前空間つかうときに
ソリューションエクスプロラーだかにいちいち参照設定追加しなきゃならないんだ
普通にコマンドプロンプトで
csc 〜〜ってやってコンパイルしたら参照設定だのいらないのに。不便だなぁ
0606デフォルトの名無しさん
2009/11/26(木) 08:22:09リフレクション馬鹿がこんなところにも・・・
>>600で普通に出来るのにね。
0607デフォルトの名無しさん
2009/11/26(木) 08:29:16gC[2] = { new GClass[](0), new GClass[](1) };
クラスの配列を初期化したいのですがコンパイルが通りません
0608デフォルトの名無しさん
2009/11/26(木) 08:38:04ってやるのか?おまいは
0609デフォルトの名無しさん
2009/11/26(木) 08:41:36gC[2] = { new GClass(0), new GClass(1) };
これが通らないんです。
0610デフォルトの名無しさん
2009/11/26(木) 08:46:44int[] x={1,2,5}
これはOK
int[3] x={1,2,5}
これはNG
int[] x;
x[3]={1,2,5};
これもNG
おまいのやってることは
int[] x;
x[3]={1,2,5}
って同じことしてる。
0611デフォルトの名無しさん
2009/11/26(木) 08:47:51C#の{ }の表現はAdd()メソッドの省略表現なんだよ。
じゃあ何にAdd()してるんだ? 説明してみろ。
0612デフォルトの名無しさん
2009/11/26(木) 08:49:560613デフォルトの名無しさん
2009/11/26(木) 08:50:21public GClass[] gC;
gC = { new GClass(0), new GClass(1) };
0614デフォルトの名無しさん
2009/11/26(木) 08:52:09あほか。
0615デフォルトの名無しさん
2009/11/26(木) 08:59:23int[] a;
main(){
a={1, 2}
}
も通らないんです。
0616デフォルトの名無しさん
2009/11/26(木) 09:00:26int[]x = new int[] {1,2,5};
この書き方が「正しい」
ただいちいちnew書くのはめんどくせーから
int[] x = {1,2,5};みたいに
「宣言と同時に限り」このような省略した書き方が可能
ここまでいってもまだわからんねーなら残念ながら手遅れ
0617デフォルトの名無しさん
2009/11/26(木) 09:01:33これを実現するにはどうかけばいいでしょうか
0618デフォルトの名無しさん
2009/11/26(木) 09:04:20main(){
GClass[] gC = { new GClass(0), new GClass(1) };
this.gC = gC;
}
0619デフォルトの名無しさん
2009/11/26(木) 09:06:440620デフォルトの名無しさん
2009/11/26(木) 09:08:040621デフォルトの名無しさん
2009/11/26(木) 09:08:38SlimDX
YaneuraGameSDK
DXライブラリ
ManagedDirectx
XNA
などが思い浮かびますが
DXライブラリは実行ファイルが肥大化してしまう(コンパイルするだけで1MBを超す)
XNAは古いXPやノートPCでは重すぎて使い物にならない
ManagedDirectXは既にMicroSoftが放り投げている
YaneuraSDKはマルチプラットフォームを重要視しているためOpenGLを使っている&SDK自体にバグが多い(らしい)
ということでSlimDXが一番いいのかなーと思ったのですが
SlimDXにはなにか欠点などはありますか?
とりあえず日本語の文献が少ないということは感じました
0622デフォルトの名無しさん
2009/11/26(木) 09:12:46板違い
0623デフォルトの名無しさん
2009/11/26(木) 09:17:20わかりました。宣言と同時じゃない場合は省略しなければ通りました。完璧ですありがとうございました。
public GClass[] gC;
gC = new GClass[] { new GClass(0), new GClass(1) };
0624デフォルトの名無しさん
2009/11/26(木) 09:18:52「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
と、書いてあったので書き込んでみましたが
どこに書けばいいのでしょうか
0625デフォルトの名無しさん
2009/11/26(木) 09:21:22PMDエディタがSlimDXを採用したということは
SlimDXが良いということです。
0626デフォルトの名無しさん
2009/11/26(木) 09:21:49623みたいな無能にとっては本当は何をやってるかわからないまま進んじゃって
逆に混乱の原因になるな。
public GClass[] gC;
gC[2] = { new GClass[](0), new GClass[](1) };
こんな書き方何をどう考えてもおかしいし。
0627デフォルトの名無しさん
2009/11/26(木) 09:27:17まァ落ちつけよ
納品前でイライラしてるのもわかるが初心者板なんだ
生温かい目で見守ろうじゃないか
0628デフォルトの名無しさん
2009/11/26(木) 09:28:10gamedev
0629デフォルトの名無しさん
2009/11/26(木) 10:40:59板違い
0630デフォルトの名無しさん
2009/11/26(木) 11:12:08基本的にはユーザーの数、DirectXの移植度(C++が基準だから移植になる)、サポートしてるDirectXのバージョンとなる。
その他のサポートははっきり言って邪魔。
自分で実装すればいい話なので。
オレからすれば、DirectX 9,10ならSlimDX。
DirectX 10以降ならWindows API Code Pack for Microsoft .NET Frameworkだな。
XNAはXBox360をサポートする必要性を感じないので却下。
0631デフォルトの名無しさん
2009/11/26(木) 11:18:570632デフォルトの名無しさん
2009/11/26(木) 11:24:03勝手にどうぞ
そして板違いなのでお帰りください
0633デフォルトの名無しさん
2009/11/26(木) 11:24:23このスレだから敢えて言ってやろう。
その考えは古い、と!
0634デフォルトの名無しさん
2009/11/26(木) 11:34:250635デフォルトの名無しさん
2009/11/26(木) 11:59:32普通にC#でやるより、アクションゲームとか作るのに向いてることはなんとなくわかったけど
RPGとかはどうなのかね。ボタンとかtimerコントロールをはっつけて
プロパティウィンドウでButton1Click(object sender,EnentArgs e)とかなんかやって
そういうやつのほうが簡単にできていいね
0636デフォルトの名無しさん
2009/11/26(木) 12:03:22たとえば不特定多数のPCを破壊したいという願望があったとしますよね?
そういうときに、たとえばディスクフォーマットするソフトつくって最もらしく別の内容(たとえばインターネットブラウザです)とかいって相手に使わせてしまえばクラッキング技術など必要なしに相手のPC破壊できるんじゃないですかね?
それともセキュリティそふとっていうのは使う人がEXEなどを使ってもそういう悪質なものも判定して防ぐことができるんですか?
まあこれだと狙った人のPCを破壊できませんが不特定多数の人がPCを使うようにうまく宣伝とかして情報操作すれば誤って使う人もでてくると思うんですがどうですか?
0637636
2009/11/26(木) 12:06:430638デフォルトの名無しさん
2009/11/26(木) 12:07:07板違い
0639デフォルトの名無しさん
2009/11/26(木) 12:14:57してねーからw
0640デフォルトの名無しさん
2009/11/26(木) 12:31:57板乳街
0641デフォルトの名無しさん
2009/11/26(木) 12:34:270642デフォルトの名無しさん
2009/11/26(木) 12:35:31だからVistaとかは署名のないexeは実行するとき許可を求めるし
formatみたいなシステム領域にアクセスするときはUACがブロックしてくれるし
それなのにXP厨ときたらUACうざいとか言ってるしアホとしか言いようが無い
0643デフォルトの名無しさん
2009/11/26(木) 12:36:000644デフォルトの名無しさん
2009/11/26(木) 12:38:04ttp://www.itmedia.co.jp/news/articles/0911/05/news028.html
たのむから妄想で語るのはやめてくれ…
0645デフォルトの名無しさん
2009/11/26(木) 12:41:29コンパイラだけ手に入れたいんだけど・・・
0646デフォルトの名無しさん
2009/11/26(木) 12:41:380647デフォルトの名無しさん
2009/11/26(木) 12:44:34同梱されているんだから素直にVisual Studioをダウンロード
0648デフォルトの名無しさん
2009/11/26(木) 12:44:44.NET Framework 再頒布可能パッケージにはコンパイラも入ってるが
VSを使わないデメリットは大きいぜ
0649デフォルトの名無しさん
2009/11/26(木) 12:44:490650デフォルトの名無しさん
2009/11/26(木) 12:48:19ローカルのEXEに対してUACでどうにかなると思ってるとかおめでたいな
インターネットブラウザと称してSetup.exeとして管理者インストールされたら
あとは好き放題できるっつうのw
0651デフォルトの名無しさん
2009/11/26(木) 12:53:320652デフォルトの名無しさん
2009/11/26(木) 12:56:340653デフォルトの名無しさん
2009/11/26(木) 13:01:37classA[] CA = new classA[] { new classA(a), new classA(a) }
CA[0] = null;
CA[0] = new classA(a);
とすればいいんでしょうか?
0654デフォルトの名無しさん
2009/11/26(木) 13:01:49アホすぎて言葉も無い
0655デフォルトの名無しさん
2009/11/26(木) 13:03:47それならいちいち書き込むなよバーーーカ
0656デフォルトの名無しさん
2009/11/26(木) 13:06:55いちいち反応するな
0657デフォルトの名無しさん
2009/11/26(木) 13:07:07反論出来なきゃ、そんな言い方するしかないわなw
0658デフォルトの名無しさん
2009/11/26(木) 13:08:380659デフォルトの名無しさん
2009/11/26(木) 13:09:40「XP厨」ってひねくれてるねー
0660デフォルトの名無しさん
2009/11/26(木) 13:14:250661デフォルトの名無しさん
2009/11/26(木) 13:16:320662デフォルトの名無しさん
2009/11/26(木) 13:28:15そのほかは全部普通のクラス?
0663デフォルトの名無しさん
2009/11/26(木) 13:55:29なんでMSDNで調べてから質問しないの?
http://msdn.microsoft.com/ja-jp/library/sf985hc5%28VS.80%29.aspx
0664デフォルトの名無しさん
2009/11/26(木) 13:58:49そのnull代入は全く意味がない
そんなこと気にする前に基礎をちゃんとやったほうがいいよ
>>662
そうです
0665デフォルトの名無しさん
2009/11/26(木) 14:14:49.netのメモリ解放の仕組みはわかっている?
0666デフォルトの名無しさん
2009/11/26(木) 14:17:090667デフォルトの名無しさん
2009/11/26(木) 14:19:33class Test{
int a[];
int b[];
}
こういう風にクラスの中に二つ以上の配列がある場合
this[int index] //getとset
だと、aかbの一方にしか入れられないよね?
中に二つ以上の配列がある場合インデクサ使うことはできない?
0668デフォルトの名無しさん
2009/11/26(木) 14:49:24int a;
int b;
}
構造によるがこのhogeをいんでくさでかえせばいいんじゃまいか?
0669デフォルトの名無しさん
2009/11/26(木) 15:04:02おいおい。a,b自体をプロパティにしたらいいじゃないか。
それで何が問題なんだ?
0670デフォルトの名無しさん
2009/11/26(木) 15:06:550671デフォルトの名無しさん
2009/11/26(木) 15:18:40そうだがnull代入はほとんどの場合意味がない
もしGC.Collectを明示的に呼ぶならその前にnullを代入して
参照を切っておく必要があるけど、通常はGC.Collectを明示的に呼ぶと
余計にパフォーマンスが落ちる
0672デフォルトの名無しさん
2009/11/26(木) 15:45:43プロパティの配列ってどうやるの?
int a;
public int A{
get{
return a;
}
set{
a=value;
}
}
int a[];
public int A[]{
こうやるの?でも他プログラムから要素決定できないよね。
get(a,int index)
みたいにやるのもちょっとかっこわるい。
0673デフォルトの名無しさん
2009/11/26(木) 16:39:45各要素のget setを自分で定義できる
getだけ実装したいなら読み取り専用コレクションを実装すればいい
効率のいいやり方は分からん
0674デフォルトの名無しさん
2009/11/26(木) 16:40:36クラスの中に配列を作るんじゃなくて、クラスの配列を作ればいいと思うよ
0675デフォルトの名無しさん
2009/11/26(木) 16:42:540676デフォルトの名無しさん
2009/11/26(木) 16:44:54ラベルやテキストには名前をちゃんとつけてると思うけど、線を配置した時にその線にもちゃんと名前を付けてる?
0677デフォルトの名無しさん
2009/11/26(木) 16:45:340678デフォルトの名無しさん
2009/11/26(木) 17:24:53メリット
凝った見た目を作るのが簡単。アニメーションも自由自在。
M-V-VM パターンでコードが綺麗に分離できる。
デメリット
簡単って言えるまでに覚えなきゃいけないことが沢山。
XPだと重い。
0679デフォルトの名無しさん
2009/11/26(木) 17:47:21ローカル変数ならnull代入もいらないな。
まあデバッグ実行のことを考えるならやっといた方がいいが。
0680デフォルトの名無しさん
2009/11/26(木) 18:30:22ListBox or TreeViewを使ってサブフォームをページ状に切り替えられるようにするには
どういう風に作ればいいんでしょうか?
TabControlをカスタマイズしてみようと思ったんですが、タブ部分だけを非表示にすることができないようです。
また、サブフォームをFormとして定義していると、デザイナーにコントロールとして登録できません。
(TopLevelプロパティの問題。手作業で)
参考にできるような記事を紹介いただけるようだとよりありがたいです。
0681デフォルトの名無しさん
2009/11/26(木) 18:44:48できれば作り方紹介してるHPなど教えていただけたらありがたいです。
今一通り基本を抑えたような段階です
0682デフォルトの名無しさん
2009/11/26(木) 18:46:59スレ違い
0683デフォルトの名無しさん
2009/11/26(木) 18:50:11教えてください
0684デフォルトの名無しさん
2009/11/26(木) 18:52:19専ブラ 2ch C#でぐぐってみそ
オープンソースでいくつかあったから
0685デフォルトの名無しさん
2009/11/26(木) 18:54:01「一通り基本を抑えた」とか
釣り質問イラネ
0686デフォルトの名無しさん
2009/11/26(木) 19:02:310687デフォルトの名無しさん
2009/11/26(木) 19:04:38例えばプロパティ値が実行前に決まってるならいいけど、実行時に決めるような場合じゃ
コード書いたほうが楽っていう。
実際はそういう動的に代入するケースが頻出するからコードに依存する部分がほとんどなんてことに
0688デフォルトの名無しさん
2009/11/26(木) 19:11:40定番の質問だな
これを参考にすればできる
http://dobon.net/vb/dotnet/form/formwithinform.html
0689デフォルトの名無しさん
2009/11/26(木) 19:16:59サブフォームについてはそのとおりですね。
>また、サブフォームをFormとして定義していると、デザイナーにコントロールとして登録できません。
>(TopLevelプロパティの問題。手作業でfalseにすれば登録できることは確認したが、デザイナ−でいじるとダメになる)
という文章の予定だったのが、推敲前に投稿してしまった次第です。
ただこの場合686の場合にUserControlのサブクラスとしたほうがよさそうです。
で、質問の重要なほうはTabControlの代替です。
よろしくお願いします。
0690デフォルトの名無しさん
2009/11/26(木) 19:17:43プログラムみると
overrideのほうがnewするメソッドよりはるかに使われてるみたいだけど
newってなんで使われないの?
0691デフォルトの名無しさん
2009/11/26(木) 19:31:26そもそもvirtual methodはoverrideさせるために作るから。
0692デフォルトの名無しさん
2009/11/26(木) 20:04:032chの仕様。
ここに書いてある通りに書けばOK
http://www.monazilla.org/index.php?e=192
0693デフォルトの名無しさん
2009/11/26(木) 20:05:190694デフォルトの名無しさん
2009/11/26(木) 20:09:53Windows Formのコントロールを継承で拡張する時にはわりと必要になるけどね。
0695デフォルトの名無しさん
2009/11/26(木) 20:15:20なるほど・・・
やったことないのでよくわからないんですけど、
継承元の機能を残さなきゃいけない理由があったりするんですか?
0696デフォルトの名無しさん
2009/11/26(木) 20:16:54大量の画像ファイル用フォルダとか作らずexeだけで配布したいんだが。
0697デフォルトの名無しさん
2009/11/26(木) 20:24:170698デフォルトの名無しさん
2009/11/26(木) 20:26:08いや、オーバーライド不可のメソッドの動作を変えたり、BrowsableAttrivite付けて
プロパティグリッドから見えなくしたりとか、そういう使い方だね。
はっきりいって邪道だけどそれ以外方法がないから・・・
0699デフォルトの名無しさん
2009/11/26(木) 20:26:09例えばListViewの継承やる時に、基本Ditailしか想定していなけれな
それ以外に変わっちゃ不味いでしょ
0700デフォルトの名無しさん
2009/11/26(木) 20:28:550701デフォルトの名無しさん
2009/11/26(木) 20:32:54なるほど・・・
>>699
それと new の関連性がよくわかんないです。
不勉強で申し訳ない・・・
0702デフォルトの名無しさん
2009/11/26(木) 21:02:35objとbinとcontentっていうフォルダあって
その中にさらにdebugとrereaseわかれてるとか意味不明。
どのフォルダにちゃんとしたファイル入ってるか探すのも大変だな。
Visual StudioよりもっとマシなC#の開発環境ないかなー。
こんなわかりづらいフォルダにすんな!
0703デフォルトの名無しさん
2009/11/26(木) 21:09:19VSの長い歴史と絶え間ない改良によって編み出されたプロジェクト管理手法を一言で切り捨てるわけだな。
若いねぇ。
0704デフォルトの名無しさん
2009/11/26(木) 21:19:180705デフォルトの名無しさん
2009/11/26(木) 21:34:24これを1つずつ実行した場合、10分近くかかったため、
各ファイルを並列に処理させたいのですが、どのようなやり方がよいでしょうか。
試しにBackgroundWorkerをファイルと同じ数だけNewすることで対応したのですが、
Joinの仕組みがないようなので、BackgroundWorkerをListに詰めて
終了イベントですべてがIsBusyでないことを確認したりという風に行っています。
やはり無茶苦茶な方法でしょうか…
0706デフォルトの名無しさん
2009/11/26(木) 21:41:54代入元のデータは全部クラス側にプロパティとして持たせて
XAML側はバインディングとデータトリガーで表示させるだけってのが流行りだけど、
まあ確かに突っ込んだことやろうとするとコードビハインドに頼ることが多くなるのは実感だなあ
0707デフォルトの名無しさん
2009/11/26(木) 21:45:57各ファイルのサイズはどの程度で?
解析ってのはどんな処理なんだ?
0708デフォルトの名無しさん
2009/11/26(木) 21:49:500709デフォルトの名無しさん
2009/11/26(木) 21:50:04MVVM の VM 書くのって結構面倒だよな。
0710デフォルトの名無しさん
2009/11/26(木) 21:51:21何も入ってないフォルダorどうでもいいファイルが3個入っただけのくだらないフォルダを4つも5つも無駄に作り出すことが
「長い歴史による改良」ですかw俺みたいな混乱させるための十分な改良ですねw
0711デフォルトの名無しさん
2009/11/26(木) 21:51:40にわか。
IOとCPU演算がからんでる場合に並列処理を検討するのは定石だよ。
0712デフォルトの名無しさん
2009/11/26(木) 21:52:30そうだね。
eclipseでもC#書けるらしいからそっち使ったら?
0713デフォルトの名無しさん
2009/11/26(木) 21:56:570714デフォルトの名無しさん
2009/11/26(木) 22:00:350715デフォルトの名無しさん
2009/11/26(木) 22:08:04Visual C#でXNAでためしにほんのちょっとしたプログラム
(キーボードの矢印キーを押すと画像が移動するだけのシンプルなもの)
作ってみたんだが、他のPCじゃ動かないみたいなんだ。
XNAってXPとかでも動かないの?
0716デフォルトの名無しさん
2009/11/26(木) 22:13:53http://blogs.msdn.com/ito/archive/2008/05/07/distribute-xna-games.aspx
ランタイム入れてくれってお願いしづらいよねえ。
0717デフォルトの名無しさん
2009/11/26(木) 22:17:25かなり作り込んでしまった
0718デフォルトの名無しさん
2009/11/26(木) 22:19:180719デフォルトの名無しさん
2009/11/26(木) 22:20:21動くけど動作環境嫁
必要な Direct3D のバージョン(でた時の時期で示されるやつ、
月年のやつな)と CRT と XNA Framework Redist が要る。
あとはハード的にも PS 1.1 以上が要るかな確か
ちなみにこういうの入れるインストーラ作らないといけないのは
たいていのアプリでも同じ。
0720デフォルトの名無しさん
2009/11/26(木) 22:20:54XNAで作られたゲーム自体マイナーだしそのためだけに
ランタイムいれろってのもうざいしこりゃ使えないな・・・
どうもありがとう
0721デフォルトの名無しさん
2009/11/26(木) 22:40:330722デフォルトの名無しさん
2009/11/26(木) 22:45:29ユーザに入れさせても良いと思うけど。
それよりXNAの最大の問題点はXBoxゲームパッド以外に対応していない点だと個人的に思う。
0723デフォルトの名無しさん
2009/11/26(木) 22:46:11C++で直接DirectX使うにしても最近はバージョンがややこしいから配布の際はインストーラ必須だよ
>>721
もともと非同期
0724デフォルトの名無しさん
2009/11/26(木) 22:50:130725デフォルトの名無しさん
2009/11/26(木) 22:56:40<A>あ</A>
<B>
<A>い</A>
</B>
<B>
<A>う</A>
</B>
</xml>
上のようなxmlファイルがあったときに、Linq to XMLで
Bの要素の中のAの要素だけを取り出したいです。「い」と「う」
どういったクエリを書けばよいでしょうか
0726デフォルトの名無しさん
2009/11/26(木) 23:00:55あぁ、もともと非同期ですね。言葉が悪かったです。
GUIのスレッドで、process.startを呼び出すと、
ほんの一時的にGUIスレッドが固まってしまいます。
それをどうにか出来ないかと思いまして・・・
0727デフォルトの名無しさん
2009/11/26(木) 23:08:03てか、そこまで書いてて何故分からんのか不思議
0728デフォルトの名無しさん
2009/11/26(木) 23:11:47var root = XElement.Load("hoge.xml");
var a = root.Elements("B").Select(b => (string)b.Element("A"));
0729デフォルトの名無しさん
2009/11/26(木) 23:15:191つのプロセスだとそうするのですが、
2つボタンを設置して、連続的にクリックしたとき、
別プロセスを実行させたいのです。
アプリケーションショートカットのようなものでしょうか。
この場合だと、2つスレッドを作れば解決なのでしょうが、
実行するプロセスの数だけスレッドを作るのは効率的にどうかと思いまして。。
0730デフォルトの名無しさん
2009/11/26(木) 23:17:02ありがとうございます
参考にさせていただきます
0731デフォルトの名無しさん
2009/11/26(木) 23:17:42どうしても気になるならThreadPool使えば
0732デフォルトの名無しさん
2009/11/26(木) 23:37:02ThreadPoolで解決しました!ありがとうございます!
0733デフォルトの名無しさん
2009/11/26(木) 23:49:500734デフォルトの名無しさん
2009/11/27(金) 00:26:25フォーム1とは別のクラスのLabelSetterクラスを作ってみたんですが
別のクラスからフォーム1のラベルを変える方法が
できません。どうやれば別のクラスでできますか?
public partial class Form1 : Form
{
//コンストラクタ等
}
public Static class LabelSet{
public void func(){
Form1.Label1.Text="がんばれ";
}
}
0735デフォルトの名無しさん
2009/11/27(金) 00:34:22でも、普通はそんな腐った設計にはしない
0736デフォルトの名無しさん
2009/11/27(金) 00:44:26コードザイナで編集されてます、勝手に編集しないでくださいだと?
うぜぇしるか。public と。できた。
0737デフォルトの名無しさん
2009/11/27(金) 00:52:58依存性云々みたいな理論的な話は知らなくても、普通のセンスしてれば
そういう書き方したら後々自分が困るって直感的に分かるとおもうんだが
0738デフォルトの名無しさん
2009/11/27(金) 00:56:24こんなことやりはしないが
まぁせめてやるにしても
void func(Label target)
とかだよなぁ・・・・
クラスの意味がないではないか
0739デフォルトの名無しさん
2009/11/27(金) 01:04:05Label1 = ・・・
と直接書き換えるのと
メソッドなどを利用して間接的に書き換えるのなら
直接書きかえるほうが手間かからないだろ。
プロパティも特別な理由がなきゃ使わなくていい。
class A{
public int x;
public string s;;
//なんかメソッドとか
}
class B{
static void Main(){
A a=new A();
//ここでなんかいろいろやってる
}
たとえばこれでわざわざx等をprivateにしてプロパティを使うメリットが思い浮かばない。
めんどくさいだけ。
0740デフォルトの名無しさん
2009/11/27(金) 01:08:23たとえば>>734の例に合わせるなら「応援メッセージ」プロパティであれば意味がある
0741デフォルトの名無しさん
2009/11/27(金) 01:11:19面倒くささは、自動プロパティ構文で問題ないでしょ。prop[Tab][Tab]で作れるし。
public int x { get; set; }
public string s { get; set; }
結局、nullを弾きたいとかで後に普通のプロパティに変えることもあるけど。
0742デフォルトの名無しさん
2009/11/27(金) 01:22:570743デフォルトの名無しさん
2009/11/27(金) 01:28:35それやるとプログラムの見通しが悪くなるのは確かだな
そもそも文字を書き換えるのにオブジェクト丸ごと晒す必要ないでしょw
ただ、この場合Label1をプロパティにする/しない以前に、Label1の文字だけ
外部から書き換えるということ自体に疑問を感じる
他のメンバーと矛盾した状態になることはないのかとか
そもそもフォーム全体を特定の状態にするための細々とした処理の
1つなら状態を表すenumでもセットしてフォーム側でやったほうがよくね?とか
要するに外部からLabel1のオブジェクトが欲しくなるということ自体が
きちんと設計出来てないだけという可能性が濃厚
0744デフォルトの名無しさん
2009/11/27(金) 01:29:33のありがたみを体で感じられるようなプログラムはないかね。
ボタンを押したらpictureboxにキャラが現れて「がんばれー!」って表示するだけみたいな
簡単なプログラムしか作らんからオブジェクト指向なんてどうでもいいわ!
0745デフォルトの名無しさん
2009/11/27(金) 01:40:54でも、せめてLabel1にちゃんとした名前を付けて使って欲しいわ
0746デフォルトの名無しさん
2009/11/27(金) 01:44:10C[0] = C[1];
class D = new class(e);
C[1] = D;
とした場合、C[0]の中身はDですか?それともclass(b)ですか?
参照ではなくコピーが渡されてるのか、それともすべてに参照が入っているだけだからclass(b)の参照がC[1]に入っていただけであって
Dをいれてもclass(b)は消滅しないのかを聞きたいんです。
0747デフォルトの名無しさん
2009/11/27(金) 01:49:56「参照できるかどうか」つまりそのオブジェクトを誰かが触ることができるかを考えて
0748デフォルトの名無しさん
2009/11/27(金) 01:58:45むしろ、LabelSetterがフォームの外に出てるのはどうなんだろうな
0749デフォルトの名無しさん
2009/11/27(金) 02:03:05とかウソ書いてる本をどうにかしろ!
C#でやったらファイルストリームだのグラフィックマネージャだのキーボードイベントだの明らかに「具体的な物」じゃないものも
オブジェクトになってるじゃねぇか!
うそ書いてる本の作者どもくたばれや!
0750デフォルトの名無しさん
2009/11/27(金) 02:03:11module LabelSet
sub func()
Form1.Label1.Text="がんばれ"
end sub
end module
0751デフォルトの名無しさん
2009/11/27(金) 02:13:20いやいやIOとCPU処理が絡むときに並列処理を考えるのは分かるけどな。
>>705の書きこみ見てそれで速くなると思うのかい?
解析とファイルIOの負荷の割合も分からんからまずどんな程度の処理か聞いてみたんだが、
ともかくこの内容で言える範囲なら、複数ファイルを並列じゃなくて
まずファイルIOと解析を並列にっていうのが普通だ。
解析が非常に重いなら、解析部分はコア数分並列化ってのはもちろん考えるけどな、
>>705の書きこみではその辺分かってやってるとは思えんよ。
分かってるならもう少し具体的な書き方になるはずだ。
そうしないとアドバイスのしようがないのは明らかだからな。
0752デフォルトの名無しさん
2009/11/27(金) 02:15:44スレッドをきれいに自分で処理して・・・
ってレベルでもなさそうだし
>>751に1票
0753デフォルトの名無しさん
2009/11/27(金) 02:24:38・ファイルIOが遅い
→IOと解析を別スレッドでやる(複数ファイルを別スレッドではない)。
ただし解析が非常に軽いならほとんど効果がない可能性が高い。
解析がそれなりに重い場合やファイルが小さい場合は効果が期待できる
・解析が重い
→マルチコアの場合に限り、ファイルIOは順に行うままで、解析を複数スレッドで行う。
ただしファイルが大きい場合は一つのファイルでの解析が複数スレッド化できるほうが望ましい。
ファイルが小さいなら、読み込み終わったファイルから順に別スレッドで実行するようにする。
ただし同時に実行させるスレッド数はプロセッサ数かそれプラス1程度に抑える。
まあ、10スレッド以内程度なら極端に遅くなったりはしないが、30は明らかにやりすぎ。
スレッドプールのスケジューリングでうまくスレッド数が抑えられるならそれでもいいが。
ファイルIOを非同期でって意見が出てくるかも知れんが、
多分それでパフォーマンスを出すのは難度が高いと思うよ。
0754デフォルトの名無しさん
2009/11/27(金) 02:29:47どうしたら良いんでしょうか…
0755デフォルトの名無しさん
2009/11/27(金) 02:38:020756デフォルトの名無しさん
2009/11/27(金) 04:09:19>>755の言うとおり、FormのKeyPreviewをtrueにすればFormで一括管理できる
WebBroeserControl使ってるなら
WebBrowserのKeyPreviewイベントを使うか
ProcessCmdKeyで書く方が楽
0757デフォルトの名無しさん
2009/11/27(金) 06:06:04ただ、テキストの解析程度でI/Oに比べて処理が重いとしたら、処理自体に問題があるんじゃないかな
0758デフォルトの名無しさん
2009/11/27(金) 06:10:140759デフォルトの名無しさん
2009/11/27(金) 08:53:05プロパティの一番の利点は後からの修正に強いことだからなぁ。
完成品なプログラムじゃありがたみわかんない。
0760デフォルトの名無しさん
2009/11/27(金) 10:26:43リストの追加の柔軟性のなさ・・・!
0761デフォルトの名無しさん
2009/11/27(金) 11:00:130762デフォルトの名無しさん
2009/11/27(金) 12:02:56C#でいうstatic classとは機能面で違うのか?
0763デフォルトの名無しさん
2009/11/27(金) 12:07:47static非インスタンスじゃね?
0764デフォルトの名無しさん
2009/11/27(金) 12:09:58static class…インスタンス作らない
0765デフォルトの名無しさん
2009/11/27(金) 12:34:010766デフォルトの名無しさん
2009/11/27(金) 12:38:38この書籍はなかなかいいぞ
↓
オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―
tp://www.amazon.co.jp/dp/4822281957
0767デフォルトの名無しさん
2009/11/27(金) 14:45:51デレゲートとラムダ式でぶわっと膨らんだ部分でもって、ソースを見ても理解できない状態。
みんな頭いいね〜。
0768デフォルトの名無しさん
2009/11/27(金) 14:47:39C#出来てC++出来ない奴も同じことを言うかもしれんな
結局慣れろ だろ
0769デフォルトの名無しさん
2009/11/27(金) 14:48:47頭のよさなんて関係ない
0770デフォルトの名無しさん
2009/11/27(金) 14:58:33初心者らしくもっと基礎的なことやれ
0771デフォルトの名無しさん
2009/11/27(金) 15:00:17俺はやればできる子なんです><
0772デフォルトの名無しさん
2009/11/27(金) 15:04:43そうか、好きにしろ
0773デフォルトの名無しさん
2009/11/27(金) 15:21:570774デフォルトの名無しさん
2009/11/27(金) 15:38:23どういう仕様だよ・・・・
0775デフォルトの名無しさん
2009/11/27(金) 15:44:37レアメタル最高とか言っちゃうの?
0776デフォルトの名無しさん
2009/11/27(金) 15:46:25System.Math.〜
って書かないといけないけど、System.Mathを省略する方法は無いのでしょうか?
0777デフォルトの名無しさん
2009/11/27(金) 15:50:060778デフォルトの名無しさん
2009/11/27(金) 15:54:13int a = Abs(-3);
って書きたいんだろ。
>>776
できません。
諦めてVB使ってなさい。
0779デフォルトの名無しさん
2009/11/27(金) 15:56:52何だかセンス無い仕様ですね(´・ω・`)
0780デフォルトの名無しさん
2009/11/27(金) 15:57:310781デフォルトの名無しさん
2009/11/27(金) 16:04:08int a = Math.Abs(-3);
0782デフォルトの名無しさん
2009/11/27(金) 16:04:110783デフォルトの名無しさん
2009/11/27(金) 16:07:070784デフォルトの名無しさん
2009/11/27(金) 16:18:54static void Abs(int x){
Math.Abs(x);
}
これでいいじゃん。
0785デフォルトの名無しさん
2009/11/27(金) 16:22:12それ売れると思う( ・ω・)y─┛〜〜
0786デフォルトの名無しさん
2009/11/27(金) 16:23:270787デフォルトの名無しさん
2009/11/27(金) 16:24:320788デフォルトの名無しさん
2009/11/27(金) 16:25:390789デフォルトの名無しさん
2009/11/27(金) 16:27:43Console.WriteLine書くのめんどくせーから
static void Main(){
W("aaaaaaa");
}
static void W(string s){
Console.WrieLine(s);
}
これで動く。Console.WriteLineとかいう糞長いメソッドを書かなくてもよくなる。便利!
0790デフォルトの名無しさん
2009/11/27(金) 16:35:55残念だが俺はなかったようだ
君の中では特殊な部類にはいるようだ
0791デフォルトの名無しさん
2009/11/27(金) 16:36:13数学関数が長ったらしくて嫌なのはわかる
でも、それやったら標準ライブラリの静的メソッドが
全部予約語になっちゃうようなもんだよね
かえって自分が困るのはすぐに想像付くでしょ
求めるなら名前空間・クラス名の省略じゃなくて
数学関数を演算子として言語に組み込んでくれ〜って
MSにお願いして奇跡が起これば対応してくれるかもね
とりあえず好き放題出来るようにパーサでも作りなよ
0792デフォルトの名無しさん
2009/11/27(金) 16:40:180793デフォルトの名無しさん
2009/11/27(金) 16:41:32ためしに消してみればわかる
0794デフォルトの名無しさん
2009/11/27(金) 16:42:09イベント デリゲート オーバーライド 参照型 継承 静的 演算子 メソッド
ポリモーズム オーバーロード インスタンス ラムダ式 クエリ式 プロパティ
意味がわかる言葉
コンストラクタ 変数 文字列 クラス 戻り値 構造体 配列
for if while switch case
0795デフォルトの名無しさん
2009/11/27(金) 16:43:13ググったらどれもそれなりに解説があるだろうに
0796デフォルトの名無しさん
2009/11/27(金) 16:45:06math.Abs(x);
C#4.0で自分でDynamicMetaObject作ればこういうのも可能だなw
0797デフォルトの名無しさん
2009/11/27(金) 16:46:010798デフォルトの名無しさん
2009/11/27(金) 16:46:39ぐぐったらぐぐったでさらに意味不明用語の羅列で余計わけわからなくなるんだよ
0799デフォルトの名無しさん
2009/11/27(金) 16:49:10どうせ皆、意味不明な言葉に一度や二度くらい悩んで解釈見つけ出してるんだし
同じような判らない なら判りやすい解釈出してくれるかもしれないぞ
0800デフォルトの名無しさん
2009/11/27(金) 16:50:10そのタマネギ目にしみるかもしれないけど、最後まで剥けば中にタネ入ってるよ
がんばって!
0801デフォルトの名無しさん
2009/11/27(金) 16:50:21バグのないプログラム 納期厳守 お前のコードにはキレがない
うちの上司のお言葉( ・ω・)y─┛〜〜
0802デフォルトの名無しさん
2009/11/27(金) 16:51:47>お前のコードにはキレがない
ワロタw
たぶん「オレ好みの書き方じゃない」って意味だよ
0803デフォルトの名無しさん
2009/11/27(金) 16:52:53バグのないプログラム→ねぇよ
納期厳守→工程がちゃんと組めるならな
お前のコードにはキレがない→はぁ?お前のションベンと同じだろうが
俺なりの解釈
0804デフォルトの名無しさん
2009/11/27(金) 16:53:52ミクロソフトが最初から作ってるクラス(Formとか)を除き
インターフェースや中小クラスだけ継承して通常のクラスはオーバーラオドしないほうがいいな!
class a{
vartul func();
}
class b : a{
overide func();
}
class c : b{
overide func();
}
こんなだったらいちいちどのメソッドが引き継いでるとか考えなきゃいけなくてわかりづらいな!
0805デフォルトの名無しさん
2009/11/27(金) 16:55:59ものによるなあ
コントロール作るのは継承でないとやってられんw
0806デフォルトの名無しさん
2009/11/27(金) 17:04:190807デフォルトの名無しさん
2009/11/27(金) 17:07:31特定のビットだけ0の値は論理否定を使うと楽
0808デフォルトの名無しさん
2009/11/27(金) 17:07:36昔、8086のファームやっていた時には良くやったけどなー。
そんな関数無かったっけ?
ベタなやり方は、一旦、2進にして特定ビットだけ0マスクしたものとのANDをとる。
0809デフォルトの名無しさん
2009/11/27(金) 17:10:22インデクサ使うのもいいよね
0810デフォルトの名無しさん
2009/11/27(金) 17:18:55コードは書けても設計出来ない
マクロな事はわかっても全体をみわたせない
技術大国日本は過去の話と実感しますた(´・ω・`)
0811デフォルトの名無しさん
2009/11/27(金) 17:19:58すいません、その特定のビットだけ論理積とれたらいいんですがやり方がわからなかったのです
>>808
なるほど!できましたありがとうございます!
0812デフォルトの名無しさん
2009/11/27(金) 17:22:560813デフォルトの名無しさん
2009/11/27(金) 17:22:560814デフォルトの名無しさん
2009/11/27(金) 17:26:200815デフォルトの名無しさん
2009/11/27(金) 17:27:41研究職のやつらのほうが実用的なコードすらすら書けちゃったら
そっちのほうが技術大国とは程遠いだろ
土方頑張れよ
0816デフォルトの名無しさん
2009/11/27(金) 17:29:53低賃金なのを理系は優遇されないとかいっちゃうお花畑な脳内じゃ日本も先はないさ
0817デフォルトの名無しさん
2009/11/27(金) 17:31:14大学とかは大体そんなもん
0818デフォルトの名無しさん
2009/11/27(金) 17:31:370819デフォルトの名無しさん
2009/11/27(金) 17:33:02えっ?
0820デフォルトの名無しさん
2009/11/27(金) 17:43:37Direct Xとやらは使えないの?
0821デフォルトの名無しさん
2009/11/27(金) 17:45:480822デフォルトの名無しさん
2009/11/27(金) 17:54:19うちら仕事なくなるっす
0823デフォルトの名無しさん
2009/11/27(金) 17:58:120824デフォルトの名無しさん
2009/11/27(金) 17:59:37企業にとっては税金対策の駒
0825デフォルトの名無しさん
2009/11/27(金) 18:01:560826デフォルトの名無しさん
2009/11/27(金) 18:04:11使えないのはそれなりにいて
残りは普通
PGも一緒じゃね
0827デフォルトの名無しさん
2009/11/27(金) 18:07:35.Netのクラスライブラリを全否定するお前は何者だよ
0828デフォルトの名無しさん
2009/11/27(金) 18:13:030829デフォルトの名無しさん
2009/11/27(金) 18:20:50ファイル→すべてを保存とかやるより
CTRL+Sキーを押したほうが入力が速いな!
プログラミング作業にマウスは必要ねーな。作業遅くなるだけでウンコ
0830デフォルトの名無しさん
2009/11/27(金) 18:26:03そんなの俺がMac SE/30を手に入れた1990年6月の時点で常識だ。
0831デフォルトの名無しさん
2009/11/27(金) 19:05:14コンストラクタ デリゲート オーバーライド 参照型 構造体 クラス
ポリモーズム オーバーロード ラムダ式 クエリ式
意味がわかる言葉
イベント 変数 文字列 インスタンス 戻り値 配列 継承
for if while switch case 静的 演算子 プロパティ メソッド
0832デフォルトの名無しさん
2009/11/27(金) 19:05:39もちろん"hh"、"HH"他、フォーマット文字列は基本的に問題ないんです。"h"と"H"だけがダメ。
12時間制ないし24時間制で、ゼロパディングしない時間表記が得られる事を期待して射るんですが。
System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("ja-JP");
DateTime dt = DateTime.ParseExact("2009/03/05 19:11:12", "yyyy/MM/dd HH:mm:ss", cultureInfo);
MessageBox.Show(dt.ToString("xxx", cultureInfo));
0833デフォルトの名無しさん
2009/11/27(金) 19:10:04カスタムの日付と時刻の書式指定文字列
のページの一番下
0834832
2009/11/27(金) 19:22:28ありがとうございます!
"%h"とか"%H"って書く必要があったということですね。標準日時指定子なんてまったく知らなかった。
調べたつもりになってたんですが、リファレンスマニュアルは隅々まで読まないとダメですね。
他の1文字指定子は使ってなかったので気づきませんでした。
0835デフォルトの名無しさん
2009/11/27(金) 19:40:03やっぱりC#に戻ってきたよ。
0836デフォルトの名無しさん
2009/11/27(金) 19:41:330837デフォルトの名無しさん
2009/11/27(金) 19:45:11汎用型ならa>bくらいできるようにしろよ!
a>bが判定できないなんてクソだよ!ファック!
0838デフォルトの名無しさん
2009/11/27(金) 19:48:350839デフォルトの名無しさん
2009/11/27(金) 20:29:59ヒント:クラスや構造体
0840デフォルトの名無しさん
2009/11/27(金) 20:44:49下記のように、単純に全部を保存したいだけなんですが、
選択された項目を取得する方法しか見つかりませんでした。
for (int i = listBox1.Length -1; i >= 0; i--)
{
File.AppendAllText(filepath, item[i], enc);
}
0841デフォルトの名無しさん
2009/11/27(金) 20:58:39なんかクラスから半分飛び出してるみたいで気持ち悪いね。
0842デフォルトの名無しさん
2009/11/27(金) 21:02:25imre[i]
に
GetType()
つかうなりデバッグで止めるなりして型見ればいいと思う
0843デフォルトの名無しさん
2009/11/27(金) 21:05:44フレームワークを否定する気かよwwwww
int.MaxValueとかどうすんのよ
最初のMainとかどうすんのよ
そういえば気持ち悪いも何も当たり前すぎてそんな感覚なかったなぁ
でも、何かするのにいちいちインスタンス作らないといけないのも問題だと思うけど・・・
0844デフォルトの名無しさん
2009/11/27(金) 21:12:19その感覚はただしい
0845デフォルトの名無しさん
2009/11/27(金) 21:17:47すみません。型を見るってのがよくわからないです。
書きかたが悪かったでしょうか。
ループしてlistBoxのテキストを逆順に取得して保存したいです。
for (int i = listBox1.Count -1; i >= 0; i--)
{
File.AppendAllText(ファイルのパス, ?[i], エンコード);
}
この?の部分に何を入れたら良いのかわかりません。
listBox1.textだと選択されている項目しか取得できませんでした。
0846デフォルトの名無しさん
2009/11/27(金) 21:26:03aとbの符号が違うことを調べる関数はどうやるんですか?
bool 正負判定(int x,int y)
a=5、b=2なら
正負判定(a,b)はtrue
a=-3,b=-4でもtrue
a=3,b=-5ならfalse
みたいな感じです!よろしくお願いします!
0847デフォルトの名無しさん
2009/11/27(金) 21:28:37ゼロの場合どうすんの?
0848デフォルトの名無しさん
2009/11/27(金) 21:29:43言い方が悪かった
そのItemの中身の方にキャストしてから文字列にすれば?と思って言っただけなんだ
listBox1Items[i]
じゃないかな?
オブジェクトだから中身は多分文字列なんだろうから .ToString()でもつけりゃいいと思う
listBox1Items[i] .ToString()
違ってたらごめんよ
0849デフォルトの名無しさん
2009/11/27(金) 21:31:59a>0 && b>0
return true;
a>0 && b<0
return true;
ifつけてこんな感じですか?
でもifがいっぱいついてかっこわるいです。もっとスマートな書き方ないですか?
一文でできるような。
0850デフォルトの名無しさん
2009/11/27(金) 21:32:190851デフォルトの名無しさん
2009/11/27(金) 21:33:29正しいわけがないだろw
むしろこういう、馬鹿なくせに自分を疑うことを知らない奴の方が気持ち悪いよ。
クラスはインスタンス(オブジェクト)の元であると同時に、
クラス自身もオブジェクトだって考えることができれば、staticなメンバの存在は
少しも違和感ない。
0852デフォルトの名無しさん
2009/11/27(金) 21:34:15ありがとうございます!
listBox1.Items[i].ToString() で出来ました。
0853デフォルトの名無しさん
2009/11/27(金) 21:35:00基本は
return a * b >0 若しくは return a * b >=0
0の扱いをどうするかで色々変わるね
0854デフォルトの名無しさん
2009/11/27(金) 21:44:52849じゃないけどなるほどなぁ。
こういう人が向いてるんだろうな……。
0855デフォルトの名無しさん
2009/11/27(金) 21:49:270856デフォルトの名無しさん
2009/11/27(金) 21:53:13初心者プログラマが新種のキンタマ作って大暴れしてるみたいだなw
0857デフォルトの名無しさん
2009/11/27(金) 21:55:01我ながらかっこ悪いw
0858デフォルトの名無しさん
2009/11/27(金) 21:55:23お?どっからその情報みつけたの?俺も教えてくれ
これは香ばしい・・・・
0859デフォルトの名無しさん
2009/11/27(金) 21:58:12気になるならdoubleでキャストしてから掛けたら大概大丈夫だ
0860デフォルトの名無しさん
2009/11/27(金) 22:00:460861デフォルトの名無しさん
2009/11/27(金) 22:10:090862デフォルトの名無しさん
2009/11/27(金) 22:13:46元々double使っているよな
だから
return a * b >0 で問題になることは、まず起こらないよ
0863デフォルトの名無しさん
2009/11/27(金) 22:22:11したい場合には、どうしたらいいでしょうか?
0864デフォルトの名無しさん
2009/11/27(金) 22:27:40やっぱり肉球(´・ω・) カワイソス 山田ヲチスレ 766
http://hideyoshi.2ch.net/test/read.cgi/download/1259073725/
0865デフォルトの名無しさん
2009/11/27(金) 22:41:350866デフォルトの名無しさん
2009/11/27(金) 22:47:07サンクス
ちょっと言ってくる
0867デフォルトの名無しさん
2009/11/27(金) 22:50:38どんな理屈だよ。
return (a >> 31) & (b >> 31) != 0
未確認
まあ>>857が一番いいだろうな。
0868デフォルトの名無しさん
2009/11/27(金) 22:51:460869デフォルトの名無しさん
2009/11/27(金) 22:53:10かな?
0870デフォルトの名無しさん
2009/11/27(金) 23:12:21考えすぎ
a ^ b < 0
でいい。
0871デフォルトの名無しさん
2009/11/27(金) 23:13:350872デフォルトの名無しさん
2009/11/27(金) 23:43:42for文
{
関数A();
}
関数B();
このように、for文の中で関数Aを実行し、それが終わり次第関数Bを実行してほしいのですが、
関数Aの処理が終わらないうちに関数Bが実行されてしまいます
なにかうまい方法はありませんか
0873デフォルトの名無しさん
2009/11/27(金) 23:45:010874デフォルトの名無しさん
2009/11/27(金) 23:45:010875デフォルトの名無しさん
2009/11/27(金) 23:46:020876デフォルトの名無しさん
2009/11/27(金) 23:46:591の1乗=1
1の-1乗=1
-1の1乗=-1
-1の-1乗-1
なのになんでa^b で判断できるんだ?
0877デフォルトの名無しさん
2009/11/27(金) 23:50:15ありがとうございます
0878デフォルトの名無しさん
2009/11/27(金) 23:51:29エスパーすると、Formアプリで
関数Aでlabel.TextとかForm.Textを変更してるのに
更新されないとかじゃないのか。
this.Reflesh() (この場合thisはFormね)とかしてみれば?
0879デフォルトの名無しさん
2009/11/27(金) 23:53:15おまえはいっぺんC言語から見直したほうがいい
0880デフォルトの名無しさん
2009/11/28(土) 00:03:09オーバーフローにケチ付ける割に、整数型以外考えていないのなw
0881デフォルトの名無しさん
2009/11/28(土) 00:08:11byte、short、long、int64でも破綻とかw
0882デフォルトの名無しさん
2009/11/28(土) 00:10:030883デフォルトの名無しさん
2009/11/28(土) 01:04:30enum 難易度 {簡単,普通,難しい}
難易度 難易度2;
難易度2=難易度.簡単
みたいになってでてこなくていい最初の型名がでてくるのがうざい
難易度=簡単
みたいにできないの?
0884デフォルトの名無しさん
2009/11/28(土) 01:08:28enum 定期試験の難易度 {簡単,普通,難しい}
enum 受験の難易度 {難しい,普通,簡単}
があって 簡単 だけを指定した時どっちになるんだ?
0885デフォルトの名無しさん
2009/11/28(土) 01:26:42難易度 簡単{get{return 難易度.簡単}}
は冗談として、出来ない。
確かに、代入する変数の型が確定している時はenumの型を指定するのは冗長ではあるし、
省略できても文法的に破綻はしない気がする。
でも、心配しなくてもそのうちそんなこと「出来てもむしろしたくない」
と思うようになるから。
0886デフォルトの名無しさん
2009/11/28(土) 01:33:09enum 型名 {1,2,3}
型名 型名2 =型名.1
みたいにやるか。わざわざ型名と型名2とほぼ同じ名前を二つ作るところがあれだが、そういう仕様なら仕方ない。
0887デフォルトの名無しさん
2009/11/28(土) 01:35:46難易度 難易度 =難易度.簡単
ができた。これならまだいいな
0888デフォルトの名無しさん
2009/11/28(土) 02:28:47byteで破綻しない方法を教えてくれw
まあint32ですら破綻するよりはましなんじゃね?
0889デフォルトの名無しさん
2009/11/28(土) 03:00:49return ((a < 0) == (b < 0));
return ((a > 0) == (b > 0));
return ((a <= 0) == (b <= 0));
return ((a >= 0) == (b >= 0));
0890デフォルトの名無しさん
2009/11/28(土) 03:11:480891デフォルトの名無しさん
2009/11/28(土) 04:00:01ISomething GetSomething();
}
public class A : ISomething {
public A GetSomething(){ return this; } //実装
}
みたいなのが実装しているとみなされれば楽なのになーと思う時がある。
ファクトリ作ってる時とか。
0892デフォルトの名無しさん
2009/11/28(土) 04:15:260893デフォルトの名無しさん
2009/11/28(土) 04:16:100894デフォルトの名無しさん
2009/11/28(土) 04:21:44を
b = a.GetSomething();
と書きたいのか
0895デフォルトの名無しさん
2009/11/28(土) 04:28:15ビルドしてできたexeと同じファイルにおいておけば別のPCでも起動できるの?
自作のDLLやMSが最近だした新しいDLLで作ったのを配布する際は
ZIPにDLLとEXE両方うめこめばいい?
0896デフォルトの名無しさん
2009/11/28(土) 05:06:30あるインタフェースAを返すメソッドmethodが、別のあるインタフェースBに定義されているとする。
ここでインタフェースBを実装するクラスB'のmethodにおいて、インタフェースAではなく
インタフェースAを実装するクラスA'を返すことを許容してほしいということ。
0897デフォルトの名無しさん
2009/11/28(土) 05:17:040898デフォルトの名無しさん
2009/11/28(土) 05:17:27わざわざコード書かなくても、そういうのは「共変な戻り値型」と言えばすぐに伝わるよ
0899デフォルトの名無しさん
2009/11/28(土) 06:51:560900デフォルトの名無しさん
2009/11/28(土) 08:47:19デリゲートに関しては許容されてるそうだね。
http://ufcpp.net/study/csharp/sp_delegate.html#co-contra
C#4.0だとジェネリックスでも許容されるそうだね。
http://ufcpp.net/study/csharp/ap_ver4.html#variance
0901デフォルトの名無しさん
2009/11/28(土) 09:12:260902デフォルトの名無しさん
2009/11/28(土) 09:27:41それを認めてしまうと、名前が衝突しまくって困るんだよ。
C++ の enum がそうかけてしまって、冗談抜きで困ったから。
あと、C# みたいにインテリセンス前提の言語だと、
型名. って打った時点で候補が出てくる方が都合がいい。
0903デフォルトの名無しさん
2009/11/28(土) 09:28:53ポインターは値。アドレスを格納した単なる数値。
int とか long とかもオブジェクトといえばオブジェクトだし、
その理屈で行くとポインターもオブジェクト。
0904デフォルトの名無しさん
2009/11/28(土) 09:32:54A Method() { return new A(); }
ISomeThing ISomeThing.Method() { return this.Method(); }
0905デフォルトの名無しさん
2009/11/28(土) 09:48:41#なのに…
0906デフォルトの名無しさん
2009/11/28(土) 09:49:36そういう意味じゃない。
A : IHoge なら
メソッドシグネチャが
IHoge Method() な場合でも
A Method()での実装を許して欲しいなって話。
0907デフォルトの名無しさん
2009/11/28(土) 09:51:58整合性すらとれないぞw
0908デフォルトの名無しさん
2009/11/28(土) 09:59:22基本的にはそう
> MSが最近だした新しいDLL
MS が頒布するのって大抵インストーラつかわね?
あとusingはdllとは関係ない
0909デフォルトの名無しさん
2009/11/28(土) 10:00:09何故?
どういう時に整合性がとれなくなる?
デリゲートとかでは許容されてるんだよ?
0910デフォルトの名無しさん
2009/11/28(土) 10:02:27そうでもない。
実際にJavaやDでは実装されてる。
>>906
CLIが共変な戻り値型によるオーバーライドを認めてないから、
言語レベルで実装する場合>>904のシンタックスシュガーにするしかないだろうな
0911デフォルトの名無しさん
2009/11/28(土) 10:07:080912デフォルトの名無しさん
2009/11/28(土) 10:07:420913デフォルトの名無しさん
2009/11/28(土) 10:08:24ぐぐれかす
0914デフォルトの名無しさん
2009/11/28(土) 10:09:060915デフォルトの名無しさん
2009/11/28(土) 10:09:25http://blogs.wankuma.com/shannon/archive/2007/02/14/62275.aspx
0916デフォルトの名無しさん
2009/11/28(土) 10:10:574.0からは実際に実装されるわけなんだよな。
通常のメソッドで許可しないのはメリットが少ないからなのかね。
0917デフォルトの名無しさん
2009/11/28(土) 10:11:27>>891見て見ろよ
全く違うだろ
0918デフォルトの名無しさん
2009/11/28(土) 10:15:24メリット少ない割に実装が大変だったり混乱招く機能は C# にはまず入らない。
0919デフォルトの名無しさん
2009/11/28(土) 10:17:41え?一緒だよ?
むしろ >>900ちゃんと読め。
A : ISomeThing な時に
ISomething GetSomething() なシグネチャーに
A GetSomething() な実装を許せって話だよ。
デリゲートの場合は
A: ISomeThing の場合、
delegate ISomething GetSomething() に
A GetSomethingImpl() の代入を許可してる。
0920デフォルトの名無しさん
2009/11/28(土) 10:18:34俺は>>900読んで混乱してしまった。
0921デフォルトの名無しさん
2009/11/28(土) 10:19:24できたからといって特に便利になるわけじゃないからな
デリゲートが共変反変使えるようになってるのは使い回せるから
ジェネリックはほとんどIEnumerable<out T>専用だけどよけいなCast<T>やOfType<T>を減らせる
0922デフォルトの名無しさん
2009/11/28(土) 10:22:23たとえば
List<ISomething> を処理する何かに List<A> をそのまんまわたせるようになるってことか。
つかそれ今迄出来なかったんだな
0923デフォルトの名無しさん
2009/11/28(土) 10:23:57Tの使い方を読み取りか書き込みに限定しないとタイプセーフが保たれない
だからoutとinなの
0924デフォルトの名無しさん
2009/11/28(土) 10:26:31旨みがない=ジェネリックはほとんどIEnumerable<out T>専用ってことかぁ。
0925デフォルトの名無しさん
2009/11/28(土) 10:33:01>混乱招く機能
dynamic は正直どうかと思う
0926デフォルトの名無しさん
2009/11/28(土) 10:38:43IComparer<MyDerived>を引数に取るメソッドにIComparer<MyBase>を渡せたりする
(MyDerivedはMyBaseを継承しているとする)
0927デフォルトの名無しさん
2009/11/28(土) 10:42:07ドキュメントが頼りになりそうだな。
// !!CAUTION!! x はAddメソッドとResultプロパティを持つ必要があります
void doSomething(dynamic x);
0928デフォルトの名無しさん
2009/11/28(土) 10:48:48まとめると>>900はC#4.0ではどうけるようになるのさ
0929デフォルトの名無しさん
2009/11/28(土) 10:52:34どうける=どう書けるだとして
同じサイトの詳細を読んだら?
http://ufcpp.net/study/csharp/sp4_variance.html
0930デフォルトの名無しさん
2009/11/28(土) 11:03:29さすがにそういう使い方する奴は「そんなには」出ないと思う・・・
0931デフォルトの名無しさん
2009/11/28(土) 11:03:380932デフォルトの名無しさん
2009/11/28(土) 11:03:56>>891はC#4.0ではどう実装するの?
だったw
共変性と反変性が実装されるただけで書ける?
0934デフォルトの名無しさん
2009/11/28(土) 11:06:460935デフォルトの名無しさん
2009/11/28(土) 11:10:18ジェネリックやデリゲートとはまったく別の話
たぶんインターフェイスメソッドを実装するときや
基底クラスのメソッドをオーバーライドする際の共変反変はたぶん未来永劫サポートされない
メリットがほとんど無いからね
0936デフォルトの名無しさん
2009/11/28(土) 11:11:34ジェネリクスでの共変性と反変性が導入されるだけだから
>>891は今のところ実装されないよ。
現状デレゲート(と4.0ジェネリクス)だけそういう書き方が出来る。
0937デフォルトの名無しさん
2009/11/28(土) 11:13:53メリットより直交性を取ったのかね
0938デフォルトの名無しさん
2009/11/28(土) 11:14:44ですよねーw
>>891からの流れだったからこの話前提に聞いてた
どーりでわけわかめな訳だ
理解した
0939デフォルトの名無しさん
2009/11/28(土) 11:17:13C#はバージョン管理に異常に気を使ってる言語だからそういう関係もあるんだと思う
0940デフォルトの名無しさん
2009/11/28(土) 11:24:06なるほど。
実装の都合ってのもあるわけだしね。
Javaはどうなってるのか色々見てみたけど
ジェネリックスでの共変実現のためにあっちはワイルドカードを使うのか・・・
in out で制限しつつのC#のやり方は結構スマートなんだな。
0941デフォルトの名無しさん
2009/11/28(土) 11:24:21できるけどMSのdllを勝手にローカルコピーで配布したらライセンス違反だ
0942デフォルトの名無しさん
2009/11/28(土) 11:29:01ICloneable を実装して使うときに一々キャストしなくて良くなるわ。
あとはわからん・・・
0943デフォルトの名無しさん
2009/11/28(土) 11:29:45ダウンキャストを減らすことができるからバグ混入の可能性が減る
0944デフォルトの名無しさん
2009/11/28(土) 11:32:25広く使われてるからさすがに本家の.NETでObsolete指定されることは無いだろうが
Silverlightでは消えた
理由は「仕様が不明で役に立たないから」らしい
0945デフォルトの名無しさん
2009/11/28(土) 11:32:48>>942とセットで考えるとそういうことか。
メリットが無いわけでもないんだな。
0946デフォルトの名無しさん
2009/11/28(土) 11:33:160947デフォルトの名無しさん
2009/11/28(土) 11:34:31普段は不要だけどいざ必要になったときにヤキモキするタイプの仕様だ、これは。
0948デフォルトの名無しさん
2009/11/28(土) 11:35:37せめてディープコピーかシャローコピーかくらいは仕様で決めてもらわないと
使いようがない
0949デフォルトの名無しさん
2009/11/28(土) 11:36:27それだ!
interface ICloneable<out T> {
T clone();
}
class Hoge : ICloneable<Hoge> {
Hoge clone();
}
こういうこと??
0950デフォルトの名無しさん
2009/11/28(土) 11:36:33考えてみろよ。それ実装するの物凄くうざいぞwww
0951デフォルトの名無しさん
2009/11/28(土) 11:37:250952デフォルトの名無しさん
2009/11/28(土) 11:39:33C# の場合は >>904 みたいな書き方推奨だから。
ICloneable も、>>904 の書き方すれば、静的に Clone 呼ぶ分にはキャスト不要。
0953デフォルトの名無しさん
2009/11/28(土) 11:43:43考え方の問題だからそれを面倒とかどうとか言っても仕方がない
0954デフォルトの名無しさん
2009/11/28(土) 11:45:32バージョン管理重視っていうのは何のことを指しているんでしょうか?
言語仕様の話??
適当にWebで拾い食いしてるだけじゃやっぱ色々わかんないままになるな・・・
共変反変の概念も今日はじめてしったよ・・・
0955デフォルトの名無しさん
2009/11/28(土) 11:48:080956デフォルトの名無しさん
2009/11/28(土) 11:52:26それやりたいだけならout無しでもいけるぞ。
ICloneable<Hoge>とIClonenable<Huga>だのをICloneable<Object>(の配列とか)につっこみたければ
out が必要になるが。
そう考えると Hogehoge<out T> と Hogehoge<Object> を使えばメソッド戻り値の共変性はサポートされたも
同然ってことじゃない?
0957デフォルトの名無しさん
2009/11/28(土) 11:54:00何か色々間違ってそうな気がするんだけど頭がグルグルしてわからん
0958デフォルトの名無しさん
2009/11/28(土) 11:54:05new修飾子によるオーバーロードで対応するべきだからだよ
バージョン管理の考え方についてはこのへん
http://msdn.microsoft.com/ja-jp/library/6fawty39(VS.80).aspx
0959デフォルトの名無しさん
2009/11/28(土) 12:03:53public interface ISomething<out T> where T : ISomething<out T> {
ISomething<out T> GetSomething();
}
public class A : ISomething<A> {
public A GetSomething() { return this; }
}
一応これで実現可能になったってことじゃね?
0960デフォルトの名無しさん
2009/11/28(土) 12:05:27いやだめだろそれじゃ。
結局最初の問題にもどってるw
0961デフォルトの名無しさん
2009/11/28(土) 12:08:470962デフォルトの名無しさん
2009/11/28(土) 12:08:49大体それ、C#じゃコンパイルできないんだろ?
ファクトリー関数はそのクラスごとにstatic methodで作っていくのが常道。
別にこれでほとんど困らん。
0963デフォルトの名無しさん
2009/11/28(土) 12:14:02A の方は public ISomething<A> GetSomething() { return this; } が正解。
どっちにしても A bar = (A)foo.GetSomething(); みたいにダウンキャストしないと駄目。
0964デフォルトの名無しさん
2009/11/28(土) 12:14:38JavaやDにはできない芸当だ
0965デフォルトの名無しさん
2009/11/28(土) 12:19:25cloneみたいなオブジェクト生成インターフェースの共変にジェネリック使うってアイデアは
やっぱすでに考えついてる人はいたみたいだ
http://srtsolutions.com/blogs/billwagner/archive/2005/06/17/covaraint-return-types-in-c.aspx
0966デフォルトの名無しさん
2009/11/28(土) 12:23:59それが気に入らないなら不便なのは仕方ない
0967デフォルトの名無しさん
2009/11/28(土) 12:25:20こんなやりとりも。
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=90909
で、そこ辿ったらこんなのも。
http://blogs.msdn.com/ericlippert/archive/2008/05/07/covariance-and-contravariance-part-twelve-to-infinity-but-not-beyond.aspx
0968デフォルトの名無しさん
2009/11/28(土) 12:32:53Dはちょっと前に明示的実装の文法話し合ってたから、そのうちできるようになるんじゃね
0969デフォルトの名無しさん
2009/11/28(土) 12:36:39//add.cs
namespace add{
//足し算クラス
}
これをadd.dllって名前にして
//MySample.cs
using add
//addを使ったプログラム
これをTest.exeって名前にしてコンパイルしたとき
Testにadd自体を埋め込みたいんだけど。
0970デフォルトの名無しさん
2009/11/28(土) 12:40:27名前空間とDLLは全く関係ないよ
add.csとMySample.csを一緒にコンパイルすれば一つになる
0971デフォルトの名無しさん
2009/11/28(土) 12:46:16そういうアプローチじゃなくても、MSBuildにかけるときに
単に2つのプロジェクトをマージすればいいだけだと思うんだけど
作ってみようかな
0972デフォルトの名無しさん
2009/11/28(土) 12:49:33そうなんだ。
ありがとう。
ILmergeって便利なソフトがあったんだね。
0973デフォルトの名無しさん
2009/11/28(土) 12:49:47そもそもDLLにしないなら1つのプロジェクトで作るべき
0974デフォルトの名無しさん
2009/11/28(土) 12:50:27それじゃあ質問に対する答えになってないだろ。
>>969
ほぼ同じ質問があってすでにオレが答えてる。
このスレ内にあるから調べろ。
0975デフォルトの名無しさん
2009/11/28(土) 12:53:160976デフォルトの名無しさん
2009/11/28(土) 13:00:160977デフォルトの名無しさん
2009/11/28(土) 13:29:58exeに埋め込みたくいろいろしらべたのですが方法がでてきません
0978デフォルトの名無しさん
2009/11/28(土) 13:32:350979デフォルトの名無しさん
2009/11/28(土) 13:35:19dllが単体で存在するって何だ?
exeに埋め込みたいって何をだ?
DLLの意味分かってるのか?
0980デフォルトの名無しさん
2009/11/28(土) 13:35:52なんでそんなにdllをいやがるのか理解できない <これもお約束
0981デフォルトの名無しさん
2009/11/28(土) 13:39:15建てられるかな
0982デフォルトの名無しさん
2009/11/28(土) 13:43:12ふらっとC#,C♯,C#(初心者用) Part49
http://pc12.2ch.net/test/read.cgi/tech/1259383252/
0983デフォルトの名無しさん
2009/11/28(土) 13:43:360984デフォルトの名無しさん
2009/11/28(土) 13:48:41exe.configが必要になるアプリだってあるし、
実行プログラム1個だけでOKなんて幻想に過ぎないよ。
0985デフォルトの名無しさん
2009/11/28(土) 13:53:510986デフォルトの名無しさん
2009/11/28(土) 14:02:430987デフォルトの名無しさん
2009/11/28(土) 14:05:590988デフォルトの名無しさん
2009/11/28(土) 14:16:030989デフォルトの名無しさん
2009/11/28(土) 15:37:280990デフォルトの名無しさん
2009/11/28(土) 15:38:280991デフォルトの名無しさん
2009/11/28(土) 15:39:340992デフォルトの名無しさん
2009/11/28(土) 16:22:48センス(の欠如)の問題ってこともあるけど、何かからの逃避(代償行動ってやつ)
なんじゃないのかなって気がするね。
0993デフォルトの名無しさん
2009/11/28(土) 16:36:21頭ではもう大丈夫ってわかってるのに不必要に手を洗ったり
ああいうやつか。
0994デフォルトの名無しさん
2009/11/28(土) 16:52:530995デフォルトの名無しさん
2009/11/28(土) 17:01:54本当に客観か?
0996デフォルトの名無しさん
2009/11/28(土) 17:04:450997デフォルトの名無しさん
2009/11/28(土) 17:08:53なんとか.exeとかなんとか.dllってのが「アセンブリ」?
0998デフォルトの名無しさん
2009/11/28(土) 17:10:48持ち運べる最小単位がアセンブリ
0999デフォルトの名無しさん
2009/11/28(土) 17:32:57自動的にusingに書き加えてくれよ。不親切だなあ。
1000デフォルトの名無しさん
2009/11/28(土) 17:35:5510011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。