Hallo,
ich habe ein kleines Tool geschrieben das eine Firebird Datenbank zu einem bestimmten Zeitpunkt per Backup sichert.
Die Sicherung kann jeden Wochentag Mo..Fr oder jeden Tag im Monat 1..31 erfolgen. Der Dateiname hat dann z.B. entsprechend die Endung: _Fr
Meine
Frage: Ist die Sicherung über die procedure BackupData und den dortigen Aufruf der ShellExecute - gbak.exe so in Ordnung oder sollte ich was beachten, es generell anders machen?
Ich habe das ganze als Setup beigefügt. In der Setup werden auch die Firebird
dll´s, usw... entsprechend ins Verzeichnis kopiert. Quellcode ist auch in der Anlage sowie 2 Screenshots: 1x Programm, 1x EXE Verzeichnis
Delphi-Quellcode:
procedure TFormMain.BackupData;
var
Quelle, Ziel, Dateiname : String;
Parameter : String;
Ergebnis : String;
OK : Boolean;
BackupResult : Integer;
begin
OK := TimerBackup.Enabled;
TimerBackup.Enabled := False;
if RadioButtonWeekday.Checked
then Dateiname := TargetDir + 'BackupFile_' + ShortDayNames[DayOfWeek(Date)]
else Dateiname := TargetDir + 'BackupFile_' + IntToStr(DayOfTheMonth(Date));
Quelle := '"' + SourceFile + '"';
Ziel := '"' + Dateiname + '"';
Parameter := '-v -t -user sysdba -password masterkey '+ Quelle +' '+ Ziel;
if CheckBoxShowDosWindow.Checked
then BackupResult := ShellExecute(0,nil,PChar(ExtractFilePath(ParamStr(0)) + 'gbak.exe'),PChar(Parameter),nil,SW_SHOW)
else BackupResult := ShellExecute(0,nil,PChar(ExtractFilePath(ParamStr(0)) + 'gbak.exe'),PChar(Parameter),nil,SW_HIDE);
if BackupResult <= 32
then Ergebnis := 'Fail'
else Ergebnis := 'OK';
MemoLog.Lines.Insert(0, FormatDateTime(FormatSettings.ShortDateFormat + ' ' + FormatSettings.LongTimeFormat, now)
+ ' # ' + Ergebnis
+ ' -> ' + Dateiname);
while MemoLog.Lines.Count > 100 do
MemoLog.Lines.Delete(100);
MemoLog.Lines.SaveToFile(ProgramDirectory + 'log.dat');
TimerBackup.Enabled := OK;
end;