Răsfoiți Sursa

* for RC files set the current directory to the directory of the RC file so that relative paths are resolved correctly

git-svn-id: trunk@46397 -
svenbarth 5 ani în urmă
părinte
comite
f1b9989bdd
1 a modificat fișierele cu 6 adăugiri și 0 ștergeri
  1. 6 0
      utils/fpcres/sourcehandler.pas

+ 6 - 0
utils/fpcres/sourcehandler.pas

@@ -83,7 +83,9 @@ var aReader : TAbstractResourceReader;
     aStream : TClosableFileStream;
     aStream : TClosableFileStream;
     i : integer;
     i : integer;
     tmpres : TResources;
     tmpres : TResources;
+    olddir : String;
 begin
 begin
+  olddir:=GetCurrentDir;
   tmpres:=TResources.Create;
   tmpres:=TResources.Create;
   try
   try
     for i:=0 to fFileList.Count-1 do
     for i:=0 to fFileList.Count-1 do
@@ -110,11 +112,15 @@ begin
         if aReader is TRCResourceReader then begin
         if aReader is TRCResourceReader then begin
           TRCResourceReader(aReader).RCIncludeDirs.Assign(fRCIncludeDirs);
           TRCResourceReader(aReader).RCIncludeDirs.Assign(fRCIncludeDirs);
           TRCResourceReader(aReader).RCDefines.Assign(fRCDefines);
           TRCResourceReader(aReader).RCDefines.Assign(fRCDefines);
+          SetCurrentDir(ExtractFilePath(ExpandFileName(fFileList[i])));
         end;
         end;
         tmpres.LoadFromStream(aStream,aReader);
         tmpres.LoadFromStream(aStream,aReader);
         aResources.MoveFrom(tmpres);
         aResources.MoveFrom(tmpres);
         Messages.DoVerbose('Resource information read');
         Messages.DoVerbose('Resource information read');
       finally
       finally
+        if aReader is TRCResourceReader then begin
+          SetCurrentDir(olddir);
+        end;
         aReader.Free;
         aReader.Free;
       end;
       end;
     end;
     end;