Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.03;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
1-8457
Анна
2003-10-24 12:59
2003.11.03
Скроллинг в Delphi 7


14-8584
Сергей Чурсин
2003-10-15 16:43
2003.11.03
Dos-машина и порты под Windows?


4-8731
Mouse
2003-08-28 10:35
2003.11.03
Как выловить клавиатурных шпионов?


14-8604
MeF88
2003-10-15 12:02
2003.11.03
Чат и пароль


3-8272
Sectey
2003-10-14 11:05
2003.11.03
Какой запрос ОПТИМАЛЬНЕЕ