トップページ⇒tech
1001コメント262KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/11/27(土) 19:37:27
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

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

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

■前スレ
ふらっとC#,C♯,C#(初心者用) Part65
http://hibari.2ch.net/test/read.cgi/tech/1289307450/

■関連スレ
C#, C♯, C#相談室 Part62
http://hibari.2ch.net/test/read.cgi/tech/1284775031/
VB.NET質問スレ(Part35)
http://hibari.2ch.net/test/read.cgi/tech/1284423653/
くだすれC++/CLI(初心者用)part2
http://pc12.2ch.net/test/read.cgi/tech/1268613679/

■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも
http://ideone.com/
コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。

直接貼る場合は下記サイトなどを利用してhtmlエンコードした方が
インデントも残って見やすいです
http://kawama.jp/php/encode_html.php
0002デフォルトの名無しさん2010/11/27(土) 20:41:20
C#, C♯, C#相談室 Part63
http://hibari.2ch.net/test/read.cgi/tech/1289733048/
0003デフォルトの名無しさん2010/11/27(土) 22:09:29
>>1
乙
0004デフォルトの名無しさん2010/11/28(日) 00:37:07
>>1
Hello2 World
0005デフォルトの名無しさん2010/11/28(日) 01:13:10
YouTubuのURLから動画のタイトルを取得することはできますか?
0006デフォルトの名無しさん2010/11/28(日) 01:23:16
できません
0007デフォルトの名無しさん2010/11/28(日) 01:25:03
いや、できるだろ、WebClientと正規表現で。
0008デフォルトの名無しさん2010/11/28(日) 01:26:40
URLにはタイトル情報はないな
URLにアクセスしてhtmlだけダウンロードしてくれば
その中にテキストデータで埋もれてるからそれを抜き出せばいい
0009デフォルトの名無しさん2010/11/28(日) 02:06:26
ちゃんとyoutubeのウェブAPIを使おうよ
0010デフォルトの名無しさん2010/11/28(日) 02:08:00
初心者でスマン。
慣性スクロールのやり方教えてください。
0011デフォルトの名無しさん2010/11/28(日) 02:41:47
>>10
windowsってそういうのを作りこむには向いてないかもねw
0012デフォルトの名無しさん2010/11/28(日) 03:12:59
WPFでタッチインターフェイス使うなら慣性もAPI提供されてるんだけどもね。
0013デフォルトの名無しさん2010/11/28(日) 08:46:46
picturebox使った対数グラフの描画のしかたを教えてください。
0014デフォルトの名無しさん2010/11/28(日) 08:52:35
bmpを作って点を描画してpictureboxへ渡す
0015デフォルトの名無しさん2010/11/28(日) 10:12:28
>>13
http://ideone.com/0heyZ
グラフのメモリは自分で作ってくれ
0016デフォルトの名無しさん2010/11/28(日) 10:18:21
ここは初心者用スレ
以下の事は↓のスレで
難しい質問
GUI
C#以外の言語

C#, C♯, C#相談室 Part63
http://hibari.2ch.net/test/read.cgi/tech/1289733048/l50
0017デフォルトの名無しさん2010/11/28(日) 10:25:20
ここってGUI関連の話しちゃいけなかったのか
0018デフォルトの名無しさん2010/11/28(日) 10:25:28
次スレからテンプレ変更
0019デフォルトの名無しさん2010/11/28(日) 10:36:30
勝手に決めるなハゲ
0020デフォルトの名無しさん2010/11/28(日) 10:51:37
C#以外の言語の質問をC#, C♯, C#相談室でしろってあほか
わけわからん誘導すんなよ
0021デフォルトの名無しさん2010/11/28(日) 11:13:45
「ここは初心者用だ!」
とは、質問者にではなく、答える側に言いたい。
0022デフォルトの名無しさん2010/11/28(日) 11:45:32
答える側も初心者限定ってこと?
0023デフォルトの名無しさん2010/11/28(日) 12:22:40
え?
0024デフォルトの名無しさん2010/11/28(日) 12:54:30
何その茶番
0025デフォルトの名無しさん2010/11/28(日) 12:55:45
スレ立て代行依頼
板:vip
タイトル:ニコニコ生放送あらそうぜ
内容:
【300人記念】リアトモがフリーホラーゲームをやります【ホラーゲーム】
http://live.nicovideo.jp/watch/lv3336962
0026デフォルトの名無しさん2010/11/28(日) 15:18:10
初心者からしたら、何処までがC#言語の範囲でどこまでが.NET Framework
なのか区別付かないこともあるだろ。GUIも多少はここでいいんじゃない?
0027デフォルトの名無しさん2010/11/28(日) 15:29:34
というか、言語とフレームワークそこまで厳密に区別する意味ない。
フレームワークなしじゃ大したもの作れないし、
C# はフレームワークに乗っかった機能多いし、
0028デフォルトの名無しさん2010/11/28(日) 16:19:11
GUIは相談室でやれとか初めて聞いたわ。

