古いDelphiプロジェクトを調査するUnicode Statistics Toolが少し使いにくい点を修正する
Delphi のバージョン 2007 より前のバージョンで開発されたプロジェクトは標準の文字コードがAnsiなので、マイグレーション時にはこれをUnicode対応する必要がありますが、その予備調査に使用できるUnicode Statistics Toolが下記のURLから入手できます。 https://cc.embarcadero.com/item/27398
しかし、このツールのUIは次の点が使いづらいです。
- 調査対象のプロジェクトを含むディレクトリの指定は、SelectDirectory() で表示されるダイアログからしか行えない
- SelectDirectory() は階層の深いディレクトリを辿るのがめんどくさい
幸いなことに、このツールはソースコードを含む形で配布されているので、ソースコードを変更してこの問題を解決することにします。本当は変更後のソースコードを GitHub リポジトリにのせておけばよいと思うのですが、元アーカイブのライセンス条件が不明のため、変更差分の情報のみをメモとして残します。
ディレクトリを Explorer などからコピペできるようにする
UIの雰囲気から考えるとディレクトリ名を表示する TEdit (edtDirectory) にコピペするだけで動きそうに見えるのですが、このツールはそのような動作をしません。
このツールでは procedure RefreshFileList を実行して対象ファイルのファイルをリストアップした状態で動作するように実装されているからです。
そこで edtDirectory の onChange イベントに下記の実装を追加することにします。
procedure TForm2.edtDirectoryChange(Sender: TObject); begin RefreshFileList; end;
これで TEdit にディレクトリのフルパスをコピペするだけで動作するようになります。
Change ボタンで SelectDirectory ではなく OpenDialog を使用するように変える
Change (btnChangeDir) は SelectDirectory() で対象のディレクトリを指定するように実装されていますが、このUIは使いづらいと思うので、OpenDialog を利用する実装に変えます。
以下の実装は btnChangeDir の onClick の実装の変更例です。 予めフォームに TOpenDialog を配置した状態で以下の実装に変えるだけです。
procedure TForm2.btnChangeDirClick(Sender: TObject); var Dir : String; begin OpenDialog1.Title := 'All files in the selected directory will be processed'; OpenDialog1.Filter := '*.*'; processed'; if (OpenDialog1.Execute) then begin edtDirectory.Text := ExtractFileDir(OpenDialog1.FileName); RefreshFileList; end; end;