Главная » Delphi

Создание и использование библиотек DLL

Добавлено Дата: 11 March, 2012 категория: Delphi

В этом  разделе демонстрируется процесс создания реальной библиотеки DLL  в среде  Delphi. Рассмотрим, как  создается модуль  интерфейса, позволяющий сделать библиотеку DLL доступной другим программам. Но прежде чем перейти к более сложным вопросам использования библиотек в Delphi, давайте  познакомимся с мето дами размещения в библиотеке DLL форм  Delphi.

Читать »

Совместное использование кода, ресурсов и данных несколькими приложениями

Добавлено Дата: 11 March, 2012 категория: Delphi

Ранее  уже упоминалось, что самой  распространенной причиной создания библио тек DLL является совместное использование кода. В отличие от модулей,  которые обеспечивают возможность совместно использовать исходный код в различных при ложениях Delphi, библиотеки DLL позволяют совместно использовать один  и тот же исполняемый код любым  приложениям Windows,  способным вызывать эти  функции из библиотек DLL.

Читать »

Статическая компановка против динамической

Добавлено Дата: 11 March, 2012 категория: Delphi

Статической  компоновкой (static  linking) называется метод,  с помощью которого компилятор Delphi  реализует в исполняемом коде  вызов  функций  и процедур. Код функций  может  храниться в файле приложения с расширением .dpr или  в любом другом модуле, но при компоновке приложений эти функции и процедуры становятся частью  исполняемого файла. Другими  словами, каждая  функция  будет  занимать на диске определенное место в составе исполняемого файла  (.exe) программы.

Читать »

Динамически компонуемые библиотеки

Добавлено Дата: 10 March, 2012 категория: Delphi

Что такое библиотека DLL?

Динамически  компонуемые библиотеки —  это  программные  модули,  содержащие код, данные или  ресурсы, которые могут совместно использоваться несколькими при ложениями Windows.  Одно  из основных назначений библиотек DLL —  позволить при ложениям загружать  участки  кода во время  выполнения (динамически), а не компоно вать их в само приложение в процессе компиляции (статически). Как следствие, один и тот  же код,  содержащийся в библиотеке DLL,  смогут одновременно использовать не сколько  приложений. Так, файлы библиотек Kernel32.dll, User32.dll и GDI32.dll являются теми тремя  китами, на которые опирается система  Win32. Файл Ker- nel32.dll (ядро), например, отвечает за управление памятью, процессами и потоками. Файл User32.dll содержит функции пользовательского интерфейса, необходимые для создания окон  и обработки сообщений Win32. И, наконец, на файл  GDI32.dll возло жена работа с графикой. Существуют и другие системные библиотеками DLL, например AdvAPI32.dll и ComDlg32.dll, которые предназначены для обеспечения работы с системным реестром и диалоговыми окнами общего назначения.

Читать »

Внеприоритетный поток

Добавлено Дата: 10 March, 2012 категория: Delphi

(fiber) — это своего  рода поток, расписанием периодов вы полнения которого приходится управлять самостоятельно. Подобно обычным пото кам, внеприоритетный поток  обладает информацией о состоянии и контексте испол нения форм, своим  собственным стеком  и доступом  к регистрам процессора. Но,  в отличие от  обычного потока, расписание периодов выполнения внеприоритетного потока не контролируется операционной системой. Вся ответственность за переклю чение процесса выполнения между несколькими внеприоритетными потоками лежит на разработчике. В процессе разработки приложения применение внеприоритетных потоков редко  оказывается предпочтительнее многопоточной архитектуры. Исклю чение составляют те редкие случаи,  когда можно  получать  определенные преимуще ства от использования нескольких независимых стеков  или необходим прямой доступ к регистрам процессора в обход всех этих  сложностей, связанных с синхронизацией обычных потоков.

Читать »

Многопоточная графика

Добавлено Дата: 10 March, 2012 категория: Delphi

Ранее  уже отмечалось, что компоненты библиотеки VCL не предназначены для одновременной работы с несколькими потоками, однако  это  не совсем  так. Подпро граммы  библиотеки VCL способны поддерживать многопоточный режим  для отдель ных  графических объектов. Благодаря новым  методам  Lock() и  Unlock() класса TCanvas был создан  целый  модуль Graphics, который обеспечивает поддержку  мно гопоточности. Он включает в себя такие  классы,  как TCanvas, TPen, TBrush, TFont, TBitmap, TMetafile, TPicture и TIcon.

Читать »

Многопоточный доступ к базе данных

Добавлено Дата: 10 March, 2012 категория: Delphi

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

Читать »

Десять важнейших возможностей IDE Delphi

Добавлено Дата: 9 March, 2012 категория: Delphi

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

Читать »

Настройка приоритета

Добавлено Дата: 9 March, 2012 категория: Delphi

Проект DelSrch позволяет динамически настраивать приоритет  потока поиска. Используемая  для  этого   форма  показана  на  рис. 5.7,   а  реализующий  ее   модуль PriU.pas представлен в листинге 5.10.

end.Этот модуль довольно прост. Он устанавливает значение переменной SearchPri, которое соответствует позиции на линейке с ползунком, находящейся на главной форме проекта. Если  поток  уже запущен,  то  его  приоритет устанавливается тем  же способом. Но поскольку  объект TThreadPriority имеет  перечислимый тип,  то про стая  операция приведения типа  преобразует значения от  1 до 5 (возвращаемые  ли нейкой с ползунком) в элементы перечисления объекта TThreadPriority.

Читать »

Поток поиска

Добавлено Дата: 9 March, 2012 категория: Delphi

Реализация механизма поиска  содержится в модуле SrchU.pas, который пред ставлен  в листинге 5.9. Этот  модуль выполняет массу интересных вещей, включая  ко пирование целого  файла  в строку,  рекурсивный проход каталогов и передачу  инфор мации в главную форму.

Читать »

Пользовательский интерфейс

Добавлено Дата: 9 March, 2012 категория: Delphi

Главный модуль этого  приложения называется Main.pas, его  исходный код пред ставлен в листинге 5.8. Основная задача  данного модуля —  обеспечить функциониро вание  главной формы и ее пользовательского интерфейса. В частности, в модуле вы полняются действия, необходимые для заполнения окна списка,  вызова  соответст вующей  программы просмотра указанного пользователем файла, создания потока поиска, вывода  на печать содержимого списка,  а также  чтения и записи параметров пользовательского интерфейса в файл инициализации (.INI).

Читать »

Пример многопоточного приложения

Добавлено Дата: 9 March, 2012 категория: Delphi

Для  демонстрации использования объектов TThread в настоящем разделе приво дится  пример реального приложения, предназначенного для поиска  файлов в специа лизированном потоке. Имя проекта — DelSrch, оно образовано от слов Delphi Search, оз начающих поиск файлов Delphi. Главная форма этой утилиты показана на рис. 5.6.

Читать »

Семафоры

Добавлено Дата: 8 March, 2012 категория: Delphi

Существует еще один метод синхронизации потоков, в котором используются объ екты  семафоров (semaphore) API. В семафорах применен принцип действия мьютек сов, но с одной  существенной деталью.  В них заложена возможность подсчета ресур сов, что позволяет заранее определенному количеству потоков одновременно войти в синхронизируемый блок кода. Для создания семафора используется функция API CreateSemaphore(), которая объявляется следующим образом:

Читать »

Мьютексы

Добавлено Дата: 8 March, 2012 категория: Delphi

По принципу своего  действия мьютексы (MUTual EXclusions  — взаимоисключения) очень  похожи на  критические секции, за  исключением двух моментов. Во первых, мьютексы можно  использовать для синхронизации потоков, переступая через грани цы процессов. Во вторых, мьютексу можно  присвоить имя,  ссылаясь на которое мож но создавать дополнительные дескрипторы существующих объектов мьютексов.

Читать »

Критические секции

Добавлено Дата: 8 March, 2012 категория: Delphi

представляют собой  один  из  самых  простых способов син хронизации потоков. Критическая секция (critical section) — это участок кода, который в каждый  момент времени может  выполняться только  одним  из  потоков. Если  код, используемый для инициализации массива,  поместить в критическую секцию, то дру гие потоки не смогут использовать этот  участок  кода до тех пор,  пока  первый поток не завершит его выполнение.

Читать »