E2018 レコード,オブジェクトまたはクラスのいずれかが必要です (Delphi)

提供: RAD Studio
移動先: 案内検索

エラーと警告のメッセージ(Delphi) への移動

コンパイラはレコード,オブジェクト,クラスのいずれかを指定した型名を予期していましたが,見つかりませんでした。


  program Produce;

    type
      RecordDesc = class
        ch : Char;
      end;

    var
      pCh : PChar;
      r : RecordDesc;

    procedure A;
    begin
      pCh.ch := 'A';    (* ケース 1 *)

      with pCh do begin (* ケース 2 *)
      end;
    end;
  end.


{ このプログラムには同じエラーに 2 つ原因がある。1 つはレコードでないオブジェクトへの「.」の適用である。2 番めの例は with 文の中に誤った型の変数を使用している }


  program Solve;

    type
      RecordDesc = class
        ch : Char;
      end;

    var
      r : RecordDesc;

    procedure A;
    begin
      r.ch := 'A';    (* ケース 1 *)

      with r do begin (* ケース 2 *)
      end;
    end;
  end.

{ このエラーはピリオド「.」と with をどちらも必ずレコード,オブジェクト,クラス変数のいずれかにのみ適用するようにすれば簡単に解決する }