Как из разрабатываемой программы запустить внешнюю программу?

Запустить внешнюю программу можно с помощью процедуры Exec:

SwapVectors;
Exec(Путь&ИмяВашейПрограммы, Доп_Параметры);
SwapVectors;

Предварительно для запуска внешней программы необходимо обеспечить оперативную память.

Дело в том, что по умолчанию все 640Kb памяти отдаются разрабатываемой программе. Исправить это можно либо через Options/Memory Sizes../ High heap limit, либо директивой компилятора:

{$M 4096,0,10000}

Здесь первая цифра – память под стек (в стеке размещаются локальные переменные каждой вызываемой процедуры/функции), вторая – нижняя граница памяти, третья – верхняя. В данном примере разрабатываемой программе отдается 10000 байт, а все остальное – внешней программе.

Если же памяти не хватает, необходимо воспользоваться библиотекекой для своппинга (выгрузки из памяти) в XMS/EMS/Disk – перед запуском внешней программы твоя программа вместе со всеми данными переписывается в XMS/EMS или на винт, а после завершения внешней – восстанавливается.

Можно воспользоваться, например, юнитом SPAWNO от Ральфа Брауна, или модулем OpExec из ObjectProf by TurboPower.