type PPointArr = ^TPointArr; TPointArr = array[0..16380] of TPoint;
var I1: integer; Elements: word; PointArr: PPointArr;
begin GetMem(PointArr, (Elements + 1) * SizeOf(TPoint)); try for I1 := 0 to Elements do begin PointArr^[I1].X := ReadNextXValue; PointArr^[I1].Y := ReadNextYValue; end; { for }
{ Вызов Polygon(PointArr^), но только с Elements+1-элеменами в открытом массиве } asm les di,PointArr { Помещаем указатель на PointArr } push es push di push Elements { Помещаем High(PointArr^) } les di,self { Помещаем указатель self } push es push di les di,es:[di] { Вызов self.Polygon } call Polygon end; { asm } finally FreeMem(PointArr, (Elements + 1) * SizeOf(TPoint)); end; { try } end;
|