habe es noch mal ein wenig umgeschrieben, jedoch in dem sinne nicht wirklich was geändert, und jetzt funktioniert es einwandfrei.... danke für die bemügungen an alle!
code im vorherigen eintrag gleich geblieben (record/knoten/formcreate) aber im sortierenbereich noch mal geändert wie folgt:
Delphi-Quellcode:
//********************************SORTIEREN FUNKTION*********************************
//ausgewaehlt
procedure ausgewaehlt;
begin
nachname:=Form1.RadioButton1.Checked;
vorname:=Form1.RadioButton2.Checked;
kategorie:=Form1.RadioButton5.Checked;
geburtstag:=Form1.RadioButton6.Checked;
richtung:=Form1.RadioButton3.Checked;
end;
//nachname
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
ausgewaehlt;
sortieren;
end;
//vorname
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
ausgewaehlt;
sortieren;
end;
//kategorie
procedure TForm1.RadioButton5Click(Sender: TObject);
begin
ausgewaehlt;
sortieren;
end;
//geburtstag
procedure TForm1.RadioButton6Click(Sender: TObject);
begin
ausgewaehlt;
sortieren;
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
ausgewaehlt;
sortieren;
end;
procedure TForm1.RadioButton4Click(Sender: TObject);
begin
ausgewaehlt;
sortieren;
end;
//sortieren
procedure sortieren;
begin
lauf:=TKnoten.Init;
if (anfang.nachfolger<>ende)
then begin
anfang2:=TKnoten.Init;
ende2:=TKnoten.Init;
anfang2.nachfolger:=ende2;
ende2.vorgaenger:=anfang2;
lauf:=anfang;
repeat
lauf:=lauf.nachfolger;
neu2:=TKnoten.Init;
neu2.Daten:=lauf.Daten;
lauf2:=anfang2;
repeat
lauf2:=lauf2.nachfolger;
until (lauf2=ende2)
or ( richtung and nachname and (lauf2.Daten.nachname > neu2.Daten.nachname))
or (not richtung and nachname and (lauf2.Daten.nachname < neu2.Daten.nachname))
or ( richtung and vorname and (lauf2.Daten.vorname > neu2.Daten.vorname))
or (not richtung and vorname and (lauf2.Daten.vorname < neu2.Daten.vorname))
or ( richtung and kategorie and (lauf2.Daten.kategorie > neu2.Daten.kategorie))
or (not richtung and kategorie and (lauf2.Daten.kategorie < neu2.Daten.kategorie))
or ( richtung and geburtstag and (lauf2.Daten.geburtstag > neu2.Daten.geburtstag))
or (not richtung and geburtstag and (lauf2.Daten.geburtstag < neu2.Daten.geburtstag));
lauf2.vorgaenger.nachfolger:=neu2;
neu2.vorgaenger:=lauf2.vorgaenger;
lauf2.vorgaenger:=neu2;
neu2.nachfolger:=lauf2;
until (lauf=ende.vorgaenger);
anfang:=anfang2;
ende:=ende2;
knoteneinlesen;
end;
end;
THX!