Учитывая массив записей, как я могу получить массив, представляющий поле из каждой?

Мне нужно перевести код Fortran 90, и я обнаружил интересную особенность языка.

Например, они определяют следующий тип и переменную динамического массива -:

TYPE WallInfo
  CHARACTER(len=40) :: Name
  REAL              :: Azimuth
  REAL              :: Tilt
  REAL              :: Area
  REAL              :: Height
END TYPE WallInfo

TYPE(WallInfo), ALLOCATABLE, DIMENSION(:) :: Wall

Позже в коде они вызывают функцию:

CALL HeatFlow(Wall%Area, Wall%Azimuth)

Меня, как программиста Delphi, это немного смутило, потому что Wall — это массив записей!

Из использования в подпрограмме ясно, что Fortran может проецировать поля из массива записей как собственный массив.

SUBROUTINE HeatFlow( Area, Azimuth )
  REAL, INTENT(IN), DIMENSION(:) :: Area
  REAL, INTENT(IN), DIMENSION(:) :: Azimuth

Кто-нибудь знает, есть ли способ сделать это с Delphi (Я использую версию 2010 )?

Я мог бы написать функцию для извлечения значения записи в виде массива, но это немного утомительно, потому что мне придется написать специальную процедуру для каждого поля (, а их довольно много ).

Я надеюсь, что в Delphi 2010 есть какая-то языковая функция, которую я пропустил.

6
задан Rob Kennedy 8 August 2012 в 22:14
поделиться