>「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
>ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
>ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
これが全て、GUIの質問もしていい。
0029デフォルトの名無しさん2010/11/28(日) 16:52:18
先生、結論をお願いします
0030デフォルトの名無しさん2010/11/28(日) 17:04:11
自称初心者は全員ここでおk
自称上級者に「お前は初心者じゃねえ」と叱られたら相談室へ
0031デフォルトの名無しさん2010/11/28(日) 17:05:09
わかりにくいので真理値表でお願いします
0032デフォルトの名無しさん2010/11/28(日) 17:25:28
A = C#初学者
B = 小規模なアプリケーションを完成させたことがある
C = 大規模なアプリケーション開発に携わったことがある
D = C#マニア

         | A | B | C | D |
-------------------------
初心者/質問 | O | O | X | X |
初心者/回答 | X | O | O | O |
相談室/質問 | X | O | O | O |
相談室/回答 | X | X | O | O |

こんなとこか?
0033デフォルトの名無しさん2010/11/28(日) 17:34:08
どうでもええわ
0034デフォルトの名無しさん2010/11/28(日) 18:09:09
>>15
神様ありがとうございますた
0035デフォルトの名無しさん2010/11/28(日) 18:17:47
>>15
図々しいお願いですが、グラフのメモリも
0036デフォルトの名無しさん2010/11/28(日) 18:22:04
そのくらい自分でやれ
0037デフォルトの名無しさん2010/11/28(日) 18:27:43
ここは質問スレであって、依頼スレじゃないよ。
0038デフォルトの名無しさん2010/11/28(日) 18:32:01
どうやったら依頼を受けてくれますかという質問です
0039デフォルトの名無しさん2010/11/28(日) 18:33:04
そいつはちと高くつくぜ
0040デフォルトの名無しさん2010/11/28(日) 18:34:58
お金払えば受けてくれるんじゃない?
0041デフォルトの名無しさん2010/11/28(日) 18:45:38
出来高払いで。
0042デフォルトの名無しさん2010/11/28(日) 18:46:46
5000万ぐらいなら払えます
ジンバブエドルで
0043デフォルトの名無しさん2010/11/28(日) 18:50:45
両替手数料が高くつきそう
0044デフォルトの名無しさん2010/11/28(日) 19:26:37
雑談はよそでどうぞ。
0045デフォルトの名無しさん2010/11/28(日) 19:48:48
>>35
http://ideone.com/7JfPc
ほれ
報酬は5000万ジンバブエ・ドルだから
現在のレートだと日本円で1000万円だな
ちゃんと払えよ
http://ja.exchange-rates.org/converter/ZWD/JPY/50000000/Y
0046452010/11/28(日) 19:58:00
DrawDoubleLogarithmicGridのxscaleの計算コピペしてr使うの忘れてたわ
// スケールを計算
float xscale = r.Width / (float)Math.Log10(xmax);
float yscale = r.Height / (float)Math.Log10(ymax);
0047デフォルトの名無しさん2010/11/28(日) 20:41:58
そのバグにより報酬減額100%とさせていただきます
0048デフォルトの名無しさん2010/11/28(日) 20:41:58
>>46
まあグラフだから実用上問題ないはずだけど、
本当はfloatにキャストするのは最後にした方がいいような
0049デフォルトの名無しさん2010/11/28(日) 20:50:00
>>47
バグではないよ、どっちでも動作変わんないし

>>48
floatってそんな精度悪かったっけ?
0050デフォルトの名無しさん2010/11/28(日) 20:52:54
>>49
使う範囲によるけどゲームのように速度重視じゃない場合は64bitになってるでしょ
C#も一部は明示的にfloat使うところもあるけど基本はdoubleだし
0051デフォルトの名無しさん2010/11/28(日) 21:07:18
>>45
さっすが、仕事速いっすねえ
1000円しか持ってないけど、将来あなたが主任級まで昇進できることを俺が保証します。
0052デフォルトの名無しさん2010/11/28(日) 21:16:15
なんか気になって仕方ないので直した
http://ideone.com/J7yhD
>>50 いまどきのCPUならどっちでも速度は変わんないと思うけどね
>>51 100円残してやるから900円よこせ
0053デフォルトの名無しさん2010/11/28(日) 21:16:52
もう880円しかなくて
0054デフォルトの名無しさん2010/11/28(日) 21:29:47
>>53
(#^ω^)ピキピキ
0055デフォルトの名無しさん2010/11/28(日) 21:30:42
ジュース飲んでんじゃねーよはげを髣髴とさせるな
0056デフォルトの名無しさん2010/11/28(日) 22:22:33
すいませんが教えてください。
static class Program {
static void Main() {
Form1 form=new Form1()
form.Show();
Thread t=new Thread(new ThreadStart(form.run));
t.Start();
t.Join(); } }

public class Form1:Form {
public Form1(){}
public run() {
this.Show()
while(this.Created) { Application.DoEvents(); }
}
このコードを実行すると、Application.DoEvents()があるのに、どうしてWindowsの
メッセージ処理をしてくれないのでしょうか?
0057デフォルトの名無しさん2010/11/28(日) 22:24:18
また気色悪いコードだなあ
0058デフォルトの名無しさん2010/11/28(日) 22:26:38
とりあえず何をしたいのか書いてくれ
0059デフォルトの名無しさん2010/11/28(日) 22:37:16
ゲームループでググり、実験しています。
ちなみにform.Show()を
runメソッド内に置くとWindowsのメッセージ処理をしてくれて
フォーム右上の「x」でフォームが閉じます。
0060デフォルトの名無しさん2010/11/28(日) 22:38:51
56:のコードで
this.Show()は無しです。
0061デフォルトの名無しさん2010/11/28(日) 22:40:16
>>59
XNAとかゲームAPIを使わないゲームループならこの辺のソースみたら?
http://cs2ch.blog123.fc2.com/blog-entry-82.html
0062デフォルトの名無しさん2010/11/28(日) 22:42:06
>>56
Form1のメッセージループがメインスレッドで動いているのに、別スレッドでDoEvents
するって・・・。お前にはマルチスレッドは10年早い。
0063デフォルトの名無しさん2010/11/28(日) 22:46:09
まずDoEvents自体勘弁して欲しいけどね
0064デフォルトの名無しさん2010/11/28(日) 22:50:26
これでいいだろ
[STAThread]
static void Main() {
 Form1 form = new Form1();
 form.Show();
 while (form.IsHandleCreated) {
  Application.DoEvents();
 }
}
0065デフォルトの名無しさん2010/11/28(日) 22:53:57
お前らホントにDoEventsが好きだな。DoEvents使っていいのは小学生まで。
0066デフォルトの名無しさん2010/11/28(日) 22:55:31
56です。低レベルの質問、すいません。
「別スレッドでDoEventsするって・・・」
ってどういうことでしょうか?

0067デフォルトの名無しさん2010/11/28(日) 23:03:05
>>66 ShowするスレッドとDoEventsするスレッドは同じでなければならない。
↓これなら気が済むか?
static class Program{
 static void Main() {
  var form = new Form1();
  new Thread(form.Run).Start(); // background thread.
  Application.Run(form); // または>>64の用にDoEventsでループする
 }
}
class Form1:Form{
 public void Run(){
  while( this.Created ) ;
 }
 bool Created;
}
0068デフォルトの名無しさん2010/11/28(日) 23:03:11
中学生からは何を使うの?
0069デフォルトの名無しさん2010/11/28(日) 23:07:08
普通にプログラム書いてれば、DoEvents を使う必要はない。
0070デフォルトの名無しさん2010/11/28(日) 23:08:51
きちんとイベントハンドラの制御を終えて、唯一のメッセージループで処理が回る
様に書くに決まってんだろ。
0071デフォルトの名無しさん2010/11/28(日) 23:11:50
いろいろ勉強になりました。
ありがとうございました。
マルチスレッドはかなり奥が深いですね。
0072デフォルトの名無しさん2010/11/28(日) 23:13:27
MS自身がDirectX SDKのサンプルで
DoEvents使ってた経緯があったりするから困り者
0073デフォルトの名無しさん2010/11/28(日) 23:15:16
諸悪の根源はこれではなかろうか
ttp://d.hatena.ne.jp/yukinami/20090310

このやりとりでマルチスレッドの奥深さがわかるなんてとんでもない天才だな
0074デフォルトの名無しさん2010/11/28(日) 23:20:33
あ、それだ。
どれくらい奥深いかは、分かりませんが、
質問に答えてくださったかたへの礼儀として
一文を書いた次第です。
0075デフォルトの名無しさん2010/11/28(日) 23:22:56
ちょっとだけ時間のかかるような処理をループで回すようなときとか、
わざわざスレッドやバックグラウンドワーカー作るよりも
DoEvents使っちゃうほうがコストが低いと思うがそれもだめなのか?
0076デフォルトの名無しさん2010/11/28(日) 23:25:10
好きにすればいい。
0077デフォルトの名無しさん2010/11/28(日) 23:26:10
イベントハンドラの中でDoEventsを使うとたのしいよ
すっごく
0078デフォルトの名無しさん2010/11/28(日) 23:35:49
イベントハンドラ以外のどこでDoEvents使えってんだ
0079デフォルトの名無しさん2010/11/28(日) 23:43:09
67のコードで
Application.run(form)
の代わりにform.show()はなぜ駄目なの?
0080デフォルトの名無しさん2010/11/28(日) 23:46:45
Application.Run(form);はformが閉じられるまで処理がそこで止まるから
form.show()じゃそのままMainメソッド終了しちゃう
0081デフォルトの名無しさん2010/11/28(日) 23:47:00
>>75
DoEventsでどんなイベントが実行されても安全なことが保証できてるなら構わないぞ。
イベントハンドラ中にFormがDisposeされてもいいんだな?
0082デフォルトの名無しさん2010/11/28(日) 23:51:10
>>79
アプリケーション全体ではどこかでメッセージ処理をしなくてはいけない
メッセージループの開始をしてくれるのがApplication.Run()

だから、フォームが1つならApplication.Run() にするのがもっとも簡単
逆にメインフォームとは別のサブフォームの作成なら、すでにメインフォームで
メッセージ処理をしてるはずなので、Application.Run()ではなく、Show() を使う
0083デフォルトの名無しさん2010/11/28(日) 23:58:57
56のコードであればメインフォームのメッセージループは開始されて
おらず、62の意見は間違っているんでは??
0084デフォルトの名無しさん2010/11/28(日) 23:59:56
>>81
ディスポーズされた後にコントロール操作したら例外発生するのかと思ったけどそんなことはなかった
0085デフォルトの名無しさん2010/11/29(月) 00:04:43
>>83
while(this.Created) { Application.DoEvents(); }

というのがメッセージループ(≒Application.Run)に相当するんじゃないの
まあ、うまく動作してないわけだけど
0086デフォルトの名無しさん2010/11/29(月) 00:05:57
もういいよ。pinvokeでWin32API使って直接ループ回せよ。
0087デフォルトの名無しさん2010/11/29(月) 00:06:46
動いてないソースをあれこれするより>>61の動いてるやつ改造すればいいじゃん
0088デフォルトの名無しさん2010/11/29(月) 00:08:45
>>83
メインスレッドでShowしてるでしょ
Application.Runは手っ取り早いメッセージループ開始方法ではあるが
方法はそれだけではない
0089デフォルトの名無しさん2010/11/29(月) 00:11:42
showはメッセージループを開始するってこと?
0090622010/11/29(月) 00:13:32
>>83
ちょっと間違えた。メインはJoinしているからメッセージループは実行されていない。
でもnewするスレッドとShowするスレッドとメッセージ処理するスレッドは同じでなければならない。
0091デフォルトの名無しさん2010/11/29(月) 01:11:33
showはメッセージループを開始するってことではないよ
でもshowした後はメッセージ処理しなきゃいけないから
Application.Runやwhile(this.Created) { Application.DoEvents(); } で
メッセージ処理をループさせなきゃいけない。
で、メッセージはshowしたスレッドで処理されるから
>Form1のメッセージループがメインスレッドで動いているのに
はこれからメッセージループが走るという意味ではまあそんなに外れてはいない。
で、DoEventsは現在のスレッドでshowされたメッセージを処理する命令だから、
new Thread(new ThreadStart(form.run))で新しく作ったスレッドで実行しても意味がないってことだろ。
まあ、それ以前に新しくスレッド作った直後にjoinするとか一体何をしたいんだと小一時間問い詰めたい訳だが

ところでnewするスレッドって関係あるの?
0092デフォルトの名無しさん2010/11/29(月) 11:34:09
C#でショックウエーブみたいな簡単なブラウザ3Dネトゲ作るには
なにが最適でしょう?
silverlightやらWPFやらブラウザ系はいっぱいあってメリットデメリットがわかりません
0093デフォルトの名無しさん2010/11/29(月) 12:28:45
silverlightはWPFのサブセットで対象をブラウザに限定したのもって感じ
普通のブラウザゲームを作るならsilverlightのほうがお手軽だろうな
ただゲームを作るなら素直にFlash勉強したほうがサンプルとかも豊富だし楽そうだが
0094デフォルトの名無しさん2010/11/29(月) 13:04:40
SilverlightはFlexの方が近いような
0095デフォルトの名無しさん2010/11/29(月) 13:07:30
ネイティブの3Dは今のところFlashでもSilverlightでも標準じゃ無理。
ソフトウェアレンダリングのエンジンならあるけど当然性能は全然出ない。
WPFはネイティブの3Dが使えるけど、ウィンドウ枠がブラウザか独立ウィンドウかの違いくらいで
全くブラウザ上で動かす意味がない。
あとはJavaアプレットも3Dいけるけど今時流行らないよね
0096デフォルトの名無しさん2010/11/29(月) 13:17:33
3dに見える2dが限界だな
0097デフォルトの名無しさん2010/11/29(月) 13:30:07
HTMLも3Dはまだまだ不透明
ソフトウェアレンダリングを使ったお遊びでお茶を濁してたり
標準と謳いながらネイティブのプラグイン使って騙してたりするレベル
0098デフォルトの名無しさん2010/11/29(月) 16:14:32
適当に自作クラスの配列作ってみたけど、動かない

//main部分
My[] my = new My[]
{
new My {
Str1 = "あいうえお",Str2 = "かきくけこ",Str3 = "さしすせそ"
}
new My{
Str1="あ",Str2="い",Str3="う"
}
new My{
Str1="はあ",Str2="ひい",Str3="ふう"
}
}
class My
{
public String Str1 { get; set; }
public String Str2 { get; set; }
public String Str3 { get; set; }
}

どこが間違ってるの?
0099デフォルトの名無しさん2010/11/29(月) 16:15:57
もう全部匿名型にしちゃえよ
0100デフォルトの名無しさん2010/11/29(月) 16:40:50
>>98
>動かない 
ほんとに動かないであってるの?コンパイルエラーってことはない?
0101デフォルトの名無しさん2010/11/29(月) 17:29:50
,がたりない
■ このスレッドは過去ログ倉庫に格納されています