Как я могу увеличить длину отображаемого в памяти файла?
В Delphi 7 я открываю файл с помощью CreateFileMapping, а затем получаю указатель с помощью MapViewOfFile.
Как я могу расширить память и добавить некоторые символы в память и сохранить ее в этом файле?
Я уже открыл файл с соответствующими режимами (fmOpenReadWrite, PAGE_READWRITE), и если я перезаписываю символы, он сохраняется в файл, но мне нужно добавить дополнительные значения в середине файла.
2 ответа
Если сопоставление файлов поддерживается действительным файлом, а не блоком памяти, вы можете изменить размер файла одним из двух способов:
1) звонок CreateFileMapping()
с размером, который превышает текущий размер файла. Размер файла будет изменен в соответствии с новым отображением.
2) использовать SetFilePointer()
а также SetEndOfFile()
изменить размер файла напрямую, затем вызвать CreateFileMapping()
с новым размером.
Оба условия описаны в документации для CreateFileMapping()
,
Вы не можете изменить размер сопоставления файла, созданного с CreateFileMapping
когда он уже создан. Смотрите предыдущее обсуждение на тему: Windows: изменение размера общей памяти.