[bcb 6] error: cannot open clipboard...

0

witam!

Ostatnio napisalem sobie programik ktory zaznacza tekst przy pomocy mouse_event, potem symuluje nacisniecie CTRL + C w celu skopiwowania tekstu do schowka... a potem przetwarza tekst ze schowka... kopiuje 3 literki tą metodą... no i potem jest zawatrosc schowka parokrotnie wykorzystywana (tzn proces sie powtarza, przy czym inne dane kopiuje) no i wyskakuje error taki jak w temacie. co moze byc tego przyczyną?

0

aa bym zapomnial w celu wyciagneicia danych ze schowka uzywam

StrToInt(Clipboard()->AsText);

0

Przyczyną może być to, że w schowku nie ma danych w formacie CF_TEXT lub to, że schowek jest otwarty przez inną aplikację. Sprawdzaj czy w schowku są dane o odpowiednim formacie:


Clipboard()->Open();

try
{
  if(Clipboard()->HasFormat(CF_TEXT))
  {
   StrToInt(Clipboard()->AsText);
  }
}
catch(...)
{
 /*** obsługa błędu ***/
}

Clipboard()->Close();
0

a da sie jakos tak ustawic aby calkowicie ignorowal blad i pracowal dalej?

0

To mi nie pomoglo, nadal ten denerwujacy error wyskakuje... czy moze byc przyczyna ze moj program pare razy uzywa schowka?

0

A dokładnie, w którym miejscu występuje ten błąd??? Jak otwierasz schowek czy jak go czytasz?

To mi nie pomoglo, nadal ten denerwujacy error wyskakuje...

Jeżeli program odpalasz z kompilatora to będzie wyskakiwał ten błąd pomimo odpowiedniej jego obsługi instrukcjami

try

i catch

 ;) 


> czy moze byc przyczyna ze moj program pare razy uzywa schowka?

Nie sądze. W skrócie operacje na schowku powinny wyglądać tak:

1. otwarcie schowka
2. zapis/odczyt
3. zamknięcie schowka
0

no wlasnie w tym caly problem ze nawet jak uruchomie execa osobno to wyskakuje ten error i przerywa prace programu :/

0
robert1515 napisał(a)

no wlasnie w tym caly problem ze nawet jak uruchomie execa osobno to wyskakuje ten error i przerywa prace programu :/

Prawdopodobnie nie masz dobrze zrobionej obsługi błędów (

try{...}

, catch(...){...}

) dla procedur korzystających ze schowka. Z resztą, musiałeś coś nieźle namotać w kodzie, że w ogóle masz problemy z otwarciem schowka ;).
0

moglbys poda cprzyklad prawidlowej obslugi tego erroru przez try catch?

Pozdr,

0
robert1515 napisał(a)

moglbys poda cprzyklad prawidlowej obslugi tego erroru przez try catch?

Może to wyglądać tak:

try
{
 Clipboard()->Open();

 try
 {
  StrToInt(Clipboard()->AsText);
 }
 catch(EConvertError &err) //<--- to nie jest konieczne
 {
  /*** obsługa błędu dla StrToInt ***/
 }
 catch(...)
 {
  /*** obsługa błędu dla Clipboard()->AsText (i innych) ***/
 }
 Clipboard()->Close();
}
catch(Exception &err)
{
 /*** obsługa błędu dla Clipboard()->Open() (nie można otworzyć schowka)***/
}

0

dzieki!

ale wiesz co? nawet to nie bylo potrzebne... dziwna sprawa... nigdy bym nie wpadl ze to pomoze... co zrobiłem? ustawilem ze przy symulacji wcisniecia ctrl +c przytrzymal ta kombinacje 1s... o dziwo juz zadne bledy nie wyskakuja :D

Pozdr,

1 użytkowników online, w tym zalogowanych: 0, gości: 1