C
chiksa20001
Привет, помогите, пожалуйста, исправить ошибки, я новичок и плохо в этом разбираюсь((( вот такая задача: В памяти компьютера в зашифрованном виде хранится восьмистишье. Компьютер выводит слово, а пользователь должен ввести номер строки и номер позиции слова в строке в виде одного числа. Трехкратный неправильный ввод приводит к предупреждению на экране, что за компьютером злоумышленник, после чего через 30 секунд экран отключается.
Вот к ней код, но форма не выводится, а сразу выключается экран, помогите...
Вот к ней код, но форма не выводится, а сразу выключается экран, помогите...
Код:
var
Form2: TForm2;
sl:TStringList;
_count: byte;
_simb: byte;
mas1, mas2: array[0..130] of byte;
_index: byte;
str1,str2: string;
i: byte;
k: integer;
f,w:SYSTEM.text;
x,y,a,z,b,t,p:String;
implementation
uses Unit1;
{$R *.dfm}
procedure CreateNumber;
var i: byte;
label _new;
begin
Randomize;
While _count < 4 do
begin
_new: _simb:= Random(4) + 1;
Application.ProcessMessages;
X := INTTOSTR(1);
Y := INTTOSTR(2);
A := INTTOSTR(3);
Z:= INTTOSTR(4);
for i:= 0 to 120 do
begin
if _simb = mas1[i] then GOTO _new;
end;
mas1[_index]:= _simb;
Inc(_index);
Inc(_count);
end;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
sl:= TStringList.Create;
try
sl.LoadFromFile('C:\Documents and Settings\User\Рабочий стол\Задача 4\Stih.txt');
finally
sl.Free;
end;
Timer1.Interval := 30000;
AssignFile(Input,'Sti.txt');
reset(Input);
Read(Input,str1);
CloseFile(Input);
edit1.Text:=str1;
CreateNumber;
mas2[0]:= mas1[3];
mas2[1]:= mas1[2];
mas2[2]:= mas1[1];
mas2[3]:= mas1[0];
for i:=0 to 3 do
begin
Edit2.Text:= Edit2.Text + IntToStr(mas1[i]) + ' ';
end;
k:=0;
if FileExists('Stih.txt') then
begin
AssignFile(w,'Stih.txt');
reset(w);
Readln(w,t);
CloseFile(w);
//ShowMessage(t);
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
if (t=p) or (t>p) then
begin
messagedlg('За компьтером здоумышленник',mtError,[mbOk],0);
Application.Terminate;
end;
end;
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
Timer1.Interval := 30000;
end;
procedure TForm2.N11Click(Sender: TObject);
begin
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1); //включает монитор
end;
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
AssignFile(Input,'Sti.txt');
reset(Input);
Read(Input,str1);
CloseFile(Input);
edit1.Text:=str1;
if edit1.Text<>str2 then
begin
k:=k+1;
messagedlg('Неверный пароль! Осталось '+inttostr(3-k)+' попытки',mtError,[mbOk],0);
if k>=3 then
begin
messagedlg('За компьтером здоумышленник',mtError,[mbOk],0);
Timer1.Interval := 30000;
AssignFile(f,'Sti.txt');
Rewrite(f);
Write(f,B);
CloseFile(f);
form1.Close;
end;
end
else
begin
if edit1.Text=str2 then
begin
form1.Hide;
form2.Show;
end;
end;
end;
procedure TForm2.BitBtn3Click(Sender: TObject);
begin
application.Terminate;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
end;
end.