X



ふらっと C#,C♯,C#(初心者用) Part148
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ df89-moxv)
垢版 |
2020/05/27(水) 20:28:41.27ID:Pggemlyq0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part147
http://mevius.5ch.net/test/read.cgi/tech/1582100741/
■関連スレ
C#, C♯, C#相談室 Part94
http://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
http://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/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://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
0166デフォルトの名無しさん (アウウィフ FF47-HKig)
垢版 |
2020/06/17(水) 15:25:29.42ID:GES6ctGCF
エクスプローラーも1万件あるとあきらかに遅くなる
0167デフォルトの名無しさん (ワッチョイ b602-vBZN)
垢版 |
2020/06/17(水) 15:38:18.73ID:yVuIICiL0
低レイヤのこと詳しくないけどそもそもGetDirectoriesとかGetFilesもMFTから読み込んでるんじゃないの?
FindFirstFileのラッパーなはずだけどFindFirstFileの内部ではそうしてるもんだと思ってたが
0168デフォルトの名無しさん (ワッチョイ e301-gRm5)
垢版 |
2020/06/17(水) 15:46:17.14ID:0xoIejs00
MFTはNTFSにしかないから、
SDカード(普通FAT系)とかネットワーク
ドライブなら
FindXXの高レベルAPIを使用する事に
なるよ。

書籍ならWindows Internals (chap12
なのでpart2)に説明がある

Qiitaで見かけた記憶があるのでこちらを
探すってのもありかと
0169デフォルトの名無しさん (アウアウウー Sa47-7nK8)
垢版 |
2020/06/17(水) 15:56:57.68ID:wCFe9G62a
>>164
そもそも本当に体感できるほど時間かかるかなあw

連番をプリフィクスしたファイル名でデータを保存する、なんて処理を結構書いてて、
その場合は当然ディクトリ内のファイル名を走査して開いてる番号を探すわけだけど、
少なくとも数千件程度のファイル数で体感できるような処理時間を感じたことはないが...
0172デフォルトの名無しさん (ワッチョイ 0b01-oh81)
垢版 |
2020/06/18(木) 07:14:38.56ID:tX12dTLd0
アドバイスでもなんでもないが俺も昔自分用のファイルDB作ってたんだが
起動時に対象フォルダ下のファイルをGetFilesやGetDirectoriesで収集 → DBからタグ等の細かい情報取ってきてくっ付けるってやるとき、sqliteから一つ一つwhere fullpathというように文字列で検索すると約5000件/3分くらいかかったんだよな
そこでwhereを入れず全部取得 → while (reader.Read()) sqFiles.Add();と一旦こちらのリストに全部放り込んでから
愚直にforでリストからフルパスと一致するものを探すって方式に変えたら5000件/500msというアホみたいに高速化された思い出がある
0173デフォルトの名無しさん (ワッチョイ 0b01-oh81)
垢版 |
2020/06/18(木) 07:24:19.57ID:tX12dTLd0
ちなみにこれじゃsqlite使う意味ねえじゃんwって思われそうだが、その初回時の検索でlong型のPrimaryKeyであるUniqueIdも取得するんで2回目以降は一つ一つ検索する場合でも普通に早い
タグ以外にもblob型の多少サイズ大きいバイナリとか色々DBには保持させてるんでな
0174デフォルトの名無しさん (ワイーワ2 FF12-HKig)
垢版 |
2020/06/18(木) 11:07:27.03ID:OoPd9bgDF
forで愚直に検索中にディレクトリの状態やDBの状態が変化していなければ良いねω
0179デフォルトの名無しさん (ワッチョイ aae2-VNxU)
垢版 |
2020/06/18(木) 12:01:47.66ID:LpN/zpxZ0
SQLiteに限らずmatchならまだしも文字列の=って糞遅いでしょ、トランザクションが有効なのって書き込み時だしね
SQLiteのクエリはutf16版を使ったところで結局はutf8への変換が生じるからC#から使うとオーバーヘッドは避けられない
その上でPRAGMA encoding='UTF-16'とかしてたらまたまたキーワード部分を変換しないといけなくなったりともうめちゃくちゃ
だから一回のクエリで全件持ってきてC#上で検索すればそれくらい早くなるというのはまぁ自然
0182デフォルトの名無しさん (ワッチョイ e301-gRm5)
垢版 |
2020/06/18(木) 13:20:40.79ID:h9R/TQ390
トランザクショなるNTFS=TxFとか沼ですな。
※Vistaで導入7から8に変わった時に
デグレした機能w

TransactionalFileMgr
.Net Transactional File Manager がこのスレ
的に正解かな?
0184デフォルトの名無しさん (ワッチョイ db2f-1/Nl)
垢版 |
2020/06/21(日) 13:35:38.83ID:jQi52PAy0
C#のGUIからパイソンを実行してデータ分析させたいんだけど、
すごく簡単に実現できる方法ってありませんか?

1 C#からテキストファイルでデータ出力
2 C#からPython起動し、テキストファイルのパスを渡す
3 Pythonでデータ分析しグラフ出力

みたいな感じです。
PythonからC#に受け渡すデータはありません。
0188デフォルトの名無しさん (ワッチョイ 0f01-5fXH)
垢版 |
2020/06/24(水) 15:59:14.27ID:rxIn+gin0
SQL Server Express LocalDBのSQL文の質問なんですが

CREATE DATABASE myDB;
これはちゃんと成功するんですが

CREATE DATABASE IF NOT EXISTS myDB;
こう書くと失敗します
System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near the keyword 'IF'.
Incorrect syntax near 'myDB'.

このSQL文は使えないんでしょか?かわりの方法はあるでしょか?おねがいします
0190デフォルトの名無しさん (ワイーワ2 FFbf-qwRG)
垢版 |
2020/06/24(水) 16:27:10.24ID:6+kkBVmVF
DROP すると等価ではないな
0192デフォルトの名無しさん (ワッチョイ 3f01-0Hhk)
垢版 |
2020/06/24(水) 17:06:11.29ID:ZBvJ9IFx0
>>190
おお、そうだね
文法しか気にしてなかった

>>191
CREATE DATABASE文にはIF NOT EXISTSとかのオプションは無いから>>188はエラーになる
DROPはIF EXISTSのオプションが用意されてる

188と等価にしたいならT-SQLのIF-ELSE使って存在チェックして
DBが無い場合にだけ作成すればいい
(存在チェックはDB_IDかsys.databasesを読むか)

IF EXISTS ( … )

ELSE
CREATE DATABASE …
0195デフォルトの名無しさん (ワッチョイ 0f01-5fXH)
垢版 |
2020/06/24(水) 20:43:40.85ID:rxIn+gin0
>>192
さんくすです
> IF NOT EXISTSとかのオプションは無いから
なんと、あったら便利なのにね
IF-ELSEでがんばってみます

>>193
SQL文なので若干すれ違いかなっと
似たようなことがLINQtoSQLでできればとおもったのですが
0196デフォルトの名無しさん (ワッチョイ 4f90-l8dZ)
垢版 |
2020/06/24(水) 22:59:21.23ID:G18p0mGY0
Entity Frameworkでデータベースと連携したい場合

public class Book{
. public int Id { get;set;}
. public string Title { get; set;}
}

モデルは↑みたいな感じになるけど
実際には↓みたいな感じに色んなデータとふるまいを持ちたいとする
public class Book{
. public int Id { get;set;}
. public string Title { get; set;}
. public List<Picrture> Picture { get;set;}
.
. (以下振る舞い等)
}

