关于文件流的读写 ( 积分: 100 )

L

l7511

Unregistered / Unconfirmed
GUEST, unregistred user!
设想:将一个dll或者exe文件以二进制的形式读入,对其中的个别bit进行处理后,再重新生成dll或者exe,在delphi中如何实现? 谢谢各位!
 
var
F:Tfilestream;
buf:string;
begin
buf:='你好';
F:=Tfilestream.create('你的文件',fmOpenWrite);
try
F.position:=1;
f.Write(buf,Length(buf));
finally
F.free;
end;
end;
随手写的,没有试过。
 
var
F:Tfilestream;
tmpData: array of Byte;
begin
F:=Tfilestream.create('你的文件',fmOpenWrite);
try
SetLength(tmpData, F.Size);
F.position:=0;
F.Read(tmpData, F.Size);
{ 修改tmpData }
F.position:=0;
F.Size := 0;
F.Write(tmpData, SizeOf(tmpData));
finally
F.free;
end;
end;
 
var
stream:tmemorystream;
begin
stream:=tmemorystram.create;
stream.LoadFromFile();//读取你的文件
Stream.SaveToFile();//保存你的文件
end;
 
nicai_wgl的可以,为何还不结贴?莫非LZ的文件太大了,超过可用内存+虚拟内存?
 
我觉得留香客的逻辑更合理一些!
nicai_wgl将整个文件给读取出来了。,“超过可用内存+虚拟内存? ”呵呵。。。
 
stream.LoadFromFile();//读取你的文件
Stream.SaveToFile();//保存你的文件
 
nicai_wgl,你好,
tmpData中的数据好像有问题呀,如何查看数据呢?二进制的。
 
To 楼主,给你一个例子:
读一个Byte:
Var
T : Word;
begin
Stream.Read(T);
ShowMessage(IntToHex(T,2));
end;
 
tmpData中的数据好像有问题呀,如何查看数据呢?二进制的。
tmpData是个0-文件长度-1的数组,查看数据可以直接定位查啊,比如tmpData[0]。
tmpData[0]就是一个二进制数,调试时显示成10进制的。
楼主可以查考使用下UltraEdit这个软件
 
多人接受答案了。
 
顶部