Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Создание log файла


Автор: automax 30.5.2004, 19:12
Мне нужно вести Log файл. Причем нужно сделать так, чтобы он не превысил 200Кб. Можно ли как-нибудь писать в начало файла и усекать его по достижении определнного размера. Напишите, функции с помощью которых это можно сделать, используя winapi или visual С++ 6.0.



Автор: AndyY 31.5.2004, 08:47
Усекать - без проблем, позиционируешься на нужное место и SetEndOfFile.
С добавлением строк в начало - сложнее, можно так попробовать:
вычислить длину добавляемой в начало строки,
CreateFile,
дописать в конец нужное число байт (если файл конечно не привысил максимальный размер)
CreateFileMapping, MapViewOfFile
сдвинуть все в конец при помощи memmove
скопировать в начало добавляемую строку
UnmapViewOfFile и закрыть все handle

Автор: mr.DUDA 31.5.2004, 10:46
Если делать так, как предлагает AndyY, то достаточно один раз спроецировать файл на память, а потом работать только с функциями memmove, memcpy.

З.Ы, для работы с Log-файлом может пригодиться вот этот пример из C++ FAQ:
http://forum.vingrad.ru/index.php?showtopic=23731

Автор: AndyY 31.5.2004, 12:39
mr.DUDA
Я в свое время так и не нашел функций, которые позволяют на лету изменять размер проекции файла.
поэтому - открывать маппинг при каждой записи (чтобы не делать сразу файло максимального размера)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)