Как я могу увеличить длину отображаемого в памяти файла?

В Delphi 7 я открываю файл с помощью CreateFileMapping, а затем получаю указатель с помощью MapViewOfFile.

Как я могу расширить память и добавить некоторые символы в память и сохранить ее в этом файле?

Я уже открыл файл с соответствующими режимами (fmOpenReadWrite, PAGE_READWRITE), и если я перезаписываю символы, он сохраняется в файл, но мне нужно добавить дополнительные значения в середине файла.

2 ответа

Решение

Если сопоставление файлов поддерживается действительным файлом, а не блоком памяти, вы можете изменить размер файла одним из двух способов:

1) звонок CreateFileMapping() с размером, который превышает текущий размер файла. Размер файла будет изменен в соответствии с новым отображением.

2) использовать SetFilePointer() а также SetEndOfFile() изменить размер файла напрямую, затем вызвать CreateFileMapping() с новым размером.

Оба условия описаны в документации для CreateFileMapping(),

Вы не можете изменить размер сопоставления файла, созданного с CreateFileMapping когда он уже создан. Смотрите предыдущее обсуждение на тему: Windows: изменение размера общей памяти.

Другие вопросы по тегам