程序调试不通过,请看看,关于流。 (50分)

  • 主题发起人 主题发起人 xuziling20
  • 开始时间 开始时间
X

xuziling20

Unregistered / Unconfirmed
GUEST, unregistred user!
function addstream(filename:string):boolean; //此函数为添加函数,参数为目标文件
; var t:tfilestream;
; mystream:tmemorystream;
; h,fh:hwnd;
; begin
; ; mystream:=tmemorystream.create;
; ; mystream.loadfromfile(application.ExeName );//装入程序自身
; ;t:=tfilestream.Create(filename,fmopenwrite or fmshareexclusive);//装入目标文件
; ;tfilesize:=t.Size ;//取得目标流长度
; ; mystream.Seek(0,sofromend);
; ;mystream.CopyFrom(t,tfilesize);//在自身流后加上目标文件流数据
; ;t.Free ;//释放
; mystream.SaveToFile('d:/a.bak');
; ; mystream.Free ;
; ; ; result:=true;
; end; ; ; ; ; ; ; ; ; ; //简化过程所以没有加入TRY

为什么调试总出现‘STREAM READ ERROR!’
 
mystream.loadfromfile(application.ExeName );//装入程序自身
这句话是错误的,文件在执行状态下无法用流装入,如果要读,要用无缓冲文件读写进行读写.
; ;
 
TO TYZHANG:
是用assignfile(filename);
reset(f)这种读吗?可以在程序执行时读?我试试先!谢了
; 类似将自己代码加入其它程序前,本身没有文件名的。你说的好像不符合程序要求
请详细些好吗?
 
你不是要写病毒吧?[?][?]
 
关键
;t:=tfilestream.Create(filename,fmOpenRead or fmShareDenyWrite);//装入目标文件

改后:
; ; mystream:=tmemorystream.create;
; ; mystream.loadfromfile(application.ExeName );//装入程序自身

; ;t:=tfilestream.Create(filename,fmOpenRead or fmShareDenyWrite);//装入目标文件
// ; tfilesize:=t.Size ;//取得目标流长度
; ;mystream.Seek(0,sofromend);
; ;mystream.CopyFrom(t,t.Size);//在自身流后加上目标文件流数据
; ;t.Free ;//释放

; mystream.SaveToFile('d:/a.bak');
; ; mystream.Free ;
// ; ShellExecute(H,'open',@target, nil,nil,SW_shownormal);
; ; result:=true; ; ; ; ; ; ; ; ; ;
 
谢各位,刚找到方法了
用MYSTREAM。READ()的方法可以不出错!
再次谢大家
 
接受答案了.
 
后退
顶部