Einzelnen Beitrag anzeigen

Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#1

TObjectlist: nicht genügend Speicher verfügbar

  Alt 29. Dez 2006, 00:45
Hi,
Ich habe in meinem Projekt eine TObjectlist in der ich mehrere Objekte speichere um sie dann zu verwenden.

DIe OBjekte füge ich so hinzu:

Delphi-Quellcode:
Animationen:TObjeclist;

...
...

tempani : Tanimation;
begin
  ...
  ...
  for x:=0 to 8 do
   for y:=0 to 8 do
     if spiel.sdk.feld[x,y]<>0 then begin
       tempani:=Tanimation.create(bmp2.Canvas.Pixels[spiel.feldbreite*x+(spiel.feldbreite div 2),
                                                   spiel.feldbreite*y+(spiel.feldbreite div 2)],
                                                   bmp.Canvas.Pixels[spiel.feldbreite*x+(spiel.feldbreite div 2),
                                                   spiel.feldbreite*y+(spiel.feldbreite div 2)],
                                                   3,
                                                   point(x,y));
     Animationen.add(Tempani);

dann hab ich einen timer in dem ich die Objekte bearbeite:


Delphi-Quellcode:
procedure TForm1.AnimationstimerTimer(Sender: TObject);
var i ,x,y: integer;
begin
i:=0;
while (i < Animationen.Count) do
  begin

    inc((Animationen[i] as TAnimation).index);

    if (Animationen[i] as TAnimation).index > animation.anzfarbe then begin Animationen.Delete(i); dec(i); end
    else begin
      //tue dies und das
    end;

    inc(i);
  end;

  if animationen.Count=0 then begin
     //ebenso dies und das
      Animationstimer.Enabled:=false;
  end;


end;
SO mein Problem ist, dass wenn ich öfters hintereinander die obere Prozedur ausführe ich einen haufen Fehlermeldungen bekomme. Und zwar steht auf allen folgendes: "Für diesen Befehl ist nicht genügend Speicher verfügbar". Ich hab daher die vermutung das irgendwo speicherüberreste von den gelöschten Objekten der Liste übrig bleiben. Ich hab aber eigentlich gedacht, dass sich die Tobjectliste um alles kümmert und man selber nichts mehr weiter tun muss ausser delete auszuführen.

Hat jemand eine Ahnung was hier falsch läuft?


danke schonmal im vorraus
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat