2015-11-05 4 views
1

У меня есть проект C#, который я пытаюсь преобразовать в Delphi.Использование Byte [] в delphi

У меня есть функция addcoord

public static byte[] addCoord(Coordinate C, int ID) 
{ 
    //Create an empty array of length 10 
    byte[] ret = new byte[10]; 

    ret[0] = Convert.ToByte(newClass.Add); 
    ret[1] = Convert.ToByte(ID); 
    ret[2] = BitConverter.GetBytes(C.X)[0]; 
    //High-Byte of uInt16 X 
    ret[3] = BitConverter.GetBytes(C.X)[1]; 
    //Low-Byte of uInt16 Y 
    ret[4] = BitConverter.GetBytes(C.Y)[0]; 
    //High-Byte of uInt16 Y 
    ret[5] = BitConverter.GetBytes(C.Y)[1]; 
    ret[6] = C.Red; 
    ret[7] = C.Green; 
    ret[8] = C.Blue; 
    ret[9] = C.Master; 

    return ret; 
} 

есть какие-либо эквивалент этого в Delphi?

ответ

1

Дельфийский эквивалент byte[] в C# является array of byte. Вы можете либо использовать его с фиксированным размером:

var 
    buffer = array[0..9] of byte; 

или с динамическим размером

type 
    TByteArray = array of byte; 

function AddCoord(const C: TCoordinate; ID: integer): TByteArray; 
begin 
    SetLength(Result, 10); 

    Result[0] := C.Red; 
    Result[1] := C.Green; 
end; 

Для некоторых основных типов существуют также предопределенные типы массивов, которые должны быть предпочтительными для использования. Например, TBytes.

Дженерики были представлены в Delphi 2009. Если вы используете хотя бы эту версию, вы должны использовать TArray<T>. Например, TArray<integer> или TArray<TMyType>.

+1

Delphi имеет встроенный тип 'TBytes' для динамического массива байтов, не нужно вводить тип пользователя' TByteArray = массив байта; ' – kludg

+0

Спасибо. Я просто хотел показать, как создать массив типа по своему усмотрению. Но да, вы правы. – Wosi

+2

'TBytes' или' TArray 'упростят взаимодействие с кодом из других библиотек. –

Смежные вопросы