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: branches/fixes_3_2@47603 -
This commit is contained in:
svenbarth 2020-11-26 20:51:29 +00:00
parent 4dca62b568
commit f4003a0981
5 changed files with 75 additions and 0 deletions

2
.gitattributes vendored
View File

@ -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

View File

@ -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

View File

@ -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}
(*****************************************************************************

View File

@ -0,0 +1,3 @@
object MyRes: TMyRes
Str1 = 'Foobar'
end

View File

@ -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.