Einzelnen Beitrag anzeigen

Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#1

Fehler bei FreeAndNil(TObjekt)

  Alt 29. Mai 2007, 06:36
Hi,

ich programmiere im Moment mein 1. 2D Game mit DelphiX. Die Frage bezieht sich aber eher aufs Allgemeine, deshalb "Sonstige Fragen" und nicht "Multimedia".

Delphi-Quellcode:
type
  THolz = class(TImageSprite)
    Public
      Constructor Create(aparent:Tsprite); override;
    end;

var
  Holz: Array[1..1] of THolz;

...

//Level wir erstellt und auch 1x Holz:

  Holz[1] := THolz.Create(Sprite.Engine);
  Holz[1].X := J * 31 + Round((31 - Holz[1].Width) / 2);
  Holz[1].Y := I * 31 + Round((31 - Holz[1].Height) / 2);
  Holz[1].Z := 1;

Jetzt kommt die ganz gewöhnliche Kollisionsabfrage:

procedure TSpieler.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
  //Kollision abfragen
  If (Sprite is TWand) then Kollision := True;
  If (Sprite is TPlatzhalter) then Kollision := True;
  If (Sprite is TZiel) then Ende := True;
  If (Sprite is THolz) and then
    begin
      Kollision := True;
      If Assigned(Holz[1]) then FreeAndNil(Holz[1]); //Hier kommt die Fehlermeldung (s. Screenshot)
      frmMain.Player.FileName := 'Forest.wav';
      frmMain.Player.Open;
      frmMain.Player.Play;
    end;
end;
Woran kann das liegen? Falls mehr Code benötigt wird, einfach nur sagen.

Chrissi91
Miniaturansicht angehängter Grafiken
unbenannt_901.jpg  
  Mit Zitat antworten Zitat