这是把Tmemo框内显示的二进制文件写入指定文件名的.bin文件里的代码:
其中SaveDialog1.Options := [ofOverwritePrompt,ofHideReadOnly,ofPathMustExist,ofEnableSizing];
SaveDialog1.Filter := '*.bin|*.bin';
SaveDialog1.DefaultExt := '*.bin';
procedure TForm1.Button2Click(Sender: TObject);
var
f : TFileStream;
data : string;
Buf: PChar;
begin
data := Memo1.Text;
data := StringReplace(data,' ','',[rfReplaceAll]);//去除空格
if SaveDialog1.Execute then
begin
GetMem(Buf,Length(data) div 2);
HexToBin(@data[1],Buf,Length(data) div 2); //十六进制字符串转换成二进制
f := TFileStream.Create(SaveDialog1.FileName, fmCreate);
try
f.Seek(0, soFromBeginning);
f.Write(Buf^, Length(data) div 2);
finally
f.Free;
end;
FreeMem(Buf);
end;
end;
再通过读写.bin文件,把保存起来的.bin重新显示到TMemo框中去,发现显示结果与原文件一模一样;如果需要修改待保存文件,则可以在TMemo框中修改再行保存,重新显示的结果也是正确的。
不知道以上能否达到你要的效果?