X



ふらっと C#,C♯,C#(初心者用) Part158
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ fe7b-Nimo)
垢版 |
2023/03/26(日) 07:31:00.51ID:2LMOL5Ty0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください。見かけたらNGしましょう。相手してしまったらあなたも荒らしです
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part157
https://mevius.5ch.net/test/read.cgi/tech/1669349768/
■関連スレ
C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
初心者はまずVisual Studioを使いましょう。なおVisual Studioの使い方などに関しては各バージョンで違うので専用スレでお願いします
http://www.visualstudio.com/downloads/
■情報源
https://learn.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://learn.microsoft.com/en-us/dotnet/standard/class-libraries
https://referencesource.microsoft.com/
https://source.dot.net/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
++C++; // 未確認飛行 C
https://ufcpp.net/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0003デフォルトの名無しさん (スップ Sd62-M8+T)
垢版 |
2023/03/26(日) 13:34:29.41ID:tXMVQqKEd
やっぱりアンチじゃないですかー

999 デフォルトの名無しさん (オイコラミネオ MM49-3uzD) sage 2023/03/26(日) 13:01:14.46 ID:14FiY4OPM
単発うざすぎる
本人かよ
結局次スレのテンプレに入れてる
テンプレに入れても利用者は誰の得にもならないのに
0004デフォルトの名無しさん (ブーイモ MM26-pkhP)
垢版 |
2023/03/26(日) 14:32:22.87ID:AZqv4ccCM
ここまで必死だと気持ち悪い
本人以外に考えられないよね
0006デフォルトの名無しさん (オッペケ Srf1-3uzD)
垢版 |
2023/03/26(日) 20:08:58.07ID:rDmXEFHlr
atmarkitのC#入門・・・・はもうバージョンが古すぎて勧められないよなあ
書籍だと独習C#が定番だったなあ・・・・と検索したら第5版(2022/7)でC#10.0まで対応するアップデートが入ってるみたいだ
著者も信用できるし最新の「独習C#」を買って読むのがいいかな
ufcppはさすがに初心者には酷だとは思うけど否定されるべきサイトじゃないような
0007デフォルトの名無しさん (ワッチョイ 426a-3Jul)
垢版 |
2023/03/26(日) 21:05:29.84ID:NpxeEyN90
古いと言えばdobonも古いよな
とはいえ、比較的新しい内容にまで追従していて初心者向けでそれなりに広範囲を網羅しているようなところが有るかといえば思いつかないが
0008デフォルトの名無しさん (ブーイモ MM26-pkhP)
垢版 |
2023/03/26(日) 21:42:52.51ID:5JOAAmYfM
今はもう公式サイトが充実してるから言語を新しく学ぶ人はまず公式から
逆引き的な調べ方をするときだけ外部サイトで補完したほうがいい
0011デフォルトの名無しさん (ワッチョイ e95f-Czjb)
垢版 |
2023/03/27(月) 01:40:39.65ID:b0l2Peyd0
C#で書かれた、比較的著名なOSSプロジェクトって何がある?
活動が滞ってるものも含めて挙げてもらえるとうれしい(できればプロジェクトページへのリンク付きで)
0012デフォルトの名無しさん (ワッチョイ 9901-wUZC)
垢版 |
2023/03/27(月) 02:14:06.44ID:SicRvVGw0
またお前か
0014デフォルトの名無しさん (ササクッテロラ Spf1-wUZC)
垢版 |
2023/03/27(月) 19:57:46.20ID:nOVTz35cp
ファイル整理って何をすることなの?
0016デフォルトの名無しさん (ワッチョイ 45e4-z+CU)
垢版 |
2023/03/27(月) 22:01:14.56ID:dHqJNHXN0
何年か前に独習買ったけど興味のあるところだけ読んだだけで7割くらいは手付けてないな
ちゃんと読んだら勉強になるんだろうけどあの分厚さを前にすると気が進まない
0017デフォルトの名無しさん (オイコラミネオ MM49-3uzD)
垢版 |
2023/03/28(火) 00:47:21.91ID:pwf3y6wyM
独習よりatmarkitのC#入門の方が合う人も多数いると思う
古いから現状にあってない場所が多いけど基本的な考えは違っていないと思う

書いてあることをそのまま読み進めるか誘導されて何か感じるかと言う面で違いがある
前にも書いたけど何冊も読めばいいと思う
0021デフォルトの名無しさん (ワッチョイ 4201-NJwN)
垢版 |
2023/03/28(火) 10:07:29.75ID:fedCMYV90
>>11
著名なOSSってほぼ完成してるからなぁ
個人的に欲しいのはOpenTKのWinUI対応だったりかなぁ
https://github.com/opentk/opentk
0024デフォルトの名無しさん (オイコラミネオ MM49-3uzD)
垢版 |
2023/03/28(火) 19:39:32.97ID:hi78eiG+M
++ c++になにも恨みはないよ
なぜか急に不必要に持ち上げる人間が急に出てきたのがキモイだけ
信者が出るようなサイトじゃないのに

がつがつワード出てくるしランク上げしてんのかと思うわ
本当に馬鹿らしい
0025デフォルトの名無しさん (ササクッテロラ Spf1-wUZC)
垢版 |
2023/03/28(火) 19:51:13.78ID:fqy2U+UFp
いや明らかにお前の方がキモい
不必要にサゲようとする明確な意思を感じる
0031デフォルトの名無しさん (スップ Sdc2-M8+T)
垢版 |
2023/03/29(水) 16:36:19.86ID:nqaTcUCud
>>29
他言語をそこそこ扱えるならC#ではどう書くのか調べるにはいいと思うけど
プログラミング自体が初めてとかだとちときびしいかねぇ
入門とは銘打ってあるけども
0033デフォルトの名無しさん (ワッチョイ 2ef2-uluY)
垢版 |
2023/03/29(水) 17:11:42.62ID:HnYXmqUq0
すみません、質問です
名前付きパイプを作りたいのですが下記のエラーが出てしまいます
Pythonなどだとエラーが出ないのでパーミッション関係ではないと思うのですが、
何が問題なのでしょうか?

環境 visual studio 2022
参考にしたサイト
https://learn.microsoft.com/ja-jp/dotnet/api/system.io.pipes.namedpipeserverstream?source=recommendations&view=net-7.0

エラー内容
System.UnauthorizedAccessException: 'Access to the path is denied.'

プログラム
private static void ServerThread(object data)
{
using (NamedPipeServerStream pipeServer = new NamedPipeServerStream("testpipe"))
{

}
}
0035デフォルトの名無しさん (ワッチョイ d2bd-uluY)
垢版 |
2023/03/29(水) 22:54:15.98ID:q8lCl2vf0
>>33
俺もMicrosoftのコードをそのまま動かしたけど、例外が発生せず動作する。
Windows 11、Visual Studio 2022、Administrator、UAC昇格なし。

サーバープログラムは普通のexe? それともWindowsサービス?

UnauthorizedAccessException と named pipe でぐぐったらちょっと引っかかるけど何か該当するのある?
0037デフォルトの名無しさん (アウアウウー Saa5-+ld4)
垢版 |
2023/03/30(木) 01:52:26.63ID:9v5VPr0Ga
VSCode でもRuby とかやっていると、たまにある。
外部プログラムからフォルダへのアクセス禁止のダイアログが表示されて、それで許可する

VSCodeがバージョンアップされたら、また起こるのかも?
0038デフォルトの名無しさん (ワッチョイ 2ef2-uluY)
垢版 |
2023/03/30(木) 06:33:08.35ID:kkhtfcLh0
>>34
不要なUsingを全て削除してもエラーがでました
Formアプリを作っているのですが、問題を切り分けるためCLIで試してみようと思います

>>35
ググってヒットしたやつも試しました
PipeSecurityクラスを使って云々とあるのですが、
VS 2022だとPipeSecurityクラスがなく手詰まりになりました

例えばこのページの説明:
https://stackoverflow.com/questions/3478166/named-pipe-server-throws-unauthorizedaccessexception-when-creating-a-second-inst

マニュアルにはあるんですがVS2022だとそんなクラスありませんとエラーになります
コンパイルのターゲットバージョン等が影響してるんでしょうか?
プロジェクトのプロパティを見てもターゲット指定箇所がなくて試せていませんが、、、
Visual Studio 2022の使い方で躓いているのかも、、
https://learn.microsoft.com/ja-jp/dotnet/api/system.io.pipes.pipesecurity?view=net-8.0

とりあえず、先に書いた通り CLI で試して、それでだめならVS2019に落としてみようと思います

>>36
パイプ名の変更は試しました
\\.\pipe\ を名前の前につけたりもしたのですがダメでした

PC再起動は盲点でした
試してきます

返信が遅くなりすみません
取り急ぎ、アドバイスありがとうございます
0039デフォルトの名無しさん (ブーイモ MMb6-pkhP)
垢版 |
2023/03/30(木) 11:52:28.88ID:snzoMESKM
>>38
>マニュアルにはあるんですがVS2022だとそんなクラスありませんとエラーになります
必要なassemblyが参照されてるかどうかを確認してみたら?
0042デフォルトの名無しさん (ワッチョイ 49e5-wSlO)
垢版 |
2023/03/30(木) 16:11:20.51ID:AE9DWlm70
そもそもフレームワークのバージョン指定を何でやってるんだ?っていうのもあるけど
.NET Frameworkでも.NETでも基本セット内にあるアセンブリだから
普通にプロジェクト作成してたらあるはずだけどな
0045デフォルトの名無しさん (ワッチョイ be2d-+ld4)
垢版 |
2023/03/30(木) 21:15:23.20ID:CLZl5Xie0
PipeSecurityは.NET Core 2.1/2.2/3.0/3.1, .NET 5の場合は標準で入っていないから
nugetでSystem.IO.Pipes.AccessControlを入れる必要がある

learn.microsoft.comで適用対象が.NET Platform Extensionsになっているものはこのパターン
0048デフォルトの名無しさん (ワッチョイ 3d07-+ld4)
垢版 |
2023/03/30(木) 23:08:36.03ID:9GC6l0iD0
すいません。どうしてもわからないところがあるので質問したいです
ヴィジュアルスタジオ2019つかっています
「開始」をクリックしてプログラムが実行はされるんですが、そのあと「続行」
という表示がでて、「開始」の表示が出てこず、プログラムを作成して実行することができません
どうすればよろしいでしょうか?
0050sage (ワッチョイ 3d07-+ld4)
垢版 |
2023/03/30(木) 23:23:36.52ID:9GC6l0iD0
>>49
いや、プログラムの実行は成功していて、エラーが出てる様子はないですね
005233 (ワッチョイ 2ef2-uluY)
垢版 |
2023/03/31(金) 00:13:56.73ID:w3z1Snlm0
>>39-47
色々アドバイスありがとうございました
再起動では直らず、CLIで試したところ動きました

>>47 さんがご指摘頂いたようにUWPで作っているのが原因でした
WPFに変更したところ無事NamedPipe通信ができました

趣味のツール作りでUIが簡単に作れそうだと思いC#を試してたのですが、
マルチプラットフォームが意識されているだけあって出力ターゲットによって振る舞いが大きく変わるんですね
勉強になりました

皆様、ありがとうございました!
0053デフォルトの名無しさん (ワッチョイ 3d07-+ld4)
垢版 |
2023/03/31(金) 00:42:46.76ID:RPSTRQwt0
きのう、レスの番号が48だった者です。
解決しました。「ビルド」から「ソリューションのリビルド」をクリックした後、
画面の中央に{デバックを中止しますか?}というコメントが出て、「はい」をクリックしたら
「続行」から「開始」へと切り替わり、プログラム作成画面になりました。でも、なぜでしょうか?
0055デフォルトの名無しさん (ワッチョイ 2e10-Jabn)
垢版 |
2023/03/31(金) 06:02:33.93ID:axb4XKnm0
アマゾンのKDPのダラダラ書いてあるC#とかの入門書に買う価値なしと☆1のレビュー付けたら著者が顔真っ赤にして開示請求されたわ
もちろん開示を断ったらそれまでだったが
0056デフォルトの名無しさん (ワッチョイ ffa7-9P2W)
垢版 |
2023/04/01(土) 18:53:33.93ID:efFm48HR0
>>29>>31
正にプログラミング自体初心者だったときはufcpp筆頭にググって上位に出てくるサイトだけで習得余裕だったけどな
「いかがでしたでしょうか?」系のぺージはブラックリスト放り込んでたので必然的にほぼほぼufcppかdobonで学習していたが
0058デフォルトの名無しさん (ワッチョイ ffbc-Cn9/)
垢版 |
2023/04/02(日) 11:53:54.95ID:hVTPoi+J0
最近じゃ AI がかなりいい回答を出してくれるそうじゃない。
もうすぐ AI 自身がプログラムを組んでくれるようになるだろうから、それまで粋がってればいいじゃない。
0060デフォルトの名無しさん (ワッチョイ 5f5f-Fdr2)
垢版 |
2023/04/02(日) 12:21:03.35ID:8ArPExQV0
自然言語対話エージェントによって「ソフトウェア設計の外注・検収の粒度」が劇的に小さくなった(作業者と直で対話するレベルに降りてきた)だけであって、今までと同じく成果物の正当性を判断できない人に(外注は)は使いこなせない
0061デフォルトの名無しさん (ササクッテロラ Sp33-Vyvl)
垢版 |
2023/04/02(日) 12:52:31.04ID:u6xNxXPcp
みずほの案件はAIにやらせた方が人的被害少なくていいかも
0062デフォルトの名無しさん (ブーイモ MM4f-e2c1)
垢版 |
2023/04/02(日) 12:57:43.89ID:b86hlElpM
>>60
成果物の正当性を判断するテストや手順をAIに作らせることができるから使い手次第になるけど相当にハードル低いよ

自然言語で正確に要件が書けて
その要件をテストする方法を理解してればいい
テストといってもユーザーテストのレベルで概ね問題ない
0063デフォルトの名無しさん (ワッチョイ 7fbd-icd+)
垢版 |
2023/04/02(日) 15:24:34.96ID:2lYBmHPa0
テストプログラムもAIに作らせるなら、それが正しいかは現状人間がチェックする必要があるな。
それをAIにやらせると、それをチェックするAIが必要になって収束しない。
0065デフォルトの名無しさん (ブーイモ MM4f-e2c1)
垢版 |
2023/04/02(日) 17:48:28.78ID:D0YauKDyM
>>63
段階的に抽象度があがるので発注者/要求者の理解できる範囲に収束させられる
やり方によって質の違いはでるけど広い分野で発注者/要求者が十分と思える質が出せるようになる
0067デフォルトの名無しさん (ワッチョイ ffbc-Cn9/)
垢版 |
2023/04/02(日) 20:02:28.99ID:hVTPoi+J0
いや、それって現状もそうなんじゃないかと。

確かに AI と発注者?の仲立ちする人材は必要だろうけど、それってどのくらいだろうね。
大部分は失業しそう。

・・・とか言うことを以前にここだか他だかで書いたときの反応とまるで違うのが面白い。それだけ現実的になってきたってことかな。
0068デフォルトの名無しさん (ワッチョイ 5f79-mXbH)
垢版 |
2023/04/02(日) 22:11:23.74ID:Rf8vlqHG0
>>67
無理無理
設計書すら満足に書けねえのが現実

実はプログラムってのは
脳みそなんか使う必要ない
考えなければならないとしたら
それは詳細設計書が不出来だから
プログラムは常に
設計書通りに動くこと
をチェックすればいい
0072デフォルトの名無しさん (ワッチョイ 5f01-icd+)
垢版 |
2023/04/03(月) 14:40:55.62ID:XxTTMVFq0
フォームに設置したメニューのアイテムが20個以上あるのですが
それらのアイテムに割り当てるイベントも20個あります
アイテムごとにファイルを分けるためにpartialで分割するのはありでしょうか?
0074デフォルトの名無しさん (ブーイモ MM4f-OlzB)
垢版 |
2023/04/03(月) 15:40:40.31ID:FBDQFNn3M
偏った書き方になるから万人受けはしないだろうけど・・・
・Form内に内部クラスとしてContextMenuStripを継承したクラスを宣言
・MenuItem(クリック時処理含む)をデザイナを使わず継承クラス内にすべて手書き
するのであれば、内部クラス1個ごとにpartialにする価値あり

内部クラスなんでformのprivateメンバも問題なく読み書きできて便利だから自分もたまによくこの書き方をする
0075デフォルトの名無しさん (ワッチョイ df42-kVuH)
垢版 |
2023/04/03(月) 18:46:41.53ID:7cJzGFyX0
フォームのクラスに処理全部を書こうとするから見通しが悪くなる
フォームのクラスにはイベントハンドラと画面の制御ぐらいだけにして
残りは別クラスを作ってそこで処理をする
そうすりゃハンドラが20ぐらい並んでいても見通しが悪くなることはない
0077デフォルトの名無しさん (ワッチョイ ffbc-Cn9/)
垢版 |
2023/04/03(月) 21:09:06.76ID:u50VhsXZ0
デザインを別にするならだけど。
フォームクラスのイベントハンドラを1つにまとめて、sender だったかのパラメータでイベントの発生元を識別するようにする。
この手の処理はイベントの発生元に限らずだいたい同じなので、このイベントハンドラ内の処理を共通化してすっきりさせる。

これまでは大体これでどうにかなったな。
0084デフォルトの名無しさん (ワッチョイ 5f01-Vyvl)
垢版 |
2023/04/05(水) 08:14:21.55ID:YgLkUvh+0
>>82
またお前か
0087デフォルトの名無しさん (ワッチョイ ff10-MhB/)
垢版 |
2023/04/05(水) 09:31:30.78ID:7c3G3tWr0
CPU言語は表層が違うだけでやってる事は機械語に解読してるからみんな一緒だろ
結局アセンブラでもBASICでも1つを完璧に知ってればなんとかなる
むしろ割り込みの仕組みとかシリアル通信とか基礎のハードウェアを知らんとヤバイ
0090デフォルトの名無しさん (アウアウウー Sa23-VQD5)
垢版 |
2023/04/05(水) 10:02:18.58ID:jU3TV3ZDa
JavaScriptですら最終的にはマシン語に翻訳されることを知らんとか同じコンパイル言語でもそれぞれできることが違うのを知らんとかも大概だし割り込みやシリアル通信はモダンな言語だとだいたい隠蔽されて考えなくていいようなライブラリがあるんでプログラミングしたことないやつが見栄を張ってるようにしか見えんのですわ
0099デフォルトの名無しさん (アウアウウー Sa23-VQD5)
垢版 |
2023/04/05(水) 10:32:48.94ID:jU3TV3ZDa
C#の話か?
ソースからILという仮想機械の機械語に翻訳される
これをコンパイルと呼ぶ
しかし実際には仮想機械を立ち上げるわけじゃなく実行時にこの仮想機械語を実行環境の機械語にコンパイルする
この時に環境に合わせた最適化も行われるので高速動作が可能になっている
つまり事前コンパイラとJITコンパイラの二段構えなわけだ
0106デフォルトの名無しさん (アウアウウー Sa23-VQD5)
垢版 |
2023/04/05(水) 13:03:35.19ID:jU3TV3ZDa
JITコンパイラという常識を語るとJavaとJavaScriptの区別もつかんような雑魚と愉快な仲間たちがワラワラ湧いて出て一ミリも反論できず心証云々言ってるのはなかなか笑えたよ

ほらどうした
初心者を騙してマウント取る作業を続け給えよ
0113デフォルトの名無しさん (ワッチョイ df5f-O8+C)
垢版 |
2023/04/05(水) 13:54:30.23ID:TPpnJ1X/0
> なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
> C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください。見かけたらNGしましょう。相手してしまったらあなたも荒らしです
0116デフォルトの名無しさん (ワッチョイ ff10-MhB/)
垢版 |
2023/04/05(水) 14:51:15.57ID:7c3G3tWr0
CPUの基礎構造も知ってるとええで
アキュムレータとかスタックポインタとかプログラムカウンタとかレジスタとか言われてもわからんだろ
その辺の概念がわかるとどの言語も楽勝
割り込みも概念が解ってないと割り込みルーチンで長文書くとかアホなことしだす
0118デフォルトの名無しさん (ブーイモ MM9f-e2c1)
垢版 |
2023/04/05(水) 15:13:47.52ID:BHJ5CxFKM
>>116
C#もJavaもJavaScriptも全然理解してないことが露呈したあとに
どの言語も楽勝とか言っても恥ずかしいだけですよ
0120デフォルトの名無しさん (ワッチョイ 7fbd-icd+)
垢版 |
2023/04/05(水) 23:52:36.91ID:pugUgjF60
Z80アセンブラ→68000アセンブラ→C→C++→Java→C#→C++/CLI ときたのでつまづかなかった。
あとTcl/TK、sh、Perl、JavaScript、PowerShell、Python。
Rustを試したいが時間が取れない。
0121デフォルトの名無しさん (スプッッ Sd1f-j25d)
垢版 |
2023/04/06(木) 00:06:12.09ID:3X1nsxKId
>>120
マシン語直接入力がないのでやり直し
0122120 (ワッチョイ 7fbd-icd+)
垢版 |
2023/04/06(木) 00:14:30.25ID:XbnIA9J60
>>121
Z80時代はハンドアセンブルしていた。まだ小学生でアセンブラを買う金がなかったので。
よく使う命令は16進の値を覚えていた。
0124デフォルトの名無しさん (ワッチョイ ff8e-j25d)
垢版 |
2023/04/06(木) 02:08:29.77ID:5BQAgGMd0
>>122
後付け乙
0126デフォルトの名無しさん (アウアウウー Sa23-VQD5)
垢版 |
2023/04/06(木) 08:39:03.94ID:hFBJipKZa
>>122
その当時の普通だ
プアな環境でハンドアセンブル繰り返してりゃ自然に覚えるわ
そこから数十年かけて全く進歩できてないのは無能としか言いようがない

お前の培った技能は今全部自動化されてるんだよw
コンピュータはお前より遥かにハードを使いこなして上手に最適化するからお前は完全に無用の長物というわけだ
0128デフォルトの名無しさん (ササクッテロロ Sp33-W4em)
垢版 |
2023/04/06(木) 09:53:23.79ID:etBQDNCap
Z80は拡張命令があって命令数が腐るほどあったから全部覚えてられなかったよな?
0134デフォルトの名無しさん (アウアウウー Sa23-doF5)
垢版 |
2023/04/06(木) 22:05:52.10ID:7WsUOQMza
こんばんは
専門学校で情報処理を2年間学び、今春からIT会社入社です
学校ではC#を学び、それを活用できる会社に入ったのですが、上司からC++が中心と言われてしまいました
使用感としてはC#と大差ないと言われたのですが、実際にどちらも使用したことがあるPGさん目線ではどんな感じでしょうか
0137デフォルトの名無しさん (スプッッ Sd1f-j25d)
垢版 |
2023/04/06(木) 22:50:32.42ID:9OXigCoVd
>>134
お前落ちこぼれだろ
金と2年間も時間を使ってC#とC++の違いもわからんとは使いものにならんわ
0138デフォルトの名無しさん (ワッチョイ 5f07-VQD5)
垢版 |
2023/04/06(木) 22:58:34.92ID:O4MLKnYM0
ていうか派遣か超絶ブラックな気配しか感じないわ
まともな企業なら会社が就職希望者を選抜するがお前の会社は嘘をついて人を集めてる
こんなわかりやすい地雷が見えてるなら地雷も一つだけじゃなく他にも心当たりあるだろ
0139デフォルトの名無しさん (ワッチョイ ffbc-Cn9/)
垢版 |
2023/04/06(木) 23:10:52.40ID:0qi4RJoe0
>>134
素人には見た目は同じように見えるかも。
C# では考えられないような罠があちこちにあったりするから最初はタイヘンかもしれないけど、頑張れ。

コツが分かればかなり自由にいろいろ出来て、自分的にはかなり好きな言語なんだけどね。
0140デフォルトの名無しさん (ワッチョイ 7f79-u6c4)
垢版 |
2023/04/07(金) 00:20:18.59ID:hzbXpJpo0
断言しておくけど専門でC#の学習経験しかない奴にC++の案件は100%こなせない
今後C#案件が自分に回ってこなさそうであれば完全に入る会社を間違ったな
あーあ経歴にさらに傷が付いちゃった
0144デフォルトの名無しさん (ササクッテロロ Sp33-W4em)
垢版 |
2023/04/07(金) 09:53:19.46ID:9oOSsjTpp
言語仕様はそんなに壮大じゃ無いが、使えるクラスとメソッドが異常に多いし、クラス毎に出来る事が偏ってるから面倒だとは思う
0148デフォルトの名無しさん (ササクッテロラ Sp33-KR65)
垢版 |
2023/04/07(金) 12:43:55.58ID:y1ANyd0Sp
WinFormsまた機能強化しますと言えばいいだけのこと
0149デフォルトの名無しさん (アウアウウー Sa23-doF5)
垢版 |
2023/04/07(金) 13:32:40.19ID:kQPpgDuua
>>141 だいたいの専門学校の情報処理科だとC#は必ずやってるもんだよ
はよやめろとも思うが需要がそれなりにあるんだからしゃーない
0150デフォルトの名無しさん (ワッチョイ dfae-1sX2)
垢版 |
2023/04/07(金) 13:50:48.21ID:GJ9VlQpa0
MS<機能強化はしないと言ったけど、仕方ないから高解像度に対応してあげるからね
MS<機能強化はしないと言ったけど、仕方ないからUWPのライブラリを呼べるようにしてあげるからね

地味だけど大きい改良してるんだよなw
0153デフォルトの名無しさん (オッペケ Sr33-9xvd)
垢版 |
2023/04/07(金) 15:06:57.10ID:MubD/dkJr
>>150
もうすぐMVVM対応の改良もはいるよ
0156デフォルトの名無しさん (ワッチョイ df07-DB2t)
垢版 |
2023/04/07(金) 18:24:33.31ID:ZyGCTKiu0
すいません 
本に書いてあったコードで質問があるのですが、

d(オブジェクト名).Text (プロパティ)="変数aの値は"+a+"です。"

というコードを打ってもエラーが出ます。
本には「この2つの+演算子の一方のオペランドには“ “でかこまれた文字列の値が含
まれています。このとき+演算子は四則演算の加算ではなく、
文字列として連結するという処理を行います」
とかいてありますが、なぜ

変数aの値はaです。

という文字が出ず、エラーが出るのですか?
0158デフォルトの名無しさん (スプッッ Sd9f-j25d)
垢版 |
2023/04/07(金) 18:32:16.65ID:nu6NXWXzd
馬鹿ってエラーメッセージも提示しないよな
馬鹿過ぎるから、オブジェクト名とかプロパティとか全角()を打ち込んでいそう
0159デフォルトの名無しさん (オイコラミネオ MM53-icd+)
垢版 |
2023/04/07(金) 18:33:21.02ID:377j0hRUM
どこかで間違えてるからでしょう
とりあえずエラー内容を書いてください

あと
これは打ち込んだコードをそのままコピーしてませんよね?
全角文字と半角文字が混ざってて普通は動きません
行末に ; を付けましょう
それと変数aの値はaですか?
0160デフォルトの名無しさん (ワントンキン MMdf-FlsS)
垢版 |
2023/04/07(金) 18:41:20.55ID:htDU62+OM
>>159
全角;を入力するぞ
0161デフォルトの名無しさん (ワッチョイ 5f01-9xvd)
垢版 |
2023/04/07(金) 18:48:43.17ID:C4KkKia50
>>155
メニューやボタン類がICommand対応になる的な
0164デフォルトの名無しさん (ワッチョイ df07-DB2t)
垢版 |
2023/04/07(金) 19:32:22.30ID:ZyGCTKiu0
ありがとうございます
原因調べてみます
たぶん;の付け忘れか
型名 a
というふうにaを変数化してなかったからだと思います。
0165デフォルトの名無しさん (ワンミングク MM03-FlsS)
垢版 |
2023/04/07(金) 19:35:04.00ID:g9oDCLqTM
あくまでエラーメッセージを書かない馬鹿
0167デフォルトの名無しさん (ワッチョイ 5f07-VQD5)
垢版 |
2023/04/07(金) 19:37:35.11ID:1Moiy0gQ0
>>165
いいんだよ
解決しなくても話し相手になればそれで満足して帰ってくれるんだから
車のエンジンがかからないからどうしようと女に聞かれたらバッテリーがどうこう言っちゃだめ
同情して雑談するのが正解
0168デフォルトの名無しさん (ワンミングク MM03-FlsS)
垢版 |
2023/04/07(金) 19:41:22.07ID:g9oDCLqTM
>>167
林檎を一緒に買いに行くのか!
0170デフォルトの名無しさん (オイコラミネオ MM53-icd+)
垢版 |
2023/04/07(金) 19:47:35.73ID:377j0hRUM
以前17歳の少年にmacはwindowsも動くから開発するならmac一択でwindows機は買わなくていいって言われたよ
そういう理由でユーザーを増やしてる面もある
情報系の大学ではmac持ってる生徒が多い
0176デフォルトの名無しさん (ワッチョイ eebb-9Wvd)
垢版 |
2023/04/08(土) 18:34:36.54ID:fmzyFWYH0
文法が似ているだけで、C++とC#とでは必要な知識の幅が全然違うような気がしてしまう
0179デフォルトの名無しさん (ササクッテロロ Spd1-pbGt)
垢版 |
2023/04/09(日) 14:11:13.69ID:E8Nnpiwgp
C#がイニシアチブ取れる最大の理由はライブラリやクラスメソッドの豊富な点
CやC++は環境依存が高過ぎて無理だった
0180デフォルトの名無しさん (ワッチョイ 0279-90pI)
垢版 |
2023/04/09(日) 15:24:20.69ID:I9Qf3W7D0
C#は実行環境が基本Windowsで処理系も1個しかなく
外部が作った最大公約数的な規格やらに振り回される事もないからね
言語の在り方としてはDelphiからC#まで設計の中心に居たアンダースヘルスバーグの影響が一番でかいだろうけども
0181デフォルトの名無しさん (オイコラミネオ MM29-Ay2p)
垢版 |
2023/04/09(日) 15:42:52.26ID:0jWwjzccM
へじたんというかボーランドから引っ張って来たグループ全体の影響だね

へじたんは10年ぐらい前にtsに行っちゃって多分だけどずっといない
tsの改善提案もたまにする
twitterでts10周年について言及してたけどC#は言及されない
0183デフォルトの名無しさん (オイコラミネオ MM29-Ay2p)
垢版 |
2023/04/09(日) 16:22:39.13ID:0jWwjzccM
c++はパフォーマンス目的じゃないと使うべきじゃないかな(個人の感想です)
でも本当にパフォーマンス目的なら積極的に使うべきで地球の温暖化予防になる

.net frameworkの古い部分はc++的に書かれてるところが点在してる
変数名とか…

ヘルパークラスの中身に多い気がする
そもそもがC#はデビューしてなかったんだからMSの中にいたのは大部分がCかC++プログラマだったから仕方がない
0184デフォルトの名無しさん (ワンミングク MM52-k0ie)
垢版 |
2023/04/09(日) 17:02:57.88ID:IIry9qCTM
>>183
>そもそもがC#はデビューしてなかったんだから

なぜこういう嘘を書くのか
0186デフォルトの名無しさん (スプッッ Sd22-RMXA)
垢版 |
2023/04/09(日) 18:39:12.85ID:99/FlESqd
>>185
MS内部の開発は何を使ってると思っているんだ?
それとも発売されないと内部で使ってはいかんのか?
0187デフォルトの名無しさん (オイコラミネオ MM29-Ay2p)
垢版 |
2023/04/09(日) 18:56:34.94ID:0jWwjzccM
>>186
話がかみ合ってないと言うかなんでIDコロコロしてんの?
それとどこが嘘なのかはっきり書けよ

,net frameworkを開発したときにC#で書いたプログラマはもともとなにプログラマでしたか?
ネイティブC#プログラマじゃないでしょ?

おそらくCかC++(それかボーランドから流れて来たobject Pascalプログラマ)じゃないの?
だから.net frameworkのソースにC++のような名残が多いんだろ?

C#ブートストラップも最初からC#で書いてたと思ってそうで怖い
0188デフォルトの名無しさん (オイコラミネオ MM29-Ay2p)
垢版 |
2023/04/09(日) 19:02:10.71ID:0jWwjzccM
MS内部の開発者の多くはCかC++プログラマ
それまで存在しなかったC#で書かれた.net frameworkのソースを書いたのはC#を覚えたその人たち

どうしてこんな簡単なこともわからないんだよ
0189デフォルトの名無しさん (スプッッ Sd82-RMXA)
垢版 |
2023/04/09(日) 20:48:24.64ID:cX6/BjZ9d
>>187
馬鹿って例えばDelphiのライブラリは何で作ってあると思っているんだ?
0191デフォルトの名無しさん (オイコラミネオ MM29-Rzwh)
垢版 |
2023/04/09(日) 22:59:42.51ID:0jWwjzccM
>>189
いい加減に理解しようよ

新しい言語が出来てその言語でライブラリを書く人は他の言語の経験がある人だろ
プログラムもOOPも始めての人間には不可能てわかるだろ
もちろんその言語は初心者で他のプロジェクトなんて経験してない

なんでこの人は小学生並みの思考力もないんだろうか?
0192デフォルトの名無しさん (ワッチョイ 92bd-Rzwh)
垢版 |
2023/04/09(日) 23:13:41.21ID:jMM6L0eg0
今、画面をC#で作って、性能が必要な部分をCで書いてる。実質C++みたいな書き方してるけど。
固定長配列でよいところは固定長にして余計はメモリ確保・解放を排除、
スタックを使いすぎないようにTLSにしたり、
スレッドプールで実行スレッドがコロコロ変わるけど同一スレッドの間だけTLSを使ったり。
性能は良く、ワットパフォーマンスも良いと自画自賛しているけど、
書くのに時間がかかるし、メモリ管理で二重Freeや誤って0バイトメモリで変な落ち方して
調査に時間がかかった。
0195デフォルトの名無しさん (ワッチョイ c5ae-izbf)
垢版 |
2023/04/10(月) 13:30:15.85ID:ezn0wDlC0
>>153
>MVVM ツールキットの概要
>このパッケージは .NET Standard を対象としているため、任意のアプリ プラットフォーム (UWP、WinForms、WPF、Xamarin、Uno など) で使用できます。

いつの間に対応してたんだ・・・
これでInvokeしなくて済むのか
0196デフォルトの名無しさん (ワッチョイ 4666-cPl8)
垢版 |
2023/04/10(月) 13:39:28.19ID:gE7mrU5A0
下記のコードでcomboBox1.Textに"a2"を設定しているのですが
comboBox1は"a"のままです。設定を反映する方法はあるでしょうか。

public Form1()
{
InitializeComponent();

comboBox1.Items.Add("a");
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
comboBox1.Text = "a2";
}
0198デフォルトの名無しさん (ワッチョイ 6e7b-k+0N)
垢版 |
2023/04/10(月) 18:04:17.45ID:qyQrCJTA0
>>196
まずcomboBox.TextとcomboBox.Itemは別のプロパティでTextを変えても表示されない。表示されるのはcomboBox.Item
Item"a"を選択したときに表示を"a2"に変えたいということなら
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
comboBox1.SelectedIndexChanged -= comboBox1_SelectedIndexChanged;//Indexを変えるのでイベントを外す
if (comboBox1.SelectedIndex == comboBox1.Items.Count - 1)//登録されている最後のIndexを参照する
{
comboBox1.Items.RemoveAt(comboBox1.Items.Count - 1);//Itemコレクションの内容を変えるために元のアイテムを削除する
comboBox1.Items.Add("a2");//"a2"を新しく登録する
comboBox1.SelectedIndex = comboBox1.Items.Count - 1;//コレクションの内容を変えるとIndexが変わるのでIndexを指定する
}
comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;
}
たぶんこのくらい必要
0201デフォルトの名無しさん (ワッチョイ 6e10-+HcC)
垢版 |
2023/04/10(月) 19:54:33.42ID:025b1B4Q0
>>196
BeginInvoke(new Action(() => comboBox1.Text = "a2"));
0202デフォルトの名無しさん (ワッチョイ 8205-QZiB)
垢版 |
2023/04/11(火) 07:47:00.52ID:p3uKa8IZ0
comboBoxの者ですが例示頂いたサンプルコードで期待の動作をしました
ありがとうございます
.Textのセッターで書き換えられたら直感的だなと思いつつ別の仕様で都合悪いんでしょうね
0204デフォルトの名無しさん (ササクッテロロ Spd1-pbGt)
垢版 |
2023/04/11(火) 10:44:39.71ID:u/0zmHtvp
>>204
Mac「も」買えば無問題だぞ
0207デフォルトの名無しさん (ワッチョイ 6e10-bvj9)
垢版 |
2023/04/11(火) 11:18:50.69ID:LwvkJIu70
officeは大学によって配布とそうじゃないとこがあるな
合格通知に付いていたパソコン購入の栞にはどこも同じようなスペックを書いてあった
毎年トラブルになってるらしくmacは非推奨、忘れてたけどSSDを強く推奨されてた。
0208デフォルトの名無しさん (オッペケ Srd1-QZiB)
垢版 |
2023/04/11(火) 12:05:57.60ID:Owu2Qdxkr
>>203
情報系大学ならOS問わず乗り越えて欲しいよね
強いて言えばニンテンドースイッチをハックしてOffice365動作させるくらいの気概が欲しい
0214デフォルトの名無しさん (ワッチョイ eebb-9Wvd)
垢版 |
2023/04/11(火) 17:07:55.85ID:xhbQUVf+0
授業内容によってはMac非推奨もあり得るだろう
ただどこの大学のどの学部なのか書かないことには、何に向かないのか参考にもならないだろう
0215デフォルトの名無しさん (ワッチョイ 6e7b-k+0N)
垢版 |
2023/04/11(火) 18:13:31.92ID:SxJtNgeT0
ワッチョイ 6e10 3回
サクッテロロ Spd1
ワッチョイ 495f
ワッチョイ a9e5
オッペケ Srd1
ワッチョイ 412d
ワッチョイ 4642
ワッチョイ a9e5 2回
ワッチョイ c5ae
ワッチョイ eebb
0216デフォルトの名無しさん (ワッチョイ 9194-izbf)
垢版 |
2023/04/11(火) 19:01:55.92ID:yYayl2te0
https://books.google.co.jp/books?id=4CJdEAAAQBAJ&pg=PA112#v=onepage&q&f=false
の内容に関しての質問なんだけど、
Fooのコンストラクタをstaticコンストラクタに書き換えると、何で3 3になるの?

Console.WriteLine(Foo.X); // 3

class Foo
{
public static Foo Instance = new Foo();
public static int X = 3;

static Foo() => Console.WriteLine(X); // 3
}
0222デフォルトの名無しさん (ワッチョイ d907-NO7/)
垢版 |
2023/04/11(火) 19:22:18.16ID:gigFj8HV0
どこにstaticつける話をしてるのか知らんけどクラスメンバーかインスタンスメンバーかの違い
静的コンストラクタはクラスメンバーがアクセスされる時点で初期化が終わってることが保証される
0224デフォルトの名無しさん (ワッチョイ 9194-izbf)
垢版 |
2023/04/11(火) 19:39:59.03ID:yYayl2te0
>>222-223
staticを付けない、コンストラクタの場合、class Fooの最初の行でインスタンスが生成された時点では、Xが3に初期化されてないので、0になるが、
staticを付けた静的コンストラクタの場合、class Fooの最初の行とは無関係に、既にXが3に初期化された状態で Console.WriteLine(X) が実行済みなのね

public static Foo Instance = new Foo();

をコメントアウトして実行させてみて、やっと気付いた

有難う
0225デフォルトの名無しさん (ワッチョイ 4201-BePx)
垢版 |
2023/04/11(火) 23:11:43.43ID:/nZPjbDG0
1: Console.WriteLine(Foo.X); // 3
2: class Foo {
3: public static Foo Instance = new Foo();
4: public static int X = 3;
5: static Foo() => Console.WriteLine(X); // 3
6: }

静的コンストラクタのあるクラスの場合は
静的コンストラクタが実行される直前に静的イニシャライザが定義順で実行される

1行目のFoo.Xで静的コンストラクタがトリガーされるけど
その前に静的イニシャライザが3行目、4行目の定義順で実行される
3~4行目の実行が完了してから5行目の静的コンストラクタが実行されるのでXは3

3行目のnew Foo()で実行されるのはインスタンスコンストラクタで
staticがついた5行目の静的コンストラクタとは別のものになる
0235デフォルトの名無しさん (オッペケ Srd1-HvLO)
垢版 |
2023/04/12(水) 13:45:09.09ID:4Can4aDGr
C#の挙動がなぜそうなってるかの理由を知ることと、それを実際に開発に使用するかどうかは話が別だろう

当の本もこの挙動を利用して実装しろと勧めてるわけでもなし、バグしか生まない~などと腐すのも筋違い
0236デフォルトの名無しさん (ワッチョイ 4201-BePx)
垢版 |
2023/04/12(水) 14:11:43.79ID:uWUQySNG0
本に書いてあるコードでは>>225の5行目にstaticはついてない
3行目と4行目を入れ替えると出力結果が変わるようなことになるという注意を促して
イニシャライザの実行順序を理解させようとしている

static fieldの定義順に依存したコードはアンチパターンと言ってもいい気はするが
現実には↓こういうコード書く人がいるので動きを理解してることは重要
https://stackoverflow.com/questions/54692923/
0237デフォルトの名無しさん (オイコラミネオ MM29-Ay2p)
垢版 |
2023/04/12(水) 17:54:22.82ID:lYmUspEYM
本にはこのコードのstaticはついてないのでいくら読んでもそういう話にはならない
コード提示した人が自分でstaticつけて疑問に思ったことを書いてるだけ

チャンと英語読めば批判してる人の脊髄反射でしかないとわかる
0241デフォルトの名無しさん (ワッチョイ c5ae-izbf)
垢版 |
2023/04/13(木) 17:15:29.58ID:Zu8K3N7a0
過去にはAny CPUを選ぶと32bitライブラリか64bitライブラリかわからなくてエラーになる事があるから、
x86かx64に固定するのを推奨とかどこかで見た気がするけど、
今はそんな事無くなったのかな?
0246デフォルトの名無しさん (アウアウウー Sacb-uZLY)
垢版 |
2023/04/18(火) 10:22:53.46ID:HoHH5EgOa
多分チェックした後に別の値を代入するか値が変化するものを使ってるんだろうな
たとえばプロパティは一回目のアクセスと二回目のアクセスで同じ値が得られるとは限らない
変数に入れろ
そしたら多分警告消えるから
0254デフォルトの名無しさん (ワッチョイ bf42-sFbk)
垢版 |
2023/04/19(水) 10:04:51.79ID:/RLG/xCj0
>>252
コンストラクタなどで初期化していて本来はワーニングが出るはずがないのに
途中でhoge?hage()なんてコードがあるからヌルが入る可能性があると判断されるようだ
だから?を外すと解決するんだが、それに築くのが大変って話ね
0256デフォルトの名無しさん (アウアウウー Sacb-uZLY)
垢版 |
2023/04/19(水) 10:25:41.00ID:ozyRSzfKa
たとえばUnityなんかだと暗黙の代入演算子をいじっててnullでないものがnullエラーを出すよ
コンストラクタで生成してすぐnullになるオブジェクトも作れる
そういうのを実行前に警告として教えてくれてるんだから親切以外のなにものでもないだろ

警告があれば何か問題があることにすぐ気づけるし気づいたらマウスをちょっと動かせば原因がわかる
コーディングが簡単になりこそすれ難しくなることなんかないだろ
0257デフォルトの名無しさん (ササクッテロロ Spfb-tEYI)
垢版 |
2023/04/19(水) 10:29:18.14ID:wTDlMyrbp
nullableなboolean変数を条件判断させるとき
nullだったらどっちに判定されるんだ?
0262デフォルトの名無しさん (ワッチョイ ff79-e5FP)
垢版 |
2023/04/19(水) 18:32:54.51ID:oWlQU8HM0
プログラムの99.998%は概ねnullになんかなんないところばっかりなのに
なんでこんなクソ構文作ったのかわからん
現場で書くと嫌われるコード
こんなもんチェックするより他にやることはいくらでもある
0263デフォルトの名無しさん (ササクッテロロ Spfb-tEYI)
垢版 |
2023/04/19(水) 19:21:06.22ID:Yh/qVtVOp
bool値に三状態あるのかw
0267デフォルトの名無しさん (ワッチョイ bfe9-Naft)
垢版 |
2023/04/19(水) 20:30:00.61ID:C4s4zrWJ0
FormアプリでForm1とForm2を作る
Form1にラベルを作る
Form2にボタン1,ボタン2を作る
ボタン1を押すとラベルに"1"ボタン2を押すとラベルに"2"を、
Form2を閉じることなく設定するプログラムを作りたいのですが
どういう作り方をすれば実現できるでしょうか。
Form2にプロパティを作りForm1で文字を受け取る方法だとForm2を閉じないと値が設定できません。
よろしくお願いします。
0269デフォルトの名無しさん (ワッチョイ bfe9-Naft)
垢版 |
2023/04/19(水) 22:15:32.11ID:C4s4zrWJ0
>>268
記事中のOwnerプロパティを使うことでやりたいことができました。
ありがとうございます。
0271デフォルトの名無しさん (ワッチョイ 4954-YWDm)
垢版 |
2023/04/22(土) 21:40:28.10ID:nV5+mUIN0
自作メソッドが投げる可能性がある例外の表記方法についての質問です。
ドキュメンテーションコメントの<exception>タグに、throw する可能性がある例外を表記出来ますが、
例えば下記のメソッドの場合・・・
void MyMethod(string filename)
{
//ZipFile.OpenRead() メソッドと、StreamReader.ReadLine() メソッドを使用する。
}

上記の場合、
ZipFile.OpenRead() は下記の例外を throw する可能性があります。
ArgumentException
ArgumentNullException
PathTooLongException
DirectoryNotFoundException
IOException
UnauthorizedAccessException
FileNotFoundException
NotSupportedException
InvalidDataException

StreamReader.ReadLine() は下記の例外を throw する可能性があります。
OutOfMemoryException
IOException

こうなると、MyMethod() は、上記の計11種類の例外を throw する可能性があるという事になるのですが、
理想論的には、全てをドキュメンテーションコメントの <exception> に表記する必要がありますか?
そうでない場合、表記するべき例外と、そうでない例外はどういう基準で判断すればよいでしょうか?
0275デフォルトの名無しさん (オイコラミネオ MMb5-RykB)
垢版 |
2023/04/23(日) 10:04:39.68ID:DUqm0gOHM
書いたことがない

自分で使うなら覚書として必要な範囲で
他人に提供するライブラリでも普通は書かない
使われないし必要とされてないから

常識的にそれが何をしているか想定できる場合は書かない
今だったらファイルアクセスしてますよとか引数を取りますよで利用側もある程度想像できる

標準ライブラリの例外でないものを投げる可能性があり
それに回復手段がある場合に書くぐらいなんじゃないかなと
0280デフォルトの名無しさん (ワッチョイ a95f-SH/E)
垢版 |
2023/04/25(火) 08:17:55.28ID:wOLFytDy0
>>279
成果物のかさ増しには最適なんだよw
0283デフォルトの名無しさん (ワッチョイ aade-RykB)
垢版 |
2023/04/25(火) 10:50:36.92ID:KrvjcZC00
質問なんですが、コントロールのボタン1~9のイベントハンドラを全部実行したいとき
Button1_Click(null, null);
Button2_Click(null, null);
Button3_Click(null, null);
Button4_Click(null, null);
Button5_Click(null, null);
Button6_Click(null, null);
Button7_Click(null, null);
Button8_Click(null, null);
Button9_Click(null, null);

これをもっとスマートに書く方法ありますか?
それとも20個程度ならダラダラ書いたほうがいいですか?
0284デフォルトの名無しさん (ワッチョイ 1507-ZiWf)
垢版 |
2023/04/25(火) 11:03:26.95ID:h+X7r+oZ0
ViewModelも使わないような泥縄式プログラミングならダラダラ書けばいんじゃね
インスタンスを何らかの方法(前もって配列に入れるとかタグをつけるとか)でフィルタリングすればループが使えるし何ならイベントハンドラ自体一つにまとまるくらい同じことしかしてないんじゃないかとも推測できるが
0285デフォルトの名無しさん (ワッチョイ 1507-ZiWf)
垢版 |
2023/04/25(火) 11:05:37.36ID:h+X7r+oZ0
あとイベントハンドラを直接呼び出すのは良くないぞ
イベントハンドラの中から実際の処理を行う関数を呼び出すように作ってイベントハンドラを他の関数から呼びだしたい時には代わりにその処理の方を呼び出すんだ
0287デフォルトの名無しさん (ワッチョイ aade-RykB)
垢版 |
2023/04/25(火) 12:14:00.34ID:KrvjcZC00
>>284,285,286
サンクスです、まずViewModelがわかりません。ググルとandroidやzamarinの事がヒットします。
windowsのformでプログラム作ってます。もうちょと調べてみます。
イベントハンドラの中のメソッドを呼びだすのですね、Button.PerformClickと迷ったのですが
2つの違いがいまいちわかってなくて、もらったアドバイスでもうちょと考えてみます
0289デフォルトの名無しさん (ワッチョイ aade-RykB)
垢版 |
2023/04/25(火) 17:08:17.65ID:KrvjcZC00
>>288
レスサンクスです
List<Button> buttons = new List<Button>();
for (int i = 1; i<10; i++)
{
Button button = new Button();


foreach (Button button in buttons)
{
button.PerformClick();
}
こんな感じでしょうか(途中で挫折した)
0291デフォルトの名無しさん (オイコラミネオ MMb5-/HYv)
垢版 |
2023/04/25(火) 17:41:31.18ID:jwlAeKCmM
まずボタンから処理を分けようか?
リファクタリングでメソッドに書き直そう

private void Button_Click(object sender, Args e)
{
//ここは実際に何かやってるが仮にコメントにしてある
//
//ここまで
}

仮にこんなコードだとして

//から始まる3行を選択して右クリックすると出てくるメニュー上の方に "クイックアクションとリファクタリング" というのがあるから
それをクリックすると "メソッドを抽出する" と言うのが出てくるので選ぶ
そのあとメソッド名をつけるだけでイベントハンドラじゃなくて単純なメソッドになる

ボタンをクリックしたと言う名前じゃなくて処理にあった名前にできるしそうするべき
いちいちボタンNが何をしていたか調べたり覚えなくて済む

こういうふうにしてあちこちの処理を簡単にメソッドにできるので
処理の区切りでメソッドにしよう
処理に名前を付けて流用できるようにしよう
0292デフォルトの名無しさん (ワッチョイ aade-RykB)
垢版 |
2023/04/25(火) 20:49:06.41ID:KrvjcZC00
>>290
レスさんくすです
こんなシンプルにかけるんですね、ちょと理解がむずいところがあるけど
これをもとにちょっといじくってみます

>>291
丁寧な解説ありがとう
なるほどイベントハンドラからメソッド切り出すのはこうすればいいのですね
他からメソッド呼び出すとき意味も分かりやすく、見通しもよくなりますね
リファクタリングはやったことなかた
0293デフォルトの名無しさん (オイコラミネオ MMb5-/HYv)
垢版 |
2023/04/25(火) 23:36:51.46ID:jwlAeKCmM
>>292
これだけできるとコードの書きやすさが格段に上がるよ

メソッド内全部じゃなくてもいい
適当に切り出しても引数とかもちゃんとくくりだしてくれる
出来ない場合は理由があるのでそれも勉強になる

失敗してもアンドゥしたらいいだけだし
0297デフォルトの名無しさん (ワッチョイ 6a7f-p1wa)
垢版 |
2023/04/28(金) 01:40:04.13ID:EFykGfO70
ほんとVisual studioは神
0299デフォルトの名無しさん (ワッチョイ 4954-YWDm)
垢版 |
2023/04/28(金) 04:28:06.22ID:SQeM8rhL0
非同期メソッドを実行する時「戻り値は特に必要ないが、例外は伝えてほしい」という場合、
戻り値は適当に int とかにしても問題ないでしょうか?
理想的な方法があれば教えてください。

例:
public Task<int> SomeMethod()
{
  return await Task.Run(()=>
  {
    try
    {
      //非同期で実行したいメソッド。
      return 1;
    }
    catch
    {
      throw;
    }
  });
}
0303デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/02(火) 15:27:13.55ID:+P/djKKr0
>>300
以外と例外処理って勘違いしてる奴が多いんよ

例外が発生する可能性がある場所にtry catch書くべきって思ってる奴が7割ぐらい居る

正解は例外が発生した場合にリカバリー処理を書く場合に使用する
0304デフォルトの名無しさん (アウアウウー Sa1b-gncP)
垢版 |
2023/05/02(火) 15:48:44.54ID:k2jSiG28a
リカバリー処理とは?
0305デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/02(火) 15:54:32.37ID:+P/djKKr0
そのままの意味どうすよ
回復や復帰を意味する言葉通り

例えば通信中に環境が悪く回線切断
例外からそれは分かるので回線が繋がりやすい場所は移動する様にメッセージを出した後に再接続して通信を続行させる
0306デフォルトの名無しさん (ワッチョイ 7f79-tpgI)
垢版 |
2023/05/02(火) 16:24:14.51ID:2rV8iq3c0
UIソースでtrycatch書くための仕組みだろ

返せる例外は複数も行けるけど1つしか想定してないからどんぶりの類

本処理中と終了処理があるような処理は想定外
終了処理は行われないで帰ってくる
厨房の工作キット
0310デフォルトの名無しさん (ワッチョイ 9f4b-gncP)
垢版 |
2023/05/02(火) 18:28:49.42ID:2Pbut5Rc0
独自の例外に変換することもあるのでは
0311デフォルトの名無しさん (ワッチョイ 3754-wHlW)
垢版 |
2023/05/02(火) 18:29:31.06ID:yUli7OqN0
try catch はリカバリー処理とかユーザー通知も含めて、"例外が起きたら何かしたい" 時に使う物くらいにしか考えてなかったなぁ。

void Method() {
try {
 処理
} catch (Exception ex) {
 //if (この場で復旧処理したい) { 復旧処理 }
 //if (メソッド呼び出し元に例外が起きたことを伝播したい) { 例えば、throw する }
 //if (ログを出力したい) { ログ出力する }
 //if (別のプロセスを起動したい) { 別のプロセスを起動する }
 //if (その他諸々何かしたい) { その他諸々何かの処理 }
}
0312デフォルトの名無しさん (ワッチョイ 9f7f-ExZu)
垢版 |
2023/05/02(火) 18:29:58.08ID:Iiod3Ljm0
相手サーバーに拒否されたとかそのままコケて欲しい時はcatchしなくて良いしな
0313デフォルトの名無しさん (ワッチョイ 9fde-fitb)
垢版 |
2023/05/02(火) 21:03:09.39ID:N5mno8Ao0
質問いいですか?
form1からform2を呼び出して、form2からform1のbutton1をクリックしたい
public partial class Form2 : Form
 {
  private Form1 _form1;

  public Form2(Form1 form1)
   {
   InitializeComponent();
   _form1 = form1;
   }
 }

ここでform2から
_form1.button1.PerformClick(); //うまくいきます

Button selectedButton = (Button)_form1.Controls["button1"];
selectedButton.PerformClick(); //うまくいきませんnull
0315デフォルトの名無しさん (ワッチョイ ff10-AZmp)
垢版 |
2023/05/02(火) 21:11:45.34ID:V30afgjZ0
動くけどなー
0317デフォルトの名無しさん (ワッチョイ 3754-wHlW)
垢版 |
2023/05/02(火) 21:20:16.79ID:yUli7OqN0
別フォームからクリック出来たよ。
ソース全体が不明だから何とも言えないけど、
1. Form2 クラスの form1 ・ _form1 変数は、ちゃんと Form1 のインスタンスを参照出来てる?
2. 自動クリックされる Form1 のボタンは、ちゃんと Name = button1 になってる?
0320デフォルトの名無しさん (ワッチョイ 9fde-fitb)
垢版 |
2023/05/02(火) 22:21:39.83ID:N5mno8Ao0
>>315
サンクスです、文法問題ないのだったら、ここに書き漏らしてる何かが悪いのだろうか
>>317
さんくすです、うまくうごくのですね _form1 は
_form1.button1.Text = "hogehoge";
がうまくいくのでインスタンスを参照できてるかな、NameもVSのプロパティそのままで
0322デフォルトの名無しさん (オッペケ Sr8b-/vMP)
垢版 |
2023/05/02(火) 22:47:23.62ID:NVQj7oowr
「うまくいかない」の内容をもう少し詳しく書くようにしよう
何も起こらないのかそれともエラーが出るのか
エラーが出るなら具体的にどんなエラーメッセージなのか
0323デフォルトの名無しさん (ワッチョイ ff10-AZmp)
垢版 |
2023/05/02(火) 22:51:11.59ID:V30afgjZ0
>>320
もしかしてForm1のPanelとかの中にbutton1が入ってるんじゃ
そしたら_form1.panel1.Controls["button1"]よ
0324デフォルトの名無しさん (ワッチョイ 9fde-fitb)
垢版 |
2023/05/02(火) 23:02:01.80ID:N5mno8Ao0
>>322
失礼しました、例外がスローされます
selectedButton.PerformClick();のところで止まってselectedButtonがnullみたいです
System.NullReferenceException: 'オブジェクト参照がオブジェクト インスタンスに設定されていません。'
0332デフォルトの名無しさん (ワッチョイ 9f4b-gncP)
垢版 |
2023/05/03(水) 02:28:32.14ID:vL8FscsM0
しっけーなおまえ等
0334デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/03(水) 05:27:13.82ID:iydNsBEo0
別に良いんだよ
馬鹿なプログラマはこうするべきだってって感じで言うけどただの無能
動けば良いんだよ
実際売れてるとか人気のアプリのコードなんて糞みたいなもん

音楽で考えると分かりやすい
人気の音楽や長年聴かれる音楽って結構シンプルやろ

ギターとかの超絶テクニックやら奏法が特殊なら良い音楽かって言えば違うやろ
実際はミリオンセラーの音楽なんて小学生が少し練習すれば弾ける様になるのが結構ある
0336デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/03(水) 05:54:45.19ID:iydNsBEo0
同じやで

都合も良いも無いやろ
何の為にソフト作るんや
使う側にして見りゃ中のコードが糞かどうか関係無いやん
ちゃんと動いて結果が出れば良いだけなんだから
0338デフォルトの名無しさん (ワッチョイ 1707-rvTa)
垢版 |
2023/05/03(水) 07:46:05.28ID:7KJ/CzIt0
>>334
音楽で考えるとわかりやすいんじゃなく音楽と違うものを音楽にしてしまったことで話が変わってるだけだぞ
プログラミングはロジックの塊
音楽より論文に近い
思いついたことをまとまりなく書き連ねたらダメ出しされるのは当然だろ
小論文ならそれでもまだ読めるかもしれんがな
0339デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/03(水) 07:52:55.78ID:iydNsBEo0
>>338
動けば問題無いよ

論文と違って無駄があろうが何だろうが結果が正しければ良い
例え途中が間違っていても奇跡的にでも結果が正しければ問題無い

お前の例えの方が全然違うやんw
無能やな
0342デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/03(水) 08:19:44.90ID:iydNsBEo0
ついでに言うならペナルティが罰金の場合
罰金払ってでも儲かるなら違法な行為はする


ちなみ大企業は堂々とそういう事してる

例えば特定保健指導の実施率のペナルティ
大企業だと自身で保険組合持ってる場合が多い
従業員も多く色々な対策に金使うよりペナルティ払った方が安い場合もある

そういう場合は普通に違反してペナルティ払ってる
一例を挙げるならトヨタがそれに当たる
0344デフォルトの名無しさん (スッップ Sdbf-oJ27)
垢版 |
2023/05/03(水) 08:27:58.97ID:s1pMNzuQd
そう言うなよ世の中の7割はルールに従って真面目にやれば出世や稼げると勘違いしてる無能なんだからさ

有能で稼げる奴は法律やルールでさえ損得を天秤に掛けて儲かる場合は普通に違法行為を行える

勿論逮捕とかされるような事案には手を出さないが1億10億の罰金払って100億稼ぐのが有能
0345デフォルトの名無しさん (ワッチョイ 9fde-fitb)
垢版 |
2023/05/03(水) 08:34:50.09ID:aEnVTx4R0
>>329
PerformClick()使う理由は
ADIR01P USB赤外線リモコンアドバンス
https://github.com/bit-trade-one/ADIR01P-USB_IR_Remote_Controller_Advance
このアプリをいじって、追加機能やform2でボタンだけのコンパクトなUIが欲しかったからです

>>330
確かに気持ち悪い感じはしますね、form2で10個ほどのボタンにtagつけて、
対応するform1のボタンと同じ働きさせるにはこれぐらいしか思いつかない

>>334
動けばいいと思って書いてますが、こうするべきだって話は聞きたい
0349デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/03(水) 09:17:54.09ID:iydNsBEo0
なんで動かなきゃってのがどのアプリやシステムでも同じレベルだと勘違いしてるんやろ

それぞれにレベルっていうか難易度があってその上で動くレベルに決まってるのに
ほんと思考が無能
0355デフォルトの名無しさん (ブーイモ MMcf-SYdp)
垢版 |
2023/05/03(水) 10:14:01.23ID:HGdhPxDoM
GUIDの人やな
0358デフォルトの名無しさん (ワッチョイ 1701-E+2s)
垢版 |
2023/05/03(水) 11:02:59.86ID:Fpkn6yKr0
ルールってーと、フリーウェア作るときみんなライセンスとかどうしてるの?
いろいろ種類あって何採用していいのかよくわからない
ソース付きで、改変/配布/商用利用好きにしてって場合とかさ
MIT?
0363デフォルトの名無しさん (ワッチョイ 9f7f-ExZu)
垢版 |
2023/05/03(水) 12:24:06.51ID:XvXH8q6A0
easyかつsimpleがいいならpythonやっとけ
0364デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/03(水) 12:27:13.86ID:iydNsBEo0
動けば良いじゃん精神の方が金は稼げるよ

だってIT技術者でも無い会社経営層は技術持ってても評価しないもん
技術持ってる持ってない関係なしに稼げるシステム作った奴を評価する

つうかこの板使っておいて元の2ちゃんねる作った億稼いだひろゆき自体が動けば良いじゃん精神だぞ
自身の配信でもそう言ってるじゃん
こういう技術どうこう言う技術者は無能ってさw
0366デフォルトの名無しさん (スッップ Sdbf-fitb)
垢版 |
2023/05/03(水) 12:48:43.53ID:foxDzL7Ed
test
0367デフォルトの名無しさん (ワッチョイ 57ad-0AmK)
垢版 |
2023/05/03(水) 13:19:12.96ID:PpDaqr1l0
そんであるとき負荷が掛かったりちょっと改修したときに爆発する
0370デフォルトの名無しさん (ブーイモ MMbf-SYdp)
垢版 |
2023/05/03(水) 13:27:55.56ID:t3wVQNi7M
使いもしない単体モジュールがそもそもなぜあるの?
テストするまでもなく削除すればいいのに
0374デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/03(水) 13:35:53.83ID:iydNsBEo0
>>370
普通にあるやろ

使うと思ってとか今後の拡張性の為にとかオーバーロード関数用意したけど使われてないとか

特に多いのが今後の拡張性云々とかカスタマイズ用とかってやつ
実際に拡張とかカスタマイズする時に使い物にならなくて設計からやり直す
つまり全くの無駄
0375デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/03(水) 13:39:34.40ID:iydNsBEo0
>>373
結合テストは俺が勝手に言っただけや
でもリリース前ってそれだけじゃ無いじゃん
しかもそれって会社とかでも違うやん
だからどれとは言えないもんやで

俺の会社だと結合テスト以外だと外部にセキュリティテスト依頼したり社内の品管のテストとシステム監査が入る
0377デフォルトの名無しさん (ワッチョイ ffbb-zzYQ)
垢版 |
2023/05/03(水) 13:45:11.16ID:RLCA5WWQ0
> セキュリティテスト依頼したり社内の品管のテストとシステム監査が入る

こんなテストや監査が想定されてる中、ユニットテストが無駄だって思ってるってこと?
0378デフォルトの名無しさん (ワッチョイ ffbb-zzYQ)
垢版 |
2023/05/03(水) 13:51:12.96ID:RLCA5WWQ0
ちょっとまって!

> 外部にセキュリティテスト依頼したり社内の品管のテストとシステム監査が入る

こんなプロジェクトで「動けばいい」ってスタンスで仕事してんのか?
マジか
0379デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/03(水) 13:51:42.78ID:iydNsBEo0
>>377
俺が言った訳じゃ無いけどなw

まあ俺は単体テストはアリだと思うぞ
単体テストの結果でもって要は作業完了証明やろ
逆に言えば以降は俺の責任じゃ無いと言えるし仕様変更は別に金取れる
0384デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/03(水) 14:03:35.88ID:iydNsBEo0
>>383
そうは言ってるけどじゃあそれ以上に何が必要か言えてないやん

ちなみに話の流れは
>>330
>>333
みたいなコードの内容から来てるんやで
こういうコードが糞だろうが動けば良いって話だから脱線するなよ
お前等っていつも前提間違ってるからなw
0387デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/03(水) 14:15:23.93ID:iydNsBEo0
>>386
すまん無能の質問の意味が分からん

システム監査って経済産業省とかIPAに定義あるよね
普通はそれに準拠したものが一般的だと思うんだ
つまり共通認識じゃないの?

無能の頭の中って俺俺監査があるん?
0389デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/03(水) 14:26:32.08ID:iydNsBEo0
>>388
アホw

まさか動くかどうかが機能要件や非機能要件 セキュリティ要件満たしてないと思ってる?
それこそ最低限満たした上で動く事だよね

その上で中のコードが>>384で言った様な糞コードかどうか関係無いよねって話だ

ほら言った様に話の流れが分かって無い
理解してない
前提を間違ってる

無能だな
0390デフォルトの名無しさん (ワッチョイ 9f4b-gncP)
垢版 |
2023/05/03(水) 14:26:49.46ID:vL8FscsM0
GWだねぇ
0391デフォルトの名無しさん (ワッチョイ ffbb-zzYQ)
垢版 |
2023/05/03(水) 14:30:01.23ID:RLCA5WWQ0
>>389
> まさか動くかどうかが機能要件や非機能要件 セキュリティ要件満たしてないと思ってる?

システム監査ってそういうことじゃないぞ
お前の中のシステム監査ってどんなもんなん?
0393デフォルトの名無しさん (スッップ Sdbf-oJ27)
垢版 |
2023/05/03(水) 14:42:38.57ID:s1pMNzuQd
>>391
お前が間違ってるんじゃ?
経済産業省のシステム監査基準だとセキュリティガイドライン等に準拠してるか云々って書いてあるしそういう事を監査するもんじゃないの?
0394デフォルトの名無しさん (ワッチョイ ffbb-zzYQ)
垢版 |
2023/05/03(水) 14:48:38.92ID:RLCA5WWQ0
俺の知ってる世界だと、システム監査ってのは雑に言うとシステムを体制として担保する方法ができてるかを確認するもの

で、「機能要件や非機能要件 セキュリティ要件」に関連した箇所でいうと、それらの要件が正しく永続的に保証できる証跡が残せるか?って観点で監査される

つまり、

> だって製品の検査で調べるのはその動くかどうかじゃん

ってことにはならんのよ
だから、コーダーが「動けばいい」ってスタンスで仕事してたら、レビュアーが体制としてブチ切れるんだわ

で、お前の中のシステム監査ってどんなもんなん?
0395デフォルトの名無しさん (ワッチョイ 9f2f-g9Ql)
垢版 |
2023/05/03(水) 15:09:07.11ID:fD0yPqm80
動けばいいってのは
なぜそう書かないほうが良いのか、ちゃんと理解して説明できないやつの言い訳
まあそう書くなって言ってる奴もちゃんと説明できてないんだがな
0397デフォルトの名無しさん (ワッチョイ 1f3d-VWCj)
垢版 |
2023/05/03(水) 15:26:23.95ID:49Yy066J0
ぼんやりとした質問ですが、

Form1にWebView2が合ったとして、Form2でお気に入りを作って、Form2からForm1の
WebView2にナビゲートしたいんです。

やってみたんですが、Form1にあるはずのWebViewがForm2から出てこないんです。

調べてみたらキャスト?とかいうのが必要らしくて、キャストはちんぷんかんぷんです。

コード書いておくので誰かお助けを~

後Form1のWebview2にアクセスしようとしたら保護がかかってしまいました。
ランタイムを噛ませたりとかよく分かりません。

こんな超初心者の俺ですが、助けてください。

private async Task InitializeAsync()
{
await webView21.EnsureCoreWebView2Async(null);
}
private async void Form1_Load(object sender, EventArgs e)
{
await InitializeAsync();

webView21.CoreWebView2.Navigate("https://web.biz-prog.net/";);
}
0398デフォルトの名無しさん (ワッチョイ 1f3d-VWCj)
垢版 |
2023/05/03(水) 15:26:47.58ID:49Yy066J0
private void button1_Click_1(object sender, EventArgs e)
{
Form2 f2 = new Form2(this); // 自フォームへの参照を渡す
f2.Show(); // サブ・フォームを表示
}

ここからForm2

public partial class Form2 : Form
{
Form1 f1;
private object webView21;

public Form2(Form1 f)
{
f1 = f;
InitializeComponent();


試して見たんですが、オートコンプリートに((Form1)).webview2が出てきません
0399デフォルトの名無しさん (ワッチョイ ff10-By2c)
垢版 |
2023/05/03(水) 16:36:13.15ID:YldI9T9X0
Form1に配置してるWebView2がprivateで宣言されてるからじゃないかね
VS使ってるならデザイナーで選択してプロパティウィンドウのModifiersを確認して
PrivateになってるならInternalかPublicにしたらいいよ
0404デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/03(水) 21:35:17.93ID:iydNsBEo0
>>394
もっと分かりやすい例を出そう

例えば同じ処理を100箇所コピペ出実装したとする
普通なら関数化してってやるわな

こんな100箇所コピペした糞コードでもシステム監査や他のテストでは一切問題にならない
動けば良いんだよ
0407デフォルトの名無しさん (ワッチョイ 777c-KiN+)
垢版 |
2023/05/03(水) 21:42:02.40ID:iydNsBEo0
もっというと例えばMV系フレームでこの処理はモデルに書くべきだとかどうとか
こういうのもどうでもいい

モデルで書くべきだろうが書くべきで無かろうが

動けば良いんだよ
0411デフォルトの名無しさん (オッペケ Sr8b-0AmK)
垢版 |
2023/05/03(水) 22:10:57.21ID:7dxnHkZLr
まあ中小規模だと“動けばいい”でやってるのも事実だからなぁ
エクセルにチェックつけてペタペタしてソースは見ないなんてのもザラ
なんならちょっとしたものなら本人が動いてる!で終わりとかね
0417デフォルトの名無しさん (ブーイモ MMbf-SYdp)
垢版 |
2023/05/04(木) 08:16:56.65ID:2P3iGn2SM
寿命の短いゲームの開発とかには動けばいいだろのメンタリティでコード書いてるやつが多い結構いる
実際クソコードだからバグ修正のアプデでまたバグるのも日常茶飯事
0418デフォルトの名無しさん (ワッチョイ bfbc-o+T5)
垢版 |
2023/05/04(木) 10:57:14.77ID:KzOav63c0
オマエらって普段からそんな立派なコード書いてるの?

皮肉でも何でもなく、大手さんの寄越したコードでもネットのサンプルをそのままコピペとか普通にあったんだけど。
アマゾンの AWS 用のサンプルコードとかでも整理なにそれなコードも普通にあるし。
ああいうレベルのものでも水準を満たしていたりするんだろうか。

まあ自分も普段は納品する側の中小だけど。
0421デフォルトの名無しさん (ワッチョイ 9fda-pQRJ)
垢版 |
2023/05/04(木) 13:12:46.06ID:nZfQ3MKS0
>>418
PSNの個人情報流出思い出した
dobon(だったはず)丸パクリの暗号化だった。"saltは8バイト以上"っていう文字列で復号化できた
オレが作った社内システムも同じことしてた。
社内システムだからセキュリティは気にしてないが。
0425デフォルトの名無しさん (ワッチョイ 9354-ouLR)
垢版 |
2023/05/06(土) 20:43:47.65ID:8uPWyiyX0
非同期ファイルコピーのサンプルを探していたら、FileStream を使う方法と File.Copy を使う方法があるようなのですが、どっちがいいのでしょうか?
それぞれのメリット・デメリットが知りたいです。

//方法 1 (FileStream)
private static async Task CopyFileAsync(string sourceFilePath, string destinationFilePath)
{
 using (var sourceStream = new FileStream(sourceFilePath, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize: 4096, true))
 using (var destinationStream = new FileStream(destinationFilePath, FileMode.CreateNew, FileAccess.Write, FileShare.None, bufferSize: 4096, true))
 {
  await sourceStream.CopyToAsync(destinationStream);
 }
}
//方法 2 (File.Copy)
private static async Task<bool> CopyFileAsync(string srcFileName, string destFileName)
{
 await Task.Run(() => File.Copy(srcFileName, destFileName));
 return true;
}
0429デフォルトの名無しさん (ワッチョイ 9354-ouLR)
垢版 |
2023/05/07(日) 00:41:03.38ID:/tWxMywy0
>>425 の方法でファイルコピー後、コピー先ファイルのタイムスタンプを変更しようとしたら、例外が発生します。
頻度は10回に1回あるかないか程度です。
何が原因でしょうか?

static async Task Main(string[] args)
{
await CopyFileAsync("コピー元ファイル名.txt","コピー先ファイル名.txt");
}

static async Task CopyFileAsync(string srcFileName, string destFileName)
{
using (var srcStream = new FileStream(srcFileName, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize: 4096, true))
using (var destStream = new FileStream(destFileName, FileMode.Create, FileAccess.Write, FileShare.None, bufferSize: 4096, true))
{
await srcStream.CopyToAsync(destStream);
//試しにFlush・Close・Dispose 入れてみたけどダメでした。
srcStream.Flush();
destStream.Close();
srcStream.Close();
destStream.Dispose();
srcStream.Dispose();
}
var lastWriteTime = File.GetLastWriteTime(srcFileName);
File.SetLastWriteTime(destFileName, lastWriteTime); //ここで、: '別のプロセスで使用されているため、プロセスはファイル 'コピー先ファイル名.txt' にアクセスできません。'
0430425 (ワッチョイ 9354-ouLR)
垢版 |
2023/05/07(日) 00:57:48.70ID:/tWxMywy0
方法 2 (File.Copy) の方法でも発生しました。
まったく原因の見当がつきません・・・
0431デフォルトの名無しさん (ワッチョイ 5eda-xrk/)
垢版 |
2023/05/07(日) 00:58:07.18ID:AUxqabWy0
ef coreでDBからレコードを大量に取得する場合、
(A)
foreach( var row in await query.ToListAsync() )
で取得する場合と
(B)
foreach( var row in query )
で取得する場合、どちらがアプリサーバで消費するメモリが多いでしょうか?
queryはIQueryable<T>型です。
DBサーバとアプリサーバは分かれています

(A)だとDBサーバから結果が全部返るまで待ってからループ開始、
(B)ならストリーミングで読み出せたところからループ処理
って勝手に想像してたんですが、ef coreで使用するDBMSのミドルウェアに依存でしょうか

具体的にはDBMSはpostgresqlです。
このあたりのドキュメントあったらURL教えてください
0433425 (ワッチョイ 9354-ouLR)
垢版 |
2023/05/07(日) 01:29:00.89ID:/tWxMywy0
とりあえず原因不明なので、最大10回を上限に、例外発生したらリトライするようにしました・・・

int j = 0;
bool b = false;

while (!b || j < 10)
{
 try
 {
  //コピー処理
  b = true;
 }
 catch
 {
  continue;
 }
 j++;
}
0435デフォルトの名無しさん (オッペケ Src7-KeI6)
垢版 |
2023/05/07(日) 08:06:15.51ID:ZcKb5BN5r
>>431
DB絡んでないけど一般論としては
https://atmarkit.itmedia.co.jp/ait/articles/1409/24/news105.html
もっともODBCドライバとかDBプロパイダの作りがザルだとクエリ実行結果を一気に全件取り出して
アプリサーバ上のメモリ上に保持してる可能性もゼロではないけど、postgresならそんなことはないだろう

実体化したくないけど非同期でレコードを取り出したいってことなら
await foreach( var row in query.AsAsyncEnumerable() )
0436デフォルトの名無しさん (ワッチョイ 5eda-xrk/)
垢版 |
2023/05/07(日) 11:06:44.59ID:AUxqabWy0
>>435
ありがとうございます。
ToList()やToListAsync()はすべての結果が利用可能になるまで何も返されない、つまり
大量レコード処理には向かない

(B)の場合でもAsNoTracking()をつけて変更検知をOFFにしないと
Linq to DBがキャッシュしてしまいメモリ使用量が大きくなる

(B)でさらにI/Oをブロックしたくない場合、非同期ストリームを利用する

ということで大量レコードをチビチビ処理する場合は
async foreach( var row in query.AsNoTracking() )
という書き方に落ち着きました

他の参考URL
https://stackoverflow.com/questions/56176176/difference-between-tolistasync-and-asasyncenumerable-tolist
https://stackoverflow.com/questions/3688213/iterating-through-iqueryable-with-foreach-results-in-an-out-of-memory-exception
0439デフォルトの名無しさん (ワッチョイ 1279-y4C+)
垢版 |
2023/05/07(日) 14:06:12.41ID:O0op5Uvp0
Defenderやらが邪魔するのはそうなんだろうけど
C/C++でACLや属性変更でリトライなんてしてた覚えないからC#のDisposeでファイルがちゃんとクローズできてないだけな気もする
0445デフォルトの名無しさん (スッップ Sd32-KeI6)
垢版 |
2023/05/08(月) 13:38:05.76ID:TxJAG0JMd
今回みたいなケースでファイルクローズ直後にファイルいじろうとすると使用中の様な警告出ることあるから
基本的にリトライするようなコード入れてるけどそんなことないのかね
0448デフォルトの名無しさん (ワッチョイ c2bd-O5MS)
垢版 |
2023/05/08(月) 23:17:00.86ID:n3psyKuA0
>>440
IDisposableを継承しているのにクローズしなかったら使い物にならないだろ。

例えばFileStreamクラスのDispose()には、
Stream によって使用されているすべてのリソースを解放します。
とあるので、当然Closeもする。
0457デフォルトの名無しさん (オッペケ Src7-iqBk)
垢版 |
2023/05/09(火) 11:46:04.35ID:vAJE1vUCr
とはいえ
頻度は10回に1回あるかないか程度
Windows Defender 無効にしたら例外が発生しなく
なら妥当かもしれない
0459デフォルトの名無しさん (ワッチョイ 52de-KeI6)
垢版 |
2023/05/09(火) 20:43:33.82ID:ZCATFg/N0
質問なんですが
formのbutton1.textをテキストボックスから取得したいのですが、
テキストが長い場合、ボタンのテキストが改行されてしまいます

表示が後半隠れてしまうのは別に構わないのですが、
改行がおこるとテキストがボタンの上側に移動してしまいます
button1.textを改行しないようにできないでしょうか?
0462デフォルトの名無しさん (ブーイモ MMdb-mskx)
垢版 |
2023/05/10(水) 10:41:28.62ID:B1N+exWkM
どなたか教えてくださいC#です
public class Person
{
public Name Name { get; set; }
}
public class Name
{
public string NameText { get; set; }
}
こういうクラスがあったとして、

var p = new Person
{
Name = {},
};
Console.WriteLine(p.Name);
これはnullが出力されるんですが、構文解析時のName={}の右辺はどういう評価をされてるんでしょうか?
また
var p = new Person
{
Name = {NameText=""},
};
これもコンパイルは通りますが実行時にObject reference not set to an instance of an object.で落ちます
Name = {NameText=""},
の{NameText=""}は構文解析時にどういうモノとして扱われてるんでしょうか?
本来はName= new Name{NamText=...}とするところで、new {クラス名}を書き忘れたらビルドが通っていたのでなんだろうと思った所存です
0464デフォルトの名無しさん (ワッチョイ 52de-KeI6)
垢版 |
2023/05/10(水) 11:21:23.96ID:tkTpg3dz0
>>460
レスありがとう、Paintイベント追加で自力でやるのはけっこう大変そうですね

>>461
ありがとう、...省略はできたけど、文字は上側に寄ったままでした

button1.Padding.Topに4ぐらいいれたら解決しました
0467デフォルトの名無しさん (ワッチョイ b74f-hGOv)
垢版 |
2023/05/10(水) 13:49:34.03ID:iQXLAALm0
>>465
AのコンストラクタでNameがnewされてたら問題ないわけだし使い分けでしかないね
nullableを有効化しとけばこのケースだとAのNameがnull許容でもnull非許容でも警告出してくれるよ
0468デフォルトの名無しさん (ワッチョイ c23d-Lyct)
垢版 |
2023/05/10(水) 14:23:44.58ID:6sAnxqBz0
C#でASP.NETでHTMLコード書くにはどこいじればいいの?
0469429 (ワッチョイ 9354-ouLR)
垢版 |
2023/05/10(水) 17:05:27.60ID:QPN4FwhI0
私にとっての解決後も議論があったようですが、
Windows Defender を無効化 ( Windows Defender の [除外] に、コピー先フォルダを登録する ) してから、1回も発生していません。
for(int i = 0; i < 100; i++){}
での 100回ループテストを何度か行っても発生していないので、自分の中では解決済みになっています。
0476デフォルトの名無しさん (アウアウウー Sac3-16n5)
垢版 |
2023/05/10(水) 20:03:31.18ID:PlKEk/pSa
リソースを占有できるのがそのスレッドだけではない場合
つまり今回と同様の場合だな
原因がセキュリティソフトかバックアップソフトか何かは全く関係ない
時間を置いて何度かリトライしてそれでもだめなら例外を投げる
基本中の基本だぞ?
0484デフォルトの名無しさん (ワッチョイ 4679-U4yn)
垢版 |
2023/05/11(木) 02:59:54.64ID:YOUU3VFS0
っていうかどうしたいんだろ
コピー後のファイルを
誰かがつかんだままにすれば
似たようなエラーはいつでも
起こせるし起きちゃうじゃん

それがこのアプリにとってレアケースでないなら他アプリがつかんだママのときの動作を仕様で定義するべきだと思う
0485デフォルトの名無しさん (ワッチョイ ff2d-vOwS)
垢版 |
2023/05/11(木) 03:21:28.69ID:rPH4vL1P0
>>484
>>429のソースを見るに、ファイルの最終書き込み時刻を保ったままコピーしたいんでしょうよ

コピー先のファイル作成とタイムスタンプ操作を1回の排他モードオープン〜クローズの間にまとめてやれば
他のプロセスに割り込まれようが無いし、その後につかまれてもやること終わってるから問題無い
0493デフォルトの名無しさん (スッップ Sd32-KeI6)
垢版 |
2023/05/11(木) 12:31:50.44ID:NldGOlLod
コードも提供せずにこういうことやりたいと言ってるわけでもないし、
今回問題となっている部分についてだけで話すればいいんじゃないの
質問者が他のやり方ないですかみたいな質問ならまだしも
回答者が勝手に仕様かえて変な回答しないほうがいいと思うなぁ
0495デフォルトの名無しさん (ブーイモ MMdb-vs1K)
垢版 |
2023/05/11(木) 12:56:38.62ID:CPAv1ED5M
コピー元のタイムスタンプを維持したいユースケースなんていくらでもあると思うんだけどな
cp -pのように最初からそういうオプションが用意されてないのが不思議なくらい
0497デフォルトの名無しさん (ブーイモ MMde-8Ur6)
垢版 |
2023/05/11(木) 13:03:05.25ID:azf3P6SKM
あれ、File.Copy()でコピーすればファイルの更新時刻とかはコピー元ファイルのままだと思ってたんだけど、違うの?
わざわざLastWriteTimeを転記する処理なんか不要じゃないかな
0500デフォルトの名無しさん (ワッチョイ 927f-Ujgo)
垢版 |
2023/05/11(木) 13:26:07.70ID:IsUfqIsW0
>>470
ノートン先生が毎回俺がコンパイルしたexe没収しやがるのな
0503デフォルトの名無しさん (ワッチョイ 927f-Ujgo)
垢版 |
2023/05/11(木) 14:06:17.73ID:IsUfqIsW0
ファイルの作成時刻が大事で、ファイル名も変えたくないなら
実データの内に時刻もっておいて逐次参照するしかないか
0508デフォルトの名無しさん (ワッチョイ b7e5-tcUg)
垢版 |
2023/05/11(木) 17:30:13.71ID:Kl8HQqiW0
違うよ、Defenderに割り込まれて失敗してただけなのに、C#が悪いとか実装だよりがうんたらとか明後日の話してるだけ
あとなぜかタイムスタンプ同期を敵視するおかしな輩
0510デフォルトの名無しさん (アウアウエー Saaa-tcUg)
垢版 |
2023/05/11(木) 20:37:45.66ID:WmrOv4hCa
asp.net 7.0/razorでTest.razorファイルを作って中身を
@page "/test/{text}"
<h1>Hello, world!</h1>
とすると、http://localhost/test/aaaaaaaは期待通りTest.razorにアクセスするんだけど
http://localhost/test/ にアクセスしようとするとエラーページ(app.razorの<NotFound>)に飛んでしまいます
エラーページに飛ばずにTest.razorに導くにはどうしたらいいのでし
0519デフォルトの名無しさん (ワッチョイ 137c-Zn+e)
垢版 |
2023/05/13(土) 12:58:27.54ID:WLwqntQA0
別にチェックするのは実行ファイルだけじゃ無い
基本的には全部

拡張子変えて実際は実行ファイルって場合も有る

特殊な方法で画像や音声ファイルに別ファイルを入れる事も出来る
普通に開いても画像や音が流れるけどやけにファイルサイズ大きい
0522427 (ワッチョイ bfbd-Np+b)
垢版 |
2023/05/14(日) 08:52:03.33ID:kc3awa8x0
>>428
非同期I/Oについて以前別件で調べていたページをブラウザで開いたまま放置してて、
そこを読んだら、
・FileStreamは~Async()メソッドを呼ぶだけだと、同期メソッドをTask.Runしているイメージと同じ
・非同期IOにするには、FileStreamのコンストラクターでuseAsyncをtrueにする
とあった。
0523デフォルトの名無しさん (ワッチョイ 8f79-PTT8)
垢版 |
2023/05/14(日) 11:04:56.63ID:8prSF4JO0
そもそもIOって物理的に非同期にできんのかな?
って疑問はある
ファイル名(パス)を変更するとして
それが既存と被らないことをチェックするためには
HDD全部が排他対象になっちゃうと思うんだけど・・・?

世の中には頭のいい人がいるからな
Windowsもうまいことなってるのかもしれん
0528デフォルトの名無しさん (ワッチョイ 8f79-LM5x)
垢版 |
2023/05/14(日) 13:35:41.81ID:8prSF4JO0
まずIOいじるときは
プロセスセーフである必要があって
それをサポートするAPIはないと
次にスレッドセーフである必要も
あってそこはAPIがあるのと
プロセスセーフの仕組みに載せてしまってもよい
みたいな?
0530デフォルトの名無しさん (ワッチョイ cfa7-55dJ)
垢版 |
2023/05/14(日) 16:46:00.64ID:AbKJzFQD0
>>523
出来るも何もむしろ必須レベル
正常なディスクであればファイルIOは即終わるが壊れかけとかだとめちゃくちゃ時間かかる事もある
要するに完了時間は不定だから多数に公開しようとしたらファイルIOはWin32のオーバーラップを利用した非同期化は必須
C#であれば手軽に使えるasync版もあったはずだが
0542デフォルトの名無しさん (ワッチョイ bfbd-Np+b)
垢版 |
2023/05/15(月) 23:44:43.69ID:7dwhbD/A0
>>530
Win32APIで最近非同期のコードを書いているけど、
ReadFile()/WriteFile()が途中までで返ってくることも踏まえてループ処理にするとして、

1) ReadFile()/WriteFile()で同期(OVERLAPPED構造体なし)
→同期
2) ReadFile()/WriteFile()で非同期(OVERLAPPED構造体あり)、WaitFor~、GetOverlappedResult()
→スレッドを明示的に手放す?
3) 1)をCreateThreadpoolWork()
→スレッドプールのスレッド内で同期処理
4) 2)をCreateThreadpoolWork()
→スレッドプールのスレッドで動作するが、途中でスレッドを明示的に手放す?
IOCPならその間に他のスレッドが動きそうだが、スレッドプールAPIでもそうなるか知らない。
5) CreateThreadpoolIo()、ReadFile()/WriteFile()で非同期(OVERLAPPED構造体あり)、
IoCompletionCallbackで続きのReadFile()/WriteFile()を行う
→これが一番効率的だと思う。

