Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
{ **** 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 г. ***************************************************** } procedureAddLog(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
;
Пример использования:
procedureTForm1.Button1Click(Sender: TObject); begin
AddLog(Edit1.Text); end
; procedure
TForm1.Button2Click(Sender: TObject); begin
ListBox1.Items.Clear; GetLog(50, ListBox1.Items); end
;