【发布时间】:2014-05-15 12:40:38
【问题描述】:
今天早上我遇到了一个问题,根本无法解决。我正在尝试从 TIdCmdTCPServer 向 TIdTCPClient 发送回复消息,但我收到“?”消息显示非 ANSCII 字符的字符。我发现 Indy 使用 ASCII 编码并尝试更改它,但没有结果。代码如下:
uses IdIOHandler, IdGlobal;
procedure TDMSocket.DataModuleCreate(Sender: TObject);
begin
TIdIOHandler.DefStringEncoding:= TIdTextEncoding.UTF8;
end;
procedure TDMSocket.IdCmdTCPServerLoginCommand(ASender: TIdCommand);
begin
[...]
InformaErros('Usuário ou senha inválidos', ASender);
[...]
end;
procedure TDMSocket.InformaErros(Erro: string; ASender: TIdCommand);
begin
ASender.Reply.Text.Text:= Erro;
end;
这样,我得到以下错误:
此处无法访问属性“DefStringEncoding”
尝试访问 IdCmdTCPServer 的 IOHandler 端口上的 DefStringEncoding 会引发相同的错误。而且我在 GIdDefaultAnsiEncoding 方面没有取得任何成功。
我可以做些什么来发送带有正确字符的消息?
【问题讨论】: