有关文本文件和二进制文件的转换(100分)

  • 主题发起人 主题发起人 qabo
  • 开始时间 开始时间
Q

qabo

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个文本文件,现在我想将其读出来保存为二进制文件,然后再程序中再读取该二进制文件,请问该如何做到?我使用Tmemorystream来读写二进制文件,但是一直没有弄成功啊,大家帮我看看是怎么回事
//文件65.txt的内容
1 2 3 4 5 6
1 2 3 6 9 10
1 2 3 7 8 10
1 2 4 6 7 8
然后是读出该文本文件的内容
procedure TForm1.Button1Click(Sender: TObject);
var
myFile:TextFile;
q,temp1 : string;
test : Integer;
begin
AssignFile(myfile,'F://Delphi//65.txt');
Reset(myfile);
while not Eof(myfile) do
begin
Readln(myfile, q);
temp2 := temp2 + q ; //将文本文件中的内容保存到temp2全局变量中
ListBox1.Items.Add(q);
end;
closefile(myfile);
//可以正确读取出来,temp2的内容和文本文件中的内容相同
end;

//然后开始将该内容写进二进制文件
procedure TForm1.Button3Click(Sender: TObject);
var
ms:tmemorystream;
t,q : string;
itt : Integer;
begin
ms := TMemoryStream.Create ;
t := temp2 ; //将文本中读取的内容赋值给t,再保存
ms.Write(t,length(t));
ms.SaveToFile('c:/test.test');
ms.free;
end;

//然后是读取该二进制文件
procedure TForm1.Button2Click(Sender: TObject);
var
ms : Tmemorystream ;
p,q,iTemp:string;
i,j : Integer;
iftt : Integer;
begin
ms := TMemoryStream.Create ;
ms.loadfromFile('c:/test.test');
ms.read(p,238);
ms.free;
listbox1.Items.Add(p);
end;
但是却怎么也读取不了,老是出错,请各位大侠看看问题出在那里
 
文体文件存的时候就是二进制,你转来转去干吗?
 
把你那个流文件读写里的STRING变量类型改成SHORTSTRING就可以了。
 
>>listbox1.Items.Add(p);
Add方法是追加一个字符串.用AddStrings应该没问题的.
 
不知道楼主什么问题,我试了,没有问题,可以显示出来,是一行字符串.
 
读到流中在用流写就是了
 
//然后开始将该内容写进二进制文件
procedure TForm1.Button3Click(Sender: TObject);
var
ms:tmemorystream;
t,q : string;
itt : Integer;
begin
ms := TMemoryStream.Create ;
t := temp2 ; //将文本中读取的内容赋值给t,再保存
ms.Write(t[1],length(t));
ms.SaveToFile('c:/test.test');
ms.free;
end;
 
计算机处理文件,或者数据的最小单位是字节, 一个字节有8个比特位。因为2个8次方为256,所以一个字节可以表示256个数字0-255;

而所谓的文本文件和二进制文件在本质上没有任何区别,都是一个很长的字节流(说比特流也行),只不过一个文本文件的字节流中的每个字节的范围都在ASCII字符的范围内(双字节的文字都在一个范围内)。
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部