难道这个是Delphi7的bug?

  我最近在写一个QQ农场的辅助软件,说实话,我不喜欢玩这种无聊的游戏,才5级啊!郁闷中……过了不久,觉得搞点辅助软件也还不错啊,为何不写个呢?说干就干……N个星期后,我中考结束~~忽忽——好开心啊~终于可以尽情地编程啦!登录上了疼讯的QQ服务器,获取自己的农场数据成功了!但,遗憾的是获取好友列表的数据时老是失败——咳,N天后,我发现不是我获取失败,而是Delphi7本身的bug。是这样的,我用IDHTTP组件Get获取好友列表数据的地址,用RecvData: TStringStream; 该流接收数据,当我无意中断点调试时,发现RecvData.DataString是一串乱码!太好啦!证明获取是成功的!但执行到下一条语句时,Result := Utf8ToAnsi(RecvData.DataStirng); 发现Result := ''; 搞了半天,原来问题在这个函数上啊!我也上百度查了查,CSDN里面有提到过:http://topic.csdn.net/u/20070328/20/37d12dfd-4753-4a92-9ae6-e22e279048d2.html 说是函数的bug,我也赞成……8楼说用字符串分割,我也写过函数,分成256个字符,但转换出来的结果会丢失一些数据!不知道如何解决!我试过Delphi2010,但我不习惯,而且自带的Indy10在Cookies的处理好像没有Indy9.0.18那么好,有时还收不到Cookies!我狂汗!以下是我的程序代码:

 

ContractedBlock.gif ExpandedBlockStart.gif UTF8toASCII
 
   
1 // 将UTF - 8 编码转换为Ascii编码
2   function UTF8toASCII( const S : UTF8String) : AnsiString;
3   var
4 i, j, intLen : Integer;
5   begin
6 Result : = '' ;
7 intLen : = Length(S);
8 j : = intLen div 255 ;
9 for i : = 1 to j do
10 begin
11 Result : = Result + Utf8ToAnsi(Copy(S, 255 * (i - 1 ) + 1 , 255 ));
12 end ;
13 Result : = Result + Utf8ToAnsi(RightStr(S, intLen - 255 * j));
14   end ;

 

 

转载于:https://www.cnblogs.com/lofanmi/archive/2010/08/08/1795106.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值