X



ふらっと C#,C♯,C#(初心者用) Part141
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 2317-qMUn)
垢版 |
2018/12/15(土) 11:07:07.89ID:0aSEF/I+0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1538646998/
■コードを貼る場合は↓を使いましょう。
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
0419デフォルトの名無しさん (アウアウエー Sa23-0Knw)
垢版 |
2019/01/23(水) 08:36:51.99ID:YOQQL4jNa
ちなみにWebなら上記のようなまどろっこしいことをしなくてもRazorテンプレートの中に直接forループを記述するだけだ
WPFの難解なバインディングは概念ばかりが先行してユーザーを置き去りにする典型的なMSの失敗作
0425デフォルトの名無しさん (ワッチョイ c101-drjx)
垢版 |
2019/01/23(水) 17:42:05.37ID:yPNynzM60
最近、業務システムはデータベースとデータ操作言語が8割でC#はさほど重要じゃないんじゃ。。。

と疑うようになってきました

C#が主役の開発って、ゲームくらいですかね
0426デフォルトの名無しさん (ワッチョイ 2961-TTNp)
垢版 |
2019/01/23(水) 17:50:21.87ID:qdiHHHQi0
>>425
それも統計に嘘がある可能性あり。以下、各社各様、自分に都合の良いことを行っている:

