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?