Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
Islander   (2003-10-24 01:28) [0]

Здравствуйте! Не могу записать в буфер обмена текст в нужной кодировке. ClipBoard.AsText:="Мой текст". Так вот: при вставке русский текст отображается коряво...


 
Романов Р.В.   (2003-10-24 06:27) [1]

При вставке попробуй переключиться на русскую раскладку


 
Islander   (2003-10-24 08:38) [2]

Нет, не помогает


 
Islander   (2003-10-24 08:45) [3]

Т.е. помогает такая вещь,

ActivateKeyboardLayout(LoadKeyboardLayout("00000419",0),0);

но это не цивильно, т.к. у меня многоя зыковое приложение и русская раскаладка может просто и не стоять


 
Романов Р.В.   (2003-10-24 08:48) [4]

Почитай про CF_LOCALE


 
Кулюкин Олег   (2003-10-24 08:51) [5]

Переведите русский текст в юникод.
См. WideCharToMultyByte


 
Islander   (2003-10-24 08:56) [6]

>>Кулюкин Олег

Я если это 98 винда, то там праблы будут, насколько я знаю


 
REA   (2003-10-24 09:12) [7]

Из форума (надо в FAQ вынести):

procedure TForm1.Button1Click(Sender: TObject);
const
RusLocale = SUBLANG_DEFAULT shl 10 or LANG_RUSSIAN;
var
Mem: THandle;
P: Pointer;
begin
Clipboard.Open;
Clipboard.AsText := "Русский текст в кодировке ANSI 1251";
Mem := GlobalAlloc(GMEM_MOVEABLE, SizeOf(DWORD));
P := GlobalLock(Mem);
DWORD(P^) := RusLocale;
GlobalUnlock(Mem);
Clipboard.SetAsHandle(CF_LOCALE, Mem);
Clipboard.Close;
end;

const
CODEPAGE = 1251;

procedure SetClipboardText( const AText : String );
var len, ulen : Integer;
hClip : THandle;
pClip : Pointer;
begin
if Win32Platform=VER_PLATFORM_WIN32_NT then
begin
len := Length(AText)+1;
ulen := len+len;
hClip := GlobalAlloc(GMEM_MOVEABLE,ulen);
if hClip=0 then raise Exception.Create(SysErrorMessage(GetLastError))
else
try
pClip := PWideChar(GlobalLock(hClip));
if pClip=nil then raise Exception.Create(SysErrorMessage(GetLastError))
else
begin
try
MultiByteToWideChar(CODEPAGE,0,PChar(AText),len,pClip,ulen);
finally
GlobalUnlock(hClip);
end;
Clipboard.SetAsHandle(CF_UNICODETEXT,hClip);
end;
except
GlobalFree(hClip);
raise;
end;
end
else
begin
Clipboard.SetTextBuf(PChar(AText));
SetClipboardData(CF_LOCALE,LANG_RUSSIAN);
end;
end;


 
Islander   (2003-10-24 09:34) [8]

Спасибо, все хорошо, вот только такая прабла еще осталась: а как сделать, чтобы система автоматически распознавала LOCALE? Например, чтобы хорват или китаец могли копировать свои данные безпрепятственно



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
1-8417
DProg
2003-10-22 09:53
2003.11.03
Вызов обработчика события из DLL в программу


1-8362
Master
2003-10-23 04:53
2003.11.03
Как определить букву СD-ROMa? GetDriveType?


1-8446
Mistic
2003-10-21 20:56
2003.11.03
DLL


3-8269
vidiv
2003-10-14 06:00
2003.11.03
Решение задач по FoxPro


14-8650
Кулюкин Олег
2003-10-14 15:10
2003.11.03
Правила Ашманова. Об управлении проектами





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