Hi eMGee,
also das mit dem
aktuellerRaum:=TRaum.Create;
würde ich ganz schnell wieder vergessen, da du aktuellerRaum ja danach eh wieder überschreibst und dadurch nur ein Speicherleck entsteht, da du das vorher erzeugte Objekt aktuellerRaum nie wieder freigibst (was ja schon gesagt wurde). (genauso müsstest du auch im OnDestroy-Event die ganzen Räume mit room[i].Destroy (i=1..16) wieder freigeben)
Zu deiner AccessViolation schlage ich dir mal vor, einfach auf dein Formular zu gehen, und in den Objekt-Inspektor bei dem Ereignis OnCreate FormCreate einzutragen. So wie das aussieht, werden nämlich deine ganzen Räume (und damit ja auch aktuellerRaum) nie einem Wert zugewiesen (bzw. haben rein zufällige Werte), da ja das OnCreate gar nicht erst aufgerufen wird. (Setze dich in diesem Zusammenhang am besten gleich mal mit Haltepunkten / Debugger auseinander -> Delphi-Hilfe oder deinen Informatik-Lehrer fragen
) Damit will Delphi dann z.B. im Button1Click-Event auf
aktuellerRaum.Norden
zugreifen, was aber natürlich nicht geht, da der Speicher-Bereich, auf den aktuellerRaum zeigt, gar nicht existiert.
Hoffe damit sind die Fragen geklärt.
Grüße
Olli