Einzelnen Beitrag anzeigen

Shadow
(Gast)

n/a Beiträge
 
#1

Componenten freigeben... Laufzeitfehler ??!

  Alt 26. Nov 2003, 03:05
Hi @all...

habe da nen kleines Problem und finde den Fehler nicht ....
zunächst zum codeschnipzel...

Delphi-Quellcode:
prozedure tralalala();
var btn : TSpeedButton;
begin
...
for i:=0 to 10 do
begin
btn := TSpeedButton.Create(self);
btn.Parent := vle_Zauber; {vl_zauber == TValueList}
vle_Zauber.InsertComponent(btn);
end;
...
end;

Nun will ich alle Komponenten die als Parent vle_Zauber besitzen löschen.....

procedure Tfrm_CharZauber.UnloadCreatedButtons;
var i : Integer;
begin
   begin
      for i:=0 to ComponentCount -1 do
       if (Components[i].ClassType = TSpeedButton) and ((Components[i] as TSpeedButton).Parent = vle_Zauber) then
          begin
            vle_zauber.RemoveComponent(Components[i]);
            (Components[i] as TSpeedButton).Free;
          end;

      end;
end;
Klappt auch ohne Fehler .... nur wenn ich mit dem Programm normal weiter arbeite kommt nach einiger zeit die
Exeption : EAccessViolation at address ...

Sicher ist das ich auf die gelöschten Komponenten zu keiner zeit zugreife. Daran liegt es nicht.

Hat jemand ne Idee ??

MfG Andy
  Mit Zitat antworten Zitat