Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Accesviolation bei Zugriff auf Objekt


B3v3R - Sa 19.09.09 14:28
Titel: Accesviolation bei Zugriff auf Objekt

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
unit URaumMan;

interface

uses URaum, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TRaumMan = class(TObject)
   public
    Rooms : array of TRaum;

    FUNCTION start():Boolean;
    FUNCTION set_num(number:integer):Boolean;
    FUNCTION go_to(where:Char):Boolean;
    FUNCTION ret_desc():string;
    PROCEDURE free_all();
   private
    akt : Traum;
  END;


implementation


PROCEDURE TRaumMan.free_all();
VAR iter : INTEGER;
BEGIN
  iter := 0;
  while Rooms[iter]<>nil DO BEGIN Rooms[iter].Destroy(); inc(iter); END;
END;


//Raumwechsel durchführen und bestätigen
FUNCTION TRaumMan.go_to(where:Char):Boolean;
BEGIN
//  result:=false;
  IF where = 'n' then BEGIN
    IF akt.N <> nil then BEGIN
      akt:=akt.N;
      result:=true;
     END;
   END
  ELSE IF where = 'e' then BEGIN
    IF akt.E <> nil then BEGIN
      akt:=akt.E;
      result:=true;
     END;
   END
  ELSE IF where = 's' then BEGIN
    IF akt.S <> nil then BEGIN
      akt:=akt.S;
      result:=true;
     END;
   END
  ELSE IF where = 'w' then BEGIN
    IF akt.W <> nil then BEGIN
      akt:=akt.W;
      result:=true;
     END;
   END;

END;

FUNCTION TRaumMan.set_num(number:integer):boolean;
BEGIN
setlength(Rooms,number+1);
END;

FUNCTION TRaumMan.start():Boolean;
BEGIN
  akt:=Rooms[0];
END;



FUNCTION TRaumMan.ret_desc():string;
BEGIN
  result:akt.desc;
END;


end.


jup an markierter stelle tritt eine acces violation auf... hat da grob jemand eine ahnung, woran das liegen könnte?

das objekt "akt" ist vorhanden, und hat auch entsprechende eigenschaften ('desc') trotzdem kann ich nicht darauf zugreifen :/

danke im vorraus für eventuelle vorschläge^^


platzwart - Sa 19.09.09 15:09

entweder ist akt oder desc nicht vorhanden... muss da nicht eh ein ":=" anstatt einem ":" hin?


B3v3R - Sa 19.09.09 15:16

gnaaaaah -.-

das ':=' sollte es gewesen sein... ja -.-
und ich dachte soetwas sagt einem der compiler :/
naja danke trotzdem :)