2
0
Эх сурвалжийг харах

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

svenbarth 5 жил өмнө
parent
commit
1d4bbcef75

+ 2 - 0
.gitattributes

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

+ 4 - 0
rtl/inc/resh.inc

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

+ 24 - 0
rtl/inc/sysres.inc

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

+ 3 - 0
tests/test/units/system/tres6.lfm

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

+ 38 - 0
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.