Ich gehe mal davon aus, dass immer nur ein Profil aktiv sein kann. Da würde ich sofort auf einen Enumerator zurückgreifen, um die 4 if..then rauszuschmeißen und durch ein case ersetzen. Bei einem case wird sofort nach dem richtigen Fall der Rest übersprungen. Bei deiner Variante werden immer alle Profile geprüft.
Diesen Teil:
Delphi-Quellcode:
if not DirectoryExists(p1String) then begin
CreateDir(p1String);
würde ich in eine Methode auslagern, da immer das gleiche, nur mit anderen Werten gemacht wird. Am besten sollte es eine Function sein, damit du im Fehlerfall reagieren kannst.
Das würde insgesamt etwa so aussehen:
Delphi-Quellcode:
type
tProfiles = (UnknownProfile, p1, p2, p3, p4);
const
p1String = 'H:\testend\profil1';
p2String = 'H:\testend\profil2';
p3String = 'H:\testend\profil3';
p4String = 'H:\testend\profil4';
function IsDirectoryOK(const ADirName: String);
begin
Result := DirectoryExists(ADirName);
if not Result then begin
try
CreateDir(ADirName);
except
Result := false;
end;
end;
end;
procedure Test(Profil: tProfiles);
begin
case Profil of
p1: begin
if IsDirectoryOK(p1String) then begin
//andere Sachen machen, auch den Pfad p1String verwenden
end;
end;
p2: begin
if IsDirectoryOK(p2String) then begin
//andere Sachen machen, auch den Pfad p2String verwenden
end;
end;
p3: begin
if IsDirectoryOK(p3String) then begin
//andere Sachen machen, auch den Pfad p3String verwenden
end;
end;
p4: begin
if IsDirectoryOK(p4String) then begin
//andere Sachen machen, auch den Pfad p4String verwenden
end;
end
else
showmessage('ungültiges Profil gewählt');
end;
end;
Das ist ungeprüft, da ich gerade kein Delphi zur Hand habe.