У меня относительно сложная структура данных для моделирования. Я хотел бы сделать это со структурой записей в Delphi, и структура достаточно сложна, чтобы оправдать разбиение ее на вложенные записи. Упрощенный пример:
type
TVertAngle = record
strict private
fDecDegrees: Double;
fDegrees: integer;
fMinutes: integer;
fDeciSeconds: integer;
function GetAngle: Double;
function GetRadians: Double;
public
Valid: Boolean;
procedure SetAsString(const Value: string; const AngleType: TInfoUnits);
property DecDegrees: Double read GetAngle;
property Radians: Double read GetRadians;
end;
~~~~ other sub record declarations ~~~~~~
TDataRecord = record
strict private
fHorzDistance: Double;
fLeicaData: TRawMessageData;
fUpdateTime: TDateTime;
function DecodeGsi8(GsiWord: string): TGSiWord;
function DecodeGsi16(GsiWord: string): TGSiWord;
public
GsiWord: TGSiWord;
Valid: Boolean;
InputMode: TDataModes;
HorzAngle: THorzAngle;
VertAngle: TVertAngle;
HorzRange: TDistance;
SlopeRange: TDistance;
PrismOffset: TConstants;
~~~~ other sub record instances~~~~~~
function SetMessage(RawMessage: string): Boolean;
~~~~ more stuff ~~~~~~
В настоящее время все это объявлено в разделе «Интерфейс» устройства. Я бы предпочел, чтобы только основная структура записи была видна кому-либо, использующему устройство, и на данный момент все вспомогательные записи также видны. Если я перемещаю объявления записей в раздел Реализация, то я получаю ошибки компилятора. Как мне реструктурировать так, чтобы я объявлял вложенные записи до основной записи, но вложенные записи не были опубликованы?