Ładny brzuch

Dlaczego kasuje mi sie pocztek pliku a wstawia tylko ostatnie wpisane dane, na miejscach gdzie powinny by wczeniejsze rekordy jest cos jakby entery, pusta prestrzen linijek(dokadnie tylle ich jest le rekordw)??
    procedure wpisz_dane(i:byte);     Begin     clrscr;     assign(plik,'nazwa.dat');     reset(plik);     max:=filesize(plik);     seek(plik,max);     close(plik);     rewrite(plik);     write(max);     seek(plik,max);     Writeln('Podaj swoje nazwisko');     Readln(dane1.nazwisko);     Writeln('Podaj swoje imi©');     Readln(dane1.imie);     write(plik,dane1);     close(plik);     i:=i+1;     max:=i;     End;
Uytkownik Evang3lion edytowa ten post 23 marzec 2005, 08:14


Jeeli plik jest otwierany do zapisu to "kursor" ustawiany jest na pocztku pliku. I wtedy kasuje to co byo wczeniej zapisane. Trzeba ustawi kursor na koniec pliku. Robi to chyba polecenie SeekEof ale nie dam sobie rki uci :P

Zamiast rewrite(plik), append(plik).

Plik jest ju ustawiony na koncu pliku przez polecenia
max:=filesize(plik); seek(plik,max);
Po drugie nie moge uzy takich funkcj jak append(plik) czy SeekEof poniewa jest to plik o strukturze rekordowej a nie tekstowej.




Plik jest ju ustawiony na koncu pliku przez polecenia
max:=filesize(plik); seek(plik,max);
Po drugie nie moge uzy takich funkcj jak append(plik) czy SeekEof  poniewa jest to plik o strukturze rekordowej a nie tekstowej.

Nawet nie napisae o tym w kodzie ;) Uyj zwykych plikw.


Nawet nie napisae o tym w kodzie ;) Uyj zwykych plikw.

reset(plik) otwiera plik nie kasujc jego zawartoi
rewrite(plik) otwiera plik kasujc jego zawarto
Dlatego jeli chcesz zapisa co do pliku to musisz go otwiera poleceniem reset(plik)
Powinno by tak (chyba)
procedure wpisz_dane(i:byte);
Begin
clrscr;
assign(plik,'nazwa.dat'); kojarzysz zmienn plikow z fizycznym zbiorem danych
reset(plik); otwierasz plik nie kasujc jego zawartoci
seek(plik,filesize(plik)); idziesz na koniec pliku
Writeln('Podaj swoje nazwisko');
Readln(dane1.nazwisko);
Writeln('Podaj swoje imi©');
Readln(dane1.imie);
write(plik,dane1); zapisujesz dane do pliku
close(plik); zamykasz plik
End;


Zamiast rewrite(plik), append(plik).


Dlaczego kasuje mi sie pocztek pliku a wstawia tylko ostatnie wpisane dane, na miejscach gdzie powinny by wczeniejsze rekordy jest cos jakby entery, pusta prestrzen linijek(dokadnie tylle ich jest le rekordw)??
    procedure wpisz_dane(i:byte);     Begin     clrscr;     assign(plik,'nazwa.dat');     reset(plik);     max:=filesize(plik);     seek(plik,max);     close(plik);     rewrite(plik);     write(max);     seek(plik,max);     Writeln('Podaj swoje nazwisko');     Readln(dane1.nazwisko);     Writeln('Podaj swoje imi©');     Readln(dane1.imie);     write(plik,dane1);     close(plik);     i:=i+1;     max:=i;     End;


Najprociej aby dopisa linie do pliku. Mona ten plik wczyta do Memo. Memo ukry a nastpnie zpisa.

To jest prosty kod, ktry dopisze ci zawsze na kocu linie do Memo

Memo1.Lines.add('Nowa linia zjakims tekstem');


reset(plik) otwiera plik nie kasujc jego zawartoi
rewrite(plik) otwiera plik kasujc jego zawarto
Dlatego jeli chcesz zapisa co do pliku to musisz go otwiera poleceniem reset(plik)
reset co prawda otwera plik ale nie pozwala do edytowac, plik taki jest tylko do odczytu,.

Wiec problem caly czas aktualny, hej ludzie po sa podstawy Pascala o ktorym nie mam zielonego pojecia, .

do otwarcia pliku do zapisu jest rewrite :) Potem trzeba aby ustawi kursor na kocu pliku. To ju gdzie byo w tym temacie napisane chyba :)

plik otwarty za pomoc polecenia reset nie jest tylko do odczytu

Przepisuj ci z ksiki

Procedur Reset(...); pozwala na otwarcie ju istniejcego pliku i ustawia tzw. wskanik plikowy (File Location Pointer) na pierwszy element w tym pliku. Wskanik plikowy jest po kadej operacji zapisu/odczytu modyfikowany tak, e wskazuje na nastpny element pliku.
Procedura Rewrite(...); otwiera plik niezalenie od etgo, czy istnia on poprzednio, czy nie, ale dzia "destrukcyjnie"; jeli plik nie istnia, tworzy go, za jeli istnia - przypisuje mu zerow dugo (nie niszczy go fizycznie, ale odtworzenie tak skasowanego pliku moe by kopotliwe).

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •