AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Item aus einem Record als Parameter einer Prozedur?
Thema durchsuchen
Ansicht
Themen-Optionen

Item aus einem Record als Parameter einer Prozedur?

Ein Thema von aurikel_Max · begonnen am 20. Aug 2010 · letzter Beitrag vom 21. Aug 2010
 
aurikel_Max

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

Item aus einem Record als Parameter einer Prozedur?

  Alt 20. Aug 2010, 17: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz