ふらっとC#,C♯,C#( ..
[2ch|▼Menu]
656:デフォルトの名無しさん
08/03/12 18:40:52
>>655
OnDataSelectedを呼ぶべき

657:デフォルトの名無しさん
08/03/12 18:40:59
最初は動けば良いのではないかと、そういうものは楽しさの中から築きあげて行けば良いし。

658:655
08/03/12 18:41:32
さっそくミス発見。

public void PerformDataSelected(object sender, DateRangeEventArgs e){
 if(this.DataSelected != null)
  this.DataSelected(sender, e);
}

voidが抜けてたわ

659:655
08/03/12 18:42:43
>>656
ほうほう。
実はmouthCalendarというものを使ったことがないもんでなw
勉強になりますw

>>651
だそうです。

660:デフォルトの名無しさん
08/03/12 18:47:04
MonthCalendarとか関係なくイベントはクラス外から直接呼べない
だから派生クラスから呼び出す手段としてOn**メソッドを用意する

661:デフォルトの名無しさん
08/03/12 18:50:17
>>650
趣味の問題、か。
議論の余地なく間違ってると思うよ。
こういう人は「抽象化」の意味と意義がわかってないんじゃないの。

662:デフォルトの名無しさん
08/03/12 19:00:45
「状況に応じて適切に判断」かな
好みじゃなくて使い分けるもの

663:655
08/03/12 19:08:09
>>660
あらま、やはり勘違いしてたみたいね。
派生クラスからでもイベントは呼べないのか。
失礼しました。
>>655はスルーして下され。

664:デフォルトの名無しさん
08/03/12 19:15:39
そもそもイベントって「呼ぶ」ものじゃないでしょw
英語だとInvokeとかRaiseだから「起こす」とでも言うのが正解じゃないの?

665:デフォルトの名無しさん
08/03/12 19:19:08
>>621 = >>661 だと思うけど反論あるなら具体例を示すべきだと思うよ

666:643
08/03/12 19:34:45
>>644 >>645
そのままでは "=>" が上手く行かなかったのですが、

string[] fileListText = Array.FindAll(
fileListAll,
delegate (string item) { return ( System.IO.Path.GetExtension(item).ToLower() == ".txt" ); }
);

でいけました。

ありがとうございました。


667:デフォルトの名無しさん
08/03/12 19:43:21
匿名メソッドほんとに冗長だな
設計時から経過措置として認識されてて,後で捨てても影響が出ないように
明示的すぎる書き方になってるのかな

668:デフォルトの名無しさん
08/03/12 19:46:02
>>665
ええっと、反論ってのは具体例を挙げて行うものなんでしょうか?
それとも理由を添えろって言いたいの?

まあいいやまず>>661で言いたかったことをはっきりしておくと、要するに
>>649の前者のコードは議論の余地なく×で、これは趣味の問題なんかではないということ。

後者のコードは普通は△だが、確かにこのように書いた方がわかりやすい場合も
稀にあるかもしれないことは認める。

通常は>>650の書き方を選択すべき。

>>649の前者がダメなのは、
(1) button1_Click()が羊頭狗肉になってる。
(2) だからbutton2_Click()の処理内容が把握しづらい。

669:デフォルトの名無しさん
08/03/12 20:21:11
>>668
シグネチャが違うイベントの場合を示せよ。

670:デフォルトの名無しさん
08/03/12 20:28:45
だから,好みの問題じゃないってことだろ
判断基準は人それぞれとしても,場合によって適切に使い分けるもの

671:デフォルトの名無しさん
08/03/12 20:33:14
なんだよ示せよって偉そうにw
なんでこういう日本語も満足に使えないたわけってのは例外なく口調が偉そうなのかね。

シグネチャが違うってどういうこと?
>>668に「通常は」と書いたつもりだけど。
EventHandler<T>と違うシグネチャのイベントを扱うのって通常かな。

672:デフォルトの名無しさん
08/03/12 22:02:39
>>655>>663
OnDateSelected使えって指摘は既出の通りで、
引数として渡すイベントソース・データを外部から取るのはだめ
ソースはthis固定、データはコンストラクタの引数だけ外部から取って自前で生成
その例だとこんな感じ

public PerformDateSelected(DateTime start, DateTime end) {
  OnDateSelected(this, new DateRangeEventArgs(start,end));
}

673:デフォルトの名無しさん
08/03/12 22:50:08
>>670
>判断基準は人それぞれとしても,場合によって適切に使い分けるもの

それこそが、まさしく好みとか趣味という言葉の指し示すものである。

674:655
08/03/12 23:08:50
>>672
なるほど、勉強になった。Thx

675:デフォルトの名無しさん
08/03/12 23:15:51
>>671
普通にあるでしょ。
例えばbutton1が押された時と、textbox1上でエンターキーが押された時に同じ処理をしたい時とか。
この場合は
private void button1_Click(object sender, EventArgs e)
{foo();}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{foo;}
}
のように>>649の後者の書き方になるんじゃない?

676:デフォルトの名無しさん
08/03/12 23:17:25
あほ

677:デフォルトの名無しさん
08/03/12 23:30:09
ばか

678:デフォルトの名無しさん
08/03/12 23:38:10
分布図

679:デフォルトの名無しさん
08/03/13 11:59:03
delegate int Hoge();
Hoge hoge;

hoge += foo1;
hoge += foo2;
hoge();

とするとfoo1, foo2と呼ばれfoo2の返り値だけが返りますが
hogeに登録されているものを個々に呼び出し
それらの返り値を得たいのですが、どうやるのでしょうか?

680:デフォルトの名無しさん
08/03/13 12:03:34
>>679
GetInvocationListでDelegate[]を取得するとか。

681:デフォルトの名無しさん
08/03/13 12:09:24
>>679
素直にrefまたはoutで渡せばいいじゃん。

682:デフォルトの名無しさん
08/03/13 12:28:19
>>680
thx
Delegateクラスのメンバ一覧見てたのに全然気が付かなかった・・・

683:デフォルトの名無しさん
08/03/13 16:31:24
属性の書き方なんですが、下記の2つに違いはあるのでしょうか?

[Description("ほげほげ"), DefaultValue(false)]
public bool HogeHoge {〜}

[Description("ほげほげ")]
[DefaultValue(false)]
public bool HogeHoge {〜}

684:デフォルトの名無しさん
08/03/13 16:42:07
ない

685:デフォルトの名無しさん
08/03/14 01:14:17
Hoge hoge = new Hoge(); // 1
hoge = new Hoge(); // 2
hoge = new Hoge(); // 3
hoge = new Hoge(); // 4
hoge = new Hoge(); // 5

とやったときに1~4までのインスタンス解放を気にする必要が無いってのが
ガーベジコレクト機能を持つ言語の利点という理解でよろしいでしょうか?


686:デフォルトの名無しさん
08/03/14 01:18:05
YES

687:デフォルトの名無しさん
08/03/14 01:48:14
>>671
早く答えろよ

688:685
08/03/14 01:53:09
>>686
ありがとうございました。

689:デフォルトの名無しさん
08/03/14 02:19:53
なんからのネイティブリソースを確保してたらアウトだけどね

690:デフォルトの名無しさん
08/03/14 04:06:28
private void Performed(object sender, EventArgs e)
{
処理;
}
でいいじゃない。
やらないけど。


691:デフォルトの名無しさん
08/03/14 08:30:07
あほ

692:デフォルトの名無しさん
08/03/14 08:32:10
なんであほなのか詳しく

693:デフォルトの名無しさん
08/03/14 08:54:51
テキストを画像に変換したいのですが、
どのように処理したらいいでしょうか?
また、変換後の画像の大きさ(高さ・幅)は取得できるでしょうか?

低レベルですみませんがよろしくお願い致します。

694:デフォルトの名無しさん
08/03/14 09:06:28
>>693
> テキストを画像に変換したいのですが、
意味がわからん

695:デフォルトの名無しさん
08/03/14 09:12:38
GDI+

696:デフォルトの名無しさん
08/03/14 09:17:15
>>694
例えば「abcde」と入力したら、
abcdeと書かれた画像を生成することです

697:デフォルトの名無しさん
08/03/14 09:22:29
System.Drawing

698:デフォルトの名無しさん
08/03/14 09:24:50
>>697
ありがとうございます
生成後のBitmapのサイズは取得できますか?

699:デフォルトの名無しさん
08/03/14 09:40:29
お前には無理。

700:デフォルトの名無しさん
08/03/14 10:05:18
>>698
TextRendere.MeasureTextとかで。

701:デフォルトの名無しさん
08/03/14 10:09:41
>>700
ありがとうございます!
本当に助かりました!

702:デフォルトの名無しさん
08/03/14 10:14:34
マイクロソフトがC#用ネイティブコンパイラの製作を発表
これでC#は事実上最強言語になったわけだ
URLリンク(an.to)

703:デフォルトの名無しさん
08/03/14 10:24:23
皆さん、>>702はクリックしないようにね。

704:デフォルトの名無しさん
08/03/14 10:27:37
>>702
ただの釣り
開くとビルゲイツの若かりしころの写真が出てくるだけ

705:デフォルトの名無しさん
08/03/14 10:32:03
ウィルスバスター2008役にたたねぇorz

706:デフォルトの名無しさん
08/03/14 10:36:19
これって何?
ググってみたらan.to/?で始まるのがあちこちに張りまくられてるみたいだけど。

707:デフォルトの名無しさん
08/03/14 10:51:51
>>704
写真が出てくるだけじゃないんだが、
telnetつかってごにょごにょっしようとする。

708:デフォルトの名無しさん
08/03/14 10:54:09
>>706
「これ」が何を指しているのか分かりかねるが、
URLのことなら書いてる通りの転送サービスじゃないのか
内容のことなら見てないので知らない

709:デフォルトの名無しさん
08/03/14 11:29:51
ProcessStartInfoのArgumentsにスペースを含むファイルを指定しようとしましたが出来ません...

710:デフォルトの名無しさん
08/03/14 11:54:44
""で囲め

711:デフォルトの名無しさん
08/03/14 12:04:00
どうもありがとうございました。

712:デフォルトの名無しさん
08/03/14 12:20:18
GDI+で放射状にグラデーションをかける方法はありますか?
WPFのRadialGradientBrushみたいなことがしたいのですが

713:712
08/03/14 12:28:37
自己解決
using (GraphicsPath path = new GraphicsPath()) {
 path.AddEllipse(0, 0, width, height);
 using (PathGradientBrush brush = new PathGradientBrush(path)) {
 brush.CenterColor = Color.White;
  brush.SurroundColors = new Color[] { Color.Red };
  g.FillEllipse(brush, 0, 0, width, height);
 }
}

714:デフォルトの名無しさん
08/03/14 12:50:20
たびたびの質問申し訳ありません。
SendKeysでスペースキーを送信したいのですがどのようにすればよいのでしょうか。
よろしくお願いします。

715:デフォルトの名無しさん
08/03/14 13:08:58
>>714
半角スペースをSendすればいい予感がしました

716:デフォルトの名無しさん
08/03/14 13:13:59
>>715
10回連続で送信したく思い、
SendKeys.SendWait("{ 10}");
のそうにやってみたわけですが出来ないのでここに書き込みました。

717:デフォルトの名無しさん
08/03/14 13:18:52
>>716
10回forを回すとか10個の半角スペースをSendすればいい予感がしました

718:デフォルトの名無しさん
08/03/14 13:19:33
>>717
それ以外に方法が無いのならばそれでしますが...

719:デフォルトの名無しさん
08/03/14 13:24:04
それ以外に方法がないんだが。

720:デフォルトの名無しさん
08/03/14 13:26:37
どうもありがとうございました。

721:デフォルトの名無しさん
08/03/14 15:25:46
このスレの流れを見てるとなんか面白い

722:sage
08/03/15 00:46:41
くだらない質問ですが、ゲームをつくりたいとおもって
とりあえずC#でゲームをつくりたいとおもうのですが、
どのようにして習得(勉強)したほうがよいのでしょうか?
ネットでしらべるとC#の手引きのようなものがのってますが、
そういうものでいいのでしょうか?
おしえてください。

723:デフォルトの名無しさん
08/03/15 00:48:38
>>722
諦める マジオヌヌメ

724:デフォルトの名無しさん
08/03/15 00:50:25
>>722
そういうものでいいのです。

725:722
08/03/15 01:56:50
>>724
わかりました。とりあえずそこで勉強してみます。
一応参考までに聞きたいのですが皆さんはどうやってC#を習得したのですか?
できればおしえてください

726:デフォルトの名無しさん
08/03/15 02:08:48
>>725
ふつーに本を読んで。

727:デフォルトの名無しさん
08/03/15 03:41:30
すいません質問です。
現在forが入れ子で4段になっているのですが、
一番内側の場所から一気に1段目や2段目のforまでbreakするにはどうすればいいのでしょうか?


728:デフォルトの名無しさん
08/03/15 03:42:19
goto

729:デフォルトの名無しさん
08/03/15 03:46:39
あー!!
忘れてました、そうですね。C#には普通にありましたねgoto

730:デフォルトの名無しさん
08/03/15 03:59:29
>>725
C# 入門 でググレ。
俺はそのサイトと@ITとMSDNとぐぐる大先生だけで独学で習得したぞ。
細かいところとかは.NET関連の質問スレとかをROMったりしても勉強になった。
本なんぞ別に買わんでもネットで十分OOPはマスターできる。

731:デフォルトの名無しさん
08/03/15 05:57:25
本買うよりネットで勉強したほうが効率いいですか?

732:デフォルトの名無しさん
08/03/15 06:45:38
ネットの長所・短所、書籍の長所・短所がわかってればおのずと答えは出るよね

733:デフォルトの名無しさん
08/03/15 07:49:39
一度は本を通して読んだ方が近道だと思うが

734:デフォルトの名無しさん
08/03/15 07:57:59
まあどっちにしても、C#とかオブジェクト指向とかの知識はどうにでもなるだろ。
どんなゲームを作りたいのかにもよるんだろうけど、
その先に「画面の描画」って大きなハードルがある気がするなあ。

735:デフォルトの名無しさん
08/03/15 09:02:37
string.Format()で、文字列をn桁の左寄せで表示するにはどうすればいいでしょうか?
printf("%10s %s",first, second);
と同じようなことをしたいのです。

例えば、
aaa xxxxx
bbbbb yyyy
cc zzzzzzzzzzz
のような文字列を表示するときに、
左の項目を最低10文字分とるようにしたいのです
よろしくお願い致します。

736:デフォルトの名無しさん
08/03/15 09:20:34
PadLeft

737:デフォルトの名無しさん
08/03/15 09:23:22
>>735
string.Format("{0,-10} {1}", first, second)

738:デフォルトの名無しさん
08/03/15 09:28:22
>>737
ありがとうございます
カンマで区切るのですか
MSDNにも載ってないので助かりました

739:デフォルトの名無しさん
08/03/15 09:33:18
>>738
載ってるよ? 複合書式設定

740:デフォルトの名無しさん
08/03/15 09:43:25
複数のwavを繋げて1つにするプログラムを作りたいのですが、どうすればいいでしょうか?
何かライブラリDLLはあるでしょうか?よろしくお願いします。

741:デフォルトの名無しさん
08/03/15 09:46:14
class TreeEx : TreeView {
public TreeEx() { this.Nodes.Add("ほげ"); }
}

こんなクラスをフォームに貼り付けて実行してみたら
"ほげ"というルートノードが2つ作られました。
おかしいと思ってInitializeComponent()を見てみたら
"ほげ"ノードを追加する処理が生成されてました。
勝手に追加されると困るのですが、これを止めることってできないんですか?

742:デフォルトの名無しさん
08/03/15 09:58:20
>>741
デザイナが自動生成しないようにするやり方はわからないけど、
とりあえずDesignModeなら追加しないってやれば回避できると思う。
デザイナで見れなくなるけど。

743:デフォルトの名無しさん
08/03/15 10:06:53
あと、試してないし出来るかどうかもわかんないけど、
Nodesプロパティをoverrideして、[Browsable(false)]つけてみるとか。

744:デフォルトの名無しさん
08/03/15 11:21:17
ShouldSerializeなんたらだったかのメソッド書いたらいいんじゃね?

745:デフォルトの名無しさん
08/03/15 11:50:40
URLリンク(dobon.net) にあるclass ListViewItemComparerを
引数をつけて呼び出して使おうとしているのですがエラーになったりちゃんと動作したりします。
エラーの内容から考えるとどうもe.Columnと_columnの数字が異なる事があるらしく
比較に失敗してしまうようなのですが、どうしてでしょうか?


746:デフォルトの名無しさん
08/03/15 11:55:59
>>742-744
Browsable属性ではできなかったので

public bool ShouldSerializeNodes() { return false; }
public new TreeNodeCollection Nodes { get { return base.Nodes; } }

を書いたら望み通りになりました。
高機能なのはいいんだけどいろいろメンドクサイデスネ

747:745
08/03/15 12:09:07
'4' の InvalidArgument=Value は 'index' に対して有効ではありません。
パラメータ名: index

だからインデックスではなくてそのlistviewitemのsubtime[4]が見つからないのですね。
でも、何で動いたり動かなかったりするのでしょう?。

748:デフォルトの名無しさん
08/03/15 12:11:54
引数に渡ってきた値ぐらい確認しろよ

749:745
08/03/15 12:25:57
サブアイテムは20以上あるのですが何故動いたり動かなかったりするのかわかりません。
IComparer.Compare(object x, object y)のオブジェクトは何処から来ているのでしょうか?。
e.Column から __column にインデックスが入ってそれを基準にオブジェクトが返ってきて
いるのだと思うのですがIComparer.Compareの内容はどうやったら見れますか?。


750:745
08/03/15 12:34:18
あぁ、お騒がせしましたorz。たぶん、わかりました。
IDEって凄く便利ですね。デバッグ字に変数にカーソルを合わせると内容まで表示してくれるとは
今まで気付きませんでした。

751:デフォルトの名無しさん
08/03/15 13:34:22
このスレの住人なら知っていますね、あの糞開発ツールのことを

・自分のプログラムのバグなのかコンパイラのバグなのかわからない
・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している
・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている

糞だけど、政治的な理由で無理やり使わされているんですよね
もういい加減、我慢するのはやめませんか?

・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。
 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。
・あの糞開発ツール提供会社には「糞開発ツールは話にならない」と突き放しましょう。
 バグレポートなどしてはいけません。改善要求などもってのほかです。
 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。
・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」
 なんて話が出たら力強く机を叩き、会議室を出ましょう。
 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。

糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。

752:デフォルトの名無しさん
08/03/15 13:47:19
リッチテキストボックスまたはテキストボックスのオーナードローってできますか?

753:デフォルトの名無しさん
08/03/15 13:51:36
俺ならできる

754:デフォルトの名無しさん
08/03/15 14:56:23
>>753
君ならできる。やればできるさ!

755:デフォルトの名無しさん
08/03/15 16:33:15
俺にもできる?

756:デフォルトの名無しさん
08/03/15 17:18:42
無理

757:デフォルトの名無しさん
08/03/15 17:24:14
質問です。
Microsoft Visual C# 2008をつかっていいるのですが、
ビルドして実行すると一瞬だけ(入力まちがあるとき以外)表示されて
すぐにきえるのですが、どうすればきえなくなりますか?
おしえてください

758:デフォルトの名無しさん
08/03/15 17:25:37
ブレークポイント

759:デフォルトの名無しさん
08/03/15 17:26:48
消えないようにするオプションとかなかったっけ?

760:デフォルトの名無しさん
08/03/15 17:27:43
無いらしい

761:デフォルトの名無しさん
08/03/15 17:34:57
Console.ReadLine();でも入れれば

762:デフォルトの名無しさん
08/03/15 17:35:44
それだったらブレイクポイントのほうが。

763:デフォルトの名無しさん
08/03/15 17:37:28
#if DEBUGでいいじゃない

764:デフォルトの名無しさん
08/03/15 19:01:46
>>757
コマンドプロンプトからexeを起動しろ

765:デフォルトの名無しさん
08/03/15 19:10:31
マルチスレッドのサンプルでは、よくマルチスレッドにするメソッドには
staticをつけてるけど、
URLリンク(msdn2.microsoft.com)
を見るとつけてない。
つけるのとつけないのとではどう違うの?

766:デフォルトの名無しさん
08/03/15 19:12:48
マルチスレッドかどうかとstaticかどうかは関係ない

767:デフォルトの名無しさん
08/03/15 19:14:05
static つけるとマルチスレッドでより扱いにくくなると思うんだが。

768:デフォルトの名無しさん
08/03/15 19:17:40
>>767
そのメソッド自体を同時にひとつしか動かさないなら、別に変わらないと思うけど。

769:デフォルトの名無しさん
08/03/15 19:19:35
オブジェクトの状態に依存しないメソッドを意識したらstaticが多くなるんじゃね

770:デフォルトの名無しさん
08/03/15 19:25:42
>>757
キーアサイン変えてるからキーわからないけど、ステップオーバー押していって実行すれば?

771:デフォルトの名無しさん
08/03/15 19:26:10
>>768
そういう保証が必要な時点で
扱いにくくなってるということだろう?

772:デフォルトの名無しさん
08/03/15 19:34:51
>>757
VS上なら「デバッグ開始」じゃなくて「デバッグなしで開始」だと終了後にpauseしてくれる

773:765
08/03/15 19:35:47
まあ別に気にしないでいいってことなんだな。
ありがとう。

774:デフォルトの名無しさん
08/03/15 21:39:03
>>773
気にしないでいいというより気にするべきところが違うという話では。

775:デフォルトの名無しさん
08/03/16 00:19:41
System.Windows.Forms.TextBoxを拡張して、
入力できる文字を制限したテキストボックスを作りたいのですが、
どのメソッドをオーバーライドするのが適切ですか?
TextChangedだとテキストが変わってから戻すことになりそうだし、
KeyPressだとコピペに対応できなさそうなイメージがあって、
msdnみてもよくわかりません。
教えて。

776:デフォルトの名無しさん
08/03/16 00:22:13
>>775
俺も知りたい。
入力中に入力値を評価するのはどうやるんだろうな。

777:デフォルトの名無しさん
08/03/16 00:28:23
>>775
wndproc

778:デフォルトの名無しさん
08/03/16 00:37:22
>>775
コピペ対応はあきらめて(ShortcutsEnabled = falseと、コンテクストメニューにダミーをかます)
OnKeyPressで純粋にキー入力にだけ対応するのが一番簡単。

コピペにも対応させたいのならTextChanedで二重にチェックするのが一番簡単で確実じゃないかな。

779:デフォルトの名無しさん
08/03/16 00:51:55
ペースト対応って難しいの?
onPasteあたりをオーバーライドすればいいんじゃないの?

780:デフォルトの名無しさん
08/03/16 02:14:43
Detail表示のListViewで、列ヘッダを押下したときにアイテムをソートさせたいです。
このとき、アイテム内文字列の比較モードを変更できますか?

具体的には、文字列"9"、"88"、"56"をソートした場合
"88","56","9"の順番にならんでほしいのですが、
"9","88","56"の順番になってしまいます。

781:デフォルトの名無しさん
08/03/16 02:18:33
ListView.ListViewItemSorter プロパティ

782:デフォルトの名無しさん
08/03/16 10:31:14
>>777
>>778
ありがとうございます。
早速実装してみます。

783:デフォルトの名無しさん
08/03/16 10:46:17
継承Controlを作成するときに
Controlがフォーカスされたときのイベントってどこに書くんですか?

OnClickかとも思ったのですが、これだとTabキーで移動してきたときには動きませんし・・・

784:デフォルトの名無しさん
08/03/16 10:57:00
Enter/OnEnter

785:デフォルトの名無しさん
08/03/16 11:06:56
>>784
それかー。
ありがとーございます。

786:デフォルトの名無しさん
08/03/16 12:10:23
もっと低レベルなのは
OnGotFocus/OnLostFocus

787:デフォルトの名無しさん
08/03/16 15:03:34
PerlとかRubyでゆーWWW::MechanizeみたいなスクレイパってC#に存在する?
それとDB使ったツールを作って配布したいんだけど、PerlとかRubyだと一般ユーザに使ってもらえないので…

788:デフォルトの名無しさん
08/03/16 15:11:53
rubyならexerbつかってexeにすりゃいいじゃん。
スレチだけど

789:デフォルトの名無しさん
08/03/16 15:39:20
>>778
ここ2日くらいexerbとかrubyscript2exeやってみてたんだけどどうもうまくいかんのだ

790:デフォルトの名無しさん
08/03/16 17:10:36
質問です。以下のコードをビルドするとエラーがおきますが、原因がわかりません。
(bool型とdouble型が〜とでるのですが自分にはわかりませんでした。)
どなたかおしえてくださいませ。
using System;
class IfSample
{ public static void Main(){ Console.Write("身長(cm)を入力してください");
double n = double.Parse(Console.ReadLine());
Console.Write("体重を入力してください");
double m = double.Parse(Console.ReadLine());
Console.Write("BMIは{0}です", m / ((n / 100) * (n / 100)));
bool bmi = m / ((n / 100) * (n / 100));
switch(bmi)
{ case (bmi<19.8):
Console.Write("痩せ型です");
break;
case (19.8<=bmi<24.2):
Console.Write("普通です");
break;
case (24.2<=bmi<26.4):
Console.Write("やや肥満です");
break;
case (26.4<=bmi<35.0):
Console.Write("肥満です");
break;
default:
Console.Write("高度な肥満です");
break;
}
}
}


791:デフォルトの名無しさん
08/03/16 17:13:53
エラーメッセージは完全な状態でこぴぺしろ

792:デフォルトの名無しさん
08/03/16 17:15:13
>>790
> bool bmi = m / ((n / 100) * (n / 100)); 

ここかな?

double bmi = ・・・
みたいにしてみれば?


793:デフォルトの名無しさん
08/03/16 17:17:46
caseには定数式以外は使えない

794:デフォルトの名無しさん
08/03/16 17:19:33
if (bmi < 19.8) {
Console.Write("痩せ型です");
} else if (bmi < 24.2) {
Console.Write("普通です");
} else if (bmi < 26.4) {
Console.Write("やや肥満です");
} else if (bmi < 35.0) {
Console.Write("肥満です");
} else {
Console.Write("高度な肥満です");
}

795:デフォルトの名無しさん
08/03/16 21:04:38
enum型の要素に自動的に割り当てられる値は、
[Flags]属性をつけようがつけまいが同じなのでしょうか?

どこかで0,1,2,4になるようなことを読んだような記憶があるのですが、それは勘違いで、
自分で明示的に割り当てなければいけない。というのが正解なのでしょうか?

796:デフォルトの名無しさん
08/03/16 21:07:23
はい。勘違いです

797:デフォルトの名無しさん
08/03/16 21:55:31
>>795
俺もそんな話をどっかで読んだな。
どういう属性をつけるかとか、ぜんぜん覚えてないけど。

798:デフォルトの名無しさん
08/03/16 21:57:17
[Flags]付けるとビットフィールドになるんだろ。

799:デフォルトの名無しさん
08/03/16 22:00:40

ビットフィールドには[Flags]を付ける「お約束」

800:デフォルトの名無しさん
08/03/16 22:20:11
実際に試したほうが早いし正確なのに

801:デフォルトの名無しさん
08/03/16 22:22:13
聞いた方が早い。

802:デフォルトの名無しさん
08/03/16 22:23:41
ググってみたけど、Flagsでいいんじゃね?
URLリンク(www.melma.com)

↑C/C++の世界では、これは「ビットフィールド」とは言わんと思うけど。C#の世界では知らんけど。

803:デフォルトの名無しさん
08/03/16 22:25:49
>>802 の続き
よく見たら、自動で割り当てるわけじゃなくて、自分で書かないといけないのか。


804:デフォルトの名無しさん
08/03/16 22:25:53
そのページは大嘘過ぎるな

805:デフォルトの名無しさん
08/03/16 22:27:16
[Flags]を付けないと、3とか5の値をとれない。

806:デフォルトの名無しさん
08/03/16 22:28:21
ハァ?

807:デフォルトの名無しさん
08/03/16 22:32:49
[Flags]
public enum ABC { Z = 0, A = 1, B = 2, C = 4}

[Flags]を付けないと
ABC ab = A|B;
でエラーになる。

808:デフォルトの名無しさん
08/03/16 23:00:19
ならないよ
エラーになるような違いが出るんだったら属性じゃなくて言語に直接組み込まれてるだろ

809:デフォルトの名無しさん
08/03/16 23:09:29
(ABC.A | ABC.B).ToString()で違いが出るね
やっぱりコンパイラの動作とは直接関係なくてMSとのお約束なんじゃね

810:デフォルトの名無しさん
08/03/16 23:17:53
そもそもそのためのFlagsAttributeなんじゃないんでしょうかw

811:デフォルトの名無しさん
08/03/16 23:35:39
どこが面白いのかわからない

812:デフォルトの名無しさん
08/03/16 23:40:54
まあさすがに自動でビットフィールドにしてくれるんだったら
属性じゃなくて flags enum ABC { … } みたいにするわな

813:デフォルトの名無しさん
08/03/17 04:02:24
Form1を閉じても、スレッド2が動いたままなので、
Form1を閉じたら、スレッド2を終了したいのですが、どのようにすれば良いのでしょうか?

814:デフォルトの名無しさん
08/03/17 04:32:05
Form1を閉じる動作のときスレッド2を終わらせる

815:デフォルトの名無しさん
08/03/17 04:54:36
>>814
それの書き方が分からないよ><

816:デフォルトの名無しさん
08/03/17 05:27:37
>>815
Form のイベント全て試す

817:デフォルトの名無しさん
08/03/17 14:19:34
スレッド2はループ中なんか?

818:デフォルトの名無しさん
08/03/17 14:35:03
form1.Closed += (obj,e) => thread.Abort();
こんなんじゃないか?

819:デフォルトの名無しさん
08/03/17 16:09:07
いちいちそんなんでラムダ式使うなカス

820:デフォルトの名無しさん
08/03/17 16:16:57
smallint型のデータをSqlDataReaderを使って取得し、
int型変数へ入れるにはどうすればよいですか?
List<int>へループで入れたいが 一部smallint型が
ある場合に上手く出来なくて困ってます。

821:デフォルトの名無しさん
08/03/17 16:52:46
>>819
むしろそんなんだからラムダ式使うんじゃないかと。

822:デフォルトの名無しさん
08/03/17 17:59:52
>>817
そうです。break;の条件を、Form1が閉じたときとやりたいのですが、うまく行きません。

static int close1 = 0;
public void Form1_Closed(object sender, System.EventArgs e)
{
close1 = 1;
}

while (close1 == 0)
{
//////////////時計
long tick = DateTime.Now.Ticks;
DateTime d = new DateTime(tick);
Console.WriteLine(d.ToString());
label8.Text = (d.ToString());
Thread.Sleep(1000);
}

823:デフォルトの名無しさん
08/03/17 18:33:40
>>822
>label8.Text = (d.ToString()); 
GUIスレッド以外からフォームにアクセスしちゃダメ。
close1をvolatileにするか読み書き時にlockする。

BackgroundWorkerの使用をすすめる。

824:デフォルトの名無しさん
08/03/17 18:47:22
そもそもTimerじゃいかんのかと思ってしまうサンプルだ

825:デフォルトの名無しさん
08/03/17 19:11:01
>>821
ぶわぁか、こんなんでC#3.0にしてどうする。
せめて匿名メソッドだうんこ。

826:デフォルトの名無しさん
08/03/17 19:12:46
>>825
匿名メソッドは面倒だよ。
なげーもん。ラムダ式使ったら2.0には戻れんね。

827:デフォルトの名無しさん
08/03/17 19:14:33
C#やめてRuby(笑)でもやってろモルモン。

828:デフォルトの名無しさん
08/03/17 19:17:24
言語の進化についていけない落伍者か
Cでもやってりゃいいのに

829:デフォルトの名無しさん
08/03/17 19:26:29
C++から来てるとλ式とかは読みにくいな

830:デフォルトの名無しさん
08/03/17 19:40:15
僕はくもん式上がりなのでλ式は余裕です。

831:デフォルトの名無しさん
08/03/17 19:43:04
C++もそっちの方向でしょ

832:デフォルトの名無しさん
08/03/17 19:44:34
C++にラムダ式が加えられても落伍者達はわからんわからんとぼやくんだろうな

833:デフォルトの名無しさん
08/03/17 19:59:52
すみませんλって言いたいだけみたいなのですぐに回収します
λ......

834:デフォルトの名無しさん
08/03/17 20:01:55
λ式は書けても高階関数は書けないんでしょ?

835:デフォルトの名無しさん
08/03/17 20:05:56
書けるに決まってるだろ

836:デフォルトの名無しさん
08/03/17 20:08:03
Enumerableクラスなんか高階関数のお花畑

837:デフォルトの名無しさん
08/03/17 20:28:33
>>829
俺、C#よりC++をよく使うが、ラムダ式が羨ましくて仕方ないんだが。

838:デフォルトの名無しさん
08/03/17 20:37:26
ここ1年ずっとC#使ってきたらC++書くのがきつくなった・・・

839:デフォルトの名無しさん
08/03/17 20:39:29
すみません、質問いいですか?

FileSystemWatcherってありますよね?
あれ凄くイヴェントを取り逃がすような気がするんですけど皆さんどうですか?

使い方がおかしいんでしょうけど、どうおかしいのかすら判りません。

例えばDeletedイベントハンドラってPathで指定したディレクトリ内の
Filter指定したファイルが消されると発生するんですよね?

840:デフォルトの名無しさん
08/03/17 20:41:06
っていうか、ラムダ式って所詮、匿名デリゲートの焼き直しなのに何をそんなに目くじらたてるんだろう。
おまけで式木に変換される機能がついたけど、普通に使う分には匿名デリゲートにしかならない。
今思えば匿名デリゲートの記法を delegate(...){...} にしたのが失敗で、
先にラムダ式を導入していたらこの記法は絶対導入しなかったって中の人も言ってるくらいなのに。

841:デフォルトの名無しさん
08/03/17 20:41:50
イヴェント

842:デフォルトの名無しさん
08/03/17 20:45:54
1.匿名メソッドを理解、使えるようになる
2.ラムダ式の便利さに気づく
3.ラムダ式は式木でも書けることに気づく
4.もっと複雑な式木を書きたくなる
5.某カッコだらけの言語の存在を知る
6.某カッコだらけの言語の奥深さを知る
7.某カッコだらけの言語で悟りを開く

843:デフォルトの名無しさん
08/03/17 20:50:17
C#である変数を宣言するときに、アドレスを指定するにはどうすれば
いいですか?
また、アドレスから値を得るにはどうすればいいですか?

844:デフォルトの名無しさん
08/03/17 20:55:07
アドレスを指定するって何だよ
変数のエイリアスはつくれねえぞ

845:デフォルトの名無しさん
08/03/17 20:58:40
すいません。。。
質問しなおします。

ある変数Aのアドレスが分かっているとしたとき、アドレスから変数A
の値を取得するにはどうすればいいでしょうか?

846:デフォルトの名無しさん
08/03/17 20:59:40
>>840
>>825

>>839
InternalBufferSizeを増やす。

847:デフォルトの名無しさん
08/03/17 21:25:22
>>845
アドレスってどういう意味で言ってんの?
*(int*)address
まさかこういうことじゃないよね

848:デフォルトの名無しさん
08/03/17 21:27:32
>>845
unsafeでぐぐれ

849:845
08/03/17 21:39:03
>847-848
アドバイスありがとうございます。
変数につけられたメモリ上での番号のことを言っています。

簡単なコードを示していただけませんか?
例えば、メモリアドレス1000の値を取得したり、代入する場合など。。。

お願いします。

850:デフォルトの名無しさん
08/03/17 21:39:20
>839
explorerでけすと、ごみ箱へのMoveだから見逃す、というオチじゃないの?

851:デフォルトの名無しさん
08/03/17 21:39:39
unsafeつけるとCと変わらない書き方ができる

852:デフォルトの名無しさん
08/03/17 21:46:21
>>849
int a = 123; int addr = (int)&a; int aValue = *(int*)addr;
こういうこと?
超危険なだけで何の意味もないからせめて普通にポインタ使えよ

853:デフォルトの名無しさん
08/03/17 21:57:22
1つ値を読み取りたいだけなら、Mashal.Read*メソッドがお手軽かもしれない。

854:845
08/03/17 22:02:57
>>852
アドバイスありがとうございます。

示していただいたコードで、変数のアドレスを取得することができました。
しかし、アドレス1000に対しての代入?についてはまだ疑問が残ります。。。

849の繰り返しになりますが、例えばメモリアドレス1000に格納されている
データを取得するにはどうすればいいでしょうか?
また、メモリアドレス1000に値を格納するにはどうすればいいでしょうか?

855:デフォルトの名無しさん
08/03/17 22:10:11
釣りだろjk

そんなことをする必要はないし
する必要があるならC#を使うはずがない

856:デフォルトの名無しさん
08/03/17 22:11:06
>>854
実際にこんなことやろうとしても、
割り当てられていないメモリを読み書きしようとしたとして、
OSに止められるだけだからな。
int* p = (int*)10000;
int x = *p;
*p = 666;

int x = Marshal.ReadInt32((IntPtr)10000);
Marshal.WriteInt32((IntPtr)10000, 666);


857:デフォルトの名無しさん
08/03/17 22:13:37
どうせ構造体のポインタが欲しいだけとエスパー

858:デフォルトの名無しさん
08/03/17 22:16:57
>>852見て>>856が思いつかないならポインタなんか触るべきじゃない

859:デフォルトの名無しさん
08/03/17 22:18:32
つかC#でポインタ使うとこってどこ?

860:デフォルトの名無しさん
08/03/17 22:25:08
Interopとか画像処理とか構造体の配列触るときによっぽどパフォーマンスが大事なときとか

861:デフォルトの名無しさん
08/03/17 23:56:57
>>854
勘違いしてない?
ここはC♯(シーシャープ)という言語のスレだぞ。
もしかして学校の宿題なら、それは、CとかC++という言語じゃなかったか?

862:822
08/03/18 00:38:27
>>818,823-824
レスサンクス
明日試してみる。

863:デフォルトの名無しさん
08/03/18 02:36:23
多次元配列は使いそうだけど、ジャグ配列って使わないよな?
覚えるのめんどくさいんだが・・・

864:デフォルトの名無しさん
08/03/18 02:40:27
>>863
Cから来たら無意識にジャグの方を使う。

865:デフォルトの名無しさん
08/03/18 02:42:29
>>864
・・・まじかよ、じゃあ素直に勉強するわ
d

866:デフォルトの名無しさん
08/03/18 02:46:24
いや勉強するもなにも
宣言と要素アクセスのやり方だけ知ってりゃいいんじゃん
ジャグのほうは単なる配列を要素とする配列ってだけの話だし

無意識に使われるジャグ配列って「ジャグ」じゃなくね?

867:デフォルトの名無しさん
08/03/18 03:09:39
List<int[]> lst = new List<int[]>();
//動的に配列を追加していくループ
for(...){
lst.Add(....);
}
int[][] jag = lst.ToArray();

格納される配列の要素数が動的に変化するような場合とかもあるし、
ジャグのが柔軟。



868:デフォルトの名無しさん
08/03/18 03:56:09
普通ジャグにしね?
ジャグじゃないとN次元配列が書けんし

869:デフォルトの名無しさん
08/03/18 04:30:05
そんなことはない。

870:デフォルトの名無しさん
08/03/18 06:30:03
ジャグ配列ってすごく使いにくいぞ

871:デフォルトの名無しさん
08/03/18 07:46:45
パフォーマンスはジャグの方が全然良いけどな。

872:デフォルトの名無しさん
08/03/18 09:16:17
使いにくさで言うと断然多次元配列だと思うけど
Sortメソッドも使えない

873:デフォルトの名無しさん
08/03/18 09:24:21
多次元配列よりジャグの方が直感的なんだよな。気がついたらジャグで作ってることが多い気がする。
初期化するときも使用するときも、機械的にいつも似たようなfor文で処理できるし。

>>871
すごく初耳。

874:デフォルトの名無しさん
08/03/18 09:50:02
>>873
rectangular の方は a[i, j] → *(a + i *WIDTH + j)
jagged の方は a[i][j] → *(*(a + i) + j)
相当で、一見 rectangular の方が早そう(間接参照よりは掛け算の方が軽い)だけど、
1次元配列の参照は IL が専用命令持ってるけど、
多次元配列参照命令がない関係で jagged の方が早いって聞く。


jagged 配列の方が柔軟だけど、new しまくらないといけないのが面倒なときもあるのよね。

875:デフォルトの名無しさん
08/03/18 11:40:01
ジャグ配列の方が速いのは一番右の添え字が連続したアクセスの場合だけだったような

876:デフォルトの名無しさん
08/03/18 15:44:04
メインフォームにおいて、文字キー T とか Y のkeyPressイベントを起こすにはどうしたらいいんですか?

private void MainForm_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{

}
の中に記述してもイベントそれ自体が発生しないんですが・・・

877:デフォルトの名無しさん
08/03/18 16:07:50
フォーカスがないだけだろ

878:デフォルトの名無しさん
08/03/18 16:08:47
>>876
そのイベントハンドラはちゃんとイベントにバインドしてあるのか

879:デフォルトの名無しさん
08/03/18 16:23:40
KeyPreview

880:デフォルトの名無しさん
08/03/18 16:56:20
get,setの利点が不明(C#2.0)
public string Hoge{ get{ return this.hoge; }}
こう書くと

public string getHoge{ return this.hoge; }
と書くのに比べて何が幸せなんだぜ?

881:デフォルトの名無しさん
08/03/18 17:12:21
Console.WriteLine(Hoge);
Console.WriteLine(getHoge());
あと,リフレクションとの相性

882:デフォルトの名無しさん
08/03/18 17:14:58
しりあらいず

883:デフォルトの名無しさん
08/03/18 17:22:10
リフレクションというかコンポーネントモデルやな。PropertyDescriptor。
…ヘジは1.0からこの辺のものを第一言語要素にする点こそ重要って
言ってた気がするがスルーされっぷりが可哀想というか

884:デフォルトの名無しさん
08/03/18 17:26:51
getHogeがメソッドでないから、きっと記述方法のことを言ってるんだとエスパー
括弧なしのgetHogeでHogeプロパティ作れと

プロパティとアスセサ(メソッド)の違いについてならそういう風に書くだろうし

885:デフォルトの名無しさん
08/03/18 17:35:12
iPod touchみたいな慣性付きスムーズスクロールはどうやるのでしょうか?
そもそも普通のスムーズスクロールはどうやるのでしょうか

886:デフォルトの名無しさん
08/03/18 17:40:07
以下のプログラムから出力される数字を、
wavファイルにするにはどうすればいいでしょうか。

#include <iostream>
#include <math.h>
using namespace std;
const int rate=44100;

int p(double q, int f, int t)
{
const double pi=3.1415;
double x;
x=sin(2*pi*f/rate*q);
cout << int(x*127+128+0.4999);
cout << "\n";
if (f<t) p(q,f+1,t);
return 0;
}

int main(void)
{
p(440.0 , 0, rate);
return 0;
}

887:デフォルトの名無しさん
08/03/18 17:44:02
ごめ。
c++スレかと思った・・忘れてください

888:デフォルトの名無しさん
08/03/18 19:03:44
PictureBoxを使って、

Font font = new Font(fontName, size);
g.DrawString(code, font, Brushes.White, 0, 0);

で、1文字描画します。

この時描画した文字の幅を求める手段を教えてください。


889:デフォルトの名無しさん
08/03/18 19:07:52
MeasureString

890:デフォルトの名無しさん
08/03/18 21:09:56
WebColorConverterのインスタンスを取得するにはどうするのが正しいの?
MSDNにはTypeConverterのインスタンスは直接作らずにTypeDescriptorを使えと書いてあるけど
TypeDesctiptor.GetConverter(typeof(Color))だとColorConverterが返ってきてしまう

891:デフォルトの名無しさん
08/03/18 22:07:38
今でも>>886のことが忘れられない…

892:デフォルトの名無しさん
08/03/18 22:24:13
宇宙仮面のC#プログラミングってサイトの、ED が点滅するボタンのページ
>次に、ツールバーのカスタマイズにより、コンパイルしたアセンブリーをツールバーに登録します。
ってどういうこと?
ツールバーのユーザー設定?
コンパイルしたアセンブリーって項目があるってこと?

893:デフォルトの名無しさん
08/03/18 22:33:46
事故解決しましたごめんなさい

894:デフォルトの名無しさん
08/03/19 08:02:56
class A<T> { ・・・ }
とあるとき、Tの型をAのクラスの外から調べて使っていく便利な方法があったら教えてください。
リフレクションを使えばなんでもできますが、できれば使用したくないです。
C++ では
class A<T> { typedef T ElementType ; }
とできたので話は簡単だったんですが・・・

#VBのLinq to XMLが便利すぎ〜〜〜〜ぐはぁぁぁぁ
#ヘジたぁぁぁん

895:デフォルトの名無しさん
08/03/19 08:05:32
dateTimePickerをパースして1日追加して表示しようとしているのですがなりません
何か勘違いしているのでしょうか?

DateTime dt = DateTime.Parse(dateTimePicker.Text);
dt.AddDays(1);
lvi.SubItems.Add(dt.ToShortDateString());

896:デフォルトの名無しさん
08/03/19 08:11:38
>>894
なにがしたいのかわからんけど

class A<T>
{
public Type ElementType = typeof(T);
}
こんなんじゃだめなの?

897:デフォルトの名無しさん
08/03/19 08:11:49
>>895
勘違いでーす
DateTime dt = DateTime.Parse(dateTimePicker.Text);
dt=dt.AddDays(1);
lvi.SubItems.Add(dt.ToShortDateString());


898:デフォルトの名無しさん
08/03/19 08:13:29
>>896
それだと、

A.ElementType inst = new A.ElementType();
とかできなくて不便なんですよ。

899:デフォルトの名無しさん
08/03/19 08:19:26
>>898
じゃあ

void Method<T>(A<T> a) where T : new(){
T item = new T();
}

こうじゃねえの

900:デフォルトの名無しさん
08/03/19 08:24:16
>>898
A<T>にこんなメソッド追加すれば
public T CreateElement()
{
return new T();
}


901:デフォルトの名無しさん
08/03/19 08:27:08
>>899
それもちょっとなんですよね、全部のメソッドについてやらないといけなくて、場当たり感が・・・
C#に移ってみたもののC++とは勝手が違って難しいです、逆にC#では意外とあっさりできる物なども多いのですが。

902:デフォルトの名無しさん
08/03/19 08:28:39
>>897
ありがとうございます。
盲目でした・・・。

903:デフォルトの名無しさん
08/03/19 08:48:06
>>895
なんで
DateTime dt = dateTimePicker.Value.Date.AddDays(1);
じゃだめなの?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4341日前に更新/241 KB
担当:undef