Проблема с кодировкой при копировании из Memo
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Проблема следующая: когда я копирую в буфер кириллические символы из Memo, а потом вставляю их в Блокнот или Word, получаю на выходе крокозяблы. Установка в Font-> Charset дефолтного, русского или ANSI не помогает. Кто знает, чем это лечится?
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
не помню с чем связанно в общем кодировку клавиатуры переключать нужно при копировании..
Вот тебе пример:
Вот тебе пример:
Код: Выделить всё
[size=84]function SetClipboardText(Wnd: HWND; Value: string): Boolean;
var
Layout: array[0.. KL_NAMELENGTH] of Char;
hData: HGlobal;
pData: pointer;
Len: integer;
flag: Boolean;
begin
flag := False;
if GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) = 67699721 then
begin //раскладка английская
LoadKeyboardLayout( StrCopy(Layout, '00000419'), KLF_ACTIVATE); //На русский
flag := True;
end;
//раскладка НЕанглийская, например 68748313 соответствует русской
Result := True;
if OpenClipboard(Wnd) then
begin
try
Len := Length(Value) + 1;
hData := GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, Len);
try
pData := GlobalLock(hData);
try
Move(PChar(Value)^, pData^, Len);
EmptyClipboard;
SetClipboardData(CF_Text, hData);
finally
GlobalUnlock(hData);
end;
except
GlobalFree(hData);
raise
end;
finally
CloseClipboard;
end;
end
else
Result := False;
if flag then LoadKeyboardLayout(StrCopy(Layout,'00000409'),KLF_ACTIVATE); //На английский
end;
[/size]
Спасибо! Учитывая, что мне той программой приходится пользоваться не так уж часто - хватит простого перевода клавы на русскую раскладку.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.