Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 Я в свое время так и не нашел функций, которые позволяют на лету изменять размер проекции файла. поэтому - открывать маппинг при каждой записи (чтобы не делать сразу файло максимального размера) |