Tablica dynamiczna jako pole w klasie

Odpowiedz Nowy wątek
2011-07-29 19:52
nobody
0

Witam mam taki kod:

PSerwer = ^TSerwer;  
TSerwer = record
  Host:string;
  Nazwa:string;
  Predkosc:integer;
  DebrisObrony:integer;
  DebrisFloty:integer;
  ACS:boolean;
end;
 
TListaSerwerow = class (TObject)
  private
    FListTab: array of PSerwer;
    procedure DodajSerwer();
  public
    constructor Create(NazwaPliku:string);
    destructor Destroy; override;
end;

oraz w konstruktorze chce przydzielić tej tablicy FListTab jakiś rozmiar dobie to w ten sposób:
SetLength(FListTab,500);
i otrzymuje AV.
Bez klasy jeśli zadeklaruje FListTab jako zmienna lokalna wszystko jest cacy. Dlaczego tak się dzieje?

edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-07-29 20:02
0

Spróbuj

SetLength(@FListTab,500);

Pozostało 580 znaków

2011-07-29 20:09
nobody
0

Incompatible types :/

Pozostało 580 znaków

2011-07-29 20:21
0

A stworzyłeś w ogóle ten obiekt?

Btw. Może mi ktoś wytłumaczy co znaczy AV?


Nie pisz do mnie PM o czymś co nie dotyczy bezpośrednio mnie. | Nie rozmawiaj ze mną jeśli brak Ci kultury (wystarczy że mi brakuje) | Nie jestem zły, jestem po prostu zły.
edytowany 1x, ostatnio: payl, 2011-07-29 20:22

Pozostało 580 znaków

2011-07-29 20:23
0

AV - Access Violation
Naruszenie pamięci, coś takiego...


Pozostało 580 znaków

2011-07-29 20:29
nobody
0

napisałem, że ustawiam rozmiar tablicy w konstruktorze, wywołuje też inheritet od TObject choć nie wiem czy ma to jakieś znaczenie.
AV = Access Violation screen w zalaczniku

Pozostało 580 znaków

2011-07-29 20:43
nobody
0

Faktycznie nie stworzyłem obiektu. Problem rozwiązany głupio się przyznać, ale zamiast
ListaSerwerow:=TListaSerwerow.Create(SciezkaPlikuSerwerow);
napisałem
ListaSerwerow:=ListaSerwerow.Create(SciezkaPlikuSerwerow);
dzięki za pomoc i sory za zamieszanie :P

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0