Die zwei Connections wundern mich auch etwas. Das sollte eigentlich schon die Ursache für die ganzen nachfolgenden Memory Leaks sein.
Aber zurück zur eigentlichen Frage:
Kompiliert denn der SourceCode so überhaupt wie du ihn hier geschrieben hast? Mir fehlt zu dem zweiten
try
ein
except
.
Delphi-Quellcode:
11: begin
if t.RTFTextList.Items(ttArbeiten)<>Nil then
begin
top:=Trunc((CellRect.Height-t.RTFTextList.Items(ttArbeiten).pic.Bitmap.Height)/2);
BitBlt(TargetCanvas.Handle, CellRect.Left, CellRect.Top+top, CellRect.Width, CellRect.Height, t.RTFTextList.Items(ttArbeiten).pic.Bitmap.Canvas.Handle, 0, 0, SRCAND); //<---- Manchmal aber auch hier
end;
bmp:=TBitmap.Create;
bmp.Height:=ilInformation.Height;
bmp.Width:=0;
try
try
if t.TB then AddSymbol(SymTB, '', bmp);
if t.TD then AddSymbol(SymTD, '', bmp);
if t.FD then AddSymbol(SymFD, '', bmp);
if t.HB then AddSymbol(SymHB, '', bmp);
if t.PlainTextList.Items(ttBemerkung)<>nil then
if t.PlainTextList.Items(ttBemerkung).text<>'' then
AddSymbol(SymBemerkung, '', bmp);
if t.REgeschrieben then AddSymbol(SymRE, '', bmp);
if t.dmsAuftragNr<>'' then AddSymbol(SymAB, '', bmp);
top:=Trunc((CellRect.Height-bmp.Height)/2);
BitBlt(TargetCanvas.Handle, CellRect.Left+CellRect.Width-bmp.Width, CellRect.Top+top, bmp.Width, bmp.Height, bmp.Canvas.Handle, 0, 0, SRCCOPY);
finally
bmp.Free;
end;
end;
Dinge die du mal noch ausprobieren kannst:
Dann würde ich an deiner Stelle mal Teile der Paint Procedure auskommentieren und schauen, ob der Fehler immer noch auftritt.
Erkennst du den Fehler nur daran, dass die CPU Auslastung nach oben geht? Oder läuft dein
RAM irgendwann voll? Kannst du mal testen was passiert, wenn du die AddSymbol Procedure direkt integrierst und das Kopieren des Bitmaps in den var Parameter auslässt und stattdessen direkt auf das Canvas malst?