Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.037 c