M Y D E L P H I 7 . R U Самоучитель программирования  
 
  • Главная
  •  

     

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