Как вычислить количество записей в таблице Visual FoxPro, используя байты заголовка? - PullRequest
0 голосов
/ 04 апреля 2020

У нас есть таблица, которая время от времени портится с ошибкой «Не таблица». Запустив демонстрационную версию DBF Doctor, он сообщает, что в заголовке указано неправильное количество записей.

Глядя на один пример, который я смог найти, я не совсем уверен, как выяснить, как вычислить количество записей, используя база 256.

Байты 4-7 имеют количество записей в DBF.

(https://www.dbf2002.com/dbf-file-format.html)

Первые 10 байтов из Заголовок DBF, который я прочитал с помощью небольшой Java программы:

0 -> 0
1 -> 20
2 -> 3
3 -> 31
4 -> 81
5 -> 113
6 -> 0
7 -> 0
8 -> 0
9 -> 0
10-> 0

Может кто-нибудь помочь мне выяснить, как вычислить количество записей в DBF?

Хотите посмотреть, если Я могу написать быструю утилиту для решения этой проблемы.

Заранее спасибо,

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Вы можете вычислить строки, умножив их на 256. Для каждого байта (от младшего к старшему) вы должны умножить значение этого байта на (256 ^ n).

Для вашего примера:

81 = 81
113 * 256 = 28928
0 * 256 * 256 = 0
0 * 256 * 256 * 256 = 0

81 + 28928 + 0 + 0 = 29009

Расчет также обсуждается в этой теме , но это FoxPro Code.

Лучшего понимания этой топики c можно достичь, посмотрев на ваш dbf с помощью Hex-Editor .

0 голосов
/ 09 апреля 2020

Если у вас есть VFP,

Код VFP для исправления заголовков файлов доступен и выполняется непосредственно в VFP. Относительно простая процедура и вычисляет фиксированные значения заголовка файла и корректирует их с помощью низкоуровневой операции открытия / записи файла. Раньше я использовал не раз.

...