Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Untervariablennamen eines Records in Variable speichern? (https://www.delphipraxis.net/44788-untervariablennamen-eines-records-variable-speichern.html)

tombi 24. Apr 2005 18:20


Untervariablennamen eines Records in Variable speichern?
 
Hallo

ich habe folgenden Record:

Code:
type
  PZeiger = ^TElement;
  TElement = record
    rechts: PZeiger;
    nachname, vorname, strasse, plz, ort, email : string;
  end;
Nun möchte ich nach diesen 6 Angaben sortieren können. Da ich nicht für jeden Vergleich eine eigene Prozedur schreiben will, würde ich gerne wissen ob es eine Möglichkeit gibt die Namen der "Untervariablen" des Records in einer anderen Variablen zu speichern.
Im Klartext: Ich will anstelle von
Code:
...
if lauf.rechts.nachname>lauf.rechts.rechts.nachname
...
if lauf.rechts.vorname>lauf.rechts.rechts.vorname
...
if lauf.rechts.email>lauf.rechts.rechts.email
einfach nur
Code:
if lauf.rechts.variable>lauf.rechts.rechts.variable
schreiben, wobei der variable vorher dann halt nachname, vorname usw. zugewiesen wird.

Ist das möglich oder gibts da andere Möglichkeiten?

SirThornberry 24. Apr 2005 18:46

Re: Untervariablennamen eines Records in Variable speichern?
 
Es gibt eine Möglichkeit, dabei musst du einen pointer auf die Strings speichern und kannst dann über diese zugreifen.

Beispiel:
Delphi-Quellcode:
procedure ShowTheString(AElement: TElement; AOffset: Cardinal);
begin
  ShowMessage(PString(Cardinal(@AElement.nachname) + AOffSet)^);
end;

[...]
type
  PString = ^String;
var LElement: TElement;
    LOffSet: Cardinal;
begin
  LElement.nachname := 'Nachname';
  LElement.vorname := 'Vorname';
  LElement.strasse := 'Straße';
  LElement.plz := 'PLZ';
  LElement.ort := 'Ort';
  LElement.email := 'Email';

  //LOffSet := 0; //Nachname
  //LOffSet := 4; //Vorname
  //LOffSet := 8; //Straße
  LOffSet := 12; //PLZ
  //LOffSet := 16; //Ort
  //LOffSet := 20; //Email
  ShowTheString(LElement, LOffSet);
end;
Je nach dem welchen wert "LOffSet" hat würdest du einen anderen String des Records angezeigt bekommen. Anstelle des Showmessage brauchst du also nur deinen vergleich in der "ShowTheString" machen.

tombi 24. Apr 2005 19:58

Re: Untervariablennamen eines Records in Variable speichern?
 
Jau, vielen Dank, es funktioniert. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz