Отправляет email-рассылки с помощью сервиса Sendsay

Программирование на Delphi

  Все выпуски  

Программирование на DELPHI в вопросах и ответах #8


Информационный Канал Subscribe.Ru

Программирование на Delphi в вопросах и ответах.


Здравствуйте, уважаемые читатели! Перед вами выпуск №8 от 09.12.04.

Очень приятно, что новые вопросы приходят регулярно, а также то, что приходят и ответы, - ведь это самое главное! Как всегда, вопросы и ответы опубликованы в данной рассылке (чуть ниже)... Открыт новый опрос! Проголосовать вы можете ниже. Очень хотелось бы, чтобы проголосовали все... Также ещё одна новость: сайт временно не работает. Выполняется полное обновление с изменением как дизайна, так и структуры сайта. Дата возобновления работоспособности портала пока точно не известна, но рассылка по-прежнему продолжает выходить...

Есть ли у вас собственный сайт?
>>>> Да, есть.
>>>> Нет.
>>>> Нет, но хочу его открыть!

Также, если вас не затруднит, в тексте письма напишите адрес своего сайта.

Правила нашей рассылки:
1. Не присылайте ответов на вопросы вроде "да я не знаю" или "да/нет". Такие ответы не публикуются.
2. Вопросы, не касающиеся Delphi, не принимаются (для этого существуют другие рассылки).
3. Запрещено присылать вложенные файлы, размером более 100 Кб, без предварительной связи с администратором.
4. Письма с "неправильной" темой не публикуются!


Статья по Delphi.

Начиная с этого выпуска, в рассылке будет публиковаться целый цикл статей, посвящённый написанию собственного инсталлятора на Delphi. Каждый шаг будет подробно описан. В настоящее время существует множество пакетов, позволяющих создавать инсталляторы несколькими кликами мыши. На мой счёт, лучший из них - InnoSetup (http://www.jrsoftware.org). Вы можете использовать и другие, их много в интернете. Но эти статьи будут полезны каждому программисту. Вы можете не делать сам инсталлятор, а выбирать оттуда нужный код, который впоследствии использовать в своих программах...

Написание инсталлятора на Delphi (часть 1)

Если вы хотя бы однажды инсталлировали какую-нибудь программу под Windows, то, вероятно, заметили, что процесс инсталляции происходит поэтапно. Поэтапно — это ключевое слово, поскольку именно оно подводит нас к этапам инсталляции. Если мы подумаем ещё чуть-чуть, то обнаружим, что сложность реализации различных этапов очень и очень неодинакова.

Из всех статей цикла есть один практический вывод: не все этапы инсталляции будут описаны в этом руководстве подробно. Почему? Потому что реализация этих этапов тривиальна или, по крайней мере, не очень сложна.

По большому счёту, здесь вы не встретите реализации, здесь вы найдёте информацию: много и на русском языке :)

Поскольку информации действительно много, она будет выкладываться небольшими порциями...

Сначала определим основные этапы построения инсталлятора:

  • Копирование программы во временный каталог
  • Запугивание пользователя законами об авторских правах
  • Как получить важные системные данные
  • Копирование
  • Копирование (продолжение)
  • Системный реестр
  • Создание группы программ
  • Создание группы программ (продолжение)
  • Деинсталляция

Ну а теперь перейдём непосредственно к написанию инсталлятора...

Обзор основных этапов

Запомните одно важное правило: инсталлировать программу можно с человеческих носителей (винчестеры, компакт-диски, ZIP-диски) и с дискет :) Если вы собираетесь написать инсталляцию с дискет, которая явно не поместится на одну дискету, то у вас есть шанс хорошо провести время :)

Как вы знаете, Windows сбрасывает ненужную ей в данный момент информацию на диск. Это правильно, но это касается данных. Программы никогда на диск не сбрасываются, поскольку в Windows сегмент кода программы не может быть изменён. Когда Windows нужна память и ей под руку подворачивается ваша программа, она её просто выкидывает — и всё. Когда ваша программа снова становится нужна, Windows снова загружает её из выполняемого файла.

Эта в высшей степени корректная техника перестаёт работать при инсталляции с дискет. Ваша программа, например, копирует четвёртую дискету и тут выясняется, что у неё (у программы) пропал кусок кода. Какие проблемы? — Windows пытается прочитать файл a:\setup.exe и естественно его не находит (на четвёртой-то дискете? откуда?).

Только не паникуйте! Эта проблема давно решена, иначе вы не могли бы установить на свой компьютер ни одной программы! Всё очень просто — программа инсталляции копирует себя и все необходимые файлы во временный каталог на жёсткий диск и перезапускает себя с жёсткого диска. Это и есть первый этап инсталляции. В зарубежных программах он обычно называется "Prepare to install". Ещё раз обратите внимание на то, что совсем не обязательно выполнять этот этап, если вы инсталлируетесь не с дискет, или если ваша инсталляция умещается на одну дискету.

На втором этапе программа инсталляции обычно показывает пользователю несколько страшных предупреждений; что-то типа "если вы не заплатите за эту программу, то сидеть вам в тюрьме три пожизненных срока". Я слышал, что некоторые пользователи со слабым сердецем даже умирали за компьютером от таких угроз :)

Реализация этого этапа до идиотизма тривиальна, поэтому мы и не будем на нём останавливаться подробно.

Следущий этап — третий. Здесь программа установки дотошно выспрашивает у пользователя кучу всяких важных данных: имя пользователя и его огранизацию, тип установки, куда будем ставить, как будет называться группа программ и так далее. На этом этапе нам встретятся некоторые технические трудности, но их несложно обойти.

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

Следующий, пятый, этап — настройка системного реестра (registry). Достаточно тривиальная процедура, правда, при инсталляции большого продукта, записывать придётся очень много.

Предпоследний, шестой, этап, заключается в создании группы программ в меню "Пуск". Или, возможно, вы захотите вынести ярлык на рабочий стол.

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

Теперь мы можем перейти к подробному рассмотрению этапов. Но об этом вы узнаете только со следующего выпуска :)


Присылайте свои статьи по адресу delphi-faq@list.ru с темой 'Clause' (без кавычек), и они будут опубликованы в ближайших выпусках рассылки. Большая просьба: статью оформляйте в -txt или -doc формате и используйте -zip или -rar сжатие (без самораспаковки).


Новые вопросы:

18. Как сделать индикатор загрузки процессора в % как в диспетчере задач? Перерыл кучу всяких факов и конференций, но ничего не нашел. Помогите плиз....... *** Добро пожаловать на мою страничку http://sources.h11.ru/***. [Ответить].

19. Всем приет! Имеется прога для скачивания файлов из сети, как прикрутить STATUS BAR, ну чтоб показывало прогресс закачки? [Ответить].

20. Имеется несколько Word'-овских файлов с текстовой информацией и объектами (формулы MSEquation, др.). Стоит задача: Из программы написанной на Delphi дать команду на формирование файла, состоящего из заданных Word'-овских файлов, а затем и вывода сформированного файла на печать. Желательно было бы иметь возможность в программе просмотреть сформированный файл перед печатью. Буду благодарен за ответ. [Ответить].

21. Задача состоит в следующем: необходимо непрерывно получать изображения со сканера (по крайней мере настолько, насколько это возможно, но без выгрузки основной программы).
До сих пор, я работал под twain-библиотекой. Там все идет нормально, но на n-ном BITMAP'е у сканера происходит "крейз" и до перезагрузки WIDOWS, достучаться до него невозможно. Помогите, пожалуйста, решить эту проблему. P.S. Насколько я знаю, при работе со стандартными программами windows (Imaging & Kodak Image), а также при использовании ActiveX TImgScan (кроме того, он очень неудобен), возникают подобные же проблемы. [Ответить].

22. Господа - программисты, расскажите как проще всего вывести на экран Delphi - программы готовую таблицу базы данных Microsoft Access? Заранее благодарен. [Ответить].

