Главная страница
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.035 c
15-1227628921
Kerk
2008-11-25 19:02
2009.01.25
4:3 , 16:9 и другие


15-1226736374
Cyrax
2008-11-15 11:06
2009.01.25
Что такое "лит. А" ? Какая-то новая категория ?


8-1189679198
master_asasin
2007-09-13 14:26
2009.01.25
Форма окна по картинке


1-1207494731
Jolik
2008-04-06 19:12
2009.01.25
Как узнать тип типа класса...


2-1229358627
Laner6666
2008-12-15 19:30
2009.01.25
Поля MS Word