Einzelnen Beitrag anzeigen

x2feel

Registriert seit: 7. Mär 2007
4 Beiträge
 
#1

Sortieren der Eingabe, dann speichern

  Alt 25. Sep 2007, 17:12
Datenbank: TDatensatz • Zugriff über: -
Ein wunderschönen Dienstag Nachmittag =),

ich habe folgendes Problem:

Ich versuche eine Datenbank zu erstellen, was soweit geklappt hat.
Nun stellt sich die herausforderung gleich nach der Eingabe alle Daten im Datensatz zu vergleichen, an die passende Stelle zu buxieren und dann erst im Datensatz abzuspeichern, damit ein nachträgliches sortieren überflüssig wird.

Ich hab es auch schon fast geschafft.
Wenn ich erst 3 eingebe und speichere danach 2 und dann 1, macht er alles wie gewollt.
Nur leider, wenn ich dann eine 4 eingebe wird aus der 2 und der 3 eine 4
Also
es sieht anstelle von 1 2 3 4 so aus: 1 4 4 4

Delphi-Quellcode:
procedure TVerwalten.SpeichernClick(Sender: TObject);
var i,c:Integer;

begin
    i:= 0;
    n:= Filesize(datei);
    p:= Filepos(datei);
    closefile(datei);
    reset(datei);
    Datensatz.name := name.Text;
    Datensatz.alter := alter.Text;
    Datensatz.haarfarbe:= haarfarbe.Text;
    wort:= Datensatz.name;
    if n = 0 then
    write(datei, Datensatz);
    For c:= n - 1 downto i do
     begin
      seek(datei,c);
      read(datei, Datensatz);
      wort2 := Datensatz.name;
       if wort < wort2
        then
          begin
            seek(datei, c + 1);
            write(datei, Datensatz);
            seek(datei, c);
            Datensatz.name := name.Text;
            Datensatz.alter := alter.Text;
            Datensatz.haarfarbe:= haarfarbe.Text;
            write(datei, Datensatz);
          end
      else
          begin
           seek(datei, c + 1);
           Datensatz.name := name.Text;
           Datensatz.alter := alter.Text;
           Datensatz.haarfarbe:= haarfarbe.Text;
           write(datei, Datensatz);
          end;
       AuslesenClick(Sender);

 end;
 end;
könnt ihr irgendein denkfehler entdecken?... ich hab schon alles ausprobiert und weiß überhaupt nicht weiter.. =(
  Mit Zitat antworten Zitat