Einzelnen Beitrag anzeigen

arest

Registriert seit: 27. Sep 2005
Ort: Frankfurt
62 Beiträge
 
Delphi 6 Personal
 
#9

Re: problem beim sortieren einer verketteten liste

  Alt 6. Aug 2009, 14:42
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!
  Mit Zitat antworten Zitat