Форум: "Основная";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];
ВнизПроблемы при копировании текста Найти похожие ветки
← →
ZEE (2003-04-01 13:51) [0]Народ F1! Проблемка возникает при копировании русского текста из какого-нить дельфийского компонента моей программы (например TEdit или TMemo) в др. программу (например возьмем) Notepad. При этом самом копировании в Notepad вставляются "иероглифы" типа такого:
← →
Андрей Сенченко (2003-04-01 13:56) [1]Кодировку попробуй привести к чему-то одному.
OemToAnsi AnsiToOem OemToChar CharToOem ну и так далее
← →
ZEE (2003-04-01 14:04) [2]Пробовал Charset устанавливать и в ANSI_CHARSET и в RUSSIAN_CHURSET - не помагает. Может я не в ту сторону капаю? Может надо явно преобразовывать теми же OemToAnsi ?...
← →
Zelius (2003-04-01 14:13) [3]Перед копированием в/из клипбоард переключись на русскую расскладку в обоих приложениях.
← →
ZEE (2003-04-01 14:26) [4]Да, переключение на русскую расскладку помогло, но по этому поводу другой вопрос: Как отследить копирование текста (например при Ctrl+C) и успевать перекинуть раскладку?
← →
Zelius (2003-04-01 14:33) [5]Вряд ли это хороший способ... Правда не могу ничего работающего предложить... Может отслеживать изменение клипбоарда... Или руками туда пихать текст в правильной кодировке...
← →
Smashich (2003-04-01 14:35) [6]procedure PutStringIntoClipBoard(const Str: WideString);
var
Size: Integer;
Data: THandle;
DataPtr: Pointer;
begin
Size:=Length(Str);
if Size = 0 then exit;
if not IsClipboardFormatAvailable(CF_UNICODETEXT) then
Clipboard.AsText:=Str
else
begin
Size:=Size shl 1 + 2;
Data := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE, Size);
try
DataPtr := GlobalLock(Data);
try
Move(Pointer(Str)^, DataPtr^, Size);
Clipboard.SetAsHandle(CF_UNICODETEXT, Data);
finally
GlobalUnlock(Data);
end;
except
GlobalFree(Data);
raise;
end;
end;
end;
function GetStringFromClipboard: WideString;
var
Data: THandle;
begin
if not IsClipboardFormatAvailable(CF_UNICODETEXT) then
Result:=Clipboard.AsText
else
begin
Clipboard.Open;
Data := GetClipboardData(CF_UNICODETEXT);
try
if Data <> 0 then
Result := PWideChar(GlobalLock(Data))
else
Result := "";
finally
if Data <> 0 then GlobalUnlock(Data);
Clipboard.Close;
end;
end;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c