Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-44400
Ahmad K
2003-03-28 14:24
2003.04.14
InstallShield


6-44313
_sMile
2003-02-22 21:24
2003.04.14
Как передать Bitmap из TImage, используя сокеты?


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


6-44322
ККВ
2003-02-20 10:41
2003.04.14
Клиент для Novell


1-44256
neodiX
2003-04-02 01:41
2003.04.14
Назначение своего курсора в TMainMenu





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский