С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 15
1

Ошибка при работе программы с текстовым файлом

13.06.2020, 18:08. Показов 678. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Суть программы - Если строка начинается с цифры, то перед ней поставить левую
круглую скобку, а в конец строки - правую круглую скобку
Плюс ещё доп. условия: создание копии обрабатываемого файла путём записи его содержимого в другой файл с
использованием механизма «бестиповых файлов»

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
Program lr5;
uses crt; //подключение графического модуля
procedure input (var s: string; var t: text); //процедура ввода входного текстового файла и проверка на правильный ввод
var
 c: integer;
begin
 write('Enter the file name: ');
 repeat
 readln(s);
 s:=s+'.txt';
 assign(t, s);//связь кода и тестового файла
 {$I-}
 reset(t);//открытие файла
 if c<>0 then //проверка на правильность ввода
 writeln('Error...');
 until c=0;
end;
procedure calc (var t:text; var n:string);//процедура в текстовом файле
begin
  reset(t);
  while not EOF(t) do //считывание до конца файла
begin
 while not EOLn(t) do //считывание до конца линии
 begin
If n[1] in ['0'..'9'] Then
begin
  Insert('(',n,1);
  Insert(')',n,Length(n)+1);
end;
end;
end;
end;
procedure copy (var t:text; var c:text);//процедура копирования входного текстового файла в отдельный
var
 st:char;
begin
 reset(t);
 assign(c,'copy.txt');//связь кода с файлом для копии
 rewrite(c);
 while not eof(t) do
 begin
 while not eoln(t) do
 begin
 read(t,st);
 write(c,st);
 end;
 writeln(c);
 readln(t, st);
 end;
 close(c);
end;
procedure output (var t: text; var tOut: text; n: string);//процедура вывода результатов на экран и в отдельный текстовый файл
begin
 assign(tOut, 'output.txt');
 rewrite(tOut);
 writeln(tOut, 'converted text ', n);
 close(tOut);
 close(t);
 writeln('converted text ', n);
end;
//основная программа
var
 sen: string;
 name: string;
 textIn, textOut,textCopy: text;
begin
 clrscr;//очистка экрана
 Writeln('The program puts the left parenthesis, and at the end of the line - the right parenthesis, if the line starts with a number ');
 input(name, textIn);
 calc(textIn, sen);
 copy(textIn,textCopy);
 output(textIn, textOut, sen);
 readln;
end.
При выполнении программы, после ввода нужного текстового файла вылезает такая ошибка:
Unhandled Exception: System.IndexOutOfRangeException: Индекс находился вне границ массива.
в System.String.get_Chars(Int32 index)
в lr5.lr5.calc(Text& t, String& n) в C:\PABCWork.NET\Program1.pas:строка 25
в lr5.lr5.$Main() в C:\PABCWork.NET\Program1.pas:строка 70
Очевидно, что нужно что-то поменять в процедуре Calc, а что именно, бог его знает, но точно не я.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2020, 18:08
Ответы с готовыми решениями:

Exitcode 104 при работе с текстовым файлом
Выдает exitcode 104 при выполнении. Задание: Написать программу, которая считывает исходный код...

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

Ошибка ввода-вывода 103 при работе с текстовым файлом
При использовании статичного имени внешнего файла, к примеру &quot;test0&quot;, код работает, файл создаётся...

Ошибка "Длина не может быть меньше нуля" при работе с текстовым файлом
string lines = File.ReadAllLines(&quot;Ip_port.txt&quot;); List&lt;string&gt; after = new...

3
Эксперт Pascal/Delphi
6811 / 4568 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
14.06.2020, 19:41 2
Вы не читаете строку из файла. И в 25-й строке пытаетесь обратиться к 1-му символу несуществующей строки.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure calc(var t: text; var n: string);//процедура в текстовом файле
begin
  reset(t);
  while not EOF(t) do //считывание до конца файла
  begin
    readln(t, n);
    if n[1] in ['0'..'9'] Then
    begin
      Insert('(', n, 1);
      Insert(')', n, Length(n) + 1);
    end;
  end;
end;
0
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 15
15.06.2020, 02:05  [ТС] 3
Теперь другая ошибка:
Unhandled Exception: System.OverflowException: Значение было недопустимо малым или недопустимо большим для знака.
в PABCSystem.PABCSystem.Read(Text f, Char& x) в C:\Program Files (x86)\PascalABC.NET\LibSource\PABCSystem.pas:строка 5561
в lr5.lr5.copy(Text& t, Text& c) в C:\PABCWork.NET\lab5\2.pas:строка 46
в lr5.lr5.$Main() в C:\PABCWork.NET\lab5\2.pas:строка 69
0
Эксперт Pascal/Delphi
6811 / 4568 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
15.06.2020, 08:45 4
Вы точное задание приведите.
А то вот это.
Цитата Сообщение от NikitaG_1 Посмотреть сообщение
создание копии обрабатываемого файла путём записи его содержимого в другой файл с
использованием механизма «бестиповых файлов»
Копирование у вас идет с помощью текстовых файлов.

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
75
program lr5;
 
uses crt;//подключение графического модуля
 
procedure input(var s: string; var t: text);//процедура ввода входного текстового файла и проверка на правильный ввод
var
  c: integer;
begin
  write('Enter the file name: ');
  repeat
    readln(s);
    s := s + '.txt';
    assign(t, s);//связь кода и тестового файла
    {$I-}
    reset(t);//открытие файла
    if c <> 0 then //проверка на правильность ввода
      writeln('Error...');
  until c = 0;
end;
 
procedure calc(var t: text; var n: string);//процедура в текстовом файле
begin
  reset(t);
  while not EOF(t) do //считывание до конца файла
  begin
    readln(t, n);
    if n[1] in ['0'..'9'] Then
    begin
      Insert('(', n, 1);
      Insert(')', n, Length(n) + 1);
    end;
  end;
end;
 
procedure copy(var t: text; var c: text);//процедура копирования входного текстового файла в отдельный
var
  st: char;
begin
  reset(t);
  assign(c, 'copy.txt');//связь кода с файлом для копии
  rewrite(c);
  while not eof(t) do
  begin
    read(t, st);
    write(c, st);
  end;
    {writeln(c);
    readln(t, st);}
  close(c);
end;
 
procedure output(var t: text; var tOut: text; n: string);//процедура вывода результатов на экран и в отдельный текстовый файл
begin
  assign(tOut, 'output.txt');
  rewrite(tOut);
  writeln(tOut, 'converted text ', n);
  close(tOut);
  close(t);
  writeln('converted text ', n);
end;
//основная программа
var
  sen: string;
  name: string;
  textIn, textOut, textCopy: text;
 
begin
  clrscr;//очистка экрана
  Writeln('The program puts the left parenthesis, and at the end of the line - the right parenthesis, if the line starts with a number ');
  input(name, textIn);
  calc(textIn, sen);
  copy(textIn, textCopy);
  output(textIn, textOut, sen);
  readln;
end.
1
15.06.2020, 08:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2020, 08:45
Помогаю со студенческими работами здесь

Run-time error 70: permission denied - при работе с текстовым файлом
На одной из пользовательских машин (Windows XP, Office 2003), возникает ошибка 70, код VBA Excel: ...

Программа по работе с текстовым файлом
Очень нужна помощь. Строки текстового файла содержат фамилии студентов в произвольном порядке....

Найти ошибку в работе с текстовым файлом
ПОДСКАЖИТЕ, ПОЖАЛУЙСТА, В ЧЕМ ОШИБКА??? #include &lt;iostream.h&gt; #include &lt;fstream.h&gt; int...

Ошибка при работе с файлом
Пытался разобраться с записью и чтением из файла, посмотрел с десяток тем здесь, но столкнулся со...

Ошибка при работе с файлом
Собственно при обработке процедуры, появляется ошибка: I/O error 103 Отладчик выделяет шестую...

Ошибка при работе с файлом
Суть задачи в том что надо надо с файла(пользователь сам вводит путь к файлу) Надо что бы в файле...


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

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