Размер поля в структуре ?

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4004
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Размер поля в структуре ?

Сообщение Игорь Столяров » 13 Июнь 2019, 6:57

Привет всем ! :)

Можно ли как-то отжать размер поля в структуре GROUP / QUEUE ? Т.е.:

Код: Выделить всё

MyGroup  Group
Field2 String(20)
Field3 String(40)
         end            
Loc:Field  ANY 

  Code  
  Loc:Field &= What(MyGroup,2)  ! Берём второе поле в группе
  
  If IsString(Loc:Field)  ! Можем узнать, что поле является строкой                                
     Message(Size(Loc:Field))  ! А какой у него размер-то ?!
     Message(HowMany(MyGroup,Loc:Field))
  end
И чего-то мыслей нет и нет идей по этому поводу. :(
Буду благодарен за подсказку … :)
«V» значит Вендетта !

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 1182
Зарегистрирован: 06 Ноябрь 2014, 12:48

Размер поля в структуре ?

Сообщение finsoftrz » 13 Июнь 2019, 7:47

Привет.

Для строковых len(Loc:Field).
Рязань решает.

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 1182
Зарегистрирован: 06 Ноябрь 2014, 12:48

Размер поля в структуре ?

Сообщение finsoftrz » 13 Июнь 2019, 8:09

Или так:
size(MyGroup.Field3)

Size(Loc:Field) в примере выдает размер адреса ссылки, то есть 4.
Рязань решает.

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 1182
Зарегистрирован: 06 Ноябрь 2014, 12:48

Размер поля в структуре ?

Сообщение finsoftrz » 13 Июнь 2019, 8:17

Вот так работает:

Message(size(what(MyGroup,2)))
Рязань решает.

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 1182
Зарегистрирован: 06 Ноябрь 2014, 12:48

Размер поля в структуре ?

Сообщение finsoftrz » 13 Июнь 2019, 8:25

Недавно класс для работы с btrieve api делал, там как раз этот нюанс всплывал. Не сразу вспомнил. Как в том анекдоте, когда мужчине за 70 лет, что-то когда-то хотел, но не помню уже, что...
Рязань решает.

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4004
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Размер поля в структуре ?

Сообщение Игорь Столяров » 13 Июнь 2019, 9:05

Спасибо ! Методом тыка из всех перечисленных вариантов работает только: Len(Loc:Field).
И только для полей с типом данных STRING (но не CSTRING) - но и это уже хорошо ! :)

Да, Loc:Field содержит указатель на поле структуры.
Но как по нему заюзать параметры поля, на которое он ссылается непонятно.
«V» значит Вендетта !

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 1182
Зарегистрирован: 06 Ноябрь 2014, 12:48

Размер поля в структуре ?

Сообщение finsoftrz » 13 Июнь 2019, 9:13

Я же написал:

Message(size(what(MyGroup,2)))
Рязань решает.

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4004
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Размер поля в структуре ?

Сообщение Игорь Столяров » 13 Июнь 2019, 9:20

finsoftrz писал(а):
13 Июнь 2019, 9:13
Message(size(what(MyGroup,2)))
Проверил ещё раз, действительно работает. Тогда вопрос закрыт - спасибо ! :)
«V» значит Вендетта !

Ответить