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

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

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

 
 Ответить  Открыть новую тему 
> .chm и pascal
сообщение
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

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


Скомпилировал html файл справки(формат .chm),его требуется вызывать из программы на pascal. Pascal открывает .com и .exe. Мысли две: конвертировать chm в exe и открыть exe из программы(или паскаль открывает только dos-программы???),2я-это написать bat-файл со строчкой start help, и уже bat как-то вызвать из программы.

Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Смотри:
{$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.

запускает этот самый cpp.chm, но проблема в том, что пока ты его не закроешь (т.е., пока субпроцесс не завершится), основная программа не продолжит выполняться...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

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


Цитата
запускает этот самый cpp.chm, но проблема в том, что пока ты его не закроешь (т.е., пока субпроцесс не завершится), основная программа не продолжит выполняться...

Ну,это вполне приемлимо.Буду пробовать!


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

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


Вставил код в процедуру(Doserror мне не нужен), сначала просто главная программа сворачивалась и ничего не происходило,а потом вообще никакой реакции... unsure.gif
Procedure spravka;
{$M $4000,0,0}
begin
SwapVectors;
Exec(getenv('comspec'), '/c hh.exe help.chm');
SwapVectors;
end;
У меня справка называется help, а не cpp, думаю,это не важно)

Добавлено через 9 мин.
Help.chm находится в одной папке с программой.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






А вот теперь верни на место DosError, запусти еще раз программу, и скажи, какое выдается сообщение, чему этот самый DosError равен... Я не просто так его оставил, оно ж для диагностики...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

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


DosError #8

Добавлено через 2 мин.
Это недостаточно памяти для загрузки программы...Файл справки весит 34 кб

Добавлено через 11 мин.
Почему-то не хочет открывать даже однокилобайтовый файл блокнота.Тоже 8я ошибка


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
Файл справки весит 34 кб
Это вообще не проблема. Мой файл cpp.chm весит 462К, и запускается... Можешь прикрепить проект полностью? (можно в PM)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

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


Главный модуль - m_enigma. Через РМ отправить не удалось,ошибка базы данных.

Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Все нормально отправилось через PM, но вот проблема: твой проект не компилируется... А исправлять по второму разу то, что я тебе уже где-то показывал, я не имею никакого желания. Или присоединяй тот проект, который нормально (без ошибки #49) собирается, или ищи баг сам...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

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


Volvo, сорри, случайно прикрепил модули шифрования,вызывающие ошибку 49. Сейчас прикрепил уже скомпилированные рабочие TPU(думаю,исходники модулей для шифрования не понадобятся).

Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Я чужими TPU-шками не пользуюсь (я уже говорил, что не запускаю бинарники. Хочешь я тебе вместо процедуры initgr2 всуну процедуру, которая отформатирует диск, откомпилирую и ты запустишь?)... Но проблема у тебя в том, что ты понапихал в свой проект столько всего, что даже обычная InitGraph завершается с ошибкой "не хватает памяти для инициализации графической подсистемы". Похоже, что проект надо серьезно перерабатывать, тут заменой двух-трех строк не отделаешься.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

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


Volvo ,то есть ты хочешь сказать,что без переработки программы подключить справку не удастся? Просто переработать проект(как я понял,ты имел в виду оптимизацию и уменьшение размера кода) я просто не успею.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Удастся, но...

1) программа будет сворачиваться, поскольку работает в полноэкранном режиме. Т.е., свернулась, справка показалась, закрыл справку, щелкнул на иконку программы в TaskBar-е, чтобы ее развернуть (с учетом пункта 3 это у меня отработало, правда я поставил вызов spravka сразу после инициализации графики);
2) возможно, будет утеряно изображение, хранившееся на экране в момент, когда запускалась справка - придется перерисовывать его;
3) директиву {$M} в главной программе измени на
{$M $4000, 0, 65535}

4) пройдись по программе, хотя бы в процедурах op1 и op2 вынеси одинаковые массивы строк как типизированную константу в начало секции Implementation, чтоб не инициализировать массив так, как ты это делаешь;
5) процедура prisv вообще лишняя: точно так же mas2 выносится как типизированная константа, да и x1, x2, y1, y2 тоже. Randomize вносится в блок инициализации модуля, между begin и end...
6) Процедура Gen: зачем выделяется 52 строки по 255 символов, если используется только по 62? Можно же сделать String[62]... Памяти слишком много? Стек резиновый? Как видишь, нет... То же самое касается и всех остальных переменных (а особенно - массивов) типа String: проверь, не берешь ли ты их "с запасом", здесь он тебе совершенно не нужен - проект большой, лучше не перерасходовать память.
7) в модулях директива {$M} не работает (читай справку TP), можешь смело ее убирать оттуда.

Вроде все smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

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


Volvo, большое спасибо за доходчивое разьяснение моих ошибок good.gif good.gif good.gif Сам бы я эти "щедрости" в памяти очень долго искал smile.gif
+!!!


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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