Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Чем может быть вызвана ошибка обращения к clipboard'у? [D7, WinXP]


cvg ©   (2004-11-17 17:39:00) 

Hi All! Subj. На последней строчке в этом куске:

 windows.BringWindowToTop(h_pars);
 PressKeys('Ctrl+C',10); // эмуляция нажатия на клавиши
 line := Clipboard.AsText;

в стандартном модуле Clipbrd в этои вот месте:

   if not OpenClipboard(FClipboardWindow) then
     raise Exception.CreateRes(@SCannotOpenClipboard);

прога орет, что не может прочесть буфер. В чем может быть дело?


cvg   (2004-11-18 17:45:00) [1]

Ну это-то понятно. Конкретно показываю, как я по твоему совету сделал:

 if Clipboard.HasFormat(CF_TEXT) then
  line := Clipboard.AsText
 else
  raise Exception.Create('blah-blah-blah');

Все равно она дошла до Clipboard.AsTextи обругалась известным образом. Ж%:((


Amoeba   (2004-11-18 17:28:00) [2]

Если у тебя в буфере изображение захваченное с экрана, то после
if Clipboard.HasFormat(CF_TEXT) then
строка
line := Clipboard.AsText;
выполняться не будет

и не надо никаких
try
 ...
except
 ...
end

Просто нужно проверить формат содержимого Clipboard.

И еще. Так и не последовало никакой реакции на Amoeba ©   (18.11.04 15:55) [8]


VMcL   (2004-11-18 17:21:00) [3]

>> cvg  (18.11.04 15:36) [7]

> Думешь, это что-нить даст?

Конечно, не даст. Ведь у меня хобби такое - давать бесполезные советы.


cvg   (2004-11-18 17:15:00) [4]

Попробовал. Все равно на строке line := Clipboard.AsTextвыдала ту же ошибку -- "Cannot open Clipboard". Да и не думаю я, что это изменение помогло бы, потому что до этого у меня так вот было:

 try
  line := Clipboard.AsText;
 except
  raise Exception.Create('blah-blah-blah');
 end;


cvg   (2004-11-18 17:14:00) [5]

Попробовал. Все равно на строке line := Clipboard.AsTextвыдала ту же ошибку -- "Cannot open Clipboard". Да и не думаю я, что это изменение помогло бы, потому что до этого у меня так вот было:

 try
  line := Clipboard.AsText;
 except
  raise Exception.Create('blah-blah-blah');
 end;


Amoeba   (2004-11-18 16:28:00) [6]

выполни после "грабления" экрана вот этот код:

if Clipboard.HasFormat(CF_TEXT) then
 line := Clipboard.AsText
else
 ShowMessage('Bla-bla-bla!');


cvg   (2004-11-18 16:23:00) [7]

Хм, а почему ж тогда рекомендованный Clipboard.HasFormat(CF_TEXT):booleanпропустил все это?


Amoeba   (2004-11-18 15:55:00) [8]


> ана все ети дела грабит с экрана

В таком случае в Clipboard нет никакого текста и
line := Clipboard.AsText;
не лезет ни в какие ворота.


cvg   (2004-11-18 15:36:00) [9]

Думешь, это что-нить даст? Самое-то тут противное то, что ана все ети дела грабит с экрана (хотя есть и режим работы с данными из файла), а значит я не могу подлезть с отладчиком...


VMcL   (2004-11-18 15:07:00) [10]

>> cvg  (18.11.04 15:03) [5]

Что говорит GetLastError или SysErrorMessage?


cvg   (2004-11-18 15:03:00) [11]

Не, все-таки она на второй из нижеприведенных строчек она все равно орет "Cannot open Clipboard" :((

   if not Clipboard.HasFormat(CF_TEXT):boolean
     if not OpenClipboard(FClipboardWindow) then
       raise Exception.CreateRes(@SCannotOpenClipboard);


Jeer   (2004-11-17 18:51:00) [12]

так проверь
Clipboard.HasFormat(CF_TEXT):boolean;


cvg   (2004-11-17 18:22:00) [13]

Ну что, больше ни у кого никаких мыслей нет?


cvg   (2004-11-17 17:49:00) [14]

Ctrl-C грабит экран в окне, которое стало делается активным в первой приведенной строчке, правильно? Там таблица с меняющимися данными. Последняя строчка преобразует все, что можно, в текст. Так ведь, вроде?


Jeer   (2004-11-17 17:44:00) [15]

Значит там не текст:(


Наверх

Титульная страница Поиск, карта сайта Написать письмо