+ 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)

git-svn-id: trunk@45479 -
This commit is contained in:
svenbarth 2020-05-23 21:24:01 +00:00
parent aa243faab8
commit 1d4bbcef75
5 changed files with 71 additions and 0 deletions

2
.gitattributes vendored
View File

@ -15979,6 +15979,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,10 @@ 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;
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}
type

View File

@ -43,6 +43,30 @@ Function FindResourceEx(ModuleHandle: TFPResourceHMODULE; const ResourceType, Re
begin
Result:=FindResourceEx(ModuleHandle,PChar(ResourceType),PChar(ResourceName),Language);
end;
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}
(*****************************************************************************

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.