我如何声明一个函数,该函数将一个尚未识别类型的变量作为参数

How do i declare a function which takes a variable of a yet unidentified type as parameter

问题如题。 O 收到错误:预期类型标识符,(我认为)来自在类型声明之前读取的函数声明。

type
  TForm1 = class(TForm)
    //other declarations
    function ItemThere(x: TItem): boolean; // here it says TItem is unknown
  end;

type
  TItem = class
    Name : String;
    Description : String;
    constructor Create;
  end;

另外我想让你知道我是一个相当没有经验的程序员。 我怎样才能解决这个问题?我应该将 TItem 的声明移到 TForm1 之上吗?感谢您的帮助。

Delphi 的编译器需要在使用 之前了解类型 。有两种方法可以使用您的代码完成此操作。

  1. 将声明移到首次使用的位置上方:

    type
      TItem = class
        Name : String;
        Description : String;
        constructor Create;
      end;
    
      TForm1 = class(TForm)
        //other declarations
        function ItemThere(x: TItem): boolean; 
      end;
    
  2. 使用所谓的 forward declaration,它基本上只是告诉编译器您正在使用稍后定义的 class(在同一类型中声明部分):

    type
      TItem = class;              // forward declaration
    
      TForm1 = class(TForm)
        //other declarations
        function ItemThere(x: TItem): boolean; 
      end;
    
      TItem = class               // Now define the class itself
        Name : String;
        Description : String;
        constructor Create;
      end;