我们有一个经常被损坏的表,并出现"Not a table“错误。运行DBF Doctor的演示版本时,它报告标题有错误的记录计数。
看看我能找到的一个例子,我真的不确定如何使用256为基数来计算记录数。
字节4-7具有DBF中的记录数。
(https://www.dbf2002.com/dbf-file-format.html)
我使用一个小Java程序读取的DBF标头的前10个字节是:
0 -> 0
1 -> 20
2 -> 3
3 -> 31
4 -> 81
5 -> 113
6 -> 0
7 -> 0
8 -> 0
9 -> 0
10-> 0
谁能帮我弄清楚如何计算DBF中的记录数?
我想看看我是否可以写一个快速实用程序来解决这个问题。
提前谢谢你,
发布于 2020-04-06 21:31:06
您可以通过乘以256来计算行数。对于每个字节(从最低到最高有效),必须将该字节的值乘以(256^n)。
对于您的示例:
81 = 81
113 * 256 = 28928
0 * 256 * 256 = 0
0 * 256 * 256 * 256 = 0
81 + 28928 + 0 + 0 = 29009
计算也是在this thread中讨论的,但它是FoxPro代码。
通过使用Hex-Editor查看您的dbf,可以更好地理解这个主题。
发布于 2020-04-09 20:58:00
如果您确实有VFP可用,
VFP Code to fix file headers是可用的,可以直接在VFP中完成。相对简单的程序,通过低级别的文件打开/写入操作来计算文件头记录的计数、修复和调整。我在过去不止一次使用过。
https://stackoverflow.com/questions/61031245
复制相似问题