パスカルをよく知っている人の助けが必要です。パスカルバリアントレコードの使用
私はバリアントレコードを使用するために(教師の必要条件が)必要です。これらのバリアントレコードは、次のように定義されています。
Temperature = record
case scale : TemperatureScale of
celsius : (celsius_value : ScaleCelsius);
kelvin : (kelvin_value : ScaleKelvin);
end;
私はこのトピックに関する私の研究中に発見された一次資料によると、私はそれを宣言するだけでどのように、バリアントレコードを使用する方法を見つけることができませんでした。
私の主な情報源:Google検索(見つかっ何も)、Case-FreepascalとRecord-Freepascal
編集私は実装で使用しなければならないのだろうか人のために、それはexaclyこれです:
type
UkPolozka = ^Polozka;
UkHodnota = ^Hodnota;
TypUdaj=(typretez, typcele, typrealne, typlogik, typpole, typobjekt);
VarZaznam = record
case Udaj: TypUdaj of
typretez: (retez: string);
typcele: (cele: word);
typrealne: (realne: single);
typlogik: (logik: boolean);
typpole: (pole: UkHodnota);
typobjekt: (objekt: UkPolozka);
end;
Polozka = record
Nazev: string;
Hodn: VarZaznam;
Dalsi: UkPolozka
end;
Hodnota = record
Hodn: VarZaznam;
Dalsi: UkHodnota
end;
あなたは、特定の問題を説明していません。有用なバリアントレコードの例としてhttps://www.freepascal.org/docs-html/rtl/sysutils/longrec.htmlを考えてみましょう – MBo
レコードフィールド 'scale'が' celsius'の場合、バリアントパーツには 'celsius_value'が含まれています。それが 'kelvin'の場合、変形部分は' kelvin_value'を含みます。バリアントパーツは、バリアントデスクリプタに応じて複数の解釈のための空間を共有します。バリアント記述子は、型としてのみ指定することもできます。 'case boolean of'です。 –
@mboレコードのフィギュアタイプは?どのようにそれから読む? – gussPepe