erstmal sind die Exceptions hier völlig falsch behandelt ... siehe
Verständnisfrage zu try-except-finally und dort Verlinktes (
Falsche Verwendung von try...except...end)
GetLastError und Exceptions sind völlig unterschiedliche Dinge, also GetLastError hat dort absolut keine Aussagekraft über die aufgetretende
Exception!
Vorschlag: (eh dieursprünglichen Exceptions zerstört und durch Nichtssagende Meldungen ersetzt werden ... dann lieber garnichts behandeln und nur die Resourcen schützen)
Delphi-Quellcode:
procedure Protokoll_drucken ();
var Sollwerte: TBitmap;
// ... weitere Variablen
begin
// Querformat auswählen
Printer.Orientation := poPortrait;
// Objekte generieren
Sollwerte := TBitmap.Create;
try
// Maße festlegen
Dim.X := 362;
Dim.Y := 212;
// Zeichnen auf dem Objekt ###############################################################
with Sollwerte do
begin
Width := Dim.X;
Height := Dim.Y;
Canvas.Brush.Color := Farbe_Felder;
Canvas.FloodFill(0,0,clRed, fsBorder);
Canvas.Brush.Style := bsClear;
Canvas.Font.Name := 'Courier New';
Canvas.Font.Style := [fsBold];
Canvas.Font.Size := 12;
Canvas.Font.Color := Farbe_Ueberschrift;
// ... hier wird jetzt gnadenlos darauf herumgemalt ...
end;
// Text drucken ##############################################################################
with Printer do
begin
BeginDoc;
try
// Schrifteinstellungen
Canvas.Brush.Style := bsSolid;
Canvas.Font.Name := 'Courier New';
Canvas.Font.Style := [fsBold];
Canvas.Font.Size := 12;
// Messfeld 1 eintragen
Arect.Left := 100 ;
Arect.Top := 1200 ;
Arect.Right := 100 + Sollwerte.Width *7;
Arect.Bottom := 1200 + Sollwerte.Height *7;
Canvas.StretchDraw(Arect, Sollwerte);
// Messfeld 2 eintragen
Arect.Left := 100 ;
Arect.Top := 1500 + Sollwerte.Height *7 ;
Arect.Right := 100 + Sollwerte.Width *7 ;
Arect.Bottom := 1500 + Sollwerte.Height *7 *2;
Canvas.StretchDraw(Arect, Sollwerte);
// Messfeld 3 eintragen
Arect.Left := 100 ;
Arect.Top := 1800 + Sollwerte.Height *7 *2;
Arect.Right := 100 + Sollwerte.Width *7 ;
Arect.Bottom := 1800 + Sollwerte.Height *7 *3;
Canvas.StretchDraw(Arect, Sollwerte);
finally
EndDoc;
end;
finally
// Freigeben des verwendeten Speichers - Überprüfung auf NIL erfolgt automatisch vor dem Aufruf des Destruktors
Sollwerte.Free;
end;
end;
hast du es denn mal über den Debuger versucht undgeschaut wo was wie gemacht wird?