X



C#, C♯, C#相談室 Part97
0001デフォルトの名無しさん (ワッチョイ d707-bKpv)
垢版 |
2022/12/21(水) 10:18:38.02ID:DxBIri9+0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。

C#, C♯, C#相談室 Part96
https://mevius.5ch.net/test/read.cgi/tech/1639965805/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0191デフォルトの名無しさん (オイコラミネオ MM07-88l+)
垢版 |
2023/01/27(金) 22:49:09.08ID:Ze4DWSK5M
>>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の学習と言う学習時間フルコースプロダクト
ある意味超人オリンピック
0197.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/28(土) 07:46:47.27ID:Akv+btg40
>>195
ElectronってVScodeだけじゃね?
OfficeとかWinUI3っぽいしVSもC#じゃんね?
UnityもUI部分の画面はC#みたいだぞ
0199デフォルトの名無しさん (ワッチョイ e301-s91j)
垢版 |
2023/01/28(土) 09:48:55.24ID:p3y/mDFs0
>>191
ありがとう

そりゃいつまで経ってもWinFormsが無くならんわけだわ
なんなら一番成功してるまである
0202デフォルトの名無しさん (ワッチョイ e301-s91j)
垢版 |
2023/01/28(土) 10:42:44.43ID:p3y/mDFs0
>>200
VS2022でなんか対策入ってなかったっけ?
0203.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/28(土) 11:23:23.91ID:Akv+btg40
>>202
.NET7じゃね?
0210デフォルトの名無しさん (ワッチョイ 0b01-9yTq)
垢版 |
2023/01/28(土) 18:34:56.52ID:x9KLfrKP0
WinFormsだけを強化/ブラッシュアップして行くだけでいいのに
今現在Microsoftが決定してることは全部間違った方向
0211.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/28(土) 18:37:51.27ID:Akv+btg40
>>207
正直余裕
0212.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/28(土) 18:39:12.56ID:Akv+btg40
HTML,CSS,JavaScriptほど密結合の強い組み合わせないと思うけどな
WinFormもそうか
0213デフォルトの名無しさん (アウアウウー Sa47-rfgy)
垢版 |
2023/01/28(土) 18:51:54.18ID:DKSWYQK4a
>>206
現実には無いね
Web開発ではHTML/CSSですら自分で書けるデザイナーは稀であり、デザイナーはお絵描きするだけでHTML/CSSはエンジニアが書くのが普通だ
ましてやC#エンジニアしかまず目にしないXAMLを扱えるデザイナーなんて存在しない
0216デフォルトの名無しさん (ワッチョイ e301-s91j)
垢版 |
2023/01/28(土) 21:27:00.01ID:p3y/mDFs0
XAMLでも何でもいいから
ひとつこれと決めてしっかり枯れるまで面倒見てほしい
0219デフォルトの名無しさん (ワッチョイ 8379-jh2e)
垢版 |
2023/01/29(日) 01:16:07.51ID:R24XfIrD0
>>209
>Windowsデスクトップアプリの次のスタンダードはWebView2に決定してるよ
もう2ひねりぐらいしないとコレ常用は厳しいなあと思う
HTAの再発明の上に実行環境がフォルダ掘ったりで劣化しとるのにスタンダードになるとは到底思えない
外人にも概ね評判悪いみたいだし
0226デフォルトの名無しさん (ワッチョイ e301-s91j)
垢版 |
2023/01/29(日) 13:27:12.72ID:8bst+jr10
GUI黎明期は間違いなくコードでUI記述してたわけで
先人がこれはあかんと否定してきたものを今更リベンジさせる必要があるんだろうか
0227.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/29(日) 13:50:59.81ID:i3THky500
今WinUI3で5chブラウザ作ってるんだがレスのアンカーだのハイパーリンクだと画像のリンクだのを抜き出す処理を考えてるんだがどうしたものか迷ってる
当然その書かれた位置にそのボタンやリンク貼り付けなきゃいけないんだがアンカーやリンクとその他記事は同じ行にはない(<br>で区切られてる)と仮定して<br>でSplitかけて行ごとでRegexとかを行おうと思ってるけどこの方法あってるか?
0228デフォルトの名無しさん (ワッチョイ e301-s91j)
垢版 |
2023/01/29(日) 13:55:11.83ID:8bst+jr10
>>227
自前でパーサー書くよりもその手のスクレイピングライブラリは数多あるからそれ使った方が早いと思う
0230デフォルトの名無しさん (アウアウウー Sa47-6BSU)
垢版 |
2023/01/29(日) 15:15:12.51ID:Inli+tITa
WebViewならこれでlinkClickedにjsで独自処理書くなりそこからC#呼び出しするなり

