Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли WideString спокойно использовать вместо String? [D7]


Страницы:   1 2

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, что и делается в ком-объектах, создаваемых в дельфи.


> А если серьезно, то в данном случае, видимо, придется выбирать
> между
> "критичностью к скорости" и способом хранения данных.
Скорость пока не критична, это я на будущее чтобы знать. Да и вообще, тему эту создал чтобы прояснить не до конца понятные мне моменты.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо