做一些网络数据的传送时候,把以前的老d7的代码拿来直接放到delphi2009下来编译,发现在clientsocket.SendBuf时候传送数据老是出问题.
观察了一下,发现在d2009中
Char 默认是WideChar 占用字节 2
AnsiChar 占用字节 1
WideChar 占用字节 2
把以前定义的结构里的char类型改为AnsiChar 后问题消失
另外
在TClientsocket里的TCustomWinSocket.ReceiveText有一个小Bug,将其修改为以下内容
function TCustomWinSocket.ReceiveText: ansistring; //<<==修改
begin
SetLength(Result, ReceiveBuf(Pointer(nil)^, -1));
SetLength(Result, ReceiveBuf(Pointer(Result)^, Length(Result)));
end;
观察了一下,发现在d2009中
Char 默认是WideChar 占用字节 2
AnsiChar 占用字节 1
WideChar 占用字节 2
把以前定义的结构里的char类型改为AnsiChar 后问题消失
另外
在TClientsocket里的TCustomWinSocket.ReceiveText有一个小Bug,将其修改为以下内容
function TCustomWinSocket.ReceiveText: ansistring; //<<==修改
begin
SetLength(Result, ReceiveBuf(Pointer(nil)^, -1));
SetLength(Result, ReceiveBuf(Pointer(Result)^, Length(Result)));
end;