Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.008 c
15-1228074448
this.name
2008-11-30 22:47
2009.01.25
3dsmax: pivot


2-1228831692
ther
2008-12-09 17:08
2009.01.25
редактирование ListView


15-1227946232
Nucer
2008-11-29 11:10
2009.01.25
rouse.drkb.ru


15-1228308085
Карелин Артем
2008-12-03 15:41
2009.01.25
Справочник или база на миллион и более записей в открытом доступе


15-1228112203
Ламо777
2008-12-01 09:16
2009.01.25
Геометрия, помогите освежить...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский