ふらっとC#,C♯,C#(初心者用) Part77

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ

ふらっとC#,C♯,C#(初心者用) Part76
http://hibari.2ch.net/test/read.cgi/tech/1308639127/

■関連スレ
C#, C♯, C#相談室 Part67
http://hibari.2ch.net/test/read.cgi/tech/1308128665/
ミスターサタンのC#相談室 
http://hibari.2ch.net/test/read.cgi/tech/1092656075/
VB.NET質問スレ(Part36)
http://hibari.2ch.net/test/read.cgi/tech/1301828549/
くだすれC++/CLI(初心者用)part2
http://hibari.2ch.net/test/read.cgi/tech/1268613679/
2デフォルトの名無しさん:2011/07/08(金) 15:23:38.65
■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも
http://ideone.com/
コードを貼り付けてrun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。

直接貼る場合は下記サイトなどを利用してhtmlエンコードした方が
インデントも残って見やすいです
http://kawama.jp/php/encode_html.php
3 忍法帖【Lv=5,xxxP】 :2011/07/08(金) 16:27:23.10
>>1
おつ
4デフォルトの名無しさん:2011/07/08(金) 18:09:08.75
CやC++のような関数ポインタ使った関数の実行コードを、
C#の匿名メソッド→delegate→ラムダ式にだんだん置き換えていき、
コードがどんどん短くなっていくのを記録していた動画があったはずなんだが、見つからない…。
誰か上記のような動画知ってる人いませんか?
5デフォルトの名無しさん:2011/07/09(土) 00:39:53.65
TabControlコントロール下のタブをD&Dで動かせるようにしたいんですが、どのようにすればできるでしょうか?
6デフォルトの名無しさん:2011/07/09(土) 00:45:40.75
>>4
なんだろ、ありそうなのは、Tech EdのBOFか、INETA コミュニティ Open Dayとかかな。
7デフォルトの名無しさん:2011/07/09(土) 10:56:55.08
Form1のtabControlのTabPageのテキストをXMLシリアライザで保存しようと思ったんですが
XMLシリアライザでForm1クラスのオブジェクトを指定したら、InvalidOperationExceptionを吐いてしまいました
これは余計なものが入っているからエラーが出るんですか?
どのようにすればtabPageのテキストを保存することができるでしょうか・・・?
8デフォルトの名無しさん:2011/07/09(土) 11:01:35.19
>>7
標準コントロールはたぶん全部できない
XMLシリアライザで保存する際に使うクラスは全部がパブリックじゃないとダメなんじゃなかったっけ?

なのでやるとすれば保存用の専用クラスを作って、保存の前に値をコピーしてから保存
戻す際はその逆を行う
9デフォルトの名無しさん:2011/07/09(土) 11:44:06.22
質問です。
System.IO.Path.GetTempPath()
で得られるパスは完全に自由に使っても
大丈夫なパスということでいいんですよね?
10デフォルトの名無しさん:2011/07/09(土) 12:06:22.58
完全に自由に使う という意味がイマイチわからないけど
ユーザーのテンポラリフォルダだからファイル作成/削除はしていいんじゃない

自分が作ったファイル以外をいじるのはお行儀よくないけど
11デフォルトの名無しさん:2011/07/09(土) 12:35:51.09
>>10
深い意味は無いです。
安心して使います。ありがとうございました。
12デフォルトの名無しさん:2011/07/09(土) 12:45:31.50
>>8
ありがとうございます。パブリック限定だったら使えないです・・・
タブのインスタンスをprivateなListクラスで管理していて、プロパティでインスタンス毎渡してしまってるので
なんかいい方法ないですか?
13デフォルトの名無しさん:2011/07/09(土) 13:25:25.59
>>12
>>8の言うように専用のクラスを作るか、シリアライズやめて自分で読み書き
コレクションの状態を保存するんじゃなくて、コレクションの背後にあるデータを保存する
14デフォルトの名無しさん:2011/07/09(土) 14:55:08.25
C#って何で生まれたんですか?
15デフォルトの名無しさん:2011/07/09(土) 14:58:03.38
C#のおとーさんとおかーさんが布団の上で魚のように跳ね回ったから
16デフォルトの名無しさん:2011/07/09(土) 16:37:21.44
J++やMS謹製JAVAにケチつけられたから
17デフォルトの名無しさん:2011/07/09(土) 17:14:47.51
契約書のカンマの位置が問題だったのだ
結果的にC#が誕生して良かったが
18デフォルトの名無しさん:2011/07/09(土) 23:49:41.99
>>6
ありがとうございます。しかしどちらにも見つからず…orz
探しまくったところ、本家MSDNにあったのを発見しました。
http://www.microsoft.com/uk/msdn/nuggets/nugget/227/Decomposing-LINQ.aspx
19デフォルトの名無しさん:2011/07/10(日) 00:00:29.45
そんなフェチるような動画なのかな....
一辺見たらもう十分じゃないか?
いや人の趣味にケチつけるつもりは別にないけどさ
20デフォルトの名無しさん:2011/07/10(日) 00:18:20.67
どこの誤爆だ
21デフォルトの名無しさん:2011/07/10(日) 08:09:55.91
ほんと、今のJavaの惨状を見ると、
当時のSUNがあほなおかげでC#が生まれてほんとよかった。
22デフォルトの名無しさん:2011/07/10(日) 08:56:49.39
23デフォルトの名無しさん:2011/07/10(日) 11:00:28.56
以前ここで質問したものです
フォームに円を書いて、それをクリックしたらイベントを発生するサンプルを頂いたのですが
そのコードをまたみたいのですがどなたかご存知の方いませんか?
24デフォルトの名無しさん:2011/07/10(日) 11:01:36.20
みみずん検索などで過去ログ探してください
2523:2011/07/10(日) 11:01:38.16
書きもれました
円の部分のみクリックした場合にイベントが発生する質問です
過去スレを消してしまいコードがみれません
26デフォルトの名無しさん:2011/07/10(日) 11:04:01.90
過去ログな
過去のスレ消せるなら俺も消したい
2723:2011/07/10(日) 11:04:50.17
すいません
bin\Debugのところにコードとっといてありました
お騒がせしました
28デフォルトの名無しさん:2011/07/10(日) 11:05:32.35
>>21
アンドロイドアプリ
29デフォルトの名無しさん:2011/07/10(日) 11:08:02.49
>>28
Oracleに潰されかけてるパクロイドがなんだって?
30デフォルトの名無しさん:2011/07/10(日) 12:14:42.13
>>13
ありがとうございます。XMLシリアライザを使うのやめて自分でファイル書きだすことにしました
>>5も自分なんですが、やっぱりTabControl継承して自分でそれを実装したクラス作るしか無いですか?
31デフォルトの名無しさん:2011/07/10(日) 13:12:20.68
>>30
多分TabContro継承じゃなくて、panelからフルスクラッチになるんじゃ
CodeProjectでも漁って似たような物探した方が速いと思うよ
32デフォルトの名無しさん:2011/07/10(日) 13:17:28.61
TabControlをAllowDropにして、TabPageのMouseDownでDoDragDropするくらいじゃねえの
タブとタブの間にターゲットを示す線引いたりとかは中を弄らないと駄目だろうけど
33デフォルトの名無しさん:2011/07/10(日) 18:50:05.17
>>27ふらっと俺も見たくなったからupよろしこ
34デフォルトの名無しさん:2011/07/10(日) 19:28:16.55
>>28
何?
GoogleにJavaがらみの係争に勝って欲しいってこと?
それおtも、AndroidはJavaで書いたら遅くてやってらんねーぜってこと?
35デフォルトの名無しさん:2011/07/10(日) 20:32:46.97
そんな一行レス馬鹿に質問したって聞くに値する回答が返って来たことなんかないだろ

とかやってる馬鹿と一緒で根拠も自信もないのに口だけ挟みたい卑しい野郎なんだか
36デフォルトの名無しさん:2011/07/10(日) 20:36:35.59
どうしたの突然
癇に障った?
37デフォルトの名無しさん:2011/07/10(日) 23:29:03.47
APIスレにメトロノームが来てるぞ
38デフォルトの名無しさん:2011/07/10(日) 23:32:18.26
そう(無関心)
39デフォルトの名無しさん:2011/07/10(日) 23:55:48.99

MyClass my1 = new MyClass;
MyClass my2;

my2 = my1;
とするとmy1はmy2への参照になりますよね?
(my1の変更がmy2にも影響する)

単純にコピーして、それぞれ独立にするにはどうしたらいいでしょうか?
40デフォルトの名無しさん:2011/07/10(日) 23:57:00.17
クローン
41デフォルトの名無しさん:2011/07/11(月) 00:00:24.44
どのくらいのコピーかによる
インスタンスが独立していればいいのか
インスタンスの所持するフィールドも独立していなければならないのか
インスタンスの所持するフィールドが所持するフィールドも独立していなければならないのか
42デフォルトの名無しさん:2011/07/11(月) 00:02:02.26
「C# ディープコピー」でググレ
あと参照・・・ま、いっか
43デフォルトの名無しさん:2011/07/11(月) 00:14:35.32
やりたいのはディープコピーでした。調べてみます。

>>42
すいません。気になって0721できません。教えてください
44デフォルトの名無しさん:2011/07/11(月) 10:33:53.65
変更可能な他のクラスのオブジェクトへの参照を持ってないなら
public MyClass DeepClone() { return MemberwiseClone(); }
だけでおk
そうでない場合は参照先も複製する必要がある(できないかも)
ディープコピーで調べるとIClonableを実装するサンプルが出てくると思うけど
今は事実上Obsoleteなので実装しないように
45デフォルトの名無しさん:2011/07/11(月) 10:51:26.87
ディープコピー用のメソッドを用意するよりも、コンストラクタに
自身のインスタンスを渡してそれを元に初期化するようにしたほうがいいかも
いわゆるコピーコンストラクタ
メソッドにしてしまうと派生クラス作るときに必ずそのメソッドを
オーバーライドしてディープコピーをサポートしないといけなくなってしまう
MSも最近はICloneableやめてそっちに方針転換した(XElementなど)
46デフォルトの名無しさん:2011/07/11(月) 11:55:40.93
>>37は荒らしだな
電子工作板でも荒らしてた奴
47デフォルトの名無しさん:2011/07/11(月) 12:04:49.49
めんどくせぇからメモリストリームにコピって元に復元すればいいんだよwww
48デフォルトの名無しさん:2011/07/11(月) 12:10:00.02
>>47
それだと全部publicにしないとできないよね
49デフォルトの名無しさん:2011/07/11(月) 12:46:57.63
>>45
それもうちとkwsk教えてくださいな。
概念で説明されても「イミフ・・・orz」なのが初心者。
コピーコンストラクタでぐぐったけどC++の用語ですか?
C++全然分からないもんで。
50デフォルトの名無しさん:2011/07/11(月) 13:47:32.63
>>48
それはXmlSerializerの話だ
51デフォルトの名無しさん:2011/07/11(月) 13:52:20.46
>いわゆるコピーコンストラクタ

という用法が間違ってるんじゃね
52デフォルトの名無しさん:2011/07/11(月) 13:55:05.81
間違ってても分からないのが初心者なもんで
53デフォルトの名無しさん:2011/07/11(月) 13:59:45.22
    class MyClass
    {
        public int A { get; set; }

        public string B { get; set; }

        public object C { get; set; }

        public MyClass() { }
        
        public MyClass(MyClass instance)
        {
            A = instance.A;
            B = instance.B;
            C = instance.C;
        }
    }

ごく単純にこういう話だろ

この方法は子供以下の参照型フィールドをCloneする方法がないけど
Cloneはデリケートだから許可されてるオブジェクト以外ではしてはいけないと考えるべきか
54デフォルトの名無しさん:2011/07/11(月) 14:40:21.02
>>53
へぇ、そういう自分自身を引数にしたコンストラクタを追加するんだ。
ちょっとまだよく分からないから、実験してくる。
とりあえず、ありがとうございました。
55デフォルトの名無しさん:2011/07/11(月) 15:09:49.71
CのObjectは参照コピーになるわけで・・・
56デフォルトの名無しさん:2011/07/11(月) 15:43:35.17
で?
57デフォルトの名無しさん:2011/07/11(月) 21:58:18.10
>>53をClone方式でコピーするとすると
public virtual MyClass Clone() { MyClass obj = new MyClass(); obj.A = this.A; 略; return obj; }
こんな感じのメソッドを定義する。これだけなら特に問題はないが、問題はMyClassを継承したクラス(MyClass2)を作ったとき。
MyClass2 obj = new MyClass2(); MyClass2 clone = (MyClass2)obj.Clone();
これはエラーになる。obj.CloneはMyClassのインスタンスを返すからMyClass2にキャストできない。
期待する動作にするためにはMyClass2はMyClass1をオーバーライドする必要がある。で、
public override MyClass Clone { MyClass2 obj = (MyClass2)base.Clone(); obj.D = this.D/*追加したプロパティ*/; return obj; }
こうしたいんだけど、上と同じ理由でエラーになる。なのでMyClass2のCloneは
MyClassが持ってるデータのコピーもMyClassに頼らず自分で実装しないといけない。
そんなことをしてしまうと、後でMyClassにプロパティが追加されたりしたときに破綻する。
コンストラクタを使うならこんなことにはならない。
5857:2011/07/11(月) 22:01:15.81
訂正
MyClass2はMyClass1をオーバーライドする必要がある
→MyClass2はMyClassのCloneメソッドをオーバーライドする必要がある
59デフォルトの名無しさん:2011/07/11(月) 22:47:30.80
その問題があるから、CloneではnewせずにMemberwiseCloneで
浅いコピーのオブジェクトを作るのが常套。
そのあと深いコピーの必要なメンバーを個別にコピーしてゆく。
60デフォルトの名無しさん:2011/07/11(月) 23:00:07.29
ごめん正直延々ちょっとズレた話をしているようにしか思えん。

なんかCの配列とポインタの区別がついてない人に、その一番肝心な区別の理解を
スキップしたまま一生懸命配列のコピー方法を説明してる感じ。
61デフォルトの名無しさん:2011/07/11(月) 23:00:51.56
ある自作のクラスでNullを代入したときの処理を実装するにはどうすればよいでしょうか
C++で代入演算子のオーバーロードのようなことをしたい感じです
62デフォルトの名無しさん:2011/07/11(月) 23:04:26.74
できません
昔のVBみたいにnull代入でオブジェクト破棄みたいなことがしたいなら
IDisposable実装してusing
63デフォルトの名無しさん:2011/07/11(月) 23:38:16.89
MyClass my_cls_obj = new MyClass();
List<MyClass> list = new List<MyClass>();


for (int i = 0; i < 20; i++)
{

my_cls_obj.value = i;
list.Add(my_cls_obj);
my_cls_obj = new MyClass();


}
という処理を書いた場合、listの各要素のvalueには異なって値が入りますが、
なぜですか?
my_cls_obj = new MyClass();
を書かない場合は、同じ値になります。
my_cls_obj = new MyClass();をした時どういったことが起きているのですか?
64デフォルトの名無しさん:2011/07/12(火) 00:28:13.62
ポインタが分かればわかるよ。

とあるmy_cls_objが参照を保持する変数なんだよ。
List<MyClass>も参照の配列を保持するオブジェクトなんだよ。

途中でnewを挟まないと参照で保持してるものをいじってるだけだから複数の参照が指してる、インスタンスのひとつが変更される。


あ”ずい”・・・。
6530:2011/07/12(火) 01:03:04.82
>>31
なるほど。でもクラス継承というのをほとんどやってなかったので
TabControlクラス継承して、自分で新しいUserTabControlクラスを作って実装することってかなり難しいですか?
66デフォルトの名無しさん:2011/07/12(火) 01:38:24.67
>>65
http://www.codeproject.com/KB/tabs/draggabletabcontrol.aspx

.net1.0の物だけど、参考になるかもね
67デフォルトの名無しさん:2011/07/12(火) 13:16:27.30
以下のようなイベントをクラス内で定義してあります。
public delegate void DataRecievedHandler(object sender, DataRecieveEventArgs e);
public event DataRecievedHandler DataRecieved;

protected virtual void OnDataRecieved(DataRecieveEventArgs e)
{
if (DataRecieved != null)
{
DataRecieved(this, e);
}
}

このクラスはDisposeを実装していています。
Disposeが呼ばれるときに
DataRecievedをクリアしたりNULLにしたりする処理を
書かなくてもよいものなのでしょうか?

よろしくお願いします。
基本使う側がイベントの関連付けを切るものだとおもってはいるので今のところ何もやってはいませんが・・・

68デフォルトの名無しさん:2011/07/12(火) 14:10:21.07
無問題
69デフォルトの名無しさん:2011/07/12(火) 14:29:45.54
アプリケーション設定で作った項目にコメントを書いときたいんだが、コメント書けないよね。
みんなどこに説明かいてるの?
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/558appsettings/appsettings.html
70デフォルトの名無しさん:2011/07/12(火) 14:36:25.60
>>68
ありがとうございました。
71デフォルトの名無しさん:2011/07/12(火) 14:47:15.77
>>69
バージョンアップで値を引き継がない欠陥があるから
フォームの位置記憶程度にしか使っていないからどうでも良かったりする
72デフォルトの名無しさん:2011/07/12(火) 18:07:37.89
>>71
バージョンアップでも値引き継いだと思うけど?4.0でクリックワンスだけど。
73デフォルトの名無しさん:2011/07/12(火) 18:12:21.10
http://dobon.net/vb/dotnet/system/getinstalledfonts.htmlの「インストールされているフォントを取得する」通りにフォントを表示させたいのですが
フォームにpictureBoxを貼り付けてこういうコードになったのですが
F5を押すとエラーもないのですが、フォントが取得できません

どなたか助けてください

http://ideone.com/PsvQ5

74デフォルトの名無しさん:2011/07/12(火) 18:14:47.25
フォントにもう・・・
75デフォルトの名無しさん:2011/07/12(火) 18:18:36.79
Shownイベントにすると一瞬表示されるけど消えるね
まあbmpを作ってそこへ描画したあとpictureBoxへ渡したほうが早そう
76デフォルトの名無しさん:2011/07/12(火) 18:22:11.31
77デフォルトの名無しさん:2011/07/12(火) 18:52:41.35
>>72
ClickOncだからだけど?
78デフォルトの名無しさん:2011/07/12(火) 18:54:54.72
Uを押した時にメッセージボックスを出して、離した時にもメッセージボックスをだしたいです。
KeyUpのほうが動きません。
KeyDownのほうは動きます。
KeyUpもKeyDownもVC#の右下のフォームのプロパティでイベントの項目からダブルクリックで登録してあります
こうやっても動かないという事でしょうか?

private void listBox1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
case Keys.U:
MessageBox.Show("押しました");
break;
default:
break;
}
}


private void Form1_KeyUp(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
case Keys.U:
MessageBox.Show("離しました");
break;
default:
break;
}
}
79デフォルトの名無しさん:2011/07/12(火) 19:00:18.19
>>74-76
ありがとうございます
コードをじっくり読んで勉強したいと思います
80デフォルトの名無しさん:2011/07/12(火) 19:12:56.19
>>78
おい
片方はListBoxだけどもう一つはFormになってるぞ
それでいいのか?
81デフォルトの名無しさん:2011/07/12(火) 19:15:19.29
ご指摘ありがとうございます。
2ちゃんにコピペするときにみすりました。
listBox1のではなくForm1です。

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
case Keys.U:
MessageBox.Show("押しました");
break;
default:
break;
}
}


private void Form1_KeyUp(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
case Keys.U:
MessageBox.Show("離しました");
break;
default:
break;
}
}
82デフォルトの名無しさん:2011/07/12(火) 19:18:41.34
自己解決しました。
KeyPreviewをtrueにしたら動きました。
でもfalseの時はKeyDownは動いたのに何故KeyUpだけ動かないのか不思議です。
83デフォルトの名無しさん:2011/07/12(火) 22:15:15.75
WindowsMediaPlayer wmp = new WindowsMediaPlayer();
double a = wmp.currentMedia.duration;
MessageBox.Show(a.ToString());

動画の再生時間を取得したいのですが
エラー「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と出て強制終了します
どなたかご教示お願いいたします
84デフォルトの名無しさん:2011/07/12(火) 22:17:29.40
落ち着いて考えようよ
対象の動画を指定しないで何がしたいの?
85デフォルトの名無しさん:2011/07/12(火) 22:27:21.81
動画については動画再生後に実行しています
MessageBox.Show(this.axWindowsMediaPlayer1.currentMedia.durationString);と書いてもダメでした
86デフォルトの名無しさん:2011/07/12(火) 22:33:12.29
自己解決しました
イベントでしっかり再生中かどうか判断したら取れました
87デフォルトの名無しさん:2011/07/12(火) 22:34:02.23
その段階ではcurrentMediaがまだ設定されてないんだろうな
としか分からん
88デフォルトの名無しさん:2011/07/13(水) 00:08:23.05
>>71
一応、ApplicationSettingsBase.Upgrade()てのがあるんだから、欠陥ではないだろうよ。
89デフォルトの名無しさん:2011/07/13(水) 09:30:58.43
listboxにフォルダ内の動画のパスを表示して選択してエンター押すとフォーム内のwindowsmediaplayerで動画を再生しますが
動画を読み込むときにCPUが100%になります
原因は何故でしょうか?
90デフォルトの名無しさん:2011/07/13(水) 11:26:18.41
splitcontainerを3パネルにして使いたいのですがどのように細工したらよいですか?
91デフォルトの名無しさん:2011/07/13(水) 11:46:52.70
>>89
CPUが遅いかどっかで読み続けてるか糞でかい動画を読み込んでいるか

>>90
「splitcontainer 3分割」でググれ
一番上に詳しく描いてある
92デフォルトの名無しさん:2011/07/13(水) 12:00:44.11
>>91
GesPlayerで同じ動画を読み込んでもCPUは40〜50%まででした
再生方法は以下のようになってます

this.axWindowsMediaPlayer1.close();
this.BeginInvoke(
(MethodInvoker)(
() =>
{
this.axWindowsMediaPlayer1.URL = "動画ファイルのURL";
this.axWindowsMediaPlayer1.Ctlcontrols.play();
}
)
);
93デフォルトの名無しさん:2011/07/13(水) 12:07:43.57
比較対象にするならWMPに決まってるだろ…
94デフォルトの名無しさん:2011/07/13(水) 13:06:24.73
フォームに直接AxWindowsMediaPlayerを貼りつけて、URLにファイル名コピるだけなら100%行くことなかった
つーかデフォで読み込んだら再生されるからPlay()いらないし
95デフォルトの名無しさん:2011/07/13(水) 13:29:08.73
C#って何で冪乗演算子がないんですかね?
96デフォルトの名無しさん:2011/07/13(水) 13:34:28.57
281 名前:デフォルトの名無しさん[sage] 投稿日:2011/07/10(日) 01:34:12.36
マはえてして何故なのかどうしてなのか追及する奴が多いから
かといってMSに聞けよ知るかボケがとはコラムに書けんし
適当にお茶を濁さざるを得ない

このスレでもたまにいるだろ
言語設計上の思想は開発者に聞けやごるあっていいたくなる質問がさ
97デフォルトの名無しさん:2011/07/13(水) 13:42:24.73
>>95
Math.Powを使えってことかの
演算子として^を必ず使わなきゃいけない理由とかあるんだろうか?
orと被るなら**とかで良いのにね
98デフォルトの名無しさん:2011/07/13(水) 13:44:54.84
10進BASICでもやってろハゲ
99デフォルトの名無しさん:2011/07/13(水) 14:02:12.62
>>97
>**とかで良いのにね
やめてくれ
100デフォルトの名無しさん:2011/07/13(水) 14:34:12.45
ここに知ってる奴がいればめっけもんじゃん。
一番気楽だし。
知らなきゃ答えなければ良い。なんでさも答えるのが義務であるかのような事いってんの。
101デフォルトの名無しさん:2011/07/13(水) 14:35:29.41
MCIで動画再生するほうが軽いですか?
102デフォルトの名無しさん:2011/07/13(水) 14:45:39.37
>>99
例だから気にすんな
ただ単に^が既に使われてるってだけだし
103デフォルトの名無しさん:2011/07/13(水) 15:04:37.77
著者の心情を書きなさい←明らかな文系脳
104デフォルトの名無しさん:2011/07/13(水) 18:12:03.70
>>95
需要が少ないからに決まってんだろ。

数式処理とかやってるような職の方ならともかく、そういう人が全体の何割いるか。
そしてそういう人が使うのは汎用言語じゃなくて Mathematica とか Matlab。

一般にも、2乗くらいは使うけど、3乗以上を、高校の演習以来使ったことある?
105デフォルトの名無しさん:2011/07/13(水) 19:20:18.52
よく使うんだけど
106デフォルトの名無しさん:2011/07/13(水) 19:31:49.33
どういう分野にお勤め?
107デフォルトの名無しさん:2011/07/13(水) 20:11:35.20
身の上に心配あるから参上っす
108デフォルトの名無しさん:2011/07/13(水) 20:28:16.82
球の体積だっけ?

