Schleife über Datenrecord



  • Hallo Zusammen,

    ich würde gerne wissen ob es möglich ist über eine Schleife alle Variablen eines Datenrecords abzulesen. Zum Beispiel wie folgt.

    /*
    * Datenreoord zum Testen
    */
    class TTESTDataRec {
    public:
    	int Besitzer;
    	int Nummer;
    	UnicodeString Bezeichnung;
    };
    //--------
    
    UnicodeString s;
    
    for(int i = 0 ; i < TTESTDataRec.Größe; i++){
          s += L"Die Variable heißt:" + TTESTDataRec[i] + L"\r\n";
    }
    

    Das Ergebnis sollte dann wie folgt aussehen.

    Die Variable heißt Besitzer. 
    Die Variable heißt Nummer.
    Die Variable heißt Bezeichnung.
    

    Danke im Voraus.
    Sam



  • Nein. Nach dem Kompilieren gibt es diese Namen nicht mehr.



  • Kommt auf die Build-konfiguration an. Bei Release ist es in der Tat so aber bei Debug weiß mein Compiler (Embarcadero C++ Builder XE7) noch die Namen. Unter "Lokale Variablen" oder "Liste der überwachten Ausdrücke" kann man sich die Variablen während dem Debuggen anschauen.



  • @snmn sagte in Schleife über Datenrecord:

    Kommt auf die Build-konfiguration an. Bei Release ist es in der Tat so aber bei Dubug weiß mein Compiler (Embarcadero C++ Builder XE7) noch die Namen. Die kann man nämlich unter "Lokale Variablen" oder "Liste der überwachten Ausdrücke" sich anschauen.

    Falsch. Diese information steckt nicht im compilierten code. Im binary oder in sepraten dateien (bei MSVC wären das .pdb Dateien) stecken zusätzliche Informationen, welche einem Debugger das mapping zwischen Sourcecode und dem ausgeführten code ermöglichen.



  • "Die Straße gleitet fort und fort, Weg von der Tür wo sie begann, Weit überland, von Ort zu Ort, Ich folge ihr, ..." *sing*



  • Hi,

    keine Ahnung ob die Frage noch interessiert.
    Eine Liste von VCL-Objekten bilden und die dann mit Items[n] jeweils einzeln anspringen und abfragen.
    VariablenNamen selbst sind in C++ und vergleichbaren Sprachen nur Süeicheradressen bzw. in
    Records... die Offsets innerhalb des übergeordneten Objekts.
    Ausnahme: Du nimmst anstatt einfacher Variablen Records, die auch ein Informationsfeld mit beinhalten. Aber dann müsstest Du, um sicher zugreifen zu können zumindest ein Array von Zeigern verwenden.

    Gruß Mümmel