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;
function PathIsInPath(const Path, Directory: string): boolean;
// Note: Under Windows this treats C: as C:\
var
ExpPath: String;
ExpDir: String;

View File

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