数学の先生の頭がはげてた遠い記憶がよみがえった
確か金の太祖に似てたからヌルハチというあだ名だったっけ(遠い目
109デフォルトの名無しさん:2011/07/13(水) 20:36:22.01
案外、そんな演算子導入するとBASICみたいでかっこ悪いから、なんて理由だったり。

まあ実際は、乗数が実数だったりする場合を考えるとSystem.Mathに言語が依存するのは
よくないとか、そういう考え方なのかな。
110デフォルトの名無しさん:2011/07/13(水) 21:16:29.91
フォルダ選択ダイアログでキャンセルしたときに例外が発生します
動対応したらよいでしょうか?
111デフォルトの名無しさん:2011/07/13(水) 21:17:17.95
Windows Media Playerを埋め込むと重いんですけどこんなものなんでしょうか?
112デフォルトの名無しさん:2011/07/13(水) 21:18:52.95
そいつぁあヘビーだ
113デフォルトの名無しさん:2011/07/13(水) 21:25:51.65
そんなものなんじゃないですかね
114デフォルトの名無しさん:2011/07/13(水) 21:36:32.85
>>110
しょんべんして寝ちまえ
115デフォルトの名無しさん:2011/07/13(水) 21:45:22.41
>>114よ、一体誰の許可を得て俺にレスしておるのだ
ずぶのど素人は引っ込んでおれ
116デフォルトの名無しさん:2011/07/13(水) 21:47:46.70
私が許可した
責任は私が取ろう
117デフォルトの名無しさん:2011/07/13(水) 21:52:00.56
いやいや、俺が俺が
118デフォルトの名無しさん:2011/07/13(水) 22:01:41.12
>>109
アルゴリズムとか精度とか、何を標準にするか迷うしね。
119デフォルトの名無しさん:2011/07/13(水) 22:02:45.65
>>111
Directshow.netを使ったら?
120デフォルトの名無しさん:2011/07/13(水) 22:09:25.82
>>110
if文使って例外が発生しないようにするか、例外処理を書くしかないでしょう?
ソースを書いてくれれば親切な人が教えてくれるかもしれません

自分も質問なんですが、グループボックスの中に3つラジオボタンがあってどれが選択されているか取得する場合
if文使ってCheckedプロパティ見てやってるんですけどそれだとラジオボタン増やすたびにソース増えが読み辛くなるので
いい方法ないでしょうか?
121デフォルトの名無しさん:2011/07/13(水) 22:21:28.45
つ配列
122デフォルトの名無しさん:2011/07/13(水) 23:05:04.31

とかやってる馬鹿参上
123デフォルトの名無しさん:2011/07/13(水) 23:07:27.15
if("a" == s){
return true;
}else{
return false;
}
とやるのと
if("a" == s){
return true;
}
return false;
とやるのはどちらがよいでしょうか?
124デフォルトの名無しさん:2011/07/13(水) 23:14:36.23
return "a" == s;
が正解
125デフォルトの名無しさん:2011/07/13(水) 23:14:57.49
return s == "a";
126デフォルトの名無しさん:2011/07/13(水) 23:15:11.25
>>120
groupBox.Controls.OfType<RadioButton>().Where(x => x.Checked);
でどうよ

>>123
return ("a" == s);
127デフォルトの名無しさん:2011/07/13(水) 23:15:38.59
っていうか、Cじゃないんだから"a" == sとか止めれ
128デフォルトの名無しさん:2011/07/13(水) 23:44:07.20
ディレクトリ一覧を取得して、listviewに入れたいのですがエラーが出てしまいます

エラー 1 'System.Windows.Forms.ListView.ColumnHeaderCollection.AddRange(System.Windows.Forms.ColumnHeader[])' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。
エラー 2 引数 1: 'System.Collections.Generic.IEnumerable<string>' から 'System.Windows.Forms.ColumnHeader[]' に変換できません

ColumnHeader[] dir = Directory.EnumerateDirectories("C:\\test");
this.listView1.Columns.AddRange(dir);
129デフォルトの名無しさん:2011/07/13(水) 23:53:17.25
なんでColumnsにAddRangeしてるんだ
130デフォルトの名無しさん:2011/07/13(水) 23:55:29.41
>エラー 2 引数 1: 'System.Collections.Generic.IEnumerable<string>' から 'System.Windows.Forms.ColumnHeader[]' に変換できません

代わりに System.Collections.Generic.IEnumerable<string> から System.Windows.Forms.ColumnHeader[]  に変換してやればいいんじゃね?
131デフォルトの名無しさん:2011/07/14(木) 00:02:20.01
Itemsに追加したいんじゃないの?
132デフォルトの名無しさん:2011/07/14(木) 00:04:14.01
知りませんよそんなもの
133デフォルトの名無しさん:2011/07/14(木) 00:06:55.99
Itemsを使うと良かったんですね
listboxみたいに表示したかったんですがなんかItemsを利用したいと思います
134デフォルトの名無しさん:2011/07/14(木) 00:09:44.13
>>123
途中returnの是非ということならケースバイケース
処理AとBが対等ならif (条件) { A; } else { B; }
AがBに対して例外的なケースなら if (条件) { A; return; } B;
というふうに考えるのが一般的だと思う
135デフォルトの名無しさん:2011/07/14(木) 00:14:14.10
ぐぐってみたらColumnHeaderConverterっていうのがあるみたいなのですがマニュアル見ても使い方がよくわからずorz
136デフォルトの名無しさん:2011/07/14(木) 00:14:40.47
>>123
return ("a" == s);
137120:2011/07/14(木) 00:32:47.85
>>126
groupBox.Controls〜の以降のOfType〜のやつってなんですか?ジェネリックスってやつですか?
初めて見たのでよくわからないです
138デフォルトの名無しさん:2011/07/14(木) 01:23:28.50
拡張メソッドとかEnumerableとかLINQとかラムダ式とかそういうナウなやつ
139デフォルトの名無しさん:2011/07/14(木) 09:57:33.51
this.listView1.Items.Add("test");
this.listView1.Items.Add("test");
this.listView1.Items.Add("test");
this.listView1.Items.Add("test");
でlistviewに追加して実行するとき、listviewの中の項目を選択したときに
選択した列の背景が変わりますが、文字列の部分しか変わりません
listboxみたいに行全体の背景を変えるようにできませんか?
140デフォルトの名無しさん:2011/07/14(木) 10:01:54.99
今時の若者はWPFで書くのがナウいぜ
141デフォルトの名無しさん:2011/07/14(木) 10:38:52.85
初心者には無理なう
142デフォルトの名無しさん:2011/07/14(木) 10:39:19.61
アホなう
143デフォルトの名無しさん:2011/07/14(木) 10:48:17.16
>>139
OnDrawItemをoverrideしてFillRectangleで描く
144デフォルトの名無しさん:2011/07/14(木) 10:57:00.34
>>143
ありがとうございます調べてみます


string[] a = new string[] { "aa", "bb", "cc" };
this.listView1.Items.AddRange(a);
とAddRangeで一気に追加したいのですがエラーになります


string[] a = new string[] { "aa", "bb", "cc" };
foreach (string f in a)
{
this.listView1.Items.Add(f);
}
だとエラーになりません
助けてください
145デフォルトの名無しさん:2011/07/14(木) 11:01:15.13
カラムまたがっていいなら
listView1.FullRowSelect = true;
とかでどう?
146デフォルトの名無しさん:2011/07/14(木) 11:05:17.15
>>138
ラムダ式はたまにイベントハンドラで使うことがあるのでわかりますが、このWhereメソッド?
これは一体どういうものなんでしょうか?どうやって値を受け取ればいいんでしょうか?
147デフォルトの名無しさん:2011/07/14(木) 11:07:52.48
IDE使ってたら型がわからないときはマウスカーソルのっけたり
this.listView1.Items.AddRange(
と途中まで入力すれば型表示してくれるだろう

http://www.dotup.org/uploda/www.dotup.org1787462.png
148デフォルトの名無しさん:2011/07/14(木) 11:15:09.51
>>145
ありがとうございますtrueにしてみましたがダメでした
コードをまとめました
http://ideone.com/lo62q

http://www.dotnetperls.com/listboxのページにあるlistboxの画像のように
listboxのように項目を表示して選択したときに1行全体を選択できるようにしたかったのですが難しいですね
149デフォルトの名無しさん:2011/07/14(木) 11:15:55.15
>>147
ありがとうございます
いま試してみます
150デフォルトの名無しさん:2011/07/14(木) 11:24:38.20
カラムの幅をListViewの幅と同じにしてみ
151デフォルトの名無しさん:2011/07/14(木) 12:00:40.78
>>146
IEnumerable 受け取って、条件を満たす要素だけを取り出す IEnumerable を返すメソッド。
LINQ の基本。

SQL でいう、
select * from list where 条件
152デフォルトの名無しさん:2011/07/14(木) 12:20:20.23
SplitContainerを上下に分割して、上と下にListboxを入れてそれぞれDock:Fillに指定した場合
分割境界線が太くなるのと、IsSplitterFixed:Falseに設定しても移動できないのはバグですか?
153デフォルトの名無しさん:2011/07/14(木) 12:24:14.32
>分割境界線が太くなるのと
これってListboxの挙動の関係じゃないの?
Listboxって確か書く項目の高さx表示個数できっちりきまるんじゃなかったっけ?
154デフォルトの名無しさん:2011/07/14(木) 12:29:39.10
>書く項目
各項目
155デフォルトの名無しさん:2011/07/14(木) 12:52:32.85
そういうふうにもできるし
自由な高さにもできる
156デフォルトの名無しさん:2011/07/14(木) 13:04:14.64
>>155
自由にできるのは知らなかった
デフォルトでは項目の高さx項目数で表示の高さが決まるようになってるよね

>>152
お試しで捨てプロジェクト作ってFormに直接ListBoxをFillで貼り付けて
Formの高さをいろいろいじってみ

切りのいい高さだと余白なくぴったりくっつくけど中途半端な高さだと
余白ができてるから

たぶんSplitContainerの分割線が太くみえるのはListBoxの余白でそうみえるだけ
157デフォルトの名無しさん:2011/07/14(木) 13:21:50.48
ListBox.IntegralHeightじゃ駄目?
158デフォルトの名無しさん:2011/07/14(木) 13:24:20.19
>>157
おお、それできりかえるのか
159デフォルトの名無しさん:2011/07/14(木) 13:25:11.94
>>157
あなたは神です!!!!!!!!!!!!
160デフォルトの名無しさん:2011/07/14(木) 13:57:22.57
やっぱりListViewは難しいですね
listBoxで作り直します
161デフォルトの名無しさん:2011/07/14(木) 14:05:43.35
>>147
すげぇ面倒見いいやつとかいわれないか?
162デフォルトの名無しさん:2011/07/14(木) 14:31:36.37
いいことじゃないか、まさに初心者用スレにふさわしい

だがどの程度の質問をされるかにもよるからな
163デフォルトの名無しさん:2011/07/14(木) 14:42:26.43
string[] d = Directory.GetDirectories("C:\\test\\aaa");

これでaaaフォルダの中にあるフォルダだけを取得する方法ってございませんか?

for (int i=0; i<d.Length; i++) {
d[i] = Path.GetFileName(d[i]);
}


取得した内容をlistboxに追加するときPath.GetFileNameを書いて
for (int i = 0; i < d.Length; i++)
{
listBox1.Items.Add(Path.GetFileName(d));
}
とやってフォルダ名のみにして追加してるのですが効率が悪いのでaddRangeで一括で追加したのです
164デフォルトの名無しさん:2011/07/14(木) 14:43:33.26
書き直します

string[] d = Directory.GetDirectories("C:\\test\\aaa");
これでaaaフォルダの中にあるフォルダだけを取得する方法ってございませんか?


現状は取得した内容をlistboxに追加するときPath.GetFileNameを書いて
for (int i = 0; i < d.Length; i++)
{
listBox1.Items.Add(Path.GetFileName(d));
}
とやってフォルダ名のみにして追加してるのですが効率が悪いのでaddRangeで一括で追加したのです
165デフォルトの名無しさん:2011/07/14(木) 15:03:12.65
再描画で遅くなるって話なら別の手があるぞ?
166デフォルトの名無しさん:2011/07/14(木) 15:08:01.78
BeginUpdateとEndUpdateの中でAddする方法でしょうか?
どうしてもAddだと遅くなってしまいまして
167デフォルトの名無しさん:2011/07/14(木) 15:08:12.60
>>164
まず >>165 の言うとおりだけども。

var d = Directory.GetDirectories("C:\\test\\aaa").Select(x => Path.GetFileName(x));
じゃダメなの?
168デフォルトの名無しさん:2011/07/14(木) 15:18:01.93
遅くなるって計測した上でいってんの?
169デフォルトの名無しさん:2011/07/14(木) 15:23:33.73
>>167
ありがとうございます
var d = Directory.GetDirectories("C:\\test\\aaa").Select(x => Path.GetFileName(x));
listBox1.Items.Clear();
listBox1.Items.AddRange(d);
と書き直したら、AddRangeの行でエラーが2つでてしまいました
エラー 1 'System.Windows.Forms.ListBox.ObjectCollection.AddRange(System.Windows.Forms.ListBox.ObjectCollection)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。
エラー 2 引数 1: 'System.Collections.Generic.IEnumerable<string>' から 'System.Windows.Forms.ListBox.ObjectCollection' に変換できません
170デフォルトの名無しさん:2011/07/14(木) 15:24:17.02
ためになるな。
171デフォルトの名無しさん:2011/07/14(木) 15:24:47.11
>>168
ありがとうございます
速度についてはstopwatchで計測させていただきました
Addで追加するとAddRangeの3倍の時間がかかってしまいます
172デフォルトの名無しさん:2011/07/14(木) 15:26:03.59
string[] d = Directory.GetDirectories(@"C:\");
List<string> d2 = new List<string>();
for (int i = 0; i < d.Length; i++)
{
d2.Add(Path.GetFileName(d[i]));
}
listBox1.Items.AddRange(d2.ToArray());
173デフォルトの名無しさん:2011/07/14(木) 15:31:34.28
LINQきめぇ
174デフォルトの名無しさん:2011/07/14(木) 15:33:34.94
>>169
試しに
listBox1.Items.AddRange(d.ToArray<string>());
とかやってみたら
175デフォルトの名無しさん:2011/07/14(木) 15:34:10.86
d.ToArray() だけでいいか
176デフォルトの名無しさん:2011/07/14(木) 16:02:43.23
>>172-175
勉強になります
ありがとうございます
177デフォルトの名無しさん:2011/07/14(木) 16:27:59.05
あるメソッドが文字列を返します
もし文字列が空ならreturn falseで抜けて,文字列が空でなければ変数aに代入したいと思います
以下のように書いた場合、Axc()は2回実行されていることになりますか?
Axc()の処理が結構重いことをさせるので1回しか実行させたくないのですが
空でなかった場合には変数に代入して、空だったらreturn false;にする方法ってございませんか?
if ("" == Axc()){
return false;
}else{
string a = Axc();
}
178デフォルトの名無しさん:2011/07/14(木) 16:34:50.98
string s = Axc();
if ("" == s){
return false;
}else{
string a = s;
}

179デフォルトの名無しさん:2011/07/14(木) 16:38:59.85
こんなことで質問すんなよ
180デフォルトの名無しさん:2011/07/14(木) 16:45:50.93
>>179
>>!
181デフォルトの名無しさん:2011/07/14(木) 16:47:27.42
!
182デフォルトの名無しさん:2011/07/14(木) 16:49:42.72
帳票印刷をXPSファイルにやってるのですが、
文字の幅を短くしてある領域に納める処理に、
ScaleTransform()を使って横方向だけ縮小しているのですが、
どうも、アンチエイリアス後にScale処理されているようで
この処理をした文字だけがアンチエイリアスがされてない感じの
ギザギザ文字になってしまいます。
なにか対策ないでしょうか。
183デフォルトの名無しさん:2011/07/14(木) 17:01:19.21
XPSってなんぞ?
なにやら便利そうだな
184デフォルトの名無しさん:2011/07/14(木) 17:20:27.00
>>183
プリンタに「Microsoft XPS Document Writer」
ってない?
185デフォルトの名無しさん:2011/07/14(木) 17:22:30.96
その領域に合わせたフォントを作るべきで
縮小がそうなるのはしょうがないんじゃ?
186182:2011/07/14(木) 18:01:02.35
ありがとうございます。
どうも.NetのFontオブジェクトでは縦横比を変えれない仕様らしく、
変形は全てTransformでやるべき、という姿勢だとどこかで見かけました。
縦横比を変更したFontオブジェクトを作ることってできるのでしょか。

XPSはMicrosoft XPS Document Writerでやってます。
ちょっと工夫しまして、GUI無しでXPSファイルに書きだした後、
XPSビューアで開き、それをプレビューとして使用してます。
また印刷はそのXPSビューアがGUI提供してくれてるのでキレイに処理できます。


187デフォルトの名無しさん:2011/07/14(木) 18:11:11.05
listBoxが3つあります

public void MsgBox1() {MessageBox.Show(listBox1.Text);}
public void MsgBox2() {MessageBox.Show(listBox2.Text);}
public void MsgBox3() {MessageBox.Show(listBox3.Text);}
という風にやるよりは
public void MsgBox(string selectbox) {MessageBox.Show(selectbox.Text);}
として書いて
MsgBox("listBox2");みたいに出来ればよいのですが、これだとエラーが出て出来ませんでした
同じコードは一つのメソッドにまとめたいのですが方法ございませんか?
188デフォルトの名無しさん:2011/07/14(木) 18:15:42.57
引数というものを勉強しろ
189デフォルトの名無しさん:2011/07/14(木) 18:17:52.74
C#の初心者ならともかくプログラミングの初心者はあっちいってくれ
190デフォルトの名無しさん:2011/07/14(木) 18:21:33.71
フードプロセッサーに機械のパーツを入れようとしてる みたいなイメージだな
191デフォルトの名無しさん:2011/07/14(木) 18:22:10.51
まず本読めよ
型とか全然理解してないだろ

public void ShowListBoxMessage( ListBox selectbox )
{
 MessageBox.Show( selectbox.Text );
}

ShowListBoxMessage( listBox2 );

でもこんな糞メソッド作らないでいいよ
192デフォルトの名無しさん:2011/07/14(木) 18:24:06.47
型って良く知りませんでした
何故これは作ってはならないのですか?
193デフォルトの名無しさん:2011/07/14(木) 18:25:25.52
MessageBoxを呼び出す程度ならベタで書いてもいいんじゃないの?ってだけ
まあ別にやってもかまわんけどね
194デフォルトの名無しさん:2011/07/14(木) 18:34:46.32
そうでしたか
listbox2って渡しちゃうとこれ重くなったりするののが理由なのかなと思ってしまいました
ありがとうございます
195デフォルトの名無しさん:2011/07/14(木) 18:42:27.15
>>186
LOGFONTでもうまくいかんねー
ScaleTransformしたあとに
TextRenderingHintでTextRenderingHint.AntiAliasいれたら
一応かかったけど、図形としてだろうかこれ
196182:2011/07/14(木) 18:47:03.52
>>195
おお、試してくれてるのですか。感謝です。
試してみます。
197182:2011/07/14(木) 18:57:14.60
>>195
私のところではかかってませんでした。
思うに、それは、スケールする前のアンチエイリアスよって出来た
ドットが残ってるだけではないでしょうか? 
その場合は、XPSビューアなどで縮小するとやっぱりギザギザになります。
解像度に応じて、リアルタイムにアンチエイリアスがかかってほしいですが、
スケールするとならなくなってしまいます。
198デフォルトの名無しさん:2011/07/14(木) 19:36:49.77
VC#2010Expressです
.NET Framework2.0で動くプログラムを作りたくて以下の事をしました

プロジェクトを新規作成しました
プロジェクトのプロパティを開きました
対象のフレームワークが.Net Framework4.0になってたので.Net Framework 2.0に変更しました
ttp://www.dotup.org/uploda/www.dotup.org1788383.jpg
そしたらたくさんエラーが出てしまいました
ttp://www.dotup.org/uploda/www.dotup.org1788381.jpg
たすけてください
199デフォルトの名無しさん:2011/07/14(木) 19:41:31.23
4.0のままでいいんじゃない?
200デフォルトの名無しさん:2011/07/14(木) 19:43:09.78
恐らく、参照設定の中でエラーになってるのを消すのと、
usingでエラーになってるのを消せばいいはず
201デフォルトの名無しさん:2011/07/14(木) 19:43:36.29
エラーと警告は違う
202デフォルトの名無しさん:2011/07/14(木) 19:52:47.79
恥ずかしながら4.0をインストールさせるページが分からず、
ttp://hide.maruo.co.jp/software/hmnetexnet.htmlのページの一番下に2.0のダウンロードページの説明があったので
2.0で作ろうと思いました
本当は4.0で作るのがいいのですが。。(知識は乏しいのですが何でも最新版が好きなので)
消したら大丈夫でした
ありがとうです
203デフォルトの名無しさん:2011/07/14(木) 19:53:40.20
>>202
4.0で作るっていうか使う部品によって2.0互換のコードになるんじゃなかったっけ?
.netのバージョンでどこまでサポートとかあるはずだし
204デフォルトの名無しさん:2011/07/14(木) 19:57:18.30
素朴な疑問なんだけど4.0と3.5と2.0が入っている比率ってどのくらいなんだろう
205デフォルトの名無しさん:2011/07/14(木) 19:58:53.35
>>202
>4.0をインストールさせるページ
…VisualStudio入れた時点で、自動的に入って来ないか?
206デフォルトの名無しさん:2011/07/14(木) 20:02:48.36
>>204
普通にwinをうpでーとしてれば4.0になってるっちゃ
207デフォルトの名無しさん:2011/07/14(木) 20:04:11.27
Windows7に初期状態でインストールされてるのが3.5なのか。。
4にしてほしかったよな

http://www.atmarkit.co.jp/fwin2k/win2ktips/1128dnfwvr/dnfwvr02.gif
208デフォルトの名無しさん:2011/07/14(木) 20:08:14.58
Windows8は4が入る?
209デフォルトの名無しさん:2011/07/14(木) 20:12:56.03
>>207
Win7出たのが2009年10月(9月)で、
4.0出たのが2010年4月だからなー。そりゃ無茶ってモンよ。

>>206
Windows Update だけだと、Client Profileしか入って来なくね?
210デフォルトの名無しさん:2011/07/14(木) 20:12:58.77
>>203
>>205
>>206
ホームページで自分の作ったソフトを公開するときに4.0のインストールの仕方をどうやって教えていいのか分からず、2.0の解説のあったページを参考に2.0にしたいと思ってました
なるべくたくさんの人にインストールしてもらいたいので2.0ならいいのかなと思って2.0を選ばせていただきました
211デフォルトの名無しさん:2011/07/14(木) 20:18:58.69
いまさらユーザーに2.0のインストールを誘導するのは酷だ

どうせClient Profileで十分だろ
http://www.microsoft.com/downloads/ja-jp/details.aspx?displaylang=ja&FamilyID=5765d7a8-7722-4888-a970-ac39b33fd8ab

詳細は
http://msdn.microsoft.com/ja-jp/netframework/ff687189
212デフォルトの名無しさん:2011/07/14(木) 20:22:44.11
ClientProfile軽いからなw
50MBちょっとだから、昨今の回線事情なら直ぐに入れられる

後はまあ、Silverlightを検討するのもアリだが
213デフォルトの名無しさん:2011/07/14(木) 20:47:51.31
そうですね
ぼくは今日から4.0布教のために4.0で作ることを決意しました
214デフォルトの名無しさん:2011/07/14(木) 21:43:40.98
CSharp Language Specification.doc
タイトルC# 言語仕様
作成者AraceliJ
会社名BGS Spain
作成日時2010年1月28日 14:38:00
更新日時2010年4月3日 5:16:34
更新者xiuyan.liu
改訂671
編集時間2927 分

いまのところ、コレが最新?
215デフォルトの名無しさん:2011/07/14(木) 21:46:35.42
ここ1年は3.5にしておくのが無難だと思っておる。
216デフォルトの名無しさん:2011/07/14(木) 21:50:10.73
4.0に手を出すのはWPFとかSilverLigthあたりをやる人くらいじゃね?
217デフォルトの名無しさん:2011/07/14(木) 21:53:28.39
UI以外にも、dynamicとかCOM interopの強化とか
MEFとかTPLとかPLINQとかいろいろ付いてるぞ
218デフォルトの名無しさん:2011/07/14(木) 22:06:16.96
VBなら3.5→4.0で大分使い勝手が向上してるんだけどね
219デフォルトの名無しさん:2011/07/14(木) 22:23:51.90
GetDirectoriesでSystem Volume Informationにアクセスすると強制終了してしまいます
隠しフォルダ?システムフォルダ?っていうのでしょうか?エクスプローラでは表示されてないようなこのフォルダみたいなフォルダの場合
はGetDirectoriesでアクセスしないように処理の前に判定したいのですが以下のように書いてもちゃんと動作しませんでした
どなたかアドバイスお願いいたします

if (FileAttributes.System != di.Attributes)
{
return false;
}
string[] dir = Directory.GetDirectories("フォルダ名");
220デフォルトの名無しさん:2011/07/14(木) 22:25:24.69
OSは何?
221デフォルトの名無しさん:2011/07/14(木) 22:28:14.64
Vistaです
222デフォルトの名無しさん:2011/07/14(木) 22:29:15.20
コードミス
if (FileAttributes.System == di.Attributes)
{
return false;
}
string[] dir = Directory.GetDirectories("フォルダ名");

でダメでした
223デフォルトの名無しさん:2011/07/14(木) 22:42:13.72
224デフォルトの名無しさん:2011/07/14(木) 23:02:19.97
string[] h = new string[] {"aaa","bbb","ccc","","ddd","eee",""};
という配列があって
空の要素を削除して
string[] h = new string[] {"aaa","bbb","ccc","ddd","eee"};
という風につめたい場合のforを使わないでやる方法ございませんか?
225デフォルトの名無しさん:2011/07/14(木) 23:03:41.24
h.Where(x => 0 < x.Length).ToArray()
226デフォルトの名無しさん:2011/07/14(木) 23:13:36.00
スマート厨とパフォーマンス厨の決闘になりそうだな
227デフォルトの名無しさん:2011/07/14(木) 23:20:29.74
厨厨タコかいな、まで読んだ。
228デフォルトの名無しさん:2011/07/14(木) 23:21:09.97
>>225
すいません書いてみたのですがエラーになります
エラー 1 'System.Array' に 'where' の定義が含まれておらず、型 'System.Array' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
229デフォルトの名無しさん:2011/07/14(木) 23:21:42.22
3000ギルですが購入しますか?
230デフォルトの名無しさん:2011/07/14(木) 23:22:16.81
一回エラーメッセージ自力で解決できるまで頑張った方がいい

本当に
231デフォルトの名無しさん:2011/07/14(木) 23:24:56.37
PHPだとエラーみてもマニュアル見て解決できるのですが
C#はエラーの内容がレベル高すぎて難しいですね
232デフォルトの名無しさん:2011/07/14(木) 23:27:37.08
そのエラーメッセージでググって一番上に出てくるサイト
http://www.atmarkit.co.jp/fdotnet/csharp30/csharp30_05/csharp30_05_01.html

根本的に何でエラーになったのか理解しないと繰り返すぞ
233デフォルトの名無しさん:2011/07/14(木) 23:36:03.11
>>228
.NET 2.0だな…
234デフォルトの名無しさん:2011/07/14(木) 23:49:39.47
usingでlinqを追加したら動きました
ただ、実行しても空の部分が残りました
235219:2011/07/14(木) 23:52:53.01
Directory.GetDirectories()で取得するとき、隠しファイル属性は除外する方法はございませんか?
236デフォルトの名無しさん:2011/07/14(木) 23:58:25.19
ありません
自分で属性確認するしか
237デフォルトの名無しさん:2011/07/15(金) 00:02:17.69
C#クソだな
238デフォルトの名無しさん:2011/07/15(金) 00:02:47.02
>>234
元の配列が変わるわけじゃなくて、抽出結果を返す
239デフォルトの名無しさん:2011/07/15(金) 00:02:57.90
すいません、教えてください。
FC2ブログにデータをPOSTしてブログを投稿したいのです。
ログインまではできておりますがPOST先のURLはどうやって調べればよいでしょうか?
また、ここに投げればよいというURLがあれば教えてください。
240デフォルトの名無しさん:2011/07/15(金) 00:06:37.92
mail欄が空白だとマルチなのかなと思ってしまう
241デフォルトの名無しさん:2011/07/15(金) 00:07:59.95
>>235
DirectoryInfo.EnumerateFileSystemInfosかGetDirectories使えば
242デフォルトの名無しさん:2011/07/15(金) 00:11:46.47
>>239
そんなもんFC2に聞いて下さい
FC2のサポセンじゃないんですよ
243デフォルトの名無しさん:2011/07/15(金) 00:22:31.67
http://blog.fc2.com/xmlrpc.php
らしいけど
仕様なんか知るわけないし、C#にチンカスほども関係ないのでやはり自己解決してくれ
244デフォルトの名無しさん:2011/07/15(金) 00:30:23.48
>>243
ありがとうございます。
C#で投稿しようと現在つくってます。
PHPつかえば楽らしいんですがクライアントツールで作成したいと四苦八苦してまして。。

>>242
なるほど。サービスを提供する会社に問い合わせないとわからないシロモノなのでしたか。
ありがとうございます。
245デフォルトの名無しさん:2011/07/15(金) 00:33:49.76
postボタンを押したときに何を送るかwiresharkで調べればいいだけじゃあ
246デフォルトの名無しさん:2011/07/15(金) 00:42:36.47
コボラーとPHPerは他所に出てくるな
247デフォルトの名無しさん:2011/07/15(金) 01:02:37.49
>>236さんは出来ないと教えていただきましたが
>>241さんのはどちらも取得できるものは同じですがそれらを使ってどのように除外するのですか?
248デフォルトの名無しさん:2011/07/15(金) 01:11:53.95
249219:2011/07/15(金) 01:28:31.36
>>223の方法でしょうか?
250デフォルトの名無しさん:2011/07/15(金) 01:35:55.82
>>244
FirebugとかChromeの開発者ツールで、HTTPリクエストが見れるから
ボタンを押した時のそれっぽいのを見つけてあとは眺めて頑張れ
251デフォルトの名無しさん:2011/07/15(金) 05:07:32.69
Firefoxは、5.0以上ならFirebugじゃなくてもいいし
IE9でも、F12キー押下で出るDeveloperToolsにネットワークキャプチャ追加されたぜよ
252デフォルトの名無しさん:2011/07/15(金) 07:11:18.25
フォルダ列挙厨はListBox厨と同一人物だろ?

基本的なところを本を読むなどして身につけた方がいいと
何度言わせたら

253デフォルトの名無しさん:2011/07/15(金) 09:30:26.75
XPSを独自で出力するライブラリみたいなのは無いでしょうか?
修正とかしたいんですが・・・

拡張子ZIPに変えて中身をテキストエディタで直でいじれとか言うのはなしでお願いします。
254デフォルトの名無しさん:2011/07/15(金) 10:18:57.00
WPF使う
というかXPSはWPFのための印刷技術
255デフォルトの名無しさん:2011/07/15(金) 10:35:25.97
>>254
情報ありがとうございます。
WPFで調べてやってみます!
256デフォルトの名無しさん:2011/07/15(金) 10:41:30.13
>>252
違いますね
257デフォルトの名無しさん:2011/07/15(金) 11:05:58.32
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1138798641
の回答を読んでからstaticはメモリを食うものだと勉強しました
staticって使っちゃいけないものなんですね
258デフォルトの名無しさん:2011/07/15(金) 11:08:33.10
staticは最後の手段
259デフォルトの名無しさん:2011/07/15(金) 11:21:10.03
クラスごとにファイルを分けた場合とか

new クラス
クラス.メソッド

ってやらなくて住むじゃないですかstaticだと

それともクラスは分けずにForm1.csに極力メソッドを作成したほうがいいってことですか?
260デフォルトの名無しさん:2011/07/15(金) 11:23:10.63
ワラタ
261デフォルトの名無しさん:2011/07/15(金) 11:36:13.93
あったまわるーw
他の趣味みつけたほうがいいね
262デフォルトの名無しさん:2011/07/15(金) 11:36:40.82
しっくりこないんでstatic使うんですね


勘弁してください
263デフォルトの名無しさん:2011/07/15(金) 11:47:16.21
何だ説明できないのか
264デフォルトの名無しさん:2011/07/15(金) 11:49:27.54
適材適所を知らんのか
最初から使っちゃいけないとか決めつけるアホに用事は無い
考えてから発言しろよ 骨髄反射野郎
265デフォルトの名無しさん:2011/07/15(金) 11:52:13.41
IQが20違うと説明するだけ無駄だしね
266デフォルトの名無しさん:2011/07/15(金) 11:54:45.41
例えば、インスタンスのフィールドに全く依存しないメソッドをインスタンスメソッドにすべきだろうか
267デフォルトの名無しさん:2011/07/15(金) 11:56:21.32
>>264-265
こんな低レベルなレスしちゃう君達のほうが心配だ・・・
268デフォルトの名無しさん:2011/07/15(金) 11:58:20.31
そんな心配ご無用ですよ。ちゃんといい給料もらって
こうして2ちゃんもしてますしね。
269デフォルトの名無しさん:2011/07/15(金) 12:03:42.56
癌なのは静的フィールドであって、静的メソッドは別に害ないわけだけども、
>>259 はダメだろ、フィールド含め、全部静的にしそう。
270デフォルトの名無しさん:2011/07/15(金) 12:04:59.89
工程表甘めに造って納期前にPG・デバッグできちゃったんで
1週間くらいヒマなんです。
勘弁してください。
271デフォルトの名無しさん:2011/07/15(金) 12:05:36.00
他の言語だとstaticのほうがパフォーマンスいいのにC#だと効率悪いってどういうことすか
272デフォルトの名無しさん:2011/07/15(金) 12:08:24.40
UserControlを作成していますが、OpenFileDialogのようにフォームに設置せず
実行時には表示されないタイプを作りたいと考えています。
このようなUserContorolの作り方をご存じでしたら教えてください。
System.ComponentModel.DesignerAttribute あたりが怪しいと思ったのですが…
273デフォルトの名無しさん:2011/07/15(金) 12:11:09.40
C#で温度を測る方法を教えてください
274デフォルトの名無しさん:2011/07/15(金) 12:11:23.03
CPUの温度です
275デフォルトの名無しさん:2011/07/15(金) 12:15:50.03
>>271
別に他の言語でもstaticにしていればメモリに居座りっぱなしになっているのは変わらん
お前が無知なだけだ

>>272
親がVisible切り替えればいいだけだよ

>>274
http://stackoverflow.com/questions/1195112/how-to-get-cpu-temperature
276デフォルトの名無しさん:2011/07/15(金) 12:20:43.65
C:\\2010\\\07
というパスがあり、このパスをC:\\2010\\07に直してくれる機能ってありませんか?
277デフォルトの名無しさん:2011/07/15(金) 12:26:39.52
>>276
というパスがあり…って言うけど、それパスとして成立してないじゃん
エスケープの個数が変

非エスケープ時に C:\2010\\07 ならエスケープ時は C:\\2010\\\\07 だろ
それならPath.GetFullPathが使える
278デフォルトの名無しさん:2011/07/15(金) 12:26:56.13
static使ったらどうしてダメなのか知るには、
やってみればいいよ。全てをその信念で構築する。
そうするとダメな理由が分かる。
みんなそうやって学んできたんだ。
279デフォルトの名無しさん:2011/07/15(金) 12:27:32.42
>>278
お前も…staticに…
280デフォルトの名無しさん:2011/07/15(金) 12:30:59.38
あっ、あの、私のstaticになってくださいっ!
281デフォルトの名無しさん:2011/07/15(金) 12:38:40.26
>>277
GetFullPathいいですね!
パスを直してくれるんですね
助かりました
282デフォルトの名無しさん:2011/07/15(金) 12:39:49.54
>>272
Form上に表示するUIがないもんならControlとかUserControlじゃなくてComponentから派生する
283デフォルトの名無しさん:2011/07/15(金) 12:51:19.32
>>275,282
返信ありがとうございます。
配布用コントロールの作成を考えておりまして、デザイン時にはフォームに張り付けず
実行時には表示されないOpenFileDialogのような形にしたいのです。
先ほどから検索してますがよい解決方法見つかりません
284デフォルトの名無しさん:2011/07/15(金) 12:58:46.88
>>283
自己解決しました。
http://oshiete.goo.ne.jp/qa/5625919.html
これ参考にしたら望み通りの動きになりました。
285デフォルトの名無しさん:2011/07/15(金) 13:36:25.15
>>257
staticがメモリを食うってそんなに気を使うことか?
無視できるレベルだと思うが。
フィールドはあまり使わないが、メソッドはよく使ってるけどなぁ。
286デフォルトの名無しさん:2011/07/15(金) 13:58:39.72
というか広いスコープは悪なんだよ
グローバル変数はgotoみたいなもの。
287デフォルトの名無しさん:2011/07/15(金) 13:59:08.19
はじゃなくてや
288デフォルトの名無しさん:2011/07/15(金) 14:27:19.13
pureな関数(静的フィールドに触れない静的メソッド)はいいのよ、別に。
けど、「しっくりこない」な人はたぶん、静的フィールド書き換えるステートフルな静的メソッド書く。
言語的に pure 指定できるようにして欲しいくらい。
289デフォルトの名無しさん:2011/07/15(金) 14:41:33.66
単なる使い分けの問題だな。おかしな使い方をすれば便利な道具も役に立たなくなる
290デフォルトの名無しさん:2011/07/15(金) 15:14:36.19
まあ、言語構文に組み込まれることで、使い方の指標になったりはするしね。
Disposeパターンがまさにそうだけど、usingのあるC#は割と平和。
他の言語だと、訓練されてない人がDisposeをfinallyの外に書くっていうバグが日常茶飯事。

「pure指定」が欲しいってのはそういうこと。
291デフォルトの名無しさん:2011/07/15(金) 15:30:51.75
性的フィールドなんてか聞けるものちゃうだろ基本的に
それだったらめんどくさくてもインスタンスつくってその中だけで処理するわ
292291:2011/07/15(金) 15:32:16.81

×性的フィールドなんてか聞けるものちゃうだろ
○静的フィールドなんてそうそう書き換えるものちゃうだろ

だった

金曜日だから浮かれてるのかな
293デフォルトの名無しさん:2011/07/15(金) 15:32:33.51
>>291
Form1からForm2のフィールドを使いたいんです
→ Form1を静的に置いておけばいいんですね!

なやり取りとかざらにあるわけだけども。
294デフォルトの名無しさん:2011/07/15(金) 15:34:43.76
副作用の問題はstaticでなくても存在してるけどねw
295デフォルトの名無しさん:2011/07/15(金) 15:35:09.87
あと
メインのWindowはどこからでも参照するからシングルトンにするといいと思いませんか?どうですか?
ってのも最近居た気が
296デフォルトの名無しさん:2011/07/15(金) 15:35:11.46
>性的フィールド
はあはあ・・
297デフォルトの名無しさん:2011/07/15(金) 15:42:18.64
staticにしていいのはutilクラスくらいなもん
298デフォルトの名無しさん:2011/07/15(金) 15:43:24.12
静的変数や静的メソッドや静的クラスは分かるけど、静的フィールドってなんなの?
わかりやすくおしえてけろ
299デフォルトの名無しさん:2011/07/15(金) 15:44:29.40
Int32.MinValueが静的フィールド
300デフォルトの名無しさん:2011/07/15(金) 15:47:44.36
C#ではメソッドとプロパティは大して変わらん
301デフォルトの名無しさん:2011/07/15(金) 15:48:24.04
>>298
OOP用語だとメンバー変数のことをフィールドって言う。
C#も、仕様書とかMSDNとか見てるとフィールドって読んでるはず。
302デフォルトの名無しさん:2011/07/15(金) 15:50:25.77
>>300
プロパティは基本的にバッキングフィールドの存在が前提になるから、
ここでいう、「グローバルと一緒じゃん」(広域的な状態持つのあまり良くない)という意味では、
静的プロパティは静的フィールドと大差ない。
readonly で immutable なものならそんなに問題ないけども。
303デフォルトの名無しさん:2011/07/15(金) 15:59:06.54
お前ら何で争ってるか分からなくなってきただろw
304デフォルトの名無しさん:2011/07/15(金) 16:01:11.60
性的かそうでないかだ
305デフォルトの名無しさん:2011/07/15(金) 16:20:48.76
>>301
理解できたサンクス!
後もう一つ知りたいんだけど、静的メソッドから静的なメンバ変数にアクセスするのはだめなことなの?
306デフォルトの名無しさん:2011/07/15(金) 16:34:00.07
ぜんぜん駄目じゃないよ
言語仕様にあるんだから使っていいんだよ

ふらっとスレで静的フィールドは使うなって教えるのはいいけど
他のスレでそんなこと言ったら馬鹿にされるよ
307デフォルトの名無しさん:2011/07/15(金) 17:04:46.46
質問があります。
VCで作成した関数をDLL化してC#で呼び出したいと考えています。

Cの関数の内部ではmallocでメモリを確保して、そのポインタ(double**)を返値としています。
C#でこのポインタをunsafe内でdouble**で取得しています。
返値のポインタをC#から開放することは可能でしょうか?
308デフォルトの名無しさん:2011/07/15(金) 17:07:40.82
dllが確保したメモリはdllに解放させたほうがよくない?
309デフォルトの名無しさん:2011/07/15(金) 17:07:55.45
freeを呼び出す関数も作成しておけばいいんだよ
310デフォルトの名無しさん:2011/07/15(金) 17:24:59.03
一瞬

>>305のアンカが>>304にかかっている様に見えて吹きかけた
あぶなかったじゃねぇか ちくしょう

311デフォルトの名無しさん:2011/07/15(金) 17:37:50.38
>>305
静的フィールドは最小限な方がいいってだけ。
いわゆるシングルトン、アプリの寿命と同じで、アプリ中ただ1つだけ存在するオブジェクトのために使うのが一般的。
そんなオブジェクトは大量にはないはず。

静的フィールド書き換えるような静的メソッドと、そうでない静的メソッドは性質が全然違う。
後者は、同じ引数与えたら常に同じ結果になるんでテストしやすい。
ほとんどの場合、後者で事足りるはず。
312307:2011/07/15(金) 17:44:05.17
>308,309
なるほど、わかりました。
ありがとうございます。
313デフォルトの名無しさん:2011/07/15(金) 17:52:25.14
一番いいのはC#側でdouble配列を確保して
関数にポインタとして渡して書き込んでもらうことだが
314デフォルトの名無しさん:2011/07/15(金) 17:55:34.07
まずはdll側で何をやってdoubleの巨大な?エリアを渡すのかだな
315デフォルトの名無しさん:2011/07/15(金) 18:39:35.60
C#で作られたソフトってあんまり公開されてないですか?
Vector見てもC#で作られたソフトが見当たりませんでした
316デフォルトの名無しさん:2011/07/15(金) 18:47:25.75
VectorにはC++で作成していると書かれたソフトもBASICもHSPもPHPもJavaもないよ
317デフォルトの名無しさん:2011/07/15(金) 18:52:25.49
NET Frameworkが必要と書いてあるものの半分程度がC#製だろう

半分ってのはTIOBEのスコアがC#6%、VB5%であることからの想像だけど
318デフォルトの名無しさん:2011/07/15(金) 18:56:14.59
F#で作られたソフトってあるんかな
319デフォルトの名無しさん:2011/07/15(金) 19:15:47.81
IronJSとか…?
320デフォルトの名無しさん:2011/07/15(金) 19:40:15.06
switch(e.KeyData)
{
case Keys.A:
//メッセージボックスで日付を表示する処理
break;
case Keys.B:
// ファイルに日付を書き込む処理
break;
default:
break;
}

この時、summaryには何て書けばよいのでしょうか?
321デフォルトの名無しさん:2011/07/15(金) 19:46:05.00
とりあえず、あなたが書いておいて欲しいと思うことを書けばいいんじゃないですか
322デフォルトの名無しさん:2011/07/15(金) 19:54:30.18
>>320
そういう処理だけ書いたメソッドの<summary>Docコメントにってこと?
キーバインディング。とか書いときゃいいんじゃないかな。
323デフォルトの名無しさん:2011/07/15(金) 20:31:51.30
/// <summary>
/// (´・ω・`)しらんがな
/// </summary>
324デフォルトの名無しさん:2011/07/15(金) 20:34:26.12
ちゃんとcref識別子の書き方とか説明してやれよ
俺は知らんけど
325デフォルトの名無しさん:2011/07/15(金) 20:44:26.93
最近、ママに聞いたらいいのにって質問が多くね?
326デフォルトの名無しさん:2011/07/15(金) 21:25:41.83
Q:最近、ママに聞いたらいいのにって質問が多くね?
A:ママに聞けば?
327デフォルトの名無しさん:2011/07/15(金) 21:27:54.41
すごいですね家族そろってプログラミングやってるなんて
328デフォルトの名無しさん:2011/07/15(金) 21:39:41.33
すごい○○ですね家族そろってプログラミングやってるなんて
329デフォルトの名無しさん:2011/07/15(金) 21:42:50.69
すごい○○ですね家族そろって○○○○やってるなんて
330デフォルトの名無しさん:2011/07/15(金) 21:46:41.29
try〜catchって使いすぎたらまずいものですか?
331デフォルトの名無しさん:2011/07/15(金) 21:51:36.37
まずいって何が?
アプリが問題なく使えればいいよ
まれにループの中で例外が発生しまくって糞遅くなったりすることもないこともないけど
そんなの完全にコーディングのミスだからそのときに直せばいいだけのこと
332デフォルトの名無しさん:2011/07/15(金) 21:55:25.50
tryのスコープを通過するだけなら全く問題ない
catchを通過すると例外ハンドラの動きで数百倍遅くなる
333デフォルトの名無しさん:2011/07/15(金) 22:01:23.53
一般論として例外による制御フローを書くなとは言う

乱暴な例を挙げるとこういうの

int[] vars = { 0, 1, 2, 3 };
try
{
for (int i = 0; ; i++)
{
Console.WriteLine(vars[i]);
}
}
catch (ArgumentOutOfRangeException)
{
Console.WriteLine("ループ終了");
}
334デフォルトの名無しさん:2011/07/15(金) 22:08:07.47
例外処理ってC++とかで非Exceptionを投げても遅いの?
335デフォルトの名無しさん:2011/07/15(金) 22:10:36.05
C++の話はC++スレでやってくれるか?
336デフォルトの名無しさん:2011/07/15(金) 22:14:17.36
文字通り例外的状況なんだから遅いとかどうでもいいんだよ
そんなこと気にしないといけない状況なら例外なんて使うのが間違ってる
337デフォルトの名無しさん:2011/07/15(金) 22:20:12.64
そりゃごもっとも
338デフォルトの名無しさん:2011/07/15(金) 22:22:17.62
catchを5つぐらい使ってたので問題ありそうでしたらそのときに修正したいと思います
339 【東北電 76.5 %】 :2011/07/15(金) 22:52:12.06
最初の頃は例外処理を条件分岐に使ってたなぁ
340デフォルトの名無しさん:2011/07/15(金) 23:07:22.32
デッドロックのリトライとかどうするん?
341デフォルトの名無しさん:2011/07/15(金) 23:22:35.10
>>340
止むを得ない所は止むを得ないでしょうよ

staticの「方が」いいって言われたら、何が何でも全部staticにしちゃうタイプ?
342デフォルトの名無しさん:2011/07/16(土) 00:19:27.12
今C#始めてからだいぶ理解して中級者くらいにはなったと思うんですが、Linqが難しすぎて覚えられません
SQLなんて囓ったことありません。どうすればいいですか?
343デフォルトの名無しさん:2011/07/16(土) 00:20:27.73
>>330
まずくはないけど、普通にやってると.NETだと利用頻度低め(Java比)のはず。
344デフォルトの名無しさん:2011/07/16(土) 00:21:08.56
>>334
当然遅い。
正しくデストラクターを呼ばなきゃいけないC++の方がむしろ面倒。
345デフォルトの名無しさん:2011/07/16(土) 00:22:08.01
>>342
そんなこと言ってたらScalaもRubyもPythonも無理だぞ。
SQLというか、RDBだけじゃなくて、どんなストレージ使うにしても
いまどきああいうデータ処理は必須。
346デフォルトの名無しさん:2011/07/16(土) 00:24:38.69
try~finallyは楽
347デフォルトの名無しさん:2011/07/16(土) 00:26:44.07
>>342
SQLはそんなに意識しなくていい。
Linq to Sql/Entitiesでなければ、あまり関係ない話。
その上でどうやって覚えていけばいいか、というと、どうすれば近道かな?
XMLを処理することが多いなら、Linq to Xmlから入っていくといい。
DOMやXmlReaderよりは遥かに楽なので、自然と覚えていけるはず。
そうでないなら、foreachで書いたものをLinq to Objectsに直してみていっては?
ループで書いたものが、どうLINQに直せるのかを体で覚えていけばいい。
348デフォルトの名無しさん:2011/07/16(土) 00:32:08.50
>>342
クエリ式やSQLは後回しでいいからまずyieldとラムダ式を覚える
その上でWhereとSelectを自分で作ってみれば完璧
349デフォルトの名無しさん:2011/07/16(土) 01:24:22.07
使いたくなったら使えばいいと思う
350デフォルトの名無しさん:2011/07/16(土) 05:36:22.73
Gridをモニターに描画させないでGrid内のコントロールを含めた描画イメージを裏でスクリーンショットを撮るにはどうすればいいんですか?
351デフォルトの名無しさん:2011/07/16(土) 05:44:06.65
GridからVisualBrushを生成する
DrawingVisual作ってRenderOpenしてDrawingContextにVisualBrushでDrawRectangleする
RenderTargetBitmapを生成してDrawingContextをRenderする
RenderTargetBitmapを保存するなりなんなりする

たぶんこれでおk
352デフォルトの名無しさん:2011/07/16(土) 06:14:44.30
>>351
できたありがとう〜
353デフォルトの名無しさん:2011/07/16(土) 08:48:11.64
https://www.gpoint.co.jp/scripts/auth/LoginEntry.do
このページのログイン機能を実装したいんだけど、うまく情報がとれないです。

string id = "hogehoge";
string pass = "gehogeho";
string url = "https://www.gpoint.co.jp/scripts/auth/LoginEntry.do";

Hashtable value = new Hashtable();
value["userId"] = id;
value["passwd"] = pass;
value["alf"] = "1";

string param = "";
foreach (string k in value.Keys)
{
param = param + String.Format("{0}={1}&", k, value[k]);
}
byte[] data = Encoding.ASCII.GetBytes(param);

何かhashtableの値過不足ありますか??
354デフォルトの名無しさん:2011/07/16(土) 09:00:53.10
>>353
Cookieが足りない
一度HTMLをgetしてセッション作ってもらわないとログインできないね
どのブラウザ使ってんのかは知らんけど、最近のはF12で開発者ツールが出たりするから内容確認してみな

あとPOSTデータにも不足があるけど使ってんのかは不明
>alf 1
>imageField.x 65
>imageField.y 20
>passwd unko
>userId hoge
355デフォルトの名無しさん:2011/07/16(土) 09:05:55.50
>>354
>imageField.x 65
>imageField.y 20

ieHTTPheadersでログインを見てみたら、x=73、y=17でした。
動的に変わるのかな?

あと、data作ったあとはこんな感じです

  CookieContainer cc = new CookieContainer();
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = data.Length;
req.CookieContainer = cc;

Stream reqStream = req.GetRequestStream();
reqStream.Write(data, 0, data.Length);
reqStream.Close();

WebResponse res = req.GetResponse();
Stream resStream = res.GetResponseStream();

Encoding encoder = Encoding.GetEncoding("SJIS");
StreamReader sr = new StreamReader(resStream, encoder);
string result = sr.ReadToEnd();
sr.Close();
resStream.Close();
356デフォルトの名無しさん:2011/07/16(土) 09:23:58.14
IDとパスワードくれたら作るよ
357デフォルトの名無しさん:2011/07/16(土) 09:30:32.46
>>355
だからHttpWebRequestは2つ必要なんだって
358デフォルトの名無しさん:2011/07/16(土) 10:18:31.60
>>357
把握しました。

ところで
>imageField.x 65
>imageField.y 20
この2つって、htmlソースには特にINPUTとして書かれていないのですが、
なんなのでしょうか?
359デフォルトの名無しさん:2011/07/16(土) 10:26:18.79
imageField普通にあるじゃん
360デフォルトの名無しさん:2011/07/16(土) 10:26:29.03
エクスプローラでフォルダをめぐっていいって、上の階層に戻るときはBackSpaceを押しますが
戻ったときに、フォルダの選択位置が記憶されてます
ListBoxにフォルダ一覧を表示しててエンターで選択されてるフォルダにアクセスして、BackSpaceで上の階層に戻りたいのですが
どうやって記憶させればよいのでしょうか?
361デフォルトの名無しさん:2011/07/16(土) 10:29:09.00
>>315
つpaint.net
362デフォルトの名無しさん:2011/07/16(土) 11:43:31.04
履歴を前方と後方の分を2つスタックに持っておいて
戻る/進むのときは片方のスタックからPopしたものもう片方にPushする
Enterキー等で進んだときは前方のスタックを空にする
履歴オブジェクトごとに選択状態を保持するようにする
363デフォルトの名無しさん:2011/07/16(土) 12:15:57.17
タイマーでの処理で lock掛けてるんですが、
タイマー間隔より時間がかかる処理で溜まっちゃうので
ちょっと待ったらあきらめるlockとかないですか?
それとも盛大に間違えているでしょうか。
364デフォルトの名無しさん:2011/07/16(土) 12:18:54.65
その「ちょっと」をどう定義するかは、あなた次第だ。
まー、ビジーループになってるようなら、中断処理仕込んどけばOK。
365デフォルトの名無しさん:2011/07/16(土) 12:20:45.83
>それとも盛大に間違えているでしょうか。

うん
lockで排他できるのは別スレッド


>ちょっと待ったらあきらめる

どのスレッドで待つのさ
366デフォルトの名無しさん:2011/07/16(土) 12:55:22.58
>>362

C:\からスタートして
C:\aにいったら、配列にC:\aを保存
C:\a\b\にいったら、配列にC:\a\bを保存
C:\a\b\cにいったら、配列にC:\a\b\cを保存
C:\a\b\cでBackSpace押したら、配列のC:\a\bをセット?
っていう感じでよいでしょうか?
あ、でもPerlやPython,Ruby,PHPみたいにあとから配列の数って変えられないから無理か
367デフォルトの名無しさん:2011/07/16(土) 12:57:05.66
>>365
タイマーのイベントでlockってやると待ってるのがたまってくのかなと。
タイマーを止めて、最後に再開すればいいんでしょうか。
368デフォルトの名無しさん:2011/07/16(土) 13:00:36.15
>>366
例えば、構造体をつくってそれに現在のセッティングを書きこんでスタックにプッシュする。
バックスペースをおしたら、スタックからさっきの設定を拾ってきてスタックからポップする。
それだけじゃないかな??

>>367
イベントがマルチスレッドなんて誰が言ったんだ?
369デフォルトの名無しさん:2011/07/16(土) 13:01:37.05
>>366
List<T>かStack<T>を使う
>>367
全く意味がわからない
タイマと言っても数種類あるしスレッド使ってるのかどうかもこっちは知らない
何をlockしてるのかも知らない
370デフォルトの名無しさん:2011/07/16(土) 13:18:03.56
>>369
System.Timers.Timer で、 イベント処理事体を 
lock (lockObj) {} で囲んでます。
371デフォルトの名無しさん:2011/07/16(土) 13:19:31.69
>>368
プッシュとかポップがワカンネ
372デフォルトの名無しさん:2011/07/16(土) 13:22:02.73
>>371
スタックの操作だぜ?データとアルゴリズムをしらんのか!?Orz
373デフォルトの名無しさん:2011/07/16(土) 13:24:39.54
>>371
あくまで概念的な物だよ
イメージとしてはキャラクターの頭が付いたラムネ入れる装置とか
リボルバーじゃない銃のカートリッジ
374デフォルトの名無しさん:2011/07/16(土) 13:27:25.65
>>368-369
調べてやってみます
375デフォルトの名無しさん:2011/07/16(土) 13:27:54.82
376デフォルトの名無しさん:2011/07/16(土) 13:29:48.96
>>370
なぜLockが必要だと思ったの?
377デフォルトの名無しさん:2011/07/16(土) 13:44:09.25
>>376
自分の見た限りでのタイマー処理のサンプルがどれもこれもこうなっていたからです。
ファイル読んだり書いたりしていて、同時に実行されないということは必要です。
まだ終わってないから今回の処理は無しみたいなのが安全に出来ればいいのですが。
378デフォルトの名無しさん:2011/07/16(土) 13:49:31.07
System.Timers.Timerなら確かにロックは必要
一連のファイルの読み書きをアトミックにやりたいということならロックの時間がどうしても長くなるのも仕方ない
Timer使うよりも専用のスレッドを常時動かして自分で時間測りながら一つづつ処理したほうが簡単じゃね
379デフォルトの名無しさん:2011/07/16(土) 13:55:52.18
System.Timers.Timer
>Elapsed イベントは、ThreadPool スレッドで発生します。Elapsed イベントの処理が Interval よりも長びくと、
>別の ThreadPool スレッドで同じイベントが再発生する場合があります。このため、イベント ハンドラは再入可能
>であることが必要です。

複数のThreadPoolのスレッドがlockでブロックされつづけてると
システム的にもパフォーマンス悪化の原因になりそうだしね
380デフォルトの名無しさん:2011/07/16(土) 13:59:04.91
ちょっと聞いた感じではタイマーを使う必要性は何もなさそうに聞こえるね。
っていうか、こういう人がコピペグラマなんだなw
381デフォルトの名無しさん:2011/07/16(土) 14:08:10.90
>>380
プログラマーなどというのはおこがましいレベルのものです。
タイマー使わないとすると、sleepぐらいしか思い浮かびません。
きっと、素人考えで楽しようとしてかえって苦労してるんだろうと思います。

みなさまありがとうございました。参考にさせていただきます。
382デフォルトの名無しさん:2011/07/16(土) 14:09:14.87
タイマ使うんだったらこうすればいいのかな
private volatile bool busy;
lock (lockobj2) { if (busy) return; }
lock (lockobj2) { lock(lockobj) { busy = true; 処理; busy = false; } }
383デフォルトの名無しさん:2011/07/16(土) 14:14:09.24
ぇ?
384382:2011/07/16(土) 14:19:25.54
すまん if (busy) return;のところでロックしたら全く意味ないな
でもその行を抜けた直後にbusyがtrueになる可能性があるのか
めんどくさ
385デフォルトの名無しさん:2011/07/16(土) 14:37:36.63
ロックできなかったらやめるだけだったらこれでいいか
if (Monitor.TryEnter(lockObj)) { try { 処理 } finally { Monitor.Exit(lockObj); } }
386デフォルトの名無しさん:2011/07/16(土) 14:39:32.69
フォームアプリケーションだったら、Application.Idolにイベント食わせるっていう手もあるけどね。フォームかどうかもわからない。
387デフォルトの名無しさん:2011/07/16(土) 14:44:56.78
ほぼ常にファイルの読み書きが行われてるってことなんだろ?
そんなことApplication.IdleとかWinFormsのタイマとかでやったらUI固まるよ
388デフォルトの名無しさん:2011/07/16(土) 14:48:18.82
そんなタイトな処理やるんだったら、ロックかけて構造体かなんかにスナップショットとって、
ロック解除しつつ、その構造体をファイルに書きこめばいいような気がする。

もしかして、俺、むちゃくちゃ言ってるかな??Orz
389デフォルトの名無しさん:2011/07/16(土) 14:55:12.81
>>386
なんてったって
390デフォルトの名無しさん:2011/07/16(土) 14:58:21.38
oh miss spell...
391デフォルトの名無しさん:2011/07/16(土) 15:06:49.83
>>388
処理を飛ばしていいのかどうかによる
飛ばしてはいけないなら>>388のように順番にキューに入れて処理すればいいし
適当に飛ばしていいんだったらスレッドタイマで>>385が簡単だと思う
392デフォルトの名無しさん:2011/07/16(土) 17:42:26.02
まあ、そんな概念的な話されても、初心者にはチンプンカンプンだわなwww
これ以上、上級者のオナニー合戦見るのも疲れるんで、どっかでやってくれ。
393デフォルトの名無しさん:2011/07/16(土) 18:16:16.11
コピペグラマ参上!、まで読んだ。
394デフォルトの名無しさん:2011/07/16(土) 18:32:40.17
C++で自作したネイティブDLLを、C#から呼ぼうとしたらどのようにしたらいいのですか?
395デフォルトの名無しさん:2011/07/16(土) 18:39:54.25
ネイティブDLLってC限定じゃなかったっけ?

C++だとクラスがあるし、特殊なDLLしか作れないでしょ?
396デフォルトの名無しさん:2011/07/16(土) 18:42:40.87
P/Invoke

プラットフォーム呼び出し
でググってやってみてよ
397デフォルトの名無しさん:2011/07/16(土) 18:42:54.49
別にそうでもない
単純な関数ならDllImportで普通に呼べる
398394:2011/07/16(土) 18:42:58.66
>>395
すいません、Cの方です。
計算だけをCにやらせて、結果をC#に戻すという流れです。
399デフォルトの名無しさん:2011/07/16(土) 18:48:00.78
>>395
extern "C"してればいける
400デフォルトの名無しさん:2011/07/16(土) 18:48:57.90
もしくはDEFファイルでちゃんと名前指定してエクスポートしてやれば
401デフォルトの名無しさん:2011/07/16(土) 18:53:52.45
C++の名前そのままでエクスポートしてても
修飾名調べてDllImport側でEntryPoint指定すれば一応
402デフォルトの名無しさん:2011/07/16(土) 19:47:43.50
C#でDLLを作って秀丸のマクロから使いたいのですが方法ございませんか?
403デフォルトの名無しさん:2011/07/16(土) 20:05:43.75
>>398
自作のDLLならC++/CLIが一番楽だと思うよ
404デフォルトの名無しさん:2011/07/16(土) 20:10:34.93
暇だから作った。後悔はしていない。開発環境はVC#10EEだ。
ttp://ideone.com/q563n

Monoでは動かないのか・・・。と、いうわけで消えますよ。ノシ
405デフォルトの名無しさん:2011/07/16(土) 20:41:38.61
>>368-369
すいません、難しいです><
ヒントお願いします
406デフォルトの名無しさん:2011/07/16(土) 20:42:25.36
>>402
C++/CLI
>>394の場合はC++/CLI使わなくても別に手間じゃないので
気持ち悪いものを持ち込むよりも普通にCのDLL作ったほうがいいと思うけど
逆の場合はC++/CLIでないとしんどい
逆P/InvokeとかCLRホスティングとか方法はあるがお勧めしない
407デフォルトの名無しさん:2011/07/16(土) 20:47:45.24
>>405
あーもうBackSpaceで戻ったときだけを考えろ
BackSpace押した時のパスを覚えといて
一階層上に行った後にそれを選択するようにしろ
408デフォルトの名無しさん:2011/07/16(土) 20:51:10.65
string str = "scan sitemimasita";

文字列の最後がsitaまたはdesuで終わっているか調べたいのですが
どのようにして調べるのでしょうか?
409デフォルトの名無しさん:2011/07/16(土) 20:53:10.38
EndsWithで
410デフォルトの名無しさん:2011/07/16(土) 21:02:51.80
EndsWithなんて便利な物を使うと堕落する
LengthとSubstringでやりなさい
411デフォルトの名無しさん:2011/07/16(土) 21:18:09.38
むしろ後学のために正規表現で
412デフォルトの名無しさん:2011/07/16(土) 21:20:47.52
むしろforで
413デフォルトの名無しさん:2011/07/16(土) 21:22:59.73
む(以下略
414デフォルトの名無しさん:2011/07/16(土) 21:25:25.42
>>413
むらむらしちゃらめええええええええ><
415デフォルトの名無しさん:2011/07/16(土) 21:48:30.62
でも実際>>408みたいなこと聞く奴には
LengthとSubstring使ってEndsWith相当のメソッド作りなさいという課題を出したくなるな
416デフォルトの名無しさん:2011/07/16(土) 21:55:58.05
>>415
宿題ですか?w
他人にやらせようとしてw
417デフォルトの名無しさん:2011/07/16(土) 21:56:51.72
"scan sitemimasita".Skip("scan sitemimasita".Length - "sita".Length).SequenceEqual("sita")
418デフォルトの名無しさん:2011/07/16(土) 22:39:13.21
>>405
単純に上のディレクトリに戻るなら
string 新しいフォルダ = System.Io.Path.GetDirectoryName(今のフォルダ);
でOK
419デフォルトの名無しさん:2011/07/16(土) 23:25:42.99
テキストボックス上で矢印キーを押しても他のコントロールにフォーカスが移ることはありませんが
ボタンや自作コントロール上で矢印キーを押すと他のコントロールにフォーカスが移ります

これをテキストボックスみたいにフォーカスを固定させるにはどうすればいいのでしょうか?
420デフォルトの名無しさん:2011/07/16(土) 23:29:24.99
>>419
OnKeyPressまたはKeyPressイベントで、カーソルキーだったらHandled = true;
でいけるんじゃない?
421デフォルトの名無しさん:2011/07/16(土) 23:44:33.80
>>420
さっそく試してみましたが
カーソルキーはKeyPressイベントに捕捉されないことが判明しました
422デフォルトの名無しさん:2011/07/16(土) 23:46:04.51
フォーカスロスト時のイベントってあったっけ?
そのときに何が原因でそうなったかわかればキャンセルすればいいだけのような肝するけど
423デフォルトの名無しさん:2011/07/16(土) 23:52:49.76
派生クラス作ってIsInputKeyを処理するのがいちばん正しい作法
424デフォルトの名無しさん:2011/07/16(土) 23:59:16.55
>>422
フォーカスロストに捕捉されますが、そこからどうすればいいかわかりませんです

>>423
これでしょうかね?
まだ読んではいませんが試してみようと思います
ありがとうございます

Windowsアプリケーションで方向キーなどの特殊キーを処理するには?
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/241windlgkey/windlgkey.html
425デフォルトの名無しさん:2011/07/16(土) 23:59:36.65
>>418
これでやりたいことに近づいてきました
が、しかし
MessageBox.Show(Path.GetDirectoryName("C:\\aaa\\bbb"));

MessageBox.Show(Path.GetDirectoryName("C:\\aaa\\bbb\\"));
の結果が異なってしまいます。
結果としてはどちらの場合でもC:\\aaaと表示させるにはどうしたらよいでしょうか?
426デフォルトの名無しさん:2011/07/17(日) 00:11:49.16
末尾にパス区切り文字がついていたら取り除く
ついてなかったらそのまま、というのを間に挟む
427デフォルトの名無しさん:2011/07/17(日) 00:17:48.10
>>424
使えそうなイベント調べてたけど
PreviewKeyDown
なら矢印キーであってもイベント来るな
428デフォルトの名無しさん:2011/07/17(日) 00:19:19.17
パス区切り文字はOSによって違うぞ。
429デフォルトの名無しさん:2011/07/17(日) 00:28:09.53
430デフォルトの名無しさん:2011/07/17(日) 10:00:26.44
bindingListのメソッドにはSort()ってないんですね?
これってバインドされたdataGridView側でソートしろってコンセプトなんですかね?
で、dataGridViewでソートしたらList側のデータは並び変わってるのですか?
表示上、ソートされただけですか?
431デフォルトの名無しさん:2011/07/17(日) 10:12:13.49
元になるIListがソート可能かどうか分からないから
BindingList自体はソートできないようにしてるってだけ
データソースがIBindingListでSupportsSortingがfalse返すなら
DataGridViewでもソートできないよ デフォルトでは
432デフォルトの名無しさん:2011/07/17(日) 10:45:22.41
>>426

string str = "C:\\aaa\\bbb\\";
str.TrimEnd("\\");

どうもTrimというのは文字を消すものであって、文字列ではないみたいなのですが
\\のように文字列を消す場合は何を使えばよいでしょうか?
433デフォルトの名無しさん:2011/07/17(日) 10:52:26.29
自己解決です
substringでできました
434デフォルトの名無しさん:2011/07/17(日) 11:29:20.90
ここまでで小生の作ったファイルとフォルダをリストボックスに表示するコードをこちらで公開したら
アドバイスもらえますか?
435デフォルトの名無しさん:2011/07/17(日) 11:37:08.08
もちろん
436デフォルトの名無しさん:2011/07/17(日) 11:44:27.72
>>425
GetDirectoryName使う前にパスの最後に??があるかチェックしてあったら取り除けばいいんじゃないの。
437デフォルトの名無しさん:2011/07/17(日) 11:59:53.52
フォルダの移動部分だけのプログラムです
フォームにlistboxを1個置いただけです
ここで教えていただいてここまでいけました
ifがたくさん入ってて無駄なコードが多い感じなのですが、ここをこうしたほうがいいとかいろいろアドバイスお願いします

http://ideone.com/vshzr


>>436
ありがとうございます
コードにしてみました
438デフォルトの名無しさん:2011/07/17(日) 12:05:22.72
あ、stopwatchは速度計るために入れてて消し忘れました すいません
439デフォルトの名無しさん:2011/07/17(日) 12:06:21.62
どの言語やってたの?
いろいろ気持ち悪いけど、まあいいか
440デフォルトの名無しさん:2011/07/17(日) 12:08:07.85
やってきたのはHSPです
441デフォルトの名無しさん:2011/07/17(日) 12:08:26.58
ミス
HSPとPHPです
442デフォルトの名無しさん:2011/07/17(日) 12:12:25.27
まずこれ

if (0 < this.listBox1.Items.Count)
{
this.listBox1.SelectedIndex = 0;
}

システムドライブすら存在しない状況が論理的にありえるのか
443デフォルトの名無しさん:2011/07/17(日) 12:16:08.39
それただ単純に1つ目の項目を選択したいからじゃないのか?
444デフォルトの名無しさん:2011/07/17(日) 12:17:05.23
GetLogicalDrivesの部分はifいらないだろ
445デフォルトの名無しさん:2011/07/17(日) 12:19:45.88
将来複雑になること考えて"\\"より@"\"を使うといいよ
446デフォルトの名無しさん:2011/07/17(日) 12:20:38.51
Pathを連結する時はPath.Combine
447デフォルトの名無しさん:2011/07/17(日) 12:24:29.83
if(true == this.path.EndsWith("\\"))

if(this.path.EndsWith("\\"))
448デフォルトの名無しさん:2011/07/17(日) 12:35:45.76
EnumerateDirectories使うならToArrayしないでそのままforeachで回したほうが
レスポンスが良くなるかも
449デフォルトの名無しさん:2011/07/17(日) 12:46:25.21
こんなもんかな
http://ideone.com/7Ljwi
450デフォルトの名無しさん:2011/07/17(日) 12:47:02.09
今更ながらイデオン便利だな
451デフォルトの名無しさん:2011/07/17(日) 12:47:55.97
"" =
とか 0 >
とかやめろよキモイ
452デフォルトの名無しさん:2011/07/17(日) 12:49:37.41
>>449
ちょっと見た感じListBoxのTagを使う必然性が何もないような気がするんだけど...
453デフォルトの名無しさん:2011/07/17(日) 12:52:38.19
あとプログラムと関係ないけど、BS(bull shitじゃない)で上の階層に行くっていう
エクスプローラのちょっと奇妙な仕様ってXPまでじゃなかったっけか
454デフォルトの名無しさん:2011/07/17(日) 12:53:30.70
>>452
フィールドに入れたければ勝手にしろよ
その辺は好きにしな
455デフォルトの名無しさん:2011/07/17(日) 12:54:56.78
馬鹿っぽい口調
456デフォルトの名無しさん:2011/07/17(日) 12:56:34.21
馬鹿っぽい口調
457デフォルトの名無しさん:2011/07/17(日) 12:57:13.80
大事なことですか?
458デフォルトの名無しさん:2011/07/17(日) 12:59:58.22
質問者のコードをフルボッコにすると思ったら回答者同士の叩き合いキタコレwwwwwwwwww
459デフォルトの名無しさん:2011/07/17(日) 13:03:25.05
>>453
え?
vistaでも7でも、普通に行けるが。。。
(両方持ってる)
460デフォルトの名無しさん:2011/07/17(日) 13:05:32.26
普通にBSで上移動するな
どーでもいいけどね
461デフォルトの名無しさん:2011/07/17(日) 13:08:20.31
そうだっけか。
Vista以降は上じゃなくて一つ前のディレクトリに戻る仕様になった気がしたんだけど記憶違いか申し訳ない。
462デフォルトの名無しさん:2011/07/17(日) 13:27:00.31
>>461
あ、そうか
[戻る]と同じか[上へ]と同じかって事ね
それなら[戻る]と同じだよ
xpも[戻る]と同じだと思ってた

[上へ]は[↑]だったはず。滅多に使わないけど
463デフォルトの名無しさん:2011/07/17(日) 13:31:20.87
「.」と「..」入れるんじゃダメか、、、だめか
464デフォルトの名無しさん:2011/07/17(日) 13:56:23.11
アドバイスを元に書き直してコード量が減りました
ありがとうございます
465デフォルトの名無しさん:2011/07/17(日) 14:19:43.71
>>451
理由は?
466デフォルトの名無しさん:2011/07/17(日) 14:21:56.59
意味がないから。
わざわざ読みにくくしてる。
467デフォルトの名無しさん:2011/07/17(日) 14:22:40.06
意味がないと思う根拠は?
468デフォルトの名無しさん:2011/07/17(日) 14:25:14.19
え? 意味があるのか?

そんなものがひとつも出てないから
意味がある。の反対で意味が無いになるんだけど。

469デフォルトの名無しさん:2011/07/17(日) 14:34:29.12
>>467
左辺がbool型の変数でなければ代入が発生してもboolじゃないから弾かれるだけ
470デフォルトの名無しさん:2011/07/17(日) 14:40:19.10
まあ自然な人間の思考で考えれば、
「カウントが0より大きいなら」と考えるので

if (this.listBox1.Items.Count > 0)

こっちが正解。
0がカウントより少ないならなんて言わない
471デフォルトの名無しさん:2011/07/17(日) 14:44:08.33
CだかHSPだか知らんが、ifの左辺に定数入れろとか老害に言われたんでしょ
あまり突っ込んでやるなよ
472デフォルトの名無しさん:2011/07/17(日) 14:45:25.03
小さい方を左にする流儀もあるよ
その流儀で0<ならいいんだけど、定数を比較演算子の左にする流儀は個人的には嫌い
473デフォルトの名無しさん:2011/07/17(日) 14:46:44.73
if(index < 0 || this.Count <= index) throw new IndexOutOfRangeException();
じゃいかんのか?
474デフォルトの名無しさん:2011/07/17(日) 14:46:52.17
以上未満のifなら0<=n && n<10かな
475デフォルトの名無しさん:2011/07/17(日) 14:50:12.77
・空文字チェックは "" と比較しないでLength == 0 をみる
・ this.path = this.path.Substring(0, this.path.Length - 2);
 なんで2文字削ってるの?
 C:\だったらさらにおかしくなる
476デフォルトの名無しさん:2011/07/17(日) 14:51:47.26
\を削るならTrim(new []{ '\\' })かな
477デフォルトの名無しさん:2011/07/17(日) 14:53:35.64
いや、空文字"列"チェックはstring.IsNullOrEmptyだろ
478デフォルトの名無しさん:2011/07/17(日) 14:53:50.77
まあ左側に定数やリテラルを置くのは、普通は変数の値が区間内かどうか検査する時ぐらいだね。

>・空文字チェックは "" と比較しないでLength == 0 をみる
さすがにこの突っ込みは同意しかねるな
479デフォルトの名無しさん:2011/07/17(日) 14:59:49.26
>>477
それ
str != null && str.Length != 0;
と等価
480デフォルトの名無しさん:2011/07/17(日) 14:59:57.98
定数が出てくるかどうかにかかわらず不等号の向きはなるべく<に揃えたほうが
読みやすいと俺は思うけど好みの問題
でも「定数と比較するときは常に左に定数を置くこと」だけは許せない
481デフォルトの名無しさん:2011/07/17(日) 15:00:31.08
482デフォルトの名無しさん:2011/07/17(日) 15:03:16.64
>>449は偉いな
他は叩かれるのが怖くてリファクタリングできないチキン
483デフォルトの名無しさん:2011/07/17(日) 15:09:11.93
もっと褒めて
484デフォルトの名無しさん:2011/07/17(日) 15:13:59.11
よしよし死ね
485デフォルトの名無しさん:2011/07/17(日) 15:17:01.13
調子に乗るな(´・ω・`)
486デフォルトの名無しさん:2011/07/17(日) 15:51:28.21
==と=を間違えて
if(hoge = 0)とか書いてもコンパイル通っちゃう、if(0 = hoge)ならコケる
みたいな言語では定数を左に、みたいな話を読んだけど
C#じゃ読みにくいだけだよな
487デフォルトの名無しさん:2011/07/17(日) 16:03:32.29
そうだな。
あとif文の括弧の中はbool判定なのに、
if (hoge == true) とかも冗長だな
488デフォルトの名無しさん:2011/07/17(日) 16:14:39.92
WPFだとbool?返されたりするんで==true結構使うけどね
489デフォルトの名無しさん:2011/07/17(日) 16:16:59.91
つかわねー
bool?ならnul結合使うわ
490デフォルトの名無しさん:2011/07/17(日) 16:19:35.27
if(window.DialogResult ?? false)
{
// hogehoge
}
491デフォルトの名無しさん:2011/07/17(日) 16:35:44.91
>>486
不等号だと向きを気にするのは分かるけど、等号ならどっちに何があってもいいと思うけどな。
492デフォルトの名無しさん:2011/07/17(日) 16:44:30.20
プログラムは意図がそのままコードに反映されてる方が
読みやすいと思う。
だから逆になってると右から左に読んでる気分になる
493デフォルトの名無しさん:2011/07/17(日) 17:24:09.14
SplitContainerでスクロールバーが出た場合、これをマウスのホイールでスクロールさせたいのですが
検索すると_MouseWheelって名前のイベントを見かけるのですが、僕のVC#2010Expressの右下のプロパティのイベントのところにそのような名前のものがありません
マウスホイールのイベントと、スクロールバーの値を設定・取得の方法をご教示お願いします
494デフォルトの名無しさん:2011/07/17(日) 17:31:51.11
495デフォルトの名無しさん:2011/07/17(日) 17:57:45.36
.NETのフォームにはShowWindow(hWnd, SW_RESTORE)に相当する機能ってないのかな?
496デフォルトの名無しさん:2011/07/17(日) 18:05:29.55
this.WindowState = FormWindowState.Normal;
497デフォルトの名無しさん:2011/07/17(日) 18:30:56.90
>>437>>449
少しだけ真面目に設計してみた

http://ideone.com/Y6tsZ

>>432>>447>>476
パスの正規化が目的なら、全てのパスに対して「末尾の区切り文字を削除」するのは間違い
具体的には、
・「C:\」はCドライブのルートディレクトリ、「C:」はCドライブのカレントディレクトリ
・「\」はカレントドライブのルートディレクトリ、「」は不正なパス文字列
498デフォルトの名無しさん:2011/07/17(日) 18:53:38.03
今更ながら>>360のお題をやってみた。
上に移動する以外に、履歴を戻ったり進んだりする機能も付けた。
http://ideone.com/YoeSy

実はC#で書くのは今日が初めてなのと、C#2.0までの機能しか把握してないから
たぶん多少冗長なところがある。
499498:2011/07/17(日) 19:13:54.84
バグがあった

> if (NextIndex < mHistory.Count - 1)
は、

if (NextIndex < mHistory.Count)
でないとまずいな
500デフォルトの名無しさん:2011/07/17(日) 19:14:07.86
バグがあった

> if (NextIndex < mHistory.Count - 1)
は、

if (NextIndex < mHistory.Count)
でないとまずいな
501デフォルトの名無しさん:2011/07/17(日) 19:14:52.96
連投失礼...
502デフォルトの名無しさん:2011/07/17(日) 21:31:35.18
基本的に変数が左、定数が右。

if(a < 0)
if(a > 0)

ただし、範囲指定の場合は小さい順に書く
if(0 < a && a < 10)

本当ならif( 0 < a < 10 ) と書きたいんだけどな。
503デフォルトの名無しさん:2011/07/17(日) 21:35:02.06
ちょくちょく使うならintの拡張メソッドでBetween的なのを作る
504デフォルトの名無しさん:2011/07/17(日) 21:37:53.82
if (hoge == true)
この形の場合、hogeの単語が実際にどういう名前かで決める。

hogeがisXXXとかhasXXXとか名前からして明らかに
trueかfalseかが入ると分かっている場合には
if(isXXX) のように書く。
それは英語的に比較的自然な文章だから。

ただし、hogeがflagやvalueやhogeのように
true/falseが入っているのか分かりにくい場合は
if(flag == true) のように書く。


if(flag)なんて書くとnullが入っていないという意味なのか
正の整数の意味なのか、(言語によっては)文字列がある場合なのか
意図が分かりにくい。

if(hoge)の形式はhogeがオブジェクトである場合のみに限定して使用する。
505デフォルトの名無しさん:2011/07/17(日) 21:39:25.46
C#の場合は条件式にboolしか入らないから不要
506デフォルトの名無しさん:2011/07/17(日) 21:42:31.77
>>504
どこから湧いてきたのか知らないけど、見当違いな書き込みを長々とお疲れ
507デフォルトの名無しさん:2011/07/17(日) 21:46:48.87
そもそも条件式に整数やポインタや文字列が使えるような言語なら一般に==trueじゃダメだろ
C#やJavaのように==trueで正しく条件判断できる言語を使ってるってことは
つまり真と偽の2値限定のbool型を持ってて条件式にはboolしか入らないってことだから
==trueは不要
508デフォルトの名無しさん:2011/07/17(日) 21:47:39.24
何の言語を念頭に書いてんだこれ?

オブジェクトって言ってるからC++かPHPか
509デフォルトの名無しさん:2011/07/17(日) 21:49:37.45
ついでに
意図が分かりにくいなら変数名から修正すべきだろう

flagとかbunkiとかhanteiとか付けたら職場から蹴り出すよ
510デフォルトの名無しさん:2011/07/17(日) 21:51:41.56
>>507
null許容型だったらどうする。

511デフォルトの名無しさん:2011/07/17(日) 21:51:43.90
goto *hata
512デフォルトの名無しさん:2011/07/17(日) 21:52:19.92
正直言うと気持ちは分からんでもないけどね。
俺も初心者の時には、if(hoge)よりif(hoge == true)の方がなんか分かりやすいように
感じられた時期があった。
513デフォルトの名無しさん:2011/07/17(日) 21:53:46.31
bool?の判定でnull合体演算子使えって言ってたやつは本気だったのかねえ
514デフォルトの名無しさん:2011/07/17(日) 21:54:02.29
>>510
null許容型はif条件式の中に直接書けないよ
nullable.Valueにするかnull結合演算子使わないと

>エラー 1 型 'bool?' を 'bool' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください)

あなた、本当に使ったこと、あるの?
515デフォルトの名無しさん:2011/07/17(日) 21:54:50.52
>>513
じゃあどう書くのさ
516デフォルトの名無しさん:2011/07/17(日) 22:00:53.53
517デフォルトの名無しさん:2011/07/17(日) 22:01:55.72
null合体演算子は

n ?? false;

の時

n == null ? false : (n.HasValue ? n.Value : false);

と等価だから、使わないってことは、これとは意味の等しくない書き方してるってことだな。
518デフォルトの名無しさん:2011/07/17(日) 22:06:35.44
>>517
なんか勘違いしてねえかな、お前
519デフォルトの名無しさん:2011/07/17(日) 22:07:10.28
>>504はCやC++で==1とか書いてるんだろうか
スタイルや好みの問題じゃなくて完全に間違いだよ
520デフォルトの名無しさん:2011/07/17(日) 22:08:36.88
>>515
Nullable<T>のEquals
http://msdn.microsoft.com/ja-jp/library/c7b1e4z6%28v=VS.80%29.aspx

読めば分かる
分かったら引っ込んでろ初心者
521デフォルトの名無しさん:2011/07/17(日) 22:10:51.03
せっかく俺はスルーしたのに
522デフォルトの名無しさん:2011/07/17(日) 22:12:23.12
>>520より「Null許容型のリフト」の方が説明としてはいいんじゃないか
523デフォルトの名無しさん:2011/07/17(日) 22:14:16.96
>>519
それもちょっと言い掛かりっぽいと思うけど....
Cのifは実質機械語のjump if zeroだからC#みたいなbool型がある言語とは自ずから違う
524デフォルトの名無しさん:2011/07/17(日) 22:15:42.36
504は後半の例が悪いわ
525デフォルトの名無しさん:2011/07/17(日) 22:17:49.40
>>523
じゃあ if (a==true) と if (a)の結果が同じであるケースを前提にしてるってことね?
ならnull許容型を持ち出すのはおかしいし==trueいらないじゃん
例が悪すぎる
526デフォルトの名無しさん:2011/07/17(日) 22:21:35.10
前半もどうかな。
bool型にisとかcanとか付いてないと
if(hoge)と書こうがif(hoge == true)と書こうが
結局「分岐に入るのはどっち?」ってことに
527デフォルトの名無しさん:2011/07/17(日) 22:21:57.42
>>525
何が言いたいのか分からんけど、俺はCを引き合いに出すのは
言い掛かりっぽいと言っただけで、他意はない。
528デフォルトの名無しさん:2011/07/17(日) 22:23:18.00
落ち着けよお前ら
TIOBEのスコアでC#が遂にPHPを抜いたぞ
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

2月の話だけどね
529デフォルトの名無しさん:2011/07/17(日) 22:25:01.51
24時間表記のデジタル時計が作りたいのですが時間を表示する所まで出来ました
秒がカウントされていく毎にlabelの文字列を変えるにはどうやるのでしょうか?

using System;
using System.Windows.Forms;

namespace Timer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
this.label1.Text = DateTime.Now.ToLongTimeString();
}
}
}
530デフォルトの名無しさん:2011/07/17(日) 22:26:49.57
最終的にはメトロノームが作りたいならそう言ってくれ
531デフォルトの名無しさん:2011/07/17(日) 22:27:10.04
>>529
VisualStudioのツールボックスにあるタイマー使えば
532デフォルトの名無しさん:2011/07/17(日) 22:27:22.18
>>529
System.Windows.Timerで0.1秒間隔くらいで更新すればいい
533デフォルトの名無しさん:2011/07/17(日) 22:27:43.56
>>529
何らかの方法で時間変数を更新して、Labelに突っ込む。
更新するには、コンポーネントのタイマーを使うか、Idleをつかうがよろし。
534デフォルトの名無しさん:2011/07/17(日) 22:29:30.62
htmlDocumetにニコ動とかのログイン後のページを読み込ませたいです。

WebBrowser wb1 = new WebBrowser();
HtmlDocument doc = wb1.Document;

このdocにhtmldocumetを流し込みたいのですが、やり方を教えてください
535デフォルトの名無しさん:2011/07/17(日) 22:29:34.61
秒の間隔ならそんな更新間隔細かくなくていいんじゃない
536デフォルトの名無しさん:2011/07/17(日) 22:31:02.51
>>534
Write
537デフォルトの名無しさん:2011/07/17(日) 22:34:27.18
WebBrowserでログインする方法が知りたいのか?
538デフォルトの名無しさん:2011/07/17(日) 22:44:51.77
ありがとうございます
System.Timersが精度としては良いらしいのでこれを使ってやってみました
http://www.atmarkit.co.jp/fdotnet/dotnettips/374timerstimer/timerstimer.htmlの通りにやったのですが
エラーがたくさん出てしまいました
間違っている箇所がございましたらご指摘お願いします


using System;
using System.Windows.Forms;
using System.Timers;
namespace Timer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Run()
{
Timer timer = new Timer();
timer.Elapsed += new ElapsedEventHandler(DijitalTimer);
timer.Interval = 1000;
timer.AutoReset = true;
timer.Enabled = true;
}
private void DijitalTimer(){this.label1.Text = DateTime.Now.ToLongTimeString();}
private void Form1_Load(object sender, EventArgs e){TimersTimerTest ttt = new TimersTimerTest();ttt.Run();} }}
539デフォルトの名無しさん:2011/07/17(日) 22:45:46.01
>>537
それでもいいですし、webclientとか使って最終的にhtmlDocumetに
ログイン後のページのhtmlソースが入れられればおkです
540デフォルトの名無しさん:2011/07/17(日) 22:46:16.69
>>538
帰って寝ろ
541デフォルトの名無しさん:2011/07/17(日) 22:48:23.42
>>539
面倒くさいから書いてしまうけど

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser1.Url.AbsoluteUri.Equals("https://secure.nicovideo.jp/secure/login_form"))
{
webBrowser1.Document.GetElementById("mail").InnerText = "メール";
webBrowser1.Document.GetElementById("password").InnerText = "パスワード";
webBrowser1.Document.Forms[0].InvokeMember("submit");
}
}

って書いてログイン画面開くと、勝手にログインしてトップページに移るから、その時にDocument見ればいいはず
まあ工夫してみて
542デフォルトの名無しさん:2011/07/17(日) 22:48:51.79
>>538
DateTime使ってるんだからタイマの精度なんてどうでもいい
どうせUIスレッドで動かさなきゃいけないんだからWinFormsのタイマでいい
いくらぴったり一秒間隔でイベントが発生したとしても、
時刻が1秒進むタイミングと描画タイミングは合わないから1秒より短い間隔で更新する
543デフォルトの名無しさん:2011/07/17(日) 22:52:41.11
>>541
ありがとうございます!!
544デフォルトの名無しさん:2011/07/17(日) 22:59:36.39
WinFormsのタイマでやってみました
ちょっと疑問が出ました
フォームにtimerを置いて右下のプロパティでEnabledはtrueでIntervalは100にデフォルトで設定されていたのに
イベントでTickを登録したのに
実行しても動きません
Form1_LoadでEnabledとIntervalを書くと動いたんですけど
何で右下のプロパティで設定されているのに、コードで書かないと動かないのでしょうか?
545デフォルトの名無しさん:2011/07/17(日) 23:07:01.62
>>541
すいません、webbrowser使わない方法ってありますか?
webbrowserコントロールはなるべく使いたくありません。

現状、単にstringでhtmlソースは取得できているため、
それをhtmldocumentに変換したいのが目的です。

WebBrowser wb1 = new WebBrowser();
wb1.DocumentText = 取得したstring

としたら、スクリプトエラーで怒られました
546デフォルトの名無しさん:2011/07/17(日) 23:08:56.31
>>545
DocumentTextプロパティは〜?
547デフォルトの名無しさん:2011/07/17(日) 23:09:10.39
>>545
そりゃ独自で取得したhtmlを内部で渡せばパスが変わるはずだからなあ
html内部のjsなどの入手先などのアドレスが絶対アドレスになってなければ失敗するんじゃね?
548デフォルトの名無しさん:2011/07/17(日) 23:11:01.93
>>545
一旦Stringにしてしまうと必要なデータが抜けてしまうから無理だと思ったほうがいい

HtmlDocumentじゃねえと駄目なのか?
XMLじゃ駄目か?
549デフォルトの名無しさん:2011/07/17(日) 23:15:36.21
>>548
後で中身を解析したいのです。
stringでも正規表現とか駆使すればできなくもないのですが、
HtmlDocumetの方が簡単かなと思いまして。
550デフォルトの名無しさん:2011/07/17(日) 23:15:58.77
たとえば2chのこのスレをdatじゃなく
http://hibari.2ch.net/test/read.cgi/tech/1310106189/l50
これから入手したhtmlをプログラム内部でWebBrowserに突っ込んだら
まともにページとしては機能しないはずだよ
ところどころ相対パスになってるから
551デフォルトの名無しさん:2011/07/17(日) 23:18:50.62
WebBrowserを嫌う理由がよくわからんが別に表示してなくても普通に使えるんだから
DOMを使いたいのならプログラム内部でWebBrowserのインスタンス作って
ナビゲートだけやってもらえばいいだけだと思うけど
552デフォルトの名無しさん:2011/07/17(日) 23:18:51.51
>>549
XMLじゃ駄目なのかって聞いてんだけどな、俺は
553デフォルトの名無しさん:2011/07/17(日) 23:35:19.96
HTMLはXMLじゃなくてSGML
554デフォルトの名無しさん:2011/07/17(日) 23:37:12.99
HTMLはタグ閉じなかったりとか割りとルール無用だからな
555デフォルトの名無しさん:2011/07/17(日) 23:39:10.03
>>549
ファイルとして書き出して、そのファイルをwebbrowserによみこませたらどうだ?
556デフォルトの名無しさん:2011/07/17(日) 23:46:13.44
質問と回答が噛み合ってないと思うのは俺だけだろうか
557デフォルトの名無しさん:2011/07/17(日) 23:47:49.37
質問者のやりたいことがよくわからないのも大きいかと
558デフォルトの名無しさん:2011/07/17(日) 23:48:09.26
解析ってのがどういうものなのか教えてもらった方がいいな
559デフォルトの名無しさん:2011/07/18(月) 00:36:45.97
所謂スクレイピングがやりたいならSGMLReader使ってHTMLをXMLに変換してLinq to Xmlが簡単だし軽量。
560デフォルトの名無しさん:2011/07/18(月) 00:44:03.33
SGMLReaderはGPLじゃなかったらいいのに
561デフォルトの名無しさん:2011/07/18(月) 00:48:59.41
配るようなもの作ってから言えよ

その頃にはディスアセンブルガーって言いだすと予言してやろう
562デフォルトの名無しさん:2011/07/18(月) 01:50:05.02
ゲームの乱数調整について質問してもいいですか?
563デフォルトの名無しさん:2011/07/18(月) 03:28:34.89
私はいいと思いますがみなさんはどうでしょう?
564デフォルトの名無しさん:2011/07/18(月) 03:37:36.28
経験則だが質問していいですか?って質問するやつはだいたいのーたりん
565デフォルトの名無しさん:2011/07/18(月) 04:51:47.90
構造体のコレクションを生成したんですけど
C#ではコレクション中の構造体のパラメータは参照するだけで代入出来ないのでしょうか?
何故か定数扱いされてしまって代入出来ませんでした
何か特別なアクセス方法が存在したりしますか?elementAtやrefは試したのですが出来ませんでした
566デフォルトの名無しさん:2011/07/18(月) 05:25:45.71
>>565

List<Point> list = new List<Point>();
list.Add(new Point(0, 0));

list[0].X = 1; //構造体は値型だからこれは無理
list[0] = new Point(1, 0); // 構造体ごと代入すればOK
567デフォルトの名無しさん:2011/07/18(月) 07:55:02.69
プログラミングで、aが3以上6以下の場合どう表記すればよいでしょうか?
3<=a<=6 、a>=3 a<=6 などやってみましたがうまくいきません。
a>=3だけとかならうまくいきます。
568デフォルトの名無しさん:2011/07/18(月) 08:08:12.33
569デフォルトの名無しさん:2011/07/18(月) 08:27:14.80
>>568
ありがとうございます。解決しました。
570デフォルトの名無しさん:2011/07/18(月) 08:27:40.22
>>563
お願いします
>>564
マジでのーたりんなんです

パワフルプロ野球スレでcupsを256にすれば天才選手(低確率で出る初期能力が強い選手)が出ると聞きました
乱数のことはよくわからないんですがそのcupsという項目があって
それを256に合わせればいいという認識でよろしいんでしょうか

それがあってるとして、
乱数は数値化しないとそれにあわせることはできないのでしょうか
もしくは数字だけが分かっていればなんとかなるものですか?
571デフォルトの名無しさん:2011/07/18(月) 08:43:19.13
>>570
日本語でおk

そしてそれは市販製品をクラックしようとしているってことですか?
572デフォルトの名無しさん:2011/07/18(月) 09:07:14.62
Labelに現在の時刻が23:18として表示されているとします
翌日の2:18にメッセージボックスを表示させたいのですが
どうやって判定したら良いでしょうか?
573デフォルトの名無しさん:2011/07/18(月) 09:16:17.66
>>572
情報が少なすぎてアレだけど、3時間後にアラームを鳴らしたいの?
それとも固定で2時18分に鳴らすの?
前者ならタイマーで、後者ならシステム日時で判断できる。
574デフォルトの名無しさん:2011/07/18(月) 09:40:05.90
>>570
謙遜で言ってると思ったらマジでのーたりんだったでござる
575デフォルトの名無しさん:2011/07/18(月) 10:36:20.18
>>566
なるほど
それ専用のコンストラクタが必要になるんですか
やってみます
ありがとうございました
576デフォルトの名無しさん:2011/07/18(月) 11:13:09.04
>>573
固定で鳴らしたいです
ただ、日にちの情報はなく、時刻だけで行う方法はございませんか?
577デフォルトの名無しさん:2011/07/18(月) 11:13:34.40
その前に本当に構造体が必要なプログラムを書いてるのかが疑問だけどな
578デフォルトの名無しさん:2011/07/18(月) 11:15:24.49
ようはアナログの目覚まし時計と同等のものを作りたいのです
579デフォルトの名無しさん:2011/07/18(月) 11:25:46.87
一秒間隔に現在の時刻が2:18か確認する。
2:18ならアラームを鳴らす。
もう鳴らしたよフラグをたてる
2:19になったらもう鳴らしたよフラグを落とす

完成
580デフォルトの名無しさん:2011/07/18(月) 11:32:07.97
フラグとか止めてw
そんなものはエッジ(変わり目)を検出するようにすりゃいんだよ
581デフォルトの名無しさん:2011/07/18(月) 11:33:02.82
これはタイマーの精度でずれて2:18を通り越してしまう恐れを感じているのですが
このように作ってもOKでしょうか?
582デフォルトの名無しさん:2011/07/18(月) 11:39:19.62
と思いましたが秒も表示したいので厳しいですね・・・
583デフォルトの名無しさん:2011/07/18(月) 11:43:48.64
アナログの目覚まし時計って
設定した時刻よりもずれてなるだろ?
584デフォルトの名無しさん:2011/07/18(月) 11:44:25.27
>>577
いえ、恐らくclassを使った方がスムーズに書けたと思います
今までCを使っていて今回始めて#を使ったのでCと同じノリで使っていたら…といった感じです
585デフォルトの名無しさん:2011/07/18(月) 12:03:31.96
一秒間隔に確認とかアホだろw
CPUの無駄。

鳴らしたい時間にタイマー仕込めばいいだけ。
586デフォルトの名無しさん:2011/07/18(月) 12:08:55.94
そして本体の時刻がずれてるのに気がついて
修正したら間違った時刻にアラームが鳴ると。
587デフォルトの名無しさん:2011/07/18(月) 12:10:47.95
>>585
それどうやるのえすか?
588デフォルトの名無しさん:2011/07/18(月) 12:39:41.92
>>586
そこにこだわるんなら1分前に起動して1秒間隔でチェックするって感じでいいだろ
589デフォルトの名無しさん:2011/07/18(月) 13:39:06.11
DataGridViewのソースをBindingList<T>で作ると表示されますが、ただのList<T>だと
ヘッダは表示されるけどデータは表示できません。
BindingListを使わずにListで表示させたいのですが方法が分かりません。
Tは独自に作った、プロパティを複数持ったClassです。
590デフォルトの名無しさん:2011/07/18(月) 14:04:39.69
>>584
Win32API呼び出して構造体が必要って場合じゃ無い以外
まず使わない方がいい
C#での構造体のメリット、デメリットをわかってないと百害あって一利なし
591デフォルトの名無しさん:2011/07/18(月) 14:22:21.97
>>589
まずは状況を明確にするために、BindingList<T>の使用が不可能な理由を述べよ
592デフォルトの名無しさん:2011/07/18(月) 14:25:31.93
バインド後にリスト弄ってる?
IBindingListかDataTableじゃないとリストの変更は反映されないだろ
593デフォルトの名無しさん:2011/07/18(月) 14:26:24.02
>>589
IBindingListインターフェイスを持ったコレクションでないと変更を検出しない
List<T>は持ってない

またはList<T>変更するたびに毎回DataSourceに代入しなおせば一応表示されるはずだ
その度にDataGridViewの初期化処理が走って馬鹿らしいけどな
594デフォルトの名無しさん:2011/07/18(月) 14:46:00.28
>>593
代入だけで表示されましたっけ?
ちょっと試してきます。
595デフォルトの名無しさん:2011/07/18(月) 14:55:50.69
>>593
代入って、dataGridView1.DataSource = list;
ってことですよね?データは表示されないです。
Buttonのイベントハンドラの中に書いたんですけど。
596デフォルトの名無しさん:2011/07/18(月) 15:35:28.95
最初の代入だけ表示するのですね。
2回目以降は初期化処理が走らないようで、代入しても変わりません。
refleshって初期化処理じゃないんですか?駄目でした。
597デフォルトの名無しさん:2011/07/18(月) 16:03:26.86
同じListを入れてないか?
newした新しいList入れてみ
598デフォルトの名無しさん:2011/07/18(月) 16:03:50.72
諦めてBindingList使うんだな
599デフォルトの名無しさん:2011/07/18(月) 16:13:58.97
>>597
ああ、ListもNewしないと駄目なのか・・・
色々むずkじゃしいなあ。ありがとございました。
600デフォルトの名無しさん:2011/07/18(月) 16:21:20.77
そんなアホな
一度null入れるとか他にも方法はありそうなもんだが
601デフォルトの名無しさん:2011/07/18(月) 16:28:59.47
>>600
あ、本当だ!Null代入したら初期化されて、編集後のデータ表示されました。
これが一番簡単でいいですね。ありがとうございました。
602デフォルトの名無しさん:2011/07/18(月) 16:46:36.28
NewとかNullとかこいつVBerだな
603デフォルトの名無しさん:2011/07/18(月) 16:52:07.81
null 参照 (Visual Basic では Nothing)
604デフォルトの名無しさん:2011/07/18(月) 17:33:42.47
VB6er
605デフォルトの名無しさん:2011/07/18(月) 18:52:50.68
VisualStadioスレから着ました

MagickNetを使ってpictureBoxにadobeのPSDファイルを表示したいと思います
C#4.0だと動かないのでVisualStadioスレで教えていただいたhttp://hibari.2ch.net/test/read.cgi/tech/1308470068/549のxmlを書きました

2回目のbutton1押したとき(psdを表示する処理)にこのエラーがでます ttp://www.dotup.org/uploda/www.dotup.org1803093.jpg
1回目のbutton1の押下は表示されます
button2とbutton3はちゃんと表示できます
フォームの配置はbuttonが3個とpictureBoxが1個です ttp://www.dotup.org/uploda/www.dotup.org1803095.jpg
コードはこれです ttp://ideone.com/PASQI
どなたかおたすけください
606デフォルトの名無しさん:2011/07/18(月) 18:53:32.15
>>571
わかりにくくてすいません
低確率で出る選手を出すためにゲームの乱数を調整(解析?)したいです
スレ違いだと思いますが、乱数を見る事が出来る方法とか解析する方法があったら教えてほしいです

>>574
すいません...
607605:2011/07/18(月) 18:55:42.54
608デフォルトの名無しさん:2011/07/18(月) 19:03:16.60
>>606
スレ違いだと理解しているなら出てけクソガキ
609デフォルトの名無しさん:2011/07/18(月) 19:05:57.50
>>605
1回目にpsdをpngに変換したあとpngが開きっぱなしになってんだろ
610デフォルトの名無しさん:2011/07/18(月) 19:14:41.72
>>608
どっちかっていうとあんたの方がよほどガキっぽい
611デフォルトの名無しさん:2011/07/18(月) 19:17:07.19
どっちもどっちはより悪い方の味方
612デフォルトの名無しさん:2011/07/18(月) 19:19:33.05
スレのルールを弁えたガキなら大歓迎よ。
ウェルカム。
613デフォルトの名無しさん:2011/07/18(月) 19:24:23.16
>>610
無理に中立派を装わなくていいから失せろ
614デフォルトの名無しさん:2011/07/18(月) 19:26:51.18
パワフルプロ野球のことは無視するとして
質問は

>乱数は数値化しないとそれにあわせることはできないのでしょうか
>もしくは数字だけが分かっていればなんとかなるものですか?

だな
質問としても意味が不明瞭だし
少なくともC#とは関係ないからスレ違い。
終了。
615デフォルトの名無しさん:2011/07/18(月) 19:29:37.83
つか何故このスレを選んだ?
616605:2011/07/18(月) 19:30:43.60
>>609
閉じるにはどうするのでしょうか?
617デフォルトの名無しさん:2011/07/18(月) 19:35:30.43
>>616
ファイルからImageクラスのインスタンスを作成すると
そのインスタンスが破棄されるかDisposeされるまで閉じられない

で、こうする
using(var src = Image.FromFile("hoge.png")){

pictureBox1.Image = src.Clone();
}
618デフォルトの名無しさん:2011/07/18(月) 19:36:32.21
>>616
コード見てないから違うかもだけど
Image.FromFile()で開いてるImageオブジェクトをDisposeしないといけないんじゃないかな
619デフォルトの名無しさん:2011/07/18(月) 19:49:55.11
>>613
中立じゃなくて、あんたの方がガキっぽいと言ってるんだけど。
しかし、本当に幼稚だな。
620デフォルトの名無しさん:2011/07/18(月) 19:51:24.09
>>619
失せろって単語理解できる?
他の言い方にした方がいいか?

死ね
621デフォルトの名無しさん:2011/07/18(月) 19:51:58.99
ガキに絡むガキもスレには要らないです
622デフォルトの名無しさん:2011/07/18(月) 19:54:44.20
>>620
まあ君が独りよがりなガキだってことは理解した。
623デフォルトの名無しさん:2011/07/18(月) 19:57:17.32
夏だNe!
624デフォルトの名無しさん:2011/07/18(月) 19:59:43.56
>>606>>608>>610>>613>>619>>620>>622


          \(^ m ^)/
\(^ m ^)×(^ m ^)/ | |\(^ m ^)/
   | |    | |  < >  | |
  <  >  / >      / \

                       猛暑
                       http://hibari.2ch.net/tech/
625デフォルトの名無しさん:2011/07/18(月) 20:00:30.88
季節で人格は変わらないけどね
春夏秋冬いつでも幼稚な奴は幼稚。
626デフォルトの名無しさん:2011/07/18(月) 20:01:30.00
お前も通年アホに絡んでるのか?ヒマしてるなあ
627デフォルトの名無しさん:2011/07/18(月) 20:02:49.87
>>625
そうあきらめず、せめて秋には大人になってくれ
628605:2011/07/18(月) 20:05:12.32
>>618
button4を押したらDisposeするのを書いてみましたらProgram.csのApplication.Run(new Form1());でエラーになってしまいます(Program.csは編集してないのに)
http://ideone.com/Xw15U

>>617
using・・・を書いてみたのですがpictureBox1.Image = src.Clone();の部分でエラーが出てしまいました
エラー 1 型 'object' を 'System.Drawing.Image' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください)
http://ideone.com/Qvdk6
629デフォルトの名無しさん:2011/07/18(月) 20:09:56.87
すまーん
キャスト書いてなかったな
自分で書き足してくれ
630デフォルトの名無しさん:2011/07/18(月) 20:14:40.84
実行時エラーとコンパイルエラーくらいの区別はつけようや
631605:2011/07/18(月) 21:20:34.78
using (System.Drawing.Image src = Image.FromFile(temp))
{
pictureBox1.Image = src.Clone();
}

こんな感じだと思ったんですがヒントおねがいします;;
632デフォルトの名無しさん:2011/07/18(月) 21:22:59.40
キャスト!キャストだよ!
キャストキャストキャストキャストキャスト
633デフォルトの名無しさん:2011/07/18(月) 21:23:05.15
クズ共しかいないなこのスレ
634デフォルトの名無しさん:2011/07/18(月) 21:23:39.15
キャストと型変換 (C# プログラミング ガイド)
http://msdn.microsoft.com/ja-jp/library/ms173105%28v=VS.100%29.aspx
635デフォルトの名無しさん:2011/07/18(月) 21:28:16.59
自演半端じゃねえなw
636605:2011/07/18(月) 21:31:45.47
(image)src.Clone();ってやったら出来ました
(型名)コードっていうのがキャストってことですかね?勉強になりました
637605:2011/07/18(月) 21:43:09.56
すいません、2回連続でbutton1を呼び出すと>>605と同様にttp://www.dotup.org/uploda/www.dotup.org1803093.jpgのエラーが出て強制終了します
638605:2011/07/18(月) 21:46:29.34
コードはこのように書き直しました
http://ideone.com/gQt4P
639デフォルトの名無しさん:2011/07/18(月) 21:50:10.73
imgをdisposeしてないからだ
640605:2011/07/18(月) 22:03:33.10
private void printPsd(string url)
{
MagickNet.Magick.Init();

String fileName = url;
String temp = System.IO.Path.GetTempPath() + System.IO.Path.GetFileNameWithoutExtension(fileName) + ".png";

MagickNet.Image img = new MagickNet.Image(fileName);
img.Write(temp);
using (var src = Image.FromFile(temp))
{
pictureBox1.Image = (Image)src.Clone();
}
MagickNet.Magick.Term();
img.Dispose();
}

とメソッドの最後にDisposeをやってみましたが同じエラーが出ます
書くところは間違ってますか?
641デフォルトの名無しさん:2011/07/18(月) 22:09:43.36
using (MagickNet.Image img = new MagickNet.Image(fileName)) {
img.Write(temp);
}
MagickNet.Magick.Term();
using (var src = Image.FromFile(temp)) {
pictureBox1.Image = (Image)src.Clone();
}
こうじゃないの
642デフォルトの名無しさん:2011/07/18(月) 22:12:51.86
こんなクソマイナーなライブラリの質問に何でお前ら答えられるの?
俺みたいに趣味グラマには全然無理
643デフォルトの名無しさん:2011/07/18(月) 22:19:01.87
>>640
MagickNet知らんしコードもよく読んでないので適当。
恐らく、Image.Write(path)メソッドは、pathで指定したファイルが既に存在する場合は
例外を吐く(つまり勝手に上書きしない)仕様なんだろう。

上書きしたいのなら、File.Deleteとかで先に削除すべし。
644デフォルトの名無しさん:2011/07/18(月) 22:28:58.63
>>642
ImageMagicのラッパーだからマイナーって程マイナーってわけでも
645デフォルトの名無しさん:2011/07/18(月) 22:50:09.60
一時ファイル名を取得したほうがいいのでは?
System.IO.Path.GetTempFileName()
とか
646605:2011/07/18(月) 22:50:21.85
>>641
ありがとうございます
解決に結びつきました

using (MagickNet.Image img = new MagickNet.Image(fileName))
{
img.Write(temp);
MagickNet.Magick.Term();
using (var src = Image.FromFile(temp))
{
pictureBox1.Image = (Image)src.Clone();
}
}
pictureBox1.ImageLocation = temp;

でいけました。これで表示したあとに、手動で生成されたファイルを消しても消えました
(いままでのはプログラムを閉じるまで消えませんでした)
一応>>605の質問としては解決できましたが
何故最後にImageLocationで設定しないと画像が表示されないのかがわかりません
pictureBox1.Image = (Image)src.Clone();の部分はpictureBoxに画像を表示する処理ではないのでしょうか?
647デフォルトの名無しさん:2011/07/18(月) 23:27:26.85
ImageLocation使うならImageプロパティ要らないんじゃない?
648デフォルトの名無しさん:2011/07/19(火) 04:10:29.41
pictureboxにα付きのビットマップを表示したいんですけどどうやったら出来ますか?
bitmapのコンストラクタにファイル読み込みはあるんですけど
それを使うとピクセルフォーマットが設定出来なくなってしまいます
逆にピクセルフォーマットを指定出来るコンストラクタを使うと
α値の無いビットマップを作ってしまいます
最初からα値0のピクセルデータで初期化出来れば問題無いんですけど
何かいい解決方法は無いでしょうか?
649デフォルトの名無しさん:2011/07/19(火) 05:12:24.35
ビットマップって3種類意味があって

Bitmapクラス(System.Drawing.Bitmap)
Bitmapデータ(System.Drawing.Bitmapが内部で持ってるDevice Independent Bitmapデータ)
Bitmapファイル(*.bmpのファイル)

全部違う
どれがどれだ

・アルファ値がついたビットマップ画像の読み込み
http://www.ipentec.com/document/document.aspx?page=csharp-32bit-argb-bitmap-load

アルファ値がついたビットマップって仕様にはない(32bitの場合ピクセルの上位1ビットは0固定になっている)ので
無視されても本来は仕方ない
対応謳ってるソフトが仕様を無視してアルファ書き込んでるだけ

一応データとしては読み込まれているので、上記URLのようにBitmapData.Scan0からコピーすることはできる
素直にpng使うべきだがね
650デフォルトの名無しさん:2011/07/19(火) 05:16:08.62
× アルファ値がついたビットマップって仕様にはない(32bitの場合ピクセルの上位1ビットは0固定になっている)ので
○ アルファ値がついたビットマップファイルって仕様にはない(32bitの場合ピクセルの上位1バイトは0固定になっている)ので

Device Independent Bitmapや、それをラップするBitmapクラスはアルファ値にもちろん対応しています
651デフォルトの名無しさん:2011/07/19(火) 08:40:55.98
>>605
VisualStadio www
652デフォルトの名無しさん:2011/07/19(火) 08:58:35.26
アルファ値ってなんぞ?
653デフォルトの名無しさん:2011/07/19(火) 09:17:44.42
なんですか、だろ
654デフォルトの名無しさん:2011/07/19(火) 09:23:18.57
>>652
透明度。
RGBA
赤、緑、青、透明度で色を表す時に使う
655デフォルトの名無しさん:2011/07/19(火) 09:27:32.08
GDI+は対応してないみたいね
Windowsのリソース(shell32.dllとかの)にはそういうbmpが含まれてるけど
656デフォルトの名無しさん:2011/07/19(火) 09:57:57.52
>>648
あの、ちょっと試してみたいのでそのαつきのビットマップっでどうやって作れますか?
もしくはどこかで素材で配布されてましたら教えてください
657デフォルトの名無しさん:2011/07/19(火) 10:08:49.21
透明度ってことは背景があると透けるんぞ?
658デフォルトの名無しさん:2011/07/19(火) 10:16:23.43
>>656
GIMPで作れるよ
659デフォルトの名無しさん:2011/07/19(火) 10:24:43.04
もしよろしければ素材をアップロードしていただけませんか?
GIMPのダウンロードサイズが大きくて7〜8時間はダウンロードに時間がかかってしまいまして。。。
660デフォルトの名無しさん:2011/07/19(火) 10:29:03.79
丸投げか?w
661デフォルトの名無しさん:2011/07/19(火) 10:30:00.25
どこに上げたらいい?
662デフォルトの名無しさん:2011/07/19(火) 10:33:09.51
ここでいいかな
http://www1.axfc.net/uploader/Sc/so/256553
上げたよw
663デフォルトの名無しさん:2011/07/19(火) 10:35:16.46
Paint.NETにプラグインでいいだろ
664デフォルトの名無しさん:2011/07/19(火) 10:42:48.13
>>662
どうもありがとうございます
アナログ回線だと大きなファイルはキツくてw
665デフォルトの名無しさん:2011/07/19(火) 10:45:46.66
その程度でキツかったらWindowsUpdateなんてできんだろ
666デフォルトの名無しさん:2011/07/19(火) 12:01:44.40
splitContainerのpanel2にpictureBoxを置いて画像を表示してます
panel2にautoscrollをtrue、pictureBoxのDockをFill、SizeModeをCenterImageにしたとき
大きな画像を表示してるときはスクロールバーが出ません

pictureBoxのDockをNoneにしたらスクロールバーは出ますが画像がセンターによりません
どなたかアドバイスよろしくお願いいたします
667デフォルトの名無しさん:2011/07/19(火) 12:06:49.31
そりゃそうだろ
聞きたいことは、スクロールバーが出ないサイズの
画像の時にセンター表示したい、ということ?
668デフォルトの名無しさん:2011/07/19(火) 12:20:55.20
>>649
恐らくクラスのBitmapだとおもいます
コンストラクタが12個あるモノです

>素直にpng使うべきだがね
png上で書き込みが出来ればそれでもいいんですけど

最終的に読み込んだ画像上に線を引けるようにしたいんです
669デフォルトの名無しさん:2011/07/19(火) 12:26:20.79
お伺いしたい事は、スクロールバーが出るサイズの画像をセンター表示してもスクロールバーもちゃんと表示される方法でございます
670デフォルトの名無しさん:2011/07/19(火) 12:34:34.45
>>668
Bitmap.Save()でpngファイルにエクスポートできるっしょ
671デフォルトの名無しさん:2011/07/19(火) 12:46:56.34
>>669
PictureBoxのサイズが可変じゃないとPanelに
スクロールバーが出ないだろ?
Normal表示のまま、パネルの中心が
ピクチャーボックスの中心になるように
ずらせばいいと思うけど。
672デフォルトの名無しさん:2011/07/19(火) 12:51:20.18
ってNormalじゃだめか。AutoSizeだな
中心位置はサイズからわかるっしょ
673デフォルトの名無しさん:2011/07/19(火) 13:07:48.72
DockをFillにして、WindowsApiでスクロールバー位置を調整するしかないでしょ
674デフォルトの名無しさん:2011/07/19(火) 13:47:42.13
とりあえず横だけセンターに持っていきたいのでこうやってみたのですが
画像によって右のほうがスペースが広くなったり左のほうが広くなったりしてしまいます
pictureBoxWidth = this.pictureBox1.Size.Width;
splitContainerPanel2Width = this.splitContainer1.Panel2.Width;
pictureBox1.Location = new Point((pictureBoxWidth - splitContainerPanel2Width)/2, 0);


WindowsApiは難しくて検索してみましたが自分には難しいです
675デフォルトの名無しさん:2011/07/19(火) 13:48:27.39
追記

AutoSizeのときです
676デフォルトの名無しさん:2011/07/19(火) 14:04:38.52
Location は0,0のままで
panelのHorizontalScrollを替えるんじゃないのか?
677デフォルトの名無しさん:2011/07/19(火) 14:25:31.51
原因が分かりました
画像が読み込まれる前にコードが実行されてしまうのでWidthを正しく取得できてないのが原因でした
ここからは何とかできそうです
ありがとうございます
678デフォルトの名無しさん:2011/07/19(火) 14:51:35.10
int[] ia = {0,1,2,3,4,5,6,7,8,9}
に対して、並べ替えが
ia = {5,6,7,8,9,4,3,2,1,0}
となるようなLINQの書き方を教えてください。
679デフォルトの名無しさん:2011/07/19(火) 14:54:56.04
謎だ
680デフォルトの名無しさん:2011/07/19(火) 15:07:01.47
>>678
【VB.NET】LINQ友の会【C#, C♯, C#】
http://hibari.2ch.net/test/read.cgi/tech/1202568694/

ここで聞くことをお勧め致します。
681デフォルトの名無しさん:2011/07/19(火) 15:10:10.66
では移動します
682デフォルトの名無しさん:2011/07/19(火) 22:30:31.19
http://dobon.net/vb/dotnet/system/getinstalledfonts.htmlの最初に出てくるコードを
Form_Loadに貼り付けたのですが何も表示されません(PictureBox1はpictureBox1に直してます)
フォームにpictureBox1も貼り付けてます
using System.Drawingもファイルの先頭付近に書いてあります
何故でしょうか?
683デフォルトの名無しさん:2011/07/19(火) 22:33:01.04
この手の質問は定番の釣りネタになってるの?
684デフォルトの名無しさん:2011/07/19(火) 22:34:25.17
>>683
はい上級者様はこちらへ移動してください

C#, C♯, C#相談室 Part67
http://hibari.2ch.net/test/read.cgi/tech/1308128665/
685デフォルトの名無しさん:2011/07/19(火) 22:38:41.60
>>682
タイミングの問題
LoadイベントやShownイベントあたりだとそのコードを実行したあと
pictureBoxを表示するコードが走って実質折角描画した
データがクリアされてる状態になってる

pictureBoxにClickイベントとか用意してそこにLoadイベントに貼ってある
コードを移植すればたぶん問題なく表示されるはず
686デフォルトの名無しさん:2011/07/19(火) 22:45:46.93
OnPaint以外で描画すんな
Invalidateの引数によってはOnPaint前にバックグラウンド塗りつぶしが入るんだから
687デフォルトの名無しさん:2011/07/19(火) 22:46:14.36
dobonさんのところは割とそのまま動くサンプルが多かったような気がしたけど、
>>682のサンプルはちょっと妙だな。

メソッドの中身しか書いてないし、何でCreateGraphicsなんか使ってるんだろ
688デフォルトの名無しさん:2011/07/19(火) 23:00:14.31
Buttonを押すと実行するようにしたら動きました

取得したフォント名をlistboxに代入して、項目が切り替わったときにフォントをpictureBoxに表示するように書き換えてみたいと思うのですが
listboxへの代入は以下のコードでできましたが
System.Drawing.Text.InstalledFontCollection ifc = new System.Drawing.Text.InstalledFontCollection();
FontFamily[] ffs = ifc.Families;
foreach (FontFamily ff in ffs)
{
listBox1.Items.Add(ff.Name);
}
AddRangeで一気に代入する場合、
System.Drawing.Text.InstalledFontCollection ifc = new System.Drawing.Text.InstalledFontCollection();
FontFamily[] ffs = ifc.Families;
listBox1.Items.AddRange(ffs);
だと余計な文字列まで含まれてしまいます
ff.NameのようにNameの部分だけを代入したいのですがforやforeachで別の変数にff.Nameを代入してAddRangeするよりもスマートな書き方はございませんか?
689デフォルトの名無しさん:2011/07/19(火) 23:00:55.83
>>686-687
ありがとうございます
OnPaintについて調べて書き直してみます
690デフォルトの名無しさん:2011/07/19(火) 23:07:53.67
OnPaintじゃなくてPaintイベントじゃねえのと横槍
OnPaintは継承しないと駄目っしょ
691デフォルトの名無しさん:2011/07/19(火) 23:27:54.15
なぜCreateGraphicsを使ってはいけないのか調べて勉強になりました
http://park1.wakwak.com/~ima/dotnet_cs_drawtips0003.htmlで書いてあるからPaintを使ったほうがいいのですね
692デフォルトの名無しさん:2011/07/19(火) 23:35:10.54
>>690
Form自身ののOnPaintってのが有ってのう
693デフォルトの名無しさん:2011/07/19(火) 23:37:44.36
でも実際問題としてフォームに直接Graphicsで文字を描画するなんてまずやらないと思う
694デフォルトの名無しさん:2011/07/19(火) 23:46:47.94
>>691
まあ無難なやり方だとBitmapをプログラム内部で作って
そこへ描画、描画が終わったBitmapをpictureBoxに設定とかするほうがいいよ
695デフォルトの名無しさん:2011/07/20(水) 00:21:23.79
Paintが〜CreateGraphicsが〜って流れはちょっと前にもあったよな
696デフォルトの名無しさん:2011/07/20(水) 00:24:08.60
>>695
このスレか前スレの終わりの方じゃないかな?
だから定番の釣りネタなのかと思った

>>682は追記でLoadとかShownなどで実行すると〜
みたいな注意書きを入れておいて欲しいな

確か前もそこをネタに同じ質問になったような気がする
697デフォルトの名無しさん:2011/07/20(水) 00:24:52.50
このスレの>>73でした
698デフォルトの名無しさん:2011/07/20(水) 00:34:52.37
俺が覚えてたのは「ボタンの上に円を描きたい」って感じのだから>>73は違うなあ
まあ定番ではあるんだろう
699デフォルトの名無しさん:2011/07/20(水) 00:38:45.85
>>698
それも対応したので覚えてる
当たり判定つけてってやつだろw

ゲームなんかだとフレームバッファーに描画して表示する
っていうのが普通なのでそれに近い感じのコードにして欲しいんだよな

winform関連のコントロールのGraphicsを直接さわるんじゃなくて
700デフォルトの名無しさん:2011/07/20(水) 09:58:45.68
dataGridViewに直接columnを設定して、直接データをaddした場合は、
ヘッダをクリックすると▲印が出てsortできますが、
データのプロパティクラスからList<T>を作って、
datasourseでdataGridViewに入れた場合、ヘッダに▲印が出ません。
これはクラスの作り方で何か足りないのでしょうか?
上のほうでIcomparableの実装が何とか、ってあったけどよく分からなかったです。関係無いかな?
701デフォルトの名無しさん:2011/07/20(水) 10:20:01.17
データソースにバインディングする場合、データソースがIBindingListを実装してて
かつSupportsSortingがtrueを返さないとソートできない。
BindingList<T>の派生クラス作ってソート系のprotectedメンバ実装するのが比較的手軽
702デフォルトの名無しさん:2011/07/20(水) 10:43:41.93
フォントの質問をしたものです
画像にフォントを指定して文字を出力する方法以外にもリッチテキストでフォントを表示する方法もあることを知り
Paintのほうは難しいので、リッチテキストのほうで表示できてからやりたいと思います
listboxにはフォント名が表示されてて、選択したフォントをリッチテキストの文字列に適用して表示させたいのですが
以下のようにして表示させることはできました
が、listboxのフォントスタイルまで変わってしまいました
リッチテキストのフォントスタイルだけ変更したいのですがアドバイスお願いいたします


private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{

Size = new Size(350, 200);

FontFamily ff = new FontFamily(this.listBox1.Text);
Font fnt = new Font(ff, 12, FontStyle.Bold | FontStyle.Italic);
Font = fnt;

this.richTextBox1.Text = "ABCD1234";
fnt.Dispose();
}
703デフォルトの名無しさん:2011/07/20(水) 10:49:51.86
> Font = fnt;
リッチテキストボックスのフォントだけ変えたいのなら
リッチテキストボックスのFontに設定しようよ
704デフォルトの名無しさん:2011/07/20(水) 11:11:23.04
ありがとうございます
できました
705デフォルトの名無しさん:2011/07/20(水) 11:27:35.87
>Font = fnt;

これは

this.Font = fnt;

のことだからねー
formのクラス内でこう記述すると親フォームのフォントが設定されるのねー
Fontプロパティはアンビエント・プロパティだから、
個別に設定されていないと親コントロールの値が使われるのねー
706デフォルトの名無しさん:2011/07/20(水) 11:34:31.65
ありがとうございます
こうかいて目的の動作ができました
richTextBox1.Font = new Font(
listBox1.Text,
richTextBox1.SelectionFont.Size,
richTextBox1.SelectionFont.Style | FontStyle.Underline
);
richTextBox1.Text = "ABCD1234";

richTextBox1.Font.Dispose();
707デフォルトの名無しさん:2011/07/20(水) 17:51:08.14
失礼します
小さい画像を大きい画像の指定した位置に貼りつけることって簡単に出来るのでしょうか?

切り抜くことは出来るようですが、貼りつけの方法が見付からなかったで・・・
http://www.atmarkit.co.jp/fdotnet/dotnettips/912bitmapcroprect/bitmapcroprect.html

力技でやるならBitmapdataにしてbyte単位で置き換えれば良いのでしょうが、
もっとスマートな方法がありましたらよろしくお願いします。
708デフォルトの名無しさん:2011/07/20(水) 18:10:51.81
709デフォルトの名無しさん:2011/07/20(水) 19:22:07.05
10秒間隔で処理を実行する方法ってございませんか?
メソッドAAAを実行したら、AAA内の処理が終わらなくても10秒後にはAAAを実行したいのです
710デフォルトの名無しさん:2011/07/20(水) 19:24:54.09
>>809
普通に Timer でいけない?

けども、10秒間隔で、10秒以上かかる処理を定常的にやると最終的にCPUがパンクするような。
AAAの実行時間にばらつきがあって、10秒超える場合もあるってこと?
711デフォルトの名無しさん:2011/07/20(水) 19:26:07.94
809に期待
712デフォルトの名無しさん:2011/07/20(水) 20:11:16.10
最近なんかこういう質問が多いね〜

マルチスレッド(聞いたことあるっしょ?)という言葉をわきにおいておくと、
あるプログラム(内のスレッド)が同時に実行できるのは一つの処理だけなの。

ふつうはAAAの処理が終わらないと、もう一個AAAを開始することすらできないの。
そこんとこよろしく。

>メソッドAAAを実行したら、AAA内の処理が終わらなくても10秒後にはAAAを実行したい

この場合はスレッドを複数用意するなどして実行しないといけないの。
そうすると、いろいろ面倒なことが起きてくるの。

プログラム(プロセス) − スレッドの関係も勉強しようね。
プロセスはぶっちゃけていうとプログラムね。なんちゃら.exe。
スレッドは基本となる実行単位で、プロセスの中に少なくとも1つあるの。
713デフォルトの名無しさん:2011/07/20(水) 21:20:53.50
System.Threading.Timerでできるけど処理の中身についてかなり注意が必要
>>709みたいな質問してるようじゃ確実にぶっ壊れるので
マルチスレッドについてきちんと勉強するか、嫌なら同時に実行しなくて済む方法を考えたほうがいい
714デフォルトの名無しさん:2011/07/20(水) 22:41:16.06
フォーム上のラベルに数式を打ち込みたいんだけど、手作業でマウスでラベルペタペタ配置していかないと駄目ですか?
ttp://img.ehowcdn.com/article-page-main/ehow/images/a07/u5/a4/use-mathtype-onenote-800x800.jpg
715デフォルトの名無しさん:2011/07/20(水) 22:43:14.48
それは実行時の話なのかそれともアプリ製作時の話なのか
716デフォルトの名無しさん:2011/07/20(水) 22:48:00.23
アプリ製作時の話です。(実行時なんてオイラのオツムじゃ土台からして無理っす)
717デフォルトの名無しさん:2011/07/20(水) 22:48:45.84
どっちも無理なくせにwww
718デフォルトの名無しさん:2011/07/20(水) 22:49:27.98
うぐぅ
719デフォルトの名無しさん:2011/07/20(水) 22:51:37.01
手作業もしくは画像を貼る
720デフォルトの名無しさん:2011/07/20(水) 22:51:42.01
最終的にどういうものにしたいかがさっぱりわからんので
ただ固定でラベル設置して数式を表示するだけなら
そういう方法でもいいけどさ
721デフォルトの名無しさん:2011/07/20(水) 22:56:15.60
単純に表示させたいだけならTeX式を要求してGoogle先生に画像にしてもらう
722デフォルトの名無しさん:2011/07/20(水) 23:03:04.66
単に数式の画像を作るなら、Microsoft Mathematicsがお手軽かもね。
MS製フリーソフトだけどよく出来てる。
全然使いこなせてないけど
723デフォルトの名無しさん:2011/07/20(水) 23:10:11.02
独り人海戦術で一文字ずつラベル並べてましたが、MathTypeでメタファイル画像を事前に作って貼り付けるようにしてみます。
724デフォルトの名無しさん:2011/07/20(水) 23:13:07.52
winformで独自にやるならpath使ってやった方がいいだろうな
725デフォルトの名無しさん:2011/07/20(水) 23:14:11.44
pathとかありえん
やるなら普通に文字を組み合わせる
726デフォルトの名無しさん:2011/07/21(木) 00:10:55.40
やるなら普通に文字を・・・ギャル文字?
727デフォルトの名無しさん:2011/07/21(木) 00:14:37.36
WordもTexもフォント使って数式描いてるけど
728デフォルトの名無しさん:2011/07/21(木) 01:12:52.83
あらフォントw ゴメン我慢出来んかった。
729デフォルトの名無しさん:2011/07/21(木) 01:22:11.95
しっかり睡眠とれよ
730707:2011/07/21(木) 10:23:16.19
>>708
Graphicsを使うのですね、ありがとうございました。
731デフォルトの名無しさん:2011/07/21(木) 19:30:15.65
>>729 マスかいて寝ろ
732デフォルトの名無しさん:2011/07/21(木) 19:42:16.05
きょうはオナニーの日だからな
733デフォルトの名無しさん:2011/07/21(木) 20:59:27.45
俺が質問しないと過疎るねここ
734デフォルトの名無しさん:2011/07/21(木) 21:03:03.36
気のせいだ。
735デフォルトの名無しさん:2011/07/21(木) 21:54:20.24
ソフト作りたいんですが、何を作ればいいんですか?
何か世の中に必要なソフトを教えてください
736デフォルトの名無しさん:2011/07/21(木) 21:59:24.03
菅直人暗殺ソフト
737デフォルトの名無しさん:2011/07/21(木) 22:00:26.67
OCRオナシャス!
738デフォルトの名無しさん:2011/07/21(木) 22:03:19.73
OCRはGoogleDocsとEvernoteで間に合ってる
739デフォルトの名無しさん:2011/07/21(木) 23:04:32.31
>>735
ExpressionBlend Express
740デフォルトの名無しさん:2011/07/21(木) 23:05:25.50
名前がくどいな
741デフォルトの名無しさん:2011/07/21(木) 23:10:57.82
>>735
高精度なラスタベクタ変換
742デフォルトの名無しさん:2011/07/21(木) 23:21:51.62
目が見えない人が多いので音だけで出来るサウンドノベル以外の新しいジャンルと手法を使ったゲームなんかどうだろう
失明予備軍かなり多いし、精神的にもうれしいかもしれない
あと、最近すごい速度で脳波コントローラーが進化してるから早めにサイコミュを各ジャンルのソフトに組み込んだ再開発を始めてみるとか
あと、楽器を録音して音を出すんじゃなくてGPUを使った物理演算で素材から気温湿度空間すべてを計算したカスタマイズ可能なバイオリンソフトとか作るのはどうだろうか
あと、検索エンジンで画像はあるけど音が無いからmp3、midiとかのネットワークエクスプローラとかどうかな
リンクから延々と検索していって音素材のあるページの一覧を作るソフトとかどうかな。結果はP2Pで共有すれば現実的かな
あとなんだろ、株取引の自動化で、起動させとけば儲かるソフトのコンテストを早稲田大学でやってなかったっけ
全銘柄を同時に条件判断して売り買いするソフト、確か一番安定して利益が出るソフト作った人は1億円の賞金が出てたはず
743デフォルトの名無しさん:2011/07/21(木) 23:24:26.32
うるさい
744デフォルトの名無しさん:2011/07/22(金) 01:00:28.74
>>714
Windows7なら比較的楽出来るな
ラベルに、では無いが
http://d.hatena.ne.jp/NyaRuRu/20100329/p1
745デフォルトの名無しさん:2011/07/22(金) 01:06:33.26
>>744
MathMLの表示ってIEで出来たっけ?
やった事無いから詳しい人に任せるわ
746デフォルトの名無しさん:2011/07/22(金) 01:09:17.97
その前に海外サイトとか探せばそのくらいのライブラリなら
公開されてそうだけど

俺は必要ないけど定期的に出てくるネタなので
ある分野の人にとっては必要な物だろうし
747デフォルトの名無しさん:2011/07/22(金) 01:22:19.02
Win7じゃなくてもMicrosoft Mathematicsが使えるんだけどね。>>722

>>746
そのくらいとか簡単に言ってくれて泣ける。
っていうか、基本、人様のコードは使いたくないとか使えない人の方が多いと思うんだけどどうかね
748デフォルトの名無しさん:2011/07/22(金) 01:24:45.70
じゃあがんばってTeXだっけ?ああいう汎用フォーマットにあわせた
文字列突っ込んだら画像出力してくれるライブラリを自分で作るか
上でもでてるグーグルのWebAPI使う
749デフォルトの名無しさん:2011/07/22(金) 01:30:14.45
TeXも中身はただのフォント
750デフォルトの名無しさん:2011/07/22(金) 01:35:24.34
昨日からただのフォントとか言ってる奴、ちょっと頭悪くないか?w

もちろん「ただのフォント」に違いないけど、それを奇麗にレイアウトする
手間を考えてるのか?
751デフォルトの名無しさん:2011/07/22(金) 01:40:22.83
そりゃそうだがフォント使わずにパスで描いても楽にはならんだろうw
パスで描けと言うのに対してただのフォントだと言ったんだよ
749は別人
752デフォルトの名無しさん:2011/07/22(金) 01:43:13.89
>>751
いやpathの人です
スケールとかいろいろできるので便利かなあと
753デフォルトの名無しさん:2011/07/22(金) 02:39:37.91
フォントもパスだしスケールもできるけど
754デフォルトの名無しさん:2011/07/22(金) 04:11:55.36
初心者用ってもウブなハートの持ち主用じゃぁ無い
755デフォルトの名無しさん:2011/07/22(金) 14:41:27.93
コントロールを継承した独自コントロールのデザインを
デザイナから変更することは出来ますか?
756デフォルトの名無しさん:2011/07/22(金) 16:24:22.68
http://ideone.com/bWyr9
少数第4位を四捨五入した数値を出力したいんですけど
どうすればいいんですか?
757デフォルトの名無しさん:2011/07/22(金) 16:28:03.09
758デフォルトの名無しさん:2011/07/22(金) 17:52:28.12
>>742
GPUを使った物理演算で素材から気温湿度空間すべてを計算したカスタマイズ可能なメトロノームだろ
759デフォルトの名無しさん:2011/07/22(金) 18:28:52.26
>>735
ハッキング対策用にダミーのシステムをサーバーとして稼働させておけるようなのを希望
技術はあっても心理トリックを抜けられるかどうかはまた別次元だから
おとりシステムは簡単に侵入できるようにして、ダミーのデータを詰め込んでおけるような奴がいい
760デフォルトの名無しさん:2011/07/22(金) 18:30:43.62
>>735
人工知能とか面白いかも
名前は……そうだな、スカイネットってかっこよくね?
761デフォルトの名無しさん:2011/07/22(金) 18:40:50.85
>>735
とりあえずWindows8用にSilverlightでマルチタッチ対応の既存ソフト作りなおしでもしてろ
MSマーケットできるみたいだし、今あるソフトは指で操作するにはコントロールが小さすぎる
まずベクター見てタブレットPC用に欲しいソフトを参考にUIを作り直して、来年のWindows8と同時に目標100ソフト上げられるように準備しろ
762デフォルトの名無しさん:2011/07/22(金) 18:48:45.52
録画してあるTV・ラジオをすべて音声認識しておいて単語からファイルと発言時間の候補だすソフトってもうあったっけ?
763デフォルトの名無しさん:2011/07/22(金) 18:56:33.59
GPSを使ったソフトはまだまだこれからですよ
764デフォルトの名無しさん:2011/07/23(土) 01:05:08.24
巨大なbyte配列に対して論理演算を行った結果が欲しいのですが、1バイトずつやるしか無いのでしょうか?
Array.Copyみたいな感じでArray.XorCopyとかやりたいのですが
765デフォルトの名無しさん:2011/07/23(土) 01:11:32.28
普通にループで回しても.NETは十分速いけどもし遅いなら
fixedでint*にして4バイトずつ処理するのが速いんじゃね
それでもダメならCでSSE
766デフォルトの名無しさん:2011/07/23(土) 01:14:02.40
DirectX
767デフォルトの名無しさん:2011/07/24(日) 00:21:07.49
プログラミングを全く作った事がない初心者です。
今独習C#を読んでいます。
プログラムのノウハウのようなものを学ぶにはどうしたらいいでしょうか?
768デフォルトの名無しさん:2011/07/24(日) 00:23:13.11
CodeComplete読んできて
上下ね
769デフォルトの名無しさん:2011/07/24(日) 00:36:10.92
>>767
独習C#の練習問題全部解く
770デフォルトの名無しさん:2011/07/24(日) 00:38:14.08
>>767
読むよりも書くほうが大事。書いてればそのうち身につくよ。(ノウハウ含めて)
本読んでわかったつもりの人は、逆に頭が固くてダメだね。
771デフォルトの名無しさん:2011/07/24(日) 00:39:29.55
>>768
amazonの欲しいものリストに入れておきました。
>>769-770
ですね。そうします。
772デフォルトの名無しさん:2011/07/24(日) 00:44:10.34
やることなくなったなーと思ったら他の言語に手を出すといい
読めるコードは多い方が便利だ

ことアルゴリズムにおいて、C言語の実装ならあるのですが〜ってパターンの質問はありがち
だいたいテメーで移植しろと返される
773デフォルトの名無しさん:2011/07/24(日) 00:46:25.15
>>772
そこまでじゃないですけど、訳あって5月からC,C++、JAVAの入門書も読んでいます。
C#で落ち着くつもりです。Unityでゲーム作るのに必要なんですよ。
774デフォルトの名無しさん:2011/07/24(日) 00:54:24.51
>>772
そりゃそうだ
一つ言語覚えたら、他の言語覚える敷居が大分低くなるし、何より、移植はプログラミングの良い練習になる

親心と言う奴やね
775デフォルトの名無しさん:2011/07/24(日) 11:12:54.21
C#だいたい覚えたら、JavaよりもHaskellとかF#、もしくはLispみたいな関数型を勉強した方がいい刺激になると思う。
776デフォルトの名無しさん:2011/07/24(日) 11:15:31.05
刺激にはなっても役には立たない
777デフォルトの名無しさん:2011/07/24(日) 11:31:02.91
>>775
それはまだ早いと言うか、最初にhaskellの方が良いんだが、すでにC#で始めてるしな。。。

移植に関数型言語は共通点無さ過ぎ

C#でオブジェクト指向までしっかり身につけたのちに、サンプルコードの多いC辺りを覚えて移植作業でプログラミングに慣れてからhaskellかな

実用とかより、コーディングスタイルとか抽象的な考え方は見習うところが多い言語だよ。haskellは
778デフォルトの名無しさん:2011/07/24(日) 11:57:49.62
随分俺の見解とは違うな。

俺は移植なんて退屈な猿仕事の要素が多いと思うし、
言語なんて必要になった時点で覚えれば十分かと。

必用になってから勉強するのでは遅いことを優先的に習得する方が、まあ要領はいい。

お勉強フェチ(別に揶揄する意図はないよ)な人なら効率なんてどうでもいいんだろうけど、
俺みたいな勉強嫌いは無駄なことに時間使いたくない
779デフォルトの名無しさん:2011/07/24(日) 12:07:40.76
ダメな人が語る「見解」も
世の中にはある。
780デフォルトの名無しさん:2011/07/24(日) 13:19:45.57
無駄かどうかを知る為には知ってないといけないじゃないか。
ものすごく無駄な事してて、勉強した方が楽だったって事は多いだろ?
781デフォルトの名無しさん:2011/07/24(日) 14:03:52.38
必要になったら覚えるってのは、答えを目の前にしてお預け食らうようなもんで、
モチベーションが下がるぜ
社畜仕事ならモチベーションに限らずやらなきゃならない訳だから関係ないけどね
別に揶揄する意図はないぞっと
782デフォルトの名無しさん:2011/07/24(日) 14:14:16.60
C→C#への移植は、勉強になるよ。
どういったクラスにまとめるか考えるには最適なモデル。
783デフォルトの名無しさん:2011/07/24(日) 14:22:11.38
Form1に全部ぶち込むから自作クラスとか気にしたことないな
784デフォルトの名無しさん:2011/07/24(日) 14:26:10.49
Cから移植する時は大体ハンドルに対してメソッドくっ付けるパターンだから機械的にできそうな気もする
785デフォルトの名無しさん:2011/07/24(日) 15:25:46.66
>>783
猛者発見

おれそういうの嫌いじゃないぜ
786デフォルトの名無しさん:2011/07/24(日) 23:19:54.73
>>781
そんなのは野心でも向上心でもない
上昇志向って言うんだよ
分かるか?
若い奴は勘違いしてるの多いぞ
787デフォルトの名無しさん:2011/07/24(日) 23:34:57.62
>>786
何がいいたいのかよく分からんけど、結構じゃないの>上昇志向。
それがあればこそ人は努力するわけで、そこを否定しては何も始まらんと思うよ。

俺なんか全然そういうのないから尊敬しちゃうよマジで。
788デフォルトの名無しさん:2011/07/24(日) 23:55:43.29
本当に何言いたいのか分からんな

初めから電波飛ばしてるから仕方ないけど
789デフォルトの名無しさん:2011/07/25(月) 00:02:53.71
「社畜仕事」に反応したんだよ。

社畜だから。
790デフォルトの名無しさん:2011/07/25(月) 00:11:17.39
781も一言余計なんだよ

知らん言語のコードを移植するためにその言語覚えるとか、モチベーション下がるよね

で止めておけば良かった
それだけなら誰も否定せん
791デフォルトの名無しさん:2011/07/25(月) 00:11:48.22
一応言っておくけど、778=787≠786。
>>786は何が言いたいのか分からないけど、その点は>>781も同じ。
792デフォルトの名無しさん:2011/07/25(月) 01:18:26.92
上昇志向と向上心の親クラスは何だろう?野心は何かの派生?
793デフォルトの名無しさん:2011/07/25(月) 03:01:52.05
オブジェクト脳は危険まで読んだ
794デフォルトの名無しさん:2011/07/25(月) 05:00:03.29
親クラスの属性でも見てみたいもんだ。
795デフォルトの名無しさん:2011/07/25(月) 08:45:24.17
オブジェクト脳ってイベントが発生するまで動かないのか?
796デフォルトの名無しさん:2011/07/25(月) 09:28:16.35
答えるのが楽しくなっちゃう質問ないかな
797デフォルトの名無しさん:2011/07/25(月) 12:46:26.38
ジェネリックデリゲートを実務で使った例を教えてください。
798デフォルトの名無しさん:2011/07/25(月) 13:01:07.75
EventHandler<T>
799デフォルトの名無しさん:2011/07/25(月) 13:05:46.88
RPGのアイテムのリストを作るのにはどうしたらいいの?

>>798
>>797の回答かい?
業務内容やその必要性について語って欲しいな。
800デフォルトの名無しさん:2011/07/25(月) 13:10:44.70
class Item{}
801デフォルトの名無しさん:2011/07/25(月) 15:09:24.13
byte[]に個数を格納するドラクエ仕様とか如何?
indexはアイテムの種類
未使用アイテムなんか仕込んどくと楽しいYO
802デフォルトの名無しさん:2011/07/25(月) 20:16:28.35
今やってる案件でPredicate<T>使いまくってるわ
803デフォルトの名無しさん:2011/07/25(月) 21:26:26.36
なんて読むの?
804デフォルトの名無しさん:2011/07/25(月) 21:31:38.73
Predicate<T>はオワコン
805デフォルトの名無しさん:2011/07/25(月) 21:35:38.44
Func<T, bool> 使って出来るんで不要と言えば不要だけど、Whereとかの引数がPredicateなのよねぇ。
806デフォルトの名無しさん:2011/07/25(月) 21:38:33.77
いや、Whereとかの引数がまさに Func<T, bool> だから不要かと。
807デフォルトの名無しさん:2011/07/25(月) 21:51:06.79
あれ?
引数名が pred なだけなんだっけ?
808デフォルトの名無しさん:2011/07/25(月) 21:56:08.01
Predicate<T>使ってんのはList<T>とかだな
809デフォルトの名無しさん:2011/07/25(月) 21:58:00.42
その頃はFuncがなかったからねえ。
810デフォルトの名無しさん:2011/07/25(月) 22:02:58.47
ファイルの検索条件に使っただけだから、Whereのシグネチャとかどうでもいいんだけどね
811デフォルトの名無しさん:2011/07/25(月) 23:01:56.19
Dictionary を使っていて

if(dic.ContainsKey(key)){
 Foo(dic[key])
}

みたいに書くこと多いんですが、これだと
2回 Dictionary を検索することになって
無駄な気がするんですが、1回ですます方法ないですか?
812デフォルトの名無しさん:2011/07/25(月) 23:04:04.50
TryGetValue
813デフォルトの名無しさん:2011/07/25(月) 23:45:49.71
object value = ((IDictionary)dic)[key];

ただし、null値とキー無しは区別できないので注意
814デフォルトの名無しさん:2011/07/25(月) 23:55:27.18
TryGetValue に +1
815デフォルトの名無しさん:2011/07/26(火) 00:00:41.95
普通にTryGetValue使えばいいと思うけど、IDictionaryって別にnullを返す仕様じゃないよな?
816デフォルトの名無しさん:2011/07/26(火) 00:02:55.54
うん、無いと思う。
実装次第、かつ、Dictionaryクラスはそういう実装じゃない。
817デフォルトの名無しさん:2011/07/26(火) 00:10:31.77
ジェネリックを無意味にするクソな方法には違いないが
通常のインデクサと違って非ジェネリックのIDictionaryにキャストした場合には
キーが見つからないときにnullが返るよ
http://msdn.microsoft.com/ja-jp/library/ms224770%28v=VS.80%29.aspx
Hashtableがそういう仕様だったから合わせてるんだろ
818デフォルトの名無しさん:2011/07/26(火) 02:47:52.30
パンツ
819デフォルトの名無しさん:2011/07/27(水) 18:29:41.47
for (int x = 0 ; x < bmp.Width ; x++)
if (bmp.GetPixcel(x,y) != Color.Transparent)
return y;

Boolean isBlank = true;
for (int x = 0 ; x < bmp.Width ; x++)
isBlank = isBlank && bmp.GetPixcel(x,y) == Color.Transparent;
if (!isBlank) return y;
とどっちが処理に時間かかるかな?
820デフォルトの名無しさん:2011/07/27(水) 18:31:06.96
C#の勉強をしてみようと思います。C++とJavaは経験がありますが、
C#≒Javaという認識で大丈夫ですか?
821デフォルトの名無しさん:2011/07/27(水) 18:36:24.43
>>819
処理時間の大半がbmp.GetPixcel(x,y)だろうから
どっちでも大して変わらんだろ
822デフォルトの名無しさん:2011/07/27(水) 18:37:45.18
>>820
その認識ではダメですが、導入はスムースに行くと思います。
C++やJavaがカバーしていない、C# 3.0以降の関数型言語っぽい要素が、
いまやC#の重要な特色の一つなので、Javaとは別の物という認識をもってそのへんも学習してけばいいかと。
823デフォルトの名無しさん:2011/07/27(水) 18:43:00.77
>C++とJavaは経験がありますが
これならいきなり書けると思う。
VC++のインテリセンスとわかりやすいサイトいくつか
ブックマークあればかなりいける

新しく追加された部分は>>822の言うとおり
それ用に勉強した方がよいとは思うが。
824デフォルトの名無しさん:2011/07/27(水) 18:45:48.82
>>822
>>823

ありがとうございます。がんばってみます
825デフォルトの名無しさん:2011/07/27(水) 19:49:28.92
>>820
C# 1.0 ≒ Java 4くらい?
C# 2.0 ≒ Java 6くらい
C# 3.0以降はJavaとか比べたら失礼。
826デフォルトの名無しさん:2011/07/27(水) 21:10:28.58
>>819
処理時間を気にするならGetPixelやめてBitmap.LockBitsを使いなさい
数桁速くなります
827デフォルトの名無しさん:2011/07/27(水) 22:14:04.90
>>826
そういう言えばそういうのもあったな。

でも一番処理に時間がかかってるというか、負荷がかかってる要因は
explorerが生成したpngのサムネイルやらを集めに行くのが原因だったorz
OSを不安定にしてまでサムネイル作るなよ…
828デフォルトの名無しさん:2011/07/27(水) 22:32:50.94
>>825
確かになー。。。
何時の間にかjavaの方がc#の機能を追いかける側になってるし
829デフォルトの名無しさん:2011/07/27(水) 22:35:15.90
正直C#2.0に追いつけるかもちょっと怪しい
830デフォルトの名無しさん:2011/07/27(水) 22:36:15.36
C#から始めたから今更Javaなんてやりたくないっすわ
831デフォルトの名無しさん:2011/07/27(水) 22:43:50.98
C#3.0 以降は楽すぎだよな。
他の環境での開発が辛い。。。
832デフォルトの名無しさん:2011/07/27(水) 23:47:13.45
もうなんか、老人ホーム並みに数日おきに誰かが同じようなことを何度も何度も言ってるなw
100回ぐらい同じような話を読んだ気がする
833デフォルトの名無しさん:2011/07/27(水) 23:51:30.51
新陳代謝激しいのはイイだろ
834デフォルトの名無しさん:2011/07/28(木) 07:02:35.97
public class hoge
{
public List<hoge> Children { get; set; }
}

のような階層構造のクラスで、親から子は問題なくたどれますが
子から親をたどりたい場合はどうするのが一般的でしょうか
835デフォルトの名無しさん:2011/07/28(木) 07:04:55.28
>>834
コンストラクタで親のインスタンス貰うようにすればいいんじゃないの?
インスタンスを持ってないクラス=最上位
とか決めてさ
836デフォルトの名無しさん:2011/07/28(木) 07:20:43.72
>>835
ありがとうございます、それでやってみます
837デフォルトの名無しさん:2011/07/28(木) 07:25:18.10
[芸+]【芸能】信心深い高嶋政伸 段ボール9箱分の砂をベッド下に置き寝る
http://headline.2ch.net/test/read.cgi/bbynews/1311805378/
838代理レス:2011/07/28(木) 16:32:57.72
MagickNetの質問の者です
http://www.imagemagick.org/script/binary-releases.php#windowsでImageMagick6.7.1-0をWindowsにインストールして
http://auemath.aichi-edu.ac.jp/~khotta/ghost/#diskのghostscript9.02をインストールしました
DOSを開いてコマンドプロンプトから"C:\Program Files\ImageMagick-6.7.1-Q16\convert" C:\image\f00157.ai C:\:image\save.jpg
ってやるとaiファイルをsave.jpgというファイルにコンバートできてて、ビューアで確認しましたがちゃんと表示されてました
しかし、C#からMagickNetでaiをjpgに変換しようとするとエラーで出来ません(エラーはコード内に書きました)
変換してjpgとして表示させたいのですがアドバイスお願いいたします
aiファイルの素材はttp://frames-design.com/wp/?p=491でダウンロードしたものを使用しました
http://ideone.com/2vr9S
839デフォルトの名無しさん:2011/07/28(木) 16:57:51.40
>>838
そういうときはさ、いきなり答えを求めないで
imgは正しく入ってるか?とか前もってチェックすることあるでしょ
そして、いきなりaiファイル使うんじゃなくて、別の
読めることがわかってる形式の画像で試してみるとかさ。
MagickNetでaiファイルが扱えるかは調べた?
840デフォルトの名無しさん:2011/07/28(木) 17:17:55.07
2008-01-01 6.3.7-9 Cristy <quetzlzacatenango@image...>
Use explicit format specifier to render transparent Adobe Illustrator files (i.e. convert ai:image.ai image.png).

MagickNet1.03のリリース日時
2007.04.13

はっきり言ってImageMagickの.NET用ラッパーは
更新してないのが多くて使い物にならん
841デフォルトの名無しさん:2011/07/28(木) 17:32:01.38
わろた
842デフォルトの名無しさん:2011/07/28(木) 17:56:16.78
GUIのプログラムを作るのはC#が簡単なのかな。
843デフォルトの名無しさん:2011/07/28(木) 18:01:25.47
試しにImageMagickでai読ましてみたが、
Ghostscriptインストールしてないと読めないんだな。
両方入れたらやっと読めたわ
844デフォルトの名無しさん:2011/07/28(木) 23:07:21.29
>>842
何と比較してるか知らんが、楽だよ
自分の比較対象はC++/java/Rubyだけど、C#の方が楽だった

実行速度とGUIで楽出来るバランスはdelphiのが上なんだけど、入門書少ないし、フリーじゃないので、シェアウェア開発とかじゃないと勧めにくい
(starterでも少額ならお金稼ぎに使っておkというライセンス)
845デフォルトの名無しさん:2011/07/28(木) 23:08:53.39
つーかDelphiは…
846デフォルトの名無しさん:2011/07/28(木) 23:11:51.78
あの当時とは出来ることも求められることもグレードアップしてるからなぁ。
同列に並べられても。

てか、.NETはDelphiの正当後継者的立ち位置なわけだけど。
847デフォルトの名無しさん:2011/07/28(木) 23:33:53.40
>>844
.netのDelphiでもまだそうなのか?てっきりもうDelphiの時代は終わったと思ってた。
var
fstrm: System.IO.FileStream;
とか、すでにDelphiじゃないやい…
848デフォルトの名無しさん:2011/07/29(金) 00:13:45.97
そもそもC#の中の人達はDelphiの中の人達とほとんど同じだったでしょ
今は知らんけど
849デフォルトの名無しさん:2011/07/29(金) 08:26:56.96
Delphiって言語だったのか?
850デフォルトの名無しさん:2011/07/29(金) 08:31:29.46
Pascal、というには拡張されすぎてる感だし、
実際今はObject PascalではなくDelphi言語としているらしいね。
851デフォルトの名無しさん:2011/07/29(金) 08:47:13.14
そうなのか
852デフォルトの名無しさん:2011/07/29(金) 08:55:25.66
Delphiは打たれる
853デフォルトの名無しさん:2011/07/29(金) 09:10:57.15
C#3.0でお気に入りの機能ってなんですか?
854デフォルトの名無しさん:2011/07/29(金) 09:21:00.36
全部だ。

3.0は全てが夢ある機能なのよねぇ。
855デフォルトの名無しさん:2011/07/29(金) 09:49:02.15
>>852はダジャレだぞ。
気付いても笑えないけどな。
856デフォルトの名無しさん:2011/07/29(金) 10:02:39.81
寒いオヤジギャグだからスルーしてるだけってのに気付けよ
857デフォルトの名無しさん:2011/07/29(金) 14:44:31.29
理解できなくてくやしいです
858デフォルトの名無しさん:2011/07/30(土) 13:46:30.79
List<T>のTを、参照型のクラスで定義した場合と、値型の構造体にした場合、
インデックスで連続的に{get;set;}するとき、速度的には差が出ますか?
あとMSDNの解説で、値型のとき、要素が500以上でボックス化云々て書いてますが、、
何かパフォーマンス上、考慮しなければならないそうだけど、具体的によく分かりません。
どなたか初心者にも判るように教えてください。
859デフォルトの名無しさん:2011/07/30(土) 13:48:43.56
初心者ならそんなこと気にしなくていい
860デフォルトの名無しさん:2011/07/30(土) 13:52:35.05
構造体は自分で定義する物じゃない
と覚えておけば取り敢えず中級者ぐらいまではおk
861デフォルトの名無しさん:2011/07/30(土) 13:58:24.29
ジェネリックでよくTって表現されているのはテンプレートのTが由来ってこと?
862デフォルトの名無しさん:2011/07/30(土) 13:59:46.33
T→Type
863デフォルトの名無しさん:2011/07/30(土) 13:59:50.22
自分で定義した構造体はList<T>には使えないということ?
864デフォルトの名無しさん:2011/07/30(土) 14:01:16.65
そのくらい試してから質問できませんか?
865デフォルトの名無しさん:2011/07/30(土) 14:03:21.31
できるのか、できないのかくらい偉業ですむのに・・・

じゃあ、構造体の作り方を勉強してきます。
866デフォルトの名無しさん:2011/07/30(土) 14:19:31.98
基本的に受け渡しは常に参照型の方が速いと思ってればいいよ
特にソートとか使うなら参照型の方がずっと効率が良くなる
コピーのコストがボックス化のコストを上回るような巨大な構造体なら
ボックス化してList<object>に入れた方が速いんだろうけど
そんな状況ではそもそも構造体じゃなくてクラスを使うべき
というかわかんないなら常にクラスでいいよ
867デフォルトの名無しさん:2011/07/30(土) 15:05:20.15
C#の構造体は=演算子を介すとメンバをちょっと半端にディープコピーするのでコピーコストからは逃げられん。
868デフォルトの名無しさん:2011/07/30(土) 15:45:58.09
代入は通常のシャローコピーだろ
比較の方の=演算子は変な動作するけど
869デフォルトの名無しさん:2011/07/30(土) 16:09:05.88
List<T>のadd()って内部的に参照型として使われるんでねーの
870デフォルトの名無しさん:2011/07/30(土) 16:11:49.18
>>869
勝手にボックス化はしてくれないよん
871デフォルトの名無しさん:2011/07/30(土) 16:12:54.21
いちいちボックス化とかどこのJavaだよ
それでパフォーマンスが落ちるのが嫌だからジェネリック導入したんだぞ
872デフォルトの名無しさん:2011/07/30(土) 16:45:32.66
意外と細かい仕事してるね

List<T>
...
型 T で値型が使用される場合、コンパイラはその値型のために List(Of T) クラスの実装を生成します。
つまり、List(Of T) オブジェクトのリスト要素は、その要素が使用できるまでボックス化する必要はありません。
約 500 のリスト要素が作成されると、ボックス化しないリスト要素が保存されたメモリは、そのクラス実装を生成するために
使用されたメモリよりも大きくなります。 

あとC#やってJava戻るとインタフェースやらの扱いがわけわからなくなる
struct S : IHoge { public int v; }
List<IHoge> list_s = ..;
new_S.v = 0;
list_s[0] = new_S;
new_S.v = 100;
ってやったとき,list_s[0].v は 0ってことでいいの?
873デフォルトの名無しさん:2011/07/30(土) 17:05:13.66
>>872
読みにくい。
おまけに意味不明。new_Sって何?
874デフォルトの名無しさん:2011/07/30(土) 17:18:57.48
ボックス化された値は二度と変更できない。イミュータブルなオブジェクトになると考えればいい。
そもそもインターフェイスにフィールドは定義できない。
値型をインターフェイスにキャストするとその時点でボックス化が行われるので、
値型を使うことによるパフォーマンス上のメリットも全く無くなる。(元々無い場合が多いが)
875874:2011/07/30(土) 17:21:43.54
訂正
イミュータブルなオブジェクトになる->イミュータブルなクラスにラップされる
876デフォルトの名無しさん:2011/07/30(土) 18:52:19.07
でもIEnumerator<T>って値型で実装されることが多いよね
877デフォルトの名無しさん:2011/07/30(土) 18:57:46.17
foreachはIEnumerator<T>もIEnumerable<T>も関係ないからな。
ダックタイピングってやつ。メソッドの名前と引数の数があってりゃforeachできるよ。
878デフォルトの名無しさん:2011/07/30(土) 19:02:00.73
なんか全然かみ合ってないレスが続いてるけど、
今日は統合失調気味の奴が多いのかなw
879デフォルトの名無しさん:2011/07/30(土) 19:03:42.62
マジカルバナナを楽しんでいるんだろう。
880デフォルトの名無しさん:2011/07/30(土) 19:06:16.35
IEnumeratorを値型で実装したかったから、ボックス化を避けるために
>>877みたいな変な仕様になったんだよ
ちなみにyieldで生成されるイテレータが構造体ではなくクラスなのは、
自動生成された型をクラスの外に見せるわけにはいかないので、GetEnumeratorで
IEnumerator<T>にボックス化して返さざるを得ず、構造体の意味がないから
881デフォルトの名無しさん:2011/07/30(土) 19:34:52.09
>>873
返信ありがとう
でも理解できないことは別に報告いらないです
882デフォルトの名無しさん:2011/07/30(土) 20:34:15.86
>>881
報告してるんじゃなくて、はっきり言えばお前は馬鹿だって言ってるんだけど....
883デフォルトの名無しさん:2011/07/30(土) 21:48:28.56
>>882
あ,はい^^
884デフォルトの名無しさん:2011/07/31(日) 04:22:03.13
なんで無理して構造体使おうとするんだろうな
プロパティのみのクラスを作ったらダメとでも思ってるんだろうか
885デフォルトの名無しさん:2011/07/31(日) 04:30:21.79
そういうことを教えてくれる書籍が皆無だからじゃない?なんかいい本ない?
886デフォルトの名無しさん:2011/07/31(日) 04:45:22.08
お前の世界は書籍がすべてなのかっていう
887デフォルトの名無しさん:2011/07/31(日) 04:58:47.51
そいうセリフが吐きたいなら
http://hibari.2ch.net/test/read.cgi/tech/1308128665/l50
C#, C♯, C#相談室 Part67
でどうぞ。
ここは初心者スレなんでね。
なかなか情報にさえたどり着けないのが初心者ってもんだ。
それを上手く誘導できない、するつもりないなら、来るな。
888デフォルトの名無しさん:2011/07/31(日) 05:18:14.29
>>885
トピックス的には、とりあえず Effective C# でいいんじゃない?
889デフォルトの名無しさん:2011/07/31(日) 05:44:11.50
初心者を言い訳にしたら終わりだわ
逃げを打つ道具じゃないでしょうよ
890デフォルトの名無しさん:2011/07/31(日) 05:52:07.87
>>1読めって
891デフォルトの名無しさん:2011/07/31(日) 06:02:06.80
いいのよ〜初心者は。
変数の初期化の仕方から、命名の方法、なぜこんなキーワードがあるのとか、構造体があるのとか、どっちの方がパフォーマンスがいいのとか、シングルトンにすれば便利ですよねとか、何でも聞いていいんですよ。
なんたって初心者様ですからね。
初心者様がいてこそのこのスレです。
892デフォルトの名無しさん:2011/07/31(日) 06:03:42.37
オススメの書籍、オススメの命名法、オススメのパターン、オススメのフレームワーク、オススメのDB、オススメのエディタ、オススメの
893デフォルトの名無しさん:2011/07/31(日) 06:05:44.41
>>890
「どんなにくだらないC#プログラミングに関する発言でも」

初心者を名乗ることはC#に関係ない
そんな根性無しにどんな罵倒をかけようがスレのルール違反じゃねえ
894デフォルトの名無しさん:2011/07/31(日) 06:09:57.55
死ぬまで続けるといい。
静かになる。
895デフォルトの名無しさん:2011/07/31(日) 06:49:00.40
>>893
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
都合のいいとこだけ抜粋せずに全部読めやボケ。日本語も読めんのかこの馬鹿は
896デフォルトの名無しさん:2011/07/31(日) 08:11:23.26
どうやらこのスレの初心者が居るようで
897デフォルトの名無しさん:2011/07/31(日) 09:20:53.25
C/C++では、引数の数を減らしたり、関連するパラメータを一括して扱うために構造体を使う。
運用は、構造体そのものを伝えるのではなく、アドレスを指定するのが一般的。
C#では、同様の目的にクラスを使う。C#の構造体は、値型インスタンスを大量に必要とする場合などに限られる。

C クラスが無いので構造体一択
C++ プロパティだけなら構造体、メソッドも必要ならクラスにする
C# プロパティ・メソッドの有無に関わらずクラスの利用が一般的

Win32APIをC#から使う場合、パラメータを格納する構造体をクラスとして再定義する手法も良く使われる。
898デフォルトの名無しさん:2011/07/31(日) 10:03:55.69
>C#の構造体は、値型インスタンスを大量に必要とする場合などに限られる。
「C#の構造体」=「値型」なので意味不明
899デフォルトの名無しさん:2011/07/31(日) 12:07:37.68
文脈からして「C++の構造体」に対して、値型であることを強調したかったんだろ。
俺は普通にそう読んだが、中国人には解らないかもな。
900デフォルトの名無しさん:2011/07/31(日) 12:10:08.06
ボタンを押されたときにサイズをと背景色を変化させるようにしたんですが
低スペックのPCだと若干チラツキが発生してしまうのはどうしたらよいでしょう
SuspendLayout/ResumeLayoutを試してみても効果が感じられず
他に何か改善策はあるでしょうか?
901デフォルトの名無しさん:2011/07/31(日) 12:25:42.72
何のサイズ?
ちらつくということは、同じ場所に複数の書き込みがあるわけで
902デフォルトの名無しさん:2011/07/31(日) 12:29:45.99
>>900
OSがわからんけどXPまでのOSでWinFormはそのちらつきって完全に回避は無理じゃなかったっけ?
903デフォルトの名無しさん:2011/07/31(日) 12:31:21.73
>>900
バッファ(メモリ上に作ったビットマップ)に一度描画してから表示させては?

描画最中は表示されないからチラつき抑えられると思うけど
904デフォルトの名無しさん:2011/07/31(日) 12:42:51.42
継承して自前描画してダブルバッファオンでどうでしょう
905デフォルトの名無しさん:2011/07/31(日) 13:03:46.13
DataGridViewにダブルバッファプロパティをtrueに設定すると、
カラムサイズ変更時に変更位置を示すグリッド線が表示されなくなるのですが、
表示したい場合はどこで描画処理を実装すれば良いのでしょう。
906デフォルトの名無しさん:2011/07/31(日) 13:12:26.51
スレ違いかもしれんが、ちょっとご相談
これから.net始める人にVB.NETとC#どちら勧めるべき?

個人的にはC#を進めた方がいいのかなって感じてる
もろもろC#の方が優遇されているように感じるんだよね

おまえらの意見を参考にさせてもらえたら嬉しい
907デフォルトの名無しさん:2011/07/31(日) 13:14:51.04
無難を求めるならC#。
お勉強マニアなら両方。
908デフォルトの名無しさん:2011/07/31(日) 13:18:19.13
レスさんきゅ
立て続けに質問で悪い

C#のどんなところが無難で、VB.NETのどんなところが無難ではない?

「無難を求めるならC#」
この言葉は感覚的にすごく俺の中でもしっくりくる
でもなぜしっくりくるのかが分かってない・・・
909デフォルトの名無しさん:2011/07/31(日) 13:23:56.31
VB.NETはVB6などを使ってた人たちへの救済策
新しく覚えるような言語ではない
910デフォルトの名無しさん:2011/07/31(日) 13:31:57.19
>>906
優遇で言うと、そりゃ明らかにC#の方が優遇されてる。

世界的に見たら仕様人口も圧倒的にC#。
日本はなぜかVB大国って言われてるけど、それもVB.NETじゃなくてVB6なレガシー残ってるだけ。
その日本でも、最近ついにVB.NET系よりC#の方が本が売れるようになったという話も聞く。
911デフォルトの名無しさん:2011/07/31(日) 13:32:05.94
なるほど
VB.NETにはやっぱりそういった側面もあるのかな

MSから
「.NetはじめるならVB.NETとC#どっち?」
みたいな選定の基準になるような情報とかアドバイスが出てれば助かるのに・・・
912デフォルトの名無しさん:2011/07/31(日) 13:34:03.41
>>908
基本的にVB.NETはVB6からの移行や、VBAやってる人向け。

で、それは、プログラミングのプロじゃなくて、業務のプロ。
プログラマーが覚えるものじゃない。
913デフォルトの名無しさん:2011/07/31(日) 13:38:30.15
それもかなり偏見入ってると思うけどね
914デフォルトの名無しさん:2011/07/31(日) 13:40:22.67
>>911
例えばWP7での開発用テンプレートもVB.NETは後回しになってたり(今はどちらでも開発できるけどね)
MS自体もまずはC#を優先、あとで一応VB.NETという感じだからねえ。
言語機能的にはそこまで大きな差はないけど
構文がC#のほうが綺麗なので(特に最近多用されるラムダ式周りがVB.NETはキツい)
どちらも触ったことない状態でC# or VB.NET を選択するなら、どう考えてもC#。
915デフォルトの名無しさん:2011/07/31(日) 13:41:08.42
色々な情報が聞けてホントありがたい

C#は純粋なOOPの思想から生まれたプログラミング
一方、VB.NETは6.0以前のエンジニアの移行も考慮された準OOP的なプログラミング
現在MSがメインストリームとして捉えているのはC#

なんて感覚だったけどあながち間違っていないかな
916デフォルトの名無しさん:2011/07/31(日) 13:42:36.42
2008のころ、VB.NETはもう作らないとMSが言ったけどブーイングがひどくてしぶしぶ作ったとか
917デフォルトの名無しさん:2011/07/31(日) 13:45:44.45
今の.NETのトレンドは純OOPから離れる方向性なんで、その意味ではVB.NETのほうがOOP的だな
918デフォルトの名無しさん:2011/07/31(日) 13:48:08.25
> 純OOPから離れる方向性

どういうこと?
919デフォルトの名無しさん:2011/07/31(日) 13:48:25.59
>>916
そんな話聞いたことないぞ。

っていうか、VBには旧VBとか非C系言語からのマイグレーション用という他に
競争原理の導入っていうMS内部の事情もあるから、それはありえない。
920デフォルトの名無しさん:2011/07/31(日) 13:50:04.27
>>916
まぁこれはC#信者による都市伝説レベルの作り話だろうね
921914:2011/07/31(日) 13:50:16.87
>>915
いや、どっちもOOPですよ。
VB.NETはVB6.0と似てるけど全然異なるから。
機能も大体同様。
純OOPから離れる?かはともかく、関数型言語的な機能もC#と同様に追加されているし、
今はC#チームとVB.NETチームも半分統合したらしいので、今後もそんな差は出てこないはず。
(実際、次のバージョンに入るらしい非同期構文はC#版とVB.NET版、両方のCTPが公開されてる)
将来的にもVB.NETがなくなることもない。
だから、もし仮にVB.NETのソースコードの見た目のほうが好きだ!
というのなら、VB.NETはを選んでも大丈夫ではありますね。
922デフォルトの名無しさん:2011/07/31(日) 13:56:18.15
http://msdn.microsoft.com/ja-jp/library/ms172723.aspx#Y207
さすがにこういうのは馬鹿にしていると思われても仕方ない
923デフォルトの名無しさん:2011/07/31(日) 14:00:49.47
.net1.0や2.0時代にはここで言われているようなC#の優遇性や
VB.NETがレガシーPGからのマイグレーション用にすぎない
という考え方もあったのかもしれないけど
今となってはもう本当に方言の違い程度の差しかないと
考えていいみたいだね

C#スレで聞いてるからどうしてもC#に偏った意見が多くなるのは
当然かもしれないけど

C#≧VB.NET

どのような観点から見てもこの構造には間違いないかな
例えばこれが逆になったりすることはまずないように思う
924デフォルトの名無しさん:2011/07/31(日) 14:05:08.95
3.5のC#とVBの格差はヤバいぞ
925デフォルトの名無しさん:2011/07/31(日) 14:06:53.28
>>924
どんな格差がある?
926デフォルトの名無しさん:2011/07/31(日) 14:11:38.15
VBはC#とほとんど同じように使えるから、当然C#使える人から見たら
方言の違い程度にしか感じないんだろうけど、逆は結構違うぞ?
良し悪しを抜きにすればVBの方が圧倒的に高機能
927デフォルトの名無しさん:2011/07/31(日) 14:14:26.27
VB9はラムダ式に条件分岐が入れられないんだぞ?
928デフォルトの名無しさん:2011/07/31(日) 14:21:05.20
{ }で済むのがENDなんちゃらと書かないといけないのがVBの面倒なところ
929デフォルトの名無しさん:2011/07/31(日) 14:24:11.67
>>926
アプリケーションフレームワークとかの事を言ってるのかもしれんが、
それは言いすぎw

VBの方が便利な部分もあるのは事実だけど、個人的にはunsafeとvolatileを
使えないのが痛い。
930デフォルトの名無しさん:2011/07/31(日) 14:24:30.30
VBはObjectにボックス化されたDecimalをいきなりIntegerにキャストできるんだぞ?
On Error Gotoが使えるんだぞ?
どこにいてもフォーム取ってこられるんだぞ?
931デフォルトの名無しさん:2011/07/31(日) 14:24:50.94
End FunctionならまだいいけどRemoveHandler, AddressOfとかもう嫌がらせの域だろ
932デフォルトの名無しさん:2011/07/31(日) 14:25:58.96
要は一長一短といったところなのかな

逆に言うと、VB.NETを使った方がよいシチュエーションってどんな時だろう
たとえばVB6.0以前のエンジニアが多い時くらい?
933デフォルトの名無しさん:2011/07/31(日) 14:28:38.80
>>932
>>922のコード見て「VBって便利!すごい!」と感じる人が多いとき
934デフォルトの名無しさん:2011/07/31(日) 14:28:51.63
>>924
これは釣りってことでFA?
935デフォルトの名無しさん:2011/07/31(日) 14:30:39.77
>>934
何の釣りだw
936デフォルトの名無しさん:2011/07/31(日) 14:30:44.64
>>931
AddHandler、RemoveHandler、ジェネリックテンプレートの(of T)は確かにくどい。
あと謎のキーワードOverloadsも

AddressOfは、VB10から不要になったような気がした
937デフォルトの名無しさん:2011/07/31(日) 14:32:19.59
>>934
VBにはそんな明るくないので正確かは分からないけど
ラムダ式が微妙だったりメソッドチェーンでアンダーバーだらけになったり
yield returnがなかったり(それはVB2010でもないんだっけ、次には入るそうだけど)
だったかな?
かわりにクエリ構文がC#よりもパワフルだったり、XMLリテラルがあったり、だったっけ。
938デフォルトの名無しさん:2011/07/31(日) 14:32:59.37
>>935
どんな格差があるか具体的に言って欲しいなぁ
これじゃ無知なエンジニアに根拠なしにVB.NETは糞って
イメージを植え付けたいだけの釣り発言でしょ?
939デフォルトの名無しさん:2011/07/31(日) 14:34:00.85
>>938
http://msdn.microsoft.com/ja-jp/magazine/ee336123.aspx
これのうちC#3.5で実装されてなかったものを数えてみろ
940デフォルトの名無しさん:2011/07/31(日) 14:38:43.49
VB2010でyield導入って中止になったんだ。知らなかった。
実装が面倒なのはわかるけど、MSはVBでインフラ書く奴はいないと思ってるのか?
941デフォルトの名無しさん:2011/07/31(日) 14:39:24.89
>>939
なんだかレスが周りくどいな
で、君はどっちが優れていると言いたいの?
942デフォルトの名無しさん:2011/07/31(日) 14:42:44.95
>>916
2008の頃に言ったセリフだと、「VBチーム、C#チームに統合します」じゃね?

差を縮めて行きますっていう。
まあ、縮まってないところもあるんだけども。XMLリテラルとか。
943デフォルトの名無しさん:2011/07/31(日) 14:43:03.36
>>933
>>922ってそんなに重要なことか?
なんか重箱の隅をつついてつまらないことで責め立ててるようにしか見えないが
944デフォルトの名無しさん:2011/07/31(日) 14:43:10.76
>>940
yieldって必要かね?
945デフォルトの名無しさん:2011/07/31(日) 14:46:30.53
yieldなんてなくてもどうにでもなるでしょ
ここでVBがいい!C#がいい!って言ってるのは所詮慣れの問題

重要なのはマイクロソフトがどちらに体重を乗せているかってこと
それは現状ではC#の方ですね、てだけの話
946デフォルトの名無しさん:2011/07/31(日) 14:47:48.46
>>944
フレームワークや基本的なライブラリ作るには重要だよ
LINQの実装がどれだけyieldに依存してるか
2.0がでた頃は誰得な感じだったが今となってみるとMS自身が欲しかったんだろうな
947デフォルトの名無しさん:2011/07/31(日) 14:48:29.58
>>944
インフラ側では必要。

>>940
まあ、少ないでしょ、VBでインフラ作る人。
948デフォルトの名無しさん:2011/07/31(日) 14:50:26.04
>>944-945
あった方が確実にいい。
いちいちIEnumerable実装するのは面倒。
俺はVBに同情的な方だけどないのは手抜きとしか思えない。
949デフォルトの名無しさん:2011/07/31(日) 14:51:53.31
ああVB.netってことか
どうでもいいや
950デフォルトの名無しさん:2011/07/31(日) 14:52:07.18
IEnumeratorじゃないと列挙途中の変更とかに対応できなくね?
951デフォルトの名無しさん:2011/07/31(日) 14:53:55.73
競争原理うんぬんは分かった

ただいつだってユーザーは思ってる
一つにまとめてくれ


それを踏まえたうえでの競争原理を有意義に活かしてほしい
952デフォルトの名無しさん:2011/07/31(日) 14:56:08.17
今、C#とVBって同じチームで作ってるから競争原理とか働かないよ。

yield も次のバージョンで入るんじゃなかったっけ?
953デフォルトの名無しさん:2011/07/31(日) 14:59:52.95
良くも悪くもMS自信が使っているというのが大きいわな
MSが欲しいと思った機能がすぐにC#に追加され、
それをVBユーザーが欲しがったらVBにも追加される
954デフォルトの名無しさん:2011/07/31(日) 15:36:22.32
みんなVB.netのことを馬鹿にするけど、これだってすぐれた点はあるんだ!
たとえば多重ループからの一括break…… 他なんかあったっけ?
955デフォルトの名無しさん:2011/07/31(日) 15:41:03.23
>>954
次期バージョンの話だけど、ラムダ式内でYield使える。

メリットないと思ってるけど、VBにしかない機能ってので言うと、
XMLリテラル、Withステートメント、WithEvents、Handles。
956デフォルトの名無しさん:2011/07/31(日) 15:42:23.50
あと、VBの場合匿名クラスがmutableなんじゃなかったっけ。
(C#のはimmutable。そうしとかないと、ToDictionaryとかで辞書のキーになったときにヤバい。)
957デフォルトの名無しさん:2011/07/31(日) 15:46:58.03
こう答えでたんだから、そんなき力いれないでもさ。
958デフォルトの名無しさん:2011/07/31(日) 21:02:21.34
C#勉強してて、モチベーションが上がらないときはどうしてる?
Linq、イテレーター辺りを勉強してるんだけど、どうもモチベーションが上がらない
アプリをつくろうと思っても、長続きしない・・・
959デフォルトの名無しさん:2011/07/31(日) 21:03:35.22
>>958
C#は手段であり。目的ではない。わかるな?
960デフォルトの名無しさん:2011/07/31(日) 21:03:57.44
強制されているのでなければ止めればいい
961デフォルトの名無しさん:2011/07/31(日) 21:24:03.10
まとめるとVB脳の恐怖ということで>all
962デフォルトの名無しさん:2011/07/31(日) 22:14:43.25
>>958泡姫にマットでスリスリしてもらって、首筋をナデナデしてもらう。
これで心機一転、月曜から水曜辺りまではモチベーションが持続する。
963デフォルトの名無しさん:2011/07/31(日) 22:16:12.91
>>961
そういうのがいちばん「○○脳の恐怖」っぽい。
964デフォルトの名無しさん:2011/07/31(日) 22:16:54.63
>>958
それが君にとってアウェーだからだ。
もうちょっと手の届きやすいところから始めるといいと思うよ。
965デフォルトの名無しさん:2011/07/31(日) 23:59:24.07
>>963
おい木曜以降w
966デフォルトの名無しさん:2011/08/01(月) 01:09:20.00
これを見て中川を偲ぼうぜ。

http://www.youtube.com/watch?v=G98Ka0ohxPQ&feature=fvst
967デフォルトの名無しさん:2011/08/01(月) 01:18:47.12
VB.NETで書くのは別に文句言わないけどせめてOption Strict Onにはしてくれ
968デフォルトの名無しさん:2011/08/01(月) 01:26:17.73
>>966
コピペ脳の恐怖、まで読んだ。
969デフォルトの名無しさん:2011/08/01(月) 02:07:49.42
電脳の恐怖--サイバーガール--って書いたらなんかB級映画くさい
970デフォルトの名無しさん:2011/08/01(月) 02:29:24.95
電脳 子 射る ?
971デフォルトの名無しさん:2011/08/01(月) 09:52:51.06
ボクサッチー
972デフォルトの名無しさん:2011/08/02(火) 06:00:28.62
アプリでどうしてもHTMLで出力したいんですけど、StreamWriterクラスのWriteLineメソッド使って一行づつ出力してるんですけど
ソースが汚くなりがちで・・・ちょっと困ってます
他には一回変数に入れて、
string html = @"<!DOCTYPE html>
<html>
〜省略〜
</html>";
みたいな感じにすると、出力されたファイルのソースを見ると左がものすごくあいてしまいます・・・
どうにかプログラムのソースも出力ファイルされたファイルのソースも綺麗にする方法ないですか?
973デフォルトの名無しさん:2011/08/02(火) 06:09:58.33
よう分からんがテンプレートエンジンに頼ってみる
http://www.atmarkit.co.jp/fdotnet/vblab/extcompo_05/stringtemplate_01.html
974デフォルトの名無しさん:2011/08/02(火) 06:10:40.39
975デフォルトの名無しさん:2011/08/02(火) 06:28:37.45
>>972
C#じゃないけど、そういう処理はPowerShellに頼ったりしてる。

C#でやるならテンプレートエンジン探してくるのがいいと思うけども。

あと、そのコードで左側がものすごく空く理由が分からない。
@"以降の行、全部左に寄せりゃいいんじゃない?
976デフォルトの名無しさん:2011/08/02(火) 09:30:09.19
ソースコードをよく見ればわかるよ
@はソースにを書かれてるのをそっくりそのまま文字列にする
もちろんインデントも例外じゃない
977デフォルトの名無しさん:2011/08/02(火) 19:47:49.26
素直に+で連結すればいいのに。
コンパイル時に連結されるから、パフォーマンスヒットは無いぞ。
978デフォルトの名無しさん:2011/08/02(火) 20:48:38.70
>>972
標準ならT4テンプレート。
前処理されたテキストテンプレートという項目があるから、多分、それが用途に適してると思う。
979デフォルトの名無しさん:2011/08/02(火) 21:01:12.15
出力の見た目を気にするならT4はクソ面倒だよ
明示的にインデント入れたりしてたら結局コードで出力するより手間かかる
980デフォルトの名無しさん:2011/08/02(火) 22:03:10.17
非同期的にWeb上から文字列をダウンロードしたいので
System.Net.WebClient.DownloadStringAsynceメソッドを使ったんですが、ダウンロードしてきたものをどうやって受ければいいのかわかりません
DownloadStringメソッドならstring型の変数で受けれたんですが・・・どうやって受け取ればいいですか?
981デフォルトの名無しさん:2011/08/02(火) 22:08:34.61
>>980
そのメソッドの引数にデリゲートを受け取る引数ってなかったっけ?
もしくはWebClientにイベント。 詳しい使い方はMSDN見るとわかるよ。

あと、WebClientって古いから使うなとか何とかなかったっけ?
別のやつが古くてWebClient仕えって話だったかも知れないけど。
982デフォルトの名無しさん:2011/08/02(火) 22:08:47.98
>ダウンロードが完了すると、DownloadStringCompleted イベントが発生します。アプリケーションは、このイベントを処理して通知を受け取る必要があります。ダウンロードされた文字列は、Result プロパティで使用できます。
983デフォルトの名無しさん:2011/08/02(火) 22:16:23.46
client.DownloadStringCompleted += (sender, e) => { text = e.Result; };
client.DownloadStringAsync(uri);
984デフォルトの名無しさん:2011/08/02(火) 22:19:53.01
え!WebClientが非推奨?
ちょっとその情報どこよ。
985デフォルトの名無しさん:2011/08/02(火) 23:05:59.03
>>981
ResponseHeaderから文字コードを判定してデコードしてくれないのが嫌って言ってる人ならいた。
だからHttpWebRequest生で使うとかわけのわからないことおっしゃってたけど、
それならWebClientでも別にできるのに。


やっぱ >>980 みたいなレス見るにつけ、C# 5.0早く来て―って思う。
986デフォルトの名無しさん:2011/08/03(水) 00:28:36.17
987デフォルトの名無しさん:2011/08/03(水) 02:59:22.52
名前付き Mutex を使っていたんですが、
すでにほかのプロセスで、その名前の Mutex が所有されているかどうかだけ、
自分で所有権を得ることなく調べる方法はありませんか?

おそらく Mutex 以外を使えということになると思っているのですが、
何を使ったらいいのかまで教えていただけると幸いです。
988デフォルトの名無しさん:2011/08/03(水) 03:08:13.53
if(m.WaitOne(0, false))
{
m.ReleaseMutex();
}

これじゃ駄目なのかよ
989987:2011/08/03(水) 03:24:20.43
かなりタイミングがシビアなのですが、
m.WaitOne(0, false) から m.ReleaseMutex() の間に別のプロセスの
WaitOne(0, false) が実行される可能性は考えなくてもよいのでしょうか?

たしかに、言われてみれば、そのような状況になるのは、かなり考えにくいとは思うのですが…
990デフォルトの名無しさん:2011/08/03(水) 03:29:18.97

m1.WaitOne();

if (m2.WaitOne(0, false))
{
m2.ReleaseMutex();
}

m1.ReleaseMutex();

そんなもの2段ロックすれば良いだけだと思うけど
991 忍法帖【Lv=4,xxxP】 :2011/08/03(水) 03:34:28.22
それはそうと、次スレは準備しなくてもいいのかね?
992987:2011/08/03(水) 03:41:00.06
>>990
なるほど、おっしゃるとおりです。

ありがとうございました!!
993デフォルトの名無しさん:2011/08/03(水) 03:42:16.91
じゃあ立てます
994デフォルトの名無しさん:2011/08/03(水) 03:44:52.35
ふらっとC#,C♯,C#(初心者用) Part78
http://hibari.2ch.net/test/read.cgi/tech/1312310658/

フォイフォーイ
995デフォルトの名無しさん:2011/08/03(水) 06:56:28.06
おつ
996デフォルトの名無しさん:2011/08/03(水) 10:10:33.18
うめ
997デフォルトの名無しさん:2011/08/03(水) 10:21:32.37
>>994

998デフォルトの名無しさん:2011/08/03(水) 19:56:34.36
998
999デフォルトの名無しさん:2011/08/03(水) 19:56:46.60
999
1000デフォルトの名無しさん:2011/08/03(水) 19:56:58.94
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。