summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsvenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2>2020-11-26 20:51:29 +0000
committersvenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2>2020-11-26 20:51:29 +0000
commit94018c7d94d0c37104ab12d93a6c266f4f8d0794 (patch)
treea00ab98f5814c44b23e41195c334fd0875814d93
parenta8d5865ab6854e82322bfc947f24a334d75ff5ef (diff)
downloadfpc-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.inc6
-rw-r--r--rtl/inc/sysres.inc26
-rw-r--r--tests/test/units/system/tres6.lfm3
-rw-r--r--tests/test/units/system/tres6.pp38
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.