Witam, potrzebuję stworzyć małą bazę danych z której układ prezentuje się następująco:
-baza
-poziomA
-poziomA1
-poziomB2
-poziomB
-poziomB[1]
-poziomB1
-poziomB2
-poziomB[2]
-poziomB1
-poziomB2
-poziomB[3]
-poziomB1
-poziomB2
- (...)
Poziom A ma zawsze 2 pod poziomy, natomiast poziom B ma mieć zmienną ilość i tutaj jest mój problem, gdyż Delphi przy zapisie/odczycie takich danych chce mieć od razu podaną długość tej tablicy.
Takie mam zadeklarowane typy w Delphi:
type
TPoziomA = Packed Record
PoziomA1: string[100];
PoziomA2: string[100];
end;
TPoziomB = Packed Record
PoziomB1: String[100];
PoziomB2: String[100];
end;
TBaza = Packed Record
PoziomA: TPoziomA;
PoziomB: array[0..2] of TPoziomB; // Tutaj Delphi wymaga podania ilości
end;
Kolejnym problemem jest też, ze chciałbym mieć zmienną długość pola np. PoziomB1, a nie z góry ustaloną String[100].
A to mój kod do zapisu:
var
Plik: File of TBaza;
i: Integer;
begin
AssignFile(Plik, 'F:\PlikBazy.dat');
Rewrite(Plik);
try
Write (Plik, Poziom);
finally
CloseFile(Plik);
end;
Jak mu usunę informacjie o wielkości tablicy to wyrzuca błąd:
E2155 Type 'TBaza' needs finalization - not allowed in file type
Normalnie wszystko działa, jednak zależy mi na tym, aby Poziom B miał zmienną długość tablicy, tylko nie mam pomysłu jak rozwiązać ten problem.
Tutaj takie pytanie trochę odbiegające od tematu co jest bardziej wydajnie używać plików .INI, .XML czy takie jak próbuję stworzyć?
Z góry dziękuję za pomoc.
Pozdrawiam noxwow