Я написала программу, в которой нужно открыть файл для чтения данных,а программа при запуске пишет что файл не найденю Подскажите пожалуйста в каком месте в программе нужно указывать путь к файлу?
В смысле где? В Паскале.
Марина, телепаты в командировке на Бетельгейзе.
Предполагаю, что проблема в
assign(f, 'c:\имя_твоей_папки\_имя_твоего_файла');
?
Пожалуйста:
program create_bfile;
var buf:array[1..4] of real;
f_in:text;
f_out:file;
i,k:integer;
name_in,name_out:string;
const
begin
{$I-}
writeln('Введите имя входного файла '); readln(name_in);
assign(f_in,name_in);
reset(f_in);
if IOResult<>0 then begin
writeln('Файл',name_in,'не найден'); exit end;
writeln('Введите имя выходного файла'); readln(name_out);
assign(f_out,name_out);
rewrite(f_out,sizeof(real)*4);
{$I-}
i:=0;
while not eof(f_in)do begin
inc(i);
read(f_in,buf[i]);
if i=4 then begin
blockwrite(f_out,buf,1); i:=0; end;
end;
if i<>0then begin
for k:=i+1 to 4 do buf[k]:=0;
blockwrite(f_out,buf,1);
end;
close(f_in); close(f_out);
end.
М | Используем теги |
Файл с данными лежит в той же директории, что и программа?
Да, в той же директории.
Длина имени файла и того имени, что вводится пользователем не больше 8-ми символов? Турбо Паскаль работает с именами файлов в формате 8.3
Нет, не больше. Имя состоит только из трёх букв.
Блин, у меня почему-то ощущение, что я на экзамене, а ты - преподаватель. Ты ничего не путаешь? Тебе нужна помощь, или кому? Что, от тебя убудет, если ты напишешь, КАКИЕ имена ты используешь? Если ты напишешь, не ReadOnly ли случайно эти файлы?
Ну, как знаешь... Не хочешь сама себе помогать - дело твое...
Марина, у тебя не совсем верно используются директивы {$I-}.
Честно говоря, это очень сильнодействующее средство, которое вообще в обычных программах использовать не следует, но, почему-то, именно этот способ проверки наличия файла стал стандартом de facto.
Первое: сделай в программе так:
и чтобы больше эти директивы нигде в коде не встречались, в противном случае они будут влиять не только на работу с файлом, но и вообще на весь ввод-вывод, что может существенно затруднить отладку.
writeln('Введите имя входного файла '); readln(name_in);
assign(f_in,name_in);
{$I-}
reset(f_in);
{$I+}
if IOResult<>0 then begin
...