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




Вниз

DBReech Edit и 


Tutov Roman   (2002-03-07 10:37) [0]

Не могу из клипборда вставить русский текст в компонент .
Он в кракозябры превращается. Игры со шрифтами не помогли .
Куда копать ?



iva   (2002-03-07 10:56) [1]

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



roman tutov   (2002-03-07 10:58) [2]

Та-же фигня.



Юрий Зотов   (2002-03-07 11:48) [3]

Похоже, текст в клипбоард помещался в Unicode?



roman tutov   (2002-03-07 11:53) [4]

Вопрос интересый . А разве винда автоматом в 1251 не перекодирует ?



Shaman_Naydak   (2002-03-07 14:32) [5]

Короче.. есть, есть проблемы у работы с клипбоардом у виндов..
тут в чем прикол в Win 9X можно запхать и забрать строки только
Ansi - CF_TEXT и OEM - CF_OEMTEXT.
В семействе NT есть еще его любимый родной формат CF_UNICODETEXT.
И у меня сильное обоснованное подозрение, что все строки внутрях клибоарда хранятся в уникоде.
А у 2000-х вообще глюк с руссификацией.. нормально работать можно только через уникод..
А класс клипбоард в дельфях к сожалению работает только с СF_TEXT.
=> вот так сказать простенькие процедурки от меня, нивелирующие все это безобразие:
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;

Железно работает под 2000 и 98, проверял!

А вот на чтение:




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




Наверх





Память: 0.72 MB
Время: 0.022 c
1-66851           Dok_3D                2002-03-05 12:46  2002.03.21  
Как уничтожить OLE-объект ?


6-66940           Vampire               2001-11-03 18:54  2002.03.21  
А с помощью NMStrm можно как покет отправить пусковой файл??? И чтобы у получателя он естественно тут же запутился


3-66722           LNF                   2002-02-20 09:20  2002.03.21  
А можно использовать локально BDE в виде набора dll, подключаясь к БД не через TTable, а через TQuery?


1-66862           Kettle of delphi      2002-03-04 17:05  2002.03.21  
Подскажите пожалуйста! Код TForm2.Create(nil) вовсе не помещает создаваемую форму на панель задач! (он ее помещает на РАБОЧИЙ СТОЛ)


3-66756           Igor_                 2002-02-20 12:50  2002.03.21  
Records affected