[delphi] odczyt danych

0

Witam!!
Mam maly problem:

mianowicie zapisuje sobie w pliku dane.dat parenascie roznych danych po czym je odczytuje... i pojawiaja mi sie tylko ostatnie zapisane dane... a chce żeby pokazywały mi sie wszystkie... proszę o pomoc!!
przedstawiam krótki listing zapisu i odczytu danych...

Zapis:

dane.nazwaS:=nsedit.Text;
           dane.rodzajS:=rsbox.Text;
           dane.maxPulap:=strtoint(mpedit.Text);
           dane.maxSpeed:=strtoint(mpredit.Text);
           dane.Xs:=strtoint(xsedit.Text);
           dane.Ys:=strtoint(ysedit.Text);
           dane.Fuel:=strtoint(ipedit.Text);
           dane.maxPerson:=strtoint(ioedit.Text);

           try
              AssignFile(plik,'samolot.dat');
              rewrite(plik,1);
              BlockWrite(plik,dane,SizeOf(dane));
           finally
              CloseFile(plik);
           end;

i odczyt.. :

try
        AssignFile(plik,'samolot.dat');
        reset(plik,1);
        BlockRead(plik,dane,SizeOf(Dane));
        ekranForm.EkranM.Lines.Add('Samoloty:');
        ekranForm.EkranM.Lines.Add('Nazwa: '+dane.nazwaS);
        ekranForm.EkranM.Lines.Add('Rodzaj samolotu: '+dane.rodzajS);
        ekranForm.EkranM.Lines.Add('Max pułap: '+inttostr(dane.maxPulap));
        ekranForm.EkranM.Lines.Add('Max prędkość: '+inttostr(dane.maxSpeed));
        ekranForm.EkranM.Lines.Add('Pojemność zbiornika paliwa: '+inttostr(dane.Fuel)+' litrów.');
        ekranForm.EkranM.Lines.Add('Pojemność osób na pokładzie: '+inttostr(dane.maxPerson));
        ekranForm.EkranM.Lines.Add(' ');

     finally
        CloseFile(plik);
     end;

... prosze powiedzcie co jest źle.. albo co robie nie tak....

0

Przy zapisie robisz Rewrite, która działa destrukcyjnie, tzn. jeżeli plik istniał to go zeruje lub tworzy jeżeli go nie było. Jeżeli chcesz dopisywać dane to musisz otwierać plik poprzez Reset, następnie przesunąć wskaźnik plikowy na koniec pliku Seek(F, FileSize(F)). Generalnie jednak polecam uzyć klasy TFileStream. Poczytaj o niej w helpie.

0

Zrobilem zapis przy pomocy seek(f,filesize(f)) i dziala... zapisuja mi sie pokolei wprowadzane dane :D
natomiast odczyt juz nie funkcjonuje tak jak powinien :/ gdyz wyswietla mi ostatni wprowadzony rekord :/ ... jak zmienic kod odczytu aby dzialal poprawnie.. czyli wyświetlał wszystkie wprowadzone rekordy ??

0

Jakaś pętleka by się przydała

0

no wlasnie petelka... :/ hehs... tylko jaka ;p bo z eof(f) nie...

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