![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Арабский язык & 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