Обработчик нажатия на кнопку «Добавить» приведен ниже.
procedure TForm1.addClick(Sender: TObject);
var
x, y: Integer;
begin
field.add_point_str(point_x.Text, point_y.text);
field.update_list;
end;
Здесь происходит вызов процедуры добавления точки в список (add_point_str) и обновление списка точек.
Листинг метода add_point_str приведен ниже.
procedure tfield.add_point_str(_x, _y: string);
var
x, y: Integer;
begin
if not is_digit(_x) or not is_digit(_y)
then
begin
ShowMessage('Ошибка ввода');
Exit;
end;
x:= StrToInt(_x);
y:= StrToInt(_y);
add_point_int(x, y);
end;
Здесь проверяется корректность введенных данных (строки 5-10), преобразование строковых координат в числовые и добавление в список методом add_point_int.
Поиск квадратов
Для поиска всех квадратов введем метод, определяющий, возможность построения квадрата с вершинами в точках p1, p2, p3, p4.
function tfield.is_bar(p1, p2, p3, p4: tmypoint): Boolean;
var d1, d2, d3, d4: double;
begin
d1:= distance(p1, p2);
d2:= distance(p2, p3);
d3:= distance(p3, p4);
d4:= distance(p4, p1);
Result:= (d1 = d2) and (d2 = d3) and (d3 = d4) and (d4 = d1) and (d1 <> 0);
end;
Решение о возможности построить квадрат с координатами в точках p1, p2, p3, p4 принимается на основе следующего утверждения: расстояние между точками p1 и p2 совпадает с расстояниями между точками p2 и p3, p3 и p4, p4 и p1, и при этом это расстояние не равно 0, то возможно построить квадрат с вершинами в точках p1, p2, p3, p4, в противном случае такое построение невозможно.
Метод distance выглядит следующим образом.
function tfield.distance(p1, p2: tmypoint): Double;
lektsii.net - Лекции.Нет - 2014-2024 год. (0.008 сек.)
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав