Blue
Red
Green
Orange
Voilet
Slate
Dark

(高手请进!)已知一扩展名为dat的文件的数据结构,怎样读取该文件。 ( 积分: 100 )

  • 主题发起人 asdfzxcv88
  • 开始时间
A

asdfzxcv88

Unregistered / Unconfirmed
GUEST, unregistred user!
已知一扩展名为dat的文件(里面文件是二进制,且未加密),数据长度都是4byte,如第一个数据元素表示商品名,第二个数据元素表示商品产地,第三个数据元素表示商品价格,第四个数据元素表示商品利润……,数据元素比较多,问如何读出该dat的文件里的数据,我曾经用以下的代码读dat文件,但只能读不是二进制的文件(下面的代码感觉好象有错误,我对流参考了不少文件都没有搞明白),请问我应当怎样读取该文件,请详细给出代码,谢谢!
procedure TForm2.Button1Click(Sender: TObject);
var
str:string;
fs:TFileStream;
vLen:Integer;
begin
try
fs:=TFileStream.Create('d:/abc.dat',fmOpenRead);
SetLength(str,100);//长度 //SetLength给字符串变量或开放性数组指定一个长度。
fs.ReadBuffer(str[1],4); //ReadBuffer从流中将4个字节复制到str[1] 中, 并将流的当前指针向后移动4个字节。
Edit1.Text :=str;
fs.ReadBuffer(str[1],10);
RichEdit1.Text :=str;
fs.ReadBuffer(str[1],4);
edit2.text:= str;
finally
fs.free;
end;
end;
 
C

creation-zy

Unregistered / Unconfirmed
GUEST, unregistred user!
建议使用记录文件来读取。另外,即便要用流+缓冲来读,也不能直接显示文本,应进行
整数->字符串的转换。例如:
Edit1.Text :=str; 应改为 Edit1.Text:=IntToStr(PInteger(@str[1])^);

可以参考: http://www.delphibbs.com/delphibbs/dispq.asp?lid=726409
 
A

asdfzxcv88

Unregistered / Unconfirmed
GUEST, unregistred user!
问题:关于记录文件的问题 ( 积分:50, 回复:5, 阅读:568 )
分类:Object Pascal ( 版主:menxin, cAkk )
来自:cuteh, 时间:2001-11-13 8:56:00, ID:726409 [显示:小字体 | 大字体]

程序中一处要用到记录文件,但是我想文件这样定义
首先是文件头,这里要写一些概括的内容
接下去都是记录,每个记录都一样
请问我该如何读写这个文件,最好别用流文件,还是记录文件方便


来自:iie, 时间:2001-11-13 8:59:00, ID:726427
简单的定义文本文件就可以,然后就是writeln(textfile)了
pascal意义上单纯的记录文件是没有头结构的


来自:hanhaobird, 时间:2001-11-13 9:11:00, ID:726468
文本文件或流文件


来自:jps_exp, 时间:2001-11-13 11:37:00, ID:726967
可以在记录文件的开始先随便写几个记录,用来做文件头
用文本或无类型的方式打开文件读写文件头,
再用记录文件的方式读写后面的记录.


来自:wenyue, 时间:2001-11-13 23:40:00, ID:729054
Type THead=Record
HeadDefine here
end;
TRecord=Record
RecordDefine Here
end;

Var
F:File;
H:THead;
Rec:TRecord;
sz:integer;
begin
...........
Blockread(F,H,SizeOf(H));
Blockread(F,Rec,SizeOf(TRecord),sz);
while sz=SizeOf(TRecord) do
begin
do something........
Blockread(F,Rec,SizeOf(TRecord),sz);
end;
closefile(f);

不过,使用TFileStream更是一种好方法


来自:cuteh, 时间:2001-11-14 8:51:00, ID:729311
多人接受答案了。
 
A

asdfzxcv88

Unregistered / Unconfirmed
GUEST, unregistred user!
我看了你建议的参考,不过我的文件的长度不定的,我要在不同的时刻读不同的文件(如t时刻文件为1000组数据,t+1时刻文件为1050组数据,t+2时刻文件为1120组数据),即文件在不同的时刻文件长度不同,那用记录可以读吗,是用记录方便还是用流方便。
 
R

rtl

Unregistered / Unconfirmed
GUEST, unregistred user!

------------------------------------------------------
http://www.waibaoinfo.com 外包信息网
 
A

asdfzxcv88

Unregistered / Unconfirmed
GUEST, unregistred user!
接受答案了.
 

Similar threads

S
回复
0
查看
957
SUNSTONE的Delphi笔记
S
S
回复
0
查看
779
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部 底部