Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: Sortieralgorythmus funktioniert nicht ganz

  Alt 18. Mai 2005, 19:55
Zitat von rainerkunze124:
Delphi-Quellcode:
function Sort(Row1, Row2: Integer): Integer;
var
  C: Integer;
begin
  C := 0;
  Result := AnsiCompareStr(Grid.Cols[ColOrder[C]][Row1], Grid.Cols[ColOrder[C]][Row2]);
  if Result = 0 then
  begin
    Inc(C);
    while (C <= High(ColOrder)) and (Result = 0) do
    begin
      Result := AnsiCompareStr(Grid.Cols[ColOrder[C]][Row1],
        Grid.Cols[ColOrder[C]][Row2]);
      Inc(C);
    end;
  end;
end;
In der oben zitierten Funktion findet das eigentliche Sortieren statt.

Wenn Du statt AnsiCompareStr nun eine eigene Funktion benutzt z.B. MyCompareStr, kannst du jede gewünschte Sortierung programmieren.

z.B.
Delphi-Quellcode:
function MyCompareStr(s1, s2: string):Integer;
begin
  // Bedingung Rückgabewert
  // S1 > S2 > 0
  // S1 < S2 < 0
  // S1 = S2 = 0

  // Result := AnsiCompareStr(s1, s2);

  if s1 > s2 then Result := 1
             else if s1 < s2 then Result := -1
                             else Result := 0;
end;

function Sort(Row1, Row2: Integer): Integer;
var
  C: Integer;
begin
  C := 0;
  Result := MyCompareStr(Grid.Cols[ColOrder[C]][Row1], Grid.Cols[ColOrder[C]][Row2]);
  if Result = 0 then
  begin
    Inc(C);
    while (C <= High(ColOrder)) and (Result = 0) do
    begin
      Result := MyCompareStr(Grid.Cols[ColOrder[C]][Row1],
        Grid.Cols[ColOrder[C]][Row2]);
      Inc(C);
    end;
  end;
end;
Falls Deine Frage beantwortet ist, nicht vergessen mit dem - Button oben auf der Seite die Frage als beantwortet zu markieren.
Danke
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat