从Delphi 5升级到XE5:UDPClient.SendBuffer
我正在将旧版本的Delphi升级到XE5,旧版本使用Indy组件UDPClient,XE5表示不能使用这些参数调用SendBuffer。有人能帮帮我吗。以下是示例代码段:从Delphi 5升级到XE5:UDPClient.SendBuffer,delphi,indy,udpclient,Delphi,Indy,Udpclient,我正在将旧版本的Delphi升级到XE5,旧版本使用Indy组件UDPClient,XE5表示不能使用这些参数调用SendBuffer。有人能帮帮我吗。以下是示例代码段: var i: integer; begin i := bpt; if i <> 0 begin //send Reset byte myBuff[i] := chr(_reset); // reboot the LIA inc(i); IdUDPClient1.S
var
i: integer;
begin
i := bpt;
if i <> 0
begin
//send Reset byte
myBuff[i] := chr(_reset); // reboot the LIA
inc(i);
IdUDPClient1.SendBuffer(myBuff,i);
end;
end;
var
i:整数;
开始
i:=bpt;
如果我0
开始
//发送重置字节
myBuff[i]:=chr(_重置);//重新启动LIA
公司(一);
IdUDPClient1.SendBuffer(myBuff,i);
结束;
结束;
其中myBuff:char的数组[0..255]
提前感谢您的帮助
Mike您需要将数据转换为
TIdBytes
,这是一个动态字节数组。您还必须考虑到Char
现在的大小为2字节,因此如果您需要与现有应用程序保持兼容,请使用AnsiChar
或Byte
而不是Char
:
var
myBuff: array[0..255] of Byte;
...
var
i: integer;
begin
i := bpt;
if i <> 0 then
begin
//send Reset byte
myBuff[i] := _reset; // reboot the LIA
inc(i);
IdUDPClient1.SendBuffer(RawToBytes(myBuff[0],I));
end;
end;
var
myBuff:Byte的数组[0..255];
...
变量
i:整数;
开始
i:=bpt;
如果我是0那么
开始
//发送重置字节
myBuff[i]:=\u重置;//重新启动LIA
公司(一);
发送缓冲区(RawToBytes(myBuff[0],I));
结束;
结束;
或:
var
myBuff:TIdBytes;
...
变量
i:整数;
开始
设置长度(myBuff,256);
...
i:=bpt;
如果我是0那么
开始
//发送重置字节
myBuff[i]:=\u重置;//重新启动LIA
公司(一);
IdUDPClient1.SendBuffer(myBuff);
结束;
结束;
您需要将数据转换为TIdBytes
,这是一个动态字节数组。您还必须考虑到Char
现在的大小为2字节,因此如果您需要与现有应用程序保持兼容,请使用AnsiChar
或Byte
而不是Char
:
var
myBuff: array[0..255] of Byte;
...
var
i: integer;
begin
i := bpt;
if i <> 0 then
begin
//send Reset byte
myBuff[i] := _reset; // reboot the LIA
inc(i);
IdUDPClient1.SendBuffer(RawToBytes(myBuff[0],I));
end;
end;
var
myBuff:Byte的数组[0..255];
...
变量
i:整数;
开始
i:=bpt;
如果我是0那么
开始
//发送重置字节
myBuff[i]:=\u重置;//重新启动LIA
公司(一);
发送缓冲区(RawToBytes(myBuff[0],I));
结束;
结束;
或:
var
myBuff:TIdBytes;
...
变量
i:整数;
开始
设置长度(myBuff,256);
...
i:=bpt;
如果我是0那么
开始
//发送重置字节
myBuff[i]:=\u重置;//重新启动LIA
公司(一);
IdUDPClient1.SendBuffer(myBuff);
结束;
结束;
您需要将数据转换为TIdBytes
,这是一个动态字节数组。您还必须考虑到Char
现在的大小为2字节,因此如果您需要与现有应用程序保持兼容,请使用AnsiChar
或Byte
而不是Char
:
var
myBuff: array[0..255] of Byte;
...
var
i: integer;
begin
i := bpt;
if i <> 0 then
begin
//send Reset byte
myBuff[i] := _reset; // reboot the LIA
inc(i);
IdUDPClient1.SendBuffer(RawToBytes(myBuff[0],I));
end;
end;
var
myBuff:Byte的数组[0..255];
...
变量
i:整数;
开始
i:=bpt;
如果我是0那么
开始
//发送重置字节
myBuff[i]:=\u重置;//重新启动LIA
公司(一);
发送缓冲区(RawToBytes(myBuff[0],I));
结束;
结束;
或:
var
myBuff:TIdBytes;
...
变量
i:整数;
开始
设置长度(myBuff,256);
...
i:=bpt;
如果我是0那么
开始
//发送重置字节
myBuff[i]:=\u重置;//重新启动LIA
公司(一);
IdUDPClient1.SendBuffer(myBuff);
结束;
结束;
您需要将数据转换为TIdBytes
,这是一个动态字节数组。您还必须考虑到Char
现在的大小为2字节,因此如果您需要与现有应用程序保持兼容,请使用AnsiChar
或Byte
而不是Char
:
var
myBuff: array[0..255] of Byte;
...
var
i: integer;
begin
i := bpt;
if i <> 0 then
begin
//send Reset byte
myBuff[i] := _reset; // reboot the LIA
inc(i);
IdUDPClient1.SendBuffer(RawToBytes(myBuff[0],I));
end;
end;
var
myBuff:Byte的数组[0..255];
...
变量
i:整数;
开始
i:=bpt;
如果我是0那么
开始
//发送重置字节
myBuff[i]:=\u重置;//重新启动LIA
公司(一);
发送缓冲区(RawToBytes(myBuff[0],I));
结束;
结束;
或:
var
myBuff:TIdBytes;
...
变量
i:整数;
开始
设置长度(myBuff,256);
...
i:=bpt;
如果我是0那么
开始
//发送重置字节
myBuff[i]:=\u重置;//重新启动LIA
公司(一);
IdUDPClient1.SendBuffer(myBuff);
结束;
结束;
您是否理解Char
现在是一种完全不同的类型?将其称为IdUDPClient1.sendpuffer(ToBytes(您想要发送的数据))
@TLama我认为问题在于发送的数据多于如何发送it@TLama:ToBytes()
没有字符数组的重载。传递char[]
数组将调用String
重载,因此必须确保数组以null结尾。否则,请改用RawToBytes()
。您知道Char
现在是一种完全不同的类型吗?请像IdUDPClient1.SendBuffer(ToBytes(您想发送的数据))
@TLama我认为问题在于发送的数据多于如何发送it@TLama:ToBytes()
没有字符数组的重载。传递char[]
数组将调用String
重载,因此必须确保数组以null结尾。否则,请改用RawToBytes()
。您知道Char
现在是一种完全不同的类型吗?请像IdUDPClient1.SendBuffer(ToBytes(您想发送的数据))
@TLama我认为问题在于发送的数据多于如何发送it@TLama:ToBytes()
没有字符数组的重载。传递char[]
数组将调用String
重载,因此必须确保数组以null结尾。否则,请改用RawToBytes()
。您知道Char
现在是一种完全不同的类型吗?请像IdUDPClient1.SendBuffer(ToBytes(您想发送的数据))
@TLama我认为问题在于发送的数据多于如何发送it@TLama:ToBytes()
没有字符数组的重载。传递char[]
数组将调用String
重载,因此必须确保数组以null结尾。否则,使用RawToByte