Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кроссплатформенное программирование для Linux.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
38.25 Кб
Скачать

Особенности программирования для Linux

Операционные системы Windows и Linux имеют достаточно серьезных различий, чтобы сделать кроссплатформенную разработку делом сложным и кропотливым. В первую очередь необходимо хорошо знать обе операционные системы и иметь опыт работы с ними.

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

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

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

property CaseSensitive: Boolean;

После присвоения свойству значения True компонент производит все строковые операции с учетом регистра символов.

Для формирования полного пути файла используйте константы из модуля SysUtils. Это PathDelim (символ разделителя каталогов в пути файла), DriveDelim (символ логического диска), pathsep (символ разделителя между несколькими путями файлов в одной строке).

При работе с текстовыми файлами необходимо помнить о различии управляющих символов в Windows и Linux. Для обозначения конца строки в Windows используются символы CR/LF, а в Linux — только символ LF. В Windows окончание текста определяется символом Ctrl-Z, а в Linux — просто концом файла.

Так как в Linux отсутствует системный реестр, то для сохранения настроек приложения используйте класс TMeminiFile, обеспечивающий сохранение переменных среды в INI-файле.

При создании кроссплатформенных приложений желательно использовать только свойства и методы классов CLX. В библиотеке CLX также доступны для применения такие важные для написания бизнес- логики приложения классы, как TList, TStringList, TCollection, TAction и др.

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

{$IFDEF MSWINDOWS}

{код для Windows}

{$ENDIF}

{$IFDEF LINUX}

{код для Linux}

{$ENDIF}

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

Приложения баз данных для Linux

Главной составной частью любого приложения баз данных является механизм доступа к данным. Для традиционных приложений баз данных, создаваемых в Delphi, выбор способов доступа к данным достаточно широк. Однако про кроссплатформенные приложения этого сказать нельзя. По существу, разработчик может выбрать только набор компонентов dbExpress. Или же, подобно старой рекламе автомобилей "форд", "Вы можете выбрать автомобиль любого цвета, если этот цвет черный", вам следует выбрать компоненты InterBase Express, если вы используете этот сервер для ваших данных в операционной системе Linux.

К сожалению, компоненты dbExpress ограничены по своим функциональным возможностям, обеспечивая однонаправленное перемещение курсора и просмотр данных в режиме "только для чтения".

Преимуществом этого способа доступа к данным является простота и отсутствие многомегабайтных вспомогательных библиотек. В частности, для каждого из четырех поддерживаемых dbExpress серверов баз данных необходима лишь одна динамическая библиотека Windows и только один разделяемый объект (shared object) Linux.

Подробное описание компонентов и механизма доступа dbExpress см. в гл. 22.