Как я могу увеличить длину отображаемого в памяти файла? - PullRequest
4 голосов
/ 13 октября 2011

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

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

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

Ответы [ 2 ]

8 голосов
/ 14 октября 2011

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

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

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

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

3 голосов
/ 13 октября 2011

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

...