Registriert seit: 2. Mär 2004
5.508 Beiträge
Delphi 5 Professional
|
Re: Fehler im Sortier-Algorythmus
7. Okt 2004, 15: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
|
|
Zitat
|