[fpc-pascal] Partially initializing array of records
Martin
fpc at mfriebe.de
Tue Jul 19 20:30:26 CEST 2011
On 19/07/2011 19:05, Clay Stuart wrote:
> How do people initialize large amounts of information in practice? Do
> they just read in files and convert them over dynamically?
There is an example for pre-initialized variable length arrays in
ide\editoroptions.pp line 550 and before.
EditorOptionsFoldDefaults: array[TLazSyntaxHighlighter] of
TEditorOptionsFoldRecord =
( (Count: 0; Info: nil), // none
(Count: 0; Info: nil), // text
(Count: 23; Info: {$IFDEF
FPC}@{$ENDIF}EditorOptionsFoldInfoPas[0]), // Freepas
(Count: 23; Info: {$IFDEF
FPC}@{$ENDIF}EditorOptionsFoldInfoPas[0]), // pas
(Count: 3; Info: {$IFDEF
FPC}@{$ENDIF}EditorOptionsFoldInfoLFM[0]), // lfm
it uses pointers though
TEditorOptionsFoldInfoList = Array [0..999] of TEditorOptionsFoldInfo;
PEditorOptionsFoldInfoList = ^TEditorOptionsFoldInfoList;
TEditorOptionsFoldRecord = record
Count: Integer;
Info: PEditorOptionsFoldInfoList;
end;
The pointer does not care, that it points to an array defined with a
different length....
of course, you must ensure not to access elements outside the
boundaries, as all the nice things like range-checks will no longer work....
Afaik the array declaration isn't even needed, just using pointers would
already do the trick....
More information about the fpc-pascal
mailing list