![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли WideString спокойно использовать вместо String? [D7]
SPeller © (2009-02-16 13:04:00)Дело в том, что написал себе небольшую обёртку над libxml, сначала везде использовал string. Но потом понадобилась поддержка юникода в классах и utf-8 в xml и я просто взял и заменил все декларации со string на WideString, добавив где надо utf8encode/decode. Работать работает, но тут наткнулся в хелпе на то, что string имеет встроенный счетчик ссылок, а WideString - нет. И вообще, местами говорят, что WideString это больше для COM, нежели для поддержки юникода в программе. А поскольку в этом аспекте я не сильно компетентен, то закрались сомнения - использование этих двух типов чем-нибудь различно? Не надо ли делать дополнительных телодвижений чтобы небыло каких-нибудь утечек?
(2009-05-01 18:18:00) [1]Удалено модератором
Pavia (2009-02-21 03:31:00) [2]
> или древних майя с древнекорейским туда включили?
Да древнии языки включили.
Так как я так и не услышал то что желал. Задам более развернута вопрос.
Как в дельфи корректно работать с юникодом?
Как выделить из строки символ? Как узнать число символов? Как правильно сравнивать строки? Что нибудь стандарт говорит про похожи символы "е" и "ё" ? В русском только два, а в китайском их много.
Может есть еще что-то что нужно знать?
Pavia (2009-02-21 03:31:00) [3]
> или древних майя с древнекорейским туда включили?
Да древнии языки включили.
Так как я так и не услышал то что желал. Задам более развернута вопрос.
Как в дельфи корректно работать с юникодом?
Как выделить из строки символ? Как узнать число символов? Как правильно сравнивать строки? Что нибудь стандарт говорит про похожи символы "е" и "ё" ? В русском только два, а в китайском их много.
Может есть еще что-то что нужно знать?
Anatoly Podgoretsky (2009-02-20 13:34:00) [4]> SPeller (20.02.2009 12:40:32) [32]
Именно так 65000 недостаточно, что бы все вместить, не забудь про иероглицы, только китайцам и японцам надо больше.
И насчет майя и прочей экзотики, они тоже имеют право на жизнь. Кроме букв и иероглифов алфавит поддерживает и пиктограммы.
SPeller (2009-02-20 12:40:00) [5]а нафига ucs-4, в 65 тысяч символов всё не вместили, нужно 4 миллиона? с запасом на иноземные языки чтоли? или древних майя с древнекорейским туда включили?
Anatoly Podgoretsky (2009-02-20 12:34:00) [6]Ой в Д2006, поскольку Д7 очень опасен.
Опасность только с литералами.
Ответ на [21][27] тебе PWideChar не нужен.
Anatoly Podgoretsky (2009-02-20 12:31:00) [7]Я использую WideString в Д7 почти везде, в совокупности с TNT Unicode Controls.
Anatoly Podgoretsky (2009-02-20 12:29:00) [8]На самом деле есть два Юникода UCS-2 и UCS-4
И с ними странные вещи творятся, то сначала одни смеются, мол в Микрософте дураки работают, но когда МС переходит на UCS-2, то Юникод корсоциум переходит на UCS-4 и опять смеется, мол в Микрософте дураки работают.
Pavia (2009-02-20 07:55:00) [9]А как в дельфи 7 грамотно работать с юникодом? А то SizeOf(WideChar)=2 а юникодовый символ 4 милиона, нужно ведь 4 байта!!!!
SPeller (2009-02-20 01:55:00) [10]
> Скажи для чего и где ты используешь WideString
Я же в сабже написал. Класс дла работы с xml. Сейчас задача маленькая, но сделано с рассчетом на будущее, чтобы можно было работать с utf-8 xml без запарки с перекодировками, хоть с китайским языком.
Anatoly Podgoretsky (2009-02-19 15:04:00) [11]> SPeller (19.02.2009 14:09:24) [24]
При отсутствие ты должен сам решать, когда удалять.
Anatoly Podgoretsky (2009-02-19 15:02:00) [12]> SPeller (19.02.2009 12:15:21) [21]
Скажи для чего и где ты используешь WideString, а я тебе скажу что правильнее, по крайней мере на мой взляд.
SPeller (2009-02-19 14:09:00) [13]Ну хорошо. А счетчик ссылок, точнее его отсутствие, в каких моментах проявляется?
Сергей М. (2009-02-19 12:25:00) [14]А зачем закрыв глаза отдавать это на откуп компилятору, если каждая секунда дорога и работа с автоматически создаваемой/уничтожаемой копиейвозможно и не требуется ?
Т.е я не против WideString, но, imho, он уместен только там где он действительно уместен)
SPeller (2009-02-19 12:15:00) [15]Прочитал. Вопрос: зачем вы мне советовали PWideChar вместо WideString - чтобы вручную заниматься вызовами SysXXString?
SPeller (2009-02-19 12:15:00) [16]Прочитал. Вопрос: зачем вы мне советовали PWideChar вместо WideString - чтобы вручную заниматься вызовами SysXXString?
Сергей М. (2009-02-19 09:33:00) [17]
> SPeller © (19.02.09 01:20) [17]
Прочитай внимательно:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1357
Сергей М. (2009-02-19 08:31:00) [18]
> почему работает
Проиллюстрируй в коде ..
Riply (2009-02-19 02:13:00) [19]> [17] SPeller © (19.02.09 01:20)
> Да и вообще, тему эту создал чтобы прояснить не до конца понятные мне моменты.
И правильно сделал.
Для меня, например, данная ветка была полезна.
SPeller (2009-02-19 01:20:00) [20]
> Сергей М. © (18.02.09 12:51) [13]
> А надо бы как PWideChar
Дык, а почему работает если как указатель на строку использовать? По-моему, это то же самое, как объявить var WideString, что и делается в ком-объектах, создаваемых в дельфи.
> А если серьезно, то в данном случае, видимо, придется выбирать
> между
> "критичностью к скорости" и способом хранения данных.
Скорость пока не критична, это я на будущее чтобы знать. Да и вообще, тему эту создал чтобы прояснить не до конца понятные мне моменты.