Niesforny plik binarny.

0

Witam.
Mam za zadanie zapisać kilka losowych liczb typu real do zdefiniowanego pliku binarnego, a następnie zamienić miejscami pierwszą i ostatnią.
Plik wypełniam procedurą:

 procedure wypelnij(var x:plik);
var
i:byte;
z:real;
begin
rewrite(x);
for i:=0 to 5 do
begin
z:=random(200);
write(x,z);
end;
close(x);
end;

Następnie za pomocą funkcji seek próbuję zamienić miejscami owe liczby:

 procedure zamien(var x:plik);
var
temp,c:real;
begin
rewrite(x);
read(x,temp);
c:=temp;
seek(x,4);
read(x,temp);
write(x,c);
seek(x,0);
write(x,temp);
close(x);
end;

Kompilator wywala mi runtime error 100. Co robię źle?

0
assignfile
0

Nie zapomniałem o tym. Po prostu nie kopiowałem całego kodu, assign znajduje się w bloku głównym. Procedura zamien powoduje ten błąd, co w niej jest źle?

1

zobacz co robi rewrite i zastanów się dlaczego to nie działa

0

No tak, kasowałem sobie zawartość pliku. W takim razie, czy dla plików binarnych istnieje jakiś odpowiednik append z plików tekstowych?

0

W takim razie, czy dla plików binarnych istnieje jakiś odpowiednik append z plików tekstowych?

A może reset?
Append właściwie jest reset+seek na koniec.

0

Nie wiem. Przecież powinno go nadpisać.

No tak, a co jak próbujesz odczytać pusty plik? Myślisz ty trochę?

0

Racja, pomyliło mi się z plikami tekstowymi. Tam reset służy tylko do odczytu, w binarnych przecież pozwala także na zapis. Dzięki za pomoc.

0

Tam reset służy tylko do odczytu, w binarnych przecież pozwala także na zapis

Nie masz racji, nie ważne jaki tryb (binarny/tekstowy/reset/rewrite/append/cokolwiek) możesz ustawić prawa przez FileMode. (2=zapis/odczyt,1=zapis,0=oczyt jeżeli dobrze pamiętam).

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