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

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

08.07.2015, 17:00. Показов 12839. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста, программа выдает ошибку: Ошибка времени выполнения: файл не открыт
Задание привожу ниже.
Задание: Дан текстовый файл. Создать символьный файл, содержащий все символы, встретившиеся в тексте, включая пробел и знаки препинания (без повторений). Символы располагать в порядке [возрастания их кодов]1|[убывания их кодов]2|[их первого появления в тексте]3.
Подскажите, как создать символьный файл в Pascal?
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
26
27
28
29
var
  m:set of char;{символьный файл}
  f1: text;
  s: string;
  i: integer;
   begin
     assign   (f1, 'file1.txt'); {связать с файлом file1.txt  файловую переменную f1  }  
     reset(f1); { открыть файл для чтения }
     while not eof (f1) do { пока не конец файла  f1}
       begin
        readln (f1, s);    {читаем строку из файла f1}
          begin 
            m:=[];            
            i:=1;
              repeat                                 
                if s[i] in m then delete(s,1,1)                   
                else
                  begin
                    include(m,s[i]);
                    inc(i);
                    delete(s,1,1);
                  end
              until
               i>length(s);
          end;
      close (f1); {закрыть файл  для чтения}
      writeln('m'    ,m);
      end;
   end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2015, 17:00
Ответы с готовыми решениями:

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

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

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

Ошибка времени выполнения: "Файл не открыт"
Задание: Требуется распечатать исходный файл, а также все результирующие файлы. Составить...

19
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.07.2015, 17:08 2
Pascal
1
m:file of char;{символьный файл}
Добавлено через 1 минуту
и не include(m,s[i]);, а
Pascal
1
write(m,s[i]);
Добавлено через 51 секунду
Ну ведь море тем на форуме с типизированными файлами, посмотрите.
1
0 / 0 / 1
Регистрация: 11.05.2014
Сообщений: 36
08.07.2015, 17:27  [ТС] 3
Puporev, скажите, пожалуйста, а я смогу потом создать новый символьный файл, в котором символы будут упорядочены по возрастанию\убыванию кодов?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.07.2015, 17:28 4
Конечно, типизированный файл можно сортировать.
0
0 / 0 / 1
Регистрация: 11.05.2014
Сообщений: 36
08.07.2015, 17:33  [ТС] 5
Puporev,И проблему с открытием файла не удается исправить:
Ошибка времени выполнения: файл не открыт

Честно сказать, озадачен
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.07.2015, 17:47 6
А текстовый файл создан и лежит в папке с программой и называется file1?
0
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
08.07.2015, 17:50 7
у меня работает код выше
0
0 / 0 / 1
Регистрация: 11.05.2014
Сообщений: 36
08.07.2015, 18:07  [ТС] 8
Puporev, да

Добавлено через 44 секунды
Nekromail2011, скажите, пожалуйста, какая у Вас ОС и паскаль (ABC.NET?)
0
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
08.07.2015, 20:36 9
хп, net 4.0, версия паскаля 2.2, сборка 967 от 27.06.2015

Добавлено через 1 минуту
попробуйте в онлайн WDE собрать
1
0 / 0 / 1
Регистрация: 11.05.2014
Сообщений: 36
08.07.2015, 21:06  [ТС] 10
Nekromail2011, но ведь там будет отсутсвовать этот текстовый файл!
0
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
09.07.2015, 08:49 11
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

а вы зарегестрируйтесь

Добавлено через 21 минуту
я понял все.
у вас close в цикле

и потом проверяется условие if not eoln

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
26
27
28
29
var
  m: set of char := [];
  f1: text;
  s: string;
  i: integer;
 
begin
  assign(f1, 'file1.txt'); {связать с файлом file1.txt  файловую переменную f1  }  
  reset(f1); { открыть файл для чтения }
  while not eof(f1) do { пока не конец файла  f1}
  begin
    readln(f1, s);    {читаем строку из файла f1}
    m := ['a', 'c'];            
    i := 1;
    repeat                                 
      if s[i] in m then delete(s, 1, i)                   
        else
      begin
        write(s[i]);
        inc(i);
        delete(s, 1, i);
      end
    until
    i > length(s);
  end;
  close(f1); {закрыть файл  для чтения}
  WriteLn();
  writeln('m', m);
end.
Добавлено через 42 секунды
как я понял, этот код должен удалить все символы в файле f принадлежащие множеству m
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
09.07.2015, 11:31 12
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Alex TuTu, все гораздо проще:
Pascal
1
2
3
4
5
6
7
{$reference System.Core.dll}
uses System.Linq, System.IO;
begin
  var s : string := &File.ReadAllText('d:\test\01.txt');
  s := new string(s.ToCharArray().Distinct().ToArray());
  writeln(s); // вот тебе все символы, которые присутствуют в исходном файле, по одному разу. Делай с ними что хочешь
end.
Коли уж пользуешься PABC.NET, так решай задачу с использованием его возможностей, а не дедовскими Турбо-Паскалевскими методами.
1
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
09.07.2015, 12:11 13
А если не знает .NET?)

