Введите переменную окружения, но только
uses crt,dos;
var i:integer;
s,st:array[0..200]of char;
c:char;
function setenv(s1,s2:pchar;ower:integer):integer;cdecl;external 'c';
begin
for i:=1 to envcount do
writeln(envstr(i),'=',getenv(envstr(i)));
writeln(' Введите переменную окружения, но только большими буквами.');
readln(s);
if getenv(strpas(s))<>'' then
writeln(getenv(strpas(s)))
else
begin
writeln('Переменной окружения ',s,' не существует');
halt;
end;
writeln('Хотите изменить значение ',s,' нажмите "y" ');
c:=readkey;
if upcase(c)='Y' then
begin
writeln('Введите значение переменной');
readln(st);
if setenv(s,st,1)<0 then
writeln('Значение переменной не поменялось')
else
writeln(setenv(s,st,1),' ',getenv(strpas(s)));
end;
end.
Упражнение 13.56. Напишите функцию sleep(n), задерживающую выполнение программы на n секунд. Воспользуйтесь системным вызовом alarm(n) (будильник) и вызовом pause(), который задерживает программу до получения любого сигнала. Предусмотрите рестарт при получении во время ожидания другого сигнала, нежели SIGALRM. Сохраняйте заказ alarm, сделанный до вызова sleep (alarm выдает число секунд, оставшееся до завершения предыдущего заказа).
uses dos,crt,sysutils,linux;
procedure handler(sig:integer);cdecl;
begin
end;
procedure sleep(count:integer);
var
oldhandler,newhandler:sigactionrec;
begin
writeln('count=',count);
newhandler.handler.sh:=@handler;
(*newhandler.sa_mask:=$ffffffff;*)
newhandler.sa_mask:=0;
sigaction(SIGALRM,@newhandler,@oldhandler);
alarm(count);
pause;
sigaction(SIGALRM,@oldhandler,nil);
end;
begin
repeat
sleep(3);
writeln('Привет');
until keypressed;
end.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий