C的文件头,DELPHI该怎样读?(80分)

  • 主题发起人 主题发起人 3wccdel
  • 开始时间 开始时间
3

3wccdel

Unregistered / Unconfirmed
GUEST, unregistred user!
有一C的文件头文件,1024字节,二进制文件,后面为数据区,顺序如下:
1.short nfh ---20个字母
2.char nname[20] ---文本
3.char pname[20] ---文本
4.char sname[20] ---文本
5.char sno[20] ---20个字符
6.char rtn[20] ---20个字符
7.char lontxt[20]
8. char lattxt[20]
9.long longdeg
10.short lev
11. unsigned short ag
12.unsigned long libel
13.unsigned char datatype[30]
14.unsigned char unfold[30]
15 unsigned short pre[30]
16.................
...................
文件头有详细说明,但我就读不出,请各位大哥帮忙!倾家荡产80分无私奉献。
 
delphi怎么能读出c的头文件呢。要不多重敲一遍存成单元备用。要太多参照编译原理写个
词法解释器吧。
 
小弟说错了,是数据文件,用C的方法如上面读取解释,重要用DELPHI方法来读取如上用
C方法读取的数据文件。
 
定义一个文件头结构,再读入:
type
FilsStr=record
nfh:smallint;
nname:Array[0..19] of char;
pname:Array[0..19] of char;
...
end;
 
to balaschen:
用你的方法读了前几个数据是正确的,但到后面似乎不对。有两个问题请赐教:
1、怎样判断数据文件的文件头在1024字节结束?
2、unsigned char datatype[30]和unsigned short pre[30]在DELPHI下怎样表示。
 
》1、怎样判断数据文件的文件头在1024字节结束?
无法判断文件头在在哪里结束,除非文件头有特殊的结束标志。
你定义一个同文件头结构相同的记录变量Buf用BlockRead(YourFile,Buf,1024)即可读出文件头

2、你应该先知道你的C编译器的数据类型的长度和范围
unsigned char datatype[30]>>datatype:array[0..29] of char;//假设unsigned char 长度为8
unsigned short pre[30]>>pre:array[0..29] of word;//假设unsigned short为16位。
给你贴Delphi中的数据类型说明,你自己对照着写吧
Shortint signed 8bit -128..127
Byte unsigned 8bit 0..255
Smallint signed 16bit -32768..32767
Word unsigned 16bit 0..65535
Integer signed 32bit -2147483648..2147483647
LongInt signed 32bit -2147483648..2147483647
Cardinal unsigned 32bit 0..4294967295
LongWord unsigned 32bit 0..4294967295
Int64 signed 64bit -2^63..2^63

 
C的头文件是text呵
你定义textfile然后readln(s)不就行了?
 
to balaschen:
受兄弟启发,这个文件头终于读出来了,感谢兄弟的帮助,小弟发分了。
 
后退
顶部