diff options
author | svenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2020-11-26 20:51:29 +0000 |
---|---|---|
committer | svenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2020-11-26 20:51:29 +0000 |
commit | 94018c7d94d0c37104ab12d93a6c266f4f8d0794 (patch) | |
tree | a00ab98f5814c44b23e41195c334fd0875814d93 | |
parent | a8d5865ab6854e82322bfc947f24a334d75ff5ef (diff) | |
download | fpc-94018c7d94d0c37104ab12d93a6c266f4f8d0794.tar.gz |
Merged revision(s) 45479, 45489 from trunk:
+ add additional overloads for FindResource and FindResourceEx so that mixtures of AnsiString and MAKEINTRESOURCE types as well as names can be used
+ added test for ReadComponentRes (which called the wrong FindResource before)
........
* disable the new FindResource(Ex) overloads for Win16 for now (the one with PChar is disabled as well); this will need to be revisited once Win16 receives proper resource support
........
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/fixes_3_2@47603 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | rtl/inc/resh.inc | 6 | ||||
-rw-r--r-- | rtl/inc/sysres.inc | 26 | ||||
-rw-r--r-- | tests/test/units/system/tres6.lfm | 3 | ||||
-rw-r--r-- | tests/test/units/system/tres6.pp | 38 |
4 files changed, 73 insertions, 0 deletions
diff --git a/rtl/inc/resh.inc b/rtl/inc/resh.inc index 2db404a46d..372b47a4de 100644 --- a/rtl/inc/resh.inc +++ b/rtl/inc/resh.inc @@ -78,6 +78,12 @@ Function FreeResource(ResData: TFPResourceHGLOBAL): LongBool; {$ifdef FPC_HAS_FEATURE_ANSISTRINGS} Function FindResource(ModuleHandle: TFPResourceHMODULE; const ResourceName, ResourceType: AnsiString): TFPResourceHandle; Function FindResourceEx(ModuleHandle: TFPResourceHMODULE; const ResourceType, ResourceName: AnsiString; Language : word): TFPResourceHandle; +{$ifndef Win16} +Function FindResource(ModuleHandle: TFPResourceHMODULE; const ResourceName: AnsiString; ResourceType: PChar): TFPResourceHandle; +Function FindResourceEx(ModuleHandle: TFPResourceHMODULE; ResourceType: PChar; const ResourceName: AnsiString; Language : word): TFPResourceHandle; +Function FindResource(ModuleHandle: TFPResourceHMODULE; ResourceName: PChar; const ResourceType: AnsiString): TFPResourceHandle; +Function FindResourceEx(ModuleHandle: TFPResourceHMODULE; const ResourceType: AnsiString; ResourceName: PChar; Language : word): TFPResourceHandle; +{$endif Win16} {$endif} type diff --git a/rtl/inc/sysres.inc b/rtl/inc/sysres.inc index c854256ccd..ffde8e147c 100644 --- a/rtl/inc/sysres.inc +++ b/rtl/inc/sysres.inc @@ -43,6 +43,32 @@ Function FindResourceEx(ModuleHandle: TFPResourceHMODULE; const ResourceType, Re begin Result:=FindResourceEx(ModuleHandle,PChar(ResourceType),PChar(ResourceName),Language); end; + +{$ifndef Win16} +Function FindResource(ModuleHandle: TFPResourceHMODULE; const ResourceName: AnsiString; ResourceType: PChar): TFPResourceHandle; + +begin + Result:=FindResource(ModuleHandle,PChar(ResourceName),ResourceType); +end; + +Function FindResourceEx(ModuleHandle: TFPResourceHMODULE; ResourceType: PChar; const ResourceName: AnsiString; Language : word): TFPResourceHandle; + +begin + Result:=FindResourceEx(ModuleHandle,ResourceType,PChar(ResourceName),Language); +end; + +Function FindResource(ModuleHandle: TFPResourceHMODULE; ResourceName: PChar; const ResourceType: AnsiString): TFPResourceHandle; + +begin + Result:=FindResource(ModuleHandle,ResourceName,PChar(ResourceType)); +end; + +Function FindResourceEx(ModuleHandle: TFPResourceHMODULE; const ResourceType: AnsiString; ResourceName: PChar; Language : word): TFPResourceHandle; + +begin + Result:=FindResourceEx(ModuleHandle,PChar(ResourceType),ResourceName,Language); +end; +{$endif Win16} {$endif} (***************************************************************************** diff --git a/tests/test/units/system/tres6.lfm b/tests/test/units/system/tres6.lfm new file mode 100644 index 0000000000..3957b6d333 --- /dev/null +++ b/tests/test/units/system/tres6.lfm @@ -0,0 +1,3 @@ +object MyRes: TMyRes + Str1 = 'Foobar' +end diff --git a/tests/test/units/system/tres6.pp b/tests/test/units/system/tres6.pp new file mode 100644 index 0000000000..a1254d4970 --- /dev/null +++ b/tests/test/units/system/tres6.pp @@ -0,0 +1,38 @@ +program tres6; + +{$mode objfpc}{$H+} + +uses + SysUtils, Classes; + +type + TMyRes = class(TComponent) + private + fStr1: String; + published + property Str1: String read fStr1 write fStr1; + end; + +{$R tres6.lfm} + +var + r: TMyRes; +begin + r := TMyRes.Create(Nil); + try + try + ReadComponentRes('TMyRes', r); + except + on e: Exception do begin + Writeln('Exception (', e.ClassName, '): ', e.Message); + DumpExceptionBacktrace(Output); + Halt(1); + end; + end; + Writeln(r.Str1); + if r.Str1 <> 'Foobar' then + Halt(2); + finally + r.Free; + end; +end. |