Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.14;
Скачать: 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 вся ветка

Текущий архив: 2003.04.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
1-44173
CITY_ELF
2003-04-03 17:58
2003.04.14
ТАЙМЕР для дельфи


3-44000
Cranium
2003-03-25 11:20
2003.04.14
Как реализовать сдедующее.....


1-44273
Serega
2003-04-02 16:16
2003.04.14
Извлечь avi-шку из res-файла, включенного в exe-шник.


4-44498
neodiX
2003-02-11 17:07
2003.04.14
Опять хуки! Почему в XP работает, а в Win2kPro нет?


4-44493
Anatoliy
2003-02-12 17:32
2003.04.14
Вызов функции в запущенной программе