1 名前:デフォルトの名無しさん (ワッチョイ f97b-lsIp) mailto:sage [2016/10/08(土) 21:33:26.22 ID:KfBpvv2w0.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part124 echo.2ch.net/test/read.cgi/tech/1471004887/ ■関連スレ C#, C♯, C#相談室 Part91 echo.2ch.net/test/read.cgi/tech/1467142749/ ■コードを貼る場合は↓を使いましょう。 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 configured
2 名前:デフォルトの名無しさん (ワッチョイ fc5e-lsIp) mailto:sage [2016/10/09(日) 09:01:10.77 ID:G17UML8q0.net] >>1 スレたて乙 5レスくらい埋めないと落ちるかも
3 名前:デフォルトの名無しさん (アウアウ Sac5-Nuoi) [2016/10/09(日) 09:28:56.72 ID:tkPBsJC6a.net] >>1 乙 いつもROM専ですが
4 名前:デフォルトの名無しさん (ワッチョイ c3c0-lsIp) mailto:sage [2016/10/09(日) 09:30:27.17 ID:2uWzXVZF0.net] >>1 乙 .NET2.0のフォームアプリをメンテナンスすることになったんだが、最近のOSだと.NET3.5入れないと動かないんだな .NET3.5と4.5.2の並行路線は何時まで続くんだろ・・・
5 名前:デフォルトの名無しさん (アウアウ Sac5-pu+C) mailto:sage [2016/10/09(日) 09:39:03.76 ID:rlAqgPo1a.net] ほす
6 名前:デフォルトの名無しさん (ワッチョイ 21dc-6leU) mailto:sage [2016/10/09(日) 09:41:15.48 ID:r1p0JkFt0.net] マニフェスト弄れば動くよ 基本的に100%の互換性があることになってるけど、デフォルトで動かないのは ユーザーが勝手に4系で動かして万一重大障害発生でお前らがDOGEZAする羽目にならないように ちゃんとテストしろよというMSの良心
7 名前:デフォルトの名無しさん (ワッチョイ fc5e-lsIp) mailto:sage [2016/10/09(日) 10:06:32.54 ID:G17UML8q0.net] >>4 >>6 これかな https://msdn.microsoft.com/ja-jp/library/w4atty68%28v=VS.100%29.aspx メモの >useLegacyV2RuntimeActivationPolicy 属性を true に設定する必要があります の部分がよくわからんけど >>4 Windows8以降は4.0以降のランタイムしか入ってないからな
8 名前:デフォルトの名無しさん (ワッチョイ 98d4-lsIp) mailto:sage [2016/10/09(日) 16:48:44.58 ID:XK4sDCWo0.net] 前スレで、StringにAppendLineという拡張目そっと゛を追加したい云々の質問した者です C#だと代替できるものないということで。 んで次なんですが、関数の中で Static してる変数があるんですけど、これはC#だとどうしますか。 Public Sub Hoge() Static First As Boolean = True If First Then First = False 初期化っぽい処理 End If End Sub 関数の外に出すと他の関数から見えてしまうので
9 名前:デフォルトの名無しさん (ワッチョイ ab49-LThL) mailto:sage [2016/10/09(日) 17:03:09.61 ID:rPrC2GUx0.net] >>8 同じクラスのprivateな変数にする。 外から見えるとかは関数単位ではなくクラス単位で考える。 同じクラス内の他の関数から見えるのは気にしない。
10 名前:デフォルトの名無しさん (ワッチョイ 7694-MJqz) mailto:sage [2016/10/09(日) 18:36:02.08 ID:ciDgbIwP0.net] この★印の機能は何ですか?これもラムダ式? class Program { static int i = 123; static int j => i; // ★ static void Main(string[] args) { Console.WriteLine(j); // 123 i = 456; Console.WriteLine(j); // 456 Console.ReadKey(); } }
11 名前:デフォルトの名無しさん (ワッチョイ 21dc-xaNP) mailto:sage [2016/10/09(日) 18:43:54.99 ID:r1p0JkFt0.net] >>10 expression bodied properties C#6の新機能
12 名前:デフォルトの名無しさん (ワッチョイ 7694-MJqz) mailto:sage [2016/10/09(日) 19:55:16.81 ID:ciDgbIwP0.net] なるほど
13 名前:デフォルトの名無しさん (ワッチョイ 34c9-VEeh) mailto:sage [2016/10/09(日) 20:12:19.64 ID:SNsM+1tN0.net] getterだけなら使えるみたいな機能は入れなくていいよ 混じってるとみっともない
14 名前:デフォルトの名無しさん (ワッチョイ 34c9-VEeh) mailto:sage [2016/10/09(日) 20:17:23.67 ID:SNsM+1tN0.net] みっともないって言葉は曖昧なので止める getterだけのプロパティをexpression-bodiedで書いて getterとsetterのプロパティを通常の記法で書いてると統一性に欠ける
15 名前:デフォルトの名無しさん (ワッチョイ c3c0-lsIp) mailto:sage [2016/10/09(日) 20:24:50.85 ID:2uWzXVZF0.net] これはGetterだけでいいような
16 名前:デフォルトの名無しさん (ワッチョイ 21dc-xaNP) mailto:sage [2016/10/09(日) 20:26:06.97 ID:r1p0JkFt0.net] イミュータブルなクラスを書きやすいようにするための機能だからそもそもsetなんか要らないんだよ メソッドも式で書けるようになったからその意味では一貫性がある 正しいかどうかはともかく、C#は関数型へ進み続けている それを受け入れられないならC#から脱落するしかない
17 名前:デフォルトの名無しさん (ワッチョイ 353c-xaNP) mailto:sage [2016/10/09(日) 20:34:20.60 ID:ufk0aci50.net] >>16 いや、マルチパラダイムだろ
18 名前:デフォルトの名無しさん (オッペケ Sr4d-/Z78) mailto:sage [2016/10/09(日) 21:10:17.77 ID:sqq+yTnGr.net] C#7.0では、setterでも書けるようになったりする。
19 名前:デフォルトの名無しさん (ワッチョイ 353c-lsIp) mailto:sage [2016/10/10(月) 00:16:17.24 ID:LNPO30qQ0.net] while (true){ string text = Console.ReadLine(); //受け取った文字で処理 } すごい久しぶりにC#やるのですが、 上記を呼び出したプログラムがいつの間にか不慮の事故で死んでいた場合、 自殺する方法があったような気がしたのですが、分からなくなりました。 これは他のexeファイルから呼び出されて標準入出力でやり取りします。
20 名前:デフォルトの名無しさん (ワッチョイ 97dd-xaNP) mailto:sage [2016/10/10(月) 05:15:45.69 ID:ht+Pv9Q40.net] ハートビート飛ばして返事無ければブレイク
21 名前:デフォルトの名無しさん (ワッチョイ 5b00-BQsb) mailto:sage [2016/10/10(月) 07:04:48.42 ID:ScYkQPFE0.net] >>19 https://msdn.microsoft.com/en-us/library/ms682409(VS.85).aspx 親プロセスに子プロセスをjob objectと登録しておくと、親が死んだ時に 子供をOSが自動的に殺してくれるそうです。
22 名前:デフォルトの名無しさん (ワッチョイ 7694-MJqz) mailto:sage [2016/10/10(月) 07:44:38.15 ID:UXASE0xK0.net] 親が殺し屋に自分が死んだら子を殺せと依頼するようなもの?
23 名前:デフォルトの名無しさん (ワッチョイ c63c-xaNP) mailto:sage [2016/10/10(月) 11:34:40.27 ID:Rkc5P+nq0.net] >>19 > これは他のexeファイルから呼び出されて標準入出力でやり取りします。 パイプ使ってるってこと? なら親が死んだら eof で ReadLine が null を返すんじゃね?
24 名前:デフォルトの名無しさん (アウアウ Sa43-TInN) [2016/10/10(月) 12:54:12.01 ID:V7Z0NZf3a.net] UWPアプリでTextBlockにハイパーリンクを追加し、ClickイベントでそのURLを取得して色々処理したいのですが、 ↓のxamlだとClick時にHyperlink_Clickは呼ばれるのですが、その後標準のブラウザで強制的に開かれてしまいます。 NavigateUriを消せば標準のブラウザで開かれることはないですが、URLを埋め込めません。 何かいい方法はないでしょうか。 <TextBlock> <Hyperlink Click="Hyperlink_Click" NavigateUri="yahoo.co.jp"> ヤフー</Hyperlink> </TextBlock>
25 名前:デフォルトの名無しさん (ワッチョイ 353c-lsIp) mailto:sage [2016/10/10(月) 18:45:27.25 ID:LNPO30qQ0.net] >>23 そうなの? 今試せないんだけど、改行が来なくても大丈夫系?
26 名前:デフォルトの名無しさん (ワッチョイ 353c-lsIp) mailto:sage [2016/10/10(月) 20:37:17.51 ID:LNPO30qQ0.net] >>23 今仕事に区切りがついたんで試したけど駄目でした
27 名前:デフォルトの名無しさん (ワッチョイ 7666-MJqz) mailto:sage [2016/10/10(月) 21:40:27.98 ID:/jPfSdO10.net] >>24 これでどや! <Button Click="Button_Click"> <TextBlock Foreground="Blue"> <Underline>www.msn.com/ja-JP/</Underline> </TextBlock> </Button>
28 名前:デフォルトの名無しさん (ワッチョイ 7666-MJqz) mailto:sage [2016/10/10(月) 21:41:18.62 ID:/jPfSdO10.net] ちょっと違うか
29 名前:デフォルトの名無しさん (ワッチョイ 21dc-+EyG) [2016/10/10(月) 22:04:07.58 ID:ly4XaJJN0.net] どうでもいいけどXAMLでUnderlineやらBorderやらタグで書くのってイケてないよなあ やっぱりCSS的なレイヤは必要だった
30 名前:デフォルトの名無しさん (ワッチョイ 353c-yd9a) mailto:sage [2016/10/10(月) 22:15:45.81 ID:uc840M750.net] えー CSSが生まれたのって、 「HTMLは文書の意味や構造を定義付ける為の物であって、見た目を定義付ける為の物ではない」 的な思想があっての事でしょ HTMLとXAMLとでは存在目的が違うんだから、いらねーっすよ
31 名前:デフォルトの名無しさん (ワッチョイ 1030-VEeh) mailto:sage [2016/10/10(月) 22:17:45.98 ID:NThcQOle0.net] 前景色はStyleで指定できるがUnderlineは駄目って言われるとハンパな感はある
32 名前:デフォルトの名無しさん (ワッチョイ 1030-VEeh) mailto:sage [2016/10/10(月) 22:20:54.95 ID:NThcQOle0.net] いや嘘だ Control.TextDecorationsがある
33 名前:デフォルトの名無しさん (ワッチョイ c37b-jLml) mailto:sage [2016/10/10(月) 23:34:54.76 ID:MUAfL18F0.net] UWPだとe.Handledは使えないんだったっけ? 値を埋め込みたいだけならNavigateUriの代わりに添付プロパティ使うとか
34 名前:デフォルトの名無しさん (アウアウ Sa43-TInN) mailto:sage [2016/10/11(火) 11:19:41.87 ID:n7KkGtdUa.net] >>33 添付プロパティでいけました、ありがとうございます
35 名前:デフォルトの名無しさん (ワッチョイ 707b-lsIp) mailto:sage [2016/10/11(火) 14:48:44.44 ID:mnCEYNvQ0.net] 本に付属してるサンプルでの質問で申し訳ないのですが、 Analyze()関数にあるwhile(sf[ppos] != 13)とif(sf[ppos] >= 32)の部分なんですが、 なぜ13と32で判断させてるのかわかりません。 本書のサンプルをうpしましたので、わかる方いましたら、教えていただけないでしょうか?。 www.dotup.org/uploda/www.dotup.org1031032.7z.html
36 名前:デフォルトの名無しさん (ワッチョイ c3e2-IG4E) mailto:sage [2016/10/11(火) 15:18:08.90 ID:NhNhMU+W0.net] WIN32APIでキャッシュ取得してクッキーやらのファイル名を一覧にしたいのですが 1度目のFindFirstUrlCacheEntryでのメソッドではうまく取得できますが FindNextUrlCacheEntryでのメソッドでは「C」としかでてきませんでした どうすればnextで正常に取得できますか? int firstCacheEntryInfoBufferSize = 0; FindFirstUrlCacheEntry(null, IntPtr.Zero, ref firstCacheEntryInfoBufferSize); IntPtr entryPtr = Marshal.AllocHGlobal(firstCacheEntryInfoBufferSize); var handle = FindFirstUrlCacheEntry(null, entryPtr, ref firstCacheEntryInfoBufferSize); INTERNET_CACHE_ENTRY_INFO result = (INTERNET_CACHE_ENTRY_INFO)Marshal.PtrToStructure(entryPtr, typeof(INTERNET_CACHE_ENTRY_INFO)); //正常にフルパスが表示 richTextBox1.Text = Marshal.PtrToStringAnsi(result.lpszLocalFileName); FindNextUrlCacheEntry(handle, IntPtr.Zero, ref firstCacheEntryInfoBufferSize); entryPtr = Marshal.AllocHGlobal(firstCacheEntryInfoBufferSize); FindNextUrlCacheEntry(handle, entryPtr, ref firstCacheEntryInfoBufferSize); result = (INTERNET_CACHE_ENTRY_INFO)Marshal.PtrToStructure(entryPtr, typeof(INTERNET_CACHE_ENTRY_INFO)); //Cとだけ表示される richTextBox1.Text += Marshal.PtrToStringAnsi(result.lpszLocalFileName);
37 名前:デフォルトの名無しさん (ワッチョイ 9e4c-xaNP) mailto:sage [2016/10/11(火) 16:25:38.21 ID:lBkVHEla0.net] >>30 ちょっとちゃうな。 マークアップを管理する為、別層があった方がええよってだけなんじゃね
38 名前:デフォルトの名無しさん (ワッチョイ d919-hgF0) mailto:sage [2016/10/11(火) 17:06:07.06 ID:yDjM8vhd0.net] >>35 sfがstringであることぐらいは質問文の中に欲しいなー stringに対して [index] でアクセスするとchar型、つまりUTF-16の文字コードが取得できる それぞれの文字コードが指す文字は 13: CR(=\r)つまり改行文字 32: (いわゆる半角の)空白文字 CRが見つかるまでループしてるのはコメント通り1行分を読み込んでるから 空白文字の方はちょっと特殊だけど、文字コード0〜31は制御コードって言う 「文字ならざるもの」を入れておく領域になっているんで、 つまり文字として有効かどうかをチェックしてる
39 名前:デフォルトの名無しさん (アウアウ Sa76-juU9) mailto:sage [2016/10/11(火) 17:36:19.27 ID:5nhn+XnWa.net] マジックナンバー使うような人の書いた本って読む価値あるかねw
40 名前:デフォルトの名無しさん (ワッチョイ d919-hgF0) mailto:sage [2016/10/11(火) 17:47:59.14 ID:yDjM8vhd0.net] >>36 pinvoke.netのDllImport定義使ってる? なんでかFindFirstUrlCacheEntryだけEntryPoint書いてるけどなぜかそれが FindFirstUrlCacheEntryAを明示してるからそっちはANSIでNextのほうはUnicode呼び出しになる EntryPoint消して、stringへの変換はMarshal.PtrToStringAuto使うようにする あとFindNextUrlCacheEntryは返値見て失敗したらMarshal.GetLastError呼び出し バッファ不足か列挙終了か確認する必要がある そもそも最初に呼び出したFindFirstUrlCacheEntryで得られたバッファサイズはFindNextUrlCacheEntryでさらに拡張される可能性があるし もし拡張されたらまたFindFirstUrlCacheEntryから呼び出し直しだから はじめっから65536とか適当に大きいバッファ確保しておいて FindNextUrlCacheEntryに渡すbufferSizeは毎回入れ直しておいた方がいい
41 名前:デフォルトの名無しさん (ブーイモ MMa8-pu+C) mailto:sage [2016/10/11(火) 20:46:16.35 ID:nLx97S41M.net] マジックナンバーやめろ定数にしろっていうけどオブジェクト指向でシンボリック定数使うのも大概だよな
42 名前:デフォルトの名無しさん (アウアウ Sa76-juU9) mailto:sage [2016/10/11(火) 21:06:54.61 ID:k359FhBZa.net] >>41 オブジェクト指向関係あるの?w
43 名前:デフォルトの名無しさん (ワッチョイ 353c-yd9a) mailto:sage [2016/10/11(火) 21:27:18.88 ID:oZVsanbB0.net] シンボリック定数使えなんて誰も言ってなくね? (まあC#はマルチパラダイム言語だが) 改行文字を判別するならエスケープシーケンス使えよと思うし 制御文字を判別するならIsControl使えよと思う場面だな、>>35 は
44 名前:デフォルトの名無しさん (ワッチョイ c37b-jLml) mailto:sage [2016/10/11(火) 22:06:20.93 ID:iuxGk4et0.net] まあそもそも1行ずつ読むならTextReader使えという場面だな
45 名前:デフォルトの名無しさん (ワッチョイ d273-lsIp) mailto:sage [2016/10/11(火) 22:56:13.62 ID:z6hY1vfh0.net] XMLの読み込み書き込みで質問なのですが <?xml version="1.0" encoding="UTF-8"?> -<Class1> <id>100</id> <name>List100</name> -<Class1> ↑のようなXMLの場合は public class SetTest { private string _id; private string _List; public string id { get { return _id; } set { _id = value; } } public string List { get { return _List; } set { _List = value; } } }
46 名前:デフォルトの名無しさん (ワッチョイ d273-lsIp) mailto:sage [2016/10/11(火) 22:59:05.10 ID:z6hY1vfh0.net] >>45 // データ SetTest settings = new SetTest(); settings.id = "idテスト"; settings.List = "Listテスト"; // ファイルに保存 XmlSerializer serializer = new XmlSerializer(typeof(SetTest)); // ファイルで書き出す FileStream fs = new FileStream(Directory.GetCurrentDirectory() + "\\" + "テスト.xml", FileMode.Create); // XMLファイルに書き込む serializer.Serialize(fs, settings); fs.Close(); でいけると思うのですが
47 名前:デフォルトの名無しさん (ワッチョイ d273-lsIp) mailto:sage [2016/10/11(火) 22:59:36.45 ID:z6hY1vfh0.net] >>46 ↓のようなXMLの読み込み、書き込みはどうしたらやれますか? -<Class1> <title>ti</title> -<items> -<item> <id>100</id> <name>List100</name> </item> </items> -<items> -<item> <id>101</id> <name>List101</name> </item> </items> </Class1>>>46
48 名前:デフォルトの名無しさん (ワッチョイ 21dc-+EyG) mailto:sage [2016/10/11(火) 23:43:53.68 ID:aUckxkie0.net] 手軽に読み書きしたいならSystem.Xml.Linq
49 名前:デフォルトの名無しさん (ワッチョイ d273-lsIp) mailto:sage [2016/10/12(水) 00:02:48.25 ID:vhGHJWtL0.net] 調べてみます。ありがとうございます。
50 名前:デフォルトの名無しさん (ワッチョイ 707b-lsIp) mailto:sage [2016/10/12(水) 12:22:41.59 ID:rlMzapAH0.net] >>38 説明不足ですみませんでした。 やはり、13は改行コードなんですね。下のコメントに10と13は改行コードと書いてたので、これじゃないかと思ってたのですが・・。 でも、32は書いてなかったので、質問しないとわかりませんでしたが。 丁寧な解説で、馬鹿な自分でもよくわかりました。 レス&解説ありがとうございました。 >>39 .NETでゲームを作る本は3冊(どれも古い)しかなくて、自分的には貴重だと思うんですよね。
51 名前:デフォルトの名無しさん (ワッチョイ 9ee1-xaNP) mailto:sage [2016/10/12(水) 12:27:22.50 ID:hi5pDFH90.net] >>50 Unity使えよ・・・ WinFormsとかWPFはものにもよるけどゲームには向いてないぞ
52 名前:デフォルトの名無しさん (ワッチョイ ab0d-yd9a) [2016/10/12(水) 15:37:01.20 ID:dzycFkoT0.net] 質問です。 入力されたパスワードをファイルに暗号化して保存するのですが、 暗号化に用いた鍵はどのように保存すればいいでしょうか? C#は逆コンパイルが簡単なので、単にプログラムの中に埋め込むだけでは危険だと想います。 インターネットに繋がっていなくても実行可能なよい方法を教えてください。
53 名前:デフォルトの名無しさん (ワッチョイ d919-hgF0) mailto:sage [2016/10/12(水) 15:55:30.36 ID:ZPnQqXwN0.net] ローカルに置く限りはどうとでもなる 安全な置き場所なんて無いからプログラム埋め込みでも別にいいよ
54 名前:デフォルトの名無しさん (スフッ Sda8-xaNP) mailto:sage [2016/10/12(水) 16:41:55.83 ID:DOlHpAMed.net] >>52 プログラム埋め込みしたうえでアセンブリ難読化でいいんじゃないですか
55 名前:デフォルトの名無しさん (ワッチョイ 21dc-xaNP) mailto:sage [2016/10/12(水) 16:57:13.83 ID:9oDwxE2X0.net] アプリ自体にパスワード認証を入れるってこと? それならパスワードは例え暗号化された形であっても一切保管しないのがセオリー 疑似コードで説明するとこんな感じ void パスワード設定(パスワード) { ファイルに保存("認証情報.txt", ハッシュ関数(パスワード)) } bool パスワード認証(パスワード) { return ハッシュ関数(パスワード) == ファイル読込("認証情報.txt")) } ハッシュ関数はSHA256あたり使えばいい こうするとHDDの内容が流出しようがパスワードが漏れることはない さらに辞書攻撃対策として、パスワードに適当に決まった文字列(ソルト)を付加してやるとより強固になる
56 名前:デフォルトの名無しさん (ワッチョイ 0dd9-VEeh) mailto:sage [2016/10/12(水) 16:59:10.98 ID:McueY18J0.net] chromeは、今もそうかは知らないが パスワードを平文で保存してたよ 曰わく、わざわざ暗号化して保存することで無知なユーザーに偽りの安心感を与えるのは却って害だ とのこと
57 名前:デフォルトの名無しさん (ワッチョイ 353c-yd9a) mailto:sage [2016/10/12(水) 17:08:00.81 ID:ENho6ZSf0.net] >ローカルに置く限りはどうとでもなる まーこれだね スタンドアロンで動作させるのが要件なら 鍵を複数に分割してバラバラの場所に埋め込むとかで、復号を面倒にするくらいが関の山じゃないか
58 名前:デフォルトの名無しさん (アウアウ Sa76-juU9) mailto:sage [2016/10/12(水) 17:13:10.57 ID:istexQmRa.net] パスワード保存するってことは結局第三者であってもそのプログラムを経由したら パスワードを知ってるのと同じことになるってことだから、よく考えればそれならそもそも別に 平文で保存したって大差ないような気もする。 まあそうは言っても体面もあるから、言い訳程度に暗号化しとけば十分なのでは
59 名前:デフォルトの名無しさん (ワッチョイ ab0d-yd9a) [2016/10/12(水) 17:47:32.16 ID:dzycFkoT0.net] みなさんありがとうございます すべて参考にさせて頂き熟考します
60 名前:デフォルトの名無しさん (ワッチョイ ab49-LThL) mailto:sage [2016/10/12(水) 18:49:52.25 ID:BdIUeyBr0.net] っキーコンテナ
61 名前:デフォルトの名無しさん (ワッチョイ fc42-lsIp) [2016/10/12(水) 18:51:17.74 ID:S29qi1Dw0.net] Win10 のエクスプローラでひとつの jpg ファイルを選択して開きたいのですが 初めて開くフォルダでは選択されません (png なんかもなるようです) こちらと同じ dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=33133&no=0 上のリンクでは SHOpenFolderAndSelectItems で解決とあるものの jpg が 1 万枚とか大量にあるとやはり初回は選択されません 初回のもたつきが選択の処理を阻害している感じです 二度実行すれば大丈夫なようですがもっとスマートな策はないものでしょうか 良い方法を教えてください
62 名前:デフォルトの名無しさん (ワッチョイ c37b-jLml) mailto:sage [2016/10/12(水) 19:12:24.70 ID:XzbrdxqH0.net] Process.Startで関連づけで開いたら駄目?
63 名前:61 (ワッチョイ fc42-lsIp) mailto:sage [2016/10/12(水) 20:24:14.25 ID:S29qi1Dw0.net] >>62 ありがとうございます 関連づけ、というのがよくわかりませんが当方の環境でそのまま指定すると jpg のビューアとクイックアクセスでエクスプローラが起動します もし可能であっても関連付けなど環境を変えることはできないですねスミマセン 何か勘違いしていましたらご指摘ください ちなみに Process.Start("explorer.exe", "/select,***") だとまったくダメで (C# からでなく直接コマンド打っても同じです) SHOpenFolderAndSelectItems だとマシになるといった感じです
64 名前:デフォルトの名無しさん (ワッチョイ c37b-jLml) mailto:sage [2016/10/12(水) 20:28:54.30 ID:XzbrdxqH0.net] Process.Start("hoge.jpg"); ってやることなんだけど
65 名前:デフォルトの名無しさん (アウアウ Sa76-juU9) mailto:sage [2016/10/12(水) 21:01:48.75 ID:istexQmRa.net] VBScriptだと、既に開いてるExploreのウィンドウを捕まえて 操作できるみたいだから、同じことがC#でも出来れば必要なら何度か リトライできそうだけど、どうやるんだろうねえ。 www.tek-tips.com/viewthread.cfm?qid=1759903
66 名前:デフォルトの名無しさん (ワッチョイ 5c7b-pu+C) mailto:sage [2016/10/12(水) 21:18:27.66 ID:8upkYudZ0.net] >上のリンクでは SHOpenFolderAndSelectItems で解決とあるものの よくある「ファイルの場所をエクスプローラで開く」ってこと? そのdobonの記事内にある stackoverflow.com/questions/3018002/c-how-to-use-shopenfolderandselectitems のコード使ってファイル6000個程度で試したけど手元の環境ではもたついても最終的には正確に選択されたが フォルダまたいでも選択されることに驚いた
67 名前:デフォルトの名無しさん (ワッチョイ 7694-MJqz) mailto:sage [2016/10/12(水) 21:41:21.77 ID:y0Sdxi7M0.net] Func<int> func = () => 3; var i = func.Invoke(); このInvokeとは何ぞや? 動き的にはfuncを実行してるんだなってわかるけど。 Invokeを右クリックして定義に移動しても出てこないし。
68 名前:デフォルトの名無しさん (アウアウ Sa76-juU9) mailto:sage [2016/10/12(水) 21:52:34.16 ID:istexQmRa.net] >>67 https://msdn.microsoft.com/ja-jp/library/system.delegate.aspx
69 名前:デフォルトの名無しさん (アウアウ Sac5-xaNP) mailto:sage [2016/10/12(水) 21:58:33.95 ID:5VjkdN+Ga.net] 書いてる通りSystem.Delegateのメンバで、ただ実行するだけのメソッド
70 名前:デフォルトの名無しさん (ワッチョイ 7694-MJqz) mailto:sage [2016/10/12(水) 22:18:37.21 ID:y0Sdxi7M0.net] DynamicInvokeメソッドはあるけどInvokeメソッドがないよ?
71 名前:デフォルトの名無しさん (アウアウ Sa76-juU9) mailto:sage [2016/10/12(水) 22:20:42.72 ID:istexQmRa.net] >>70 だから>>68 にちゃんと説明があるよ
72 名前:デフォルトの名無しさん (ワッチョイ 7694-MJqz) mailto:sage [2016/10/12(水) 22:23:02.23 ID:y0Sdxi7M0.net] これ?意味不明。 >共通言語ランタイムが提供する Invoke デリゲートと同じシグネチャを持つ各デリゲート型の方法です。 >コンパイラは、それを自動的に呼び出すために、このメソッドは、c#、Visual Basic または Visual C から明示的に呼び出す必要はありません。 >Invoke メソッドは リフレクション 、デリゲートのシグネチャを検索する場合。
73 名前:デフォルトの名無しさん (ワッチョイ 21dc-+EyG) mailto:sage [2016/10/12(水) 22:23:25.00 ID:9oDwxE2X0.net] InvokeはSystem.Delegateクラスではなく「デリゲート型」に定義されている デリゲート型っていうのは delegate T Func<T>(); のようにdelegateキーワードで定義される型のことね で、通常のデリゲート呼び出しの構文 func() は func.Invoke() のシンタックスシュガー
74 名前:デフォルトの名無しさん (ワッチョイ 7694-MJqz) mailto:sage [2016/10/12(水) 22:27:44.44 ID:y0Sdxi7M0.net] なるほど
75 名前:デフォルトの名無しさん (アウアウ Sa76-juU9) mailto:sage [2016/10/12(水) 22:31:04.83 ID:istexQmRa.net] >>72 機械翻訳が意味不明だから、古いバージョンのドキュメントを読んだ方がいいかもね
76 名前:デフォルトの名無しさん (アウアウ Sa76-juU9) mailto:sage [2016/10/12(水) 22:32:26.53 ID:istexQmRa.net] >>73 おいおい本当かよそれw
77 名前:デフォルトの名無しさん (ワッチョイ d91e-xaNP) mailto:sage [2016/10/12(水) 22:52:16.65 ID:x6Yo9Mwa0.net] 一応張っておくぜ stackoverflow.com/questions/16309286/funct-vs-funct-invoke
78 名前:デフォルトの名無しさん (ワッチョイ f93a-xaNP) mailto:sage [2016/10/12(水) 23:07:59.70 ID:GJ+oagFT0.net] null条件演算子が出来てから、Invoke()の出番が増えたなぁ
79 名前:デフォルトの名無しさん (アウアウ Sac5-xaNP) mailto:sage [2016/10/12(水) 23:44:05.17 ID:44xB4wBga.net] ほんとに最近C#の勉強始めた者です。 Visual Studioの使い方がよくわからなくて……「新しいプロジェクト」から「空のプロジェクト」で、プログラムを書くのが良かったのですが、いつの間にかこの項目が消えて選べなくなりました。他はアプリを作るようなモードなので使いづらいです。。どうしてですか?
80 名前:デフォルトの名無しさん (ワッチョイ 877b-nzJn) mailto:sage [2016/10/13(木) 00:52:36.58 ID:aniHJH6t0.net] そもそも、空のプロジェクトの意味がわからない 画面を持つなら、Form だし、ライブラリを作るなら、DLL だろ。 それ以外にあるのか?
81 名前:デフォルトの名無しさん (スフッ Sd4f-Oa01) mailto:sage [2016/10/13(木) 01:42:20.09 ID:HIdK+zqJd.net] >>80 Visual C++のところに空のプロジェクトがあるだろ
82 名前:デフォルトの名無しさん (ワッチョイ 1b9f-c7dp) mailto:sage [2016/10/13(木) 03:33:19.33 ID:eeNekR2j0.net] 左のインストール済み→テンプレート→Visual C#→Windowsデスクトップの中
83 名前:デフォルトの名無しさん (ワッチョイ 8331-8qPS) mailto:sage [2016/10/13(木) 05:13:31.24 ID:XSmxsz+k0.net] デスクトップアプリなんですが、 プログラム起動時にユーザーログインとテキストファイルの読み込みを行っています で、それらの情報をいつでもアクセス出来るようStaticクラスに持たせているのですが このような方法は特に問題ないでしょうか? もっといい方法や推奨される方法があれば教えてください
84 名前:デフォルトの名無しさん (ブーイモ MM4f-DI90) mailto:sage [2016/10/13(木) 07:46:56.79 ID:d/dyHEl/M.net] そういう作りは依存関係が暗黙化されてわかりにくくなるよ そのクラスをインスタンスにして必要なクラスのコンストラクタで渡せばいい
85 名前:デフォルトの名無しさん (ワッチョイ bbdc-Oa01) mailto:sage [2016/10/13(木) 08:06:32.92 ID:U+TNkLbY0.net] 別のクラスの処理がテキストファイル内のパラメータに依存してたりすると、 単体テストのときテストケースの数だけいちいちファイル用意しないといけなくて面倒 >>84 のように外から渡した上でインターフェイス経由でアクセスするのが理想 インスタンスをシングルトンで保持しておくのは構わないけど、それに直接アクセスしていいのは呼び出し階層の一番上だけ 他は常にコンストラクタかプロパティで渡す 面倒ならDIコンテナを使ってシングルインスタンスを注入する手もある
86 名前:デフォルトの名無しさん (ドコグロ MM97-Oa01) mailto:sage [2016/10/13(木) 08:43:31.40 ID:CLiojDhVM.net] >>83 ごく少数 かつ それが色々な場所で使われる なら ありだと思う >>84-85 みたいな頭でっかちの一見正論は常に役に立つ訳じゃないから無視していい
87 名前:61 (ワッチョイ 8742-8qPS) mailto:sage [2016/10/13(木) 10:18:41.87 ID:T2aLctg20.net] 皆様ありがとうございます >>64 jpg に対するビューアで表示されますので難しいのかなと >>62 で「ビューアとクイックアクセスでエクスプローラが」と言いましたがビューアだけでした >>65 リンク先のスクリプト当方ではなぜかうまく動きませんね 今のところこれを C# で実現する技量も持ってないです 表示させたエクスプローラを操作してというアプローチも検討していましたが 素人にはキツそうで他の安易な手法を模索中です >>66 確かに 6,000 であれば選択しますね!これは知りませんでした しかし 10,000 になると当方の環境ではほぼ選択されません これまで single item のコードを元に実行していましたが 複数可のほうのコードで同じファイル名を重複して指定すると 10,000 で
88 名前:れば選択されることが分かりました ただ 20,000 などもっと増えるとダメなようです 二重実行だと 20,000 でも選択されるのでやはりこれで手を打つべき? [] [ここ壊れてます]
89 名前:デフォルトの名無しさん (アウアウ Saff-+9sP) mailto:sage [2016/10/13(木) 11:10:13.49 ID:D/S7S9qga.net] >>83 本当に共通の情報を複数から参照する必要があるのであればそれを一つのクラスにまとめてもいいけど、 単に永続化が必要な情報であるという理由だけで一つにまとめている(各々そのクラスにアクセスするのは 共通の情報ではなくそれぞれ別の情報)のであれば明らかに間違ってるな。 明確に理由は説明できないけど、staticなインスタンスではなくstaticクラスを使うのも 個人的にはちょっと違う気がする。
90 名前:デフォルトの名無しさん (ワッチョイ d77b-8qPS) mailto:sage [2016/10/13(木) 12:55:57.73 ID:QpGu+ou60.net] >>51 .NETで基礎を磨きたくて、ゲーム作りならモチベも下がらずにやれるかなと思ってこの本にしたんです。 参考書も購入済みなので、本格的なゲームを作る時はUnityを使いますよ。
91 名前:デフォルトの名無しさん (ワッチョイ d77b-8qPS) mailto:sage [2016/10/13(木) 13:09:35.62 ID:QpGu+ou60.net] >>79 Blend for visualstudioを選んでませんか? これだと空のプロジェクトの項目はないので、visualstudio20xx(xxは自分がDLしたバージョン)を起動してください。 visualstudio20xxを起動させているなら、新規作成 > プロジェクト > visualC# > Windows > クラシックデスクトップにすれば出てきますよ。
92 名前:デフォルトの名無しさん (アウアウ Sa97-Oa01) mailto:sage [2016/10/13(木) 13:44:34.25 ID:OsInCkTea.net] >>90 いろいろ調べて、Express for Desktopというのをインストールしたところうまくいきました。ありがとうございます。
93 名前:デフォルトの名無しさん (ワッチョイ 877b-8qPS) mailto:sage [2016/10/13(木) 16:59:59.60 ID:Yv6P+Iys0.net] 正規表現使ってファイルパスの一部を置き換え(消去)したいんですが、 パターンを書いてみたのですが、うまくいきませんでした "C:\Users\PCname\test\file.xlsx" このファイルパスを表す文字列のfile.xlsx部分だけを消去したいです
94 名前:デフォルトの名無しさん (スプッッ Sdcf-Oa01) mailto:sage [2016/10/13(木) 17:10:05.54 ID:mZgNLhHCd.net] >>92 正規表現にこだわらないなら、Pathクラス使った方が簡単じゃないか? Path.GetDirectoryName メソッド https://msdn.microsoft.com/ja-jp/library/system.io.path.getdirectoryname.aspx
95 名前:デフォルトの名無しさん (ワッチョイ 877b-8qPS) mailto:sage [2016/10/13(木) 17:17:53.92 ID:Yv6P+Iys0.net] >>93 こんな便利なメソッドがあったんですね 回答ありがとうございました、無事にできました。
96 名前:デフォルトの名無しさん (ブーイモ MM4f-DI90) mailto:sage [2016/10/13(木) 20:02:29.09 ID:HwCkNWajM.net] >>86 またまたご冗談を いろいろな場所で使われる静的なインフラクラスとかただの悪夢じゃないですか
97 名前:デフォルトの名無しさん (スフッ Sd4f-Oa01) mailto:sage [2016/10/13(木) 23:29:34.82 ID:tcMW2ABkd.net] >>86 賛成です
98 名前:デフォルトの名無しさん (オッペケ Srd7-Oa01) mailto:sage [2016/10/14(金) 11:32:00.91 ID:5Y7KbdSJr.net] wpf使わなくてもVisualStudioやPhotoshopみたいなブラック基調のFormデザインって作れる?
99 名前:デフォルトの名無しさん (ワッチョイ bbdc-Oa01) mailto:sage [2016/10/14(金) 11:46:46.23 ID:xv7XrH2t0.net] 簡単にというなら不可能 そもそもWPFやWebブラウザは何もないところにGUI部品っぽいものを独自に描画してるわけで、 WPFやElectronで作る場合の100倍の工数かけてそれと同じようにスクラッチすれば可能
100 名前:デフォルトの名無しさん (ワッチョイ 4f4c-Oa01) mailto:sage [2016/10/14(金) 12:10:54.76 ID:SyTitZMd0.net] Designing XAML in Visual Studioからみてけば