Вниз
Скачать: CL | DM;

Проблемы при копировании текста   Найти похожие ветки 

 
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
14-44354
Феликс
2003-03-31 02:24
2003.04.14
Проект в котором слушают космос


3-44039
Serge2002
2003-03-26 09:26
2003.04.14
Может кто знает как из Delphi менять свойства секций pReport!


1-44109
Buruhtan
2003-04-02 21:16
2003.04.14
Как создать ресурсный файл


7-44471
Borys
2003-02-18 13:23
2003.04.14
Управление службами (сервисами)


14-44459
race1
2003-03-30 08:14
2003.04.14
qcad




   Наверх