Паскаль. Ошибка при компиляции.

Компьютеры программирование программы pascal паскаль

Хочу прочитать типизированный файл с расширением .dat, хранящий целые числа, и перевести эти числа в двоичную систему счисления, записывая каждое число двоичной СС в новую строку текстового файла. Чтобы числа сохранились, я решил отводить на каждое число по 5 позиций. У меня 2 программы. Первая для записи целых чисел в типизированный файл, а вторая для чтения типизированного файла, преобразования чисел в двоичную СС и записи в текстовый файл.
Вторая программа выдает ошибку при компиляции "file not open" и показывает курсором позицию 8:1 в паскале.
Вот тексты программ: Первая идет.

program writer2;
var f:file of longint; m:array[1..5] of longint;
begin
assign(f,'info.dat');
rewrite(f);
m[1]:=1; m[2]:=22; m[3]:=323;
write(f,m[1]); seek(f,5);
write(f,m[2]); seek(f,5);
write(f,m[3]); seek(f,5);
close(f);
writeln('GOTOVO');
m[1]:=0; m[2]:=0; m[3]:=0;
reset(f);
read(f,m[1]); seek(f,5);
read(f,m[2]); seek(f,5);
read(f,m[3]); seek(f,5);
close(f);
writeln(m[1],' ',m[2],' ',m[3]);
end.
--- Вторая идет.

program zadacha2;
var f:file of longint; g:text; num,n,ost,i:longint; s,st,buf:string;
begin
assign(f,'info.dat');
assign(g,'bufer.txt');
rewrite(g);
reset(f);
while not(eof(f)) do
begin st:=''; buf:=' '; num:=num+5;
read(f,n); seek(f,num);
while not(n=1) do
begin ost:=n mod 2; str(ost,s); n:= n div 2;
st:=st+s;
end;
if n=1 then
begin str(n,s); st:=st+s;
end;
for i:=length(st) to 1 do
buf:=buf+st[i];
writeln(g,buf);
close(f);
close(g);
end;
writeln('GOTOVO');
end.
---
Т.е. преобразовываю остаток от деления в строку , а потом через арифметический цикл получаю число в двоичной СС, а затем записываю в новую строку текстового файла.

Примечание:
Да. У меня куча ошибок. Уже исправил. Работает =)
Ответы:
Ты вообще понимаешь, что такое типизированный файл? Там не могут "не вместиться числа", на каждое отводится ровно столько места, сколько нужно для его хранения. И зачем отматывать каждый раз на одно и то же место? Короче - бред, почитай учебник.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.