23. Не подскажет ли ктонибудь, как отсканировать все доступные компьютеры в сети? Очень нужно. [Ответить].

 

Вопросы, ждущие ответа:

12. Привет. Может, кому-нибудь из читателей, удалось написать утилиту, показывающую все активные TCP/IP соединения (аналог Netstat) на Delphi без использования Fnugry Netstat Components. Поделитесь пожалуйста исходником, а то дядька Google мне отказался с этим помочь. [Ответить].

14. Скажите, как узнать занятость принтера и передать задачу на другой принтер сети! [Ответить].

15. Здраствуйте.Можете сказат как я могу выбрат компоненть из другого Application? Например в другом App. я использвал с одного Edit-a ( у него ест OnChange(), OnKeyPress() и.др ) или он может бьт не визуальным. И хочу что добавить код в новую Application( первому Form-у OnCreate ) чтобы он автоматически выбрал ту Component-у какую я дам в коде. Заранее блогодорен!!! [Ответить].

17. Здравствуйте. Как двойным щелчком мышки по URL, скопоровать его в TMemo? [Ответить].


Поступившие ответы:

Увы, ответов не приходило...


Вы также можете ответить на предыдущие вопросы. Поскольку на них уже ответили как минимум раз, они больше не публикуются в рассылке. Но если вы можете что-то добавить к ответам других, пожалуйста, отвечайте - ответы будут опубликованы. Найти предыдущие вопросы вы можете в архиве рассылки: http://subscribe.ru/archive/comp.soft.prog.delphifaq/, либо на сайте рассылки (http://www.delphi-faq.fatal.ru).


Друзья:

Здесь представлены ссылки на дружественные сайты нашего портала. Если вы тоже хотите стать нашим другом, разместите баннер на главной странице своего сайта. Подробнее о том, как стать "другом", можно прочитать здесь: http://www.delphi-faq.fatal.ru/banner.htm.

http://infomania2004.webhost.ru/ - Этот сайт создан для того, чтобы вы могли получить интересующую вас информацию с минимальными затратами сил и времени. Если вы не нашли здесь нужной информации, вы можете оставить заявку на ее поиск. Как только информация будет найдена, она появится на сайте, а вам сообщат об этом.
http://www.basic.webhost.ru/ - Программирование на языках Basic и Visual Basic.
http://www.sashook.nm.ru/ - Игры, флешки, обои, компьютерные приколы.


Юмор:

Сидят два программиста в кафе.
Мимо валит телка.
- Классные у нее properties, - говорит один.
- Вчера проверял... Все read only, - с грустью отвечает другой.

Просыпается утром хакер с бодуна, открывает глаза - рядом классная
девушка:
- Опаньки, обнаружено новое устройство ввода-вывода...

Приходит программист с работы, а на него жена набрасывается с
кулаками:
- Негодяй! Я столько лет тебя кормила, поила, а ты, паразит, мне
изменяешь!
- ???
- Не прикидывайся! Звонил Витька, спрашивал номер твоей Аськи!

"Windows" - это слово из диалекта Апачей. В переводе означает: "Белый
человек, глядящий через стеклянный экран на песочные часы."

Разговор ламера с программером:
- Ну как, в этом чате дырок много?
- Да, я уже с двумя познакомился!

[Анекдоты прислал: Дмитрий Ермолаев]


Присылайте свои "компьютерные" анекдоты по этой ссылке: delphi-faq@list.ru и они обязательно будут опубликованы!


Товарищи программисты! Проявляйте свою активность. Давайте помогать друг другу!
Если вы не нашли ответа на свой вопрос, не отчаивайтесь! Ведь количество подписчиков постоянно растёт и, наверняка, найдётся тот человек, который поможет вам!
На сегодня всё. До встречи через неделю!

Сайт рассылки: http://www.delphi-faq.fatal.ru E-mail: Delphi-FAQ@list.ru


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphifaq
Отписаться

В избранное