Einzelnen Beitrag anzeigen

bianfable

Registriert seit: 20. Nov 2007
23 Beiträge
 
#5

AW: Lazarus-Programm beendet sich einfach

  Alt 16. Jul 2010, 17:36
Also, rekursiv aufgerufen wird da nichts. Ich häng mal den Code-Teil an:
Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
  if ListBox1.ItemIndex >= 0 then
    LoadLevel(PP + 'Level/' + ListBox1.Items.Strings[ListBox1.ItemIndex] + '.txt');
end;

procedure TForm1.LoadLevel(const FileName: String);
var F: TStringList; i: Integer; Bildpfad: String;
begin
  GameRunning := false;
  F := TStringList.Create;
  try
    F.LoadFromFile(FileName);
    if (F.Count < 4) or ((F.Count - 1) div 3 <> (F.Count - 1) / 3) then
    begin
      ShowMessage('Fehlerhafte Datei!');
      exit;
    end;
    //Bild laden
    Bildpfad := PP + 'Grafik/' + F.Strings[0];
    if FileExists(Bildpfad) then
      Bild.LoadFromFile(Bildpfad)
    else
    begin
      ShowMessage('Die angegebene Bilddatei "' + Bildpfad + '" konnte nicht gefunden werden!');
      exit;
    end;
    F.Delete(0);
    //Daten laden
    SetLength(S, 0);
    for i := 1 to F.Count div 3 do
    begin
      SetLength(S, Length(S) + 1);
      S[Length(S) - 1].Name := F.Strings[0];
      try
        S[Length(S) - 1].x := StrToInt(F.Strings[1]);
        S[Length(S) - 1].y := StrToInt(F.Strings[2]);
      except
        ShowMessage('Ungültige Koordinaten!');
        exit;
      end;
      F.Delete(0);
      F.Delete(0);
      F.Delete(0);
    end;
  finally
    F.Free;
  end;
  GameRunning := true;
  Index := -1;
  Label2.Visible := true;
  NextTown;
  ShowMessage(''); //TEST -> wird nicht mehr angezeigt
end;

procedure TForm1.NextTown;
begin
  inc(Index);
  if Index > Length(S) - 1 then
    ShowMessage('Game Over')
  else
  begin
    Label2.Caption := S[Index].Name;
    Image1.Canvas.Draw(0, 0, Bild);
  end;
end;
  Mit Zitat antworten Zitat