home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
magazine
/
cmplangm
/
1989_4
/
env
/
key.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1989-02-01
|
2KB
|
103 lines
{bt
(* Turbo Pascal version 4 *)
{$B-,D-,F-,I-,L+,N-,R-,S-,T-,V-}
{$M 4096,0,0}
PROGRAM Key;
{ batch file enhancer }
USES Dos, Crt, Env;
VAR
EnvVar : string;
EnvError : integer;
Regs : Registers;
PROCEDURE CursorOff;
begin
with Regs do
AX := $0300;
Intr($10,Regs);
with Regs do
begin
CX := CX or $2000;
AX := $0100;
end;
Intr($10,Regs);
end; { CursorOff }
PROCEDURE CursorOn;
begin
with Regs do
AX := $0300;
Intr($10,Regs);
with Regs do
begin
CX := CX and $DFFF;
AX := $0100;
end;
Intr($10,Regs);
end; { CursorOn }
FUNCTION UpStr(St : string) : string;
VAR
i : byte;
begin
for i := 1 to Length(St) do
St[i] := UpCase(St[i]);
UpStr := St;
end; { UpStr }
FUNCTION UserSelect : char;
VAR
c : integer;
p : integer;
i : integer;
ch : char; { user selection }
Param : string; { user options }
begin
c := ParamCount;
if c = 0 then
begin
Writeln('Invalid parameter');
Halt;
end
else
begin
Param := '';
{ get user menu options }
for i := 1 to c do
Param := UpStr(ParamStr(i));
{ get user selection }
repeat
ch := UpCase(ReadKey);
p := Pos(ch,Param);
until (p <> 0) or (ch = #3) or (ch = #27);
if (ch = #3) or (ch = #27) then
ch := '0';
UserSelect := ch;
end; { else }
end; { UserSelect }
begin { Key }
CursorOff;
UseCurrentEnv := true;
EnvVar := UserSelect;
WriteEnvVar('KEY',EnvVar,EnvError);
CursorOn;
case EnvError of
1 : Halt(1);
2 : Halt(2);
end; { case }
end. { Key }
{et