最近5)で書いてる。めんどくさい。うまく動かなかった時に調査のために同期処理にしてみることができない。
C#のasync/awaitは神。
.NET Framework/.NETのライブラリがどこまでやっているのかまだソースをほとんど調べていない。
0543デフォルトの名無しさん (ブーイモ MM7f-yLof)
垢版 |
2023/05/16(火) 15:21:40.99ID:x5Idn1prM
>>542
ReadFileEx()/WriteFileEx()に対して何かアドバンテージあるの?
0544542 (ワッチョイ bfbd-Np+b)
垢版 |
2023/05/16(火) 23:17:52.90ID:ArIN9ivM0
>>543
ReadFileEx()/WriteFileEx()のlpCompletionRoutineを使ったことはないけど、
LPOVERLAPPED_COMPLETION_ROUTINEのページに、
システムが完了ルーチンを呼び出すたびに、アプリケーションのスタックの一部が使用されます。 完了ルーチンが追加の非同期 I/O とアラート可能な待機を行うと、スタックが大きくなる可能性があります。
とあるから、完了ルーチンでさらに非同期I/Oを繰り返すと、スタックがあふれる恐れがあるんじゃないかなあ?
0545デフォルトの名無しさん (ブーイモ MM1f-yLof)
垢版 |
2023/05/17(水) 00:05:39.06ID:UJN2K8xqM
>>544
なるほど
.NETのFileStreamもReadFile()やWriteFile()を使ってるのはそれが理由かも
0547デフォルトの名無しさん (ワッチョイ cfa7-55dJ)
垢版 |
2023/05/17(水) 09:38:13.97ID:J+vPZ/2W0
>>545
いや完了ルーチン内で更に完了ルーチン呼び出しするなんて実装メリット無さ過ぎて普通しないからそれが理由ではない
単純に最も効率的な非同期IOはスレッドプールを利用した完了ポートだからだよ
C#のasync awaitも完了ポートベース、nodejsもWindows版では完了ポートベース
0548デフォルトの名無しさん (ワッチョイ 8f79-cPXU)
垢版 |
2023/05/17(水) 09:41:37.77ID:x4D/IoKq0
>>546
どうした?
実はこれまで組んだファイル周りの実装がまずいことに気が付いたのか?

プロセスセーフまで保証しろって言われたら正直俺もやってねえ
っていうかもっかいやってくれればええやんってポリシー

だったけどこのスレ見たやつが指摘してきた(笑)
面倒くせえw
0551デフォルトの名無しさん (ワッチョイ 8f79-cPXU)
垢版 |
2023/05/17(水) 09:56:54.00ID:x4D/IoKq0
>>549
いや、他のやつにアクセスされてると死ぬねん
その時いつまで待てばええのか仕様がないねん
タイムアウト付けるとじゃあその時できんかった処理をいつやるのか仕様を考えろって言われて辛いねん
さらにそれが終わる前に他の処理が進んでしまってもまずいときあんねん
こんなレアケース相手にしとうなかったねん
0554デフォルトの名無しさん (ワッチョイ 8f79-cPXU)
垢版 |
2023/05/17(水) 10:07:50.36ID:x4D/IoKq0
いい手を考えた

それってこの間作ったやつも
同じですよね?
解決しているのであれば
対策方法を教えてほしいです

って比較的暇そうな
プロジェクトも誘爆させてみる
0555デフォルトの名無しさん (ワッチョイ 13e5-zI38)
垢版 |
2023/05/17(水) 10:20:18.08ID:r4L2F7830
元々はファイルクローズ直後に約10%程度日付の書き換えに失敗するという質問で
原因はDefenderと結論付けて解決している
対策はリトライ、検索除外、ファイルを閉じる前に日付を書き換えるなどが上がっている

なお非同期書き込みは関係ない
0556デフォルトの名無しさん (ワッチョイ ff2f-3DBk)
垢版 |
2023/05/17(水) 10:26:42.10ID:GG5VHMy50
>>551
レアケースでもなんでもなくて、当然設計段階で考慮しとくべき話
コーディング以前の問題

>>553
レアケースでも、それが発生する可能性がある以上、発生したらどうするか考えとかないとダメ
エラーで落とすとかどうもしないとかも含めてな

つかマイナンバーのやつは、レアケースというほどレアな条件が重なってるとは思えん
たんなる設計不良とテスト不足だろ
0559デフォルトの名無しさん (スップ Sd1f-ZkZz)
垢版 |
2023/05/17(水) 10:38:32.93ID:JdW1FdHOd
>つまらないレアケースを突いて来る奴増えたよな
つまるつまらない関係なく安全なシステム構築が原則じゃねーの
こんなこと言う奴が実装してると思うと怖いな
0561デフォルトの名無しさん (オイコラミネオ MMc7-ZkZz)
垢版 |
2023/05/17(水) 12:01:27.36ID:F24a8wLtM
主張がおかしい
少なくとも例外=死ではないわな

いくら他言語知っててwin32api知ってても例外回りというかそこら辺の理解が出来ずに対応が出来ないから初心者なんだろう
ご愁傷様
0562デフォルトの名無しさん (アウグロ MMdf-PTT8)
垢版 |
2023/05/17(水) 12:26:38.86ID:gUH2EQh+M
でもこれって排他で掴んじゃうテキストエディタでファイル開いたまま放置されたとかなったら回避不能だよね
新しいファイルを作っちゃうって手も残ってるけど
正しいソフトウェアのあるべき姿って言われても困るわけだが?

まあ、新しいファイルを作っちゃっていいなら作っちゃうが・・・?
読んでくるとき常に最新読むってすれば簡単だし
0565デフォルトの名無しさん (オイコラミネオ MMc7-ZkZz)
垢版 |
2023/05/17(水) 12:55:33.17ID:F24a8wLtM
責務以外のことまで考慮する必要はない

書き込みしようとしたらHDDが容量不足だったは普通はそこまで考慮したソフトは書かない
一般的なリトライの範囲かせいぜいメッセージ出して人間が対応する
録画ソフトなどで事前に想定された範囲内で必要となるなら用意する

一般的なライブラリの範疇の話じゃない難癖レベル
0566デフォルトの名無しさん (ワッチョイ 03e5-Phjm)
垢版 |
2023/05/17(水) 12:58:10.45ID:HpY9MMf50
排他で掴んじゃうエディタで開いたままにする関係者が悪いのであってやるなというだけの話
人が排他で開いたままにしちゃうかも、まで考慮することじゃない
0569デフォルトの名無しさん (スップ Sd1f-ZkZz)
垢版 |
2023/05/17(水) 14:21:29.85ID:JdW1FdHOd
>>562
当初の質問の流れだと①ファイル出力②タイムスタンプ変更を連続してるわけだから言ってる話(①のファイルをエディタなどの人為的操作でつかまれる)はおかしくない?
少なくともやりたかったことがどこかにあるファイルを別の場所にコピーする、ファイルのタイムスタンプは同じにするなら
①いったん別名でファイル出力
②タイムスタンプ変更 ※リトライ含む
③正しいファイル名に変更 ※リトライ含む
ぐらいがいいんじゃないかと思うけどね③まで正常終了したらOK
0571デフォルトの名無しさん (ワッチョイ ff7f-pETH)
垢版 |
2023/05/17(水) 21:24:44.21ID:WYa1maRz0
FDDってプレーンテキストくらいしか保存できないよね?
0575デフォルトの名無しさん (ワッチョイ 335f-eWQc)
垢版 |
2023/05/18(木) 00:09:06.95ID:PrSBwdky0
ハードディスクがCドライブから始まってるのはその名残りだよな
0576デフォルトの名無しさん (ワッチョイ 633a-zI38)
垢版 |
2023/05/18(木) 00:33:26.61ID:M0TxVFb20
1KB程度のデータしかない住民票を印刷するのにバカでかいPDFなんぞをワザワザこしらえてご丁寧に暗号化復号化レンダリングイメージ化などいらんことしてるから日本はダメなんだよ
0578デフォルトの名無しさん (ササクッテロ Sp87-eWQc)
垢版 |
2023/05/18(木) 10:06:50.15ID:Osufe4Tap
画像PDFは改変対策だろ?
まあ、テキストPDFでもプロテクト掛けられるけどな
0582デフォルトの名無しさん (ササクッテロ Sp87-eWQc)
垢版 |
2023/05/18(木) 10:29:30.52ID:Osufe4Tap
全部テキストにして
電子署名はQRコードで出せば良いのでは?
0588デフォルトの名無しさん (ワッチョイ 5ebb-ZDLm)
垢版 |
2023/05/20(土) 18:00:33.33ID:BNhw9lNy0
>>576
記入可能なPDFを端末で持っておいて
テキストだけサーバーから送れば爆速で処理終わるよね
0589デフォルトの名無しさん (ブーイモ MM86-F7IQ)
垢版 |
2023/05/20(土) 18:23:59.40ID:9iccQhCKM
PDFを悪用する人がいても書類を受け取った人が偽造かどうかオンラインとかで確認できるようならそれでもよかったのかもね
コンビニ出力と役所出力の公文書で受け取った側の運用が変わるデメリットを受け入れられたらの話だけど
0595デフォルトの名無しさん (ワッチョイ 6f5f-GCa2)
垢版 |
2023/05/25(木) 23:41:52.29ID:HnExcI2y0
よく聞かれることかもしれませんが、教えてください。

私はいま、VisualC#の本を見ながら勉強しています。自分で作ったソフトのウィンドウが表示されて
ボタンをクリックしたら「こんにちは」とメッセージが出てるのを見て喜んでるレベルです。
夢は仕事で使うシステム(Windowsソフト)を作ってパートさんたちの仕事を楽にすることです。
今やっている本を買う前に買ってしまった「C#入門」的な本がいくつかあるんですが、それを
見ると、私が勉強しいるのとはまったく別の技術のように見えます。
VisualがつかないC#って、本当に文字で記述するための文法や構文の解説ばかりのようで、
ウィンドウやコマンドボタンの作り方ひとつ解説してないみたいです。

お聞きしたいのですが、VisualのつかないC#を習得した人って、どんなものを作るようになるのでしょうか?
また、ただのC#を学んだ人って、私のようなVisualC#だけを学んでいる人のことが幼稚な低レベルに
見えてるんじゃないかという気がするのですが、それでも小さい企業にあるWindowsパソコンで使う業務システム
を作るにはVisualの方がずっと楽で有利だと思うんです。

