Ведение log файлов

Советы » Файлы » Ведение log файлов

{ **** 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

;

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com