TForm1 = class(TForm)
GroupBox1: TGroupBox;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SG1: TStringGrid;
SG2: TStringGrid;
StaticText1: TStaticText;
T1: TStringGrid;
T2: TStringGrid;
T3: TStringGrid;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
SpeedButton7: TSpeedButton;
procedure SpeedButton6Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
private
{ Private declarations }
procedure Rashchet;
public
{ Public declarations }
end;
var
Form1: TForm1;
a:array[1..3,0..3,0..3]of byte;{Массивы полей [№ звена, № коммутатора, Выход]}
Num,AK,H,k:word; {Дополнительные переменные}
mas,mas2,mas3,E,Kom1,Kom2:byte;
implementation
uses Unit2;
{$R *.dfm}
{Процедура расчета пути}
procedure TForm1.Rashchet;
var i,j:word;
OK:boolean;
begin
OK:=false; {Переменная OK говорит о результатах расчета (по умолчанию)}
for i:=0 to 3 do
begin
mas:=a[1,i,k]; {просматриваем каждый АК (коммутатор А)}
if mas=1 then {Если свободен (=1), то}
for j:=0 to 3 do
begin
mas2:=a[2,i,j]; {просматриваем коммутатор B}
if mas2=1 then {Если свободен (=1), то}
if a[3,H,j]=1 then {Если есть выход на заданный путь (=1)}
begin
OK:=true; {результат расчета положителен}
SG2.cells[Num,0]:=inttostr(AK); {записываем номер АК в БЗ ППК}
E:=j;
Kom1:=i;
Kom2:=i*4+j;
Speedbutton5.Enabled:=true; {активируем кнопки обработки информации}
Speedbutton4.Enabled:=true;
Speedbutton7.Enabled:=true;
EXIT; {Выходим из цикла}
end;
end;
end;
if OK=false then {если результат расчета отрицательный (занята линия)}
begin
Speedbutton4.Enabled:=false; {Деактивируем кнопки обработки информации}
Speedbutton5.Enabled:=false;
Speedbutton7.Enabled:=false;
SG2.cells[Num,1]:=inttostr(AK); {записываем номер АК в БЗ КПЗ}
end;
end;
{реакция на нажатие кнопки «Выход»}
procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
form1.Close; {Завершаем программу}
end;
{Процесс создания первой формы приложения}
procedure TForm1.FormCreate(Sender: TObject);
var i:byte;
R:TGridRect;
begin
SG1.Cells[0,0]:='№АК'; {Подписываем столбцы и строки таблиц}
SG1.Cells[0,1]:='НАПР';
SG2.Cells[0,0]:='БЗ ППК';
SG2.Cells[0,1]:='БЗ КПЗ';
for i:=0 to 3 do
begin
T1.cells[0,i+1]:=inttostr(i);
T1.cells[i+1,0]:=inttostr(i);
T2.cells[0,i+1]:=inttostr(i);
T2.cells[i+1,0]:=inttostr(i);
T3.cells[0,i+1]:=inttostr(i);
T3.cells[i+1,0]:=inttostr(i);
end;
R.Left:=1;R.Top:=1;R.Right:=4;R.Bottom:=4; {закрашиваем таблицы}
T1.Selection:=R;
T2.Selection:=R;
T3.Selection:=R;
R.Left:=1;R.Top:=0;R.Right:=10;R.Bottom:=1;
SG1.Selection:=R;
SG2.Selection:=R;
Num:=0; {номер эксперимента =0}
end;
{Реакция на нажатие кнопки «Задать начальные данные»}
procedure TForm1.SpeedButton1Click(Sender: TObject);
var i,j:byte;
begin
randomize; {Заполняем таблицы}
for i:=1 to 4 do
for j:=1 to 4 do
begin
a[1,i-1,j-1]:=random(10)mod 2;
a[2,i-1,j-1]:=random(10)mod 2;
a[3,i-1,j-1]:=random(10)mod 2;
T1.Cells[i,j]:=inttostr(a[1,i-1,j-1]);
T2.Cells[i,j]:=inttostr(a[2,i-1,j-1]);
T3.Cells[i,j]:=inttostr(a[3,i-1,j-1]);
end;
SpeedButton1.Enabled:=false; {деактивируем эту кнопку}
SpeedButton2.Enabled:=true; {активируем «Задать АК»}
SpeedButton3.Enabled:=true; {и «Очистить»}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.