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

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

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

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

■前スレ

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

■関連スレ
C#, C♯, C#相談室 Part66
http://hibari.2ch.net/test/read.cgi/tech/1303889653/
ミスターサタンの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/06/04(土) 20:29:57.99
■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも
http://ideone.com/
コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。

直接貼る場合は下記サイトなどを利用してhtmlエンコードした方が
インデントも残って見やすいです
http://kawama.jp/php/encode_html.php
3デフォルトの名無しさん:2011/06/04(土) 20:34:39.92
>>1

MIDIそのものは楽譜データだけで音色は実装側次第だからなあ・・・
なんでいまさらそんな物を使うのか

前スレ>>999
System.Diagnostics.Debug.WriteLineとかではダメ?

4デフォルトの名無しさん:2011/06/04(土) 20:40:49.47
>>1
ギリギリでスレ立て乙!
5デフォルトの名無しさん:2011/06/04(土) 20:43:25.64
おっおっおっ
6デフォルトの名無しさん:2011/06/04(土) 20:45:53.37
起動すると1.wmvを再生して、1.wmvを再生し終わったら2.wmvを再生するプログラムです
http://ideone.com/iZDn4
起動後、1.wmvの再生は出来るのですが、
問題は再生終了後に2.wmvが読み込まれているみたいですが再生されません
手動で再生ボタンを押さないと2.wmvが再生できません
どう改善すると2.wmvも自動で再生できますでしょうか?
7デフォルトの名無しさん:2011/06/04(土) 20:52:39.66
対象プラットフォームを変更したらビルドできなくなったという経験はある
そのときは構成マネージャーのリストビューの「ビルド」というチェックボックスの
チェックがなんかしらんけど外れていた。けっこうトラップだと思う
8デフォルトの名無しさん:2011/06/04(土) 20:55:29.24
>>6
BeginInvokeでPlayするとか
9デフォルトの名無しさん:2011/06/04(土) 21:03:02.88
case (int)WMPLib.WMPPlayState..wmppsReady :
  this.axWindowsMediaPlayer1.Ctlcontrols.play();
  break;
と、readyになってからPlayしてみたらどう?(テストしていません)
10デフォルトの名無しさん:2011/06/04(土) 21:13:30.88
>>3
System.Diagnostics.Debug.WriteLine
だめでした

>>7
ありがとうございます構成マネージャをいじっていたら解決しました

C#AnyCPU DLLx64
コンパイルできない

C#AnyCPU DLLx86
コンパイル出来るがデバッグが使えない

C#x64 DLLx64
コンパイルデバッグ共にできる

C#x86 DLLx86
コンパイルデバッグ共にできる

AnyCPUは使わない事にしますありがとうございました
11デフォルトの名無しさん:2011/06/04(土) 21:53:20.75
>>9さんのコードを頼りにttp://blog1.aitacos.com/?p=1339をみつけてswitch文の所を修正して2.wmvが自動で再生されませんでした
BeginInvokeを検索して調べてみたのですが敷居が高くて手に届きません

http://ideone.com/KsWxy
12デフォルトの名無しさん:2011/06/04(土) 22:33:24.79
逆に考えるんだ、ちょうどこの機会に覚えるかと考えるんだ
13デフォルトの名無しさん:2011/06/04(土) 22:35:10.75
BeginInvokeはいいけどよ
そのwmpコントロールはどのスレッドで動いてるんよ
14デフォルトの名無しさん:2011/06/04(土) 22:39:43.16
そりゃメインスレッドだろ

BeginInvokeは別スレッドからの呼び出しのほかに
次以降のメッセージループで処理させるために使う場合がある
15デフォルトの名無しさん:2011/06/04(土) 22:45:25.02
>>6
そもそも、その独自メソッドをどこからコールしてるんだろ?と素朴な疑問が。。。
Timerとかから呼ぶ様にしてみては
16デフォルトの名無しさん:2011/06/04(土) 23:13:08.92
>>11
昔のソース見たらURIに一端空文字を入れてから操作しているな
こっちではソースは音楽ファイルだし、イベント発生させて他のクラスから
次のファイルをセットしているからどうなるか判らんが
17デフォルトの名無しさん:2011/06/04(土) 23:13:56.35
前に同じようなこと悩んだ時はこんな感じでやった。
http://ideone.com/n258k
詳しく知りたければDelphiだけどここ参照で。
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200903/09030027.txt
18デフォルトの名無しさん:2011/06/04(土) 23:19:47.12
>>6のコードの
this.axWindowsMediaPlayer1.URL = @"C:\douga\2.wmv";
this.axWindowsMediaPlayer1.Ctlcontrols.play();
の次にMessageBox("test");を足して動かすと、何故こうなるのか分からないのですが2.wmvが自動的に再生できました
メッセージボックスを閉じると動画が停止されてしまうので何でこうなってしまうのか分かりません
>>12-17
今から参考にして調べてみます
19デフォルトの名無しさん:2011/06/04(土) 23:40:10.17
System.Windows.Forms.Timerは精度が悪いみたいなので代替できるもので精度を求める場合は
System.Threading.TimerとSystem.Timers.Timerのどちらがもっとも精度に長けてますか?
20デフォルトの名無しさん:2011/06/04(土) 23:42:39.52
Timersの方はThreadingの方をちょっと使いやすくしただけ
使ってる物は同じ
21デフォルトの名無しさん:2011/06/05(日) 00:03:32.21
C#で動画編集ソフトにあるような、タイムラインを使ったアプリを制作しています。
下記のようなフォームをイメージしているのですが、似た機能を見つけられません。
小さなことでも構わないので、何かしらご教授頂けますでしょうか・・・。よろしくお願いします。
http://brunhild.sakura.ne.jp/up/src/up501574.jpg
22デフォルトの名無しさん:2011/06/05(日) 00:05:46.84
タブとラベル(アイテム名って表示している部分)とスクロールバーくらいしかないね

後は全部自前で描け
23デフォルトの名無しさん:2011/06/05(日) 00:15:27.19
>>18
>>14が既に答えてるけど、これでいけた。
case (int)WMPLib.WMPPlayState.wmppsMediaEnded:
  this.BeginInvoke((MethodInvoker) (() => {
    axWindowsMediaPlayer1.URL = @"C:\douga\2.wmv";
    axWindowsMediaPlayer1.Ctlcontrols.play();
  }));
  break;
24デフォルトの名無しさん:2011/06/05(日) 00:19:24.11
>>21
タイムラインコントロール使えばいいじゃん
25デフォルトの名無しさん:2011/06/05(日) 00:34:32.66
>>18
解決したのかいな。頑張って書いたから乗せておく。
ttp://ideone.com/mPK2i

この方法はメディアプレイヤつかったことないとわからん。
要するにプレイリスト作ってプレイヤーに登録してるだけ。
26デフォルトの名無しさん:2011/06/05(日) 00:46:07.25
C#でDirectXを使う方法をC++/CLIで質問したんですが、C#だけでできるそうなので教えてください

「PInvoke で渡す構造体はC#側で用意してあげればいい」

というのは構造体をC#で作ってDllImportでC#で再定義して使うということでいいんでしょうか
DirectXInputのDLLはどこにあるんですか?SDKのDeveloperRunTimeの中から選ぶとマニフェストを含んでいないと言われます
27デフォルトの名無しさん:2011/06/05(日) 00:56:21.42
初級者ではなく完全な初心者がいきなりPInvokeとかギャグとしか言いようがないから1年経ってからまた来い
もう同じ質問するなよ
お前に言えることは全くない
28デフォルトの名無しさん:2011/06/05(日) 01:00:41.19
>>27は知らないだけ
29デフォルトの名無しさん:2011/06/05(日) 01:04:07.16
>>26
c#でDirectX使った事ないけど、こう言う本は見かけた事あるお

http://www.amazon.co.jp/gp/aw/d/487593419X/ref=mp_s_a_1?qid=1307203269&sr=8-1
30デフォルトの名無しさん:2011/06/05(日) 01:08:16.09
まずP/Invokeだけできるようになったらやれば?
31デフォルトの名無しさん:2011/06/05(日) 01:10:06.27
>>26
Microsoft.DirectX.DirectInput
とかってMDXの関連だっけ?
http://www.clks.jp/csg/dx003.html
http://techno-st.net/2008/04/24/visual-c.html

32デフォルトの名無しさん:2011/06/05(日) 01:14:37.75
dllはsystem32の中に入ってる(xinput1_1.dllなど)な
ただしこれ単体で呼び出していいものなのかは不明だ
33デフォルトの名無しさん:2011/06/05(日) 01:30:49.15
DllImport書いてやってみたら普通に動いた
コントローラー持ってないから関数が正常終了することしか確認できないけど…

たかが15行程度だし、この辺見ながら自分で書けよ
ref以外に特に引っかかりそうな部分無いしな

http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.html
http://msdn.microsoft.com/ja-jp/library/bb174829%28v=VS.85%29.aspx
http://msdn.microsoft.com/ja-jp/library/bb174834%28v=VS.85%29.aspx
http://msdn.microsoft.com/ja-jp/library/bb174832%28v=VS.85%29.aspx
34デフォルトの名無しさん:2011/06/05(日) 01:31:10.01
ありがとうございます。
xinput1_1.dllもマニフェストなんたらのエラーが出ます。
開発で使えるようなDLLは用意されていないということですか?
defがないとすると使われることを想定してないということですよね
やはりLibと.hで使うにはC++CLIを使うしかないんでしょうか?
C++CLIを通すならC++でDLLにしてC#から使う方が手間がかからないと思うんですが
ラッパーとして使うC++CLIの存在意義を考えるとネイティブからの変換目的の為だけに使うことはないと思うんですが
みなさんはどうやってアンマネージDirectXをC#で使ってるんですか?
35デフォルトの名無しさん:2011/06/05(日) 01:32:03.67
>>33
ありがとうございます!がんばります
36デフォルトの名無しさん:2011/06/05(日) 01:36:09.60
37デフォルトの名無しさん:2011/06/05(日) 01:53:38.82
非同期デリゲートのBeginInvokeとEndInvokeについてまったく理解できません
わかることはBeginInvokeがデリゲートの処理開始時、EndInvokeが処理終了時ということくらいしかわかりません・・・
よくわかるように教えてもらえないでしょうかないでしょうか?・・・
38デフォルトの名無しさん:2011/06/05(日) 01:54:48.03
すいません構造体を書く手間がマネージ変換を上回ったのでやはりC++CLIを使うことにしました
ありがとうございました!
39デフォルトの名無しさん:2011/06/05(日) 01:58:56.79
>>37
>わかることはBeginInvokeがデリゲートの処理開始時、EndInvokeが処理終了時ということくらいしかわかりません・・・

理解してるじゃん
それ以外に何もないよ
4033:2011/06/05(日) 01:59:56.19
>>38
二度と来るなよ
41デフォルトの名無しさん:2011/06/05(日) 02:07:56.48
根性なし極まりないわね…。
42デフォルトの名無しさん:2011/06/05(日) 02:08:28.55
>>40
すいません出来たんですが、XNAを使わない理由はDirectShowとDirectComputoも使いたかったので統一したかったんです
なので総合的に考えてC++CLIにすることにしました。
C#から直接使うのは使い物にならないということが分かって勉強になりましたありがとうございました
43デフォルトの名無しさん:2011/06/05(日) 02:12:02.13
だったらXInput試すまでもねーじゃねえか
本当に頭が可笑しいんだな
44デフォルトの名無しさん:2011/06/05(日) 02:14:41.11
XInputをXNAでやっていたら
DirectshowをC#で使う方法を質問していたと思います
XInputからやってまずかったでしょうか?
45デフォルトの名無しさん:2011/06/05(日) 02:15:52.56
いいから死んでおけ
46デフォルトの名無しさん:2011/06/05(日) 03:00:10.01
そういう発言はいただけませんねぇ〜。
私の彼女は今プログラミング中ですがとてもいいですよ。
47デフォルトの名無しさん:2011/06/05(日) 04:48:31.16
System.IO.Stream stream = File.Open("test.bin", FileMode.Open);
として開いて、
var sr = new StreamReader(stream, System.Text.Encoding.ASCII);
で数行読んだ後、
var br = new BinaryReader(stream);
そこからバイナリで読みたいんですが、続きがあるのに
br.ReadByte();にてEndOfStreamExceptionが投げられます。
途中からReaderを切り替えることはできないんですか?
48デフォルトの名無しさん:2011/06/05(日) 05:09:50.96
そんなこと無いはずだけどなあ

続きがあるってことはEndOfStreamExceptionをcatchした時
Stream.Position < Stream.Lengthになってるのを確認してるんだよな
49デフォルトの名無しさん:2011/06/05(日) 05:12:01.08
あ、バッファリングのためにStreamReaderが先読みしてるんじゃねえか?
50デフォルトの名無しさん:2011/06/05(日) 05:53:01.78
>>49
ありがとうございます。
確認してみたところ、その可能性がとても高そうです。
StreamReaderにその分だけストリームを進めるように指定するには
どうすればいいですか?
51デフォルトの名無しさん:2011/06/05(日) 07:16:38.00
最初の数行をバイナリで読めばいいのに
52デフォルトの名無しさん:2011/06/05(日) 08:08:36.54
>>34はネイティブdllをプロジェクトの参照に突っ込もうとしてたんじゃないかと
53デフォルトの名無しさん:2011/06/05(日) 12:47:27.61
VC#でWindowsのGUIソフトを作りたいと思います
プロジェクトを作るとForm1.csっていうファイルとprogram.csってファイルが出来ました
起動したときに必ず処理したいことって言うのはprogram.csのMain()の中に書くのと、
Form1.csのForm1()かたはForm1_Load()の中に書くのどちらで書くべきでしょうか?
54デフォルトの名無しさん:2011/06/05(日) 12:59:42.27
またそういう叩いてくれと言わんばかりの質問を全力でするかね
55デフォルトの名無しさん:2011/06/05(日) 13:00:55.60
>>53
form1を作る前に必ず処理したいなら、Main
56デフォルトの名無しさん:2011/06/05(日) 13:06:11.91
その処理ってのが Form1 固有の物なら、Form1.cs のどこか。
たとえば複数の画面をもってて、広く影響を与えるなら Main という考え方もある。
57デフォルトの名無しさん:2011/06/05(日) 13:07:00.05
まあ初心者用ってスレタイだしな
あまりカリカリしてもするだけ損だ
58デフォルトの名無しさん:2011/06/05(日) 13:27:14.96
OnLoadに初期化を書く作法は、たぶんVBから来てるんだと思うが、
ShowDialogで同じインスタンスを再利用しないとしても本来ちょっと奇妙だよな。

もちろん一部の処理はコンストラクタには書けないから仕方が無い面はあるんだけど。
59デフォルトの名無しさん:2011/06/05(日) 13:48:16.61
>>54
巣に帰れzk
60デフォルトの名無しさん:2011/06/05(日) 15:03:26.51
private void conBtn_Click(object sender, EventArgs e)
{
StartAccept();
}

private static void StartAccept(Socket server)
{
server.BeginAccept(
new System.AsyncCallback(AcceptCallback), server);
}
上記のコードを実行すると
>引数を 0 個指定できる、メソッド 'StartAccept' のオーバーロードはありません
というエラーが出ます。どなたか解決策を教えてくれないでしょうか?
61デフォルトの名無しさん:2011/06/05(日) 15:08:12.56
StartAccept()の引数を変える
62デフォルトの名無しさん:2011/06/05(日) 15:13:56.20
private void conBtn_Click(object sender, EventArgs e)
{
StartAccept();
}

private static void StartAccept()
{
Socket server = new Socket();
server.BeginAccept(
new System.AsyncCallback(AcceptCallback), server);
}
このように変えてみたけど今度は
> 'System.Net.Sockets.Socket' に、引数を 0 個指定できるコンストラクターがありません。
って出でしまう。

63デフォルトの名無しさん:2011/06/05(日) 15:21:46.28
子供じゃないんだから同種のエラーでいちいち質問すんなよ
64デフォルトの名無しさん:2011/06/05(日) 15:26:24.96
これは「引数を0個指定できる」の意味を教えてやったほうが良かったのかもな…
65デフォルトの名無しさん:2011/06/05(日) 15:47:42.20
string[] files = System.IO.Directory.GetFiles("C:\\,test", "*.txt", System.IO.SearchOption.TopDirectoryOnly)
これで拡張子txtのファイルのみ一覧取得できるのですが、
txt以外にdocも取得したいと思います
string[] files = System.IO.Directory.GetFiles("C:\\,test", "*.txt; *.doc", System.IO.SearchOption.TopDirectoryOnly)
で出来ると思ったのですが出来ませんでした
C#4.0で方法ございませんか?
66デフォルトの名無しさん:2011/06/05(日) 16:04:12.36
GetFiles()に拡張子を複数指定できる機能は無い。
ディレクトリ内のファイルを列挙して文字列比較か正規表現でも使って抽出すればいい。
67デフォルトの名無しさん:2011/06/05(日) 16:06:34.34
そんなことしなくても2つのパターンで検索してマージするだけでしょ。
智恵無さ杉
68デフォルトの名無しさん:2011/06/05(日) 16:06:59.12
string[] files = System.IO.Directory.GetFiles("C:\\test", "*", System.IO.SearchOption.TopDirectoryOnly)
.Where(file => { var ext = System.IO.Path.GetExtension(file); return ext == ".txt" || ext == ".doc"; })
.ToArray();
69デフォルトの名無しさん:2011/06/05(日) 16:16:12.58
2回検索してマージとか無駄杉
この点は.Net Framework5.0で改善してもらいたいものだ
70デフォルトの名無しさん:2011/06/05(日) 16:26:16.58
素でできなかったら工夫すりゃいいだけのことだろ
71デフォルトの名無しさん:2011/06/05(日) 16:43:06.28
.NET4でEnumerateFilesが追加されている件
72デフォルトの名無しさん:2011/06/05(日) 17:10:30.81
FindFirstFileができた頃からの仕様だし変更されるわけがない
73デフォルトの名無しさん:2011/06/05(日) 17:32:31.02
自分以外のウィンドウのクライアント領域のスクリーン座標を取得したいんですが、
ClientRectangle -> PointToClientを他のアプリケーションに対して実行することはできますか?

GetClientRectを使おうとしたけど挫折しました…
74デフォルトの名無しさん:2011/06/05(日) 17:42:09.12
できない
75デフォルトの名無しさん:2011/06/05(日) 17:44:33.10
自分以外のウィンドウのクライアント領域のスクリーン座標を取得するには
GetClientRectじゃないとダメ、という話で大丈夫ですか?

勉強してきます…
76デフォルトの名無しさん:2011/06/05(日) 18:02:20.89
>クライアント領域のスクリーン座標
ウィンドウハンドルがわかってるならGetWindowRectでスクリーン座標が取れるが

[DllImport( "user32.dll" )]
static extern bool GetWindowRect( IntPtr hWnd, out RECT pRect );

struct RECT
{
 public int left;
 public int top;
 public int right;
 public int bottom;
}
77デフォルトの名無しさん:2011/06/05(日) 18:07:01.41
以前特定ウインドウのSSをとるアプリ書いたので探してくるわ
78デフォルトの名無しさん:2011/06/05(日) 18:18:18.21
サンプル
http://ideone.com/e4u8T

これは最前面のウインドウの位置とサイズを取得するだけ
任意のウインドウのハンドルが欲しければそれなりのAPIを使ってね
79デフォルトの名無しさん:2011/06/05(日) 18:30:34.25
皆さん回答ありがとうございます
>>76-78
申し訳ないんですけど、欲しいデータは
「任意のウィンドウの『クライアント領域の』スクリーン座標」なんです…

GetWindowRectで帰ってくるのはウィンドウのスクリーン座標なので、申し訳ないんですが上手くいかない感じです…
80デフォルトの名無しさん:2011/06/05(日) 18:36:33.33
GetWindowRectとGetClientRectなんて
呼び出し手順的には関数名ぐらいしか変わらないじゃん…
81デフォルトの名無しさん:2011/06/05(日) 18:37:22.52
static extern bool GetWindowRect( IntPtr hWnd, out RECT pRect );
これを

static extern bool GetClientRect( IntPtr hWnd, out RECT pRect );
するだけで動くだろ

しかしまあP/Invoke関連の質問がバカ丸出しであることだ
酷いね
82デフォルトの名無しさん:2011/06/05(日) 18:38:46.90
>>80
いや、GetClientRectで返ってくるデータってスクリーン座標じゃないですよね?
そこで詰まってるんです…
83デフォルトの名無しさん:2011/06/05(日) 18:39:11.12
自分で求める先も見えてて検索するだけでしかも答えに近いコードまでもらって
何もできないって終わってると思う
84デフォルトの名無しさん:2011/06/05(日) 18:40:12.87
85デフォルトの名無しさん:2011/06/05(日) 18:42:11.37
>>84
ありがとうございました
ClientToScreenっていう関数があるんですね…
86デフォルトの名無しさん:2011/06/05(日) 18:43:06.77
なんかここの所多いよな
87デフォルトの名無しさん:2011/06/05(日) 18:53:16.90
ググらないからカスなのではない
カスゆえにググれない
88デフォルトの名無しさん:2011/06/05(日) 19:29:22.94
大目に見れ
89デフォルトの名無しさん:2011/06/05(日) 19:32:29.65
全部答えようとするからムカついてくるんだよw
90デフォルトの名無しさん:2011/06/05(日) 19:40:25.46
意味不明
91デフォルトの名無しさん:2011/06/05(日) 19:48:52.45
ちょろっと
「>>xx
ググれば出る」

で十分だろ
92デフォルトの名無しさん:2011/06/05(日) 20:15:57.67
なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
93デフォルトの名無しさん:2011/06/05(日) 20:18:16.94
お断りよ
94デフォルトの名無しさん:2011/06/05(日) 20:37:19.02
C#でmp3やwmaやwavファイルにエフェクトを掛けたり加工したりする方法を学びたいのですが
数ある書籍の中からおすすめの本ってございませんか?
95デフォルトの名無しさん:2011/06/05(日) 20:41:42.09
C#じゃなくても出来ることなのでそういうのに触れてる本はないですね
96デフォルトの名無しさん:2011/06/05(日) 21:10:01.38
>>23
>>25
ありがとうございます
いろいろやり方がありますね
97デフォルトの名無しさん:2011/06/05(日) 23:04:20.85
FLVファイルの再生が行いたく、海外のサイトを参考に以下のように書きました
ツールボックスにShockwave Flash Objectを追加してフォームに配置してます
実行しても画面が白いままで右クリックすると「ムービーが未ロード」となってました
読み込まれれば実行できる?のかと思うのですがどうかお知恵を拝借させてください
http://ideone.com/fYnXP
98デフォルトの名無しさん:2011/06/05(日) 23:15:28.17
そもそも直接FLV再生できたっけ?
http://www.codeproject.com/KB/audio-video/flashexternalapi.aspx
ちょっと複雑なことやってるようだが
99デフォルトの名無しさん:2011/06/05(日) 23:16:06.77
フォームにAxShockwaveFlash(axShockwaveFlash1)が配置してある状態で
さらにAxShockwaveFlash(flash)を生成してフォームのAxShockwaveFlashに追加する意味が分からない
100デフォルトの名無しさん:2011/06/05(日) 23:18:29.65
面白そうなのでこっちでもやってみよかと思ったけど
AxShockwaveFlashObjectsの参照設定ができねえ
どこにあるんだ?
101デフォルトの名無しさん:2011/06/05(日) 23:20:11.85

ActiveX版Flashを入れる。
参照にCOMコンポーネントからShockwaveFlashObjectsを追加する。
メニューのツール→ツールボックスアイテムの選択→COMコンポーネントからShockwaveFlashObjectを追加する。
デザイナで配置する。
102デフォルトの名無しさん:2011/06/05(日) 23:24:00.16
>>101
あり
IE使わないから無いわけだ
103デフォルトの名無しさん:2011/06/05(日) 23:31:28.10
SWFにしたら動いたからやはりフォーマットの問題だろう

>>98では再生用のswfを介しているようだし
104デフォルトの名無しさん:2011/06/06(月) 00:03:06.62
http://www1.axfc.net/uploader/Img/so/117564.jpg
以下のようなレイアウトで、TabControl下にあるtabPage1、tabPage2のタブボタンに各イベントを設定することできませんか?
105デフォルトの名無しさん:2011/06/06(月) 00:19:03.59
サムネにnot imageって出るから怖くて開けないよその画像(なのか本当に?)w
106デフォルトの名無しさん:2011/06/06(月) 00:22:01.52
斧に画像あげるとそうなるね
107デフォルトの名無しさん:2011/06/06(月) 00:30:34.94
うざいアップローダに上げられた画像は見ませんし質問にも答えません
108デフォルトの名無しさん:2011/06/06(月) 00:40:19.20
それは言わなくていいです
109デフォルトの名無しさん:2011/06/06(月) 00:42:16.64
プログラム板でロダとかないんだろうか
ニュー速とかで使ってるロダ使うと夜は確実にテンポルからなあ
110デフォルトの名無しさん:2011/06/06(月) 00:53:17.97
>>97
webbrowser貼り付けてそこへhtml含めて流し込めば早いかもとか思ってしまった
html上で動画再生するためのサンプルはいろいろあるだろうし
111デフォルトの名無しさん:2011/06/06(月) 05:51:49.82
なんかセキュリティ的にいろいろ面倒だった気がするが
112104:2011/06/06(月) 15:03:02.22
http://freedeai.180r.com/up/src/up3827.jpg
適当なロダにアップロードしました
以下のようなレイアウトで、TabControl下にあるtabPage1、tabPage2のタブボタンに各イベントを設定することできませんか?
tabPage1のタブボタンはtabControlに分類されているようでtabPage1の中身をクリックしたときだけtabPage1のMouseDownイベントが起きるみたいです
113デフォルトの名無しさん:2011/06/06(月) 17:02:16.59
TabControlを継承してWndProcオーバーライドしてみそ
114デフォルトの名無しさん:2011/06/06(月) 17:11:22.31
タブのクリックイベントってないのか
いつもタブ毎にFocus、LostFocusで使ってたから気にならなかった
115デフォルトの名無しさん:2011/06/06(月) 23:09:48.45
調べてみてどうもflvを直接再生するのは難しいそうです
swfから呼び出す形でflvを利用してみます
116デフォルトの名無しさん:2011/06/06(月) 23:52:48.87
win7
スリープ時に別スレッドはアボートされるでOK?
117デフォルトの名無しさん:2011/06/07(火) 00:03:23.51
そんなバカな
118デフォルトの名無しさん:2011/06/07(火) 00:10:25.32
普通に考えたらサスペンドじゃないかな・・・。
119デフォルトの名無しさん:2011/06/07(火) 00:17:28.53
てーてーてー
てーてーてー
ずんずんずんずんずんずんずんずんーててっ!
120デフォルトの名無しさん:2011/06/07(火) 00:19:04.77
アボートもサスペンドもしてるわけない。
仮想PCをでゲストOSを一時停止するのと同じこと。
121デフォルトの名無しさん:2011/06/07(火) 00:20:36.72
そういうのをサスペンドって言わないのか・・・。むー。
122デフォルトの名無しさん:2011/06/07(火) 00:25:38.10
どの視点に立ってるかを意識しなきゃね。
アボートとかサスペンドとかいうのは、プロセスの視点に立った用語なわけで。

ゲストOSの視点からはゲストOSは止まってないように(当たり前だな)、
プロセスの視点からは(以下略
123デフォルトの名無しさん:2011/06/07(火) 00:46:14.18
ありゃあ そしてら俺だめかな
PowerModeChanged()で復帰時に
スレッドをnewしてたんだが。
124デフォルトの名無しさん:2011/06/07(火) 01:09:14.72
誰か教えて下され。

動画を再生するアプリを作成中です。
media playerで再生できる動画が、AxWMPLib.AxWindowsMediaPlayerを張り付けた
アプリでは再生できない(すべて再生できない訳ではない)。
コンテキストメニューでバージョンを確認した限りでは、同じバージョンです。

なにか分かる人居ませんか????
125デフォルトの名無しさん:2011/06/07(火) 01:11:38.13
コーディックはちゃんとはいってるの?
126デフォルトの名無しさん:2011/06/07(火) 01:30:35.11
>>124
再生できないものに共通する事柄を探すのが先決だなってのは分かるよ

逆に言うとそれ以外アドバイスできることは無いね
127デフォルトの名無しさん:2011/06/07(火) 01:46:51.45
>>124
確か拡張子をちゃんと関連づけしていないと再生できないって制限があったかと
コーデックだけで再生したければDirectShow.Net辺りを使ったらどうかな
http://directshownet.sourceforge.net/index.html

WpfでもMediaElementで同じ現象が起こる。この場合もWPF MediaKit を使うと良いよ
http://wpfmediakit.codeplex.com/
俺はこっち使って遊んでいる
128デフォルトの名無しさん:2011/06/07(火) 02:06:32.60
皆さん、ありがとう。

再生できる奴と再生できない奴の情報をmedia player classicのプロパティで
見てみると

再生できる
Video: MPEG4 Video (H264) 512x288 23.98fps [Video]
Audio: AAC 24000Hz stereo 768kbps [Audio]

再生できない
Audio: MPEG Audio Layer 3 22050Hz stereo 64kbps [Audio]
Video: Flash Video 4 512x384 [Video]

でもって、media playerのプロパティでコーデックを見てみると
両方とも
ffdshow Video Decoder
でした。

DirectShow フィルターとかコーデックとかよく分かってないから、なかなか
難しい。やっぱりこの辺でうまく行っていないんですよね。。。

エロビデオを暗号化したいだけなのに。orz
129デフォルトの名無しさん:2011/06/07(火) 18:22:31.01
ラムダ式で質問です
delegate bool SampleDelegate01(int i)
SampleDelegate01 sd01 = i => i > 5;
と言う場合と
delegate int SampleDelegate02(int i)
SampleDelegate02 sd02 = i => { return i * i; };
では{}とreturnがあるかどうかの違いなのですが
ラムダ式では返り値がbool型である場合、returnを省略できるという認識でいいのでしょうか?
あと
SampleDelegate02 sd02 = i => return i * i;
こういう書き方をするとビルドが通らないのでreturnを書くときは{ }も付けないといけないということでしょうか?
130デフォルトの名無しさん:2011/06/07(火) 18:32:37.52
{}はブロックだから、そのままでは返り値を持たないので、ブロック内でreturnをする必要がある。
しかし、i > 5やi * iというのは式で、返り値を持つ。
131デフォルトの名無しさん:2011/06/07(火) 18:44:44.26
C#でフォームを作ってます。WPFではなく、通常のフォームアプリケーションです。
そのフォームに、リストビューを追加し、
そのアイテムの表示形式をカスタマイズしたいと考えています。
ただ、ListViewを継承しカスタマイズで可能なのか、自前で作るしかないのかわかりません。

アイテムの表示内容としては、イメージ、テキスト、プログレスバーを表示したいと思っています。
プログレスバーの表示ON/OFFは可能にしたいです。
上記のコントロールを作りたい場合、
既存.NETクラスのカスタマイズでは無理でしょうか?
132デフォルトの名無しさん:2011/06/07(火) 19:01:52.72
オーナードローすればできるんじゃね
133デフォルトの名無しさん:2011/06/07(火) 19:07:09.09
>>132
ありがとうございます。オーナードローですね。
調べてみます。
134デフォルトの名無しさん:2011/06/07(火) 19:31:28.88
>>129
voidでも () => WriteLine() みたいな書き方({} 抜き)できるよ。
bool 以外でも、i => i * i って書けるし。
135デフォルトの名無しさん:2011/06/07(火) 19:44:30.67
>>130
>>134
そういうことだったんですね。ありがとうございます。
136デフォルトの名無しさん:2011/06/08(水) 02:28:41.12
三項演算子で
<条件式> ? <真> : <偽>で真の部分だけ実行させることってできないんですか?
<条件式> ? <真>みたいなことをしたいんです・・・
137デフォルトの名無しさん:2011/06/08(水) 02:29:56.40
ifでいいやん
138デフォルトの名無しさん:2011/06/08(水) 02:32:08.47
いまどき三項演算子なんて使うなよ
139デフォルトの名無しさん:2011/06/08(水) 02:59:36.14
そうだよ、条件演算子って呼べよ。
140デフォルトの名無しさん:2011/06/08(水) 03:00:56.19
Process.Startで外部アプリ起動しようとすると、普通のメモ張とかFireFoxは起動するけど一部のゲームが
DirectX関連でなんか問題あるらしく起動しないわ。
普通にエクスプローラとかからダブルクリックすると正常に起動するんだけど
どうしたらいいか聞こうと思ったけどやっぱいいです。特に問題あるわけじゃないし。
141デフォルトの名無しさん:2011/06/08(水) 03:00:58.40
>>136
条件演算子って、式なわけよ、値を返す式。
偽の側なかったら値返さないパスが出るじゃない。
真の部分を実行したいだけならそれは if 文の領分。
142デフォルトの名無しさん:2011/06/08(水) 03:43:48.10
Listに対してさまざまなThreadがAdd/Removeするとき、ふつうlockするんだけど、そのListのインスタンスに対してlockしちゃだめ?

List<int> _list

public void Addするよ(int item)
{
lock (_list)
{
_list.Add(item);
}
}

って、やっちゃだめ?
143デフォルトの名無しさん:2011/06/08(水) 03:47:48.75
問題ない
lockするオブジェクトが外から見えていないのなら
144デフォルトの名無しさん:2011/06/08(水) 08:00:42.91
>>140
作業フォルダだろ。簡単に妥協すると進歩がないよボク
145デフォルトの名無しさん:2011/06/08(水) 12:26:41.90
親クラスの引数なしコンストラクタを作らなくてもいい場合ってどんなとき?
146デフォルトの名無しさん:2011/06/08(水) 12:40:33.76
パラメータが必要なコンストラクタしか使わないと決まってる時
147デフォルトの名無しさん:2011/06/08(水) 16:50:35.03
例えば9行9列のint型配列の中に36という数字がいくつ入ってるかを知りたい場合はどうすればいいの?

forを二重にしてカウントするやり方ではなくて、それっぽいメソッドがあったら教えてくれ
148デフォルトの名無しさん:2011/06/08(水) 17:08:33.93
foreachを2重にするとかいうボケはだめ?
149デフォルトの名無しさん:2011/06/08(水) 17:12:59.88
ジャグ配列ならLINQのSumとCountで行けるけど
多次元配列だとfor回すしかないんじゃね
150デフォルトの名無しさん:2011/06/08(水) 17:15:21.46
>>148-149
配列での foreach の使用 (C# プログラミング ガイド)
http://msdn.microsoft.com/ja-jp/library/2h3zzhdw%28v=vs.80%29.aspx

冗談言ってる場合ではない
151デフォルトの名無しさん:2011/06/08(水) 17:16:21.94
array.Count(n=>n==36);
152デフォルトの名無しさん:2011/06/08(水) 21:41:18.43
他のアプリケーションにC#経由でコマンドを飛ばしたり、マウスがクリックされたと送るにはどんなものが必要ですか?
153デフォルトの名無しさん:2011/06/08(水) 21:49:23.45
sendmessage
154デフォルトの名無しさん:2011/06/08(水) 23:08:14.65
あるWebサイトのサンプルでFormで、
private void OnPaint(object sender, System.Windows.Forms.PaintEventArgs e)
{
}
ってメソッドがあったんだけど、これってなに?
人間ならユーザの定義したメソッドではないのは分かるけどC#はどうやってそれをわかり、WM_PAINTのハンドラであると理解するの?
っていうかoverrider?overrideって書いてないけどオーバーライド?overrideキーワードって省略可能なの?
それとも基底クラスのOnPaintのオーバーライドではない別の何か?

すみませんよろしくお願いしますm(_ _)m
155デフォルトの名無しさん:2011/06/08(水) 23:11:32.06
偉そう
156デフォルトの名無しさん:2011/06/08(水) 23:17:42.10
overrideって書いてない以上オーバーライドじゃないのは明らか
というかどう見てもユーザの定義したメソッド
Control.OnPaintとは引数違うだろ
157デフォルトの名無しさん:2011/06/08(水) 23:18:31.71
>>154
そのサンプルのアドレスを晒すんだ
158デフォルトの名無しさん:2011/06/08(水) 23:22:40.61
>>155
すみません・・

>>156
明らかにオーバーライドじゃないんですね。ありがとうございます。

>>157
http://uchukamen.com/Programming1/Region/index.htm
ちょっと長いけど、このページの下の方にコードがあって、そこにあります。

ってすみません、ちゃんとユーザ定義のメソッドでした。自分でイベント追加してますね
皆さん済みません!
159デフォルトの名無しさん:2011/06/09(木) 03:21:54.68
まだまだWinFormsは現役やで!
160デフォルトの名無しさん:2011/06/09(木) 03:29:52.63
COBOLですら現役、VBといえばVB6な世の中で、
WinFormsが現役なのはある意味当然。
161デフォルトの名無しさん:2011/06/09(木) 10:51:30.23
VBといえばVB6
流石にないわ

COBOLは同意だ
基幹系は息長いよね
162デフォルトの名無しさん:2011/06/09(木) 10:58:26.14
Win8でのVB6が見込み薄だから必死にリプレースしてるよ
163デフォルトの名無しさん:2011/06/09(木) 11:57:06.16
>>162
それだったらコンポーネント使いまくってる会社おわってんな
まぁだめだったらVMWare+XPとかで動かすんだろうな
164 忍法帖【Lv=9,xxxP】 :2011/06/09(木) 12:45:16.13
んだんだ
165デフォルトの名無しさん:2011/06/09(木) 12:49:32.40
どこかのコンポーネントがWPFに移行してユーザーがキレ気味ってのもあったな
技術刷新って同時に金のネタでもあると思うんだけどなあ
変な保守契約するからだよ
166デフォルトの名無しさん:2011/06/09(木) 13:53:30.38
>>165
>どこかのコンポーネントがWPFに移行してユーザーがキレ気味
ちょっとこれ覚えてる限りで詳しく
167デフォルトの名無しさん:2011/06/09(木) 14:10:07.64
168デフォルトの名無しさん:2011/06/09(木) 14:20:27.66
>>167
サンクス
書いてあることはもっともだ
ウチもまだWinFormsメインだしなぁ

169デフォルトの名無しさん:2011/06/09(木) 15:07:40.82
だめだ・・・
今のところ通常の事務業務アプリで並列つかう必要性を感じない
めっちゃ実践で使ってみたいのに。。。。

制御系に振られた連中うらやましい くやすぃ・・・
170デフォルトの名無しさん:2011/06/09(木) 15:15:08.84
>>169
並列?
非同期でなくて。

非同期なら、UIスレッドを止めないという意味でむしろ必要だと思うけども。
171デフォルトの名無しさん:2011/06/09(木) 15:17:04.04
>>170
非同期は使ってるんですが、折角だから4.0からのparallel を試してみたかったんです。
何か使い道がないかなと模索してまして・・・
172デフォルトの名無しさん:2011/06/09(木) 15:25:23.06
うん、思いつかない<Parallelの使い道。
173デフォルトの名無しさん:2011/06/09(木) 16:13:14.09
コマンドプロンプトで実行しているとき
プログラムから終了させるのではなく
Ctrl+Cで終了させたときに特定の処理が行いたいのですが
このような強制終了?のときにイベントを実行させる方法ってございませんか?
174デフォルトの名無しさん:2011/06/09(木) 16:39:25.73
>>173
Console.CancelKeyPress
175デフォルトの名無しさん:2011/06/09(木) 16:43:21.35
>>174
ありがとうございます
176デフォルトの名無しさん:2011/06/09(木) 19:28:54.88
マウスカーソルを中心に縦横100pxの領域を拡大して表示する方法ってございませんか?
177デフォルトの名無しさん:2011/06/09(木) 20:02:03.27
どこの部位かによるだろ。
自分のアプリの中なのか、デスクトップなのか、他のアプリの上なのか。
178デフォルトの名無しさん:2011/06/09(木) 20:22:09.28
某所で知ったこれすごくね?
ttp://www.pexforfun.com/
179デフォルトの名無しさん:2011/06/09(木) 20:32:37.80
眩暈がして眠くてあくびが出たわ
スゴイスゴイ
180デフォルトの名無しさん:2011/06/09(木) 20:38:13.53
いやPexはすごいと思うぞ
181デフォルトの名無しさん:2011/06/09(木) 21:36:40.52
おい、デュエルしろよ
182デフォルトの名無しさん:2011/06/09(木) 23:02:11.04
Thread.Sleep(1000);
これより高精度で1秒待機する書き方をご教示お願いします
183デフォルトの名無しさん:2011/06/09(木) 23:17:43.98
低コストな方法はありません。
なぜってそれは無意味だから。

何で高々1〜数個のCPUコアしかないのに1つ以上のスレッドを持つプロセスが
何十個も同時に走るのか考えましょう。
そうすればなぜ無意味かが分かります。
184デフォルトの名無しさん:2011/06/09(木) 23:21:32.61
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
extern static void Sleep(int dwMilliseconds);

Sleep(1000)を試したところこれはThread.Sleepよりも制度が悪かったです
185デフォルトの名無しさん:2011/06/09(木) 23:26:39.57
マルチメディアタイマーが一番精度いいんだっけ?
それでも、非リアルタイムなマルチタスクOSって時点で限界が。
186デフォルトの名無しさん:2011/06/09(木) 23:27:39.34
1秒とかでいいのならディスプレイの同期とか
187デフォルトの名無しさん:2011/06/09(木) 23:41:17.25
SpinWaitでなんとか(ry
…いや、なんでもない
188デフォルトの名無しさん:2011/06/10(金) 00:07:14.28
精度がいいとか悪いとか、どうやって精度良く計測するの?
189デフォルトの名無しさん:2011/06/10(金) 00:08:09.39
そりゃぁ精度のよいストップウオッチを持ってだな・・・
190デフォルトの名無しさん:2011/06/10(金) 00:09:15.53
次は、そのストップヲッチの精度が気になるんですね、わかります
191デフォルトの名無しさん:2011/06/10(金) 00:12:16.02
いや問題はストップヲッチの精度ではないんですよだから。
ストップヲッチ自体の精度はppmオーダー以上ある。

問題はWindowsの世界にはストップヲッチのボタンを正確なタイミングで押せる
住人がいないことです。
192デフォルトの名無しさん:2011/06/10(金) 00:18:06.51
くそだなC#
193デフォルトの名無しさん:2011/06/10(金) 00:19:51.91
>>192
というよりマルチタスクOSだと無理じゃないの?
OS抜きでみれば可能だろうけど
194デフォルトの名無しさん:2011/06/10(金) 00:23:14.54
リアルタイムOS使えでFA
195デフォルトの名無しさん:2011/06/10(金) 00:24:01.51
>>191System.Diagnostics.Stopwatchってppmオーダー以上ある?
196デフォルトの名無しさん:2011/06/10(金) 00:50:37.37
VS2010でbuttonボタンが押された場合特定のwebサイトを表示させたいんですが、どうすればいいの?
197デフォルトの名無しさん:2011/06/10(金) 01:12:09.86
Gecko2.0を利用するにはどうすればいいでしょうか?
Gecko1.9.2は、XULRunnerのランタイムに含まれる、
mozctlx.dll を参照設定することで利用できました。

しかし、XULRunner2.0には、mozctlx.dll が見当たりません。
198デフォルトの名無しさん:2011/06/10(金) 01:26:29.74
>>182
現在時刻を保存しといて、1分経ったか比較しまくるとか?
199デフォルトの名無しさん:2011/06/10(金) 01:54:18.32
>>196
ボタンのイベントハンドラに1行書く
Process.Start("http://www.atmarkit.co.jp/fdotnet/");
200デフォルトの名無しさん:2011/06/10(金) 04:24:46.91
>>187
越えられないコンテキストスイッチの壁w
間隔 30ms くらいのはず。
201デフォルトの名無しさん:2011/06/10(金) 05:34:09.28
>>182
>>184
t = GetTime()
while (t < GetTime() - 1000) {
 Sleep(1)
}
GetTime()と、Sleep(1)のループの精度の分だけ正確ではなくなるが、マルチメディアタイマーより安全。

GetTime()は15ミリ秒単位しか取れなかったかも知れないのでそれ以上正確には出来ないが、
最初から15ミリ秒のSleepだとその分だけばらつきが出る。

ちなみにC#は知らないのでC#で当てはまるかは分からない。
202デフォルトの名無しさん:2011/06/10(金) 07:51:46.71
>>201
それは良くない
時間測定はQueryPerformanceCounter関数を使うほうが精確
StopwatchはQueryPerformanceCounterで実装されてるので.NETではStopwatchでいい
203デフォルトの名無しさん:2011/06/10(金) 10:36:14.25
Stopwatchって時間を計るものでしょ?
Sleepとは違うんじゃないのか?
204デフォルトの名無しさん:2011/06/10(金) 10:54:27.21
201のやり方を取るなら、だろ
前後の文くらい読もうぜ
205デフォルトの名無しさん:2011/06/10(金) 11:34:28.44
現在の時刻を1ミリ秒まで取得して、その時刻に1秒を足した値をセットする
時間になるまで待機させる
時間になったら実行
C#暦5ヶ月の俺でもここまで完璧な設計ができる
206デフォルトの名無しさん:2011/06/10(金) 11:38:10.76
C#じゃなくてプログラミング歴自体が5ヶ月だったらすごい
207デフォルトの名無しさん:2011/06/10(金) 11:45:40.21
すごいすご〜い
208デフォルトの名無しさん:2011/06/10(金) 11:48:13.53
System.Windows.Forms.Timerクラスって何の為についてるのん?
209デフォルトの名無しさん:2011/06/10(金) 12:05:03.19
Win32APIのSetTimerと同じものを使うため
210デフォルトの名無しさん:2011/06/10(金) 12:11:58.41
>>208
一定の間隔で実行したい処理を実行するため
(厳密に同じ間隔ではなかったはず)
211デフォルトの名無しさん:2011/06/10(金) 12:16:19.02
WM_TIMERの優先度が低いから
厳密どころかメッセージキューが混雑してると何時までたってもTickが来ない
212デフォルトの名無しさん:2011/06/10(金) 12:19:25.69
結局フォームとコンソールではどっちで作ったほうが精度がいいって事になるのですか?
213デフォルトの名無しさん:2011/06/10(金) 12:28:25.85
while (true){

}

ループ中にESCを押したらループを抜けるというのはどのように書けますか?
214デフォルトの名無しさん:2011/06/10(金) 12:29:27.37
>>212
余計な処理が入らない分、コンソールの方が厳密じゃないかな
215デフォルトの名無しさん:2011/06/10(金) 12:35:13.14
>>208
そのTimerのTicksは必ずGUIスレッドで呼び出される(Form.Invokeとかしなくていい)のがメリット
代償としてメッセージキューの制限を受けてしまう(>>211)ので、必要がなければSystem.Threading.Timerを使うべき
216デフォルトの名無しさん:2011/06/10(金) 12:40:56.70
>>213
Console.In.Peekを見張る
217216:2011/06/10(金) 12:42:32.56
ごめん嘘
218デフォルトの名無しさん:2011/06/10(金) 12:54:27.65
219デフォルトの名無しさん:2011/06/10(金) 12:56:19.78
亀だけど
Windowsのタイマ制度変更して
ManualResetEventインスタンスを作成
で、WaitOne

こんな風に待機しても結構制度よかったよ
220デフォルトの名無しさん:2011/06/10(金) 12:56:30.92
while (!Console.KeyAvailable || Console.ReadKey().Key != ConsoleKey.Escape)
{
}
221219:2011/06/10(金) 13:06:47.16
多分邪道だけど


[DllImport("winmm.dll", EntryPoint = "timeBeginPeriod")]
private static extern uint MM_BeginPeriod(uint uMilliseconds);

[DllImport("winmm.dll", EntryPoint = "timeEndPeriod")]
private static extern uint MM_EndPeriod(uint uMilliseconds);


uint res = MM_BeginPeriod(1);
uint res = MM_EndPeriod(15);

System.Threading.ManualResetEvent mre = new System.Threading.ManualResetEvent(false);
mre.WaitOne(2);

実際にFAの制御でOSはXP

15mSec以下の精度が必要になって時間もないってことで
思いついたこの方法でやってみてそこそこの精度でたからいけるのかな?とはおもうけど・・・

ほかのプログラムが同居してたら影響あるからあんま通常の使い道ないんちゃうかと
あとほかの割り込みとかあるとすぐ影響受けるし ホントはリアルタイムOSが理想なんだろうなぁ
222デフォルトの名無しさん:2011/06/10(金) 13:16:18.24
Linuxだと完璧な精度で利用できるって事
223デフォルトの名無しさん:2011/06/10(金) 13:29:27.24
「完璧な精度」という言葉に不安を覚えるなら、それは良い理系人間だ。
224219:2011/06/10(金) 13:37:27.82
書き込んで思ったが、日本語がグダグダだ・・・病んでるな
機械につぶされてくるわ orz

完璧ていうのが何を示すか知らないけど
完璧なんてありえないと思う
225デフォルトの名無しさん:2011/06/10(金) 13:42:50.53
UTF-8のByte配列があるのですが、テストのためにそれをUTF-16に変換せずにそのまま
String変数にキャストしたいのですが、可能ですか?
226デフォルトの名無しさん:2011/06/10(金) 14:02:08.25
つ System.Text.Encoding.UTF8.GetString(バイト配列)
こんな感じでいかがざんしょ?
227デフォルトの名無しさん:2011/06/10(金) 14:07:14.98
ありがとうです。でもそれって、
System.Text.Encoding.UTF8.GetString(バイト配列)
UTF8のバイト配列をUTF16のStringに変換してしまいませんか?
228デフォルトの名無しさん:2011/06/10(金) 14:17:59.31
ま、シビアな精度が要るならデバイス側が能動的に動いてWin側はそれをモニターしたりコマンド送るべきだよな
229デフォルトの名無しさん:2011/06/10(金) 14:18:33.01
たとえば"日本語"という文字列ですが、
UTF-8だとe6-97-a5-e6-9c-ac-e8-aa-9e
UTF-16だと65-e5-67-2c-8a-9e
になりますが、
"e6-97-a5-e6-9c-ac-e8-aa-9e"のバイト配列を作成してSystem.Text.Encoding.UTF8.GetString(バイト配列)すると
UTF-16のStringになってしまいます。
230デフォルトの名無しさん:2011/06/10(金) 14:41:09.02
Windowsじゃ15msの誤差があると考えていいのですか?
例えば、CubaseとかSonorなんかのシーケンサーで使われているタイマーなども誤差があるという事ですか?
231デフォルトの名無しさん:2011/06/10(金) 15:05:50.82
>>229
そもそもstring型はutf16で文字列を表現する型なので当たり前です
utf8のstring型なんてものは存在しないのです
utf8のバイト配列なら存在しますけどね
232デフォルトの名無しさん:2011/06/10(金) 15:14:51.87
>>230
QueryPerformanceCounter かなんかで取得しないとわからないんじゃないでしょうか?
OSに依存してるはずなんでXPや7などで違う値になるんでは?

自分はリアルタイムOSでない以上 おおよそ というのが正しいのかもしれないと考えています
233デフォルトの名無しさん:2011/06/10(金) 15:15:56.72
まあUTF8.GetStringなんてメソッドだと勘違いするかもしれん
234デフォルトの名無しさん:2011/06/10(金) 15:22:59.67
Vista sp2 32bit celeron 1.5hkz

Stopwatch sw = new Stopwatch();
for (int i = 0; i < 10; i++)
{
sw.Start();
Thread.Sleep(1);
sw.Stop();
Console.WriteLine(sw.Elapsed);
}
Console.ReadKey();

結果
00:00:00.0003884
00:00:00.0008684
00:00:00.0017886
00:00:00.0028383
00:00:00.0040507
00:00:00.0045341
00:00:00.0054776
00:00:00.0064427
00:00:00.0092481
00:00:00.0093115

精度悪すぎwwwwwww
235デフォルトの名無しさん:2011/06/10(金) 15:27:55.05
Cubaseというのは知らないのでググったけど、要するにオーディオ再生?
Windows上で特別なハードウエア無しにリアルタイムで実行される保証は無いよ。
カーネルモードドライバでさえ、何時でも割り込まれる。

オーディオ再生の様な用途の場合、普通はオーディオレンダリングモジュールに数百ms程度のオーディオバッファがある。
そこのバッファが枯れないようにデータを突っ込んでやるだけ。
だから正確に指定された時刻で動作できなくてもほとんど問題無いよ。

「Windowsの時計は15ms誤差がある」というのは正確ではない。
「Windowsは正確に指定した時間に実行してもらう保証、メカニズムが無い」というのが正しい。
例えばあなたのオーディオデータ生成処理が10ms遅れて呼び出されたとしても、単に10ms分のオーディオデータを余計に作成すればよいだけ。
このときに時計をみて10ms遅れてるなって分かるよ。なぜなら時計自体に15msもの誤差はないから。

単に呼び出されるのが遅れる、あるいは15ms程度で他の処理にCPUを奪われるかも知れないと言うだけであり、
時計自体はそれなりの物を使えば正確だよ。
236デフォルトの名無しさん:2011/06/10(金) 15:34:05.88
>>234

sw.Startの前に sw.Reset() いれてやってみた
Win7 SP1 C2Duo 2.1GHz
00:00:00.0007215
00:00:00.0001608
00:00:00.0005269
00:00:00.0006780
00:00:00.0004541
00:00:00.0005425
00:00:00.0005479
00:00:00.0005538
00:00:00.0002341
00:00:00.0006227

うぅん・・・
237デフォルトの名無しさん:2011/06/10(金) 15:44:24.18
byte[] utf8 = { 0xe6,0x97,0xa5, 0xe6,0x9c,0xac, 0xe8,0xaa,0x9e, 0xe3,0x81,0xa7}; // "日本語で"
string str = System.Text.Encoding.Unicode.GetString(utf8);
こうやるとバイト配列がそのままstrになるのでそれをODBCドライバに渡したんですが、
ODBCドライバで例外が発生して処理してくれませんでした。UTF-16として不正な内容だから?
そのまま処理してくれたらいいのに。。


238デフォルトの名無しさん:2011/06/10(金) 15:52:58.06
239デフォルトの名無しさん:2011/06/10(金) 15:54:15.66
>ODBCドライバで例外が発生して
・・・え?
240デフォルトの名無しさん:2011/06/10(金) 15:57:23.23
>>237
> ODBCドライバで例外が発生して処理してくれませんでした。UTF-16として不正な内容だから?

例外の詳細すら貼らずに何言ってるのお前
241デフォルトの名無しさん:2011/06/10(金) 15:57:39.46
>>236
確かに精度わるいね。
少なくとも1msはスリープしてくれそうだが160μsとかあるじゃん。
242デフォルトの名無しさん:2011/06/10(金) 16:01:52.63
>>238
C#超関係ねえー
別スレッド立てて現在時刻見ながらポーリングすりゃいいだけだろ
243デフォルトの名無しさん:2011/06/10(金) 16:11:04.53
プログラミング言語に依存しないようなモノの質問ってどういうところでしてもらうのが妥当なのかねー
244デフォルトの名無しさん:2011/06/10(金) 16:14:23.81
すいません。例外は
A first chance exception of type 'System.Data.Odbc.OdbcException' occurred in System.Data.dll
です。
245デフォルトの名無しさん:2011/06/10(金) 16:17:05.45
>>244
で、なぜこのエラーでその文字列が原因だと断言したの?
246デフォルトの名無しさん:2011/06/10(金) 16:18:01.99
>>243
以下のスレッドで誘導してもらえるかもしれない。

スレ立てるまでもない質問はここで 112匹目
http://hibari.2ch.net/test/read.cgi/tech/1306768580/l50
247デフォルトの名無しさん:2011/06/10(金) 16:19:23.85
OdbcExceptionってだけじゃODBCの例外としかわからんな。
248デフォルトの名無しさん:2011/06/10(金) 16:20:29.42
>>246
おぉ、ありがとう

俺が必要としていたワケじゃないんだけどねw
テンプレに加える…ようなことでもないのかなぁ。
249デフォルトの名無しさん:2011/06/10(金) 16:26:11.80
>>244
それはコンソールに出力されてる奴であって例外の内容じゃねーし
250デフォルトの名無しさん:2011/06/10(金) 16:31:25.97
とりあえず

どのDBに
どのODBCドライバで
どんな接続ー処理なのか
なんていうExceptionが発生したのか
そん時の例外メッセージ

位を書かないといけないと思う
エスパーいれば別だけど
251デフォルトの名無しさん:2011/06/10(金) 16:31:37.73
System.InvalidCastException はハンドルされませんでした。
Message=指定されたキャストは有効ではありません。
Source=Test
StackTrace:
場所 Test.Program.Main(String[] args) 場所 C:\Users\owner\AppData\Local\Temporary Projects\Test\Program.cs:行 13
場所 System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
場所 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
場所 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
場所 System.Threading.ThreadHelper.ThreadStart()
InnerException:

こういうのを貼れ
発生した時に例外の詳細をクリップボードに追加を選べばコピーできるはずだ
252デフォルトの名無しさん:2011/06/10(金) 16:31:56.24
>>242
ありがとうございます
すいません別スレッドを立てる所はどうやるのかわかりません
253デフォルトの名無しさん:2011/06/10(金) 16:33:04.83
>>251
ownerさんこんにちわこんにちわ
254251:2011/06/10(金) 16:33:58.20
しまったw
255デフォルトの名無しさん:2011/06/10(金) 16:35:17.03
>>251
オーナーさん
何親切なことやってんすかw

>>252
とりあえず初心者ならBackGroundWorker使ってみては?
256デフォルトの名無しさん:2011/06/10(金) 16:35:21.68
www
257デフォルトの名無しさん:2011/06/10(金) 16:37:21.74
>>252
スレッド新規作成ボタンでつくるんだよ。
エロ画像も忘れずにな。
258デフォルトの名無しさん:2011/06/10(金) 16:41:54.33
>>255>>257
ありがとうございます
ちょっとやってみます
259デフォルトの名無しさん:2011/06/10(金) 16:47:36.01
>>257
おい 本気にしたじゃねぇかwwwwww
掲示板のスレッドじゃなくてメトロノームのPG内部でのスレッドのことだろ?

メトロノームの動きと一緒にチチとか揺れるんならちょっとほしい・・・
260デフォルトの名無しさん:2011/06/10(金) 16:48:15.80
性欲というのは技術の発展にかかせないものだ
つまり>>259採用
261デフォルトの名無しさん:2011/06/10(金) 16:51:54.54
すいません、今実行環境が手元になくて例外の詳細が貼れません。
バイト配列の内容が原因だと考えた理由は、以下のb1で処理すると例外が発生しないのに、
b2でやると先のODBC例外が発生したからです。
byte[] b1 = { 0xe5,0x65, 0x2c,0x67, 0x9e,0x8a, 0x67,0x31 }; //UTF-16で「日本語で」
byte[] b2 = { 0xe6,0x97,0xa5, 0xe6,0x9c,0xac, 0xe8,0xaa,0x9e, 0xe3,0x81,0xa7}; // UTF-8で「日本語で」
string str = System.Text.Encoding.Unicode.GetString(b1);
262デフォルトの名無しさん:2011/06/10(金) 17:06:12.47
ODBCのエラーが発生しているんだとしたら

その場所で発生しているわけじゃ?
SQL実行時に出てるんだと考えて 
そのデータを入れる先のDBの型やDBBCパラメータの型とのマッチングもあるんじゃないかなと

263デフォルトの名無しさん:2011/06/10(金) 17:08:36.97
DBのクエリ投げてる時にパラメータをどのように指定しているのかの方が重要
そんなどうでもいい部分貼られても困るな
264デフォルトの名無しさん:2011/06/10(金) 18:16:18.06
>>238
俺11年前にメトロノームを作ってソースもUPしたよ。特許違反の仮処分で消されたけど。

タイミングはディスプレイのタイミングにシンクロ。累積誤差とか画面のフレームレートに合わせれば問題ない。
DirectXで描画したっけ。
ビットマップをぱちっと割り当てると自動で伸張してくれるから意外とシンプルにできたよ。
265デフォルトの名無しさん:2011/06/10(金) 18:54:24.64
>>238
メトロノームは作ると特許違反
266デフォルトの名無しさん:2011/06/10(金) 18:56:19.63
すいませんネトゲやってました
>>264
>>265
えええええええええええええええええ
じゃあどうしたらいいいですか?
267デフォルトの名無しさん:2011/06/10(金) 18:56:22.90
>>265
じゃあリズムに合わせておっぱいが揺れるのはOK?
268デフォルトの名無しさん:2011/06/10(金) 19:00:26.50
特許料を払えばOK
269デフォルトの名無しさん:2011/06/10(金) 19:09:30.57
ggってもそれらしい記事がないんだけどデマか?
270デフォルトの名無しさん:2011/06/10(金) 21:43:07.14
>>261
もう遅いけどStringクラスとEncodingの関係が全然わかってないな
271デフォルトの名無しさん:2011/06/10(金) 21:52:55.85
結局、C#っていうか.NETってどこで使われるの?
未だに、商用アプリケーションを.NETで作成してる会社なんて皆無みたいだし。

まぁ、LWなんて.NETで書かれたら、冗談じゃないが・・・
272デフォルトの名無しさん:2011/06/10(金) 21:58:02.03
>>271
顧客専用のアプリならあるんじゃないかな?
表にでないけど会社の中で使うアプリとか
273デフォルトの名無しさん:2011/06/10(金) 22:01:19.11
>>271
なにをいまさら

.NETはUIがすこぶる遅いからまず使われない
274デフォルトの名無しさん:2011/06/10(金) 22:05:04.00
お前らIntel製のCPUとかSSDとか使ってないの?
275デフォルトの名無しさん:2011/06/10(金) 22:11:14.88
UIが遅いかどうかなんて自宅警備員の仕事には関係ないでしょう?
276デフォルトの名無しさん:2011/06/10(金) 22:16:47.17
いまどきのPCで「C#じゃ遅い」なんて、何か壮大なゲームでも作ってんのか
277デフォルトの名無しさん:2011/06/10(金) 22:16:48.36
じゃあ社内システムとか何で作るの?
まあ最近はwebが多いけどさ
278デフォルトの名無しさん:2011/06/10(金) 22:22:10.33
webではASP.NETとかものすごい数の企業で採用されてるだろう。
最近じゃクラウドのクライアントとしてSilverlightとか
279デフォルトの名無しさん:2011/06/10(金) 22:23:53.34
>>277
主としてC,従としてアセンブラ

ですけど、なにか?
280デフォルトの名無しさん:2011/06/10(金) 22:31:13.33
男ならオペコード直打ちに決まってんやろ
281デフォルトの名無しさん:2011/06/10(金) 22:34:08.59
ガキだと求人や言語の需要動向なんか見ないからな
自分の小さな世界の知識だけで使われてないよねとか言っちゃう
282デフォルトの名無しさん:2011/06/10(金) 22:35:43.71
>>273
Unreal Development KitとかUnityとかBISHAMONとか意外とゲーム開発系に商用あるよ
Intel Graphics HDやRadeonのコンパネもそうだし
ttp://cache.gyazo.com/512777231e8f396c6f6c439b5caee45c.png
アップルのサイトでもASP.NETが使われてるんだってw
283デフォルトの名無しさん:2011/06/10(金) 22:39:43.61
>>242
すいませんポーリングって何ですか?
284デフォルトの名無しさん:2011/06/10(金) 22:42:28.03
>>271
今更.NET自体をdisられても反応に困るからWinFX系あたりで煽った方がいいよ
285デフォルトの名無しさん:2011/06/10(金) 22:45:01.88
>>283
ああすまん
ボーリングだった
さあググれ
286デフォルトの名無しさん:2011/06/10(金) 23:09:50.03
動画プレイヤーにある時間を表すバーはツールボックスの何て名前の奴ですか?
287デフォルトの名無しさん:2011/06/10(金) 23:10:48.62
チョコバー
欧米かっ
288デフォルトの名無しさん:2011/06/10(金) 23:13:21.83
トラックバー

だっけ?
289デフォルトの名無しさん:2011/06/10(金) 23:20:23.84
choco bar とtrack barで探してみましたがツールボックスにはありませんでした
C# バーで検索してもタイトルバーのほうがヒットしてしまいます
290デフォルトの名無しさん:2011/06/10(金) 23:27:51.66
wpfだとSliderね
291デフォルトの名無しさん:2011/06/10(金) 23:31:35.53
ttp://d.hatena.ne.jp/uyamae/20090716/1247734789
この記事見つけたんですけどここにはtrack barが書いてあるのに
僕のVC#2010Expressにはありません
無料版にはないのですが
292デフォルトの名無しさん:2011/06/10(金) 23:33:48.54
隠れてるだけとか
293デフォルトの名無しさん:2011/06/10(金) 23:35:26.85
あああああああああああすべてのWindowsフォームって所のマイナスボタンを押したら出てきました
ここにしか入ってないのですね
294デフォルトの名無しさん:2011/06/10(金) 23:57:52.97
public void Test(){
IntPtr abc;
}

public void NNN(){
ここでabcを使いたい
}

Testメソッドで作ったIntPtr abcをNNNメソッドでも使いたいのですが
クラスの頭にpublic IntPtr abc;と書いてNNNメソッドの中でthis.abcとやっても
System.IntPtrは型ですが変数のようにしようされてますとかいろいろエラーが出てしまいます。
どのようにしてNNNメソッドで使いまわすことが出来ますか?
295デフォルトの名無しさん:2011/06/11(土) 00:00:50.46
できません
296デフォルトの名無しさん:2011/06/11(土) 00:02:05.48
できないというのは
穴掘ろうがパソコンを叩き壊そうがあなたに3点のダメージを与えようが自殺しようが無理だということです
選択肢は諦める、諦める、諦めるの3つです
297デフォルトの名無しさん:2011/06/11(土) 00:02:52.84
諦めが付きません
何故出来ないのですか?
298デフォルトの名無しさん:2011/06/11(土) 00:03:46.59
public IntPtr Test(){
IntPtr abc;

return abc;
}

public void NNN( IntPtr abc){
}

使うとき

IntPtr n = Test();
NNN(n);
299デフォルトの名無しさん:2011/06/11(土) 00:04:22.88
スコープの概念から教えるのはさすがに嫌ズラ。
300デフォルトの名無しさん:2011/06/11(土) 00:07:05.74
いや普通にできるから。
できないのは自分で言ってる通りのコードになってないだけ。
301デフォルトの名無しさん:2011/06/11(土) 00:09:15.75
クラスのフィールドかプロパティにする。
(クラス、フィールド、プロパティについては検索しろ)

>>298みたいに返り値と引数を使う。
(返り値、引数については検索しろ)
302デフォルトの名無しさん:2011/06/11(土) 00:12:05.70
明日の朝まで粘ってみます
303デフォルトの名無しさん:2011/06/11(土) 01:03:10.98
最近プログラマーに向いてない質問者が多いな
304デフォルトの名無しさん:2011/06/11(土) 01:29:47.09
プログラマに剥いてない回答者も多いしな。
305デフォルトの名無しさん:2011/06/11(土) 01:44:32.86
剥けてないぐらいの年齢なんだろう。
306デフォルトの名無しさん:2011/06/11(土) 02:28:04.49
若いな。
307デフォルトの名無しさん:2011/06/11(土) 03:23:58.70
ビデオのリモコン操作出来てすごいって婆ちゃんに褒められた
次はF#ですよ〜
檻の中でもっと開き直って仲良くしようぜ
まあ農家の人から見ればF#作っても所詮電気の檻の中にしか見えないだろうけどw
308デフォルトの名無しさん:2011/06/11(土) 04:25:51.61
VS2010で#regionを緑で表示することってできますか?
309デフォルトの名無しさん:2011/06/11(土) 06:13:41.78
C#で作れる作物は多いですか?
310デフォルトの名無しさん:2011/06/11(土) 07:03:52.21
>>308
オプションで色は変えれるけども。
うち、英語版だけども、Environments の Fonts and Colors ってページで。

#region ってどれになるんだろ。
#region 自体はプリプロセスディレクティブ、
その後ろの文字列はたぶん、コメント
折りたたんだ時のテキストは、折りたたんだテキストみたいな項目なんだろうけど。
311デフォルトの名無しさん:2011/06/11(土) 08:59:58.76
>>309
米とか麦は作れないよ
作物に虫がついたりするから気をつけて
312デフォルトの名無しさん:2011/06/11(土) 09:45:16.83
>>311
すぅぃーかが甘くて美味しいな
313デフォルトの名無しさん:2011/06/11(土) 11:28:07.02
Button(開始用)を押すと
while (true) {
処理
}
をするのですが
もう一個のButton(停止用)を押して処理を中断させたいのですがボタンが押せなくて何も出来なくなってしまいます
どうやってButtonで停止させられますか?
314デフォルトの名無しさん:2011/06/11(土) 11:34:20.52
>>313
While以降を別スレッドで実行してください
315デフォルトの名無しさん:2011/06/11(土) 11:34:48.74
Buttonは停止できない、処理は停止できます。
316デフォルトの名無しさん:2011/06/11(土) 11:35:27.62
停止用のボタンが無いにしても同じスレッドでやるべき処理じゃねーな
317デフォルトの名無しさん:2011/06/11(土) 11:37:07.06
>>313
http://dobon.net/vb/dotnet/programing/displayprogress.html
ここを読めばできる
できないのは努力が足りない
できるまで努力せよ
318デフォルトの名無しさん:2011/06/11(土) 12:01:43.37
ありがとうございます
こうかいたら開始と停止もうまく出来ました。
一応ちゃんと動いたのですがこれで問題ないでしょうか?
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}

private void button2_Click(object sender, EventArgs e)
{
backgroundWorker1.WorkerSupportsCancellation = true;
backgroundWorker1.CancelAsync();
backgroundWorker1.Dispose();
}
319デフォルトの名無しさん:2011/06/11(土) 12:10:32.54
もう1回Button1押したらどうなるかな
320デフォルトの名無しさん:2011/06/11(土) 12:20:20.81
気づきませんでした
「BackgroundWorker は現在ビジー状態であるため、複数のタスクを同時に実行できません。」って出ます
スレッドがちゃんと閉じられてないってことでしょうか
右下のイベントプロパティでRunWorkerCompletedを追加してForm1.csで現れたRunWorkerCompletedのメソッドにメッセージボックスを書きましたが表示されなかったのでスレッドは終了されてないってことですね
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("スレッドの役割は終えました");

}
BackgroundWorker1.WorkerSupportsCancellation = trueをコードから消して右下のプロパティでtrueに設定してみましたが状況はかわりませんでした
とここまでレスを書いてもう一度粘ってみました
そしたら
if (bgWorker.CancellationPending)
{
//キャンセルされたとき
e.Cancel = true;
return;
}
って書いて解決しました
321デフォルトの名無しさん:2011/06/11(土) 12:22:08.93
backgroundWorker1.Dispose();は書く必要ありますか?
322デフォルトの名無しさん:2011/06/11(土) 12:29:16.27
Disposeは親のFormが呼ぶからこの場合は要らない
呼んでもいいけど

あとbutton1_Clickの方ではIsBusy==falseを確認してからRunWorkerAsyncを実行する
そうすれば「BackgroundWorker は現在ビジー状態であるため、複数のタスクを同時に実行できません。」は発生しない。

button2_Clickの方ではIsBusy==trueを確認してからCancelAsyncを実行する
WorkerSupportsCancellationはそこに書くよりデザイナのプロパティで設定しておけ
323デフォルトの名無しさん:2011/06/11(土) 13:01:33.92
ありがとうございます
自分のローカルのまとめwikiにメモしておきました
324デフォルトの名無しさん:2011/06/11(土) 17:14:19.19
ttp://hp.vector.co.jp/authors/VA041058/
のメトロノームでは理論上22.7ms未満の誤差があって、音の間隔の誤差はさらに小さいと書いてありました。
>絶対時間として誤差はあるが、等間隔である

これはどういう事なんでしょうか?
>>234先生と>>236先生のでだいたい10msぐらい遅れてるってことなのでC#で書くときは精度気にすることないですか?
325デフォルトの名無しさん:2011/06/11(土) 17:52:31.48
5分の曲があったとして、何秒ずれなきゃ納得するんだ?
326デフォルトの名無しさん:2011/06/11(土) 17:54:53.79
>>324
意味不明だねw
たぶん言ってる本人がよく分かってないんだろう。

まあ、あえて邪推すれば、個別のイベントの間隔の正確性は低いが
イベントの間隔の平均値(いいかえると時間当たりのイベントの回数)の
正確性は十分高いと言いたいのかもしれない。

きっとヒストグラムとると分散は大きいけど、平均値はきっちり目標値に一致するんだろう。
それは、そのはずだと思う。

全然そういう意味の日本語にはなってないけれどw
327デフォルトの名無しさん:2011/06/11(土) 17:59:51.39
BPM120で5分流したとするとの場合だと
120*5=600なので誤差が0.02msだったら
600*0.02=12秒
5分流して12秒か・・・・
5分で出来れば1秒以内に収めるのって厳しいですかね?
328デフォルトの名無しさん:2011/06/11(土) 18:01:43.84
うるせーから理論計算してねえで試せよ
329デフォルトの名無しさん:2011/06/11(土) 18:01:48.47
いやだから、そんな風に誤差は累積しないのですよ。
330デフォルトの名無しさん:2011/06/11(土) 18:07:59.16
C#でやるのが間違いだろ
こういうのはCで作るんだよ
考えてみれば分かるがC#で作られた優良DAWソフトなんてないだろう?
世間で登場する優良DAWソフトは皆Cで開発されてるからなのさ
C#なんてクソ言語で作るのが間違い
331デフォルトの名無しさん:2011/06/11(土) 18:12:38.15
トータル時間として誤差があり、だいたい等間隔
トータル時間として誤差が無く、だいたい不等間隔(誤差なんて感じられるほど無いが)
C#でやるなら二つの方法があるわけで、好きな方を選べばいいよ
332デフォルトの名無しさん:2011/06/11(土) 18:13:50.34
var s = TimeSpan.FromMilliseconds(1000 * 60 / 120);
var a = DateTime.Now + s;

while (true)
{
Thread.Sleep(1);

var b = DateTime.Now;

if(a < b){
Console.Beep();
Console.WriteLine(b.Ticks);

a += s;
}
}

これ5分回してみ
333デフォルトの名無しさん:2011/06/11(土) 18:22:55.39
>>327
タイマーイベントで処理して、またタイマーイベントで処理・・・
って繰り返せばそりゃ誤差は蓄積する。

正しいのはスレッドをつくって常に時計を監視させること。
その間Sleep(1)で1ms程度のウエイトでループさせる。
このループは1msを正確に寝るためにやるんじゃなくて、ビジーループにならないようにするためにやる。
じゃないとCPUが100%に張り付いてしまうからね。
そしてそのループで毎回時計をみる。
時間になってたらならす。そしてまたループの先頭にもどる。
これでよい。

参照すべき時計だが、>>234,236の実験にあるように確かに1ms以下の誤差がある
(どこから10msくらい遅れてるって話がでてくるんだ?)
この1msの誤差は上記の方法でやれば蓄積しない。
音を鳴らすタイミングが、本来のタイミングから1ms程度前後するだけ。
そして、人間には1ms以下の誤差なんかまったく分からない。

リンク先の話は、多分映像が30フレームなんだろう。その場合最大で33ms遅れるはず。
これの平均が22msなんじゃないのかな。
音声の場合はもっと1フレームが短い時間なので、よりズレが小さいという話だろう。
334デフォルトの名無しさん:2011/06/11(土) 18:41:45.37
>>332
横からすいませんが
634 434 142 622 756 619 - 634 434 142 617 756 619 = 4 999 936
4 999 936って4.999936秒って事?
335デフォルトの名無しさん:2011/06/11(土) 18:47:36.48
>>334
MSDNすら見ないとか
しかも横からすいませんとか
ナメてんのか手前
http://msdn.microsoft.com/ja-jp/library/system.datetime.ticks%28v=VS.100%29.aspx

Ticksは1000万分の1秒
10 000 000で1秒
すなわち
4 999 936なら0.49秒

BPM120は0.5秒だから0.1秒程度の誤差が出ていると言える
336デフォルトの名無しさん:2011/06/11(土) 18:49:06.79
メトロノームなら単純にデルタタイムで実用範囲と思うんだけど、
絶対時間監視してまで最小蓄積誤差を目指すのはプログラマーの意地?
シンクロナイザー作ってるなら理解できるけど。
337デフォルトの名無しさん:2011/06/11(土) 18:50:17.45
>>332
それだと余計誤差の幅大きくなってね?
338デフォルトの名無しさん:2011/06/11(土) 18:54:35.76
>>336
プログラミングが難しいならともかく、手法があるわけだし
不要な誤差を入れ込む必要が無いじゃないか
339デフォルトの名無しさん:2011/06/11(土) 18:55:46.26
そもそも難しくもなんともないし
340デフォルトの名無しさん:2011/06/11(土) 19:01:31.94
341デフォルトの名無しさん:2011/06/11(土) 19:12:29.31
C#ちゃんはファジーなんです
342デフォルトの名無しさん:2011/06/11(土) 19:20:53.55
マルチタスクOS上でシビアなことするなよ
マイコンで作るとかしろ
343デフォルトの名無しさん:2011/06/11(土) 19:22:58.55
それでも機械式メトロノームよりは正確じゃね?
俺はあのおもりを正確にあわせる自信は無いぞ
344デフォルトの名無しさん:2011/06/11(土) 19:41:31.60
マジレスすると、機械式の方が正確
ちょっと考えれば分かるだろうが
345デフォルトの名無しさん:2011/06/11(土) 19:50:23.21
数千円のクオーツ腕時計と
数百万円の手巻き腕時計
どっちが正確かって
ちょっと考えれば分かるだろうが
346デフォルトの名無しさん:2011/06/11(土) 20:18:21.19
機械式って結構狂うよ
347デフォルトの名無しさん:2011/06/11(土) 20:26:45.71
機械式はまず水平を出すのが難しい
348デフォルトの名無しさん:2011/06/11(土) 20:59:07.70
あぼんばっか
349デフォルトの名無しさん:2011/06/11(土) 23:06:02.47
350デフォルトの名無しさん:2011/06/12(日) 00:19:02.97
オブジェクト型のインスタンスobjについてobj.getType().IsArrayがtrueの時objを配列として扱いたく
object[] ary = (object[]) obj;
foreach (object o in ary) {
Console.WriteLine(o.ToString()); // などの処理
}
としたところobjがstring[]や自作クラス[]の場合はうまく動いたのですが
intなどのプリミティブ型の配列ではうまくいきませんでした。
>型 'System.Int32[]' のオブジェクトを型 'System.Object[]' にキャストできません。
以下の様に全てのプリミティブ型について分岐させるとうまくいったのですが、もっと良い方法はないでしょうか?
object[] ary;

if (obj.GetType().FullName == typeof(int[]).FullName) {
int[] tmp = (int[])obj;
ary = new object[tmp.Length];
for (int i = 0; i < tmp.Length; ) {
ary[i] = tmp[i];
}
} else if (obj.GetType().FullName == typeof(double[]).FullName) {
double[] tmp = (double[])obj;
ary = new object[tmp.Length];
for (int i = 0; i < tmp.Length; ) {
ary[i] = tmp[i];
}
} else {
ary = (object[])obj;
}
351デフォルトの名無しさん:2011/06/12(日) 00:26:33.26
初めてやるプログラミング言語としてC#は敷居が高いのでしょうか?
ほかのスレでC#をやるのはCやC++を学んでからやるべきと書かれてあった
のですが?
352デフォルトの名無しさん:2011/06/12(日) 00:26:48.62
列挙してToStringするだけなら配列じゃなくてIEnumerableかどうかのチェックして
IEnumerableとして扱うのでもよいのでは?
353デフォルトの名無しさん:2011/06/12(日) 00:26:49.19
>>345数百万の時計のほとんどはデザイナーの意匠代に掛かってるんだよね
354デフォルトの名無しさん:2011/06/12(日) 00:27:12.17
それはどういう理由でCやC++を学んでからと書いてあったんだ?
355デフォルトの名無しさん:2011/06/12(日) 00:27:41.39
C#って入門に最も適した言語の一つだと思うのだが
356デフォルトの名無しさん:2011/06/12(日) 00:30:41.56
必ずしも「洗練されているも」=「学びやすい」ではないとは思うけどね。
Cみたいな低水準を一度経由してからの方が回り道のようで結局近道のような気もする。

教育者じゃないんで気がするだけで確証はないが
357デフォルトの名無しさん:2011/06/12(日) 00:30:43.38
C#はワリと整った言語なので入門に適してないわけではない。
ただ、ステップの組み方で大ジャンプしたいタイプだと大変。
覚えることはたくさんあるからね。
358デフォルトの名無しさん:2011/06/12(日) 00:34:00.50
敷居の高さで言ったら明らかにC>>>C++>>>>>>C#だろうな。
CやC++をやった方が、C#が隠してくれている様々なソフトウエアの事情を飲み込めるってだけだろう。
359デフォルトの名無しさん:2011/06/12(日) 00:41:24.45
C#をやって実際に色々作れるようになるのがイイ。
細かい部分、より内部的な部分がどういう仕組みになっているかを知るにはCをやるのがいいが、
それゆえCをやると細かい部分を沢山覚えて見に染み込ませないといけない。
もちろんそれが知りたいのなら良いんだが、プログラミング初挑戦の人が
ちょっとやりたい事がある、とか小さなアプリケーションを作りたい、という気持ちで取り組むと
やりたい事とは遠く離れた関係にあるCの構造に囚われてしまって、やる気が無くなる。というケースを何人か見てきた。
360デフォルトの名無しさん:2011/06/12(日) 00:45:10.80
>>351
C#とC/C++は見た目似てるけど中身は結構違う。
C#からやって問題ない。
361デフォルトの名無しさん:2011/06/12(日) 00:48:26.22
いつも思うけど、ポインタ、というかコンピュータがメモリをどう扱うかを理解してない人が
参照型の意味をどう理解するのかは興味深いところではある
362デフォルトの名無しさん:2011/06/12(日) 00:51:43.97
いや参照型とポインタはまったく別だから
363デフォルトの名無しさん:2011/06/12(日) 00:55:39.02
何が「いや」なのか意味が分からない。
接続詞の正しい使い方を知らないのか、そもそも読解力がないのかその両方か
364デフォルトの名無しさん:2011/06/12(日) 01:00:22.05
これが揚げ足厨か
365デフォルトの名無しさん:2011/06/12(日) 01:01:52.05
まぁ反論できなくても言葉尻を叩くのは簡単だからな
366デフォルトの名無しさん:2011/06/12(日) 01:02:57.69
反論も何も、参照型=ポインタなんだからww
お前ほんとにC言語やったことあるのか?
367デフォルトの名無しさん:2011/06/12(日) 01:04:40.92
C#の参照型もC/C++のポインタも参照という仕組みではあるよね

ただ中の動きは違うかもしれない

そういう細かい話はこの際いいよ
368デフォルトの名無しさん:2011/06/12(日) 01:06:20.85
C#の参照型はCのポインタに構造原理的等価意味をもつ
これは国際公式言語機関でも規定されている*事実*です
369デフォルトの名無しさん:2011/06/12(日) 01:07:19.32
C/C++のポインタは値だよ
370デフォルトの名無しさん:2011/06/12(日) 01:08:47.36
じゃあ参照型をインクリメントすると、その型のサイズだけ後方のメモリをさすの?

と聞いてみるテスト
371デフォルトの名無しさん:2011/06/12(日) 01:09:31.09
ポインタが参照だとか言ってる素人に聞いても無駄
372デフォルトの名無しさん:2011/06/12(日) 01:10:50.98
ポインタはコンパイルされるとC#の参照型になるんだが…
お前はILを知らないのか?
373デフォルトの名無しさん:2011/06/12(日) 01:12:14.99
まあ、Cみたいな低水準言語が不要とは言わないけども、
そういうのは「副読本」的に見るべき。
メインをCにすると何もできん(Cの水準で簡単にできることしか覚えられない)。
374デフォルトの名無しさん:2011/06/12(日) 01:13:24.60
Cのポインタは記法が糞なのであって概念自体は大したことない。
どうしてもわからなければ「プログラムはなぜ動くのか」あたりの本読んどけば大丈夫。
375デフォルトの名無しさん:2011/06/12(日) 01:14:00.07
参照型とポインタは同等ということで決着がついたみたいだな
376デフォルトの名無しさん:2011/06/12(日) 01:14:15.31
参照は「safe pointer」だと思うべき。

ポインターの何がいけないって、数値としてそのまま扱うこと。
意味不明のアドレス値の先を書き換えれたり、
有効な領域を超えて加減算できたり。
377デフォルトの名無しさん:2011/06/12(日) 01:14:22.07
やたら比喩に噛み付くな
じゃあC#の参照を理解する(させる)際はどうやって説明してるだろうか
378デフォルトの名無しさん:2011/06/12(日) 01:15:16.15
困ったもんだね。
>>361(まあイコール俺だが)に仮に参照型はポインタだという含意があれば
>>362は少なくとも会話としては成立している。

が、>>361にそんな意味を読み取るとしたら、そいつの言語感覚は小学校からやり直したほうがいいレベル。

その意味で>>362はナンセンスだけど、それでもあえて話に乗っかるとしても、
参照型がポインタといえるかどうかは「ポインタ」というふり幅の大きい言葉を
どう解釈するか次第だろう。
379デフォルトの名無しさん:2011/06/12(日) 01:16:35.40
2chってたまにこういうエセ国語教師が出てくるよな
380デフォルトの名無しさん:2011/06/12(日) 01:17:26.71
>>378
小学校からやり直したほうがいいレベル。
381デフォルトの名無しさん:2011/06/12(日) 01:18:36.27
困ったもんだね。
>>361(まあイコール俺だが)に仮に参照型はポインタだという含意があれば
>>362は少なくとも会話としては成立している。

が、>>361にそんな意味を読み取るとしたら、そいつの言語感覚は小学校からやり直したほうがいいレベル。

その意味で>>362はナンセンスだけど、それでもあえて話に乗っかるとしても、
参照型がポインタといえるかどうかは「ポインタ」というふり幅の大きい言葉を
どう解釈するか次第だろう。
382デフォルトの名無しさん:2011/06/12(日) 01:20:07.00
長文w
383デフォルトの名無しさん:2011/06/12(日) 01:20:20.70
ポインタっつったらよー、*とか&使ってあれこれ操作するのも含まれてるだろ。
そんなの知らなくてもメモリの仕組み知ればC#の参照型は余裕で理解できるわけよ。
Cなんか学ばなくったってオッケーオッケー
384デフォルトの名無しさん:2011/06/12(日) 01:21:11.81
参照型をインクリメント!!!!!!!
385デフォルトの名無しさん:2011/06/12(日) 01:23:53.67
LINQいいよね〜
386264:2011/06/12(日) 01:39:21.34
>>343
刻みがあるからこつんと止まる


画面のリフレッシュレートはハードウェアが画面を書き換えるタイミングで割り込みいれてくれるから絶対正確だよ。
少なくともパソコンではそれ以上に正確にやる方法はない。

ttp://www2.tky.3web.ne.jp/~yosshin/prog_memo/vsync/010815.html
> vsync API の問題
>  vsync はフルスクリーンモード時のみ可能
>  DirectX には vsync を取る API が提供されています。 例えば DirectDrawSurface の Flip メソッド等には、 vsync の有無を引数で指定可能です。 ただしこれはフルスクリーンモード時のみ有効です。
知らんかったわ。窓モードだからちゃんと拾ってなかったのか・・・

> もう一つの vsync 問題解決方法 「冲 可変」
> ここまでで挙げてきた手法は、 ゲームプログラム側で意図したレートで vsync を行うことを前提としていました。
> これとは逆に、モニタのリフレッシュレートは可変であるという前提に立って、 ゲームの中の時間進行自体を、 モニタのリフレッシュレートに合わせるという手法があります。
>
> ゲーム内の 1 フレーム分の時間は、 一般に冲(デルタ ティー)と言います。 前者の、 ゲーム内の 1 フレーム分の時間は一定とするスタイルを「冲 固定」、 可変とするスタイルを「冲 可変」、 と言います。
>
> 冲 = モニタのリフレッシュレートとする「冲 可変」スタイルを採用することで、 一連の問題は解決することになります。 ただし実装の難易度は上昇しますし、 関連する様々な問題が発生してしまうので、注意が必要です。


>>333
> そして、人間には1ms以下の誤差なんかまったく分からない。
いや分かるし。
テレビが29.97fps x 2(インターレース)なのは、それくらいは余裕で感じ取れるからですが、
人間は目よりも耳の方がタイミングがシビアなんですよ。

0.4ミリ秒の差で聞こえてくる方向を感じ取ったりするらしいですから。

ttp://www.geocities.co.jp/SiliconValley-Oakland/6575/co/96.html
387デフォルトの名無しさん:2011/06/12(日) 01:41:17.48
なにコイツきもい
388デフォルトの名無しさん:2011/06/12(日) 01:43:45.69
>>386
両方の耳から入ってくる音のズレは分かっても10回メトロノームが音頭をとる間隔が1ms違ったって分からないよ。
試しに10回のうち1回だけ1msわざと遅らせてみてその間隔の違いを言い当てることが出来れば納得してやる
389264:2011/06/12(日) 01:48:16.65
>>388
言い当てられるよ。できるから言ってんだろが。
390デフォルトの名無しさん:2011/06/12(日) 01:48:59.12
まじ?すげーな。
391デフォルトの名無しさん:2011/06/12(日) 01:51:43.93
言う事はでけぇよなぁw
実際にどっかでやって見せてほしいね
392264:2011/06/12(日) 01:53:20.88
>>388
言われてみればそうかもな。
感じ取れる人はよっぽどすごいだろう。


しかし、WAVデータの量はきっちり時間分存在するわけで、ズレた分だけどこかで埋め合わせしないといけないんだけど、どうする?

そう言えば音ズレが発生するのってちゃんと音はつながっているけどどういうことなのかと。
393デフォルトの名無しさん:2011/06/12(日) 01:55:34.38
>>392
ポインタは参照型なんですか?
394デフォルトの名無しさん:2011/06/12(日) 01:56:16.68
>>386
なんかいろいろ痛い人みたいだけど、それは人の脳の低水準の部分が位相差(位相って分かる?)を
検出しているのであって、必ずしも時間差を検出しているのではないし、
まして人が意識的にそれを感じられるということでもない。
395デフォルトの名無しさん:2011/06/12(日) 02:14:00.76
言わなくても分かると思うけど>>389は偽者だから。

あと、意識の加速を使えばよゆーで知覚可能。
ttp://www.google.co.jp/search?hl=ja&q=%22%E6%84%8F%E8%AD%98%E3%81%AE%E5%8A%A0%E9%80%9F%22+site%3A2ch.net

でも、意識の加速って使ってる本人はどんな時間の中にいるかを感じ取ることは出来ないんだよね。
だから、音がどれだけずれたかなんて分からない。
少なくとも時間が分かるような物がないと。
仮に映像がついていたとしても、音速が秒速340メートルとかなり遅いけど
よっぽど離れてない限りズレというものを感じないわけで、
自動的に映像にシンクロするようになっているんだよね。多分。

映像処理の遅れがちょうどいいタイミングになってるだけかも知れんが。
396デフォルトの名無しさん:2011/06/12(日) 02:17:32.43
キモイwww
397デフォルトの名無しさん:2011/06/12(日) 02:18:27.57
398デフォルトの名無しさん:2011/06/12(日) 02:27:51.63
メトロノームさんちわーっすw
399デフォルトの名無しさん:2011/06/12(日) 02:30:35.83
あ、常に時計を見る方法は気をつけたほうがいいよ。
Windowsは定期的に時計を修正するから。
RTCに合うように調整する。
400デフォルトの名無しさん:2011/06/12(日) 02:31:48.76
こだわりのある人って素敵だと思います。
401デフォルトの名無しさん:2011/06/12(日) 03:05:04.74
せやな
402デフォルトの名無しさん:2011/06/12(日) 03:12:03.60
地下鉄営団メトロ濃霧
403デフォルトの名無しさん:2011/06/12(日) 04:07:40.43
visualstudioで新規プロジェクトつくるときにコードの最初にusing〜ってのが並んでるけど
新規プロジェクトのデフォルトの設定としてあれに足したり引いたりすることってできる?
404デフォルトの名無しさん:2011/06/12(日) 04:10:52.58
できるよ
405デフォルトの名無しさん:2011/06/12(日) 04:11:44.06
どっちかのスレで以前みたな
テンプレート作るんだっけ?
406デフォルトの名無しさん:2011/06/12(日) 04:35:56.68
テンプレートのエクスポートできた
ありがとね
407デフォルトの名無しさん:2011/06/12(日) 08:12:36.49
>>350
値型の配列をobject[]にする場合にはboxingする必要があるから、
配列の要素を1つずつコピーするのは避けられない。
せめてGenericやLinqを使ってスマートに書こう。
using System;
using System.Linq;
class Program {
 static void Main() {
  object [] oar0 = new string[] { "a","b","c","d","e","f","g" }; // 参照型はそのまま代入可能
  object [] oar1 = MakeBoxingArray(new int[] { 1,3,2,4,3,5,6 }); // 値型
  object [] oar2 = MakeBoxingArray(new double[] { 1.2,3.1,2.2,4.8,3.0,5.3,6.2 }); // 値型
  
 }
 static object [] MakeBoxingArray<T>(T [] ar) where T : struct {
  return ar.Cast<object>().ToArray();
 }
}
目的が分からないから的確なアドバイスはできないが、
Genericを使えばobectの配列にする必要自体がなくなるような気がする。
408 忍法帖【Lv=8,xxxP】 :2011/06/12(日) 08:18:35.65
定数ってどのように記述するんでしょうか
409デフォルトの名無しさん:2011/06/12(日) 08:23:31.59
const
410デフォルトの名無しさん:2011/06/12(日) 08:43:39.30
stringが参照型であることはぐぐれば分かる事実だが
さりとてstringをポインタとは言わないんじゃないかね
411デフォルトの名無しさん:2011/06/12(日) 09:02:21.03
そういう指摘をすると国語の話にすり替えられるぞw
412デフォルトの名無しさん:2011/06/12(日) 09:04:58.30
例外さんの相手なんかすんなよ
ばかかおめーら
413デフォルトの名無しさん:2011/06/12(日) 09:13:01.56
例外、Nullable、統計的結果、100倍、ClickOnce

825 名前:デフォルトの名無しさん[sage] 投稿日:2011/01/10(月) 12:49:11
>>823
どこにインストールするかは本質的な問題じゃなくて、
OSは「問題の有無を判断すべき(できる)ユーザ」にだけ判断をさせる思想で
作ってあるのに、それと矛盾することをやっていいのかよって話。

829 名前:デフォルトの名無しさん[sage] 投稿日:2011/01/10(月) 13:05:57
>>825
OSはユーザーの権限内であれば何やってもいいように作ってあるだろ
頭おかしいの?

832 名前:デフォルトの名無しさん[sage] 投稿日:2011/01/10(月) 13:19:10
>>829
判断力のないユーザーがインストールしたソフトが、そのユーザーが権限もってる
ディスクのデータを全て破壊する物だとしてもか。

834 名前:デフォルトの名無しさん[sage] 投稿日:2011/01/10(月) 13:20:55
>>832
そんなのバッチだって作れるだろ
414デフォルトの名無しさん:2011/06/12(日) 09:20:29.84
ワラタ
415デフォルトの名無しさん:2011/06/12(日) 09:23:55.27
そんだけスレ住人の新陳代謝が激しいってこった
416デフォルトの名無しさん:2011/06/12(日) 09:26:41.86
メトロノームさんw
417デフォルトの名無しさん:2011/06/12(日) 09:29:06.51
メトロノームじゃなくてポインタ云々の人のことだと思うよ。
418デフォルトの名無しさん:2011/06/12(日) 09:29:31.58
>>393
c言語ではポインタはポインタ型です
419デフォルトの名無しさん:2011/06/12(日) 10:04:17.84
俺も参照型=ポインタだと思っていた時期があった。
つまりそういうことだ。
420デフォルトの名無しさん:2011/06/12(日) 10:14:04.87
>>388
DTM板で質問してこいよ
違いが分かるやつ挙手ってな
421デフォルトの名無しさん:2011/06/12(日) 10:15:37.71
このスレ的には何が一番精度をよく繰り返し処理を行える方法が書けるの?
422デフォルトの名無しさん:2011/06/12(日) 10:15:59.49
P/Invoke使ってるわけでもないのにC#でポインタを気にするのは愚の骨頂
概念と実装の区別がついていないと言える
423デフォルトの名無しさん:2011/06/12(日) 10:38:45.64
メトロノームさんも参照型さんもどっちも糞だわ
424デフォルトの名無しさん:2011/06/12(日) 10:40:52.47
.net4.0でIntPtrとintの加減算ができるようになって微妙に便利。微妙にだけど
425デフォルトの名無しさん:2011/06/12(日) 10:42:50.23
やたら括弧が多いのと、「ナンセンス」って単語が好きなんだよね。
426デフォルトの名無しさん:2011/06/12(日) 10:58:07.41
なんかここの住人て、未だにXpがメインて人が多そうw
427デフォルトの名無しさん:2011/06/12(日) 11:13:23.28
>>342
マイコンについて詳しく教えてください
428デフォルトの名無しさん:2011/06/12(日) 11:14:22.84
Arduinoでググれ
あっという間にマスターできる。
429デフォルトの名無しさん:2011/06/12(日) 11:14:53.91
こんにちはマイコン
430デフォルトの名無しさん:2011/06/12(日) 11:22:34.47
Arduinoを買えばメトロノームで精度を完璧にできるのでしょうか?
431デフォルトの名無しさん:2011/06/12(日) 11:25:17.43
その完璧という精度の許容範囲は?
432デフォルトの名無しさん:2011/06/12(日) 11:26:12.03
>>426
うーん、面白くないかな^^;
もうちょっと頑張りましょう^^;
433デフォルトの名無しさん:2011/06/12(日) 11:34:04.26
http://soudan1.biglobe.ne.jp/qa3351425.html読んだら精度を出すのが難しいことが分かりました
17分に1カウントずれるていどに抑えられればいいのですがマイコンなら解決できますか?
434デフォルトの名無しさん:2011/06/12(日) 11:35:09.29
マイコンなら完璧だよ
435デフォルトの名無しさん:2011/06/12(日) 11:36:04.10
>>430
完璧がどの程度の精度かにもよると思んだけど。。。
メトロノームみたいな単純だけど精度を求めるものなら、プログラムならマルチスレッドよりシングルスレッドの方がスレッドのスイッチングが無い分、精度が高く作れる
cpu資源を他のプログラムに使われたく無かったら、そもそもシングルタスクOSとか、組み込みの世界になっちゃうし、厳密に言えば少しのズレも無いメトロノームは理論上作れない

その用途において必要十分な精度で作れるか。を基準に考えては?
436デフォルトの名無しさん:2011/06/12(日) 11:37:41.09
437デフォルトの名無しさん:2011/06/12(日) 11:38:27.80
もはやモノを買うべきだと思う
無駄な努力の部類
438デフォルトの名無しさん:2011/06/12(日) 11:38:30.23
メトロノームの説明書に精度の誤差が±で書かれているのはそういうことだったんですね
439デフォルトの名無しさん:2011/06/12(日) 11:47:14.84
人の話をきかない、聞く気が無い、という事はわかった
440デフォルトの名無しさん:2011/06/12(日) 11:47:56.20
>>438
そうです
精度は数字の上では単純ですが、リアルに精度を求めると、電子の動きさえもコストとして重くのし掛かって来ます
441デフォルトの名無しさん:2011/06/12(日) 11:49:29.13
企業が誤差を認めてるんだから作れるわけないか
完璧なものなんて作れないって事ですね
もう妥協します
442デフォルトの名無しさん:2011/06/12(日) 11:51:02.53
完璧な文章などといったものは存在しない。完璧な絶望が存在しないようにね。
443デフォルトの名無しさん:2011/06/12(日) 11:51:05.70
>>430
マイコンを使おうが完璧には作れないのでデマ回答を鵜呑みにしないでね
444デフォルトの名無しさん:2011/06/12(日) 12:01:13.66
作れないというのは暴言だな
セシウム133原子の2つの超微細準位間の遷移に対応する放射を周期数9192631770回カウントする装置を作れば一秒が正確に求められるし
正確にそのカウントを分解すればテンポが得られる
たかが下手くその楽器あそびにそこまで金を出したければの話だがな
445デフォルトの名無しさん:2011/06/12(日) 12:06:40.54
つまんね
446デフォルトの名無しさん:2011/06/12(日) 12:07:02.67
>>444
それすらも精度が高いだけで、厳密に言えば正確じゃないし、読み取るセンサーの時間からも誤差生まれるし
447デフォルトの名無しさん:2011/06/12(日) 12:26:41.27
これが本当のナンセンスだぜ
覚えとけよ
448デフォルトの名無しさん:2011/06/12(日) 12:34:51.28
ttp://www.nikkei-science.com/beyond-discovery/gps/07.html
今日,多くの原子時計はセシウムではなく,光で励起したルビジウム原子を使っている。
ルビジウム時計はセシウム時計よりもかなり低価格で小型だが,正確さは劣る。

原子時計のもう1つの種類は,水素メーザーとして知られている。
タウンズが開発した最初のメーザーはアンモニアを使っていたが,
ハーバード大学のラムゼーらは1960年に水素を使い,超高精度の原子時計として働くメーザーを開発した。

1967年までに原子時計の研究は非常に実りある成果をあげ,
時間の単位である「秒」がセシウム原子の振動に基づいて定義し直されることになった。
今日の一般的な原子時計は10万年に1秒の狂いが出る程度の高精度だ。
米国の時間標準は米国立標準技術研究所で最近稼働を始めた原子時計「NIST-7」で,
その推定精度は300万年に1秒の狂いしかないほどだ。

ttp://www.phileweb.com/news/audio/200301/28/3612.html
ただしセシウム原子時計は高価で、購入するには1,000万円以上が必要となる。

本機はコンシューマー向けモデルとして、低価格でセシウム原子時計に近い精度を実現した。
その秘密は、最近増えてきている電波時計用の電波を使用することにある。
日本では、福島と吸収から40kHzと60kHzの搬送波が発信されているが、
本機はこの電波を常に受信してクロック源にするのだ。
CRV−555  メーカー標準価格  ¥85,000(税別)
ABS−7777 メーカー標準価格 ¥250,000(税別)

なんだ電波時計で正確なクロック出るんじゃん。

自作もできるらしいが・・
ttp://www.h2.dion.ne.jp/~hayakawa/dempa.html
でも電波は不安定だからね。ノイズで拾えないことがあるから、電波をそのままクロックにすることは出来ないだろ。
どこかでひずみが出る。それなら水晶発振子の方がマシ。温度と電圧さえ一定にすれば安定する。
あとはどうやってプログラムを呼び出すかだ。普通にハードウェア割り込みだろうけど、レガシーハードウェアだと優先度低いから、
やっぱりVGAのV/H syncを発生させるのが一番正確で汎用的だ。
449デフォルトの名無しさん:2011/06/12(日) 12:40:58.92
アホ過ぎw
450デフォルトの名無しさん:2011/06/12(日) 12:48:15.31
syncが正確という根拠がよくわからん
正確さが保障されてんの?
451デフォルトの名無しさん:2011/06/12(日) 12:57:30.41
幻想だよね
仕様上そういうことになっているというだけ
実装上はどうだかわからない
452デフォルトの名無しさん:2011/06/12(日) 13:11:45.86
”吸収”はともかく、福島の電波は復活したの?
やめてくださいしんでしまいますってくらい災難にあってたが
453デフォルトの名無しさん:2011/06/12(日) 13:21:33.51
ハードウェア割り込みは正確さが保障されてますよ。
だってリアルタイムOSを動かさないといけないんだから。

ハードウェア割り込みは使える個数が決まっていたり、
割り込み使う場合は何ミリ秒以内に制御を戻さないといけないとか決められているでしょ。

でもその正確さがどの程度の精度なのかというと、それは水晶時計以上にはならないですが。


いい情報みっけた。
ttp://www.mnc.co.jp/INtime/user/intimedev.php?%A5%EA%A5%A2%A5%EB%A5%BF%A5%A4%A5%E0%C0%AD%C7%BD%A4%CE%A4%BF%A4%E1%A4%CE%A5%C1%A5%E5%A1%BC%A5%CB%A5%F3%A5%B0

ハードウェア割り込み信号発生から、INtimeアプリケーションの割り込みハンドラが開始されるまでの所要時間を測定した結果を掲載します。
ttp://www.mnc.co.jp/INtime/user/intimedev.php?latency
Core2Duo 2.1GHz
 ・最小0.83μ秒
 ・平均1.25μ秒
 ・最大遅延は1.66μ秒

Pentium4 3.0GHz
 ・最小3.9μ秒
 ・平均4.7μ秒
 ・最大遅延8.3μ秒

周波数が高ければいいってもんじゃないわけですね。
とくにPen4はマイクロコード変換オーバーヘッドがあるから遅れるしばらつきも出る。
いや、シングルコアだからカーネルが動いてるのかな?
ここまでくるとプログラムの命令数やらガベージコレクションやらの時間まで考慮しないといけないね。
454デフォルトの名無しさん:2011/06/12(日) 13:23:57.92
答えになってませんね
455デフォルトの名無しさん:2011/06/12(日) 13:27:37.48
>>452
復活してるよ
1回復活してから落雷で死んだけどまた復活した
456デフォルトの名無しさん:2011/06/12(日) 13:27:59.81
たすけてください
usingは
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;

コードは
IEnumerable<string> files = Directory.EnumerateFiles("C:\\folder","*.txt");
for (int i = 0; i < files.Length; i++){
MessageBox.Show(files[i]);
}

エラー 1
'System.Collections.Generic.IEnumerable<string>' に 'Length' の定義が含まれておらず、
型 'System.Collections.Generic.IEnumerable<string>' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。
using ディレクティブまたはアセンブリ参照が不足しています。

エラー 2
角かっこ [] 付きインデックスを
'System.Collections.Generic.IEnumerable<string>' 型の式に適用することはできません。

ってエラーが出ますたすけてください
457デフォルトの名無しさん:2011/06/12(日) 13:28:15.70
こいつも病気っぽいからほっとけ
幸いメトロノームは妥協する方針で終わったんだから
458デフォルトの名無しさん:2011/06/12(日) 13:29:48.27
>>456
配列でファイル一覧が欲しい時はDirectory.GetFilesを使うんだよ

Directory.EnumerateFilesで取得した時はforではなくforeachを使おう
459デフォルトの名無しさん:2011/06/12(日) 13:35:41.40
foreachでエラーがなくなりました
ありがとうございます
この機会にお伺いしたいのですが
string[] files = System.IO.Directory.GetFiles("C:\\folder", "*.txt", System.IO.SearchOption.TopDirectoryOnly);

IEnumerable<string> files = Directory.EnumerateFiles("C:\\folder","*.txt");
ってどっちが早いですか?
460デフォルトの名無しさん:2011/06/12(日) 13:37:30.46
自分で測れば?
461デフォルトの名無しさん:2011/06/12(日) 13:39:20.33
>>459
string[] files = System.IO.Directory.GetFiles("C:\\folder", "*.txt");



string[] files = Directory.EnumerateFiles("C:\\folder","*.txt").ToArray();

だと思っとけ
462デフォルトの名無しさん:2011/06/12(日) 13:39:30.47
「そのコードだけなら下だが、列挙時には下の方が時間がかかる」って感じだと予想
463デフォルトの名無しさん:2011/06/12(日) 13:59:02.94
>>454
どれが何の質問の答えになっていないと主張しているのかよく分かりませんね。


Windowsアプリの時間の精度が落ちるのは、最終的にはWindowsのタスクの振り分けが原因ですからね。
リアルタイムOSでない以上、精度が確保できるイベントはハードウェア割り込みだけです。

>>453の実測値はその精度の目安です。

割り込みについてはここで詳しく解説してある。
ttp://www.mars.dti.ne.jp/~otk/bak/200012-linuxkernel24.pdf


結局、普通のアプリで出来るだけ精度をよくするには、プロセスの優先度を上げるしかないわけですが、
.netアプリは当然、.net Framework以上になることはできません。
464デフォルトの名無しさん:2011/06/12(日) 14:23:12.80
まあ、内蔵時計もハードウエア割り込みだけどな
465デフォルトの名無しさん:2011/06/12(日) 14:25:33.37
6コア付いてるCPUがあれば2コアを時刻を見るために使わせて1コアでメイン処理をしたら最強
466デフォルトの名無しさん:2011/06/12(日) 14:29:11.35
http://dobon.net/vb/dotnet/form/folderdialog.html#section2
を実行したときボタンの部分にフォーカスがあるのでtab+shiftを押してツリーにフォーカスを当てるのが面倒くさいです
実行したときにツリーの部分にフォーカスを当てたいのですが方法ございませんか?
467デフォルトの名無しさん:2011/06/12(日) 14:46:12.94
>>463
いつからユーザーアプリがHW割り込みなんか拾えるようになったんだ?
それともまだDOSの時代の延長だと思ってる人?

>>466
Application.EnterThreadModalイベントでどうにかすれば何とかなるはず。
468デフォルトの名無しさん:2011/06/12(日) 14:54:41.75
AtomのCPUコアを省電力機能なしでぶん回して
現在何クロック目の命令なのか、0秒0番目からの通し番号で分かったらいいんじゃないかな。
1秒ごとに0から振りなおすとして、
32ビットあれば4GHzまで、つまり1ナノ秒以下まで正確に時間を測定できるようになってはかどるぞ。

でもそれってGetTimeの実行と何が違うのかと言う話にならなくもないか。
やっぱそのタイミングで関数を呼び出してくれないとな。
でもキャッシュメモリに入ってないと遅れるから・・・


いや待て、Windowsはクロック周波数を元にしてシステム時間を作り出してるんじゃなかったっけ。
だからRTCとのズレが生じるので修正が入る仕組みだったはず。

Widnowsのシステム時間を使うと当然ずれてくる。
しかしRTCタイマーを使うvsync割り込みはCPUのズレとは無縁だからやっぱり正確だろう。

OS自作部屋
ttp://kozos.jp/kozos/kozos34.html
> ということで結論としては,厳密なリアルタイム性が必要なタイマは,ハードウエアが持っているRTCをそのまま使うしかない.

ttp://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF
現在のOSは起動時にリアルタイムクロックを読み取って、CPUの高精度タイマーの精度を校正し、以後リアルタイムクロックから時刻を読み出すのではなく、高精度タイマーのカウンタ値によって時刻を保持している。
これはRTCの時刻精度がおよそミリ秒が限度なのに対して、高精度タイマーはナノ秒からピコ秒の精度をもっており、より正確な時刻管理が出来るためである。


時刻が知りたければCPUから、トリガーを使いたければRTCからってのが一番みたいだ。
469デフォルトの名無しさん:2011/06/12(日) 14:59:42.92
だから、OS上のアプリの上にいつからISRを書けるようになったんだ。
寝言は寝て言えよまったく
470デフォルトの名無しさん:2011/06/12(日) 15:24:16.41
>>467
> いつからユーザーアプリがHW割り込みなんか拾えるようになったんだ?

DirectX ライブラリ
ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_other.html#R6N2
宣言 int WaitVSync( int SyncNum ) ;
概略 CRTの垂直同期信号を指定回数待つ


おまけ
ttp://pc.watch.impress.co.jp/docs/news/event/20110606_450943.html
LucidLogixがVirtuの新技術「Virtu Universal」をアナウンス

一方でフレームレートのリミットがディスプレイのV-Sync(60Hz=60fps)で頭打ちになる。
また、表示の更新間隔が遅くなることによりマウスやキーボードのレスポンスが悪くなったように感じることにもなる。
例えば60Hzであればレスポンスは16.6msということになる。

Virtu Vsyncは、ティアリングを発生させず、かつフレームレートのヘッドルームも取り払うというテクノロジーだ。

 その仕組みは、簡単にいえば、内蔵GPUがディスプレイ処理を担当、外付けGPUがレンダリングを担当することで実現する。
471デフォルトの名無しさん:2011/06/12(日) 15:26:31.83
あえて無視してるんだろうけど
vsyncがRTC他のクロック発生源よりも正確だという根拠は無いわけか
472デフォルトの名無しさん:2011/06/12(日) 15:35:27.65
まだやってたのか。お前ら暇なんだな。
473デフォルトの名無しさん:2011/06/12(日) 15:36:50.65
>>470
それは割り込みを拾ってるんじゃないでしょ。
ISRはあくまで特権レベルで走ってるOSの内部にあって、そこから間接的に
通知してもらってるだけ。

だから本当にイベントが発生してからそれがユーザーアプリに通知されるまでの
レイテンシはまったく当てにならない。

>>326にあるように、個々のインターバルの分散は大きくても平均値は正確に真値に
収束する、という意味では正確ではあるが。
474デフォルトの名無しさん:2011/06/12(日) 15:50:11.74
>>473
まあVsyncを使うアプリ、ドライバなど殆ど無いから、処理がスカスカで他より正確だとは思うよ
475デフォルトの名無しさん:2011/06/12(日) 15:52:23.76
> まあVsyncを使うアプリ、ドライバなど殆ど無いから
それは無関係。(>>183)
476デフォルトの名無しさん:2011/06/12(日) 15:53:00.62
思ったけど完璧な精度ってないよな
BPMが60やら120やら180などなら割り切れるが
90とか155とか割り切れないもんな
60 / 155 = 0.387096774
477デフォルトの名無しさん:2011/06/12(日) 15:57:42.49
>>471
いや、俺AV視点だから。システムタイムとRTCをごっちゃにするとずれていくだろ。

映像ソースがモニタの周波数に合うことなんてまずないから、vsyncを使うとしても普通にタイマーは使わないといけないだろう。
でもタイマーは精度が低い。
そのズレが1フレームのズレを生む

> 例えば60Hzであればレスポンスは16.6msということになる。

それが日付と時刻のプロパティ画面の秒針みたいな揺らぎにつながるんじゃないかと。


>>473
あなたは何を期待してんの?あなたが書くプログラムはクロック数まで正確に実行できるわけ?
呼ばれるタイミングが完璧に等間隔になったら、あなたのプログラムは完璧に等間隔で完了できるの?
478デフォルトの名無しさん:2011/06/12(日) 16:02:01.11
>>477
いやむしろ、君以外の人のほとんどが君が何を期待してるのかよーわからんと
思っていると思うんだけど....

長々と何を書いてるの本当。

俺は君が正確だと思い込んでいるものを、そうではないよと言ってるだけ。
479デフォルトの名無しさん:2011/06/12(日) 16:05:55.73
発端はメトロノームじゃなかったっけ
5分動かしてズレなきゃいいんだよ
それをAV視点だとかわけのわからん事をほざいたり、なんなの?
480デフォルトの名無しさん:2011/06/12(日) 16:12:46.01
違うよ17分に1カウントずれればいい程度
>>433
481デフォルトの名無しさん:2011/06/12(日) 16:15:06.98
世の中の時間の流れを自作メトロノームに合わせればいいんだよ
482デフォルトの名無しさん:2011/06/12(日) 16:15:42.93
BPM120なら0.5秒
アホな書き方しなければそんな蓄積するわけがない
483デフォルトの名無しさん:2011/06/12(日) 16:17:56.47
卓上の理論だけ言われても説得力ない
484デフォルトの名無しさん:2011/06/12(日) 16:18:05.24
元の質問者は、それでも納得いかなかったってだけだよ
485デフォルトの名無しさん:2011/06/12(日) 16:18:39.15
とりあえず、C#全く関係ない話なんで、そろそろよそへ行ってくれ
486デフォルトの名無しさん:2011/06/12(日) 16:19:34.04
とっくに話は終わってるわけだが
487デフォルトの名無しさん:2011/06/12(日) 16:24:06.97
ttp://www.gazo.cc/up/42503.jpg
フォームにsplitContainarを置いてdockをFillにします
panel1にlistboxを置いてdockをFillにします
そうしてデバッグしてプログラムを実行するとlistboxの下のほうにスペースが空いてしまいます
フォームデザインのほうではスペースが空いてなかったのに実行したやつだと空いてしまいます
解決する方法をご教示お願いします
488デフォルトの名無しさん:2011/06/12(日) 16:24:09.18
全員で「うぜーから他行ってくれ」って安価付け続けたらいなくなるよ
489デフォルトの名無しさん:2011/06/12(日) 16:28:32.29
>>488
うぜーから他行ってくれ
490デフォルトの名無しさん:2011/06/12(日) 16:29:04.37
CDの記録時間は74分だったが、なぜそうなったかと言うと、カラヤンがベートヴェンの第九が入るようにと言ったからとか。
Windowsの時計調整が入るようなものを使うと、再生中におかしくなる瞬間があるだろう。
AV関係は永続的じゃないと。
その上でずれがないほうがいい。

>>433
僕はワイヤレスのスピーカーに置き換えるといいと思うんだ。
音を出すのが一つの機械なら、ズレなんて発生しない。

Bluetooth対応スピーカーは1対1でしか通信しないっぽいけど

Googleがクソ重くて頭にくる

FMトランスミッターで飛ばしてFMラジオで受信すれば複数スピーカーになる。
491デフォルトの名無しさん:2011/06/12(日) 16:29:18.54
>>487
これはデザイナーの挙動の方がおかしいから解決ってのはない
492デフォルトの名無しさん:2011/06/12(日) 16:29:33.97
>>490
うぜーから他行ってくれ
493デフォルトの名無しさん:2011/06/12(日) 16:30:08.06
>>490
うぜーから他行ってくれ
494デフォルトの名無しさん:2011/06/12(日) 16:30:56.11
>>490
うぜーから他行ってくれ
495デフォルトの名無しさん:2011/06/12(日) 16:30:56.41
>>492
なかなか敏感だねえ。びっくりしたよ。
496デフォルトの名無しさん:2011/06/12(日) 16:31:14.78
>>495
うぜーから他行ってくれ
497デフォルトの名無しさん:2011/06/12(日) 16:31:58.32
あほだな。俺普段ここいないからすルーしとけばいいのに。
498デフォルトの名無しさん:2011/06/12(日) 16:32:10.00
>>491
そうでしたか
これはこういうものとして諦めるしかないですね
499デフォルトの名無しさん:2011/06/12(日) 16:32:21.05
>>497
うぜーから他行ってくれ
500デフォルトの名無しさん:2011/06/12(日) 16:33:51.98
>>498
いやいや、今Dockの変わりにAnchorでやってみたが上手くいくよ。
501デフォルトの名無しさん:2011/06/12(日) 16:35:40.00
ところでC#からLuaスクリプトの関数を呼んだり、その逆って出来ますか?

C/C++なら関数が用意されてるんですが。
502デフォルトの名無しさん:2011/06/12(日) 16:37:46.08
メトロノームの話で恐縮だが、定期的に音を鳴らすんならタイマーじゃなくて
WAVデータを生成しながらストリーミング再生かループ再生するのじゃ駄目なの?
503デフォルトの名無しさん:2011/06/12(日) 16:39:22.53
Anchorでも同じだっつうの
http://www.dotup.org/uploda/www.dotup.org1695435.png
504デフォルトの名無しさん:2011/06/12(日) 16:39:57.14
>>502
うぜーから他行ってくれ
505デフォルトの名無しさん:2011/06/12(日) 16:43:05.81
506デフォルトの名無しさん:2011/06/12(日) 16:44:10.18
検索してもそんなDockバグ紹介してるブログにヒットしないのはなぜか?
507デフォルトの名無しさん:2011/06/12(日) 16:44:20.36
>>503
ListBoxの大きさって、ListViewみたくリニアに大きさ変わらないよな
気になるならListView使うしかない
508デフォルトの名無しさん:2011/06/12(日) 16:44:29.77
Anchorだと表示した瞬間はぴったりくっ付くが、その後は駄目みたいだ。
509デフォルトの名無しさん:2011/06/12(日) 16:45:41.41
>>506
気にしないからだろ
うぜーから他行ってくれ
510デフォルトの名無しさん:2011/06/12(日) 16:47:57.62
>>506
DockじゃなくてListBoxの仕様の問題だろ
511デフォルトの名無しさん:2011/06/12(日) 16:49:39.08
>>507-508
なるほど確かに。

でもListBoxの枠線が無くてもOKなら、SpliterPanelのBackColorをWindowにしてしまえば
見かけ上は誤魔化せる。
512デフォルトの名無しさん:2011/06/12(日) 16:49:39.17
上手く行った人はもしかしてMonoか?
513デフォルトの名無しさん:2011/06/12(日) 16:49:52.47
そんなもん
IntegralHeight

切れば
いいんじゃないか
514デフォルトの名無しさん:2011/06/12(日) 16:52:29.10
>>513
なるほど。
ListBoxなんてほとんど使ったことがないから知らなかった
515デフォルトの名無しさん:2011/06/12(日) 16:54:23.06
すぐに答えが出ないという状態に絶望した
516デフォルトの名無しさん:2011/06/12(日) 17:01:34.10
切ったらスペースが消えました
ありがとうございました
517デフォルトの名無しさん:2011/06/12(日) 17:01:46.66
>>487は嘘を教えられて去ってしまった
かわいそう
518デフォルトの名無しさん:2011/06/12(日) 17:02:38.80
よかった。
騙された人なんて、いなかったんだ。
519デフォルトの名無しさん:2011/06/12(日) 17:11:01.00
>>502
ニコニコ生放送みたいなやつでも、再生側の環境によってかなりズレてくるよ。

>>513

 れ
  んじ

>>505
蜜からなかったよままん
520デフォルトの名無しさん:2011/06/12(日) 17:22:24.92
何でニコニコ生放送が出てくるのか分からんけど、>>502の言うことは間違ってない。
音声データのHWバッファが空にならないことさえ保証できれば、サウンドカードの
DAの水晶の精度で正確なはず
521デフォルトの名無しさん:2011/06/12(日) 17:27:49.55
質問者が求めていた精度なの?それって
522デフォルトの名無しさん:2011/06/12(日) 17:43:16.45
問題は任意のStreamでストリーミング再生できるクラスが無さそうなことかな
仮にHTTP自己ホストするとしても管理者権限が必要だし
523デフォルトの名無しさん:2011/06/12(日) 17:54:49.31
この初心者ってどの年代が多いのかな
プログラミング何か始めたいんだけど、htmlで終わった大学3年が1年本気出したらどの辺までいける?
何を始めようかも決めかねているんだがw
524デフォルトの名無しさん:2011/06/12(日) 18:03:46.20
http://www.atmarkit.co.jp/fdotnet/dotnettips/698scrollpic/scrollpic.html見ながらやってみました
フォームにSplitContainarをおきました(DockをFillに設定)
Palel2にPictureBoxを置きました(DockをFillに設定)
右下のプロパティでPanel2のAutoScrollをtrue、pictureBox1のSizeModeをAutoSizeに設定しました
Form1.csのForm1_Loadにこう書きました
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.ImageLocation = "C:\\img\\101.jpg";
}
ここまでやって実行しました
画像の縦横が大きいのにスクロールバーが出ません
どう直したらスクロールバーが出来るようになりますか?
525デフォルトの名無しさん:2011/06/12(日) 18:08:49.10
>>524
そりゃ、PictureBoxをコンテナにドッキングしてたらダメに決まっているのでは?
526デフォルトの名無しさん:2011/06/12(日) 18:19:47.95
ttp://monolith-theater.net/hal/?p=5090
(100万分の1) :水晶発振
(10億分の1) :ルビジウム発振
(1兆分の1) :セシウム発振

>>520-521
単体で鳴らすなら水晶発振で問題ないんだけど、複数同時だと個体差が出てくるから
どの道、同期を取る仕組みが必要になる。
ローカルネットワークにタイムサーバー構えてこまめに時計あわせとか、
あらかじめ内臓時計のズレを測定してリアルタイムに自動調整するソフトとか。

でも、インターネットの通信は優先度低いからなかなか完璧にはあわせられないよね。
パケット受信と同時に時刻を取得して補正できるなら同報通信でぴったり合わせられるんだけど。

>>523
まずどこに就職したいか決めてからやらないと無駄。
あと、どっかの研究室とかで面倒見てもらわないと、どうせ何も身に着けられないで終わる。
527デフォルトの名無しさん:2011/06/12(日) 18:24:27.47
>>526
お前はメトロノームでオーケストラでも作る気なのか?
528デフォルトの名無しさん:2011/06/12(日) 18:29:23.19
メトロノームの質問してた本人が居なくなったのによくやるよなw
529デフォルトの名無しさん:2011/06/12(日) 18:30:45.54
>>527
このスレに出た話に、集団で個人練習ってのがあったでしょ。そういう使い方。

あと、地デジテレビの同期。これホントちゃんとして欲しいなと。
隣の部屋に同じ番組でタイミングの違う放送やられたらかなわんわ。
アナログ+デジタルなら割とかなりタイミングずれるからそーでもないが・・・
530デフォルトの名無しさん:2011/06/12(日) 18:31:57.38
>>526
もう個体差とか同期とか、何の話をしてるんだw
お前さんが自分の脳内で考えていることなんか誰も知らんって
531デフォルトの名無しさん:2011/06/12(日) 18:41:33.60
というか水晶の精度を少し大きめに5ppm、人間が認識できる時間差をかなり小さめに
10msとしても、10msの累積誤差が個体間に生じるまでの最小の時間は

10 * 1E6 / 5 / 2 = 1,000,000 (ms)

だから、頭で同期を取る事さえ可能なら>>502で実用上問題ないはずだと思うがね。
532デフォルトの名無しさん:2011/06/12(日) 18:49:22.02
もうおまえらメトロノームつくってうpしろ
533デフォルトの名無しさん:2011/06/12(日) 18:56:33.15
>>529
それはYahoo知恵遅れの電子メトロノームの話じゃないの?
ノートPCのメトロノームで練習している奴すら見たことが無いのに、集団利用とか荒唐無稽すぎる
534デフォルトの名無しさん:2011/06/12(日) 19:31:26.76
時間という概念
535デフォルトの名無しさん:2011/06/12(日) 19:42:42.14
こんなにメトロ好きが多いとは知らなんだw
536デフォルトの名無しさん:2011/06/12(日) 19:52:53.95
春日三球じゃあるまいし地下鉄に興味はないが
537デフォルトの名無しさん:2011/06/12(日) 19:53:02.10
引っ越したから乗らなくなった
538デフォルトの名無しさん:2011/06/12(日) 19:54:21.68
さーけーちゃーずーけー
539デフォルトの名無しさん:2011/06/12(日) 19:56:47.04
Metro UIなんていいからさっさとLonghornを完成させろ
540デフォルトの名無しさん:2011/06/12(日) 20:09:50.02
>>525
ありがとうございます
DockをnoneしてfromImageで表示したらできました
最初backgroundImage使ってたのですがこれがだめだったようですね
541デフォルトの名無しさん:2011/06/12(日) 20:35:56.71
地下鉄地精
542デフォルトの名無しさん:2011/06/12(日) 21:38:34.94
a1〜a99までの99個の文字列がランダムに配列の中に入っているとします
string[] a = new string[] { 99個の値がここに入る }
これをソートしたいのですが
a1
a11
a12

a2
a20
とこんな感じになってしまいます
これを
a1

a9
a10
a11

a19
a20
のようにする方法はございませんか?
543デフォルトの名無しさん:2011/06/12(日) 21:56:15.57
>> 542
array.OrderBy(x => int.Parse(Regex.Match(x, @"\d+$").Value))
544デフォルトの名無しさん:2011/06/12(日) 21:57:27.13
>>542
axxを、aとxxに分解してxxを数値として判定

必ずaという文字一文字と決まっているなら、長さを比較した後に文字列比較する2段階検査でもいい。
545デフォルトの名無しさん:2011/06/12(日) 21:57:39.17
どっちだか忘れたが、Comparer<T>かComparizon<T>を取るメソッド使えば
546デフォルトの名無しさん:2011/06/12(日) 22:03:42.95
listboxのkeydownでgを押すと特定の処理を行うようにしたいのですが
gを押せば特定の処理はするのですがgの値のある行がセレクトされてしまいます
なので
if (e.KeyData == Keys.G) {
特定の処理();
e.handle = true;
}
とe.handle = true;と書いたのにキーボードが無効化されません
書くところが悪いのかなと思って
private void listBox1_KeyDown(object sender, KeyEventArgs e){
のすぐ増したに書きましたがこれは実行したら以後キーボードが受け付けなくなったのでやめました
キーボードを打ってlistboxで移動しないようにしたいのですがこのやり方は間違ってますか?
547デフォルトの名無しさん:2011/06/12(日) 22:04:49.44
>>543-545
キャパシティを超える単語が出てきたのでちょっと調べてみます
548デフォルトの名無しさん:2011/06/12(日) 22:20:55.97
文字列をa01からに振りなおせば解決
549デフォルトの名無しさん:2011/06/12(日) 22:36:47.51
すみません、メトロノームは機械式と電子式とではどっちが精度いいんですか?
550デフォルトの名無しさん:2011/06/12(日) 22:37:56.23
条件次第では機械式のほうが精度がいい
551デフォルトの名無しさん:2011/06/12(日) 22:38:34.35
条件次第では電子式のほうが精度がいい
552デフォルトの名無しさん:2011/06/12(日) 22:40:31.90
検証スレ立ててそっちでやってくれ
c#のレベル超えてる
553デフォルトの名無しさん:2011/06/12(日) 22:43:38.28
ていうか「PC等」カテゴリの話題ですらない
554デフォルトの名無しさん:2011/06/12(日) 22:50:22.10
listboxの場合はe.handleは効かないの仕様みたいですね
別の方法を考えます
555デフォルトの名無しさん:2011/06/12(日) 22:56:07.76
ポインタ=参照型ってことでまとまったみたいだな
556デフォルトの名無しさん:2011/06/12(日) 23:24:55.42
KeyPressでできるぞ
557デフォルトの名無しさん:2011/06/13(月) 05:39:37.02
>>555
全否定されてるのにこの理解でワラタ
558デフォルトの名無しさん:2011/06/13(月) 06:12:51.30
概念的に似ている要素はあるけど、いくらなんでも=はないだろ
559デフォルトの名無しさん:2011/06/13(月) 06:21:48.88
>>555
そんなの言ってるのは1人だけだろ
560デフォルトの名無しさん:2011/06/13(月) 07:00:12.85
じゃあ気にしておかないといけない違いは?
設計に重要なポイントとか。
561デフォルトの名無しさん:2011/06/13(月) 07:11:33.13
ポインター型…使うな
参照型   …使え
562デフォルトの名無しさん:2011/06/13(月) 07:48:16.89
わざわざunsafeまでつけてポインター使えるというのに。
ポインタと参照がまったく完全になにもかも同じだったらunsafeなんていらないだろ。
563デフォルトの名無しさん:2011/06/13(月) 07:50:16.11
string dame = @"\\\/\:\*\?\""\<\>\|";というstringを活用し
Console.WriteLine(dame);とした時に\/:*?"<>|と表示させる方法は無いでしょうか?
もう1回段階評価すれば良さそうなのですが分かりません。
dameはRegex.Matches(fileName, @"["+dame+@"]");として使っています。
564デフォルトの名無しさん:2011/06/13(月) 07:52:02.46
>>542
そもそもデータをa01,a01...とした方が早くマイカ?
565デフォルトの名無しさん:2011/06/13(月) 07:52:37.80
間違った

a01,a02...な
566デフォルトの名無しさん:2011/06/13(月) 08:19:26.97
>>563
Console.WriteLine( Regex.Unescape( dame ) );
567デフォルトの名無しさん:2011/06/13(月) 08:36:46.05
>>567
エスケープを解除するというその名もズバリな関数があったのですね。
レスありがとうございました。
568デフォルトの名無しさん:2011/06/13(月) 08:37:28.62
安価ミス。>>566さんに向けて。
569デフォルトの名無しさん:2011/06/13(月) 11:06:43.82
LINQいいよね〜
570デフォルトの名無しさん:2011/06/13(月) 12:28:34.80
>>562
そう言えば unsafe ってのがあったな。

unsafe で宣言した関数とかは他のプロセスから関数呼び出しできるんだろうか。
571デフォルトの名無しさん:2011/06/13(月) 16:31:23.51
unsafeよりMarshalのほうが良くね?
572デフォルトの名無しさん:2011/06/13(月) 16:57:27.93
意味がわからないです
573デフォルトの名無しさん:2011/06/13(月) 17:12:18.81
今までずっとコンソールのソフト作ってきて初めてフォームアプリケーションつくろうとしてるが設計難しいな
センスのなさを痛感している
574デフォルトの名無しさん:2011/06/13(月) 17:14:20.52
満足のいくGUIを…なんて目標高くやってるとちょーしんどい。
絶賛放置中
575デフォルトの名無しさん:2011/06/13(月) 17:19:47.91
ボタンを並べておけばおk
576デフォルトの名無しさん:2011/06/13(月) 17:21:32.28
>>573
そんなにむつかしくねーだろ
577デフォルトの名無しさん:2011/06/13(月) 17:28:38.91
SmtpClientクラスはスレッドセーフでしょうか?
578デフォルトの名無しさん:2011/06/13(月) 17:31:52.49
CUIで作ってそれをGUIからも使えるようにすればいいだけじゃん
579デフォルトの名無しさん:2011/06/13(月) 17:32:10.43
580デフォルトの名無しさん:2011/06/13(月) 19:41:43.44
設計というかデザインというか
581デフォルトの名無しさん:2011/06/13(月) 20:12:46.40
GUIはMFCでやったほうがよくね?
C#のフォーム、もっさりしすぎて使い物にならん
582デフォルトの名無しさん:2011/06/13(月) 20:31:52.85
ニャンだかワンダフル
583デフォルトの名無しさん:2011/06/13(月) 20:33:15.53
さらにもっさりのWPFの立つ瀬がないだろ!
584デフォルトの名無しさん:2011/06/13(月) 20:36:20.28
ネタですね
585デフォルトの名無しさん:2011/06/13(月) 20:41:51.62
>>581
.netが無料板でも使えるのにMFCは有料版にしか付いてない理由が、それ
586デフォルトの名無しさん:2011/06/13(月) 20:55:09.62
>>581
おいおい、じゃあC#の使いどころはどこになるんだよw
587デフォルトの名無しさん:2011/06/13(月) 20:55:16.32
新規でMFCの呪文つかうやつの気がしれないw
588デフォルトの名無しさん:2011/06/13(月) 21:11:43.64
ASP.NET^^
589デフォルトの名無しさん:2011/06/13(月) 21:18:57.66
>>586
.net : 安全だが遅い。GUIを直感的に作れる。VC#,VB等、複数の言語で共通のライブラリとして使用可能

MFC : 安全性は劣るが速い。ダイアログ以外のGUIは直感的には作れない。有料版にしか付いてない。しかもVC++でしか使えない

まあ、楽に作るか。速さを求めるかで使い分けになるんだろね

VC++とMFCは覚えるの難しいけど、覚えとけばWinでは困る事が無いから、使いこなせる人は羨ましい
いつか、再挑戦したいけど、私ゃ挫折したよ

私 ≠ >>581
590デフォルトの名無しさん:2011/06/13(月) 21:25:11.45
いや複雑なGUI作れば結局MFCだって(起動が)遅いからw
591デフォルトの名無しさん:2011/06/13(月) 21:25:34.67
スレ違いに気付けよカス
592デフォルトの名無しさん:2011/06/13(月) 21:48:20.47
ふらっと脱線するのがここの趣旨だろうが 油粕
593デフォルトの名無しさん:2011/06/13(月) 21:53:21.10
こいつポインタ≠参照型とかいう異端野郎だろw
594デフォルトの名無しさん:2011/06/13(月) 21:53:22.74
スレタイそう言う事か
595デフォルトの名無しさん:2011/06/13(月) 21:53:34.58
どんなにくだらない発言でも
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身
など、勇気をもって書き込んでください。
596デフォルトの名無しさん:2011/06/13(月) 21:56:06.84
コンピュータ言語の前に日本語を勉強しろ
597デフォルトの名無しさん:2011/06/13(月) 21:59:05.57
主語はどこに在るのでしょうかね
598デフォルトの名無しさん:2011/06/13(月) 22:01:22.88
主語ーい
599デフォルトの名無しさん:2011/06/13(月) 22:01:56.35
>>596は日本語を勉強した方がいい
600デフォルトの名無しさん:2011/06/13(月) 22:06:10.07
脱線は別にいいけどループはノーサンキューだぞ、>>593
601デフォルトの名無しさん:2011/06/13(月) 22:08:14.76
結局精度についての結論をまとめてくれよ
602デフォルトの名無しさん:2011/06/13(月) 22:08:55.51
ポインタ≠参照型とか言ってるの一人しかいないからなw
603デフォルトの名無しさん:2011/06/13(月) 22:09:53.70
ポインタ=参照型って言ってるヤツが二役やってんだろw
604デフォルトの名無しさん:2011/06/13(月) 22:11:33.12
ticとtuckでtictuckてこったなw
605デフォルトの名無しさん:2011/06/13(月) 22:12:24.47
暗政府w
606デフォルトの名無しさん:2011/06/13(月) 22:19:42.32
>ImageWidth[256] = 156
>ImageLength[257] = 104
ってあるけど、サムネイルはこれより小さいの?
607デフォルトの名無しさん:2011/06/13(月) 22:20:30.38
おっと相談室と間違えた
608デフォルトの名無しさん:2011/06/13(月) 22:20:32.51
間違えたなw
609デフォルトの名無しさん:2011/06/13(月) 22:24:57.18
>>598=>>605を誰か審議してやってくれ
610デフォルトの名無しさん:2011/06/13(月) 22:36:56.34
お前よりはマシだから安心しろ
611 忍法帖【Lv=10,xxxPT】 :2011/06/14(火) 02:26:10.63
てす。
612デフォルトの名無しさん:2011/06/14(火) 10:17:23.71
windowsFormsで
WPFのRadialGradientBrushのようなことをやりたいんですが
簡単に実現する方法はありませんか?

ないとすれば・・・どんな風に実現するのでしょうか?
円を塗りつぶしで描画して、その上からさらに白と元の色のグラデーションで小さい円を描くようなカンジでしょうか?
613デフォルトの名無しさん:2011/06/14(火) 10:28:51.14
円をFillEllipseで直接描画しないでFillPathで描画すればできそうかな?
http://dobon.net/vb/dotnet/graphics/lineargradientbrush.html
614デフォルトの名無しさん:2011/06/14(火) 10:43:37.45
http://ideone.com/QUOrL

なんかいまいちだけどそれっぽい結果にw
615デフォルトの名無しさん:2011/06/14(火) 11:03:52.87
>>613

ヒントありがとです。
参考にいろいろいじったらいい感じの円がかけました!!

http://ideone.com/p8i9g
616615:2011/06/14(火) 11:08:41.43
>>614
へのアンカーを忘れていたという・・・orz

実際組み込んで使ってみるとやっぱりソリッドな円より見栄えがよくなって満足です!
617デフォルトの名無しさん:2011/06/14(火) 14:08:02.06
class Test
{
public static void test(object obj)
{
Console.WriteLine("object");
}

public static void test(params object[] args)
{
Console.WriteLine("object[]");
}

static void Main(string[] args)
{
string[] ss = new string[] { "hoge", "2", "3" };
test(ss);
}
}

これを実行すると可変長引数のほうが呼ばれるのですが、何故こうなるのでしょうか?
同じ型の場合、引数を個別に指定したものと可変長にしたものとがあれば前者が優先されると思うのですが。
(試しにobjectの部分をstringに置き換えて実行すると前者が実行されました)
618デフォルトの名無しさん:2011/06/14(火) 14:13:06.83
(試しにobjectの部分をstring[]に置き換えて実行すると前者が実行されました)
[]が抜けてました。訂正します。
619デフォルトの名無しさん:2011/06/14(火) 14:33:50.46
>>617
string[] ss = new string[] { "hoge", "2", "3" };はobject型とobject[]型のどちらに近いと思う?
620デフォルトの名無しさん:2011/06/14(火) 14:34:36.48
より詳細な方が実行されるから
object < object[] < string[]
621デフォルトの名無しさん:2011/06/14(火) 14:37:07.08
関係ないけどデフォルト引数と名前付きパラメータ導入されてたんだ
622デフォルトの名無しさん:2011/06/14(火) 14:51:30.64
レスありがとうございます。

>>619
string[]はobject[]型のほうが近いと思いますが、それと可変長の方の関数が実行される事との間に繋がりが見えません。

>>620
test関数の一方は1つのobject型インスタンスを引数に取りもう一方は複数のobject型インスタンスを取る
与えた引数string[] ssは1つのobject型インスタンスなので前者の方がより詳細な方では無いでしょうか?
623デフォルトの名無しさん:2011/06/14(火) 15:12:36.44
public static void test(object[] args)
{
Console.WriteLine("object[]");
}



public static void test(params object[] args)
{
Console.WriteLine("object[]");
}

がなぜ同じクラスに同時に存在できないか考えたことある?
624デフォルトの名無しさん:2011/06/14(火) 15:29:24.55
なるべくobject型は使わないようにしたほうが良いんでね
俺は使ったこと無い
625デフォルトの名無しさん:2011/06/14(火) 15:32:38.69
つうか、そんな紛らわしいもん作るなよ
バグの元だろ
626デフォルトの名無しさん:2011/06/14(火) 16:10:25.63
うちの周りはvb6脳で止まってて、objectでわたしてメソッドは遅延評価でおkなやつが多くて怖い
627デフォルトの名無しさん:2011/06/14(火) 16:18:58.70
それVB6関係ねーだろwww
昔からObject使うなってのが定説
628デフォルトの名無しさん:2011/06/14(火) 16:24:24.11
VC#で作ったものってMONOでも動くんですか?
629デフォルトの名無しさん:2011/06/14(火) 16:25:00.31
コレクションとかもまだジェネリックじゃないの使ってるやつ多そうだな・・・
こえぇよ 何が入ってくるかわからないような代物
630デフォルトの名無しさん:2011/06/14(火) 16:25:27.28
例えばイベントハンドラのSenderって、やろうと思えば何でも送れるけど禁じ手だよな
何も知らない頃にやっちまった前科があるのは内緒だ
631デフォルトの名無しさん:2011/06/14(火) 17:02:49.96
>>628
少なくとも素のWindowsアプリのEXEは動いたよ
632デフォルトの名無しさん:2011/06/14(火) 17:09:16.65
>>631
すげーな
633デフォルトの名無しさん:2011/06/14(火) 17:20:06.82
バイナリはプラットフォーム依存な感じがするけど動くのか
634デフォルトの名無しさん:2011/06/14(火) 17:27:20.50
monoだけじゃ無理っぽかったけど、wineだったかな、いろいろ入れたら動いた
素のアプリは、ね。
635デフォルトの名無しさん:2011/06/14(火) 17:35:58.56
あーやっぱり
最初のローダーが動かないよね
636デフォルトの名無しさん:2011/06/14(火) 17:41:31.36
まあぃぬxで動かすならじゃヴぁで作るわ
637デフォルトの名無しさん:2011/06/14(火) 17:41:55.20
ローダーはmonoでないの?
wine入れないときはウインドウ系のエラーだった気がする
数か月前にちょこっとやった程度だが
638デフォルトの名無しさん:2011/06/14(火) 20:12:36.93
C#からC++で作ったDLLの関数に参照渡しってできないの?
値は渡せても戻ってこないよ?
639デフォルトの名無しさん:2011/06/14(火) 20:27:36.20
C++の仕様でいう所の参照は無理だったような
640デフォルトの名無しさん:2011/06/14(火) 20:40:35.03
スンマセン、勘違いでした
ポインタになってないだけでした・・
641デフォルトの名無しさん:2011/06/14(火) 20:41:56.32
Document/Viewとか二度とやりたくありません!
642デフォルトの名無しさん:2011/06/14(火) 20:44:51.09
やれと言ってません
643デフォルトの名無しさん:2011/06/14(火) 20:49:13.78
>>641
こきはC#スレです
MFCの話はトラウマなので忘れさせてくさい
644デフォルトの名無しさん:2011/06/14(火) 21:11:51.41
ごめん、リロードしないで書き込んじゃいまして……
645デフォルトの名無しさん:2011/06/14(火) 21:22:34.86
>>623
試してみた所、同じパラメータであると言われました。
object[]型を1つ取る関数とobject型を複数個取りobject[]型にまとめる関数は
意味的に別物だと思うのですが、これが同じものとして扱われるのは内部的な話なのでしょうか?

void test(object[] obj) { }
void test(params object[] args) { }
test(new string[]{1,2}); // 後者が呼ばれる。

void test2(string[] string) { }
void test2(params string[] args) { }
test(new string[]{1,2}); // 前者が呼ばれる。

やりたいことは別の手段で実現できたのですが、これが不思議で理由が知りたいです。
646デフォルトの名無しさん:2011/06/14(火) 21:24:32.98
すみません、訂正です。
void test2(string[] string) { }
void test2(params string[][] args) { }
test2(new string[]{1,2}); // 前者が呼ばれる。
647デフォルトの名無しさん:2011/06/14(火) 21:25:20.77
上も訂正、、
void test(object obj) { }
void test(params object[] args) { }
test(new string[]{1,2}); // 後者が呼ばれる。
648デフォルトの名無しさん:2011/06/14(火) 21:57:52.80
配列は共変でない(≒引数にstringを取るメソッドがある)からstring[]からobject[]には変換できない
けどobjectには変換できる、よって後者が呼ばれる
649デフォルトの名無しさん:2011/06/14(火) 22:04:33.51
配列「は」共変の間違いだろ
http://msdn.microsoft.com/ja-jp/library/ee207183.aspx
650デフォルトの名無しさん:2011/06/14(火) 22:11:02.19
>>648
ありがとうございます。配列は共変でないというのがよく分からないので調べてみます。

>>623について考えました。
int sum(params int[]) { }
int amount = sum(3, 8, 293, 29);
             ↑内部的にこの時点でint[]にまとめてからsum(int[])を呼び出すように
               なっているので新たにint sum(int[]) { }を定義できないのではないかと思いました。
651デフォルトの名無しさん:2011/06/14(火) 22:34:08.18
>>649
失礼、「array-covariance」だけど「covariant」じゃないから通常の暗黙変換より優先度が低いってことで
652617:2011/06/14(火) 22:46:26.67
うーん、よく分からないです。
string[]→object[]というひとつのobjectには変換できないが
string[]→object, object,...には変換できるので>>647は後者が呼ばれるという理屈ですか?
試したところstring[]→object[]は変換できました。
653デフォルトの名無しさん:2011/06/14(火) 22:55:19.99
単に暗黙変換可能な近い型が使われるって覚えておけばいいよ

paramsが実際は普通に配列引数を取ってるってことは分かっただろ
654デフォルトの名無しさん:2011/06/14(火) 22:57:12.22
string[]→objectはベースクラスへの拡大変換で、暗黙変換の中でも最優先
string[]→object[]は配列専用の特殊な変換だから優先度は上から4,5番目
655617:2011/06/14(火) 23:01:52.52
>string[]→objectはベースクラスへの拡大変換で、暗黙変換の中でも最優先
string[]が1つのobjectに変換されるのが最優先なら>>647は前者が呼ばれませんか?(>>647はnew stringの引数が少し変でした)
656デフォルトの名無しさん:2011/06/14(火) 23:05:24.88
その優先がどうとか言ってる奴は無視ししろ

public static void test(params object[] args)
が内部的には
public static void test(object[] args)
なのだから

public static void test(object arg)
public static void test(object[] args)

test(new string[]{ "a", "b" });
を呼んだ時どっちが呼ばれるべきか

>>622で「string[]はobject[]型のほうが近いと思う」と自分で言ってるだろ
その直感の通りだ
657デフォルトの名無しさん:2011/06/14(火) 23:11:46.80
http://msdn.microsoft.com/ja-jp/library/aa691337(VS.71).aspx
http://msdn.microsoft.com/ja-jp/library/aa691339(VS.71).aspx

"パラメータ配列"という用語が謎だけど、これがparams付きの引数のことを指しているのなら、
paramsの有無で微妙に解釈が違うのかな。

paramsが付かない場合は"object[] is object"であっても逆は成立しないから
string[]⇒object[]が「より適切な変換」になるという理屈のようだ。
658デフォルトの名無しさん:2011/06/14(火) 23:12:44.53
オーバーロードの解決法はVBの方がもっとややこしかったような....
659デフォルトの名無しさん:2011/06/14(火) 23:29:15.91
>>656
なるほど・・
public static void test(object arg)
public static void test(object[] args)でtest(object[])を呼べば後者が呼ばれるのは分かります。

つまりpublic static void test(params object[] args)は
純粋にobject型の可変長対応版だけを実現しているのではなく、
test(object[] objs)という呼び出しも許容しているのですね。

スッキリしました。丁寧なレスありがとうございました。
660デフォルトの名無しさん:2011/06/14(火) 23:48:53.60
☆(*^o^)乂(^-^*)☆ ヤッタネ!!
661デフォルトの名無しさん:2011/06/15(水) 00:01:48.65
>>657
どっちも標準形式で呼べるからparamsは関係ない
662デフォルトの名無しさん:2011/06/15(水) 00:07:16.70
>>661
ちゃんと読んでる?
663デフォルトの名無しさん:2011/06/15(水) 00:09:47.43
ガベコレ・メモリリークについて、お教えください。
WPFなダイアログのオブジェクトがガベコレされず操作を繰り返すとOutOfMemoryしてしまいます。
メモリリークが起こっていると思い以下のように調べたのですが、手詰まりになってしまいました。
どこか手順/ガベコレの理解が間違っているでしょうか?
664デフォルトの名無しさん:2011/06/15(水) 00:11:54.92
1.sosでgcrootを調べる。全てのGCハンドルが弱参照になっていることを確認。
 (HANDLE(STRONG)やHANDLE(PINNED)がなく、HANDLE(Weaksh)やHANDLE(Weaksl)だけになっていることを確認)
2.以下の処理を通過させてガベコレに強制的にお掃除させた上で1と再度同じ手順で確認
 GC.Collecion();GC.WaitForCompleteFinalize();GC.Collecion();
1でGCハンドラ全てがWeakshになっていたことを確認したので
2で消えてくれそうな気がするのですが実際にはインスタンスは消えず残っています。
665デフォルトの名無しさん:2011/06/15(水) 00:34:53.48
GCHandle 化されてない通常の参照が残ってるとかないよね?
666デフォルトの名無しさん:2011/06/15(水) 01:15:09.30
>>662
何が不満かよく分からんが、1.1の言語仕様なんて見てないよ?

とりあえず>>657のリンクは適切かどうかだけで、複数該当した場合のことは書いてない
1.1仕様の「7.4.2.2 より適切な関数メンバ」は役に立たんので4.0の7.5.3.2を見ると、
>• The expanded form is used if the function member was applicable only in the expanded form.
ってあるんで拡張形式は排除される
つまりparamsの有無云々は間違い

で、「より適切な変換」を評価するが、両方暗黙変換可能なので存在しない
だから「より適切な変換」になるってのは間違い

最後に"object[] is object"だが、これはtie-breaking rulesに
>• Otherwise, if MP has more specific parameter types than MQ, then MP is better than MQ.
とあるから、7.4.2.3とは関係ないけど正しい
667デフォルトの名無しさん:2011/06/15(水) 01:31:29.31
>>665
どもです。GCHandle化されていない通常の参照があっても、その参照元をたどると
 1.GCHandle or Stack上から参照されている
 2.その参照自体がどこからも参照されていない
のどちらかで、1ならsosのgcrouteで検出可能、2なら対象インスタンスのGCを妨げないと思うのですが…
# ガベコレには不慣れなのですみません、間違っていたらご指摘ください。
668デフォルトの名無しさん:2011/06/15(水) 02:05:27.59
>>666
そっちこそ何がいいたいのか分からないけど、
void hoge(params T[] t){}

MSDNには、params付きの場合、このhogeにS[]を渡して呼べるかどうかは(S[]からT[]ではなく)
SからTへの暗黙の変換があればよいと書いてある。

これはTとSが参照型ならどっちでも恐らく同じことだが、どちらかが値型の場合は配列の共変が働かないから、
params付きとそうでないのでは意味が違ってくるはず。

言ってること変かな?
669デフォルトの名無しさん:2011/06/15(水) 07:05:28.81
>>668
で、stringは値型なの?
670デフォルトの名無しさん:2011/06/15(水) 07:40:01.14
.NET4、WPFアプリケーションの作成で
Mediaplayerのインスタンスつくってからその再生音量を徐々に上げていく操作をしたくて以下のように書いたんだけど
~~

MediaPlayer mp =new MediaPlayer();

mp.Open(new Uri(@"〜〜〜"));
mp.Volume = 0;
mp.Play();

DoubleAnimation vol_up = new DoubleAnimation(0.1, 1, new TimeSpan(20000000));

mp.BeginAnimation(MediaElement.VolumeProperty, vol_up);

~~
再生自体は出来てるんだけど、どうにも音量が上がってる気配がない
何処を直したらいいのか教えていただきたい
671デフォルトの名無しさん:2011/06/15(水) 08:00:21.90
MediaPlayerにMediaElementのVolumeを設定しても・・・
そもそも依存関係プロパティじゃないよ
672デフォルトの名無しさん:2011/06/15(水) 09:04:26.48
え、違うの?
じゃあ自分で依存関係プロパティ定義しなくちゃだめ?
673デフォルトの名無しさん:2011/06/15(水) 09:27:58.84
static void F(params object[] x)
{
Console.WriteLine("引数の数: {0}, 引数リストの型: {1}", x.Length, x.GetType().Name);
}

static void Main(string[] args)
{
// この2つは同じ意味。
// string → object への暗黙の型変換で動く。
F("aa", "bb", "cc");
F(new object[] { "aa", "bb", "cc" });

// これは別の意味。
// string[] → object[] への型変換(配列の共変性)で動く。
F(new string[] { "aa", "bb", "cc" });
}
674デフォルトの名無しさん:2011/06/15(水) 09:29:46.99
>>672
素直にMediaElement使えばいいだろ
675デフォルトの名無しさん:2011/06/15(水) 09:41:53.96
ワロタ
676デフォルトの名無しさん:2011/06/15(水) 09:50:42.70
ワロタリウスV世w
677デフォルトの名無しさん:2011/06/15(水) 10:16:49.83
>>674
そうするわー
678デフォルトの名無しさん:2011/06/15(水) 12:41:59.17
パフォーマンスや影響範囲を考えると、MediaPlayer使って添付プロパティ化する方がいいと思うけどね
679デフォルトの名無しさん:2011/06/15(水) 16:12:45.31
パフォーマンスを考えるとWPFは使えない結論に至る
680デフォルトの名無しさん:2011/06/15(水) 16:19:52.19
WPFとかやってみてえけど、新しいPC買えねーわ。
681デフォルトの名無しさん:2011/06/15(水) 16:30:50.98
でもWindows8が登場する頃には
WPFのパフォーマンス何て気にならなくなってるんでしょ?
682デフォルトの名無しさん:2011/06/15(水) 16:37:46.92
PCが同じなら・・・
683デフォルトの名無しさん:2011/06/15(水) 17:08:42.07
WPFなら画面に表示する部分はすべてグラボが処理するから、
パフォーマンスが向上するって聞いたのに・・・
684デフォルトの名無しさん:2011/06/15(水) 17:10:27.30
Silverlightでチャイルドウィンドウを表示するとき
さくっと表示されずにアニメーションされちゃうんですけど
さくっと表示するようにするにはどうすればいいでしょう?
685デフォルトの名無しさん:2011/06/15(水) 17:11:15.73
グラボなど幻想だ。
いい夢見れたか?



描画よりレイアウトエンジンが重い
686デフォルトの名無しさん:2011/06/15(水) 18:06:50.49
>>683
グラボで表示するけど余計なことまでやってるから結局パワーいるよね
687デフォルトの名無しさん:2011/06/15(水) 18:15:03.15
MSはWPFの前に
UI分離型のWinForms出してくれれば良かったんだよ
688デフォルトの名無しさん:2011/06/15(水) 19:47:43.25
アプリからODBC使ってpostgresに接続してるんですが
外部のPCから自分のPCのデータベースが更新された時に
それをアプリに通知することってできますか?
ODBCはNOTIFY/LISTENをサポートしていないようなので。
689デフォルトの名無しさん:2011/06/15(水) 20:03:04.32
原始的な方法しか思いつかないな
690デフォルトの名無しさん:2011/06/15(水) 20:04:52.71
691デフォルトの名無しさん:2011/06/15(水) 20:31:12.02
他のpostgres用のインターフェースで通知できるものとできないものが
あることはなんとくなく把握してます。
やっぱりソケット通信とかで通知するのが無難なんでしょうか。
692デフォルトの名無しさん:2011/06/15(水) 22:08:20.33
メトロノームさんは違う板に移動したみたい
693デフォルトの名無しさん:2011/06/15(水) 22:15:44.84
質問者のことならどうでもいいけど、サウンドカードの水晶の精度がーとか言ってたやつのことならちょっと気になる
694デフォルトの名無しさん:2011/06/15(水) 22:18:00.76
なら好きなら好きって告白したらよいのでは?
695デフォルトの名無しさん:2011/06/15(水) 22:27:07.04
ならねらのらねならねるのらののらる
696デフォルトの名無しさん:2011/06/15(水) 22:32:49.34
>>693
それがメトロノームさんだよ
697デフォルトの名無しさん:2011/06/15(水) 22:33:34.37
メトロノームはいいからこれをお題にしてC#で検討してみようぜ
マザーズ上場予定の東大発ベンチャー「このプログラムを書けたら即入社!」
http://hatsukari.2ch.net/test/read.cgi/news/1308135134/
698デフォルトの名無しさん:2011/06/15(水) 22:38:22.79
さて、カレーでも食うか
699デフォルトの名無しさん:2011/06/15(水) 22:46:10.56
想像以上にしょべえ問題
700デフォルトの名無しさん:2011/06/15(水) 22:50:06.15
private void Form1_Load(object sender, EventArgs e)
{
Graphics g = pictureBox1.CreateGraphics();
g.FillEllipse(Brushes.Red, 50, 50, 100, 100);
g.Dispose(); ;
}

で描画できません
private void button1_Click(object sender, EventArgs e)
{
Graphics g = pictureBox1.CreateGraphics();
g.FillEllipse(Brushes.Red, 50, 50, 100, 100);
g.Dispose(); ;
}
でbuttonを押すと描画されます
プログラムを起動したときに描画したいのでForm1_Loadに書いたのですが何故描画されないのでしょうか?
701デフォルトの名無しさん:2011/06/15(水) 22:52:07.87
LoadだとまだpictureBox1ってできてないんじゃないの?

Showだっけ?そこに書けば
702デフォルトの名無しさん:2011/06/15(水) 23:06:54.04
private void Form1_Shown(object sender, EventArgs e)
{
MessageBox.Show("Test");
Graphics g = pictureBox1.CreateGraphics();
g.FillEllipse(Brushes.Red, 50, 50, 100, 100);
g.Dispose(); ;
}
って書いたら表示されました
でもMessageBox.Show("Test");を書かないと表示されません
703デフォルトの名無しさん:2011/06/15(水) 23:12:24.63
そもそも直接書くってのが気持ち悪い

        private void Form1_Shown(object sender, EventArgs e)
        {
            Bitmap bmp = new Bitmap(400, 400, PixelFormat.Format32bppArgb);
            using (Graphics g = Graphics.FromImage(bmp))
            {
                g.FillEllipse(Brushes.Red, 50, 50, 100, 100);
                g.Dispose();
            }
            pictureBox1.Image = bmp;
        }
704デフォルトの名無しさん:2011/06/15(水) 23:13:32.20
>>697
総当たりで15!だから適当な評価関数をでっち上げてGAかな?
705デフォルトの名無しさん:2011/06/15(水) 23:14:07.49
>>703
その感覚はちょっとというかかなりVBerっぽいなw
706デフォルトの名無しさん:2011/06/15(水) 23:15:51.55
>>705
VBはほとんど書いたことがないんだな
まあdobonとか参考にして覚えた書き方なのであの辺の主がVBerなら
そこで感染したのかも
707デフォルトの名無しさん:2011/06/15(水) 23:16:06.85
実態参照めんどくせえ
708デフォルトの名無しさん:2011/06/15(水) 23:42:04.30
>>704
厳密にいうと問題として成立してないような気もするけど、そこは突っ込んでは
駄目なんだろうなきっと。

まず任意の2つのピースを上下、左右に並べた場合の辺の不一致度のテーブルを作って、
それをもとに15のピースの順列の全部について全体の不一致度の総和を計算して
最小のものを選択するとか、そんなところか。

面倒なだけで高校生ぐらいでも書けそうだな。
709デフォルトの名無しさん:2011/06/15(水) 23:45:53.41
コードは参考にさせていただきます
shownで表示されないのは何故なんでしょうか?
710デフォルトの名無しさん:2011/06/15(水) 23:58:10.88
分からん
711デフォルトの名無しさん:2011/06/15(水) 23:59:49.88
単にWM_PAINTが飛んでないだけだと思う
712デフォルトの名無しさん:2011/06/16(木) 00:00:26.08
713デフォルトの名無しさん:2011/06/16(木) 00:01:35.55
CreateGraphicsで書きこまれた内容を尊重するような設計になってないんじゃねーの?
Paintだな
714デフォルトの名無しさん:2011/06/16(木) 00:05:41.76
Paintも描画されないようですが・・・
.netのバージョンが原因ですかね
715デフォルトの名無しさん:2011/06/16(木) 00:07:15.39
ちゃんとe.Graphics使ってる?
716デフォルトの名無しさん:2011/06/16(木) 00:08:01.63
>>709
書いても消えちゃうから。

一旦書いたら消えないようにするためには、書いた内容を記憶しておくメモリが
必用になるが、各コントロールがおのおのそんなものを持つのはメモリの無駄遣い。

だからWindowsでは、ウィンドウの隠れていた部分が表に出た時など、
再描画が必要になったタイミングでその都度描画するのが基本。

でその「再描画が必要になったタイミング」を通知するのがPaintイベント。

っていうか、この辺りは考えることじゃなくてMSDNとか読んで理解することだから
まず手を動かす前に黙って何か読んだ方がいいよ。
717デフォルトの名無しさん:2011/06/16(木) 00:09:15.18
またまたご冗談を
http://www.dotup.org/uploda/www.dotup.org1702788.png

2.0、3.5、4.0全部同じ結果でした
718デフォルトの名無しさん:2011/06/16(木) 00:15:20.15
あ、e.Graphicsか
Graphics g = pictureBox1.CreateGraphics();
g.FillEllipse(Brushes.Red, 50, 50, 100, 100);
g.Dispose(); ;
って書いてました
VC#起動に5分かかるので明日ためしてみます
おやすみなさい
719デフォルトの名無しさん:2011/06/16(木) 00:56:47.09
>>716
XPではウィンドウが後ろに隠れると消えてたけど、
Vista以降はそれぞれに画面持ってるから再描画かからないんじゃないかな。

コントロールレベルでは持ってないかもしれないけど
720デフォルトの名無しさん:2011/06/16(木) 00:59:48.44
一旦最小化して戻せば再描画
721デフォルトの名無しさん:2011/06/16(木) 01:33:55.80
>>720
いや再描画しないでしょ。画面がおかしくなっても復活しないし
722デフォルトの名無しさん:2011/06/16(木) 04:17:07.81
>>719
それエアロが有効かどうかで違った気がする
723デフォルトの名無しさん:2011/06/16(木) 05:36:09.53
>>697
久しぶりにピュアCでコーディングしたぜ。PPM読んでグレースケールにするまでいって力尽きたけど。
JSのオブジェクト指向っぽく書いてみたけど、ライブラリ組んでるときは苦痛だけど使うときはまー楽なこと。
6時間くらいかかったけど、いい経験になったなー。寝る。
724デフォルトの名無しさん:2011/06/16(木) 07:48:40.36
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.FillEllipse(Brushes.Red, 50, 50, 100, 100);
//e.Graphics.Dispose();
}
でいけました
でもe.Graphics.Dispose();を実行するとApplication.Run(new Form1());のところでエラーが起こるのは何でですか?
725デフォルトの名無しさん:2011/06/16(木) 07:50:47.91
>>724
自分で作ってないGraphicsを勝手に破棄すればpictureBox1_Paintを呼んだ
ところへ戻ったときにそりゃこけるだろ
726デフォルトの名無しさん:2011/06/16(木) 07:52:22.26
なるほど
disposeって必ず書かないといけないわけでもないのですね
727デフォルトの名無しさん:2011/06/16(木) 07:55:08.53
>>726
>>718のように自分で作った場合は責任を持って破棄するか
>>703のようにusingで囲えばg.Dispose()はなくてもいいけど

>>703の訂正版
        private void Form1_Shown(object sender, EventArgs e)
        {
            Bitmap bmp = new Bitmap(400, 400, PixelFormat.Format32bppArgb);
            using (Graphics g = Graphics.FromImage(bmp))
            {
                g.FillEllipse(Brushes.Red, 50, 50, 100, 100);
                //g.Dispose();
            }
            pictureBox1.Image = bmp;
        }
728デフォルトの名無しさん:2011/06/16(木) 08:15:32.02
Visual Studio 2010 Express使ってます。

private void MyMethod(MyClass myclass)
としてエンターキーで
private void MyMethod(MyClass myclass){

}
のように自動挿入されるようにできませんか?

以前何かのときでVBではEnd Sub的なものが自動挿入されてるのをどこかで見た記憶があるので
どこかの設定で出来るとは思うのですが・・・
729デフォルトの名無しさん:2011/06/16(木) 08:19:21.89
730デフォルトの名無しさん:2011/06/16(木) 08:20:24.59
Pro以上にProductivity Power Toolだったかを入れる
731デフォルトの名無しさん:2011/06/16(木) 08:36:54.77
PanelクラスにRichTextBoxクラスを追加したときに
RichTextBoxの上でクリックするとPanelのほうでクリックイベントをキャッチすることはできるでしょうか?
732デフォルトの名無しさん:2011/06/16(木) 08:53:49.96
>>727
この流れで便乗質問。
PenオブジェクトやFontオブジェクト、GrarhicPathオブジェクトは、Disposeしたり、しなかったり、
いろんなケースを見ますが、Disposeが必要な基準って何ですか?
733デフォルトの名無しさん:2011/06/16(木) 09:58:34.97
RichTextBoxの中身がリッチエディットコントロールならWM_NOTIFYが来るんじゃないかと思ったけど

ClassName = WindowsForms10.RichEdit20W.app.0.3ee13a2_r13_ad1

なぁにこれぇ
734デフォルトの名無しさん:2011/06/16(木) 10:09:27.62
>>732
必要なくなったら
ガーベジコレクションに回収されるのを待ってられない時のためにある

逆にガーベジコレクションされないであろうオブジェクトに対しては実行しない
例えばPensとか
735デフォルトの名無しさん:2011/06/16(木) 10:11:23.94
Pensなどはそもそもそういう物じゃねーだろ
736デフォルトの名無しさん:2011/06/16(木) 10:47:01.89
>>731
そもそもそのPanelは必要なの?
737デフォルトの名無しさん:2011/06/16(木) 10:50:46.68
silverlightって背景色が設定できなくて不便ですね
738デフォルトの名無しさん:2011/06/16(木) 11:37:45.53
>>736
RichTextBoxからイベントをキャッチしようとしたら
スクロールバーをクリックした場合イベントが拾えなかったので
パネルにいれてパネル側からキャッチしようとしました
739デフォルトの名無しさん:2011/06/16(木) 19:41:10.17
誰かVisual Studioでハイアンドローゲーム作れない?
740デフォルトの名無しさん:2011/06/16(木) 19:42:16.64
>>732
自分で(ユーザーコードで)作ったかどうか。
自分で作ったものは必ずDisposeが基本。
現実にはPenやFontなんかDisposeしなくても何も問題はないけどね。
741デフォルトの名無しさん:2011/06/16(木) 19:50:21.46
>>739
宿題は宿題スレ
742デフォルトの名無しさん:2011/06/16(木) 21:19:45.80
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.FillEllipse(Brushes.Red, 50, 50, 100, 100);
}

これで○の部分だけをクリックしたら特定のイベントを実行したい
pictureBox1_Clickの場合だと○の部分ではなくてpictureBOx1の四角の範囲内でもイベントが発生してしまうので
何か良い方法ございませんか?
743デフォルトの名無しさん:2011/06/16(木) 21:22:33.20
pictureBox1_Clickの中で小学校で習う算数を使って地道にやれ
744デフォルトの名無しさん:2011/06/16(木) 21:59:14.67
三平方の定理は中学だよな?
745デフォルトの名無しさん:2011/06/16(木) 22:11:43.63
WPFならShapeでClickが拾えちゃうんだぜ〜
746デフォルトの名無しさん:2011/06/16(木) 22:22:03.73
それマジで言ってんの!?まじならすぐにでもWPFを覚えるんだが
747デフォルトの名無しさん:2011/06/16(木) 22:29:26.34
>>745
それはマジ

まあ円の判定は楽だよね
シューティングゲームの円と点の当たり判定を利用すればいい
748デフォルトの名無しさん:2011/06/16(木) 22:38:03.40
WPFはちょっとわからないので判定どうやるんですか!?
749デフォルトの名無しさん:2011/06/16(木) 22:40:32.42
当たり判定とか言い方が大げさ過ぎるw
本気で分からないなら人間止めた方がいいレベル
750デフォルトの名無しさん:2011/06/16(木) 22:42:05.05
そんなwおねがいします><
751デフォルトの名無しさん:2011/06/16(木) 22:45:21.31
>>749
数学で話をするよりゲームで話をした方がこういうのは入りやすいと思うんだが
マウスカーソルの位置と円のあたり判定

http://cs2ch.blog123.fc2.com/blog-entry-81.html
ここからコピー

            int x = System.Windows.Forms.Cursor.Position.X;
            int y = System.Windows.Forms.Cursor.Position.Y;
            int a = x - (this.Location.X + cx);
            int b = y - (this.Location.Y + cy);
            int cc = a * a + b * b;
            if (cc <= r * r)
            {

            }
            else
            {

            }
752デフォルトの名無しさん:2011/06/16(木) 22:45:39.59
マジモンなの?
点が円の中にあるかどうかは、円の中心からその点までの距離が半径以下かどうかで決まる。
2点間の距離の求め方が分からなければ中学から人生やり直しましょう。
753デフォルトの名無しさん:2011/06/16(木) 22:46:20.26
PointToClient使えよ
754デフォルトの名無しさん:2011/06/16(木) 22:47:48.81
まあ数学苦手なら(これぐらいの話を数学っていって欲しくねえがw)
Region使ってもいいよ
755デフォルトの名無しさん:2011/06/16(木) 22:49:04.85
>>754
でもこれって中学くらいに習うんじゃなかったっけ?
なので数学になってるよね
小学校までが算数だったような

そういう意味ではないという突っ込みは無しで
756デフォルトの名無しさん:2011/06/16(木) 22:49:15.16
ていうかカーソル位置の色見てもいいんだよ?
757デフォルトの名無しさん:2011/06/16(木) 22:50:35.89
あと、使ったことないがVS2010から旧VBのシェイプコントロールがデフォで
付属するようになったはずだから、あれを使えば何も考えなくてもできるでしょ
758デフォルトの名無しさん:2011/06/16(木) 23:08:43.05
>>751先生と>>753先生のでやってみたのですが正確に円のところでtrueにならず(ぇ
どこか数字の設定の仕方がおかしかったりしますかね
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.FillEllipse(Brushes.Red, 0, 0, 100, 100);
}

private void pictureBox1_Click(object sender, EventArgs e)
{
int cx = 50;
int cy = 50;
int r = 50;
int x = System.Windows.Forms.Cursor.Position.X;
int y = System.Windows.Forms.Cursor.Position.Y;
int a = x - (this.Location.X + 50);
int b = y - (this.Location.Y + 50);
int cc = a * a + b * b;
if (cc <= r * r)
{
MessageBox.Show("true");
}
else
{
MessageBox.Show("false");
}
>>753先生のが奥義PointToClientで座標を取得しろということで
>>754先生のRegionはコメントを使えって意味でしょうか?#region 〜#endregionでコメントを書けという事でしょうか (?_?)?
>>756先生のカーソル位置っていうはなんだか自分でも出来そうな気がしますので数学コードで書いたら勉強で試してみたいと誓いました
>>757先生のを検索してみたのですがシェイプコントロールがよく分からずorz
http://www.google.com/search?num=50&hl=ja&lr=lang_ja&tbs=lr%3Alang_1ja&q=c%23+%E3%82%B7%E3%82%A7%E3%82%A4%E3%83%97%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB&aq=f&aqi=&aql=&oq=
759デフォルトの名無しさん:2011/06/16(木) 23:15:29.14
>>758
>シェイプ
ツールボックスの"Visual Basic PowerPacks"のカテゴリーの中にある。
今試してみたけど、期待する通りの動作をするよ
760デフォルトの名無しさん:2011/06/16(木) 23:23:08.08
VC# 2010 Expressを使ってるんですけどどうやら無料版だからだと思いますが入ってないみたいです
761デフォルトの名無しさん:2011/06/16(木) 23:28:42.85
ググるとExpressにも入ってると出てくるけどな。
762デフォルトの名無しさん:2011/06/16(木) 23:37:20.56
文字数制限かかるのでインデント調整無しで
Point location = new Point(0, 0);
Size size = new Size(100, 100);
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.FillEllipse(Brushes.Red, location.X, location.Y, size.Width, size.Height);
}

private void pictureBox1_Click(object sender, EventArgs e)
{
int r = 50;
Point p = PointToClient(new Point(
Cursor.Position.X,
Cursor.Position.Y));
int x = p.X;
int y = p.Y;
int a = x - (location.X + size.Width/2);
int b = y - (location.Y + size.Height/2);
int cc = a * a + b * b;
if (cc <= r * r)
{
MessageBox.Show("true");
}
else
{
MessageBox.Show("false");
}
}
763デフォルトの名無しさん:2011/06/16(木) 23:39:50.63
検索してもVC# 2010 Expressで使えるという記事が見当たらず(有料版は使える記事はあるのですが。。。)
探す場所が違うのでしょうか・・・
ttp://uploader.sakura.ne.jp/src/up44638.jpg
764デフォルトの名無しさん:2011/06/16(木) 23:41:58.68
>>762
すごいです完璧です
ちょっとコードを読んでこれを勉強してみたいと思いました
765デフォルトの名無しさん:2011/06/16(木) 23:50:25.19
Shapeに関しては↓にチェック入れないと出てこない
ttp://www.dotup.org/uploda/www.dotup.org1705321.png
766デフォルトの名無しさん:2011/06/17(金) 00:02:58.74
ちょっと構造体の使い方に無駄が多いと思う
特にPointToClient(new Point(Cursor.Position.X, Cursor.Position.Y));
あとpictureBox1のLocationが(0, 0)じゃないと成立しないような
767デフォルトの名無しさん:2011/06/17(金) 00:18:30.53
基礎的なお作法から解らず、教えてください。
form1のToolStripMenuItem_Clickを押したときに
form2のprivate System.Windows.Forms.ComboBox comboBox1に
.Items.Addしてから、form2を.ShowDialogしたいのですけれど
itemsを渡す方法って、
comboBox1はprivateなんで、designer.cs弄ってglobalにしちゃえっていう事以外で
どういうやり方がお勧めなんでしょうか?
768デフォルトの名無しさん:2011/06/17(金) 00:24:13.77
form2にプロパティかメソッドを追加して値を渡して、form2でAdd
769デフォルトの名無しさん:2011/06/17(金) 00:26:05.87
そんなことはしないのが基本
項目を引数に取ってそれを追加するメソッドをForm2に定義しておいてShowDialogする前に呼ぶのが簡単かな
770デフォルトの名無しさん:2011/06/17(金) 00:39:43.15
あと各コントロールのプロパティウィンドウにModifiersってのがあるんで
771デフォルトの名無しさん:2011/06/17(金) 10:39:11.65
>>767
Form2の開き方で、微妙に変わってくる。
ShowDialogはモードレスで開くと言うことだから、一番シンプルで定型的。
dobonの.NET Tipsでも参考にしたら?
「別のフォームのデータを取得、設定する」
ttp://dobon.net/vb/dotnet/form/accessanotherformdata.html

ItemsのaddはForm2のLoadイベント中でやるのが簡単かも。
半年前に俺も同じこと躓いてたなぁ・・・・
772デフォルトの名無しさん:2011/06/17(金) 10:41:09.61
こんにちは!
comboboxをクリックしたときにでてくるリストのサイズは変更できないのでしょうか?
項目で文字数が多いのがあるとちょんぎれて読めないです。
combobox自体のサイズを大きくすればいいのでしょうがレイアウト上むずかしくて、せめて選ぶときだけわかればいいなと思いまして。
773デフォルトの名無しさん:2011/06/17(金) 10:47:07.11
訂正
>ShowDialogはモードレスで開くと

「モーダル」の間違い。
774デフォルトの名無しさん:2011/06/17(金) 10:49:09.25
>>772
プロパティにあるよ
デザイン画面で見てみればすぐわかると思うけど
775デフォルトの名無しさん:2011/06/17(金) 11:09:11.39
一通り探してみたんですが、どうしてもわからないのでご教授願えませんか

マウスの自動クリックを試してみたくてとりあえずプログラムを作ってみたんですが
全く動かないんです
エラーが出るわけでもなく、ただ自動クリックをしてくれないんです
原因がさっぱり掴めないんです

Google先生にも色々聞いて試してみたんですがさっぱりで・・・
結局「緑のバイク ★ 初めてのC#」からのコピペがほとんどなんです

コードは全部乗せた方がいいかと思い外部リンクを選びました
こちらです
http://ideone.com/OmbhL

動作は3つです

button1 をクリックすると
SendINPUTを利用してbutton2をクリックするはずです
(これが動作しません)

button2 をクリックすると
textbox1に 成功 と入力します

button3はForm2を表示します
Form2はあらかじめ定めたスクリーン座標を
赤い丸で表示します
この赤い丸にbutton2を手動で合わせるためです

どこが悪いのか教えて頂けませんでしょうか?
776デフォルトの名無しさん:2011/06/17(金) 13:33:10.13
何の意味があるのかよくわかんないけど右クリじゃん
777デフォルトの名無しさん:2011/06/17(金) 14:06:52.49
>>776
本当にありがとうございます
何の勘違いか左右間違えてました
動きました
ありがとうございます
ごめんなさい
恥ずかしいorz
778デフォルトの名無しさん:2011/06/17(金) 14:22:26.64
教えてくださいl。。
C#でblowfishを使いたいのですが、クラスとかないですか。。。
779デフォルトの名無しさん:2011/06/17(金) 14:25:28.66
これでできるらしい
http://www.bouncycastle.org/csharp/
780デフォルトの名無しさん:2011/06/17(金) 14:45:55.28
C#でwavファイルにエフェクトを書けながら再生したいのですが
そういうライブラリありませんか?
781デフォルトの名無しさん:2011/06/17(金) 14:50:36.47
782デフォルトの名無しさん:2011/06/17(金) 16:55:03.35
>>779
ありがとうございました。
使い方がよくわからない。。でも感謝!
783デフォルトの名無しさん:2011/06/17(金) 16:55:43.40
>>781
ありがとうございますた。
784デフォルトの名無しさん:2011/06/17(金) 16:57:49.34
C#でswfを再生するにはどうすればいいですか?
785デフォルトの名無しさん:2011/06/17(金) 17:01:34.35
まずActiveX版Flashを入れる。
次にプロジェクトの参照にCOMコンポーネントからShockwaveFlashObjectsを追加する。
こうするとShockwaveFlashObjectが使えるようになる。
あとはググれ。

デザイナで配置したい時は、メニューのツール→ツールボックスアイテムの選択→
COMコンポーネントタブのShockwaveFlashObjectにチェックを入れる。
786デフォルトの名無しさん:2011/06/17(金) 17:06:00.54
>>784
前スレか前々スレか良く覚えてないけど質問したときにコード載せたので使ってください
787デフォルトの名無しさん:2011/06/17(金) 17:11:23.88
>>786
結局うまくいかなかった記憶があるんだがw
788デフォルトの名無しさん:2011/06/17(金) 17:11:34.79
このスレだった希ガス
789デフォルトの名無しさん:2011/06/17(金) 17:34:56.35
いえうまくいかなかったのはflvの再生です
swfは投稿したコードで再生できますよ
790デフォルトの名無しさん:2011/06/17(金) 18:00:27.67
if 〜 if else 〜 if elseと1000個ぐらいになるのなら
別の方法考えたほうがいい?
791デフォルトの名無しさん:2011/06/17(金) 18:03:47.72
ぼくならswitchを使います
792デフォルトの名無しさん:2011/06/17(金) 18:19:40.93
excelか何かでコードを自動作成する
793デフォルトの名無しさん:2011/06/17(金) 18:58:01.84
>>790
&&や||でまとめられないか?と、switch
ifの意味毎に関数にまとめられるなら、まとめる
794デフォルトの名無しさん:2011/06/17(金) 19:39:26.43
ハッシュテーブル&デリゲート&クロージャとか動的生成で対処しとけ
1000個も分岐があったら保守するときに死ぬぞ
795デフォルトの名無しさん:2011/06/17(金) 20:02:51.13
意味ねーw
796デフォルトの名無しさん:2011/06/17(金) 20:21:28.94
1000個とか、
797デフォルトの名無しさん:2011/06/17(金) 20:22:19.52
1000個とか、どんなプロジェクトでいくんだ。
798デフォルトの名無しさん:2011/06/17(金) 20:28:57.49
赤鬼さんと朝まで豆まき
799デフォルトの名無しさん:2011/06/17(金) 22:13:09.14
前にメトロノーム話題になってたから、暇人なので作ってみた。製作時間8時間くらいで300行くらい書いたな。と、ちら裏。
800デフォルトの名無しさん:2011/06/17(金) 22:28:39.85
ちゃんと10^-6秒以内の誤差で作ったか?
801デフォルトの名無しさん:2011/06/17(金) 22:45:07.81
>>800
うげ。sleep使ってるから多分無理。ひまならデバッグしてみる??
802デフォルトの名無しさん:2011/06/17(金) 22:47:55.18
803デフォルトの名無しさん:2011/06/17(金) 22:49:53.28
統計的に誤差が増えなければ十分
一回の刻み感覚なんて少々ズレてもわからん
Sleep(1000)×10だから10秒とかは最悪
804デフォルトの名無しさん:2011/06/17(金) 23:00:09.60
>>802
MDXか。C#標準構成では難しいかな・・・。
うむー。

>>803
あー、累積してるかも試練。そこまで考えてなかった。
減算してないもんなー。なるほどね〜。
805デフォルトの名無しさん:2011/06/17(金) 23:13:10.86
暇だったらでばっぐしてちょ。
ttp://www1.axfc.net/uploader/File/so/64694.zip&key=2ch

使い方は起動するだけ。
右クリックでリスタート、左クリックでコンフィグ。
拍の変調のようなものも対応してる気がする。

音声生成はソフトーク。編集はサウンドエンジン。
806デフォルトの名無しさん:2011/06/17(金) 23:24:09.63
ニコ厨?
807805:2011/06/17(金) 23:28:18.64
>>806
ニコ動のフリーアカウントは持ってるが投稿したことないし廃人ではない。音楽つけっぱとかはやるけど。
808デフォルトの名無しさん:2011/06/17(金) 23:34:40.33
・FormにはDialogResultというものがあるんでIsOkはいらん
・BPMのstringを他フォームにそのまま公開するのはカスの所業
・怪しいprivate setはいらん
・ガイドライン的にはIsOk→IsOK、BPM→Bpm

とか書けばいいの?
809デフォルトの名無しさん:2011/06/17(金) 23:42:09.17
>>805
IDとパスワードを盗むやつでしょ
そんなのに引っかかりませんよ^^
810805:2011/06/17(金) 23:48:19.52
>>808
初心者なのでそういう指摘も歓迎。
・DialogResultは知らなかった。
・BPMの扱いは迷ったんだどどこかでまとめて変換したかったんだ。不味いみたいだから改める。
・怪しいprivate setは無いと実体がないからとコンパイラさんに起こられたのでつけた。解決策がほかにあれば教えてほしい。
.・アッパーキャメルなのは癖だね。ガイドラインは呼んだことが無いので一度呼んでみようかな。

って言う感じで、ちょっと検索してくる。

>>809
君が頑張ればそういう機能もつけれるよ。
実行ファイル入ってないし、ソースついてるんだから自分で判断してくだちぃ。
一応、俺はそんな機能作ってない。といっておく。ふふ。
811デフォルトの名無しさん:2011/06/18(土) 00:02:56.14
>>810
まあForm1からしたら入力値がエラーなのにOKで閉じちゃうとか舐めてんのかって話になる
呼び出し元では挽回は出来ないから、ちゃんとチェックして解析済みの値を返さないと

あとコンパイルエラーになるのはpublic string BPM { get; }でしょ?
public String BPM { get { return textBox1.Text; } }は通るはず
812805:2011/06/18(土) 00:26:56.76
ガイドラインおもろいね。関係ないけど、フォームデザイナ開いたらVC#EEが死ぬ病になってフォームが編集できん・・・。

>>811
確かにもし複数人で開発してたら責任問題だよね。そかー。
あと、コンパイラさんに起こられた原因解った。
コーディング中に欲出してprivate set;も書いてたからだったみたい。
消したら確かにコンパイル通るね。これは参った。次から気をつけるよ〜。


さてさて、今日はこの辺で落ちますよ。
>>808 と >>811は大変勉強になったので感謝感激ですよ。
みなさまありがとう!!またこんどー。b><;
813デフォルトの名無しさん:2011/06/18(土) 01:26:12.73
ただの糞コードじゃん
814デフォルトの名無しさん:2011/06/18(土) 03:09:14.45
>>813
どの辺がクソか書けばいいと思うよ。飯食って寝る。オヤスミ。
815デフォルトの名無しさん:2011/06/18(土) 03:56:30.15
「どの辺が糞なんだよ」からの「もうこねーよ!!」wwwwるんちゃん
816デフォルトの名無しさん:2011/06/18(土) 04:01:12.01
>>815
どの辺がクソか書けばいいと思うよ。
817デフォルトの名無しさん:2011/06/18(土) 04:16:42.85
>>815
どの辺がクソか書けばいいと思うよ。
818デフォルトの名無しさん:2011/06/18(土) 04:17:51.52
>>815
どの辺がクソか書けばいいと思うよ。
819デフォルトの名無しさん:2011/06/18(土) 04:19:32.02
>>815
どの辺がクソか書けばいいと思うよ。
820デフォルトの名無しさん:2011/06/18(土) 04:28:11.69
>>815
どの辺がクソか書けばいいと思うほね」。
821デフォルトの名無しさん:2011/06/18(土) 04:30:44.44
>>815
どの辺がクソか書けばいいと思うよ。
822デフォルトの名無しさん:2011/06/18(土) 04:31:06.15
>>815
どの辺がクソか書けばいいと思うほね」。
823デフォルトの名無しさん:2011/06/18(土) 04:31:54.53
>>815
どの辺がクソか書けばいいと思うほね」。
824デフォルトの名無しさん:2011/06/18(土) 04:45:08.53
>>815
どの辺がクソか書けばいいと思うよ。
825デフォルトの名無しさん:2011/06/18(土) 04:45:26.02
>>815
どの辺がクソか書けばいいと思うよ。
826デフォルトの名無しさん:2011/06/18(土) 05:32:12.22
>>815
どの辺がクソか書けばいいと思うよ。









827デフォルトの名無しさん:2011/06/18(土) 06:24:21.71
>>815
どの辺がクソか書けばいいと思うよ。
828デフォルトの名無しさん:2011/06/18(土) 06:24:40.74
>>815
どの辺がクソか書けばいいと思うほね」。
829デフォルトの名無しさん:2011/06/18(土) 06:33:56.67
>>815
どの辺がクソか書けばいいと思うほね」。
830デフォルトの名無しさん:2011/06/18(土) 06:35:03.65
>>815
どの辺がクソか書けばいいと思うよ。
















831デフォルトの名無しさん:2011/06/18(土) 06:41:29.89
もうそのままスレ埋めとけ
頼んだぞ
832デフォルトの名無しさん:2011/06/18(土) 07:17:18.30
そうだね
833デフォルトの名無しさん:2011/06/18(土) 07:18:18.38
ただの糞コードじゃん
834デフォルトの名無しさん:2011/06/18(土) 09:49:25.42
糞レスじゃん
835デフォルトの名無しさん:2011/06/18(土) 10:14:03.22
糞じゃん
836デフォルトの名無しさん:2011/06/18(土) 10:16:26.06
クソースにウンコードですよ
837デフォルトの名無しさん:2011/06/18(土) 10:18:45.96
音楽の話はスレチ
838デフォルトの名無しさん:2011/06/18(土) 12:22:26.22
D.C.
839デフォルトの名無しさん:2011/06/18(土) 12:26:13.55
透明あぼんですっきり

あ、あぼん報告乙ってのもあぼんしますから
840デフォルトの名無しさん:2011/06/18(土) 12:29:38.96
837 名前:デフォルトの名無しさん[sage] 投稿日:2011/06/18(土) 10:18:45.96
音楽の話はスレチ

838 名前:デフォルトの名無しさん[sage] 投稿日:2011/06/18(土) 12:22:26.22
D.C.

839 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
841デフォルトの名無しさん:2011/06/18(土) 12:32:02.06
>>839
あぼん報告も必死だなぁ
842デフォルトの名無しさん:2011/06/18(土) 12:32:51.26
あぼん報告はAPIスレだけにしてくれ
こっちでまでやらんでいい
843デフォルトの名無しさん:2011/06/18(土) 12:33:36.36
>>839
何がそんなに悔しいの?
844デフォルトの名無しさん:2011/06/18(土) 12:42:26.60
電子工作板で荒らし荒らし喚いてた奴だよ
845デフォルトの名無しさん:2011/06/18(土) 12:53:34.35
どこだよそれ
C#との関連性が全く分からんぞ
メトロノームでも出現したのか?
846デフォルトの名無しさん:2011/06/18(土) 12:59:56.07
メトロノームの質問者に粘着してる奴が電子工作板にいる
847デフォルトの名無しさん:2011/06/18(土) 13:05:11.38
>>846
案内よろしく
848デフォルトの名無しさん:2011/06/18(土) 14:11:00.49
俺もちょっと見たいわww
849デフォルトの名無しさん:2011/06/18(土) 14:14:36.92
675 名前:774ワット発電中さん[sage] 投稿日:2011/06/15(水) 23:41:25.15 ID:eh5h42zl [1/2]
メトロノームのヤツはC#のスレでも質問してた荒らしだよ

676 名前:774ワット発電中さん[sage] 投稿日:2011/06/15(水) 23:52:11.07 ID:0TNdHaCT
質問したら荒らしって発想がすごい

677 名前:774ワット発電中さん[sage] 投稿日:2011/06/15(水) 23:53:54.26 ID:eh5h42zl [2/2]
みんな真面目に答えてたけどありがとうも何も言わないで
その後やたら「メトロノームの精度は何が一番高いんですか?」とか
単発で荒らしまくったからな。
ここも質問してバックレだろ
同じヤツだよ

678 名前:774ワット発電中さん[sage] 投稿日:2011/06/15(水) 23:56:56.01 ID:hQgFhj3Y
感謝されたいから回答してたなら君は2ちゃん合わないと思う

679 名前:774ワット発電中さん[sage] 投稿日:2011/06/16(木) 00:01:46.32 ID:KYqUnk4S
感謝も糞も何も言わないでバックレてその後で荒れてるんだから荒らしと見なされても仕方ないわな
なぁ、荒らしクン

680 名前:774ワット発電中さん[sage] 投稿日:2011/06/16(木) 00:17:05.67 ID:sdNV8TEj
感謝とか
知恵袋でも行ってろよ

681 名前:774ワット発電中さん[sage] 投稿日:2011/06/16(木) 01:02:45.98 ID:p1y0VJaI
感謝強盗乙
850デフォルトの名無しさん:2011/06/18(土) 14:17:23.83
妥協したんじゃなかったのかよwww
851デフォルトの名無しさん:2011/06/18(土) 14:24:36.71
論点のズレっぷりに笑う
852デフォルトの名無しさん:2011/06/18(土) 14:24:45.63
コピペ君って馬鹿だな、まで読んだ。
853デフォルトの名無しさん:2011/06/18(土) 14:50:19.75
あれだけ誤差は蓄積しないように出来ると言われててもまだ理解してないんだな。
歳いくつだろ。
854デフォルトの名無しさん:2011/06/18(土) 15:00:44.82
それをいうなら「累積」でしょ。
蓄積って何だよ
855デフォルトの名無しさん:2011/06/18(土) 15:04:47.84
つうか1/1000が気になるほどのプロはPCのソフトなど使わないと思うんだ
PCのお手軽メトロノームなら、ある程度誤差があっても十分だよな
856デフォルトの名無しさん:2011/06/18(土) 15:19:16.27
メトロでNGした
東京メトロもヒットする
857デフォルトの名無しさん:2011/06/18(土) 15:30:59.74
Win8はメトロ調を基調とした云々
858デフォルトの名無しさん:2011/06/18(土) 15:48:16.73
メトロポリタンミュージアムはニューヨーク市にある〜
859デフォルトの名無しさん:2011/06/18(土) 16:00:52.30
タイムwwwトラベルわwwwwwwwwwたのしwwwwwwwwwwwwwww
860デフォルトの名無しさん:2011/06/18(土) 16:07:55.63
天使の像「靴下かたっぽだけとかナメてんの?」
861デフォルトの名無しさん:2011/06/18(土) 16:28:54.16
>>855
だからね、ここの人はメトロノームの使い方が分かってないのwww
BPM120(0.5000秒)を1000回鳴らしたとき、500秒に限りなく近ければ正確だと思ってるの。
それじゃあ、タイマーかストップウォッチだてーのにw
862デフォルトの名無しさん:2011/06/18(土) 16:34:18.40
メトロノームって1/1000の精度を要求する道具だったのか。
俺は普通に妥協しちゃうなー。
863デフォルトの名無しさん:2011/06/18(土) 16:36:58.23
メトロノームはPCに複数台入れて、同時稼働させながら集団個人練習する道具だと聞いたぞ?
あと地デジに関係があるとかないとか
864デフォルトの名無しさん:2011/06/18(土) 16:47:56.85
大好きな絵の中に閉じ込められた
865デフォルトの名無しさん:2011/06/18(土) 17:12:12.32
指揮者一人いれば済む話だな
866デフォルトの名無しさん:2011/06/18(土) 17:40:39.45
>>855
そうでもない。C#じゃなくてOSのカーネルの中とかまでゴニョゴニョするような代物だが、
Windows上で実測でJitter 12μsecで処理、という資料を見たことがある。

