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

Получить имя поля с указателем в Group

Добавлено: 30 Ноябрь 2022, 10:11
Игорь Столяров
Привет всем !

Нужно получить имя поля с указателем на список в группе.
Но для этого ведь нужно получить номер поля. Т.е.:

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

MyQueue Queue
FL  Long
  end
  
MyGroup Group
FS  String(20)
Q1  &Queue
  end
  
  Code
  Message( Where(MyGroup, MyGroup.Q1) )  ! Вроде бы очевидное решение -> Ошибка с вылетом.
  
  MyGroup.Q1 &= MyQueue
  Message( Where(MyGroup, MyGroup.Q1) )  ! Мы пойдём другим путём -> Результат = 0. :(
А как тогда узнать номер (и имя) поля в группе ? Спасибо за содействие.

Получить имя поля с указателем в Group

Добавлено: 30 Ноябрь 2022, 10:40
Admin
Может как то с другой стороны подойти... не уверен. :)

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

PROGRAM              
  
  MAP
  END
  
MyGroup  GROUP
F1        LONG          !Field number 1
F2        SHORT         !Field number 2
F3        STRING(30)    !Field number 3
InGroup    GROUP        !Field number 4
F1          LONG        !Field number 5
F2          SHORT       !Field number 6
F3          STRING(30)  !Field number 7
          END
        END

  CODE
  W# = 1
  LOOP                   
    MESSAGE(WHO(MyGroup, W#))
    W# += 1
  WHILE WHO(MyGroup, W#) <> ''

Получить имя поля с указателем в Group

Добавлено: 30 Ноябрь 2022, 22:38
Дед Пахом
Игорь Столяров писал(а): 30 Ноябрь 2022, 10:11 Вроде бы очевидное решение -> Ошибка с вылетом.
Этот бы вопрос да Соловьёву, по мне так реально жёсткий баг. А так всегда было, в C6 например?

Получить имя поля с указателем в Group

Добавлено: 30 Ноябрь 2022, 22:57
Игорь Столяров
Дед Пахом писал(а): 30 Ноябрь 2022, 22:38 А так всегда было, в C6 например
Да, в С63 и есть проблема ... ну ладно, тогда мы пойдём другим путём. :ty:

Получить имя поля с указателем в Group

Добавлено: 02 Декабрь 2022, 9:53
IKSoft
Возможно, Вас так устроит

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

MyQueue Queue
FL  Long
  end
  
MyGroup Group
FS  String(20)
gr         group
pqQueue      &Queue
plQueue      long,over(pqQueue)
           end

  end
  code
  Message( Where(MyGroup, MyGroup.gr.plQueue) )
  
  MyGroup.gr.pqQueue &= MyQueue
  Message( Where(MyGroup, MyGroup.gr.plQueue)&'|'& MyGroup.gr.plQueue)