Страница 1 из 1

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

Добавлено: 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
И чего-то мыслей нет и нет идей по этому поводу. :(
Буду благодарен за подсказку … :)

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

Добавлено: 13 Июнь 2019, 7:47
finsoftrz
Привет.

Для строковых len(Loc:Field).

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

Добавлено: 13 Июнь 2019, 8:09
finsoftrz
Или так:
size(MyGroup.Field3)

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

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

Добавлено: 13 Июнь 2019, 8:17
finsoftrz
Вот так работает:

Message(size(what(MyGroup,2)))

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

Добавлено: 13 Июнь 2019, 8:25
finsoftrz
Недавно класс для работы с btrieve api делал, там как раз этот нюанс всплывал. Не сразу вспомнил. Как в том анекдоте, когда мужчине за 70 лет, что-то когда-то хотел, но не помню уже, что...

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

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

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

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

Добавлено: 13 Июнь 2019, 9:13
finsoftrz
Я же написал:

Message(size(what(MyGroup,2)))

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

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