Delphi XE2 de TELNET Client problemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
megonal
Üye
Mesajlar: 23
Kayıt: 15 Ara 2004 03:06

Delphi XE2 de TELNET Client problemi

Mesaj gönderen megonal »

Merhaba

Daha önce Delphi 7 de yazdığım ve çok iyi bir şekilde kullandığım bir telnet client programının kodları ne yazık ki Delphi XE2 de çalışmıyor.

Sebebi

Kod: Tümünü seç

procedure TForm1.IdTelnet1DataAvailable(Sender: TIdTelnet;
  const Buffer: TArray<System.Byte>);
Daha önce buffer string olarak tanımlı idi şimdi System.Byte diye array oluşturmama istiyor.

Örnek bir kod yazan varsa eklerse çok sevineceğim bir türlü işin içinden çıkamadım...

Daha önceki kod aşağıdaki şekilde delphi 7 de çalışıyor.

Kod: Tümünü seç

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    RichEdit1: TRichEdit;
    IdTelnet1: TIdTelnet;
    ComboBox1: TComboBox;
    Button3: TButton;
    RichEdit2: TRichEdit;
    OpenDialog1: TOpenDialog;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure IdTelnet1DataAvailable(Sender: TIdTelnet; const Buffer: string);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  YAZ,YAZ1,port,TUT:string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if combobox1.Text='SERVER11' then port:='10.10.16.18';

idtelnet1.Host:=port;
idtelnet1.Port:=23;
idtelnet1.Connect();

YAZ:=edit1.Text+#13#10;
YAZ1:=edit2.Text+#13#10;
if idtelnet1.Connected then idtelnet1.IOHandler.Write(YAZ);
if idtelnet1.Connected then idtelnet1.IOHandler.Write(YAZ1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
idtelnet1.Disconnect();
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
richedit1.Clear;
TUT:='LIST1';
if idtelnet1.Connected then idtelnet1.IOHandler.Write(#13#10);
if idtelnet1.Connected then idtelnet1.IOHandler.Write(TUT);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
opendialog1.Filter:='Bütün Dosyalar (*.*)| *.*';
if opendialog1.Execute then
richedit2.Lines.LoadFromFile(opendialog1.FileName);
end;

procedure TForm1.IdTelnet1DataAvailable(Sender: TIdTelnet;
  const Buffer: string);
begin
richedit1.Lines.Text:=richedit1.Lines.Text+buffer;
end;

end.

Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Delphi XE2 de TELNET Client problemi

Mesaj gönderen SimaWB »

Aşağıdaki gibi birşey kullanarak string data elde edebilir ve eskisi gibi çalışmaya devam edebilirsin.

Kod: Tümünü seç

procedure TForm1.IdTelnet1DataAvailable(Sender: TIdTelnet;
  const Buffer: TArray<System.Byte>);
var 
  data: string;
begin
   data := TEncoding.Unicode.GetString( Buffer ); 
end;
There's no place like 127.0.0.1
megonal
Üye
Mesajlar: 23
Kayıt: 15 Ara 2004 03:06

Re: Delphi XE2 de TELNET Client problemi

Mesaj gönderen megonal »

Teşekkür ederim iyi fikir verdin ve sorunu çözdüm...

İleride belki arayan olur diye çözümü yazayım.

Data array olarak ASCII kullanmak gerekiyor.

Kod: Tümünü seç

procedure TForm1.IdTelnet1DataAvailable(Sender: TIdTelnet;
  const Buffer: TArray<System.Byte>);
var
  data: string;
begin

   data:=TEncoding.ASCII.GetString(buffer);
   richedit1.Lines.Text:=richedit1.Lines.Text+data;
Cevapla