![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
automax |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 30.9.2002 Репутация: нет Всего: нет |
Мне нужно вести Log файл. Причем нужно сделать так, чтобы он не превысил 200Кб. Можно ли как-нибудь писать в начало файла и усекать его по достижении определнного размера. Напишите, функции с помощью которых это можно сделать, используя winapi или visual С++ 6.0.
|
|||
|
||||
AndyY |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
Усекать - без проблем, позиционируешься на нужное место и SetEndOfFile.
С добавлением строк в начало - сложнее, можно так попробовать: вычислить длину добавляемой в начало строки, CreateFile, дописать в конец нужное число байт (если файл конечно не привысил максимальный размер) CreateFileMapping, MapViewOfFile сдвинуть все в конец при помощи memmove скопировать в начало добавляемую строку UnmapViewOfFile и закрыть все handle |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Если делать так, как предлагает AndyY, то достаточно один раз спроецировать файл на память, а потом работать только с функциями memmove, memcpy.
З.Ы, для работы с Log-файлом может пригодиться вот этот пример из C++ FAQ: http://forum.vingrad.ru/index.php?showtopic=23731 -------------------- ![]() |
|||
|
||||
AndyY |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
mr.DUDA
Я в свое время так и не нашел функций, которые позволяют на лету изменять размер проекции файла. поэтому - открывать маппинг при каждой записи (чтобы не делать сразу файло максимального размера) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |