Witam. Przygotowuje sie do kolejnego projektu na studia i mam ciekawy problem. Chcialem teraz przetestować odczyt rekordów z pliku do listy. Jednak ciekawe rzeczy sie dziają i wyskakuje mi runtime error 100 który oznacza brak/koniec pliku. Plik utworzylem wczesniej rewritem. Procedura zapisz normalnie dziala i dopisuje rekordy. Jednak nie moge ich odczytac z pliku. Nawet przy wczytywaniu ograniczylem sie tylko do jednego elementu i ustawilem wskaznik na 0 czyli z tego co wiem pierwszy element. Przed odczytem są już tam rekordy wprowadzone.
Co ciekawe. Gdy zmienilem hauto2 ze wskaznika na element typu auto to udalo sie wczytac rekord do tej zmiennej. Dziwne.
wiem, że kod jest strasznie "brzydki" ale to tylko kod do wstepnej fazy nauki list i plikow z rekordami.
program listytescik;
uses crt;
type str24 = string[24];
pauto = ^auto;
auto = packed record
model : str24;
rok : integer;
wer : str24;
cena : real;
next : pauto;
end;
var hauto : pauto;
hauto2: pauto;
procedure zapisz(hauto:pauto);
var plik: file of auto;
begin
assign(plik,'auta.bin');
reset(plik);
while hauto <> NIL do
begin
Seek(plik, FileSize(plik));
write(plik,hauto^);
hauto:=hauto^.next;
end;
close(plik);
end;
procedure wczytaj(hauto2:pauto);
var plik: file of auto;
begin
assign(plik,'auta.bin');
reset(plik);
seek(plik,0);
read(plik, hauto2^);
close(plik);
end;
procedure wstawauto(var hauto:pauto);
var nowy:pauto;
begin
new(nowy);
readln(nowy^.model);
readln(nowy^.rok);
readln(nowy^.wer);
readln(nowy^.cena);
nowy^.next:=hauto;
hauto:=nowy;
zapisz(hauto);
end;
procedure dodajauto(var hauto:pauto);
begin
end;
procedure wyswietl(hauto:pauto);
begin
while hauto <> NIL do
begin
writeln(hauto^.model);
writeln(hauto^.rok);
writeln(hauto^.wer);
writeln(hauto^.cena:5:2);
hauto:=hauto^.next;
end;
end;
begin
filemode:=2;
ClrScr;
hauto:=NIL;
hauto2:=NIL;
wstawauto(hauto);
writeln('---------');
wczytaj(hauto2);
wyswietl(hauto);
readln;
readkey;
end.
poprawienie tytułu wątku + dodanie znacznika <code class="pascal"> - fp