◎正当な理由による書き込みの削除について: 生島英之 とみられる方へ:ふらっと C#,C♯,C#(初心者用) Part152 YouTube動画>5本 ->画像>4枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/tech/1629888256/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980 を踏んだ人は新スレを建てて下さい。
>>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part151
http://2chb.net/r/tech/1621129559/ ■関連スレ
C#, C♯, C#相談室 Part94
http://2chb.net/r/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]
http://2chb.net/r/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
C#での非同期処理のキモがハマりどころも含めてわかりまくりの決定版みたいな記事どっかにない?
>>144 気軽に建てたスレッドの99%はバグってるので安心して欲しい
>>146 でもわたしはあなたの頭がハゲってるのが心配なんですよ
>>144 https://www.kekyo.net/async 俺はこれが参考になった記憶あるな
調べたのって何年も前だから、もっと良い記事あるかもだけど
>>144 スレッド
注意点一覧
・シングルコアで動くか?
・応答がないときに自決するか?
・失敗時のメモリリークはないか?
・タイムスケジュールはあるか?(例:1分の内AスレッドはX秒、BスレッドはY秒等)
・生存確認方法はあるか?
・実行中の状態は取得できるか?
・ログは出力できるか?
・最大使用メモリは把握できているか?
・失敗時のリザルトの受け取り方法は適切か?
・処理が複数失敗する可能性は考慮できているか?(例:ファイルオープン成功→ファイル書き込み失敗→ファイルクローズ失敗→tempフォルダ削除成功のとき何が返る?)
決めるのが面倒なら使うべきでないと思う
>>151 おお、これは素晴らしい
ありがとうありがとう
c# プログラマの書いたコードは美しい音楽のようだった。
タリバンは音楽家を処刑してるので、c# プログラマを対象に加えるべき。
c# って普通に考えたら音楽の符号だし、c# プログラマがすすめてくる「リーダブルコード」って本はどう見ても音楽関連。
率直な質問です 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に移行したんだね
VIDEO 時代は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使ってフレームワークのソースコード覗くといいよ
昔と違うからなぁ 絶対遠回りだよ ある程度で割り切らないと 時間ばっかり浪費して 何も作れないで終わっちゃうぞ
ジェイソン・ステイサムに兄貴がいるのか? あー?どうなんだ、質問に答えるんだ! アドレナリン出し続けなきゃ死んじまう体にしたろうか!
>>470 彼の最高傑作はこれだと思う
VIDEO >>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の新規更新は既に終了しているので今後も更新されることはない
VIDEO 上記の動画のようなメモリーを弄ったり読んだりするクラスや関数の使い方って
どういう方面の参考書買えば学べますか?
面倒からサムネしか見てないけどメモリ弄ってチートをするって話? であれば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のソースに使用しているクラスの型が違うため、関数でうまく処理できません
どうすれば良いでしょうか。
>>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なんちゃらが出てくる
https://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 ありがとうございます!
どうググっていいのかわからなかったので助かりました……!
https://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!! 0Win!! 1Points 4 pts. life time: 110日 22時間 49分 19秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/ ▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
read.cgi ver 07.7.23 2024/12/25 Walang Kapalit ★ | Donguri System Team 5ちゃんねる
lud20250304180607ncaこのスレへの固定リンク: http://5chb.net/r/tech/1629888256/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像 ↓「ふらっと C#,C♯,C#(初心者用) Part152 YouTube動画>5本 ->画像>4枚 」 を見た人も見ています:・ふらっと C#,C♯,C#(初心者用) Part144 ・ふらっとC#,C♯,C#(初心者用) Part88 ・パソコン初心者クリエイター用のパソコンほしい ・くだすれPython(超初心者用) その29 ・一人暮らし初心者「えっ肉ってこんな安いの…?」「えっ野菜ってこんな高いの…?」 ・めっちゃ運転上手いベテランドライバーなのに初心者マーク付けると周りが驚いて楽しいぞw ・【初心者】遊戯王デュエルリンクス 29ターン目【まったり】 http://krsw.2ch.net/test/read.cgi/gamesm/1531132896/ ・■初心者用リモートデスクトップ専用すれっど■ ・MMOで初心者ノラパーティーに入って俺TSUEEEEEするの気持ち良すぎワロタ ・【DFFAC/DFFNT】初心者スレ DISSIDIA FINAL FANTASY(ARCADE)/NT part11【まったり】 ・【悲報】初心者ライダーJK、免許取得2週間で事故って死亡 ・【小魚】ルアーの右投げ右巻きって初心者臭いよね Part117【20cm】 ・【小魚】ルアーの右投げ右巻きって初心者臭いよね Part115【20cm】 ・【小魚】ルアーの右投げ右巻きって初心者臭いよね Part113【20cm】 ・来月からジム行こうと思ってる初心者なんだけど ・パャRン初心者だけど、パャRン買ったから、色々教えてケンモメン! ・【DFFAC】DISSIDIA FINAL FANTASY(ARCADE)/NT 初心者スレ part8【まったり】 ・ゲーム制作で一番難しいのって難易度調整じゃね?初心者から玄人まで満足させないと駄目なんだぞ ・【DFFAC】DISSIDIA FINAL FANTASY(ARCADE)/NT 初心者スレ part1【まったり】 ・【小魚】ルアーの右投げ右巻きって初心者臭いよね Part114【20cm ・【小魚】ルアーの右投げ右巻きって初心者臭いよね Part119【20cm】 ・男子ごはん 蒼井優とBBQ!初心者でも簡単!ダッチオーブンを使った料理 ・最近免許取った初心者なんだけど煽られたときってどうしたらいいの? [無断転載禁止] ・【mobage】グランブルーファンタジー初心者スレ1167 [無断転載禁止]©2ch.net [無断転載禁止] ・【0321】【初心者大歓迎】【ナマポ】星のドラゴンクエスト仲間P集スレ☆13【星ドラ】 [無断転載禁止]©2ch.net [無断転載禁止] ・【DCS World】DCS 総合 Part.41【初心者歓迎】 [無断転載禁止] ・Hackintosh初心者スレッド ・【初心者】黒い砂漠モバイル質問スレ Part.3【歓迎】 ・【モンスト】モンスターストライク脱・超初心者スレ286【脱超】 ・【モンスト】モンスターストライク初心者スレ600 [無断転載禁止] ・初心者でもsexできる★出会い系サイト [無断転載禁止] ・初心者にノーマル四間から覚えさせるのってどうなん? ・MTGA】Magic The Gathering Arena 初心者スレ 138 ・【モンスト】モンスターストライク脱・超初心者スレ807【脱超】 ・ロボアニメ初心者って何からみればいいんだ? ・登山靴スレ62 (初心者OK) ・【モンスト】モンスターストライク脱・超初心者スレ41【脱超】 [無断転載禁止] ・【初心者】 IQOS アイコス Part.12 【復活編】 ・LINEディズニーツムツム初心者&質問スレ☆96 ・【初心者】ダイエットの質問・相談スレPart185 ・【初心者への手引き】ニダーラン総合【PC&携帯】43 ・【DCS World】DCS 総合 Part.71 【初心者歓迎】 ・AFKアリーナ初心者を救ってくれ! ・【FFRK】FINAL FANTASY Record Keeper 初心者質問15 ・【Part10】まったりと将棋するスレ【初心者歓迎】 ・麻雀初心者なんやがどうやったら勝てる? ・ヤフオク初心者ぼく「ムッ!この出品者評価率は高いけど良い評価は似たようなコメントばっかりだ!怪しい!」 ・キャンプ連れてってとか言ってくる初心者 ・ニュージーランドの動画見てたらFPSやりたくなったんだが初心者でもあんな感じに無双出来るやつ教えてくれ ・単に聴くだけで 入門とか初心者ってなに? ・初心者だけど脚トレやめたら幸せになった ・Google Chrome 初心者質問スレ 2 ・【初心者】ダイエット質問・相談スレPart219 ・【初心者も】携帯で大量うpうpっ!B【上級者も】 ・初心者って叙述トリック大好きだよな(笑) ・初心者を助けるクルーとかあったらさ ・/ ´,_ゝ`\初心者のための富士山登山入門157m ・【プリコネ】プリンセスコネクト! Re:Dive初心者スレ Part131 ・【右巻きの】ルアーの右投げ右巻きって初心者臭いよね Part134【うpまだ?】 ・【プリコネ】プリンセスコネクト! Re:Dive初心者スレ Part117 ・正直この中で初心者が習得すべき言語ってどれ [無断転載禁止] ・パソコン初心者なんだけど 相談に乗ってください ・【マギレコ】マギアレコード まったり・初心者・質問スレ Part21 ・【ランモバ】ラングリッサー 初心者&まったり&質問スレ Part.44 ・パチンコ初心者なんだが、ここに球が乗るのって普通か? ・【初心者】遊戯王デュエルリンクス 17ターン目【まったり】
04:06:07 up 50 days, 5:09, 4 users, load average: 9.20, 12.47, 14.08
in 1.0027809143066 sec
@0.051291942596436@0b7 on 030418