delphi2005下的indy的IdTCPServer怎么不能发中文?是不是极大的BUG?

daviddivad 2005-01-29 04:20:43
delphi6下的indy都是正常

可是在delphi2005下,我用其带的indy9,indy10都不能发中文
如:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
begin
AContext.Connection.IOHandler.WriteLn('你们');
end;
客户端接收显示??
而英文发送是正常的,谁有遇到过?
...全文
295 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
TaoDelphi 2005-02-01
  • 打赏
  • 举报
回复
最终daviddivad解决了方案

s := '你好!'
SomeBytes := Encoding.GetEncoding('GB2312').GetBytes(s);
AContext.Connection.IOHandler.WriteDirect(SomeBytes);
daviddivad 2005-01-31
  • 打赏
  • 举报
回复
可是接收端接别的语言写的server都正常啊
我用VB,delphi6写的server都可和其正常收发
aiirii 2005-01-31
  • 打赏
  • 举报
回复
是你接收端解碼出現問題, 我想!
daviddivad 2005-01-31
  • 打赏
  • 举报
回复
兄弟我已发到你邮箱.麻烦帮我看看在你那边会不会有相同的问题
TaoDelphi 2005-01-31
  • 打赏
  • 举报
回复
我加上你了。
邮件更方便。
现在还没确定到底是不是bug,有了解决方案我会通知你。
如果indy.net实在不行,也可以试试在vcl.net框架下用.net提供的socket控件。

说起bug也是没办法,在这两年的版本中是太多了。但我就是喜欢Delphi,不想放下熟悉的Pascal语法不用。听说VS.net 2005的bug也不少?
daviddivad 2005-01-31
  • 打赏
  • 举报
回复
你非常够朋友,找到好的方法或发现其他问题我们再交流
能否留下QQ号?
我的是23688588
daviddivad 2005-01-31
  • 打赏
  • 举报
回复
因为客户端是个嵌入式设备,无发进行解码工作
说明delphi2005是有很多bug的,我用的过程中发现很多问题,有些可以转个弯解决的我就将就着用
可是越用bug越多
真不知borland是怎么想的,一点都不成熟的产品就拿出来用
之前用delphi8,更是好笑,可以用乱七八糟来形容
TaoDelphi 2005-01-31
  • 打赏
  • 举报
回复
我回信了兄弟。
像是bug,没找到好方法,你先暂时用UTF7Encoding类进行编码/解码吧,这样能行,就是麻烦些。

原来你用的是vcl.net,用vcl是没问题的。
daviddivad 2005-01-31
  • 打赏
  • 举报
回复
TaoDelphi(乐陶陶):
兄弟收到了我的e-mail吗?
急切想知道结果
TaoDelphi 2005-01-30
  • 打赏
  • 举报
回复
我这里很正常。
TaoDelphi 2005-01-30
  • 打赏
  • 举报
回复
worldwidestar@sina.com
worldwidestar@263.net

没错,我是用delphi2005。
daviddivad 2005-01-30
  • 打赏
  • 举报
回复
按你的代码还是出现??,英文和数字都正常,你是用delphi2005吗?
能否留个e-mail,我把我的测试例子发给你看一下?
例子基本就是你的那几行代码,想发到你那边看下是不是出问题
TaoDelphi 2005-01-30
  • 打赏
  • 举报
回复
噢?你用socket控件接收?
下面只是我的实现,有些笨,只是为了简单,不是标准和最优的方法:

发送端
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
lCmd: string;
begin
lCmd := Trim(AContext.Connection.IOHandler.ReadLn);
if lCmd <> '' then
begin
Memo1.Lines.Add(lCmd);
AContext.Connection.IOHandler.WriteLn('您好');
end;
end;

接收端:
把IdTCPClient1的ReadTimeOut设为500,通过按按钮读取缓冲区。

procedure TForm2.Button3Click(Sender: TObject);
begin
Memo1.Lines.Add(IdTCPClient1.IOHandler.ReadLn);
end;
daviddivad 2005-01-30
  • 打赏
  • 举报
回复
也是象我这么发的吗?
客户端用什么接收?能否发个客户端的例子给我测一下?
我用的是D6下的socket控件做的接收程序

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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