Einzelnen Beitrag anzeigen

boozzz

Registriert seit: 14. Feb 2005
13 Beiträge
 
#1

Sortierverfahren in einer txt-Datei

  Alt 6. Jan 2006, 14:18
Hi,
beim sortieren von Werten, die aus einer Textdatei gelesen werden, kommt bei mir immer folgende Fehlermeldung (Fehlermeldung erscheint immer beim Klick auf den Button "bestenlistebutton"):
Zitat:
Im Projekt Project1.exe ist eine Exception der Klasse EStackOverflow aufgetreten. Meldung: ‚Stack-Überlauf’. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Der folgende Quellcode-Ausschnitt liest aus jeder zweiten Zeile der Textdatei "memory" einen Integer-Wert und sortiert alle Werte der Größe nach.

Delphi-Quellcode:
procedure TForm1.bestenlistebuttonClick(Sender: TObject);
var ende,zwischenspeicher,lauefer,x,y:integer;
    platz: array[1..10000] of integer;
begin
  bestenliste.Show;

  highscore:=TStringList.Create;
  if FileExists ('memory.txt') then
    highscore.LoadFromFile('memory.txt');
     
  ende:=highscore.Count;

  zwischenspeicher:=0;
  platz[1]:=StrToInt(highscore[0]);

  for x:=1 to 10 do
  begin
    lauefer:=0;
    repeat
      zwischenspeicher:=StrToInt(highscore[lauefer]);

      if zwischenspeicher>platz[x] then
      begin
        platz[x+9]:=platz[x+8];
        platz[x+8]:=platz[x+7];
        platz[x+7]:=platz[x+6];
        platz[x+6]:=platz[x+5];
        platz[x+5]:=platz[x+4];
        platz[x+4]:=platz[x+3];
        platz[x+3]:=platz[x+2];
        platz[x+2]:=platz[x+1];
        platz[x+1]:=platz[x];
        platz[x]:=zwischenspeicher;
      end;

      lauefer:=lauefer+2; //Es soll nur jede zweite Zeile der Textdatei verglichen werden
    until lauefer=ende;
  end;

  bestenliste.Label1.Caption:=IntToStr(platz[1]);
  bestenliste.Label2.Caption:=IntToStr(platz[2]);
  bestenliste.Label3.Caption:=IntToStr(platz[3]);
  bestenliste.Label4.Caption:=IntToStr(platz[4]);
  bestenliste.Label5.Caption:=IntToStr(platz[5]);
  bestenliste.Label6.Caption:=IntToStr(platz[6]);
  bestenliste.Label7.Caption:=IntToStr(platz[7]);
  bestenliste.Label8.Caption:=IntToStr(platz[8]);
  bestenliste.Label9.Caption:=IntToStr(platz[9]);
  bestenliste.Label10.Caption:=IntToStr(platz[10]);

  highscore.Free;
end;
Kann mir jemand sagen, wo der Fehler ist?
  Mit Zitat antworten Zitat