Запуск внешних программ
Специфические особенности исполнения программ Турбо Паскаля требуют изменения стандартных значений некоторых векторов прерываний. К ним относятся векторы со следующими шестнадцатеричными номерами:
$00, $02, $18, $23, $24, $34, $35, $36, $37, $38, $39, $ЗА, $ЗВ, $ЗС, $3D, $3E, $3F, $75.
Начальные значения этих векторов сохраняются в восемнадцати переменных с именами SA VEINTXX из библиотечного модуля SYSTEM, где XX – шестнадцатеричный номер прерывания. Поэтому непосредственно перед запуском внешней программы и сразу после возврата из нее рекомендуется вызывать библиотечную процедуру без параметров SWAPVECTORS, которая обменивает содержимое векторов прерывания и перечисленных переменных.
Программа из примера 11.4 читает с клавиатуры любую команду ДОС, затем вызывает командный процессор COMMAND. COM операционной системы и передает ему эту команду.
Обратите внимание: для указания файла COMMAND.COM и пути к нему используется обращение к библиотечной функции GETENV, с помощью которой можно получить параметры настройки операционной системы. В частности, параметр COMSPEC определяет спецификацию файла, содержащего командный процессор.
Пример 11.4.
{$М 1024, 0, 0} Uses DOS; var st: string [79]; begin write ('Введите команду ДОС: '); readln (st); if st <> '' then begin st: = '/C '+st; SwapVectors; Exec (GetEnv ('COMSPEC'), st); SwapVectors end end.
Функция ENVCOUNT
Возвращает значение типа INTEGER, в котором содержится общее количество установленных в ДОС параметров. Обращение:
ENVCOUNT
Функция ENVSTR
Возвращает значение типа STRING, содержащее имя и значение нужного параметра настройки операционной системы. Формат обращения:
ENVSTR (<D>)
Здесь <D> – выражение типа INTEGER; номер параметра.
Эта функция возвращает строку типа NAME-VALUE, где NAME – имя, a VALUE – значение соответствующего параметра настройки.
Функция GETENV
Возвращает значение типа STRING, в котором содержится параметр настройки ДОС. Формат обращения:
GETENV (<имя>)
Здесь <имя> – выражение типа STRING; имя параметра.
Эта функция имеет параметр обращения NAME, а возвращает значение VALUE (см. функцию ENVSTR).