1 名前:デフォルトの名無しさん (ワッチョイ 5394-4hBO) mailto:sage [2016/12/27(火) 02:07:41.47 ID:HrGPkQcW0.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part125 echo.2ch.net/test/read.cgi/tech/1475930006/ ■関連スレ C#, C♯, C#相談室 Part91 echo.2ch.net/test/read.cgi/tech/1467211515/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源 https://msdn.microsoft.com/en-us/library/gg145045.aspx referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configure
610 名前:デフォルトの名無しさん (ワッチョイ df6d-DR2M) mailto:sage [2017/02/14(火) 12:58:55.86 ID:XyImroZT0.net] 何らかの事情で劇的な速度が欲しいならSATソルバー使う方が速い
611 名前:デフォルトの名無しさん (ワッチョイ 93bb-cGUq) mailto:sage [2017/02/14(火) 13:09:33.16 ID:dpHbb6/Q0.net] >>597 9*(決まってない空白数)だけパターン数があると考えてすべて整合性チェックすればいいんだよ。 あとは自由に最適化しろ。
612 名前:デフォルトの名無しさん (ワッチョイ 635b-t8AD) mailto:sage [2017/02/14(火) 17:38:40.59 ID:BsjgcFem0.net] 複数選択可のListBoxのSelectedIndexChangedイベントにおいて、 今まさに選択されたアイテムのindex (VBのListBox.ListIndexのような感じです)を得るにはどうすれば良いですか。
613 名前:デフォルトの名無しさん (ラクッペ MMc7-iIq0) mailto:sage [2017/02/14(火) 18:37:27.66 ID:e3yTVnI+M.net] formアプリとただのASP.NETと VBはもうサポートしなくて良いよね 分散しまくってるから リソース集中して欲しい
614 名前:デフォルトの名無しさん (アウアウウー Sab3-cZcy) mailto:sage [2017/02/14(火) 18:42:24.50 ID:PdY4D7f4a.net] >>601 そのイベントって選択解除や選択されている項目を削除した時も発生するし、 ListBoxってShiftキー押しながらクリックで複数項目を選択したり解除したりできた気が
615 名前:デフォルトの名無しさん (ワッチョイ 635b-t8AD) mailto:sage [2017/02/14(火) 20:04:39.55 ID:BsjgcFem0.net] >>603 言い忘れていましたが、C# 2.0の話です。 ListBoxのプロパティSelectionModeをMultiSimple等にすると、複数選択できるようになります。 何をやりたいかというと、1つのListBoxで項目を6個以上選択できない(5個までなら選択できる)ようにしたいのです。
616 名前:デフォルトの名無しさん (ワッチョイ 7642-LB0c) mailto:sage [2017/02/14(火) 20:29:01.97 ID:8xZyzg4v0.net] >>587 C#ってかアルゴリズムだと思うけど9×9の数独なら力技でもそんな時間かからんぞ 空きマスに1置けるか?置けないなら2置けるか? ってチェックしていって置ける数字がでたら次の空きマスに移動 移動した先で置ける数字がなくなったら1個戻って数字を変える みたいな処理を再起で組めばいける この手法だと回答が複数ある時、あるいはパズルとして成立しない時(途中で手詰まりになる時)でも無理やり回答を出してしまうっていう問題があるけど
617 名前:デフォルトの名無しさん (ワッチョイ 2790-jWyY) mailto:sage [2017/02/14(火) 22:01:03.75 ID:Nim8Pln30.net] >>605 空きマスに1置けるか?置けないなら2置けるか…ってやっていくのはわかるんですが 自分がやっている縦横同ブロック検索しておける数字が一つに絞り込めた場合、代入するようにしてるんですがこれ違うんですか?
618 名前:デフォルトの名無しさん (ブーイモ MM4b-ZWt2) mailto:sage [2017/02/14(火) 22:09:41.60 ID:mO6RmRZWM.net] >>606 数独を解いたことあれば、それだけではクリア出来ないのは良くあることなんだけど……
619 名前:デフォルトの名無しさん (ワッチョイ 7642-LB0c) mailto:sage [2017/02/14(火) 22:11:49.93 ID:8xZyzg4v0.net] >>606 一つに絞り込めなくても現時点で置けるならとりあえず置いて次に行くの 順次進めて行ってどこかのマスで何の数字も置けないようになってしまったら今まで置いてきた数字に何処かに誤りがあったってことだから戻って別候補にするって感じ マスに入る数字を一つに絞り込んで進めていくやり方は数独のテクニックを理解してそれをプログラミングしていく必要がある 上級問題は当然そのテクニックも難解になるから上下左右ブロックを見るだけ程度のテクニックだけでは解ききれない 問題制作側で回答チェック等まで踏まえたツールなんかを作成するなら当然このあたりまで考慮して製作する必要があるけど ひとまず回答だけ求めるなら前半に書いた手法で十分だよ
620 名前:デフォルトの名無しさん (ブーイモ MM4b-ZWt2) mailto:sage [2017/02/14(火) 22:19:23.18 ID:mO6RmRZWM.net] あれ?そもそも最上段の左から2番目埋まってないな。 やろうとしてるロジックも未完成なんじゃね?
621 名前:デフォルトの名無しさん (ワッチョイ 7230-VyiL) mailto:sage [2017/02/14(火) 22:25:20.31 ID:5IUCJa7e0.net] もう諦めてsquatでもしてこいよ
622 名前:デフォルトの名無しさん (ワッチョイ 2790-jWyY) mailto:sage [2017/02/14(火) 22:40:12.49 ID:Nim8Pln30.net] >>608 再起がすごい苦手なんですが・・・どこまで潜っていくのかわからないですし どう抜ければどう書けばいいのかもわかりません
623 名前:デフォルトの名無しさん (アウアウウー Sab3-cZcy) mailto:sage [2017/02/14(火) 22:45:26.95 ID:PdY4D7f4a.net] >>604 完璧じゃないけどこの辺で妥協? IEnumerable<object> mPrevSelectedItems = new object[0]; private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { var selectedItems = listBox1.SelectedItems.OfType<object>(); var removeCount = selectedItems.Count() - 5; if (removeCount > 0) { var ex = selectedItems.Except(mPrevSelectedItems); var skipCount = ex.Count() - removeCount; if(skipCount >-1) { var items = ex.Skip(skipCount); Array.ForEach(items.ToArray(), x => listBox1.SelectedItems.Remove(x)); } } mPrevSelectedItems = selectedItems.ToArray(); } 思ったより面倒くさいなあ
624 名前:デフォルトの名無しさん (ワッチョイ 7642-LB0c) mailto:sage [2017/02/14(火) 23:13:26.80 ID:8xZyzg4v0.net] >>611 別に実装は再起じゃなくても問題ないよ アルゴリズムが理解できれば普通にループと分岐だけで組める
625 名前:デフォルトの名無しさん (ワッチョイ 7bdc-3OfB) mailto:sage [2017/02/14(火) 23:35:48.88 ID:+J5Ev49B0.net] >>611 こういう問題は手続きじゃなくてトップダウンで関数型的に考えると機械的に解ける 解 = 数独を解く(初期状態, []).FirstOrDefault(); 数独を解く = (状態, 探索済) => 解けている(状態) ? [状態] : 次の候補(状態, 探索済).SelectMany(候補 => 数独を解く(候補, 探索済 + 状態)).First(); 次の候補 = (状態, 探索済) => 数字を適当に1つ置いてみるときの全ての置き方(状態).Where(状態 => 矛盾してない(状態) && 探索済.含まない(状態)); 数字を適当に1つ置いてみるときの全ての置き方 = 状態 => … こんな感じで大雑把なところから細部を詰めていくの 具体的な動作をイメージしづらいかもしれないけど、結局やってることは ID: 8xZyzg4v0 と同じ
626 名前:デフォルトの名無しさん (ワントンキン MM62-S0So) mailto:sage [2017/02/14(火) 23:40:20.02 ID:UB3JXf9tM.net] 数独はSQLで解くのがトレンド
627 名前:デフォルトの名無しさん (ワッチョイ 323c-zlRv) mailto:sage [2017/02/14(火) 23:46:21.93 ID:3qnQ1Gfx0.net] >>606 ここら辺を参考にしてみるとか https://www.slideshare.net/mobile/atmarksharp/ss-45348313
628 名前:デフォルトの名無しさん (ワッチョイ 93bb-cGUq) mailto:sage [2017/02/15(水) 06:53:14.94 ID:apHpeiac0.net] 自分の頭で解けない奴には、その解法を仕様化できるわけがない。
629 名前:デフォルトの名無しさん (スフッ Sd52-AyEu) mailto:sage [2017/02/15(水) 08:38:52.62 ID:4NekN3gFd.net] 9(縦)x9(横)x9(ありえる数字)のboolの配列持って、 まず既知のセルの8個の数字を消しこんで、 その次に、全セルを順番に縦、横、3x3のブロックでそれぞれ、あり得ない数字(≒縦、横、ブロック内の、ひとつだけになっているセル)を消しこんでいって、一周しても何も消せなくなるまで回って、 その後、ありえる数字の組み合わせの総当りにした方が多分良い。 ありえる数字の組み合わせを考えるから辛い。 あり得ない数字は別のセルから導出できるんだし。
630 名前:デフォルトの名無しさん (ワッチョイ 7642-LB0c) mailto:sage [2017/02/15(水) 08:55:15.39 ID:yJTbA8M80.net] >>618 処理が前後半の2段階になってるけど質問者は前半だけじゃ解けない問題に直面して困ってる&後半だけで解ける って状態なんだからひとまず前半は要らない 後半作って上手く行ったなら処理速度向上とか考慮して前半みたいな処理を追加すればいい
631 名前:600 (ワッチョイ 635b-t8AD) mailto:sage [2017/02/15(水) 09:42:28.85 ID:J55wC/o80.net] >>612 うまくいきました。やはり選択されたアイテムを覚えさせておく方法が良いようですね。 どうもありがとうございました。
632 名前:デフォルトの名無しさん (ワッチョイ df07-VyiL) mailto:sage [2017/02/15(水) 12:45:30.38 ID:uvXQ5Mwv0.net] 数独ソルバー程度で悩む奴もいるんだなあ 俺は厨房のころ作ったけど
633 名前:デフォルトの名無しさん (スフッ Sd52-AyEu) mailto:sage [2017/02/15(水) 13:17:31.37 ID:4NekN3gFd.net] >>619 うーん、総当りって現実的な時間には終わらんと思うが。
634 名前:デフォルトの名無しさん (ワッチョイ df6a-VyiL) mailto:sage [2017/02/15(水) 13:59:57.66 ID:1Sp8YgZp0.net] いまPythonで書いてみたけど5年前のMacMiniでも数秒で終わる
635 名前:デフォルトの名無しさん (ワッチョイ df6a-VyiL) mailto:sage [2017/02/15(水) 14:06:17.53 ID:1Sp8YgZp0.net] ideoneでも余裕で動いた https://ideone.com/TSJo4P
636 名前:デフォルトの名無しさん (ワッチョイ 7642-LB0c) mailto:sage [2017/02/15(水) 14:39:28.56 ID:yJTbA8M80.net] >>622 作ったことないんでしょ 9✕9なんて一瞬、処理途中を描画しながらで数秒レベル 組み合わせは最大81の9乗あるから仮数字を全部入れてチェックなんて手法取ったらそら終わらん。 順番に仮置きして矛盾が発生した場合戻るってすれば、いわゆる枝切りみたいなのがどんどん発生するからすぐ終わる 計算量は知らん
637 名前:デフォルトの名無しさん (スフッ Sd52-AyEu) mailto:sage [2017/02/15(水) 16:40:03.68 ID:4NekN3gFd.net] >>625 矛盾があれば手戻り、と、矛盾を刈り込むのとはあんまり変わらん気がするけど。 そりゃどちらでも描画してるうちに終わるだろうけど、 どちらでもない方を言ってるんだよ、その愚直に置く方。
638 名前:デフォルトの名無しさん (ワッチョイ 7642-LB0c) mailto:sage [2017/02/15(水) 16:53:27.86 ID:yJTbA8M80.net] >>626 矛盾があれば手戻りは計算量が多くなるから基本コンピュータじゃないと現実的じゃない その代わりどんな問題も解ける(以前書いたような例外はある) 計算量が多いって言ってもコンピュータからすれば大したことは無い 矛盾を刈り取りは一般的に人が解く際の行動をプログラミングしたものなので解法(テクニック的なもの)を実装することができればどんな問題でも解ける その代わり数独であってもテクニックは難解な物がある で刈り取りした後に手戻りすればいいじゃん、って言うけど手戻りだけで事足りるのになんでいきなり両方実装すんの?って話 ぶっちゃけ初めは現実時間で終わらんような愚直な実装でもいいと思う そこからチューニングするとか何かアルゴリズム考えるとかすれば学べるんだから
639 名前:デフォルトの名無しさん (スフッ Sd52-AyEu) mailto:sage [2017/02/15(水) 17:59:08.57 ID:4NekN3gFd.net] >>627 それだと、矛盾が無いだけの解がただの計算順で一意に決まってしまうじゃん。 根本的な解決ではないと思うが。
640 名前:デフォルトの名無しさん (ワッチョイ 7642-LB0c) mailto:sage [2017/02/15(水) 19:40:01.33 ID:yJTbA8M80.net] >>628 だからその問題点は一番初めに言ってるじゃん 話ずらしまくるのやめよ?
641 名前:デフォルトの名無しさん (ワッチョイ df6d-VyiL) mailto:sage [2017/02/15(水) 19:43:20.79 ID:W/gL5Tp30.net] >>628 だから何だ質問者がいつその条件を求めたんだよ コード書いたこともねえ雑魚は引っ込んでろ
642 名前:デフォルトの名無しさん (スププ Sd52-YCZx) mailto:sage [2017/02/15(水) 20:47:50.66 ID:kYO6iRfyd.net] 投稿者は、この解を得るアルゴリズムを作成するというロマンがあるんだよ。
643 名前:デフォルトの名無しさん (ブーイモ MM52-CvLw) mailto:sage [2017/02/15(水) 20:51:44.83 ID:GPHsk9GRM.net] >>628 仮定法でも全ての解は得られるよ? >>614 のアルゴリズムでFirstを外せばできるはず
644 名前:デフォルトの名無しさん (ワッチョイ 173c-CIv3) mailto:sage [2017/02/15(水) 21:22:49.38 ID:ZsrpE5Vs0.net] APIからwebsocketをつかってJSONを取得したいのですがネットを色々見てもさっぱりわかりません。 具体的には https://corp.zaif.jp/api-docs/ のストリーミングAPIのbtc_jpyです。 ヒントや参考になるサイトでも構いません。よろしくお願いします。
645 名前:デフォルトの名無しさん (ワッチョイ e223-CIv3) mailto:sage [2017/02/15(水) 22:38:19.69 ID:DiO+GUbF0.net] >組み合わせは最大81の9乗あるから 本質的にはどうでも良い話だが、「同じ行、列には同じ数字は使えない」と言うルールを無視しすぎていて気になっちまう 「ものすごく多い」ってことが表現できているから何も問題ないんだけどな
646 名前:デフォルトの名無しさん (ブーイモ MM52-CvLw) mailto:sage [2017/02/15(水) 22:42:17.14 ID:9FXA/5kCM.net] >>633 クライアントライブラリあるじゃん C#用はないみたいだけどC#わかるんならJavaなら楽勝だろ
647 名前:デフォルトの名無しさん (ワッチョイ eb77-6bgE) mailto:sage [2017/02/16(木) 00:10:21.41 ID:QO0gpLt00.net] >>633 codeprojectにjsonビューアのソースがあったような
648 名前:デフォルトの名無しさん (ワッチョイ 3b3c-P9CU) mailto:sage [2017/02/16(木) 00:40:31.38 ID:/E7gOtLl0.net] >>635 申し訳ないです。Javaのを見てもわかりませんでした。 >>636 jsonの処理は何とか出来るのですがwebsoketでの取得がわからないんです
649 名前:デフォルトの名無しさん (ワッチョイ 5f30-O7jY) mailto:sage [2017/02/16(木) 05:22:57.59 ID:1M26REHO0.net] そんなに分かりにくいところあるか…? https://ideone.com/O78ino JSONの切れ目は自分で探して 金儲けのためならその程度の維持は出して見せろ その程度の才能もないなら発注サイトに行って金払って作ってもらえ
650 名前:デフォルトの名無しさん (スププ Sd7f-6skL) mailto:sage [2017/02/16(木) 07:32:00.22 ID:/4MLopCid.net] 偉そうに
651 名前:デフォルトの名無しさん (ワッチョイ 3b3c-P9CU) mailto:sage [2017/02/16(木) 10:57:00.19 ID:/E7gOtLl0.net] >>638 これは参考になりそうです。ありがとうございます。
652 名前:デフォルトの名無しさん (オッペケ Sr9f-PPpI) mailto:sage [2017/02/16(木) 12:50:57.39 ID:Fl7cxYnSr.net] WebBrowserって今後もずっとIEなのかね? Edgeにはならないんだ?
653 名前:デフォルトの名無しさん (ブーイモ MM7f-FKuk) mailto:sage [2017/02/16(木) 15:05:24.57 ID:SJI/N2PkM.net] 絶対にない WinFormsが業務向けのプラットフォームであること、既に開発が終了していることを忘れてはいけない
654 名前:デフォルトの名無しさん (ワッチョイ 8bbb-eq+O) mailto:sage [2017/02/16(木) 15:33:56.56 ID:QchVkuhj0.net] 結局、Winform最強か。
655 名前:デフォルトの名無しさん (アウアウオー Sa7f-xIS6) mailto:sage [2017/02/16(木) 16:23:17.22 ID:/R92/z+7a.net] WebBrowserコントロールはIWebBrowserのだからIEのままでしょ EditコントロールがEditで、リッチエディットコントロールになってないのと似たようなもん WindowsUI.Xaml.WebViewかそんなとこでEdgeコントロールとしてはもう既に実装されてるんじゃないのかな
656 名前:デフォルトの名無しさん (オッペケ Sr9f-PPpI) mailto:sage [2017/02/16(木) 17:18:26.44 ID:Fl7cxYnSr.net] そうなのかあ しかし困る人多いよね
657 名前:デフォルトの名無しさん (アウアウウー Sa1f-Tc/C) mailto:sage [2017/02/16(木) 18:03:45.
] [ここ壊れてます]
658 名前:02 ID:nVGauASoa.net mailto: まだXP使ってるところだって山ほどあるのに7/8.xを考えなくてよくなるのなんか何年後よ [] [ここ壊れてます]
659 名前:デフォルトの名無しさん (ワッチョイ 4bd6-eq+O) mailto:sage [2017/02/16(木) 18:53:57.26 ID:yaBP1ZBT0.net] レジストリいじればEdge相当になったはず
660 名前:デフォルトの名無しさん (ワッチョイ 0f9d-eq+O) mailto:sage [2017/02/16(木) 19:19:37.31 ID:cjCClO980.net] WinFormsの開発再開すればいいのにね
661 名前:デフォルトの名無しさん (オッペケ Sr9f-PPpI) mailto:sage [2017/02/16(木) 19:33:08.37 ID:Fl7cxYnSr.net] >>647 そうなのかー しかしユーザーがEdge持ってるとは限らないから面倒だね
662 名前:610 (ワッチョイ 9b90-XdR7) mailto:sage [2017/02/17(金) 23:35:39.67 ID:8hvoyQw40.net] レス遅くなってしまってすいません >>618 の後半なんですが、 1,候補の中の確定できない数字をとりあえず入れてみる 2.次のマスに移動、数値が入れられなかったら1に戻る この繰り返しですよね?もしこれを複数回繰り返して戻らない場合2回以上前に入れた数値まで戻らないといけない場合ってありますか?
663 名前:デフォルトの名無しさん (ワッチョイ 0f42-1n7Z) mailto:sage [2017/02/18(土) 02:25:11.55 ID:f0aH9wlg0.net] >>650 2の手順は1に戻るじゃなくて1つ前に数字を入れたマスに戻るだね 1個前に入れたマスに戻って別の数字を探しても見つからなければ更に1個前に戻る これを繰り返す 当然戻りまくって最初のマスに戻ることもある最初に入れた仮数字が間違ってたってことだから 要は全数字を入れるパターンを検索して矛盾が出ないパターンを求めてる ただし途中で矛盾が出たら以降はそのパターンに紐づく内容は無視することで大幅に検索回数を削減できて結果的にコンピュータレベルの計算速度を用いればそれなりの速度で検索可能って寸法 理解が難しければ空きマスが超少ない問題で手を使って動きを確かめてみると良いかも 別にこの問題に限った話ではないけど大抵のプログラムは原理を理解できないと実装できないからね
664 名前:610 (ワッチョイ 9b90-XdR7) mailto:sage [2017/02/18(土) 03:12:52.58 ID:zyhHTWXk0.net] >>651 原理はわかってはいるつもりなんですが、どう書けばいいのかわかりません 1、4、7と入れてきて7の次に入れるものがない場合、4を変更しないといけないわけですがこれをどうやって渡すか またもう一つ戻らないといけない場合、自分の理解の範疇を超えオーバーフローしてしまいます 他人のソースを読んでも頭に入ってきません
665 名前:デフォルトの名無しさん (ワッチョイ 0f42-1n7Z) mailto:sage [2017/02/18(土) 04:35:14.78 ID:f0aH9wlg0.net] >>652 あらま、その段階か 例えば仮数字を入れて次に進む時、今仮数字を入れた場所を記憶しておく配列を用意しておくとかどうだろう 進むたびに配列に仮数字を入れた場所が順次追加されていく感じ 戻る時は後ろから順に見ていけばいい 戻ってまた進む時は用意した配列を再度進むところから上書きする感じ 「5」番目のマスに1を入れた 「8」番目のマスに4を入れた 「10」番目のマスに入れられる数字がない 「8」番目に戻る 8番目には4が入ってるけどダメらしいので5以降で置ける数字無いか確認 それでも無ければ「5」番目に戻る 用意する配列には「5 8 10」って入ってるってことね この配列のどこを今操作しているか?を指し示す変数もあったほうが分かりやすいかもね ○番目って言うのは左上のマスを1、右下のマスを81と仮定しての話ね XYで管理してるならこの配列を2次元にしても良い そんな効率良い方法じゃないけど直感的には理解はしやすいかと思うけどどうだろう 他に何か分かりやすい案があるかもしれん
666 名前:610 (ワッチョイ 6b90-XdR7) mailto:sage [2017/02/18(土) 06:29:59.40 ID:ULV0oBLe0.net] >>653 ありがとうございます、これだと書ける気がします あと配列の中にある値のインデックスをLINQで取得しているのを拡張メソッドで定義したいですがうまくいきません First()やCount()の定義を見よう見真似で書きましたが、Whereに何を入れたらいいのかわかりません public static Type Index<Type>(this IEnumerable<Type> source, Func<Type, bool> predicate) where Type : IEnumerable<Type> { return source.Select((value, index) => new { Index = index, Value = value }) .Where(item => ) .Select(item => item.Value).FirstOrDefault(); } ひょっとして述語は引数として受けられませんか?
667 名前:デフォルトの名無しさん (ワッチョイ 8b7b-eq+O) mailto:sage [2017/02/18(土) 08:10:24.40 ID:bn0z7G5m0.net] あえてLinqで書くならこうかな?でもこういう場合foreachで書く方が速いし自然だと思う public static int Index<T>(this IEnumerable<T> source, Func<T, bool> predicate) { try { return source.Select((value, index) => new { Index = index, Value = value }) .First(item => predicate(item.Value)).Index; } catch (InvalidOperationException) { return -1; } }
668 名前:デフォルトの名無しさん (ワッチョイ 0f42-1n7Z) mailto:sage [2017/02/18(土) 09:33:35.33 ID:f0aH9wlg0.net] プログラム初心者だと思ってたら突然linqでてきてワロタ 俺には>>653 の説明でなんで>>654 に行けたか不思議だよ linqは奥が深いけど面白いね
669 名前:デフォルトの名無しさん (ワッチョイ 9b7b-g7u9) [2017/02/18(土) 12:02:11.53 ID:H3MLhpM30.net] OpenFileDialog.ShowDialogを使用するとフリーズします。 昔からある障害のようなんですが、 >cymon.sysというファイルの排他制御関連の処理に不具合があるのが原因 らしいのですが、該当ファイルはありません。 他のアプリの排他制御関連のバグなんて特定出来る気がしません。 どうすれば正常に動かせますか?
670 名前:デフォルトの名無しさん (スププ Sd7f-6bgE) mailto:sage [2017/02/18(土) 12:12:10.55 ID:F1GmP7Hpd.net] >>657 もうちょい詳しく。 再現するOSや、不具合が再現するソースとかないん?
671 名前:デフォルトの名無しさん (ワッチョイ 0f7b-TuOZ) mailto:sage [2017/02/18(土) 12:18:44.45 ID:AobYyoSr0.net] ニコリの数独・カックロを、力任せに解く方法か? バックトラック法だろ 「バックトラック法 数独」で検索!
672 名前:デフォルトの名無しさん (ワッチョイ 0f9d-eq+O) mailto:sage [2017/02/18(土) 12:19:58.05 ID:7QDYBSyf0.net] >>657 https://www.cyphertec.co.jp/news/cymon_revision.html これのことだとしたら、修正プログラム入れるしかないのでは? cymon.sysが本当に存在しないならもっと情報が必要だね
673 名前:デフォルトの名無しさん (JP 0H1f-vlft) mailto:sage [2017/02/18(土) 12:43:04.59 ID:1c96nb+dH.net] 特定のソフト入れた時にそのソフトのバグで干渉するってだけやん 入れてないなら関係ないし入れてるなら メーカーの修正あてるかアンインストールするかの2択やろ
674 名前:デフォルトの名無しさん (ワッチョイ fb0d-NHlF) [2017/02/18(土) 14:47:28.87 ID:lgYaiLIy0.net] CookieContainerの中身をWPFのDataGridで表示したいのですがどうすればいいですか?
675 名前:デフォルトの名無しさん (ワッチョイ df4c-6bgE) mailto:sage [2017/02/18(土) 15:01:37.60 ID:oF9zQOK10.net] そこでデーターバインディングでづよ
676 名前:デフォルトの名無しさん (ワッチョイ df4c-6bgE) mailto:sage [2017/02/18(土) 15:25:02.48 ID:oF9zQOK10.net] CookieCollection collection = new CookieCollection(); for (int i = 0; i < 16; i++) { collection.Add(new Cookie() { Name = i.ToString() }); } dataGrid.ItemsSource = collection;
677 名前:デフォルトの名無しさん (ワッチョイ df4c-6bgE) mailto:sage [2017/02/18(土) 15:25:23.75 ID:oF9zQOK10.net] あとは自分で
678 名前:デフォルトの名無しさん (ワッチョイ fb0d-NHlF) [2017/02/18(土) 19:51:02.62 ID:lgYaiLIy0.net] CookieContainerをBindingさせるのは無理なんですね そうなるとCookieContainerからCookieCollectionを取り出す必要が出てきますが どうすれば関連付けされているUriを使わずにCookieCollectionを取り出せますか?(forやforeachを使いたい)
679 名前:デフォルトの名無しさん (ワッチョイ 0f7b-eq+O) mailto:sage [2017/02/19(日) 01:31:58.50 ID:bXEy6Thf0.net] 他のツールなんかで動画とか音楽ををダウンロードしながらそれを開いて 先頭から順に読み込むツールを作ろうと思ってるんだけど System.IO.FileStream fs = new System.IO.FileStream(@"C:\test.mp3",System.IO.FileMode.Open) 例えばこんな感じでmp3を開くとした場合って開いた瞬間のデータ量しか取得できないですよね? 増えていってるデータを順に取得していくいい方法って無いですかね?
680 名前:デフォルトの名無しさん (アウアウウー Sa1f-Tc/C) mailto:sage [2017/02/19(日) 02:03:05.71 ID:6CKE/L0Oa.net] >>667 タイマーでも使ってポーリングするだけじゃないの?
681 名前:デフォルトの名無しさん (ワッチョイ 8bbb-eq+O) [2017/02/19(日) 05:52:50.50 ID:mRSsjBQo0.net] 日本ではダウロンードは違法。
682 名前:デフォルトの名無しさん (ワッチョイ 6f20-eq+O) [2017/02/19(日) 10:21:49.03 ID:7g+LYPG/0.net] 音声合成APIを使ってみたくて 下記のサンプルコードを実行したのですが 音声が再生された後にプログラムが終了せず 残っています どのようにすれば音声再生後にプログラムが 終了するでしょうか? static void Main(string[] args) { var player = new SoundPlayer(); var http = new HttpClient(); // BASIC認証 http.DefaultRequestHeaders.Add("Authorization" , "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes("hoge"))); // POST要求 http.PostAsync("https://api.voicetext.jp/v1/tts", new FormUrlEncodedContent( new[]{ // リクエストパラメータ new KeyValuePair<string , string>( "text" , "test" ), new KeyValuePair<string , string>( "speaker" , "haruka" ), } )).ContinueWith(async task => { // 音声データでない場合、例外が発生するので、適切な対処すべき… player.Stream = await task.Result.Content.ReadAsStreamAsync(); player.Play(); }); Console.ReadLine(); }
683 名前:デフォルトの名無しさん (ワッチョイ eb1e-1BHe) mailto:sage [2017/02/19(日) 10:29:46.11 ID:FVPzcms80.net] >>670 再生後、コンソールでEnterキーを押す または最後のConsole.ReadLineを削除
684 名前:デフォルトの名無しさん (ワッチョイ eb77-B7Z5) mailto:sage [2017/02/19(日) 10:37:13.44 ID:gToSbtQT0.net] >>671 後者じゃ、再生終わる前に終了しないかな
685 名前:669 (ワッチョイ 6f20-eq+O) [2017/02/19(日) 10:41:11.22 ID:7g+LYPG/0.net] Console.ReadLineの削除で プログラムが終了したので悩みが解消したのですが、 音声再生が開始される前にプログラムが終了するという 新しい悩みが生まれました 音声再生の完了をコールバック等で受け取る方法は あるでしょうか?
686 名前:デフォルトの名無しさん (ワッチョイ eb77-B7Z5) mailto:sage [2017/02/19(日) 10:54:41.14 ID:gToSbtQT0.net] >>673 player.Play();の次の行にEnvironment.Exit(0);でどうですか
687 名前:デフォルトの名無しさん (ワッチョイ 6f20-eq+O) [2017/02/19(日) 11:06:34.51 ID:7g+LYPG/0.net] >>674 試してみましたが、音声再生前にプログラムが終了しました javascriptなら、コールバックとか取れそうですが C#はいまひとつ解らず
688 名前:デフォルトの名無しさん (ワッチョイ 6bdc-fFgi) mailto:sage [2017/02/19(日) 11:11:22.59 ID:7Avz8j0c0.net] 最後にTask.Waitしろ
689 名前:デフォルトの名無しさん (ワッチョイ eb77-B7Z5) mailto:sage [2017/02/19(日) 11:28:40.83 ID:gToSbtQT0.net] >>675 >>674 やった上で、player.Play()をplayer.PlaySync()に書き換えて
690 名前:デフォルトの名無しさん (ワッチョイ 6f20-eq+O) [2017/02/19(日) 11:35:24.12 ID:7g+LYPG/0.net] player.Play(); task.Wait(); と書いてみたのですが 音声が再生される前に プログラムが終了します URIにPOSTする処理は リクエストしたら状態が取れないのかなという 気がしています
691 名前:デフォルトの名無しさん (ワッチョイ 6f20-eq+O) [2017/02/19(日) 11:38:27.06 ID:7g+LYPG/0.net] >>677 player.PlaySync(); Environment.Exit(0); としましたが、音声再生の前に プログラムが終了しました
692 名前:デフォルトの名無しさん (ワッチョイ eb77-B7Z5) mailto:sage [2017/02/19(日) 11:40:39.60 ID:gToSbtQT0.net] >>679 元のConsole.ReadLine();消してちゃってない? これも必要だよ。
693 名前:デフォルトの名無しさん (ワッチョイ 6f20-eq+O) [2017/02/19(日) 11:48:07.03 ID:7g+LYPG/0.net] >>680 音声再生の後にプログラムが終了しました 期待通りの動作です ありがとうございます
694 名前:デフォルトの名無しさん (ワッチョイ 0f7b-eq+O) mailto:sage [2017/02/19(日) 17:21:32.80 ID:bXEy6Thf0.net] >>668 まだ勉強し始めた素人なのでポーリングというやり方があるんですね。 試してみます、ありがとうございました。 >>669 再生が最後まで行く、もしくはソフトを閉じる時に消去すれば キャッシュという形になるから違法ではないと思いますし、 たしかあの法律は違法にアップロードされたコンテンツ(ゲームや音楽)を 知りつつダウンロードする行為が違法なんですよね? YouTubeやTwitch、ニコ生などのライブ配信や動画を専ブラのような形で なおかつ自分で使いやすいように作るのは違法でないという認識なのですが間違っていますでしょうか?
695 名前:デフォルトの名無しさん (ワッチョイ 5b19-S9Lo) mailto:sage [2017/02/19(日) 17:23:40.86 ID:djgzWXGW0.net] 保存しなきゃセーフでしょ ブラウザを作るのに認可がいるわけじゃないし
696 名前:610 (ワッチョイ 6b90-XdR7) mailto:sage [2017/02/20(月) 01:42:50.37 ID:Vf7595PK0.net] >>655 foreachで書く方法がわかりません、どんなふうに書くのでしょうか? あと条件にあったインデックスを全て返す拡張メソッドを作りたいのですが、うまくいきません int{} num = { 11, 12, 13, 14, 15 } これで条件を「x > 12」にした場合「2、3、4」と返ってきてほしいのですがチャレンジしてもできません return source.Select((value, index) => {if(predicate(value) return index; return 0; }) こういうふうにを書くと「x > 12」の場合「0,0,2,3,4」と返ってきてしまいます どうかけばいいかヒント教えてください
697 名前:デフォルトの名無しさん (ワッチョイ eb77-B7Z5) mailto:sage [2017/02/20(月) 02:30:59.52 ID:M2SnzGbV0.net] >>684 値が要らない項目は、Select()する前にWhere()で弾いとかないと。
698 名前:610 (ワッチョイ 6b90-XdR7) mailto:sage [2017/02/20(月) 03:25:39.28 ID:Vf7595PK0.net] public static IEnumerable<int> IndexCollection(IEnumerable<Type> source, Func<Type, bool> predicate) { return source.Where(_ => predicate(_)).Select((value, index) => index); } こういうことですか?でもなぜかこう書くと評価されなくて返り値がnullのままになります var list = num.Where(_ => _ > 12).Select((value, index) => index); こう書くときちんと評価されるのですが・・・さっぱりわかりません
699 名前:デフォルトの名無しさん (ワッチョイ 8b7b-eq+O) mailto:sage [2017/02/20(月) 03:28:01.67 ID:Cim83SJm0.net] >>684 別に難しくなくて、素直に書けばいいと思うけど public static int FirstIndex<T>(this IEnumerable<T> source, Func<T, bool> predicate) { int index = 0; foreach (var val in source) { if (predicate(val)) return index; index++; } return -1; } 条件にあったのも全て返すなら yield return を使う public static IEnumerable<int> WhereIndex<T>(this IEnumerable<T> source, Func<T, bool> predicate) { int index = 0; foreach (var val in source) { if (predicate(val)) yield return index; index++; } }
700 名前:デフォルトの名無しさん (ワッチョイ 8b7b-eq+O) mailto:sage [2017/02/20(月) 03:33:55.65 ID:Cim83SJm0.net] 無理矢理Linqで書くならこんな感じだろうか public static IEnumerable<int> WhereIndex<T>(this IEnumerable<T> source, Func<T, bool> predicate) { return source.Select((value, index) => new { Index = index, Value = value }) .Where(x => predicate(x.Value)).Select(x => x.Index); } 値が0以上限定ならこんな風にも書ける public static IEnumerable<int> WhereIndex<T>(this IEnumerable<T> source, Func<T, bool> predicate) { return source.Select((value, index) => predicate(value) ? index : -1) .Where(x => x >= 0); }
701 名前:デフォルトの名無しさん (ワッチョイ 8b7b-eq+O) mailto:sage [2017/02/20(月) 04:12:20.09 ID:Cim83SJm0.net] >>686 IndexCollectionの後に<Type>が抜けてるね。あと引数のthisも抜けてる Linqに慣れてないなら、最初から繋げていかないで一個ずつ結果を見た方がいいよ var a = num.Where(_ => _ > 12); var b = a.Select((value, index) => index); ここではaが {13, 14, 15 } ってリストになる(Whereは条件式でフィルタした新しい配列を作る) bはその配列をインデックスの値に変換した新しいリストを返すから値は { 0, 1, 2 } となる あと勘違いしてたけどインデックスは当然0以上なので>>688 の後者の書き方で問題なかった
702 名前:デフォルトの名無しさん (ワッチョイ 8bbb-eq+O) [2017/02/20(月) 07:23:54.57 ID:73+nzjfL0.net] >>683 日本では回避ツール作るのも違法。
703 名前:610 (ワッチョイ 6b90-XdR7) mailto:sage [2017/02/20(月) 10:04:48.66 ID:Vf7595PK0.net] >>687 yield returnというのを忘れていました 引数のthisを忘れていたのに拡張メソッドみたいに呼べたのが不思議です。エラー出ると思ってました
704 名前:デフォルトの名無しさん (ワントンキン MM7f-Z7AI) mailto:sage [2017/02/20(月) 11:08:17.98 ID:M0lXkX5gM.net] 文字列ポインタを返すC言語のwin32 dll を VS2005のWindowsアプリで利用しているのですが、今までWindowsXPで動作していたものをWindows7で動作させると関数から戻ってくる時に死んでしまいます。情報を送信する旨のダイアログの出るヤツです。 <hoge.dll> BYTE msg[1024]; BYTE* WINAPI hoge(WORD w) { sprintf(msg, "xxx"); return msg; } <FormMain.vb> <DllImport("hoge.dll")>Public Shared Sub hoge(Byval w As Int16) As String End Function Dim msg As String = Space(1024) Call部分-> msg = hoge(0) dllで領域確保した文字列ポインタをvbで領域確保したString型に代入している部分がおかしいのでしょうか? 同じやり方の別アプリはWindows7でも問題なく動作しているらしいです。 回避策としては、StringBuilderを引数にして情報を取得する方法を考えてますが、原因を知りたいです。 何かヒントを頂けないでしょうか。よろしくお願いします。
705 名前:デフォルトの名無しさん (アウアウウー Sa1f-Tc/C) mailto:sage [2017/02/20(月) 12:12:58.76 ID:OgBdAYpra.net] >>692 ここC#のスレだよw インポートした関数のシグネチャはそれで間違ってないと思う (戻り値の文字列の種類の明示的な指定がない以外は) だから間違いはそこに書かれていないところにある気がする 知らんけど
706 名前:デフォルトの名無しさん (ワントンキン MM7f-Z7AI) mailto:sage [2017/02/20(月) 13:06:34.63 ID:M0lXkX5gM.net] >>692 失礼しました。自分が普段C#使ってていつも見ているもので、思わず質問してしまいました。 Stringって純粋な参照型じゃないので、dll内の文字列がアプリ側の確保されたStringにコピーされるものなのか、どうなのか? と思って質問しました。 問題ないようですので、他の部分を当たってみます。 ありがとうございました。
707 名前:デフォルトの名無しさん (スフッ Sd7f-LjcY) mailto:sage [2017/02/20(月) 13:28:11.49 ID:vCAMt98Xd.net] ビット数とかかねえ
708 名前:デフォルトの名無しさん (ワッチョイ eb19-sbgu) mailto:sage [2017/02/20(月) 14:07:41.64 ID:w4qWsIgy0.net] DllImportで返値にStringを使うと対象アドレスのメモリを解放しようとするからその辺のせいかな ポインタが返される場合IntPtrで受け取るべき 文字列ならMarshal.PtrToStringAuto(/Ansi/Uni)で変換
709 名前:デフォルトの名無しさん (アウアウウー Sa1f-Tc/C) mailto:sage [2017/02/20(月) 14:54:15.70 ID:OgBdAYpra.net] あーここにそんなこと書いてあるな https://msdn.microsoft.com/ja-jp/library/x3t
710 名前:xb6xc.aspx 全然知らんかったw 文字列を戻り値で返すような関数使ったことないし。 こういう重要な話を辺鄙なページにだけさらっと書くのやめてほしいよな 余計なお世話のようだけど、よく考えたらポインタでもらっておかないと 手動で開放しようがないんだからまあ当然といえば当然の処置か [] [ここ壊れてます]