трабл с телнетом
и у меня зависает программа при запуске, т.е. в окне memo1 выходит что программа подключилась, и строка ввода логина пароля, и на этом зависает
скрин интерфейся прилагается, а вот и код:
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CheckLst, ComCtrls, ToolWin, Spin, WebComp, WebAdapt,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdTelnet;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
IdTelnet1: TIdTelnet;
procedure IdTelnet1DataAvailable(Sender: TIdTelnet; const Buffer: string);
procedure IdTelnet1Connected(Sender: TObject);
procedure Memo1KeyPress(Sender: TObject; var Key: Char);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
IdTelnet1.Terminal:='vt100';
IDTelnet1.Host:= Edit1.Text;
IDTelnet1.Port:= strtoint(Edit2.Text);
IDTelnet1.Connect;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
IDTelnet1.Disconnect;
end;
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
if IdTelnet1.Connected then
IdTelnet1.SendCh(Key);
end;
procedure TForm1.IdTelnet1Connected(Sender: TObject);
begin
Memo1.Lines.Add('Клиент подключен.');
Memo1.Lines.Add ('Можете выполнять команды');
Memo1.Lines.Add('') ;
end;
procedure TForm1.IdTelnet1DataAvailable(Sender: TIdTelnet; const Buffer: string);
const
CR = #13;
LF = #10;
var
Start, Stop: Integer;
begin
Memo1.Lines.Add('') ;
Start := 1;
Stop := Pos(CR, Buffer);
if Stop = 0 then
Stop := Length(Buffer) + 1;
while Start <= Length(Buffer) do
begin
Memo1.Lines.Strings[Memo1.Lines.Count - 1] :=
Memo1.Lines.Strings[Memo1.Lines.Count - 1] +
Copy(Buffer, Start, Stop - Start);
if Buffer[Stop] = CR then
begin
Memo1.Lines.Add('');
end;
Start := Stop + 1;
if Start > Length(Buffer) then
Break;
if Buffer[Start] = LF then
Start := Start + 1;
Stop := Start;
while (Buffer[Stop] <> CR) and (Stop <= Length(Buffer)) do
Stop := Stop + 1;
end;
end;
end.
Боже мой, когда вы перестанете читать эту дрянь?!
Естественно, это ж флёнов. Он противопоказан нормальным программистам. Выкинь его в ближайшую речку. Посмотри ветку про книги и читай их. Тогда ничего не будет зависать, если конечно руки нормальные.
зависает после коннекта, т.е. выходит приглашение "login:"
и на этом программа виснет:confused:
Естественно, это ж флёнов. Он противопоказан нормальным программистам. Выкинь его в ближайшую речку. Посмотри ветку про книги и читай их. Тогда ничего не будет зависать, если конечно руки нормальные.
а я тут в какой то ветке видел рекомендацию почитать как раз к эту книгу :cool:
спасибы товарищ, ща почитаем
я думал ссылки на электронные версии :cool:
а где можно что нибудь подобное скачать? т.к. покупать их нет возможности (доставка СА не предусмотрена)
и на этом программа виснет:confused:
тоесть на IDTelnet1.Connect; ? это основной поток зависает..
кстати у тебя обращения к memo не синхронизированы из IdTelnet1Connected, а это уже другой поток если я ничего не путаю. Вполне может быть из-за этого!