【发布时间】:2014-07-08 17:03:42
【问题描述】:
当我尝试在过程中将Array of Integer 转换为TArray<Integer> 时,我收到错误E2089 Invalid typecast。我怎样才能输入强制转换它才能工作?
program Project11;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
System.Math;
type
TArrayManager<T> = record
class procedure Shuffle(var A: TArray<T>); static;
end;
class procedure TArrayManager<T>.Shuffle(var A: TArray<T>);
var
I, J: Integer;
Temp: T;
begin
for I := High(A) downto 1 do
begin
J := RandomRange(0, I);
Temp := A[I];
A[I] := A[J];
A[J] := Temp;
end;
end;
procedure Test(var A: Array of Integer);
begin
TArrayManager<Integer>.Shuffle(TArray<Integer>(A)); // Invalid typecast????
end;
var
A: Array of Integer;
begin
// TArrayManager<Integer>.Shuffle(TArray<Integer>(A)); // Works
Test(A);
end.
【问题讨论】:
标签: delphi delphi-xe6