|
Особенности программирования для 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
для соответствующего кода.
|