大家帮我看看这问题是咱回事,运行没问题。(100分)

  • 主题发起人 主题发起人 编程傻子
  • 开始时间 开始时间

编程傻子

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
Stream:TResourceStream;
MyJpg: TJpegImage;
h: THandle;
begin
Try
h := LoadLibrary('Ytdll.dll');
if h <>0 then
Begin
Stream := TResourceStream.Create (H,'cgddzd',RT_RCDATA) ;
try
MyJpg:=TJpegImage.Create;
MyJpg.LoadFromStream (Stream) ;
Image1.Picture.Assign(MyJpg);
finally
MYJPG.FREE; //在这里
end;
end;
Finally
Stream.Free;//在这里
FreeLibrary(h);//在这里
end;
end;
[Warning] Unit3.pas(49): Variable 'h' might not have been initialized
[Warning] Unit3.pas(44): Variable 'MyJpg' might not have been initialized
[Warning] Unit3.pas(48): Variable 'Stream' might not have been initialized

运行没问题。
 
只是没有初始化变量而已嘛。
试试将它们赋nil,应该不会出现Warning。
 
编译警告,不用管它[:D]
 
试试
procedure TForm1.Button1Click(Sender: TObject);
var
Stream:TResourceStream;
MyJpg: TJpegImage;
h: THandle;
begin
Stream := nil;
MyJpg := nil;
h := nil;
Try
h := LoadLibrary('Ytdll.dll');
if h <>0 then
Begin
Stream := TResourceStream.Create (H,'cgddzd',RT_RCDATA) ;
try
MyJpg:=TJpegImage.Create;
MyJpg.LoadFromStream (Stream) ;
Image1.Picture.Assign(MyJpg);
finally
MYJPG.FREE; //在这里
end;
end;
Finally
Stream.Free;//在这里
FreeLibrary(h);//在这里
end;
end;
 
不必理会,只是提示如果异常时,没有值
 
还有就是我在资源文件里存放了100张图片我执行上面的语句,
会不会把100张全都调用内存,还是只调用
需要的那一张所占的内存.
 
谢谢 
沙隆巴斯的主人,可以了,非得加个空.
 

“Call Create to instantiate a TResourceStream, passing in parameters that identify
the resource in a specified instance. TResourceStream finds the resource data and
loads it into the Memory buffer for the TResourceStream”
里看来是只LOAD了你指定的资源,所以应该是只需要一张所占的内存
 
编程傻子英文太C
也就是查找资源,然后存到内存里。 是这个意思哦!
 
多人接受答案了。
 
后退
顶部