一般人:「Androidのアプリの大部分は Java である」
Unity:「百万種類以上あるゲームアプリの半数が Unity(C#)製である」
Adobe:「Flash製ゲームが、100万種類を超えた。」
日本人:「日本の歴代で一番売れたゲームは、Final Fantasy xx で、700万本(売り上げにして500億円程度)」
外人:「MineCraft というゲームの売り上げが一兆円越えた。」
0427デフォルトの名無しさん (ワッチョイ 2961-r1Xg)
垢版 |
2019/01/23(水) 19:31:40.08ID:qdiHHHQi0
誤: 外人:「MineCraft というゲームの売り上げが一兆円越えた。」
正: 外人:「MineCraft というゲームの売り上げ本数が一億本越えた。」

Flash に関しては、「one million games」みたいな言葉を使って、
Adobe が「自慢」していたんだそうだ。
0429デフォルトの名無しさん (ワッチョイ 2961-qnWR)
垢版 |
2019/01/23(水) 21:24:52.01ID:xzA+L1aD0
SQL手書き最高ひゃっはp
0430デフォルトの名無しさん (ワッチョイ 134f-m9BR)
垢版 |
2019/01/23(水) 22:51:20.49ID:xSBZbPpe0
C#のデバッグ画面の診断ツールについて質問です

メモリ使用量のプロファイルはデフォルトで無効だと思うんですが、いつの間にかクリックしてしまって
有効になったまま無効に戻せません

VCの場合はクリックすると元に戻す出来る場所があるのですが

レジストリをいじらないと駄目なんでしょうか?
0431デフォルトの名無しさん (ワッチョイ be7c-mcSo)
垢版 |
2019/01/24(木) 18:07:50.56ID:+k418LkV0
とりあえずVisual Studio Community 2017だと
診断ツールウィンドウの左上の歯車クリックで出るドロップダウンの
メモリ使用量のチェック外したら次のデバッグから消える
つかデフォルト有効じゃなかったっけ オンにした記憶ないし
0432デフォルトの名無しさん (ワッチョイ e12d-L3L3)
垢版 |
2019/01/24(木) 22:08:23.88ID:nbtsb27b0
C#の話じゃないのかもわかんないけど、ちょくちょく出てくる「コンテキスト」ってのが何者なのか未だに理解できん
プログラムの単位で!?処理の中断・継続等を担ってる!?!?とかなんとか説明されてるけど意味がわからん
こいつは一体どういうもんなんじゃい?
0434デフォルトの名無しさん (ワッチョイ e12d-L3L3)
垢版 |
2019/01/24(木) 22:23:04.95ID:nbtsb27b0
>>433
ASP.NETでもEFでもXamarinでのモバイル開発でも、何しててもコンテキストが出て来まくるじゃない
0435デフォルトの名無しさん (ワッチョイ 4de3-cDLG)
垢版 |
2019/01/24(木) 22:34:05.54ID:KQvEosKo0
>>432
「文脈」という意味で、例えば、Graphic の Context の場合なら、
・現在の foreground color
・現在の background color
・現在の font
・「カレント座標」 (MoveTo() などで設定する LintTo() の開始座標)
・現在の Clipping 領域。
・現在の 原点の位置。

などを記録しているオブジェクトのようなこと。だから、もし、同じ
Window に対して 2つの Graphic Context を持てば、それぞれで別々の
カレント座標や、foreground color、Clipping Region を持つことが
できて、瞬時に切り替えたりできる。これが、Win32 の Device Context
に相当する。

---------------------------------------
CPU の Cotext の場合、IA32BIT の場合なら、
汎用レジスタ: EAX, EBX, ECX, EDX, ESI, EDI、EBP
命令ポインタ: EIP
スタックポインタ: ESP
フラグ: EFALGS
セグメントレジスタ: CS, DS, ES, FS, GS
浮動小数点レジスタ: ST0〜ST7

などが該当する。この Context を細かく時間を区切って切り替えることで、
MultiTask が実現できる。MultiCore CPU の場合は、それぞれの Core が
別々の Context を同時に持っていることになる。
0436デフォルトの名無しさん (ワッチョイ 4d61-cDLG)
垢版 |
2019/01/24(木) 22:36:47.07ID:/05KE7l40
>>435
ただし、JS の canvas の context は、1つの canvas に対しては、1つしか
持つことが出来ないとされており、
var ctx1 = canvas.getContext("2D");
var ctx2 = canvas.getContext("2D");
のようにしても、ctx1 と ctx2 は同じ値が返ってくることになっているらしい。
0438デフォルトの名無しさん (ワッチョイ e12d-L3L3)
垢版 |
2019/01/24(木) 23:11:19.24ID:nbtsb27b0
ふえるわけわかめ
0441デフォルトの名無しさん (ワッチョイ 4d61-cDLG)
垢版 |
2019/01/25(金) 06:33:11.37ID:58XK3b4v0
>>438
紙に絵を書く場合に、色んな筆に予め色を載せておいて、必要なときにすぐに
目的の筆を選べるようにしておくと便利。その筆が context。
これだけだと単なる「brush」に過ぎないという突っ込みも有り得る。
実際のcontextは筆だけでなく、場所まで覚えてくれていたりする。
0444デフォルトの名無しさん (ワッチョイ 4d61-cDLG)
垢版 |
2019/01/25(金) 09:01:53.98ID:58XK3b4v0
日本語で、「この文脈では」「文脈をわきまえて」というものがあるけど、
直前に直線の描画を終えたばかりの「最後の座標」を覚える、っていうのが
それに近い。最後に使った色を今後も使う、最後に使った座標から、
また、直線を描き始める・・・。

お葬式では暗い顔して暗い服を着る、結婚式では明るい顔する・・・。
悪いニュースは暗い顔で読み、良いニュースは楽しそうに読む・・・。
それが文脈、context。
0445デフォルトの名無しさん (ワッチョイ 4d61-cDLG)
垢版 |
2019/01/25(金) 09:13:33.36ID:58XK3b4v0
それはそうと、.Netで書かれてるらしい MasterSeeker.exe と HNXgrep.exe
がWin7で劇遅になった。特に起動。XPではとても快適だったのに。
起動速度が多分、3〜5倍くらいになった気がする。

Win32/MFCで書かれたアプリでは経験したことの無い現象だと思う。
0446デフォルトの名無しさん (アウアウエー Sa4a-QJWZ)
垢版 |
2019/01/25(金) 12:14:00.12ID:qfUC5qIOa
>>432
そんなこと考えても時間の無駄。
contextの意味もcontext依存だから。
その文脈でどういう意味で使われてるか読み取るしかない。
英語ってそういう言葉でしょ?

コンピュータプログラムのcode、暗号のcode、符号のcode、
これらから還元してcodeが何を意味してるのか考えても意味ないのと同じ
0448デフォルトの名無しさん (ワッチョイ c6da-uJAn)
垢版 |
2019/01/25(金) 14:04:22.53ID:HDgzt9Ph0
管理者権限を必要としないで動作するソフトを作成しました、。
仮にバグがあったとして、そのバグを突かれて攻撃された場合に権限昇格等の事態は発生しますか?
0449デフォルトの名無しさん (ワッチョイ e9d4-h/iE)
垢版 |
2019/01/25(金) 14:31:21.79ID:NjeEwFLO0
アプリケーション1とアプリケーション2の間でメッセージをやり取りする必要が出てきたので、SendMessageを使ってもう一方のテキストボックスに
メッセージを送り、TextChangedのイベントで受け取りを判断するようにしました。
ところが、アプリケーション1→2は成功するのに、2→1はうまく動作してくれません
(テキストボックスに送られたメッセージは表示されますが、テキストボックスがChangeしたとは判断されていないようです)。

原因がわかる方いらっしゃったら教えてください。
0450デフォルトの名無しさん (ワッチョイ 8201-tKkQ)
垢版 |
2019/01/25(金) 16:06:37.52ID:ihVRaCqt0
formにフォーカスしたときにスペースキーを押すとkeydownで拾って処理ということをやってるけど
スペースを押すタイミングでform内のチェックボックスがチェックされたり消したりするけど止めることは出来ますか?
ヒントを教えてください。
0452デフォルトの名無しさん (ブーイモ MMb6-awm2)
垢版 |
2019/01/25(金) 16:35:10.05ID:cY+a6SZrM
>>448
所詮ローカルアプリだろ?
そんなもんにセキュリティの考慮なんぞ要らん
正当なユーザーに悪意があれば自分のPCの権限制御なんぞどうとでもなるし、
権限のない第三者が悪戯できない程度には今のWindowsのセキュリティは堅固だ
0458デフォルトの名無しさん (ワッチョイ 2e7b-hIZr)
垢版 |
2019/01/25(金) 22:02:24.78ID:RIyzEPA40
>>450
・KeyDown用のコントロールを設定しForm全体でキーを受けるのをやめる
・別のコントロールに常にフォーカスが当たるようにする
 具体的にはクリックイベントやForm.Shownのイベントメソッドを全部作ってControl.Select()かControl.Focus()を入れる
・Formからチェックボックスを無くす
下に行くほど下策。他にもあるだろうけど他の人に任せる
0459デフォルトの名無しさん (アウアウエー Sa4a-QJWZ)
垢版 |
2019/01/25(金) 22:36:20.38ID:0+JzU8ara
>>450
基本的にはそれあなたの仕様そのものがバグってる。
WindowsのUIのお約束に反するようなUIを作ったらあかん。
どうしてもならSetStyleを呼んでCheckBoxが入力フォーカスを持たないようにするのが筋だと思う。
0462デフォルトの名無しさん (ワイーワ2 FF8a-L3L3)
垢版 |
2019/01/28(月) 16:43:45.23ID:ji//xT0NF
TCPsocketとか使う
0463デフォルトの名無しさん (ワッチョイ 5902-beQY)
垢版 |
2019/01/29(火) 18:28:09.44ID:lSFWGay90
質問です
100msとかの短い間隔で繰り返す場合、
Systems.Timers.Timerを使って処理を繰り返すのと
while中にSleepかTask.Delayで間隔をとって繰り返すのとでは
どっちが処理がはやくて負荷が少ないですか?

またそれぞれのメリット・デメリットがあれば教えて欲しいです
0465L (ワッチョイ 4d61-cDLG)
垢版 |
2019/01/29(火) 18:47:23.89ID:8rAEnTT80
>>463
Sleep() 自体はそんなに積極的に使うべきものではない。ただし、
「逐次処理」で書いたほうが書きやすいような場合に使うと便利
な場合がある。例えば、単なる繰り返しではない、以下のように順にコードを
実行していくような場合:
(処理1)
(何かのフラグが変化するか、または単に時間が経つまで待機)
(処理2)
(何かのフラグが変化するか、または単に時間が経つまで待機)
(処理3)
・・・

ここで、処理1、処理2・・・の内容がほとんど同じような場合は、Timer を
使うべきだが全く違うようなものが10個も並ぶような場合だったら、Sleep()
を使うと楽。

SetEvent() などの同期オブジェクトを待つ WaitForSingleObject() などがサポート
されてない環境において、何かのフラグが立つのをポーリングして待たざるを得ない
ような時に、間に何も「はさまない」でループするとCPUがフルパワー状態で回って
しまって電気の無駄使いになるのが、Sleep() を「はさむ」と、Sleep()に指定する
待ち時間がたとえ短時間であっても、Sleep() の中で待ってる間は CPU が HLT 状態
になるので、電力消費を劇的に抑えることが出来る。
WaitForSingleObject() などが存在する環境では、Sleep() は余り使わないで良い。
0467デフォルトの名無しさん (ワッチョイ 4d61-cDLG)
垢版 |
2019/01/29(火) 18:59:35.28ID:8rAEnTT80
【参考】
Sleep() の意味は、待つときに、HLT 命令を使うこと。HLT 命令は、特権命令なので
ユーザーランド(一般アプリ)のプロセスでは実行できないため、OSのAPIで実行して
貰うしかない。なお、マルチタスクOSで、HLT 命令を実行すると、他のプロセスに実行が
移ることが多い。

多くのアーキテクチャに置いて、HLT 命令は、「busy wait」で待つよりも、
劇的に電力消費と熱の発生を抑えることが出来る:

https://en.wikipedia.org/wiki/HLT_(x86_instruction)

Almost every modern processor instruction set includes an instruction or
sleep mode which halts the processor until more work needs to be done.
In interrupt-driven processors, this instruction halts the CPU until an
external interrupt is received. On most architectures, executing such
an instruction allows the processor to significantly reduce its power
usage and heat output, which is why it is commonly used instead of
busy waiting for sleeping and idling.
0468デフォルトの名無しさん (アウアウエー Sa4a-QJWZ)
垢版 |
2019/01/29(火) 19:19:24.76ID:BTNuwc+5a
>>463
どっちにしろそんな違いがプログラムのパフォーマンスに影響なんかしないw
そもそも可読性よりパフォーマンスを優先する時代じゃない。
つまりより可読的な方法を選択すべき。

一定間隔で処理を繰り返すなら普通はタイマーを使った方が可読的でしょう、
繰り返し終了後に別の処理を継続させたい、みたいな事情があればあえてループ(つまりSleep)を
選択する場合もあるかもしれない
0469デフォルトの名無しさん (ワッチョイ 5902-beQY)
垢版 |
2019/01/29(火) 20:17:02.92ID:lSFWGay90
>>465-468
みなさまありがとうございます。
特にSleepの解説は勉強になりました。

パフォーマンスも特に影響無いようで、
一定間隔で処理するのでTimerを利用することにします。
0474デフォルトの名無しさん (ワッチョイ ed0c-wD8z)
垢版 |
2019/01/30(水) 07:29:11.42ID:foE0k69S0
>>472
P/Invoke禁止とは言われてないのだな

ではD3DKMTWaitForVerticalBlankEventを使いましょう
名前はD3Dとありますがgdi32にある関数なのでDirectXではないと
糞ルールを決めた上司に主張しましょう
0477デフォルトの名無しさん (スップ Sd62-OaRE)
垢版 |
2019/01/30(水) 08:46:16.74ID:hYqQd3E1d
あるフォルダ(A)内に不定期に作成されるファイルを、ローカルのフォルダ(B)に一定間隔でコピーします(フォルダ内全てではなく、前回からの差分ファイルをコピー)。

今回コピーしたファイルを使って後続処理をしたいのですが、どのようにしたら今回コピーしたファイルだと判別できますか?ファイル名にはタイムスタンプが入っています。
コピー後にA内のファイルを削除などできず、コピーのみ可能です。
0483デフォルトの名無しさん (ワッチョイ 7f2d-V2CY)
垢版 |
2019/01/31(木) 17:28:39.66ID:hO+r/SI90
Dictionary 型の自動ってないですか。

とあるキーに対してInsert/Updateするとき、
いちいち ContainKeys してから Add するかしないか、ってのがイケてないと思うのですが

dicHoge["Key"] = "hoge";

ってしたとき、Key がなかったら Add して、あったら値を差し替える、みたいな動きする標準クラスないですか?
0486デフォルトの名無しさん (アウアウエー Sa7f-dgou)
垢版 |
2019/01/31(木) 17:46:25.97ID:+2lIT2P6a
>>483
自動って表現が新しいw

確かにそんなメソッドがあってもよさそうだけど、
たぶん分かりやすい命名がしづらい割には単純にRemove後のAddで
実現できちゃうから用意されてないんじゃないかなと想像
0489デフォルトの名無しさん (ワッチョイ ff2c-ebk0)
垢版 |
2019/01/31(木) 19:16:07.42ID:Is8hbjin0
>>483
> dicHoge["Key"] = "hoge";
> ってしたとき、Key がなかったら Add して、あったら値を差し替える、みたいな動きする標準クラスないですか?
Dictionary<TKey, TValue>はまさにその挙動だが
0490デフォルトの名無しさん (ワッチョイ 5fda-vS77)
垢版 |
2019/01/31(木) 19:16:34.95ID:nQoHUWUF0
何か別の言語と勘違いしてんのかな
C++のmapみたいに存在しないキーにアクセスしたら自動的に初期値が入ればいいなと思ったことはある

var d = new Dictionary<string, int>();
d["a"]++;

こういうのできたら楽
0498デフォルトの名無しさん (ワッチョイ fff2-vS77)
垢版 |
2019/02/01(金) 12:54:05.03ID:hIHuQnKx0
>>474
ありがとうございます
D3DKMTWaitForVerticalBlankEvent に渡す
D3DKMT_WAITFORVERTICALBLANKEVENT の
以下の3つはどのように取得すればよいのでしょうか
D3DKMT_HANDLE hAdapter;
D3DKMT_HANDLE hDevice;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
0502デフォルトの名無しさん (ドコグロ MM7f-vGUq)
垢版 |
2019/02/03(日) 12:37:02.16ID:ZxPovaO5M
>>495
俺も最近似たようなもんが欲しくなったときがある

・重複したときに別の処理が必要
・登録した順番が重要

ってときにDictionary自体使わんで
KeyValuePairのListばっかり使うようになった
つーのはログの出力まで出したいときに登録した順に出したいから
ログ出力するもんにはDictionary使わなくなった
0512デフォルトの名無しさん (アウアウエー Sa7f-S1Ul)
垢版 |
2019/02/04(月) 13:36:44.96ID:AKeTBC2ia
ReadOnly=trueのテキストボックスをクリックしてしまった時に
フォーカス映ってカーソルがチカチカしないようにしたいのですがプロパティ上で設定できないのでしょうか?
0514デフォルトの名無しさん (アウアウエー Sa7f-dgou)
垢版 |
2019/02/04(月) 14:07:22.27ID:/rUNKcNUa
>>512
コピーを想定してそうなってるので、TextBoxを使うならその仕様は買えない方がよいのでは。
コピーなんかできなくてもいいなら素直にLabelを使いましょう。
BorderStyleやBackColorをいじればTextBoxに近い外見にも出来る
0515デフォルトの名無しさん (アウアウエー Sa7f-S1Ul)
垢版 |
2019/02/04(月) 15:54:30.95ID:AKeTBC2ia
テキストボックスの上に後付けでボタン配置したので、ポインタずれて押しそこなった時にそんな感じになってしまったのです
まあ動作的にはなんの問題もないのではあるけど>>513のイベントハンドラ作ってみます
ありがとうございました
■ このスレッドは過去ログ倉庫に格納されています

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