Einzelnen Beitrag anzeigen

Carsten1234

Registriert seit: 9. Apr 2008
Ort: Vechelde
178 Beiträge
 
Delphi 8 Professional
 
#15

Re: Anzahl der Felder in einem Record

  Alt 21. Jan 2009, 08:57
Zitat von Mavarik:
Warum so kompliziert!
Weil die Einzelwerte (Felder) der unterschiedlichen Records als CSV-Datei weggeschrieben werden sollen.
Ich könnte ja jetzt (umständlicher Weg) für jedes Record eine eigene Speicherroutine schreiben, ich hätte hingegen aber (einfacher Weg[?]) eine Speicherroutine, die zunächst (auch im rekursiven Aufruf) die Feldtypen der Records (und Unterrecords) ermittelt, daraus Strings bastelt und diese Strings dann speichern.

Viel "lustiger" wird es ja bei diesem Konstrukt:
Delphi-Quellcode:
  TKontaktartenEingang = packed record
    Kontaktart: word;
    case Word of
      EINGANG_KONTAKT_SCHLIESSER,
      EINGANG_KONTAKT_OEFFNER : (
                                        Dummy: byte;
                                        Ansprechzeit_Digital: word;
                                      );
      EINGANG_KONTAKT_ANALOG_0_10V,
      EINGANG_KONTAKT_ANALOG_0_20MA,
      EINGANG_KONTAKT_ANALOG_4_20MA : (
                                        KonfigID : word;
                                        Ansprechzeit_Analog : word;
                                        Sensorausfall : boolean;
                                        MinValue : word;
                                        MaxValue : word;
                                        Schwellwert1 : word;
                                        Schwellwert2 : word;
                                        Invert : boolean;
                                      );
  end;

  TEingang = packed record
    Kennung : string;
    Kontaktart: TKontaktartenEingang;
  end;
Was ja - zumindest schon im Ansatz - klappt, ist das hier.
Allerdings fehlt mir nach wie vor eine Routine oder ggf. eine Schleife ala ForEach in PHP zum zählen, die mir die Anzahl der Recordfelder zurück gibt und bei Unterrecords meckert leider der Compiler "Inkompatible Typen: Variant und {Unterrecord}".

Gruß, Carsten
  Mit Zitat antworten Zitat