|
""
""
..
22.11.09
9-4--07
..
22.11.09
2009.
, ,
, -
. . - ,
,
.
,
,
,
,
.
,
. ,
.
.
,
.
- , , .
,
. ,
.
,
, , ,
.
. ,
,
. ,
.
-.
, .
: , ,
.
,
, ,
.
, ,
.
,
.
1
1.1
- ,
, ,
, .
.
().
.
, .
, ,
.
.
1.2
. ,
(16231662).
1968 . ,
,
.
,
.
(),
.
,
.
:
1) ,
;
2)
,
, ;
3)
;
4)
;
5)
""
, ,
;
6)
: , .
, , , ,
.
-
z Z, _ ( ASCII 95).
,
.
-2147483648 +2147483647. , ,
,
. ,
.
.
,
, .
, $ ( 36 ASCII).
- $00000000 $FFFFFFFF.
- :
+
- * / = ,' . : ; < > [ ] ( ) { } ^ @ $ #.
:
<>
<= >= := (* *) (. .).
,
.
- , , , , , ,
, , .
, ( )
63 .
, . ,
,
.
.
, ,
, , ,
NIL.
-
FALSE (), TRUE ().
-
, :
'z' - z;
'' - .
, :
'''' - .
,
# ( 35), :
#97 - ;
#90 - Z;
#39 - ';
#13 - CR.
-
( CR - ),
. ,
, :
'
- ;
'That'
's string.'.
- , ,
:
[1,2,4..7,12]
[blue, red].
( : , ,
)
, ..
. , ,
, .
,
-5520 .
,
,
, .
,
.
().
, ,
, ,
.
,
.
,
.
.
-,
:
,
.
,
.
.
,
.
.
,
, .
.
, . ,
,
.
:
.
-
.
, . , ,
.
, , ,
.
, -
.
.
:
PROCEDURE <> ( <.. . > ) ;
:
FUNCTION <> ( <...> ) :
<>;
<> -
( );
<...> -
;
<> -
.
. ,
, :
Procedure SB(a:
Real; b: Integer; c: Char)
,
.
, ,
Function F(a:
Real; b: Real): Real;
:
Function
F(a,b: Real): Real;
:
.
.
,
.
, ,
:
. , ,
:
Procedure S (a: array [1..10] of Real);
-,
.
, , ,
, .
:
type
atype = array
[1..10] of Real;
Procedure S
(a: atype);
,
:
type
intype =
String [15] ;
outype =
String [30] ;
Function St (s
: intype): outype;
-
,
.
, , ,
(
,
).
:
,
, 8 .
,
.
, True ()
False (), ,
.
If:
If () then
1; else 2;
() -
( True False ); ( 1)
( 2) . True (),
( 1) ; ( 2).
else
, , if
:
If () then
1;
(
1) , True.
( 1) .
, , , True
() False (), .
-
begin,
end.
Case -
. If.
Case
() ,
, . ,
, .
, ,
Case ,
else.
case
, ,
(:).
,
- ( ),
, .
:
While ( ), Repeat ( ) For (
).
While
.
While:
While () do
;
While
. - True (), .
.
Repeat...until
.
Repeat...until :
Repeat 1; 2;
until ().
Repeat...until While:
-
Repeat ,
. While,
False, .;
- Repeat
True (), , While
, True ();
- Repeat
, .
begin...end, While.
Reeat
, , While
.
For ,
For:
For :=(1)
to (2) do - ( , ,
c ); (1) (2) -
, ; -
. 1 .
1. to downto.
For - 1.
-
,
[5].
:
- ;
- ;
- .
, ,
Assign.
.
CR/LF.
. ,
. Text.
:
Var Fi: Text;
,
. .
:
Var F: File;
[6].
. :
Type
TRec = Record
A: Real;
B: Integer;
C: Char;
End;
Var
F : File of
Real;
Q : File of
String[100];
Fr: File of
TRec;
F
.
,
.
Q ,
100. Fr ,
TRec, Type.
2
2.1
,
.
, , , ,
.
:
- ;
-
;
-
10 ;
-
I- , IV- ;
:
- ,
;
:
-
, , ,
.
2.2
Crt. , ,
. -,
, Crt BIOS .
2.3-
Crt.
|
HighVideo |
|
LowVideo |
|
NormVideo |
|
TextBackGround |
|
TextColor |
|
|
ClrEol |
|
ClrScr |
|
DelLine |
, |
GotoXY |
|
|
KeyPressed |
|
ReadKey |
|
|
Sound |
|
NoSound |
|
|
Delay |
|
,
.
, . ,
,
.
:
1) Procedure Zastavka- ,
, ,
, , .
2) Procedure Menu-
.
3) Procedure Password
,
- ,
- (
).
4) Procedure Novoe delo (:
).
5) Procedure Arhieve (),
(:
).
6) Procedure end .
2.3
- , , , , ,
, , , .
, .
,
.
.
, , (a..z) (A..Z). ,
63 .
|
|
|
|
1 |
Num |
Integer |
(: -32768,,,32767;-2). |
2 |
FirsName |
Char |
- (:-128127; -1). |
3 |
Name |
Char |
- (:-128127; -1). |
4 |
FatherName |
Char |
- (:-128127; -1). |
5 |
Date |
Integer |
- (:-32768,,,32767; -2). |
6 |
FirstNameKur |
Char |
(:-128127; -1). |
7 |
NameKur |
Char |
(:-128127; -1). |
8 |
FatherNameKur |
Char |
(:-128127; -1). |
2.4
.1
.2
,
.
. ,
, ,
, .
.
,
.
,
.
, ,
.
,
.
C
1) . ., ..,
. . .
: . / .: . . , 1991. 400 .
2) .., ..
. .: , 1987. 112 .
3) ..
.: , 1987-31 .
4)
: . . / .. , .. , ..
. .: . ., 1990 479 .
5) .. Turbo Pascal. .: 2003-75 .
6) .., ..
Turbo Pascal 7.0 .:
+, .: , 1998. 496 .
7) .. TurboPascal
8) .
. .
9) .. Turbo Pascal. .: 2003-198 .
1.
2.
1
, .
,
.
, ,
.
, .
2
.
3
: , .
.
4
4.1 .
4.1.1
:
- ;
- ;
- 10 ;
- I-
, IV- .
4.1.2. :
-
.
4.2.
:
4.2.1.
.
4.2.2.
.
4.3
4.3.1
IBM .
4.3.2 :
-
Pentium;
-
16;
-
VGA SVGA.
4.4
-
Windows (Windows95,
Windows98,Windows2000,WindowsNT ..), MS-DOS.
5
5.1
,
;
5.2
;
5.3
:
5.3.1
25-30 ,
;
5.3.2
;
6
1- .
(
)
program Baza;
uses crt,
REGUNIT;
begin{Baza
Dannyh}
zastavka; { }
user; {
}
menus; { }
end.{Baza Dannyh}
( Unit )
{******************************************************************}
{ Zastavka - ࠠ
}
{ Makeramka -
}
{ Lines -
}
{ Archieve -
}
{ User -
}
{ Menus - }
{ Password -
, }
{******************************************************************}
Unit REGUNIT;
Interface
uses crt;
const
illcount=100;
NameProg='Baza
dannyh';
PasswordX='password';
Line1='';
mmenu:array
[1..5] of string[16]=(' Novoe delo ',
' ... ',' ... ','
...',
' ');
menunew:array
[1..2] of string[16]=(' ',
' ⬥ ');
menuarch:array
[1..3] of string[16]=(' ',
' 㧨 ',' ⬥ ');
menufind:array
[1..2] of string[16]=(' ',
' ⬥ ');
menuuser:array
[1..2] of string[40]=
(' ',
' 짮 ⥫ ');
simvV : set of
char =
['A'..'Z','a'..'z','0'..'9','_','\',':',
'(',')','!','#','%','^','~','-','''','&','@'];
simvN : set of
char = ['A'..'Z','a'..'z',''..'',' '..''];
simvD : set of
char = ['0'..'9','.'];
simvDIG : set
of char = ['0'..'9'];
krifind: array
[1..8] of string[8]=('number','sur','name','otch',
'dateburn','surdoc','namedoc','otchdoc');
type
ill = record
number:
integer;{ 窨}
sur:
string[20];{ }
name:
string[20];{}
otch:
string[20];{⢮}
dateburn:
string[20];{ }
surdoc:
string[20];{ }
namedoc:
string[20];{ }
otchdoc:
string[20];{⢮ }
end;
masi =
array[1..illcount] of ill;
fff = file of
ill;
max =
array[1..3,1..28] of integer;
var
pass, flag,
open, admin: boolean;
m: max;
numb, numfind,
illind, posx, simv, sim, i: integer;
tempmas:
array[1..9] of string;
masill: masi;
fileill: fff;
Procedure
menucl;
Procedure
Screen(color:byte);
Function
GotoCen(s:string):integer;
Procedure
lines(color:byte);
Procedure
space(n:byte);
Procedure
clear;
Procedure
MakeRamka(x0,y0:integer; s:string; x,y:integer;color,fon:byte);
Procedure
field;
Procedure
archieve;
Procedure
menuarchh;
Procedure
menunewkar;
Procedure
menufinder;
Procedure
user;
Procedure
menus;
Procedure
zastavka;
Procedure
password;
Implementation
procedure
menucl;
var
i:integer;
begin{menucl}
textbackground(blue);
for i:=1 to 20
do
begin
gotoxy(2,i+2);
writeln(' ');
end;
end;{menucl}
Procedure
Screen(color:byte);
Var
i:integer;
begin{screen}
textbackGround(color);
for i:=1 to 25
do
writeln(' ');
gotoXY(1,1);
end;{screen}
Function
GotoCen(s:string):integer;
begin{gotocen}
GotoCen:=(80-length(s))
div 2;
end;{gotocen}
Procedure
lines(color:byte);
var
i:byte;
begin{lines}
textcolor(color);
gotoXY(gotocen(nameprog),1);writeln(NameProg);
write(line1);
for i:=3 to 25
do
begin
gotoxy(19,i);
write('');
end;
textcolor(yellow);
end;{lines}
Procedure
space(n:byte);
Var
i:byte;
begin{space}
for i:=1 to n
do
write(' ');
end;{space}
Procedure
Clear;
var
x,y:byte;
begin{clear}
textbackground(blue);
For y:=3 to 24
do
For x:=20 to
80 do
Begin
gotoxy(x,y);
write(' ');
end;
end;{clear}
Procedure
MakeRamka(x0,y0:integer; s:string; x,y:integer;color,fon:byte);
var
i,j:integer;
begin
{MakeRamka}
textbackground(fon);
textcolor(color);
gotoxy(x0,y0);write('');
for i:=x0+1 to
x-1 do
begin
gotoxy(i,y0);
write('');
end;
Write('');
gotoxy(10+gotocen(s),y0);
textcolor(white);
write(s);
for i:=y0+1 to
y-1 do
begin
j:=x0;
textcolor(color);
gotoxy(j,i);
write('');
textcolor(white);
for j:=x0+1 to
x-1 do
write(' ');
TextColor(color);
write('');
end;
gotoxy(x0,y);
write('');
for i:=x0+1 to
x-1 do
write('');
write('');
textcolor(yellow);
end; {MakeRamka}
procedure
field;
var
i:integer;
begin{field}
MakeRamka(22,3,'Delo
uchschegosya',78,24,white,cyan);
textcolor(black);
gotoxy(24,5);
write(' Dela ');
gotoxy(24,7);
write(' ');
gotoxy(24,9);
write(' ');
gotoxy(24,11);
write(' ');
gotoxy(24,13);
write(' ');
gotoxy(24,15);
write('Familiya
kuratora ');
gotoxy(24,17);
write('Imya
kuratora ');
gotoxy(24,19);
write('Otchestvo
kuratora ');
gotoxy(24,23);
write(' F8 -
');
textbackground(black);
textcolor(white);
for i:=1 to 9
do
begin
gotoxy(50,3+i*2);
write(' ');
end;
end;{field}
procedure
archieve;
var
i:integer;{ 横 }
begin{archieve}
MakeRamka(22,3,' / 㧪 ',78,24,white,cyan);
textcolor(black);
textbackground(cyan);
gotoxy(30,13);
write(' ');
{뢮 ।०}
gotoxy(30,15);
write(' ! 饣 ');
gotoxy(30,16);
write(' , ');
gotoxy(30,17);
write(' ᮤন!');
textbackground(black);
textcolor(white);
gotoxy(40,13);
write(' ');
end;{archieve}
procedure
menuarchh;
var
io, pos, i,
ii, ind: integer;
ch: char;
s: string;
begin{menuarchh}
s:='';
menucl;
ind:=1;
pos:=41;
ii:=1;
archieve;
repeat
repeat
for i:=1 to 3
do
begin
if i=ind
then
begin
textbackground(white);
textcolor(black);
end
else
begin
textcolor(white);
textbackground(black);
end;
gotoxy(2,i*2+1);
write(menuarch[i]);
end;
ch:=readkey;
gotoxy(30,19);
textbackground(cyan);
write(' ');
textcolor(white);
case ch of
#8:{backspace}
if
(s<>'')
then
begin
dec(ii);
delete(s,ii,1);
textbackground(black);
textcolor(white);
gotoxy(40,13);
write(' ');
gotoxy(40,13);
write(s);
end;
#80:
if
ind<>3
then
inc(ind);
#72:
if
ind<>1
then
dec(ind);
else
if
chr(ord(ch)) in simvv
then
if ii<=8
then
begin
gotoxy(40,13);
s:=s+chr(ord(ch));
textbackground(black);
textcolor(white);
write(s);
inc(ii);
end;
end;
until ch=#13;
assign(fileill,s+'.dat');
case ind of
1: begin
rewrite(fileill);
for i:=1 to
illcount do
write(fileill,masill[i]);
close(fileill);
ind:=3;
end;
2: begin
{$i-}
reset(fileill);
io:=ioresult;
{$i+}
If io = 0
then
begin
for i:=1 to
illcount do
read(fileill,masill[i]);
close(fileill);
end;
end;
end;
if (ind = 2)
then
if (io = 0)
then
ind:=3
else
begin
textcolor(red);
textbackground(cyan);
gotoxy(30,19);
write('
!');
end;
until ind=3;
clear;
end;{menuarchh}
procedure
menunewkar;
var
numerr, tmp,
code,ii, posy, i, ind:integer;
ch:char;
tempm:array
[1..9] of string[20];
s,ss:string[20];
sd: char;
errd,
flagg:boolean;
begin{menunewkar}
menucl;
ind:=1;
field;
posy:=1;
ii:=1;
s:='';
if flag
then
numb:=numfind
else
for
i:=illcount downto 1 do
if
(masill[i].number = 0)
then
numb:=i;
{+++++++++++++++++++++}
gotoxy(50,posy*2+3);
write(numb);
if flag
then
begin
str(numb,ss);
tempm[1]:=ss;
tempm[2]:=masill[numb].sur;
tempm[3]:=masill[numb].name;
tempm[4]:=masill[numb].otch;
tempm[5]:=masill[numb].dateburn;
tempm[6]:=masill[numb].surdoc;
tempm[7]:=masill[numb].namedoc;
tempm[8]:=masill[numb].otchdoc;
for i:=1 to 8
do
begin
gotoxy(50,i*2+3);
write(' ');
gotoxy(50,i*2+3);
write(tempm[i]);
end;
end
else
begin
tempm[1]:='';
tempm[2]:='';
tempm[3]:='';
tempm[4]:='';
tempm[5]:='';
tempm[6]:='';
tempm[7]:='';
tempm[8]:='';
tempm[9]:='';
end;
repeat
repeat
for i:=1 to 2
do
begin
if i=ind
then
begin
textbackground(white);
textcolor(black);
end
else
begin
textcolor(white);
textbackground(black);
end;
gotoxy(2,i*2+1);
write(menunew[i]);
end;
gotoxy(50,posy*2+5);
ch:=readkey;
errd:=false;
case ch of
#66:
if admin
then
begin
masill[numb].number:=0;
masill[numb].sur:='';
masill[numb].name:='';
masill[numb].otch:='';
masill[numb].dateburn:='';
masill[numb].surdoc:='';
masill[numb].namedoc:='';
masill[numb].otchdoc:='';
ch:=#13;
ind:=2;
end;
#9: begin
textbackground(black);
textcolor(white);
s:='';
if posy = 8
then
posy:=1
else
inc(posy);
ii:=1;
end;
#83: {delete}
if admin
then
{if ch=chr(0)
{ then }
begin
gotoxy(50,posy*2+5);
write(' ');
s:='';
ii:=1;
end;
#8:{backspase}
if admin
then
if
(s<>'')
then
begin
dec(ii);
delete(s,ii,1);
textbackground(black);
textcolor(white);
gotoxy(50,posy*2+5);
write(' ');
gotoxy(50,posy*2+5);
write(s);
end;
#80:
if ind=1
then
inc(ind);
#72:
if ind=2
then
dec(ind);
else
if admin
then
begin
if (posy=4) or
(posy=8)
then
flagg:=true
else
flagg:=false;
if
((chr(ord(ch)) in simvN) and not(flagg)) or
((chr(ord(ch))
in simvD) and flagg)
then
if ii<=15
then
begin
if flagg
then
begin
case ii of
1,2,4,5,7,8,9,10:
if
not((chr(ord(ch)) in simvdig))
then
errd:=true;
3,6:
if
(ch<>'.')
then
errd:=true;
else
errd:=true;
end;
end;
if not(errd)
then
begin
s:=s+chr(ord(ch));
tempm[posy+1]:=s;
textbackground(black);
textcolor(white);
gotoxy(50,posy*2+5);
write(' ');
gotoxy(50,posy*2+5);
write(s);
inc(ii);
end;
end;
end;
end;
until ch=#13;
case ind of
1: if admin
then
begin
if flag
then
numb:=numfind;
masill[numb].number:=numb;
masill[numb].sur:=tempm[2];
masill[numb].name:=tempm[3];;
masill[numb].otch:=tempm[4];
masill[numb].dateburn:=tempm[5];
masill[numb].surdoc:=tempm[6];
masill[numb].namedoc:=tempm[7];
masill[numb].otchdoc:=tempm[8];
ind:=2
end;
2: begin
dec(numb);
ind:=2
end;
end;
until ind=2;
tempm[posy+1]:=s;
s:='';
clear;
flag:=false;
end;{menunewkar}
procedure
menufinder;{+++++++++++++++++++++++++++++++++++++++++}
var
t, code, tt,
tmp, ii, posy, i, ind:integer;
ch:char;
tempm:array
[1..8] of string[20];
s:string[20];
flagg:boolean;
begin{menufinder}
menucl;
ind:=1;
field;
posy:=1;
ii:=1;
s:='';
for i:=1 to 8
do
tempm[i]:='';
repeat
repeat
for i:=1 to 2
do
begin
if i=ind
then
begin
textbackground(white);
textcolor(black);
end
else
begin
textcolor(white);
textbackground(black);
end;
gotoxy(2,i*2+1);
write(menufind[i]);
end;
gotoxy(50,posy*2+3);
ch:=readkey;
case ch of
#9:
begin
s:='';
if posy = 9
then
posy:=1
else
inc(posy);
for tmp:=1 to
9 do
begin
gotoxy(50,tmp*2+3);
write(' ');
end;
ii:=1;
end;
#8:{backspase}
if
(s<>'')
then
begin
dec(ii);
delete(s,ii,1);
textbackground(black);
textcolor(white);
gotoxy(50,posy*2+3);
write(' ');
gotoxy(50,posy*2+3);
write(s);
end;
#80:
if ind=1
then
inc(ind);
#72:
if ind=2
then
dec(ind);
else
begin
if (posy=1) or
(posy=5) or (posy=9)
then
flagg:=true
else
flagg:=false;
if
((chr(ord(ch)) in simvN) and not(flagg)) or
((chr(ord(ch))
in simvD) and flagg)
then
if ii<=15
then
begin
gotoxy(50,posy*2+3);
s:=s+chr(ord(ch));
textbackground(black);
textcolor(white);
write(s);
inc(ii);
end;
end;
end;
until ch=#13;
if ind=1
then
begin
MakeRamka(22,3,'᮪ :',78,24,white,cyan);
tt:=1;
for tmp:=1 to
illcount do
begin
flag:=false;
val(s,t,code);
case posy of
1: if
((masill[tmp].number = t) and (t<>0)) then flag:=true;
2: if
(masill[tmp].sur = s) then flag:=true;
3: if
(masill[tmp].name = s) then flag:=true;
4: if
(masill[tmp].otch = s) then flag:=true;
5: if
(masill[tmp].dateburn = s) then flag:=true;
6: if (masill[tmp].surdoc
= s) then flag:=true;
7: if
(masill[tmp].namedoc = s) then flag:=true;
8: if
(masill[tmp].otchdoc = s) then flag:=true;
end;
if s=''
then
flag:=false;
if flag
then
begin
textcolor(black);
textbackground(cyan);
gotoxy(40,tt+5);
write(': ',masill[tmp].number);
gotoxy(47,tt+5);
write(' : '+masill[tmp].sur);
inc(tt);
end;
end;
textcolor(black);
textbackground(cyan);
gotoxy(24,4);
write(' 祩:');
textcolor(white);
textbackground(black);
gotoxy(24,5);
write(' ');
gotoxy(24,5);
s:='';
flag:=false;
repeat
ch:=readkey;
if
chr(ord(ch)) in simvdig
then
begin
s:=s+chr(ord(ch));
flag:=true;
val(s,t,code);
if ((t>100)
or (t<0) or (s='00'))
then
begin
s:='';
gotoxy(24,5);
write(' ');
flag:=false;
end;
gotoxy(24,5);
write(' ');
gotoxy(24,5);
write(s);
end;
until
((ch=#13) or (ch=#27));
if ch=#27
then
begin
ind:=2;
flag:=false
end
else
if ((ch=#13)
and flag)
then
begin
ind:=2;
val(s,t,code);
numfind:=t;
end;
end;
until ind=2;
clear;
end;{menufinder}
procedure
user;
var
ind:shortint;
ch:char;
begin {user}
ind:=1;
MakeRamka(22,8,'롥 짮 ⥫:',78,13,white,cyan);
repeat
for i:=1 to 2
do{ᮢ 㭪 롮 }
begin
if i=ind
then
begin
textcolor(black);
textbackground(white)
end
else
begin
textcolor(white);
textbackground(black)
end;
gotoxy(30,9+i);
write(menuuser[i]);
end;
ch:=readkey;
if ((ch=#80)
and (ind=1))
then
inc(ind);
if ((ch=#72)
and (ind=2))
then
dec(ind);
until
ch=#13;{ }
if ind=1
then
password
else
admin:=false;
clear;
end; {user}
procedure
menus;
var
i,
ind:integer;
ch:char;
begin{menus}
flag:=false;
ind:=1;
menucl;
numb:=0;
repeat
repeat
for i:=1 to 5
do
begin
if i=ind
then
begin
textbackground(white);
textcolor(black);
end
else
begin
textcolor(white);
textbackground(black);
end;
gotoxy(2,i*2+1);
write(mmenu[i]);
end;
ch:=readkey;
if ((ch=#80)
and (ind<>5))
then
inc(ind);
if ((ch=#72)
and (ind<>1))
then
dec(ind);
until ch=#13;
case ind of
1: if admin
then
menunewkar;
2: if admin
then
menuarchh;
3: menufinder;
4: user;
end;
if flag then
menunewkar;
until ind=5;
end;{menus}
procedure
zastavka;
var
mart, mart2:
boolean;
schmart:
integer;
begin{zastavka}
mart:=false;
mart2:=false;
schmart:=0;
TextBackGround(Black);
TextColor(Green);
Randomize;
Clrscr;
sim:=0;
repeat
if schmart=80
then mart:=true;
if schmart=100
then mart2:=true;
if schmart=200
then
begin
mart:=false;
mart2:=false;
schmart:=0;
end;
if sim<25
then
begin
repeat
posx:=random(27)+1
until
m[1,posx]=0;
if mart
then
case posx of
9: simv:=84;
10, 23:
simv:=72;
11: simv:=69;
12: simv:=95;
13: simv:=66;
14, 16:
simv:=65;
15: simv:=90;
17, 18, 19:
simv:=33;
else
simv:=random(24)+97
end
else
simv:=random(24)+97;
m[1,posx]:=posx;
m[2,posx]:=simv;
m[3,posx]:=m[3,posx]+1;
sim:=sim+1;
end;
delay(7000);
for i:=1 to 27
do
begin
if
m[1,i]<>0
then
if
not((m[3,i]=12) and mart2 and (m[1,i]>8) and (m[1,i]<20))
then
begin
gotoxy(m[1,i]*3-2,m[3,i]);
write(chr(m[2,i]));
gotoxy(m[1,i]*3-2,m[3,i]-1);
write(' ');
gotoxy(m[1,i]*3-2,m[3,i]);
m[3,i]:=m[3,i]+1;
end;
if
m[3,i]>25
then
begin
m[1,i]:=0;
m[2,i]:=0;
m[3,i]:=0;
gotoxy(m[1,i]*3-2,m[3,i]);
write(chr(m[2,i]));
sim:=sim-1;
end;
end;
inc(schmart);
until
keypressed;
screen(blue);
lines(white);
end;{zastavka}
procedure
password;
var
s:string[16];
i,ii:integer;
ch:char;
begin{password}
MakeRamka(22,8,' :',78,14,white,cyan);
textcolor(white);
textbackground(black);
gotoxy(42,11);
writeln(' ');
gotoxy(42,11);
ii:=0;
s:='';
admin:=false;
repeat
ch:=readkey;
case ch of
#72:;
#75:;
#77:;
#80:;
#8:{backspase}
if
(s<>'')
then
begin
delete(s,ii,1);
dec(ii);
textbackground(black);
textcolor(white);
gotoxy(42,11);
write(' ');
gotoxy(42,11);
for i:=1 to ii
do
write('*');
end;
else
if
(chr(ord(ch)) in simvV)
then
if ii<=15
then
begin
gotoxy(42,11);
s:=s+chr(ord(ch));
textbackground(black);
textcolor(white);
inc(ii);
for i:=1 to ii
do
write('*');
end;
end;
until
((ch=#13) or (ch=#27));
if ch=#27
{ Esc}
then
admin:=false
else
if s=PasswordX
then
admin:=true
else
begin
s:='';
textcolor(red);
textbackground(cyan);
gotoxy(42,13);
write(' !');
gotoxy(42,11);
textcolor(white);
textbackground(black);
write(' ');
gotoxy(42,11);
ch:=readkey;
password;
end;
clear;
end;{password}
.1 ,
ASCII
.2
( : password )
.3
.4
.5
\
.6
,
.7
.8
,
Reg.exe, -
.
( ): )
( :password); ) Esc
.
,
: , , , , .
,
, ()
,
,
, ,
. : (
: , , , .
TAB.
F8.
Enter.
|