Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Компоненты

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: Z021474945171 Webmoney WME: E159284508897 Webmoney WMUSDT: T206853643180
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!

 
 
Опции темы Опции просмотра Language
Старый 07.11.2008, 22:37   #11
hack
Старожил
 
Аватар для hack
 
Пол:Мужской
Регистрация: 27.05.2005
Адрес: Тверь (Первомайка)
Сообщений: 1,929
Репутация: 3260
По умолчанию Re: Запросы на компоненты

Добрый вечер уважаемые!
Возникла задача - ведение Log_a, вроде бы просто:
Код:
procedure TForm1.AddLog(LogString, 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;

AddLog((DateToStr(Date)+' '+TimeToStr(Time))+' '+'...Test...' ,extractfilepath(application.exename) + 'Log.log');
Ограничение по количеству строк нашел:
Код:
function TForm1.WriteLog(LogFileName, Log: string;
  StrLimit: Integer): Integer;
var
  F: TextFile;
  function CheckLogFile: Integer;
  var
    I, Diff: Integer;
    FStr: TstringList;
  begin
    FStr := TStringList.Create;
    FStr.LoadFromFile(LogFileName);
    Diff := 0;
    if FStr.Count > StrLimit then
    begin
      Diff := FStr.Count - StrLimit;
      AssignFile(F, LogFileName);
      Rewrite(F);
      for I := Diff to FStr.Count - 1 do
        WriteLn(F, FStr[i]);
      CloseFile(F);
    end;
    Result := FStr.Count - Diff;
    FStr.Free;
  end;
begin
  Result := 0;
  if StrLimit < 1 then
    Exit;
  try
    AssignFile(F, LogFileName);
    if FileExists(LogFileName) then
      Append(f)
    else
      Rewrite(F);
    WriteLn(F, Log);
    Closefile(f);
  except Exit;
  end;
  Result := CheckLogFile;
end;

WriteLog(ExtractFilePath(Application.ExeName) +'MyLog.log','...Test...',50)
В связи с тем, что в него пишутся ответы по SNMP - периодичность 100мс, хотелось бы иметь ограничение на размер 1,5-2,5 метров,а то log растет, паразит, как на дрожжах.
Попробовал JVCL_log - но увы размер в оперативке (при свернутой в трей программе) - через 20 минут работы приводит к экцепшену.
Прошу совета - либо кусок кода, либо ссылку на ПРОВЕРЕННЫЙ компонент.
Заранее спасибо.
__________________
У победы много отцов, поражение всегда сирота.

Последний раз редактировалось hack; 07.11.2008 в 23:28..
hack вне форума
 
Ответить с цитированием Вверх
 


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сетевые компоненты frostmourne Delphi 9 07.02.2011 11:30
Бесплатные компоненты Gerasoft Компоненты 16 17.03.2009 14:04
Компоненты ErrorMs Компоненты 708 25.12.2007 17:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 23:41. Часовой пояс GMT +3.


Copyright ©2004 - 2025 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 1.27213 секунды с 12 запросами