问题是标题所示。 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之上吗?谢谢你的帮助。
答案 0 :(得分:5)
Delphi的编译器需要知道之前使用的类型。使用您的代码有两种方法可以实现。
将声明移到首次使用的位置上方:
type
TItem = class
Name : String;
Description : String;
constructor Create;
end;
TForm1 = class(TForm)
//other declarations
function ItemThere(x: TItem): boolean;
end;
使用所谓的forward declaration,它基本上只是告诉编译器您正在使用稍后定义的类(在同一类型声明部分中):
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;