编译错误创建TPair TArray

时间:2018-01-13 07:49:35

标签: arrays delphi generics delphi-xe2

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中声明,我将其用于我的用途。

1 个答案:

答案 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不存在。它没有,正如顶部所解释的那样。