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

Вниз

Арабский язык & Delphi   Найти похожие ветки 

 
arab   (2007-10-12 15:29) [0]

Как можно корректно отображать арабские символы на компьютере, на котором неизвестно установлена ли поддержка его?

Собственно я использую ф-ию

function WideStringToString(const ws: WideString; codePage: Word): AnsiString;
var
 l: integer;
begin
 if ws = "" then
   Result := ""
 else
 begin
   l := WideCharToMultiByte(codePage,
     WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,
     @ws[1], - 1, nil, 0, nil, nil);
   SetLength(Result, l - 1);
   if l > 1 then
     WideCharToMultiByte(codePage,
       WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,
       @ws[1], - 1, @Result[1], l - 1, nil, nil);
 end;
end;


с кодовой страницей 1256.

Работает чудесно на ПК, где есть поддержка арабского. Можно ли и как схитрить на той машине, где поддержки оного нет?


 
Игорь Шевченко ©   (2007-10-12 15:40) [1]


> Можно ли и как схитрить на той машине, где поддержки оного
> нет?


Можно, наверное. Используя TNT-библиотеку компонентов и работая только с Unicode


 
Desdechado ©   (2007-10-12 16:09) [2]

Но если шрифты не установлены, то хитри-не хитри, увидишь только вопросики.


 
arab   (2007-10-12 16:28) [3]


> Но если шрифты не установлены, то хитри-не хитри, увидишь
> только вопросики.


Да вот вопросиков и нет, даже если нет поддержки арабского в региональных настройках (Font=Tahoma+CharSet=ARABIC_CHARSET).
Только корявенько показывает даже как на такого специалиста в арабском, как я.


 
DrPass ©   (2007-10-13 00:44) [4]


> Да вот вопросиков и нет, даже если нет поддержки арабского
> в региональных настройках

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


 
Германн ©   (2007-10-13 01:12) [5]

Удалено модератором


 
DrPass ©   (2007-10-13 01:41) [6]

Удалено модератором


 
Германн ©   (2007-10-13 01:55) [7]

Удалено модератором


 
Германн ©   (2007-10-13 02:15) [8]

Удалено модератором


 
DrPass ©   (2007-10-13 02:26) [9]

Удалено модератором


 
Германн ©   (2007-10-13 02:51) [10]

Удалено модератором


 
arab   (2007-10-13 12:48) [11]

Во, блин, такую тему зафлудили...

Вот у меня получилось отобразить арабский под кодовой странице 1256 на голой виртуальной машине, где нет поддержки арабского. Только отображает реверсивно.

Но странность в том, что у клиента отображаютья местами знаки вопросов.

В чём же может быть проблема???

Помогите, пожалуйста!!!


 
Anatoly Podgoretsky ©   (2007-10-13 13:17) [12]

Это означает, что часть символов невозможно превратить в 1256, не арабские (из 1256) и не английские. Это нормальное поведение.
Хочешь нормальную работу - переходи на Юникод


 
arab   (2007-10-13 13:38) [13]

А можно функцию перекодировки в Юникод?


 
Anatoly Podgoretsky ©   (2007-10-13 13:47) [14]

А зачем тебе перекодировать, то что у тебя и так в Юникод - widestring это и есть Юникод, а если из строки, то обратная функция MultiByteToWideChar или если локализация для не Юникод программ совпадает, то S := WS


 
arab   (2007-10-13 15:04) [15]


> Anatoly Podgoretsky


Ну вот конкретный мой жалкий пример:
есть база Access, поле с арабскими строками
Как мне их отображать в компонентах (cxGrid, Button, Label etc)? Какой Font и CharSet установить или как конвертировать?

Я, как уже писал, использую ф-ию WideStringToString + CharSet = ARABIC_CHARSET + Font.Name = Tahoma.
Как следствие, у меня всё хорошо отображается, а у клиента - нет (((

Помогите, пожалуйста!


 
Anatoly Podgoretsky ©   (2007-10-13 15:50) [16]

> arab  (13.10.2007 15:04:15)  [15]

Используй Юникод компонент и ничего не надо конвертировать.


 
Desdechado ©   (2007-10-13 16:01) [17]

> А можно функцию перекодировки в Юникод?
Тебе уже сказали, что VCL не поддерживает юникод. Используй TNT unicode controls Игорь Шевченко ©   (12.10.07 15:40) [1]



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

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

Наверх




Память: 0.48 MB
Время: 0.053 c
15-1210759991
freezon
2008-05-14 14:13
2008.06.29
dxComponentPrinter и cxgrid


10-1147412969
kmi
2006-05-12 09:49
2008.06.29
Печать документа в Word


15-1210936135
Kolan
2008-05-16 15:08
2008.06.29
SQLite не может получить доступ на Висте, почему?


15-1210697006
Ega23
2008-05-13 20:43
2008.06.29
Филосовский вопрос


15-1210850308
fuzzy
2008-05-15 15:18
2008.06.29
Кнопки в стиле Media Player 11





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский