Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.01.25;
Скачать: CL | DM;

Вниз

PolyLine   Найти похожие ветки 

 
9899100   (2008-12-10 10:51) [0]

для этой функции качестве аргумента передается массив точек
все замечательно если я знаю сколько точек я передаю
а если это не известно заранее
например можно построить функцию по 3 точкам а можно по 30
как сформировать такой массив точек с неизвестным размером для передачи в качестве параметра функции PolyLine
??


 
Сергей М. ©   (2008-12-10 10:54) [1]

Никак.
Любой массив в каждый момент времени выполнения обязан иметь и имеет конкретный размер.


 
{RASkov} ©   (2008-12-10 10:57) [2]

var arpt: array of TPoint;
....
SetLength(arpt,....);

Ну и [1]. Тут по другому никак.... И это нормально)


 
9899100   (2008-12-10 10:58) [3]


> Сергей М.

а вот и фигушки :)
можно сделать так
Var p:Array of TPoint;
..
Begin
SetLength(p,20);
....
Canvas.PolyLine(p);


 
9899100   (2008-12-10 10:59) [4]


> {RASkov}

ага
гугли рулит :)
черт я и не знал что в дельфи есть такая возможность
все время строил списки
с указателями на следующий элемент
или выделял память и работал с указателями на элементы


 
Правильный$Вася   (2008-12-10 11:02) [5]


> а вот и фигушки :)

и что, разве твой вариант в конкретный момент времени имеет не конкретную длину маасива?


 
9899100   (2008-12-10 11:09) [6]

Удалено модератором
Примечание: Создание пустых сообщений...


 
Сергей М. ©   (2008-12-10 11:54) [7]


> 9899100


Не надо бабушку лохматить)

На момент вызова PolyLine массив имеет строго конкретный размер - 20 элементов.


 
Григорьев Антон ©   (2008-12-10 12:55) [8]

Есть ещё функция Slice - позволяет передать только часть массива. Типа такого:

var arpt:array[0..19] of TPoint;

N := 10;
PolyLine(Slice(arpt, N));


В PolyLine здесь будет передано только 10 первых элементов arpt. Преимущества по сравнению с динамическими массивами - не надо каждый раз перераспределять память, можно выделить её один раз по максимуму и больше не выполнять этих затрантных операций.


 
MBo ©   (2008-12-10 13:19) [9]

кроме того, можно использовать APi-функцию PolyLine, тогда можно линию начинать с любого элемента массива, и указывать нужное количество точек


 
Anatoly Podgoretsky ©   (2008-12-10 14:05) [10]

> Григорьев Антон  (10.12.2008 12:55:08)  [8]

Тоже можно и динамическим массивом, но Slice( создает новый динамический массив.
Если нужна работа с неполными массивами, то прямой путь в АПИ, который и вызывается из VCL



Страницы: 1 вся ветка

Текущий архив: 2009.01.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
1-1206685673
icon 16x16
2008-03-28 09:27
2009.01.25
маленькие иконки


2-1228899008
Нов_и_чок
2008-12-10 11:50
2009.01.25
Некорректное отображение формы на экране!!!


6-1197396798
istok
2007-12-11 21:13
2009.01.25
стабильный и мощный FTP - реально?


2-1229321648
SUN
2008-12-15 09:14
2009.01.25
Действия с датами


3-1213615275
Still Swamp
2008-06-16 15:21
2009.01.25
Не могу отправить параметр из внешней хранимой процедуры.