![]() |
Re: Fehler im Sortier-Algorythmus
@ shmia
Tut mir leid, das was du schreibst macht sicherlich alles Sinn, aber ich check gar nix :drunken: @ alcaeus: Hier ein paar Beispiele: 26-01-02 15-07-01 20-04-02 11-08-01 03-11-01 28-07-01 16-03-02 Das sind die 7 Einträge, die ich in meiner Listbox hab und die es zu sortieren gilt... Hoffe auf Hilfe... read you, Martin |
Re: Fehler im Sortier-Algorythmus
Hi Martin,
ich habe mir Daniels Prozedur aus dem Sortieralgorithmen-Tut ausgeliehen, und die Funktion ein bisschen umgeschrieben. Jetzt werden die Daten absteigend sortiert:
Delphi-Quellcode:
Hoffe es passt.
procedure TForm1.NewBubbleSort(tStr: TStrings);
var i, j, n : Integer; tag1, monat1, jahr1, tag2, monat2, jahr2: integer; Data: array of String; s, temp: String; begin SetLength(Data, tStr.Count); for i := 0 to tStr.Count-1 do Data[i] := tStr[i]; n := tStr.Count-1; for i:= n downto 1 do begin for j:= 1 to i do begin s:=Data[j]; delete(s,1,pos('-',s)); delete(s,1,pos('-',s)); jahr1:=strtoint(s); {Der Monat wird aus 1 herausgeschnitten} s:=Data[j]; delete(s,1,pos('-',s)); delete(s,pos('-',s),length(s)); monat1:=strtoint(s); {Der Tag wird aus 1 herausgeschnitten} s:=Data[j]; delete(s,pos('-',s),length(s)); tag1:=strtoint(s); {Das Jahr wird aus 2 herausgeschnitten} s:=Data[j-1]; delete(s,1,pos('-',s)); delete(s,1,pos('-',s)); jahr2:=strtoint(s); {Der Monat wird aus 2 herausgeschnitten} s:=Data[j-1]; delete(s,1,pos('-',s)); delete(s,pos('-',s),length(s)); monat2:=strtoint(s); {Der Tag wird aus 2 herausgeschnitten} s:=Data[j-1]; delete(s,pos('-',s),length(s)); tag2:=strtoint(s); {Jahr vergleichen} if jahr1 > jahr2 then begin temp := Data[j-1]; Data[j-1] := Data[j]; Data[j] := temp; end; if jahr1 = jahr2 then begin if monat1 > monat2 then begin temp := Data[j-1]; Data[j-1] := Data[j]; Data[j] := temp; end; if monat1 = monat2 then begin if tag1 > tag2 then begin temp := Data[j-1]; Data[j-1] := Data[j]; Data[j] := temp; end; end; end; end; end; for i := 0 to tStr.Count-1 do ListBox2.Items.Add(Data[i]); end; Greetz alcaeus |
Re: Fehler im Sortier-Algorythmus
@ alcaeus
Super der Code funzt perfekt :thumb: Allerdings hab ich noch eine Frage: Bei mir zeigt er das neueste Datum als erstes und das älteste als letztes an. Gibt es eine Möglichkeit das schnell umzudrehen, ohne vorher alles in eine gesonderte Liste zu exportieren und wieder falsch herum zu imortieren? Vielen Dank auf jeden Fall soweit. :cheers: :bouncing4: :bounce2: :bounce1: :bouncing4: :bounce2: :bounce1: |
Re: Fehler im Sortier-Algorythmus
Hi Martin,
Zitat:
Delphi-Quellcode:
in
for i := 0 to tStr.Count-1 do
ListBox2.Items.Add(Data[i]);
Delphi-Quellcode:
um.
for i := tStr.Count-1 downto 0 do
ListBox2.Items.Add(Data[i]); Greetz alcaeus |
Re: Fehler im Sortier-Algorythmus
Ich glaube du musst nur die '>' in '<' umdrehen.
|
Re: Fehler im Sortier-Algorythmus
Mit '<' statt '>' sortiert er sie mir richtig.
Vielen Dank für Eure Hilfe!!! :thumb: :dp: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:26 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