我需要用b程序对a程序配置,把任意一个图片文件和文本文件写到a程序里,a程序发布出去后,里面带b程序对他写如的图片文件跟文本文件。
下面是b程序的配置代码:
var
Target,str:TFilestream;
Size:Integer;
sr: TSearchRec;
Begin
FindFirst('d:\a.exe', faAnyFile, sr);
if (sr.Size div 1024) > 500 then
begin
showmessage('已经添加好了!');
exit;
end;
try
//写如图片
str:=TFileStream.Create('My.bmp',fmOpenRead or fmShareExclusive);
Target := TFilestream.create('d:\a.exe', fmOpenWrite or fmShareExclusive);
Target.Seek(0,soFromEnd);
//往辅程序的尾部添加资源
Target.CopyFrom(str,0);
Size:=str.Size + Sizeof(Size);
//计算资源大小,并写入辅程序尾部
Target.WriteBuffer(Size,Sizeof(Size));
Target.Free;
str.Free;
//写入文字
str:=TFileStream.Create('1.txt',fmOpenRead or fmShareExclusive);
Target := TFilestream.create('d:\a.exe', fmOpenWrite or fmShareExclusive);
Target.Seek(0,soFromEnd);
//往辅程序的尾部添加资源
Target.CopyFrom(str,0);
Size:=str.Size + Sizeof(Size);
//计算资源大小,并写入辅程序尾部
Target.WriteBuffer(Size,Sizeof(Size));
finally
Target.Free;
str.Free;
end;
上面的代码能成功的把图片文件跟文本文件写到a里。
再看a的读出配置文件的代码
var
Source:TFilestream;
str:TMemoryStream;
Size:Integer;
Begin
try
str:=TMemoryStream.Create;
Source := TFilestream.create(Application.ExeName, fmOpenRead or fmShareDenyNone);
Source.Seek(-Sizeof(Size),soFromEnd);
//读出资源大小
Source.ReadBuffer(Size,SizeOf(Size));
//定位到资源的开始位置
Source.Seek(-Size,soFromEnd);
//取出资源并存到文件中
str.CopyFrom(Source,Size - SizeOf(Size));
str.SaveToFile('1.txt');
//显示
Memo1.Lines.LoadFromFile('1.txt');
Finally
str.Free;
Source.Free;
end;
该段代码能成功的把 添加到尾端的文本文件读出,当是图片文件没办法读出来,有什么方法能把图片文件跟文本文件都分解出来哈,上面的代码原本是我辛苦找的,但只能添加一个文件,现在我需要加2个文件,但对流的造作不熟悉,不知道怎么改好,大虾救救俺呀,
下面是b程序的配置代码:
var
Target,str:TFilestream;
Size:Integer;
sr: TSearchRec;
Begin
FindFirst('d:\a.exe', faAnyFile, sr);
if (sr.Size div 1024) > 500 then
begin
showmessage('已经添加好了!');
exit;
end;
try
//写如图片
str:=TFileStream.Create('My.bmp',fmOpenRead or fmShareExclusive);
Target := TFilestream.create('d:\a.exe', fmOpenWrite or fmShareExclusive);
Target.Seek(0,soFromEnd);
//往辅程序的尾部添加资源
Target.CopyFrom(str,0);
Size:=str.Size + Sizeof(Size);
//计算资源大小,并写入辅程序尾部
Target.WriteBuffer(Size,Sizeof(Size));
Target.Free;
str.Free;
//写入文字
str:=TFileStream.Create('1.txt',fmOpenRead or fmShareExclusive);
Target := TFilestream.create('d:\a.exe', fmOpenWrite or fmShareExclusive);
Target.Seek(0,soFromEnd);
//往辅程序的尾部添加资源
Target.CopyFrom(str,0);
Size:=str.Size + Sizeof(Size);
//计算资源大小,并写入辅程序尾部
Target.WriteBuffer(Size,Sizeof(Size));
finally
Target.Free;
str.Free;
end;
上面的代码能成功的把图片文件跟文本文件写到a里。
再看a的读出配置文件的代码
var
Source:TFilestream;
str:TMemoryStream;
Size:Integer;
Begin
try
str:=TMemoryStream.Create;
Source := TFilestream.create(Application.ExeName, fmOpenRead or fmShareDenyNone);
Source.Seek(-Sizeof(Size),soFromEnd);
//读出资源大小
Source.ReadBuffer(Size,SizeOf(Size));
//定位到资源的开始位置
Source.Seek(-Size,soFromEnd);
//取出资源并存到文件中
str.CopyFrom(Source,Size - SizeOf(Size));
str.SaveToFile('1.txt');
//显示
Memo1.Lines.LoadFromFile('1.txt');
Finally
str.Free;
Source.Free;
end;
该段代码能成功的把 添加到尾端的文本文件读出,当是图片文件没办法读出来,有什么方法能把图片文件跟文本文件都分解出来哈,上面的代码原本是我辛苦找的,但只能添加一个文件,现在我需要加2个文件,但对流的造作不熟悉,不知道怎么改好,大虾救救俺呀,
解决方案 »
- DateTimePicker控件的使用问题
- 高分求用delphi绘制的MSN/QQ窗体的源码,分要多少可以说
- 使用printers组件设计打印程序,请问怎么判断打印机是否联机?
- 有没有TActionManager的高手啊
- 关于DELPHI7中TcpServer控件在某种条件下会停止监听的问题。
- 求问一个TPageControl控件的问题?
- 寻求高手!
- 怎么样动态绑定事件函数
- mastering delphi5这本书怎么样!
- DELPHI50汉化版运行时缺文件!
- 求助:我的 OpenDialog1 打开时,只能打开 文本文件?那么 OpenDialog1 的filter , defaultext 要设置为什么呢?
- 在Delphi中如何调用存储过程
在你读取那一段你在继续读一遍就可以得到图片了
var
Source:TFilestream;
str:TMemoryStream;
Size:Integer;
Begin
try
str:=TMemoryStream.Create;
Source := TFilestream.create(Application.ExeName, fmOpenRead or fmShareDenyNone);
Source.Seek(-Sizeof(Size),soFromEnd);
//读出资源大小
Source.ReadBuffer(Size,SizeOf(Size));
//定位到资源的开始位置
Source.Seek(-Size,soFromEnd);
//取出资源并存到文件中
str.CopyFrom(Source,Size - SizeOf(Size));
str.SaveToFile('1.txt');
//显示
Memo1.Lines.LoadFromFile('1.txt');
//添加以下代码是读取图片的
Source.Seek(-Sizeof(Size),soFromCurrent);
Source.ReadBuffer(Size,SizeOf(Size));
Source.Seek(-Size,soFromCurrent);
str.CopyFrom(Source,Size - SizeOf(Size));
str.SaveToFile('My.bmp');
image1.Picture.Graphic.loadFromSteam(str);//添加一个image来显示
Finally
str.Free;
Source.Free;
end;
Sizeof(Size)这样写法其实是不规范的,不过也没关系默认会取他的类型
实际上你应该写成sizeof(integer)
Source.Seek(Size,soFromEnd);然后再用GreenWaterBlueSky的代码读取图片大小和数据
>>>
//添加以下代码是读取图片的
Source.Seek(-Sizeof(Size),soFromCurrent);
Source.ReadBuffer(Size,SizeOf(Size));
Source.Seek(-Size,soFromCurrent);
str.CopyFrom(Source,Size - SizeOf(Size));
str.SaveToFile('My.bmp');