Главная страница
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.012 c
15-1225352089
stas
2008-10-30 10:34
2009.01.25
Распостранение приложений .NET


15-1227684509
natashap
2008-11-26 10:28
2009.01.25
помогите начинающему разобраться с delphi


15-1228202472
Костик
2008-12-02 10:21
2009.01.25
ООП и паттерны проектирования


1-1206987467
Efir
2008-03-31 22:17
2009.01.25
Открыть несколько выбранных файлов


15-1227981351
Genty
2008-11-29 20:55
2009.01.25
Использование библиотек