| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Копирование русских символов в буфер обмена |
| Автор: Anti-Food 19.4.2005, 01:52 |
| Произвожу копирование в буфер из переменной: Clipboard.AsText:=S; После чего в буфер пишутся вместо русских символов знаки вопроса, как с этим бороться? |
| Автор: Anti-Food 19.4.2005, 01:55 |
| Да, кстати, при переключении на русскую раскладку тоже не робит. |
| Автор: Петрович 19.4.2005, 08:25 |
| Какая версия Delphi? |
| Автор: Anti-Food 20.4.2005, 03:21 |
| Шестая, но на седьмой тоже не работает. |
| Автор: Петрович 20.4.2005, 07:11 | ||||||
| Странно. На 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 поступает аналогично. Но, поскольку ты пишешь:
то, у тебя похоже другая проблема. Однако, все равно проверь. |
| Автор: Anti-Food 21.4.2005, 07:17 |
| Спасибо, сёдня попробую. Да кстати, вчера всё бился с этой проблеммой, так оказывается, что в breed2r всё отлично вставляется, русскими буквами, так что думаю проблемма в кодировке. |