第5回 テキストファイル操作クラスの追加

公開日:2018-05-01 更新日:2019-05-14

1. 内容

1. TextFileクラスの追加

テキストファイルを表すTextFileクラスを追加しました。
ファイルのパス、読み込み専用フラグ、文字コード、改行コードの保持と、テキストファイルの読み込み・書き込みメソッドを追加し、テキストファイルの操作を行えるようにしました。
今までは RichTextBox の SaveFile() や LoadFile() を使っていましたが、BOMがない場合に文字化けをしたり、改行コードの種類(CRLF、CR、LF)やBOMの有無がわからなくなるため、追加したTextFileクラスを使用するようにしてあります。
また、今後はCSVファイルなども扱えるようにしたいため、IFileと言うインターフェースを追加しました。これにより、例えば上書き保存をする際に、ファイルの種類によって、TextFile の save() と CsvFile の save() を呼び分ける必要がなくなります。

2. FormでTextFileクラスを使用するように変更

Formで保持していたパス、読み込み専用のフラグの代わりにTextFileクラスのオブジェクトを保持するようにしました。
また、ファイルの読み込み、書き込みも、このオブジェクトで行うように変更しました。

3. ウィンドウのタイトルに文字コードとBOMの有無を表示

ウィンドウのタイトルに開いているファイルの文字コード、BOMの有無を表示するように変更しました。

4. __クラスの追加

よく使うデバッグ用のメソッドなどを入れる予定です。

2. 動画



3. 画面

ウィンドウタイトルに文字コード、BOMの有無を表示するようにしました。
画像1

4. 補足

1. 文字コードの簡易判定について

普段、シフトJIS、UTF-8、EUC-JP しか使わないので、この3つに対してだけ文字コードの簡易判別をしています。
判別方法としては、文字化け時によく出る文字(普段使わない文字)の有無により判別しています。

まず UTF-8 に変換して、「 」がない場合は UTF-8、
「 」が出る場合はシフトJIS か EUC-JP。

シフトJISに変数して半角の、「、」「・」「」」が出る場合は、EUC-JP。

上記に該当しない場合は、シフトJISとしています。


5. 今後の課題

1. 右クリックメニュー対応

右クリックメニューでコピペが行えるようにする。

2. フォームの位置・サイズの保存と読み込み

終了時にフォームの位置とサイズを記憶し、次回、同じ位置とサイズで起動できるようにする。

3. その他

検索、grep、選択した数式の計算、大文字・小文字変換、半角・全角変換、10進数・16進数の変換、インデント調整、文字コード対応、ドラッグ&ドロップでファイルオープン、タブ化、ウィンドウの位置・サイズの保持、ファイルツリー・リストを付けた3ペイン構成にする、プラグインでテキストの加工を行えるようにする、プラグインでカレンダーをつけて日記をつけられるようにする、などなど。

ダウンロード

ver実行ファイルソース
1.0.4
2018/05/01
ncm_1_0_4.zipncm_1_0_4_src.zip