ふらっと C#,C♯,C#(初心者用) Part145
レス数が950を超えています。1000を超えると書き込みができなくなります。
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part144
https://mevius.5ch.net/test/read.cgi/tech/1563258983/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
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 フォルダファイルの情報集めてデータベース作りたいんですけど
データベースの種類って何がいいのかな?
3万件ぐらいのレコード、外部に持っていくこともしない
よろちしおねがいします 何がしたいのかによるよね
ぶっちゃけ外にださないんだったらcsvですらいいんじゃね?って気もするけど linuxにはlocateコマンドと言うものがあってファイルを高速に検索できる
これはただあらかじめフルパスのファイル名を全部取っておいて一つのテキストファイルにまとめてあるだけ
用途次第で最適な方法は異なる フルパスそのままじゃなくて差分のようなテキストファイルを作っていたような気もする >>893
Redisなんてゆうデータベースあるんですね、一般的なのかな
さんくすしらべてみます
>>895
サンクスsqliteよく使われてますよね昔から
今でも普通に使われてるのかな?
>>894>>896-897
何がしたいのかとゆうと、外付けHDDの中身を書き出したい的な事がしたいのです
高性能なフリーウェアがあるとしても、自分でつくりたいのれす いや、知りたいのはその書き出したファイル情報をどうしたいのか?なんだけど…
自分で作りたいというのが勉強を兼ねてるならsqliteとかでひとまず慣れるのが良いんじゃない? 教会作るのか扉作ってるのか木を切ってるのかっつー話よな
それはさておき
お手軽に使えるのはSQLiteでライブラリやマッパーも豊富
redisは高速でwebクラウド周りでは結構ちやほやされた
けどRDBとNoSQLの区別付いてるかは心配やな
外付けHDDの中身…か… テキストファイルにファイル名ずらっと並べて終わりだろう >>900
さんくす、SQlite?そんなの古くて誰も使ってないよ?みたいな状態が怖い
>>901
さんくす、とりあえず椅子を作りたい、用途に多少合わなくても使えるから
簡単な検索、重複ファイルの処理とか?
速度は遅くていいので、簡単で扱いやすいのがいいでつね
RDBで作ろうとおもってます
>>902
そんな感じになりそう、さすがにテキストファイルは作らないけど
sqlite使ってみようと思いますが、Microsoft SQL Serverってどうなんでしょう?
定番なんでしょうか?それとも難しいとか使いにくいとか >>903
sqliteはローカルで閉じたお手軽DBとしてはまだまだ現役よ。ローカルDBのデファクトスタンダードと言っていいぐらい。
クライアントサーバのようなシステム作りたいなら不向きだけど。 SQL ServerとかそれこそWinのクラサバでしか使われてない無価値な技術だぞ sqliteは組み込みDBではメジャーだろ。androidアプリの標準ローカルDBがsqliteだし。iosのcoredbだって内部はsqlite使ってるだろ?
モバイルアプリでsqlite使われまくりだろ。
まぁ、最近はrealmだのあるが sqliteはChromeとかfirefoxでも使ってるはず >>903
win環境ならSQL Serverは最有力選択肢だよ
C#前提ならVisualStudioとも統合されてるし、簡単に扱えるので取り回しもしやすくて情報も多い
気になるのはやろうとしてることに対して、若干大げさな構成かなという点かな
RDBの経験積みたいのが目的に含まれるなら全然アリよ インストールとかもSQLServerのインストールと設定込みになるから大げさだよ
インストール先でSQLserverの管理も必要になる(セキュリティーホールに対するアップデートなど)
sqliteがいいと思うよ プロダクト目的なSQLite
勉強目的ならSQLServerっつーことで >>904
さんくすです、現役なら今から勉強しても無駄にはならなそうですね
>>905
Microsoftはたまに、それ誰得よってのがあるから怖い
>>906
さんくす、androidに使われてたらしばらく安泰でつね
>>908
ちょと調べてみたけど、きびしい、頭の片隅に
>>910,912
さんくす、SQLServerも間違ってはいないのですね
DB使うまでもなくオーバスペックっぽいけど、練習になるから
>911
導入がメンドイのと保守もいると、さんくすね
>909
firefoxで使ってるのみました、でもFFは設計古いままきてるからどうなのかなって
>913
VisualStudioにsqliteいれといてくれたらいいのにね
みなさんさんくす、現在のDBの立ち位置がわかって、方向性がだいたい決まりました
まずはsqlite導入してみようかな SQLiteって導入するほどのもんでもない
っていうか導入とかせんでも使えるし nugetで簡単にプロジェクト追加できるからVisual Studioに付属していないという批判はお門違い >>917
まあこういう文章だと語尾がしねに読めちゃうのはしょうがないしね 「〜だしね」からの「しねとは何だ!」ってのはいつものお約束だろw
むしろ愛を感じるわ。 >>914
> VisualStudioにsqliteいれといてくれたらいいのにね
2019は知らんけど2017はVisual Studioのインストール時にSQL-Server LocalDBを入れるかどうかを聞いてきたような気がする
LocalDBは外部からの接続できないだけで中身はほとんどSQL-Server
Visual Studioからテーブル開いてデータを弄ることもできるしそこそこ便利よ >>923
使いたいときはentityframeworkっていう似たようなものを被せて使います >>922
まじでっ、2017入ってるんだけど記憶にないお
スキップしたんだろうな、今からいれてみるサンクスね >>915-918
nugetも入れたほうがいいのかお genericsの〈T〉のTって動的に入れるのは無理?
System.Typeはわかってるんだが >>928
Type.MakeGenericType >>927
nugetを入れると言う以前にVS使ってソリューションて作るとすぐ使える状態にあるし
SQLiteを始めとして外部ライブラリを導入するならnuget使うのはc#では基本ツールと言えるので、使えたほうが良い
パッケージ管理にnugetが最適かは置いておくとして sqliteやるとして、Dapperを使うかEF使うかは意見が分かれるところだね
ついでにSQLから始めるってことでDapperをお薦めしますが
EFはSQLを知らなくてもなんとかなるが、そのうち壁にぶち当たるだろうからね SQLiteとEFの組み合わせはテスト専用だ
EFはサーバー用のフレームワークなのでSQLiteを使うようなスタンドアロンなアプリで使用されることは基本的にないし、
EFなんか被せたら軽量なSQLiteが台無し SQL-Server Local DB って MSDE のこととちゃうんけ MSDEつーか、SQL Server Expressだっけかな いや間違ってる
MSDEの後継はSQL Server Express
Local DBはそれとインターフェイス互換性を持たせた別製品
ExpressとCompactのあいのこみたいなもの ありがとう
SQLite とは関係無いことは判った
SQLite の簡単さとは比べ物にならない SQLLiteてUPDATE文に結合テーブル使えないんだっけ >>939
> Local DBはそれとインターフェイス互換性を持たせた別製品
> ExpressとCompactのあいのこみたいなもの
お前もテキトーなこと書くなよw
LocalDBはエンジンはExpressとほぼ同じで外部からの接続ができないだけ
Compactは全く別物で使えるSQLも異なる 20年程前にSYBASEと分離したけど
大元は同じだったり MS製でサーバーインスコ必要ないSQLはmdbということになる? なんでMSはAccessやめちゃったんだろうな
さっさとWeb移行して真面目に開発続けてればSalesforceみたいな糞に出番はなかったのに >>944
SQL Server Compact…はまだ生きてたっけ? >>947
Compactは終了で、その代わりがlocalDBなんじゃなかったっけ >>930
さんくす、Nugetすごく簡単だねえ、ただ多すぎて迷う、coreにしてみた
>>931
わざわざさんくすね、LocalDBも入れてみるお
>>933
Dapperとゆう新たな単語が、、頭の片隅に
他の人もサンクス、あとは勉強してコード書くだけだね >>946
Access地味に高いからな
使わんのにエンタープライズに入ってやがるのがムカつく >>950
Accessというか、MDBファイルは作るときこそ金はかかるが、配布は無料ってところが良かったよな
頑張ればフリーで全て賄うことも可能だったし ASP.NET Webフォームでオブジェクト指向な作りって出来ますか?Pageクラスを継承した画面ごとのクラスが基本となると思うんですが、それらとは別にドメインオブジェクトを定義すればいいんでしょうか?
古いフレームワークのせいか、参考になる情報がWeb上で見つからず困っています ドメインオブジェクトはどんなフレームワークでも作るのはまあ基本 C#にしてもVB.Netにしても、オブジェクト指向な言語だからできるだろ
オブジェクト指向な作りってどんなのを指してるんだ? extendsを使いグローバル変数で回さないことかな mdb は Access 無くても作れるし使える
wsh からも作れるし
python からでも win32com とか adodb とかで生成も操作も可能 >>956
生成できたっけ?
ADOXが必要だと思ってたけどadodbで生成できるならやり方教えて欲しい 昔はVSでもGUI上からmdb作れた気がするけどc#からコードで作れたと思う 扱い面倒だからね
自分だけなら良いけど
人が触ると直ぐに解放漏れするし
gc.Collect連打とか モダンアプリではより完全なCOMベースになったね
.NETなんかいらんかったんや 組み込みっていったっていまどきマルチスレッド当たり前で、要は
マルチユーザーでアクセスするのと同じなんだが、組み込みDBは行ロックが
ないのが痛すぎる。大きめのバッチ走らせると行ロックないから
他から更新できなくなるし。 >>964
用途に応じて使い分ければいいんじゃないでしょうか Newtonsoft.Jsonに絡み、C#の文法や仕組みがよくわからないので教えてください
https://www.newtonsoft.com/json
前者のコードが通ること、対して後者が通らないことの理由がそれぞれよくわかりません
var jsonString = JsonConvert.SerializeObject(new {asdf = "asdf"});
var jsonString = JsonConvert.SerializeObject(new {var asdf = "asdf"});
JsonConvert.SerializeObjecメソッドに匿名のオブジェクトを作成して渡すのであれば、宣言を含めきちんと作成した後者のコードになるような気がしてしまいますが・・・・一体どういうことなのですか? 匿名型でvarを使う文法が存在しないからじゃねーの >>967=968
ありがとう、こういうものだったのか
全然知らなかった助かったよ WindowsフォームのListBoxのアイテムの順番を
マウスでドラッグして移動出来たりはしないでしょうか? vs2019って新規作成でフォーム作れます?いきなりユーザーコントロールしかなくないですか? >>973
そうなんだよ
まずボタンやチェックボックスの自作から始まる
一通りできたらフォームの新規作成がアンロックされる >>976
右上二行目のコンボボックスが「AddOn」となっているだろうが、そこを「デスクトップ」にする WPFのStack、WrapPanelなどのコンテナ上の余白クリック時にイベントを追加したいのですが、Background="#00000000"とすることでそれ自体は達成することが出来ました
しかし該当コンテナ上に配置されてるButtonなどのコントロールをクリックしたときもコンテナに追加したクリックイベントを拾ってしまいます
あくまで余白クリック時のみ発生させたいのですが、何か方法はないでしょうか? >>979
if (!(sender is StackPanel)) { e.Handled = true; return; }
これを先頭に追加してみたところ希望の動作になりました。
どうもありがとうございます。 >>980を踏んだ人は新スレを建てて下さい
次スレよろしく めちゃくちゃ初歩的な話で恐縮ですが…
Visual Studio 2019でWPFアプリを作ってみようとして最初の最初でつまづきました
参考にしたURLは↓
C# で WPF を使った Hello World アプリ - Visual Studio | Microsoft Docs
https://docs.microsoft.com/ja-jp/visualstudio/get-started/csharp/tutorial-wpf?view=vs-2019
1.新プロジェクトを作成(WPF App(.NET Core))
2.ツールボックス > コモンWPFコントロールからTextBlockをデザインサーフェイス上に配置
3.配置したTextBlockを削除
4.再度、ツールボックスからTextBlockを配置
5.このスコープで重複する名前 'textBlock' を登録することはできません。 と言われエラーになる
コントロールの名称を変更すれば良いのだとは思いますが、
表面上は1つ目のコントロールなのにtextBlock2のような名前に変更しなければならないのは気持ちが悪いです
そもそも先に配置したコントロールを削除したのに重複エラーと言われてしまうのがよく解りません
一旦配置してしまうと、削除してもどこかにデータが残ってしまうのでしょうか? XAMLを見て必要なら手で直せとしか
WPFのデザイナは貧弱であり、基本的にはデザイナは補助と割り切って手でXAMLを弄る必要があるし、それが認められている
WPFは既にメンテナンスモードに入っており、今後改善される見込みもない
あとWinFormsと異なりWPFではどうしても必要な場合を除きコントロールのNameは指定しないのが基本 >>985
おっしゃっている"手で直す"とは、どこのことでしょうか?
例として、
1.TextBlockをデザイナに追加
2.TextBlockタグのx:Nameを"textBlock5"に変更
3.TextBlockを削除(マークアップ側のTextBlockタグも消える)
4.再度TextBlockをデザイナに追加(マークアップ側にTextBlockタグが追加される)
5.TextBlockタグのx:Nameを"textBlock5"に変更
6.重複エラー
このようになるのですが、やはり textBlock5 がどこに残っているのか見つけられません
現在のプロジェクトを対象に"textBlock5"を検索してみましたが見つかりませんでした
プロジェクト作成時はxamlが↓のようになっており
<Window x:Class="HelloWPFApp.MainWindow"
中略
Title="MainWindow" Height="450" Width="800">
<Grid>
</Grid>
</Window>
コントロールを追加するとGridタグ内にタグが追加されます↓
<Grid>
<TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="159,236,0,0" Text="TextBlock" TextWrapping="Wrap" VerticalAlignment="Top"/>
</Grid>
参考URLのマークアップでは x:Name="textBlock" が記述されていなかったため、その部分を削除したところエラーは消えました
>コントロールのNameは指定しないのが基本
というのは、ここのx:Nameのことでしょうか?
ただ、上記の通り重複している名前がどこに残っているのか解らないため
根本的な解決になっていません xaml は xml(テキスト)ファイルだから、テキストエディタで開いてその名前で検索してみれば見つかるんじゃないの。
見つけたら余計な設定があるはずなので、それを読み取って自力で削除すれば。
ってことでは。 >>987
986の書き方では良くなかったでしょうか
xamlファイルの中身は
<Window x:Class="HelloWPFApp.MainWindow"
中略
Title="MainWindow" Height="450" Width="800">
<Grid>
</Grid>
</Window>
となっていて、コントロールを追加するとGridタグ内にタグが追加されます↓
<Grid>
<TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="159,236,0,0" Text="TextBlock" TextWrapping="Wrap" VerticalAlignment="Top"/>
</Grid>
コントロールを削除すると、TextBlockタグも消えます
コントロールの追加/削除で変更があるのはこの行だけです
その後、現在のプロジェクトを対象としてx:Nameに指定してあった値を検索しても見つからなかったんです
xamlファイルをテキストエディタで開き直しても中身は同じです >>986
XamlデザイナではC#エディタと違ってどこで重複してるのかまでは教えてくれないね確か
でもエラー箇所は下線が付くはずだからそれで見つけられるはず
x:Name=""やName=""は名指しでのアクセスが必要にならない限りは指定しないのが普通
そのコントロールでのイベントからのアクセスなら、例えば<Button Click="buttonClick" />なら下記のようにsenderをキャストすることによってアクセス出来るので、Name属性はそうそう必要にならないはず
private void buttonClick(object sender, RoutedEventArgs e)
{
var button = (Button)sender;
} 「x:Name="" は基本的には不要」という話は解りました
何度も書いていますが、デザイナにコントロールを配置した時点で自動生成されるコードにx:Nameが存在しているのであって
私が追記したものではありません
それはそれとして、重複エラーになってしまうことの根本的な解決法が知りたいのです 自己解決しました
恐らくデザイナに追加した時点でメモリにロードされ
コードを削除してもメモリ上にデータが残っているので重複とされてしまうようです
一旦xamlファイルを閉じ、開き直してからコントロールを追加するとエラーになりませんでした レス数が950を超えています。1000を超えると書き込みができなくなります。