请教:关于如何读取二进制文件,并显示其中真正的内容?(50)

  • 主题发起人 主题发起人 rebirth2003
  • 开始时间 开始时间
R

rebirth2003

Unregistered / Unconfirmed
GUEST, unregistred user!
请教 :如何读取二进制文件,并把其中真正的内容(比如字母、数字、标点符号和汉字)写入另外一个文本文件中。 谢谢!!! 关于此二进制文件的资料有如下: 三维格点化拼图 产品的格式 数据命名为:Z_OTHE_RADAMOSAIC_YYYYMMDDHHMM.BIN: 格式为: char ZonName[12]; // diamond 131 12个字节 char DataName[38];//数据说明(例如 2008年5月19日雷达三维拼图)38个字节 unsigned short int year;//2008 两个字节 unsigned short int month;//05 两个字节 unsigned short int day;//19 两个字节 unsigned short int hour;//14 两个字节 unsigned short int minute;//31 两个字节 (头文件中的时间和文件名中的时间为固定六分钟的间隔,从00、06…54) unsigned short int interval ; //两个字节 unsigned short int XNumGrids;//1300 两个字节 unsigned short int YNumGrids;//800 两个字节 unsigned short int ZNumGrids;//20 两个字节 int RadarCount; //拼图雷达数 四个字节 float StartLon; //网格开始经度(左上角) 四个字节 float StartLat; //网格开始纬度(左上角) 四个字节 float CenterLon;//网格中心经度 四个字节 float CenterLat;//网格中心纬度 四个字节 float XReso; //经度方向分辨率 四个字节 float YReso; //纬度方向分辨率 四个字节 float ZhighGrids[40];//垂直方向的高度(单位km)(数目根据ZnumGrids而得(最大40层) 160个字节,头文件共计256个字节) 接下来是数据块,从底层到高层进行排列共ZnumGrids层。一个字节存储一个数据,值的范围0-255,2*dBZ+66等于该字节的值。每层的数据从起始点(左上角)开始,按维向(纬度y)减小写每行的经向(经度x增大)数据。
 
定义一个结构体(记录)按照记录的方式读取。 现场编写,有的地方记不清了。type TDataStruc = record ZonName: array[0..11] of char; DataName: array[0..37] of char; .... end;varFileStream: TFileStream;DS: TDataStruc;FillChar(DS, 0, sizeof(DS));FileStream := TFileStream.Create('wenjian' Open);FileStream.Postion := 0;FileStream.Read(DS, sizeof(DS));....FileStream.Close();FileStream.Free;
 
如楼上所示这个文件如果只有一种记录类型,并且记录长度固定, 那么就按这种方法type PhoneEntry = record FirstName, LastName: string[20]; PhoneNumber: string[15]; Listed: Boolean; end; PhoneList = file of PhoneEntry;然后直接打开读写就ok了var pe :PhoneEntry; fpPhoneList :PhoneList;begin fpPhoneList := fileopen('xxx.bin',fmOpenRead); read(fpphonelist,pe); write(另外一个文件 , pe.firstname); .... end.
 
多人接受答案了。
 

Similar threads

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