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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
2-1181935276
лЕвый поЗер
2007-06-15 23:21
2007.07.08
паскаль


15-1181115561
boriskb
2007-06-06 11:39
2007.07.08
переехать в Казахстан?


9-1155566754
Zo
2006-08-14 18:45
2007.07.08
низкие фпс в opengl


11-1164605756
StormA
2006-11-27 08:35
2007.07.08
RE_Text (RichEdit)


2-1181847644
Max_
2007-06-14 23:00
2007.07.08
ADOConnection





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