Give the user a hint to download VC redistributable if PostgreSQL dll fails to assign a procedure. See https://www.heidisql.com/forum.php?t=18580#p34297

This commit is contained in:
Ansgar Becker
2019-07-28 08:57:51 +02:00
parent 5baada08f3
commit 7fd551bd72
2 changed files with 20 additions and 4 deletions

View File

@ -2231,13 +2231,27 @@ end;
procedure TPgConnection.DoBeforeConnect;
var
LibraryPath: String;
LibraryPath,
msg: String;
begin
// Init lib before actually connecting.
LibraryPath := ExtractFilePath(ParamStr(0)) + Parameters.LibraryFile;
Log(lcDebug, f_('Loading library file %s ...', [LibraryPath]));
FLib := TPostgreSQLLib.Create(LibraryPath);
Log(lcDebug, FLib.DllFile + ' v' + IntToStr(FLib.PQlibVersion) + ' loaded.');
try
FLib := TPostgreSQLLib.Create(LibraryPath);
Log(lcDebug, FLib.DllFile + ' v' + IntToStr(FLib.PQlibVersion) + ' loaded.');
except
on E:EDbError do begin
msg := E.Message;
if E.ErrorCode = TDbLib.LIB_PROC_ERROR then begin
msg := msg + sLineBreak + sLineBreak +
f_('Installing VC redistributable might help: %s',
['https://support.microsoft.com/en-us/help/3179560/update-for-visual-c-2013-and-visual-c-redistributable-package']
);
end;
raise EDbError.Create(msg, E.ErrorCode);
end;
end;
inherited;
end;

View File

@ -326,6 +326,8 @@ type
// DLL loading
TDbLib = class(TObject)
const
LIB_PROC_ERROR: Cardinal = 1000;
private
FDllFile: String;
FHandle: HMODULE;
@ -7716,7 +7718,7 @@ begin
);
if Windows.GetLastError <> 0 then
msg := msg + CRLF + CRLF + f_('Internal error %d: %s', [Windows.GetLastError, SysErrorMessage(Windows.GetLastError)]);
Raise EDbError.Create(msg);
Raise EDbError.Create(msg, LIB_PROC_ERROR);
end;
end;
end;