Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 27. Dez 2002, 03:51
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]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat