Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 24.11.2015
Сообщений: 18
1

Ошибка времени выполнения: "Файл не открыт"

27.04.2016, 00:05. Показов 2094. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание:
Кликните здесь для просмотра всего текста
Требуется распечатать исходный файл, а также все результирующие файлы. Составить программу по печати всех символов произвольного файла (не обязательно текстового). При этом не выводить на экран и принтер те символы, коды которых не относятся к печатным символам (коды меньше 31 и больше 254). Распечатывать по 80 символов в строке на экране и принтере.


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Var F1:file of byte;
     b:byte;
     s:string;
Const Name1='C:\Desktop\LR9-1.txt'; // мой путь для файла
Begin
Assign (F1,Name1);
Reset(F1);
Writeln('Чтение данных из файла: ');
While not EOF(F1) do begin // останавливается всегда здесь
begin
      Read(f1, B); if (B > 31) and (B < 254) then
        begin
          S :=chr(B);
          if S.Length = 80 then //сам не понимаю что за выражение, но так подсказали(
            begin
              WriteLn(S); S := '';
            end;
        end;
    end;
  Close(f1); if S.Length > 0 then WriteLn(S);
end;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2016, 00:05
Ответы с готовыми решениями:

Ошибка времени выполнения: файл не открыт
Помогите, пожалуйста, программа выдает ошибку: Ошибка времени выполнения: файл не открыт Задание...

Ошибка времени выполнения: Файл не открыт
Ув. пользователи, помогите советом, как мне доделать программу? Написал, запустил и ошибка....

Ошибка времени выполнения: Файл не открыт
Здравствуйте, помогите пожалуйста с чтением файла - ОШИБКА - 4Rab.pas(91) : Ошибка времени...

PABCSystem.pas(4774) : Ошибка времени выполнения: Файл не открыт на запись
Число, которое одинаково читается слева направо и наоборот, называется палиндромом, напр., 3773....

Ошибка времени выполнения: "Файл не открыт"
Помогите пожалуйста исправить ошибку,возможно не замечаю очевидного, пишет Ошибка времени...

8
147 / 128 / 155
Регистрация: 22.03.2016
Сообщений: 502
27.04.2016, 00:35 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

А файл точно создан?
Не увидел процедуры seek

Добавлено через 1 минуту
Pascal
1
2
procedure Seek(n: int64); 
        Устанавливает текущую позицию файлового указателя в двоичном файле на элемент с номером n
Для отладки попробуй:
Pascal
1
2
function FilePos: int64; 
        Возвращает текущую позицию файлового указателя в двоичном файле
Добавлено через 4 минуты
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Const Name1='LR9-1.txt'; // мой путь для файла
Var F1:file of byte;
     b:byte;
     s:string;
 
Begin
Assign(F1,Name1);
Reset(F1);
Writeln('Чтение данных из файла: ');
While not Eof(F1) do
begin // останавливается всегда здесь
begin
      Read(f1, B); if (B > 31) and (B < 254) then
        begin
          S :=chr(B);
          if S.Length = 80 then //сам не понимаю что за выражение, но так подсказали(
            begin
              WriteLn(S); S := '';
            end;
        end;
    end;
 end;
  Close(f1); if S.Length > 0 then WriteLn(S);
 
end.
Закрытие файла было в цикле его обработки.
1
0 / 0 / 0
Регистрация: 24.11.2015
Сообщений: 18
27.04.2016, 00:56  [ТС] 3
Блин, да, теперь ошибки нету, но программа не работает, выдает пустое поле и все. На вид кажется легкой и правильной, но почему не выводит то
0
147 / 128 / 155
Регистрация: 22.03.2016
Сообщений: 502
27.04.2016, 01:23 4
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
begin
  var f : File of Byte; Reset(f, 'LR9-1.txt'); 
  var S : String; var B : Byte;
  while Not EOF(f) do
    begin
      Read(f, B); if (B > 31) and (B < 254) then
        begin
          S += Chr(B);
          if S.Length = 80 then
            begin
              WriteLn(S); S := '';
            end;
        end;
    end;
  Close(f); if S.Length > 0 then WriteLn(S);
end.
только там что-то с кодировкой
1
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
27.04.2016, 02:47 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Cyber_Monster_, потерял #31 и #254!

мой вариант:
Pascal
1
2
3
4
5
6
7
8
9
10
var
  i:integer;
begin
  foreach c:byte in System.IO.File.ReadAllBytes('hh.exe') do 
   if c in [31..254] then begin
    write(chr(c));
    i+=1;
    if i mod 80=0 then writeln;
  end;
end.
1
0 / 0 / 0
Регистрация: 24.11.2015
Сообщений: 18
27.04.2016, 11:55  [ТС] 6
Как-то выводит просто текст из файла (печатные символы + цифры)
0
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
27.04.2016, 13:10 7
Цитата Сообщение от Jon_ Посмотреть сообщение
Как-то выводит просто текст из файла (печатные символы + цифры)
вообще если текстовый файл - кодировка должна быть 1251. Пример в студию, что не так.
1
0 / 0 / 0
Регистрация: 24.11.2015
Сообщений: 18
04.05.2016, 00:10  [ТС] 8
Пытаюсь действовать вот так, но ничего не выходит
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Var F1:file of byte;
     b:byte;
     s:string;
       c:integer;
Const Name1='E:\LR9-1.txt'; // текст
Begin
Assign (F1,Name1);
Reset(F1);
Writeln('Чтение данных из файла: ');
While not EOF(F1) do begin
begin 
     if c in [31..254] then begin
    write(chr(c));
    c+=1;
    if c mod 80=0 then writeln;
end;
end;
end;
end.
Задание такое:
Кликните здесь для просмотра всего текста
Требуется распечатать исходный файл, а также все результирующие файлы. Составить программу по печати всех символов произвольного файла (не обязательно текстового). При этом не выводить на экран и принтер те символы, коды которых не относятся к печатным символам (коды меньше 31 и больше 254) (это пока вообще никак не получилось, с ребятами выше получилось просто вывести на кэран, но чтобы как в задании не идет(. Распечатывать по 80 символов в строке на экране и принтере.
0
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
04.05.2016, 07:34 9
Jon_, вы даже списать нормально не можете? Вот исправления:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Var F1:file of byte;
     b:byte;
     s:string;
       c:integer;
Const Name1='D:\LR9-1.txt'; // текст
Begin
Assign (F1,Name1);
Reset(F1);
Writeln('Чтение данных из файла: ');
While not EOF(F1) do begin
begin 
     READ(F1,b);
     if b in [31..254] then begin
    write(chr(b));
    c+=1;
    if c mod 80=0 then writeln;
end;
end;
end;
end.
0
04.05.2016, 07:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2016, 07:34
Помогаю со студенческими работами здесь

Ошибка времени выполнения: файл не найден
Где ошибка? путь к файлу проверял раз 20, ошибок в пути нет. uses graphabc,abcobjects; var...

Ошибка времени выполнения: Файл не открыт на запись
Помогите пожалуйста найти ошибку Ошибка времени выполнения: Файл не открыт на запись program...

Ошибка времени выполнения: Файл не найден
Ошибка времени выполнения: Файл 'G:\Проекты\Pascal\input.txt' не найден. Файл там есть, назван так...

Ошибка времени выполнения: Файл не найден
Файл 'E:\file1.txt' не найден program text7; var F1,F2:text; S:string; begin...

Ошибка Файл не может быть открыт ядром базы данных microsoft jet. Файл уже открыт другим пользователем для монопольного доступа или
После написания программы, записал исходник на диск. При запуске экзешника с диска появляется такая...

Ошибка в программе: Ошибка времени выполнения: Среда выполнения Common Language Runtime обнаружила недопустимую программу
Когда пытаюсь вывести данные, выходит ошибка и выделает строку с WriteLn. procedure vivod(var...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru