Einzelnen Beitrag anzeigen

Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#27

Re: Listbox nach Datum sortieren

  Alt 28. Jun 2009, 13:11
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;
  Mit Zitat antworten Zitat