tylko poprzednio nigdzie nie używałem zapisu: playerx = new gracz(); a mimo to działało. czemu tak było? jest w takim razie konieczne deklarowanie w public klasy TForm1 gracz player1; itd.?
Nie wiem czemu to Tobie działało, ale wcześniej źle robiłeś.
Jeżeli obiekt klasy
gracz ma być używany globalnie, czyli w całym programie, to musi być zadeklarowany w sekcji
private lub public
pliku nagłówkowego. Klasę możesz zdefiniować w konstruktorze klasy formularza, nie musi to być od razu zdarzenie
OnCreate. By lepiej zrozumieć dlaczego musisz deklarować obiekty klasy gracz w pliku nagłówkowym i definiować je w pliku źródłowym proponuję być zajrzał
do serwisu Cyfrowy
Baron, do działu:
teoria
Przekazywanie obiektów i funkcji pomiędzy formularzami. oraz:
teoria
Tworzenie klas.Proponuję być poczytał o tym czym są obiekty lokalne, publiczne, prywatne i globalne.
Crovis napisał(a):bo nie widzi

REKE musisz utworzyć w konstruktore klasy GRACZ
Corvis nie napisał dlaczego musisz obiekt
REKA zdefiniować w klasie
gracz. Dlatego, że deklarując obiekt
REKA w sekcji
public lub
private klasy
gracz, czynisz właścicielem tego obiektu klasę
gracz, więc definiować również musisz ten obiekt w tej klasie, gdyż klasa formularza
TForm1 (Form1) nic nie wie o obiekcie
REKA. Podobnie sytuacja wygląda z obiektem
KARTY, deklarując ten obiekt w sekcji
private lub
public klasy
TForm1 czynisz właścicielem tego obiektu klasę
TForm1.
Trochę mnie dziwi Twoja niewiedza w tym temacie.

Tworzysz klasę
gracz, a zdajesz się nie wiedzieć po co są sekcje
private i
public, dlaczego trzeba deklarować obiekty w tych sekcjach i definiować je wewnątrz klasy.