Dynamiczne rekordy

0

Jak mogę tworzyć dynamicznie rekordy ??

np.
type
Tmojrekord = Record
plik : string[255];
mode : Integer;
typ : Integer;
end;

Jak można dynamicznie utworzyć powyższy rekord zmieniając lub dodawając dodatkowe zmienne. np. dodać zmienną rozmiar i plik zmienić na string[120].
Oczywiście w czasie wykonywania programu.

0

Ciekawy problem : ze stringiem nie ma dużego problemu bo wystarczy dać Array of Char albo AnsiString i można sobie to oprogramować.

A dodawanie pól .. nie spotkałem się - zawsze można zamiast rekordu użyć dynamiczną Array of Variant.

0

Albo wskaźnikiem, do którego dopisujemy gdzieś strukturę rekordu i później do wskaźnika bazowego dodajemy offset, aby uzyskać pozycję pola w rekordzie. Ale trochę zabawy z tym będzie.

0

Albo w rekordzie trzymasz tekst o budowie a'la np. XML lub INI.

0

Nie wiem, czy to pomoże, ale spotkałem się z taką definicją, że:

type
 TMojTyp = record
 case zm of
   0: ntyp: integer;
   1: ntyp: string[20];
 end;

Jakoś tak to szło, nie pamiętam dokładnie. To się chyba nazywa typ warunkowy, czy jakoś tak.

0

raczej

type
 TMojTyp = record
 case integer of
   0: polea: integer;
   1: poleb: string[20];
 end;

przy czym nie ma możliwości używania jednocześnie polea i poleb, bo oba zajmują to samo miejsce w pamięci.

0

Juhas - takie coś nazywa sie rekordy z wariantami - i tak naprawdę nie rozwiązuje kwestii tego posta - bo jak już wspomniano pola zajmują to samo miejsce w pamięci

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