Delphi XE8报错:There is no overloaded version of 'ReadLn' that can be called with these argume
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi XE8报错:There is no overloaded version of 'ReadLn' that can be called with these argume相关的知识,希望对你有一定的参考价值。
indy控件:10.6
客户端:IdTCPClient1.IOHandler.WriteLn(edit1.Text);
服务端:AContext.Connection.IOHandler.ReadLn();
收发中文时乱码,显示几个问号:???????。
查百度后改为:
客户端:IdTCPClient1.IOHandler.WriteLn(edit1.Text,TEncoding.UTF8);
服务端:AContext.Connection.IOHandler.ReadLn(TEncoding.UTF8);
编译时报错:E2250 There is no overloaded version of 'ReadLn' that can be called with these arguments
建议检查一下,ReadLn 的函数原型或帮助。 参考技术B 这种问题的本质其实就是字符编码问题,只要统一下客户端和服务器的字符编码就行。
网上的解决办法一种就是用base64编码后发送,然后另一端解码。
另一种就是在readln和writeln时统一编码格式。如这里回答的:
//客户端写,读类似IdTCPClient1.IOHandler.WriteLn(“XXXXX”,TEncoding.UTF8);//服务器读,写类似str := AContext.Connection.IOHandler.ReadLn(TEncoding.UTF8);
后面一句我亲测正常:temp := IdTCPClient1.IOHandler.ReadLn('',IndyTextEncoding_UTF8);
这里提供另外一种方式:
其实只要一开始设置下IOHanger的DefStringEncoding属性就行了。
uses IdGlobal; //注意要引用这个//客户端初始化时设置DefStringEncodingIdTCPClient1.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8();//服务器在Connect事件中加上procedure TmyServerForm.IdTCPServer1Connect(AContext: TIdContext);beginAContext.Connection.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8();end;
这里的TEncoding和IndyTextEncoding不用太在意,试试就知道用哪个了。
包括DefStringEncoding属性在哪可能也会由于版本和VCL还是FMX而不同。
安装graphviz报错:There is no layout engine support for “dot“
使用丘比特笔记本安装graphviz时,使用
pip install graphviz
但是使用时,创建决策树分类器发现无法显示图像,报错如下:
只需要在丘比特笔记本上输入
!dot -c
再重新运行一次代码,问题就解决了!
以上是关于Delphi XE8报错:There is no overloaded version of 'ReadLn' that can be called with these argume的主要内容,如果未能解决你的问题,请参考以下文章
git pull报错:There is no tracking information for the current branch
esxi报错There is no more space for virtual disk--逻辑卷缩减!
安装graphviz报错:There is no layout engine support for “dot“
安装graphviz报错:There is no layout engine support for “dot“