Moin dmw,
dat jeht auch in Delphi
Delphi-Quellcode:
TMyVariableType =
packed record
// hier der Feste Anteil (muss nicht sein):
dwFeld : DWORD;
sFeld : string;
// und hier der variable:
case byte of
$01 : (
dwFeld1 : DWORD;
dwFeld2 : DWORD;
);
$02 : (
abFeld : array [1..4] of Byte;
);
$03 : (
wdFeld : WORD;
wdDummy : WORD;
);
end;
Beim case muss, wie auch beim case im Programm ein ordinaler Typ angegeben werden, der gross genug ist um alle Unterscheidungen zu ermöglichen (Boolean würde bei dem Beispiel nicht funktionieren, da es nur zwei verschiedene Werte kennt).
Die Nummerierung muss nicht lückenlos sein. Die Angaben müssen halt nur im Wertebereich des angegebenen Typs liegen.
Wenn die einzelnen Varianten unterschiedlich gross sein sollen, muss man mit dem kleinsten beginnen, und dann nach Grösse aufsteigend weiter deklarieren (ist zumindest sicherer)
[EDIT]
Was ich noch vergessen hatte:
Der Variante Teil muss am Ende der Deklaration stehen.
[/EDIT]