![]() |
Re: Listbox nach Datum sortieren
Zitat:
Dein Code funzt einwandfrei, ich bin begeistert. Du bist wohl auch beruflich Programmierer. :-) |
Re: Listbox nach Datum sortieren
Zitat:
Ich greife also hier wieder auf 'Listbox.sorted' zurück:
Delphi-Quellcode:
Obwohl die Items durch 2 Schleifen laufen, ist damit ruckizucki sortiert. Es wird das Datum als Double-Zahlenwert an den Anfang jedes Items geschrieben, danach sortiert und in der 2. Schleife der Zahlenwert wieder entfernt.
procedure TForm1.sortListe3(L:TListbox);
var i: integer; Zeilendatum:String; Zeilenrest:string; temp:string; doubleTmp:double; begin for i := 0 to L.items.count-1 do begin doubleTmp:= strtodate(copy(L.Items[i],1,10)); temp:=floattostr(doubleTmp); if length(temp)=1 then temp:='000000'+temp; if length(temp)=2 then temp:='00000'+temp; if length(temp)=3 then temp:='0000'+temp; if length(temp)=4 then temp:='000'+temp; if length(temp)=5 then temp:='00'+temp; if length(temp)=6 then temp:='0'+temp; ZeilenDatum:= temp; Zeilenrest:= copy(L.Items[i],11,length(L.Items[i])); L.Items[i]:=Zeilendatum +' '+ Zeilenrest; end; L.sorted:=true; for i := 0 to L.items.count-1 do begin doubleTmp:= strtofloat(Trim(copy(L.Items[i],1,10))); ZeilenDatum:= datetostr(doubleTmp);//+' '+floattostr(doubleTmp); Zeilenrest:= copy(L.Items[i],11,length(L.Items[i])); L.Items[i]:= Zeilendatum +' '+ Zeilenrest; end; end; Obwohl das 'Werk' funzt, gefällt es mir nicht. Gibts noch einen anderen Ansatz? Ist die Delphi interne Function 'Sorted' eigentlich in Assembler geschrieben und wenn ja, wer hat den Quelltext? Die Funktion ist sehr schnell und daher interessant. Was meint ihr? |
Re: Listbox nach Datum sortieren
Wie veiele Einträge hast du denn in der Liste, dass Bubblesort so langsam ist? Du kannst natürlcih auch jeden anderen Sortieralgorithmus nehmen. Bubblesort habe ich nur genommen, weil er relativ einfach und schnell zu implementieren ist.
|
Re: Listbox nach Datum sortieren
Zitat:
|
Re: Listbox nach Datum sortieren
Folgendes: Setzmal den BubbleSort Aufruf in eine TListbox.BeginUpdate und TListbox.EndUpdate. Und dannkannst du noch einen besseren Sortieralgorithmus benutzen, wie zum Beispiel Quicksort oder so.
|
Re: Listbox nach Datum sortieren
Bubble Sort ist für 400 Einträge völlig ausreichend. Das Problem, wieso es mit einer ListBox so langsam erscheint ist, daß die Operationen um die Position einzelner Strings innerhalb der Listbox zu verändern recht langsam ist, da die UI bei jeder Operation upgedated wird. Entsprechend benutz BeginUpdate und EndUpdate.
Ansonsten benutzt Delphi in so ziemlich allen VCL Komponenten, die sortieren können, QuickSort. |
Re: Listbox nach Datum sortieren
Listbox, es geht um eine Listbox. Ändert natürlich nichts an deiner Aussage bezüglich des Neuzeichnes beim Verschieben der Einträge.
|
Re: Listbox nach Datum sortieren
Zitat:
werde das morgen mal probieren. Würde mich interessieren, was 'Listbox.sorted' für ein Algorithmus ist. Mal sehen. .-) |
Re: Listbox nach Datum sortieren
Zitat:
|
Re: Listbox nach Datum sortieren
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:04 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 by Thomas Breitkreuz