|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | 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). Подскажите, как исправить? Или может у кого-нибудь есть по лучше способ избавиться от большого лога? |