如何使用 Delphi 将浮点数据复制到字节数组中?

How to copy float data into byte array with Delphi?

我正在和 Delphi 一起做一个项目。我想写一个函数。我需要将浮点数据放入字节数组 (TArray) 中。该函数的c#代码如下

public void SetCalibrationValue(byte channel, float value)
        {
            if (!serialPort.IsOpen)
                return;

            byte[] b = new byte[] {0x7E, 0x0B, 0x04, 0x01, 0x05, channel, 0x00, 0x00, 0x00, 0x00, 0x00};
            Array.Copy(BitConverter.GetBytes(value), 0, b, 0x07, sizeof(float));

            serialPort.Write(b, 0, b.Length);

            if (OnDataTransmit != null)
                OnDataTransmit(new DataTransmitEventArgs(b));
        }

我想用 delphi 来完成这段代码。到目前为止我已经做到了,但我无法继续。 这是我的代码:

procedure PListenerx.SetCalibrationValue (channel:Byte;value:single);
var
     b:TArray<Byte>;
     c:TArray<Byte>;
begin
     //Comport kapalıysa kontrolü yapılacak
     b[0]:=E;
     b[1]:=[=12=]B;
     b[2]:=;
     b[3]:=;
     b[4]:=;
     b[5]:=channel;
     b[6]:=[=12=];
     b[7]:=[=12=];
     b[8]:=[=12=];
     b[9]:=[=12=];
     b[10]:=[=12=];

    

end;
Move(value, b[7], SizeOf(Single));

将用 `value

填充 b 数组的末尾

请注意 Delphi 7 中没有泛型数组,因此代码如下所示

procedure PListenerx.SetCalibrationValue (channel:Byte;value:single);
var
     b: array of Byte;
begin 
     SetLength(b, 11);
     //Comport kapalıysa kontrolü yapılacak
     b[0]:=E;
     b[1]:=[=11=]B;
     b[2]:=;
     b[3]:=;
     b[4]:=;
     b[5]:=channel;
     b[6]:=[=11=];
     //no need to fill array end with junk

     Move(value, b[7], SizeOf(Single));

     //now send b[] to the port
end;