Просмотр полной версии : Адресация элементов массива через ссылки REFERENCE TO Возможно ли такое?
RomeoVar
13.06.2021, 13:34
Имеется некий массив
stServoDrivePrms: ARRAY[0..1] OF DRIVE_PARAMS;
через указатель доступ к элементу массива через SIZEOF(DRIVE_PARAMS)*i // i - индекс массива
А если я хочу через ссылку
refstServoDrivePrms: REFERENCE TO DRIVE_PARAMS;
refstServoDrivePrms REF= stServoDrivePrms[0];
можно ли получить ссылку к следующему элементу массива и как это сделать? В документации об этом вообще ни слова. Я так понимаю механизм не реализован?
Заранее признателен
В документации как раз есть как нельзя объявлять, может это уже раз тот случай55544
RomeoVar
13.06.2021, 17:03
Это я прочитал и так не объявлял. Мне в принципе хотелось бы понять что такое REFERENCE. С указателем все понятно - физический адрес в памяти где хранится переменная (с неким базовым типом) на которую "смотрит" указатель. Соответственно зная структуру переменной, при помощи SIZEOF(BASETYPE) можно задавать смещение, и если это массив, обращаться к его элементам.
А ссылка что за зверь? В отладчике я ничего не вижу - пусто.
(Скрин во вложении)
В документации написано - типа гибко, лучше указателей, а по факту - ВОТ! Я хрен пойму как с ними и работать?
Видимо прийдется возвращаться к старым-добрым указателям
Зинько Владислав
14.06.2021, 08:14
А ссылка что за зверь?
Добрый день.
Ссылка - строго типизированный указатель. Компилятор проверяет соответствие типов при использовании ссылок, при работе с указателями - нет. Т.е. в REFERENCE TO REAL можно отдать переменную только типа REAL.
В отладчике я ничего не вижу - пусто.
На скрине видно, что у Вас ссылка на структуру. Нажмите на "+" и увидите значения, если они туда пришли.
RomeoVar
14.06.2021, 08:41
Вот еще раз проверяю. Смотрите скрин
stDrivePrms; POINTER TO DRIVE_PARAMS;
refstDrivePrms; REFERENCE TO DRIVE_PARAMS;
Переменная-указатель содержит адрес, а разыменованная переменная-указатель содержит значения хранящиеся в памяти, выделенной для этого типа переменной. Поэтому я даже не раскрывая структуру вижу значение области памяти
Переменная-ссылка не содержит ничего, там пусто.
Почему так?
А значения мне не нужны, вопрос по-моему понятен Адресация элементов массива через ссылки REFERENCE TO Возможно ли такое?
Зинько Владислав
14.06.2021, 08:53
А значения мне не нужны, вопрос по-моему понятен Адресация элементов массива через ссылки REFERENCE TO Возможно ли такое?
Если мы говорим о том, чтобы через полученную ссылку получить значение следующего элемента в массиве, то нет.
По ссылке действительно нет явного адреса памяти для его обработки.
RomeoVar
14.06.2021, 09:18
Тогда всек понятно. Это абсолютно бесполезная приблуда. Из преимуществ - Типовая безопасность на уровне компилятора. Но преимущество весьма сомнительное
RomeoVar
08.07.2021, 06:09
Тему закрыл
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot