У меня проблемы с взаимодействием с огромным файлом данных фиксированной длины.Размер файла превышает 14 ГБ.Я впервые заметил проблему, когда увидел, что возвращаемое значение из функции System.Filesize()
было намного меньше, чем фактическое количество записей в огромном файле, учитывая количество байтов в файле и длину каждой записи.(System.Filesize возвращает количество записей в нетипизированном файле с учетом размера записи, указанного во время вызова Reset()
. Он не возвращает количество байтов в файле).Я записал это в качестве типа возврата System.Filesize()
, представляющего собой Longint вместо Int64.
Я обошел исходную проблему, вызвав GetFileSizeEx()
и рассчитав количество записей самостоятельно.К сожалению, BlockRead()
также терпит неудачу при попытке доступа к записям в файле, смещение которых находится глубоко в файле.Я предполагаю, что снова есть используемые значения, которые переполняются где-то в коде.
Есть ли модуль замены для Delphi 6, который может обрабатывать огромные файлы и является заменой для файла системного блока I/ O звонки?Я стараюсь не кататься, если могу.