C#, C♯, C#相談室 Part97at TECH
C#, C♯, C#相談室 Part97 - 暇つぶし2ch2:デフォルトの名無しさん
22/12/22 09:26:53.83 D6FSghNTa.net
この時代になっても相変わらず機械語は逆コンパイルできないと思いこんでるやついるのな

3:デフォルトの名無しさん
22/12/22 09:27:54.54 D6FSghNTa.net
こういう機械語にすればセキュリティ上がると思ってるやつが平気でパスワード埋め込むんだよなあ

4:デフォルトの名無しさん
22/12/22 10:33:57.58 F1nh9mbrd.net
>>2
C#やJavaといった中間言語に比べたら、圧倒的に可読性が低いでしょ?
できる、できないの、ゼロか100かの議論ではないんだよ
可読性が低いほど、解析されにくくなる。

5:デフォルトの名無しさん
22/12/22 10:38:00.37 2NJjkJHb0.net
中途半端な知識を持つものがC#を避ける原因の一つだからな
C++と同レベルの難読性を持つのはC#が生き残るには大事な話だ

6:デフォルトの名無しさん
22/12/22 11:35:07.63 GxD81iq9a.net
解析されて困るのはパスワード埋め込んでる時だけだろ
機械語にしてもセキュリティ上がらないからそういうことするのやめとけ

7:デフォルトの名無しさん
22/12/22 11:40:40.23 aOWlk2Pu0.net
わざわざ逆アセンブルしなくてもexeから文字列抽出すれば平文パスワードを探せるしねぇ

8:デフォルトの名無しさん
22/12/22 12:30:52.54 U1HHZUYmM.net
難読化した処理追えるならマシン語の逆アセ読むくらいは出来るだろ
余分な処理入ってない分、後者のが楽まである

9:
22/12/22 12:59:42.23 h+8LnyZL0.net
昔、機械語で書かれたとあるアプリをHEXエディタで開いたら、ASCIIコードで平文のままパスワードが埋め込まれてた事が有ったな

10:デフォルトの名無しさん
22/12/22 14:41:12.05 F1nh9mbrd.net
>>6-7
パスワードを暗号化とかして格納するとして、
その場合に暗号化のロジックコードをかんたんに読まれなければ
安全性はかなり高くなる。

11:デフォルトの名無しさん
22/12/22 14:45:55.03 hTl9WjWG0.net
パスワードの照合ってハッシュ値を比較するもんだと思ってた
なんかすごい実装してるやついそうだな

12:デフォルトの名無しさん
22/12/22 14:52:55.31 HxQ/rgDMa.net
>>10
ならねーよ

13:デフォルトの名無しさん
22/12/22 15:06:15.12 HxQ/rgDMa.net
逆コンパイルするじゃん?
コンパイルしてデバッガ使うじゃん?
パスワード送信するところで止めるじゃん?
復号したパスワードを表示するかファイルに書き込むじゃん?
生パスワード手に入るじゃん?

14:デフォルトの名無しさん
22/12/22 15:27:07.06 F1nh9mbrd.net
>>13
その手順の詳細はやったことないのでデタラメかわからんが、
そもそもパスワード保存したストレージに他人がアクセスできないという
前提があるんだから問題はないだろう。共用するデバイスであれば、
パスワードを保存しない運用をすればいいだけだから。
あと証券とかセキュリティが重要なアプリはログインパスワードとは別に
取引パスワードとかもあるのが普通。
あとは出金とかのときはSMS認証とかもある会社が増えている。
要するにパスワードなどの認証はひとつである必要もないし、セキュリティ要件などに
あわせて併用すればいいだけ。

15:デフォルトの名無しさん
22/12/22 15:30:16.26 F1nh9mbrd.net
>>11
それそれ、たぶんいいたいかったのはそれ。
暗号化したら膨大な時間かけないと複合化できない。
だからハッシュ。
DBの中にもパスワードのハッシュ値を格納するのがふつうなんでしょ、たしか。
>>13
暗号化したものは容易に複合化できないわけだが?
量子コンピューターとかないと無理でしょ
思いつきでいいかげんなこと書いてるでしょ?

16:デフォルトの名無しさん
22/12/22 15:49:37.33 4fbwDn1A0.net
>>15
>>10を読んでやれよw
そもそも実行ファイルにパスワード埋め込むなって話をしてるんだぞw

17:デフォルトの名無しさん
22/12/22 16:02:26.76 Qca7zyGd0.net
>native codeじゃないとかんたんに
>サーバーの認証のコードが漏れちゃうでしょ
>セキュリティ大事
発端はコレでしょ?
ハッシュでも暗号化文字列でもクライアントに共有シークレット埋め込んでる限り脆弱
少しスキルのある人間に悪用されるのは致し方ないと諦められるものじゃなければ仕組みを変える必要がある

18:デフォルトの名無しさん
22/12/22 16:03:27.41 Qca7zyGd0.net
ありゃ
全部同じ人だった

19:デフォルトの名無しさん (アウアウウー Sa9f-bKpv)
22/12/22 16:13:14.56 UcBjTq9Sa.net
>>18
ああ認証コードがわからないのか
ログインパスワードのことだぞ

20:デフォルトの名無しさん
22/12/22 16:39:53.08 2NJjkJHb0.net
パスワードっぽいのを仕込んでおいて遊んでみたい

21:デフォルトの名無しさん
22/12/22 16:50:44.38 RLY1K78+0.net
ログインパスワードをハードコードとか斬新だな
APIキーみたいな認証コードの話かと思った

22:デフォルトの名無しさん
22/12/22 16:58:48.83 iWtJ1OLb0.net
そんな次元なの?
パスワードの判明ならそれこそパスワードが合ってたかどうか、のif文に相当する命令を反転させたりnopにするという古典的な方法で別にパスワードがどうでも良くなるでしょ。そんなネイティブコンパイルされるか否か程度が問題なら。
アタッチして、パスワードが違うぞってダイアログ出てる状態からジャンプを逆に辿るだけなのでテクニックも何も無い。
何の意味も無くない?

23:デフォルトの名無しさん
22/12/22 18:43:36.71 +Rbmc+Rn0.net
>>21
斬新でもなんでもなくて、今ほどセキュリティにうるさくなかった昔には結構あったぞ
結局は要求される強度とかける手間との兼ね合い

24:デフォルトの名無しさん
22/12/22 18:48:29.53 HmVrE67C0.net
iniファイルにパスワードがそのまま記述もたまに

25:デフォルトの名無しさん
22/12/22 18:58:21.99 y9FZhiQ70.net
悪用って犯罪じゃないの?
警察どこいった?

26:デフォルトの名無しさん
22/12/24 11:07:26.72 o3kFQyD40.net
.NETってinternalに良いもん隠しすぎやろ

27:デフォルトの名無しさん
22/12/24 18:18:14.65 37MAMfIj0.net
便利機能を使うためにリフレクションで仕方なくアクセスするの面倒すぎる

28:デフォルトの名無しさん
22/12/26 17:01:22.79 OeooOgrR0.net
以下のurlにあるライブラリを使ってrar5形式の書庫内にあるファイル一覧を取得しようとしたのですが取れませんでした。
ライブラリのソースを見ましたが、単に7z.dllの内部にある関数を呼んでいるだけのようでした。
7z.dll同梱の7z.exeでファイル一覧の取得、解凍できるのは確認しています。
何が原因かわかる方いらっしゃいますか?
7z.dllのバージョンは21.7.0.0
VisualStudio2019でビルドしました。
URLリンク(www.codeproject.com)

29:デフォルトの名無しさん
22/12/26 17:55:31.33 5LxkM09pa.net
>>28
> 何が原因かわかる方いらっしゃいますか?
プログラマ

30:デフォルトの名無しさん
22/12/26 18:31:10.64 bU1T9eUn0.net
どんなコード書いているのかどんなエラーなのか言わないと分かりようが無いw

31:デフォルトの名無しさん
22/12/26 18:37:00.63 OeooOgrR0.net
>>30
ライブラリのzipの中のサンプルコードです。

32:デフォルトの名無しさん
22/12/26 18:53:53.57 oItrOIBr0.net
それ2008年のでしょrar5に対応してないんじゃないの?

33:デフォルトの名無しさん
22/12/31 17:00:08.94 Y1+2Lu7M0.net
ByteArrayContentとReadOnlyMemoryContentの違いってなんかあるの?

34:デフォルトの名無しさん
22/12/31 19:10:27.88 1otgbzig0.net
あるよ

35:デフォルトの名無しさん
23/01/02 14:11:18.53 AlCNR49a0.net
C#ってC言語で作ったdllを呼べるけど、
そのdllが暗号化されていたのものでもメモリ上で複合化しながら呼べますか?

36:デフォルトの名無しさん
23/01/02 14:49:57.94 EJhafa7da.net
俺はできる
お前ができるかは知らん

37:デフォルトの名無しさん (ワッチョイ 97a7-ChaJ)
23/01/02 15:46:23.56 ChZi0Din0.net
>>35
本来利用してるプロセスが復号化してからロードしているのならその復号化ロジックを自前のC#アプリでも実装しないと呼べない

38:デフォルトの名無しさん
23/01/02 20:19:04.23 AlCNR49a0.net
>>37
ありがとうございます

39:デフォルトの名無しさん
23/01/04 00:16:32.10 N/2omZ3g0.net
C#ってネイティブなdllも動的にロードできるんだっけ?

40:デフォルトの名無しさん
23/01/05 11:22:59.00 ltDktvBL0.net
DLLを動的ロードして関数ポインタを取り出す部分はどっちかというとOSの仕事だしそこはDllImportとかに任せて
関数ポインタさえ手に入れば
.NET 2.0からデリゲートに変換できるメソッドがあるし
C# 9.0でそのまま扱うこともできるようになったよ

41:デフォルトの名無しさん
23/01/05 11:51:26.91 pzJhf9FT0.net
>>39
そりゃ当然出来る
型や呼び出し規約を合わせるのは自己責任だが

42:デフォルトの名無しさん
23/01/05 13:00:22.76 92Gx4s1W0.net
アンマネージド使うのは自己責任で

43:デフォルトの名無しさん
23/01/05 14:07:29.25 HFE02prZr.net
c++/cli 作って橋渡ししてたわ

44:デフォルトの名無しさん
23/01/06 00:26:12.47 rNk5rLcjM.net
とあるクラスにあるすべてのプロパティを読み取り専用にしたいんだけど、なにか良い方法ありますか?
やっぱり継承してプロパティの数だけ読み取り専用プロパティで定義するしかない?

45:デフォルトの名無しさん
23/01/06 07:59:18.36 vZ5ptmnXd.net
継承させたところで元クラスにアップキャストされたら終わり
constにさせる方法はたぶんないと思う

46:デフォルトの名無しさん
23/01/06 12:38:09.71 vCsnZijhM.net
recordにしたら

47:デフォルトの名無しさん
23/01/06 12:49:52.37 buYHqiH80.net
C#って地味にこの辺弱いよな
C++のconst ポインタと同等の機能があればReadOnlyCollectionとかReadOnlySpanなんてそもそもいらないのに

48:デフォルトの名無しさん
23/01/06 14:18:25.75 QdJf8bLxa.net
C++なら継承して読み取り専用にできると思ってるのか

49:デフォルトの名無しさん
23/01/06 14:27:10.69 zhrc9IIn0.net
いや継承は必要なくて、C++なら単にそのクラスのインスタンスを格納する変数や引数の型をconstにするだけで読み取り専用になるよ
TypeScriptもReadOnly<X>とするだけで簡単に読み取り専用のXの型を作れる

50:デフォルトの名無しさん
23/01/06 15:16:54.53 QdJf8bLxa.net
方法が違うだけでC#でも簡単にできるだろw

51:デフォルトの名無しさん
23/01/06 17:46:49.43 MJJvxMZsa.net
>>50
どうやるの?

52:デフォルトの名無しさん
23/01/06 19:39:06.39 7HwChuQ+0.net
>>49
それ、そのクラスのプロパティも読み取り専用になるのか?

53:デフォルトの名無しさん
23/01/06 20:12:53.98 KHJficEWa.net
>>52
C++のconstの場合は、フィールドが全て読み取り専用になり、読み取り専用(const)としてマークされたメソッドしか呼べなくなる
TypeScriptのReadonly<>の場合は、全プロパティが読み取り専用になった「型」が生成される
TypeScriptというかJSではメソッドは単に関数を返すプロパティなので、メソッドの内容には特に関知しない

