Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2019, 15:22   #1
VolodyaBuzin
Пользователь
 
Регистрация: 10.11.2017
Сообщений: 56
По умолчанию Указатель на массив, его разыменование и обращение к элементам массива: создание точек по нажатии на кнопку

Добрый день! Из-за проблем с библиотекой OpenGLAdapter.hpp мне пришлось переучиваться с C++ на Delphi. В одной из лабораторок мне попался обработчик события по нажатии на кнопку, создающий точки внутри DummyCube:


Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        TGLPoints *P[100];
        for(int i=0;i<100;i++)
        {
          P[i]=new TGLPoints(GLDummyCube1);
          P[i]->Colors->Add(((float)(rand()%256))/256.0,
                                           ((float)(rand()%256))/256.0,
                                           ((float)(rand()%256))/256.0,0.5);
          P[i]->Size=5;
          P[i]->Position->X=1.0*rand()/RAND_MAX-0.5;
          P[i]->Position->Y=1.0*rand()/RAND_MAX-0.5;
          P[i]->Position->Z=1.0*rand()/RAND_MAX-0.5;
        }
}
Первым пришёл вариант прописать в секции var


Код:
var P: ^array [0..99] of TGLPoints;

Но я не знаю, с какого числа обычно начинается нумерация массивов и циклов в Delphi, и как обращаться к элементам массива. Я читал, что если обращаться напрямую (P[i]), всегда будет изменяться только первый элемент. Как тогда прописывать его адрес? Вторым вариантом было


Код:
var
a: array [0..99] of TGLPoints;
P: ^a;
Но тогда что надо ставить над a - "крышу" или "собачку"? К какому массиву теперь обращаться - к P или a? Указывать номер или адрес элемента массива в цикле?
______________________
Используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Alex11223; 18.09.2019 в 15:43.
VolodyaBuzin вне форума Ответить с цитированием
Старый 18.09.2019, 16:00   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Цитата:
Сообщение от VolodyaBuzin Посмотреть сообщение
Первым пришёл вариант прописать в секции var

Код:
var P: ^array [0..99] of TGLPoints;
Но я не знаю, с какого числа обычно начинается нумерация массивов и циклов в Delphi, и как обращаться к элементам массива. Я читал, что если обращаться напрямую (P[i]), всегда будет изменяться только первый элемент.
Где можно прочитать было такой бред сивой кобылы?! Массивы в Дельфи еще гибче, чем в Си, можно не только [0..9], но и [5..15] и даже [-5..10], потому без крайней надобности с указателями можно пока не заморачиваться.
digitalis вне форума Ответить с цитированием
Старый 18.09.2019, 18:54   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
потому без крайней надобности с указателями можно пока не заморачиваться
просто все объекты и есть указатели/ссылки.
Их же можно только через .Create создать (и потом через .Free освобождать память).
В С++ еще можно на стеке без new/delete и тогда всё само удалится при выходе из блока. (хотя для VCL объектов вроде нельзя, ну и тут бессмысленно)

Но да, ^ тут не нужно.


Ну и вообще тут массив не нужен.
*P[100] тут не делает ничего полезного.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 18.09.2019 в 19:15.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение к элементам массива через указатель Miha85193 Общие вопросы Delphi 21 19.07.2010 18:43
обращение к элементам массива в С++ с помощью указателей серг Помощь студентам 0 05.12.2009 22:58
обращение к элементам двумерного массива на С++ серг Помощь студентам 16 05.12.2009 21:01
Обращение к элементам массива через указатель в С++ серг Помощь студентам 1 24.11.2009 01:30