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