From bd9cc5cbdf04f8c8b7a4da1ab36c7f7e18571dfa Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sun, 8 Mar 2015 14:24:16 +0100 Subject: [PATCH] improved performances when redefining DCD imports --- src/ce_dcd.pas | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/ce_dcd.pas b/src/ce_dcd.pas index 9b4b56f2..cd6dcfe8 100644 --- a/src/ce_dcd.pas +++ b/src/ce_dcd.pas @@ -120,19 +120,30 @@ procedure TCEDcdWrapper.projChanged(aProject: TCEProject); var i: Integer; fold: string; + folds: TStringList; begin if fProj <> aProject then exit; if fProj = nil then exit; // - for i:= 0 to fProj.Sources.Count-1 do - addImportFolder(extractFilePath(fProj.getAbsoluteSourceName(i))); - for i := 0 to fProj.currentConfiguration.pathsOptions.importModulePaths.Count-1 do - begin - fold := fProj.currentConfiguration.pathsOptions.importModulePaths.Strings[i]; - if DirectoryExists(fold) then - addImportFolder(fold); + folds := TStringList.Create; + try + for i:= 0 to fProj.Sources.Count-1 do + begin + fold := extractFilePath(fProj.getAbsoluteSourceName(i)); + if folds.IndexOf(fold) = -1 then + folds.Add(fold); + end; + for i := 0 to fProj.currentConfiguration.pathsOptions.importModulePaths.Count-1 do + begin + fold := fProj.currentConfiguration.pathsOptions.importModulePaths.Strings[i]; + if DirectoryExists(fold) and (folds.IndexOf(fold) = -1) then + folds.Add(fold); + end; + for fold in folds do addImportFolder(fold); + finally + folds.Free; end; end;