关于泛型数组排序
uses
Generics.Collections;
var
a : array of string;
begin
//do something
Tarray.sort<string>(a);//这样可以正常调用
end
var
a : array of char;
begin
//do something
Tarray.sort<char>(a);//这样叫报错
end
错误信息:[DCC Error] Unit1.pas(41): E2010 Incompatible types: 'array of Char' and 'Dynamic array'
请教高手指点
[解决办法]
Tarray 不支持 array of Char 呗. 参考一下 TArray的帮助吧.
[解决办法]
var arrC : TArray<PChar>;begin SetLength(arrC, 4); arrC[0] := 'b'; arrC[1] := 'd'; arrC[2] := 'c'; arrC[3] := 'a'; TArray.Sort<PChar>(arrC, TComparer<PChar>.Construct( function (const a, b: PChar): Integer begin Result := Ord(a^) - Ord(b^); end )); ShowMessage(arrc[0] + ', ' + arrc[1] + ', ' + arrc[2] + ', ' + arrc[3]);
[解决办法]
uses Generics.Collections, Generics.Defaults;
[解决办法]
没用过新版本的Delphi。不过在老版本中,如果碰到这种Dynamic Array与Array of XXX不匹配的情况时,常常是定义一个TXXX=array of XXX,然后在变量定义时采用var xxx: TXXX这样的方式的。