Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Fehler im Sortier-Algorythmus

  Alt 7. Okt 2004, 14:58
Zitat von alcaeus:
Zitat von shmia:
2.) du musst den Sortieralgorythmus von den Daten trennen.
IMHO ist das in diesem Fall nicht so leicht möglich, da er ja nicht nur 2 Zahlen vergleichen muss, sondern zuerst mal die Einträge auseinanderpflücken und anschließend vergleichen muss.
Das wird in Basisklasse für Sortieralogorythmen erklärt.
Und als Erweiterung zu dieser Basisklasse:

Delphi-Quellcode:
   TSortStringGrid = class(TSortBaseClass)
   protected
      function Compare(Index1, Index2: Integer): Integer;override;
      procedure Exchange(Index1, Index2: Integer);override;
   public
      AGrid : TStringGrid;
   end;

function TSortStringGrid.Compare(Index1, Index2: Integer): Integer;
begin
   // Hier ist die Stelle, an der der Vergleich durchgeführt wird
   // in diesem Beispiel wird nur die 1. Spalte zum Vergleich herangezogen
   Result := CompareText(AGrid.Cells[1, Index1], AGrid.Cells[1, Index2]);
end;

procedure TSortStringGrid.Exchange(Index1, Index2: Integer);
var
   tmp : TStringList;
begin
   // Vertauschen 2. Rows im StringGrid
   tmp := TStringList.Create;

   tmp.Assign(AGrid.Rows[Index1]);
   AGrid.Rows[Index1] := AGrid.Rows[Index2];
   AGrid.Rows[Index2].Assign(tmp);
   tmp.Free;
end;
Und nun die Anwendung:
Delphi-Quellcode:
var
   sg : TSortStringGrid;
begin
   sg := TSortStringGrid.Create;
   sg.AGrid := StringGrid1;
// sg.QuickSort(1, StringGrid1.RowCount-1);
   sg.BubbleSort(1, StringGrid1.RowCount-1);
   sg.Free;
end;
Andreas
  Mit Zitat antworten Zitat