подписка



RSS  Подписатся на блог



Follow me!  Follow me!

комментарии

поиск

статистика



 

HTML в DLL

clock июня 4, 2010 14:59 by author cya-st

Сегодня я раскажу как вставить HTML страницу в DLL. Пример будет продемонстрирован посредством использования Delphi 7.

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

 

Для начала создайте простую HTML страницу, для примера создайте страницу с одним изображением (в ресурс мы будем вставлять и изображение). Назовём этот файл index1.html. Ниже указано как мы будем получать доступ к изображению из html страници, HTML код выглядит следующим образом:


1: <HTML>

2: <HEAD>

3: <TITLE>My HTML</TITLE>

4: </HEAD>

5: <BODY>

6: This is a HTML in DLL<br>

7: <img src="MYIMG" width=100 height=100 border=0 alt="">

8: </BODY>

9: </HTML>

Теперь займемся файлом ресурсов. Необходимо создать новый текстовый файл в директории вашего проекта с расширением *.rc, назовем его например MyHTML.rc. После этого добавте следующие строки в файл MyHTML.rc. Обратите внимание название ресурса должно совпадать с именем файла (это из-за того что броузер не понимает такого расширения файла), за исключением того что точку brcc не понимает нужно поставить подчеркивание (позднее я обьясню что нужно делать с подчеркиванием)

index1_html (23) "index1.html"
MYIMG GIF "my.gif"

Следующий шаг - компиляция файла ресурса. Выполните следующую команду в директории Вашего проекта:

BRCC32 MyHTML.RC

Результатом выполнения команды будет собраный файл MyHTML.RES. Теперь заменим подчеркивание на точку в заголовке нашего собраного *.RES файла. Для этого нужно найти строку "i n d e x 1 _ h t m l", изаменить подчеркивание на точку. Теперь можно добавить собраный файл ресурса в Ваш проект, для этого добавьте следующую директиву компилятора в unit проекта:

{$R MyHTML.RES}

Далее собираем наш DLL. Чтобы запустить в браузере введите команду:

res://c:\myhtml.dll/index1.html

 





ProcessMessages в Delphi

clock февраля 16, 2010 10:36 by author cya-st

Многии начинающие програмисты не знают о методе Application.ProcessMessage() и сталкиваются с проблемами, которых не могут объяснить. Например, мы хотим написать что-то на форме и через 5 секунд стереть. Нужно сделать так:

1: procedure TForm1.Button1Click(Sender: TObject);
2: begin
3:    Label1.Caption:='Started';
4:    Application.ProcessMessage;
5:    Sleep(5000);
6:    Label1.Caption:='Finished';
7: end;

Попробуйте убрать Application.ProcessMessage(), и вы никогда не увидете слова "Started". Это связано с тем, что Windows ждет, пока накопятся сообщения в очереди, а не обрабатывает их сразу. Application.ProcessMessage() заставляет обработать все сообщения, которые накопились в данный момент. Подробности можно найти в файлах справки.

Еще это можно применить так:

1: procedure TForm1.Button1Click(Sender: TObject);
2: var
3:    i:integer;
4: begin
5:    for i:=1 to 100000 do
6:    begin
7:      ProgressBar1.Position:=i;
8:      Application.ProcessMessage;
9:    end;
10: end;

Если убрать  Application.ProcessMessage(), то, пока выполняетсяцикл, мы не сможем сдвинуть, свернуть форму, вывести ProgressBar1.