powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Pascal Ошибка времени выполнения: Индекс находился вне границ массива.
9 сообщений из 9, страница 1 из 1
Pascal Ошибка времени выполнения: Индекс находился вне границ массива.
    #38459838
Allllllllllex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pascal Ошибка времени выполнения: Индекс находился вне границ массива.
Цикл с предусловием и изменение условия until i>length(s); не помогает, Не подскажете, почему?

Код: 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.
program ;
 
procedure alg(var f1,f2:text);
var sl,s:string; i,k:integer;
begin
readln(f1,s);
i:=0;
writeln(s);
repeat
if (s[i]=' ')
then begin if sl[1]=sl[length(sl)] then write(f2,sl+' ');
sl:='';
end
else sl:=sl+s[i];
i:=i+1
until i>length(s);
writeln (f2);
s:='';
end;
 
Procedure FileToFile (var f1, f2: text);
begin
     reset(f1);
     rewrite(f2);
    while not eof(f1) do
begin
alg (f1,f2);
     end;
     end;
 
var  s,fname1,fname2 :string;
     var f1,f2:text;
begin
writeln ('печать для каждой строки б в результирующий файл слова, начинающиеся и заканчивающиеся одной и той же буквой.');
writeln ('введите имя файла');
readln (fname1);
if FileExists(fname1+'.txt') then begin
   writeln ('Введите имя рeзультирующего файла');
   readln(fname2);
   assign(f1,fname1+'.txt');
   assign(f2,fname2+'.txt');
   FileToFile(f1,f2);
   end;
writeln ('Результат - в результирующий файл');
close(f1);
close(f2);
end.
...
Рейтинг: 0 / 0
Pascal Ошибка времени выполнения: Индекс находился вне границ массива.
    #38459909
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allllllllllex,

1)это в форум по дельфи, наверное
2)вы объявили sl:string
там изначально пустая строка (длины 0)
а вы пытаетесь из пустой строки достать первый символ
то есть из "массива" "нулевой" длины достать "первый" элемент
вроде так
...
Рейтинг: 0 / 0
Pascal Ошибка времени выполнения: Индекс находился вне границ массива.
    #38459914
Фотография акуз-лингвист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allllllllllex
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
var sl,s:string;
...
i:=0;
...
repeat
if (s[i]=' ')
...
until i>length(s);


1. в стринге обращение к нулевому символу - это чтение длины строки.
2.
Allllllllllex
Код: pascal
1.
if sl[1]

а он есть вообще, этот [1]?
...
Рейтинг: 0 / 0
Pascal Ошибка времени выполнения: Индекс находился вне границ массива.
    #38459941
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
акуз-лингвиста он есть вообще, этот [1]?ну, на первом проходе цикла его точно нет :)
...
Рейтинг: 0 / 0
Pascal Ошибка времени выполнения: Индекс находился вне границ массива.
    #38459960
Allllllllllex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исправил for i:=1 вместо 0

for i:=1 to ((length(s))) do
begin
if (s[i]=' ') // Если очередной символ - пробел
then begin if sl[1]=sl[length(sl)] then write(f2,sl+' ');

так теперь тоже для следующей строки пишет: для then begin if sl[1]=sl[length(sl)] then write(f2,sl+' ');
...
Рейтинг: 0 / 0
Pascal Ошибка времени выполнения: Индекс находился вне границ массива.
    #38459977
Фотография акуз-лингвист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allllllllllexтак теперь тоже для следующей строки пишет: для then begin if sl[1]=sl[length(sl)] then write(f2,sl+' '); begin if sl[1]=sl[length(sl)]
заменить на
begin if length(sl)>0 then if sl[1]=sl[length(sl)]
...
Рейтинг: 0 / 0
Pascal Ошибка времени выполнения: Индекс находился вне границ массива.
    #38460467
Allllllllllex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо огромное! После этой замены и замены цикла на цикл с предусловием что-то как-то заработало.
...
Рейтинг: 0 / 0
Pascal Ошибка времени выполнения: Индекс находился вне границ массива.
    #38712711
наталья1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PEX: System.IndexOutOfRangeException: Индекс находился вне границ массива.
в q.a(Byte[] a, Int32 A, Int32 b, Byte[] B, Int32 c)
в N.a(o a)
в l.a(Packet a) ВОТ ТАКАЯ ОШИБКА ВЫЛАЗИТ В ТЕКСТОВОМ ФОРМАТЕ НА РАБОЧИЙ СТОЛ ! ПОДСКАЖИТЕ ПОЖАЛУЙСТА ЧТО ЭТО МОЖЕТ БЫТЬ И ЧТО ЭТО ВООБЩЕ???
...
Рейтинг: 0 / 0
Pascal Ошибка времени выполнения: Индекс находился вне границ массива.
    #38712726
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наталья1982,

Это попытка доступа к элементу массива за его пределами. Может возникать для список (xxxxxxList,строк,массивов)... Погасить/исправить без исходных текстов - только хаком бинарника.

P.S. Чукча не читатель?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Pascal Ошибка времени выполнения: Индекс находился вне границ массива.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]