请问:Indy9移植到Indy10出现的问题

sandygood 2006-01-11 08:28:49
由于Indy9中的TIdAntiFreeze有些BUG,经常的死掉,以及听说在实际的使用中,INDY10更加的稳定,所以我把代码移植到Indy 10中,其他的方法还比较好做,比如ReadLn,WriteLn的前面加入Socket.就可以了,但是我在WriteBuffet这个方法中遇到了问题,在10中没有这个方法,只有一个Write,但是这个我不会用。

我的目的是,把一个结构,发送给另一端。Indy 9的代码如下:
定义:
TUserInfo = record
USERID: string[20]; //用户ID
DESCRIPT: string[30]; //用户描述
PASSWORD: string[20]; //Passwd
SEX: string[2]; //性别 男 女
PHS: string[40]; //小灵通
MOBILE_TELEPHONE: string[40]; //移动电话
TELEPHONE: string[50]; //固定电话
IP_ADDRESS: string[20]; //IP地址(登录更新)
COLUMN1: string[50]; //备用1
END;

函数中的代码:
//调用专用函数进行登录判断
t_tRetval.iRetval := OrderToLogin(t_IXMLDoc, t_oUserInfo, t_strErrMsg);
t_tRetval.strErrMsg := t_strErrMsg;
t_ActClient.UserID := t_oUserInfo.USERID;

//把用户信息返回
AThread.Connection.WriteBuffer(t_oUserInfo, SizeOf(t_oUserInfo), true);
客户端读取:
//系统会返回数据是否通过
IdTCPClient1.ReadBuffer(m_oUserInfo, SizeOf(m_oUserInfo));

各位,Indy10中应该如何写呢?请指教!
...全文
233 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sandygood 2006-01-12
  • 打赏
  • 举报
回复
感谢911的提示,问题解决了,结贴!

Indy10需要把数据转换一下:

var
Buf: TIdBytes;
...
Buf := RawToBytes(t_oUserInfo, SizeOf(t_oUserInfo));
AContext.Connection.IOHandler.Write(Buf);
...
SetLength(Buf, 0);
IdTCPClient1.IOHandler.ReadByes(Buf, SizeOf(m_oUserInfo));
BytesToRaw(Buf, m_oUserInfo, SizeOf(m_oUserInfo)
sandygood 2006-01-11
  • 打赏
  • 举报
回复
我说的都是指idTCPClient和Server,其他的不论
sandygood 2006-01-11
  • 打赏
  • 举报
回复
9中,如果你在Client界面上放一个TIdAntiFreeze,然后在加一个Timer1来ReadLn,你在运行之后就会发现,你的Form是关不掉了。

你用9没有遇到个这样的问题吗?
aiirii 2006-01-11
  • 打赏
  • 举报
回复
>>在10中没有这个方法,只有一个Write,

应该是该为
IdTCPClient1.SendCmd();
IdTCPClient1.GetResponse();

IdTCPServer1.Bindings[1].Send()

这个,indy 还提供了个参数将 string 转为 tbytes 的
ly_liuyang 2006-01-11
  • 打赏
  • 举报
回复
Indy10更加稳定?
暂时不觉得

我还用Indy9的,到10的移植太困难,放弃移植的想法

indy 9目前仍在维护中的,并没有淘汰的
10的功能更多,效率据说也有提高,具体不清楚
只是知道目前很多应用仍然是9的,10的很少见
getit911 2006-01-11
  • 打赏
  • 举报
回复
必须将记录体的数据转换成TIdBytes
试一下这个
function RawToBytes(const AValue; const ASize: Integer): TIdBytes;
begin
SetLength(Result, ASize);
Move(AValue, Result[0], ASize);
end;
sandygood 2006-01-11
  • 打赏
  • 举报
回复

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