Array.copy from C# to Delphi

本文关键字:to Delphi from copy Array | 更新日期: 2024-11-04 15:39:48

我有 C# 中的下一个代码。我需要将其转换为Delphi,但我被困在C#的Array.copy中。

也许我累了,没有看到显而易见的。我在 delphi 中的数组复制函数总是返回空字节。

这是我正在尝试的:

C# code:
    byte[] buffer = new byte[200];
    byte[] tmpArray = new byte[16];
    int lenToCopy = 4;
    //fill buffer here
    buffer=ReadBuffer();
    Array.Copy(buffer, 2, tmpArray, 5, lenToCopy);

德尔福密码:

var lenToCopy:integer;
    temparray, buffer:TBytes;
....
    begin
     lenToCopy := 4;
     setlength(tmpArray,16);
     fillchar(tmpArray[0],length(tmpArray),0);
     buffer:=GetBuffer();// buffer is ok here
     tmpArray:=ArrayCopy(buffer, 2, tmpArray, 5, lenToCopy); //here is the problem: I get an empty tmpArray result
    end;
    function ArrayCopy(src:TBytes;ixsource:integer;dest:TBytes;ixdest:integer;len:integer):TBytes;
    begin
      SetLength(result, len+ixdest);
      Move(src[ixsource],dest[ixdest],len);
      result:=dest;
    end;

Array.copy from C# to Delphi

这个呢?

NewArray := Copy(OldArray, startIndex, Count);

如果需要复制到数组的中间,也可以这样做:

NewArray := Copy(TmpArray, 0, ixDest) + Copy(Buffer, 0, Len) + Copy(TmpArray, ixDest + Len, MaxInt);

当然,这不会是超级高性能的,但它会起作用。

我只是从这里的臀部射击...这也至少需要Delphi 10 Seattle。