Мне нужно перевести код 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 есть какая-то языковая функция, которую я пропустил.