2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Делфи
Сообщение09.04.2015, 21:38 
Аватара пользователя


27/03/14
1091
Суть программы такова, я на пустой форме кликами по левой кнопке мыши (обработчик нажатия этой кнопки) ставлю точки, точки реализуются командой
Используется синтаксис Pascal
Canvas.TextOut(X,Y,IntToStr(i+1)+'('+IntToStr(X)+','+IntToStr(Y)+')');

Отображается номер точки, а в скобочках- её координаты. Нужно вычислить расстояние от каждой точки, до первой.
Прежде всего нужно координаты каждой точки записать в массив (тут и проблема). Вот, как я делал: я задал два динамических массива b и c, длину массива задал в процедуре TForm1.FormCreate(Sender: TObject). А сам обработчик нажатия левой кнопки мыши выглядит так:
Используется синтаксис Pascal
              Canvas.TextOut(X,Y,IntToStr(i+1)+'('+IntToStr(X)+','+IntToStr(Y)+')'); //ставим точки
              b[i]:=X; //пишем их в массивы
              c[i]:=Y;
              i:=i+1; //шаг изменения индекса задаем
              SetLength(b,n+1); //увеличиваем длину массива
              SetLength(c,n+1);

Начальное значение индекса i я так же задал глобально в процедуре TForm1.FormCreate(Sender: TObject)
Проблема вот в чем: после того, как я ставлю некоторое количество точек, при попытке поставить четвертую программа вылетает с ошибкой "Invalid pointer operation". Эта ошибка возникает не после определенного количества поставленных точек, а непонятно, почему. Но проблема именно с массивом, только я не понимаю, какая.

 Профиль  
                  
 
 Re: Делфи
Сообщение09.04.2015, 21:47 
Заслуженный участник


26/05/14
981
У вас длина массивов задаётся выражением
Код:
n+1
. Сама переменная n нигде не увеличивается.

 Профиль  
                  
 
 Re: Делфи
Сообщение09.04.2015, 21:51 
Аватара пользователя


27/03/14
1091
slavav в сообщении #1002094 писал(а):
У вас длина массивов задаётся выражением
Код:
n+1
. Сама переменная n нигде не увеличивается.

спасибо большое! :D Я забыл, что работаю с "не совсем циклом"

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group