如何探索一个数据文件的格式? (100分)(100分)

  • 主题发起人 主题发起人 konak
  • 开始时间 开始时间
K

konak

Unregistered / Unconfirmed
GUEST, unregistred user!
如何探索一个数据文件的格式?
想读取一个数据文件中的数据,但是不知道其格式,
该怎么样去探索其数据格式啊, 有什么工具可用吗?
大虾help.. 100分相送
 
我想可以读取byte流
用16进制表示就可以了
var
F:TFileStream;
passBuf:array[0..49]of byte;
I:INTEGER;
begin
memo1.Clear;
if not FileExists(Edit1.Text) then
exit;
F:=TFileStream.Create(Edit1.Text,fmOpenRead);
try
F.Seek($42,soFrombegin
ning);
F.Read(passBuf,50);
finally
F.Free;
end;
for i:=0 to 49do
memo1.lines.add(VarToStr(inttohex(passBuf,2)));
end;
再写进去的问题
将上面的read改为write,
F:=TFileStream.Create(Edit1.Text,fmOpenwrite);


来自:海无崖, 时间:2004-5-9 11:16:54, ID:2600008
To:wqhatnet
把文件头读出来没问题,但写回去总报错,请贴出写回去的源码.谢谢.

来自:wqhatnet, 时间:2004-5-9 12:32:32, ID:2600158 | 编辑
没有只读属性
没有被其他程序占用等
const
passBuf:array[0..39]of byte=
(
$29,$77,$EC,$37,$F2,$C8,$9C,$FA,$69,$D2
,$28,$E6,$BC,$3A,$8A,$60,$FB,$18,$7B,$36
,$5A,$FE,$DF,$B1,$D8,$78,$13,$43,$60,$23
,$B1,$33,$9B,$ED,$79,$5B,$3D,$39,$7C,$2A
);
var
F:TFileStream;
begin
if not FileExists(Edit1.Text) then
exit;
F:=TFileStream.Create(Edit1.Text,fmOpenWrite);
try
F.Seek($42,soFrombegin
ning);
F.Write(passBuf,40);
finally
F.Free;
end;
end;

 
一个股票的每日数据文件,
其中有好多字段,据说文件头为:
typedef struct{
char datatype[0x12];//文件标识码
long newdate;//最新日线数据的日期
char unkown[8];//我也不知道干什么用的
long datanum;//日线数据的个数;
}STOCKSTARTDAY_FILEHEAD;
但是按照这个格式读出的却并非是正确的数据,
所以估计是上面的格式错了,想试着找到正确的数据格式啊,
 
不可能吧,文件不知道格式自己去研究?除非运气非常好+文件格式简单,否则不可能研究出来。举个简单的例子,你都不知道文件的数据是按什么类型存放的,你怎么读?
 
后退
顶部