54:デフォルトの名無しさん
23/01/07 10:18:16.28 FC273Y3JM.net
>>44
誰かが書いてるけどrecordじゃだめなん?
public record Person(string FirstName, string LastName);

55:デフォルトの名無しさん (ドコグロ MMa3-4fYz)
23/01/07 11:12:47.51 ErVvBSvoM.net
>>53
何それ凄い便利じゃん

>>54
できればプロパティを1つ1つ書きたくないんだよね

56:デフォルトの名無しさん
23/01/07 11:42:41.36 iltXkPxC0.net
継承後のクラス定義って、継承前より厳しくできたっけ?

57:デフォルトの名無しさん
23/01/07 13:01:01.65 FC273Y3JM.net
>>55
いやいやw
これでもう終わりでreadonlyだよ

58:デフォルトの名無しさん
23/01/07 13:01:54.79 FC273Y3JM.net
これ以上短い書き方なんてできるか?

59:デフォルトの名無しさん
23/01/07 13:51:35.25 unZBLw7Xd.net
質問者は既存のミュータブルなクラスのプロパティを読み取り専用にしようとしている
>>54だと同じプロパティを全部定義し直さなきゃいけないし、元のクラスからコピーする手間も必要だ
>>49の方法であればプロパティを定義し直す必要もコピーする必要もない

60:デフォルトの名無しさん (オイコラミネオ MM5d-Or7w)
23/01/07 14:55:27.90 FC273Y3JM.net
既存のプロパティに当たるものをconstにするのは全部定義しなおしてるの同じなんだけど…

どういうやり方で既存のプロパティを定義してるのかもわからないし意味不明だなと

61:デフォルトの名無しさん (オイコラミネオ MM5d-Or7w)
23/01/07 14:56:55.34 FC273Y3JM.net
うまく行くならプロパティのsetをinitアクセサに変えるだけなんだけど

62:デフォルトの名無しさん
23/01/07 15:35:50.01 FC273Y3JM.net
特定のコンテキストで書き換え不可
状況次第で書き換えの可否を変える
とかならめんどいけどそういう話じゃないんだろ

63:デフォルトの名無しさん
23/01/07 16:17:29.42 rg/VZrjHa.net
>>60
いやまともなC++のコードならgetterはconstで定義されてるはずだから、変数の型をconstにするだけでreadonlyになるよ

64:デフォルトの名無しさん
23/01/07 17:38:18.83 mDCtTa800.net
君たち的に.NET MAUIでandroid,iphone,WindowsでC#のネタ帳的なの作ったら協力してくれる?
小ネタ集みたいなのを各々がSQLで保存してそれをカテゴリ分けで見れるようにするやつ
例えばRestAPI関係だったりの基本的な書き方を表示したりできる
ネットで調べれば一発だが1つにまとまってるのは利点かと、、、

65:デフォルトの名無しさん
23/01/07 17:48:11.52 odL5Q3k30.net
wiki立ち上げればええやん

66:デフォルトの名無しさん
23/01/07 18:07:01.95 FC273Y3JM.net
多分世界中のc#プログラマの99.9%は.NET MAUIに興味ないと思う

67:デフォルトの名無しさん
23/01/07 18:08:54.54 St5PAkDm0.net
winui3でよくね?

68:デフォルトの名無しさん
23/01/07 18:14:01.42 FC273Y3JM.net
と言うよりいい加減いくつフレームワーク立ち上げれば済むんだよ
モバイル関連は全部html+jsにしてデバイスを仮想サーバにしてそいつにREST api投げてjsonでセンサ値とか取るようにすればいい
そしたらもう再生産しなくていい

69:デフォルトの名無しさん
23/01/07 18:17:46.74 unZBLw7Xd.net
>>64
コンテンツが利用者頼みのサービスは最初自分で頑張るか金出すかしてコンテンツを揃えない限り必ず失敗する
というわけでまずは自分で頑張れ

70:デフォルトの名無しさん
23/01/07 18:24:07.38 mDCtTa800.net
>>69
なるほど

71:デフォルトの名無しさん
23/01/07 18:25:21.79 FC273Y3JM.net
一度覚えた技術を何十年も使いまわせるような仕組みにしろよ
都度都度新しいAPIセット出して馬鹿なのかMSは?

72:デフォルトの名無しさん
23/01/07 18:30:58.40 UPEdDe6/0.net
ワッチョイ 9301
こいつマウイ君だろ、自分のスレでやれ。NG

73:デフォルトの名無しさん
23/01/07 18:44:15.99 St5PAkDm0.net
ここにまでマウイ出張ってきたか
ちゃんとワッチョイを恐れろよ

74:デフォルトの名無しさん
23/01/07 20:02:44.89 Xl5j6yUn0.net
マウいじゃん

75:デフォルトの名無しさん
23/01/07 21:02:06.62 FC273Y3JM.net
そんなにマウいかな?

76:デフォルトの名無しさん
23/01/07 21:14:41.15 mnUUIrvLa.net
チョベリグ

77:デフォルトの名無しさん
23/01/07 22:07:32.34 8LnSupdD0.net
>>64
> 例えばRestAPI関係だったりの基本的な書き方を表示したりできる
今からこの手のサービスやってもCopilotに勝てないだろ

78:デフォルトの名無しさん
23/01/07 23:32:10.91 mDCtTa800.net
>>77
copilotって別にこれしたいって言えば全部記入してくれるわけじゃなくね?
俺としてはあぁRestAPIの使い方ど忘れした~
なんだったっけ???ってGoogleで調べる時間をアプリで素早く検索できるって感じのものを作りたいかな
2,3回やったことあるやつでもどうだったっけ?って忘れることままある
まぁGoogleとかでいいんだけど1つのアプリにまとまってるってのはなかなか便利なんじゃないかなと…

79:デフォルトの名無しさん
23/01/07 23:32:40.09 mDCtTa800.net
自分で追加もできるしな

80:デフォルトの名無しさん
23/01/08 16:11:14.19 qCDijd6S0.net
Aクラスを継承したBクラスがあります
BクラスのリストにAクラスをAddしたいんですが、どうすればいいのでしょうか?

81:デフォルトの名無しさん
23/01/08 16:20:03.96 PrLa9yfk0.net
>>80
それは無理
Bは絶対にAだけどAはBとは限らないでしょ?
つまりAクラスのリストにするしかない
まあUnsafe.As使えば無理矢理入れられるけど

82:デフォルトの名無しさん
23/01/08 16:24:40.95 GEbVHkXI0.net
>>80みたいな質問する奴って意味も分からず継承使ってたりしてそうで怖いわw

83:デフォルトの名無しさん
23/01/08 16:25:49.80 +2bxRzY60.net
A a=new B(); とかで、実体がB型かもしれないならBにキャストすればいい。
A a=new A(); でA型そのものだったらそもそもこの話は成立しない。
list.Add((B)a);

84:デフォルトの名無しさん
23/01/08 16:40:39.00 Z6otLx+Dd.net
>>78
massCodeとかgistとかでいいんじゃない

85:デフォルトの名無しさん
23/01/08 16:50:26.87 +xzWagUM0.net
>>80
継承じゃなくてBクラスにAクラスのプロパティのリストを入れる場合はたしかいけたぞ

86:デフォルトの名無しさん
23/01/10 13:29:49.07 yPlBxuJ3M.net
>>71
ほんとこれ

87:デフォルトの名無しさん
23/01/10 15:05:52.75 ZisiPnco0.net
スマホアプリ作ってると毎年アプデで便利な機能がdeprecatedされてくのがストレス
それに比べたらMSの方が優しい

88:デフォルトの名無しさん
23/01/10 17:23:44.95 qAIynO1bM.net
>>86
それじゃ入門書売れないだろ
バカ?

89:デフォルトの名無しさん
23/01/10 18:28:40.94 IC+XgAqf0.net
android何かも最近コード書いてないけど、非推奨や消えたりする機能が結構あるよね
古いコードをメンテナンスするときに良く引っかかる気がするわ

90:デフォルトの名無しさん
23/01/10 19:16:36.48 0yW4rCRf0.net
C言語の重力付き4目並べです、ここのコードを簡略化したいです。
int SetXpos(int player) // コマの置き場所を入力または探して盤を更新,コマの置き場所(0-6)を返す
{
int xpos = 0; // コマの置き場所
if ((choice == 2 && player == 2) || (choice == 3 && player == 1)) // コンピュータとの対戦の場合に,コンピュータの手を計算
{
xpos = ComputeXpos(player);
printf("%sの番です\n", player == 1 ? "●" : "〇");
printf("コンピュータは%dに置きます\n", xpos);
}
else // 人間の手を選択
{
while (1)
{
printf("%sの番です\n", player == 1 ? "●" : "〇");
printf("どこに置きますか? 0-6の数字を半角で入力してください: ");
scanf_s("%d", &xpos);
if ((0 <= xpos && xpos < XMAX) && (num[xpos] < YMAX)) // 置ける場所かどうか判定
break;
printf("%dには置けません!\n", xpos);
}
}
board[xpos][num[xpos]++] = player;// コマをxpos列に置き,xpos列のコマ数を1増やす
return xpos;
}

91:デフォルトの名無しさん
23/01/10 19:28:44.72 uTLnAVho0.net
頑張ってください

92:デフォルトの名無しさん
23/01/10 19:32:45.96 IC+XgAqf0.net
そもそもC#のスレだからすれ違いだがw
printf("%sの番です\n", player == 1 ? "●" : "〇");
をifの前にするとか(それぞれにあるから冗長)
プレイヤーの処理もPlayerXpos()とかに出すとかすれば良いのでは?

93:デフォルトの名無しさん
23/01/13 06:38:18.48 CqT5d+dn0.net
ありがとうございます

94:デフォルトの名無しさん
23/01/15 19:05:41.63 CnKOeOE30.net
Shift-JISの文字列をutr-8に簡単に変換する方法ってありますか?
やはり一度Stream(バイナリ)に変換する必要があるのでしょうか

95:デフォルトの名無しさん (ワッチョイ 867b-UaDV)
23/01/15 19:23:52.26 gGAdUt3l0.net
>>94
streamじゃなくてbyte[]じゃないの
Encoding.GetString(Encoding.GetBytes(string))ってことだよね
何のためにそんなことするか知らんけど

96:デフォルトの名無しさん (ワッチョイ ca01-FIs7)
23/01/15 19:25:34.21 CnKOeOE30.net
>>95
つまりstringの状態でencodingは可能なのですか?

97:デフォルトの名無しさん (ワッチョイ ca01-FIs7)
23/01/15 19:28:04.22 CnKOeOE30.net
C#でRestAPIを投げてブラウザ側から貰ってくる文字列はShift-JISらしい
それでC#はutr-8で表記されるため変換(Encoding)が必要になるのです

98:デフォルトの名無しさん (ワッチョイ caad-vAbj)
23/01/15 19:51:16.92 wUGuc0E00.net
stringはunicodeだぞ?

99:デフォルトの名無しさん
23/01/15 22:26:45.28 pBiKKGenM.net
unicodeは符号化方式など規格とそのコード群の名前

100:デフォルトの名無しさん
23/01/15 22:56:10.93 AxXMsEIz0.net
そのREST APIをどうやって呼び出してるのか知らんけど
真っ当なサーバならContent-Typeにcharset設定してて
一般的なライブラリなら文字列として読み取るときにcharset参照して適切に文字列型に変換してくれる
から特にプログラマが考えることはない
これらの前提が崩れてるなら文字列として読み取るんじゃなくてバイト配列として読み取って
System.Text.Encodingクラスを使ってバイト配列をstringに変換する必要がある
この場合変換先の符号化形式を考える必要はなくてShift_JISをstringに変換することだけ考えればいい
もしライブラリの都合でstringとして受け取ることしかできなくて
かつその時点で文字化けが出るようなら
それはもうどうしようもないので使うライブラリを変える必要がある

101:デフォルトの名無しさん
23/01/15 23:38:57.01 r5uLxMWea.net
sjis/CP932 とか、何十年前の話w
sjisのサイトも、5ch だけだろw

102:デフォルトの名無しさん
23/01/16 00:18:41.42 sUZCnaKRM.net
古の生き残りのサイトもsjis
chromeが文字コード判定ミスしてても今は手動で文字コードは変えられない

103:デフォルトの名無しさん
23/01/16 01:06:54.26 Iz2auSAp0.net
>>100
なるほど
助かります!

104:デフォルトの名無しさん
23/01/17 01:05:55.75 BTJjkb3Ra.net
手動で文字コードを変更できる、Chrome の拡張機能は無いの?

