[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