Инструменты пользователя

Инструменты сайта


remobject_pascal_script:tipy_dannyx

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
remobject_pascal_script:tipy_dannyx [2018/04/23 08:45]
7bit Форматирование кода
remobject_pascal_script:tipy_dannyx [2018/04/24 21:03] (текущий)
zenitchik [Строковые типы]
Строка 234: Строка 234:
  
 Строка может хранить данные в кодировке ANSI или UTF-8. В кодировке ANSI символ занимает 1 байт. Символ в кодировке UTF-8 может занимать от 1 до 4 байт. Если строка хранит данные в этой кодировке,​ то обращение к элементам массива строки уместно только,​ если обрабатываются символы первой половины таблицы ASCII с кодами от 1 до 127. В ином случае нужно применять функции для работы со строками UTF-8. Строка может хранить данные в кодировке ANSI или UTF-8. В кодировке ANSI символ занимает 1 байт. Символ в кодировке UTF-8 может занимать от 1 до 4 байт. Если строка хранит данные в этой кодировке,​ то обращение к элементам массива строки уместно только,​ если обрабатываются символы первой половины таблицы ASCII с кодами от 1 до 127. В ином случае нужно применять функции для работы со строками UTF-8.
 +Для символов,​ кодируемых более чем одним байтом,​ в UTF-8 принята следующая система кодировки:​ в первом байте от двух до четырёх старших битов заняты единицами - их количество соответствует количеству байт в символе,​ во втором и последующих байтах первые два бита заняты соответственно единицей и нулём. В символах кодируемых одним байтом старший бит всегда занят нулём. Таким образом,​ при побайтном рассмотрении строки,​ однобайтный символ не может быть случайно принят за часть многобайтного.
  
 <WRAP center round info 80%> <WRAP center round info 80%>
Строка 249: Строка 250:
 </​code>​ </​code>​
  
-Тип WideString хранит строки в кодировке UTF-16. Каждый символ кодируется двумя байтами. Несмотря на то, что каждый символ занимает 2 байта, вы можете обратиться к символу по индексу,​ как если бы для кодирования использовался 1 байт. Строки этого типа используются OLE-объектами и функциями Windows API.+Тип WideString хранит строки в кодировке UTF-16. Каждый символ кодируется двумя байтами ​(за исключением символов с номерами больше FFFF - для обозначения таких символов используется четыре байта). 
 +Несмотря на то, что каждый символ занимает 2 байта, вы можете обратиться к символу по индексу,​ как если бы для кодирования использовался 1 байт. Строки этого типа используются OLE-объектами и функциями Windows API.
 <code delphi> <code delphi>
 var var
Строка 258: Строка 260:
 end; end;
 </​code>​ </​code>​
 +Символы,​ кодируемые четырьмя байтами всегда состоят из пары двухбайтовых слов (т.наз. "​суррогатной пары"​),​ первое из которых принадлежит диапазону D800..DBFF, а второе - диапазону DC00..DFFF. Символы,​ кодируемые двумя байтами не могут входить ни в один из этих диапазонов. Что позволяет при посимвольном обходе строки легко отличать двухбайтовые символы от частей четырёхбайтовых
 +
 Тип PChar представляет строки с завершающим нулем. Переменная типа PChar содержит указатель на массив строк. Концом строки считается символ с кодом #0. В чистом виде тип PChar не используется,​ т. к. Pascal Script не работает с указателями. Предположительно,​ он введен только для совместимости с функциями Windows API. Тип PChar представляет строки с завершающим нулем. Переменная типа PChar содержит указатель на массив строк. Концом строки считается символ с кодом #0. В чистом виде тип PChar не используется,​ т. к. Pascal Script не работает с указателями. Предположительно,​ он введен только для совместимости с функциями Windows API.
  
remobject_pascal_script/tipy_dannyx.txt · Последние изменения: 2018/04/24 21:03 — zenitchik