Delphi и Unicode

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

Ответить
Аватара пользователя
AiK
Сообщения: 2271
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

16 апр 2004, 12:16

Нужны наставления на путь истинный по сабжу. Что использовать: AnsitoUtf8 или StringToWideChar? Есть ли какие засады?
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

16 апр 2004, 16:53

Utf8 - кодирование переменной длины: для ASCII символов - 1 байт, для остальных - до 3 байтов. Т.е. если заранее известно, что текст в основном состоит из ASCII-символов, то с т.з. экономии памяти Utf8 эффективнее. Для иероглифов, понятно, наоборот :)
Аватара пользователя
AiK
Сообщения: 2271
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

16 апр 2004, 17:06

Спасибо. Вопрос вдогонку: как задёшево из ресурсов ASCII символы перегнать в Unicode. Например те же пункты меню?
Если нужно писать прямо в ресурсах в Unicode, то какой редактор использовать? IDE чур не предлагать, ибо ресурсами совсем не программист занимается :) .
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

17 апр 2004, 15:41

AiK, строковые свойства в dfm-файлах, задаваемые через Object Inspector, автоматически сохраняются в MBCS (UTF8 - один из вариантов MBCS), т.е. младшие ASCII символы - как есть, а остальные в multibyte. Обычные const строки в исходниках - зависит от типа: String - в ASCII, WideString - в Unicode. Ресурсные строки (resourcestring) - всегда в Unicode. Отсюда вывод: если нужно гарантировать, чтобы все строковые ресурсы задавались в Unicode, следует описывать их как resourcestring и подгружать в runtime для соотв. текстовых элементов интерфейса.

А MBCS чем не устраивает? IMHO это для ресурсов оптимальный формат - их же обычно посимвольно не надо разбирать (основное неудобство работы с multibyte strings).
Аватара пользователя
AiK
Сообщения: 2271
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

17 апр 2004, 15:45

Видимо не правильно выразился. У меня нет никаких dfm. API приложение. И ресурсы ручками создаются. Вернее компилятся из rc файлов. Которые пишу не я...
Даже самый дурацкий замысел можно воплотить мастерски
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

17 апр 2004, 16:03

Если мне память не изменяет, строковые ресурсы из rc всегда автоматически конвертируются в Unicode. Это можно легко проверить: добавить STRINGTABLE в rc и в нее какую-нибудь строчку типа 'Тестовая строка', скомпилить и поискать ее в exe-нике. Если нет - все OK :)
Ответить