一个dat文件如何用delphi读出来最好能有个例子 ( 积分: 100 )

  • 主题发起人 主题发起人 babalamari
  • 开始时间 开始时间
B

babalamari

Unregistered / Unconfirmed
GUEST, unregistred user!
一个.dat文件里面放着一些数据,但我要如何知道他是什么格式,如何用delphi把他读出来?就好比说读mdb库那样?
 
.dat 通常是数据文件。很多小型数据库都可以把库文件命名为 .dat。
 
如果你自己不知道格式,难 。
 
同意楼上的。
起码要知道格式,是否加密,加密方法。
要不然要自己分析文件结构,成本太高了。
 
那样的话就是不可能实现了?
 
用文本编辑器打开dat文件看一下,
如果有规律的话,就直接用BDE的SQL Explorer打开
 
先用UltraEdit看看文件头是什么文件,就是头部的那几个字,但是如果加密了就没折了
 
文本文件和二进制文件是有区别的,对于文本文件来说,每个字节(或每几个字节)的意义相同,你只要一个一个字节的读出来就OK了;而对于二进制文件来说,可能有4个字节保存了一个整形,接下去有4个字节保存了一个浮点型等等……所以要想打开二进制文件需要了解它的文件格式。
要想知道文件格式,你可以用16进制编辑器打开一个二进制文件,然后猜测它的格式。
 
我最近刚刚就是做了这样一件事情,解决了一个重大的问题,呵呵。
我们公司使用Tektronix的示波器,生成的报告需要手动处理,工作量非常巨大,其实整个业界都这样。所以想写一个自动处理的工具,但是Tek不给对应的文件格式。然后我只好自己研究他们文件的格式,痛苦了几周,竟然找到了读取相应数据的方法,以前需要1周处理的时间,现在只要2分钟就够了。
说说我的心得:
一般这种Dat文件都是二进制文件,你可以先用UltraEdit-32打开目测一下,一般会看到很多都是二进制数据,这些数据一般都是存储的结构体或者其它数据文件。比如一个结构体
begin
a : Boolean;
d : TDateTime;
end;结构体一般很难看到规律。但是要是存储的是图片就好多了,上次我也是偶然之间看到了有“BM”两个字母,突然想到BMP的文件就是以“BM”开头,然后把相应的数据保存下来,竟然可以打开,这就进了一步,当然JPG也类似。这样你就可以编程,对相应开头的图片保存下来。
另外,在这些二进制文件里面一般都可以看到一些字符串,这些也是重要的突破口,比如有一个结构体:
begin
title: string[10];
date : TDateTime;
end;
在UltraEdit里直接显示为可视的字符串,你可以根据这个字符串的含义来猜测周边变量的类型,然后得到你想要的数值。
说的这些都是没有加密的,假如软件故意把一些数据加密,那就难了。
 
后退
顶部