为什么TIdTextEncoding.Default未声明?

Fri*_*iso 1 delphi indy

我尝试构建我从http://sourceforge.net/projects/indy10clieservr/获得的第一个客户端项目,但它表示来自第62行的TIdTextEncoding和Default都是未声明的.我没有任何机会,所以可能导致这种情况?

完整代码:界面

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdGlobal;

type
  TClientForm = class(TForm)
    CheckBoxConnectDisconnet: TCheckBox;
    ButtonSendString: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    IdTCPClient1: TIdTCPClient;
    procedure CheckBoxConnectDisconnetClick(Sender: TObject);
    procedure ButtonSendStringClick(Sender: TObject);
    procedure IdTCPClient1Connected(Sender: TObject);
    procedure IdTCPClient1Disconnected(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  ClientForm: TClientForm;

implementation

{$R *.dfm}

{ TForm1 }

procedure TClientForm.ButtonSendStringClick(Sender: TObject);
var
  LLine: String;
begin

  IdTCPClient1.IOHandler.WriteLn(Edit1.Text, TIdTextEncoding.Default);
  Edit1.Text := '';
  LLine := IdTCPClient1.IOHandler.ReadLn();
  if ( LLine = 'OK' ) then
      Memo1.Lines.Add('Server says it has received your String');

end;

procedure TClientForm.CheckBoxConnectDisconnetClick(Sender: TObject);
begin
  if ( CheckBoxConnectDisconnet.Checked = True ) then
  begin
    IdTCPClient1.Host := '127.0.0.1';
    IdTCPClient1.Port := 6000;
    IdTCPClient1.Connect;
  end
  else
    IdTCPClient1.Disconnect;
end;

procedure TClientForm.IdTCPClient1Connected(Sender: TObject);
begin
  Memo1.Lines.Add('Client connected with server');
end;

procedure TClientForm.IdTCPClient1Disconnected(Sender: TObject);
begin
  Memo1.Lines.Add('Client disconnected from server');
end;

end.
Run Code Online (Sandbox Code Playgroud)

mjn*_*mjn 9

这个项目在sourceforge主页上只列出了Delphi 2010,XE和XE2,所以我猜它还没有更新到更新的Indy版本.

TIdTextEncoding如Indy ChangeLog博客中所述,在Indy 10.6中删除了:

Indy 10.6已经发布

IdGlobal.TIdTextEncoding类已被替换为新的IdGlobal.IIdTextEncoding refcounted接口,该接口不再依赖于SysUtils.TEncoding(Embarcadero)或System.Text.Encoding(.NET)(尽管如果仍需要使用,仍会提供包装器他们与Indy).因此,不推荐使用IndyXXXEncoding()函数来支持新的IndyTextEncoding_XXX()函数.

Indy 10.6引入了一项新IndyTextEncoding_OSDefault()功能作为替代品TIdTextEncoding.Default.(见这里)