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

Clarion, Clarion 7

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

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

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

Сообщение Игорь Столяров »

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

Можно ли как-то отжать размер поля в структуре 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
И чего-то мыслей нет и нет идей по этому поводу. :(
Буду благодарен за подсказку … :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

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

Сообщение finsoftrz »

Привет.

Для строковых len(Loc:Field).
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

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

Сообщение finsoftrz »

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

Size(Loc:Field) в примере выдает размер адреса ссылки, то есть 4.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

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

Сообщение finsoftrz »

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

Message(size(what(MyGroup,2)))
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

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

Сообщение finsoftrz »

Недавно класс для работы с btrieve api делал, там как раз этот нюанс всплывал. Не сразу вспомнил. Как в том анекдоте, когда мужчине за 70 лет, что-то когда-то хотел, но не помню уже, что...
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

Сообщение Игорь Столяров »

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

Да, Loc:Field содержит указатель на поле структуры.
Но как по нему заюзать параметры поля, на которое он ссылается непонятно.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

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

Сообщение finsoftrz »

Я же написал:

Message(size(what(MyGroup,2)))
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

Сообщение Игорь Столяров »

finsoftrz писал(а): 13 Июнь 2019, 9:13Message(size(what(MyGroup,2)))
Проверил ещё раз, действительно работает. Тогда вопрос закрыт - спасибо ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить