Jak zapisać rekordy ze zmiennymi dynamicznymi do pliku?

0

Witam.

Sprawa przedstawia się następująco:
Mam tablicę rekordów, które zawierają pole typu AnsiString oraz tablicę dynamiczną innych rekordów (tym razem bez pól dynamicznych).
Czyli schematycznie tak:

type
TPodRekord = record
aa: integer;
end;

TPodRekordy = array of TPodRekord;

TRekord = record
Note: String;
PodRekordy: TPodRekordy;
end;

var
Rekordy: array[0..10] of TRekord;

Pytanie brzmi: jak zapisać do pliku zawartość tablicy Rekordy? Wiadomo, pliki typowane odpadają. Za plikami Ini też nie przepadam :)

Byłbym bardzo wdzięczny za wszelkie sugestie.

Pozdrawiam

0

type
TPodRekord = record
aa: integer;
end;

TPodRekordy = array of TPodRekord;

TRekord = record
Note: String;
PodRekordy: TPodRekordy;
end;

var
Rekordy: array[0..10] of TRekord;

TPodRekordy = array of integer; to jest to samo co u Ciebie w pierwszym członie, bo masz tylko 1 zmienną.
Ale wracając do tematu, to jeśli chcesz zapisać to do pliku w najprostszy spobób, to właśnie pliki typowane przy czym musisz dodać do Note: wartość skończoną np. String[10].
A jeśli chcesz zrobić po swojemu, to musisz zapisywać wszystkie rekordy (w pętli) po kolei w wybrany przez siebie sposób.

0

<quote=endrique>

TPodRekordy = array of integer; to jest to samo co u Ciebie w pierwszym członie, bo masz tylko 1 zmienną.

W tym przypadku się zgodzę, ale to tylko schemat uproszczony. W rzeczywistości ten TPodRekord ma też inne pola.
Co do stringu, to właśnie cały szkopuł leży w tym, że chcę zapisać stringa o dowolnej długości.
A zapisywanie pod-rekordów w pętli też mi nie zdaje egzaminu, ponieważ są innego rozmiaru niż rekord główny. A poza tym, zapisane są w tablicy dynamicznej, więc nie wiadomo z góry, ile ich tam będzie - czyli nie znamy rozmiaru całej struktury.
Ale dzięki za zainteresowanie.

0

Sorki, pochrzaniło mi się z cytowaniem. Chyba się wreszcie zarejestruje ;)

0

Ja też to troche uprościłem, ale pokaże Ci obrazowo o czym myślałem:

powiedzmy że mamy taką strukture:
TRec1 = record
a: string;
b: integer;

TRec2 = array of TRec1

TRec3 = record
Rec: TRec2;
c: string;

No i teraz jedziemy w pętli i zaopisujemy kolejne wartości do pliku który powinien wyglądać mniej więcej tak:

12; //liczba rekordów
[Rec3.Rec2[1].a];
[Rec3.Rec2[1].b];

[Rec3.Rec2[2].a];
[Rec3.Rec2[2].b];

itd.

Pewnie sięgdzieś pomyliłem, jak zwykle, ale mniej więcej o to mi chodzi, czyli trzeba stworzyć taką strukturę z której będziesz później potrafił coś odczytać :)

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