<a xxx="~" href="~" yyy="~" >○○○</a>

<span class="link" data-info="ここに情報を入れる" onclick="linkClicked(this.getAttribute('data-info'))"
>〇〇○</span>
0233.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/29(日) 16:56:28.41ID:i3THky500
>>229
置換だとコントロールが作れない(ハイパーリンクコントロールなどがそれぞれ必要)
0234.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/29(日) 17:00:22.89ID:i3THky500
WebViewでいけたらいきかったけどMVVMのBingingができんかった…(要素名.NativeToString(HTML))なんだけどXAMLにそれがなかったわ…orz
0236デフォルトの名無しさん (ワッチョイ 1a42-+rQD)
垢版 |
2023/01/29(日) 18:01:46.16ID:1KUwXnGJ0
>>234
1.ビヘイビアを作る
2.ユーザーコントロールにWebViewのっけて依存関係プロパティーを設置してVMからコントロール
3.サービスを作ってVでWebViewのっけてからVMにインジェクションする

このどれかが普通かな?
0237.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/29(日) 19:07:46.52ID:i3THky500
>>236
なるほどサンクス2が簡単そうかなぁ
0238デフォルトの名無しさん (ガックシ 0663-cnaq)
垢版 |
2023/01/29(日) 19:21:55.55ID:XFhpsu3B6
初歩的な質問だと思うが書き込み失礼
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の中に何書けばいいかわからない。
0239デフォルトの名無しさん (ワッチョイ 8379-jh2e)
垢版 |
2023/01/29(日) 19:50:03.63ID:R24XfIrD0
>>238
else
{
serialPort.Write(初期位置);
}
で何か問題あるのかな?
初期位置が何を示すのか知らんけど、シリアルはフロー制御なしなら基本垂れ流しになるから、
開始とか中断の概念は持たない
else節で100ms毎に初期位置座標を送り続けるのが嫌なら送信フラグでも持って送ったか判定すればいいのでは
0240デフォルトの名無しさん (スップ Sd5a-xF8Z)
垢版 |
2023/01/29(日) 20:04:34.68ID:qu76jy1yd
シリアル通信ってただのbyte列のやり取りでしかなく、中断とかの概念は存在しない。
Arduino側はreadlineかscanfかやってるだけでしょ?

この場合はifのtrue側で$"set:{},{}"、false側で$"default:"を送るのがいいんじゃない?

「初期の段階に戻す」とやらが何をするのかは知らんが、C#側が黙ってたらArduinoは何もできない
0241デフォルトの名無しさん (ガックシ 0663-cnaq)
垢版 |
2023/01/29(日) 20:11:58.96ID:XFhpsu3B6
>>240
Arduino側はSerial.availableで信号読み取ってる
それがいけないのか
初期の段階に戻すのは、(Arduino側でサーボモータの初期位置を0度にしてるから)指定範囲を出るとサーボモータが0度戻るようにしたい。(つまり信号が送られる前の状態に戻したい)
でもあんまりArduinoの話すると板違いって発狂するだろ
0245デフォルトの名無しさん (ワッチョイ 0e02-cnaq)
垢版 |
2023/01/30(月) 11:22:46.40ID:SqjDQYar0
>>243
ツンツンしてんな~
相談室なんだからいいだろ
0246デフォルトの名無しさん (ワッチョイ ffad-+rQD)
垢版 |
2023/01/30(月) 19:52:43.52ID:afDHhw4l0
パソコンのWebから秀丸の文書を開きたいのです。例えば、C:\\Data\\sample.txtというファイル
で、URLスキームというのを見つけました。
https://qiita.com/kojimadev/items/74100c8557a92939ef69
ここでレジストリに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>
としました
0247デフォルトの名無しさん (ワッチョイ db4f-P3d0)
垢版 |
2023/01/30(月) 20:11:57.30ID:q0Wux2Rd0
なんか勘違いしてるっぽいな
URLスキームで、hidemaru.exeではなくて自作のexeに関連付けて、
自作のexeでmainに引数として渡されてきたURLを加工して
hidemaru.exeを改めて起動するって話だよ
C#でないとできないことではないし、C++に慣れてるならそれでCreateProcessすればいいんじゃない?
0248デフォルトの名無しさん (ワッチョイ ffad-5T4A)
垢版 |
2023/01/30(月) 21:34:40.15ID:afDHhw4l0
ああ、そういうことかあ、2段階踏まないとダメなのね
自作の簡単なC言語のHello!みたいのを作ってその引数に
http:---が入ってきてそれを加工して秀丸を起動しないといけないってこと?
htmlファイルだけで直接起動は出来ないのね
0251デフォルトの名無しさん (アウアウウー Sa47-DSsr)
垢版 |
2023/01/31(火) 05:00:45.55ID:JnYo5yDia
もし、ブラウザのHTML から、ローカルPC 内にアクセスできたら、
世界中のパソコンが乗っ取られているはずw

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

Ruby on Rails などのLinux ウェブ系をやっていない、
Windows の香具師は、平気で恐ろしい事を考える
0252デフォルトの名無しさん (ワッチョイ 3b5f-Cojd)
垢版 |
2023/01/31(火) 07:03:33.59ID:eeFPm4F70
>>246, 248
カスタムURLスキームでそういうことをする場合は、わざわざC#で作らずとも、一旦WindowsビルトインのWSH(JScript)で中継してパラメータをサニタイズするといいよ(レジストリ登録(*)さえ済ませておけばどこでも動く)

(*)下記のようにwscript.exeに対して「パラメータをサニタイズ+それを任意のプログラムに渡して起動するJScriptのパス」と「パラメータ」を渡す
C:\Windows\System32\wscript.exe "C:\script.js" "%1"
0255デフォルトの名無しさん (オイコラミネオ MM63-+rQD)
垢版 |
2023/02/02(木) 21:06:57.50ID:pqzuUQeLM
いい加減MAUI君に構うのはやめろよ
全然C#固有の問題じゃないし…

winforms,WPF,ストアアプリ、UWPで専ブラ作ってたけど
そういうところも含めて自分で考えて実装するのが醍醐味じゃないのかなあ?

考えてもわからないなら過去にオープンソースで開発されたものがたくさんあるんだからそれを見て見るとかやりようがあるんじゃないかと
0257デフォルトの名無しさん (ワッチョイ 1301-ksrJ)
垢版 |
2023/03/07(火) 21:33:28.99ID:eLRrbAoH0
C#の妙技はイベントにあり
0259デフォルトの名無しさん (アウアウウー Sa89-lsaJ)
垢版 |
2023/03/11(土) 12:56:48.21ID:nD1lGm6ya
皆さんnintって使ってますか?
他とやり取りすることなく、メソッド内で完結するただの変数として使う場合、とりあえずintを使いますよね
でも今後64, 128ビット幅が主流になったときを考えれば、nintって書いといた方がいいですよね?(そんな時代がくるかはともかく)
少なくともコンパイルされた時点でnintはintと同等かそれよりも効率がいいと(個人的に)思うんですが、でも誰もnintなんて使っていません
32ビット(何なら8でも)以上あれば問題ない、というケースでnintを使わない場合というのは、単にintの方が慣れてるからだけなんでしょうか?
0260デフォルトの名無しさん (スップ Sd7a-s0vD)
垢版 |
2023/03/11(土) 13:18:11.95ID:EyA4I9HNd
nintとnuintはIntPtrとUIntPtrの別名なので、ポインタ(かポインタオフセット)にしか使わない

