![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема кодировки при копировании через буфер, хелп! [D7, WinXP]
lipskiy © (2004-12-20 22:27:00)Замечаю эту проблему со многими программами, не только со своими - русский текст после копировани-вставки изменяет кодировку на типа такую - Ïðèìåð òåêñòà.
Как это починить?
Во-первых, как сделать в моих программах, чтобы копирование работало при любых текущих настройках системы.
Во-вторых, как нужно настроить систему, чтобы чужие программы правильно копировали текст.
У меня WinXP rus SP2. НО проблему это наблюдаю практически на любых виндах.
MBo (2004-12-21 11:50:00) [1]http://delphimaster.ru/cgi-bin/forum.pl?id=1103147632&n=0
Fay (2004-12-21 11:39:00) [2]Обсуждалось на прошлой неделе.
Amoeba (2004-12-21 11:39:00) [3]А именно:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=780
Amoeba (2004-12-21 11:33:00) [4]Смотри статью, посвященную этой проблеме, на http:\\www.delphikingdom.com
lipskiy (2004-12-20 23:31:00) [5]Спасибо! Все прокатило.
Если кому надо, вот решение (насобирал из разных мест и немного добавил):
function ChangeLayout(LANG: Integer): Boolean;
var
Layouts: array [0..16] of HKL;
i, Count: Integer;
begin
Result:=False;
Count:=GetKeyboardLayoutList(High(Layouts)+1, Layouts)-1;
for i:=0 to Count do if (LoWord(Layouts[i]) and $FF) = LANG then
Result:=ActivateKeyboardLayout(Layouts[i], 0)<>0;
end;
function GetLayout:Integer;
begin
result:= (GetKeyboardLayout(0) shr $10) and $FF;
end;
// собственно, эту процедуру используем:
procedure CopyToClipBoard(Text:string);
var lw:longword;
begin
lw:= GetLayout;
ChangeLayout(LANG_RUSSIAN);
Clipboard.AsText:= Text;
ChangeLayout(lw);
end;
Может че некорректно или некрасиво, но работает!
Alexander Panov (2004-12-20 22:29:00) [6]Проблема во всех.
Пока, по-моему, нашли только такое решение - перед копированием в ClipBoard нужно переключиться на русскую раскладку клавиатуры.