Нетривиальная обрезка текстового файла

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Нетривиальная обрезка текстового файла

Сообщение Pantalone » 28.09.2007 (Пт) 20:05

Не соображу как решить задачку.
Пишется текстовый лог, новые данные добавляются в конец, длина добавляемых строк различного размера.
Как реализовать обрезку файла с начала например при достижении им 10 килобайт? И как писать дальше с постоянный вырезкой текста в начале и добавлением нового в конец при соблюдении размера файла 10 кило?

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 28.09.2007 (Пт) 20:18

Проверять чему будет равен размер "существующий файл+добавляемая строка", если больше 10 Кб, то прочитать весь файл в переменную, начиная с определённой позиции (размер добавляемой строки, округлённый до целой строки/строк в начале файла). Удалить старый файл, записать в новый значение из переменной & новую строку.
Salus populi suprema lex

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.09.2007 (Пт) 20:27

Код: Выделить всё
Public Function AddLogText(ByVal sLogText as string,byval sAddableText as string) as string
   AddLogText = Right$(sLogText, 10 * 1024 - Len(sAddableText)) + sAddableText
End Function



Юзание:

Код: Выделить всё
Dim sMyLog as string

' Прочитали из лог-файла 10кб данных в переменную sMyLog

sMyLog = AddLogText (sMyLog, vbNewLine + "[Пятница, 13-ое, полноч] Новая запись в логе!")

' Записали в лог-файл данные из sMyLog

—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 28.09.2007 (Пт) 22:03

Спасибо!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.09.2007 (Вс) 13:30

Перезаписывать весь лог при каждой записи в него -- криво. Если что-то во время перезаписи сломается, лог останется пустым.

Нормальные люди вращают несколько логов.
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 45

    TopList