Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2009, 16:27   #1
jungle
Заблокирован
 
Регистрация: 22.11.2008
Сообщений: 65
Вопрос Компиляция HTML в exe-файл

Встречали, наверное, электронные книги в формате .exe?
Так вот, как это делают разные проги (которые еще и не бесплатны), может кто знает?
jungle вне форума Ответить с цитированием
Старый 21.09.2009, 16:31   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Ну дык есть компонент - TWebBrowser и в него можно загрузить текст.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 21.09.2009, 17:07   #3
jungle
Заблокирован
 
Регистрация: 22.11.2008
Сообщений: 65
По умолчанию

Вот у меня 50 .htm файлов, я могу их загружать в прогу с TWebBrowser, а как сделать один .exe файл?
jungle вне форума Ответить с цитированием
Старый 21.09.2009, 17:11   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Можно динамически создавать столько браузеров, сколько у тебя файлов + даже еще один для вывода списков файлов или содержания, при выборе пункта - либо грузить из памяти текст страницы и вставлять в тот же WEBBr либо просто поменять координаты или видимость компонента, на который будет ссылаться данная ссылка. Перед упаковкой в exe напиши алгоритм, который будет pos`ить все ссылки с адресов в htm и если существует файл с таким именем на локальном компьютере (в папке с htm) - то он будет создавать для него страницу.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 21.09.2009, 18:40   #5
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

А что дельфи не позволяет сохранять произвольные файлы внутри исполняемого файла?
Что браузер дельфи не позволяет загружать Html не из файла, а из памяти?

Если это возможно, то в чём проблема? Просто помещаем странички в исполняемый файл и отлавливаем клики по ссылкам в браузере, анализируем ссылку и исходя из этого берём страничку из исполняемого файла, получаем из неё Html код и загружаем в браузер. В этом случае нет необходимости сохранять страничу на диск и "скармливать" её браузеру - можно через память загружать.

Дельфи незнаю, поэтому привозу пример на бейсике Думаю что если на бейсике это делается без напряга, то в дельфях тоже возможно.

Вот код на бейсике
Код:
; Пример электронного учебника.
; Компилятор PureBasic

Procedure NavigationCallback(Gadget, Url$) ; В этой процедуре перехватываем клики в браузере-навигаторе.
  If Url$<>""
    Url$=LCase(Url$)
    pos=FindString(Url$, "about:blank",1)
    If pos>0
      Url$=Right(Url$,Len(Url$)-pos-10)
    EndIf
    
    Select Url$ ; Узнаём какую страничку загрузить из памяти в браузер
        Case "ch1.html"
           SetGadgetItemText(1,#PB_Web_HtmlCode,PeekS(?ch1, ?ch1End-?ch1))
        Case "ch2.html"
           SetGadgetItemText(1,#PB_Web_HtmlCode,PeekS(?ch2, ?ch2End-?ch2))
        Case "ch3.html"
           SetGadgetItemText(1,#PB_Web_HtmlCode,PeekS(?ch3, ?ch3End-?ch3))
        Case "ch4.html"
           SetGadgetItemText(1,#PB_Web_HtmlCode,PeekS(?ch4, ?ch4End-?ch4))
        Case "ch5.html"
           SetGadgetItemText(1,#PB_Web_HtmlCode,PeekS(?ch5, ?ch5End-?ch5))
        Case "ch6.html"
           SetGadgetItemText(1,#PB_Web_HtmlCode,PeekS(?ch6, ?ch6End-?ch6))
    EndSelect
    
  EndIf
  ProcedureReturn 0 ; Запрет открытия ссылки браузером
EndProcedure
  
  ; Открываем окно
 If OpenWindow(0, 0, 0, 800, 500, "WebGadget", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_Invisible)
    WebGadget(0, 10, 10, 150, 480, "")    ; Браузер-навигатор
    SetGadgetItemText(0,#PB_Web_HtmlCode,PeekS(?h, ?hEnd-?h))  ; Загрузка из памяти странички навигации
    SetGadgetAttribute(0,#PB_Web_NavigationCallback,@NavigationCallback()) ; Установка процедуры-перехватчика кликов по ссылкам
    WebGadget(1, 180, 10, 780-180, 480, "") ; Браузер, отображающий выбираемые странички
    SetGadgetItemText(1,#PB_Web_HtmlCode,PeekS(?ch1, ?ch1End-?ch1)) ; Загрузка из памяти начальной странички
    HideWindow(0,0) ; Отображение окна
    
    Repeat ; Это главный цикл прогаммы - обработчик событий. Мы отслеживаем только закрытие окна
    Until WaitWindowEvent() = #PB_Event_CloseWindow
 
  EndIf
End ; Типа всё, программа завершает работу
  
  
 ; Вот этот код при компиляции загружает файлы в исполняемый файл.
 ; Доступ к файлам как к памяти получаем с помощью меток
 DataSection
  h:
    IncludeBinary "h.html"
  hEnd:
  
  ch1:
    IncludeBinary "ch1.html"
  ch1End:
  
  ch2:
    IncludeBinary "ch2.html"
  ch2End:
  
  ch3:
    IncludeBinary "ch3.html"
  ch3End:
  
  ch4:
    IncludeBinary "ch4.html"
  ch4End:
 
  ch5:
    IncludeBinary "ch5.html"
  ch5End:
  
  ch6:
    IncludeBinary "ch6.html"
  ch6End:
 EndDataSection
Вложения
Тип файла: rar Пример электронного учебника на PureBasic.rar (38.5 Кб, 44 просмотров)
*PB* вне форума Ответить с цитированием
Старый 21.09.2009, 18:42   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

все это делается без проблем, вот статья которая поможет http://www.delphiworld.narod.ru/base...elphi_app.html
(уже который раз кидаю её)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.05.2011, 12:17   #7
GIO
Пользователь
 
Регистрация: 20.11.2007
Сообщений: 16
По умолчанию

А как сделать конвертор из группы html-страниц в exe-шник?
Как программно добавить в ресурс html-страницу не имея утилиты для создания RES-файлов.
GIO вне форума Ответить с цитированием
Старый 27.05.2011, 12:38   #8
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

Может лучше все завернуть в MoleBox?
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Старый 27.05.2011, 13:06   #9
Swarog
Форумчанин
 
Аватар для Swarog
 
Регистрация: 26.01.2010
Сообщений: 215
По умолчанию

у меня вот есть один примерчик, косяков в нем много, бросил не стал доделавать так как пропала актуальность.

программа состоит из сборщика всех файлов из определенной папки в один файл, после чего это файл цепляется к концу просмотрщика, при этом файлы еще шифруются (хреновенько но сойдет)

просмотрщик использует компонент THTMLViewer (на просторах интернета можно найти), при загрузке смотрит что к нему сзади прицеплено, если архив то начинает читать и вроде загружает страницу index.html, ну а дальше по требованию загружаем остальные страницы, используются только потоки в памяти, на диск ни чего не сбрасывается. При чтении происходит расшифровка.
Вложения
Тип файла: zip Каталог.zip (16.6 Кб, 37 просмотров)
Могу лишь пнуть в нужном направлении (ну или как получится)
Swarog вне форума Ответить с цитированием
Старый 27.05.2011, 14:49   #10
GIO
Пользователь
 
Регистрация: 20.11.2007
Сообщений: 16
По умолчанию

То apromix: это че такое? компонент?
GIO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компиляция exe Stroteg Общие вопросы .NET 6 20.06.2009 17:18
C#: Компиляция в один exe файл Veiron Общие вопросы .NET 11 11.06.2009 12:19
html внутри exe Миша Помощь студентам 2 27.09.2007 16:13
Компиляция .exe в Delphi Alar Общие вопросы Delphi 5 14.11.2006 08:43