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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Странности с символами в Memo и XP Manifest 
:(
    Опции темы
bazzzman
  Дата 7.9.2006, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот в чем проблема:

1. Windows XP SP2 (обязательно надо включить визуальные стили) + Delphi 7 создаем новый пустой проект.

2. Кидаем на форму TMemo.

3. Кидаем TButton с обработчиком:
Код

procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
 Caption := '';

 // проходимся по содержимому Memo1 и выводим в заголовке окна
 // порядковый номер символа

 for i := 1 to Length(Memo1.Text) do
  Caption := Caption + IntToStr( Ord(Memo1.Text[i]) ) + '  ';
end;

4. Запускаем проект. В Memo1 вводим 3 спец символа: Alt+0177, Alt+0178, Alt+0179
(Например, при включенном NumLock'е и зажатом Alt'е нажимаем на цифровой клавиатуре последовательно 0 1 7 7. Ну про это я думаю все знают  smile )

5. Нажимаем на кнопку.

В итоге видим вот такой результат:
user posted image

Все отлично - классно работает.



А терепь в Delphi на форму кидаем компонент XPManifest (вкладка Win32). Т.е. просто добавили manifest.

Запускаем, получаем:
user posted image


И ord у служебных символов не тот и показываются они криво. Как с этим бороться?


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


Опытный
**


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

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



Возможно в ХР-шной теме используется другой шрифт для вывода в Memo.
Попробуй поэкспериментировать с Memo.Font
PM MAIL   Вверх
bazzzman
Дата 7.9.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Шрифт тот же.

Побовал - шрифт никак не влияет на ord символа.
PM MAIL WWW   Вверх
Alexeis
Дата 7.9.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



bazzzman, возможно меняется CHARSET у шрифта.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
dvamaster
Дата 7.9.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Скорее у тебя с Виндой Криво что-то

У меня все норма

Цитата(bazzzman @  7.9.2006,  12:10 Найти цитируемый пост)
Запускаем проект. В Memo1 вводим 3 спец символа: Alt+0177, Alt+0178, Alt+0179


попробуй программно ввести

Код

s := Char(177);
s := s + Char(178);
s := s + Char(179);
Memo.Lines.Add(s);



--------------------
Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/

Что же я сделал не так? /Король Лир/

Я делаю это для твоего же блага! /Любой родитель и палач/

PKUNZIP.ZIP /неизвестный/
PM MAIL WWW ICQ   Вверх
RideX
Дата 7.9.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 94
Регистрация: 8.9.2004

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



Цитата(dvamaster @  7.9.2006,  14:53 Найти цитируемый пост)
Скорее у тебя с Виндой Криво что-то
 Попробовал - тоже самое, без манифеста всё ОК.


bazzzman, это не только с TMemo. На WinAPI, диалог с обычным "EDIT" контролом - тоже самое, с манифестом те же самые проблемы. Причем не только Delphi, любой компилятор.
PM   Вверх
Yanis
Дата 7.9.2006, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А у меня с манифестом всё нормально работает в Memo. 
Комбинации 
Цитата(bazzzman @  7.9.2006,  10:10 Найти цитируемый пост)
Alt+0177, Alt+0178, Alt+0179
 по крайней мере работают.



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


Шустрый
*


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

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



Цитата(dvamaster @ 7.9.2006,  11:53)

попробуй программно ввести

Код

s := Char(177);
s := s + Char(178);
s := s + Char(179);
Memo.Lines.Add(s);

Так это должен делать пользователь через Alt+0178, не программно smile

Цитата
Скорее у тебя с Виндой Криво что-то

Пробовал на другой машине - тот же результат.

Yanis, у тебя визульные стили включены?

Добавлено @ 02:45 
Цитата(alexeis1 @ 7.9.2006,  11:42)
bazzzman, возможно меняется CHARSET у шрифта.

Charset меняет отображение символа, но Ord всегда = 63. При любом charset'е и разных символах (и для Alt+0178 и для Alt+0179 - ord = 63).

Может есть какая-то другая возможность получить код символа?
PM MAIL WWW   Вверх
Elfebet
Дата 8.9.2006, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

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



bazzzman, Кстати 63 символ - это символ знака вопроса. Вывод - у тя что-то с кодировкой.
зы. у меня тоже с манифестом всё нормально работает в Memo. 


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Snowy
Дата 8.9.2006, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Угу. Настроить хоткеи и панель кнопочек, вводящих по клику мыши.
А чего. Удобно - нажал Ctrl + "-" и тебе тире вылезло.
PM MAIL   Вверх
bazzzman
Дата 8.9.2006, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

bazzzman, Кстати 63 символ - это символ знака вопроса. Вывод - у тя что-то с кодировкой.
зы. у меня тоже с манифестом всё нормально работает в Memo. 

Нет Elfebet, дело не только в моей машине. Я уже .exe протестил на многих машинах и можно говорить про то что баг проявляется не в 100% случаев, но довольно часто. Где-то 50%.


Кажется проблема в том, что не удается получить unicode символы из TMemo.  smile 

Т.е. вызов типа Memo1.Text[1] всегда возвращает неверное значение и уже дальнейшее преобразование в WideChar бессмысленно (как мертвому припарки).


Тогда вот такой вопрос: есть TMemo с юникодом внутри, как получить именно unicode текст???
PM MAIL WWW   Вверх
Elfebet
Дата 8.9.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

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



Цитата

Я уже .exe протестил на многих машинах и можно говорить про то что баг проявляется не в 100% случаев, но довольно часто. Где-то 50%.

так тут дело не в exe, а в самом твоем делфи (може он не такой как у всех  smile ), а exe ты скомпилировал и можеш на тысячи компьютеров юзать и все равоно будет такая лабуда.
p.s могу ошибаться.


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
bazzzman
Дата 8.9.2006, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да, ты ошибаешься.
PM MAIL WWW   Вверх
Alexeis
Дата 8.9.2006, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



bazzzman, ксати если мы ввели символ с некоторым кодом в memo, то не обязательно, что запишется именно этот символ. Если не установлен нужный чарсет, то винда заменяет расширеные символы, на наиболее близкие по виду символы, всякие там a u s t, с шляпочками, черточками и точками будут заменены, на a u s t без таковых, а символы не имеющие аналогов, по идее она должна заменить на квадратики имеющие код квадратиков, а не исходных символов.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
RideX
Дата 8.9.2006, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 94
Регистрация: 8.9.2004

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



У кого с манифестом работало, интересно, будет ли это работать. См. аттач ~2 Кб
P.S. Без манифеста работает нормально, если файл *.manifest убрать из папки с .ехе

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  TestManXP.zip 1,78 Kb
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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