ふらっと C#,C♯,C#(初心者用) Part152
レス数が1000を超えています。これ以上書き込みはできません。
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part151
https://mevius.5ch.net/test/read.cgi/tech/1621129559/
■関連スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
https://referencesource.microsoft.com/
・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
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured GoogleChromeにあるイメージファイルをデスクトップにドラッグすると大抵の場合イメージファイルを保存できますが
これをPictureBoxに直接ドラッグしてイメージを表示させたいです
※URLを取得してからのダウンロードだとjavascriptなどで読めないイメージが多いので他の方法を探しています
これはクリップボードを経由してるんでしょうか?もし経由しているとしたらクリップボードのフォーマットは何を使ってるんでしょうか。
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.dataformats?view=net-5.0
それ以外ならどういう仕組みなんでしょうか、何か手掛かりになるものがあれば助かります。
もし無理なら特定フォルダ作り定期的に監視して増えたファイルをロードしようと思いますが
できればコントロールにドラッグしたいです、よろしくおねがいします。 >>3
返答なさそうなので相談室に移動しました
スレ汚しになってすみませんでした >>4
最近の5chはだいぶ過疎ってきてるし0時過ぎたらそうそうレス付かないぞ 画像を握ってるChrome自身が好き勝手できることに疑問はないが
ブラウザから他のアプリのコントロールにってなんかできる気がしないぜ >>6
Windows純正エクスプローラーとかってChromeからドロップされた画像をわざわざ再度ダウンロードしてるってこと? いやでもドロップされたURLからダウンロードし直す、って形だと例えばリファラー見てくるPixivの画像とか保存できないよな
でも出来るって事は何かしら画像データを直接貰う方法あるんだと思うけど、自分も気になってWinFormsでテストしてみたらそれらしきドロップ情報は見当たらない
DragImageBitsが一見そうっぽかったけど、これは元データではなくドラックドロップするときのサムネ画像だった >>9
バカなん?
Chrome自身が表示するための画像持ってるんだから単にファイル保存してるだけだろ
そこに疑問があるの? サムネイルがちっちゃかったらうんこみたいな画像表示されんじゃないの? >>10
???
Chrome → ExplorerへのドロップのみChrome側の特殊配慮でファイル保存してくれるって主張?
そういう事を言いたいんであればTablacs等の3rdパーティー製アプリでも同様の挙動してくれるから送り先ではなくドロップ先が何かしらの操作をしてるものだと思うんだが? >>10
なんでそんな煽り口調なのか分からんけど
D&Dって実際に処理するのはドロップされた側なのよ
だからファイルとして保存するのはExplorerの仕事
Explorerからデータくれって言われてからデータを渡す遅延処理の仕組みはある >>13
Chrome以外のブラウザでも同じ挙動なのと、上で上げたようなExplorer以外のアプリでもDDからの直接保存を実装可能な点も考慮したら受け取る側が処理してるとみるのが普通だよな
ただWinFormsのドロップイベントからはそれらしき情報は見当たらないが >>12
お察しの通りChromeがローカルファイル保存してそのパスを伝える >>13
まあ公平に見て>>9は煽られてもしょうがないと思うw
D&DでURIをもらって〜、なんてありえないでしょう(笑)
受け渡しているのはChromeのキャッシュフォルダーの中の画像ファイルの
パスに決まってるよね普通に考えて。
しかし、Chromeがビットマップ自体のD&Dを提供してないのは
セキュリティー上の理由なのか単なる手抜きなのか、
何なんだろうね。
今のは知らんけどちょっと前のFireFoxとかだと普通に出来たけどな >>15
当然それも想定したけどWinFormsのドロップイベントからはローカルファイルパスらしき情報は見当たらなかった
FILEDESCRIPTORW構造体からcFileName読み取ったりとかまでしてみたけど >>16
だからURI貰って〜があり得ないっていうのは9で言ってるだろ
それだったらリファラー見て弾いてくるような画像は保存不可能なはずだからな
そしてキャッシュ渡しに関しては>>17 >>19
俺はずっとWinFormsのドロップイベントの話してるけどな >>18
そうですか。
まあそれはともかく、>>9が言うように、Chromeからエクスプローラに
画像をD&Dした時に何が行われているかについては
どこにも疑問の余地はないと思うけどね。 >>21
失礼
× >>9が言うように
〇 >>10が言うように >>22
12の俺のレスや>>13は間違ってるって主張? まぁキャッシュ渡しならキャッシュ渡しで良いからどうやってローカルパス取得出来るのか具体的に教えてもらいたいな HTML から、OS のネイティブ内には、直接アクセスできない
つまりブラウザは、OSのAPI を使って、
ファイル保存ダイアログを呼ぶ事しかできない
ファイル保存ダイアログは、ユーザーが直接操作する事しかできない。
ブラウザが操作する事はできない
もし、HTML から自動的に操作できれば、ローカルPC 内をいじられてしまうから、
ユーザーの直接操作しか認めていない >>26
エクスプローラーからのドロップが直データではなくstring[]のファイルパス配列って事は当然知ってるからそれに習って模索してみた訳だが結果は>>17
まぁ見逃してるかもしれんから、キャッシュパス渡してる説唱えてるやつは是非とも具体的な取得方法を書いてもらいたいが >>25
ドラッグ操作はHTMLやjsによるものではなくブラウザの機能だからその説明はちょっと違うけどな
んでChromeって恐ろしい頻度でCreateFileやReadFile、WriteFile呼びまくってるからユーザーの許可なくファイル操作なんて日常茶飯事にやってることだし >>23
間違っているかどうかは知らない。
何を言ってるのかよく分からないから。
Chromeからエクスプローラに画像ファイルをD&Dした時にエクスプローラ側がもらう情報は
Chromeのキャッシュの画像ファイルのパスなのは疑問の余地がない。
エクスプローラはドロップ先のフォルダにその画像ファイルをコピーしてるだけ。
人の話聞かない人みたいだから繰り返すけど、重要なのは上記に「疑問の余地なんかない」ってこと。
だから疑問の余地なんかないと指摘してる>>10は正しいと言ってる。 >>29
だーかーら、キャッシュパス説を唱えるなら具体的なパス取得方法書いてくれよ
ググってもんな情報出てこないからきっとスーパーハッカーのお前しか分からないっぽいのでぜひとも教えてくれ >>31
GetFileContentNamesと同じようなことは既にやってて、FileGroupDescriptorWは単なるファイル名しか取得できずキャッシュパスは取得できなかったが
GetFileContentは試してみる価値ありそうだな
この方法だとしたらキャッシュからの取得ではなく画像データすっぱ抜くってことになりそうだが >>30
パスじゃなくてIDataObject
クリップボードで使ってるのと同じ
source側でIDataObjectを生成してDragEventArgsに入れてdestination側で受け取れるようにしてる
>>3
ブラウザによって対応フォーマットが違うので
IDataObjectのGetFormats()でアプリ別に対応フォーマットを確認して望ましいフォーマットの順に処理する >>33
やっぱりローカルファイル渡しではなくバイナリ渡しっぽいな
>>31を.NET5で試すとGetFileContentFromHGlobal内でリフレクション使ってローカルフィールドにアクセスするところで例外出るからhsource.dot.netでも見て調整しなきゃダメそうだが >>20
WinFormsって.NET FrameworkのAPIだからC#の話題じゃないじゃん >>35
「C#固有の話題じゃないじゃん」なら100歩譲って分かるけどC#の話題ではあるだろ C#って何かしらのフレームワークと組み合わせで使われるのが普通だしな。
システムコールだけでWindowsのウィンドウ開くアプリ作れってか? 完璧に出来たわ
>>31のAnswer内のコードを丸々コピペして、
private static MemoryStream GetFileContentFromHGlobalメソッド内の"GetDataFromHGLOBLAL"を"GetDataFromHGLOBAL"に修正すればちゃんとリフレクションでメソッド取得出来て画像データのMemoryStreamゲットできる
下らないタイプミスあって笑ったが素晴らしいアンサー >>37
聞く場所が違うぞって誘導するだけでいいでしょ どうでもいいけどリフレクションで取得した動的メソッドもC#9の関数ポインタから問題なく呼べるんだな
>>38で言うと
var func = (delegate*<object, string, IntPtr, object>)getDataFromHGLOBLALMethod.MethodHandle.GetFunctionPointer();
として第一引数のobjectにインスタンス渡したら普通に画像ゲットできた なるほど、キャッシュパス説か。
確かに、ブラウザは画像があると、それをキャッシュファイルに保存する
だから、2回目以降は、そこから再読み込みするのだろう。
それをブラウザ内のメモリに読み込んで、それをOS のAPI に渡すのだろう WndProcオーバーライドしてWMドロップ等からバッファ取得してUnmanagedMemoryStreamからImageに変換みたいなスマートな方法もありそうだな
そもそも自分発のお題ではないけどDDでブラウザから画像直接貰えるのは便利だからもっとスマートな実装模索してみる >>41
キャッシュ渡し説は完全論破されてるけどな
ブラウザが画像をどう読み込むかにおいてはキャッシュが利用されるのは当然だがそれはこの話とは関係ない >>30
確かにキャッシュされたファイルのパスなんか提供されてないねw
今確認した。
偉そうな口をきいて失礼しました。 >>47
別に画像取得さえできれば受け取りアプリ側からしたら何でもいいから重要ではないけど>>10みたいにドヤ顔で虚報広めてる奴いたからな
ただ不思議なのはなぜ標準のやり方ではFileContentsはnull返してくるんだろうか
IDataObjectが進化に追いつけてないってことなのか >>48
>>10を書いたのは俺だけどキャッシュなんて一言も言ってないじゃん >>47
キャッシュかどうかが問題ではないが、ファイルかどうかは大事なところ
>>49
まあたしかに>>10ではファイルとしか言ってないな
それだと普通に考えればキャッシュか一時ファイルかになるだろうけど
キャッシュに決まってるだろって言いだしたのは>>16か >>49
別に俺はお前がキャッシュ渡しをしてると主張したなんて一言も言ってない
お前が虚報を言ってると言ったまで >>52
キャッシュ重要なの?
ってレスに対して>>10を出して来たのは他ならぬ君のハズだけど
脳みそバグってない? >>54
脳みそバグってるのはお前な
とにかく俺はお前が虚報を言ったとしか言ってないのは明確
んで実際にお前は間違っていた
Chromeがファイル保存をしているのではなくファイル保存をしているのはドロップ先のプロセスって結論出た訳だし >>55
じゃあ、キャッシュと関係ないレスなんでしたの?w
バグってるだろw >>56
どういうレスしようが5chなんてそれぞれの勝手だろ?
まぁそういう意味じゃお前が虚報を撒こうが勝手だけどそれを非難するのも俺の勝手だからな
主題で反論できないと分かるや論点ずらして小さい箇所で一点突破を目指すってまるでF爺にコテンパンにやられた西村博之みたいなカスだなお前 文字化けってほんとつらいっす
ありとあらゆるところに文字化けが潜んでて作業の邪魔する
ぐぐりまくって、バイト列に変換してから目的の文字コードに直す方法を習得したんだけど
これはもしかして万能な方法なんじゃないかと期待してるんだけど
まぁそのうち試してみよ・・・ >>60
予め文字コードが分かってるなら何も難しい話は無いはずだけど、
色んなテキストファイル読み込んだり色んなHTML巡ったりしてて文字コードが不規則って事? >>57
半年くらい前にひろゆきがオブジェクト指向の説明をしようとして非OOPなただのMath系関数の説明し始めてて悲しかった
2ch開設者って言うからプログラミングの腕もそれなりだと思ったら初歩的な事も理解してないレベルだった あめぞうBBSに手を加えただけだし、
転送量危機の時だって本人は何もしてない >>62
ひろゆきはパクリこそ至高ってゆってるぞ
ソースなんてパクッってナンボ、ほんで文系 >>61
今やってるのはメール受信ですわ
テストのために同じメーラーから同じ文章をgmailアカウントに送っているんだけど
なぜかアプリで受信したときの件名や本文とかの文字コードがUS-ASCIIになったりISO-2022-JPになったり。
ISO-2022-JPで送られてきたものをISO-2022-JPで変換すると、これまた文字化けすることに気づいて、対象の文字コードをまず取得して、それから変換しなきゃいけないと気づいてようやく今解決ですわ (解決したと思い込んでる段階 >>67
メール関連全く分からんけどヘッダのContent-Typeにcharset書かれてるならHttpClientみたいに自動エンコしてくれないん? つかまあ7bitとかいいながらSHIFT_JISで送ってくるメーラーとかあるけどな おぢちゃんたち、ありがとうございます
これ>>67、わかりやすそうなのでいろいろ考えてみます
今日は疲れたのでまた明日にでも。
ずっと没頭してやってたんで、プログラム自体はいい感じに動くようになってきました
今回の文字コードの問題は再現性が低くてやっかいです
FromやToでこういう↓日本語交じりのアドレスを使ってテストしてると
ごちゃん株式会社<***@***.com>
ほんと、たま〜に「ごちゃん株式会社」の部分の文字がおかしくなる
連続してテストしても再現しないけど、時間置くとたまーに・・・
これきた、と思ってもう一度やると再現しない
もちっと勉強してきます MIME-B や MIME-Q ってエンコードは知ってる?その仕様に合わないものが届いたりするってこと? 全く同じもの送りつけて再現しないならRFC以前の問題な気もするけど >>71
馬鹿、ここは若い衆多いぞ
ちょっと目を離すとレスバトルだ 他の人が投げたメールを自分で作ったメールクライアントで受けると化けるものが
あるってい場合には、すべてに自動で対応するのは不可能に近いかな
みんながみんなちゃんとした完全なメールクライアントである保証(設定も含めて)は
ないから
自分で作ったメールクライアント同士で化けることがあるなら、基本は実装を
疑ってみる必要があるけど途中のメールサーバに問題があるとかないかな
本文は何かのエンコードでパック化しちゃえば問題起こらないだろうけど、
あて先とかSubjectはサーバ側でいじることも出来るので何か変えられて
いるとか・・・最近はそういうことないのかな Xamarinで他のタプページの値を取得しようとしてますが上手くいきません。
kadou.xamal.cs)
public sbyte Eigyou_kaisi => sbyte.Parse(eigyou_kaisi.Text);
public sbyte Eigyou_owari => sbyte.Parse(eigyou_owari.Text);
kihon.xaml.cs)
set_eikaisi = kadou.Eigyou_kaisi;
//営業時間の開始
set_eisyuryou = kadou.Eigyou_owari;
//営業時間の終了(時) >>76
経過報告ありがとう。
引き続き調査よろしく。 >>77
kadou k1 = new kadou();
set_eikaisi = k1.Eigyou_kaisi;
//営業時間の開始
のようにインスタンスを作成したらエラーが直りました。 vs2017から2019移行してInstallerProjectをいれたところ
setupプロジェクトのビルドで失敗します
2017のときはエラー一覧に成功数とかでてたのですが
2019では何も出力されないのですが
ここにエラー出す方法ありますか?
ツール、オプションのビルド設定で出力の詳細を
かえてみたものの変わりありません 重いループ処理で「くるくる」を表示させたいのですが、上手くいきません。
ボタンを押したら、10秒以上固まったような状態になります。
try
{
cvLayer.IsVisible = true;
frLayer.IsVisible = true;
MyActivityIndicator.IsRunning = true;
//await Task.Run(() =>
//{
//長い処理を記述
do
{ Xamarin.Formsで重い処理の待ち時間に「くるくる」を表示させたいだけです。
コメントアウトは特に関係ありません。 Xamarin.Formsを使ったことないからアレだけど、根本的なところを間違ってるんじゃないかという予感
とりあえず、ちょっとググったら↓みたいなのは見つかる
https://blog.okazuki.jp/entry/2016/11/22/225735 インスタンス作り忘れるレベルの初心者には協力してあげたいがそのコード例だけじゃエスパーしかできん
固まるって事はTask.Runがコメントアウトされてる通りに同期処理になってるって事じゃないの?
ボタン押す → そのままTask作らずdo whileしたらそのwhileから抜け出すまでフォームは固まる事になる >>85
await Task.Delay(1);
をループ文の前に追加したら解決しました。
VBの「Do event」にあたる処理を追加したかっただけです。 https://anderson02.com/cs/xamarin1/xamarin-34/
このサイトを参考にして「ボタン押す」→Do-while処理中にActivityIndicator IsRunning="True"で「くるくる」表示
ループを抜けたらActivityIndicator IsRunning="false"で「くるくる」非表示にしてるだけです。
アプリの見た目上は問題ないんですが、、、 フォームが固まる事を問題だと思っているんだろうよ
フォームは固めておいたほうが問題がない フォームが固まったらくるくるも固まるから問題って事じゃなくて?
await Task.Delayを追加しただけで解決したってのもよく分からないけど、一回コード全部張ったほうが良いと思う おかしいな…
IObservable<T>のSubscribeメソッドってラムダを受け取る拡張メソッドが見つからない
IObserver<T>を受け取るメソッドはあるっぽいんですが…
前からこんなんでしたっけ? あ、書いた直後に自己解決しました
System名前空間にあるんですね
Rxチームのパッケージ配置センスなさすぎでは…? 質問です。
xamarinとC#でAndroidアプリを作成していて、ボタン押下でPCに構築したFTPサーバとテキストファイルの送受信をする機能を作ったのですが、ログインは成功していて、サーバへのファイル送信は出来ているのですが、androidへの受信時に下記2点の問題が発生しています
1.ファイル受信自体はできているが、受信時のコマンド"RETR"のものとは別に受信後にsocket.Receive処理を行った際に数分待ちが発生して、nullのExceptionが返されてエラーとなる。(ファイル受信時のsocket.Receiveの戻り値は"226 Transfer complete.")
2.上記1.の処理を削除してみると、サーバのテキストファイル内容の取得のために1ファイル受信する毎に"PASV"コマンドで戻ってきた"227"のIPアドレス・ポートでsocketを開く処理をしているのですが、そこで戻り値が"226 Transfer complete."になってしまい、IPアドレス・ポートが取得できずエラーとなる。(また、IPアドレス・ポートを取得してsocketを開ける場合もあるが、ファイル内容を取得できていて、writeで書き込まれているはずだが、受信したファイルに内容が反映されない。)
上記1か2の解決方法について何か心当たりがあればお教えいただけますでしょうか? FTPなんてめんどいもん使わずにHTTP使った方がいいでしょ みんなFTPやめるらしいな
ここ十年使ってなかったから関係ないけど! Gopher、Netnews、Archie、telnet等に続いてとうとうFTPも廃れてしまうのか 個人的にはSMTP/POP/IMAPにはやく消えて欲しい
あれHTTPSじゃ駄目なんか? IReadOnlyDictionaryじゃなくてIEnumerable<KeyValuePair>使うメリットってあるかな?
理屈の上ではIEnumerableの方が軽い? 実感は到底無理な範囲で >>103
httpsはメール転送プロトコルじゃないやん >>101
そういえばそうね
自分でも気付いたけどIEnumerableならkey重複もいけるのか、というかそれが一番大きな違いか IEnumerable<int?>からint?へのキャストはどのように行うのでしょうか?
キャストの方法を調べても見つけられず、とても初歩的な質問で申しわけありませんが教えてください Razor Pagesのチュートリアルをやってるんだけどさあ
Sqliteを使った時って、app.dbとかいうファイルが作られるけど、これどうやって中身を見れるの???
$ sqlite3 app.db
みたいにしたら、暗号化されてるかもしくはデータベースではないって言われてしまう
暗号化されてるとしても暗号化キーなんて知らんぞ・・・・ >>107
IEnumerable<int?>は複数のint?を持っているものなのにそれを一個のint?にキャスとしたいという状況が理解できないんだが >>109
説明が足らずすいません
int? test = numbers.Select(x => x.orderNum)
このように複数の要素からひとつだけ抜き出して、それをint?にしたいと考えています >>110
int? test = numbers.Select(x => x.orderNum).FirstOrDefault(); >>108
GUIのフリーソフトでSQLite対応のやつあったと思うけど名前は忘れた >>110
勝手にorderNum番目の要素が欲しいと仮定して
int ? test = numbers.Skip( orderNum ).FirstOrDefault(); >>110
Selectって名前から連想して複数の要素の中から一つを選択するメソッドだと
思ったのかもしれないけどそうじゃない(そうだとしてもそのコードは奇妙に見えるけどw)
Selectは数学で言えば集合の要素に変換関数を適用して写像(別の集合)を作るメソッド。
LINQのチートシートみたい記事ないかなと思って今検索してみたら
書いてくれてる人がいっぱいいるみたいなので、そういうの読んで自分が求めているのは
どれなのかよく考えた方がいいと思う WhereとSelectはSQLに寄せた結果何だろうけど紛らわしいから
JavaScriptみたいにFilterとMapにして欲しかった >>110
IEnumerable<int?>はint?の複数形なのは理解してる?
つまり複数形を単数にキャストしたいと言われても複数あるうちのどれ?ってなる
んで具体的なコードまで書いてもらいたいならnumbersの型まで書いいたほうが良い
orderNumがメンバ要素なのかインデックス変数なのかでみんな混乱してる
メンバってことで先頭が欲しいなら>>112でもいいしnumbers.FirstOrDefault()?.orderNum;の方がスマートかもしれない Selectを最初に当たった要素抜き出しと勘違いしてるのか 遅くなってすいません。
皆さんがおっしゃる通り、Selectの挙動が理解出来ていないまま使っていました。
EFでデータベースとやり取りをしており、numbersはテーブルを表し、
orderNumはその中のひとつのカラムです。
情報も不足していてすいません。
このテーブルにはひとつのレコードしかなく(numbers[0]の意味) Selectすれば要素を取得出来るだろうと考えていました。 >>93
コントロールコネクションとデータコネクション処理の区分けしていない、どんな
順番で実行しているかも分からないのでどこがおかしいとか言うのは無理かな
プロトコルの実装はシーケンスが見えないとアドバイスのしようがないよ
1.は単純にいえば確保したバッファのサイズを越えて読み込もうとしているか、
グルグルReciveでバッファの割り当て忘れているかだと思うけど
2.で1.を削るっていうのが何の処理を削ったのかよく分からないけど、PASVで
「226」は返ってこないはずなので、サーバがおかしいのでなければコントロール
コネクションの制御が間違っていて他のコマンドのレスポンスを見ているか、
以前のコマンドのレスポンスを見ているのではないかな >>119
ならnumbers[0].orderNumでいいんじゃないのか https://www.c-sharpcorner.com/article/using-oxyplot-with-xamarin-forms/
上記サイトを参考にグラフを表示させたんだが、背景が黒になってしまうので白にしたい。
どうすればいいでしょうか?
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="testxamarin2.Pages.Gurafu2"
xmlns:oxy="clr-namespace:OxyPlot.Xamarin.Forms;assembly=OxyPlot.Xamarin.Forms" xmlns:local="clr-namespace:testxamarin2.Pages">
<ContentPage.BindingContext>
<local:OxyExData />
</ContentPage.BindingContext>
<oxy:PlotView Model="{Binding PieModel}" />
</ContentPage> ひょっとしてダークモード使ってるなんてことはない? 正解はXamarinスレへじゃないかw
Microsoft Xamarin part8 [.NET MAUI]
https://mevius.5ch.net/test/read.cgi/tech/1627778316/ データ集計用にSystem.Windows.Forms.DataVisualization.Charting.Chartを使ってグラフを描画して画像保存をやっています。
特定のX軸のグラフのプロット座標をスクリーン座標かクライアント座標として得たいのですが、何か方法はあるでしょうか。
目的はグラフのY軸のピーク値とかのプロット地点の横に注釈を入れることです。
ChartオブジェクトのPostPaintイベントを追加してSystem.Drawing等でChartコントロール上に描画はできることは確認できていますが、
描画するにもグラフの各座標が判らなくて困ってます。 ValueToPixelPositionでできました。
Chartは情報が中々得難いですね。
Excelのグラフのがよかったかな。 >>128
今それを書こうと思ってた
まあチャートなんか使ったことないんだけどねw
佐藤さんて人がchmを作ってくれてるよ。
それを見たら1分でそれにたどり着いた
http://www.kanazawa-net.ne.jp/~pmansato/ >>129
貴重な情報源ですね。ありがとうございます。 Visual Studio 2019でC#の単体テストのプロジェクトを新規作成する場合、
MSTest
NUnit
xUnit
と三つあるのですが、どれがお勧めですか?
最も一般的なのを教えてほしいです。
ちなみに、OSはWindows 10で、.NET Coreを使い、
GUIを用いないデスクトップ・アプリケーションのテストをしたいです。 >>132
では、xUnitにしてみます。
ありがとうございました。 単体テストで使うAssert()などのコードは、
バージョン管理ツールで保存するときは一緒に保存しますか?
単体テストで使うコードは本番環境にも入れたままにするのですか? if(debugger.isattached)debugger.break();
みたいにやればデバッガとつながってるときだけ止まるので入れておいても害はない >>134
バージョン管理するのは当然
単体テストはプロジェクトを分けるだろうから、本番環境にデプロイされることはない >>135-136
ありがとうございます。
デバッガーに繋がっているときだけ止めれるので入れておいても害はないけど、
プロジェクトを分ける場合は本番環境には入れないんですね。 先生 インスタンスメンバーにアクセスしないメソッドはstaticにマークしたほうがいいんですか?う゛ぃじゅあるすたじお先生がそう言ってるんですけど >>138
むしろ「それ」をあえてインスタンスメソッドにする必要があるのか、
と考えるべきだろうね。
普通はないはずだと思うけどあると確信できるなら別にいいんじゃないの?
普通はないはずだと思うけどねw ttps://www.youtube.com/watch?v=6pF07zSHVjA
さっきまで見てたのはこれ C#での非同期処理のキモがハマりどころも含めてわかりまくりの決定版みたいな記事どっかにない? >>144
気軽に建てたスレッドの99%はバグってるので安心して欲しい >>146
でもわたしはあなたの頭がハゲってるのが心配なんですよ >>144
https://www.kekyo.net/async
俺はこれが参考になった記憶あるな
調べたのって何年も前だから、もっと良い記事あるかもだけど >>144
スレッド
注意点一覧
・シングルコアで動くか?
・応答がないときに自決するか?
・失敗時のメモリリークはないか?
・タイムスケジュールはあるか?(例:1分の内AスレッドはX秒、BスレッドはY秒等)
・生存確認方法はあるか?
・実行中の状態は取得できるか?
・ログは出力できるか?
・最大使用メモリは把握できているか?
・失敗時のリザルトの受け取り方法は適切か?
・処理が複数失敗する可能性は考慮できているか?(例:ファイルオープン成功→ファイル書き込み失敗→ファイルクローズ失敗→tempフォルダ削除成功のとき何が返る?)
決めるのが面倒なら使うべきでないと思う >>151
おお、これは素晴らしい
ありがとうありがとう c# プログラマの書いたコードは美しい音楽のようだった。
タリバンは音楽家を処刑してるので、c# プログラマを対象に加えるべき。
c# って普通に考えたら音楽の符号だし、c# プログラマがすすめてくる「リーダブルコード」って本はどう見ても音楽関連。
https://i.imgur.com/nmlX1tw.jpg 率直な質問です
C#と.NETを一通り習得するのにどれくらい時間がかかりますか? >>157
自分の場合プログラム経験無しから「独習c#」を概ね理解しながら独学で読み進めるのに3ヶ月かかった。
LINQ やTaskなどは実践や実務でないと本だけでは習得は難しいと思う。 >>152
一般的なスレッド生存確認方法ってどんなの? >>158
それな
実際どういうコード組んでるかとか不文律の部分がてんでわからん
型の宣言にしたって最初にまとめておいたほうが良いのか、なら使い捨て変数なら使うところで良いのかとか まあ3か月である程度モノにできる人なんているとは思うけど
特別な才能の持ち主だけだと思うからそこは真に受けない方がいいと思う >>161
まあ不安が無くなってきたのは、2周目の読破が2ヶ月、3周目が1ヶ月で、合計半年過ぎた頃ですけどね。
c#もバージョンが上がって機能が増えて、初見さんには段々難しくなってきてると思う。 先生質問です。Bitmapの保存でエラーです
問題を単純化するために空のBitmapを保存して試して見たところ再現したので貼ってみます
デスクトップを始めとして特定のフォルダにだけ保存できません!
新規に作ったフォルダは大丈夫です。以前からあるフォルダでも保存出来るものもあります
セキュリティの関係かと思い、フォルダ右クリ→プロパティ→セキュリティのタブ で
比較したのですが全く同じであるにも関わらず一方だけ保存できません(ちなみにwin7)
VisualStudioのdebugフォルダの中だと保存可能です
考えられる原因、なにかありますか?
using (Bitmap bmp = new Bitmap(100, 100))
using (Graphics g = Graphics.FromImage(bmp))
{
var fullPath = "";
fullPath = @"E:\SS\aa.png";//× このフォルダの名前をSSSに変更すると〇
//fullPath = @"SS\aa.png";//〇 相対パス(debugフォルダ内)
///fullPath = @"F:\test\aa.png";//〇
//fullPath = @"E:\SSS\aa.png";//〇
//fullPath = @"C:\Users\(ユーザー名)\Desktop\aa.png";//×
bmp.Save(fullPath, ImageFormat.Png);
//↑ここでエラー
//System.Runtime.InteropServices.ExternalException: 'A generic error occurred in GDI+.'
} >>163です
追加です
C:\Users\(ユーザー名)\Documents\aa.png ×
C:\Users\(ユーザー名)\Pictures\aa.png ×
C:\Users\(ユーザー名)\aa.png 〇 >>163 追加です
using (Graphics g = Graphics.FromImage(bmp))
を抜いても再現します >>163
発生したExternalExeptionのInnerExeptionプロパティを見ればヒントが入ってんじゃないの typoしてんじゃね?と実験してみたら存在しないフォルダ名を指定していたら System.IO.DirectoryNotFoundException が投げられるのか
手元じゃ再現しないからわからんなぁ
Environment.GetFolderPath(Environment.SpecialFolder.Desktop) とか使ってもダメなんかね? >>163
たぶんシステム側のバグを疑ってるから質問してるんだろうけど、
それは自分で十分に検証した後でやること。
private void SaveDummyPng()
{
var bmp = new Bitmap(100, 100);
var path = AskUserForPngName();
if (path != "") bmp.Save(path, ImageFormat.Png);
}
private string AskUserForPngName()
{
var sfd = new SaveFileDialog();
sfd.AddExtension = true;
sfd.DefaultExt = "png";
sfd.ShowDialog();
return sfd.FileName;
}
なんでこの程度のことを最初にやらないの? >>166
InnerExceptionPrefix " ---> " string
_COMPlusExceptionCode -532462766 int
さっぱりです><
>>167
最初はEnvironment〜を使っていたのですがだめでした
>>168
それ行けました
でもこれ↓はだめです
public static void Test_MakePNG4()
{
var bmp = new Bitmap(100, 100);
var path = @"E:\SS\aa.png";
if (path != "") bmp.Save(path, ImageFormat.Png);
}
なんでなのおおおおおおおおおおお ・using (Graphics g = 〜) の外側でSave()を実行する
・Save()で直接ファイルに書き込まず、一度MemoryStreamに入れた後にファイルに書き込んでみる
思いつくのはこの辺りかな >>169
できたときとできないときのpathってデバッガで見たとき違った? >>169
そもそも同じディレクトリにテキストファイルは生成出来るの?
public static void Test_MakePNG4()
{
var path = @"E:\SS\aa.png.txt";
using (var writer = new StreamWriter(path))
{
writer.WriteLine("こんにちは");
}
} >>172
っていうか普通のセンスの人ならまず
(1) コードで指定しているパスのディレクトリをエクスプローラの
アドレスバーにコピペして開けるかどうか確認
(2) 開けたらそこで何等かのファイルの新規作成が可能かどうか確認
このぐらいはやるよね。
当たり前のことをやらずにエラーが出ます、どうしてでしょうって言われても知らんがなとしか 先生、解決しますた・・・
忘れていました、、、うちのPCには暴れん坊のアバストさんがいることを・・・・
あいつ、最近勝手にランサムウェアシールドっていうのの保護対象にE:\SSやデスクトップを追加してたみたいで・・・
ぐぐってみたら同様に勝手に保護対象を増やされたという報告がいくつか
>>172先生が当たりでした
System.UnauthorizedAccessException: 'Access to the path 'E:\SS\aa.png.txt' is denied.'
やばそうな常駐アプリは切って再起動して確認してたつもりが
なんと一番やばいアバストさんがそのままだったという愚かさ
先生方お騒がせしました・・・ そういやマカフィーもVSでC++のデフォルトテンプレのHello Worldをデバッグコンパイルするだけで、
ウィルス認定で50%以上の高確率で削除するしなw
winに最初からあるDefenderの方が誤動作少ないし機能も十分な気がする。 プログラマでありながらアンチウイルスソフトに頼ってる奴は恥を知れよ 今はもうdefenderにtrapsとかcybereason組み合わせるのとかが主流だろ 要するに>>169に書いてることは嘘だよね。
>>168でサンプルまで書いてやれと言われてる当たり前の検証をやってない。
批判されるべきはそういうところでしょ。
単なるうっかりなら誰にでもある。 >>185-186
という粘着。
まだこんな自分棚上げの2ch脳的思考が染みついちゃってるお方いるんだね ところで、どの書き方が好き?
コーディングルール云々は別として好みの話ね
(1) Hoge hoge = new Hoge();
(2) var hoge = new Hoge();
(3) Hoge hoge = new(); Piyo piyo = new Piyo().piyo; var hage = new Hage(light) >>198
型推論と動的型付けはまったくの別物だぞ >>188
(3) なんて書けんのか?
って思ったらC# 9.0からの機能なんだな
(2) でいいと思うんだがなんかメリットあるんか? >>188
Javaやってるから(1)だ。
Javaだと(1)、C#だと(2)、のようにわざわざ使い分けるのが面倒で嫌い。 varは使わなくなったな、書き捨てのコードなら速く作業終わってよかったんだけど
後で保守することになって、何の型だかぱっと見て分からない、結局書き直す羽目になる
二度手間 >>205
まさかと思うけど印刷したリスト見てデバッグしてるとかじゃないよね? >>205
varの上にカーソル持って行ったらツールチップで型が表示されるけど Vim使いの人が同じような理由でvar嫌がってたな
まぁVim使いに合わせる訳にもいかないからそのままにしたけど (Vim使いはC#じゃなくてC++のautoの話だったかも)
それにvar使わないとジェネリックとかで複雑な型が出た時書くの面倒だからね
それに型が変えられたら書き直さないといけないし >>201
聞いて驚けよ
varの三文字分短くなる
俺も今知った VSCodeですらインテリジェンスなのにVim男は化石すぎるな >>211
それを言うなら空白も1つ減るから4文字分だろ
4バイトとか言ってたアホもいるけどw >>201
(3)の書き方は俺も今知ったな
まぁ元々は
private List<WeatherObservation> _observations = new List<WeatherObservation>();
って書いてたのが
private List<WeatherObservation> _observations = new();
と書けるようになるってことみたいだね
ローカル変数でそう各メリットは少ないかもだけど、今は(2)に慣れてるだけだろうから、そのうち(3)になってくのかも VSさんがしきりにvarはやめろ型名書けって囁いてくるからVS使ってる時だけHoge hoge = new();だな
VSCodeのときは脳死でvarって打ってる
本音ではconstって打ちたい >>216
俺のVSはvar使えって言ってくるけど >>215
長たらしい型名を2回書きたくないと言うのはわかるんだけどそれはvarで充分だと思うんだよね
new()じゃなくてメソッドがインスタンス返すような時はvar使わざるを得ないしマジでメリットが4文字減るだけにしか見えない… >>218
普段はvar使ってるけど>>215の例みたいにフィールドとかプロパティの初期化にはnew()が便利だなと思った varが使えないところで使えってことなんだろうけど
正直そこまでしてタイプ量を減らす意義が見出せん
varの本来の使い方はLINQなんかでの匿名型なんじゃないのかと >>219
ああ、なるほどフィールドとかだと
private var _observations = new List<WeatherObservation>();
って書けないのか
ちょっとググったら確かに実装がめちゃ大変そうだな
https://stackoverflow.com/questions/4461597/why-cant-class-fields-be-var new以外の関数からの戻り値を受けるのにvarが使えるから共存するだろ 私は(3)にしてます
慣れもあってか(2)のほうが書きやすいですが
githubとかでコード見る場合に関数の戻りをvar書かれると型がわからない
VS以外で読み書しないなら(2)でいいと思います。 >>188
同じ事を何度も書かないってルールで(1)は無い。
(3)も微妙に無いかな。定義だけメソッドの外、=new()だけ処理前にするとか。 マイルールで書いてもボタン一発でコーディングルールに沿ったのに変換してくれればおk >>228
推奨してるけどMS自身はvar絶対使わないマン
ギフハブみてみ >>234
説明用にわかりやすく書いてるだけなんじゃあ >>235
135: Dictionary<string, string> contents = new Dictionary<string, string>();
みたいな行もあってあんまり気にしてない感じやね
編集した時期が違うんだろうけど new()が使えるならnew()
それ以外はvarが最強 スタイル統一って本当に無駄な努力だよな
ただの見た目、書き方で迷うより同じ時間を使ってそもそもこの変数を消せないか、みたいな方向で悩みたい >>239
そんなことはないと思うけど程度問題だね。
何であれ手段を自己目的化してしまうのは確かに愚かだ。
そんなことよりスレ違いだのなんだの他人のやることに
いちいちケチをつけないと気が済まないいつもの数人が静かなのが笑えるねw
ああいう人たちはその自分の欺瞞性に嫌気がささないものなのかw hageておきますね
______
/ 〇⊂⊃\
/ \
/ ヽ
l::::::::: |
|:::::::::: (●) (●) o|
|::::::::::::::::: \___/ .0|
ヽ:::::::::::::::::::. \/ ノ 配列関連をお勉強しとるんですが、
Array, Buffer, BitConverter, Collections.Genericのクラス
これらの他に見ておくべきクラスはありますか? >>253-254
それ
> Collections.Genericのクラス
だろ しいて言えばCollections.Generic全部だけど
何にでも使うものだからここだけお勉強しとけっての無さげ >>252
配列まわりだとSpan、Memoryあたりかな
コレクションまわりと拡大解釈するともう少し増えるが SpanやMemoryは一通りモノ作れるようになるまではスルーでいいというか知らないほうがいい
厨二病のはじまり SpanやMemory多発だと言語選択間違えてないか疑ったほいがいいな。 >>252
もう配列なんて時代遅れ
xmmレジスタで済ませるのが最先端だからSystem.Runtime.Intrinsicsを学ばないとオレにはついてこれないぞ 先生、
>>261
がゴールと逆方向に独走してます! Buffer, BitConverterってあまり使ったことないや
どういうときに使われるんだろ
画像とか扱いたい時? >>264
通信電文の解析とか
電文は通常ビッグエンディアンって決まりがあるので エンディアン変換めんどいよなぁ
たかだか2バイトのビックエンディアンをc#のshortに変換するだけでも
var dataLen = IPAddress.NetworkToHostOrder( BitConverter.ToInt16( buf, 32 ) );
で長すぎるんだよな。2バイトくらいだったら
var dataLen = buf[0] << 8 | buf[1];でもいいが、int幅なると記述量増えるし。
byte配列走査しているときはSpanを当てていることが多いから、Span<T>ももうちょっと使い勝手向上させて
int intLen = span.Slice(0,4).ToHostOrder();
みたいに書かせて欲しい い・いや、そうなんだけどね・・
車輪の再発明というか、作ると色々考慮が必要でとか、そもそもめんどいというか。 まあライブラリで実装するほど汎用的というか需要がある処理じゃないって判断なんでしょうね。
つーか大昔からある宗教論争だけど個人的にはビッグエンディアンなんて
どっかのタイミングで追放してしまえばよかったのにw
つくづくこんなの考えた奴馬鹿だろとしかw
ところで、BitConverterってバイトオーダーは環境依存なのかリトルエンディアン固定なのかどっちなんだろう BitConverterはちらっとソース見たらどっちのつもりだよこれって実装だったな >>271のソースはビッグエンディアンのアーキテクチャの時は
BIGENDIANを定義してコンパイルして使うんでしょ c#って機能的にはc++のメソッドを全部呼ぶことって出来ますか?
win32apiを弄っていて、当然ドキュメントは99%がc++なんだけど
dllimportとかを使えば全部の機能はc#からも使うことは出来ると思って良いのでしょうか?
それとも、言語仕様の壁があるから使えない機能も普通にあるのでしょうか C++で作成したクラスのインスタンスメソッドが呼び出せなかったはず
DllImportで呼び出せるのはあくまでstatic相当メソッドのみ >>274>>275
アドレスさえ取得出来ればメンバ関数含めて全て呼べる
DllImportやGetProcAddresからはポインタ取得出来ないからそれを呼べると言えるかは微妙だが
メンバ関数は第一引数にインスタンスへのポインタが隠されてるだけの実態はただの静的関数だからdelegate* unmanaged[Stdcall]<void*, void>とかにキャストしてvoid*にオブジェクトポインタ渡せば正常に機能する
逆に言えば公開したいメンバ関数があるなら、第一引数にvoid*を沿えた静的関数にしてdllexportすればいい double aaa = double.NaN;
bool bbb = (aaa == double.NaN) ? true : false; //bbb = false になる。えええ
bool ccc = (double.IsNaN(aaa)) ? true : false; //ccc = true になる
どうしてこうなるの? NaNは「数値ではない」ので、いかなる値と比較してもfalseになる
これはIEEEの規格で定められている
ゼロで割ったらいけないのと同じようなもんで、NaNの比較は原則やってはいけない 値がセットされてない状態が必要ならdouble?型使え なるほど。厳しすぎるよ
(double.NaN == double.NaN)も成立しないのな >>276>>277みたいなやり方もあったのか・・・
でもごめん276のQiitaを軽く読んだ限りだとちょっと怖くて&面倒くさくて使いたくない
どうしてもC++のインスタンスをいじらなきゃいけなくなったとしたら
従来通り無難にC++/CLIでラッパーを書くと思う
もう10年くらいそんなコード実装してないから書ける自信ないけど
おおもとの>>274への回答としては、一応条件付きでyes、ってことで合ってるよね?
C++で書かれたインスタンスのメソッドを呼ぶときには基本的には別途C++/CLIプロジェクトでソースを書き足す必要がある
その手間さえ許容できればC#で全部呼べる・・・はず C#9の関数ポインタを利用したりMarshal.GetDelegateForFunctionPointerを利用したらどんなネイティブ関数も呼べるが(どちらも呼び出し規約設定可能)、
問題はそのDLL内の公開されてないメンバ関数ポインタをどう渡すか?に関してはC++同士でも独自に決めないといけない訳でC#どうこうの話ではなくないか? こういうジェネリックの使い方ってありなん? 初めて見た
class Hoge<T>{
Hoge2<T> hoge
}
class Hoge2<T>{
Hoge3<T> hoge
}
class Hoge3<T>{
T hoge
} 特に意外なところもないと思うが…どこに引っかかったのか >>280
NaNを理解できない子にnullableとか鬼やな >>284
ダメなの?
class 人<T身長の単位>{
プロフィール<T身長の単位>
}
class プロフィール<T身長の単位>{
身長<T身長の単位>
}
class 身長<T単位>{
T単位 Value
} 身長は凡例だろうけど
身長ならdouble[m]で持っておいて
別の単位使いたかったらプロパティで良いじゃんって思った >>287
階層深いといろいろ扱いにくくない?
サンプルに対してどうこういうのも不毛だけど、人を継承して学生やら料理人やら作ったとして学生はセンチで軍人はメートルで保持して、
さらにその身長を参照して数パターンの大きさの制服からちょうどいいものを選びましょうみたいになったらどんどんジェネリクスの範囲が広がる気がするというか、
そういう広がったものに直面してなんだこれ……ってなった
自分が直面してる問題については抽象化というかクラス設計失敗してるのが根本的な原因ぽいのだが
それをジェネリクスで覆い隠してたんだけどちょっと拡張しようとしたらコードがうんこと化した >>291
> サンプルに対してどうこういうのも不毛だけど
と言いながらどうのこうの言いまくってるとか頭おかしいのか? 初歩的な質問ですいません
PostgreSQLとNpgSQLを使用しています
仮にアプリケーションAとBがあるとして、Aからデータベースのテーブルが更新されたらBはテーブルの値が変わったという事を認識する事は可能でしょうか?
どのように実装するか全然分からないので参考例を探したのですが見つけられず、どのようなキーワードで検索すれば良いでしょうか
私はデータベースの知識も乏しいのですが、これはC#側で実装するのか、それともPostgreSQLの関数?で実装するものなのでしょうか? >>293
プロセス間通信を実装するか
お互いに一定時間毎にデータベースを確認しに行くかのどっちか? 相互だったらトリガーは使えないねぇ
レプリカを改造するとか
リアルタイム性が不要ならなんとでも
なるでしょう >>293
簡易的なものならpostgresのNOTIFYとLISTENを使えばいいと思う
本格的なアプリケーションなら
Aがドメインイベントを生成してイベントストリームに流して
Bは該当のイベントストリームをサブスクライブして処理する
実装方法は色々あるのでイベントストリームやイベントソーシングで検索して レスありがとうございます
一定時間毎にテーブルにアクセスしかないのかなと思いましたがNotify、Listenというものがあるのですので
まだ調べられていないのですが、レスの内容を見るにPostgreSQL側で設定などを行い、それをC#側に伝える?ということでしょうか >>298
BのアプリケーションでLISTENコマンドを実行
Aのアプリケーションでテーブル更新時にNOTIFYコマンドを実行(もしくはトリガーでNOTIFYコマンドを実行)
https://www.npgsql.org/doc/wait.html
Bは通知を受信するためのセッションを張って待っておく必要がある ColorMatrixによる画像処理ですが、
ColorMatrix同士の演算を簡単にやる方法はないでしょうか?
行列なので単純に行列を展開して自分で計算して新しい行列Cを作ればいいのですが、それを簡単にやる方法は用意されてないのでしょうか?
c = ColorMatrixAA * ColorMatrixBB; //←これをしたい
例えば輝度とコントラストの調整をひとつの行列による一回の処理で行いたいのが目的です
https://dobon.net/vb/dotnet/graphics/brightness.html
https://dobon.net/vb/dotnet/graphics/contrast.html ColorMatrix自体には演算子とか定義されてないので
・自分で拡張メソッド作る(演算子じゃなくてメソッド呼び出しだけど)
・数学用のライブラリ使って5x5行列作って計算後にColorMatrixに変換する その手の話は普通、OpenCvsharpでやっちゃうし やっぱり自分で計算するしかないですか
アホっぽいけど二つの行列で二回処理することにします・・・ ImageAttributesは既定では単位行列のColorMatrixを持っていて
SetColorMatricesを呼ぶたびにそれとの積が行われるのではないか...
などと妄想して確認してみたが全然違ったw
複数回呼んだ場合は単純に最後に指定したColorMatrixが使われるだけ
ところで、ImageAttributesもColorMatrixもPetzoldの本には出てないんだね
.NET 1.1からという何とも中途半端な ファイルハンドルのお勉強に入った者です
Flush()とFlush(true)の違いってなんですかね?
MSDNの説明を見てもぼんやりとしか理解できてないんですわ。
OSがディスク書き込みを完了したかどうかを手軽に確認する方法ってあるんですかね? >>305
Flush(true)は.NETのIOバッファをクリアした後、
Win32API の FlushFileBuffers() を呼び出す >>305
> OSがディスク書き込みを完了したかどうかを手軽に確認する方法ってあるんですかね?
ない
確実にやりたいなら専用のデバイスドライバ作ってやるしかない
OracleとかOSに頼らずにそう言うことをしてるものもある 極論(でもないと思うけど)を言えばそもそもストレージ自体も
中でファームウェアが走ってるブラックボックスなので
電源が落ちても大丈夫という意味で書込みが完了したかどうかを知るのは
実は無理じゃないかという気もする ストレージに依ってはライトスルーモードやキャッシュのバックアップ機能を持ってたりするよ C#でsvgファイルをPictureBoxに簡単に表示するにはどうすればいいですか?
デスクトップアプリ、WinForms、.NET Framework 4.7.2です Cで言うプログラミング言語C、C++で言うプログラミング言語C++のような、
C#に於けるバイブルのような本はありますか? >>313
C#はWeb情報が充実してるから本など不要
プログラミング言語全般に言える事だがC#は特にな cやc++と比べてc#は簡単だからな
javascriptもそうだけど素人でもすぐ使える言語は体系的に勉強する必要ないからバイブルも生まれない C++でバイブルってゆわれれてるやつのC#版かえばいいんじゃあ >>320
ストラウストラップがC#本も書いてるの? >>319
素人が個人ソフト作る程度なら確かにその通りだが(その規模だとC++ですら同様だと思うが)
結局JavaやC#みたいなガチガチのオブジェクト指向言語はチーム開発するための言語だからちゃんと体系的に学んでもらわないと周りが困るわ データベース接続はDIする必要ないですか?
接続文字列変えるだけでデバッグできるから
エンジンまで変えるのは丸ごと作り直しみたいなもんですよね >>323
人事とかPMに訴えた方がいいよ
まともなスキルある奴雇えとかコーディングルール決めろって 人事が変なプライド持ってて
漏れの選んだ社員にケチつけるのか?みたいな反応する香具師いるよな いないよ
心が汚れてて、相手の事を悪くしか言えない人ならたくさんいるけど。 相手の事を悪くしか言えない人って、心が汚れてる人率より、外因で心が壊れた人率が高い気がする。 >>319
C++欠点をよく考えた上でのC#なので扱いやすくできてるが
複雑な処理でも簡単に記述できてしまうから
分からないで使うと即ゴミコードになるな >>319
言語仕様の簡単さでいえばCの方がはるかに簡単では C#erかF#erでいいんじゃない?
VBNerはもうどこにも居なくなった 未だにVB系さわってるのって、VB6を未だにメンテしてるか、ExcelやAccessとかのVBAさわってるかぐらいなんだろうなぁ感 チョン君とこなんて未だにActiveX全盛なんだよな >>337
vbはvbで普通に便利だぞ
c# 使いはvbに絡み過ぎ >>339
全盛というのが本当だとすると、そんな奴らに国民的アプリの覇権を奪われるわーくには一体・・・ VBNはだめだめだけどXMLリテラルだけは評価してる
これC#に輸入してJSXみたいなの作れたら面白そうじゃないか xmlリテラルとかゴミやないですか。
痛恨の大失敗でやめたいと思ってるって記事どっかにあったような。 gmailをSMTPで受信して特定メールの到着お知らせするフォームアプリ作って常駐させたんだけど
win10が勝手にお知らせの小窓をスライドしてくるわ
便利だからいいんだけど何に反応してんだこれ
該当メール到着したら、ボタンのTextにメールの件名表示させるぐらいの消極的な動きしか指定してないのに あーライブラリ使ったからそっちでやってくれてるんか
なんだなんだ >特定メールの到着お知らせ
俺もそれ欲しい
こっそり公開してほしい 特定ワードに反応してアクション起こすとかそんなんじゃね Windowsで通知系はレトロにタスクバー点滅が邪魔にもならず気付かない事も無くで攻守最強だわ
User32のFlashWindowExするだけで良いし webのクライアントアプリケーションを作るのは
一昔前はWebbrowserコンポーネント一択でしたが
今は何が最適ですか? C#を止めるのはちょっと・・・
調べてみたのですがwebbrowserコントロールを使うなら
Blazor、Chromiumの方が良いみたいですね TeamsはElectronやめてWebview2ですね
(Reactだけど) ちょっと確認
Webview2を使えば、
C#で作ったデータを表として表示したい場合に
WPFのDataGridなんか使わずに
HTMLで表作って
WPFでそのHTMLを開いて表示できるってこと? >>359
DOMを外から直接弄ることはできなくて、JSを生成して渡してやる必要がある
WPFアプリにしなきゃいけないという制約があるなら
、ぶっちゃけウインドウ全面にWebView2を貼って全部TypeScriptとReactで書いたほうがいい そこはAngularだろ。
いいぞ、Angularは >>360-362
ありがとうぅ!
非常に(・∀・)イイ!!
ReactとAngularって人気を二分してるのかぁ
検索してみたら、どっちもいい
まるで「長澤まさみと新垣結衣、好きなほう持ってっていいぞ」と言われてるぐらいの興奮だ
しかし、
https://www.webprofessional.jp/react-vs-angular/
を読んだ結果、「ReactとTypeScript」を持ってくことにしました!
4年以上前の記事だから今と違うかもしれんけど、
「採用、学習、開発エクスペリエンス」の比較が決め手になった
単にWPFの代替品を探してるだけなんで、フレームワークの習得に時間をかけたくないんだよね
あと、JSXって考え方も気に入った、そうそう、埋め込みでいいよ
Jestって単体テストランナーにも期待してる
TypeScriptって.NETフレームワーク(C#, VB)やってた人には
純粋なJavaScriptよりも学びやすくなってるんだね
正に俺のための言語!←JavaScript超初心者
今月は忙しいんで来月あたりから始めようかなぁ、ワクワク あと、これもGoogle Trendも参考にした
https://trends.google.co.jp/trends/explore?q=React,Angular
Reactブッチギリ、Angularの倍ある
韓国と中国という非英語圏がトップだから、
英語の動詞の"react"による検索は無視できるレベルと考える 動詞のReactは無視できないレベルで使われますが Webview2ってローカルのhtmlファイル表示できないのか? ちょうど似たような案件で開発環境考え中なので参考にさせてもらう
でもなるべくC#で書きたいんだよなぁ
>>366
ソースに含まれてるならプロパティで実行時にコピーする設定にしたら参照できたよ >>361
1のパフォーマンスの悪さは折り紙付きだし、asyncすら使えない。 >>365
もう〜、そんな過剰に "react" するなよ〜
(・・・上手い・・・じょうずい・・・)
2004年1月からの全期間で見てみると、結果は明らか:
https://trends.google.co.jp/trends/explore?date=all&q=React,Angular
Reactが誕生した2013年頃から上昇し始めている
それ以前の変動が英語の動詞の"react"の寄与分だな
せいぜい平均2〜3%というところか
それは今の80%からすると「無視できるレベル」だ
これで分かったかね、明智君?
Microsoft Teamsってこの7月に
ElectronからWebView2に移行したのと同時に
AngularからReactに移行したんだね
https://youtu.be/nVAeiVCZHN0?t=23
時代はReact!
よし、これからは俺が日本のReactを牽引していくぜ!
(翻訳: みんなに一生懸命しがみついていくんで、どうか引き摺り回してください m(_ _)m) >>367
ソースに含まれてるの意味がわからんが、>>359はできるってことで良いのか
ちょっとコード例教えてくれ
つかこれできないなら素直にWEBアプリ作るほうが良いよな >>370
できるよ。
コード例微妙だな。俺はいつもembedIOってので組み込みサーバー立てる。 >>370
ごめんちょっとずれた回答だったかも
とりあえずexeから見えるところにhtmlが置いてあるなら
webView2.CoreWebView2.Navigate(uri)
のuriにフルパス指定すればローカルファイルの表示はできる
「WebView2 C# JavaScript 連携」でトップに出てくる記事を参考にした
テーブル出力は自分では試してないけど
・C#で動的にテーブルタグ吐いてhtml出力して表示
・連携したJS関数に流し込む
一応どっちでもできるんじゃないかな なんでそんなにブラウザ表示したいんだ?
もう普通のデスクトップアプリっぽいし
jsonでデータでも受信したらええんちゃう? もうね
正直メリット見えない
404NotFoundも出ちゃうかもしんないし
使わない提案はもう通らないの? それは違うと思うw
簡単なレポートみたいのをhtmlで吐くのは昔からあるし
印刷や保存を実装する手間が省けるメリットもあるけど
グリッドをブラウザに表示するメリットって何なんだろうね。
後でインタラクティブにしたくなったら困らないかなw >>373
WebView2入れて試したけど、普通にできるな
https://docs.microsoft.com/en-us/microsoft-edge/webview2/get-started/wpf
で
>ArgumentException is thrown if the URL does not start with http:// or https://.
とか書いてるから、HTTP通信必須かと思ったわ >>369
そのくらいの時期から他人のリアクションを見るのを楽しむような動画が流行ってるから何とも言えません
プログラミング言語よりYoutube動画のほうが影響力高いのはわかるよね >>378
そのページも読んだはすだけどスルーしてたw
自分の場合はテーブル出力したいわけではなくleaflet.jsとの連携で、タイル地図以外のコンポーネントはわざわざブラウザで出力する必要なさそうなんで
やっぱり書き慣れてるWPF+JSかなー
TypeScriptイチから覚えるのダルいし >>375
404出るはず無いでしょ。
描画したいものをHTMLで作成するだけよ。
行列好きに結合した表示用テーブルとか、あとは、ユーザーに開放するテンプレートとかそういうのをHTMLにしておくと楽。 フォームにグラフを表示したいけどどのコンポーネントもイマイチだから
WebView置いてJSでグラフ表示ってのはやったことある loadImageFromFileの所を書き間違えてるからエラーが出るんですが
どうやって//を置けばいいのでしょうか?
お願いします;;画像にフォルダの場所は載せてます。この場合どういう書き方をすればいいでしょうか?
https://imgur.com/a/oXtRtH9 >>385
自分が生成するものがうっかり無いことなんかあり得ないだろ。 >>388
え?それ全部ローカル前提の話でしょ?
ネットワークに一切つながらないスタンドアロンしか想定にない状態?
逆に今どきそんなもん作ってどうするんだとも思うが ちゅーか
普通にブラウザの描画エンジンってあんまり上等に感じない ?
スタンドアロンアプリにWebView使ったら404出るかもしれないから嫌だと言ってたのかと思ったが?
ネットワーク接続前提なら404出るのは仕方ない話じゃん?
>もうね
>正直メリット見えない
>404NotFoundも出ちゃうかもしんないし
>使わない提案はもう通らないの? >>392
いや、俺の作るアプリはネットワークから取得ミスっても404出ないけど >>389
ローカル前提もなにも、アプリ内だよ。
自分で描画するのがめんどくさいものをWebView2で描画すんのよ。
>>390
IEコンポーネントは酷かったけど、WebView2コンポーネントは良いよ。
>>393
何言ってんの? >>394
アプリ内って?
聞いたことない単語だけど >>393
取得ミスかどうかなんてどうでもいいよ。404出るって言ったのはあんた自身。 >>394
なんか描画が面倒くさいから使うって程度の割には色んな操作性を捨てることになりそうなのが気になるわ >>398
ええ、スタンドアロンだと出ないって話でしょ >>400
そうだよ。そこに
>ネットワークに一切つながらないスタンドアロンしか想定にない状態?
とか言って絡んでたのがあんた。 >>401
スタンドアロン限定って知らんかったけどどっから出てたん?
今どき旧石器時代に戻ったようなこと前提でビックリだよ 最初はhtmlの生成に失敗したときのことを言ってるのか?と思ったけど違うな
ということは根本的にすげぇ勘違いしてるっぽい 参照先がネットワークだったってぐらいの想像力もないの? 知的障害か統合失調症の自演にしか見えないんだがいつまで続くんだ? WebView使ったら勝手にどっかにネットワーク接続して404返すとか本気で思っていそう。 使用目的がそもそも噛み合ってない
>>382が書いたグラフ描画みたいな一部の機能補助的に使う場合はアプリ内で動的生成なり最初から置いとくなりしたファイルを参照するだけだから404なんか起こり得ないってだけの話でしょ
想像力もくそもない IEnumerableって、あいいにゅーめらぶるって読んで恥ずかしくない?
さっきまであいえにゅーめらぼぅって読んでたけど変える すっかり埋もれてるけど>>383は解決したのかな?
画像小さすぎて全然わからんから想像だけど単にエスケープすれば良さそうな気が
それか>>384も書いてる@表記使う そもそも、404帰ったからどうだというんだ
アプリ組み込みで表示に使うっていうんだから、ローカルでもネットワーク経由でも
ページが表示できなきゃそれなりの対応するだろ 404というのはWebサーバーのレスポンスコードのことか
そこには存在しないはずの鯖があなたに語りかけてきます404 cdnのトラブルでレポート出せません!
つったらいいよ VScodeってdotnet runと毎回打たないと実行できないのでしょうか? 漏れは全言語で、拡張機能・Code Runner を使っている。
C# は知らないけど
右クリックメニューから、ファイル全体または選択したコード片を実行できる >>419
Code Runnerをインストールしたのですが
Run codeを押すと
オブジェクトがないってエラーが出てしまいます。
https://imgur.com/a/ygTvbz9 >>418
えっと、dotnet runが普通に動くC#のコードならF5キー押すだけで相当の動作をすると思うんだけど・・・
そういうことを聞いてるんじゃなくて?
C#のスレなのに「C#は知らないけど」とか言い出してるルビーガイジの人、いつもながら邪魔なので書き込まないで欲しいなあ 先生、windowsアプリを極めようと思ったらやぱーりC++あたりできたほうがずっといいですね
ちょっとがんばってきます アプリを極めたいなら、外の世界を
知るべきだな。という事でWDKをやりたまえ >>421
PCしょぼいのかデバッグだと時間かかるので
Run CodeでC#を実行したかったです
が以下のエラーが出ます
http://imgur.com/a/2Y0lORD
ありがとうございます デバッグ・起動にかかる時間を減らしたいの?
CodeRunnerってソースコード(の一部等)を「便利に」実行するツールではあっても
「高速に」実行するツールじゃないと思うんだけど、
なんでそんなの使わなきゃいけないの?
・・・・っていうか419が諸悪の根源なんだろうけどさあ
「C# は知らないけど」とかほざいてる奴の書き込みにひっかきまわされて余計な回り道しただけだと思うよ
あなたVSCodeスレでもそいつの言うことを真に受けて意味も解らずヘンテコな環境改変やらされたでしょ
そのあげくまともに動く環境になってないんでしょ?
CodeRunnerまわりでやった作業は全部無駄だったと損切りして
おとなしく手元のテキストどおりの標準手順で勉強したほうがいいと思うよ >>426
確かに長引きすぎました。申し訳ない。
この質問は下げて大人しくVisualstudioでやります… >>427
いやむしろあなたは被害者だよ・・・ご愁傷様
この板は・・・質問に便乗して
自分の偏った(RubyとかVSCodeとかの)知識をひけらかすことだけを目的とした書き込みをするガイジが約1名いるからなあ
質問者に無益どころか有害でしかないのが非常に邪悪で迷惑なんだけどさあ 何を言われても自分は悪いと思ってないみたいなので、ひたすら無視するしかないだろうねえ
長くいる人は文章で判別できるんだけど・・・
初めての人や質問者を善意に見せかけて混乱させてるようにしか見えない テキストボックスとボタンのみのフォーム内でのフォーカスを制御したいです。
@エンタキーで次のテキストボックス。
Aバックスペースキーでひとつ前のテキストボックス。
Bマウスでのテキストボックスの移動禁止。
以上の事を、実装したいんですけどテキストボックスの入力内容によってEnabledされたテキストボックスは進む時、戻る時は飛ばしたいです。
タブインデックスを順番通りなする→キーダウンイベント?を全てのテキストボックスに割り当てるで合ってます?Bは全くもってわかりません。 >>432
古いシステムの挙動をそのまま再現しろ的な要求仕様なのかな…
(2)の[Backspace]で一つ前のテキストボックスへ移動って編集中の文字の修正はどうするの?カーソルと[Delete]使えってこと? 質問です
入力された文字列と文字数を表示するプログラムで
Enterキーのみが入力されるまでループして入力要求をするようにしたいのですが
1〜4文字の入力はループするのですが5文字入力するとループが終わってしまいます
どうなおせばいいでしょうか?
よろしくお願いします
/*************************************/
#include <stdio.h>
#include <string.h>
int main(void){
char str[] = "Hello";
fgets(str,sizeof(str),stdin);
while (str[0] !='\n'){
if (str[0] != '\n'){
printf("文字列%s\n",str);
printf("文字数%d\n",strlen(str));
fgets(str,sizeof(str),stdin);
}else{
break;
}
}
}
/*************************************/ >>434
ここで答えるのも違うと思うが、Visual C++上でやってると仮定して。
配列strは、4行目の「char str[]」の宣言で、"Hello"と5文字分確保されている。
下(4行目、10行目)のfgetsでは、sizeof(str)分取り込んでいる。つまり、5文字分だ。
4行目のfgets時に「12345」と入れてEnterを押すと、実際には「12345\n」と入力されたことになる。
この時、まず取り込まれるのは先頭から5文字分で、8行目のprintfでは「12345」と表示されるだろう。
しかし、stdinには「6文字目」の\nが残っているので、10行目のfgetsで、「配列strの先頭に」配されることになる。
その結果は?
そこまで分かれば、何をどう直せばよいかは分かると思う。 >>434
解決しました
レス読ませて頂いてより理解ができました
ありがとうございます やっぱプログラムの基礎はCだよな。
いきなりjavascriptとか初めてこの先やってけるのか?と思う それは余計なお世話だろ
まぁjsの書き方はcに慣れてると正直キモいなと思ったりするけど >>432
3はmouseenterのときにactivecontrolを記録しておいてクリックイベントでそこに戻せばいいんじゃない?
スマホだからサンプルは無理 フォーカス外れたらテキストボックスからラベルに置き換えるのが楽だと思うよ >>439
それを C# のスレで言っちゃあおしめぇよ、ってなもんだ >>433
おっしゃる通りそのままま再現です。入ってる文字に関してはBox内全選択状態にしてdeleteですかね。
ありがとうございます。
>>441
なるほど、ありがとうございます。調べてみます。 ASP.net core 3.1 + Entity Frameworkってここで質問してもOK?
先週あたりから少しやり始めてるんだけど、「startup.csでApplicationDbContext(名前はいくつか表記ブレがあったが)をDIする設定をしておいて、各コントローラーではDIされたそれを使う」って流れにどうも違和感を感じる。
これってつまり、ApplicationDbContextにそのアプリで使う全てのテーブルをDbSetとしてあらかじめ書いておくって事?
それだと大規模アプリだと収拾がつかなくなりそうな気がする。
(1モデル毎とはいわないまでも)いくつかのDbSetを入れたDbContextに分割した上で、DIされたApplicationDbContextの接続情報等を使ってコントローラー内で生成した方がいいと思うんだが、上手く検索できない。
何かご存じの方がいらっしゃれば御教授を賜れば幸いである >>445
そのアプリで使う全てのテーブル、というよりは、
接続先DBにある全てのテーブルをDbSetとしてあらかじめ書いておくイメージかと
必ずソースコードと実DBを1:1で対応させる
むしろ同一DBなのにテーブルごとに見るべきDbContextがまちまちになってるほうが収拾つかなくならない?
読み書きするテーブルごとで別々にDbConnection張ったりしないでしょ >>446
お返事に感謝。
なるほど、もしかしてApplicationDbContext(勿論別の名前でもいいが)って、基本的にコーディングしない(どこかで自動生成する)ものなのでしょうかね?
だとすれば納得です。
で、あとはトランザクション制御が必要な処理とかあったらコントローラー側で個別にDbContext作った方が、かえって見通しが良くなるかもしれませんね C#でアプリ作りたいのですが何を学習すれば良いか分かりません
アプリ作成経験は皆無で入門書で文法やり終えた所です
アマゾンで検索すると以下のようなタイトルが出てきますがどれが自分がやろうとしてることなのかわからないの教えて欲しいです
0からフォームアプリを作りたいです
.NET 5
OpenCV4
Unity
Visual C# 2017
ASP.NET
C#によるWindowsシステムプログラミング 計算途中の結果を取得して 一定時間ごとに
画面に画像を再描画したいのですが
どういう方法が無難でしょうか
文字を出力するだけならConsole.WriteLine()を挟むか
テキスト出力でできたのですが
画像を表示して、それを更新するにはOnPaint等を利用する
しかないのでしょうか それとももっと簡易な方法がありますか
思いついたやり方(動作未確認)
@OnPaint内で ある配列(途中結果)の内容を元に画像を描画
A一定時間ごとにタイマー等でOnPaintを強制的に呼び出して
@の処理を再実行して描画を更新する
↑のやり方をした場合 メインの処理では計算が実行されていて
その途中結果をOnPaint内の処理が読みに行って描画が更新されるので
待ち合わせとかは特に考えなくてもいいんですよね... 作って覚える Visual C# 2019 デスクトップアプリ入門
作って楽しむプログラミング Visual C# 2019超入門
とかアマのページ見たら
なんかよさそうだったよ
読んでないけど
サンプルコードも付いてそうじゃん >>450
表示したいタイミングで
Thread.Sleep(100);
とかやる
これでダメになったときは
きっと色々理解してると思う 場所がループ内のときは
一定時間毎に挟まないと
動かなくなっちゃうので注意です >>452
>>453
どうもです
そのやり方でちょっと考えてみます >>448
実際にアプリ作りもって話すすめていく本がいいと思うよ NFTゲーム、NFTアート、ブロックチェーンゲームに今すぐ参入しなさい
これからこの市場は100倍になる
2年もしたら先行者利益が失われてブルーオーシャンからレッドオーシャンになるだろう >>451
回答ありがとうございます
本の家で立ち読み出来たので読んできたのですが
理屈とか抜きでとりあえず出来て喜ぶ感じの本だったのでちょっと違う感じでした
(偉そうなこと言ってすいません)
骨組みも何もない所からフォームアプリを作れるようになりたいです >>450
コントロールのクライアント領域の再描画はControl.Invalidate等を呼んで
無効化するのが基本。(等と書いたのは似たようなメソッドが複数あるから。
その辺の事情はDobonさんとか見て)
OnPaintはシステムからコールバックされるもので、基本的にはユーザーコードから
呼ぶものじゃない。
途中経過をどう表示に反映するかについては、タイマーで一定時間ごとに
Control.Invalidate呼ぶのが一番単純で分かりやすくないかね。
途中結果がプロパティで取得できるようになってればOnPaintでそれを読んで描画するだけだ >>457
え?win32apiを直接いじって画面作るとこからやりたいとか思ってる?
CreateWindowとかいう引数がぐっしょりあるわけわからんメソッドを自力でやりたいとかそんなん?
今の時代それは無駄よ
シリコンウェハー自分でスライスしないと気がすまないってぐらい無駄よ >>458
どうもです
そのやり方でテスト版ですが
動作確認できました >>459
こういうのを1行1行解説されてる本が欲しいです
貼って作る本はコンソールの文法を勉強した意味があまり感じられなくてやる気が出なかったです
using System;
using System.Windows.Forms;
class Program
{
[STAThread]
static void Main()
{
Form form = new Form();
form.Text = "Hello";
Application.Run(form);
}
} >>462
アプリ作成経験ないので色々分からないのです。
[STAThread]
Application.Run(form);
とかコンソールの文法の本に出てこなかったので。
なのでこんな基礎的な部分から解説してる本が欲しいです。 自分もwinformから入ったけどとっかかりに原理原則を細かく理解するのは逆に遠回りでは
ツールボックス見て面白そうなものをデザイナーに貼ってポチポチしてるだけでなんとなく雰囲気はわかってくる
深入りしたきゃ気になるメソッドのマウスオーバー眺めたりF12で潜っていけばいい ILSpy使ってフレームワークのソースコード覗くといいよ 昔と違うからなぁ
絶対遠回りだよ
ある程度で割り切らないと
時間ばっかり浪費して
何も作れないで終わっちゃうぞ ジェイソン・ステイサムに兄貴がいるのか?
あー?どうなんだ、質問に答えるんだ!
アドレナリン出し続けなきゃ死んじまう体にしたろうか! >>463
>>466に同意だわ
とりあえずサンプルが動く環境を作ったら、分からないところは一つ一つググる
本買っても自分の期待することが書いてるとは限らないし、そもそも最近は情報の劣化も早いからね
フレームワークも .net5 が最新になってるし、それ以前の書き方とは少し異なる部分もあるはず
フォームアプリ作りたいなら練習に何か目標決めて、調べながら小さいアプリ作ってみると良いと思うよ 手を動かしながら都度ググって動くものを作るのはいいけどその場合こう書くと動くがなんでそうなるのかわからんってなりがちではある ググりながら動くものを作るのは別に普通のことでは? >>472
ワロタ
ジェイソン・ステイサムって結構CM出てんのか、知らんかったわ >>461
自分も初心者ですが、デスクトップアプリいろいろ作れるようになりました
ちなみに、これ>>451の上の本読みました
もちろんこれだけですべてが理解できるわけじゃないけど、フォームアプリのとっかかりとして非常に参考になりました
自分もあなたと同じで、全部ちゃんと知らないと気が済まないタイプですが
それを追求するには、プログラミングの世界は広大すぎます
C#だけでも余りに広い
まず、勉強の成果を形する、これがやれないと楽しめなくて、その後には挫折が待ってます
そういう意味で、不完全であってもフォームアプリの基礎をかいつまんで学んでおくのは大事
>コンソールの文法を勉強した意味があまり感じられなくてやる気が出なかったです
これ、全く違うと思います
自分は「独習C#」をベースに勉強しました
コンソールの文法ですね
フォームアプリを作る上で、なくてはならない文法ばかりです
作って覚える系の本が教えてくれるのは、骨組みです。
中身を埋めるのに使うのは、コンソールで学んだコードです+入門本にはなかったクラスの使い方はググる
やってきたことは確実に役に立つはず! プログラミングの勉強を本でする奴とは友達になれない 本で得られる部分の知識は本で学べばいい
ネットだけだとつまみ食い的になりがちだから、特に最初は本である程度網羅的にやるのがいいと思うわ 別に好き好きじゃね
賞味期限切れの名著を後生大事にしてる奴はそっと避けたくなるけど 初学者は本で体系的に学ぶのが近道だと思うけどね
紙か電書かの媒体は問わないけど、順番に読み進められるのは大事
リファレンスはその次 本来概念的に同じものの筈なのにクラスが複数に別れてしまってるとき、それぞれに共通する処理ってどこにどう実装すれば良いんだろ?
たまたま同じ処理とかじゃなくて、同じ処理であるべきのもののケース
同じ処理をそれぞれに書く? 外から注入?
今からクラスまとめるのは無理です 残念ながらインターフェースのデフォルト実装はつかえないバージョンです >>483
どっちもどっちだな。
ネットこそ賞味期限切れの情報がゴロゴロしているし。 >>489
基底クラスに共通処理書いて継承するということですか?
書き方はわかりますけど、そのやり方がアンチパターンなのかどうなのかの区別ができないというか、
よろしくないと思って別の実現方法考えてました アンチパターンを避けたいとかいうのなら、クラスをまとめるのは無理とか言ってる場合じゃ無いような気もするけど
なんか事情があるんかしらんけど 別の静的なクラスに共通処理を書いて、その別れてしまったクラスからそれぞれ呼べばいいんじゃないの?
みんな実際のコード見てないんだしなんとも言えんでしょ protected voidとかprotected staticで共通処理書くのってアンチパターンなの? >>492
事情というか誰かが作ったそのクラス設計で開発が進んでしまってて今更どうしようもない感じ
そこに引っ張られて自分の所がぐちゃるのを極力さけたい
基底クラスに詳細実装書いても良いケースがあるのかどうか、それはどんな時なのかがわからんです
>>493
それくらいしかないのかなあ >>494
そもそも継承を積極的に使うこと自体がアンチパターンなので 漏れなくobjectを継承してるC#はアンチプログラミング >>495
>>486にある「今からクラスまとめるのは無理」とはどういう意味?
継承が適用できるなら素直に継承使って書き直すのが
一番だと思うけど、それは許されてないってこと?
何ができて何ができないのか、どこまでの変更が許されるのか。
ちょっと全体的に話が漠然とし過ぎて雲を掴むような話だねw >>495
基底クラスで派生先の処理を書くのはおかしい
基底クラスとして適切な処理を書くのは問題ない
という普通のことが聞きたいの? AとBで共通の処理があるから、この部分をベースクラスにしようって順は大抵クソだな。
とくにAのソース全く触れない場合は。
Interfaceだけにしとくのが検討要件で、その価値がないなら、多分何も構造変えないが結局ベスト。 概念的に同じものだからといって必ずしも同じクラスにすべきとは限らない
同じクラスにするか複数クラスにするか設計意図次第
どうするのがいいかは共通な処理と共通でない処理の関係性やそれぞれの凝集度によるので
>>486に書いてるような内容だけで判断するものじゃない >>502
当然誰もが真っ先に思い浮かぶのはインターフェースだがそれは後出しで真っ先に却下されてる >>504
>>486を素直に読めばむしろそれはないと思うよw
これは言い掛かりかもしれないが、
なんか盲目的に実装の継承を否定してインターフェイス使えって人散見するけど、
正直中学生じみてると思うんだよねw 状況が良く分からないな
誰かが作ったクソなクラスAがあって、自分はそれを使いたくないから別の同じようなクラスBを作って、でも共通的な部分は共通処理にまとめたいって話なんかね。
その状況なら俺ならクラスAをラップするようなクラスを作って、必要な共通処理だけクラスAに移譲するようにするかな。 まぁ何にせよアンチパターンがどうとか考えるより、メンテしやすさ、シンプルさ、使いやすさなど実利的なところを重視する方が俺は好きだな >>507
その辺を重視した結果がアンチパターンなんじゃない? 初めに考えたのが基底クラスだった
全く同じ処理であるべきものなのにインターフェースにしてブレを許容する作りはおかしい いまからクラスを纒めるのは無理ですって言ってんだろカスども 間違ったものに何を被せても出来上がるものは間違ったものにしかならん
下手に猿知恵使って問題を見えにくくするくらいなら誰の目からも間違っていることがわかるようにしとけ スパゲッティでも動くものは動くし、
誰かが頑張ってメンテしてくれるんだぜ バージョン管理についてお尋ねします
個人で素人開発して2年かけてそれなりにプロジェクトもでかくなっているのですが
いまさらながらにバージョン管理した方がよいのかなと調べています
gitやSubversionあたりかなと思っていますが
個人レベルで既に大きくなったプロジェクトを今からでも
管理するように勉強した方が良いもんでしょうか
いまは、単純に外部ストレージにまるごとプロジェクトのフォルダをバックアップしてます あたりまえ
gitを勉強しよう 今更Subverusionはない >>515
VSにも統合されてるgitだな
他の選択肢は考えなくて良いかと YouTube で有名な、雑食系エンジニア・KENTA のサロンの、
Ruby on Rails 初心者用コースでは、
Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap
VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, AWS, CircleCI、データベース などは必須
転職で、必ず聞かれるのが、git のプルリク(pull request)のやり方。
ウェブ開発で、gitを知らない香具師はいない
gitできないと転職できない gitとgithubでプライベートリポジトリに入れておけばいいやん。 githubになんて挙げたらコード補完の学習材料に著作権ガン無視で使われるんじゃなかったか?
あの問題解決したの? 機械学習のモデルに使うぶんには著作権はフェアユースの範囲で問題ないってスタンス
0.1%ほどの確率で出力される学習データそのまんまのコードのライセンスに関しては明確な回答を避けているように見える
やはり稀だが個人データも出力されてしまうことがあって, メールアドレスだけはフィルタされるようにしましたって下りは笑うところだと思う Azure Repos、かつてVisualStudio Onlineと呼ばれた細々続いているサービスが有ってだな 個人ならSVNの方をお勧めするけどなあ
プロジェクトみんなひっくるめて開発のルートディレクトリごとぶちこんどけばいいんだもん、楽 あとWindowsだとTortoiseSVNが神すぎる 個人ならサーバーすらいらないgitだと思うがなぁ。 >>528
別にgitでも個人ならその運用でもいいし
TortoiseGitあるし
今後チーム開発やることになったら九分九厘git使うことになるんだし
SVNのメリットはないと思う CVSならまあドカタ現場ならわりとあるけど、SVNは中途半端だから滅多に出くわさないね
やる価値なし みなさんアドバイスありがとうございます
gitが基本のようですが、それでもいろいろな見方もあるようなので決めかねてます
ちなみに
・本業と別に片手間でWindowsFormによる開発、ただし自分が作ったものを
業務でかなり使用されるようになっている
・完全に個人開発で、他の人とチームで開発することはまずない、転職することもない
・他の業務が多いので、学習コストは必要最低限にしたい(無論必要なら寝る時間削る)
・現在作ってるプロジェクトにすんなり導入できるか(←かなり重要)
・個人PCでやっているので、バックアップはしているけれどひとたびデータが飛べば
それまでの開発が継続できなくなるので、なるべくメンテナンス性が容易な手法がいい
・MacにParalles入れて仮想のWindows上でVS2019にて開発、サードパーティ製のモジュールも使用
現在はParallelsのイメージをまるごとバックアップして開発環境ごと保存してます
・新しい画面や機能を入れる場合は、CSファイルをコピーしてプロジェクトから外してバックアップ代わりに
(トラブったら新しい方を消して元のCSファイルをプロジェクトに戻す)ってことしてます
参考サイト見てても、チーム内の新人が下手打ったなどの例ばかりで
個人でやるメリットと導入や管理の手間のバランスがわからないところです
覚えてしまえばなんてことないのだろうとは思いますが・・・ >>536
vs2019使ってんならvs標準機能のgit使っときゃいいんだよ >>531
SVNもサーバーレスで使えるよ
外部参照等の一部の機能が使えなくなるけど Visual Studio使ってて導入に手間をかけたくないと言ってるんだからVisual Studioに標準で組み込まれているgit一択でしょ VS標準のgit、調べて使ってみます
みなさんアドバイス頂きありがとうございました >>541
Visual Source Shredderは時代の最先端を行っていたからな >>532
TortoiseGitは違うんだなあ
なんで同じような実装にならんのか知らんけど 俺はgitkrakenとbitbucket使ってるな 今のGithubはMSに買収されてプライベートリポジトリが無料無制限となり、VisualStudioとも強力に統合されている
Bitbucketはもう存在価値ないよ >>549
> 今のGithubはMSに買収されてプライベートリポジトリが無料無制限となり
うひゃー、そうだったのか
VS使ってて「こんなにGithubとMSがツーカーでいいのか、おい?」って思ってたところだ vscodeとVSで微妙に違うのでたまに混乱する
自分が使ってるVS側が古いだけか >>549
VisualStudio Onlineは最初から5人まで無料で容量無制限だったから使い続けているけど、Githubも同じ様になってるんだな githubでプライベートリポジトリがいいっての。
vs使ってるんだし、将来一部をazureにするにせよ、
そのままデスクトップformだけにせよ、
あるいは.net6などに移行するにせよ。
vsだけでなく、vscodeも併用するようになるにせよ、
何も変えず現状維持でも、
可能性高い将来の環境追加を考慮しても
マイクロソフトのgithubが一番だっての。 タダでMicrosoftにソース提供するようなもんだな vs使ってないな rider avaloniaやってるわ >>536の会社のポリシーがわからんからなんとも言えんが普通の会社だと社内開発のコードをgithubに上げるのは色々まずい気がする >>557
素人コードで手間を省くのにコード内に書いていることも多いので
とてもクラウド上にはあげられないです
ローカルでgitだけ(githubは使わない)使うという理解ですが
あってますかね・・・
勉強はじめましたが、ローカルだけに絞るとなかなか記事が少ないですね
githubをプライベートにってのも、設定ミスで実は見えてましたなんてことが
ありそうでちと怖いです、気づいて指摘してくれる人も周りにいないので
でも企業とか外部に情報出さないのが鉄則のように思うのですが
githubが多用されていることが素人には不思議です
有料にしてプライベートが基本なんですかね さすがに現実を知らなすぎでは
某誰でも名前知ってる日本の大企業の社内システムのソースは全部Githubのプライベートリポジトリにある
Office365とGSuiteも契約して使ってるから、ソースに限らずメールや資料は全部MSとGoogleに預けていることになる
社内システムや顧客向けシステムの殆どはAWSとGCPで運用している
こんなの全然珍しい話じゃないよ 設定ミスで実は見えてましたーとかないから...
プライベートリポジトリはpritateとマークが付く。
それでも不安ならreadme.mdとか1つだけアップして、
githubからログアウトして
該当のリポジトリをURLで見ようとすればいいだけ。
見れないことが確認できれば「該当のリポジトリはちゃんとプライベートになってる」から使っていけばいいだけなんだから。 あと上に何回も書かれてるがプライベートリポジトリは無料ね。 >>558
> でも企業とか外部に情報出さないのが鉄則のように思うのですが
たいていの会社の多くのプロジェクトはそうだと思う
モノによっては特定の部屋から出しちゃダメとかすらあるしね
ただ逆に大学と共同研究開発とかでgithub使うとかもあったりする
> githubが多用されていることが素人には不思議です
多用されてるかどうか知らんけど使ってる奴の(ネット上の)声がでかいのは確かだと思う >>560
> プライベートリポジトリはpritateとマークが付く。
こんな奴が設定ミスで~ とか言っても説得力 "0" やなw 弊社クソデカJTCだけど、ソース管理サーバーはセルフホストしてるぞ。
社内システムも各種そういうクラウドもあるけど、国内でも仮想サーバー立ててそっち使ったりもしてる。 Azure導入してるところはAzureRepos使ってるんじゃないか クラウド利用ならAzure DevOps Service
オンプレミスならAzure Devops Server
Expressは同時接続5ユーザまでだけど個人利用のライセンスは無償
WindowsServerでなくてもクライアントOSにもインストールできる
個人利用ならVisualStudioCommunity + SQL ServerExpress + DevOpsServerExpressを1台の開発マシンにインストールすればすべて無料で利用可能 仕事で普通にgithubのプライベートリポジトリ使ってるがな
一カ所だけで開発してるわけじゃないし Azure DevOpsはGithubに統合していく方針でしょ
Github Actionsが名実共にPipelinesの後継だしな ギフハブ以外に選択肢なんてほぼ無い時代に何言い争ってんねん
強いてギフハブ以外にあるとしたらBANされづらいギッラボがハッキングツール置き場として選択肢上がってくるくらいだわな GitHubではオンプレミスのDevOps Serverの代替にはならない
クラウドのDevOps Servicesの位置付けは微妙なところだね >>570
github enterprise使えばオンプレでgithub actions使えるのでは? >>558
今のVS(Ver.16.11)は既存のソリューションのローカルgitリポジトリを作るのは簡単だよ
gitメニューのgitリポジトリの作成でローカルのみを選んで作成するだけ
それを実行したらソリューションフォルダの中に.gitフォルダが作成される .gitignoreをちゃんと設定しないと後々面倒なことになるね
ググってコピペで十分だが >>574
VSでリポジトリを作成すればVS向けの.gitignoreも自動生成されるよ プログラムソースはgit、リソースはsvn管理が一般的だろ
githubとか使わないでも、ローカルのHDDにリモートリポジトリ作れるよ
gitクライアントはSourceTreeが使いやすくて好き source treeはいいね
単体リポジトリだけならvsのgit機能で事足りるんだけど
vsで複数リポジトリを統合管理できたらsource treeからまるごと乗り換えられるんだよなぁ ドキュメントとソースを別管理にするとどのドキュメントのバージョンがどのソースのバージョンに当たるのか普通にわかんねーぞ そういう管理してるとこあったけどバカが知ったかで管理者気取ってるだけで問い詰めたら全く理由らしい理由なかった git教とsvn教の両方から叩かれるソリューション 趣味でC#書いてるだけだからか、Githubに触れる理由が見当たらない。 趣味でもOSSのライブラリのソース見たりすることはあるだろ?
それすらしないならさすがに無価値なんで存在を無視して差し支えない 素人が価値のないコードを必死に守ろうとするのは滑稽だな
そんなもん全公開でいい 素人だろうとデータを軽んじてる時点で社会人として失格だわな
そういう奴が個人情報をお漏らしする なんでソースコードの中に個人情報が入るのかがまず分からん 個人情報はともかく、APIのkeyをベタ書きして…というしょうもないミスがまれによくあったりするからなぁ >>590
多くのサンプルがそうだからな
じゃあどこへ置くんだよっていうと結構難しかったりする >>579
リソースはpngとかのいわゆるバイナリファイルかな
>>580 >>581
gitはバイナリファイルの差分管理ができないからsvnで管理する
そりゃgitで全部管理できたら楽だがプロジェクトが大きくなったらトラブるよ
個人開発レベルのサイズならgitで済むかもだが
svnとgitのバージョンのずれは運用で何とかするな(日時とか見てそれぞれ戻せば別に問題ない)
どうしても一緒に扱いたいなら別のバージョン管理システム使うかだね
(perforceとか) >>593
> svnとgitのバージョンのずれは運用で何とかするな(日時とか見てそれぞれ戻せば別に問題ない)
個人的にはsvnの方が慣れてるのでいまだにsvn使ってる俺ですらそれには賛成できんわ でかいバイナリー扱うならgit LFS使えばいいんだよ git LFS は俺が選定した当時は問題ありそうだったから使わなかったね
今は良く分からんけど使えるなら使えばいいんでない?
使ってないのにググった結果で適当言ってるだけなら怖いけど 知りもしないのに知ったかするのが怖いってのは自己紹介かな >そりゃgitで全部管理できたら楽だがプロジェクトが大きくなったらトラブるよ
とりあえずこれ、gitになにか問題があってトラブるって言ってる?どんな問題? まぁ、100Mのものが無いだろうと思ってたら、
100M超えてるのが2つあって手戻しとかはあるな。
個人でプライベートだと、コンパイル結果や中間ファイル消したりもしないし。
拡張子でざっくり消せればいいのだが、そうもいかず名指しでignore指定。
ほほ間違いなく後手対応になる。 Visual Studioが最初に生成する.gitignore使えば生成ファイルが除外されてるしな >>593
ドキュメントとソースのバージョンが一致しなくなっちゃうより問題あることって起きる? https://sites.google.com/site/nantonaku999/home/fairu-cang-ku2/fairu-cang-ku-2
このようなニコニコ動画弾幕ツールを作るにはC#を学習すれば良いのでしょうか?
参考になりそうな書籍などありましたら教えて欲しいです
プログラミング自体入門者です。 gitとsvnを併用運用するのって良くある環境だと思ってたけどこんだけ突っ込み入るならそうでもないのかね
gitは大きなバイナリの扱いが苦手ってのはググれば分かるんだから、どれだけ問題あるかとかは自分で判断してくれ
単にリポジトリが大きくなるとかクローンに時間がかかるとか重すぎてタイムアウトするとかそういうのだよ
もちろんプロジェクトによっては問題ないだろうから自己判断だね >>607
俺の職場も併用だし他社でも似た話を聞くよ
そんな気にすることでもない >>606
だいたいどの言語でもできると思うけど、使いたいサービスや前例がある言語を選べると良いとおもう。
それがわかんなかったら、好きな言語を学びながら作りたいものの完成を目指すといいよ。
「この機能は弾幕のここに使えるな…」みたいな感じで勉強していくとモチベも続くんじゃないかな
書籍はいらないよ、サイトで学習するだけで十分。
c#ならここでいい
https://ufcpp.net/ ゲーム系、特にコンシューマ機系はほぼ確実に混じってると思うぞ。 >>606
それWinformsアプリケーションだよ、これから新しく学ぶには良い題材と思えないな
ちなみに需要があるなら、とっくに新しいソフトが作られていて、利用者もそっちへ移行してるものじゃないかな
古いものを仕方なく使う場合、それ相応の理由がある。で、それを確認できないと何とも言えないね ニコ動は弾幕システムも含めて他所のサイトから丸パクリだからな
元の開発者知ってるだけに今見てもムカつくだけだわ
初期の開発はC#だったよ 最初はWinformの4.8 frameworkの方が話しが単純だから学習に向いてるよ。
WPF使うにしても最初は前部ビヘイビアで書く方が理解も早い。
一人で5年と経験もない人がWVVMとかやっても
マイナスにしか働かないし。 >>609
ありがとうございます
C#の基礎的なコンソールの文法は覚えれたと思うのですが
どうやって弾幕アプリを作っていけばいいのか検討もつきません
アプリの本を読んでれば作れるようになるんでしょうか? >>613
前部ビヘイビアがさっぱりわからんが、コードビハインドのことかな? >>613
色々出鱈目だのう
4.8 framework→.NET Framework 4.8
WVVM→MVVM
前部ビヘイビア→全部コードビハインド 何が衝撃的かと言えば、キャリア5年を素人と扱いしているということは
彼のキャリアは推定10年以上ってことだわ c#でディスクパーティションを削除したり作成したり自動化したプログラム作りたいんです。
それ系のサンプルコードを検索しても出てこないんですがc#では無理でしょうか? >>613
すいません
Amazonで.NET Framework 4.8 とかMVVMでググっても出ないんですけど
具体的にどういった本がそれに当たるのでしょうか?
Xamarin,VisualC#,WPF,ASP.Net,.NET5 といったものが多く出てきましたが
自分の目的にはどれがあってるのか… 6年ぶりにC#に戻ってきそう
といってもWinForm(VS2015)しかやっていなかったけどこの6年で何か変わった? WinFormの質問です
ラジオボタンはAppearanceボタンにした時、選択時のボタン色が薄い青?みたいな感じになるんですが、これを任意の色に変更することは可能でしょうか
可能であれば方法を教えていただきたいです
よろしくお願いいたします FlatStyleをFlatにしてFlatAppearanceで設定する >>637
ありがとうございます!
今日試してみます HttpClientのメッセージロギングしてデバッグしたいんだけど、Chromeの通信デバッグ並に完全に読み取る事って簡単には出来ない?
HttpRequestMessage request = new(HttpMethod.Post, url);
Debug.WriteLine(request);
これだとその後にCookieContainer等からセットされるヘッダは読み取れない訳だけど、実際に送られるリクエストメッセージを完全に読み取る方法ってあったりする? メソッドの引数がenumの配列なのに
enumの値渡してもコンパイルエラーにならなかった
直しておいてね 最近はパターンマッチング使えるしenum要らない子かなーと思ったらHasFlagがあるんだった 初歩的な質問ですいません
初めて非同期処理を書いてみたのですが、awaitを使用して非同期メソッドを呼び出してもその結果を待たずに処理が進んでしまいます
非同期メソッドを呼び出す側はasyncを付与しています
awaitを使用すると結果を待つ、いわゆる同期的な動作をすると解釈しているのですが認証が間違っているでしょうか?
またこのように処理が進んでしまう場合はどこ疑うべきでしょうか? >>643
漠然とし過ぎてエスパーし辛いから、もうちょい具体的にコード(の一部)書いた方がレス付きやすいんじゃないかな >>643
待つ相手の戻り値がvoidになってるんじゃないか。
async voidだとawaitしても待たないから戻り値をvoid以外にするか
await Task.Run(()=>this.hoge())とかにする >>643
> awaitを使用すると結果を待つ、いわゆる同期的な動作をすると解釈しているのですが認証が間違っているでしょうか?
間違ってます。awaitを使ってください。
awaitは非同期処理を同期処理の時と同じようなスタイルでコードを書くためのものです。
awaitより後のコードが現在実行してるタスクの後続タスクとして実行されます。 寝ぼけて出鱈目なこと書いてる…
>>646は無視してください static async Task Main(string[] args)
{
Console.WriteLine("a");
await TestFunc();
Console.WriteLine("f");
}
public static async Task TestFunc()
{
Console.WriteLine("b");
await Task.Run(() =>
{
Console.WriteLine("c");
string s = "";
for (var i = 0; i < 100000; i++)
{
s += "a";
}
Console.WriteLine("d");
});
Console.WriteLine("e");
}
>>650 インデントないと見にくいかなーって思って。
JaneStyleで安価にマウスオーバーでインデント付き文字列が見えるけど
くろーむやfirefoxみたいな通常のブラウザだとインデントつかないね そういう時はideoneを使うのです >>1 にも書いてあるでしょ
https://ideone.com/hPhtgv >>652
横レスだが、それは知らんかった
JaneStyle使ってるが安価だと確かにインデント見えるな
今度使わせてもらうわ そろそろWPFに手を出してみたくて最小コード書いてコンパイルしてみたんですが
System.Windows のアセンブリ参照が無い
という状況。そんなことある?
VisualStudioは入れて無いんですが、VS入れないとアセンブリ追加されないってこたぁ無いと思うんですが。
アセンブリ参照が
Windows\assembly
Windows\Microsoft.NET\assembly
ProgramFiles(x86)%\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8
と3つあるのがよく分からんのですが、何をどうすればいいんですかね? WPF以前に.NETの開発に手を出してこなかった方かな
そのコンパイル単位で何の外部DLLを必要としてるかコンパイラに教える必要がある
WPFはとりあえずWindowsBase.dll, PresentationCore.dll, PresentationFramework.dllの3つが必要
何でコンパイル/ビルドしてるかによるけど
csc.exeなら/r:WindowsBase.dll /r:(以下略)みたいに/rを並べる
dotnetコマンド使ってるならそもそもdotnet new wpfでWPFアプリのテンプレート使えばいい そのレベルのアホがなんでVisualStudio入れないでやってこんなとこで質問してんだ?
わからねぇなら一度は入れてやってみろよ
脳にクソでも詰まってるのか? C#はよっぽどでない限りVS使った方がいいと思うがなぁ。
dotnetとphpがまじっててー、両方同じサーバーで運用してるんですー、みたいなんじゃない限り。 外部…DLL…?
WPFって追加の参照設定が必要なんですかい
そーゆーのはコンパイラがなんかうまいことやってくれるもんだと思ってましたわい
しっかしこういう知識って皆どこで学ぶんですかね?MSDNは何処に何が書かれているかクッソ分かりづらいし
まぁ質問したら先に進めたんで質問するのが正解ですわ MSDNって書いてる時点で何となく世代の想像がつくなあ
これから勉強するということであれば
CommunityEditionなら無料で使えるんだからおとなしく最新のVisualStudio2019を入れて
MicrosoftDocsのチュートリアルから手を付けるのが無難な気がするけどな
Webで適当に検索したところで引っかかるのはゴミみたいな古い情報ばっかりで656みたいな無駄なところで手間ばかりかかりそうだし C#の場合初心者がVS使わずにやるのはかなりの縛りプレイだと思うわ
まぁ自分もそれやって時間を無駄にしたんだけどさ 分からないことを1つずつ潰してから次に進みたいってのはプログラマの真理だと思うが、
最近は技術範囲が広すぎて(というかフレームワークとかライブラリの守備範囲が広すぎて)、1つ1つ追いかけてると時間が足りない。
なので最近は分からないことあっても先へ進めてる。
我慢してやってると段々線で繋がってくる。
最初はめちゃくちゃ辛いが・・ 正直大前提となるdllの参照とか全然意識したことないヘボだけどvsが全部やってくれるから困ったことない
そもそもc#でvs使わないプロジェクトなんて聞いたことないので・・・ VSでテンプレート選んでプロジェクトを作成したら最低限の参照は設定されているし
追加する必要があるものはDocsの各クラスの説明を見れば全部書いてあるからねぇ .NET Core系の開発だと結構普通にプロジェクトファイルを手で弄る機会があるよ
最近はCI/CDのためにコマンドラインでビルドや実行をするケースも増えてる
もちろんプロジェクトファイルを1から手書きする必要はないけど、最低限dotnet コマンドくらいは使えて損はない 自動ビルド用にコマンド覚えようって話は同意なんですけど.net coreであってもコーディングはvsでやるほうが効率よくないですか?
よくわかってないんですが、サーバ上で開発するとかでvs使えないパターンがあるんでしょうか? 効率を考えるんだったらテンプレからコピペしてきて必要な箇所を自分用に書き換えるだけで済む
生産性の高さをウリにするというのは、そういうものを指す
コマンドを暗記してる暇があるなら、気の利いたコードスニペットを作った方が即戦力になるだろう 口が悪い人が多いねw
>>656の人の「基礎から理解したい」という心構えは(俺自身は全然持ってないからw)
俺なんか評価しちゃうけどなあ。
ただ、やろうとしていることは「応用範囲の広い基礎の習得」というより、
文明の利器が使えない状況を強いられるほぼありえない状況を想定した
「無人島サバイバル術」に近い気はするけどねw
もちろんそれだって趣味なら全然ありだよね。 あるいはあれだね、サラリーマン的に言えば
自分の会社でしか通用しない(他所に転職したら役に立たない)細かいローカルルールを
基礎だと錯覚している印象はまあある。 >>672
俺がはじめた20年ぐらい前でもウィンドウから作るって勉強法は無意味って言われてた気がする
実際、引数がクソ長えapiの使い方がわかる程度でやっぱり
だからそれでどうしてウィンドウができるんだよって
疑問を解消できるものではない
だってMicrosoftがそういうの用意したんだからそういうものじゃん
っていう以外ない
それってどの階層でも言えることで.netframeworkを掘って言っても最後にはwin32api的なものが待っていると思う まあc#のIDEはVS使えればええやろ
今どきあとVScode以外のエディタでc#の開発やらせん
組み込みはしらん VSも使える人を募集してるのにVSしか使えない子ばかりやってくるんですね
でも今話してるのはVSすら使えない子ですってよ? Visual Studioが生成したプロジェクトファイルをそのままmsbuildとかdotnetコマンドに食わせればいいだけだから普段はIDEで開発しとけば問題ない .NET 6.0にしただけで自作ライブラリの処理速度が向上してて感動したわ 俺社環は.NET Framwork4.0だからバージョン2つ上がったか・・・ .NET Frameworkの新規更新は既に終了しているので今後も更新されることはない https://www.youtube.com/watch?v=aXKEWa0_YJg
上記の動画のようなメモリーを弄ったり読んだりするクラスや関数の使い方って
どういう方面の参考書買えば学べますか? 面倒からサムネしか見てないけどメモリ弄ってチートをするって話?
であればC#は関係ないからリバースエンジニアリング関係の本じゃないかな
こういうのはWindowsならWin32多様するからC#よりもC++の方が楽
それにネイティブプログラミング力とリバースエンジニアリング力は比例するから普通にC++頑張るのが一番の学習になると思うよ どうしてもC#でやりたいならDllImportでkernel32.dllのOpenProcessとかReadProcessMemory利用すれば出来る
それらをスムーズに利用するためにunsafeなポインタ型を理解することから始めよう >>687
回答ありがとうございます。
やりたいことはそのとおりです。
C++とWin32APIの参考書は買ったのですが
覚えることの多さとWin32APIのコードが長すぎて全然読んでませんでした。
Win32C++に比べたら簡単そうなC#でやりたいのですが遠回りでしょうか? >>689
プログラミング自体初心者であればC++はハードルが高すぎるから
チート用途としては多少不便なもののC++より難易度の低いC#から始めるのは良い選択
ただC#自体に他プロセスのメモリを読み取る機能は無いから結局Win32APIは避けて通れない道 >>690
やることが見えてきたので助かりました!
ありがとうございました。 >>691
こんな感じでWin32APIも使うこと自体はそんな難しくはないがC/C++の経験が無いとMSDNを呼んで引数等をC#の型に変換するのは難しいだろうな
とりあえずゲーム側のアドレスが既に分かってるならプログラミング自体はそんな難しくはないが、
こういうのはそもそもアドレスを解析したりする工程で7割くらい時間使う訳で、その解析力については>>687で言った通り
[DllImport("kernel32.dll")]
static extern bool ReadProcessMemory(IntPtr handle, nuint lpBaseAddress, void* lpBuffer, nint nSize, nint* lpNumberOfBytesRead);
static int ReadInt(IntPtr processHandle, nuint address)
{
int result = 0;
ReadProcessMemory(processHandle, address, &result, sizeof(int), null);
return result;
}
static byte[] ReadBytes(IntPtr processHandle, nuint address, int length)
{
byte[] result = new byte[length];
fixed (byte* p = &result[0]) return ReadProcessMemory(processHandle, address, p, length, null) ? result : null;
}
static bool TryReadVector4(IntPtr processHandle, nuint address, ref Vector4 vec4)
=> ReadProcessMemory(processHandle, address, Unsafe.AsPointer(ref vec4), sizeof(Vector4), null); ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。 global usingは使ったほうがいいですか? いわゆるフォルダ表示みたいな物をやりたいんですが
そのままフォルダみたいなGUIのパーツはないのですか?
リスト表示でごちゃごちゃやるしかない?
jpgの縮小画像表示みたいのしたいのですが >>698
お前の中ではそりゃ説明不要なんだろうが、
こっちはウィンドウズアプリでやりたいのかWebアプリにしたいのかさっぱり分からんわけよ。
つまり出直して来い そのままフォルダみたいなGUIのパーツは標準ではないな
サードのライブラリを漁ったらあるのかもしれんが, .NETのGUIライブラリとか紹介してくれる人って一切いないからよ
俺は聞いたことがない 自分は使ったことはないけど
Windows API Code PackにExplorerBrowserがある
Explorerのシェルをそのまま使うやつ
Windows API Code PackのMS公式配布は終わってるけど野良クローンがそこらに ListViewで普通に組んでも手間は同じじゃねえの
えいやって組む気合が要るけど jpgの縮小画像表示みたいのしたいって言ってるし
ファイルのサムネ表示自動でやってくれるならそうとう手間は減るんじゃ 実行されたらすぐに音を出す方法はありますでしょうか
SoundPlayerだと数秒遅れて音がするので遅いなーと >>698
漏れは、Ruby で、selenium webdriver, nokogiri などを使って、
ローカルPC から画像ファイルを読み込んで、
それでHTML を作って、ブラウザを自動起動して表示している
# PCからランダムに、画像ファイルを10個取り出す
picture_paths = Dir.glob( 'C:/Users/Owner/Pictures/*' ).sample( 10 )
# 各画像の、img タグを作る。改行を削除する
picture_paths.each do | pict_path |
img_str = <<"EOT".gsub(/\n/, "")
<img src="#{ pict_path }">
EOT
img_node = Nokogiri::HTML::DocumentFragment.parse img_str # HTMLの断片を作る
puts img_node.to_html
出力は以下のように、10個のimgタグ
<img src="C:/Users/Owner/Pictures/a.gif">
<img src="C:/Users/Owner/Pictures/b.png">
<img src="C:/Users/Owner/Pictures/c.jpg">
これらをHTML内に入れて、スタイルを付けて、ブラウザで表示する。
Bootstrap でも何でも使える
driver.execute_script jsCode
で、JavaScript のソースコードも実行できる NGにしてるから見えないけどどうせR○byコードの基地外がいるんだろ
ム板でRu○yは問答無用のNGで問題ないよ なんでc#スレで
るびぃでコード書いてんだよ
マイナー言語なんて苦労を背負い込むだけでなんもいいことないじゃん これが噂のアレだったのか
matzに対する熱い風評被害 どこかの言語は助成金タカリビジネスだって言うし、人々に忘れられて金が出なくなったら困るんだろう JavaにだけではなくRubyにまで馬鹿にされるようになったC#。 嫉妬されてんだね
C#より出来がいい言語って無いから ここ10年の追加仕様がスクリプト言語ライクに寄ってるからな。
そういう輩を呼び寄せたのは自業自得。 このRuby妖怪は大昔からどこにでも現れるぞ
人間の常識に当てはめてはいけない >助成金タカリビジネス
これだから日本のIT(ITに限らないが)は競争力失ったんだぜ 初心者です
Form1にtextBox1とbutton1のコントロールを貼りました これで実行してテキストボックスに文字を入力して
public void button1_Click(object sender, EventArgs e)
{
string st;
st = textBox1.Text;
}
ボタン押してこの部分は呼ばれるんですが st が空で入力した文字が入りません
テキストボックスのプロパティのTextに文字入力して実行してボタンを押すと
なぜかその文字だけは取得できます
この実行後の自己入力の文字だけ取得できないのはなぜなんでしょう? >>723
>st が空で入力した文字が入りません
これ、どうやって確認していますか?
何をどうしたいのかがイマイチ読み取れないけど、エスパーすると変数のスコープ関係なんじゃなかろうか 確認は
st = textBox1.Text;
のところにブレークポイント置いてステップ実行でstの中身を見ています
st のところをグローバル変数にしてもローカル変数にしても結果は同じでした
プロパティからのText入力の時はちゃんと取得できてるのでこの記述は間違ってないように思うのですが
実行時の入力がなぜか見た目通りに反映されてないというか 確認は
st = textBox1.Text;
のところにブレークポイント置いてステップ実行でstの中身を見ています
st のところをグローバル変数にしてもローカル変数にしても結果は同じでした
プロパティからのText入力の時はちゃんと取得できてるのでこの記述は間違ってないように思うのですが
実行時の入力がなぜか見た目通りに反映されてないというか 確認は
st = textBox1.Text;
のところにブレークポイント置いてステップ実行でstの中身を見ています
st のところをグローバル変数にしてもローカル変数にしても結果は同じでした
プロパティからのText入力の時はちゃんと取得できてるのでこの記述は間違ってないように思うのですが
実行時の入力がなぜか見た目通りに反映されてないというか 確認は
st = textBox1.Text;
のところにブレークポイント置いてステップ実行でstの中身を見ています
st のところをグローバル変数にしてもローカル変数にしても結果は同じでした
プロパティからのText入力の時はちゃんと取得できてるのでこの記述は間違ってないように思うのですが
実行時の入力がなぜか見た目通りに反映されてないというか ブレークポイントで止まってるときに見えているのは代入される前の状態じゃなかったっけかな
例えば
private void button1_Click(object sender, EventArgs e)
{
string st;
st = textBox1.Text;
MessageBox.Show(st);
}
みたいなことをすれば、ちゃんとstに値が入っているのが分かると思う MessageBox.Show(st); でも変化はありませんでした
自分の環境が壊れてるのかなあ、まだ入れてそんなに経っていないんですが st = textBox1.Text;にブレークポイントを置くと実行される前に止まるのでstに値は入らない
ステップさせると値は入る もちろんステップ実行で通過させています
今新規でこの部分だけでやったら正常動作しました
元のプログラムはprivate void dispatchKeyEvent(int k, int ev) とかいろいろ入ってるので
どれかが邪魔してるんでしょうかね、どれであるかまだ見当はつきませんが じつは入力してるテキストボックスはtextBox1じゃない他の、とか VSのデバッガは世界最強と言われて四半世紀経つが、
それでも見つからないバグもあるんだな。 お前の中でそうだとしても他人もそうだとは限らんぞ
境界性の方かな? >>733
そのいろいろ入ってる処理の中で数値だけ入力許可するとかやってるのかもね 原因がわかりました
private void Form1_Load(object sender, EventArgs e)
{
InitializeComponent();
}
この InitializeComponent(); を消したら直りました
うーんデフォルトにはないこれがなんで書かれてたんだろ… OS標準のC#やpowershellだけでGUIポトペタしたいんだけど
そういう気の利いた野良C#コードやスクリプトってないかな
なければ作るけど qiitaのc#の記事トレンドでVSCODEでWPF開発みたいな記事が人気出てるので
初心者がわからないでやってるんだろ
WPFをデザイナなしで入門しようなんて無理すぎる 会社などのポリシーでVS入れられないんじゃないの
ちゃんと話を通すか転職するのがベストソリューションだよ 容量が大きいから入門コストが高く感じるんじゃないかなと本当は思ってる 前も書いたけど「無人島サバイバル術」的な動機なんだと思うよ 客先で下請けイジメ受けてた時はWPFよりFormsの方が楽だったな
WPfはideの助け無しに書くには難しすぎる >>748
Formsの方がイジメやすかったってこと? >>743
客先の環境でポトペタしたい
というかいまだ標準でできないっぽいのに驚かされた
気の利いた外人もこの世に居なかった 予想外の返事が来たな
つまりVSのポトペタを知った上で無ければ自分で作るとおっしゃるのか
素晴らしい、ぜひ頼む そりゃ外人ならVS入れるか俺が何もしないか選べやファ○クで終わりだからな
その程度の交渉ができないなら真面目にこの業界辞めたほうがいい 俺も会社のPCでOS標準のcsc.exeとメモ帳でFormsアプリ作ってる
開発とは無関係な部署だからVisual Studio入れらんないけど、
仕事楽にしたくて自分や同僚用にアプリ作ってる
でも一番喜ばれるのはExcelのマクロだわ UNIX入門書なんて今だにviで四苦八苦してccだから問題なし。 これも前も書いたけど、「道具(IDE)に依存したくない」って動機は理解できる部分もあるけど、
道具なしで何か作れるようになったところで何か潰しが利く汎用的なスキルが身につくわけじゃないことは
理解した方がいいよね。 いやGUIビルダーをもし自前で作り切れたら、十分すぎるほどに潰しが利く汎用的なスキルが身についてると思うぞw
まあ成果物としてGUIビルダーそのものはほとんど無価値だから、同じ苦労をするならもっと評価されるようなものに労力を投資したほうが賢明だとは思うが 生産性をあげる気がない現場ではゆっくり仕事して残業代を稼ぐ事に集中したほうがいい
調べ物してるフリして全然違うこと勉強したりね >>757
まあ、客先で普通にvisualstudioインストールできない環境でツール作りたいとき不便だよねっていう >>763
vscodeはインストーラ実行なしで使える >>765
そんなん普通だろ
管理者権限ないとインストーラ実行できないから使えないってだけ Windows365で解決だな
ブラウザだけで何でも支えるぞ >>767
仮想マシンにインストールするvisualstudioのライセンスを買ってもらわないと解決しない
無料版で仕事するとライセンス違反の可能性が高い >>758
GUIビルダーを作れるのは有効なスキルかもしれないけど、それをメモ帳で作れるってのは役に立たないスキルだろ >>768
VS2017エックスプレスがあるじゃない WPFでアプリを作ってて、datagridからデータのソースを取得する関数を作っているのですが、各ウインドウやページごとでdatagridのソースに使用しているクラスの型が違うため、関数でうまく処理できません
https://i.imgur.com/fZfQcmG.jpg
どうすれば良いでしょうか。 >>771
同じDataTable使っているならDatagridとDataTableのBindingで事足りるような気がするけどやりたいことと違うような気がしてならない >>771
そういうときのためのC#のInterface言語機構じゃないのか?
つまり根本設計が悪い
あと基本的にUIコンポーネントを引数にとる設計も良くない。
>>772が言っているようにDataContextにぶちこんでいるデータを引数にとる設計にする。
ObservableCollectionのリストになっているのであれば、データクラスを追加するだけで
自動的にDataGridにも行が追加される。 あーdatatableをグローバル関数にすればいいってことですね
合ってます? 単にスタンドアロンのGUIアプリをIDE無しで作りたいという話なら
GUIは全部Webviewの中に押し込んじゃえばいいじゃない
ダメ? 今考えてるのはそんな高級なものじゃないので。
フォームと部品の位置取りをGUIでズリズリやりたいだけなので。
まず既定のフォームを表示する。実際には本物のフォームを表示。この時フォームにグリッド線とかそういうのが表示できたらいい。
貼り付けるコントロールは部品の種類を選んでからフォーム上でマウスで始点と終点を決めて適当に部品を配置する。
各フォームやコントロールのサイズやスタイルはいつでもいじれるようにする。
コンボボックスとかは仮データが入れられるとよい。
出力でC#やpowershellのコードが出てくる。
割と簡単そう。 GUIをテキストで直書きするのは、Windowsアプリを昔から作ってる人からしたら変に見えるのかも知らんが・・・・・
それを離れたら、Webでもスマホのアプリでも、どちらかというとメジャーな方法だろう guiアプリを昔から作っていた人は
rcを手書きすると思うんだが? WindowsアプリでもXAML直書きが手っ取り早くて好き Xamlはボリューム大きすぎて実用化には程遠い印象 XAMLなんてもう終わったものではw
当時からクソ扱いだったし
何でもかんでも詰め込み過ぎなんだよな xamlは手書きが楽で良いよな。Formsのdesigner.csは人が触るもんじゃなかったし。 条件分岐したいだけなのにデータトリガーとかテンプレートセレクターとか書かされるのはキツかった
二度とやりたくない >>784
XAMLに限らないデザイナ一般の話。
いちいちGUIでちまちまやるよりテキストエディタの方が楽なことも多い。 ぶっちゃけXAMLじゃなくて、JSフレームワークみたいにほぼHTMLで良かったのでは?とはたまに思う
もしくは振り切ってあのホームページビルダみたいに・・ オブジェクト思考に反するよな。
インターフェースの使い方さえ分かりやすければ内部の実装なんてどうでもいい。
内部を自分で弄ることか前提のフレームワークなんて流行らないよ。 >>780
WindowsアプリはDirect2D直描画が手っ取り早くて好き >>790
入力BOX作るの本当に手っ取り早いか? WPFは適当なメッセージボックス作るのですらWeb見ないといけないのは酷すぎるわ >>792
使ったことないフレームワーク使うならなんでも最初はそうだろ ここで文句言ってるやつが作ったWPFのアプリみてみたいわw 文句言っている奴はそもそもWPF使ってないんだろう VB6、Delphi触ってればwinformは入門書すら読まんでも移行できる。
Excel覚えれば他のWindowsアプリはみなヘルプすら読まないのと同じ。
しかしWPFは明らかに毛色が違う。前時代的、古典的なUNIX文化を持ち込みすぎ。 >>796
XAMLやMVVMがUNIX文化なの? ツールとかデータ処理ぐらいにしか使ってないからWPFなんて使う事ないんだよなぁ
出た当初(もう10年以上も前)少し試しに作ってみたけどめんどくさいだけw
結局、見た目とかどうでもいいようなアプリでWPFにする理由が全く無いという結論に
WinFormsより作りやすいものいい加減作れよwって思う 幅500長さ900固定のpictureboxに表示する図形倍率について質問です。表示図形幅長の中に大小様々な丸や四角等の図形があります。
@pbox四周50の余白を設ける。最大図形表示幅400長さ800。
A最大幅長さ以内はpbox中心とした位置へ描画
B最大を超える場合は幅長の比率計算して縮小表示
ここまでは行けたのですが当たり前ですがAの場合はいい感じで表示出来て納得なんですが、Bの場合だと図形幅長さが大きすぎると縮小によって格好悪いのですがいい方法等ありませんか?
出来るか分かりませんが、そのままの大きさで描画してスクロールバーとか、マウスで拡大縮小とかですかね?何が参考になるサイト等あれば教えて頂きたいです。 何言ってるのかんからんからスクショなり図なりで示してみたら? 結局何か作るのが一番効率良いんだわ
作る過程でわからんことググって学ぶ サンキュー!
でも文法くらいは勉強しといた方がいいんじゃないの? 知らないせいで車輪の再発明何度もすることあるしね
C#の参考書に良書と言えるのがなかなかない気はする >>805
個人的に「文法って何?」ってレベルだけどググりながら調べてアプリいくつも作ってる
人に教えたいとかならそういう勉強したらいいけど、それ以外なら不要 文法もvsがインテリセンスで教えてくれるし、どこにどんなデータが詰まってるかもデバッグで覗けば推測できる
vsのおかげでテキストで調べる時間が地味に短縮できる 昔formアプリ作るときにc#でやろうとしてイディオムがなんちゃらみたいなの本はお世話になった気がする >>806
車輪の再発明は(コーディングの)勉強中なら良いと思うけどね。
いざ物を造るって時にはやっぱり数多あるライブラリをどう使うかがコスト削減につながるから、欲しいものを見つける力、利用する力ってのは必要だけど >>810
ライブラリ程度ならまだしも、
極端な話でいえば条件分岐のelseを知らないから全部ifで書くって事が起こりうる
だから子細とは言わないまでも全容を把握する必要はあるってこと ビットマップ消去埋めで
pen.Color = Color.FromArgb(0, 0, 0, 0);
gr.FillRectangle(pen.Brush, 0, 0, 200, 100);
こうすると透明色は何も描画されません(Javaの場合は透明色で消されます)
pen.Color = Color.Black;
こうすると透明でない黒で消去されます
Javaのように透明色で消すにはどうすればよいですか? >>814
gr.FillRectangle(new SolidBrush(Color.FromArgb(0, 0, 0, 0)));
でもだめかい? >>815
gr.FillRectangle(new SolidBrush(Color.FromArgb(0, 0, 0, 0)), 0, 0, 200, 100);
だった EdgeからURL貼り付けると&のあとに;が入るな
;を抜いたURLです。 一応できました 他の事象もでましたが
ありがとうございます >>819
これがGraphicsのプロパティーなのは何か間違ってる気がする
まあすべての描画メソッドにいちいちこのオプションを指定する
オーバーロードを実装させるのは煩雑だって判断なんだろうけど 実はこのあとに次の文字描画が続くのですが
gr.DrawString("ABC", font, pen.Brush, x, y);
一度これをしてしまうと
gr.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
後でSourceOverに戻してもgr.Dispose();して新規作成しても
DrawStringが例外発生して文字が描画できないのです
これの原因がわかりません 雑に作っただけだと再現しないねえ
GraphicsのSaveとRestore使ってみるとかどう?
var bmp = new Bitmap(128, 32, PixelFormat.Format32bppArgb);
var f = new Form() { BackgroundImage = bmp };
f.Click += (s, e) => {
var now = (int)DateTime.Now.Ticks;
using (var brush = new SolidBrush(Color.FromArgb((now >> 16) & 0xff, (now >> 8) & 0xff, now & 0xff)))
using (var g = Graphics.FromImage(bmp)) {
g.Clear(Color.Red);
g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
g.FillRectangle(Brushes.Transparent, new Rectangle(32, 8, 64, 16));
g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
g.DrawString("あいうえお", new Font("メイリオ", 12f), brush, 0, 0);
}
f.Invalidate();
};
Application.Run(f); 手数かけて頂いてありがとうございます
今丁度SaveとRestore使っていました
なんとか解決できたようです
ありがとうございます 初めてC#でTaskを触りましたが、分からないことがあるため知っていたら教えてください。
ボタンをクリックしたイベント(1階層目)から3階層下の関数内でTask.Runをして4階層目の関数を実行して3階層目にawaitを付けました。
3階層目の関数は待っているのですが、2、1階層の関数は待たずに進んでしまいました。
原因分かる方いらっしゃいませんか?
イメージとしては↓の感じです。
void btnClick()
→void test1(←進んでしまう)
→→void test2(←進んでしまう)
→→→void test3(←ここでtest4をawait)
→→→→void test4 voidなメソッドはawaitできない
test1からtest4まで全部Task返すようにしてそれぞれawaitして そういう時はtest1〜4を全部同期メソッドにして
await Task.Run(()=>test1());
に変更する ありがとうございます。
そうだったのですね、知らなかったです。
btnClickもtest4の処理が終わるまで後続処理はしないようにしたいので、btnClickまでreturn task?するようにしてみます。 タイマー定期処理を行いたいです
public Form1()のところで timer = new Timer();〜Interval〜EventHandler(Timer_Tick);の記述をしています
Timer_Tickの中でInvalidate();がありOnPaintで画面の更新描画がされるようにしています
Form1上のボタンを押すとtimer.Start();の記述があり
for(x++){}のループの中でビットマップへ線の連続描画がされるようにしています
予想では線が右にずれながら描画される姿が連続的に見えると思ってたのですが
forが終わるまで真っ暗で全部描き終わってから最後に描画の全貌が表示されてしまいます
forループで描画中はTimer_Tickが呼ばれてないようです
ループ中も定期で呼ばれるようにするにはどうすればよいでしょうか? forの中というか実際はもっといろいろな処理が入っていて
全体が終わるまでは数秒かかるかんじになってます
Console.WriteLine("Timer_Tick呼ばれた"); でチェックしたのですがTimer_Tickは呼ばれてないようです >>832
forループを別スレッドか非同期処理に入れる >>831
タイマーのイベントハンドラを実行するのはちっさいおじさん(UIスレッド)
の仕事なので、当然のことながらちっさいおじさんが別の仕事をしている
時には呼ばれない。
ちっさいおじさんは別の仕事(forのビジーループ)にかかりきりで忙しい。
だからTimer_Tickは実行されない。 タイマーは複数種あるんですね
System.Timers.Timerのタイマーでなんとか解決できましたm(_ _)m >>835
どっち道、UIスレッド上でfor文がループしてる途中なんだろ?
そのタイマーからUIを書き換えるのは、たまたまその時は動いていてもまずいだろう・・・・
C#の言語自体なんて出来ても何にもなんないんだし、先に情報科学の基礎を固めた方がいいんじゃないの ウンコ言語、async/waitでUIなんて作ってるwww >>837
C#できてもなんにも何にもなんないってどういうこと? ちょっと待って!>>837がいい事言った
>先に情報科学の基礎を固めた方がいいんじゃないの UIスレッドの使い分けってどんなサイトで勉強すればいいの? できるふりしてソフトウェア開発部門へ就職し、
業務利用されるソフトを作るのが一番の近道
はっきりいって独学じゃムリ 使い分けも何もUIのメインスレッドだけで処理してたら具合悪いとなれば別スレッドでやるしかないんじゃ?
普通に調べればinvokeやらなんやら色々出てくるでしょ
適当に調べて自分でデバッグしてみれば最適解見つかると思うけど Excelから実行ファイルを起動するとカレントディレクトリが起動したExcel基準になるようです
実行ファイルを直接動かすとカレントディレクトリが実行ファイル基準になるので困ってます
世間様ではどのように解決してるのでしょうか >>845
どこがカレントディレクトリだろうが動くようにプログラミングする >>846
そうしたいですが
コンフィグでパス指定すると移動した時に動かなくなったりするんで何が良いのか悩んでます >>847
コンフィグにはカレントディレクトリからの相対パスを記述しているのかな。
だとするとexeのあるディレクトリのパスとコンフィグにある相対パスを結合させた絶対パスを使うんだよ。 っていうか今時そんな四半世紀前のスタイルを使ってる人がいるんだねw >>849
コンフィグってconfig.sysのことと思ってる? appのことでしょ
いや時代錯誤だなと感じるのは「カレントディレクトリ」という概念。
そんなものにわざわざ依存する必要ってあります?
どこにもないよね。 まあまあ、
exe のディレクトリ==カレントディレクトリ
前提でコーディングするって初心者あるあるだからそうやって馬鹿にするなよ >>852
> exe のディレクトリ==カレントディレクトリ
これ Excel あるあるなんだけど…
初心者あるあるとか言ってるお前が一番馬鹿w ExcelのVBAと連携する小さいシステムなので伝統的なカレントディレクトリ使ってるんです
Excelと実行ファイルを同じフォルダに入れれば解決なのでしょうが実行ファイルのライブラリが多いのでExcelが埋もれて見難いなとそれはそれで困り namespace System.Collections.Generic
{
public class List<T> : ICollection<T>,…の中にある、
public void Add(T item);の具体的な処理(リストの最後に加える)はどこに書いてあるのでしょうか? .NET Frameworkならmscorlib.dll, .NET 5以降ならSystem.Collections.dllの中
ソースコード見たいなら
.NET Frameworkのはreferencesource.com
.NETのはgithubのdotnet/runtime >>854
VBAからexe起動する際にそのexeにとってのカレントディレクトリを指定する
exeに渡す引数じゃなくて、exeの実行環境としてね >>854
ExcelをC#のライブラリとして使う方向にしたら?
普通はそうする >>845
そもそも論としてWindowsではカレントディレクトリの扱いが環境として定義
されるようになっているので、プログラミングしてアプリを作るときにカレント
ディレクトリっていう使い方をするならば自分で必要な設定を行えば良いんだよ
まぁお約束(嫌いな人ゴメンねw)でdobonだけど
https://dobon.net/vb/dotnet/file/currentdirectory.html dobonいいじゃん
俺の量産するコードの半分はdobonのコピペだ Excel VBAからどうやってEXE起動してるのかしらんが
必要ならカレントディレクトリ変えればいいだけじゃないのか >>857
ありがとうございます。問題が解決しました。
次に湧いてくる疑問なのですが、
Visual StudioでList<T>を右クリックして、「定義へ移動」をすると。下のように書かれています。
//
// 概要:
// Adds an object to the end of the System.Collections.Generic.List`1.
//
// パラメーター:
// item:
// The object to be added to the end of the System.Collections.Generic.List`1. The
// value can be null for reference types.
public void Add(T item);
初心者としてはreferencesource.comにあるように↓こう書かれていたらわかるのですが
public void Add(T item) {
if (_size == _items.Length) EnsureCapacity(_size + 1);
_items[_size++] = item;
_version++;
}
なぜこれで動くのでしょうか? そしてどうして下のように処理を書いてないのでしょうか? > なぜこれで動くのでしょうか?
mscorlib.dllの中にコンパイル済みのが入ってるから
> そしてどうして下のように処理を書いてないのでしょうか?
コンパイル済みのしか入ってなくてソースがないから ILSpy使えばmscorelibも含めてC#に逆アセンブルしたソースコードを直接確認できるよ >>865
ありがとうございました。スッキリしました。
なるほど、こんな感じで動いているのですね。
>>866
ILSpyを使ってみました。これは便利そうですね。
すごく勉強になりました、ありがとうございます。 5chが高齢化してきてこんな感じでレベルの低い無駄なレスが増えてってる S/N比は昔からたいして変わってないだろ
昔の方が良かったなんてのはそれこそ年寄りの繰り言だ > 5chが高齢化してきてこんな感じでレベルの低い無駄なレスが増えてってる
>>871 のことだなw 年を取り感受性が低下して正常な感性が失われて昔も変わらないと言う
ジジイのダジャレを垂れ流すスレではないぞここはw >>874
お前のクソレスがダジャレ並だと言ってるんだよ
まぁ俺のもだがな ASP.net MVC 3.1を触り始めたんだが、これ、どんな些細な変更もいちいち発行しないと見れないのかな?
いままでのように「IIS Expressをプロジェクトのディレクトリ指定して起動しておいて、ビューは変更した都度リロード、ロジック変えたらビルドして確認」なんて気楽な開発が出来なくなってかなり面倒…… >>879-880
ああ、なるほど。ASP.net MVC 3.1(というか、VisualStudio2019や2022)では、【デバッグしながら】ソースをいじって、それをすぐにブラウザで見れるんだ。
chtmlは今までも出来たけど、コードビハインド(と今は呼ばないかもしれないが)の変更も可能になってて、それを反映する「コード変更を適用」なんてボタンもVSに追加されてるんですな…。
これなら確かにわざわざIIS Expressを別に起動する手間は必要ありませんね。
例外が出た時にコマンドプロンプトからも確認できなくなったのがちょっと不便になったが、これも仕事で書くまともなコードならNLogなりを入れている筈だし。
アドバイスに感謝。いやはや、便利になったモノですなぁ… 文字と数値が入り混じるリストのソート掛けが分かりません。
[0]丸/B/30/40/B/60/0
[1]丸/B/70/20/B/20/0
[2]丸/B/30/5/B/60/0
[3]角/B/70/20/B/20/40
[4]丸/B/30/40/B/60/0
[5]角/B/20/20/B/20/100
1番左の丸、角等の文字でまとめ、
[0]の40の位置の数値を昇順、
[0]の30位置の数値の昇順に並び替えたいです。
丸角の順番はまとまってれば良くて、数値は小数点ありです。
どなたかコードを、教えて頂きたいです。 >>882
そのリストの要素(例えば「丸/B/30/40/B/60/0」)
は文字列なんだよね?
だったら要はスラッシュで区切られた文字列の中から
n番目の要素を取り出すメソッドが書ければ目的は達成できるのと違うの? >>882
普通は何らかの自作クラスにその文字列をパースした値を入れてソートする まずね
> 文字と数値が入り混じるリストのソート掛けが分かりません。
これはリストじゃないね
ただの文字列だろ
自分の好きなようにパースしたらいい new object[][] { new object[] { "丸", "B", 30, 40, "B", 60, 0 } }
とかだったりね。
まあ 894 の言う通りだと思う。
data.OrderBy( a => (string)a[0] ).OrderBy( a => (int)a[3] ).OrderBy( a => (int)a[2] ) とかでも出来るかもしれないけど。 >>882
result = list.OrderBy(x =>GetValue1(x))
.ThenBy(x => GetValue2(x))
.ThenBy(x =>GeValue3(x));
でGetValueメソッドの実装をするのが初心者でもわかりやすい
GetValueを共通化するとかはお好みで この程度の話だったらどんな設計でも問題ないと思うけど、
>>882の人はそういう設計の問題で躓いているんじゃないでしょ。
恐らくいわゆる「分割統治」ができない人なんだと思う。
普通のプログラマなら当たり前のように自然に
デリミタで区切られた文字列の3番目の要素でソートしたい ⇒
(1) 3番目の要素を抜き出す
(2) 文字列を実数に変換
(3) 変換し数値を使ってソート
という風に大きな問題を小さな問題に分割して考えるけど、できない人にはこれができない イコールだったら次の項目の比較をするって部分ができねぇのと違う? つまりソートの優先順位の話をしてるのではないか?と 新しくbyte[]配列を定義してコピーせずに、byte[]を文字列に直すのはどうしたらいいのでしょう?
byte[] data = new byte[] { 0x30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; //末尾にnullがたくさんあるデータ
string text = Encoding.ASCII.GetString(data);
//string text = Encoding.ASCII.GetString((byte*)data,2); //こうしたいけどキャストできずエラー
Console.WriteLine(text); //「0???????????」が出力される >>892
そんなことはできない
そのポインタを引数に取るGetStringのオーバーロードも結局コピーする
Stringのコンストラクタにもポインタを引数に取るのがあるけどそれもコピーする 質問内容がよく分からんが欲しいのはEncodingクラスの
GetString(byte[], int, int)
オーバーロードか?
length引数はその例の場合1にしないとtextに\0文字が入っちゃうぞ ああ文字列化のときにコピーが走るのはよくて、前処理としてbyte配列からbyte配列にコピーするのは嫌ってことか?
GetStringに範囲を指定できるオーバーロードがあるだろ Encoding.ASCII.GetString(data, 0, 1);
じゃダメなの? Spanを引数にとるGetStringを早く実装しろよ、MS もう解決済みみたいだしもっといい方法がたぶんあると思うけど
いちいち手動で長さを指定せずにC文字列を文字列に変換したいってことならこれで出来た
var data = new byte[] { 0x30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
var sb = new StringBuilder();
sb.Append(Encoding.ASCII.GetChars(data));
var text = sb.ToString(); あんまり行儀は良くないけど1行で出来るしbyte[]じゃなくてSpanで受け取るときって往々にして変換先もReadOnlySpan<char>で済ませたいときだから標準で必要だとは思わないな
Span<char> stack = stackalloc char[u8.Length];
string str = stack.Slice(0, Encoding.UTF8.GetChars(u8, stack)).ToString(); >>903
その質問をここでするくらいの人にはどちらにしろ無理だな 全然
レイヤの違いが極端なので文法が少し似てる以外完全に別物 久しぶりにc#書くんだけど今VSって2022が最新と思っていいのかな?2019のほうがいい? NFTアートとNFTゲームとGameFiとブロックチェーンゲームに
提供する側・作る側として参入しよう。
(むりなら参加する側でもいい)
DAOとPlay-to-Earn(遊んで稼ぐ)が世界の未来になる
特にNFTアートとNFTゲームとGameFiは今なら先行者利益取れるぞ
NFTアートとNFTゲームとGameFiはこれから1000倍規模の市場になる dotnet.microsoft.com/ja-jp/
として日本語版サイトが立ち上がったらしいよ
と言うどうでもいいっちゃあどうでもいいニュース 今はユニバーサルと.net frameworkってどっちで作ればいいのでしょうか? お好みでどうぞ
どちらも開発終了しているプロジェクトなので今後の展開はない でもVS2030になっても.net frameworkの方はサポートされてる気がする 2030年には.NET15が出てるのか
もう誰も残ってなさそう まあそのうち「.NET」って名前も捨てるやろな
どこが「NET」やねんってツッコミもされそうな時代になってきたし >>914
まあそれは最初からそうなんだけどね
Windows XPが出た時に.NET Passportっていう認証サービスも
確か一緒に登場したんだけど、たぶんそれと同じ.NETだよね。
ちなみにこの.NET Passport、XP SP2の頃には早々消滅してた記憶があるw >>915
MSアカウントって名前で現役バリバリではあるな いまからやるなら.net coreに乗り換えればいいのでしょうか? .NET Coreは開発終了
今からやるなら.NET 6
変遷
.NET Framework
↓
.NET Core
↓
.NET 6 (2021/11リリース)
今後
.NET 7 (2022/11予定)
.NET 8 (2023/11予定) >>917
だからブランド名の話ね
というか、正直当時も今もあんまり感心ないんで勘違いしてるかもしれんが、
..NET Passportって今のGoogleやツイッターやYahooのIDみたいに
サードパーティーにも認証サービスを提供することを想定してたはずだよね確か。
今のMSアカウントはMSローカルのIDとしてしか使われてない気が >>920
OAuth2やOpenId Connectに対応してるんじゃないの? そう言った用途ならAzureADアカウントだと思う .net standardって謳ってたのは何だったの?あれと今の.net xの関係性がわからん
Microsoftの言ったもん勝ちに振り回されてる気がしてならん >>923
.NET Standardはとっくに放棄されて死んだから全く気にしなくていいよ
むしろトラブルメーカーだから積極的に捨てたほうがいい .NET Standardは他の様なフレームワークそのものではなくてフレームワーク構成のプロファイルなので位置づけが違う
.NET Frameworkと.NET Coreが共存していた過渡期の仕様なので.NET 5で統合された後はその役目を終えた 別に統合されてはいないでしょ
互換性の乏しい別物だよ .NET Framework(Windows用)と.NET Core(Linuxメインのマルチプラットフォーム用)
の統合で作られたのが.NET 5
(CoreベースにFrameworkを吸収した形式)
更にXamarin(モバイル用)を統合して. NET 6というのが大筋の流れ
ただし現状はフレームワーク本体の統合に対してUIフレームワークの進捗が遅れているのでモバイル用はまだ完全に統合できていない Standardで書けばFrameworkでもCoreでも動くのが売りじゃなかったっけ?
破棄されたということは.NET6では動かなくなったの? 4年前の記事
https://atmarkit.itmedia.co.jp/ait/articles/1707/28/news033.html
要するに3種類のフレームワークのクラスライブラリを相互利用できる様にPCL(プロファイル)を置き換えるものとして計画されていた
その後クラスライブラリを含むフレームワークそのものを統合する方向に方針転換したので今となってはもはや何の意味もない もうわけわからん
これがマイクロソフトのゴミ戦略
みんな捨てるわけだ .NET 5が出たからといって世の中からFrameworkやCoreがすぐに消え去るわけじゃないし、
少なくとも4.8のサポートが切れる2030年までは.NET Standardの意味はあるんじゃないの。 開発中止されたものを無理に利用しても益はないよ
レガシー系を使うなら素直に元のライブラリ使った方が楽
おそらく手作業であちこち設定弄らないとまともに使えないと思う .NET Frameworkから.NET Coreへの移行準備にはちょうど良かったと思うけどな こちらの足元を整える必要があると認識できた
あまり込み入ったことをしすぎたり、
マイナーなライブラリを使ってると、移行もつらくなる
ヘビーな業務アプリとかはなるべく言語の素に近い実装がいいと気付けた
少なくともMS付近のテクノロジーでは まだWinformsやWPFは.netに移行できないが
UIから呼び出すクラスライブラリは.netで作りたいという向きは多いのでは? >>935
UI等に依存しない純粋なStandardのライブラリとしてロジックを切り出せる程度の能力のあるチームならとっくに本体を移行してるだろうし、
そもそも今時まだWebに行けなくてデスクトップアプリやってる時点でアレ >UI等に依存しない純粋なStandardのライブラリとしてロジックを切り出せる程度の能力のある
そんな大層な能力か? 普通に市販コンポーネントの対応状況だとかVSの機能で未実装とかさまざまに.netでのデスクトップアプリ作成を妨げる要因はあるでしょ
しかもどんなアプリにおいてもデスクトップよりWebの方が適しているなんてのも乱暴すぎて幼稚 >>936
ブラウザやVisualStudio完全否定かよ 既存プロジェクトの
.NET Framework + Winforms / WPF
は無理に移行せず現状維持
新規プロジェクトは
.NET 6 + WinUI3 / MAUI(開発中)
に移行というのがMSの方針 >>939
web系技術の信奉者は現実をありのままに直視できないドリーマーが多いw
これは最近始まった話じゃなくてWindows 98の頃からそうw
Java界隈も昔はそうだったけど流石に10年ぐらい前に消えた。
Web界隈は相変わらず。
彼ら、もう15年ぐらい前からずっと「すべてはブラウザ上で実行されるようになって
デスクトップアプリは駆逐される」と言い続けているw
もう立派なカルトだねw 結局.NET Frameworkの延命手段として完全に手放すわけにもいかず止むを得ず玉虫色の対応といった感じかな >>944
15年前のWEBアプリって駆逐されてね? 集金とAI用の情報収集手段としてはWEBアプリ最強だからな
使い勝手は・・・だけど >>945
逆にNET Frameworkから.NET Coreへの移行を早く進めてもらいたいからこそのStandardだろう。>>933が言う通り MSが.NET Coreへの移行を焦っていたのはUWPをゴリ押ししてたからだと思うけどUWP諦めたので今さら必要あるの? >>944
いつまで経ってもデスクトップアプリが駆逐される気配が無いんだが? デスクトップアプリと違ってwebformの置き換えはほぼ書き直しだからしんどそうですね >>952
超しんどい。うちは塩漬け状態。いつか来るその日に震えてる .net5はWindows11にプリインしてくれなかったのが面倒なんだよなあ >>954
大規模アプデのタイミングで強制インストールにして欲しいわ >>955
.NET5のサポート期限は来年4月
LTSである6ですら2024年に期限切れ
こんなもんWindowsにプリインなんて常識的に考えて不可能だ
Windowsのアップグレードで勝手にメジャーバージョン上がったりしたら3年毎に阿鼻叫喚だろうな じゃあやっぱ.NET Frameworkで作るのが正解じゃん 以前.net framewarkのプロジェクトを簡単に.Net5に移行できるのかと思ったら無理だった
だったらソースをコピペしてと思ったらライブラリに互換性がないのが結構ある
シグネチャぐらいそろえてくれよと思ったがセキュリティ関連だからかなあ… 移行するなら.NET 6でしょ
なんで今.NET 5なの >>957
Core系の.NETでは実行環境に.NETをインストールする必要がないんだよ
.NETランタイムをアプリ自体に同梱できるから、ユーザーにとっては全く.NETを意識する必要がなく、環境も汚さない
まあ.NET Frameworkの運用に慣れてる客だったりすると、.NETセキュリティパッチどうやって当てるのとか言われた瞬間に詰むけどなw .net core系の一つのアプリの容量が数十MBになるのはそれが理由? -p:PublishSingleFile=true
--self-contained:false どうせまたすぐに新しい.Netなんちゃらが出てくる ttps://ideone.com/oOrXBQ
現在プログラム練習中で、”なつ”と打ったら”今は夏です”と表示されるものを作っています。
「現在のコンテキストに”なつ”という名前は存在しません」
と表示されるのですがどのようにしたらいいでしょうか >>967
a == なつ
じゃなくて
a == "なつ" 失敬、別件で少々質問。
.net core 5/6で、Windowsサービスって作れるん?
ググると出来そうな感じなんだけど、Visual Studio 2019ではテンプレートが.net frameworkしか出てこない… BackgroundService を使用して Windows サービスを作成する
[アーティクル]
2021/12/10 >>977
あ、なるほど。
「WorkerService」で出てくるんですな>テンプレート
アドバイス感謝 C#の正規表現でマッチするのはRegex.IsMatchで真偽を得られますが
マッチした位置のstartとendの文字位置を取得する方法ないでしょうか? こんな感じで位置情報は取れるんじゃね
start=match.Index
end=start+match.Length List<Class>があるとして、List内のClass.nameに指定の文字列があるかを取得したいのですが
自作クラス内の要素でcontaintsってできませんか?
foreachで比較するのが正解? >>984
var list = new List<Class>();
var a = list.Any( x => x.name.Containts( value ) );
とか?
該当する要素が必要ならAny()をWhere()に >>985-986
ありがとうございます!
どうググっていいのかわからなかったので助かりました……! ttps://dotnetfiddle.net/XLqfZT
ランダムでAかBかCを表示するプログラムを作りたいのですが、これくらいしか作れません
何かもっと簡単な方法があればご教授ください よくある方法としてはテーブルを作っておくとか
var dic = new[] { "A", "B", "C" };
Console.WriteLine(dic[rnd.Next(0, dic.Length)]); >>990と>>991を合体させるのがよさそう
char a = Convert.ToChar('A' + rnd.Next(1,3));
Console.WriteLine("これは{0}です",a); 実際にA, B, Cを返すのなら>>990のやり方が使えるけど、本当に欲しいのが大吉、中吉、小吉、凶みたいな感じだと
>>991のになるね 0〜9までの数値文字を作るときにも応用効くから990みたいな発想は覚えておいて損はない
'0' + rand.Next(0, 10)
'A'の内部は0x0041で'B'の内部は0x0042だから'A'に1を足せばBになるという仕組み('0'~'9'も同様に連続してる) netcore Blazorでwebアプリ作成を勉強中なのですが、ボタンを押すとExcelファイルを開く機能を作ろうとした際にエラーが出て以下の記事を見つけました
https://social.msdn.microsoft.com/Forums/ja-JP/052366e2-fbb4-4426-8a72-f25d99e67026/c12391excel12434258052031612377124272723133021123911249912523124?forum=csharpgeneralja
この記事内で「もし Excel アプリを立ち上げてそれにファイルを表示しユーザーが操作するというようなことでしたら、それは Web アプリでは無理です。」とコメントがあります
webアプリの知識が浅いので初歩的な質問だと思うのですが、これはどういう理由からなのでしょうか? エラーの理由と解決方法は一番下の人の投稿の通り、
WEBアプリでEXCELをっていうのは、エクセルのUIをweb経由でクライアントに送信するのが難しいから
COMでexcelを起動してファイル操作をすること自体はできるけど、それはUIがないからね
COM経由でやるならUIは全部自分で作らないといけないないし、
COMを使わずにエクセルの画面そのものでやるならリモートデスクトップのエクセル版を全部自分で作らないといけない
Slot
🍜🎴👻
💣🎰🎴
🎰😜🍜
(LA: 1.86, 1.92, 1.82)
Slot
🌸🎴🌸
💰💰👻
🍒😜🎴
Win!! 4 pts.(LA: 2.11, 1.98, 1.84)
このスレッドは1000を超えました。
新しいスレッドを立ててください。
SLOT Results
🎰🎰🎰 Excellent!! 0
🎴🎴🎴 Gratz!! 0
🌸🌸🌸 OPPAI Ban!! 0
💣💣💣 Backingum!! 0
Win!! 1
Points 4 pts.
life time: 110日 22時間 49分 19秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。