创建 TPair TArray 的编译器错误
Compiler error creating TPair TArray
uses
Generics.Collections, types, rtti, System.Generics.Collections;
procedure GimmePairArray(const APairArray: TArray<TPair<string, TValue>>);
begin
end;
procedure TForm2.FormCreate(Sender: TObject);
var
_PairArray: TArray<TPair<string, TValue>>;
begin
_PairArray := TArray <TPair<string, TValue>>.Create(TPair<'"reset changes"', TValue.From<Boolean>(True)>);
GimmePairArray(_PairArray);
end;
导致编译错误:
[DCC 错误]Unit2.pas(38):E2003 未声明的标识符:'TPair'
我做错了什么? TPair 在 System.Generics.Collections 中声明,我在我的使用中有它。
首先,编译器说TPair
不存在。尽管您不相信编译器是正确的。 TPair<K, V>
存在,但 TPair
不存在。
编译器确实指出了您的问题。如果您指出编译失败的程序行会很有帮助,但很明显,这段代码就是问题所在:
TPair<'"reset changes"', TValue.From<Boolean>(True)>
这是语法错误。你是说:
TPair<string, TValue>.Create('"reset changes"', TValue.From<Boolean>(True))
编译器查看您的代码并尝试确定 <
是否是泛型类型表达式的一部分。因为 <
右边的表达式不是一个类型,所以它得出的结论是 let 不是并且你的 <
是小于比较运算符。当然,它会说 TPair
不存在。事实并非如此,正如顶部所解释的那样。
uses
Generics.Collections, types, rtti, System.Generics.Collections;
procedure GimmePairArray(const APairArray: TArray<TPair<string, TValue>>);
begin
end;
procedure TForm2.FormCreate(Sender: TObject);
var
_PairArray: TArray<TPair<string, TValue>>;
begin
_PairArray := TArray <TPair<string, TValue>>.Create(TPair<'"reset changes"', TValue.From<Boolean>(True)>);
GimmePairArray(_PairArray);
end;
导致编译错误: [DCC 错误]Unit2.pas(38):E2003 未声明的标识符:'TPair' 我做错了什么? TPair 在 System.Generics.Collections 中声明,我在我的使用中有它。
首先,编译器说TPair
不存在。尽管您不相信编译器是正确的。 TPair<K, V>
存在,但 TPair
不存在。
编译器确实指出了您的问题。如果您指出编译失败的程序行会很有帮助,但很明显,这段代码就是问题所在:
TPair<'"reset changes"', TValue.From<Boolean>(True)>
这是语法错误。你是说:
TPair<string, TValue>.Create('"reset changes"', TValue.From<Boolean>(True))
编译器查看您的代码并尝试确定 <
是否是泛型类型表达式的一部分。因为 <
右边的表达式不是一个类型,所以它得出的结论是 let 不是并且你的 <
是小于比较运算符。当然,它会说 TPair
不存在。事实并非如此,正如顶部所解释的那样。