Всем привет!
Так вот, прогу свою закончил. Данная программулина предназначена для оборудования Алкатель ISAM 7301. Все работает. Но ... не стал применять финты которые вы рекомендовали, их просто не получится там применить, наверное, я так думаю, на половину, в общем код(предупреждаю код безобразен):
Код:
unit dslam;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdTelnet;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Edit1: TEdit;
Edit2: TEdit;
ComboBox2: TComboBox;
Edit3: TEdit;
Edit4: TEdit;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
Button1: TButton;
Memo1: TMemo;
Edit6: TEdit;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Button2: TButton;
Button3: TButton;
IdTelnet1: TIdTelnet;
Label7: TLabel;
CheckBox3: TCheckBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure Edit6KeyPress(Sender: TObject; var Key: Char);
procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure ComboBox2KeyPress(Sender: TObject; var Key: Char);
// procedure N4Click(Sender: TObject);
// procedure IdTelnet1Connect(Sender: TObject);
procedure IdTelnet1DataAvailable(Sender: TIdTelnet;
const Buffer: String);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button4Click(Sender: TObject);
// procedure IdTelnet1Connected(Sender: TObject);
// procedure N6Click(Sender: TObject);
// procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
serv, login, pass: string;
i: byte;
implementation
{$R *.dfm}
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
case Key of
'0'..'9': key:=key;
'.', ',': key:='.';
#8: key:=key;
else key:=#0;
end;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': key:=key;
'.', ',': key:='.';
#8: key:=key;
else key:=#0;
end;
end;
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': key:=key;
'.', ',': key:='.';
#8: key:=key;
else key:=#0;
end;
end;
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': key:=key;
'.', ',': key:='.';
#8: key:=key;
else key:=#0;
end;
end;
procedure TForm1.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': key:=key;
'.', ',': key:='.';
#8: key:=key;
else key:=#0;
end;
end;
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': key:=key;
'.', ',': key:='.';
#8: key:=key;
else key:=#0;
end;
end;
procedure TForm1.ComboBox2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': key:=key;
'.', ',': key:='.';
#8: key:=key;
else key:=#0;
end;
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;
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.Lines.Clear;
// if idtelnet1.Connected then begin
// idtelnet1.Disconnect;
// memo1.Lines.Add('Соединение разорвано!');
// end;
combobox1.ItemIndex:=-1;
combobox2.ItemIndex:=-1;
Edit1.Text:=('0');
Edit2.Text:=('0');
Edit3.Text:=('0');
Edit4.Text:=('0');
Edit6.Text:=('0');
checkbox1.Checked:=false;
checkbox2.Checked:=false;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var
cmd:string;
begin
memo1.Clear;
if idtelnet1.Connected then begin cmd:='logout' + #13; for i:=1 to length(cmd) do idtelnet1.SendCh(cmd[i]); end;
if combobox1.ItemIndex = 0 then begin memo1.Lines.Add('telnet 10.244.00.02'); serv:='10.244.00.02'; end; //if
... здесь было много-много оборудования
if combobox1.ItemIndex = 163 then begin memo1.Lines.Add('telnet 10.244.00.03 '); serv:='10.244.0.03'; end;
idtelnet1.Host:=serv;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
cmd0, cmd,login,pass: string;
vpi: byte;
begin
vpi:=strtoint(edit6.Text);
login:='superlogin';
pass:='superpassword';
IF vpi > 0 then begin
if not idtelnet1.Connected then begin
idtelnet1.Connect;
for i:=1 to length(login) do idtelnet1.SendCh(login[i]);
idtelnet1.SendCh(#13);
for i:=1 to length(pass) do idtelnet1.SendCh(pass[i]);
idtelnet1.SendCh(#13);
memo1.Lines.Add('Ñîåäèíåíèå óñòàíîâëåíî ñ îáîðóäîâàíèåì: ' + combobox1.Text + ', IP-àäðåñ: ' + serv);
end; //if not
cmd0:='info configure xdsl line 1/1/' + Edit1.Text + '/' + Edit2.Text + ' | match exact:service' + #13;
for i:=1 to length(cmd0) do idtelnet1.SendCh(cmd0[i]);
cmd:='info configure bridge port 1/1/' + Edit1.Text + '/' + Edit2.Text + ':0:' + Edit6.Text + ' | match exact:vlan-id' + #13;
for i:=1 to length(cmd) do idtelnet1.SendCh(cmd[i]);
end; //if vpi
end;
procedure TForm1.Button4Click(Sender: TObject);
var
com19: string;
begin
com19:='logout' + #13;
for i:=1 to length(com19) do idtelnet1.SendCh(com19[i]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
slot, port, vpi{, i, j}: byte;
ovlan, nvlan, prof: integer;
cmd, cmd0, com1, com2, com3, com4, com5, com6, com7, com8, com9, com10, com11, com12, com13, com14, com15, com16, com17, login, pass: string;
begin
login:='superlogin';
pass:='superpassword';
slot:=StrToInt(Edit1.Text);
port:=StrToInt(Edit2.Text);
prof:=combobox2.ItemIndex+200;
vpi:=strtoint(edit6.Text);
ovlan:=StrToInt(Edit3.Text);
nvlan:=StrToInt(Edit4.Text);
if (slot {and port} > 0) and (port > 0) then begin
if not idtelnet1.Connected then begin
idtelnet1.Connect;
for i:=1 to length(login) do idtelnet1.SendCh(login[i]);
idtelnet1.SendCh(#13);
for i:=1 to length(pass) do idtelnet1.SendCh(pass[i]);
idtelnet1.SendCh(#13);
memo1.Lines.Add('Ñîåäèíåíèå óñòàíîâëåíî ñ îáîðóäîâàíèåì: ' + combobox1.Text + ', IP-àäðåñ: ' + serv);
end; //if not
|