Jak utworzyć globalną tablicę struktury danych - rekordu?

0

Witam.

Jak utworzyć globalną tablicę struktury danych - rekordu??
Przykład rekordu (taki uniwersytecki) poniżej:

 
type
  TInfoRec = packed record
    FName : String[30];
    SName : String[30];
    Age : Byte;
    Pesel : Int64;
    Nip : String[60]
  end;
  PInfoRec = ^TInfoRec; // utworzenie wskaźnika
0
Var Foo: Array of TInfoRec;
Var Bar: Array[min..max] of TInfoRec;

Co w tym trudnego?

Ewentualnie po prostu za pomocą wskaźników:

Var Foo: PInfoRec;
{...}
Foo[0]^
Foo[1]^
...
0

Odpowiedź jest w poruszana w każdym kursie/książce dot. podstaw języka.
globalnie pod słówkiem var

  tab: array [0..49] of TInfoRec; //tablica 50 rekordów z indeksami 0-49 
  tab: array of TInfoRec; //dynamiczna tablica rekordów - wielkość przydziela się przez SetLength
  tab: array of PInfoRec; //dynamiczna tablica wskaźników na rekord - wielkość tablicy przydziela się przez SetLength
// pamięć pod konkretny rekord alokuje się przez new i zwalnia dispose
0
  tab: array of PInfoRec; //dynamiczna tablica wskaźników na rekord - wielkość tablicy przydziela się przez SetLength
// pamięć pod konkretny rekord alokuje się przez new i zwalnia dispose

</quote>

.... no właśnie o tą tablicę wskaźników chodzi.
Czyli najpierw przed pętlą for:
New(tab);
......i w pętli
for .........
SetLength(tab,High(tab)+2); ?????????

0

Nie - nie chcesz inicjować tablicy, lecz jej elementy:

Var I: Integer;
Begin
 SetLength(Tab, 10);
 For I := Low(Tab) To High(Tab) Do
 Begin
  New(Tab[I]);
 End;
End;

Btw, personalnie preferuję SetLength(Tab, Length(Tab)+1);*, łatwiej widać, że dodajesz jeden element ;)
* ofc. znacznie lepsze są generyczne listy typu TFPGList/TList, ale to już pomijamy :P

0

Dzięki.

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