Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2010, 17:37   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
Счастье Как добавить ведение лога в свою программу?

Доброе время суток уважаемые Гуру=)
Хм, в разных программах видел такую фичу.
дописав -debug(или отметив галочку в настройках программы), программа начинает писать в лог все действия которые происходят как со стороны пользователя так и со стороны программы...

Как это организовать?
Человек_Борща вне форума Ответить с цитированием
Старый 19.02.2010, 17:56   #2
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Человек_Борща, ну это смотря что делает твоя программа. например можеш сделать так чтобы после выполнения процедуры сообщение дописывалось в мемо.

Код:
procedure TForm1.Тратаат(Sender: TObject);
begin
  Тратата
  if ComboBox1.Checked = true then // Этот комбобокс в настройках отвечает за ведние лога
    Memo1.Lines.Add('Происходит трататат');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Тратата
  if ComboBox1.Checked = true then 
  begin
    Memo1.Lines.Add('Пользователь нажал кнопку Button1');
    Memo1.Lines.Add('Происходит трататат');
  end;
end;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли

Последний раз редактировалось Marsel737; 19.02.2010 в 18:00.
Marsel737 вне форума Ответить с цитированием
Старый 19.02.2010, 17:59   #3
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Не совсем понятно именно за чем именно вести лог. Ведь над программой могут производиться различные действия(к примеру заносить в лог позиции наведения мышки на кнопку).
Посмотри исходник слежение за папками во вложении
Вложения
Тип файла: zip наблюдение за папками.zip (10.3 Кб, 26 просмотров)
xor eax, eax
xchg [eax], eax

Последний раз редактировалось MalCer; 19.02.2010 в 18:01. Причина: убрал глупость
MalCer вне форума Ответить с цитированием
Старый 19.02.2010, 18:21   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

спасибо.
если конкретнее можно ли предупреждать сообщения об Обращении программы к недопустимому адресу в памяти(acces violatons или OpenError's).. в место них выполнять выход из программы а информацию писать в файл...
Человек_Борща вне форума Ответить с цитированием
Старый 19.02.2010, 18:37   #5
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Конечно можно. Это очень легко. Посмотри на ссылки
http://pblog.ru/?p=89
http://www.delphimaster.ru/articles/errors/index.html
http://www.sql.ru/Forum/actualthread...tid=692167&hl=
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 19.02.2010, 20:25   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...а еще один из форумчан выкладывал специальный модуль для ведения логов.

upd
-------

Цитата:
...всегда выкладываешь полезные вещи
модуль-то apromix-а, так что ему спасибо... а использовать - просто подключаете в uses и используете методы класса
Код:
 procedure Log(LogMessage : string); 
 procedure Log(LogMessage, LogStrValue: string);
 procedure Log(LogMessage: string; LogIntValue : Integer);
класс сам инициируется и денициируется
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 19.02.2010 в 21:02.
raxp вне форума Ответить с цитированием
Старый 19.02.2010, 20:40   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

ого, raxp , спасибо огромное, всегда выкладываешь полезные вещи..
только не понятно как использовать...
=(

можешь привести пример? хатя бы при нажитии кнопки на голой форме?
хочу понять как вообще использовать этот модуль..


---
Обновлено
допустим есть форма с кнопкой:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, mlog;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
d:TmLog;
begin
form2.show;
end;

end.
есть переменная D типа TmLog

как правильно вызвать TmLog(и нужно ли вообще?)
как записать что была вызвана вторая форма? как записывать действия вообще?

пробовал это
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
d:TmLog;
begin
d.Create('Test');
form2.show;
end;
программа послала меня в EAccesViolation....

Последний раз редактировалось Человек_Борща; 19.02.2010 в 21:38.
Человек_Борща вне форума Ответить с цитированием
Старый 19.02.2010, 21:40   #8
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Код:
uses mLog;

procedure TForm1.Button1Click(Sender: TObject);
begin
Log.Log('Запущена Form2');
Form2.Show;
end;
W0LF вне форума Ответить с цитированием
Старый 19.02.2010, 22:03   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Человек_Борща...
var d:TmLog;
begin
d.Create('Test');
повторюсь, класс сам инит-деинит...
Код:
initialization 
...
finalization 
...
W0LF вам уже подсказал
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 19.02.2010, 22:19   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Сообщение от W0LF Посмотреть сообщение
Код:
uses mLog;

procedure TForm1.Button1Click(Sender: TObject);
begin
Log.Log('Запущена Form2');
Form2.Show;
end;
ушёл в EInOutError
с указанием в
исходник mlog
Код:
procedure TmLog.Log(LogMessage: string);
begin
  WriteLn(LogFile, Trim(LogMessage));
end;
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перетащить файл в свою программу SoftKoc Общие вопросы Delphi 5 14.11.2009 21:28
как украсить свою программу с помощью фотошопа Superlotles Мультимедиа в Delphi 12 13.11.2009 11:05
Как записать свою программу в другую? AngelOfDeath Общие вопросы Delphi 1 12.05.2008 06:12
как добавить программу в службы rpy3uH Win Api 9 31.10.2007 20:34