Приветствую уважаемых форумчан. Возникла следующая проблемка: добавляю в массив точек соответственно точку:
| Код | //type TWaypoint = array of TPoint; procedure TForm1.AddWaypoint(var wp: TWaypoint; index: integer; pt: TPoint); var Len : integer; begin Len:= Length(wp); if Index >= Len then Index := Len+1; setLength( wp, Len+1); move( wp[Index], wp[ Index+1 ], (Len-Index) * sizeof( wp[Index] )); wp[Index] := pt; end;
|
и затем отрисовываю этот массив на канвасе:
| Код | procedure TForm1.DrawWaypoint(wp: TWaypoint); var TPA: array of TPoint; i: integer; begin for i:=0 to Length(wp)-1 do begin SetLength(TPA,Length(TPA)+1); TPA[i]:=wp[i]; DrawPoint(TPA[i].x,TPA[i].y); end; if Length(TPA) > 2 then PathBuffer.Canvas.Polyline(TPA); TPA:=nil; end;
|
попутно добавляя информацию из массива в TListView:
| Код | procedure TForm1.WaypointToListView(wp: TWaypoint); var li: TListItem; i: integer; begin PointList.Clear; for i:=0 to Length(wp)-1 do begin li:=PointList.Items.Add; li.Caption:=IntToStr(i); li.SubItems.Add(IntToStr(wp[i].x)); li.SubItems.Add(IntToStr(wp[i].y)); end; end;
|
и собственно это даже работает. И все бы было хорошо, если бы не маленький недостаток. В массиве постоянно последним элементом стоит точка 0,0 - и категорически непонятно откуда она там берется. Под отладчиком смотрел - добавляется только одна точка. Как можно отследить эту левую точку? |