Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2008, 09:59   #1
bashkos
Пользователь
 
Аватар для bashkos
 
Регистрация: 03.08.2008
Сообщений: 30
По умолчанию Что такое LeadBytes?

Что такое LeadBytes и для чего используется? В часности, что это за проверка:
if (Test in LeadBytes) then
Каким символом должен быть Test, чтобы выражение стало true?

Всем ответившим, заранее спасибо.
bashkos вне форума Ответить с цитированием
Старый 31.08.2008, 10:11   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Судя по всему
Test: byte;
LeadBytes: set of byte;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 31.08.2008, 10:39   #3
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

LeadBytes

Lead bytes in Multi-Byte character sets
Declaration

Source position: sysstrh.inc line 55
const LeadBytes: = [];

Description

LeadBytes contains the set of bytes that serve as lead byte in a MBCS string.
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 31.08.2008, 10:41   #4
bashkos
Пользователь
 
Аватар для bashkos
 
Регистрация: 03.08.2008
Сообщений: 30
По умолчанию

Я взял эту срочку из чужого кода (если конкретно - процедура GetMatchingBracketEx объекта TSynEdit)

Сейчас я переписываю эту процедуру под себя и мне бы очень хотелось знать что происходит в этой строке. Test там типа Char, по идее она текущий считываемый символ из текста.

Я написал небольшую программку, где выполнил эту проверку для всех ansi сиволов, и ни один из них не прошел ее. unicode не предлагать - тип все таки char, а не WideChar.

Так что же все таки выясняется в ходе этой проверки?
bashkos вне форума Ответить с цитированием
Старый 31.08.2008, 10:43   #5
bashkos
Пользователь
 
Аватар для bashkos
 
Регистрация: 03.08.2008
Сообщений: 30
По умолчанию

А можно description по русски написать, пожалуйста.
bashkos вне форума Ответить с цитированием
Старый 31.08.2008, 10:45   #6
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Char это тот же байт. В проверке проверяется наличие этого байта в множестве. Если не находит, то скорее всего множество пустое - [].

Цитата:
LeadBytes contains the set of bytes that serve as lead byte in a MBCS string.
LeadBytes содержит множество байт к-рое служит как первые байты в строке MBCS.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 31.08.2008, 10:55   #7
bashkos
Пользователь
 
Аватар для bashkos
 
Регистрация: 03.08.2008
Сообщений: 30
По умолчанию

Всем спасибо!

Еще знать, что такое MBCS строка?
bashkos вне форума Ответить с цитированием
Старый 31.08.2008, 10:58   #8
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

{ LeadBytes is a char set that indicates which char values are lead bytes
in multibyte character sets (Japanese, Chinese, etc).
This set is always empty for western locales. }
var
LeadBytes: set of Char = [];

нашел в какомто исходнике
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 31.08.2008, 11:04   #9
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

MBCS

Несмотря на то, что Unicode был специально разработан для поддержки многих языков, использовать его для хранения и передачи строк в Америке и большей части Европы неэффективно, потому что для этих регионов достаточно 256, а иногда всего 128 символов. Ведь первые 128 символов Unicode (\u0000 — \u007F) совпадают с ISO-646, а первые 256 символов (\u0000 — \u007F) совпадают с ISO-8859-1. Тем самым, используется только маленький кусочек всего спектра Unicode, ведь старший байт почти всегда равен нулю.

Возникает желание по-прежнему использовать Unicode внутри программы, но хранить и передавать данные в 8-битной кодировке, преобразуя данные непосредственно перед их получением или записью. В качестве записи в 8-битной кодировке можно использовать технологию MBCS, где каждый символ может занимать несколько байт.

Вопрос заключается в том, какой набор символов (кодировку) использовать для такого преобразования. Существующие кодировки не подходили для этой цели, поэтому Unicode Consortium выработал специальные кодировки для преобразования Unicode-строк в MBCS-строки. Эти кодировки носят название Unicode Transformation Format (UTF), и существуют в двух вариантах: UTF-7 и UTF-8. Они различаются количеством бит (7 или 8), используемых для кодирования.

Кодировка UTF-7 характерна тем, что часто требует больше байтов для представления данных, чем сам Unicode. Но эта кодировка необходима, так как многие старые системы (и не только, например, MIME) используют 7-битную кодировку символов.

Кодировка UTF-8, в свою очередь, очень хорошо подходит для хранения текста, который используют ASCII символы, и символы, чей Unicode код меньше \u0800. В этом спектре лежит большинство символов, используемых в европейских (соответственно, и американских) и ближневосточных странах. Для символов, чей код больше \u07FF, UTF-8, наоборот, мало подходит, потому что эти символы расплываются до 3 байт.

Алгоритмы конвертации между Unicode и UTF-7 или UTF-8 описаны в стандарте Unicode (The Unicode Standart).
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 31.08.2008, 11:05   #10
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

MBCS - multi byte character set
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что-такое .Net Иллидан Общие вопросы .NET 3 17.01.2008 16:41
Что такое Win32 API Slovinsky Свободное общение 10 29.10.2007 10:46
Что такое DLL и с чем его едят?? Илюха Общие вопросы Delphi 5 06.10.2007 10:43
то такое мастерство в программировании, что такое мастер программист и что он может? Cezar Свободное общение 29 02.06.2007 23:48