つまりはプラットフォーム依存であることの明示なので、
他のint型との相互作用(大量に出てくるだろうね)を考えるだけでかなりの脳のリソース持ってかれる
0262デフォルトの名無しさん (オッペケ Sr85-JIpj)
垢版 |
2023/03/11(土) 14:13:05.01ID:DhHi6Ld4r
結局既存のメソッドを呼び出したりするときにintにキャストしなきゃいけなくなるんでしょ
ごくわずかに数字演算のパフォーマンスが改善したところで毎回キャストするコストのほうが余計にかかりそう
0271デフォルトの名無しさん (ブーイモ MM9a-9Bo7)
垢版 |
2023/03/16(木) 22:30:13.17ID:XMsdgbaMM
データベースの列名に合わせて、クラスのフィールド名を日本語で表そうと思います。
しかし、インテリセンスで頭文字でフィールドの候補を選択する便利さはアルファベットのフィールド名に劣るので、合わせ技で次のようにフィールド名を定めようと思います。

public string BookName__書籍名;

アルファベットだとより複雑な意味を持つ名称でニュアンスがつかみにくいので、このように合せ技を、使おうと思うのですがどうでしょうか。
0273デフォルトの名無しさん (ブーイモ MMee-Q6zA)
垢版 |
2023/03/16(木) 23:30:46.22ID:nNGsntyCM
>>271
>public string BookName__書籍名;
これだと英語名その対訳の組み合わせを間違えないように覚えてないとだめなのでメンテナンスコストがあがるだけな気がする
データディクショナリを整備したりインテリセンスのmigemo対応を頑張ってみるといいんじゃまいか?
0275デフォルトの名無しさん (ワッチョイ 757f-9Bo7)
垢版 |
2023/03/17(金) 00:52:09.32ID:5jT41ER00
>>273
たしかに。
日本語名称だけにしておこうかと思います。
ドット打って、一覧から素直に候補を選びたいと思いました。
0276デフォルトの名無しさん (ワッチョイ 757f-9Bo7)
垢版 |
2023/03/17(金) 00:54:00.54ID:5jT41ER00
>>272
そういう上司いません。いるけど、専門外。
0279デフォルトの名無しさん (ワッチョイ 8e42-JIpj)
垢版 |
2023/03/17(金) 12:44:03.16ID:H2liKR380
普通はフィールドを単独の変数として扱わずにテーブル毎のクラスを作って管理する
DapperやEntityFrameworkなどのORMでは強制的にそうさせられる
これを機にORMへステップアップしてみるのも面白いと思うよ
0286デフォルトの名無しさん (ブーイモ MMbe-kA1E)
垢版 |
2023/03/17(金) 17:36:00.83ID:MAARUdz9M
>>279
ストアドプロシジャ主体の昔からのシステムなので、おっしゃるようなコードファーストの考え方と噛み合わないところがあります。

いまは、ストアドプロシジャを作成することなく、コードファーストでデータベースへの指示はEFに任せるのかなぁ。
0288デフォルトの名無しさん (オイコラミネオ MM3d-JIpj)
垢版 |
2023/03/17(金) 19:03:38.15ID:BZ7G7tLCM
>>287
通常は通常でしかないよ~
選択は自由
C#でプロパティを使いだしたのはget;set;自動実装で簡単になってからでそれまでは結構public fieldは使われてた

一番困るのは何でプロパティを使うべきなのか全員を納得させられる答えがない

WPFもUnityもフィールドをpublicにして使ってる
そこを突っついてプロパティにしろって言うのは違うだろと
レスを投稿する


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