From 8eeb22720b80858e667d88487db815a8f3d877d6 Mon Sep 17 00:00:00 2001 From: michael Date: Wed, 11 Jul 2012 15:31:09 +0000 Subject: [PATCH] * Added GetLoadErrorStr function by Mark Morgan Loyd (Bug ID 22321) git-svn-id: trunk@21880 - --- rtl/inc/dynlibs.pas | 1 + rtl/netware/dynlibs.inc | 6 ++++++ rtl/netwlibc/dynlibs.inc | 5 +++++ rtl/os2/dynlibs.inc | 5 +++++ rtl/unix/dynlibs.inc | 6 ++++++ rtl/win/dynlibs.inc | 15 +++++++++++++++ rtl/wince/dynlibs.inc | 15 +++++++++++++++ 7 files changed, 53 insertions(+) diff --git a/rtl/inc/dynlibs.pas b/rtl/inc/dynlibs.pas index 71c60b8c1d..e9d368f11b 100644 --- a/rtl/inc/dynlibs.pas +++ b/rtl/inc/dynlibs.pas @@ -37,6 +37,7 @@ Function SafeLoadLibrary(const Name : AnsiString) : TLibHandle; Function LoadLibrary(const Name : AnsiString) : TLibHandle; Function GetProcedureAddress(Lib : TlibHandle; const ProcName : AnsiString) : Pointer; Function UnloadLibrary(Lib : TLibHandle) : Boolean; +Function GetLoadErrorStr: string; // Kylix/Delphi compability diff --git a/rtl/netware/dynlibs.inc b/rtl/netware/dynlibs.inc index fe482557f0..38e52854b2 100644 --- a/rtl/netware/dynlibs.inc +++ b/rtl/netware/dynlibs.inc @@ -56,5 +56,11 @@ begin Result:=false; end; + +Function GetLoadErrorStr: string; + +begin + Result:=''; +end; {$endif} diff --git a/rtl/netwlibc/dynlibs.inc b/rtl/netwlibc/dynlibs.inc index c1aef4c52f..ee36b773cd 100644 --- a/rtl/netwlibc/dynlibs.inc +++ b/rtl/netwlibc/dynlibs.inc @@ -53,5 +53,10 @@ begin Result:=dlClose(Lib)=0; end; +Function GetLoadErrorStr: string; + +begin + Result:=''; +end; {$endif} diff --git a/rtl/os2/dynlibs.inc b/rtl/os2/dynlibs.inc index 2b72c1adee..2a81a75552 100644 --- a/rtl/os2/dynlibs.inc +++ b/rtl/os2/dynlibs.inc @@ -59,5 +59,10 @@ begin Result := DosFreeModule (Lib) = 0; end; +Function GetLoadErrorStr: string; + +begin + Result:=''; +end; {$endif} diff --git a/rtl/unix/dynlibs.inc b/rtl/unix/dynlibs.inc index 1162a97702..4b39af3e49 100644 --- a/rtl/unix/dynlibs.inc +++ b/rtl/unix/dynlibs.inc @@ -75,5 +75,11 @@ begin Result:=dlClose(Lib)=0; end; +Function GetLoadErrorStr: string; + +begin + Result:=dl.dlerror; +end; + {$endif} diff --git a/rtl/win/dynlibs.inc b/rtl/win/dynlibs.inc index cd28f1a46e..482bcd5690 100644 --- a/rtl/win/dynlibs.inc +++ b/rtl/win/dynlibs.inc @@ -54,5 +54,20 @@ begin Result:=Windows.FreeLibrary(Lib); end; +Function GetLoadErrorStr: string; + +Var + rc : integer; +begin + rc := GetLastError; + try + result := Trim(SysErrorMessage(rc)); + if (result='') then + result := 'Operating system error 0x' + IntToHex(rc, 8) + ' (no descriptive text)' + except + result := 'Operating system error 0x' + IntToHex(rc, 8) + ' (error getting descriptive text)' + end; +end; + {$endif} diff --git a/rtl/wince/dynlibs.inc b/rtl/wince/dynlibs.inc index 429b207a25..6d07d4ca12 100644 --- a/rtl/wince/dynlibs.inc +++ b/rtl/wince/dynlibs.inc @@ -59,4 +59,19 @@ begin Result:=Windows.FreeLibrary(Lib); end; +Function GetLoadErrorStr: string; + +Var + rc : integer; +begin + rc := GetLastError; + try + result := Trim(SysErrorMessage(rc)); + if (result='') then + result := 'Operating system error 0x' + IntToHex(rc, 8) + ' (no descriptive text)' + except + result := 'Operating system error 0x' + IntToHex(rc, 8) + ' (error getting descriptive text)' + end; +end; + {$endif}