IDE: fixed checking if TargetExeDirectory(C:\) exists

git-svn-id: branches/fixes_2_0@61655 -
This commit is contained in:
mattias 2019-08-03 11:21:17 +00:00
parent 36ddc4233b
commit 86219c1ee7
2 changed files with 21 additions and 19 deletions

View File

@ -722,6 +722,7 @@ begin
end; end;
function PathIsInPath(const Path, Directory: string): boolean; function PathIsInPath(const Path, Directory: string): boolean;
// Note: Under Windows this treats C: as C:\
var var
ExpPath: String; ExpPath: String;
ExpDir: String; ExpDir: String;

View File

@ -6791,27 +6791,28 @@ begin
TargetExeName := Project1.CompilerOptions.CreateTargetFilename; TargetExeName := Project1.CompilerOptions.CreateTargetFilename;
TargetExeDirectory:=ChompPathDelim(ExtractFilePath(TargetExeName)); // Note: chomp is needed by FileExistsCached under Windows TargetExeDirectory:=ChompPathDelim(ExtractFilePath(TargetExeName)); // Note: chomp is needed by FileExistsCached under Windows
if FilenameIsAbsolute(TargetExeDirectory) then begin if FilenameIsAbsolute(TargetExeDirectory) then begin
if FileExistsCached(TargetExeDirectory) then begin // Note: FileExists('C:\') = false
if not DirPathExistsCached(TargetExeDirectory) then begin if not DirPathExistsCached(TargetExeDirectory) then begin
if FileExistsCached(TargetExeDirectory) then begin
Result:=IDEQuestionDialog(lisFileFound, Result:=IDEQuestionDialog(lisFileFound,
Format(lisTheTargetDirectoryIsAFile, [sLineBreak Format(lisTheTargetDirectoryIsAFile, [sLineBreak
+TargetExeDirectory]), +TargetExeDirectory]),
mtWarning, [mrCancel,mrIgnore]); mtWarning, [mrCancel,mrIgnore]);
if Result<>mrIgnore then exit(mrCancel); if Result<>mrIgnore then exit(mrCancel);
end; end else begin
end else begin if not PathIsInPath(TargetExeDirectory,WorkingDir)
if not PathIsInPath(TargetExeDirectory,WorkingDir) then begin
then begin Result:=IDEQuestionDialog(lisCreateDirectory,
Result:=IDEQuestionDialog(lisCreateDirectory, Format(lisTheOutputDirectoryIsMissing, [TargetExeDirectory]),
Format(lisTheOutputDirectoryIsMissing, [TargetExeDirectory]), mtConfirmation, [mrYes, lisCreateIt,
mtConfirmation, [mrYes, lisCreateIt, mrCancel]);
mrCancel]); if Result<>mrYes then exit;
if Result<>mrYes then exit; end;
end; Result:=ForceDirectoryInteractive(TargetExeDirectory,[mbRetry]);
Result:=ForceDirectoryInteractive(TargetExeDirectory,[mbRetry]); if Result<>mrOk then begin
if Result<>mrOk then begin debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] ForceDirectoryInteractive "',TargetExeDirectory,'" failed']);
debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] ForceDirectoryInteractive "',TargetExeDirectory,'" failed']); exit;
exit; end;
end; end;
end; end;
end; end;