浏览代码

+ TResourceStream implemented

git-svn-id: trunk@1143 -
florian 20 年之前
父节点
当前提交
527a01bc9d
共有 1 个文件被更改,包括 25 次插入16 次删除
  1. 25 16
      rtl/objpas/classes/streams.inc

+ 25 - 16
rtl/objpas/classes/streams.inc

@@ -756,34 +756,43 @@ end;
 {****************************************************************************}
 
 procedure TResourceStream.Initialize(Instance: THandle; Name, ResType: PChar);
-
-begin
-end;
+  begin
+    Res:=FindResource(Instance, Name, ResType);
+    if Res=0 then 
+      raise EResNotFound.CreateFmt(SResNotFound,[Name]);
+    Handle:=LoadResource(Instance,Res);
+    if Handle=0 then
+      raise EResNotFound.CreateFmt(SResNotFound,[Name]);
+    SetPointer(LockResource(Handle),SizeOfResource(Instance,Res));    
+  end;
 
 
 constructor TResourceStream.Create(Instance: THandle; const ResName: string; ResType: PChar);
-
-begin
-end;
+  begin
+    inherited create;
+    Initialize(Instance,pchar(ResName),ResType);
+  end;
 
 
 constructor TResourceStream.CreateFromID(Instance: THandle; ResID: Integer; ResType: PChar);
-
-begin
-end;
+  begin
+    inherited create;
+    Initialize(Instance,pchar(ResID),ResType);
+  end;
 
 
 destructor TResourceStream.Destroy;
-
-begin
-end;
+  begin
+    UnlockResource(Handle);
+    FreeResource(Handle);
+    inherited destroy;
+  end;
 
 
 function TResourceStream.Write(const Buffer; Count: Longint): Longint;
-
-begin
-  Write:=0;
-end;
+  begin
+    raise EStreamError.Create(SCantWriteResourceStreamError);
+  end;
 
 {****************************************************************************}
 {*                             TOwnerStream                                 *}