Главная страница
    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.45 MB
Время: 0.042 c
15-1181324300
isasa
2007-06-08 21:38
2007.07.08
Навеяно Розычем()инициативная группа)


11-1163962193
Vladimir Kladov
2006-11-19 21:49
2007.07.08
Версия 2.43


15-1180984871
Ш-К
2007-06-04 23:21
2007.07.08
Где взять файл курсора?


2-1181561995
Новичек
2007-06-11 15:39
2007.07.08
Undeclared identifier: Null


2-1181841364
Bullfrog
2007-06-14 21:16
2007.07.08
как заменить все буквы(русские) строки верхнего регистра нижним?





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