filestream 文件读取 应用程序尾 附加信息 帮忙大家近来看看 两天了 200分 ( 积分: 100 )

  • 主题发起人 主题发起人 lxxiaoxiao
  • 开始时间 开始时间
L

lxxiaoxiao

Unregistered / Unconfirmed
GUEST, unregistred user!
我用下面这段代码把b.ini中的内容加到a.exe尾部&nbsp;EXE&nbsp;可以正常运行&nbsp;我用UE打开&nbsp;内容也的确加到了&nbsp;EXE的尾部&nbsp;b.ini中的内容是&nbsp;0123456789&nbsp;现在我想编写这个a.exe让他运行的同时把添加在自己尾部中的b.ini中的内容&nbsp;显示到MEMO上面&nbsp;麻烦大家来看看&nbsp;谢谢<br>var&nbsp;s:&nbsp;String;<br>var<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsexe:Tfilestream;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsini:tfilestream;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;begin<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsexe:=tfilestream.create('a.exe',fmOpenWrite);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsini:=tfilestream.create('b.ini',fmopenread);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsexe.position:=fsexe.size;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsexe.copyfrom(fsini,0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;showmessage('文件合并成功);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsexe.free;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsini.free;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;
 
var&nbsp;s:&nbsp;String;<br>var<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsexe:Tfilestream;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsini:tfilestream;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;begin<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsexe:=tfilestream.create('a.exe',fmOpenWrite);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsini:=tfilestream.create('b.ini',fmopenread);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;//应该写上一个文件大小还有文件名称&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsexe.position:=fsexe.size;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//应该写上一个文件大小还有文件名称&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsexe.copyfrom(fsini,0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;showmessage('文件合并成功);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsexe.free;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsini.free;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br>//最后可以从文件的头部开始读大的文件大小,&nbsp;一个个分解出来就可以
 
我明白需要写上一个&nbsp;大小&nbsp;现在不用写&nbsp;ini中的内容固定为0123456789<br>写好后能读出来&nbsp;这0123456789&nbsp;就可以
 
如果是固定大小就好办!&nbsp;不过不知道exe运行的时候.&nbsp;可以自己装载你合并的文件吗?<br>这个我没有测试过.&nbsp;你在exe&nbsp;运行之后句装载你合并的文件.&nbsp;从最后读出你那几个字串就可以了,&nbsp;不过知道是有多长的字串才行啊
 
fileSteam.loadfile('你的合并文件');<br>&nbsp;fileStream.position&nbsp;:=&nbsp;fileSteam.size&nbsp;-&nbsp;&nbsp;10;&nbsp;&nbsp;{0123456789长度是10}<br>&nbsp;fileStram.readbuf(Str,&nbsp;10);<br>就出来了
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1561339<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=643213
 
可以装载&nbsp;我试过&nbsp;但是&nbsp;还是读不出来&nbsp;在就是读出来的是乱码&nbsp;您刚刚写的&nbsp;str&nbsp;如果定义是string&nbsp;类型&nbsp;读出来的就是空&nbsp;什么都没有
 
var<br>&nbsp;&nbsp;vStr:&nbsp;array[0..9]&nbsp;of&nbsp;char<br>begin<br>&nbsp;fileSteam.loadfile('你的合并文件');<br>&nbsp;fileStream.position&nbsp;:=&nbsp;fileSteam.size&nbsp;-&nbsp;&nbsp;10;&nbsp;&nbsp;{0123456789长度是10}<br>&nbsp;fileStram.readbuf(Str,&nbsp;10);<br>end;<br>//这样可以了把
 
你写入那个字串的代码呢!
 
最上面的就是写入字符串的代码呀&nbsp;这样我在试一下&nbsp;麻烦您关注一下
 
unit&nbsp;Unit2;<br><br>interface<br><br>uses<br>&nbsp;&nbsp;Windows,&nbsp;Messages,&nbsp;SysUtils,&nbsp;Variants,&nbsp;Classes,&nbsp;Graphics,&nbsp;Controls,&nbsp;Forms,<br>&nbsp;&nbsp;Dialogs,&nbsp;StdCtrls;<br><br>type<br>&nbsp;&nbsp;TForm2&nbsp;=&nbsp;class(TForm)<br>&nbsp;&nbsp;&nbsp;&nbsp;Button1:&nbsp;TButton;<br>&nbsp;&nbsp;&nbsp;&nbsp;Button2:&nbsp;TButton;<br>&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;Button1Click(Sender:&nbsp;TObject);<br>&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;Button2Click(Sender:&nbsp;TObject);<br>&nbsp;&nbsp;private<br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;Private&nbsp;declarations&nbsp;}<br>&nbsp;&nbsp;public<br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;Public&nbsp;declarations&nbsp;}<br>&nbsp;&nbsp;end;<br><br>var<br>&nbsp;&nbsp;Form2:&nbsp;TForm2;<br><br>implementation<br><br>{$R&nbsp;*.dfm}<br><br>procedure&nbsp;TForm2.Button1Click(Sender:&nbsp;TObject);<br>var<br>&nbsp;&nbsp;fsexe:TMemoryStream;<br>&nbsp;&nbsp;vStr:&nbsp;String;<br>&nbsp;&nbsp;vBuf:&nbsp;array[0..9]&nbsp;of&nbsp;char;<br>begin<br>&nbsp;&nbsp;fillChar(vBuf,&nbsp;10,&nbsp;0);<br>&nbsp;&nbsp;vStr&nbsp;:=&nbsp;&nbsp;'0123456789';<br>&nbsp;&nbsp;Move(vStr[1],&nbsp;vBuf,&nbsp;10);<br>&nbsp;&nbsp;fsexe&nbsp;:=&nbsp;TMemoryStream.Create;<br>&nbsp;&nbsp;fsexe.LoadFromFile('E:/字符处理/pro.exe');<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;fsexe.Position&nbsp;:=&nbsp;fsexe.Size;<br>&nbsp;&nbsp;&nbsp;&nbsp;fsexe.Write(vBuf,&nbsp;10);<br>&nbsp;&nbsp;&nbsp;&nbsp;fsexe.SaveToFile('E:/字符处理/pro.exe');<br>&nbsp;&nbsp;&nbsp;&nbsp;showmessage('文件合并成功');<br>&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;fsexe.free;<br>&nbsp;&nbsp;end<br>end;<br><br>procedure&nbsp;TForm2.Button2Click(Sender:&nbsp;TObject);<br>var<br>&nbsp;&nbsp;fsexe:TMemoryStream;<br>&nbsp;&nbsp;vStr:&nbsp;String;<br>&nbsp;&nbsp;vBuf:&nbsp;array[0..9]&nbsp;of&nbsp;char;<br>begin<br>&nbsp;&nbsp;fillChar(vBuf,&nbsp;10,&nbsp;0);<br>&nbsp;&nbsp;fsexe&nbsp;:=&nbsp;TMemoryStream.Create;<br>&nbsp;&nbsp;fsexe.LoadFromFile('E:/字符处理/pro.exe');<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;fsexe.Position&nbsp;:=&nbsp;fsexe.Size&nbsp;-&nbsp;10;<br>&nbsp;&nbsp;&nbsp;&nbsp;fsexe.Read(vBuf,&nbsp;10);<br>&nbsp;&nbsp;&nbsp;&nbsp;vStr&nbsp;:=&nbsp;String(vBuf);<br>&nbsp;&nbsp;&nbsp;&nbsp;ShowMessage(vStr);<br>&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;fsexe.free;<br>&nbsp;&nbsp;end<br>end;<br><br>end.<br>//上面是写入字串,&nbsp;但是你的程序写入字串之后,然后又编译过的话!&nbsp;那又得写入.要不然编译后会覆盖之前写入的字串,已经达到你的目的了!&nbsp;经过测试.
 
多人接受答案了。
 
后退
顶部