Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Почему Polyline() не работает с массивами


Автор: Coder 16.10.2007, 02:00
точки хранятся в массиве типа array of TPoint - это достаточно удобно в моей программе. По этим точкам нужно построить полилинию, пишу код:
Код

Polyline(DC,a,high(a));

и ничего.. 
если объявить массив статически array[1..10] of TPoint все строится без проблем. в чем здесь дело?

Автор: MetalFan 16.10.2007, 09:18
Код

Polyline(DC,a[0],high(a));

Автор: Coder 16.10.2007, 10:40
MetalFan, +1
а на что тогда указывает сам массив a?

Автор: Alexeis 16.10.2007, 13:43
Цитата(Coder @  16.10.2007,  10:40 Найти цитируемый пост)
а на что тогда указывает сам массив a? 

   переменная а хранит в себе указатель на массив в куче. 

function Polyline(DC: HDC; var Points; Count: Integer): BOOL;

Var передаст по ссылке саму переменную (т.е. переменную указателя), а нужно по ссылке передать сам массив данных.

Автор: MetalFan 16.10.2007, 13:51
по сути переменная-дин.массив сама по себе является указателем на 0 элемент массива. 
т.е. вероятно прокатит два подхода:
1.
Polyline(DC,a[0],high(a));
2.
Polyline(DC,Pointer(a)^,high(a));

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)