2014 dxdy logo

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

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




 
 Делфи
Сообщение09.04.2015, 21:38 
Аватара пользователя
Суть программы такова, я на пустой форме кликами по левой кнопке мыши (обработчик нажатия этой кнопки) ставлю точки, точки реализуются командой
Используется синтаксис 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 
У вас длина массивов задаётся выражением
Код:
n+1
. Сама переменная n нигде не увеличивается.

 
 
 
 Re: Делфи
Сообщение09.04.2015, 21:51 
Аватара пользователя
slavav в сообщении #1002094 писал(а):
У вас длина массивов задаётся выражением
Код:
n+1
. Сама переменная n нигде не увеличивается.

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

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group