いかがでしょうか?
0598デフォルトの名無しさん (ワッチョイ 6f5f-GCa2)
垢版 |
2023/05/26(金) 00:00:07.73ID:MvHB7l4o0
VisualC#の本を読んで勉強してるけど、Windowsアプリの作り方を勉強してるつもり。
C#の入門書も見たことあるけど、プログラム文の書き方のようなことで終始していて、
ウィンドウの作り方やボタンの設置のしかたすら解説されていないみたい。ぜんぜん違う。

Visualが付かない方の本でC#を勉強した人って、何が作れるようになるの?
Visualが付く方のC#だとwindowsアプリが作れて使い道が多そうなんだけど。


これが質問の主旨です。
0599デフォルトの名無しさん (ワッチョイ 3a32-m999)
垢版 |
2023/05/26(金) 00:09:36.83ID:V/JNO+4j0
VC++というかMSVCっていうとMicrosoftによる実装って意味合いもあるが
Visual C#というと殆ど開発環境を指してしか言わないと思うんだけど

別にフォームデザイナーがなくとも自動でコード生成してるだけだから
コードだけ書いてもGUIアプリは作れるし、他のIDEでも良い
かたや開発環境を前提としたアプリの作り方
かたや言語仕様の解説みたいな感じじゃないのか
0601デフォルトの名無しさん (オイコラミネオ MMeb-owa4)
垢版 |
2023/05/26(金) 00:11:06.11ID:W5uHLn8jM
意味が分からない人が多くて困るな
C#は言語そのものでVisualと言ってるのはGUI付きと言うことを言ってるんだろ

>>595
別のようだけどそれは基本的には同じものです

入門の仕方は様々ある
ざっくりとたとえると英語で言えば文法の本と日常会話の本に当たります
文法の方にはhelloは書いてなくて日常会話の方には未来完了とか書いてないでしょ?

表示技術はあなたの言うvisualで学べるけど文法の方やライブラリなどの使い方は学べない
文法を学ぶのにいちいちウィンドウを出していたら手間がかかる

アプリの作り方をある程度学んだら言語自体+ライブラリの使い方だけ学んでも問題はないのです
0603デフォルトの名無しさん (オイコラミネオ MMeb-owa4)
垢版 |
2023/05/26(金) 00:18:27.28ID:W5uHLn8jM
>>598
windwos上で使ってる一般の人は両方とも勉強します

基本的にはwindows上でしかGUIは提供されていないけどライブラリやwebサービスはGUIがなくても書けるし需要はある
GUIで出来ることは表層だけで中の処理は言語仕様やライブラリを知らないといけない

本格的にGUIを勉強しようと思っても今はそれ向けの本がほぼないので自習になる
0607デフォルトの名無しさん (ワッチョイ 8a80-jezU)
垢版 |
2023/05/26(金) 00:22:55.79ID:VY0JKlLq0
アプリっつっても、デスクトップアプリ、コンソールアプリ、Webアプリなどあるからな
他にも、サービスとか、WebAPIとか、ライブラリとか
何を作るかで、使うライブラリやフレームワークが変わってくるし
0612デフォルトの名無しさん (ワッチョイ 6b2d-cUXk)
垢版 |
2023/05/26(金) 00:32:07.63ID:A9A3Khm00
>>598
GUI(ウィンドウやボタン等がある)アプリを作るには、C#の文法と、GUI(ウィンドウ等)の作り方の両方を覚える必要がある
どっちを先に覚えるかの違いでしかないよ
(GUI無しのアプリは使い道が限られるけど、文法を学習するのに向いてる)
0615デフォルトの名無しさん (ワッチョイ 6f5f-GCa2)
垢版 |
2023/05/26(金) 00:36:14.97ID:MvHB7l4o0
>>601>>603
ご回答ありがとうございました!
外国語の学習の比喩でなんとなく理解できた気がします。
理屈から入る人ととにかく外人と話したがる人がいるけど、けっきょくマスターするには
どっちの学習も必要になるという感じなんですね。

私の質問に回答してくださったせいで、あなたを小馬鹿する人が現われてしまったようで
本当に申し訳ないです。

ありがとうごさいました。
0617デフォルトの名無しさん (ワッチョイ 6f5f-GCa2)
垢版 |
2023/05/26(金) 00:38:53.91ID:MvHB7l4o0
>>612
GUIなしのアプリって、素人にもイメージしやすいものですとどんなのがありますか?
GUIアプリの中で一部の機能を担う部品(ライブラリっていうの?)みたいなイメージでしょうか?
0620デフォルトの名無しさん (ワッチョイ cbad-Ic7P)
垢版 |
2023/05/26(金) 01:23:01.30ID:c1jHvuSF0
ウィンドウだしマウス使えるじゃんって突っ込みなしならコマンドプロンプトとか?
0621デフォルトの名無しさん (ワッチョイ 6b2d-cUXk)
垢版 |
2023/05/26(金) 01:29:21.24ID:A9A3Khm00
>>617
GUI無しのアプリは素人が使うことはほぼ無いから、分かりやすい例を挙げるのは難しいな…。
小さなツール類が多いけど、そう言われてもピンとこないよね。

> GUIアプリの中で一部の機能を担う部品(ライブラリっていうの?)みたいなイメージ
GUI無しのアプリは単体でも使えるけど、GUIアプリから呼び出して使うこともあるよ。
ライブラリはそれだけでは動作しないのでアプリとはちょっと違う。
0623デフォルトの名無しさん (アウアウウー Sa2f-Xm68)
垢版 |
2023/05/26(金) 05:17:04.99ID:llcbKXvOa
例えば、ウェブ開発のバックエンドは、Ruby on Rails。
OS(Linux, サーバー)とのやり取り。
ファイル操作、テキスト処理、データベース処理などで表示部分なし

一方、フロントは表示部分で、HTML, CSS, JavaScript

Railsの給料が高いのは、1人でバック/フロントの両方を作るから。
これをフルスタックエンジニアと言う

これを複数人で分けて作る場合は、
意思疎通・打ち合わせコストが掛かるので面倒
0630デフォルトの名無しさん (ワッチョイ 3a3d-7xpx)
垢版 |
2023/05/26(金) 20:34:46.49ID:u2vLXVTG0
今コピーツールを作ってるんだが、Powershellと連動させたら需要あるかね?

みんなPowershellで何をやってるんだ?
0631デフォルトの名無しさん (ワッチョイ 3a3d-7xpx)
垢版 |
2023/05/26(金) 20:48:28.57ID:u2vLXVTG0
javaには戻れないからC#の案件が増えてくれるのを期待するのみ。

エラーがどこに出てるかさっぱりわからんかったJavaは。

今でも動かないコードあるし、何が何だかさっぱり分からない。

その点C#はMicrosoft様が一括でやってくれるので俺でもできた。

javaやるくらいならKotlinやるよ。

面倒くさすぎ
0632デフォルトの名無しさん (スッップ Sdea-6Vlr)
垢版 |
2023/05/26(金) 21:17:54.23ID:TqdGfdUid
馬鹿には無理なだけだぞ
0635デフォルトの名無しさん (ワッチョイ de10-sg49)
垢版 |
2023/05/26(金) 23:24:33.59ID:G1kfSu5s0
Kotlinは好き
0646デフォルトの名無しさん (アウアウウー Sa8f-8jEt)
垢版 |
2023/05/27(土) 19:43:24.60ID:1jtsLrYta
ウェブ開発のコンテキストでAPIはウェブAPIを指す
Windowsネイティブアプリ開発のコンテキストでAPIはWin32APIを指す

↑こういう使い方は「コンテキスト」の使い方として正しい

>>641のコンテキストは俺も見たことない使い方だから説明要るんじゃね
0654デフォルトの名無しさん (オッペケ Srcf-8yhP)
垢版 |
2023/05/27(土) 20:40:46.31ID:mBQrOHHnr
コンテキストの使い方としては問題ないだろうけど、その言葉を選ぶことが場にそぐわないというか
匿名掲示板の会話の中で使うと浮く言葉だという感覚は多少あるかな
0656デフォルトの名無しさん (ワッチョイ 9f4b-cXau)
垢版 |
2023/05/27(土) 20:57:34.82ID:Iuy4wHgO0
くっだらなね。
0658デフォルトの名無しさん (オイコラミネオ MM4f-/RYi)
垢版 |
2023/05/27(土) 21:04:07.97ID:t60D5gLTM
void Say(string text){
Console.WriteLine(text);
]

void Display(string text){
Console.WriteLine(text);
]
みたいのがあって中身が同じだけど別になってるのはコンテキストが違うから

コンテキスト無視してvoid Print()なんかにまとめちゃってからやっぱセリフは水色表示しましょうとなると修正が大変

と無理やりプログラムに絡める
0659デフォルトの名無しさん (スッップ Sdbf-2oUs)
垢版 |
2023/05/27(土) 21:22:29.54ID:FRBwBfHVd
>>653
馬鹿ってバッチ処理とか知らんのかね
0662デフォルトの名無しさん (スッップ Sdbf-2oUs)
垢版 |
2023/05/27(土) 21:27:26.31ID:FRBwBfHVd
>>660
こういう馬鹿が夜間で終わらないバッチ処理を作って訴訟になる
0664デフォルトの名無しさん (オイコラミネオ MM4f-/RYi)
垢版 |
2023/05/27(土) 21:35:35.76ID:t60D5gLTM
処理内容が同一でもコンテキストが同一とは限らない
処理内容が同一でもコンテキストが異なれば処理内容は同一であり続けるとは限らない

処理内容が同一でもコンテキストとして違いがあるのであればメソッドは別々にするのが望ましい
0670デフォルトの名無しさん (ワッチョイ 7b5f-hD65)
垢版 |
2023/05/28(日) 00:12:05.41ID:oxdpIcYI0
マの板でアメリカがデフォルトの危機言われて
頭ん中??????????????ってなる人たち?
0673デフォルトの名無しさん (ワッチョイ 0f68-EoPE)
垢版 |
2023/05/28(日) 11:02:05.14ID:LhRRD0FE0
ちょっと聞きたいんだがさらに一歩難いアルゴリズムについてね
本屋に基礎的なアルゴリズムを開設してる本はいっぱいあるし理解できるけど
海外の学者が書いた超分厚い専門書的なもんはマジでわからん

最適化とか巡回セールスマンとか群論とかトポロジーとかそのレベルも理解必要なんですかね?
C#できます!基本的なアルゴリズム理解できます!だけはちょい恥ずい

皆さんC#の言語仕様詳しいけど俺はさらに上を行ってるって自信を持てるには言語使用だけで
十分なんですかね?やっぱアルゴリズムも欲しがるべき?
0675デフォルトの名無しさん (ワッチョイ 9f4b-cXau)
垢版 |
2023/05/28(日) 11:15:47.39ID:eP2DgR+S0
要らんよね。
どこで使うんだろ
0677デフォルトの名無しさん (アウアウウー Sa8f-8jEt)
垢版 |
2023/05/28(日) 11:25:22.80ID:1uqhjo5xa
>>673
それは本当に専門書なのか?
割と基礎の部類に入るからQiitaでもいくつも記事あると思うぞ
土方には必要のない知識だけど使えるようになっておけば収入が高い職場に行けるかもしれんからやっておいて損はない
0678デフォルトの名無しさん (オイコラミネオ MM4f-/RYi)
垢版 |
2023/05/28(日) 11:55:29.61ID:MoCGpZK6M
実際にコードが書けなくても必要な時にそのパターンに当てはまると知っているだけ良い
たまに概念などを興味本位で知る程度で十分
キーワードを知ってるだけで強い

自分が大学で最初に習ったアルゴリズムはソート
複数のソートの手法を学ぶ
それで計算量などの基礎的概念を刻み込む
それが出来るなら最適化についての段階は踏める

じゃあ数式を見てコードに落とせるかと言えば無理だと思う
そこから本気出すかライブラリ探すかになる
0679デフォルトの名無しさん (ブーイモ MM0f-tQAl)
垢版 |
2023/05/28(日) 12:04:46.44ID:9AZMVk0MM
一般的なソートや検索のアルゴリズムは本屋にある基礎的なアルゴリズム解説本でカバーされてるやろ
今広く一般的に使われてるソート関数で使われてる細かい最適化の中身まではカバーされてないけど
0681デフォルトの名無しさん (オイコラミネオ MM4f-/RYi)
垢版 |
2023/05/28(日) 12:19:40.75ID:MoCGpZK6M
知りたいときに知りたいことを学べばいい
ライブラリで済むなら勉強することもないかもしれない

大学でオペレーションズリサーチの講義を取った
そこでは問題の概念について軽く学んで後はずっと確率などの微積分を行う
コードなどは一切書かないし手順すら学ばない
試験も同じで計算や数式を証明したりする

一般的なコーディングにはほぼ意味がないけど何かの問題解決するためには必要な人には必要
大体の人には無縁

難しい本だけど大学の教科書の内容ですら半年かけて講師に教わって学ぶ内容なので本を開いてぱっと理解できなくても何も問題ない
そういうものだと
0683デフォルトの名無しさん (ワッチョイ 9f80-FA6k)
垢版 |
2023/05/28(日) 12:29:49.04ID:pYaNr1fI0
業務アプリではまず使わん
ソートも探索もコレクションクラスのメソッドを使うだけ
黎明期ならまだしも今はPCの性能が上がって最適化の性能差もほとんど問題にならない
リアルタイムゲームとか機械学習系では使うだろうけど
0686デフォルトの名無しさん (アウアウウー Sa8f-8jEt)
垢版 |
2023/05/28(日) 12:52:11.08ID:1uqhjo5xa
群論というのは0個以上の要素を扱う時に使う
JSのfilterやmapやreduceはそのカテゴリに入る
何でもかんでもforでやってたら複雑になりすぎるし逆に何でもかんでもreduce使っても複雑になりすぎる
こういう時に汎用的に使える関数を作れたら生産性上がるぞ
0687デフォルトの名無しさん (アウアウアー Sa7f-WxZi)
垢版 |
2023/05/28(日) 12:58:01.84ID:o9dc7/1oa
初歩的な質問ですみません。
アドバイスを頂きたいです。

ある通信機器から10分間隔で指定のデータを取得し、そのデータをファイルに記述するプログラ厶をサービスアプリで作成しました。

追加の要件としてユーザーからの操作でデータ収集を停止/再開させる機能が必要になりました。
操作用のボタンが必要になるのですが、サービスアプリではGUIを持てないと認識しているのでフォームアプリで作成し直す必要があると考えています。

停止が押されていない間はデータ収集を継続したいのですが、フォームアプリだとユーザーが画面を落とす(×ボタン押下)可能性が考えられます。
画面を落とした時、つまりフォームが立ち上がっていないときでも収集処理をすることは可能でしょうか?

調べるとBackgroundWorkerなどは出てくるのですが、これは少し意味合いが違っているように感じており、似たような例を見つけられませんでした…。
0691デフォルトの名無しさん (ワッチョイ 0f10-S+HU)
垢版 |
2023/05/28(日) 13:48:09.53ID:7NA4xXcX0
>>689のようなプロセス間通信制御でもいいし
どうしてもフォームアプリで統合したいなら、×ボタン無効化したり
FormClosingイベント拾って閉じるのキャンセルして代わりにHideするようにしたりすればいいんじゃない?
0693デフォルトの名無しさん (アウアウクー MMcf-WxZi)
垢版 |
2023/05/28(日) 14:46:33.46ID:urnIPGLqM
>>687 です

回答ありがとうございます

FormClosingイベントでウィンドウを閉じたように見せるだけ、というのもあるんですね
試せる環境が今手元に無いのですが、Hideで隠した状態で、ユーザーが再度フォームを立ち上げた場合は、隠したものと新たに起動した2つのフォームが動いている状態になるんでしょうか?


>>692
なるほど、このコマンドのバッチファイルを作っておいてユーザーにはそれをダブルクリックして停止/再開をしてもらうのが手軽かもしれません
0694デフォルトの名無しさん (ワッチョイ 2b01-OlK5)
垢版 |
2023/05/28(日) 14:53:07.28ID:E8Oz4qmg0
scコマンドに停止/再開の引数付けたショートカット作ってもいいぞ
0695デフォルトの名無しさん (ワッチョイ 0f68-EoPE)
垢版 |
2023/05/28(日) 15:07:22.90ID:LhRRD0FE0
>>677
最適化と組み合わせ論だっけ?
めちゃくちゃ分厚くて数式だらけだった気がする
全然わからん
あーいうのが読めなくて自信喪失してる最中
0696デフォルトの名無しさん (ワッチョイ 0b10-S+HU)
垢版 |
2023/05/28(日) 16:08:43.34ID:19IHwxiC0
>>687
バックグラウンドデーモンを誰が停止・開始制御するかという命題では?
プレビリッジ権限の認証問題がシステム課題であって、APIやパイプラインなどというアクイジションのテクニックなんか些細な問題。
UMLユースケースを書き、SOLID原則のSRP遵守でUSERを明確にし、必要に応じてFACARDやFACTORYで入り口を切り分ける事。
この場合は、認証問題がキモ。 ボタンがどうのこうのではない。
0697デフォルトの名無しさん (ワッチョイ 9f79-dfVX)
垢版 |
2023/05/28(日) 16:29:16.20ID:pV4wEcmO0
サービスを稼動させたまま外部から設定を変更したい
サービスとの通信は>>689のように名前付きパイプでいいが、操作用UIとは完全に切り離した方がいい
今時のタスクトレイに常駐するタイプのサービスはほぼそうなってるはず
どちらにしろプロセスは別々になるが>>>691みたいな考え方で作るとUI側に余計な権限が残ってしまう恐れがある
0699デフォルトの名無しさん (ブーイモ MMbf-tQAl)
垢版 |
2023/05/28(日) 17:57:25.94ID:vErPSHdQM
拗らせ風のレスはわざでしょ
もともとサービスのスタート・ストップをどうやるつもりだったのかは重要なポイントだと思うよ
最初から必要そうな機能が”追加要件”扱いなのもちょっと臭う
0701デフォルトの名無しさん (アウアウウー Sa8f-8jEt)
垢版 |
2023/05/28(日) 18:21:31.64ID:FaN+2ocOa
>>695
組合せ最適化問題じゃね?
多分ナップサック問題が最初の方に出てきただろ
そういうのはだいたい動的計画法で解く
AtCoderのD問題の定番だから洋書なんて読まなくても競プロしてりゃすぐ覚えるぞ
0703デフォルトの名無しさん (アウアウクー MMcf-WxZi)
垢版 |
2023/05/28(日) 18:46:26.18ID:EBgEX/XFM
>>697
知識が足りなくてきちんと理解出来ていないのですがUIは停止/再開のフラグを投げるだけの機能に限定し、現状収集機能を持っているサービス側とは完全に分けるべきという認識で合っていますか?

元々はこういった機能は必要ないとのことで作り始めたんですが、製造現場としてはデータを出したくないタイミングがあると要望が出たので重要な機能ですが後付けになりました…
0704デフォルトの名無しさん (スッップ Sdbf-2oUs)
垢版 |
2023/05/28(日) 18:57:13.01ID:3dp1E4GEd
こういう馬鹿に作らせるなよ
0705デフォルトの名無しさん (ワッチョイ dfbd-/RYi)
垢版 |
2023/05/28(日) 20:39:40.10ID:Tc1TIXcj0
せっかくサービスアプリケーションにして安定稼働できているなら、
わざわざGUIアプリケーション化せずに、
GUIアプリケーションから名前付きパイプでサービスに指示するだけのほうがいい。

最近Cで非同期の名前付きパイプクライアントを書いて、
C#で非同期の名前付きパイプサーバーを書いたら、
C#のほうがあっという間に書けて感動した。
(Cのほうも非同期ファイルI/Oのコードを元に作ったからすぐできたけど)
0706デフォルトの名無しさん (ワッチョイ 9f79-dfVX)
垢版 |
2023/05/28(日) 20:55:11.64ID:pV4wEcmO0
>>703
>>687はデータ収集の停止や再開だけで、サービスを停止させたいとは書いてないからそれを前提で回答してるけど
サービス停止の影響範囲によってはサービスとの通信すら不要かもしれない。けどそれを知ってるのは本人だけなんだよ
要件を洗い直した方がいいよ
0707デフォルトの名無しさん (ワッチョイ 9f79-dfVX)
垢版 |
2023/05/28(日) 21:08:37.51ID:pV4wEcmO0
サービスアプリはVista以降は別のセッションで動くから、それをGUIから制御したい場合は
制御用のプロセスを生成してサービスとのプロセス間通信手段を確立する必要があるわけよ
ただし要件によっては既存のサービスの停止や再開と状態の参照程度で済むからそれ用のGUIなんて1日もあれば作れるでしょうよ
0725デフォルトの名無しさん (ワッチョイ ebe5-r/x3)
垢版 |
2023/05/29(月) 19:11:00.49ID:az14uG3b0
バーコードリーダーから取得したバーコードデータをフォームアプリの
テキストボックスに入力して、バーコードデータを読み終わったら
処理をするプログラムを作りたいのですが、
バーコードデータの読み込み終了を知るにはどうしたら良いでしょうか。
一文字読み取るごとに終端文字列を判定すれば出来るのかなと思うのですが、
王道のやり方があったらお教え頂きたいです。
0726デフォルトの名無しさん (スッップ Sdbf-2oUs)
垢版 |
2023/05/29(月) 19:13:13.18ID:M6W/ObnYd
また馬鹿が来た
0727デフォルトの名無しさん (ササクッテロラ Spcf-hD65)
垢版 |
2023/05/29(月) 19:19:07.19ID:6va+z9rTp
API仕様嫁としかw
0729デフォルトの名無しさん (アウアウウー Sa8f-cXau)
垢版 |
2023/05/29(月) 19:41:24.70ID:cWs/PGXpa
>>727
キーボードとして認識されるタイプじゃね
0730デフォルトの名無しさん (ワッチョイ 7b78-S+HU)
垢版 |
2023/05/29(月) 19:44:52.37ID:a35GfSoK0
>>725
バーコードリーダー付属の設定用紙(なければ公式サイトからダウンロード)で
スキャンデータの末尾にCRLFを付与する設定にすればOK

メーカーによってはアプリで設定するものもあるのでマニュアル読んでね
0733デフォルトの名無しさん (ワッチョイ ebe5-r/x3)
垢版 |
2023/05/29(月) 21:44:45.49ID:az14uG3b0
バーコードの者ですが、キーボードのように動作してスキャンデータの末尾にCRLFが
付加されるタイプです。
テキストボックスのチェンジイベントごとにテキストボックスの文字を監視すれば
良いかなと思ってるのですが、世間にはもっとスマートなやり方があるのかと思い
聞いてみたのです。
初心者なので、C#相談室には行かず、ふらっと C#の方に来たのですが。。。
0734デフォルトの名無しさん (ササクッテロラ Spcf-hD65)
垢版 |
2023/05/29(月) 21:46:51.88ID:nfi+BvtEp
素朴な疑問なんだけど、なんでテキストボックスで受けようとした?
0735デフォルトの名無しさん (ワッチョイ efda-eDe+)
垢版 |
2023/05/29(月) 21:52:13.37ID:4g+5lQrq0
>>733
HIDとして認識されるバーコードリーダは、言い換えれば単なるキーボード入力でしかないので王道は無い。
(この場合、本物のキーボードをガチャガチャおしながらバーコード読み取るとか意地悪されると思うので、指定桁数とか見て頑張るしかない)

ドライバをインストールして使うようなバーコードリーダならSDKに従えとしか言えない。
0737デフォルトの名無しさん (ササクッテロラ Spcf-hD65)
垢版 |
2023/05/29(月) 21:56:22.76ID:DONu3V9Bp
そのテキストボックスにフォーカスしてないと読み取りが正しく入力出来ないとか、馬鹿な仕様だなぁ
0742デフォルトの名無しさん (ワッチョイ ebe5-r/x3)
垢版 |
2023/05/29(月) 22:45:14.75ID:az14uG3b0
逆にキーボードのように動くバーコードリーダーのデータをテキストボックス以外で
入力する方法ってあるのでしょうか。
0743デフォルトの名無しさん (スッップ Sdbf-2oUs)
垢版 |
2023/05/29(月) 22:58:50.24ID:M6W/ObnYd
こんなのが作る業務システムって…
0744デフォルトの名無しさん (ワッチョイ 9f4b-cXau)
垢版 |
2023/05/29(月) 23:16:04.08ID:aYNq1fNY0
質問に答えずにバカにするだけの住人wwwwwwwww
あ、ワイのことね。
0745デフォルトの名無しさん (ワッチョイ 7b5f-hD65)
垢版 |
2023/05/29(月) 23:23:42.86ID:vDJtnbWH0
むしろテキストボックスしかキーボード入力出来ないと思ってる方が不思議だわ
キーフックとか色々あるだろw
0748デフォルトの名無しさん (オッペケ Srcf-BQoH)
垢版 |
2023/05/30(火) 07:53:38.18ID:bfEjfZ0jr
>>743
仕事できない癖に一丁前に文句だけ言うタイプ
0751デフォルトの名無しさん (ワッチョイ 3bb3-EdO8)
垢版 |
2023/05/30(火) 10:22:34.36ID:4h93jK/S0
RawInputというハードウェアを区別して入力を識別できる仕組みがある
https://learn.microsoft.com/ja-jp/windows/win32/inputdev/about-raw-input

でもバーコード読み取りながらキーボード操作するなんて普通はやらないし
大体はEnterが入力されたらtextboxの文字数をチェックして
想定外の文字数が入力されてたらエラーで再度読み取りを促すとかで済ませてそう
0752デフォルトの名無しさん (ササクッテロラ Spcf-hD65)
垢版 |
2023/05/30(火) 10:39:12.21ID:fRxDhXvsp
>>749
安いバーコードリーダー使ってる奴は運用でカバーするしか無いだろw
許容出来ないならプロジェクト自体が破綻してるって事さw
0753デフォルトの名無しさん (ササクッテロラ Spcf-hD65)
垢版 |
2023/05/30(火) 10:42:26.90ID:Myxtqo5cp
>>751
こんなのがあるんだぁ
でも初心者スレにゃ敷居が高いかなw
0754デフォルトの名無しさん (オッペケ Srcf-BQoH)
垢版 |
2023/05/30(火) 10:49:12.86ID:bfEjfZ0jr
ふらっとC♯で質問をバカにすんなよ
C#相談室に来ちまうだろ
気に入らんならスルーしろ
0755デフォルトの名無しさん (ササクッテロラ Spcf-hD65)
垢版 |
2023/05/30(火) 10:59:18.28ID:S+eBT5oEp
>>754
むしろ引き取ってくれw
0758デフォルトの名無しさん (ワッチョイ 4bad-Adje)
垢版 |
2023/05/30(火) 20:53:22.26ID:XqwYghOK0
>>751
業務システムは実際そんなもん
テキストボックスで受けてチェックデジットでチェックして~とかぐらい
0761デフォルトの名無しさん (スッップ Sdbf-2oUs)
垢版 |
2023/05/30(火) 21:33:48.29ID:VFhOrU+Nd
最近( ´,_ゝ`)プッ
0763デフォルトの名無しさん (アウアウウー Sa8f-cXau)
垢版 |
2023/05/30(火) 22:51:53.77ID:aqCv98Mpa
なんだかんだで考えてあげるお前ら優しいね(*´ω`*)
0764デフォルトの名無しさん (ワッチョイ ef66-BQoH)
垢版 |
2023/05/31(水) 06:26:02.95ID:bZhrN1mv0
バーコードの者ですが
・1文字入力される度に終端文字を評価して終端文字が来たらコードを確定するやり方は王道
・テキストボックス以外にキーをホックする事もできる
ということが分かりました
世間一般とは外れたやり方をしないで済みそうです
ありがとうございます
0770デフォルトの名無しさん (ワッチョイ 0fbb-wRkZ)
垢版 |
2023/06/01(木) 12:50:37.21ID:6cGVvbbd0
完全に自動保存の代わりになるわけじゃないけど、ないのはHot Exitで代替しろってことなんじゃないのかな?
0772国名です (ワッチョイ 1f48-sXVZ)
垢版 |
2023/06/02(金) 13:19:54.33ID:WyoC2q620
近くにやばい人がいた(ガチ)
0775デフォルトの名無しさん (ワッチョイ 0b68-mVGR)
垢版 |
2023/06/10(土) 21:21:30.66ID:FuXZUb160
何故か急にBitmap.SetPixelが機能しなくなったんですが原因わかりません。
正方形範囲を青色で縫ってpictureboxに反映させるだけの超シンプルなコードです。
デバッグツール使うと青に塗った後Bitmap.GetPixelで色が反映されてるのは確認取れたんです。
でpictureboxにもちゃんとbitmap指定しました。でもpictureboxは何も変更されません。
適当な新規プロジェクト立てて全く同じコード書いたら普通に機能しました。
ひょっとすればプロジェクトが壊れたなんてことあります?
0779デフォルトの名無しさん (オイコラミネオ MMd5-8sUu)
垢版 |
2023/06/10(土) 23:31:04.78ID:JneWu8RjM
一度目に指定するとそれは即反映される
二度目以降はリフレッシュさせないと反映されない

表示されてる画像をSetPixelしただけで毎回全部書き換えてたらとんでもなく重くなるでしょう
表示のタイミングはこちらで決められますと言うこと
0780デフォルトの名無しさん (オイコラミネオ MMd5-8sUu)
垢版 |
2023/06/10(土) 23:50:06.20ID:JneWu8RjM
ところがwindowが重なったりした後に前に出すと新しい画面に書き換わったりしてる

これはwindowsがアプリのwindowの画像が無効になったので再描画しなさいと命令を出してるため
元から表示されてる画像は表示されていただけでアプリ内で保存されていない
それで新しい画像を表示するしかなくなる
0781デフォルトの名無しさん (ワッチョイ 0b68-mVGR)
垢版 |
2023/06/11(日) 00:08:45.00ID:wZmBwowG0
>>780
そういうことなんですか!チャットに聞いても分からなかったけど納得しました。
次は何故そういう状況になってしまったか考えないといけないですね。
ありがとうございました!
0784デフォルトの名無しさん (ワッチョイ 398e-2zfj)
垢版 |
2023/06/11(日) 00:41:58.22ID:R/2qoB4K0
勝手な略語を使う馬鹿にまともなことを期待してはいけない
0788デフォルトの名無しさん (ワッチョイ 017c-5zO0)
垢版 |
2023/06/12(月) 09:51:36.95ID:NagvqA3h0
>>787
リフレッシュは良いんだけどasyncとか出てきて使う様になってバックグラウンドでUI更新しようして出来てないって事に気付いてないとか有るやん

UIスレッドじゃ無いと更新出来ないの知らない人も多いしスレッド切り替える方法知らない人も多い
0789デフォルトの名無しさん (ワッチョイ b33d-m8BW)
垢版 |
2023/06/13(火) 07:59:18.79ID:0FRcsKll0
GitHubの使い方が分からない。
つまりこれって書いた差分をマージするってこと?

ブランチとかよくわからんが、支店を出すってこと?

コードをシェアするってことなんだけど、シェアする仲間がいない・・・
0792デフォルトの名無しさん (ワッチョイ 8bbb-f0F1)
垢版 |
2023/06/14(水) 12:43:21.90ID:zQTHCkUD0
>>789
githubも使い方gitと同じだから
0797デフォルトの名無しさん (オッペケ Sr05-8Dp1)
垢版 |
2023/06/16(金) 06:55:54.14ID:OHuIfsqSr
同一ネットワーク内の複数のPCで通信したいけどプロセス間通信って古いかな
今はSocketIOで非同期通信くらいしてないとダメかな
ちなみにフォームアプリの予定w
WPFは工数だけかかって面倒臭そう
0798デフォルトの名無しさん (ワッチョイ 8907-8W7i)
垢版 |
2023/06/16(金) 07:13:30.39ID:hLDZvlP60
複数のPCでプロセス間通信てどれかをサーバーにするしかないじゃん
リモートオブジェクトはなくなったぞ
https://learn.microsoft.com/ja-jp/dotnet/core/porting/net-framework-tech-unavailable
> .NET リモート処理は、.NET 6 以降ではサポートされていません。 .NET リモート処理は、問題のあるアーキテクチャであると判断されました。 これは、現在サポートされていないアプリケーション ドメインとの間の通信に使用されています。 また、リモート処理にはランタイム サポートも必要で、維持するのに高いコストがかかります。
0806デフォルトの名無しさん (ブーイモ MMeb-BK+T)
垢版 |
2023/06/16(金) 17:19:58.24ID:wS8/ZvHAM
>>797
どういうプロトコルでのプロセス間通信?
0810デフォルトの名無しさん (オッペケ Sr05-Cr01)
垢版 |
2023/06/16(金) 22:22:57.11ID:koUma95Nr
既存のアプリケーションを移行したくないのはわかる
けど、null不許容参照型が使えないのはいまどきあり得ない
0817デフォルトの名無しさん (ワッチョイ 3274-hrKI)
垢版 |
2023/06/22(木) 04:35:53.17ID:CPcSxaDF0
わたしは今からLinq To SQLを勉強しようといろいろ川俣の本を買ったのですが。
0818デフォルトの名無しさん (ワッチョイ 8554-dYQK)
垢版 |
2023/06/22(木) 05:01:31.04ID:Xft5ksI80
自分自身にとって明確な理由やメリットがあって勉強するならいいと思う。
理由もなく、存在を知ったから目的ないのに勉強するというなら勉強不要。

たとえ話になるけど、ガチでプロ選手目指す野球少年なら野球の練習する意味あるけど、
大谷の話題で野球に興味持ったニワカが、目的なく練習しても意味ないでしょ。
0819デフォルトの名無しさん (ワッチョイ ad7c-ZjIi)
垢版 |
2023/06/22(木) 05:23:50.74ID:fUhg+N3Z0
そうでも無いやろ

プロになる気が無くても野球やってみたら才能がある事に気付いたとかあるやん
プロの選手だって高校までは別の競技やってたとか2つ同時にやってたとかあるやん
0825デフォルトの名無しさん (ワッチョイ 22ea-hRAP)
垢版 |
2023/07/07(金) 20:47:23.54ID:BdypaOA90
visual studioのformでプロジェクトデザイナーの設定settings.settingsでint型の配列を使いたいん
[10]個ぐらいなんですけど、windowsFormでいい設定の保存方法ありますか?
0832デフォルトの名無しさん (スッップ Sdbf-CFBc)
垢版 |
2023/07/09(日) 13:11:44.65ID:Dnv+EbFzd
通知領域のアイコンをクリックすると現れるメニューを複数列にしてみたいです
こういう場合は自作コントロールを作成する必要があると考えればよいですか?
この辺は未経験なので自分にはハードル高そうですが

昔から使わせて頂いてるMr.Clipboardというソフトウェアに類似するものを作ることが目標です。
0833デフォルトの名無しさん (スッップ Sdbf-CFBc)
垢版 |
2023/07/09(日) 13:23:58.06ID:Dnv+EbFzd
ん~contextMenuStripとかをいじって自作コントロールを作るという高いハードルを越えるより
通知領域アイコンをクリックした時に、メニューに似せたフォームが、ちょうどメニューが表示されるような位置に現れるようにしたほうがいいのかな・・・実現可能性は高そう

Mr.Clipboardの作者さんはどうやってこういうものを作ったんだろう
0834デフォルトの名無しさん (オッペケ Sr0b-kkOg)
垢版 |
2023/07/09(日) 14:28:31.42ID:qTcsfTmnr
古そうなソフトウェアだから
そもそもContextMenuStripじゃなくてContextMenu(=COMCTL32)を使ってるんじゃないかな
使ったことないから知らんけどひょっとしたら何かデフォルトで2列表示できる機能が備わってたりして
0835デフォルトの名無しさん (スッップ Sdbf-CFBc)
垢版 |
2023/07/09(日) 15:40:32.78ID:Dnv+EbFzd
>>834
ありがとうございます
画像貼れればいいのですが規制されててダメなんですごめんなさい

Mr.Clipboardを自分のPCで今使っているのですが、通知領域のアイコンをクリックすると、10列表示されます。
文字列を登録することができるのですが、登録数をふやすほど列も増えていく仕様なんです
列数だけではなく、1列当たりの行数なども柔軟に扱えないと実現できないのかなと思ってます。

一応>>833の方向性でやってみることにしました
継承やらオーバーライドやら試してみたい気持ちもあったのですが、.そもそもNETのソースコードを正しく読み解く自信が・・・
0857デフォルトの名無しさん (ワッチョイ 95ad-tdBp)
垢版 |
2023/07/15(土) 12:52:20.24ID:x4tryG3A0
初心者です。
非同期メソッドにCancellationTokenを渡して、エラーハンドリングを行う必要があることを知りました。CancellationTokenSourceからCancellationTokenを作成して、非同期メソッドに渡していくところまではできました。ただ、ネストが深い非同期メソッド内でトークンをキャンセルしたいときに、どのようにキャンセルすれば良いのか分からない状況です。
非同期メソッドからCancellationTokenSourceのCancelメソッドはどのように呼べば良いのでしょうか。
0859デフォルトの名無しさん (JP 0H62-9/0y)
垢版 |
2023/07/15(土) 13:15:08.16ID:KExn0jd0H
トークンをキャンセルする権限を持ってるのは非同期処理側じゃなくて呼び出し元だと思うんだけど・・・
(だからcancellationTokenSourceを持ってる人だけがCancel()を実行できる)

呼び出し元から指図されたわけじゃないけど自発的にキャンセルしたいってことなら
throw new OperationCanceledException(token)
とでもすればいいんじゃないかな
0861デフォルトの名無しさん (ワッチョイ 95ad-tdBp)
垢版 |
2023/07/15(土) 15:05:06.38ID:x4tryG3A0
>>859
>>860
ご回答ありがとうございます。
awaitしている非同期メソッド内で例外を投げて、呼び出し元でcancellationTokenSource.Cancelしてキャンセルする、というのはできました。
ただ、awaitしない非同期メソッド内で例外を投げてもcatchできず、呼び出し元でcancellationTokenSource.Cancelできない状況です。
awaitして、非同期メソッド内で例外を投げて呼び出し元でキャンセルするしかないのでしょうか。
0862デフォルトの名無しさん (ワッチョイ ca2d-2eqx)
垢版 |
2023/07/15(土) 16:17:24.24ID:m7eEyKEv0
>>861
awaitしない非同期メソッドのタスクにContinueWith()で後続タスクを作って、その中でキャンセルかな。
後続タスクの実行条件はConinueWith()の引数にTaskContinuationOptionsを指定すれば変更出来る。
(エラーが起きた時のみ実行するとか)
0865デフォルトの名無しさん (ワッチョイ ca2d-2eqx)
垢版 |
2023/07/17(月) 12:47:25.02ID:oq1oEUQ30
>>863
FormBorderStyleプロパティがNone、ToolWindow系、その他で幅が変わるね。
ToolWindowだとタイトルバーに表示されるボタンの有無でもちょっと変わって、
ControlBox = falseの時が一番小さく出来る。
何故かNoneの時が一番大きくなる。

>>864
MinimumSizeがSize(0,0)でもなる
0866デフォルトの名無しさん (ワッチョイ 3210-2eqx)
垢版 |
2023/07/17(月) 21:11:29.34ID:hjrHtCYP0
自作クラスのインスタンス化したときに、
そのインスタンスのプロパティを設定するやりかた? を教えてください。
うまい言い方ができないので、例を示します。
自作クラスで
class Square
{
double width
double height
}
があったとして、
 Square square = new Square(){width = 3, height =2}
としたならば、
 console.Writeline (square.ToString())
とすると
 6
 と表示されるようなイメージです。
