PDA

Просмотр полной версии : Строковые переменные в массиве структур не работают



Andrew_E
01.09.2023, 06:52
Доброго дня!
Столкнулся с проблемой

В проекте много одинаковых устройств опрашивается по модбас. Для удобства работы создал структуру переменных, в ней содержатся переменные для чтения из устройства и переменные для отображения на экране. Т.К. устройств много и они одинаковые, планирую отображать все через фрейм. Для поочередного отображения переменных каждого устройства во фрейме, создал массив структур. В структуре есть переменная WSTRING - позиция устройства. При отображении все переменные показываются корректно, кроме строковой переменной:

[ERROR] [Device: Plc Logic: Application](ID элемента 6): C0032: Невозможно конвертировать тип 'WSTRING(32)' в тип 'REFERENCE TO WSTRING'

Так выглядит обращение к строковой переменной.

PLC_PRG.astTRM[iIndex].sPointName

Если использовать массив из строковых переменных без структуры, то ошибок нет.

Что сделать чтобы можно было обращаться к строковой переменной внутри массива структур?

Евгений Кислов
01.09.2023, 07:04
Доброго дня!
Столкнулся с проблемой

В проекте много одинаковых устройств опрашивается по модбас. Для удобства работы создал структуру переменных, в ней содержатся переменные для чтения из устройства и переменные для отображения на экране. Т.К. устройств много и они одинаковые, планирую отображать все через фрейм. Для поочередного отображения переменных каждого устройства во фрейме, создал массив структур. В структуре есть переменная WSTRING - позиция устройства. При отображении все переменные показываются корректно, кроме строковой переменной:

[ERROR] [Device: Plc Logic: Application](ID элемента 6): C0032: Невозможно конвертировать тип 'WSTRING(32)' в тип 'REFERENCE TO WSTRING'

Так выглядит обращение к строковой переменной.

PLC_PRG.astTRM[iIndex].sPointName

Если использовать массив из строковых переменных без структуры, то ошибок нет.

Что сделать чтобы можно было обращаться к строковой переменной внутри массива структур?

Добрый день.
Выложите, пожалуйста, проект, в котором я смогу повторить эту ошибку.

Andrew_E
01.09.2023, 07:34
Не смог отправить заархивированный проект, внутри содержимое папки с проектом.

Andrew_E
01.09.2023, 07:37
Надо было подождать...

Евгений Кислов
01.09.2023, 07:42
Замените WSTRING(64) на WSTRING - тогда ошибок не будет.
Похоже на баг компилятора.

Andrew_E
01.09.2023, 08:04
Замените WSTRING(64) на WSTRING - тогда ошибок не будет.
Похоже на баг компилятора.

Спасибо за оперативный ответ, все заработало.