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.. =(