In vielen Fällen spricht erst mal ja nichts dagegen, aus einer Procedure eine Function zu machen.
Das
Result := False;
kann man nach hinten verschieben.
Delphi-Quellcode:
Function LeseJPGEin(DatnameMV:string):Boolean;
begin
If not DateiVorhanden
then exit(False);
If not HeaderOK
then exit(False);
If not EndianOK
then exit(False):
Result := True;
....
Grade dein Procedurename/Funktionsname ist für ein Result geeignet. Laden des Jpeg hat funktioniert oder eben nicht.
Tut mie leid, gerade diese Routine schreit danach ein Prozedur zu sein die im Fehlerfall eine
Exception wirft.
Denn wenn der Kunde anruft und sich beschwert, dass die JPEG-Datei xyz.jpg nicht geladen werden kann, will ich wissen wie es dazu kam: War die Datei vorhanden? War der Header Okay? War das Endian Okay? Zumal diese Funktion eh Exceptions werfen könnte, z.B. weil der Dateipfad falsch ist, die Datei gesperrt ist, das Netzlaufwerk zum Pfad nicht gemountet ist. Und auch weil die Datei nicht vorhanden ist, weil DateiVorhanden eine RaceCondition darstellt.
Wenn es Interessante Gründe gibt warum eine Methode Fehlschlägt sollte man diese nicht hinter einem Boolean Result verstecken. Davon sollte nur abgewichen werden, wenn jemand "beweist", dass das für die Anwendung ein Performance-Problem darstellt. Dann könnte ich mich evtl. mit der hässlichen alternative
function LeseJPGEin(DatnameMV:string; var FehlerMeldung: string):Boolean;
anfreunden.
Ciao HeZa