![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Clipboard (Unicode) -> Clipboard/File (Win-1252) [D7, WinXP]
Clip © (2004-10-09 20:36:00)Здравствуйте.
Ситуация такая:
имеем в буфере обмена 3 формата:
- Plain Text
- OEM Text
- Unicode Text
Задача:
1) взять оттуда Unicode Text и перекодировать в codepage Win-1252 (Western European). Эта перекодировка должна происходить независимо от Clipboard locale, System locale, User locale.
2) записать перекодированное содержимое (в Win-1252) в файл или обратно в буфер обмена (как Plain Text)
Перекодировку непосредственно в буфере может выполнять программа
ClipConvert
http://www.codeguru.com/Cpp/W-P/clipboard/article.php/c3009
То, как она это делает - меня полностью устраивает, но надо реализовать это в автоматическом режиме под собственным контролем.
Суслик (2004-10-11 11:08:00) [1]
> Delphi-аналоги либо не существуют
Я что-то не помню, что у widechartomultibyte есть аналог в дельфи.
Дельфи сама использует эту функцию при преобразовании WideChar -> AnsiChar. Дельфи действительно использует умолчательную кодовую страницу (ansi кажется). Наверное, такое использование можно с натяжкой назвать аналогом.
Так что ответ на вопрос "Правильно?" - да, правильно.
Clip (2004-10-10 17:55:00) [2]Ага, понял. И то, и то - WinAPI-функции.
Delphi-аналоги либо не существуют, либо не позволяют указывать целевую кодировку (просто используется system locale). Правильно?
Clip (2004-10-10 17:10:00) [3]Вы уж простите новичка, еще вопросы:
GetClipboardData(CF_UNICODETEXT) - где это? В Delphi не нашел. Имеется ввиду WinAPI-функция или из какой-то третьесторонней компоненты?
Clip (2004-10-10 15:58:00) [4]Спасибо за ответ! Можно ли при этом (WideCharToMultibyte) быть уверенным, что преобразование будет происходить независимо от системных установок?
DiamondShark (2004-10-10 12:16:00) [5]Получить данные из клипборда GetClipboardData(CF_UNICODETEXT)
Преобразовать в нужную кодировку WideCharToMultibyte