私はデルファイでプロジェクトを進めており、アプリケーションのインストーラーを作成しています。主に3つの部分があります。
- PostgreSQLのインストール/アンインストール
- myapplication(myapplicationのセットアップはnsiを使用して作成されます)インストール/アンインストール。
- スクリプト(バッチファイル)を使用してPostgresでテーブルを作成します。
すべてがうまくスムーズに実行されますが、何かが失敗した場合は、
このようにプロセスのすべてのステップをLogToFileするLogToFilegerを作成しました
LogToFileToFile.LogToFile('[DatabaseInstallation] : [ACTION]:Postgres installation started');
関数LogToFileToFile.LogToFile()
これは、内容をファイルに書き込みます。これはうまく機能していますが、問題は、コードのどこでも関数呼び出しを見るだけでコードを読むことが難しくなっているため、コードが台無しになっていることLogToFileToFile.LogToFile()
です
例
if Not FileExists(SystemDrive+'\FileName.txt') then
begin
if CopyFile(PChar(FilePathBase+'FileName.txt'), PChar(SystemDrive+'\FileName.txt'), False) then
LogToFileToFile.LogToFile('[DatabaseInstallation] : copying FileName.txt to '+SystemDrive+'\ done')
else
LogToFileToFile.LogToFile('[DatabaseInstallation] : copying FileName.txt to '+SystemDrive+'\ Failed');
end;
if Not FileExists(SystemDrive+'\SecondFileName.txt') then
begin
if CopyFile(PChar(FilePathBase+'SecondFileName.txt'), PChar('c:\SecondFileName.txt'), False) then
LogToFileToFile.LogToFile('[DatabaseInstallation] : copying SecondFileName.txt to '+SystemDrive+'\ done')
else
LogToFileToFile.LogToFile('[DatabaseInstallation] : copying SecondFileName.txt to '+SystemDrive+'\ Failed');
end;
あなたが見ることができるようにLogToFileToFile.LogToFile()
、
それがあった前に、多くの呼び出しがあります
if Not FileExists(SystemDrive+'\FileName.txt') then
CopyFile(PChar(FilePathBase+'FileName.txt'), PChar(SystemDrive+'\FileName.txt'), False)
if Not FileExists(SystemDrive+'\SecondFileName.txt') then
CopyFile(PChar(FilePathBase+'SecondFileName.txt'), PChar('c:\SecondFileName.txt'), False)
これは現在、私のコード全体に当てはまります。
読みにくい。
LogToFileの呼び出しを整理するための良い方法を私に提案できますか?
お気に入り
'LogToFileToFile.LogToFile() `呼び出し
をこのようにインデントするif Not FileExists(SystemDrive+'\FileName.txt') then begin if CopyFile(PChar(FilePathBase+'FileName.txt'), PChar(SystemDrive+'\FileName.txt'), False) then {Far away--->>} LogToFileToFile.LogToFile(2,'[DatabaseInstallation] : [ACTION]:copying FileName.txt to '+SystemDrive+'\ sucessful') else {Far away--->>} LogToFileToFile.LogToFile(2,'[DatabaseInstallation] : [ACTION]:copying FileName.txt to '+SystemDrive+'\ Failed'); end;
このユニットのような個別のユニットに
LogToFileger
は、次のswitch case
ようなすべてのLogToFileメッセージが含まれます。Function LogToFilegingMyMessage(LogToFilegMessage : integer) begin case LogToFilegMessage of 1 : LogToFileToFile.LogToFile(2,'[DatabaseInstallation] : [ACTION]:copying FileName.txt to '+SystemDrive+'\ sucessful'); 2 : LogToFileToFile.LogToFile(2,'[DatabaseInstallation] : [ACTION]:copying FileName.txt to '+SystemDrive+'\ Failed'); 150 : LogToFileToFile.LogToFile(2,'[somthing] : [ACTION]: somthing important); end;
そのため、必要に応じてLogToFilegingMyMessage(1)を呼び出すことができます。
誰もこの方法でLogToFilegingへのより良い、よりクリーンなアプローチを教えてもらえますか?
logBook.log()
遭遇するので、読むのは少し難しいです。