Блог Александра Божко
Архивы
Рубрики
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

О строках в мобильных приложениях уже писали, и, наверное не раз, но как-то все-равно осталось не замеченным. По крайней мере я почему-то не принял к сведению, хотя задним числом и вспомнил, что читал. Поэтому “пост-напоминалка”.

Предположим, есть есть FireMonkey приложение и такой код:

procedure TfMainTexturesTest.Button1Click(Sender: TObject);
var
s: string;
begin
   s:= 'Нет войне! Даешь рок-н-ролл!';
   ShowMessage(s[1]+' '+s[5]+' '+s[12]);
end;

При запуске в Windows результат будет очевидным:

StringTestWin

Попробуем запустить приложение под Android:

StringTestDroid

Очевидно, что в первом случае индексация символов в строке начинается с 1, а во втором с нуля. Сделано так не случайно, этимология данного вопроса рассмотрена в блоге у Александра Алексеева. Настоятельно рекомендую к прочтению.

И в заключение о совместимости кода. Директива компилятора $ZEROBASEDSTRINGS.

Если мы, к примеру принудительно поставим

{ZEROBASEDSTRINGS ON},

то и Windows и Android приложения отработают так. как показано на втором рисунке.

Так что. будьте бдительны, данный нюанс нужно учитывать. во избежание ошибок.

PS

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


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Продукты DevArt
Купить онлайн:



Читай русскоязычные Delphi блоги
Каталог блогов Blogdir.ru
Яндекс.Метрика