Czy istnieje obiekt stworzony dynamicznie

dział ogólny

Czy istnieje obiekt stworzony dynamicznie

Nowy postprzez Matthew » Å›roda, 12 listopada 2008, 13:04

Witam.

Mam taki problem. Stworzylem dynamicznie kilka obiektow (buttonow) i chcialbym sie dowiedziec, czy jest mozliwosc sprawdzenia czy dany obiekt istnieje.

Przykladowo, mam 5 buttonow przycisk[index]:
przycisk[0]
przycisk[1]
przycisk[2]
przycisk[3]
przycisk[4]

Jak sprawdzic, czy przycisk o indeksie -5, 14, 78 istnieje? Najlepiej nie korzystajac z wyjatkow.

Pozdrawiam
Avatar użytkownika
Matthew
Bladawiec
Bladawiec
 
Posty: 20
Dołączył(a): niedziela, 24 sierpnia 2008, 13:59
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Czy istnieje obiekt stworzony dynamicznie

Nowy postprzez Cyfrowy Baron » Å›roda, 12 listopada 2008, 18:47

Musisz wyliczyć wszystkie komponenty określonej klasy na formularzu. Mając listę komponentów będziesz mógł sprawdzić czy takowe istnieją.

► patrz serwis: Cyfrowy Baron dziaÅ‚: porady -> różne 2 -> Wyliczanie komponentów na formularzu, dostÄ™p do komponentów poprzez pÄ™tlÄ™.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Czy istnieje obiekt stworzony dynamicznie

Nowy postprzez mckri » niedziela, 16 listopada 2008, 12:30

Nie chcę zaczynać noweg wątku, bo moje pytanie jest zbliżone...
Jak sprawdzć, czy istnieje komponent utworzony dynamicznie w nowym wątku procesu.
Sprecyzuje... Skorzystałem z porady CB odnosnie utworzenia w komponenecie StatusBar dynamicznego ProgressBar. http://cyfbar.republika.pl/differ_p2.html#differ4. Dołozyłem tam jeszcze poradę z ze zmianą wyglądu tego komponentu http://cyfbar.republika.pl/differ5.html#d10. Udało się! Całość tworzenia komponentu dynamicznego ProgressBar wstawiłem jeszcze do nowego wątku, który zajmuje się ogólnie odczytywaniem danych z systemu operacyjnego i automatycznie uruchamia dynamiczny ProgressBar jako wyznacznik oczekiwania programu.
I teraz jak mogę sprawdzić czy dynamicznie utworzony w wątku ProgressBar istnieje? Sprawdziłem już poradę zamieszczoną wyżej:
Musisz wyliczyć wszystkie komponenty określonej klasy na formularzu. Mając listę komponentów będziesz mógł sprawdzić czy takowe istnieją.
► patrz serwis: Cyfrowy Baron dział: porady różne 2 Wyliczanie komponentów na formularzu, dostęp do komponentów poprzez pętlę.

W takiej sytuacji wydaje się, że nie zadziała ta porada. Przy wyliczaniu komponentów do Memo dostaję tylko wykaz klas, bez nazw obiektów utworzonych dynamicznie.
Avatar użytkownika
mckri
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): piątek, 15 sierpnia 2008, 13:48
PodziÄ™kowaÅ‚ : 10
OtrzymaÅ‚ podziÄ™kowaÅ„: 2
System operacyjny: Windows Vista SP2
Kompilator: BCB 5/2007/2009
    NieznanyNieznana

Re: Czy istnieje obiekt stworzony dynamicznie

Nowy postprzez Cyfrowy Baron » niedziela, 16 listopada 2008, 16:09

Nigdy czegoś podobnego nie próbowałem, ale jeżeli obiekt jest tworzony w wątku, to istnieje tylko w tym wątku i tylko w tym wątku można sprawdzać, czy obiekt istnieje. Inaczej biorąc jeżeli wątek zakończy działanie, to obiekt powinien przestać istnieć, więc nie można sprawdzić czy istnieje skoro nie istnieje.
Uzyskujesz listę klas, bo prawdopodobnie deklarujesz te klasy poza wątkiem, a nowy obiekt tworzysz w oparciu o te klasy w wątku. Wydaje mi się to mocno ryzykowne, gdyż łatwo tutaj o "wyciek" pamięci, lub tworzenie obiektu poza stosem, no ale przy dobrym zarządzaniu obiektem w pamięci wszystko powinno działać prawidłowo.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości