Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

Добрый день! Из-за проблем с библиотекой 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 в 16:43.
VolodyaBuzin вне форума   Ответить с цитированием
Старый 18.09.2019, 17:00   #2
digitalis
Профессионал
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 1,756
Репутация: 587
По умолчанию

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

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

icq: 512-765
skype: alexp.frl
По умолчанию

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

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


Ну и вообще тут массив не нужен.
*P[100] тут не делает ничего полезного.

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


22:42.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.