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

Вниз

При копировании в буфер обмена строки портятся, как исправить?   Найти похожие ветки 

 
Kolan ©   (2007-06-16 14:39) [0]

Копирую так:
Clipboard.SetTextBuf(PAnsiChar(SomeText));
SomeText — русские символы

Вставляю, одини кракозябры, как правильно?


 
Loginov Dmitry ©   (2007-06-16 14:51) [1]

Вот содержимое недавней ветки, может подойдет:


Не работает копирование в буфер в win9x


[0] A Programmer   (26.05.07 16:10)

SelLen:= Length(ws);
if (SelLen > 0) then
begin
  OpenClipboard(Application.Handle);
  try
    EmptyClipboard;
    hg:=GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE, SelLen*2+2);
     try
       if (hg <> 0) then
       begin
         P:=GlobalLock(hg);
         if P <> nil then
         begin
           Move(PWideChar(ws)^, P^, SelLen * 2 + 2);
           SetClipboardData(CF_UNICODETEXT,hg);
         end;
       end;
     finally
       GlobalUnlock(hg);
       GlobalFree(hg);
     end;
  finally
    CloseClipboard;
  end;
end;

В Win2000 всё работает, в win9x не происходит копирования в буфер, хотя переменная ws содержит юникод-символы.
Как это исправить?

[цитата]  

--------------------------------------------------------------------------------

[1] begin...end ©   (26.05.07 17:30)
CF_UNICODETEXT

Windows NT/2000/XP: Unicode text format. Each line ends with a carriage return/linefeed (CR-LF) combination. A null character signals the end of the data.

(c) MSDN

[цитата]  

--------------------------------------------------------------------------------

[2] A Programmer   (26.05.07 18:02)
>CF_UNICODETEXT

Ясно,но я пробовал и CF_TEXT, всё равно не работает - указатель P указывает на адрес, по которому находится мусор или одни нули (если обнулить hg:=GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE or GMEM_ZEROINIT, SelLen*2+2);).

А как же поместить юникод в буфер обмена в win9x, опера ведь это как-то делает?

[цитата]  

--------------------------------------------------------------------------------

[3] A Programmer   (26.05.07 19:15)
Нашёл в чём дело:

GlobalFree(hg);

должен быть после

CloseClipboard;


 
Kolan ©   (2007-06-16 14:56) [2]

> Вот содержимое недавней ветки, может подойдет:

А стандартная выходит не годится? :(


 
Kolan ©   (2007-06-16 14:56) [3]

> стандартная

В смысле Clipboard



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

Текущий архив: 2007.07.08;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.032 c
15-1181293433
G_M_S
2007-06-08 13:03
2007.07.08
TD2006 для Linux?


4-1169737086
Nat
2007-01-25 17:58
2007.07.08
перехват данных, посылаемых на печать другой программой...


15-1181072613
Иксик
2007-06-05 23:43
2007.07.08
Люди, у меня самолет, а эта фигова w не берет русские символы...


15-1181041863
Галинка
2007-06-05 15:11
2007.07.08
Задачник по вышмату


2-1181482114
golik
2007-06-10 17:28
2007.07.08
экспорт в Excel!!!!!!!!!!!!!