anchor.diff:    FIniFile.WriteString(cProjectOptions, 'TargetFile', TargetFile);
     FIniFile.WriteInteger(cProjectOptions, 'DefaultMake', DefaultMake);
   
  -  FIniFile.WriteInteger(cProjectOptions, 'MakeOptionsCount', MakeOptions.Count);
  -  for i := 0 to MakeOptions.Count-1 do
  -    FIniFile.WriteString(cProjectOptions, 'MakeOption' + IntToStr(i+1), MakeOptions[i]);
  +  // various make options
  +  SaveList(MakeOptions, 'MakeOptionsCount', 'MakeOption');
   
  -  FIniFile.WriteInteger(cProjectOptions, 'MacroCount', MacroNames.Count);
  -  for i := 0 to MacroNames.Count-1 do
  -    FIniFile.WriteString(cProjectOptions, 'Macro' + IntToStr(i+1), MacroNames[i]);
  +  // macros definitions
  +  SaveList(MacroNames, 'MacroCount', 'Macro');
  +
  +  // unit search directories
  +  SaveList(UnitDirs, 'UnitDirsCount', 'UnitDir');
   
     Result := True;
   end;
   
   function TProject.Load(AProjectFile: TfpgString): Boolean;
   var
  -  i: integer;
  -  c: integer;
     s: TfpgString;
  +
  +  // CName = xxxCount & IName is the Item name
  +  procedure LoadList(AList: TStringList; const CName, IName: TfpgString);
  +  var
  +    c: integer;
  +    i: integer;
  +  begin
  +    c := FIniFile.ReadInteger(cProjectOptions, CName, 0);
  +    for i := 0 to c-1 do
  +    begin
  +      s := FIniFile.ReadString(cProjectOptions, IName + IntToStr(i+1), '');
  +      if s <> '' then
  +        AList.Add(s);
  +    end;
  +  end;
  +
   begin
     Result := False;
     if AProjectFile = '' then
  
positive.code: end;
  
  function TProject.Save: Boolean;
  var
    i: integer;
  begin
    Result := False;
    if ProjectName = '' then
  
negative.code:   TargetFile := FIniFile.ReadString(cProjectOptions, 'TargetFile', '');
    DefaultMake := FIniFile.ReadInteger(cProjectOptions, 'DefaultMake', 0);
  
    // Load make options
    LoadList(MakeOptions, 'MakeOptionsCount', 'MakeOption');
  
    // Load Macro definitions
    LoadList(MacroNames, 'MacroCount', 'Macro');
  
    // Load Unit search dirs
    LoadList(UnitDirs, 'UnitDirsCount', 'unitdir');
  
    Result := True;
  end;
  