Структуры

GoGo
Сообщения: 91
Зарегистрирован: 13 июн 2013, 16:14

Структуры

Сообщение GoGo »

В объявлении DUT2 можно создать массив из структуры:
Arr : Array [0..100] OF DUT1;
Пробовал объявлять массивы из структур в глобальных переменных - не получается.
Вопрос:
Возможно ли как-то это сделать в объявлении глобальной переменной?
Зачем:
Чтобы уменьшить кол-во вложенных элементов при обращении к структурной переменной массива.

bayk
Сообщения: 887
Зарегистрирован: 30 май 2015, 21:20

Re: Структуры

Сообщение bayk »

попробуйте присвоить каждому символу внутри массива реальные регистры/маркеры, а не "авто".
я только начал осваивать AS300 а уже наткнулся, что многие обычные для DVP функции не работают в "авто" режиме. им обязательно нужно руками присваивать реальные регистры/маркеры, и только тогда начинают работать, а авто присваивание больше не работает, что доставляет нехилые такие неудобства, особенно для локальных переменных.

tvent
Сообщения: 1019
Зарегистрирован: 11 янв 2011, 17:02

Re: Структуры

Сообщение tvent »

Попробовал создать структуры и обратиться к ним
TYPE DUT_0 :
STRUCT
Elem1 : array[0..10] of int;
END_STRUCT
END_TYPE

TYPE DUT_1 :
STRUCT
Elem2 :array [0..7] of DUT_0;
END_STRUCT
END_TYPE
В эмуляторе команды MOV с ними работают.
Кстати, автоматическая адресация под структуры работает.
Если что то не ясно, то для начало нужно почитать/полистать help/manual, раздел 8.2

GoGo
Сообщения: 91
Зарегистрирован: 13 июн 2013, 16:14

Re: Структуры

Сообщение GoGo »

Пролистано и почитано.

При объявлении структуры можно создать массив из структур.
В Global и Local Symbols нет возможности создания массивов из структур.
Почему в Symbols это не доступно? Обязательная опция для работы со структурами.

Например при добавлении этой опции в Symbols код мог бы выглядеть вот так:
(в цикле)
elem.Color:=5;
elem.Value:=234;

а сейчас это выглядит так:
elem.n.Color:=5;
elem.n.Value:=234;

n - лишний элемент в структуре

tvent
Сообщения: 1019
Зарегистрирован: 11 янв 2011, 17:02

Re: Структуры

Сообщение tvent »

GoGo писал(а): В Global и Local Symbols нет возможности создания массивов из структур.
В LD они создаются и работают.
GoGo писал(а): Почему в Symbols это не доступно?
Вы, видимо, имеете ввиду ST (структурный текст). Я с ним не работаю.

GoGo
Сообщения: 91
Зарегистрирован: 13 июн 2013, 16:14

Re: Структуры

Сообщение GoGo »

tvent писал(а): В LD они создаются и работают.
Вы не правы, создаются структуры, а не symbols.

LD и ST - роли не играет, переменные и там и там используются одни и те же .

tvent
Сообщения: 1019
Зарегистрирован: 11 янв 2011, 17:02

Re: Структуры

Сообщение tvent »

GoGo писал(а):
tvent писал(а): В LD они создаются и работают.
Вы не правы, создаются структуры, а не symbols.
Снимок экрана (16).png
Снимок экрана (16).png (33.79 КБ) 1366 просмотров

GoGo
Сообщения: 91
Зарегистрирован: 13 июн 2013, 16:14

Re: Структуры

Сообщение GoGo »

Вижу, что вы создали всего ОДНУ структурную переменную STR1.
Теперь вижу, что в Type нельзя вставить ARRAY и получить вот это: STR[0].el...STR[n].el

tvent
Сообщения: 1019
Зарегистрирован: 11 янв 2011, 17:02

Re: Структуры

Сообщение tvent »

GoGo писал(а): вижу, что в Type нельзя вставить ARRAY и получить вот это: STR[0].el...STR[n].el
Но можно вот это, где EL2 array [0..5] of DUT_0;
Или это, где EL3 array [0..3] of DUT_1
Вложения
Снимок экрана (19).png
Снимок экрана (19).png (63.73 КБ) 1353 просмотра
Снимок экрана (18).png
Снимок экрана (18).png (60.05 КБ) 1353 просмотра

GoGo
Сообщения: 91
Зарегистрирован: 13 июн 2013, 16:14

Re: Структуры

Сообщение GoGo »

Да, к этому уже пришел. Так и делаю.

Ответить