Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Арабский язык & Delphi [D7]


arab ©   (2007-10-12 15:29:00) 

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

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

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.

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


Desdechado   (2007-10-13 16:01:00) [1]

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


Anatoly Podgoretsky   (2007-10-13 15:50:00) [2]

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

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


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


> Anatoly Podgoretsky


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

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

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


Anatoly Podgoretsky   (2007-10-13 13:47:00) [4]

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


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

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


Anatoly Podgoretsky   (2007-10-13 13:17:00) [6]

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


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

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

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

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

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

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


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

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


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

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


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

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


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

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


DrPass   (2007-10-13 01:41:00) [12]

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


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

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


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


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

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


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


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


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


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

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


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


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


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


Наверх

Титульная страница Поиск, карта сайта Написать письмо