diff --git a/.gitattributes b/.gitattributes index e71d272391..0d6c03fb92 100644 --- a/.gitattributes +++ b/.gitattributes @@ -15463,6 +15463,8 @@ tests/test/units/system/tres4.pp svneol=native#text/plain tests/test/units/system/tres4.res -text tests/test/units/system/tres5.pp svneol=native#text/plain tests/test/units/system/tres5.rc svneol=native#text/plain +tests/test/units/system/tres6.lfm svneol=native#text/plain +tests/test/units/system/tres6.pp svneol=native#text/pascal tests/test/units/system/tresb.rc svneol=native#text/plain tests/test/units/system/tresb.res -text tests/test/units/system/tresext.pp svneol=native#text/plain 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.