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 г.
***************************************************** }
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
;
Пример использования:
procedureTForm1.Button1Click(Sender: TObject); begin
AddLog(Edit1.Text); end
; procedure
TForm1.Button2Click(Sender: TObject); begin
ListBox1.Items.Clear; GetLog(50, ListBox1.Items); end
;