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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7bde-MYX9)
垢版 |
2017/11/07(火) 21:11:25.20ID:LeQqgpmT0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part132
http://mevius.5ch.net/test/read.cgi/tech/1507543256/

■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/11/10(金) 23:09:54.96ID:alfIXjUy0
>>75
並列処理はlock不要に限る
2017/11/10(金) 23:11:40.77ID:OPEeW8tb0
>>79
これ
2017/11/10(金) 23:23:11.10ID:TSxiC3iy0
ConcurrentBagはロックフリーじゃないぞ
追加と取り出しを並行して行うために作られた複雑なコレクションで、オーバーヘッドも大きい
追加だけなら滅多に競合しないはずだから、普通にロックしたほうがむしろ速いんじゃないか?
2017/11/10(金) 23:34:41.16ID:/KAgC3iBa
ああ、もうそんな時期か

しかしAlilExpressは相変わらず胡散臭い出品者多すぎ
84デフォルトの名無しさん (ワッチョイ df03-uZPj)
垢版 |
2017/11/11(土) 00:28:03.41ID:Wyc7UUxM0
お前らブイバーの爪の垢でも煎じて飲めよ
2017/11/11(土) 00:31:02.26ID:FsCJcvbF0
>>82
オーバーヘッドデカイけどそれ以上に楽だからConcurrent系はよく使っているわ
86デフォルトの名無しさん (ワッチョイ df8a-KLCy)
垢版 |
2017/11/11(土) 05:01:11.17ID:epAZZTWl0
ID:SSmhpTC60とかいうアスペ
2017/11/11(土) 09:54:39.72ID:EO+d5mNz0
結果を集める必要があるならそもそもParallelよりAsParallel.SlectMany使ったほうがいい
競合を気にせずに結果返すだけでいいしマージも勝手にやってくれる
2017/11/11(土) 12:00:52.86ID:oSkXIpj60
初歩的な質問ですがお願いします。
C#で画像ビューアを作製しています。
ドラッグアンドドロップで画像を表示する事はできたのですが、
ダブルクリックして画像を表示する方法が分かりません。
jpeg等の画像ファイルに自作プログラムを関連づけておいて
ファイルをダブルクリック→自作プログラムが起動して画像を表示、という様にしたいです。

この方法について解説しているサイトか
ググるためのキーワードだけでも教えてもらえるとありがたいです。
2017/11/11(土) 12:20:44.03ID:jUCjsAob0
拡張子 レジストリ 関連付け
2017/11/11(土) 12:21:10.63ID:7DvP3YTXM
>>88
Mainの最初にブレークポイント置いてargsの中身を見てみよう
91デフォルトの名無しさん (ワッチョイ 5f02-OZYs)
垢版 |
2017/11/11(土) 12:21:55.21ID:aAbgGGPi0
>>88
「プログラムから開く」で自作ソフトを選択して起動させるとmain関数の引数にダブルクリックしたファイルのパスが入る。
2017/11/11(土) 12:38:40.93ID:ZfeLOt3q0
>>88
「ファイル 関連付け」でググれ
C#関係ないと思うんだが
2017/11/11(土) 12:41:16.82ID:ZfeLOt3q0
>>92
あ、そうかファイルパスとらないとか失敬
Environment.CommandLineでも取れるよ
2017/11/11(土) 13:16:41.05ID:jSB1i77R0
>>88
このへんから読んでよきにはからへ

Default Programs
https://msdn.microsoft.com/en-us/library/windows/desktop/cc144154.aspx

Best Practices for File Associations
https://msdn.microsoft.com/en-us/library/windows/desktop/cc144156.aspx
95デフォルトの名無しさん (ワッチョイ 5f02-OZYs)
垢版 |
2017/11/11(土) 17:14:52.12ID:QA+V6jEx0
プログラミング初心者に英語ドキュメント突きつける鬼畜
2017/11/11(土) 17:22:47.41ID:6DAw5yNPr
まあ今時
と言うかこれからはと言うか
英語のドキュメントのリーディングくらいは必須スキルかもね
MSもいつまで日本語ドキュメント提供してくれるか分からんよw
2017/11/11(土) 17:32:07.79ID:oSkXIpj60
>>89-84
予想外に沢山のレスありがとう
なるほど、Main関数の引数からパスを取ればいいのね
GUIでも内部的にはコマンドラインと同じってことか
GUIアプリって作ったこと無かったから難しく考えすぎてたよ
2017/11/11(土) 17:32:59.48ID:oSkXIpj60
安価ミス
>>89-94
99デフォルトの名無しさん (ワッチョイ df03-uZPj)
垢版 |
2017/11/11(土) 17:33:33.06ID:Wyc7UUxM0
リーディングくらいは日本語で言えんのか
100デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/11(土) 17:49:21.24ID:QwHnz2ZY0
日本語(機械翻訳)
2017/11/11(土) 17:54:09.02ID:HFNpDaB10
プログラミングと英語の能力は関係ないのでは(´・ω・`)
2017/11/11(土) 17:57:44.96ID:quGqObWAM
>>101
国語能力を含めた言語能力はプログラムと関係するよ。
まともな文章の書けないやつのプログラムソースはグダグダ。
2017/11/11(土) 18:39:39.67ID:s3s7ujkUr
>>101
うむ
今は不自然な日本語の時に原文確認する感じやね
2017/11/11(土) 18:40:43.95ID:s3s7ujkUr
>>100の間違い
すまぬ
2017/11/11(土) 18:42:15.10ID:IYwJQx3L0
仕様書やライセンスの類なら中学生レベルの英語で十分だと思っている
それで困ったら何でもできるグーグール先生に投げよう
2017/11/11(土) 18:43:14.65ID:7DvP3YTXM
>>102
これはある
まともな日本語書けない奴って、自分のアウトプットを客観的に評価する能力がないんだと思う
2017/11/11(土) 18:43:20.32ID:TdmokUpS0
>>101
なんだかんだ言ってプログラミング関連の情報は英語で書かれてることが多い
なので同じような頭持ってたら英語ができる方が有利ではある
2017/11/11(土) 18:45:13.01ID:rBCr3ON/0
>>102
それ文章に限らず何やってもバカなだけだろ
2017/11/11(土) 18:49:58.51ID:rBCr3ON/0
まあ、C#とか人気言語はともかく、マイナー言語だと「英語」しかない
→仕方なく英文読む機会が増えて英語スキル上がる、はあるな
2017/11/11(土) 18:54:04.24ID:q33W9Eq80
本当にマイナーだと英語すらない
111デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/11(土) 18:59:52.33ID:QwHnz2ZY0
英語だと読めないことはないが直感的に読めないので読む気失せるから嫌だ
2017/11/11(土) 19:01:35.88ID:fOHx5JH9a
言葉に関する能力でプログミング能力と関係がありそうなのは
説明的な文章を書く能力だろうけど、個人的にはまったく無関係とも思えんけど
そこまで関係するのかなという気もする。微妙だね
2017/11/11(土) 19:03:25.83ID:IYwJQx3L0
>>111
英語の仕様書より同じ目的のCのソース読むほうがずっと楽とかよくあること
2017/11/11(土) 19:05:05.60ID:DKRcYA5n0
文章構成はプログラムに近いんじゃない
どういう順で話せば納得させやすいか、意見が通りやすいかとか?
115デフォルトの名無しさん (ワッチョイ 5f96-eUVz)
垢版 |
2017/11/11(土) 19:29:41.43ID:CYrZ+T3I0
C#とJSって同じ部分があるんですけど
同じ部分はJSと同じ感じで使ってもいいんでしょうか
2017/11/11(土) 19:38:25.68ID:IYwJQx3L0
>>115
そういうのを要件そろえて説明するべきという話でした
英語と日本語で同じような発音のものあっても同じ意味とは限らないでしょ
2017/11/11(土) 21:03:18.54ID:r1EKDs0n0
DB接続を抽象化する為にインターフェイスの使用を考えていますが、取得する項目を明示したい場合ってどういう風にすればいいのでしょうか?

例えば
class Book

public string Title{get;set;}
public int Price{get;set;}
public int Pages{get;set;}

の形式でDBから取得してればどのDBでも使えるインターフェースを作りたいのですが、このBookの定義をどこに記述できるのかが分かりません
118デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/11(土) 21:05:28.35ID:QwHnz2ZY0
https://qiita.com/IganinTea/items/e1d35db0a14a84bda452
2017/11/11(土) 21:24:33.76ID:r1EKDs0n0
>>118
ありがとうございます
内容見ましたが、この場合はインターフェースは不適切で抽象クラスが正解って事でしょうか
他にもこの2つの違いについて記してあるサイト見ましたが一部明示的な実装するには抽象化クラスと言うわけですね
2017/11/11(土) 21:30:27.85ID:FW67Xhhd0
>>117
使ったことは無いんだがDbProviderFactoriesと言うものが.NETにはあったはず。この車輪では駄目なのか。
2017/11/11(土) 22:11:54.82ID:TNtSkVmZ0
>>102
そりゃ当たり前だよね。
究極の無能相手に、伝わるように、過不足ないように、なにより丁寧に仕事内容を説明するお仕事だもんね。PG って。
2017/11/11(土) 22:33:07.07ID:LU0qlDNZ0
>>121
というか、自然言語に置き換えられないプログラム書くやつはクソってだけだろ
2017/11/11(土) 22:39:04.35ID:r1EKDs0n0
>>120
こういう関数もあるのですね、ありがとうございます
調べましたがどこまでの範囲で接続に使えるか分からないので今回は見送ろうかと思います
参考サイトは多い感じなので便利な機能そうでした

DBと書きましたがcsvやExcelといったものからも取得を考慮していました
少し仕様説明が足りてませんでしたね・・・
2017/11/12(日) 01:15:25.26ID:n0dr1tl2a
APIを使用したファイル変換の変換状況を知るために自作メソッドのGetStatus()をSystem.Timers.TimerのElapsedイベントに設定して200msecごとに状況を取得することができました。
その変換を繰り返し行う際、そのタイマーのイベントが発生している時でも次のファイル変換を実行してしまいます。GetStatus()で変換終了判定が出た場合(Timer.Enabled=falseのあと)に次のファイル変換を行うようにしたいのですが、どのようにしたらいいでしょうか?
125デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/12(日) 01:22:00.64ID:bU5Cj3UO0
タイマーイベントのイベントハンドラの最初の行でEnableをFalseにして処理が終わったところでEnableをTrueにする
2017/11/12(日) 01:29:01.06ID:n0dr1tl2a
>>125
早速ありがとうございます。
今実行環境がないので後ほど試してみます。
ちなみにその記述ではどのような挙動をするのでしょうか?
127デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/12(日) 01:37:54.98ID:bU5Cj3UO0
すまん。質問をよく理解してなかった
2017/11/12(日) 02:38:51.64ID:A0+Crtura
>>124
正直、何を言ってるのかさっぱり分からないし、それが俺の読解力のせいだと思えないw

その変換とやらを実行するクラスなりメソッドなりが、
現状、一つのファイルの変換が終わると次のファイルの変換を自動的に始める
仕様になっているんだと思うが、それを自動から手動、つまり外から明示的に
メソッドを呼ぶなり特定のプロパティの値を変えるなりしないと次のファイルの変換が
始まらないように変えるだけのことじゃないの?
2017/11/12(日) 03:36:00.42ID:WcVSvCUs0
>>96
自動翻訳がこれだけ発展してる中で何時代錯誤な事いってんのw
センスないよ
2017/11/12(日) 03:40:18.24ID:SMejQ9Z40
MSの日本語ドキュメントなんて機械翻訳だらけなのにな
2017/11/12(日) 04:18:09.89ID:n0dr1tl2a
>>127
>>128
下手な文ですみません
TimerのElapsedで指定したイベントが発生中は次の処理をせずに、Timer.Enabled=falseになってから次の処理を実行するものだと思っていたんです
>>128さんの言うように変換終了判定の場合にプロパティかフラグを立ててそれを監視?するようにしてみます
2017/11/12(日) 06:39:56.32ID:MOg5phwx0
>>129-130
今の自動翻訳だと結局原文参照にいくことも多々あるんだが...
なんのためにカーソル置くと原文表示するようにしてるのかも理解してないのかよ w
すごくウザイから設定で表示しないようにして欲しいが
2017/11/12(日) 07:05:10.05ID:m6spCiOt0
機械翻訳はありゃいいってものじゃない
また宇宙天啓データベースG2と断続的な絞首刑が発生するぞ
2017/11/12(日) 07:20:55.29ID:cRgWk2Y70
最近、プログラミングの腕をそれ以外に求めてる奴が暴れててウザイ
英語ができたからなんだってんだよ
くだんねーアプリしか作れないからくだんねーこと気になるんだぞお前
2017/11/12(日) 07:49:13.63ID:e5xLDhIK0
>>123
>DBと書きましたがcsvやExcelといったものからも取得を考慮していました

世の中には、ODBCと言うものがあって、odbc excel driverとかodbc text driver や他のdbも使える
つ ?System.Data.Odbc.OdbcConnection
2017/11/12(日) 07:52:10.55ID:OnRpH+1DM
>>134
コンプレックス丸出しだな
ドカタから出て自社プロダクト系とか行ったらC#でも日本語ドキュメントのないライブラリもバリバリ使うぞ
2017/11/12(日) 08:09:08.06ID:e5xLDhIK0
>>131
ややこしいことにc#(.net)には4つもタイマークラスがあったりする。
おそらく、System.Timers.TimerのSynchronizingObjectを使えば良いと思うけど
親切な人が解説してくれている。
http://takachan.hatenablog.com/entry/2017/09/09/225342
2017/11/12(日) 08:12:32.88ID:e5xLDhIK0
>>136
nugetのライブラリで日本語ドキュメントがある方が稀だからね。
2017/11/12(日) 08:31:08.16ID:RZNIwvSqr
いわゆるドカタとそれ以外で認識の隔たりがかなりあると思う
2017/11/12(日) 08:52:42.69ID:OnRpH+1DM
ドカタ系にいたときもわりとアメリカの新しいパッケージや製品を使う仕事してたが
専門卒の委託のメンバー達はITスキルはあるのに英語が読めなくて全然仕事できなくて不憫だったわ
英語ができないと国内でも後追いになっちゃう
2017/11/12(日) 09:02:42.68ID:iF3ntH//0
スレタイ
2017/11/12(日) 09:20:22.95ID:cRgWk2Y70
>>136
だからなんだよ
テメーみてーな発達障害持ってなきゃ英語なんか読めなくてもマニュアルのいみぐれーわかんだよバーカ

英語読めるからぼくちゃんのプログラミングの腕も確かでチュよ褒めてって?

気持ち悪ぃんだよさっさとくたばれガイジ
2017/11/12(日) 09:31:42.36ID:Y9bMvc7C0
共倒れで丸く収まりましたね
2017/11/12(日) 09:33:07.24ID:ArqlQl8r0
マ板でやれ
145デフォルトの名無しさん (スププ Sd9f-KLCy)
垢版 |
2017/11/12(日) 11:02:16.46ID:7vMgKcBHd
>>142
どんだけコンプレックスあるの
146デフォルトの名無しさん (ワッチョイ 5f25-OZYs)
垢版 |
2017/11/12(日) 11:21:03.88ID:V8vWJYoP0
マ板並みの見苦しさ
2017/11/12(日) 11:27:55.80ID:/Gc52cuR0
http://tercel-tech.hatenablog.com/entry/2015/04/29/181723

こちらの方のコードを参考に電卓の自動化を試みてるのですが、

mainForm = AutomationElement.FromHandle(process.MainWindowHandle);
のところでエラーが出ます。

型 'System.InvalidOperationException' のハンドルされていない例外が System.dll で発生しました
追加情報:プロセスは終了しているため、要求された情報は利用できません。

何が原因でしょうか?
2017/11/12(日) 11:34:37.51ID:a3dJlCt1a
>>147
そのページの同じコード動かしてそうなるのか?

メッセージだと電卓が終了してると言ってるけど
2017/11/12(日) 11:41:43.01ID:VwNKZEQ+0
>>147
電卓("calc")が起動しているか
デバッガでprocessがnullになっていないか
をそれぞれ確認
全部こっちで確かめるのはめんどうなので例えば
Thread.Sleep(DEFAULT_WAIT_TIME);
の部分を
while(process=null){Thread.Sleep(DEFAULT_WAIT_TIME);}
と書き換えてみるとか。いい加減な方法だからデバッグ時以外に勧めないが
2017/11/12(日) 11:44:54.16ID:VwNKZEQ+0
ヤバい
while(process==null){Thread.Sleep(DEFAULT_WAIT_TIME);}
だったw
2017/11/12(日) 11:52:22.18ID:/Gc52cuR0
自分の環境はwin10で以前までと仕様が違いますよね。
それが原因かもしれません。
電卓のウィンドウハンドルを直接指定してやったら正常に動きました。
ここの方は親切ですね^^
頑張りたいと思います。
152デフォルトの名無しさん (ワッチョイ ffe8-ueqH)
垢版 |
2017/11/12(日) 12:15:13.20ID:j8Tzb3u50
実行してもフォームが固まらないアプリって全部にDoEventsが入ってるわけなん?
メッセージキューは排他のために処理待ちになるん
2017/11/12(日) 12:21:08.98ID:WcVSvCUs0
>>152
非同期処理してるだけだろw
2017/11/12(日) 12:23:38.91ID:SMejQ9Z40
>>152
重い処理は別タスク(スレッド)を作って、UIから分離する。
2017/11/12(日) 12:26:44.13ID:ArqlQl8r0
そいつ金曜日のキチガイだぞ
156デフォルトの名無しさん (ワッチョイ ffe8-ueqH)
垢版 |
2017/11/12(日) 13:00:56.85ID:j8Tzb3u50
>>154
さんきゅ
2017/11/12(日) 13:40:23.32ID:Y9bMvc7C0
キチガイばっかりじゃねーか!
2017/11/12(日) 14:51:20.87ID:/Gc52cuR0
c++
void __stdcall systemcall(string passbuf,bool wait_flag)

c♯
[DllImport("sample.dll", CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
private extern static int systemcall(string passbuf,bool wait_flag);

これで
systemcall("dir", true);

保護されていないメモリがどうの出てエラーになりますが何がいけないのでしょうか?
2017/11/12(日) 14:54:28.47ID:Y9bMvc7C0
戻り値
2017/11/12(日) 14:54:56.10ID:/Gc52cuR0
c♯側のvoidがintになってましたが記述ミスです><

エラー内容は正確には
ハンドルされていない例外: System.AccessViolationException: 保護されているメモリに読み取りまたは書き込み操作を行おうとし ました。他のメモリが壊れていることが考えられます。
2017/11/12(日) 15:01:26.20ID:zx9GAR9XM
std::stringはマーシャリングできない
C++側でchar*を受け取るラッパーを用意してやる必要がある
C++/CLIもあるけど完全に死んだ技術だからお勧めできない
2017/11/12(日) 15:09:12.05ID:e5xLDhIK0
>>161
>C++/CLIもあるけど完全に死んだ技術だからお勧めできない

死亡宣言されてるの?
2017/11/12(日) 17:07:08.00ID:74EZy0fea
>>162
確かそうだよ
メンテナンスされてないから使うなって言われてる
2017/11/12(日) 18:00:59.99ID:ZC7erpT70
>>163
C++/CLIの件
たまに使うから気になる
ソースか検索キーワードプリーズ
2017/11/12(日) 18:26:13.27ID:/VKzDrV00
フォームアプリの新規作成は推奨しないってアナウンスはあるんで、それのことじゃないかな。
https://support2.microsoft.com/kb/3001686

C++/CLIそのものはまだサポートされてると思う。廃止されたのはマネージ拡張。
マネージ拡張からC++/CLIへの移行ドキュメントとか、比較的最近の日付でメンテナンスされてるし。
2017/11/12(日) 18:32:26.38ID:ZC7erpT70
>>165
ありがとう
フォームアプリで使うな、なら納得
2017/11/12(日) 18:59:33.96ID:yKCfx7dw0
C++/CLI捨てるわけねーだろ
2017/11/12(日) 19:11:39.89ID:MOg5phwx0
>>167
むしろ維持する意味がわからんが w
2017/11/12(日) 19:29:05.48ID:e5xLDhIK0
>>168
c/c++のライブラリをラッピングするためにある。
2017/11/12(日) 19:30:38.51ID:j0JK3XOeM
http使ったほうがいいよ
今はもうネイティヴコールする時代じゃない
2017/11/12(日) 19:35:01.10ID:MOg5phwx0
>>169
別にC++/CLIなんて要らんだろ
2017/11/12(日) 19:40:46.39ID:/VKzDrV00
C++/CLIって、なぜか使ったことなさそうな人にやたら叩かれるよねぇ。
自分に必要なけりゃスルーしとけばいいのに、わざわざ「要らない」アピールするのが謎だ。
2017/11/12(日) 19:55:44.38ID:MOg5phwx0
>>172
ん?
人の意見を聞きたくないなら掲示板なんて見なきゃいいと思うぞ
2017/11/12(日) 19:56:59.33ID:Y9bMvc7C0
>>172
こういうアピールしちゃうのも謎だよね
2017/11/12(日) 20:01:12.65ID:yKCfx7dw0
>>171
今からの世代はいらないかも知れないが、今までの世代は必要なんだわ。

過去遺産の再利用でしかないがね
2017/11/12(日) 20:14:47.79ID:MOg5phwx0
>>175
だからMSも力入れてない(2008の時代はインテリセンスすら使えなかった)し、そろそろ打ち止めってことかと
2017/11/12(日) 20:25:03.86ID:e5xLDhIK0
>>170
ApacheもNginxもGoogle V8もLinuxもc言語なんだが。
サーバサイドのサービスもc言語のもあるだろ。
178デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/12(日) 20:32:44.51ID:bU5Cj3UO0
>>170
急に飛躍しすぎ
2017/11/12(日) 20:41:06.51ID:3TYzHs9Ed
>>177
過去のもの過ぎwww「今」の話題にそれはどうかと思うぞ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況