![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Нужно сделать так, чтобы файл логов не разростался.
Делаю так: если файл больше определенного размера, то переименовываю его и создаю новый. Нагуглил пару порцедурок. Код:
function FileSize(fileName : wideString) : Int64; var sr : TSearchRec; begin if FindFirst(fileName, faAnyFile, sr ) = 0 then result := Int64(sr.FindData.nFileSizeHigh) shl Int64(32) + Int64(sr.FindData.nFileSizeLow) else result := -1; FindClose(sr) ; end; Код:
procedure AddToLog(s:string); var fn:string; F:TextFile; name: string; begin Fn:=ExtractFilePath(ParamStr(0))+'log.txt'; assignFile(f,fn); if FileExists(fn) then begin // ShowMessage(IntToStr(FileSize(fn))); if FileSize(fn) > 100 then begin name := 'log'+DateTimeToStr(Now); name := StringReplace(name, '.', '-', [rfReplaceAll, rfIgnoreCase]); name := StringReplace(name, ':', '-', [rfReplaceAll, rfIgnoreCase]); name := name + '.txt'; RenameFile(fn,ExtractFilePath(ParamStr(0)) + name); end else begin Append(f); end; end else Rewrite(f); Writeln(f, DateTimeToStr(Now)+s); Flush(f); CloseFile(f); end; Первая проблема, не работает if FileSize(fn) > 100, наверно из-за разных типов данных. Вторая, вылетает ошибка I/O error 103 после строки кода: RenameFile(fn,ExtractFilePath(ParamStr(0)) + name); Файл при этом переименовывается, но не создается новый (log.txt). Подскажите, как исправить? Или может у кого-нибудь есть по лучше способ избавиться от большого лога? |