anchor.diff:    TargetFile := FIniFile.ReadString(cProjectOptions, 'TargetFile', '');
     DefaultMake := FIniFile.ReadInteger(cProjectOptions, 'DefaultMake', 0);
   
  -  c := FIniFile.ReadInteger(cProjectOptions, 'MakeOptionsCount', 0);
  -  for i := 0 to c-1 do
  -  begin
  -    s := FIniFile.ReadString(cProjectOptions, 'MakeOption' + IntToStr(i+1), '');
  -    if s <> '' then
  -      MakeOptions.Add(s);
  -  end;
  +  // Load make options
  +  LoadList(MakeOptions, 'MakeOptionsCount', 'MakeOption');
   
  -  c := FIniFile.ReadInteger(cProjectOptions, 'MacroCount', 0);
  -  for i := 0 to c-1 do
  -  begin
  -    s := FIniFile.ReadString(cProjectOptions, 'Macro' + IntToStr(i+1), '');
  -    if s <> '' then
  -      MacroNames.Add(s);
  -  end;
  +  // Load Macro definitions
  +  LoadList(MacroNames, 'MacroCount', 'Macro');
  +
  +  // Load Unit search dirs
  +  LoadList(UnitDirs, 'UnitDirsCount', 'unitdir');
   
     Result := True;
   end;
  
positive.code:   private
      FProjectName: TfpgString;
      FMainUnit: TfpgString;
      FUnitList: TUnitList;
      FIniFile: TfpgINIFile;
      FProjectDir: TfpgString;
  
negative.code:   FUnitList := TUnitList.Create;
    FMakeOptions := TStringList.Create;
    FMacroNames := TStringList.Create;
    FUnitDirs := TStringList.Create;
  end;
  
  destructor TProject.Destroy;
  begin
    FUnitDirs.Free;
    FMacroNames.Free;
    FMakeOptions.Free;
    FUnitList.Free;
  