この場合って下のデータモデルからから上のDTOに変換してデータベースに入れる(取り出す時は逆)って考え方でいいのかな?
多くのサイトがEntity Frameworkでのデータベースへの突っ込み方しか書いてなくて
実際に運用する場合のデータの持ち方の考え方がよう分からん
この辺りまで詳しい本とかサイトとかあったら教えてください
0197デフォルトの名無しさん (ワッチョイ 8f01-H7K1)
垢版 |
2020/06/24(水) 23:58:21.16ID:KiDLqidP0
いいんじゃない?DTOは名前の通りデータをDAOと受け渡すためだけに使って、振る舞い持たせるのは違う気がする。
0198デフォルトの名無しさん (アウアウエー Sabf-TKyb)
垢版 |
2020/06/25(木) 00:07:24.74ID:pPMcnwWPa
単純なアプリだとDomainModelも単純だからEntity、DomainModel、ViewModelを同じインスタンスで済ませられる場合が多い
真面目にやるならそれぞれ別のクラスにしてマッピングするんだけどめんどくさいんだよな
0200デフォルトの名無しさん (ワッチョイ 0fa7-eW5c)
垢版 |
2020/06/25(木) 01:37:48.23ID:Q34w5rfS0
>>199
やめた方が無難
拡張したい階層が2-3ズレるのはよくあること
たったそれだけなのに拡張のために付けた処理が邪魔になって
本当にやりたい改修が大きな工数になってしまうことはよくあること
0202デフォルトの名無しさん (ワッチョイ 0fa7-eW5c)
垢版 |
2020/06/25(木) 08:48:00.18ID:Q34w5rfS0
>>201
あるやろ?
色んなリストの表示方法(文字着色、並び替え、フォントサイズ個別指定、背景色着色)を実装できるようにしたけど
客の欲しいのはページングのある印刷機能だけだったみたいな
改修にときノリで入れたフォントサイズの変更や文字や背景色がページング印刷時にうまく出ない
→ああ、無いほうが簡単だったな

っとか
0203196 (ワッチョイ 4f90-l8dZ)
垢版 |
2020/06/25(木) 20:33:53.95ID:42cionTC0
ありがとうございます
勉強になりました
0204デフォルトの名無しさん (ワッチョイ 0f87-plLw)
垢版 |
2020/06/26(金) 07:51:51.47ID:a7mre53d0
c#でアクティブウィンドウがosよりも先にキーボード入力を受けとる方法はありますか?

やりたいことはリモートデスクトップを全画面で繋げている場合、Alt+Tabキーの入力は呼び出し元のosではなく、リモートデスクトップ側が取得しているように見えます。
この挙動を自作のguiでもできればと考えています。

「アクティブウィンドウがosよりも先にキーボード入力を受けとる」の認識が間違っているかも知れませんが、リモートデスクトップのような挙動を実現する方法を教えてください。
0206デフォルトの名無しさん (ワッチョイ 3f52-RSi0)
垢版 |
2020/06/26(金) 09:07:56.65ID:wYfFflLL0
>>204
余計なお世話かもしれないけど、アプリの枠の外にあるOS側での共通の操作を、1アプリの都合で勝手にフックされて違う動作になるのは使う方からするとストレスになるから気を付けた方がいいかも。
リモートデスクトップはある意味OS内OSだし、そういう例外的なケースならばアリだと思うけど。
0207デフォルトの名無しさん (スップ Sddf-plLw)
垢版 |
2020/06/26(金) 09:43:44.08ID:an36r83ud
>205
ありがとうございます。調べてみます。

>206
今回は自分で使いたいものなんで。
将来的に業務で使う機会があれば考慮するようにします。ありがとうございます。
0208デフォルトの名無しさん (ワイーワ2 FFbf-/Fs/)
垢版 |
2020/06/26(金) 13:15:51.31ID:PjbtVFt+F
キーロガー禁止
0210デフォルトの名無しさん (ワッチョイ 8a01-5cl0)
垢版 |
2020/07/01(水) 15:49:13.62ID:BmoMMcjv0
20年ぐらい前からプログラミングやりたいと思い続けてきた文系おじさんだけど
数年前から少しずつ勉強し始めて、
やっとのことでちょっとしたものをC#で作れるようになってきた
おもしろいわぁ
0211デフォルトの名無しさん (ワッチョイ 06c7-QTdV)
垢版 |
2020/07/02(木) 08:48:04.62ID:+yIU1z+T0
https://freesoft-100.com/review/lightbulb.html
色温度をいじれる言語ってなんでしょうか?
pythonを主に使用しているのですが、C#系でないと色温度はいじれませんか?
色温度にもモニタ側、gpu側があると思います。
0212デフォルトの名無しさん (ワッチョイ aa52-16Rz)
垢版 |
2020/07/02(木) 09:03:57.94ID:unw3xiWi0
>>211
詳しくないから間違ってるかもしれないが、そのアプリ単体ではなく他のアプリも含めて画面の色温度を変えるという機能なら、OSがそういうAPIを提供しているということかな。それならそのAPIを利用できる言語ならばC#に限らずなんでもいいと思うけど。
0213デフォルトの名無しさん (ワッチョイ 7f7b-6Rnc)
垢版 |
2020/07/02(木) 09:04:49.65ID:iSJIUTiv0
>>211
スレ違いだからpythonのスレで聞くかそれのソース自分で理解してほしんだが
C#でできるのはWINAPIをラップした.NETの機能を使うか直にDLLのAPIを呼び出すかくらいなんだから
pythonでAPI使えるのなら同じことができるはず
0214デフォルトの名無しさん (ワッチョイ 06c7-QTdV)
垢版 |
2020/07/02(木) 09:51:08.11ID:+yIU1z+T0
ありがとう
c#にはそういうクラスがあるみたい
winのソフト作るにはc#が一番都合がいいよね
0215デフォルトの名無しさん (ワッチョイ 1e63-VQSO)
垢版 |
2020/07/02(木) 11:09:32.81ID:esHBKAii0
質問です
DateTime.Now.ToString(@"yyyy\MM\dd") => 2020\07\02 を期待したいのですが 2020M7d2 になります
今は \\ を別な文字に置換し変換後また置換ってやってますがよい方法あれば教えてください
0219215 (ワッチョイ 1e63-VQSO)
垢版 |
2020/07/02(木) 11:41:12.70ID:esHBKAii0
>>216
なるほど、できました
しかし元の文字列は \ 一文字で決まっているのでどのみち何か手を加えないとならないですね

>>217-218
フォルダ名の生成で日付を含めた任意の書式を扱えるようにするためなのです
0220デフォルトの名無しさん (オッペケ Sr23-OmMV)
垢版 |
2020/07/02(木) 12:25:41.08ID:frMfUtj7r
あー「ファイルパスを作成するとき、年月日ごとのフォルダ階層をつくるため」ってことね
年の中に月だけの名前のフォルダとかセンス的に俺はようやらんけど、理由は理解できたわ
0222デフォルトの名無しさん (エムゾネ FFaa-JCxG)
垢版 |
2020/07/02(木) 17:00:29.84ID:ryu4JvV+F
/でも造れるやろ
0223デフォルトの名無しさん (ブーイモ MM69-SFhf)
垢版 |
2020/08/01(土) 16:52:28.79ID:aC56TYwwM
VisualStudioは糞です。
{}を使うとき

public voidnicemethod
{

}
となるのではなく

public void nicemethod{
}
と自動でなるようにするにはどうしたらいいですか?
0229デフォルトの名無しさん (テテンテンテン MMee-UdrD)
垢版 |
2020/08/01(土) 18:23:48.50ID:dl6F83GvM
簡単な住所録作ろうとしてます。
登録と削除と追加ができればいいだけのやつ。データ保存はデータベース側に。
これのシンプルなオープンソースプロジェクト知っている方いませんか?いたら嬉しい。
0234デフォルトの名無しさん (ワッチョイ 25ad-DBrF)
垢版 |
2020/08/01(土) 20:12:27.90ID:Yannm6rz0
簡単な登録と削除ができるだけでいい住所録にそんなものが必要だとは思わんというか、
何かをカスタマイズしてその程度の住所録にするのは、ちょっとたいそうな気がする。
0235デフォルトの名無しさん (ワッチョイ 7a6a-xE3T)
垢版 |
2020/08/01(土) 20:49:12.61ID:oCALSNxU0
エスパーすると作りたいけど右も左も分からんからお手本が欲しいってことかな
0237デフォルトの名無しさん (ワッチョイ 8ede-akQC)
垢版 |
2020/08/01(土) 21:48:16.20ID:NKcPOHZ30
オープンソースってちょいっと触るには佇まいがでかすぎて流用には向かないことが多い
住所録のどこの部分の機能が必要か知らんけど
単にアドレス帳の登録、削除、編集の基本機能だけだったら1〜2日の内容だから
どっか入門サイトで似たようなの見つけて実装したほうが早いと思う
0238デフォルトの名無しさん (ワッチョイ 4a32-RDrw)
垢版 |
2020/08/01(土) 21:52:38.29ID:+9Q20FKV0
スレ違いだったら申し訳ないです。
C言語をやろうととりあえずmacかったのですが、
どのソフトで開発環境作ったらいいでしょうか?
0242デフォルトの名無しさん (ワッチョイ 4a32-RDrw)
垢版 |
2020/08/01(土) 22:11:32.98ID:+9Q20FKV0
わかりました
ありがとうございます
0243デフォルトの名無しさん (ワッチョイ 7a05-Zvsf)
垢版 |
2020/08/02(日) 06:10:11.27ID:T2MIboAU0
c#で作ったbotからandoroidスマホに通知を送る良い方法はありませんか?
履歴を確認できる方法で。
今まではline-notifyでlineに送っていたのですが、新しいルート証明書をインストールしなくてはならなくなって別の方法を探しています。
0248デフォルトの名無しさん (アウウィフ FF09-QWST)
垢版 |
2020/08/02(日) 16:20:00.33ID:NsDY9jGSF
ここはプログラムを描きたい人造りたい人向けのスレ
フリーソフトダウンロードして使いたい人は相応のスレへ逝くことをお薦めします
0249デフォルトの名無しさん (ワッチョイ 875f-OjAs)
垢版 |
2020/09/03(木) 22:01:35.41ID:RMVHFRAl0
public interface Ixxxxx
{
 int method1(int x);
}

インターフェイスについて質問です。
上ではメソッドの型を定義しているわけですが、
インターフェースの引数定義で、xのように変数を設定するのはどうしてなんでしょうか。
ここでは使われない変数なので、型のみで良いと思うのですが。

それから、publicを省略して、interfaceとだけ定義する理由はどうしてなのでしょうか。
classなら、publicを前置するのに。
0250デフォルトの名無しさん (ワッチョイ 875f-OjAs)
垢版 |
2020/09/03(木) 22:10:50.18ID:RMVHFRAl0
ルート相対的URLを保存するクラスは何が適しているんでしょうか。

String型に、/root/abc/def を文字列として保存しているのですが、
適切な型があれば教えてください。
0253デフォルトの名無しさん (ワッチョイ 5f24-VIJL)
垢版 |
2020/09/04(金) 11:28:01.48ID:M8Oq5rfA0
>>249
引数や戻り値の型をしっかり定義しないといけない理由は、ILやアセンブリといった低レベル知識を学習すればよく分かるよ
機械語レベルだとint、long、float、double〜etcはそれぞれ命令文が違う
だから引数や戻り値がバラバラな値型だとそれぞれの機械語を生成しなきゃならず共用化出来ない

逆に言うと参照型であればポインタだけで済むので実は共用化が出来る
なので参照型であればobjectとして定義をすれば実際に共用化可能(値型もboxingしてobject型にすれば同様)
0257デフォルトの名無しさん (テテンテンテン MM8f-wKT+)
垢版 |
2020/09/04(金) 13:31:45.96ID:Cdgw0eXGM
インターフェイスメンバに引数名が必要なのは名前付き引数のためでもある
名前付き引数ってのはmethod1(x:123)みたいな書き方のこと
正確には名前付き引数がC#に導入されたのは比較的最近なので時系列が逆なんだけど、
.NETはC#に限らずいろんな言語を動かすことを想定して設計されてるので名前付き引数のための要請についても元々考慮されてたというわけ
0263デフォルトの名無しさん (アウアウウー Sa8b-CqCa)
垢版 |
2020/09/04(金) 19:19:04.36ID:Utz5OTUqa
あーインターフェイスのメソッドの仮引数が名無し定義を許す仕様になってたら
名前付きで呼び出せないよって言いたいわけか
確かにその通りだね。

だけど「名無し定義を許さない理由の一つは名前付き引数を想定していたから」は考えすぎじゃないのかな
■ このスレッドは過去ログ倉庫に格納されています

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