델파이 에서 프로젝트를 진행 중이며 응용 프로그램 설치 프로그램을 작성 중입니다. 세 가지 주요 부분이 있습니다.
- PostgreSQL 설치 / 제거
- myapplication ( myapplication 설정은 nsi를 사용하여 작성 됨) 설치 / 제거
- 스크립트 (배치 파일)를 통해 Postgres에 테이블 생성
모든 일이 잘 실행하고 원활하게,하지만 뭔가가 실패 할 경우 I, 프로세스의 모든 단계를 LogToFile하는 LogToFileger을 만든
다음과 같이
LogToFileToFile.LogToFile('[DatabaseInstallation] : [ACTION]:Postgres installation started');
이 기능 LogToFileToFile.LogToFile()
은 파일에 내용을 씁니다. 이것은 잘 작동하지만 문제는 하나의 ca 가 코드의 모든 곳에서 함수 호출 만 볼 때 코드 를 읽기 가 어려워 코드를 엉망으로 만들었다는 것입니다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
이 장치는 모든 LogToFile 메시지 것switch case
같은를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()
만난 것처럼 읽기가 조금 어려웠다 .