Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
Delphi 10.2 Tokyo Professional
|
AW: Hilfe mit Textadventure
9. Jan 2015, 14:16
Eine unschöne Sache ist da noch drin. Der leere constructor.
Konstruktoren dienen dazu, die einzelnen Felder des Objekts zu initialisieren. So, wie du es nun hast, gibt es ein Problem: Nach dem Aufruf von TRaum.Create; sind die Felder FNorth...FEast von TRaum mit "irgendwas" gefüllt. Ein Test auf nil (um festzustellen, das es in diese Richtung nicht weitergeht) kann also problemlos ergeben "da gehts weiter", denn "irgendwas" ist nicht nil. Du arbeitest dann mit ungültigen Daten, was direkt in eine Schutzverletzung mündet.
Nutze den Konstruktor also, um solche Probleme gar nicht erst entstehen zu lassen und setze die Felder von TRaum auf nil. Das erspart viel Ärger und womöglich aufwändige Fehlersucherei.
|