Привет всем!
Я столкнулся с такой вещью - использую в своей программе Exec(); из стандартного DOS.TPU, естественно использую {$M X,X,X} и SwapVectors;
в принцепе работает со многими программами, но вот все Dos варианты от Power Quest не катят!!! тоесть ни PartitionMagic, ни PartitionDriveImage - экран начинает мигать и прога завершается с DosError<>0 - кто знает в чем дело???
Возможна неувяка с памятью. PQMagic, насколько я помню требует давольно много нижней памяти, а твоя прога, даже если и маленькая, всяко жрёт порядком.
попробуй урезать память. перенеси стек проги к её концу, обрежь оставшуюся память. хотя даже после этого PQMagic врядли будет работать
нет мне кажется неувязка не с памятью - а глюк процедуры SwapVectors - так как можно создать пустую прогу и она тоже не будет запускать - я пробовал разные варианты директивы {M} в следующей проге
{$M 8192, 0, 16384}
Uses Dos;
begin
{после компиляции прога скопирована в каталог Partition Magic}
SwapVectors;
Exec('pqdi.exe', '')
SwapVectors;
end.
Уважаемый FreeMan если есть возможность объясните поподробнее что значит "перенести стек к концу проги и обрезать..." - вообщем если вы думаете, что причина в этом, то пожайлуста объясните точнее ваши мысли, чтобы до меня дошло.
И почему он не должен работать вообще ведь NC3, NC4, VC5, DN1.5, DN2 - его успешно запускают даже будучи запущенными друг из друга
VC.com -> NCmain.exe -> pqmagic.exe
??? конечно они использую другой способ запуска внешних программ не вызывающий глюка - вот поэтому мне и надо узнать в чем глюк!
VC точно command.com запускает сначала - это заметно, когда тот на дискете хотя в опциях VC есть "Quick execute", но оно кажется глючно немного работает (возможно так же, как и у тебя)
А NC и иже с нимиработают, потомучто грамотно написаны. Они и стек урезают и выгружают вообще всё что можно.
Народ проблема точно не в памяти - я сделал так:
Exec(GetEnv('COMSPEC'), '/c pqmagic.exe') - и все заработало - но это кривоватый выход ведь таким образом подгружается транзитная часть COMMAND.COM - Может кто знает почему не работало без него? Ведь подгрузка command.com - 7Kb резидентной памяти в дополнение к моей проге!
VC между прочим не глючно работает - он как раз использует самый грамотный способ запуска программ! И когда с дискеты грузится - возможно это VC подгружает command.com - а точнее - доргужает транзитную его часть к тому же VC работает в 2-х режимах 12Кб в памяти и 72Кб-(Это и есть Quick Execute) и в обоих режимах запускает Partition Magic без проблем !!
У меня ещё хуже: я перенёс запуск программы в процедуру, и при попытке exec он выдаёт Stack overflow error.
Код в студию !!!