Помощь - Поиск - Пользователи - Календарь
Полная версия: Файлы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-Марина-
Я написала программу, в которой нужно открыть файл для чтения данных,а программа при запуске пишет что файл не найденю Подскажите пожалуйста в каком месте в программе нужно указывать путь к файлу?
Client
Цитата
Я написала программу
Где?
-Марина-
В смысле где? В Паскале.
Ozzя
Марина, телепаты в командировке на Бетельгейзе.
Предполагаю, что проблема в

assign(f, 'c:\имя_твоей_папки\_имя_твоего_файла');

?
Michael_Rybak
Цитата
В смысле где? В Паскале.


он имел ввиду просьбу показать программу
-Марина-
Пожалуйста:

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.


М
Используем теги

Ozzя
Файл с данными лежит в той же директории, что и программа?
-Марина-
Да, в той же директории.
volvo
Длина имени файла и того имени, что вводится пользователем не больше 8-ми символов? Турбо Паскаль работает с именами файлов в формате 8.3
-Марина-
Нет, не больше. Имя состоит только из трёх букв.
volvo
Блин, у меня почему-то ощущение, что я на экзамене, а ты - преподаватель. Ты ничего не путаешь? Тебе нужна помощь, или кому? Что, от тебя убудет, если ты напишешь, КАКИЕ имена ты используешь? Если ты напишешь, не ReadOnly ли случайно эти файлы?

Ну, как знаешь... Не хочешь сама себе помогать - дело твое...
andriano
Марина, у тебя не совсем верно используются директивы {$I-}.
Честно говоря, это очень сильнодействующее средство, которое вообще в обычных программах использовать не следует, но, почему-то, именно этот способ проверки наличия файла стал стандартом de facto.
Первое: сделай в программе так:

writeln('Введите имя входного файла '); readln(name_in);
assign(f_in,name_in);
{$I-}
reset(f_in);
{$I+}
if IOResult<>0 then begin
...
и чтобы больше эти директивы нигде в коде не встречались, в противном случае они будут влиять не только на работу с файлом, но и вообще на весь ввод-вывод, что может существенно затруднить отладку.

И еще: попытайся писать, что ты делаешь, что ожидаешь получить, и что вместо этого получаешь. Иначе очень трудно догадаться, что же тебе нужно.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.