Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.066 c
7-1080470003
_dEMOn
2004-03-28 14:33
2004.05.16
Порты


3-1082369091
}|{yk
2004-04-19 14:04
2004.05.16
Не подскажитте, почему такой вот запрос


1-1083727727
russko
2004-05-05 07:28
2004.05.16
Многоуровневый выпадающий список


1-1083537202
Equillibrium
2004-05-03 02:33
2004.05.16
динамически создавать TrackBar


11-1069586114
romtek
2003-11-23 14:15
2004.05.16
аналог MessageDlg в KOL?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский