abend allerseits, hab nen problem mit meiner sortieren funktion für eine verkettete liste... hab eine liste, die über eingabefelder mit diverse daten gefüllt wird, welche ich nun über radiobuttons sortieren möchte. hab das sehr ähnlich bei einem anderen projekt schon mal gemacht und da hat es wunderbar funktioniert, jetzt streikt es allerdings :/ hier erst mal was vom code:
Delphi-Quellcode:
//********************************SORTIEREN FUNKTION*********************************
//nachname
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
nachname:=true;
vorname:=false;
kategorie:=false;
geburtstag:=false;
sortieren;
end;
//vorname
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
nachname:=false;
vorname:=true;
kategorie:=false;
geburtstag:=false;
sortieren;
end;
//kategorie
procedure TForm1.RadioButton5Click(Sender: TObject);
begin
nachname:=false;
vorname:=false;
kategorie:=true;
geburtstag:=false;
sortieren;
end;
//geburtstag
procedure TForm1.RadioButton6Click(Sender: TObject);
begin
nachname:=false;
vorname:=false;
kategorie:=false;
geburtstag:=true;
sortieren;
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
sortieren;
end;
procedure TForm1.RadioButton4Click(Sender: TObject);
begin
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;
if (nachname=true)
then begin
lauf:=anfang;
repeat lauf:=lauf.nachfolger;
neu2:=TKnoten.Init;
neu2.Daten:=lauf.Daten;
lauf2:=anfang2;
if (Form1.RadioButton3.Checked=true)
then begin
repeat lauf2:=lauf2.nachfolger;
until (lauf2.Daten.nachname > neu2.Daten.nachname) or (lauf2=ende2);
end;
if (Form1.RadioButton4.Checked=true)
then begin
repeat lauf2:=lauf2.nachfolger;
until (lauf2.Daten.nachname < neu2.Daten.nachname) or (lauf2=ende2);
end;
lauf2.vorgaenger.nachfolger:=neu2;
neu2.vorgaenger:=lauf2.vorgaenger;
lauf2.vorgaenger:=neu2;
neu2.nachfolger:=lauf2;
until (lauf=ende.vorgaenger);
anfang:=anfang2;
ende:=ende2;
knoteneinlesen;
end;
if (vorname=true)
then begin
lauf:=anfang;
repeat lauf:=lauf.nachfolger;
neu2:=TKnoten.Init;
neu2.Daten:=lauf.Daten;
lauf2:=anfang2;
if (Form1.RadioButton3.Checked=true)
then begin
repeat lauf2:=lauf2.nachfolger;
until (lauf2.Daten.vorname > neu2.Daten.vorname) or (lauf2=ende2);
end;
if (Form1.RadioButton4.Checked=true)
then begin
repeat lauf2:=lauf2.nachfolger;
until (lauf2.Daten.vorname < neu2.Daten.vorname) or (lauf2=ende2);
end;
lauf2.vorgaenger.nachfolger:=neu2;
neu2.vorgaenger:=lauf2.vorgaenger;
lauf2.vorgaenger:=neu2;
neu2.nachfolger:=lauf2;
until (lauf=ende.vorgaenger);
anfang:=anfang2;
ende:=ende2;
knoteneinlesen;
end;
if (kategorie=true)
then begin
lauf:=anfang;
repeat lauf:=lauf.nachfolger;
neu2:=TKnoten.Init;
neu2.Daten:=lauf.Daten;
lauf2:=anfang2;
if (Form1.RadioButton3.Checked=true)
then begin
repeat lauf2:=lauf2.nachfolger;
until (lauf2.Daten.kategorie > neu2.Daten.kategorie) or (lauf2=ende2);
end;
if (Form1.RadioButton4.Checked=true)
then begin
repeat lauf2:=lauf2.nachfolger;
until (lauf2.Daten.kategorie < neu2.Daten.kategorie) or (lauf2=ende2);
end;
lauf2.vorgaenger.nachfolger:=neu2;
neu2.vorgaenger:=lauf2.vorgaenger;
lauf2.vorgaenger:=neu2;
neu2.nachfolger:=lauf2;
until (lauf=ende.vorgaenger);
anfang:=anfang2;
ende:=ende2;
knoteneinlesen;
end;
if (geburtstag=true)
then begin
lauf:=anfang;
repeat lauf:=lauf.nachfolger;
neu2:=TKnoten.Init;
neu2.Daten:=lauf.Daten;
lauf2:=anfang2;
if (Form1.RadioButton3.Checked=true)
then begin
repeat lauf2:=lauf2.nachfolger;
until (lauf2.Daten.geburtstag > neu2.Daten.geburtstag) or (lauf2=ende2);
end;
if (Form1.RadioButton4.Checked=true)
then begin
repeat lauf2:=lauf2.nachfolger;
until (lauf2.Daten.geburtstag < neu2.Daten.geburtstag) or (lauf2=ende2);
end;
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;
end;
das interessante ist, dass die sortierung auf nachname und vorname reagiert und soweit funktioniert, allerdings das auf/absteigend was über radiobutton3/4 abgefragt würde komplett ignoriert! knoteneinlesen ist eine procedure um die neu sortierte liste in einen listview zu schreiben (funktioniert fehlerfrei)
any ideas?