关于Stream的问题?(100分)

  • 主题发起人 主题发起人 guqs
  • 开始时间 开始时间
G

guqs

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个函数的参数为TStream类型,要求传入由TFileStream从文件读出的数据。
当直接从文件读入时正常,但我想从资源文件读出或用其他方法(总之不想读文件)。
我用
Stream:TMemoryStream;
hResInfo,hRes: THandle;
ptrReport:Pchar;
text:pchar;
n:longint;
begin
Stream:=TMemoryStream.Create;
hResInfo := FindResource(HInstance, 'Report1', 'frp');
hRes := LoadResource(HInstance, hResInfo);
n:=SizeofResource(HInstance, hResInfo);
if hRes>32 then {its a good load}
begin {lock the resource}
ptrReport:=LockResource(hRes);
end;
Stream.Writebuffer(ptrReport^,n);
stream.SaveToFile('print.frp'); //用此语句存成的文件格式正确。
theFunction.LoadFromStream(Stream); //此时说文件格式不对。
Stream.Free;

而用
Stream:=TFileStream('print.frp',...);
theFunction.LoadFromStream(Stream); //此句正常

theFunction是别人控件的函数,没法改。
有什么办法可以解决?
如何把TMemoStream转成TFileStream?


 
stream.SaveToFile('print.frp'); //用此语句存成的文件格式正确。
stream.Seek(0, 0); //加上这句看看
theFunction.LoadFromStream(Stream); //此时说文件格式不对。
Stream.Free;
 
先把TMemoStream用SaveToFile,然后创建一个TFileStream,然后用LoadFromFile,可以吗?
 
那是因为你的Stream指针到了最后了,
用stream.Seek(0, 0);

stream.position:=;
就好了
 
一句话点醒梦中人。
 
后退
顶部