![]() |
Durch record iterieren
Ich weiß die Frage ist bestimmt blöd aber ich kann sie nicht beantworten.
Ich habe ein ganz normales record
Delphi-Quellcode:
Gibt es eine Möglichkeit durch dieses Record zu gehen ohne extra noch einmal die Werte zu kennen?
type TRec = record
const A: string = 'A'; B: string = 'B'; CD: TArray<stirng> = ['C', 'D']; end; Meine erste Idee: alles in ein Enum auslagern. Durch TRecData kann man dann iterieren... vielleicht? Und das Enum in einen String umwandeln.
Delphi-Quellcode:
type
TRecData = (A, B, CD); type TRec = record const A: string = TRecData.A; B: string = TRecData.B; CD: TArray<string> = [TRecData.C, TRecData.D]; end; |
AW: Durch record iterieren
System.RTTI.pas (früher RTTI.pas)
prinzipiell
Delphi-Quellcode:
aber ich weiß/glaube nicht, ob/dass es möglich ist Konstanten aufzulisten. (für globale Konstanten und Variablen sind ja ebenfalls keine TypeInfos vorhanden)
uses
System.RTTI; var F: TRttiField; begin for F in (TRttiContext.Create.GetType(TypeInfo(TRec)) {as TRttiRecordType}).GetFields do // für Variablen aka Felder im Record ... |
AW: Durch record iterieren
Leider funktioniert das mit Konstanten nicht.
Hier wäre der Umweg über das Enum vielleicht eine Idee, um keine wirkliche, doppelte Daten zu haben. |
AW: Durch record iterieren
evtl. so
allerdings ohne record
Code:
type
TmyEnum = (A,B,C,D); const myConst:array[TmyEnum] of string = ('A', 'B', 'C', 'D'); ... var u:TmyEnum; for u=Low(TmyEnum) to High(TmyEnum) do begin doAnythingWith(mxConst[u]); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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 by Thomas Breitkreuz