もっともIntelアーキテクチャもWindowsもそんな処理は想定していないから何かの拍子でアウトだがなw
867デフォルトの名無しさん:2011/06/18(土) 18:02:33.22
実際にこのスレで解決策なんか出たか?
868デフォルトの名無しさん:2011/06/18(土) 18:11:31.20
>>861
だからマイコンで出来るって話が出たんじゃないのかね
869デフォルトの名無しさん:2011/06/18(土) 18:21:49.26
>>853
>誤差は蓄積しないように出来るって何だよ
kwsk
870デフォルトの名無しさん:2011/06/18(土) 18:28:55.18
そもそもメトロノームのテンポ精度ってそんな高くない。
お前の持ってるメトロノーム並べて同時に動かしてみろよ。段々ズレてくのが分かるはず。

分からないならお前の耳と頭が腐ってる。
871デフォルトの名無しさん:2011/06/18(土) 18:52:28.23
>>864
それ大貫妙子
872デフォルトの名無しさん:2011/06/18(土) 18:59:50.48
ピーターラビットは〜
873デフォルトの名無しさん:2011/06/18(土) 19:42:16.05
>>867
WAV合成
874デフォルトの名無しさん:2011/06/18(土) 19:47:30.75
>>873
それって結局RTC使うってことなんだけどね。WindowsのGetTimeよりはマシかもしれないけど。

.netアプリでもUnsafe宣言したスレッドでRTCからの割り込みで動けたりしないのかな。
875デフォルトの名無しさん:2011/06/18(土) 19:50:30.45
>>874
でも、メトロノーム程度ならC+Win32で直接書いて良い気がするな
876デフォルトの名無しさん:2011/06/18(土) 19:59:48.89
WAVはサウンドチップにデータ垂れ流ししかしてないからチップのクロック依存では
877デフォルトの名無しさん:2011/06/18(土) 23:03:07.40
結局、機械式と電子式とではどっちが精度いいんですか
878デフォルトの名無しさん:2011/06/18(土) 23:12:03.17
>>877
機械式

アプリでメトロノーム作るのは、手軽に持ち歩けるとか、劣化しないとかの理由でしかない
879デフォルトの名無しさん:2011/06/18(土) 23:19:29.24
機械式は電気いらず。だけど風でゆれるビルの上では狂いまくるだろ。まどをあけて風を入れても狂うだろう。

電子式はしらね。

アプリでメトロノームを組む意味は、特有のカチコチ音がしないので録音が出来るし、
パソコンで動画再生とかしながらタイミングを合わせていろいろできる。
880デフォルトの名無しさん:2011/06/18(土) 23:26:34.93
おまえらのスキルじゃ作れない
881デフォルトの名無しさん:2011/06/18(土) 23:34:15.63
その手にはのらな
882デフォルトの名無しさん:2011/06/19(日) 00:43:38.70
メトロノームあげ^p^
883デフォルトの名無しさん:2011/06/19(日) 00:56:47.61
>>882
ソースどこー?
884デフォルトの名無しさん:2011/06/19(日) 01:05:46.98







メトロノーム













885デフォルトの名無しさん:2011/06/19(日) 07:23:21.54
そろそろあぼん報告いいっすか?
886デフォルトの名無しさん:2011/06/19(日) 10:39:07.38
ファイルダイアログ上でショートカットを設定する方法はございませんか?

ファイルダイアログはhttp://dobon.net/vb/dotnet/form/openfiledialog.htmlのもので
ファイルダイアログを開いた上体でalt+1を押したらメッセージボックス1を表示
alt+2でメッセージボックス2を表示するみたいな漢字でショートカットを作りたいのです
887デフォルトの名無しさん:2011/06/19(日) 11:08:40.59
C/C++ではOPENFILENAME構造体でlpHook設定すれば行けたはずだから同じ方法で行け…ねーのか
OpenFileDialogでフック設定できねー
888デフォルトの名無しさん:2011/06/19(日) 11:52:30.88
FileDialogからの派生でHookProcをオーバーライドとか?
889デフォルトの名無しさん:2011/06/19(日) 12:18:06.87
>>886
Application.EnterThreadModalでhWnd捕獲してNativeWindowに食わせれば
なんとかなるのでは?

なんかちょっと前にも同じこと書いた気がするが....
890デフォルトの名無しさん:2011/06/19(日) 12:33:16.00
そもそも変なオペレーション作り込まない方がいいと思うけどね
891デフォルトの名無しさん:2011/06/19(日) 13:16:18.67
秀丸と秀丸ファイラーをインストールして
秀丸の動作環境のファイルから開くのダイアログボックスの設定で秀丸ファイラーに設定します
それで秀丸でctrl+oでファイルダイアログを出します
その状態でalt+nを押すとファイル名を入力する枠にフォーカスが移り
alt+lを押すとファイルが並んでいるところにフォーカスが移ります
こういうことがやりたいんですが>>887->>889さんのやり方で出来るか調べてみます
892デフォルトの名無しさん:2011/06/19(日) 13:21:08.04
開くダイアログくらい自作しようぜ
893デフォルトの名無しさん:2011/06/19(日) 13:21:27.27
なんだこの前の秀丸尾か
まだやってたのか
894デフォルトの名無しさん:2011/06/19(日) 13:22:07.47
895デフォルトの名無しさん:2011/06/19(日) 13:24:17.13
俺ならできる。
896デフォルトの名無しさん:2011/06/19(日) 13:25:18.46
無限の労力をかければ
897デフォルトの名無しさん:2011/06/19(日) 13:28:06.05
それマジで言ってんの?マジなら総力を持って作るが
898デフォルトの名無しさん:2011/06/19(日) 13:30:36.40
つうか技術的にネックになる部分が特に見あたらん
初級者でも頑張れば大丈夫だろ
899デフォルトの名無しさん:2011/06/19(日) 13:33:50.38
アイコン拾うのは標準じゃ出来ないから面倒か
900デフォルトの名無しさん:2011/06/19(日) 13:35:06.93
いやファイラー、というかWindowsベッタリのものをC#で作るのは結構面倒。
普通に考えればネックありまくりなはずだと思うが....
自称上級者様はこれだからな
901デフォルトの名無しさん:2011/06/19(日) 13:35:49.87
ダイアログとかほっといて、もっと他のところに注力した方がいいんじゃないのかねぇ
ダイアログ呼び出す本体側とかさぁ
902デフォルトの名無しさん:2011/06/19(日) 13:37:40.89
アイコンはExtractAssociatedIconがある
903デフォルトの名無しさん:2011/06/19(日) 13:43:29.47
ただシェル(IShellFolder)操作はCOMが絡むから
シェルのコンテキストメニュー表示したりってのは>>891の実力だとフルスクラッチは厳しいと思う
探せば転がってると思うけど
904デフォルトの名無しさん:2011/06/19(日) 13:48:04.20
10年前はIShellFolderなど、今頃は絶滅している物だと思っていましたw
905891:2011/06/19(日) 13:49:22.45
                  ____
                /     \
                  |           |
                .|         |
                .|  ^     ^  | 
                   |  >ノ(、_,,)ヽ、 | < あまり私の実力を甘く見ないほうがいい
                 |  ! -=ニ=-  |   
                /`、 i `ニニ'  /
             __/ニヘ       「L__
        __,,,,==ニニ三三ヘ.`¨¨¨¨´ ||三ニ==、__
     /三三三三三rイ◯三ニ|   \__,/ |三三三三ニ==、
     _|三三三ニ/  `ーイニ三;;| ./三\ |三三三三三三;\
    _|三三三=广 \. `i,j! }ニ;|  \三/ :|三三三三三三三|
     |三三三iく  \  { /三=|  :|三|  |三三○三三三三;|
   __/三三三|| \_}ー^三三三|  |三;| |三三三三三三三;;|
 /三三三三;|\__,リ三三三ニ|  :|三;;| :|三三三三三三三;;;|
 |三三三三三|   /三三三ニ=;|  |三ニ|:|三三三三三三三ニ;|
 |三三三三三`==='三三三三三ニ| |三三||三三三三三三三三
906デフォルトの名無しさん:2011/06/19(日) 13:50:11.67
CodeProjectに参考になりそうなものは転がってた
http://www.codeproject.com/KB/shell/csdoesshell1.aspx
907デフォルトの名無しさん:2011/06/19(日) 14:29:47.40
あぼんだらけ
908デフォルトの名無しさん:2011/06/19(日) 14:40:47.59
buttonを押したらマウスの右クリックを押したときの動作をする方法ってございませんか?
909デフォルトの名無しさん:2011/06/19(日) 14:44:44.80
>>908
>>775のあたりに書いてある
910デフォルトの名無しさん:2011/06/19(日) 14:51:04.52
>>775さんありがとうございます
http://ideone.com/OmbhL使わせていただきます
911デフォルトの名無しさん:2011/06/19(日) 16:20:00.90
listboxで選択したアイテムの背景色もしくは太字にする方法をご教示お願いします
912デフォルトの名無しさん:2011/06/19(日) 16:24:16.82
オーナードローかカスタムドロー
913デフォルトの名無しさん:2011/06/19(日) 16:34:15.08
補足しておくと、オーナードローはOwnerDrawプロパティをtrueにして所定のイベントハンドラを実装すればいい
描画する部分が結構面倒くさい

カスタムドローはフォント返すだけなので楽
ただしWndProcでやらなければいけないのでそこに至るまでが面倒くさい

好きな方どうぞ
私はカスタムドローの方が好きです。お勧めはしませんが
914デフォルトの名無しさん:2011/06/19(日) 16:38:37.13
特定のプラットフォームに依存した話題はスレチ
915デフォルトの名無しさん:2011/06/19(日) 16:43:01.06
そんなバカなアアアアッッッツ!
916デフォルトの名無しさん:2011/06/19(日) 16:44:28.77
カスタムド ロー
917デフォルトの名無しさん:2011/06/19(日) 17:22:36.27
関西人はカスドと呼ぶ
918デフォルトの名無しさん:2011/06/19(日) 17:40:47.68
>>914
Win以外の。ですね
分かります
919デフォルトの名無しさん:2011/06/19(日) 17:44:14.49
このくそカスドもがァーッ!
920デフォルトの名無しさん:2011/06/19(日) 17:45:56.32
つまんねーんだよ死ね
921デフォルトの名無しさん:2011/06/19(日) 18:05:55.19
List<MapObject> MapObjects = new List<MapObject>();

↑のリストの中にブロックやらコインやらが入ってます。

で、例えばMapObjectを継承したCoinBlockにだけ特定の処理をしたい場合、
どうやってこのインスタンスはCoinBlockですっていう判別すればいいの?

instanceof演算子の代わりになるような物があれば教えて
922デフォルトの名無しさん:2011/06/19(日) 18:08:44.10
インスタンス変数にCoinBlockフラグを入れる
923デフォルトの名無しさん:2011/06/19(日) 18:10:18.43
クラスが違うのならisかas
924デフォルトの名無しさん:2011/06/19(日) 18:10:26.95
>>921
is
っていうか、var使って
925デフォルトの名無しさん:2011/06/19(日) 18:15:42.67
フォームのMenuStripとシステムトレイのContextMenuStripで特定のドロップダウンを
共有したいと思っています。

調べたり試行錯誤した結果、1つのContextMenuStripを両方のDropDownに設定すれば良さそうに見えました。
ToolStripMenuItemとしてプラグイン用に公開しており、互換性の観点からToolStripMenuItemとして
公開したまま共有したいと考えています。

いい解決策をご存知の方おられましたら、ご教示ください。

Visual C# 2010 Express Edition + .NET framework 4.0 で開発しています。
926デフォルトの名無しさん:2011/06/19(日) 18:16:57.18
コードページ298を使いたいんですが、そんなローカルかつ古くさいのが実装されているはずも無く……
何か良い方法無いですかね?
927デフォルトの名無しさん:2011/06/19(日) 18:19:19.21
>>925
何をいっているのかさっぱり分からないのはたぶん俺の側の問題ではないはず....
928デフォルトの名無しさん:2011/06/19(日) 18:21:19.92
>>927
分かりづらくてすいません。

フォームのメニューの中にドロップダウンメニューがあるのですが、
そのドロップダウンメニューをシステムトレイから開くコンテクストメニューからも
開けるようにしたい、というのが目的です。
929デフォルトの名無しさん:2011/06/19(日) 18:22:28.38
フォームのMenuStripとタスクトレイのContextMenuStripでメニューを共有したいです

タスクトレイのContextMenuStripに提供しているToolStripMenuItemはプラグイン化されているので
これをフォームのMenuStripで使うにはどうしたらよいでしょうか
930デフォルトの名無しさん:2011/06/19(日) 18:23:37.85
>>928
そのフォームとタスクトレイって別プログラムなの?
931デフォルトの名無しさん:2011/06/19(日) 18:24:24.26
>>930
同じプログラムです。
932デフォルトの名無しさん:2011/06/19(日) 18:27:36.85
CP298ってEBCDICじゃないのかw
933デフォルトの名無しさん:2011/06/19(日) 18:27:46.16
>>928
そのフォームのインスタンスが常に存在している前提なら、
システムトレイ側のコンテクストメニューが表示されるタイミングで
フォーム側のMenuItemのクローンを作ってAddする方法でよいのでは?

クローンはMemberwiseCloneで通常はOK。
これでイベントハンドラも共有できる。
934デフォルトの名無しさん:2011/06/19(日) 18:30:21.08
int i = MapObjects.FindIndex( (MapObject inMapObject) => (inMapObject is CoinBlock));


何とかなりそう助かったわ
クズどもありがとう
935デフォルトの名無しさん:2011/06/19(日) 18:30:45.82
プラグインって何だったのか疑問が残るな。
一般的な意味ではなさそうだ。
936デフォルトの名無しさん:2011/06/19(日) 18:34:06.95
=>とかなんだよ
C#キモイな
937デフォルトの名無しさん:2011/06/19(日) 18:39:00.54
>>934
なんでそうなるw
938デフォルトの名無しさん:2011/06/19(日) 18:41:57.65
>>936
Cのアロー演算子よりまし。
でも>>とかにしてもらったほうがタイプしやすかったかもしれんとは思う。
939デフォルトの名無しさん:2011/06/19(日) 18:51:06.02
>>934
objects.OfType<CoingBlock>() とかもあるよ。
940デフォルトの名無しさん:2011/06/19(日) 18:52:08.87
>>933
なるほど、クローンを作ればいいですね。ありがとうございます。

>>935
機能を拡張するDLLを読み込めるように作っており、
それをプラグインと呼んでいました。一般的な意味とは異なるのでしょうか。
すみません。
941デフォルトの名無しさん:2011/06/19(日) 18:57:25.65
sw.WriteLine(item.Value.Replace(" ","").Trim());

XML化後のスクレイピングで" "が削除できません教えてください
942デフォルトの名無しさん:2011/06/19(日) 18:59:25.85
消えたので連投

sw.WriteLine(item.Value.Replace("&NBSP;","").Trim());

XML化後のスクレイピングで&NBSP;が削除できません教えてください
943デフォルトの名無しさん:2011/06/19(日) 19:29:17.19
>>942
nbsp が Unicode のU+00A0 1文字に置き換わってるとか、
大文字小文字が違うとか、
そんなのではなく?

Regex 使って RegexOptions.IgnoreCase して Replace
あと、同じく Regex で \s を消してみるとか。
944デフォルトの名無しさん:2011/06/19(日) 19:32:54.65
>>921のをvarでやったらどうなるんだ?
945デフォルトの名無しさん:2011/06/19(日) 20:08:09.49
>>943
d明日試してみるわ
946デフォルトの名無しさん:2011/06/19(日) 20:12:21.78
>>912913
どうもです
難しいんですね
947デフォルトの名無しさん:2011/06/20(月) 11:35:45.57
VC#を起動してプロジェクトを作りました
フォームにwebbrowser1を配置しました
右下のプロパティの所でurlにabc.htmlを書いたのですが表示出来ませんでした
プロジェクト内に置いたabc.htmlを読み込んで表示する方法をご教示お願いします
948デフォルトの名無しさん:2011/06/20(月) 11:38:03.19
>>947
フルパスで書いてください
949デフォルトの名無しさん:2011/06/20(月) 11:43:00.80
出来ましたありがとうございます
頭にres://って書かないほうがよかったんですね
950デフォルトの名無しさん:2011/06/20(月) 11:45:29.56
逆引きサンプル集の本ってないんですか?
951デフォルトの名無しさん:2011/06/20(月) 11:48:16.03
ここで聞けばいいよ
952デフォルトの名無しさん:2011/06/20(月) 11:57:15.88
>>951
ありがとうございます行き詰ったらここで勉強させて頂きます
953デフォルトの名無しさん:2011/06/20(月) 12:27:22.86
win用GUIアプリを作るとき、コレからはじめるならC#1択なのかな?
954デフォルトの名無しさん:2011/06/20(月) 12:30:40.24
俺は歳が歳だからC#しか覚える時間がない
955デフォルトの名無しさん:2011/06/20(月) 12:39:23.92
webbrowser1に表示したhtmlを書き換えて表示したいのですが方法ございませんか?
button1を押したらプロジェクト内に置いたa.htmlを表示して
button2を押した時にa.htmlの特定のDOMを書き換えて表示したいのですが
butoon2を押した時にa.htmlに上書きする形で全部書き直して表示するという方法は思いついたのですが
実行するたびに書き直すのは効率が悪いような感じもありまして、次に起動したときにa.htmlの内容が変わってしまうという

理想としてはもしくはstring html="html文書の内容";みたいにして
c#側でhtmlを生成して(htmlファイルを作らない)表示する方法がございませんか?
956デフォルトの名無しさん:2011/06/20(月) 12:39:34.88
でも実際さぁ、関西の人って文章打つとやっぱ関西弁になるの?
しゃべるのと打つのじゃ別?
957デフォルトの名無しさん:2011/06/20(月) 12:46:37.40
958デフォルトの名無しさん:2011/06/20(月) 13:09:45.09
ありがとうございます参考にやってみました
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace HtmlRenshuu17
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
webBrowser1.DocumentText = "<html><head><script src=\"test.js\"></script></head><body><p>teset</p></body></html>";
}
}
}

フォルダ内に置いたtest.js(中身はalert(1);のみ)を読み込みたいのですが
実行したらこのページのスクリプトでエラーが発生しましたとでます
スクリプトを読み込まない場合はエラーはなくhtmlが表示できます
webサーバ上で同じhtml文書を開いた場合も確認しましたがエラーは出ませんでした
アドバイスをお願いいたします
959デフォルトの名無しさん:2011/06/20(月) 13:11:36.79
jsのパスを絶対パスで指定しろ
960デフォルトの名無しさん:2011/06/20(月) 13:36:34.20
C:\test.jsに置いて
webBrowser1.DocumentText = "<html><head><script src=\"c:/test.js\"></script></head><body><p>teset</p></body></html>";
とやってみたのですが同じエラーがでます
961デフォルトの名無しさん:2011/06/20(月) 13:49:30.01
せっかくstringでやってるんだから自分で読んで入れたらいいんじゃねえの
962デフォルトの名無しさん:2011/06/20(月) 13:56:18.48
ライセンスの問題もあるので組み込めないのです
963デフォルトの名無しさん:2011/06/20(月) 14:28:25.28
ローカルのファイルのパス指定は、file:///〜だろ
964デフォルトの名無しさん:2011/06/20(月) 14:29:24.67
c# webbrowser javascriptでぐぐったら
http://ameblo.jp/norixp/entry-10013046111.html
というページがでてきた
965デフォルトの名無しさん:2011/06/20(月) 14:46:12.96
実行ファイルと同じ位置にtest.jsがあるならわざわざfile:///で絶対パスで書く必要ないと思うんだが
966デフォルトの名無しさん:2011/06/20(月) 14:48:57.73
ところがそうでもないのだよ
967デフォルトの名無しさん:2011/06/20(月) 15:05:01.97
カレントディレクトリをしつこく管理していればまあ何とかなるかもしれんが
968デフォルトの名無しさん:2011/06/20(月) 15:05:03.19
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace HtmlRenshuu25
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
HtmlDocument doc = webBrowser1.Document;
if (doc == null) MessageBox.Show("エラー1");
HtmlElement jsElem = doc.CreateElement("SCRIPT");
jsElem.SetAttribute("type", "text/JavaScript");
jsElem.SetAttribute("src", "file:///c:/test.js");
if (doc.Body == null) MessageBox.Show("エラー2");
doc.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, jsElem);
}
}
}
>>963-966ありがとうございます
こう書いてみましたが同じエラーが出ます
969デフォルトの名無しさん:2011/06/20(月) 15:27:37.54
これなら動いた

HtmlDocument doc = webBrowser1.Document;
if (doc == null) return;

HtmlElement jsElem = doc.CreateElement("SCRIPT");
jsElem.SetAttribute("language", @"JavaScript");
jsElem.SetAttribute("type", @"text/JavaScript");
jsElem.SetAttribute("src", "http://localhost/hoge.js");

if (doc.Body == null) return;
doc.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, jsElem);

970デフォルトの名無しさん:2011/06/20(月) 15:31:42.85
試してみたが、、、file:///test.js なら動いたな。
ドライブレターのコロンは問題出るのかも
971デフォルトの名無しさん:2011/06/20(月) 15:33:53.89
あ、でもいきなりコンストラクタに書いたんではなく、
webBrowser1_DocumentCompleted()に書いたけどな。
972デフォルトの名無しさん:2011/06/20(月) 15:34:52.21
完璧だ
HtmlDocument doc = webBrowser1.Document;
if (doc == null) return;

System.IO.Directory.SetCurrentDirectory(@"C:\");

HtmlElement jsElem = doc.CreateElement("SCRIPT");
jsElem.SetAttribute("language", @"JavaScript");
jsElem.SetAttribute("type", @"text/JavaScript");
jsElem.SetAttribute("src", "file:///hoge.js");

if (doc.Body == null) return;
doc.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, jsElem);
973デフォルトの名無しさん:2011/06/20(月) 15:38:28.29
超完璧だ
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.DocumentText = "<html><head></head><body><p>test</p></body></html>";
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlDocument doc = webBrowser1.Document;
if (doc == null) return;

System.IO.Directory.SetCurrentDirectory(@"C:\");

HtmlElement jsElem = doc.CreateElement("SCRIPT");
jsElem.SetAttribute("language", @"JavaScript");
jsElem.SetAttribute("type", @"text/JavaScript");
jsElem.SetAttribute("src", "file:///test.js");

if (doc.Body == null) return;
doc.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, jsElem);
}
974デフォルトの名無しさん:2011/06/20(月) 15:56:04.05
>>969さん>>971ありがとうございます。当方の環境にはapacheをインストール済みなのですがなるべくwebサーバを立てない環境でも動かせたらと思います
>>970さんありがとうございます。コロンは問題があるのですね。メモに書いておきました。
>>972さん>>973さんありがとうございます。試してみたのですがフォームのソースは<html><head></head><body><p>test</p></body></html>
で当方ではscriptが追加されているところを残念ながら確認できませんでした。
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlDocument doc = webBrowser1.Document;
if (doc == null)
{
MessageBox.Show("11111111");
return;
}

System.IO.Directory.SetCurrentDirectory(@"C:\");

HtmlElement jsElem = doc.CreateElement("SCRIPT");
jsElem.SetAttribute("language", @"JavaScript");
jsElem.SetAttribute("type", @"text/JavaScript");
jsElem.SetAttribute("src", ".file:///test.js");

if (doc.Body == null)
{
MessageBox.Show("2222222222");
return;
}
doc.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, jsElem);
}

private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.DocumentText = "<html><head></head><body><p>test</p></body></html>";
}
975デフォルトの名無しさん:2011/06/20(月) 15:57:07.37
レスのミス
private void Form1_Load(object sender, EventArgs e)ではなくて
private void Form1_DoubleClick(object sender, EventArgs e)です
976デフォルトの名無しさん:2011/06/20(月) 16:12:48.06
ソースには無いだけでJavaScriptは読み込まれてるよ
977デフォルトの名無しさん:2011/06/20(月) 16:14:49.43
そうでしたか
test.jsの内容は
window.onload=function(){alert(1);}なのですが実行されません
978デフォルトの名無しさん:2011/06/20(月) 16:15:46.20
alert(1);
だけにしてみそ。
979デフォルトの名無しさん:2011/06/20(月) 16:19:06.42
あるいは
doc.GetElementsByTagName("HEAD")[0].InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, jsElem);
としてみそ
980デフォルトの名無しさん:2011/06/20(月) 16:30:23.34
>>977
DocumentText弄っても、そのタイミングでOnLoadは発生しないと思うんだ
981デフォルトの名無しさん:2011/06/20(月) 16:40:03.44
>>978-980ありがとうございます
alert(1);に書き換えてました。
doc.GetElementsByTagName("HEAD")[0].InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, jsElem);としても実行されませんでした
982デフォルトの名無しさん:2011/06/20(月) 16:57:01.89
うちでは実行できたよ
983デフォルトの名無しさん:2011/06/20(月) 16:59:42.72
ちょっと原因が良く分からないのでOSを入れなおすところからはじめてみます
984デフォルトの名無しさん:2011/06/20(月) 20:00:57.63

C#でインターネット(ネットワーク)を勉強したいんだけど

おすすめの本教えて!エロイ人!
985デフォルトの名無しさん:2011/06/20(月) 20:16:41.36
C#に関係ない技術だから専門に解説している本は存在しない
OSI参照モデルとかでググれば
986デフォルトの名無しさん:2011/06/20(月) 20:55:18.01
Σ(||゚Д゚)ガビーン
ないのか!

OSI参照モデル・・・・・難しそうだorz
レスとんくす
987デフォルトの名無しさん:2011/06/20(月) 20:57:48.06
WebClient、WebRequest、Socketあたりマスターすればおk

Socketが一番低レイヤーだからSocket使えるなら基本的に何でもできる
988デフォルトの名無しさん:2011/06/20(月) 21:40:15.24
まあ、大概のことはWebClientだけあれば十分だけど。
989デフォルトの名無しさん:2011/06/20(月) 21:42:17.81
Socket使い出すとソースがカオスになるのは俺だけか?
990デフォルトの名無しさん:2011/06/20(月) 21:53:01.95
綺麗に書けば美しいよ
memcached何かのソース見ても
991デフォルトの名無しさん:2011/06/20(月) 23:55:31.68
インストール完了
結構時間かかった・・・
992デフォルトの名無しさん:2011/06/21(火) 09:09:49.62
>>984
絶対現場主義VisualC#実践講座 Webアプリケーション編―開発の現場から生まれた実践テクニック&TIPS集

とか、どうだろうか?
993デフォルトの名無しさん:2011/06/21(火) 09:48:06.46
ネットワークスペシャリストの資格を取ればいいよ。
俺はそれで結構わかった。
994デフォルトの名無しさん:2011/06/21(火) 12:12:18.59
char[] chTrims = { '(', ')', '$', ',' };

コンマを消したいのですが消えません
995デフォルトの名無しさん:2011/06/21(火) 12:30:26.16
それだけじゃ消えないだろ。
何呼んでるか知らんけど、trim系は先頭か末尾だぞ
996デフォルトの名無しさん:2011/06/21(火) 14:03:48.99
>>995
おおサンクス、頭働かんかったわ、d
997デフォルトの名無しさん:2011/06/21(火) 14:43:54.70
>>996
デスマもほどほどにな・・・
998デフォルトの名無しさん:2011/06/21(火) 15:52:49.32
ふらっとC#,C♯,C#(初心者用) Part76
http://hibari.2ch.net/test/read.cgi/tech/1308639127/
999デフォルトの名無しさん:2011/06/21(火) 15:56:50.96
1000デフォルトの名無しさん:2011/06/21(火) 16:00:55.79
while(Ore == doutei)
{
  Ore.Onanie();
  Ore.life = Ore.life - 1
  if (life == 0)
  {
    technobreak;
  }
}
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。