прблема на линиях 44-53.
Как я понимаю, теюе надо сначала проверить ВСЕ отрезки на пересечение, а только потом принять решение о том, добавлять ли новый отрезок в список (массив) или нет. А тут у тебя полный бардак.
Я бы написал как-то так:
Код:
var
b : Boolean;
...
b := false;
for i := Low(arect1) to High(arect1) do
begin
b := CollisionLineFromTRECT(arec1[i], buf_Rect);
if b then break;
end;
if not b then
begin
Inc(k);
SetLength(arec1, k);
arec1[k - 1] := buf_Rect;
end;
Т.е. вводим флаг. Инициализируем его значением false.
Теперь бежим по всем сохраненным отрезкам и проверяем их на пересечение с текущим сгенерированным. Если пересечение есть, то флаг становаится true и мы прерываем цикл проверки.
После проверки, если флаг не поменял своего значения (т.е. он равен false), то добавляем новый отрезок в массив.