Главная страница
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.027 c
1-44271
Маришка
2003-04-02 16:19
2003.04.14
приложение дельфи для интернета


14-44362
Демонов Е.В.
2003-03-31 04:20
2003.04.14
Сигмент : Смещение


1-44186
Yuraz
2003-04-01 09:48
2003.04.14
Технология написания ScreenSaver


14-44332
VD601
2003-03-30 21:10
2003.04.14
Игры, в которых надо программить - вот будущее индустрии!


7-44478
Dr Zlo
2003-02-19 21:59
2003.04.14
Как считывать данные со звуковой карты и обратно писать?