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

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

Кодировки ASCII [D6, Win2k, WinXP]


Страницы:   1 2

kaif ©   (2008-01-29 18:31:00) 

Пытаюсь использовать армянский шрифт Arial LatArm.
Буквы армянского алфавита (их всего 36) занимают ASCII-коды, начиная с 178 и далее подряд (всего 62 символа).

procedure TForm1.Button2Click(Sender: TObject);
var
 c: char;
 i: integer;
begin
 Edit2.Text := '';
 for i := 178 to 178 + 62 - 1 do
 begin
   c := chr(i);
   Edit2.Text := Edit2.Text + c;
 end;
 Label1.Caption := Edit2.Text;
 PaintBox1.Canvas.Font.Charset := ANSI_CHARSET;
 PaintBox1.Canvas.Font.Name := 'Arial LatArm';
 PaintBox1.Canvas.TextOut(0,0,Edit2.Text);
end;


Все компоненты (и TEdit и TLabel и TCanvas, в который я попробовал вывести текст вручную, как видно в примере) отображают в русской Windows XP Pro только четыре армянские буквы, с кодами 181,182,183 и 187.
На остальных позициях отображаются квадраты.

Тот же EXE-файл отображает весь алфавит без проблемпод русской Windows 2000.

Посмотрел исходный код компонентов VCL. Не вижу никаких причин чтобы так работало.

В "таблице символов" Windows все буквы видны под XP тоже.
Даже в Notepad-е все буквы видны.

Видимо только дельфийские приложения так себя ведут. Но ведь они вызывают функцию DrawText(), а дальше все делает Windows... Я ничего не понимаю и даже не представляю, что можно предпринять.

Помнится лет пять назад у меня была точно такая же проблема под Windows 2000. Тогда под Windows 98 все работало нормально, а под W2k часть букв не отображалась. Теперь все отображаются, но проблема теперьв XP.

Кто что может посоветовать или прояснить?
С уважением.


Плохиш   (2008-01-29 18:40:00) [21]


> kaif ©   (29.01.08 18:31)  

Ну не верю я, что kaif не знает про отсутствие поддержки юникода в визуальных компонентах VCL.

> Но ведь они вызывают функцию DrawText(),

А привязана она к DrawText A...


Страницы:   1 2

Наверх

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