Brak dostępu do danych przez wskaźnik - vcl i boost

0

Witam,
mam problem z dostaniem się do danych przez wskaźnik. Konkretnie chodzi o VCL i borlandowskie wynalazki.
Problem mam przy utworzeniu wskaźnika do formy. Chce dostać się do komponentów formy, a właściwie danych.

Teraz robię tak, że tworze wskaźnik na forme:

TForm1 *Form1;

A następnie odwołuje się np do time picker:

Form1->TimePicker1...

Do pewnego momentu wszystko było ok i dane były dostępne. Od dzisiaj podczas wykonywania kodu mam exceptiona. Dodam że kod wykonuje się na osobnym wątku, korzystam z bibliotek boost dla wielowątkowości.

Nie wiem, w którym momencie popełniłem błąd. Prosił bym o pomoc, ewentualnie wskazanie miejsca gdzie mógł bym szukać problemu.

0

Wskaźnik TForm1 *Form1; jest tworzony automatycznie, jeżeli tworzysz fo samodzielnie to już popełniasz błąd.
Jeżeli nie tworzysz go automatycznie, to prawdopodobnie to Form1->TimePicker1... jest wywoływane z któregoś wątku który odpalasz w konstruktorze lub w onCreate, czyli zanim Application podstawi coś w Form1, w tym przypadku możesz przed odpaleniem wątków dodać Form1=this;

0

Wydaje mi się, że jednego ważnego elementu nie napisałem. Mianowicie tworze ten wskaźnik na innej formie. Z vcl i borlandem jesteś świeży i nie za bardzo rozumiem jak to działa. W sensie normalnie pisząc mam tam jakiś główny wątek, a tu nie wiem za bardzo co jest trzymane jako główny zarządca. Jest to moduł dll wywoływany spod innego programu.

Teraz mam coś co wygląda mniej więcej tak:
-Form1 - główna forma na którą wchodzi program
-Form2 - na której potrzebuje informacje z Form1, tutaj właśnie dołączam w nagłówku Unit.h z Form1 i tworze do niego globalny wskaźnik *Form1 w Unit2.h

Żeby jeszcze ciekawiej było, funkcja dopisana do klasy Form1 przeze mnie, jest dostępna i wykonywana.

Natomiast pod debugiem, gdy chce podglądnąć wskaźnik mam znaki ??? zamiast adresów.
Wszystko jest wywoływane już po utworzeniu formy.

0

Nie twórz tego wskaźnika, już jest stworzony w Unit1.h

0

Wywaliłem ten wskaźnik, wszystko się kompiluje. Ale i tak przy sięgnięciu do Form1 wywala się program. Borland nie widzi tych adresów.
Jeszcze jakaś podpowiedź?

Ja już nie mam pomysłów na to.

0

Ok, problem rozwiązany.
W innych modułach był jeszcze ten wskaźnik tworzony.
Dzięki wszystkim za pomoc.

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