Ich hab das ganze nochmal neu geschrieben.
Nun ist aber mein Problem folgendes. Ich hab drei Einträge in der zu sortierenden Datei. Der Mittlere Wert wird an 1. und 3. Position ausgegeben, der kleinste an 2. und der größte gar nicht.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55:
| procedure TForm1.Nummersortieren; var merke,i,j,k,ende: integer; begin assignfile(nummer, 'nummer.dat'); if fileexists('nummer.dat') then reset(nummer) else rewrite(nummer);
assignfile(datei, 'daten.dat'); if fileexists('daten.dat') then reset(datei) else rewrite(datei);
i:= 0; ende:= filesize(datei);
seek(datei,0); ende:= filesize(datei) - 1; k:= 0; j:= 0; i:= 0; sortieren.posi:= 0;
for k:= 0 to ende do begin read(datei,game); sort[k]:= game.bestellnr; posi[k]:= filepos(datei) - 1; end; seek(datei,0);
for j:= 0 to ende do begin for i:= 0 to ende do begin if sort[i] > sort[i+1] then begin merke:= sort[i]; sort[i]:= sort[i+1]; sort[i+1]:= merke; merke:= posi[i]; posi[i]:= posi[i+1]; posi[i+1]:= merke; end; end; end;
for k:= 0 to ende do begin sortieren.posi:= posi[k]; write(nummer,sortieren); end; closefile(datei); closefile(nummer); end; |