Я бы ломаную представил в виде массива сегменов, а у сегмента хранить координаты начальной и конечной точек и длину. Потом пройтись в цикле по всей длине.
Код:
type
TSegment = record
PBegin, PEnd: TPoint;
L: LongWord;
end;
TLom = array of TSegment;
var
aLom: TLom;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
for i:= Low(aLom) to High(aLom) do
begin
end;
end;
Хотя длина сегмента L легко вычисляется по точкам конца, но, чтобы каждый раз не вычислять, лучше сделать это один раз при создании ломаной и хранить в записи.