Posty bez odpowiedzi |oraz Aktywne tematy Dzisiaj jest 2024-12-18, 04:17x



Odpowiedz w temacie  [ Posty: 5 ] 
[HANDEL FORTE] 
Autor Wiadomość

Rejestracja: 2008-04-10, 09:34
Posty: 24
Post [HANDEL FORTE]
Witam,

Dokładnie jak w temacie.
Szukam rozwiązania na temat zastosowania wyjątków.
Chodzi mi dokładnie o uzyskanie wyjątku w przypadku nieudanego tworzenia nowego obiektu poprzez dispatch.
Teoretycznie w systemie powinny być obiekty COM, bo są instalowane wraz z symfonią, ale...

To o co mi dokładnie chodzi, przykładowo wyglądałoby to tak (o ile istniałyby bloki try i catch):

Kod:
try
   Dispatch xFrm = xFactory.GetObject("BFirma")
catch
   Message "Nie można utworzyć obiektu"


Proszę o jakiś namiar


Ostatnio zmieniony 2008-04-10, 09:57 przez mnat, łącznie zmieniany 1 raz



2008-04-10, 09:44
Wyświetl profil
Autor Wiadomość
 


Ekspert
Ekspert

Rejestracja: 2008-04-07, 13:26
Posty: 208
Pomógł: 2
Post 
Jeżeli obiekt nie jest zainstalowany w systemie to dostaniesz komunikat, że nie mógł zostać utworzony.

Jeżeli jest w systemie i z jakiegoś powodu nie mógł zostać utworzony to proponuję
Kod:
dispatch dObj

if dObj   then // try
   message "Obiekt utworzony"
else // catch
   message "Obiekt nie został utworzony"
endif


to miałeś na myśli?


2008-04-10, 09:53
Wyświetl profil

Rejestracja: 2008-04-10, 09:34
Posty: 24
Post 
Mniej więcej o to chodzi.
Tylko jeszcze nie do końca - handel wyrzuca komunikatem o błędzie w momencie przypisania wartości obiektu do zmiennej dispatch.

W Twojej konstrukcji kodu, tak czy inaczej muszę nadać wartość dla zmiennej przed warunkiem if, bo po co tak na prawdę ma być sprawdzany obiekt skoro istnieje tylko jego deklaracja.

A troszkę prościej i obrazowo - konstrukcja

Kod:
dispatch dObj


if dObj then
   Message "Obiekt utworzony"
else
   Message "Obiekt nie został utworzony"
endif



zawsze będzie wyrzucała komunikat "Obiekt nie został utworzony" bo obiektu po prostu nie ma.


Chodzi o to że


Kod:
/*
Tutaj tworzony jest obiekt i tutaj nadawana mu jest wartość i niestety tutaj symfonia zaprojektowała "wewnętrzny" wyjątek, który wyskakuje przy pewnych warunkach, o których nic nie wiem.
*/

dispatch dObj  = xFactory.GetObject("BFirma")


/*
A tutaj istniałby już sens sprawdzania obiektu, tylko po co z kolei, jeżeli już jest utworzony?
*/

if dObj then
   Message "Obiekt utworzony"
else
   Message "Obiekt nie został utworzony"
endif



Myślę, ze teraz już sprawa wygląda jaśniej ;-)


2008-04-11, 08:52
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2008-04-07, 13:26
Posty: 208
Pomógł: 2
Post 
Nie widzę sensu sprawdzania utworzenia obiektu w tym miejscu. Komunikat o niemożności utworzenia obiektu należely rozumieć, że środowisko w jakim ma pracować Twój raport nie jest gotowe. I co z tego, że przechwycisz to zdarzenie jak i tak nie zrealizujesz zał. funkcjonalności bez obiektów, których zdecydowałeś się użyć.

Zgodzę się, że możnaby w tym miejscu wyświetlić ładniejszy komunikat.
Np: "Brak zainstalowanych komponentów koniecznych do prawidłowej pracy raportu." :)

Z drugiej strony wierzę, że masz taką potrzebę, żeby to było. Może napisz co dokładnie chcesz zrobić to najdziemy inne rozwiązanie.

Mój przykład jak najbardziej jest przydatny. Dobrym przykładem może być biblioteka MxGridLib i obiekty grid i row.

Row ma metodę GetParent(), która zwraca obiekt typu row będącego rodzicem tego pierwszego.

Kod:
dispatch g = "grid" // tworzenie obiektu powinno odbywać się na formie
dispatch r // to będzie obiekt rodzica

// sprawdźmy czy drugi wiersz ma rodzica
r = g.Rows(1).GetParent()

// sprawdzamy czy utworzył się obiekt

if r then
   message r.Value(0) // pokazuje pierwszą celle rodzica
else
   message "Jestem sierotą i nic nie pokażę. Wywołanie r.Value(0) spowodowałoby wywalenie błędu."
endif


2008-04-11, 13:00
Wyświetl profil

Rejestracja: 2008-04-10, 09:34
Posty: 24
Post 
Najprościej mówiąc: chcę zamienić brzydki komunikat sugerujący niepoprawne działanie raportu (nie można utworzyć obiektu (...) błąd linii xx) na mój własny


2008-04-14, 08:16
Wyświetl profil
Wyświetl posty nie starsze niż:  Sortuj wg  
Odpowiedz w temacie   [ Posty: 5 ] 
   Podobne tematy   Autor   Odpowiedzi   Odsłony   Ostatni post 
Na tym forum nie ma nowych nieprzeczytanych postów. Handel Forte a Handel Premium różnice

w Programy Handlowe

marty123

1

3663

2015-11-23, 10:57

mag666 Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Handel Forte 2012.a

w Programy Handlowe

MIB

0

2424

2016-01-15, 11:35

MIB Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Baza Handel Forte

w Programowanie

Benji_Pete

0

3260

2008-06-23, 08:47

Benji_Pete Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Handel Forte 2009 c

w Techniczne

tatanka

2

2211

2009-09-07, 14:18

tatanka Wyświetl najnowszy post



Kto jest online

Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 6 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Support forum phpbb by phpBB Assistant