Написание переносимого кода

Для создания кроссплатформенного приложения следуйте приведенным ниже советам:

Приведем пример, который позволяет использовать многобайтные символы для обеих платформ (Windows и Linux). Среда Windows традиционно сопоставляет только два байта каждому многобайтному символу. В Linux многобайтная кодировка символов может содержать намного больше байтов на один символ (до шести байтов в кодировке UTF-8). Обе платформы могут использовать одинаковую кодировку с помощью функции StrNextChar, находящейся в модуле SysUtils. В листинге 21.2 приведен код для среды Windows.

Листинг 21.2.Код для среды Windows

while p^ <> #0 do
begin
if р^ in LeadBytes then
inc (p) ;
inc(p);
end;

Этот код можно преобразовать в платформонезависимый, как показано в листинге 21.3.

Листинг 21.3. Платформонезависимый код

while р^ <> #0 do
begin
if р^ in LeadBytes then
p := StrNextChar(p)
else
inc(p);
end;

Если использование функций библиотек не приводит к работающему решению, можно попробовать изолировать специфичный код в блоки $IFDEF. Однако постарайтесь ограничить число таких блоков.

Hosted by uCoz