Советы по Delphi

       

Отображение ломанной линии


Как мне вывести ломанную линию на холсте, если я не знаю размер массива (количество точек) до момента запуска программы??? По-моему, это невозможно. Просветите меня!

Недавно я решал аналогичную проблему при кодировании ReportPrinter и не нашел хорошего решения для создания открытого массива параметров заданного размера. Решение, которое я, наконец, использовал, заключалось в хитрой комбинации функции polyline и polygon с ассемблерным кодом. Я публикую исходный код, поскольку думаю что он будет полезен, пока Borland не создаст стандартные и простые методы для работы с массивами заданного размера.

typePPointArr = ^TPointArr;TPointArr = array[0..16380] of TPoint;
varI1: integer;Elements: word;PointArr: PPointArr;
beginGetMem(PointArr,(Elements + 1) * SizeOf(TPoint));tryFor I1 := 0 to Elements do beginPointArr^[I1].X := ReadNextXValue;PointArr^[I1].Y := ReadNextYValue;end; { for }
{ Вызов Polygon(PointArr^), но только с Elements+1-элеменами в открытом массиве }asmles di,PointArr { Помещаем указатель на PointArr }push espush dipush Elements { Помещаем High(PointArr^) }les di,self { Помещаем указатель self }push espush diles di,es:[di] { Вызов self.Polygon }call Polygonend; { asm }finallyFreeMem(PointArr,(Elements + 1) * SizeOf(TPoint));end; { try }end;

Надеюсь это поможет.

Jim Gunkel
Nevrona Designs [000717]



Содержание раздела