何がしたいのかというと、 IPropertyChanged を使って、中の 
プロパティが変化したときに、square が変わったということを認知したいのです。
0867デフォルトの名無しさん (ワッチョイ 3279-EJzg)
垢版 |
2023/07/18(火) 02:03:58.47ID:BpIlHiPB0
Writelineで6を表示したければToStringをoverrideしてやればいいだろうまでは思いましたが
貼られたコードと「何がしたいのかというと」が全く繋がってなくて、恐らくこれは誰も質問を理解できてない状況ではないでしょうか
私の感想としてはIPropertyChangedとやらを使いたければ使えばいいだけの話ではないでしょうか
0868デフォルトの名無しさん (ワッチョイ ca2d-2eqx)
垢版 |
2023/07/18(火) 02:28:36.72ID:GDp0BnYT0
例には書いてないけどIPropertyChangedイベントを購読して、イベントが来たらConsole.WriteLine()するんでしょう
で、IPropertyChangedの実装方法が知りたいと


public class Square : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
private void SetProperty< T >( ref T field, T value, [CallerMemberName]string propertyName = null )
{
if ( field.Equals( value ) )
{
return;
}
field = value;
PropertyChanged?.Invoke( this, new PropertyChangedEventArgs( propertyName ) );
}

private double _width;
public double Width
{
set => SetProperty( ref _width, value );
get => _width;
}

private double _height;
public double Height
{
set => SetProperty( ref _height, value );
get => _height;
}
}
0869デフォルトの名無しさん (ワッチョイ 87e5-XQTJ)
垢版 |
2023/07/18(火) 08:44:49.63ID:3b5O2M5n0
>>863 >>865
なんか頭の中で136ってもっとおっきいイメージになってた、すまないw
アイコンやコントロールボタンが表示できる最低サイズだったね
面白いことに、FormBorderStyle=Noneの時に
コンストラクタでどんだけ小さいWidth指定しても136になるけど
その後でShown等のフォームが生成された後の時点でWidth指定すると2までは縮まるんだな
SizableとかだとShownでやっても136になるけど
0870デフォルトの名無しさん (スッップ Sd94-XM1G)
垢版 |
2023/07/18(火) 10:03:44.12ID:W6YFjoCEd
>>865
>>869
はーやっぱり知識ある人は知ってるんですねー
こういう理屈じゃないところでいちいち悩まないといけないのが大変ですわ

まったく別の話なんですけど、
今これ>>832作ってて面白いこと気づきました

MouseClickイベントって右クリック・左クリック別に処理を分けられないじゃないですか
e.Button == MouseButton.Left とかが使えるMouseDown使えって言われるんですけど
bool isRightClickみたいなフィールドつくって、MouseDownのイベントハンドラで右・左判別して結果をisRightClickに設定
んで、MouseDownイベントの直後にMouseClickイベントも発生するからこいつのハンドラでisRightClickを取得して右・左別に処理わけることができた!

ってこれもみんな普通にやってんのかな・・・自分としては大発見なのだが。
今左右クリックやD&Dで細かい動きを作ってるんでこれは貴重な発見だった
0871デフォルトの名無しさん (スププ Sd94-uP9V)
垢版 |
2023/07/18(火) 10:04:51.17ID:5Ch5Zuv0d
>>867
>>868
ありがとうございます
質問のしかたが悪くうまく伝わっていないのですが回答は知りたかったことの一部でもありその部分については理解しました。

public class Hoge :IpropertyChanged
{
public Square square


}
とした時に
squareが値をもっていないことから、methodでsquare.widthの値を変えたとしてもsquareか変化したことを認識できないとの理解です
SquareにIPropertyChangedを噛ませてhogeのpropertyが変わったとする方法もあるのかも知れませんがsquare自身に値を持たせる方法があったら教えて下さい
0873デフォルトの名無しさん (スッップ Sd94-XM1G)
垢版 |
2023/07/18(火) 11:52:13.49ID:W6YFjoCEd
>>872
今いろいろ確認して、間違えてたことが分かりました
ごめんなさい

複数のラベルをForm上に動的配置したうえで、このラベル全てにクリック系のイベントを追加したんです。
この際、イベントハンドラも自分でコードを書いたのですが、Label_MouseClickイベントハンドラの引数である e の型を、間違えてMouseEventArgsではなくEventArgsとしていたため、e.Buttonが使えなかったというオチでした。
e.Buttonが使えない点を除いて問題なく動いていたので気づきませんでした

ふぅ・・・何やってんだか・・・
0876デフォルトの名無しさん (ワッチョイ 73ae-/jfo)
垢版 |
2023/07/18(火) 14:42:32.76ID:INtka+wY0
VBAはVB.netに仕様変更する気が無いんだろうな・・・
0878デフォルトの名無しさん (ワッチョイ 4dc6-l/Dq)
垢版 |
2023/07/18(火) 16:00:19.51ID:zVxGTRP30
>>871
細かいけどINotifyPropertyChangedじゃない?
SquareにINotifyPropertyChangedを実装して、
Hogeの方でこういう風に
Square square {
get { return _square; }
set {
if (_square is not null) _square.PropertyChanged -= OnSquareChanged;
this._square = value;
if (value is not null) _square.PropertyChanged += OnSquareChanged;
}
}
void OnSquareChanged(object sender, PropertyChangedArgs e) {
this.OnPropertyChanged(nameof(this.square));
}
0879デフォルトの名無しさん (ラクッペペ MM34-iMTa)
垢版 |
2023/07/18(火) 16:06:27.35ID:vLiOabGzM
VBA - VisualBasic
https://learn.microsoft.com/ja-jp/office/vba/library-reference/concepts/getting-started-with-vba-in-office

Office add-ins - C#
https://learn.microsoft.com/ja-jp/office/dev/add-ins/overview/office-add-ins

Vsto - C#
https://learn.microsoft.com/ja-jp/visualstudio/vsto/create-vsto-add-ins-for-office-by-using-visual-studio

Office Scripts - TypeScript(JavaScript)
https://learn.microsoft.com/ja-jp/office/dev/scripts/overview/excel
0883デフォルトの名無しさん (オイコラミネオ MM71-9/0y)
垢版 |
2023/07/18(火) 22:23:27.30ID:5UWIDgazM
お前らも含めてだが…基本的なことを勘違いしてるんだろう
IpropertyChangedが必要なのかも怪しいがそれは置いておく

通常似た様なものがあった場合
面積に相当するAreaプロパティが設定されている
binding対象はHoge.Square.Areaに普通はする

さて、
WidthやHeightが変更になった場合にAreaはその都度変化を通知して欲しいのかどうかも気になる
WidthとHeightを同時に変更したい場合メソッドを使って適切に変更しないとゴミがでるぞ
0884デフォルトの名無しさん (オイコラミネオ MM71-9/0y)
垢版 |
2023/07/18(火) 22:33:21.86ID:5UWIDgazM
Squareの値は各種プロパティを持ったオブジェクト自体でありそれを面積とみなすのはおかしいと言うこと
ToString()をoverrideして面積を出すも間違っている

ToString()で出すのは
四角形 幅:3 高さ:4 面積:12
と言う各種情報
0885デフォルトの名無しさん (ワッチョイ 3210-NBo5)
垢版 |
2023/07/18(火) 23:28:46.06ID:HED9e7490
>>882
エスパー ありがとうございます。
square を 構造体にかえて 今までやりたかったことが解決しました。
>>883 ,>>884  ありがとうございます。
勉強になりました。
0887デフォルトの名無しさん (ワッチョイ 4dc6-l/Dq)
垢版 |
2023/07/19(水) 13:17:55.70ID:rfnRytk30
型が違うから

class Hoge { public string Piyo; }
class Fuga { public string Piyo; }
と同じメンバを持った2つのクラスがあっても
void Test(Hoge hoge) { ... }
にFugaを渡せないのと同じ
0888デフォルトの名無しさん (ブーイモ MM69-IGBM)
垢版 |
2023/07/19(水) 13:33:43.83ID:Iak4bgJxM
hoge(pred.Invoke)で渡せる
0890デフォルトの名無しさん (ワッチョイ ce6e-rP6O)
垢版 |
2023/07/20(木) 19:04:03.42ID:oZtgKOtx0
非同期処理について質問です。業務でWPFいじってるんですけど

1 起動画面→2 起動画面表示してる間に重い処理とか色々→3 ログイン画面→4 メイン画面

という流れになっています。それで重い処理の部分がtask runになっていてあぁ非同期処理ってやつかと
なんですがやたら起動画面が長いんです。デバッグしてみるとその重い処理が実行されてるとき他の処理は実行されてなくて
結局普通に1〜4が一直線に進んでるだけじゃない?と

自分の理解だと非同期ってその処理をどっか他の場所でやっといてもらってそれ以外は全部通常通りに流れると
この場合だとたとえば3や4のウインドウが出る処理が進んでいってもその裏で重い処理をやってるみたいな
2の部分が短くなるから起動画面も当然短くなるはずだろ……と思ってたんですが

非同期ってそういうもんじゃないんでしょうか
0898デフォルトの名無しさん (ブーイモ MMba-mCwd)
垢版 |
2023/07/21(金) 08:56:24.44ID:eg4croCbM
画面が固まってるかどうかってそんな大事なことか?
0901デフォルトの名無しさん (ブーイモ MM5e-IGBM)
垢版 |
2023/07/21(金) 11:29:51.89ID:69ts+SDiM
業務アプリでログイン画面表示前に終わらせないといけないやたらと時間のかかる重い処理ってどういうの?
ゲームやJavaアプリではあるけどC#で作る業務アプリでは個人的には経験したことないんだけど
ネットワーク経由で自動アップデートを走らせてるとか?
0904デフォルトの名無しさん (ブーイモ MMba-mCwd)
垢版 |
2023/07/21(金) 20:26:40.73ID:eg4croCbM
>>901
そういうのならスプラッシュで長々と起動表示するより
さっさと画面見せてプログレスバー出した方が良くね
端的にいうとエクリプスみたいなのは嫌い
0909デフォルトの名無しさん (ブーイモ MM8f-2YhC)
垢版 |
2023/07/22(土) 18:21:41.76ID:k3sQ1muHM
そらWEBアプリが流行るわな
とりあえず画面は出てくるしな
0917デフォルトの名無しさん (スッップ Sdff-cTWz)
垢版 |
2023/07/23(日) 21:00:26.02ID:DI++90CVd
>>915
何のとか関係ないんだよね>>899に書かれてる通り、
応答なしってなった場合にユーザーがアプリが固まったって思って不安になったり、
人によっては強制終了させたりすることを回避するのが目的でみな実装してると思うよ
0921デフォルトの名無しさん (スッップ Sdff-cTWz)
垢版 |
2023/07/24(月) 08:15:20.93ID:WyKfXWoDd
>>920
もともとは>>890から来てる話のつもりだけど
重たい処理を裏で実行させて画面は動いてます(応答なしになってません)ってのを
ユーザーに伝えるためにプログレスバーだしてると思ってるんだが違うのか?
非同期でもなくプログレスバー出して進捗報告してるだけなら言ってる通りかもね
0923デフォルトの名無しさん (スッップ Sdff-cTWz)
垢版 |
2023/07/24(月) 11:10:30.20ID:WyKfXWoDd
大多数のユーザーが使う画面作ってないのかわからんけど
10秒程度で画面クリックしたら応答なしになるだけで文句いってくるところもあるからね
10分越えで非同期とかはぬるすぎ
まあこの辺までくるとスレチな感じだから言い逃げになるけど自分はここまでにするわ
0933デフォルトの名無しさん (ワッチョイ cf68-6+wX)
垢版 |
2023/07/30(日) 13:16:32.79ID:qP2cEP2w0
>>929
逆に聞きたいけど長時間応答するしかねえって事もあるんじゃないの?
意図的にそうしてるとか
0934デフォルトの名無しさん (ワッチョイ cf68-6+wX)
垢版 |
2023/07/30(日) 13:16:34.66ID:qP2cEP2w0
>>929
逆に聞きたいけど長時間応答するしかねえって事もあるんじゃないの?
意図的にそうしてるとか
0936デフォルトの名無しさん (ワッチョイ cf68-6+wX)
垢版 |
2023/07/30(日) 13:54:56.32ID:qP2cEP2w0
実行中の処理に影響与えないように応答させないのって普通じゃね?
0937デフォルトの名無しさん (ワッチョイ 3ebb-bWks)
垢版 |
2023/07/30(日) 14:13:33.41ID:2ZbxDykr0
非同期にするオーバヘッドがないぶん処理が早く終わるしな
0946デフォルトの名無しさん (スフッ Sd8a-kvF/)
垢版 |
2023/07/31(月) 13:17:06.46ID:lng3H2OQd
>>942
応答出来ない=次に応答するのが計算が終わったタイミング
と言うことになる
つまり開始後中断したくてUI(例えば停止ボタン)押して
実際に止まるのが計算完了後で
計算結果が表示される直前に終了してくれるオマケ付き
0949デフォルトの名無しさん (ワッチョイ becf-WE/L)
垢版 |
2023/08/01(火) 01:57:41.21ID:l/YBSfNu0
https://atmarkit.itmedia.co.jp/ait/articles/1702/22/news010.html
>  Windows上で実行されるアプリケーションのウィンドウは、応答がない状態になると、
> ウィンドウタイトルに「(応答なし)」と表示してユーザーに知らせます。

> “応答がない状態”とは、アプリケーションのプロセスが持つウィンドウオブジェクトが
> 「ウィンドウメッセージ(Window Message)」に5秒(既定)以上、応答しなくなる状態を指します。

こんなん出たんですけどとか言われたら恥ずかしいだろ
0953デフォルトの名無しさん (ワッチョイ 2301-iCAU)
垢版 |
2023/08/01(火) 23:34:51.68ID:MwS5ZIT40
魔法の呪文DoEventsでおk
0955デフォルトの名無しさん (ワッチョイ 17ae-CF7t)
垢版 |
2023/08/03(木) 10:08:52.15ID:icL6sh+90
シリアルポートからの送信を出来るだけ高速に受信したいのですが、下記以外に何かありますでしょうか?
また高速化する方法がありましたら、指摘してください。
よろしくお願いします。

LinkedList<byte> LLBuffer = new LinkedList<byte>();
SerialPort sp = new SerialPort();
byte[] buf = Encoding.ASCII.GetBytes(sp.ReadExisting());

foreach(byte b in data)
LLBuffer.AddLast(b);
0956デフォルトの名無しさん (ワッチョイ 0ba7-4FLK)
垢版 |
2023/08/03(木) 11:06:07.21ID:L6gOIzTH0
>>955
単なる生バイト配列が欲しいんだったらEncoding.ASCII.GetBytes(sp.ReadExisting())は二重に無駄な事してるから
var buf = new byte[1024];
int count = sp.Read(buf, 0, buf.Length);
for (int i = 0; i < count; ++i) LLBuffer.AddLast(buf[i]);
0957デフォルトの名無しさん (ワッチョイ 17ae-CF7t)
垢版 |
2023/08/03(木) 11:41:09.07ID:icL6sh+90
>>956
ありがとうございます。
現在は1024バイト固定で受信しているのですが、
sp.ReadBufferSize()で見ているとどんどんシリアルポートのバッファが溜まって頭打ちになっているので、
アプリ側で出来るだけ取得しておきたいと思い、sp.ReadExisting()の使用を検討しているところです。
0958デフォルトの名無しさん (ワッチョイ 0ba7-4FLK)
垢版 |
2023/08/03(木) 12:22:33.04ID:L6gOIzTH0
>>957
IOの方が早いなんてことは有り得ないからwhileで回すとかはしてる?
内部バッファが空の時にsp.Read(buf, 0, buf.Length)するとブロックされちゃうのかな
そうじゃないならwhile ((count = sp.Read(buf, 0, buf.Length)) != 0)、
ブロックされるとしてそれが嫌ならsp.BytesToReadで溜まってるバイト数チェックやDataReceivedイベントで拾うとか
0960デフォルトの名無しさん (ワッチョイ 9b2f-1PqA)
垢版 |
2023/08/05(土) 11:08:11.80ID:6FXtwa520
シリアルってだけで実際のスピードもハードスペックもPCの使用状況も書いてないけど
個人的意見なら、いまどきのハードでC#で普通に作って間に合わんなんて、
他に何か原因がなければ想像できんレベルだが
0967デフォルトの名無しさん (ワッチョイ 4954-4gg4)
垢版 |
2023/08/06(日) 21:10:40.86ID:t8XxdJlt0
その程度で驚くヤツはくるみぽんちおの刑だな。
うちの製品なんて、.net framework 1.1 使ってる製品もある。
しかも重要ユーザーからの要望があれば機能追加までしてる。
0972デフォルトの名無しさん (アウアウウー Sa9d-mBaV)
垢版 |
2023/08/07(月) 10:03:51.30ID:wl/Lx6N5a
うめようず
0973962 (ワッチョイ 9949-c/5M)
垢版 |
2023/08/07(月) 10:41:55.42ID:NRD23MMX0
NLog動くようになった!
コードで設定すると動く、でもConfigは反映されないからと色々やってたら
「出力ディレクトリをコピー」
「ビルドアクション」
を設定してないことに気づいた

C#(てかVS)久しぶりすぎて各ファイルにあるプロパティの存在を忘れてたw
0977デフォルトの名無しさん (ワッチョイ c379-IXit)
垢版 |
2023/08/07(月) 23:19:46.08ID:4jmmvhVW0
enumに属性がなんか気持ち悪いし…使用時にキャストしてるのもなんだかな
#defineが無い弊害がこういうとこで出るのか
C/C++のビット演算はイディオムで綺麗に書けるのにな
0980デフォルトの名無しさん (ワッチョイ 7be5-uQHI)
垢版 |
2023/08/08(火) 08:54:05.88ID:aeM2XQJJ0
個人的には、Flagsよりも定義でビットシフトしてるんがなんか嫌だなw

>>975でも十分C#っぽい気はするけどねぇ
C/C++でif(high & 0x80)で済むのはBOOLの実体が数値だからで
C#のboolは別物だからしょうがないし
0985デフォルトの名無しさん (ワッチョイ 2b6e-D1BR)
垢版 |
2023/08/11(金) 16:58:32.91ID:JGKsK+J90
ラムダ式ってこうちょろちょろっとした処理を書くのに使うものであってでかい処理は関数定義するのが基本って認識だったんですけど間違ってますかね
もう今のプロジェクトラムダ式渡すところで数十行の関数がガンガン出てきてて
デバッグしにくいわかりにくいでげんなりしています。まぁこれに限らずそもそも表に出る機能単位でしか考えてないのか関数抽出するって考え方があんま無いみたいな現場なんですが……
0986デフォルトの名無しさん (オイコラミネオ MMc9-uQHI)
垢版 |
2023/08/11(金) 18:07:32.18ID:CXONK6kXM
>>985
どうとでもいえるけど基本的にはその使い方は特に間違ってはいないので認識が間違っていると思う
処理の委譲目的ならそれが普通かも

関数抽出しやすいなら関数を抽出する
ローカル変数などに依存度が高いならそのまんま書いたほうがいい

設計がしっかりしてクラスを作ってそれを渡しあってるとかなら別だけどそんなことしてられないと思う
0989デフォルトの名無しさん (ワッチョイ 395f-17EC)
垢版 |
2023/08/19(土) 20:49:54.56ID:UW3EkLqg0
closedxmlでセルに書き込み反映されない…なんで😭
0990デフォルトの名無しさん (アウアウエー Sa23-NwC7)
垢版 |
2023/08/20(日) 02:06:38.74ID:RsoPGDy3a
jsonのテキストをデコードできる関数ないかな?
htmlでいうところのHttpUtility.HtmlDecode()のjson文字列版
「https:\u002F\u002Fwww」を「https://www」に変換したい
そんなの自作しろと言われたらそれまでだけど、あるならあるの使いたいので
0995デフォルトの名無しさん (アウアウエー Sa23-NwC7)
垢版 |
2023/08/20(日) 19:12:02.03ID:RsoPGDy3a
jsonがあるわけじゃなかったから
適当なclass用意して文字列をjsonの書式にフォーマットしてパースして取り出すって流れは気分的にやりたくなかった
0997デフォルトの名無しさん (アウアウエー Sa23-NwC7)
垢版 |
2023/08/20(日) 21:07:24.34ID:RsoPGDy3a
試したら動いた。stringクラス指定だけでできたのか。それは知らなかった
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 148日 7時間 21分 47秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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