Einzelnen Beitrag anzeigen

Fisch

Registriert seit: 10. Jan 2004
2 Beiträge
 
Delphi 7 Personal
 
#1

Exception beim Löschen von Objekten

  Alt 10. Jan 2004, 10:51
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:
Klasse EaccessViolation, ZUgriffsverletzung bei Adresse xy im Modul usw...
Manchmal aber auch die Meldung:

Zitat:
abstrakter Fehler der Klasse EAbstract Error
Das ist der Code, zur Definition der Routine

Code:
type
  TForm11 = class(TForm)
    .....
    procedure BPKlick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
Hier die Routine mit der ich zur Laufzeit die Memos erzeuge:
Code:
   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;
Und hier die Routine, mit der ich die MEMOs wieder lösche:

Code:
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;
Kann mir jemand helfen ?

Gruss


Markus
  Mit Zitat antworten Zitat