Главная страница
    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.008 c
7-44464
galak
2003-02-18 03:00
2003.04.14
ещё одна клавиатура


1-44229
MetalFan
2003-03-27 10:21
2003.04.14
совет по алгоритму...


14-44339
trotski
2003-03-31 05:38
2003.04.14
C++ Builder


6-44287
Dx_com
2003-02-19 20:15
2003.04.14
Смена IP и маски подсети в ХР или NT


1-44142
Spartak
2003-04-03 14:09
2003.04.14
Срочно ! как сделать messagebox в несколько строк ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский