Запуск зовнішніх програм

Запуск зовнішніх програм

З програми, написаної на Турбо Паскалі, можна запустити будь-яку іншу готову до роботи програму. Для цього використовується процедура ЕХЕС з бібліотечного модуля DOS. Формат звернення до процедури:

тут <имя> - вираз типу STRING; ім'я файлу з спричиненої програмою; <параметры> - вираз типу STRING; параметри виклику.

Імені запускається програми може передувати шлях до файлу. Параметри передаються запускається програмою у вигляді текстового рядка і можуть бути проаналізовані нею за допомогою двох наступних функцій.

Повертає загальна кількість параметрів виклику програми (значення типу WORD). звернення:

Параметри виклику зазвичай йдуть в командному рядку ДОС відразу за ім'ям спричиненої програми і відокремлюються від цього імені і один від одного пробілами, наприклад:

Тут MYPROG.PAS і A: \ SYSTEM1.SIA - параметри, що передаються програмам TURBO і SIAM.

При виклику програми безпосередньо з середовища Турбо Паскаля їй можна передати параметри за допомогою опції OPTIONS / PARAMETERS (див. Прил.1).

Повертає значення типу STRING, відповідне потрібному параметру виклику. Формат звернення:

тут - вираз типу WORD; порядковий номер параметра.

Зауважимо, що програмою завжди передається параметр, відповідний N = 0. У цьому параметрі ДОС повідомляє повне ім'я запущеної програми із зазначенням диска і каталогу, звідки вона була завантажена.

Використання процедури ЕХЕС має ряд особливостей. Перш за все необхідно відзначити, що сама зухвала програма залишається резидентної в пам'яті, тому вона не повинна займати всю оперативну пам'ять. Обсяг виділеної програмі пам'яті регулюється опцією OPTIONS / MEMORY SIZES (див. Прил.1). За умовчанням параметри LOW HEAP LIMIT і HIGH HEAP LIMIT цієї опції такі (відповідно 0 і 655 360 байт), що викликає програма, написана на Турбо Паскалі, займає весь доступний обсяг пам'яті, і що викликається програма не завантажена. Корисно включити в текст викликає програми директиву компілятора, в якій змінюються прийняті за замовчуванням розміри пам'яті. Наприклад, так:

Така директива обмежує використовувану програмою область стека величиною 2 Кбайта і виключає можливість використання в ній динамічної пам'яті. Зрозуміло, Ви можете встановити і інші значення параметрів в цій директиві.

Специфічні особливості виконання програм Турбо Паскаля вимагають зміни стандартних значень деяких векторів переривань. До них відносяться вектори з наступними шестнадцатерічнимі номерами:

$ 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 визначає специфікацію файлу, що містить командний процесор.

write ( 'Введіть команду ДОС:');

readln (st); if st <> '' Then

Схожі статті