![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
Atos |
![]()
Сообщение
#1
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Помогите, please, новичку. Как из проги на Паскале запустить другую? И какие именно проги можно таким образом запускать - любые исполняемые или только другие паскальские? Я в этом дуб дубом. Знаю, что за это отвечает процедура Exec, у которой первый параметр - имя запускаемого файла, а вот что именно указывает второй параметр? И вроде бы ещё надо использофать SwapVectors ?
Объясните, пожалуйста, как можно подробнее. Заранее спасибо. |
![]() ![]() |
APAL |
![]()
Сообщение
#2
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
Exec (процедура) (модуль Dos)
_________________________________ Выполняет заданную программу с заданной командной строкой. Объявление: Procedure Exec(Path, CmdLine : String); Режим: Real, Protected Замечания: Ошибки сообщаются в переменной DosError. При компилировании программы, которая использует вызов Exec, уменьшите максимальный размер кучи, иначе, возможно, что для запускаемой программы не хватит памяти (DosError = 8). Смотри также: DosError DosExitCode SwapVectors SwapVectors (процедура) (модуль Dos) _______________________________________ Переключает указатели SaveIntXX в модуле System на текущие вектора. Объявление: Procedure SwapVectors; Режим: Real, Protected Замечания: Меняет содержимое указателей SaveIntXX в модуле System на текущее содержимое векторов прерываний. SwapVectors обычно вызывается перед и после обращения к Exec. Это гарантирует, что вызываемый процесс не будет использовать никаких подпрограмм обработки прерываний, установленных текущим процессом и наоборот. И еще, в том же хелпе к пасу: { Пример программы для DosExitCode и Exec } {$M $4000, 0, 0 } { 16Kб стек, нет кучи } Uses Dos; Var ProgramName, CmdLine : String; Begin Write('Имя программы для запуска (с путем) : '); ReadLn(ProgramName); Write('Параметры командной строки ', ProgramName, ' : '); ReadLn(CmdLine); WriteLn('Пробую запустить...'); SwapVectors; Exec(ProgramName, CmdLine); SwapVectors; WriteLn('... вернулся из Exec'); { Была ошибка ? } If DosError<>0 Then WriteLn('Ошибка DOS #', DosError) Else WriteLn('Запуск был удачным. Код выхода = ', DosExitCode); End. -------------------- |
Atos |
![]()
Сообщение
#3
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Cпасибо! Получилось запустить прoграммку. Но, всё-таки, так можно запускать только DOSовские проги или нет? А в Паскале for Windows?
|
Булат Шакиров |
![]()
Сообщение
#4
|
Гость ![]() |
Только DOS-программы.
WinExec Но, Вы сможете выполнить winexec ТОЛЬКО ПОД WINDOWS 3.XX. Под 95-й и выше Ваша программа повиснет/даст ошибку. |
![]() ![]() |
![]() |
Текстовая версия | 25.07.2025 7:01 |