Скомпилировал html файл справки(формат .chm),его требуется вызывать из программы на pascal. Pascal открывает .com и .exe. Мысли две: конвертировать chm в exe и открыть exe из программы(или паскаль открывает только dos-программы???),2я-это написать bat-файл со строчкой start help, и уже bat как-то вызвать из программы.
Смотри:
{$M $4000,0,0 } { 16K stack, no heap }
uses Dos;
begin
SwapVectors;
Exec(getenv('comspec'), '/c hh.exe cpp.chm');
SwapVectors;
WriteLn('...back from Exec');
if DosError <> 0 then WriteLn('Dos error #', DosError)
else WriteLn('Exec successful. Child process exit code = ', DosExitCode);
end.
Вставил код в процедуру(Doserror мне не нужен), сначала просто главная программа сворачивалась и ничего не происходило,а потом вообще никакой реакции...
Procedure spravka;У меня справка называется help, а не cpp, думаю,это не важно)
{$M $4000,0,0}
begin
SwapVectors;
Exec(getenv('comspec'), '/c hh.exe help.chm');
SwapVectors;
end;
А вот теперь верни на место DosError, запусти еще раз программу, и скажи, какое выдается сообщение, чему этот самый DosError равен... Я не просто так его оставил, оно ж для диагностики...
DosError #8
Добавлено через 2 мин.
Это недостаточно памяти для загрузки программы...Файл справки весит 34 кб
Добавлено через 11 мин.
Почему-то не хочет открывать даже однокилобайтовый файл блокнота.Тоже 8я ошибка
Главный модуль - m_enigma. Через РМ отправить не удалось,ошибка базы данных.
Все нормально отправилось через PM, но вот проблема: твой проект не компилируется... А исправлять по второму разу то, что я тебе уже где-то показывал, я не имею никакого желания. Или присоединяй тот проект, который нормально (без ошибки #49) собирается, или ищи баг сам...
Volvo, сорри, случайно прикрепил модули шифрования,вызывающие ошибку 49. Сейчас прикрепил уже скомпилированные рабочие TPU(думаю,исходники модулей для шифрования не понадобятся).
Я чужими TPU-шками не пользуюсь (я уже говорил, что не запускаю бинарники. Хочешь я тебе вместо процедуры initgr2 всуну процедуру, которая отформатирует диск, откомпилирую и ты запустишь?)... Но проблема у тебя в том, что ты понапихал в свой проект столько всего, что даже обычная InitGraph завершается с ошибкой "не хватает памяти для инициализации графической подсистемы". Похоже, что проект надо серьезно перерабатывать, тут заменой двух-трех строк не отделаешься.
Volvo ,то есть ты хочешь сказать,что без переработки программы подключить справку не удастся? Просто переработать проект(как я понял,ты имел в виду оптимизацию и уменьшение размера кода) я просто не успею.
Удастся, но...
1) программа будет сворачиваться, поскольку работает в полноэкранном режиме. Т.е., свернулась, справка показалась, закрыл справку, щелкнул на иконку программы в TaskBar-е, чтобы ее развернуть (с учетом пункта 3 это у меня отработало, правда я поставил вызов spravka сразу после инициализации графики);
2) возможно, будет утеряно изображение, хранившееся на экране в момент, когда запускалась справка - придется перерисовывать его;
3) директиву {$M} в главной программе измени на
{$M $4000, 0, 65535}
Volvo, большое спасибо за доходчивое разьяснение моих ошибок Сам бы я эти "щедрости" в памяти очень долго искал
+!!!