Czy da się zapisać tablicę do pliku typowanego?

0

Chciałbym zapisać rekord zawierający tablicę do pliku. Wygląda on tak:

type
 tAkcja = (up, down, right, left, esc, enter, none);

 tSnake =
        record
         x, y: byte;
        end;

 tBonus =
        record
         x, y: byte;
         r: word;
        end;

 tReplay =
        record
         akcje: array of tAkcja;
         przeszkody: array of tSnake;
         bonusy: array of tBonus;
         ruchy, bon: word;
         szer, wys, prz: byte;
        end;

Chodzi o tReplay. Kiedy mam już wszystkie dane zapisane w zmiennej zapisuje tablicę do pliku za pomocą ReWrite;
Problem pojawia się kiedy chce użyć tablicy "Przeszkody" w pętli. Najczęściej rezultatem jest run-time error 216.
Fragment poniższej procedury rysuje przeszkody dla węża i oznacza ich współrzędne jako granice, przez które nie może przejść.

for k := 0 to prz-1 do
                        begin
                         readkey;
                         i:= R.przeszkody[k].x;//Używając readkey'ów ustaliłem, że w tym momencie program się wysypuje
                         readkey;
                         j:= R.przeszkody[k].y;
                         gotoxy(i, j);
                         write('╔╗');
                         gotoxy(i, j+1);
                         write('╚╝');
                         border[i-1, j-1]:=true;
                         border[i-1, j]:=true;
                         border[i, j-1]:=true;
                         border[i, j]:=true;
                        end;

Metodą prób i błędów odkryłem, że po wczytaniu pliku tablica ma zawsze długość = 1, nawet jak próbuje zmienić jej zakres przed wczytaniem z pliku.
Z góry dziękuję.

0

Ty może pokaż kod jakim zapisujesz i wczytujesz te tablice.

0

Tablicy dynamicznej raczej się nie da podobnie jak string nie określonej długości.

0

@FLAMESpl - aby skorzystać z plików typowanych musisz mieć typ rekordowy o stałym rozmiarze, dlatego macierze dynamiczne i łańcuchy o nieokreślonej długości nie wchodzą w grę; Poczytaj więcej o plikach typowanych a zauważysz, że zawsze jeśli chce się mieć pole jako łańcuch czy macierz - rozmiar musi być określony;

Jednak jeśli potrzebujesz zapisywać tego typu dane to wykorzystaj pliki amorficzne cechujące się nieregularną (dowolną) budową; Do sprawnej obsługi takiego pliku możesz wykorzystać klasę TFileStream.

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