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未声明的标识符:&#39; TPair&#39; 我做错了什么? TPair在System.Generics.Collections中声明,我将其用于我的用途。
答案 0 :(得分:6)
首先,编译器说TPair
不存在。尽管如此,否则编译器是正确的。 TPair<K, V>
存在,但不存在TPair
。
编译器会指出您的问题。如果您指出程序行无法编译会很有帮助,但很明显这个代码就是问题所在:
TPair<'"reset changes"', TValue.From<Boolean>(True)>
这是语法错误。你的意思是:
TPair<string, TValue>.Create('"reset changes"', TValue.From<Boolean>(True))
编译器查看您的代码并尝试确定<
是否是泛型类型表达式的一部分。因为<
右边的表达式不是一个类型,所以结论是let不是,并且你的<
小于比较运算符。当然,然后它说TPair
不存在。它没有,正如顶部所解释的那样。