Uff, soviel Hilfe und Unterstützung...Danke Euch
Ich habe grad Zeit und versuche mal die Listbox mit einer im Forum gefundenen QuickSort Routine zu
sortieren. Die gefundene Routine sortiert aber ein Integer - Array. Mein Versuch eine Stringlist zu sortieren endet erstmal hier:
"...EStringlisterror-
Exception...Listenindex überschreitet das Maximum(400)". Liegts am '-1' Item der Listbox?
Also, 400 mit Random erstellte Datums sollen mit Quicksort sortiert werden:
Hier mal meine Quicksort für TStrings:
Delphi-Quellcode:
procedure TForm1.QuickSort(sl:TStrings;LoIndex,HiIndex:Integer);
procedure QSort(LoIndex, HiIndex: Integer);
var
Lo, Hi: Integer;
Pivot: string;//Integer;
Swap: string;//Integer;
begin
// Wähle stets das mittlere Element als Pivotelement.
Pivot := sl[(LoIndex + HiIndex) div 2];
// Stelle die Ordnung bzgl. des Pivotelements her.
Lo := LoIndex;
Hi := HiIndex;
repeat
while sl[Lo] < Pivot do sl[Lo+1];
while sl[Hi] > Pivot do sl[Hi-1];
if sl[Lo] <= sl[Hi] then
begin
Swap := sl[Lo];
sl[Lo] := sl[Hi];
sl[Hi] := Swap;
sl[Lo + 1];
sl[Hi - 1];
end;
until sl[Lo] > sl[Hi];
// Gegebenenfalls linke Teilliste sortieren.
if LoIndex < Hi then QSort(LoIndex, Hi);
// Gegebenenfalls rechte Teilliste sortieren.
if Lo < HiIndex then QSort(Lo, HiIndex);
end;
begin
QSort(0, sl.count);
end;
AUFRUF:
procedure TForm1.Button3Click(Sender: TObject);
begin
QuickSort(Listbox3.items,0,Listbox3.count-1);
end;