Ведение log файловDelphi , Файловая система , ФайлыВедение log файлов
Автор: Separator { **** UBPFD *********** by delphibase.endimus.com **** >> Ведение log файлов С помощью этих процедур можно вести log. procedure AddLog(LogString: String; LogFileName: string); - добавляет одну строку к log файлу procedure GetLog(Count: integer; Strings: TStrings; LogFileName: string); - возвращает последние Count записей Зависимости: Classes, SysUtils Автор: Separator, vilgelm@mail.kz, Алматы Copyright: Вильгельм Сергей Дата: 8 января 2003 г. ***************************************************** } procedure AddLog(LogString: string; LogFileName: string); var F: TFileStream; PStr: PChar; LengthLogString: integer; begin LengthLogString := Length(LogString) + 2; LogString := LogString + #13#10; PStr := StrAlloc(LengthLogString + 1); StrPCopy(PStr, LogString); if FileExists(LogFileName) then F := TFileStream.Create(LogFileName, fmOpenWrite) else F := TFileStream.Create(LogFileName, fmCreate); F.Position := F.Size; F.Write(PStr^, LengthLogString); StrDispose(PStr); F.Free; end; procedure GetLog(Count: integer; Strings: TStrings; LogFileName: string); var F: TFileStream; PStr: PChar; St: string; i, LenBlock, LenFirstString, LenTemp: integer; TempStrings: TStringList; begin if FileExists(LogFileName) then begin LenBlock := 4000; TempStrings := TStringList.Create; F := TFileStream.Create(LogFileName, fmOpenRead); F.Position := F.Size; LenFirstString := 0; PStr := StrAlloc(LenBlock); repeat if F.Position - LenBlock < 0 then begin LenBlock := F.Position; StrDispose(PStr); PStr := StrAlloc(LenBlock); end; F.Position := F.Position - LenBlock; F.Read(PStr^, LenBlock); St := PStr; SetLength(St, LenBlock); TempStrings.Text := St; F.Position := F.Position - LenBlock; if F.Position <> 0 then begin LenFirstString := Length(TempStrings.Strings[0]); TempStrings.Delete(0) end else LenFirstString := 0; F.Position := F.Position + LenFirstString; for i := TempStrings.Count - 1 downto 0 do begin Strings.Add(TempStrings.Strings[i]); if Strings.Count = Count then begin F.Free; TempStrings.Free; StrDispose(PStr); exit end end; until F.Position = 0; StrDispose(PStr); F.Free; TempStrings.Free end end; Пример использования: procedure TForm1.Button1Click(Sender: TObject); begin AddLog(Edit1.Text); end; procedure TForm1.Button2Click(Sender: TObject); begin ListBox1.Items.Clear; GetLog(50, ListBox1.Items); end; Статья Ведение log файлов раздела Файловая система Файлы может быть полезна для разработчиков на Delphi и FreePascal. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |