Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2008, 15:31   #1
dee_lv
Пользователь
 
Регистрация: 25.04.2008
Сообщений: 18
По умолчанию Проблема с динамическим массивом

Обьясните пожалуйста, что не так?
Код:
var
  a: array of integer;
  i: integer;
begin
SetLength(a,n);
  for i:=0 to n do
   begin
    a[i]:=i;
   end;
Finalize(a);
end;
После выполнения процедуры вылетает такая ошибка:
dee_lv вне форума Ответить с цитированием
Старый 09.06.2008, 16:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не так то что ты n нигде не определил, а оно может быть отрицательным случайно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.06.2008, 16:09   #3
dee_lv
Пользователь
 
Регистрация: 25.04.2008
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не так то что ты n нигде не определил, а оно может быть отрицательным случайно.
n определено выше - в код не попало, проглядел.
Даже если руками написать, например, 3, то ошибка всё-равно останется.
dee_lv вне форума Ответить с цитированием
Старый 09.06.2008, 16:22   #4
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Счет начинается с нуля, поэтому n-1 в цикле
Kostia вне форума Ответить с цитированием
Старый 09.06.2008, 16:23   #5
Sunrise
Пользователь
 
Регистрация: 09.06.2008
Сообщений: 20
По умолчанию

Delphi не знаю, но могу предположить, что в цикле нужно проходить от 0 до n - 1. Если идти от 0 до n, то в массиве должно быть (n + 1) элементов.
Sunrise вне форума Ответить с цитированием
Старый 09.06.2008, 16:25   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну в таком случае вот это:
Код:
for i:=0 to n do
Замени на это:
Код:
for i:=low(a) to high(a) do
И в следующий раз будь добр ошибку приводи. Месные телепаты в отпуске.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.06.2008, 16:43   #7
dee_lv
Пользователь
 
Регистрация: 25.04.2008
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
И в следующий раз будь добр ошибку приводи. Месные телепаты в отпуске.
Спасибо за ответ, помогло.
А насчёт ошибки - так она, вообще-то, в самом первом сообщении. (http://ipicture.ru/uploads/080609/sSRyrzmjvI.jpg)
dee_lv вне форума Ответить с цитированием
Старый 09.06.2008, 16:58   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А-а-а пардон. У меня по умолчанию рисунки выключены )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с динамическим массивом sand Общие вопросы C/C++ 3 22.08.2008 12:48
Помогите с динамическим массивом!!!! vish25 Помощь студентам 2 31.05.2008 19:20
Работа с динамическим массивом и его елементами Padovan Паскаль, Turbo Pascal, PascalABC.NET 2 21.05.2008 20:55
проблема с динамическим массивом romeo007.06 Общие вопросы Delphi 1 03.04.2008 20:18
проблема с динамическим массивом kommunist Помощь студентам 6 11.11.2007 21:18