Die Fehlerbehandlung ist aber wieder nicht "benutzbar". (siehe vorherrige Kommentare dazu)
Delphi-Quellcode:
except
on e:
exception do begin
FehlerOk( '
QRCodeShow Fehler : ' + e.
Message );
end;
end;
Ruf diese Funktion mal auf und versuch beim Aufrufer den Fehler abzufangen (z.B. Try-Except) ... das geht natürlich nicht und du müsstest deiner Funktion wieder ein sinnloses "zeige Fehler nicht an"-Property mit geben.
Grade durch solche unnötigen Abhängigkeiten und Fehler-Dialoge verbaut man sich, daß ein Code einfach wiederverwendbar ist.
Durch Weglassen wird der Code wiederverwendbar, leichter wartbar, ist leichter zu debuggen, man kann leichter eine Fehlerlogging (z.B. Eurekalog) anbinden und der Code wird kürzer, übersicher und leichter verständlich.
Und wie man sieht, hast du auch noch doppelten Code.
Delphi-Quellcode:
procedure QRCodeShowImage( aBitmap : Graphics.TBitmap; aSize : integer );
var scale : double;
begin
if ( ( QRCodeBitmap.Width > 0 ) and ( QRCodeBitmap.Height > 0 ) ) then begin
aBitmap.Width := aSize;
aBitmap.Height := aSize;
Scale := aBitmap.Height / QRCodeBitmap.Height;
aBitmap.Canvas.StretchDraw( Rect( 0, 0, Trunc( Scale * QRCodeBitmap.Width ),
Trunc( Scale * QRCodeBitmap.Height ) ),
QRCodeBitmap );
end;
end;
procedure QRCodeSave( aFileName : string; aSize : integer );
var xBitmap : Graphics.TBitmap;
Begin
CheckFileDir( aFileName );
xBitmap := Graphics.TBitmap.Create;
try
QRCodeShowImage( xBitmap, aSize );
xBitmap.SaveToFile( aFileName );
finally
xBitmap.Free;
end;
end;
Alles was hier schief laufen kann, kann nur ein schwerer Fehler sein und sowas gehört als
Exception.