Einzelnen Beitrag anzeigen

aurikel_Max

Registriert seit: 9. Okt 2009
86 Beiträge
 
#1

Item aus einem Record als Parameter einer Prozedur?

  Alt 20. Aug 2010, 18:41
Guten Abend DP,

leider muss ich nochmal stören, da ich erneut auf ein Problem gestoßen bin.
Ich habe eine Klasse, die als privates Attribut ein dynamisches Array of TPerson (Name: "index") hat. Das Record (TPerson) hat Items mit den Datentypen Integer, Real & String. Das Record möchte ich nun zB. nach dem Namen sortieren. Dafür habe ich gerade eine Prozedur geschrieben, die das erledigt. Nun verfügt mein Record aber auch zB. über das Item Stadt - wie kann ich meine Prozedur nun so umschreiben, dass sie je nach Parameter nach etwas anderem sortiert.
Die Prozedur sieht so aus (wahrs. kennt ihr bessere Varianten, aber diese hab ich selbst (und wahrscheinlich auch tausende Andere vor mir) "selbst" erarbeitet):

Delphi-Quellcode:
procedure TBlub.sortByName();
var
  i, j, k: Integer;
  temp: TPerson;
begin
  for i := 1 to Length(index) - 1 do
  begin
    j := i;
    while not (j = 0) do
    begin
      if Length(index[j - 1].Name) > Length(index[j].Name) then
      begin // der kleinere String (von der Länge her) nach vorne
        temp := index[j];
        index[j] := index[j - 1];
        index[j - 1] := temp;
      end;
      for k := 1 to Min(Length(index[j - 1].Name), Length(index[j].Name)) do
      begin
        if ord(index[j].Name[k]) < ord(index[j - 1].Name[k]) then
        begin
          temp := index[j];
          index[j] := index[j - 1];
          index[j - 1] := temp;
          break
        end
        else if ord(index[j].Name[k]) = ord(index[j - 1].Name[k]) then
          Continue
        else
          break;
      end;
      Dec(j);
    end;
  end;
end;
Natürlich könnte ich die Prozedur kopieren, in "sortByStadt" umbennen und "Name" durch "Stadt" ersetzen, doch dabei würde ich ja nichts lernen.
Also eig. ist die Frage dieses Threads: Wie kann ich die Prozedur so abstrahieren, dass ich als Parameter zB. "Name" angeben kann und dann das Array nach "Name" hin sortiert wird.

Liebe Grüße,
Max
Max
  Mit Zitat antworten Zitat