Zapisywanie zmiennych dynamicznych

0

Ktoś może mi dać namiary? - jakiś artukuł, przykład szczególnie jeżeli chodzi o tablice dynamiczne

0

dla pliku amorficznego

BlockWrite(plik,tablica,sizeof(tablica));

albo w pętli dla pliku typowanego

for i := 0 to length(tablica)-1 do write(f,tablica[i]);

analogicznie z odczytem.

do czegoś tak prostego ma być artykuł?

0

Wszystko co się wie jest proste...dzięki, zapomniałem o plikach niezdefiniowanych :)

0

dla pliku amorficznego

BlockWrite(plik,tablica,sizeof(tablica));

eee ? dla tablicy dynamicznej to będzie raczej:

BlockWrite(plik,tablica[0],length(tablica));
0

eee ? dla tablicy dynamicznej to będzie raczej:

BlockWrite(plik,tablica[0],length(tablica));

szczególnie, jak zapisujesz do pliku nietypowanego. wtedy zapiszesz tyle bajtów, ile elementów ma tablica, a to przeważnie za mało ;-)
poza tym adres tablica i tablica[0] jest taki sam, bo tablica zaczyna się od zerowego elementu...

0

Szanowny ŁK to nie działa...(bez komentarzy)
Dajcie trochę wzkazówek albo jakieś namiary. To jest rzeczywiście takie proste, że szkoda gadać (opinia ŁK)?
Jak Piechnat poradził - działa tylko nie wiem co z Rewrite i Reset jak dam Rewrite(plik) to nie działa, jak dam Rewrite(plik,1), to zapisze i odczyta tylko pokaże Runtime error 204, jak dam Rewrite(plik, SizeOf(tablica)) to sie wiesza.
W moim programie sprawa nie będzie chyba prosta. Mam trochę skompikowane struktury - recordy składające się m. in. z dynamicznych tablic recordów itd. To mi wszystko działa tylko muszę to zapisywać (kurde może trzeba bylo od tego zacząć?). Jak to zapisywać?

// ŁF!!!!!!

0

No cóż, pomyłki chodzą po ludziach, a mi w D5 to też nie bardzo działa. Działa natomiast takie coś :

type
    TRekord = record
        zm1 : byte;
        zm2 : string[20];
    end;
var
    tablica : array of TRekord;
    F : file of TRekord;
begin
    SetLength(tablica, 3);
    AssignFile(F, 'd:\\plik.rec');
    Rewrite(F);
    BlockWrite(F, tablica[0], Length(tablica));
    CloseFile(F);
end;

//DOPISANE
i ŁF a nie ŁK


lub var f:file; //... rewrite(f,1); BlockWrite(F, pointer(tablica)^, Length(tablica)*sizeof(trecord)); pointer(tablica)^ da ten sam efekt co tablica[0], a </u>Length(tablica)*sizeof(trecord)</u> jest chyba oczywiste ;] [mf]
0

Tą sytuację rozumiem, tylko co zrobić kiedy jedno z pól rekordu jest tablicą dynamiczną?

0

Tą sytuację rozumiem, tylko co zrobić kiedy jedno z pól rekordu jest tablicą dynamiczną?

To masz problem, mozesz to zapisac do nietypowanego, ale potem tego nie odczytasz, musialbys wymysles jakis wlasny format, najpierw jakis naglowek, w nim zapisane informacje o wielkosci danych, po jego odczytaniu wiesz jaka dlugosc ma tablica i ja czytasz.

0

Dzięki :) ..."ja wiedziałem że tak będzie"...
Ale jak ktoś robił coś takiego, to niech wrzuci przykład, jak ja to zrobię, to dam znać

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