加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何复制数组?

发布时间:2020-12-15 10:11:36 所属栏目:大数据 来源:网络整理
导读:我在Delphi中有这样一个基本问题,我无法解决它. 我的代码: 注意:DataR在下面的方法中是本地的,但通常它是一个类var.Just为它的本地概念. class procedure TCelebrity.BeginRead(var input:Array of byte);var DataR:Array of byte;begin VirtualFree(@Data
我在Delphi中有这样一个基本问题,我无法解决它.

我的代码:

注意:DataR在下面的方法中是本地的,但通常它是一个类var.Just为它的本地概念.

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,Length(input));
  DataR := Copy(input,Length(input));
end;

这不会编译.第三行的错误(DataR:=复制(输入….)说“不兼容的类型”.

问题出在哪里?它们都是字节数组!

解决方法

为什么不使用FOR?
SetLength(DataR,Length(input));
for i:=Low(input) to High(input) do
  DataR[i]:=input[i];

顺便说一句:如果你想让数组作为参数传递,你应该将它们声明为一个类型,例如:

type
  TMyArray = array of byte;

并使用TMyArray作为参数类型.

编辑:我被告知我的价值较低.在我的原始帖子中,它是i:= 0,但我:=低(输入)更安全,更纯净.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读