2016-04-21 120 views
2

我在C#中有下一個代碼。我需要將它轉換爲Delphi,但是我被卡在C#中的Array.copy中。從C#到Delphi的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); 

Delphi代碼:

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; 
+0

SetLength(dest,len + ixdest); –

+0

Dalija Prasnikar。謝謝。這是一個很好的建議。 –

回答

3

這個是什麼?

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

如果你需要複製到一個數組中,你也可以這樣做:

NewArray:=複製(TmpArray,0,ixDest)+複印件(緩衝,0,len)將+ 複製( TmpArray,ixDest + Len,MaxInt);

當然,這不會是超級高性能,但它會工作。

我只是在這裏從臀部射擊......這也需要Delphi 10西雅圖至少。

+0

非常感謝。它在Delphi Xe8中工作。 –