Zapis tablicy do pliku

GR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

Witam. Jak zapisać tablicę do pliku w Delphi?
Jeśli zapisując dane do tablicy używam zmiennej i, która po każdym zapisie zwiększa się o 1 (numer w tablicy), to co zrobić żeby po ponownym uruchomieniu dane te się nie nadpisywały?

Dziękuję!

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

Ad1. Użyć TFileStream dla zapisu
Ad2. Użyć TFileStream dla odczytu, ustawić odpowiednią wartość zmiennej i.

GR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

Zapisuję to w taki sposób:

Kopiuj
Plik := TFileStream.Create('notatki.txt', fmCreate);
Plik.WriteBuffer(Tablica, SizeOf(Tablica));
Plik.Free; 

Jak to teraz odczytać ?
I co zrobić żeby zmienna i przyjmowała wartość wielkości tablicy po uruchomieniu?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Masz zapisać tyle ile masz danych a nie tyle ile się zmieści w tablice.
Dopóki nie pokażesz przynajmniej deklaracji swojej tablicy to nie ma możliwości powiedzieć coś konkretniejszego.

GR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0
Kopiuj
TNotatka = record
    Dzien: Integer;
    Miesiac: Integer;
    Tresc: String; 
Kopiuj
Tablica : array[0..100] of TNotatka; 
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

Zapis:

Kopiuj
Plik:=TFileStream.Create('notatki.txt', fmCreate);
Plik.Write(Tablica[0],i*SizeOf(TNotatka)); // Zamień nazwę zmiennej `i` na coś przyzwoitego
Plik.Free;

Odczyt:

Kopiuj
Plik:=TFileStream.Create('notatki.txt',fmOpenRead);
i:=Plik.Read(Tablica[0],SizeOf(Tablica)) div SizeOf(TNotatka); // Zamień nazwę zmiennej `i` na coś przyzwoitego
Plik.Free;
GR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

Działa bardzo ci dziękuję.
Mam tylko Runtime error 216 at 00404FB2 co jakiś czas jak włączę program.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12270

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.