или задание такое?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
09.07.2015, 12:26 14
Не знает - надо учиться. А если задание такое - это неправильный выбор компилятора. Они б еще с открытыми массивами или с вариантными записями задания давали для PABC.NET.
0
0 / 0 / 1
Регистрация: 11.05.2014
Сообщений: 36
09.07.2015, 14:59  [ТС] 15
volvo, я действительно не знаю .NET Не могли бы Вы помочь мне решить "дедовскими Турбо-Паскалевскими методоми" ?
0
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
09.07.2015, 15:47 16
Лучший ответ Сообщение было отмечено Alex TuTu как решение

Решение

попробуйте этот код

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
var
  m: set of char := [];
  f1: text;
  s: string;
 
begin
  assign(f1, 'file1.txt'); {связать с файлом file1.txt  файловую переменную f1  }  
  reset(f1); { открыть файл для чтения }
  while not eof(f1) do { пока не конец файла  f1}
  begin
    readln(f1, s);    {читаем строку из файла f1}
    m := [];            
    for var i := 1 to s.Length do                            
      if s[i] in m then continue                  
        else
      begin
        write(s[i]);
        include(m, s[i]);
      end
  end;
  close(f1); {закрыть файл  для чтения}
  WriteLn();
  writeln('m', m);
end.
1
0 / 0 / 1
Регистрация: 11.05.2014
Сообщений: 36
11.07.2015, 11:25  [ТС] 17
Nekromail2011, Спасибо, работает!
Еще один маленький вопрос: в Паскале символьный файл имеет формат тот же, что и текстовый?
Вот так:
Pascal
1
2
3
var 
p: file of char;
assign(p,'simvol.txt');
И все операции (записи, чтения и т.п.) будут такие же, как для текстовых файлов?
0
0 / 0 / 1
Регистрация: 11.05.2014
Сообщений: 36
12.07.2015, 13:58  [ТС] 18
Продолжение темы:
Расположить символы в порядке убывания их кодов
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.07.2015, 14:10 19
Alex TuTu, Просто почитайте про типизированные файлы.
1
0 / 0 / 1
Регистрация: 11.05.2014
Сообщений: 36
12.07.2015, 15:00  [ТС] 20
ОТВЕТ:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
var
  m: set of char;
  f1: text;
  s: string;
  c: char;
  p,q,r: file of char;
  i,j:integer;
BEGIN
  assign(f1, 'file1.txt');     {связать с файлом file1.txt  файловую переменную f1}
  assign(p, 'file2');          {связать с файлом file2  файловую переменную p}
  reset(f1);                   {открыть файл для чтения }
  rewrite(p);                  {открыть для записи}
  m := [];                     {инциализация множества}
  while not eof(f1) do         {пока не конец файла  f1}
   begin
    readln(f1, s);             {читаем строку из файла f1}
    for i := 1 to s.Length do  {добавляем в множество символы, встретившиеся в файле}                          
    if s[i] in m then continue                  
    else
      begin
        write(p,s[i]);         {запись символа в файл}
        include(m, s[i]);      {добавление файла в множество} 
      end
   end;
  close(f1);                   {закрыть файл  для чтения}
  reset(p);                    {открыть для чтения символьный файл}
  writeln('Символы из файла, отсортированные в порядке их появления в тексте: ');
  while not eof(p)do           {вывод содержания символьного файла на экран}
   begin
    read(p,c);
    write(c);
   end;
  close(p);                    {закрыть файл}
  s:='';                       {инициализация строки}
  reset(p);                    {открыть символьный файл для чтения}
  while not eof(p)do           {запись символов из файла в строку}
   begin
     read(p,c);
     s:=s+c;
   end;
   begin
     writeln(' ');             {сортировка символов по возрастанию кодов}
     writeln('Сортировка по возрастанию кодов:');
       for i:=1 to length(s) do
       for j:=1 to length(s)-1 do
       if s[j]>s[j+1] then
         begin
             c:=s[j];
             s[j]:=s[j+1];
             s[j+1]:=c;
         end;
   writeln(s);                 {вывод результата на экран}
   assign(q, 'file3');         {связать с файлом file3 файловую переменную q}
   rewrite(q);                 {открыть файл для записи}
   for i:=1 to length(s)do     {запись отсортированных символов строки в файл}
   write(q,s[i]);
  end;
  begin                         {сортировка символов по убыванию кодов}
    writeln('Сортировка по убыванию кодов: '); 
     for i:=1 to length(s) do
     for j:=1 to length(s)-1 do
     if s[j]<s[j+1] then
       begin
         c:=s[j];
         s[j]:=s[j+1];
         s[j+1]:=c;
       end;
    writeln(s);                 {вывод результата на экран}                
    assign(r, 'file4');         {связать файл file4 и файловую переменную r}
    rewrite(r);                 {открыть файл для записи}
    for i:=1 to length(s)do     {запись отсортированных символов в файл}
    write(r,s[i]);              
 end;
END.
0
12.07.2015, 15:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2015, 15:00
Помогаю со студенческими работами здесь

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

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

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

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

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

Ошибка,файл не открыт для ввода
var min,ch,code,res,i,i1,i2,max,ch1:integer; begin max:=0; i:=0; min:=0; ch1:=30001;...


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

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