![]() |
![]() ![]() ![]() ![]() |
|
Ведение log файловDelphi , Файловая система , Файлы
Автор: Separator
{ **** UBPFD *********** by delphibase.endimus.com ****
>>
С помощью этих процедур можно вести 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; Переведенный текст: Библиотека Delphi для журналирования событий в файле включает два процедура: AddLog
GetLog
Пример использования Приведенный пример демонстрирует, как использовать эти процедуры в Delphi-форме. Событийный обработчик В статье описано ведение журналов (log файлов) в Delphi с помощью процедур AddLog и GetLog, которые позволяют добавлять строки в лог-файл и извлекать последние записи. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||