Главная страница
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.5 MB
Время: 0.017 c
6-1189576836
ient
2007-09-12 10:00
2008.06.29
Принудительный вызов Recv в чужом приложении


2-1212170295
Gjo
2008-05-30 21:58
2008.06.29
Закрытие консольных приложений


2-1212146748
chargos
2008-05-30 15:25
2008.06.29
Обновление данных на форме


4-1192188544
arab
2007-10-12 15:29
2008.06.29
Арабский язык & Delphi


15-1211185363
barakuda
2008-05-19 12:22
2008.06.29
Нужна процедура отправки письма за деньги