unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, ExtCtrls, Buttons, ImgList, Menus, Psock, NMsmtp,
ScktComp, ComCtrls, ToolWin, shellApI, registry;
type Nd = record
q : String;
qnum : integer;
drive : String;
Status : string;
end;
Word2 = record
Value : String;
Sost : Integer;
end;
TTableChar = record
Char : String;
index : integer;
end;
THeader = record
Id : Char;
SzAlphabet : integer;
SzComHeight : integer;
SzComWidth : integer;
end;
TBlock = record
i,j : Byte;
Info : Nd
end;
TLoader = record
Name : String;
FilePath : TFileName;
index : integer;
end;
type
TForm1 = class(TForm)
Panel1: TPanel;
sg1: TStringGrid;
Label1: TLabel;
Panel2: TPanel;
sg2: TStringGrid;
Panel4: TPanel;
Label2: TLabel;
Edit1: TEdit;
Label4: TLabel;
Label5: TLabel;
Edit3: TEdit;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolbarImages: TImageList;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
MainMenu1: TMainMenu;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N1: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
EMail1: TMenuItem;
ToolButton10: TToolButton;
N01101: TMenuItem;
fxx11: TMenuItem;
N19: TMenuItem;
Panel3: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
PrintDialog1: TPrintDialog;
Memo1: TRichEdit;
Label3: TLabel;
N31: TMenuItem;
N20: TMenuItem;
N21: TMenuItem;
N22: TMenuItem;
N23: TMenuItem;
N24: TMenuItem;
wwwlogicru1: TMenuItem;
ServerSocket1: TServerSocket;
Splitter1: TSplitter;
Splitter2: TSplitter;
N25: TMenuItem;
h1: TMenuItem;
StatusBar1: TStatusBar;
N26: TMenuItem;
N27: TMenuItem;
N28: TMenuItem;
N271: TMenuItem;
NMSMTP1: TNMSMTP;
NMSMTP3: TNMSMTP;
procedure FormCreate(Sender: TObject);
function GetData(P : String) : nd;
procedure SaveToFile(Const FileName : String);
procedure OpenFromFile(Const FileName : String);
function FindIndexSost : integer;
function FindIndexChar(p : String) : integer;
function FindIndexArray : integer;
procedure ClearArray;
procedure NetDetect;
procedure PrintWord2;
procedure TotalWork;
procedure ChangeWord(Resource : Nd; indexSost : integer);
procedure sg1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
function GetInfo(Data : String) : Nd;
procedure fxx21Click(Sender: TObject);
procedure d1Click(Sender: TObject);
procedure Image5Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure ooooooooooo1Click(Sender: TObject);
procedure EMail1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure ToolButton7Click(Sender: TObject);
procedure ToolButton8Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N24Click(Sender: TObject);
procedure sg1SetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String);
procedure wwwlogicru1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure N27Click(Sender: TObject);
procedure ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure N28Click(Sender: TObject);
procedure N271Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Aw : array[0..60,0..60] of Nd;
AWord : array[1..60] of Word2;
TableChar : array[1..20] of TTableChar;
TableSost : array[1..60] of TTableChar;
Form1: TForm1;
NameMachine : String;
FlagNext, FlagTotal : Boolean;
SzComHeight, SzComWidth, SzAlphHeight, SzWord : Byte;
NetVariantGetInfo : String;
Loader : array[1..60] of TLoader;
Connectvar : Boolean;
implementation
{$R *.DFM}
function TForm1.GetInfo(Data : String) : Nd;
var
i,j : integer;
St : String;
begin
St := '';
for i := 2 to length(Data) do
begin
if Data[i] = '-' then
begin
j := i;
Break;
end;
St := St + Data[i];
end;
GetInfo.QNum := strtoint(St);
st := '';
for i := j+1 to length(Data) do
begin
if (UpCase(Data[i]) = 'S') or
(UpCase(Data[i]) = 'L') or
(UpCase(Data[i]) = 'R') then Break;
St := St + data[i];
end;
GetInfo.q := 'q';
GetInfo.drive := st;
GetInfo.Status := Data[length(Data)];
end;
procedure TForm1.OpenFromFile(Const FileName : String);
var
i,m,j : integer;
FirstBlock : THeader;
St : String;
Block : TBlock;
Dta : TextFile;
begin
AssignFile(Dta,FileName);
Reset(Dta);
Readln(Dta,NameMachine);
Readln(Dta,SzAlphHeight);
Readln(Dta,SzComHeight);
Readln(Dta,SzComWidth);
for i := 1 to SzAlphHeight do
begin
Readln(Dta,St);
Sg1.Cells[1,i] := St;
end;
for i := 1 to SzComHeight do
for j := 1 to SzComWidth do
begin
ReadLn(Dta,st);
sg2.cells[j,i] := St;
end;
sg1.RowCount := SzAlphHeight+1;
sg2.RowCount := SzComHeight+1;
sg2.ColCount := SzComWidth+1;
label3.Caption := NameMachine;
CloseFile(Dta);
end;
procedure TForm1.SaveToFile(Const FileName : String);
var
i,m,j : integer;
Dtb : File;
Dta : TextFile;
FirstBlock : THeader;
Block : TBlock;
St : String;
begin
SzComHeight := sg2.RowCount-1;
SzComWidth := sg2.ColCount-1;
SzAlphHeight := sg1.RowCount-1;
AssignFile(Dta,FileName);
ReWrite(Dta);
Writeln(Dta,NameMachine);
WriteLn(Dta,SzAlphHeight);
WriteLn(Dta,SzComHeight);
WriteLn(Dta,SzComWidth);
for i := 1 to SzAlphHeight do
WriteLn(Dta,Sg1.Cells[1,i]);
for i := 1 to SzComHeight do
for j := 1 to SzComWidth do
WriteLn(Dta,sg2.cells[j,i]);
CloseFile(Dta);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
reg : TRegistry;
F : TSearchRec;
Dta : TextFile;
i,j : integer;
st : string;
Men : TMenuItem;
hLib : THandle;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion',false);
St := reg.ReadString('SystemRoot');
reg.CloseKey;
sg1.Cells[1,0] := 'çнÀченÈе';
sg1.cells[0,1] := '1';
sg2.cells[0,1] := '1';
SpeedButton1.Enabled := false;
SpeedButton2.Enabled := false;
i := 1;
// ДÎбÀвËенÈе нÀÇвÀнÈе мÀшÈн в СÏÈсÎÊ
if FindFirst('mch\*.mch',faAnyFile,f) = 0 then
begin
repeat
AssignFile(Dta,'mch\'+f.Name);
Reset(dta);
Readln(dta,Loader[i].Name);
CloseFile(dta);
Loader[i].FilePath := f.Name;
Loader[i].Index := i;
inc(i);
until FindNext(f) <> 0;
dec(i);
for j := 0 to 27 do
MainMenu1.Items[1].items[0].items[3].items[j].Visible := false;
for j := 0 to i-1 do
begin
if j = 27 then Break;
MainMenu1.Items[1].items[0].items[3].items[j].Caption := Loader[j+1].Name;
MainMenu1.Items[1].items[0].items[3].items[j].ImageIndex := 17;
MainMenu1.Items[1].items[0].items[3].items[j].Visible := true;
end;
end;
//**********************************
// ïрÎверÊÀ ÊËючÀ реестрÀ
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('\SOFTWARE\KapXimka',false);
st := reg.ReadString('ADMIN');
reg.CloseKey;
if st = '1' then NetDetect;
end;
procedure TForm1.NetDetect;
begin
MainMenu1.Items[3].Visible := true;
end;
procedure TForm1.sg1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
i : integer;
begin
if Key = vk_Down then
begin
i := sg1.row;
Sg1.Cells[0,i+1] := inttostr(i+1);
if i+1 = sg1.RowCount then
if Trim(sg1.Cells[1,i]) <> '' then sg1.RowCount := sg1.RowCount + 1;
end;
if Key = vk_Up then
begin
i := sg1.row;
if (Trim(sg1.cells[1,i]) = '') and (i <> 1) then
sg1.RowCount := sg1.RowCount - 1;
end;
end;
function TForm1.GetData(P : String) : Nd;
var
i : integer;
flag1, flag2,flag3 : boolean;
st1,st : String;
begin
GetData.q := p[1];
flag1 := false;
Flag2 := false;
Flag3 := False;
i := 3;
St := ''; St1 := '';
while i <= Length(P) do
begin
if flag3 = false then
begin
if (Flag1 = false) and (P[i] <> ')') then St1 := St1 + P[i]
else if (P[i] = ')') then begin
Flag1 := true;
GetData.qnum := strtoint(St1);
i := i + 2;
end;
if (flag1 = true) and (flag2 = false) and (P[i] <> '(') then St := St + P[i]
else if (P[i] = '(') then begin
Flag2 := true;
GetData.drive := St;
end;
if (flag2 = true) then
begin
i := i +1;
GetData.Status := p[i];
flag3 := true;
Break;
end;
inc(i)
end;
end;
end;
procedure TForm1.TotalWork;
var
s : string;
p : Nd;
W : Word2;
Res : Nd;
St : String;
i,j : integer;
indArray : integer;
begin
memo1.Clear;
ClearArray;
SzComHeight := sg2.RowCount-1;
SzComWidth := sg2.ColCount-1;
SzAlphHeight := sg1.RowCount-1;
p.q := 'q'; p.qnum := 0; p.drive := '0'; p.Status := 'L';
for i := 1 to sg2.ColCount-1 do
for j := 1 to sg2.RowCount-1 do
begin
St := sg2.Cells[i,j];
if St <> '' then Aw[i,j] := GetInfo(St) else Aw[i,j] := p;
end;
for i := 1 to sg1.RowCount-1 do
begin
TableChar[i].Char := sg1.Cells[1,i];
TableChar[i].index := i;
end;
for i := SzWord to 60 do AWord[i].Sost := -1;
//*************************************************
// AWord - стрÎÊÀ где нÀхÎдÈтÜся сËÎвÎ
// TableChar - àËфÀвÈт
// Aw - тÀбËÈцÀ где нÀхÎдÈтÜся сÀм ÀËгÎрÈтм ТÜюрÈнгÀ
// FindIndexSost - ÏÎÈсÊ нÎмерÀ сÎстÎянÈя ÀÊстÈвнÎгÎ
// FindIndexArray - ÏÎÈсÊ нÎмерÀ сÎстÎянÈя ÀÊстÈвнÎгÎ в мÀссÈве
// q(0-этÎ FindIndexSost)-0(S)
// 4 / 5 / 1 /
// -1 / 1 / -1 / - FindIndexArray
//*************************************************
PrintWord2;
i := FindIndexSost;
W.Sost := i;
while W.Sost <> 0 do
begin
i := FindIndexSost;
indArray := FindIndexArray;
j := FindIndexChar(AWord[indArray].Value);
Res := Aw[j,i];
w.Sost := Res.qnum;
ChangeWord(Res,indArray);
PrintWord2;
end;
St := '';
for j := 1 to 60 do St := St + AWord[j].Value;
Memo1.lines.add(st);
NetVariantGetInfo := st;
//*************************************************
end;
//*************************************************
// function : Functoin for changing word on rules.
// Name: ChangeWord
//*************************************************
procedure TForm1.ChangeWord(Resource : Nd; indexSost : integer);
var
B : array[1..20] of Word2;
i : integer;
begin
if Resource.Status = 'S' then AWord[indexSost].Sost := Resource.qnum;
if Resource.Status = 'L' then
begin
// ДÎбÀвËенÈе 0 с сÎстÎянÈем -1 нÀ Ëевую ÏÎÇÈцÈю
// È сдвÈг всегÎ мÀссÈвÀ вÏрÀвÎ нÀ 1 еденÈцу
if indexSost = 1 then //
begin
//********************************
AWord[indexSost].Sost := -1;
for i := 1 to 20 do
begin
b[i].Value := AWord[i].Value;
b[i].Sost := AWord[i].Sost;
end;
for i := 2 to 20 do
begin
AWord[i].Value := b[i-1].Value;
AWord[i].Sost := AWord[i].Sost;
end;
//*********************************
indexSost := indexSost +1;
end else AWord[indexSost].Sost := -1;
AWord[indexSost-1].Sost := Resource.qnum;
end;
if Resource.Status = 'R' then
begin
AWord[indexSost].Sost := -1;
if AWord[indexSost+1].Value = '' then AWord[indexSost+1].Value := '0';
AWord[indexSost+1].Sost := Resource.qnum;
end;
AWord[indexSost].Value := Resource.Drive;
end;
//*************************************************
procedure TForm1.PrintWord2;
var
i : integer;
St : String;
begin
St := '';
for i := 1 to 60 do
begin
if AWord[i].Sost <> -1 then St := St + 'q('+inttostr(AWord[i].Sost)+')' + AWord[i].Value else
St := St + AWord[i].Value;
end;
memo1.Lines.Add(st);
end;
function TForm1.FindIndexChar(p : String) : integer;
var i : integer;
begin
for i := 1 to 20 do
if TableChar[i].Char = p then
begin
FindIndexChar := i;
Break;
end;
end;
function TForm1.FindIndexSost : integer;
var
i : integer;
begin
for i := 1 to 60 do
if AWord[i].Sost <> -1 then
begin
FindIndexSost := AWord[i].Sost;
Break;
end;
end;
function TForm1.FindIndexArray : integer;
var
i : integer;
begin
for i := 1 to 60 do
if AWord[i].Sost <> -1 then
begin
FindIndexArray := i;
Break;
end;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_f9 then Image5Click(Sender);
end;
procedure TForm1.ClearArray;
var i,j : integer;
begin
for i := 1 to 60 do
for j := 1 to 60 do
begin
Aw[i,j].qnum := 0;
Aw[i,j].drive := '';
Aw[i,j].Status := '';
end;
for i := 1 to 60 do
begin
TableSost[i].Char := '';
TableSost[i].index := 0;
end;
for i := 1 to 20 do
begin
TableChar[i].Char := '';
TableSost[i].index := 0;
end;
end;
procedure TForm1.fxx21Click(Sender: TObject);
begin
sg2.Cells[1,1] := 'q2-1L';
sg2.Cells[2,1] := 'q1-1R';
sg2.Cells[1,2] := 'q3-1R';
sg2.Cells[2,2] := 'q2-1R';
sg2.Cells[1,3] := 'q0-0S';
sg2.Cells[2,3] := 'q0-1S';
sg1.Cells[1,1] := '0';
sg1.Cells[1,2] := '1';
sg1.RowCount := 3;
Sg2.RowCount := 4; Sg2.ColCOunt := 3;
edit1.text := '01110';
end;
procedure TForm1.d1Click(Sender: TObject);
begin
sg2.Cells[1,1] := 'q2-0R';
sg2.Cells[1,2] := 'q0-0S';
sg2.Cells[2,2] := 'q2-0R';
sg1.Cells[1,1] := '0';
sg1.Cells[1,2] := '1';
sg1.RowCount := 3;
Sg2.RowCount := 3; Sg2.ColCOunt := 3;
edit1.text := '01110';
end;
procedure TForm1.Image5Click(Sender: TObject);
var
st : string;
i : integer;
begin
if edit1.Text <> '' then
begin
for i := 1 to 60 do
begin
AWord[i].Value := '';
AWord[i].Sost := 0;
end;
SzWord := length(trim(edit1.text));
for i := 1 to length(trim(edit1.text)) do
begin
AWord[i].Value := edit1.text[i];
if strtoint(edit3.Text) = i then AWord[i].Sost := 1 else AWord[i].Sost := -1;
end;
SpeedButton1.Enabled := true;
SpeedButton2.Enabled := true;
TotalWork;
end
else ShowMessage('ВведÈте ÏрÎверÎчнÎе сËÎвÎ');
end;
procedure TForm1.N1Click(Sender: TObject);
begin
MessageDlg('ïрÎгрÀммÀ нÀÏÈсÀнÀ êÀÏустнÈÊÎвÛм М. (2001 ÀÏреËÜ). гр. ïМè-001(НФè êемГУ), НÎвÎÊуÇнецÊ ',mtConfirmation,[mbOK],0);
end;
procedure TForm1.ooooooooooo1Click(Sender: TObject);
begin
sg2.Cells[1,1] := 'q2-0R';
sg2.Cells[1,2] := 'q3-0L';
sg2.Cells[1,3] := 'q1-1L';
sg2.Cells[1,4] := 'q0-0S';
sg2.Cells[2,1] := 'q2-1R';
sg2.Cells[2,2] := 'q4-0R';
sg2.Cells[2,3] := 'q0-1S';
sg2.Cells[2,4] := 'q2-0S';
sg1.Cells[1,1] := '0';
sg1.Cells[1,2] := '1';
sg1.RowCount := 3;
Sg2.RowCount := 5; Sg2.ColCOunt := 3;
edit1.text := '01110';
end;
procedure TForm1.EMail1Click(Sender: TObject);
begin
ShellExecute(handle,'open','mailto:ximka@yandex.ru',nil,nil,SW_SHOW);
end;
procedure TForm1.ToolButton2Click(Sender: TObject);
begin
if OpenDialog1.Execute then OpenFromFile(OpenDialog1.FileName);
end;
procedure TForm1.ToolButton3Click(Sender: TObject);
begin
IF SaveDialog1.Execute then
SaveToFile(SaveDialog1.FileName+'.mch');
end;
procedure TForm1.ToolButton1Click(Sender: TObject);
var
i,j : integer;
begin
// èнтерфеÉснÛе устÀнÎвÊÈ
SpeedButton1.Enabled := false;
SpeedButton2.Enabled := false;
//*********************************
for i := 1 to sg2.RowCount-1 do
for j := 1 to sg2.ColCount-1 do
sg2.cells[j,i] := '';
sg2.RowCount := 2; sg2.ColCount := 2;
for i := 1 to sg1.RowCount-1 do
for j := 0 to sg1.ColCount-1 do
sg1.cells[j,i] := '';
sg1.RowCount := 2; sg1.ColCount := 2;
edit1.Text := '';
memo1.clear;
ClearArray;
end;
procedure TForm1.ToolButton5Click(Sender: TObject);
var i : byte;
begin
i := sg2.Col;
if (Trim(sg2.Cols[i].Text) = '') and (i <> 1) then sg2.ColCount := sg2.ColCount - 1;
end;
procedure TForm1.ToolButton6Click(Sender: TObject);
begin
sg2.RowCount := sg2.RowCount -1;
end;
procedure TForm1.ToolButton7Click(Sender: TObject);
begin
sg2.RowCount := sg2.RowCount +1;
sg2.Cells[0,Sg2.RowCount] := inttostr(Sg2.RowCount-1);
end;
procedure TForm1.ToolButton8Click(Sender: TObject);
var i : byte;
begin
i := sg2.Col;
if i = sg2.ColCount-1 then
if sg2.ColCount <> sg1.RowCount then
begin
sg2.ColCount := sg2.ColCount + 1;
end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
SaveDialog1.Filter := 'Text File (*.txt)|*.txt|All file (*.*)|*.*';
if SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName+'.txt');
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
Memo1.Lines.Insert(0,'ïрÎцесс рÀбÎтÛ мÀшÈнÛ ТÜюрÈнгÀ');
if PrintDialog1.Execute then
Memo1.Print(PrintDialog1.GetNamePath);
Memo1.Lines.Delete(0);
end;
procedure TForm1.N8Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N24Click(Sender: TObject);
begin
InputQuery('ВведÈте нÀÇвÀнÈе мÀшÈнÛ','МÀшÈнÀ ТÜюрÈнгÀ',NameMachine);
Label3.Caption := NameMachine;
end;
procedure TForm1.sg1SetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String);
begin
sg2.Cells[ARow,0] := Value;
end;
procedure TForm1.wwwlogicru1Click(Sender: TObject);
begin
ShellExecute(handle,'open','www.logic.ru',nil,nil,SW_SHOW);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
//ShowWindow(Application.Handle,SW_HIDE);
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
st : String;
F : TStringStream;
i : integer;
begin
St := Socket.ReceiveText;
if St <> '' then
begin
for i := 1 to 60 do
begin
AWord[i].Value := '';
AWord[i].Sost := 0;
end;
SzWord := Length(st);
for i := 1 to Length(st) do
begin
AWord[i].Value := St[i];
AWord[i].Sost := -1;
end;
AWord[1].Sost := 1;
TotalWork;
st := NetVariantGetInfo;
F := TStringStream.Create(NetVariantGetInfo);
socket.SendText(NetVariantGetInfo);
Socket.SendStream(f);
end;
end;
procedure TForm1.N27Click(Sender: TObject);
begin
ServerSocket1.active := true;
StatusBar1.Panels[0].Text := 'Сервер рÀбÎтÀет';
StatusBar1.Panels[1].Text := 'êÎËÈчествÎ ÏÎдÊËюченÈÉ = 0';
end;
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
StatusBar1.Panels[1].Text := 'êÎËÈчествÎ ÏÎдÊËюченÈÉ = '+inttostr(ServerSocket1.Socket.ActiveConnections);
end;
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
StatusBar1.Panels[1].Text := 'êÎËÈчествÎ ÏÎдÊËюченÈÉ = '+inttostr(ServerSocket1.Socket.ActiveConnections);
end;
procedure TForm1.N28Click(Sender: TObject);
begin
ServerSocket1.Active := false;
StatusBar1.Panels[0].Text := 'Сервер не рÀбÎтÀет';
StatusBar1.Panels[1].Text := '';
end;
procedure TForm1.N271Click(Sender: TObject);
var
st : string;
begin
InputQuery('ВведÈте нÎмер ÏÎртÀ','МÀшÈнÀ ТÜюрÈнгÀ',St);
ServerSocket1.Port := strtoint(St);
MainMenu1.Items[3].Items[2].Caption := 'ïÎрт: '+st;
end;
end.