Re: Objekte von Klassen in FreePascal erzeugen



mario.donick@xxxxxxxxxxxxxx schrieb:
Hallo allerseits,

type TSpieler = class
intHP : integer;
end;

var
MyHero : TSpieler;
begin
MyHero.intHP := 102;
end.

Wenn ich das Programm jedoch ausführe, kommt folgende Fehlermeldung:
Runtime error 216 at $080480D0

Wo liegt mein Fehler?

Wenn du Klassen mit class (statt mit dem alten "object") deklarierst,
dann sind die einzelnen Variablen grundsätzlich nur Zeiger auf ein
Objekt. In deinem Beispiel ist aber noch überhaupt kein Speicher
reserviert. Diese class-Klassen erzeugt man mit einem Konstruktor, der
Standardkonstruktor heißt "Create". Du musst also VOR Verwendung von
HyHero selbigen erst erzeugen. Wenn du nicht spezielles beim Erzeugen
tun musst, dann tut ein "MyHero:=TSpieler.Create;" das, was du willst.
Beachte, dass bei Objekten von Class-Klassen der "." eigentlich "^."
bedeutet.

Wolf
.