IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Проблемы Exec в Паскале, не работают нек. программы
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 9

Репутация: -  0  +


Привет всем!

Я столкнулся с такой вещью - использую в своей программе Exec(); из стандартного DOS.TPU, естественно использую {$M X,X,X} и SwapVectors;
в принцепе работает со многими программами, но вот все Dos варианты от Power Quest не катят!!! тоесть ни PartitionMagic, ни PartitionDriveImage - экран начинает мигать и прога завершается с DosError<>0 - кто знает в чем дело???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Возможна неувяка с памятью. PQMagic, насколько я помню требует давольно много нижней памяти, а твоя прога, даже если и маленькая, всяко жрёт порядком.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


попробуй урезать память. перенеси стек проги к её концу, обрежь оставшуюся память. хотя даже после этого PQMagic врядли будет работать


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 9

Репутация: -  0  +


нет мне кажется неувязка не с памятью - а глюк процедуры SwapVectors - так как можно создать пустую прогу и она тоже не будет запускать - я пробовал разные варианты директивы {M} в следующей проге

{$M 8192, 0, 16384}
Uses Dos;

begin

{после компиляции прога скопирована в каталог Partition Magic}
SwapVectors;
Exec('pqdi.exe', '')
SwapVectors;

end.


- один хрен не работает собираюсь ближайшее время попробовать запустить с помощью Exec( getEnv('COMSPEC'), '/c pqdi.exe'); или может самому вызвать через Int21h, но должно ведь и так работать -

И вообще глюк такой странный - Partition не просто не запускается, а заливает весь экран красным фоном - выдает эмблему, затем Please Loading, и потом уже выкидывает - экран продолжает моргать красным. Возможно Partition использует нестандартный способ переключения вмдеорежима, а SwapVectors не полностью восстанавливает адреса DOS прерываний?

И вообще попоробуйте приведенный фрагмент кода с любым DOS продуктом от Partition - PM7, PM8, PM6, PQDI, PQDC - у меня везде не работает! Может у вас ситуация иначе? Я использую BP70.

а вообще если подгружен Emm386.exe - то Partition это диагностирует при запуске и говорит мол буду юзать только 32 МБ, но загружается и работает дальше вполне нормально! - это в досе а не через мою прогу! поэтому я думаю что дело не в памяти.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 9

Репутация: -  0  +


Уважаемый FreeMan если есть возможность объясните поподробнее что значит "перенести стек к концу проги и обрезать..." - вообщем если вы думаете, что причина в этом, то пожайлуста объясните точнее ваши мысли, чтобы до меня дошло.

И почему он не должен работать вообще ведь NC3, NC4, VC5, DN1.5, DN2 - его успешно запускают даже будучи запущенными друг из друга

VC.com -> NCmain.exe -> pqmagic.exe

??? конечно они использую другой способ запуска внешних программ не вызывающий глюка - вот поэтому мне и надо узнать в чем глюк!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


VC точно command.com запускает сначала - это заметно, когда тот на дискете smile.gif хотя в опциях VC есть "Quick execute", но оно кажется глючно немного работает (возможно так же, как и у тебя)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






А NC и иже с нимиработают, потомучто грамотно написаны. Они и стек урезают и выгружают вообще всё что можно.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





Группа: Пользователи
Сообщений: 9

Репутация: -  0  +


Народ проблема точно не в памяти - я сделал так:

Exec(GetEnv('COMSPEC'), '/c pqmagic.exe') - и все заработало - но это кривоватый выход ведь таким образом подгружается транзитная часть COMMAND.COM - Может кто знает почему не работало без него? Ведь подгрузка command.com - 7Kb резидентной памяти в дополнение к моей проге!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





Группа: Пользователи
Сообщений: 9

Репутация: -  0  +


VC между прочим не глючно работает - он как раз использует самый грамотный способ запуска программ! И когда с дискеты грузится - возможно это VC подгружает command.com - а точнее - доргужает транзитную его часть к тому же VC работает в 2-х режимах 12Кб в памяти и 72Кб-(Это и есть Quick Execute) и в обоих режимах запускает Partition Magic без проблем !!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






У меня ещё хуже: я перенёс запуск программы в процедуру, и при попытке exec он выдаёт Stack overflow error.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Код в студию !!!
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 21.09.2020 20:55
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name