[delphi] odczyt danych

Odpowiedz Nowy wątek
2006-12-28 18:53
olson
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....

Pozostało 580 znaków

2006-12-28 19:00
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.


<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>

Pozostało 580 znaków

2006-12-31 14:10
olson
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 ??

Pozostało 580 znaków

2006-12-31 14:16
0

Jakaś pętleka by się przydała


<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>

Pozostało 580 znaków

2007-01-02 13:55
olson
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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