105:デフォルトの名無しさん (スップ Sdea-dnaz)
23/01/17 18:23:06.75 EvOewZJzd.net
ブックマークレットのレベルで出来そう
知らんけど

106:デフォルトの名無しさん
23/01/17 19:13:35.87 reGY8TLTa.net
charsetのタグいれればええんかね

107:デフォルトの名無しさん
23/01/17 19:17:51.92 3iw8L5pXa.net
x-sjisとかの指定もあったからな

108:デフォルトの名無しさん
23/01/18 12:59:30.83 KNmhbmwea.net
>>104
たくさんあるが

109:デフォルトの名無しさん (ワッチョイ cd35-5Koo)
23/01/18 20:59:57.78 5annSIeD0.net
たくさんあるのかよ
一個でいいやろ

110:デフォルトの名無しさん (ワッチョイ 211d-+AQV)
23/01/18 21:51:34.28 oIAAyMph0.net
win32APiのChangeDisplaySettingsExをC#から呼び出して、
モニタのポジションを変更してるんだけど、
変更直後にScreenのBoundsから値をとっても値が変化しない・・・
アプリ再起動するとちゃんと変わってる。
ディスプレイの設定ってレジストリに保存してるから、もしかして
アプリ再起動しないとScreenクラスのBounds反映されない?
アプリ再起動せずになんとかする方法ないですかね?

111:デフォルトの名無しさん (ワッチョイ 06bb-fEm4)
23/01/18 22:07:32.78 jVn9UUXQ0.net
自分でバンズ計算すりゃいいじゃない
知らんけど

112:デフォルトの名無しさん (ワッチョイ 954f-wtyD)
23/01/18 22:14:35.47 /+rmiMsB0.net
Screenオブジェクトフィールドに保存してたりする?
毎回Screen.AllScreensとか.PrimaryScreenとかから取得すればどう?
ところでSystemEvents.DisplaySettingsChangedイベントは発生してる?

113:デフォルトの名無しさん (ドコグロ MM4e-ha7Y)
23/01/19 07:38:17.94 K9HYHkiWM.net
2つのクラスを1つのクラスに合体させて使いたいんだけど、どうやるのがスマートですか?
多重継承ができたら良かったんですが…

114:デフォルトの名無しさん (ササクッテロラ Sp6d-/qpm)
23/01/19 09:03:14.21 Hct/UdRpp.net
合体?
またなんで、改悪臭しかしないわ

115:デフォルトの名無しさん (ワッチョイ 4149-kID6)
23/01/19 09:25:09.63 LXNiK0p/0.net
そういうのは大体気の迷いだから、落ち着いて全体から考え直せば

116:デフォルトの名無しさん (ササクッテロラ Sp6d-/qpm)
23/01/19 09:44:42.78 Hct/UdRpp.net
むしろ機能単位で分解するのが健全な方向なのに
違う機能を似たものだから合体とかわりと誤った方向に行く人かな?

117:デフォルトの名無しさん (ワッチョイ caad-vAbj)
23/01/19 09:56:12.01 zVWBDbvx0.net
ライオンクラスと山羊クラスと蛇クラスを一つにしたいんです

118:デフォルトの名無しさん (ワッチョイ 0507-EebW)
23/01/19 10:01:07.14 yp2D21uT0.net
>>117
つトレイト

119:デフォルトの名無しさん (ブーイモ MM2e-laSj)
23/01/19 10:51:30.57 Iv2veF3WM.net
>>113
コンパイル時に型チェックしたいなら既存の型をインターフェースで定義し直して呼び出し側も修正
でもこういう変更が必要な状況はほとんどないのでコンポジションで移譲するケースなんじゃないかな

>>117
トレイトでもインターフェースでも同じだよ

120:デフォルトの名無しさん (ワッチョイ 0507-EebW)
23/01/19 11:01:05.91 yp2D21uT0.net
>>114
BindableBaseと他のクラスを両方継承したい場面はいくつかあるな
ソースコードジェネレータは中々いい

121:デフォルトの名無しさん (ワッチョイ 0507-EebW)
23/01/19 11:01:57.47 yp2D21uT0.net
>>119
トレイトはフィールドを持てるから同じではないけど言いたいことはわかる

122:デフォルトの名無しさん (ワッチョイ 06bb-JXbu)
23/01/19 11:31:03.31 kysdIh6r0.net
質問内容はクラスをまとめたいってことなので、ずれちゃう話にはなるけどさあ
(フレームワーク等を使う場面を除いて)初心者中級者のうちにクラスを継承をしようと思ったら設計段階でおかしいので、正解はどうするべきなのかを聞いた方がいいんじゃないのかな

123:デフォルトの名無しさん (ササクッテロラ Sp6d-/qpm)
23/01/19 12:04:02.54 WELAMOcMp.net
クラスインスタンスを取り込めばいいのに
なんで継承にこだわる?

124:デフォルトの名無しさん (ドコグロ MM21-ha7Y)
23/01/19 12:21:58.33 tEHmCOQcM.net
やりたいことは
いくつかのプロパティを持つデータを格納するだけのクラスAがある
クラスAにバインド用のプロパティをいくつか追加したクラスBを作って、それのリストをDataViewにバインドしたい

AとBのすべてのプロパティを書いたクラスCを作ればできるけど、なんとかして少ないコードで実現したいです

125:デフォルトの名無しさん (アウアウウー Sa91-EebW)
23/01/19 12:45:40.56 H7hm+dDpa.net
Aをバインドできるよう書き直せばいいんじゃね

126:デフォルトの名無しさん (オッペケ Sr6d-2lig)
23/01/19 12:52:06.93 8nS1/G/Mr.net
>クラスAにバインド用のプロパティをいくつか追加したクラスB
>AとBのすべてのプロパティを書いたクラスC
なんかおかしくない?

127:デフォルトの名無しさん
23/01/19 16:09:46.95 h7ydINbB0.net
Aを継承してバインド用のプロパティを追加したBを作って
List<B>を持つCを作ってそのList<B>をバインドすればいいんじゃないの

128:デフォルトの名無しさん (ドコグロ MM21-ha7Y)
23/01/19 17:30:22.46 tEHmCOQcM.net
>>127
それで出来るんですが、バインド用のプロパティが沢山あったときに毎回書くのが面倒で、どうにかして効率化できないか考えてます

129:デフォルトの名無しさん (オイコラミネオ MMe5-7DGa)
23/01/19 18:00:00.70 pNQOSNx5M.net
ここですら見かけない超クソ黒魔法もあるけど全くお勧めしない

普通にコンポジションで書くのが正解じゃないかな
アンマネージドなものをラップするのと変わらない
手書きでも自作コードジェネレータでもどうぞ

130:デフォルトの名無しさん (オイコラミネオ MMe5-7DGa)
23/01/19 18:06:50.46 pNQOSNx5M.net
黒魔術な…

131:デフォルトの名無しさん
23/01/19 19:44:59.20 cZ+iShes0.net
やりたい事は理解できる
構造体を合体させるにあたりフィールドで保持すれば良いというのはその通りなんだがアクセス手段が冗長になるのは嫌っていうワガママな気分によくなる
C++のように素直に構造体継承や多重継承認めてくれって思う事は頻繁にある

132:デフォルトの名無しさん
23/01/19 21:19:14.97 z427r+xYp.net
プロパティにしてバケツリレーw

133:デフォルトの名無しさん
23/01/19 22:05:29.65 wlAvkW/br.net
>>128
バインド用のプロパティってクラスAのもつフィールドを参照するの?

134:デフォルトの名無しさん
23/01/20 01:42:18.00 Jpp0Ng/yM.net
>>133
しない前提です。
データソースクラスにバインド用のプロパティも含めれば実現できるけど、クラス設計として微妙なんだよな

135:デフォルトの名無しさん
23/01/20 12:05:04.93 rWqtsOF60.net
>>134
>>125が正解な気がするが、
そもそもバインド用のプロパティってどういうものを想定してるんだ?
よくあるINotifyPropertyChanged自動実装したいとかそんな話か?

136:デフォルトの名無しさん
23/01/20 20:51:09.38 jJGC4T1tr.net
つまるところ、M(クラスA)とVM(クラスB)を煩雑にならないように扱いたいって話かね
この辺は詳しくないけどいろいろプラクティスがあるんじゃない?

137:デフォルトの名無しさん
23/01/21 11:56:14.92 cGrVppR7M.net
C#だとあまり楽な方法はない

138:デフォルトの名無しさん
23/01/21 12:36:53.78 rZUyyxKK0.net
そんなアホなことしたがるやつがそもそもいないからな
することが多ければすぐに楽な構文が作られるのがC#

139:デフォルトの名無しさん
23/01/21 16:52:35.79 H5hcEaoi0.net
C#は基本的に
・static寄せ集めユーティリティのクラス
・必要な画面フォームのクラス
・メインプログラムのクラス
この3つ以外要らないのだよ
意識高い系が説くMやらVに振り回されてはいけないのだよ
変な抽象化は問題をややこしくするだけだと学ぼう

140:デフォルトの名無しさん
23/01/21 18:17:20.63 rZUyyxKK0.net
スタティックおじさんきたな

141:デフォルトの名無しさん
23/01/21 22:54:03.42 XQUa+q2yM.net
>>135
そうですね
INotifyPropertyChangedとかINotifyDataErrorInfoを実装しておきたい感じです

142:デフォルトの名無しさん
23/01/22 10:06:15.27 rqWd8pMR0.net
探せば大抵のものはあるのに、自分で作る意味とは?
アートとか、そういう方面しか残ってないような感じがするのですが(´・ω・`)

143:デフォルトの名無しさん
23/01/22 11:19:49.43 cs1e2wyOa.net
帳面で効率が悪けりゃソフト使えばいいし効率の良いソフトがみつからなけりゃ作るより他にないだろ

144:デフォルトの名無しさん
23/01/22 11:27:13.17 cs1e2wyOa.net
>>141
ただのViewModelじゃねーか
フレームワーク使え

145:デフォルトの名無しさん
23/01/22 12:53:40.50 8KSe/b5e0.net
最近MVVMのほうが楽じゃね?って思ってきた
楽しいし

146:デフォルトの名無しさん
23/01/22 12:54:24.84 8KSe/b5e0.net
これもすべてソースジェネレーターのおかげかもしれん
さすがC#

147:デフォルトの名無しさん (スッププ Sd1f-OsG9)
23/01/22 17:03:04.26 jvNfJ0Pqd.net
>>139
うちがWindowsの業務クライアントアプリ系を委託してるソフトハウスがまさにこんな感じだわ
イベントハンドラからSQL投げてる
ただしstaticユーティリティクラスではなく共通の神フォームクラスがあって、全てのフォームがそれを継承する形
まあレベル低すぎて開発もクソ遅いから、負債自体はそれほど量が多くないのは救いかな

148:デフォルトの名無しさん (ワッチョイ e379-TshA)
23/01/22 18:32:18.54 xRK/d49A0.net
>共通の神フォームクラスがあって、全てのフォームがそれを継承する形
こういうのよくないな
神クラスのメンテナが異動だかで居なくなだけで誰も保守できない砂上の楼閣アンチパターンに嵌るね

149:デフォルトの名無しさん
23/01/22 21:31:04.53 ADzURpxfM.net
>>139
実質Cプログラムだな

150:デフォルトの名無しさん (ワッチョイ bfbd-Jpma)
23/01/23 02:49:47.88 0XgI/UQT0.net
>>149
前に作ったC#のプログラムがまさにそんな感じで、
その後MVVMしてみた。
そして最近作ったCのプログラムが構造体でオブジェクト指向プログラミングしてる。

151:デフォルトの名無しさん (ワッチョイ 5310-Jpma)
23/01/23 08:17:46.60 3Vu8SA8M0.net
>>148
その言い方だと基底クラスと派生クラスに分かれているもの全部が当てはまるように聞こえてしまうが

152:デフォルトの名無しさん (ワッチョイ 8307-ycfm)
23/01/23 08:19:09.55 YKh4Yexo0.net
>>151
神クラスを知らんのか

153:デフォルトの名無しさん (ワッチョイ 5310-Jpma)
23/01/23 08:29:28.69 3Vu8SA8M0.net
規模じゃなくてメンテナの有無を問題にしていたからだよ

154:デフォルトの名無しさん (ワッチョイ 8307-ycfm)
23/01/23 08:46:40.58 YKh4Yexo0.net
規模が小さければメンテナが交代しても負担は少ない

155:デフォルトの名無しさん
23/01/23 09:08:08.58 qV3QzySmp.net
ライブラリなんて当時のセット使うに決まってるじゃん

156:デフォルトの名無しさん
23/01/23 09:26:39.82 t2EpFVl6a.net
顧客のOSがバージョンアップするのにいつまでも使えるわけねーだろ

157:デフォルトの名無しさん
23/01/23 09:29:38.64 KYv3x0sqM.net
>>156
使えなくなる理由が分からない
ブラウザの話?

158:デフォルトの名無しさん
23/01/23 09:34:41.96 t2EpFVl6a.net
わからないは草

159:デフォルトの名無しさん (ササクッテロラ Spc7-H1Sa)
23/01/23 10:09:44.77 2/794eE6p.net
>>156
そんなんちゃんと契約書にOSのバージョン指定しとかない会社が悪い
OSバージョンアップされたら何起こるか分からないんだから
最悪作り直しだってあるし、そんなん瑕疵理由にされたらたまらないだろ

160:デフォルトの名無しさん (ワッチョイ 8307-ycfm)
23/01/23 10:10:26.60 YKh4Yexo0.net
指定したバージョンで使えなけりゃ作り直すしかねーだろ

161:デフォルトの名無しさん (ワッチョイ 0379-6+E+)
23/01/23 20:40:31.82 N1CH+niL0.net
>>152
神クラス悪くないよな
すべてのグローバル変数がちゃんと集結してるなら
リークはここさえ調べればいいし

162:デフォルトの名無しさん
23/01/23 21:22:23.16 3Vu8SA8M0.net
本当にヤバい神クラスというのは担当者が1人じゃなく複数人でメンテしていて、
しかも誰一人として全貌を把握していないという。。。

163:デフォルトの名無しさん (オッペケ Src7-j0by)
23/01/24 07:57:54.50 qtsatPEhr.net
まあ1人で保守できてて数が把握できるレベルならな。。

164:デフォルトの名無しさん (ワッチョイ d31d-QR4B)
23/01/24 10:27:18.73 yL08sSgL0.net
ディスプレイ設定の
マルチディスプレイの
複製表示するだとか拡張表示するだとかの設定を
プログラムで取得できますか?

165:デフォルトの名無しさん (ワッチョイ 6f4b-iswg)
23/01/24 16:12:45.07 88+gyU910.net
そりゃ出来るだろ。
取得するAPIが用意されているかどうかは知らんけど。

166:デフォルトの名無しさん
23/01/24 16:25:23.27 WrVsgKSa0.net
>>164
WMIでググって見ると良いかも。

167:デフォルトの名無しさん (オイコラミネオ MM07-88l+)
23/01/24 17:43:09.31 hrk0Jab5M.net
>>164
.Netのフレームワーク抜きにして

基本的にwindowsの情報はwin32 apiかwinRtかで取得できる
楽かどうかは不明だけど両方ともC#ではアクセスできる

それ以外にレジストリの情報だけと言う場合もあるけど

168:デフォルトの名無しさん
23/01/24 18:08:58.39 hrk0Jab5M.net
思い出というかうろ覚えレベルだけど
昔はwinformsの方でAPIがあって複数画面の情報は取れた
WPFにはAPIが用意されてなかったのでwinformsを参照して情報を取ってた

169:デフォルトの名無しさん
23/01/25 10:31:48.06 1QUndYzE0.net
>>166
WMIの存在知っていて、Monitor〇〇は見てみたんですけど、モニタごとの
情報は取得できるけどマルチディスプレイの設定は見当たらないんですよね。
>>167
win32apiも見たんですが、やはりモニタごとの設定は取得できるんですが、
マルチディスプレイの設定みたいなのが見当たらなかったです。

170:デフォルトの名無しさん
23/01/25 11:29:49.38 YgKVEuEk0.net
>>169
答えはわからなかったが、これを見る限りレジストリに保存していそう
URLリンク(answers.microsoft.com)

171:デフォルトの名無しさん (ワッチョイ cf10-nezH)
23/01/25 11:37:43.88 HF2K9cvb0.net
>>169
上の人が書いているけど、レジストリっぽいですね。

DisplaySwitch.exeによる切り替えは結構ヒットするんだけど、情報取得はみつけられなかった。

WindowsAPIだと、

SetDisplayConfig
QueryDisplayConfig

あたりがそれっぽいのかも?
詳しい人の回答を期待w

172:デフォルトの名無しさん
23/01/25 12:37:42.36 SKrgZEWi0.net
マルチディスプレイの設定って具体的に何よ
最終的に何の項目の値が欲しいのよ
コンパネや設定アプリのこの項目ですとかそういうの書きなさいよ

173:デフォルトの名無しさん
23/01/25 13:43:55.80 g3U6xxzNd.net
マルチディスプレイの項目の
表示画面を拡張するや、表示画面を複製するが何になってるか取得したいって最初に書いたんだけどな…

174:デフォルトの名無しさん
23/01/25 14:06:15.04 VgR3j9B70.net
C言語から入った人間なのでexeファイル=機械語と思いこんでたけど違うんですね……
中間言語?CLR?いやC#もexeファイル作成されるじゃんどういうこっちゃと思ってました
えーっとC#のexeファイルは中間言語で出来てるって理解であってます?つまりexeだけど.net入ってないPCじゃ実行できないってことですよね?

175:デフォルトの名無しさん
23/01/25 14:08:37.83 6qMSPLxFF.net
ならその画面出してキャプチャして画像解析でもすりゃええやん

176:デフォルトの名無しさん
23/01/25 16:47:40.06 lfyXBnaV0.net
>>174
C言語から入ったからじゃない
お前が無知なだけ

177:デフォルトの名無しさん
23/01/25 17:31:10.31 VgR3j9B70.net
>>174ですが解決しました。失礼しました。

178:デフォルトの名無しさん
23/01/25 19:26:40.13 FCKUBvCH0.net
>>176
建設的でなく情報を提供することもない価値のない書き込みをありがとう
でもそういうのやめにしないか?

179:デフォルトの名無しさん
23/01/25 19:28:12.41 BZf8jlam0.net
C言語関係ないので間違ってはないな

180:デフォルトの名無しさん
23/01/26 02:21:06.17 ZFMbSjAA0.net
むしろcから入ったほうが、ほかのいわゆる高級言語から入るより詳しくなりそうな気がするんだがな

181:デフォルトの名無しさん
23/01/26 05:08:09.80 v0vT4MdvM.net
C言語プログラムではexeファイル作成しても実行環境のランタイム周りでエラー吐くと即実行時エラーで停止するからな

182:デフォルトの名無しさん
23/01/26 15:37:19.08 O3LYxWam0.net
プログラミン好きじゃないけど、稼ぐ手段と考えたら上達しないんですかね?
ていうか、うまく出来もしないのに好きでいることなんて出来るでしょうか
成果が出て好きになるのでは?

183:デフォルトの名無しさん
23/01/26 15:40:51.40 r9XE4FBU0.net
好きとか 嫌いとか最初に言い出したのは誰なのかしら

184:デフォルトの名無しさん
23/01/26 16:46:19.96 O3LYxWam0.net
分からん
好きなことで生きていくみたいな
他人と比べて明らかに下手でも好きでいられるのだろうか

185:デフォルトの名無しさん
23/01/26 18:41:23.01 SJYXMXJT0.net
>>182
スレ違いどころか板違い
低能すぎるからハロワ行け

186:デフォルトの名無しさん
23/01/26 19:37:48.38 GkI+YKE10.net
スレチ警察ご苦労

187:デフォルトの名無しさん
23/01/27 01:10:49.54 unSIwQ1w0.net
駆け抜けてゆく 私のメモリ外♪

188:デフォルトの名無しさん
23/01/27 18:21:50.28 01PH/qCE0.net
ここで聞いていいのかわからんけど
WinUI3
Windows App SDK
MAUI
こいつら並行して存在してるみたいだけど関係性ってどうなってんの?
UWPはディスコンになったって理解でいいの?

189:デフォルトの名無しさん
23/01/27 21:43:33.88 unSIwQ1w0.net
多分Microsoftも分かってない

190:デフォルトの名無しさん
23/01/27 21:49:53.26 P0p3cJ8l0.net
本当はMSも新しいものにシフトしたいけどWin32は捨てられないし
レガシー無視ならWindowsである必要が無くなるからなぁ
なんやかんやでwebの技術でアプリは作れる時代だし
XAMLなんかはそろそろ辞めた方が良い気がするんだよなぁw

191:デフォルトの名無しさん
23/01/27 22:49:09.08 Ze4DWSK5M.net
>>188
それ全部層が別なんだ
以下俺の理解
まず下に行くほど上位層になる
様々な状況を無視して強引にフォルダにしてみると
c:\MAUI\Windows App SDK\WinUI3
・WinUI3
windows用の新しいGUIライブラリ
C++で書かれててc++にもXAMLの恩恵が前より受けられるらしいのだが魔術に近いコードを書かされるゴミ
目新しさだけで近づくと絶望感しか感じられない残念なプロダクト

・Windows App SDK
windows上で現在色んな技術 win32 winrt winUI3 などがごちゃごちゃにあって
それを統一的には無理だけどアクセスできるレベルに合体させようと言う残念な仕組みのゴミ
この世にドラゴンボールのフュージョンはないと思い知らされる凄いプロダクト

・MAUI
マルチプラットフォームでiPhone,android,windowsなどいろんなシステムを横断して最大公約数的に使う仕組み
本来は開発工数が下がるはずなのだが個々のシステムをかなり理解していないと何もできないゴミ
各プラットフォームでの学習+MAUIの学習と言う学習時間フルコースプロダクト
ある意味超人オリンピック

192:デフォルトの名無しさん
23/01/27 23:00:16.44 Ze4DWSK5M.net
MSのFAQから意訳
UWPで開発で満足してる人は焦ってWindows App SDKに移行する必要はない

193:デフォルトの名無しさん
23/01/27 23:02:56.90 kMLtWNPM0.net
>>191
ゴミしかなくね?

194:デフォルトの名無しさん
23/01/27 23:08:34.74 Ze4DWSK5M.net
MSは基本的にwindowsアプリ開発のベースをUWPで見てる節がある
それ以外の人にもUWP並みの恩恵をと言うのがWindows App SDK

195:デフォルトの名無しさん
23/01/27 23:54:16.49 Fhi2vLV20.net
MSもElectron使ってるし、実際ゴミしかないので
WPF以降はもうWebベースに移ったほうがいいかなって思ってる

196:デフォルトの名無しさん
23/01/27 23:55:50.76 Fhi2vLV20.net
Webベースっていうと語弊があるな、ブラウザベースか

197:.NET MAUI HighSchool
23/01/28 07:46:47.27 Akv+btg40.net
>>195
ElectronってVScodeだけじゃね?
OfficeとかWinUI3っぽいしVSもC#じゃんね?
UnityもUI部分の画面はC#みたいだぞ

198:デフォルトの名無しさん
23/01/28 08:32:44.81 TqWhMxhs0.net
Teams

199:デフォルトの名無しさん (ワッチョイ e301-s91j)
23/01/28 09:48:55.24 p3y/mDFs0.net
>>191
ありがとう

そりゃいつまで経ってもWinFormsが無くならんわけだわ
なんなら一番成功してるまである

200:デフォルトの名無しさん (ワッチョイ 364a-ozkd)
23/01/28 10:37:15.32 ggMIOAKX0.net
高dpiで画面が崩れるのどうにかしてほしい

201:デフォルトの名無しさん (ワッチョイ 8335-6BSU)
23/01/28 10:42:06.46 qgiHv5Wf0.net
ズームしてるからやろ?

202:デフォルトの名無しさん
23/01/28 10:42:44.43 p3y/mDFs0.net
>>200
VS2022でなんか対策入ってなかったっけ?

203:.NET MAUI HighSchool
23/01/28 11:23:23.91 Akv+btg40.net
>>202
.NET7じゃね?

204:デフォルトの名無しさん
23/01/28 16:16:56.07 qgiHv5Wf0.net
XAMLやバインディングは難解すぎる

205:デフォルトの名無しさん
23/01/28 16:21:44.03 SSo2rJoBd.net
>>198
Desktop版Teams糞すぎでweb版使うよね

206:デフォルトの名無しさん
23/01/28 16:31:49.12 qgiHv5Wf0.net
XAMLとロジックを分離することでデザインだけに特化したプロフェッショナルに任せられるとかいうけどそんなことしてるところあるのかね

207:デフォルトの名無しさん
23/01/28 16:33:29.41 qgiHv5Wf0.net
C#を知らずに書けるのか

208:デフォルトの名無しさん
23/01/28 16:34:51.45 zBTU9IJ/0.net
XAMLに文句言ってる人もべつになにかもっと良い代替案があるわけでもないんだろ?
jsonかyamlかあるいはまたなにか独自仕様でも作るか。

209:デフォルトの名無しさん
23/01/28 18:27:49.87 DKSWYQK4a.net
Windowsデスクトップアプリの次のスタンダードはWebView2に決定してるよ
C#とも何の問題もなく連携できるから、もう何も心配することはない
ただHTML/CSSだけできればよい

210:デフォルトの名無しさん
23/01/28 18:34:56.52 x9KLfrKP0.net
WinFormsだけを強化/ブラッシュアップして行くだけでいいのに
今現在Microsoftが決定してることは全部間違った方向

211:.NET MAUI HighSchool
23/01/28 18:37:51.27 Akv+btg40.net
>>207
正直余裕

212:.NET MAUI HighSchool
23/01/28 18:39:12.56 Akv+btg40.net
HTML,CSS,JavaScriptほど密結合の強い組み合わせないと思うけどな
WinFormもそうか

213:デフォルトの名無しさん
23/01/28 18:51:54.18 DKSWYQK4a.net
>>206
現実には無いね
Web開発ではHTML/CSSですら自分で書けるデザイナーは稀であり、デザイナーはお絵描きするだけでHTML/CSSはエンジニアが書くのが普通だ
ましてやC#エンジニアしかまず目にしないXAMLを扱えるデザイナーなんて存在しない

214:デフォルトの名無しさん
23/01/28 19:08:33.35 acHVjvs20.net
>>208
JavaFXと言う屍なら

215:デフォルトの名無しさん
23/01/28 21:22:31.10 0L7E+iYP0.net
xamlはさくっと簡易なgui作る程度なら便利ではあるがxamlだけだとboolの反転すらできないから結局コード書くことになるんでbindingクソ喰らえってなる

216:デフォルトの名無しさん
23/01/28 21:27:00.01 p3y/mDFs0.net
XAMLでも何でもいいから
ひとつこれと決めてしっかり枯れるまで面倒見てほしい

217:デフォルトの名無しさん
23/01/28 22:47:24.30 Q8ohQpbl0.net
XAMLはもう枯れてるのでは?

218:デフォルトの名無しさん
23/01/28 23:00:10.63 acHVjvs20.net
x:Bindだとコンバーターは普通のスタティックメソッドでコンパイル時に型チェックしてくれるから大分良くなってるんだけどね

219:デフォルトの名無しさん (ワッチョイ 8379-jh2e)
23/01/29 01:16:07.51 R24XfIrD0.net
>>209
>Windowsデスクトップアプリの次のスタンダードはWebView2に決定してるよ
もう2ひねりぐらいしないとコレ常用は厳しいなあと思う
HTAの再発明の上に実行環境がフォルダ掘ったりで劣化しとるのにスタンダードになるとは到底思えない
外人にも概ね評判悪いみたいだし

220:デフォルトの名無しさん
23/01/29 09:49:06.93 fP4u16yma.net
>>208
xamlなんて使わないで、C#でUIを簡単に定義できるようにすればいい
覚えることも減るし、コードとの親和性も良くなる

221:デフォルトの名無しさん
23/01/29 10:28:03.21 tvJJpmA20.net
>>206
扱えるデザイナとそもそもツールがないような?

222:デフォルトの名無しさん
23/01/29 11:42:03.87 57gL/0v0a.net
>>220
WPFはXAML使わずC#だけで書けるからそれが良けりゃ自分でライブラリ作れよ

223:デフォルトの名無しさん (ワッチョイ 1a42-+rQD)
23/01/29 12:02:19.28 1KUwXnGJ0.net
>>220
MauiにMVUってコードでUI記述できるやつあるけど使いやすいか?
URLリンク(qiita.com)

224:デフォルトの名無しさん (ワッチョイ a702-fO7+)
23/01/29 12:12:03.57 Bt1+Pj/S0.net
flutterっぽいな

225:デフォルトの名無しさん
23/01/29 13:15:24.15 R8JESUlY0.net
>>223
今flutter取り組んでるけど、
単なるデザイン処理がコード中に占める割合が高くて
めちゃ読みにくて慣れんわ

226:デフォルトの名無しさん
23/01/29 13:27:12.72 8bst+jr10.net
GUI黎明期は間違いなくコードでUI記述してたわけで
先人がこれはあかんと否定してきたものを今更リベンジさせる必要があるんだろうか

227:.NET MAUI HighSchool
23/01/29 13:50:59.81 i3THky500.net
今WinUI3で5chブラウザ作ってるんだがレスのアンカーだのハイパーリンクだと画像のリンクだのを抜き出す処理を考えてるんだがどうしたものか迷ってる
当然その書かれた位置にそのボタンやリンク貼り付けなきゃいけないんだがアンカーやリンクとその他記事は同じ行にはない(<br>で区切られてる)と仮定して<br>でSplitかけて行ごとでRegexとかを行おうと思ってるけどこの方法あってるか?

228:デフォルトの名無しさん
23/01/29 13:55:11.83 8bst+jr10.net
>>227
自前でパーサー書くよりもその手のスクレイピングライブラリは数多あるからそれ使った方が早いと思う

229:デフォルトの名無しさん (アウアウウー Sa47-6BSU)
23/01/29 15:11:11.20 Srs41jrSa.net
行で区切る意味がわからん
普通に置換しろよ

230:デフォルトの名無しさん
23/01/29 15:15:12.51 Inli+tITa.net
WebViewならこれでlinkClickedにjsで独自処理書くなりそこからC#呼び出しするなり
<a xxx="~" href="~" yyy="~" >○○○</a>

<span class="link" data-info="ここに情報を入れる" onclick="linkClicked(this.getAttribute('data-info'))"
>〇〇○</span>

231:デフォルトの名無しさん
23/01/29 15:18:44.23 9PfpQq5Na.net
正規表現もこんな感じので充分やろ
<a.+?href="(.+?)".+?>(.+?)</a>

232:デフォルトの名無しさん
23/01/29 15:19:58.32 I1Pjf1q2a.net
+じゃなくて*か

233:.NET MAUI HighSchool
23/01/29 16:56:28.41 i3THky500.net
>>229
置換だとコントロールが作れない(ハイパーリンクコントロールなどがそれぞれ必要)

234:.NET MAUI HighSchool
23/01/29 17:00:22.89 i3THky500.net
WebViewでいけたらいきかったけどMVVMのBingingができんかった…(要素名.NativeToString(HTML))なんだけどXAMLにそれがなかったわ…orz

235:デフォルトの名無しさん
23/01/29 17:28:42.21 pHVlG+oVd.net
ソフト板の専用スレの連中は役に立たんのか?

236:デフォルトの名無しさん
23/01/29 18:01:46.16 1KUwXnGJ0.net
>>234
1.ビヘイビアを作る
2.ユーザーコントロールにWebViewのっけて依存関係プロパティーを設置してVMからコントロール
3.サービスを作ってVでWebViewのっけてからVMにインジェクションする
このどれかが普通かな?

237:.NET MAUI HighSchool
23/01/29 19:07:46.52 i3THky500.net
>>236
なるほどサンクス2が簡単そうかなぁ

238:デフォルトの名無しさん
23/01/29 19:21:55.55 XFhpsu3B6.net
初歩的な質問だと思うが書き込み失礼
win32APIでArduinoとシリアル通信をするコードを書いてる
static void Main(string[] args)
{
SerialPort serialPort;
serialPort = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
serialPort.Open();
while (true)
{
var pt = GetCursorPosition();
Console.WriteLine($"X:{pt.X} Y:{pt.Y}");
if ((pt.X > 500) && (pt.X < 1000) && (pt.Y > 300) && (pt.Y < 600)) {
serialPort.Write($"X:{pt.X} Y:{pt.Y}");
}
else
{
}
Thread.Sleep(100);
Console.Clear();
}
serialPort.Close();
}
Mainの部分がこんな感じなんだが、if文の中にマウスカーソル位置の範囲指定をしていて、カーソルがその範囲に入るとシリアル通信が始まってArduinoに接続したモータが動く(ここまではできた)
でも指定範囲を出るとそのモータが初期位置に戻るコードがうまく書けない。C#側でシリアル通信を中断して初期の段階に戻すような方法ある?elseの中に何書けばいいかわからない。

239:デフォルトの名無しさん (ワッチョイ 8379-jh2e)
23/01/29 19:50:03.63 R24XfIrD0.net
>>238
else
{
serialPort.Write(初期位置);
}
で何か問題あるのかな?
初期位置が何を示すのか知らんけど、シリアルはフロー制御なしなら基本垂れ流しになるから、
開始とか中断の概念は持たない
else節で100ms毎に初期位置座標を送り続けるのが嫌なら送信フラグでも持って送ったか判定すればいいのでは

240:デフォルトの名無しさん
23/01/29 20:04:34.68 qu76jy1yd.net
シリアル通信ってただのbyte列のやり取りでしかなく、中断とかの概念は存在しない。
Arduino側はreadlineかscanfかやってるだけでしょ?
この場合はifのtrue側で$"set:{},{}"、false側で$"default:"を送るのがいいんじゃない?
「初期の段階に戻す」とやらが何をするのかは知らんが、C#側が黙ってたらArduinoは何もできない

241:デフォルトの名無しさん
23/01/29 20:11:58.96 XFhpsu3B6.net
>>240
Arduino側はSerial.availableで信号読み取ってる
それがいけないのか
初期の段階に戻すのは、(Arduino側でサーボモータの初期位置を0度にしてるから)指定範囲を出るとサーボモータが0度戻るようにしたい。(つまり信号が送られる前の状態に戻したい)
でもあんまりArduinoの話すると板違いって発狂するだろ

242:デフォルトの名無しさん
23/01/29 20:31:37.77 R24XfIrD0.net
サーボモーター云々の話なら座標以外に「初期の段階に戻す」のシリアル命令をarduino側で定義すればいいだけなのでは

243:デフォルトの名無しさん
23/01/29 20:58:08.63 h+Z7+/+00.net
>>241
C#というよりプログラミングの初歩的な設計の話だから怒られんだろ
板違いってのはそういうことな
>>239が大体答え言ってるじゃん

244:デフォルトの名無しさん (ワッチョイ 8379-jh2e)
23/01/30 03:54:10.75 Yr+dar0w0.net
電電板にArduinoスレがあるの知らないかもしれないから一応リンクを。サーボやArduino自体の使い方とかはそっちで
Arduino初心者熱烈大歓迎質問スレ part36
スレリンク(denki板)

245:デフォルトの名無しさん
23/01/30 11:22:46.40 SqjDQYar0.net
>>243
ツンツンしてんな~
相談室なんだからいいだろ

246:デフォルトの名無しさん
23/01/30 19:52:43.52 afDHhw4l0.net
パソコンのWebから秀丸の文書を開きたいのです。例えば、C:\\Data\\sample.txtというファイル
で、URLスキームというのを見つけました。
URLリンク(qiita.com)
ここでレジストリにHidemaruを設定したら、秀丸を起動はできました
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\XXX]
@="URL:Hidemaru Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\Hidemaru\shell\open\command]
@="\"C:\\Program Files (x86)\\Hidemaru\\Hidemaru.exe\" \"%1\""
ですが、%1 のところですが、ブラウザから呼ぶときに
Hidemaru:C:\\Data\\sample.txt
としても、Hidemaru:C:\\Data\\sample.txt というフルパスが秀丸に与えられて頭のHidemaru:が邪魔になります
なので、このスキーム部を削除するために、ここではC#を使って加工しているのですが、このC#はどこにどう配置したらいいのでしょうか
私はC++等のプログラムはできますが、C#とかは初めてです
このC#はクライエントのhtmlファイルに<script></script>とかに入れてつくるのでしょうか。やってみたのですがうまく動きません
どうしたらいいでしょうか?
クライエントは、簡単に
<!DOCTYPE html>
<html>
<head>
<title>テスト</title>
</head>
<body>
<a href="Hidemaru:C:\\Data\\sample.txt">sample.txtへのリンク</a>
</body>
</html>
としました

247:デフォルトの名無しさん
23/01/30 20:11:57.30 q0Wux2Rd0.net
なんか勘違いしてるっぽいな
URLスキームで、hidemaru.exeではなくて自作のexeに関連付けて、
自作のexeでmainに引数として渡されてきたURLを加工して
hidemaru.exeを改めて起動するって話だよ
C#でないとできないことではないし、C++に慣れてるならそれでCreateProcessすればいいんじゃない?

248:デフォルトの名無しさん
23/01/30 21:34:40.15 afDHhw4l0.net
ああ、そういうことかあ、2段階踏まないとダメなのね
自作の簡単なC言語のHello!みたいのを作ってその引数に
http:---が入ってきてそれを加工して秀丸を起動しないといけないってこと?
htmlファイルだけで直接起動は出来ないのね

249:デフォルトの名無しさん
23/01/31 00:29:45.17 hLRYDq4/M.net
確かURLスキームはセキュリティホールになるから世界中で使われなくなってきたはずなんだけど
今更なんで使うんだ?

250:デフォルトの名無しさん
23/01/31 03:14:23.94 8roNDUlQd.net
馬鹿だから

251:デフォルトの名無しさん (アウアウウー Sa47-DSsr)
23/01/31 05:00:45.55 JnYo5yDia.net
もし、ブラウザのHTML から、ローカルPC 内にアクセスできたら、
世界中のパソコンが乗っ取られているはずw

ローカルPC内で起動しているサーバーを通さないと、アクセスできないはず

Ruby on Rails などのLinux ウェブ系をやっていない、
Windows の香具師は、平気で恐ろしい事を考える

252:デフォルトの名無しさん
23/01/31 07:03:33.59 eeFPm4F70.net
>>246, 248
カスタムURLスキームでそういうことをする場合は、わざわざC#で作らずとも、一旦WindowsビルトインのWSH(JScript)で中継してパラメータをサニタイズするといいよ(レジストリ登録(*)さえ済ませておけばどこでも動く)
(*)下記のようにwscript.exeに対して「パラメータをサニタイズ+それを任意のプログラムに渡して起動するJScriptのパス」と「パラメータ」を渡す
C:\Windows\System32\wscript.exe "C:\script.js" "%1"

253:デフォルトの名無しさん
23/01/31 09:08:38.25 31HE1wSM0.net
>>252
ありがとう。AHKで作りました。ローカルで使うのでセキュリティとかは大丈夫です

254:デフォルトの名無しさん
23/02/02 10:26:07.11 yh09g2+40.net
>>227
適当なパーサライブラリでASTに変換
ASTからParagraph(Microsoft.UI.Xaml.Document)を構築
RichTextBlockのBlocksにParagraphを追加

255:デフォルトの名無しさん
23/02/02 21:06:57.50 pqzuUQeLM.net
いい加減MAUI君に構うのはやめろよ
全然C#固有の問題じゃないし…
winforms,WPF,ストアアプリ、UWPで専ブラ作ってたけど
そういうところも含めて自分で考えて実装するのが醍醐味じゃないのかなあ?
考えてもわからないなら過去にオープンソースで開発されたものがたくさんあるんだからそれを見て見るとかやりようがあるんじゃないかと

256:デフォルトの名無しさん
23/02/09 16:28:46.38 Zlo87tEd0.net
URLリンク(www.publickey1.jp)

257:デフォルトの名無しさん
23/03/07 21:33:28.99 eLRrbAoH0.net
C#の妙技はイベントにあり

258:デフォルトの名無しさん
23/03/08 21:11:06.25 +FGbWqvad.net
C#でつくったアプリをMSRemoteApp化したら、Cursorを変更しても反映されないの?

259:デフォルトの名無しさん
23/03/11 12:56:48.21 nD1lGm6ya.net
皆さんnintって使ってますか?
他とやり取りすることなく、メソッド内で完結するただの変数として使う場合、とりあえずintを使いますよね
でも今後64, 128ビット幅が主流になったときを考えれば、nintって書いといた方がいいですよね?(そんな時代がくるかはともかく)
少なくともコンパイルされた時点でnintはintと同等かそれよりも効率がいいと(個人的に)思うんですが、でも誰もnintなんて使っていません
32ビット(何なら8でも)以上あれば問題ない、というケースでnintを使わない場合というのは、単にintの方が慣れてるからだけなんでしょうか?

260:デフォルトの名無しさん
23/03/11 13:18:11.95 EyA4I9HNd.net
nintとnuintはIntPtrとUIntPtrの別名なので、ポインタ(かポインタオフセット)にしか使わない
つまりはプラットフォーム依存であることの明示なので、
他のint型との相互作用(大量に出てくるだろうね)を考えるだけでかなりの脳のリソース持ってかれる

261:デフォルトの名無しさん
23/03/11 14:01:42.70 M3BsWLaP0.net
全部でBigIntegerを使っとけば間違いないよ

262:デフォルトの名無しさん
23/03/11 14:13:05.01 DhHi6Ld4r.net
結局既存のメソッドを呼び出したりするときにintにキャストしなきゃいけなくなるんでしょ
ごくわずかに数字演算のパフォーマンスが改善したところで毎回キャストするコストのほうが余計にかかりそう

263:デフォルトの名無しさん
23/03/11 14:19:17.92 M3BsWLaP0.net
画面の実座標がいまだにshortで足りる範囲とは思わなかったなあ
人間はそれほど目に頼っていないということなのか

264:デフォルトの名無しさん
23/03/11 15:13:14.67 2pmAPF6nM.net
何言ってんだコイツ

265:デフォルトの名無しさん
23/03/11 15:15:24.57 DTxKl55ja.net
shortって32767だろ
そんな解像度要るわけないじゃん

266:デフォルトの名無しさん
23/03/11 15:21:17.18 0sr4dQ+W0.net
8Kディスプレイで4画面を横に並べればってとこか
当面要らんな

267:デフォルトの名無しさん (ワッチョイ 7102-S+nL)
23/03/11 16:42:12.30 WGybrWtY0.net
>>262
どうせマシン語になって同じレジスタに入る分にはコストは変わらん
浮動小数点→整数とかならコスト掛かるけど

268:デフォルトの名無しさん
23/03/11 17:38:46.83 vi8/lqqRM.net
>>259
普通の人は使わない
C++やwindowsのAPIやwinprocやDLLみたいのとやり取りする人間にだけ必要な機能で自分には非常にありがたい

269:デフォルトの名無しさん
23/03/11 17:41:39.39 vi8/lqqRM.net
今時点でC#内で完結する内容でnint使う局面はないと言える

270:デフォルトの名無しさん
23/03/12 09:59:16.38 WhaHkT9k0.net
速度よりも動きが変わっちゃう方が問題

271:デフォルトの名無しさん
23/03/16 22:30:13.17 XMsdgbaMM.net
データベースの列名に合わせて、クラスのフィールド名を日本語で表そうと思います。
しかし、インテリセンスで頭文字でフィールドの候補を選択する便利さはアルファベットのフィールド名に劣るので、合わせ技で次のようにフィールド名を定めようと思います。
public string BookName__書籍名;
アルファベットだとより複雑な意味を持つ名称でニュアンスがつかみにくいので、このように合せ技を、使おうと思うのですがどうでしょうか。

272:デフォルトの名無しさん
23/03/16 22:37:25.26 coFKYGG/0.net
どうでしょうかって知らんがな
上司に聞け

273:デフォルトの名無しさん
23/03/16 23:30:46.22 nNGsntyCM.net
>>271
>public string BookName__書籍名;
これだと英語名その対訳の組み合わせを間違えないように覚えてないとだめなのでメンテナンスコストがあがるだけな気がする
データディクショナリを整備したりインテリセンスのmigemo対応を頑張ってみるといいんじゃまいか?

274:デフォルトの名無しさん
23/03/17 00:11:50.11 I7yGzGSd0.net
この日本語力だとコード品質も心配になる

275:デフォルトの名無しさん
23/03/17 00:52:09.32 5jT41ER00.net
>>273
たしかに。
日本語名称だけにしておこうかと思います。
ドット打って、一覧から素直に候補を選びたいと思いました。

276:デフォルトの名無しさん
23/03/17 00:54:00.54 5jT41ER00.net
>>272
そういう上司いません。いるけど、専門外。

277:デフォルトの名無しさん
23/03/17 08:02:55.94 5m2XUDK70.net
変数名に日本語使われてるの見ると、ここの開発者ゴミだなってなる

278:デフォルトの名無しさん
23/03/17 12:27:39.16 qBIjuKdn0.net
世の中にはいろんな人がいて、様々なケースがあることを想像できない世間知らず

279:デフォルトの名無しさん
23/03/17 12:44:03.16 H2liKR380.net
普通はフィールドを単独の変数として扱わずにテーブル毎のクラスを作って管理する
DapperやEntityFrameworkなどのORMでは強制的にそうさせられる
これを機にORMへステップアップしてみるのも面白いと思うよ

280:デフォルトの名無しさん
23/03/17 16:32:19.54 Xu7B9KVM0.net
クラスのフィールド名って最初に書いてる

281:デフォルトの名無しさん
23/03/17 16:34:27.72 m9SyQiz8a.net
そもそもフィールドをpublicにしてはいけない

282:デフォルトの名無しさん
23/03/17 17:23:57.35 iuC25oyk0.net
え?

283:デフォルトの名無しさん
23/03/17 17:26:38.74 0nIn5dFop.net
めんどくさいだろpublicでいいよ

284:デフォルトの名無しさん
23/03/17 17:33:20.91 calEMDbx0.net
自分一人で作って自分一人で使うのなら好きにすればいいんじゃね?

285:デフォルトの名無しさん
23/03/17 17:34:38.14 BZ7G7tLCM.net
フィールドをpublicにしてるWPFは?

286:デフォルトの名無しさん
23/03/17 17:36:00.83 MAARUdz9M.net
>>279
ストアドプロシジャ主体の昔からのシステムなので、おっしゃるようなコードファーストの考え方と噛み合わないところがあります。
いまは、ストアドプロシジャを作成することなく、コードファーストでデータベースへの指示はEFに任せるのかなぁ。

287:デフォルトの名無しさん
23/03/17 18:21:24.41 5m2XUDK70.net
URLリンク(learn.microsoft.com)
> 通常、フィールドは、プライベートまたは保護されたアクセシビリティを持つ変数に対してのみ使用します。

288:デフォルトの名無しさん
23/03/17 19:03:38.15 BZ7G7tLCM.net
>>287
通常は通常でしかないよ~
選択は自由
C#でプロパティを使いだしたのはget;set;自動実装で簡単になってからでそれまでは結構public fieldは使われてた
一番困るのは何でプロパティを使うべきなのか全員を納得させられる答えがない
WPFもUnityもフィールドをpublicにして使ってる
そこを突っついてプロパティにしろって言うのは違うだろと

289:デフォルトの名無しさん
23/03/17 20:24:18.39 5m2XUDK70.net
別にお前を納得させるつもりはないからどうでもいいよ
プロパティを使うべき理由なんて調べればいくらでも出てくる

290:デフォルトの名無しさん
23/03/17 20:32:49.25 BZ7G7tLCM.net
悪党のようなかっこええ捨て台詞痛み入ります!
こいつらしっかり考えたこともないし実際に使ってこなかったから言葉が弱いんだよな
誰も説得できないか弱さ

291:デフォルトの名無しさん
23/03/17 20:36:26.95 5m2XUDK70.net
教えてくださいお願いしますという態度ならともかく、そもそも話を聞く気が無さそうな奴に
無駄なレスバする気はないよ

292:デフォルトの名無しさん
23/03/17 21:00:27.77 irjN28+Dd.net
ノリノリでレスバしてますやん

293:デフォルトの名無しさん
23/03/17 21:17:05.47 BZ7G7tLCM.net
> 教えてくださいお願いします
馬鹿なんwwwwwww

294:デフォルトの名無しさん
23/03/17 21:18:19.46 BZ7G7tLCM.net
脳みそ空っぽでこれまでのC#の流れも知らず考えたこともない園児に教えを乞うやつはおらんw

295:デフォルトの名無しさん
23/03/18 03:30:36.17 fK7nmr8d0.net
今日も俺の勝ちだな

296:デフォルトの名無しさん
23/03/27 00:34:18.07 CcvtVsNT0.net
>>292


297:デフォルトの名無しさん
23/03/27 07:19:15.71 jIqJMMmT0.net
経験の少ないアホを納得させようというのはこんな風にたいてい徒労に終わる
フィールドを直接公開しないというのはオブジェクト指向の最も基本的なデザインパターンだが破りたきゃ勝手に破ってなぜ開発が難しくなったのか理解できず右往左往してりゃいいさ

298:デフォルトの名無しさん
23/03/27 09:11:42.72 LJBvMHRtM.net
抽象化を理解してないんだろう

299:デフォルトの名無しさん (ササクッテロラ Spf1-cFlm)
23/03/27 09:39:45.84 SNc8vC84p.net
隠蔽は失敗だったってみんな言ってるよ

300:デフォルトの名無しさん
23/03/27 10:48:24.00 jtLNmc6A0.net
unsafeみたいに強制ギブスつきでいいから非公開メンバにアクセスさせてほしいよな
リフレクションはさすがにダルすぎる

301:デフォルトの名無しさん
23/03/27 10:51:33.97 UhSbFhq6a.net
隠蔽したものに触ろうというのがそもそも間違い

302:デフォルトの名無しさん
23/03/27 11:28:30.92 4auoO0fAp.net
隠蔽先に美味しいものが沢山あるだがw

303:デフォルトの名無しさん
23/03/27 11:28:53.05 UhSbFhq6a.net
あさはか

304:デフォルトの名無しさん
23/03/27 11:46:13.73 SicRvVGw0.net
受け渡しの際になんの処理もしないんだったら直公開でええやん
なんかしたいときに一段かませばいいだけのこと

305:デフォルトの名無しさん (オイコラミネオ MM49-uluY)
23/03/27 17:03:35.68 yhvlQQOzM.net
>>297
いやいや
経験が少ないのはお前の方だろw
頭がガッチガチのゆとり人間だなと

> フィールドを直接公開しないというのはオブジェクト指向の最も基本的なデザインパターン
前にも書いたけどWPFもunityもpublicフィールドを使ってるよ
get setがpublicでフレームワークから要求されてないのにプロパティ使う意味なんてただの一貫性の問題だろう

c++のオブジェクト指向でもgetter/setter使ってる人間はほぼいない
でっかいOSSでもそんな使い方なんてしてない
何が何でもプロパティじゃなければいけない理由などないから使いやすい使い方をしてる

プロパティは実際に使い勝手が悪いので過去はあまり使われてなかった
自動実装で簡単に実装できるようになってから利用が進んだ
最初は自動実装もなくgetとsetのアクセス制限も別にできず意味不明だった

何より行数が不必要に消費されてコードの見通しが悪くなるゴミだった

306:デフォルトの名無しさん (アウアウウー Saa5-C7iR)
23/03/27 17:51:39.08 gC9awdqwa.net
書けば書くほどあさはかなのがわかるだけ

307:デフォルトの名無しさん
23/03/27 18:24:15.49 yhvlQQOzM.net
>>306
>>290

308:デフォルトの名無しさん
23/03/27 20:52:28.58 aN1DSR/9p.net
公開するものはpublic宣言、公開しないものにはprivate宣言
だからプロパティ何それ美味しいの?
って感じ

309:デフォルトの名無しさん
23/03/28 00:33:14.14 YDJV1nTC0.net
>>305
>何より行数が不必要に消費されてコードの見通しが悪くなるゴミだった
おっとJavaの悪口はそこまでだ

310:デフォルトの名無しさん (ワッチョイ c679-1XQV)
23/03/30 09:03:39.15 No035PWN0.net
プログラミン覚えられない
コツコツやるしかないよな

311:デフォルトの名無しさん (ワッチョイ 4d42-3uzD)
23/03/30 09:36:15.92 JRSIRLo00.net
>>309
C#が登場した当時はjavaとの比較で簡潔に書けるパターンが多くて感動したものだったな
プロパティーとかイベントとか

312:デフォルトの名無しさん (アウアウウー Saa5-C7iR)
23/03/30 12:35:15.47 VoLaXCIOa.net
フィールド公開するやつはプロパティの自動実装の意味すらわかってなさそう

313:デフォルトの名無しさん (ワッチョイ c679-1XQV)
23/03/30 15:16:30.07 No035PWN0.net
不等号ってたまにわからんくなる
不等号のどっちが大きいのか

time < 0
これでtimeが0を下回ったら、という意味になるよね
言語化の問題かな?うまく日本語にする方法ないかな

314:デフォルトの名無しさん (ワッチョイ ed33-hiv+)
23/03/30 15:25:41.12 x1Dq0GAt0.net
さすがに不等号が分からないとか言われると小学生からやり直せと言わざるを得ない

315:デフォルトの名無しさん (ワッチョイ 064b-IXX1)
23/03/30 15:40:05.75 V2UDEW3E0.net
左が基準。

316:デフォルトの名無しさん (アウアウウー Saa5-JPxZ)
23/03/30 16:25:37.22 op3q7K0Wa.net
0 > time
とか書かれてると腹立つが

317:デフォルトの名無しさん (ワッチョイ c679-1XQV)
23/03/30 16:33:28.12 No035PWN0.net
>>315
基準とは?
変更される値がtimeです

318:デフォルトの名無しさん (ワッチョイ d232-/phF)
23/03/30 16:43:38.01 lPrU8lpE0.net
大なり小なりの基準か、あるいはヨーダ記法は邪道か
オーバーロードとか左辺値・右辺値とか
最適化など色々問題があったっけね

319:デフォルトの名無しさん (アウアウウー Saa5-C7iR)
23/03/30 17:04:44.87 F0wEmCvia.net
>>317
記号見りゃどっちが大きいかなんて一目瞭然だと思うが
a<bでaの方が大きいと思う理由がよくわからん
ガリバートンネルには大きい口と小さい口があるが大きい人が入るのはどっちだ?

320:デフォルトの名無しさん (スップ Sdc2-I21X)
23/03/30 17:40:58.48 TCmRdoupd.net
powershellは$null比較の時、
左辺に$nullを書かないと思わぬ事故死する
C#とか普通の言語でかつ特に理由が無ければ、
左辺に比較対象、右辺にリテラル等の被比較値を書くのが一般的だろうね

321:デフォルトの名無しさん (ワッチョイ f5bb-Azxu)
23/03/30 17:41:31.12 99fPqKZf0.net
どっちかだけでよくね?って時々思う

322:デフォルトの名無しさん (オイコラミネオ MM49-3uzD)
23/03/30 18:53:38.63 2vbF8I0qM.net
40歳以上で勉強してもプログラムがわからないなら諦めたほうがいいと思うわ
あおりでなんでもなくコーディング自体が楽しくないなら時間を掛けるだけ無駄かと


それよりも
a >= b

a.以上(b) とでもメソッド掛ける
自分はかねてより複雑になりがちな条件判断は可能な限りメソッドにしたほうがいいと思ってるし
そう書いてる
範囲判定なんかメソッドにしてることも多い
日本語じゃないけどね…

323:デフォルトの名無しさん (オイコラミネオ MM49-3uzD)
23/03/30 19:00:14.79 2vbF8I0qM.net
以上と書いたは便宜的なもので実際は概念に合わせて書いてる

A>=Bは結局何なのかでメソッド名も変わり概念の抽象化ができる

A.は優秀(B)だとして数学の点数なら多い方が優秀
ゴルフのスコアなら低い方が優秀

そういうのを何度も書くなら< > なんてあちこちで書かなければいい

324:デフォルトの名無しさん (ワッチョイ c679-1XQV)
23/03/30 19:17:30.19 No035PWN0.net
>>319
その状態になったら、っていう条件式なんすね

325:デフォルトの名無しさん (アウアウウー Saa5-C7iR)
23/03/30 19:24:55.32 75d8b1lNa.net
>>324
同じことだろw
a<bの状態になったら真になる条件式はa<bに決まってるじゃん

326:デフォルトの名無しさん (ラクッペペ MM26-/W4P)
23/03/30 19:42:07.99 N4swSUwXM.net
> の読み方が大なりなのか小なりなのかが分からん!
って話じゃなくて?

327:デフォルトの名無しさん (ワッチョイ c679-1XQV)
23/03/30 20:17:04.21 No035PWN0.net
>>322
楽しくはないけど、嫌いでもないならそれは好きなのでは?

328:デフォルトの名無しさん (オッペケ Srf1-T1iO)
23/03/30 20:28:59.18 7FqJmDq/r.net
その子はちょっとアレな子だから真に受けない方がいいよ

329:デフォルトの名無しさん (オイコラミネオ MM49-3uzD)
23/03/30 20:30:40.05 2vbF8I0qM.net
>>327
40年前に入門したときはプログラムが好きで好きでたまらなかった

330:デフォルトの名無しさん (オイコラミネオ MM49-3uzD)
23/03/30 20:43:22.83 2vbF8I0qM.net
自分はdelphiからの移行組なんだ

21年前にC#に触れたときも面白くてたまらなかった
発売が待ち遠しかった
出てからもわからないところもあったけど毎日入門書を読んでた
本当に面白かった

空き時間に繰り返し何度も何度も読んでた
人それぞれなんだろうけど楽しくも嫌でもないって不思議だなと

331:デフォルトの名無しさん (オイコラミネオ MM49-3uzD)
23/03/30 20:46:16.57 2vbF8I0qM.net
最初に触れたのは22年前か
翌年C#が発売された
間違えてC++のパッケージ持ってって途中で気が付いた

332:デフォルトの名無しさん (ワッチョイ 02de-Z3T1)
23/03/30 21:33:45.06 Js/+Wk190.net
台所のシングルレバーの水栓、レバーの左側に赤、右側に青が書かれてる

お湯を出そうとレバを左側に持っていくと、真正面に青色が来るから冷水出るのかとと思って戻す
以後繰り返し

333:デフォルトの名無しさん (オイコラミネオ MM49-3uzD)
23/03/30 21:56:37.76 2vbF8I0qM.net
21年前はwebにもほとんど情報がなかった
目の前に大平原が広がってたようなその実暗闇だったような

情報はほぼ雑誌やわずかに発行されてた本からのみで同士もいない

ジェネリックがないC#1.0は地獄で実質2.0からが本番

ファイルの読み書きも簡単に出来ず苦労した
1.1までFileクラスなかったんだよな
2.0でFile.ReadAllTextが実装された

そういえば.net framewarkにどんな機能があるのかすら事前にわからなかった
MSなのでDirectXやサウンド機能やmidiAPIぐらい入れてくるだろうと思ってたけどなんもなし
delphiのコンポーネントセットと似た様なコントロール群だったので何とかなったけど何をしろと言うような状況だった

お世辞にも他人に勧められるような言語じゃなかった
状況が変わったのは2008年ぐらいかなあと

334:デフォルトの名無しさん (オイコラミネオ MM49-3uzD)
23/03/30 22:24:54.49 2vbF8I0qM.net
自分のC#の情報はCマガジンからでググったら目次が出て来た

2001年1月号
特集 C#
特集 Waveletの新アルゴリズム

なので実際は2000年の12月に出会ってる

335:デフォルトの名無しさん (ワッチョイ 713a-/W4P)
23/03/30 22:31:47.86 GQCpEY+j0.net
VisualStudioって当時おいくら万円しました?

336:デフォルトの名無しさん (オイコラミネオ MM49-3uzD)
23/03/30 22:48:08.99 2vbF8I0qM.net
>>335
自分はC#のみのパッケージだったけど1万5000円~18000円ぐらいだった気がする
非常に安い印象
ほぼ毎年delphiとBorland C++のアップグレードパッケージにお布施するより安い

徒歩圏内に家電量販店があるけど自動車に乗って買いに行った
帰ってきてインストールするまでが一番楽しかった
インストール中マニュアルだか見て思ってたのと違うと気が付いた

VS2005からstandardのアップグレードパッケージ?買ったけどその時は高かったとしか覚えていない

337:デフォルトの名無しさん (オイコラミネオ MM49-3uzD)
23/03/30 22:56:13.24 2vbF8I0qM.net
昔は言語は3万以上してたような思い出
大学の友達はなんも知らんから授業で使うFORTRANを買った
9万円ぐらいだと聞いたw

みんなで買うならC買えよって言ったら教えてくれたらよかったのにと激怒された

338:デフォルトの名無しさん (ラクッペペ MM26-R9+A)
23/03/30 23:10:10.52 DgcinTdpM.net
確か当時で年間20~30万くらいのサブスク製品が5万くらいでアップグレードできた覚えがある
数年後にはチーム開発向け機能強化で年間200万くらいまで値上がりしたので個人では手が出せない製品になってしまった
新規価格と違って更新価格はそこまで高くはないけど…

339:デフォルトの名無しさん (オイコラミネオ MM49-3uzD)
23/03/30 23:14:09.30 2vbF8I0qM.net
正直なところC#は実際2010年ぐらいでも全然日陰言語だった
ずっとふわふわしてた
まず実社会で使ってる人間に出会わない
メインで使ってても変わり者としか見られないしメリットは何なのか聞かれまくった

いつ頃メジャーになったのかもわからない

340:デフォルトの名無しさん (オイコラミネオ MM49-3uzD)
23/03/30 23:28:35.77 2vbF8I0qM.net
自分はCマガでC#に出会ったけどその後廃刊になってるんだよな
唯一あった言語雑誌が死亡してマイナー言語なんて一般人は触れる機会もないし
メジャーになる前はどうやってみんなであったんだろ?

341:デフォルトの名無しさん (ワッチョイ d2bd-uluY)
23/03/30 23:44:21.47 1ZDwYyUr0.net
C MAGAZINEのバックナンバーがKindleで1冊110円、1ポイント還元で買える。
一部の号は99円、1ポイント還元。
全部か分からないけどKindle Unlimitedでも読める。

342:デフォルトの名無しさん (ワッチョイ 4d42-3uzD)
23/03/31 00:07:13.86 jOaHfoqM0.net
>>338
2002のサブスクリプションが3万ちょっとぐらいで大安売りだった記憶
2008などBlendの付録でVSスタンダードがついてきて2万以下だった

343:デフォルトの名無しさん (オッペケ Srf1-T1iO)
23/03/31 00:28:25.94 tZM7csWar.net
唐突に長文連投自分語りが始まって何事かと思った

ヤバいな

344:デフォルトの名無しさん (ワッチョイ c6da-XzVq)
23/03/31 02:06:27.03 vkd6Fmu90.net
2005年ころの記事
URLリンク(atmarkit.itmedia.co.jp)

345:デフォルトの名無しさん (オッペケ Srf1-3uzD)
23/03/31 07:32:32.52 cQ6sy02ur.net
この自分語り長文の オイコラミネオ MM49-3uzD って
別のスレで++C++が気に入らなくて難癖付けてた人じゃね?

思ったよりおっさんというか中高年の世代なんだな

346:デフォルトの名無しさん (スッップ Sd62-M8+T)
23/03/31 13:47:23.91 7x1sg1mkd.net
おめでとう!未確認飛行アンチは未確認飛行アンチ自分語り長文おじさんに進化した!

未確認飛行に対する負の感情も長い期間かけて煮詰めてきたんだろう

347:デフォルトの名無しさん
23/04/04 12:31:06.77 GpqpiwCm0.net
本当にみんなReactiveUIとかでMVVMでアプリ作ってるのだろうか。
いまだにポトペタでイベントハンドラ書いてたから、この前はじめてリアクティブプログラミング知って浦島太郎なんだが、、、

348:デフォルトの名無しさん (ワッチョイ 5fe5-9P2W)
23/04/05 09:00:28.96 PNvz4EJs0.net
>>345
正解

349:デフォルトの名無しさん (ワッチョイ a75f-3rmh)
23/04/15 08:39:33.67 XM/mG1qA0.net
下記のコードでBIOSの情報を取得しようとすると例外が発生しました。

try
{
ManagementObjectSearcher s = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BIOS");
foreach (ManagementObject q in s.Get())
{
serial = GetSerialNo(q["SerialNumber"] as string);
break;
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}


例外:
System.Management.ManagementException: 無効なクラスです
場所 System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
場所 System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()

どうすれば取得できるようになるでしょうか。

350:デフォルトの名無しさん (オイコラミネオ MM5b-sFbk)
23/04/15 10:26:03.34 qKpGu0dKM.net
メッセージの通りだとクラス指定された対象が存在してないんだろ

今回の件はどうかわからないけど

そういう系のは取れる奴と取れない奴がある
運が良ければハードが対応してて取れることがあるレベルのもの

351:デフォルトの名無しさん (ワッチョイ a75f-GP2t)
23/04/15 11:26:04.37 XM/mG1qA0.net
ハードの問題ということですね
であればプログラムでは解決できないか

352:デフォルトの名無しさん (オイコラミネオ MM5b-sFbk)
23/04/15 11:33:42.20 qKpGu0dKM.net
何が欲しいのかはわからないけど他の手段があるかもしれないからググりまくるしかない

353:デフォルトの名無しさん (ワッチョイ 5f79-uE6i)
23/04/15 11:54:26.93 iq3ZlEDB0.net
そこでエラーは一般ユーザーで実行してたりで権限が無いとかかな
いったんpowershellのコマンドで期待する情報が出てくるか確認してみて
Get-CimInstance -ClassName Win32_BIOS | select *

354:デフォルトの名無しさん (ワッチョイ a75f-GP2t)
23/04/15 12:24:37.10 XM/mG1qA0.net
ユーザーのパソコンで発生しているので今すぐにはできないですが
確認してみます

355:デフォルトの名無しさん (ワッチョイ dfbd-baic)
23/04/15 12:44:53.19 +nozxCLK0.net
やったことないので知らないけど、管理者に昇格して実行してる?

356:デフォルトの名無しさん (オイコラミネオ MM5b-sFbk)
23/04/15 13:06:25.89 qKpGu0dKM.net
それだと権限エラー出てくるよね?

357:デフォルトの名無しさん
23/04/15 13:41:19.97 j+1WZq2Ha.net
漏れのPC のPowerShell では、以下は取得できる
$Win32_BIOS = Get-WmiObject Win32_BIOS
$Win32_Processor = Get-WmiObject Win32_Processor
$Win32_ComputerSystem = Get-WmiObject Win32_ComputerSystem
$Win32_ComputerSystemProduct = Get-WmiObject Win32_ComputerSystemProduct
$Win32_OperatingSystem = Get-WmiObject Win32_OperatingSystem

358:デフォルトの名無しさん
23/04/15 13:54:30.06 qKpGu0dKM.net
winformsで普通に実行してObjectは取れてる
もしかしてGetSerialNoの中身がおかしいのかもなあ

359:デフォルトの名無しさん
23/04/15 14:04:25.58 qKpGu0dKM.net
権限付与しなくてもSerialNumberは取れてる
取るだけならコード上は何も問題なさそうだけど

360:デフォルトの名無しさん
23/04/15 14:06:41.88 qKpGu0dKM.net
UWPにはSystem.Managementってないよね
仮想環境で実行してるって話じゃないよね
linuxで実行してるとかもないよね?

361:デフォルトの名無しさん (ワッチョイ 072d-iKPJ)
23/04/16 01:59:22.48 vEmeYhBU0.net
知恵袋(削除済み?)やらMSやらあちこちで聞いてるな

362:デフォルトの名無しさん (ワッチョイ caad-pY4I)
23/05/23 19:19:12.93 8LrZ0+ox0.net
susie plugin の呼び出しで、.spi 側の HANDLE *pHBInfo を out IntPtr pHBInfo でマーシャリングしたときに、
pHBInfo に直接返るのと、pHBInfo = Marshal.ReadIntPtr(pHBInfo) しないと取得できないプラグインがあるのはなんで?
マーシャリングにバグでもあるの?

363:デフォルトの名無しさん
23/05/23 21:42:32.85 N5YYf8uj0.net
脳にバグを飼ってる可能性も考慮
アンマネージドなC/C++で仮組みして意図通りC#にpinvokeできてるか確認しなよ

364:デフォルトの名無しさん
23/05/23 22:54:06.82 ZEkn3nOT0.net
>>362
プラグインがLocalAllocをLMEM_FIXEDかLMEM_MOVEABLEでやったかの違いと予想
Marshal.ReadIntPtrじゃなくてLocalLockしないとだめじゃね?

365:デフォルトの名無しさん
23/05/23 23:38:29.47 N5YYf8uj0.net
なるほど手元に20年前のソースがあるがHBInfo HBm共にLocalLockして生ポを得てるな
使い終わったら元のハンドルをLocalUnlockでFALSE(0)が返るまで呼び出してLocalFreeで開放しとる
プラグイン側がLocalAllocしたハンドルもしくは生ポを返す仕様だから何が起きてるのか判り難かろう

366:362
23/05/24 12:07:18.61 g/GCJKfM0.net
>>363-365
無事実装できた
thx愛してる

367:デフォルトの名無しさん (ワッチョイ 064b-A5UL)
23/05/25 20:21:17.15 nXz8gKZ10.net
Macしか持ってないんですが
Visual Studio入れてC#で
ウインドウズ用のアプリって開発できないのです?

ビルドしてウインドウズパソコンに
デスクトップアプリを配布したいんですが
無理ですか?

368:デフォルトの名無しさん (ササクッテロレ Sp03-Z1ij)
23/05/25 20:57:21.60 3+7hiXICp.net
>>367
出来たとして、100%互換か怪しいから
不具合出たり対応が面倒になるくらいなら
最初からWindowsで作れば良い

369:デフォルトの名無しさん (ワッチョイ 6f02-FIIW)
23/05/25 21:00:03.51 bhCTlW5B0.net
URLリンク(dev.classmethod.jp)
MAUIで出来るんじゃね、試してないから知らんけど

370:デフォルトの名無しさん (ワッチョイ 6f02-FIIW)
23/05/25 21:06:32.71 bhCTlW5B0.net
ちなみに出しておいてなんだけど、情報が少なすぎてかなり茨の道だとは思う

371:デフォルトの名無しさん (ワッチョイ d307-oJoQ)
23/05/25 21:13:07.94 8YBMC98J0.net
仮想マシン使えばいいじゃん

372:デフォルトの名無しさん (ワッチョイ 064b-A5UL)
23/05/25 21:29:44.23 nXz8gKZ10.net
早速のレスありがとうございます

C#じゃないとダメだってわけじゃないんですが
子供の学習用デスクトップアプリつくるのには
VisualStudioが楽で綺麗に作れますよね?
学校で配られてるタブレットPCで動かしたいんですわ

Scratchで作ってたけど、画像がいっぱいになるとすっごく思いし
中身見られるしってので開発環境探してました

ウインドウズPC購入か、仮想マシンですか、、、
考えます

373:デフォルトの名無しさん (ササクッテロレ Sp03-Z1ij)
23/05/25 21:36:27.09 VIA7OmJjp.net
javascriptとか使ってwebアプリで作れば?

374:デフォルトの名無しさん (ワッチョイ 7a2d-FIIW)
23/05/25 21:42:02.72 RgPRQW4i0.net
Macを買った自分を恨んでください

375:デフォルトの名無しさん (ワッチョイ 064b-A5UL)
23/05/25 21:48:24.70 nXz8gKZ10.net
ありがとう
ウェブアプリとか難しそうですね
情報集めてみます

376:デフォルトの名無しさん (ブーイモ MM86-F7IQ)
23/05/25 22:33:11.01 y/g7SJeAM.net
>>372
そのタブレットがARMなのかIntelなのかとかも一応気にした方がいいかも

377:デフォルトの名無しさん
23/05/25 23:51:38.82 8mbdG19r0.net
いやまずそのタブレットのOS確認しろ

378:デフォルトの名無しさん
23/05/26 00:01:08.77 CD6Q2dXa0.net
TrueType と OpenType フォントを判別する方法はないのだろうか

379:デフォルトの名無しさん
23/05/26 10:33:06.68 kol25jaP0.net
本来は1回しか実行されないはずのメソッドが、何かの条件を満たすと複数回実行されてしまいます。
呼び出し階層を辿ろうにも、呼び出し元が数十か所あり、その呼び出し元も別の多くの場所から呼び出されている為、辿るのが困難な状況です。
また、各呼び出し階層内でのループや分岐・メソッド呼び出し時の引数も多い為、絶望的な感じです。
こういう場合はどうやって原因を特定すればいいのでしょうか?

380:デフォルトの名無しさん
23/05/26 10:41:26.90 0Cl+beDwp.net
>>379
コールスタック見ろよw

381:デフォルトの名無しさん (ワッチョイ 4f54-C1+R)
23/05/26 10:44:43.31 kol25jaP0.net
>>380
すみません。
外部ライブラリとか実行用の周辺機器が揃ってない為、実行出来る環境がないのです。
なので、報告受けて、Visual Studio の Code Lens・呼び出し階層表示だけ見てなんとかしようとしてます。

382:デフォルトの名無しさん (ササクッテロレ Sp03-Z1ij)
23/05/26 10:48:20.08 0Cl+beDwp.net
>>381
再現出来なきゃ無理って言う

383:デフォルトの名無しさん
23/05/26 11:25:23.48 NguYPBNpa.net
>>381
呼び出し階層が表示できるならそこ調べりゃいいじゃん


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch