Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

Unicode   Найти похожие ветки 

 
Mim1   (2004-04-22 14:54) [0]

Есль ли возможность сделать полностью Unicode приложение на delphi.
И еще, как дела с unicode обстоят на kylix(?), есть ли возможность сделать так что бы приложение работало на всех машинах вне завмисимости от настроек пользователя?
Насколько поддерживается Unicode в операционных системах windows 9x? Как хранят строки стандартные компоненты?
А может кто посоветует статью про работу с unicode в delphi.


 
Тимохов ©   (2004-04-22 15:29) [1]


> Насколько поддерживается Unicode в операционных системах
> windows 9x

Полностью Unicode win98 не считается.
Многие unicode функций фактически сделаны через ansi функции (в win2000 например совсем наоборот).

Почитайте MSDN раздел - national language support
http://msdn.microsoft.com/library/en-us/intl/nls_19f8.asp?frame=true


 
Mim1   (2004-04-22 15:47) [2]

Скажите дмитрий, а вы не в курсе как дела обстоят с компонентами, если я например попытаюсь наполнить стринггрид строками юникода у меня это получится?


 
Mim1   (2004-04-22 15:48) [3]

Mim1   (22.04.04 15:47) [2]  

Извиняюсь за личное сообщение, этот вопрос отностися ко всем.


 
Тимохов ©   (2004-04-22 15:51) [4]


> Mim1   (22.04.04 15:47) [2]

получится, если unicode либо англ символы, либо русские.
иначе ? будут.

считать ли это "получилось" решайте сами.


 
Mim1   (2004-04-22 16:00) [5]

То есть если я напишу например

stringgrid.cells[123,123] := myunicodestring;
edit1.text := myunicodestring;

То произойдет перекодирования из юникода в строку, я правильно понял?


 
Тимохов ©   (2004-04-22 16:05) [6]

unicode - это тоже строка.

если не ошибаюсь (лень проверять), то
записть типа

s := ws

использует WideCharToMultiByte для текущего языка.
Что-то типа этого.

Если очень интересно - почитайте ссылку + посмотрите CPU на строке s := ws.


 
TUser ©   (2004-04-22 16:25) [7]


> если я например попытаюсь наполнить стринггрид строками
> юникода у меня это получится?

Используйте библиотеку TntUnicodeControls


 
Mim1   (2004-04-22 16:39) [8]

TUser ©   (22.04.04 16:25) [7]

Не могли бы вы описать принцип работы этой библиотеки, модифицирует ли она уже существующие элементы управления или просто включает их unicode копии.

А далее вопрос ко всем.

Не ужели delphi vcl не умеет работать с юнокодом без скачивани дополнительных пакетов и тд? Ведь юникод это довольно перспективная вещь. Неужели все сводится к неоднократному преобразованию туда сюда внутри приложения? :(


 
TUser ©   (2004-04-22 16:46) [9]

Она не модифицирует. Там есть свои компоненты, типа TntStringGrid. Кидаешь его на форму и юзаешь.

> Не ужели delphi vcl не умеет работать с юнокодом без скачивани
> дополнительных пакетов и тд?

Не умеет.


 
Mim1   (2004-04-22 16:50) [10]

TUser ©   (22.04.04 16:46) [9]

С сожелению мне такой вариант не походит. Ведь может созникнуть ситуация когда мне понадобится скажем наследник стрингрида. Тем более что вряд ли они переписали классы типа tform и подобные.
В любом случае спасибо за попытку.
И всеже печально что борланд не делает польной поддержки юникода. :(


 
Тимохов ©   (2004-04-22 16:59) [11]


> Mim1   (22.04.04 16:50) [10]

Борланд молодец - сосредотачивается именно на том, что нужно для работы.

Вы видели исходники сей, которые поддерживают unicode и ansi одновременно? Жуть. Вернее привыкнуть надо.

Зачем вам Unicode?
Хотите делать интернациональные приложения?
Это и без unicode можно - ansi прекрасно показывает интернациональные символы, хоть японские.


 
Mim1   (2004-04-23 19:37) [12]

Тимохов ©   (22.04.04 16:59) [11]

> Борланд молодец - сосредотачивается именно на том, что нужно для работы.

А мн колега (безусловно уважаемый человек, большой специалист) говорит что анси умирает, что юникод рано или позно возмет свое(вы не подумайте что только изза этого я решил попытаться ввести Unicode в своем приложении, на то есть другие веские причны).

> Зачем вам Unicode?

Странно, зачем его вообще придумали при таком отношении.
"Послущайте!, если звезды зажигают, значит это кому нибуть нужно." (с) не помню


 
Петров Денис ©   (2004-04-23 20:40) [13]

> Вы видели исходники сей, которые поддерживают unicode и ansi
> одновременно? Жуть. Вернее привыкнуть надо.

Да, эти строчки кода действительно ужасны:

// приложение поддерживает Юникод
#define UNICODE
#ifdef UNICODE
#define _UNICODE
#endif

или это:

// приложение не поддерживает Юникод
//#define UNICODE
#ifdef UNICODE
#define _UNICODE
#endif

А привыкать к такому придется лет десять, не меньше...

> Зачем вам Unicode?

А вот несколько примеров из серии "зачем":
1. Методы COM-интерфейсов работающие со строками, принимают их только как Юникод, т. к. Юникод позволяет легко локализовать строки.
От того, что в Delphi есть тип Variant, легче не становится. При передаче строки как параметра методу COM-объекта и так производится вызовы GetIDsOfNames и Invoke, а тут еще идет преобразование строки в Юникод.

2. Windows 2000 (читай - XP, 2003 Server) - ОС, целиком и полностью построенная на Юникод. Если API-функции передается ANSI-строка, она сначала преобразуется в Юникод, и только потом передается ОС.

Мысли из пп. 1 и 2 не мои, (С) by Рихтер. Он, конечно, не Аллах и даже не мастер Delphi, наверное :), но с его аторитетом трудно спорить.

А для тех, кто пишет под Windows и у кого еще возникает вопрос "зачем Юникод"?, рекомендую прочитать главу №2 "Unicode" из рихтеровской "Windows" для профессионалов.

> Борланд молодец - сосредотачивается именно на том, что
> нужно для работы.

Весьма сомнительное утверждение... Тем более, что вопрос "что нужно", достаточно субъективный.


 
Петров Денис ©   (2004-04-23 20:49) [14]

Кстати, про Kylix.
В CLX вроде как с Юникодом все хорошо. Как минимум, там все строки - WideString.
В общем-то достаточно обоснованно, в Linux без Юникода как-то сложно...


 
Игорь Шевченко ©   (2004-04-23 21:18) [15]


> Борланд молодец - сосредотачивается именно на том, что нужно
> для работы.


MS вот тоже нельзя упрекнуть в том, что она сосредотачивается не на том, что нужно для работы, однако поддержка Unicode у нее с самого начала присутствует.

> Вы видели исходники сей, которые поддерживают unicode и
> ansi одновременно? Жуть. Вернее привыкнуть надо.


Уважаемый, огромная просьба: вставляйте, пожалуйста, слова "по моему скромному мнению". Ничего жуткого в исходниках на С, поддерживающих ANSI и Uniсode я не увидел. Если не трудно, то покажите, пожалуйста тот ужас, можно на примере.


> Это и без unicode можно - ansi прекрасно показывает интернациональные
> символы, хоть японские.


Опять же, если не трудно, примерчик с японскими (а лучше, с китайскими) символами на ANSI в студию.


> Зачем вам Unicode?


Вы будете страшно удивлены, но на NT-системах вызовы Unicode-функций быстрее работают. Иногда, знаете ли, бывает нужно.


 
Тимохов ©   (2004-04-26 11:31) [16]


> Игорь Шевченко ©   (23.04.04 21:18) [15]

Затюкали:))
Не имел возможности ответить в выходные, поэтому отвечаю сейчас.

По пунктам.

1. По поводу борланда-молодца. Поясню свою позицию. Сразу опровергну свое же утверждение :)) - борланд сделал не очень хорошо - все строковые функции у него по умолчанию ansi, unicode функции также импортированы, но умолчательными являются именно ansi. Например, AnisUpperCase = CharUpperA, а не CharUpperW. Но что бы не быть противоречивым скажу, что в этом борланд и молодец - при отсутствии мароподстановок он сделал выбор в пользу ansi, наверное, считая, что американскому и европейскому разработчику это все не очень нужно и озабачиваться ему об этом не нужно, а азиатский разработчик пусть пишен на unicode. В тоже время все unicode версии импортированы - если надо пользуйся ими.

2. По поводу вставки "имхо". Обязательно буду. Все же поддержка unicode в сях требует привычки, о чем я и написал, особенно для программиста на паскале, в котором просто нет макроподстановок. Если человек знаком с с++, то проблем не будет. У меня некоторое время были, но я конечно LMD, так что это мои проблемы.

3. Про японские и китайские символы на вашем компе. Обязательно, но вы готовы установить system language на вашем компе в соответствующий язык? Я дома это проверял - вполне успешно получалось.

4. По поводу зачем вам unicode? Это был всего лишь вопрос, а не гнутие пальцев - вы типа ламер, вам это типа нафиг не нужно. Мне было просто интересно. То что unicode функции работат быстрее мне и так знакомо - не нужно преобразование ansi-unicode-asni. Рихтер об этом писал. К тому же я это проверял - тестом.

Вопрос всем:
1. Скажите честно, пишете ли вы полностью unicode приложения на дельфи?
2. Как вы это делаете? Поясню - одно дело устанить компоненты, другое дело заставить всю программу работать с unicode. Конкретнее - как вы заставляете TCanvas работать с unicode?


 
Anatoly Podgoretsky ©   (2004-04-26 11:45) [17]

Ожидать поддержки в VCL не приходится, тем более после того как на Win32 Борланд поставил крест. По словам специалистов из Борланд задача очень сложная, особенно учитывая наличие в эксплуатации двух ОС - Win9x и НТ, первая не является Юникод, но Микрософт то обошел это в своих продуктах.


 
Игорь Шевченко ©   (2004-04-26 12:37) [18]


> Скажите честно, пишете ли вы полностью unicode приложения
> на дельфи?


Да. Как модно говорить: "чиста на API". Поскольку эти приложения работают только в NT-системах, то почему бы не писать их с использованием Unicode ?


 
Тимохов ©   (2004-04-26 14:53) [19]

1. Правильно ли я понимаю, что если используете vcl, то ansi, если чиста api, то unicode?
2. Действительно unicode это nt-системы. Что же вы делаете тогда с 95ыми? Пишете отдельную версию или просто не работаете, требуя NT?


> Игорь Шевченко ©   (26.04.04 12:37) [18]

Так что с китайским? Могу прислать, но просто так не хотелось бы делать, т.к. чтобы оформить это в конктерный пример, нужно поставить другой язык, перегрузиться, ну и вообще повозиться, что бы вывести осмысленную фразу (найти какую-нибудь интеренсную фразу на китайском:))). Или вы мне верите, что можно и в ansi (dbcs) написать программу, которая будет корректно работать при условии установки правильного системного языка?


 
Anatoly Podgoretsky ©   (2004-04-26 15:02) [20]

Тимохов ©   (26.04.04 14:53) [19]
1. Нет, можно и ansi и unicode, для этого два набора функций A и W, но нет гарантии, что одна из них не является заглушкой.

2. 9х не имеет поддержки юникод, только через некоторые новые органы, функции W являются в основном заглушкой или весьма ограничены.

Могу быть неправ, но информации другого рода не видал.


 
Игорь Шевченко ©   (2004-04-26 15:48) [21]


> 1. Правильно ли я понимаю, что если используете vcl, то
> ansi, если чиста api, то unicode?


Если VCL, то естественно, ANSI, иначе не получается.
Если API, то стараюсь использовать Unicode.


> 2. Действительно unicode это nt-системы. Что же вы делаете
> тогда с 95ыми? Пишете отдельную версию или просто не работаете,
> требуя NT?


Я не пишу такие программы под Win9x, они не имеют смысла, так как используют функции, реализованные только на NT-платформе.


> Так что с китайским? Могу прислать, но просто так не хотелось
> бы делать, т.к. чтобы оформить это в конктерный пример,
> нужно поставить другой язык, перегрузиться, ну и вообще
> повозиться, что бы вывести осмысленную фразу


А в случае использования Unicode возиться не надо :) Почувствуйте разницу.


 
Тимохов ©   (2004-04-26 16:00) [22]


> Игорь Шевченко ©   (26.04.04 15:48) [21]

И конечно же согласен с мнением мастеров, в частности, Вашим и Рихтера, что за юникод будущее.

После ознакомления с NLS, я начал искать, как это все применить в Дельфи. С сожалением увидел, что vcl, на это в принципе не расчитана. Тогда то у меня и родилась мысль, что борланд сделал хорошо - просто за нас решил, что мне нужнее. Если серьезно, то я так не считаю - конечно, было бы лучше, если Борланд внедрил что-то похожее на то, как это сделано в сях - через define UNICODE. Но раз этого Борланд не сделал, а я дельфи люблю, вот я вывел теорию, что борланд молодец, о которой я и сообщил в одном из постов выше, на что вы отреогировали негативно. Виноват - тогда я забыл сказать про "имхо".

Спасибо за ответы - главное, что я для себя вывел - хочешь полностью unicode приложение, тогда пиши на чиста api.



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.041 c
1-1083422566
Leos
2004-05-01 18:42
2004.05.16
"Нестандартная форма"


14-1083078645
Yanis
2004-04-27 19:10
2004.05.16
Блок схема :)


4-1080467334
Nevil
2004-03-28 13:48
2004.05.16
Как определить атрибуты файла из SHGetFileInfo?


14-1082757538
Petr. A. V
2004-04-24 01:58
2004.05.16
Freecell


14-1082924268
Piter
2004-04-26 00:17
2004.05.16
Определение времени