Под Win2k попытка вставить русскую строку в Clipboard  ClipBoard.AsText:='Проба' с последующей вставкой в Word'е

показывает кракозябрики.. Расследование показало, что  виноваты мелкомягкие (как обычно :) ) С целью нивелирования различий между

всеми Win-платформами были написаны эти 2 ф-ции.. Принимают на вход/возвращают строку в Unicode - WideString..

но не надо беспокоиться, Дельфи сам вставит при необходимости конвертацию в/из AnsiString.

 

Если платформа поддерживает уникод (NT), то используется этот формат, иначе вызываются стандартные процедуры/ф-ции.

Удачи!

Code:

{ **** UBPFD *********** ****

>> Поместить/получить строку из буфера обмена (Заплатка к стандартным)

  

Зависимости: ClipBrd

Автор:       Shaman_Naydak, Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

Copyright:   Shaman_Naydak

********************************************** }

 

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;

 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить