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