我在Delphi中遇到了一个非常基础的问题,但是我无法解决它。
我的代码:
注意:下面方法中的DataR是局部变量,但通常它是类变量。只是为了概念上它是局部的。
class procedure TCelebrity.BeginRead(var input:Array of byte);
var DataR:Array of byte;
begin
VirtualFree(@DataRead,High(DataRead),MEM_RELEASE);
SetLength(DataR,Length(input));
Move(input,DataR,Length(input));
end;
这段代码可以编译通过,但在执行Move()函数后,DataR被置为了nil。
第二次尝试:
class procedure TCelebrity.BeginRead(var input:Array of byte);
var DataR:Array of byte;
begin
VirtualFree(@DataRead,High(DataRead),MEM_RELEASE);
SetLength(DataR,Length(input));
DataR := Copy(input,0,Length(input));
end;
这段代码根本无法编译。第三行(DataR := Copy(input ....))会显示“不兼容的类型”。
问题在哪里?它们都是字节数组!