Форум: "Начинающим";
Текущий архив: 2009.01.25;
Скачать: [xml.tar.bz2];
Вниз
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c