Публикации Lazarus

Lazarus и базы данных

28.08.2004
Смирнов Сергей
Пусть это выглядит странно, но при первом запуске в палитре компонент Lazarus на вкладке Data Access присутствует только TDataSource. Разработчики объясняют это тем, что большинство пакетов компонент доступа к данным статически связано со специфическими библиотеками, которые могут отсутствовать на большинстве компьютеров. Например, для компонент доступа к серверу MySQL необходимы библиотеки клиентского программного обеспечения, соответствующие версии сервера. Также и для других серверов.

Есть, однако, два пакета с компонентами, не связанными ни с какими сторонними библиотеками: TSdfDataSet и TDbf. Не знаю, почему нельзя сразу настроить Lazarus на использование этих компонент, но это так. Ну что-ж, давайте установим эти пакеты в качестве примера. Начнем с TDbf. Для этого откроем заголовочный файл пакета, который называется dbflaz.lpk и находится в каталоге tdbf папки components, в которой есть и другие каталоги с другими пакетами, в том числе и наш второй пакет. Сделать это можно с помощью меню "Компоненты"-"Открыть файл пакета" (здесь и дальше я буду ссылаться на элементы русскоязычного интерфейса):

Открытие пакета

Теперь надо выбрать файл пакета. В каталоге Lazarus есть папка components, в которой сосредоточены пакеты, входящие в комплект поставки, однако не все из них по указанным выше причинам изначально установлены. Найдем среди них каталог tdbf и выберем в нем файл dbflaz.lpk:

Выбор пакета

В результате откроется окно пакета, в котором приводится подробная информация о пакете и его зависимостях. Когда-нибудь я расскажу об устройстве пакетов более подробно, но сейчас это не нужно. Достаточно лишь нажать кнопки "Компилировать" и, если компиляция завершилась успешно, "Установить". Так как пакеты в Lazarus статические, наш с Вами TDbf не появится сразу в палитре компонент, как в мы привыкли в Delphi. Вместо этого нам будет предложено пересобрать среду Lazarus:

Пересборка Lazarus

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

Теперь, для закрепления полученного только что навыка, отыщите и установите самостоятельно пакет sdf. Он представляет собой пару компонент табличного типа, которые хранят данные в текстовых файлах. TSdfDataSet - в файле с разделителем, TFixedFormatDataSet - с фиксированными длинами полей. Первый из них мы используем в небольшом примере, демонстрирующем работу всей цепочки компонент доступа к данным. Выбор именно этого компонента обусловлен тем, что я вполне уверен в его работоспособности на момент написания этой статьи, так как сам адаптировал его к Lazarus и fpc.

Создайте каталог для будущего проекта под именем sdf_test. В него скопируйте файл fpc.ssy из каталога с исходниками компонента, который находится среди исходников fpc в папке fcl/db/sdf. Это файл с тестовыми данными. Вы и сами можете сделать такой в любом текстовом редакторе. Создайте новый проект и "бросьте" на форму три TDBEdit, TDataSource, TSdfDataSet, TDBGrid и TDBNavigator как показано на рисунке:

Тестовый проект

Задайте свойства SdfDataSet аналогично установленным на рисунке, только расположение файла с данными введите свое. Свойство Schema определяет набор полей и в нашем примере состоит из трех строк. Конечно, вместо 1, 2 и 3 можно написать нечто более информативное, однако помните, что те же самые имена надо будет назначить именам полей для соответствующих DBEdit. Свяжите все визуальные компоненты с DataSource, а его - с SdfDataSet. Установите свойство SdfDataSet Active в True и на экране отобразятся данные из файла, как показано на рисунке.

В той версии Lazarus, которая существовала на момент написания статьи, компонент DBGrid еще не был готов к изменению данных, поэтому были созданы компоненты DBEdit. В более поздних версиях эта проблема, несомненно, будет решена. Таким образом, становится ясно, что сами по себе Lazarus и fpc уже вполне готовы к работе с базами данных. Дело лишь за соответствующими специализированными компонентами.

Всё описанное выше применимо и для Windows версии Lazarus, хотя её развитие и несколько отстаёт от версии для Linux.
Актуальные версии
FPC3.2.2release
Lazarus3.2release
MSE5.10.0release
fpGUI1.4.1release
links