1 名前:デフォルトの名無しさん [2012/03/21(水) 13:47:38.31 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっとC#,C♯,C#(初心者用) Part87 toro.2ch.net/test/read.cgi/tech/1330881286/ ■関連スレ C#, C♯, C#相談室 Part70 toro.2ch.net/test/read.cgi/tech/1327570969/ ミスターサタンのC#相談室 hibari.2ch.net/test/read.cgi/tech/1092656075/ VB.NET質問スレ(Part38) toro.2ch.net/test/read.cgi/tech/1325083428/ くだすれC++/CLI(初心者用)part2 hibari.2ch.net/test/read.cgi/tech/1268613679/
267 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 02:42:11.90 ] つまんねー人間ほどダラダラと言い訳を述べるよなあーお前も>>249 も
268 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 03:21:53.75 ] うまく作れなくてイライラしてるんだろうけど巻き込むなよ
269 名前:デフォルトの名無しさん [2012/03/25(日) 03:46:00.98 ] 配列コピーするのに↓だとできるのに static string[,] ArrayCopy(string[,] array1, int sourceIndex, int destinationIndex, int length) { string[,] array2 = new string[array1.GetLength(0), array1.GetLength(1)]; for (int a = 0; a < length; a++) { for (int b = 0; b < array1.GetLength(1); b++) { array2[a + destinationIndex, b] = array1[a + sourceIndex,b]; } } return array2; } ↓だとできないのはなぜか教えろ static string[,] ArrayCopy(string[,] array1, int sourceIndex, int destinationIndex, int length,string[,]array2) { for (int a = 0; a < length; a++) { for (int b = 0; b < array1.GetLength(1); b++) { array2[a + destinationIndex, b] = array1[a + sourceIndex,b]; } } return array2; }
270 名前:269 [2012/03/25(日) 03:48:50.45 ] 下のarray1はarray2と同じ
271 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 03:49:53.75 ] >>269 がんばれ
272 名前:デフォルトの名無しさん [2012/03/25(日) 04:07:34.29 ] やり方わかった 引数変えると元の配列が変わるのか なんでこんなにくそなんだ
273 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 04:08:22.69 ] private class Person { public String personText = "Person"; } private class Student : Person { private String studentText = "Student"; public String getText() { return (personText + studentText); } } public class Entry { public static void test(Person p) { Student s = p as Student; Console.Write(s.getText()); } } これで、Entry.testをコールした後、GCでstudentTextは解放されるのでしょうか?
274 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 04:11:03.30 ] >>272 自分が糞なのが棚にあがってる >>273 なんでそんなこと心配するのか
275 名前:274 mailto:sage [2012/03/25(日) 04:13:40.53 ] >>274 作ってるやつのPerson的クラスで画像読み込みとかしようと考えてて、 メモリリークで落ちるのが怖くて
276 名前:デフォルトの名無しさん [2012/03/25(日) 04:15:30.11 ] その程度のテキストでどれだけメモリ食うんだよw
277 名前:273 mailto:sage [2012/03/25(日) 04:32:06.99 ] >>276 サイズに関わらずメモリリークを意識すべきだと思うけどな 調べてたら分かった。 キャストしても参照の型が変わるだけで、コンストラクタすら呼ばれないみたい
278 名前:デフォルトの名無しさん [2012/03/25(日) 04:34:08.70 ] この程度のテキストなんて意識してもしかたないよw むしろがっつりメモリ食う方でちゃんと計算すればいいだけ
279 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 05:08:43.26 ] >>273 解放されない。 コンパイル時に確定するstringはメタデータとして読み込まれるので、 アセンブリがロードされた時にメモリ上に確保されて、AppDomainが破棄されるまでは残る。 文字列インターン プールから取ってきてるので大量にPersonのインスタンス作っても、消費するのは1個分だけ。 まぁ、著しく常識外れな長さの文字列をコードに埋め込まなければ気にする必要はないね。
280 名前:273 mailto:sage [2012/03/25(日) 05:28:53.47 ] >>279 文字列インターン プールってのは初耳だった。 裏でこんなことやってたのか。 勉強になった。ありがとう。
281 名前:デフォルトの名無しさん [2012/03/25(日) 06:10:22.04 ] XmlWriterでDispose()しようとすると「アクセス出来ない保護レベルです」と怒られます。 原因とその解決法ご存知の方いらっしゃいましたらご回答ください。 当方VS2010/.Net Framework4です。
282 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 06:14:19.39 ] コードだせ
283 名前:デフォルトの名無しさん [2012/03/25(日) 06:29:08.53 ] XmlWriterSettings SaverHelper = new XmlWriterSettings(); SaverHelper.Indent = true; SaverHelper.IndentChars = " "; SaverHelper.Encoding = Encoding.UTF8; XmlWriter Saver = XmlWriter.Create(saveServer.FileName, SaverHelper); Saver.Flush(); Saver.Close(); Saver = XmlWriter.Dispose(true); ↑ ここに赤波線 関数はprivate voidです 保護レベルとなると違うところに原因があるような・・・
284 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 06:32:38.07 ] protected メソッドじゃん
285 名前:デフォルトの名無しさん [2012/03/25(日) 06:34:30.13 ] ttp://msdn.microsoft.com/ja-jp/library/system.xml.xmlwriter_methods(v=vs.100).aspx に書いてるのを見るとDispose(bool)はプロテクトメソッドですがDispose()はパブリックメソッドなんですよね・・・
286 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 06:38:18.14 ] falseは試したの?
287 名前:デフォルトの名無しさん [2012/03/25(日) 06:39:50.76 ] ダメでした なんだかなぁ・・・
288 名前:デフォルトの名無しさん [2012/03/25(日) 06:40:05.27 ] ここみると後始末の仕方がぜんぜん違うけど どこを見てそんなコードにしたの? msdn.microsoft.com/ja-jp/library/ms162618.aspx
289 名前:デフォルトの名無しさん [2012/03/25(日) 06:43:04.44 ] Close()でいいんですか?
290 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 06:56:09.42 ] >>288 を見て考えろ
291 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 07:31:24.25 ] >Saver = XmlWriter.Dispose(true); XmlWriterってインスタンスじゃなくて型じゃないか。 ↑が呼ぼうとしてるのは static XmlWriter XmlWriter.Dispose( bool ) というメソッドであって、そんなものは存在しない
292 名前:デフォルトの名無しさん [2012/03/25(日) 07:48:27.19 ] と言われて Saver.Dispose(); でやってみるも「アクセスできない保護レベル」と怒られる。 >>288 ありがとうございました 全部手探り状態なんです・・・
293 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 09:35:07.30 ] 明示的な実装をされているのでキャストしないと駄目 プログラミングガイドに思い切り書いてあるのに手探りとはドMだね msdn.microsoft.com/ja-jp/library/67ef8sbd.aspx msdn.microsoft.com/ja-jp/library/ms173157%28v=vs.100%29.aspx でもそういうアブノーマルなプレイは公然と行うと迷惑ですよ
294 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 10:02:47.47 ] どうも失礼しました・・・
295 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 10:18:57.61 ] Closeは内部でDisposeしてるんだからわざわざDisposeしなおす必要はないんじゃないか?
296 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 10:21:21.22 ] なんかいろいろ失礼しました ちゃんと勉強します・・・
297 名前:デフォルトの名無しさん [2012/03/25(日) 10:21:56.33 ] その前に>>288 を提示されてそれでもまだ拘るところがダメだけどね MSの中の人がDisposeしてないんだしいらないのかなあって普通想像するだろw
298 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 10:25:10.98 ] その考え方はお勧めできん サンプルはサンプルであってそのまま実用できるとは限らない 昔のGCHandleのサンプルみたいにバグってるケースもあるし
299 名前:デフォルトの名無しさん [2012/03/25(日) 10:26:43.96 ] バグってたらバグってたでいいじゃないか MSの責任にできるんだしw
300 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 10:34:35.59 ] MSDNには面責が書かれてるのにMSの責任とは至極滑稽
301 名前:デフォルトの名無しさん [2012/03/25(日) 10:38:36.51 ] 単純に言い訳ってことだよw あーMSのばぐっすね・・っていえるのと そうじゃないのでは大きな差がある
302 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 10:52:59.11 ] 誰を想定してるんだろうか…?
303 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 10:53:47.76 ] 2〜3秒のwavファイルが30個あります これを空なく順番に再生する場合、wavを連結して再生するほうがいいですか?
304 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 10:58:22.08 ] 「空」が「無音」という意味なら、連結+無音部分の削除が必要だろうな。
305 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 10:58:34.63 ] 簡単に済ませたいだろうしそれでおkじゃね
306 名前:デフォルトの名無しさん [2012/03/25(日) 11:00:24.17 ] 表現が曖昧でよくわからんな 定期的に同じネタで質問がくる「任意のタイミングでズレなく順番に再生したい」 というのであれば合成しとけってことだしw
307 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:02:37.77 ] 合成なんかDirectXに投げれば勝手にやってくれる。
308 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:04:58.50 ] あれっすよ ボーカロイドみたいのが作りたいんですよ
309 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:06:12.94 ] C#でそんな低レベルなところ触れたっけ?
310 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:08:32.14 ] Waveファイルの加工が低レベルなのか? unsafeじゃないとスピードでないけど。
311 名前:デフォルトの名無しさん [2012/03/25(日) 11:12:17.91 ] >>310 だって編集過程でボカロに喋らせる総時間分のwav を全部確保するの無駄だろ 適度なタイミングで流し込んだ方がいい
312 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:14:31.78 ] なら全部確保しなきゃいい。 おまえが何に悩んでるかさっぱり分からん。
313 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:17:01.32 ] 間違えました ボーカロイドじゃなくて読み上げるやつです AquesTalkみたいにしゃべらせるだけのがつくりたいのです
314 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:18:01.36 ] それであいうえお順をwavに録音して 大体30文字ぐらい読ませればいいとおもってるんですが
315 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:19:15.08 ] DirectSound使うならManagedかSlimDXかねえ
316 名前:デフォルトの名無しさん [2012/03/25(日) 11:20:07.11 ] 44.1kHz 16bit ステレオ でどれくらいのメモリが必要か計算してみなよ
317 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:22:19.60 ] PC-6001mkIIについてたTALK命令がほしいのか。 WindowsについてるSpeechAPIじゃダメなのか?
318 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:22:28.13 ] それで目的を達成できる能力があればいいけどね 達成できなきゃ方法がどんなに効率よかろうが生産ゼロだぜ 究極の非効率
319 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:27:30.26 ] ライブラリ持ってきて使うのがいいな
320 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:29:51.33 ] System.Speech
321 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:31:20.68 ] 棒読みちゃんを使えばいい
322 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:31:36.55 ] >>320 すまんw 流れ的にネタかと思ったんだが本当にあるんだなw
323 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:33:02.12 ] >>320 でいいんじゃね?w
324 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:04:54.30 ] SpeechAPIとSystem.Speechってやつで両方やってみます ありがとうございます
325 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:06:41.16 ] using System.Speech.Synthesis; SpeechSynthesizer synth = new SpeechSynthesizer(); synth.Speak("google let kasu"); これだけでしゃべったw
326 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:07:13.37 ] やっぱ遊ぶよなw System.Speech.Synthesis.SpeechSynthesizer ss = new System.Speech.Synthesis.SpeechSynthesizer(); ss.Volume = 50; ss.Speak( "cow wow zoo toe big come, me zoo no, auto." );
327 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:19:49.62 ] VoiceChangeメソッド使った?
328 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:20:43.96 ] // これは動く using (StreamWriter sw = File.AppendText(filename)) { sw.WriteLine("This"); sw.WriteLine("is Extra"); sw.WriteLine("Text"); } File.AppendAllText(filename,"123456789"); File.AppendAllText(filename, "abcdefg"); // これは動かない。なぜ? try { //w = File.AppendText(filename); w = File.Open(filename, FileMode.OpenOrCreate); // ファイルを読み書き可で開く。無ければ作成する。 IsOpen = true; } catch { IsOpen = false; } w.Write("123456"); w.WriteLine("123456789");
329 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:22:01.38 ] catchのあとの括弧?
330 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:23:14.00 ] みづれぇ 何だ、Openの返値型の質問か?
331 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:26:39.55 ] すげえspeech
332 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:43:31.28 ] C#にこんな力があったなんて でも発音が外人だあ!
333 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:48:41.82 ] SelectVoiceで日本語も入ってればできるみたいよ
334 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:49:18.10 ] あ、日本語入れればいいのかと思って(おまぴー)っていれたら何もいってくれない(´・ω・`)ショボーン さすがマイクロソフトちゃんとNGワードがあるのね
335 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:50:53.20 ] な、なんだと(`・ω・´) シャキーン
336 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:53:05.55 ] 英語版特に問題ないのに
337 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:54:46.08 ] フォント名みたいに音声ファイル?かエンジンはあるみたいね
338 名前:デフォルトの名無しさん [2012/03/25(日) 12:56:03.65 ] 試して無いけど www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=39646&forum=7
339 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 13:05:57.51 ] www.microsoft.com/download/en/details.aspx?displaylang=en&id=10121 このランゲージパック入れてみて。
340 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 13:36:13.39 ] using System; using System.Speech.Synthesis; class speakprogram { public static void Main() { int i = 1; while (i == 1) { i = 0; Console.WriteLine("話させたい文章を入力してください"); string word = Console.ReadLine(); SpeechSynthesizer ss = new SpeechSynthesizer(); ss.Volume = 100; ss.Speak(word); Console.WriteLine("続けたい場合はyを入力してください"); if (Console.ReadLine() == "y") { i = 1; } } } }
341 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 14:01:37.86 ] なんでそこで i を使うんだ
342 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 14:02:50.04 ] なんだっていいだろ 書き捨てのコードにケチつけてんじゃねーよ >>328 wはなんなんだ File.Openの戻り値はFileStreamだよ
343 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 14:03:52.57 ] 名前の問題じゃないだろ、intが出てくるのはなぜよ。
344 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 14:04:24.12 ] 知るかよハゲ
345 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 14:05:22.94 ] booleanでいいだろ
346 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 14:20:08.61 ] 変なことせずにdo whileでいいじゃないか
347 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 14:24:07.51 ] みんなアドバイスありがとう
348 名前:デフォルトの名無しさん [2012/03/25(日) 14:25:51.31 ] 無限ループにしてy以外ならbreakするのが普通だよな
349 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 14:26:36.16 ] do { } while (Console.ReadLine() == "y"); これでいいかな
350 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 14:34:06.19 ] while(true) { //実行するコード Console.WriteLine("続けますか?\r\n(y/n)"); if(Console.ReadLine()=="y") break; }
351 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 14:35:06.04 ] while(true) { //実行するコード Console.WriteLine("続ける場合はyを〜"); if(!(Console.ReadLine()=="y")) break; } こうだった
352 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 15:00:48.11 ] for(;;) { ... break; }
353 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 15:41:27.50 ] >>351 do { //実行するコード Console.WriteLine("続ける場合はyを〜"); } while (Console.ReadLine().Equals("y")); は?
354 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 15:44:10.92 ] タスクバーのプログレスバーもおもろい
355 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 16:34:37.11 ] やさしいC#という本を買ってきて勉強を始めました。 Lesson2の2.2 フォームでフォームのタイトルを変更するプログラムが動きました。 これが動く時にDOSプロンプトも一緒に動いているのですが、Windowsのフォーム だけを動かすことはできないのですか?
356 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 16:36:00.70 ] フォームアプリケーションとかコンソールアプリケーションとかの話か?
357 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 16:42:51.61 ] >>355 知らんけど気にせず進めろ。 そのうちできるようになるだろ。
358 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 16:43:16.23 ] 結局やさしくねーじゃんか コードをテンプレのサイトに載せてみ
359 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 16:56:35.47 ] 作者のページらしきところにコード一式があるな。 コンソールアプリのプロジェクトからフォームを作って表示させてるんだろうな。
360 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 16:58:39.17 ] >>356 空のプロジェクトを選んで、コードファイルを追加してソースを記述しています。 SystemとSystem.Windows.Formsを「参照を追加する」で開発環境のプロジェクトに追加してます。 >>355 ありがとう >>358 コードを書きます using System.Windows.Forms; class Samle2 { public static void Main() { Form fm; fm = new Form(); fm.Text = "ようこそC#へ!"; Application.Run(fm); } }
361 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 17:06:26.73 ] ああ、いってることがわかった。 ウインドウズのプログラム組みたいのに何でDOSが表示されるんじゃー!かっこわるいわって事ね 普通に新しいプロジェクト→winフォームアプリケーションで普通のウインドウアプリ作れるよ
362 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 17:38:25.13 ] 優しくないとわからない人には無理ってことか 俺には無理か・・・
363 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 17:41:34.85 ] なんかこういうのうがあるみたいです livespac.es/2010/09/23/japanese-text-to-speech-web-api/ 僕にはレベルが高いので試していませんが
364 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 17:46:42.27 ] google翻訳でも自動で開いて喋らしとけ
365 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 17:50:32.42 ] ここはすでにC#に面白いことをしゃべらせる為のスレになったのだ
366 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 18:04:37.17 ] >>360-361 『.NET TIPS コマンド・プロンプトを表示しないコンソール・アプリケーションを作成するには?』 www.atmarkit.co.jp/fdotnet/dotnettips/837nodisplayconsole/nodisplayconsole.html
367 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 18:05:08.98 ] C#関係ないし