难道这个是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!我狂汗!以下是我的程序代码:

 

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;

 

 

posted @ 2010-08-08 13:13  仁扬  阅读(357)  评论(0编辑  收藏  举报