Delphirus - прграммирование на delphi
   Все о delphi Delphirus - прграммирование на delphi
blocks.gif
Навигация
 

Главная
Статьи
Базы данных
Графика
Защита
Интернет
Система
Тексты
Мультимедиа
Файлы
Формы и окна
Другое
Советы
Базы данных
Графика
Интернет
Мультимедиа
Система
Тексты
Файлы
Файлы
Исходники
Компоненты
Инфо
Поиск по сайту
Обратная связь
Самое популярное
Аккаунт
Карта сайта

 
 
 

Советы по delphi \ Файловая система \ Файлы \ Ведение 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;

Название: Ведение log файлов
Дата публикации: 2004-06-14 (3454 Прочтено)

 
 

 

Page generation 0.038 seconds