Главная страница
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.024 c
3-1201071521
O.O
2008-01-23 09:58
2008.06.29
Изменение вычисляемого поля


15-1210823680
Slider007
2008-05-15 07:54
2008.06.29
С днем рождения ! 15 мая 2008 четверг


15-1208404328
brother
2008-04-17 07:52
2008.06.29
Совет по железу


15-1210823426
Капибара из дома
2008-05-15 07:50
2008.06.29
Настройка приоритета для приложения


2-1212561004
uno-84
2008-06-04 10:30
2008.06.29
Фставка файла в ListView