Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема шрифта 
:(
    Опции темы
epirson
Дата 25.1.2007, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 25.1.2007

Репутация: нет
Всего: нет



При переносе программы в другую ОС, по всей видимости с другими языковыми параметрами, в некоторых местах не отображается кириллица, вместо русских букв - "???" Какой самый оптимальный вариант решения данной проблемы?
PM MAIL   Вверх
aktuba
Дата 25.1.2007, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38





--------------------
user posted image
PM MAIL WWW Skype   Вверх
Bose
Дата 25.1.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



хочу побрюзжать: 

Вопрос поставлен некорректно. Ты не указал, ни на какую ось ты переносишь, ни какие там региональные настройки.

Цитата(epirson @  25.1.2007,  02:00 Найти цитируемый пост)
в некоторых местах не отображается кириллица, вместо русских букв  - "???" 

Ни в каких местах у тебя вопросики вместо букв 

Цитата(epirson @  25.1.2007,  02:00 Найти цитируемый пост)
Какой самый оптимальный вариант решения данной проблемы?

Самый оптимальный вариант - это использовать Unicode Controlы. (Ищи TntUnicodeControls)

PM MAIL WWW Skype   Вверх
epirson
Дата 30.1.2007, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 25.1.2007

Репутация: нет
Всего: нет



http://
aktuba, спасибо, прочитал http://forum.vingrad.ru/topic-82093/view-all.html 

Попробовал. С ComboBox проблема не решилась + появилось, новая попутная. вместо "????" на одном копьютере, на англ ос, стали отображатся вообще непонятные значки, вот, на скриншоте: 
user posted image


Bose, ось - WinXP, региональные настройки в первом случае ("????") не извесны, во втором (непонятные значки) - язык для программ, не поддерживающий юникод стоит английский. При установке русского все отлично работает, но желательно что бы программа это делала сама. 
PM MAIL   Вверх
Bose
Дата 30.1.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(epirson @  30.1.2007,  19:14 Найти цитируемый пост)
во втором (непонятные значки) - язык для программ, не поддерживающий юникод стоит английский. При установке русского все отлично работает, но желательно что бы программа это делала сама. 

что бы программа это делала сама, нужно воспользоваться советом данным в той тебе и 
1) поставить вызов SetThreadLocale с русской локалью в начале приложения
2) для всех шрифтов поставить Cyrillic Charset 
3) Убедиться, что на том компе для этих шрифтов проинсталлены русский набор символов

PM MAIL WWW Skype   Вверх
epirson
Дата 31.1.2007, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 25.1.2007

Репутация: нет
Всего: нет



Bose, 

Re: 
1) поставил, project - view source:

Код

program Project1;

uses
  Forms, windows,
   main1024 in 'main1024.pas' {Form1024},
  flang in 'flang.pas' {lang},
  fmain in 'fmain.pas' {main};

{$R *.res}

begin

  SetThreadLocale(1049);
  Application.Initialize;
...


2) поставил, RUSSIAN_CHARSET
3) открыл wordpad напечатал слово "привет", шрифт Tahoma (именно его использую в приложении), все отобразилось замечательно.  
PM MAIL   Вверх
Bose
Дата 31.1.2007, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



epirson, и при этом всё такая же картина?
user posted image

Такое ощущение, что проблема там всё-таки в неправильном Charsete. Я бы попробовал в момент сворачивания(OnCloseUp) сделать отладочный вывод следующей информации:
1) GetThreadLocale (должна быть такой же как и в SetThreadLocale(1049))
2) Font и Charset у ComboBoxa
3) Чему равно свойство ParentFont у ComboBoxa
4) если ParentFont у ComboBoxa равен True, то какие свойства Font и Charset у родителя(Parent) ComboBoxa
PM MAIL WWW Skype   Вверх
epirson
Дата 31.1.2007, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 25.1.2007

Репутация: нет
Всего: нет



Bose, ага! вот. GetThreadLocale говорит значение 1033! почему? есть варианты? 
PM MAIL   Вверх
Snowy
Дата 31.1.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Патамучта манифест
PM MAIL   Вверх
Bose
Дата 31.1.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(epirson @  31.1.2007,  16:07 Найти цитируемый пост)
Bose, ага! вот. GetThreadLocale говорит значение 1033! почему? есть варианты? 

Возможно, смена локали происходит в Application.Initialize. 

Или(!) SetThreadLocale(1049) вообще не срабатывает. Что кстати возвращает вызов SetThreadLocale(1049)? 

Так или иначе, нужно отследить, в какой момент происходит изменение.

Добавлено @ 16:45 
Цитата(Snowy @  31.1.2007,  16:44 Найти цитируемый пост)
Патамучта манифест

 smile 
Snowy, вы, гуру, загадками изволите говорить smile Нельзя ли с этого места поподробнее smile 
PM MAIL WWW Skype   Вверх
Yanis
Дата 31.1.2007, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Snowy
Ты имеешь ввиду параметр language в файле *.manifest?

Это сообщение отредактировал(а) Yanis - 31.1.2007, 16:52


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Snowy
Дата 31.1.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Угу. При подключении манифеста может быть всё что угодно.
А настроить его должным образом у меня не получается.
До дыр зачитал MSDN, но написанное там не работает, готовые примеры также не прокатывают.
PM MAIL   Вверх
Yanis
Дата 31.1.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



А если попробовать SetThreadLocale вызвать "в программе", т.е. OnCreate например?!
Вообще странная картинка:
user posted image
Что за компонент? Как происходит отрисовка? Как строки заносятся?


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Snowy
Дата 31.1.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Yanis @  31.1.2007,  16:58 Найти цитируемый пост)
А если попробовать SetThreadLocale вызвать "в программе", т.е. OnCreate например?!
Это уже поздно.
Нужно до загрузки ресурсов вызвать. А она происходит в конструкторе TForm.
PM MAIL   Вверх
Yanis
Дата 31.1.2007, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(Bose @  31.1.2007,  17:44 Найти цитируемый пост)
Что кстати возвращает вызов SetThreadLocale(1049)?

Кстати, тред получает какое-то сообщение, когда для него вызывают  эту функцию.... Проверить бы smile


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1803 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.