![]() |
Exception beim Löschen von Objekten
Hallo NG,
ich kämpfe zur Zeit mit einem Problem: Ich erzeuge zur Laufzeit einige MEMO Felder, die ich, wenn der Nutzer mit der Maustaste drauf klickt, wieder lösche. Klappt alles recht gut, bis ich die Memo-Felder lösche - dann bekomme ich eine Exception. Das tritt immer dann auf, wenn ich so ca. 10 und mehr Memo Felder erzeugt habe. Habe ich weniger Felder erzeugt, funzt alles recht gut. Es scheint mir irgendwie am Speicher zu liegen - sollte ich dem Programm mehr zuweisen ? Bisher habe ich da keine Einstellungen im Debugger vorgenommen oder verändert. Die Fehlermeldungen: Zitat:
Zitat:
Code:
Hier die Routine mit der ich zur Laufzeit die Memos erzeuge:
type
TForm11 = class(TForm) ..... procedure BPKlick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end;
Code:
Und hier die Routine, mit der ich die MEMOs wieder lösche:
if Button=mbRight then
begin BPEditCount:=BPEditCount+1; BPEdit[BPEditcount]:=TMemo.Create(Form11); BPEdit[BPEditcount].Parent:=Form11; BPEdit[BPEditcount].Left:=X; BPEdit[BPEditcount].Top:=Y-17; BPEdit[BPEditcount].Height:=20; BPEdit[BPEditcount].Width:=20; BPEdit[BPEditcount].OnKeyPress:=BPKEYPRESS; BPEDIT[BPEditCount].OnClick:=BPKLICK; BPEdit[BPEditCount].Font.Name:='Arial Narrow'; BPEdit[BPEditCount].Font.Size:=8; BPEdit[BPEditCount].Tag:=BPEditCount; BPEdit[BPEditCount].Name:='Memo'+inttostr(BPEditCount); BPedit[BPeditCount].Text:=''; BPEdit[BPEditCount].setfocus; end;
Code:
Kann mir jemand helfen ?
procedure TForm11.BPKLICK(Sender: TObject);
Var BPC : integer; begin if application.messagebox(Pchar('Soll das Kommentarfeld wirklich gelöscht werden ?'), PChar('L Ö S C H E N'), MB_ICONQUESTION+MB_YESNO+MB_DefButton2)=6 then begin if (Sender is TMemo) then begin with (Sender as TMemo) do begin if BPEdit[(Sender as TMemo).Tag]<>nil then begin BPC:=(Sender as TMemo).Tag; BPEDIT[BPC].free; // BPEDIT[BP]:=nil; end; end; end; end; end; Gruss Markus |
Re: Exception beim Löschen von Objekten
Moin Fish,
die Fehler treten auf, weil Du das Memo in seinem eigenen OnClick Eventhandler freigeben möchtest. D.h. das Memo empfängt die Click Message ruft daraufhin den Eventhandler auf. In diesem wird das Memo freigegeben. Nachdem der Eventhandler seine Arbeit getan hat, möchte dieser zum Memo zurückkehren. Leider ist nun kein Memo mehr da. Weil es freigegeben wurde. Die Lösung findest Du dort ![]() |
Re: Exception beim Löschen von Objekten
Hallo Jens,
funzt leider nicht - das Problem ist mir jetzt aber klar. Die Ursache dafür liegt wohl in der Tatsache, dass ich gleichzeitgi noch ne OPenGL Scene mit nem MessageLoop laufen habe - das PostMessage läuft jetzt zu diesem Thread und hat dort logischerweise keine Auswirkung. Ich müsste also die Message an das Form11 leiten. Ein Vorschlag ? Danke und Gruss Markus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz