AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi problem beim sortieren einer verketteten liste
Thema durchsuchen
Ansicht
Themen-Optionen

problem beim sortieren einer verketteten liste

Ein Thema von arest · begonnen am 4. Aug 2009 · letzter Beitrag vom 6. Aug 2009
 
arest

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

problem beim sortieren einer verketteten liste

  Alt 4. Aug 2009, 22:39
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?
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz