投稿

ラベル(C#)が付いた投稿を表示しています

C#でCSVファイルを読む手順

CSVファイルを読み込むには、以下のライブラリを使う。これが定石。 Microsoft.VisualBasic.FileIO.TextFieldParser CSVファイルをきちんとカンマで区切りながら読んでくれる。とても便利。 ❓(質問)CSVファイルは Split メソッドを使えば列ごとに分解できるのでは? (回答)CSVファイルには、ダブルクォーテーションで囲まれたテキストもOKで、このときはSplitでカンマごとに分割しても「"」が残ってしまうのでダメです。 (例) 番号,レベル,説明 1,2,"説明1" 2,4,"説明2 詳細は***に示す" しかも、「"」で囲まれたテキストは改行してもよいので(上の例)、これではSplitでどうにかすることはできません。  TextFieldParser は上記のケースすべてに対応して、きちんと読み込むことができます。 (回答終了) CSVファイルを読み込むコードは以下のように書ける。ここでは以下の流れ。 CSVファイルを全行読み込む→配列に入る 配列を改行を挟んで連結する→長い文字列になる TextFieldParserのオブジェクトを作って、文字列を引数に渡す TextFieldParserの読み込み設定をする→「、」区切り 1行目はタイトルとして読む 2行目以降はデータとして読む ファイルのの先頭に using を追加 using Microsoft.VisualBasic.FileIO; コードの本体: string[] csvText = File.ReadAllLines(path); var sr = new System.IO.StringReader(string.Join(Environment.NewLine, csvText)); using (var pa = new TextFieldParser(sr)) { pa.TextFieldType = Fi...

テキストファイルを読み書きする

 テキストファイルの読み書きを最近はあまりしなくなったので、たまにコードを書かなくてはならなくなったときに、あれ?なんだっけ、、、となる。 テキストファイルの読み書きのサンプルコードを下記に書いておく。メモ代わり。 <pre>             /// ファイルにテキスト書き出しする /// { var sw = new System.IO.StreamWriter("sample.txt", false, Encoding.UTF8); for (int i = 0; i < 5; i++) { sw.WriteLine("サンプル" + i); } sw.Close(); } /// ファイルからテキストを読む /// { var sr = new System.IO.StreamReader("sample.txt", true); var t1 = sr.ReadLine(); var t2 = sr.ReadLine(); sr.Close(); } 久しぶりにブログを書いたらコードの引用方法を忘れているなあ、、、

コードレンズが消えた???

イメージ
VisualStudioを使っていたら、なぜか、急にコードレンズが表示されなくなった。普段からよく使っているので、表示されないと、とても困るのよね。

和暦はデフォルトで「元年」表記になった

イメージ
5月15日にWindows Updateが更新されたので調べてみたところ、和暦は「元年」表記に戻っていた。Windows10もWindows7も「元年」だったので、.NET framework では「元年」がデフォルトと云うことなのだろう。(2019/5/21追記)

Windows10での和暦表示が「元年」ではなくなった

イメージ
Windows10の新元号に対応したアップデートが5月2日に出たのだが、次の日にも出ていた。こちらをセットアップしたら「元年」ではなく「01年」に変換された。

Windows10でも「令和」に変換できたが「元年」表記なんだ、、、

イメージ
新元号対応のアップデートを待っているのだが、Windows10の最新版用のが出ないので、仕方なくWindows10の1709バージョンの仮想PCを作って試したところ、5月1日が「令和」に変換できた。

Windows7では「令和」に変換できた

イメージ
新元号に対応したWindowsUpdateが始まったと聞いて、Windows7の仮想PCで実行してみたところ、5月1日が「令和」に変換できた。

新元号の「令和」はC#で表示されるか?

4月中旬も過ぎて、新元号にWindowsはどう対応しているのだろうかと調べてみた。2019/5/1を和暦変換してみたところ、まだ「平成31年5月1日」となった。

参照コンポーネント 'VBIDE' が見つかりませんでした。

イメージ
Surface6を買って、VisualStudioやらOffice2016やらをセットアップして、仕事を始めてみると、これまではビルドできていたプロジェクトが、エラーが出てビルドできない。なぜ?急に?こういうのばっかり。

.NET Framework 3.5 のSDKがダウンロードできない

イメージ
新しいパソコンにVisualStudio2017をセットアップして、既存のプロジェクトを開いたところ「.NET Framework 4.6.1に上げます」みたいなメッセージが表示された。あれ?と思って調べてみると、ターゲットのフレームワークのところに.NET Framework 3.5 がない、、、ということでSDKをダウンロードしようとしたら、ここにも無かった。

UniCodeのテキストファイルをUTF-8に変換する手順

2つのアプリが出力するテキストファイルを比較するテストをしようと思ったら、一方のファイルはUniCodeで、もう一方はUTF-8だった。そのまま比較すると全滅なので、コード変換することにした。

ListViewでinsertしたのに項目が先頭に表示されない

ListViewの先頭に項目を追加しようとして、Insertしてみたのに、最初に表示されない。今日もまたうまくいかないわけです。

型 'System.Collections.Generic.List<派生>' を 'System.Collections.Generic.List<基底>' に暗黙的に変換できません

基底クラスと派生クラスがあるとき、基底クラスのオブジェクトbへ派生クラスのオブジェクトdを代入することはできる。つまり「b=d;」はOKなのだが、しかしListを代入しようとするとエラーが起きるわけです。

タブコントロールに追加したタブが名前で参照できない

C#でタブコントロールにタブを追加するコードを書いて、タブの名前で参照しようとすると例外が起きるわけです。また、うまくいかない。

C#非同期処理ことはじめ

ようやくC#の非同期処理を使い始めたので、メモしておきます。

指定されたバージョン文字列にワイルドカードが含まれていますが、これは決定性と相容れません。バージョン文字列からワイルドカードを削除するか、このコンパイルで決定性を無効にします

イメージ
VisualStudio2017をアップデート(15.8.7)した後に、新しいプロジェクトを作って、バージョン番号のところに「1.0.0.*」と設定したら、エラーが出るわけです。

プロセスのメモリ使用量を測定する手順

タスクマネージャーに表示されている「メモリ(プライベートワーキングセット)」と同じ値を表示するには、PerformanceCounterを使う。Process.PrivateMemorySize64 ではだめ。Google+からコピーした記事。2013/9/12

XPS Viewerの代わりになるアプリ?

イメージ
Windows10の2018年の春のアップデートで、XPS Viewerが消えたという話は前に書いた。 XPS Viewer はどこにあるか? 上の記事では、「アプリと機能」から追加できると書いたのだが、ネットにつながっていないとそれも出てこないらしい。事務所のオフラインのパソコンで追加できないという話を聞いた。

フレームワークの和暦の対応状況

イメージ
改元も近づいてきたので、「2020/7/7」を和暦で表示するアプリを作って、.NET Framework 4.6.2 と 3.5 でそれぞれビルドして動かしてみた。フレームワークによって、和暦の扱いは違うのか?

DataGridViewの行の左端に色を付ける方法

イメージ
DataGridViewの行の左端に色を付けたいときの手順をまとめる。