4

次の DCC エラーが発生し続けます。公開されたフィールド 'name' は、次のクラスのクラスまたはインターフェイス タイプではありません。

  TGroup = class
    name:string[32]; <<<========================
    rwFeatures:TFeatures;
    roFeatures:TFeatures;
    levels:TLevels;   
  private

  public
    constructor Create;
    procedure Read(var f:file);
    procedure ReadOld(var f:file);
    procedure Write(var f:file);   
  end;

どういう意味ですか?

4

1 に答える 1

5

クラスは、[ランタイム型情報を送信]設定を有効にしてコンパイルされます。実行時の型情報を使用してクラスをコンパイルすると、デフォルトの可視性はpublished. つまり、短い文字列フィールドはpublished. また、短い文字列フィールドは公開できません。

ドキュメントには次のように記載されています。

フィールドは、クラスまたはインターフェイス タイプの場合にのみ公開できます。

これはかなり厳しい要件です。たとえば、整数またはブール値のフィールドを公開できないことを意味します。

パブリッシュされたフィールドの主な用途がオブジェクト参照であるため、この制限があると思われます。フォーム上のコンポーネントを考えてみてください。

次のいずれかのオプションを使用して問題を解決します。

  1. このクラスのランタイム型情報を発行しないでください。
  2. 短い文字列フィールドを公開ではなく公開にします。
  3. フィールドではなくプロパティを使用します。
于 2012-12-18T20:57:30.323 に答える