如何在不指定 turbo-pascal 中的最后两次迭代的情况下创建一个每次迭代使用 3 个索引的循环?

How to make a loop that uses 3 of indexes each iteration without specifying last two iterations in turbo-pascal?

我有一个包含 PointType 对象的数组:

    const coords : array[0..6] of PointType = 
        ((x:220, y:410),
         (x:120, y:110),
         (x:480, y: 60),
         (x:320, y:200),
         (x:560, y:190),
         (x:390, y:360),
         (x:600, y:440));

我需要做一个循环来遍历所有这些点,但在每次迭代中使用其中的 3 个点,并且 return 到开头。像这样:

    arrayLength := SizeOf(coords) div SizeOf(PointType);
    for i := 1 to (arrayLength-2) 
    do begin
        WriteLn(someFunction(coords[i-1], coords[i], coords[i+1]));
    end;
        WriteLn(someFunction(coords[arrayLength - 2], coords[arrayLength - 1], coords[0]));
        WriteLn(someFunction(coords[arrayLength - 1], coords[0],               coords[1]));

是否有一种正确的方法可以在一次操作中完成此操作,而不指定最后两次迭代?

这应该可以解决问题:

arrayLength := SizeOf(coords) div SizeOf(PointType);
for i := 0 to (arrayLength-1)
do begin
    WriteLn(someFunction(coords[i],
                         coords[(i+1) mod arrayLength],
                         coords[(i+2) mod arrayLength]));
end;