![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Anti-Food |
|
|||
Unregistered |
Произвожу копирование в буфер из переменной:
Clipboard.AsText:=S; После чего в буфер пишутся вместо русских символов знаки вопроса, как с этим бороться? ![]() |
|||
|
||||
Anti-Food |
|
|||
Unregistered |
Да, кстати, при переключении на русскую раскладку тоже не робит.
|
|||
|
||||
Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Какая версия Delphi?
-------------------- Все знать невозможно, но хочется |
|||
|
||||
Anti-Food |
|
|||
Unregistered |
Шестая, но на седьмой тоже не работает.
|
|||
|
||||
Петрович |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Странно. На 7 уже было подправлено. А ты абсолютно уверен что в S у тебя русская строка?
Все дело в том, что любое значение CF_TEXT (кодировка ANSI), хранящееся буфере обмена, Windows, позоляет прочитать в форматах CF_UNICODETEXT и CF_OEMTEXT. Естественно, если приложение помещавшее CF_TEXT не поместила значения CF_UNICODETEXT и CF_OEMTEXT, то они продуцируются автоматически. Для этого, производится преобразование ANSI->UNICODE и ANSI->OEM. Однако, для таких преобразований, необходимо знать какой кодовой странице принадлежат символы исходной строки. Эту информацию, Windows определяет по состоянию регистра ввода на момент копирования CF_TEXT в буфер обмена. Если в момент копирования клавиатура на русском регистре, то все будет хорошо, а вот если на аглицком, то, беда. В принципе, уже давно известно как это "лечить". Достаточно выполнить такой REG-файл:
Тогда, независимо от установленной раскладки (1250,1251 или 1252), винды будут считать что у тебя в ANSI-строке символы русской кодовой страницы (1251). Но, всегда есть вероятность наткнуться у пользователя на подобную проблему. Поэтому, я в своих программах, не доверяю эту работу виндам. Для копирования текста в клипбоард, я написал свою функцию:
Как использовать, думаю понятно. На Delphi7, эту функцию использовать необязательно, поскольку там уже стандартный объект Clipboard поступает аналогично. Но, поскольку ты пишешь:
то, у тебя похоже другая проблема. Однако, все равно проверь. Это сообщение отредактировал(а) Петрович - 20.4.2005, 07:12 -------------------- Все знать невозможно, но хочется |
||||||
|
|||||||
Anti-Food |
|
|||
Unregistered |
Спасибо, сёдня попробую. Да кстати, вчера всё бился с этой проблеммой, так оказывается, что в breed2r всё отлично вставляется, русскими буквами, так что думаю проблемма в кодировке.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |