Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание логов [D5, D7, Win2k, WinXP]


Страницы:   1 2

Dust ©   (2005-07-26 13:00:00) 

Народ, поделитесь соображениями кто и как пишет логи.
мне интересны общие принцыпы (хочется значть общую организацию).
в общем, насколько я понимаю - нужен отдельный юнит, который должны использовать все остальные юниты, т.е. из остальных юнитов нужно будет вызывать AppendString(,,,,).
Есть ли уже готовые решения на эту тему?


Fay   (2005-07-27 18:05:00) [21]

function SaveDumpToFile(const pt : DWORD; const count : Integer) : Integer;
function DumpToLog(data : dword; const size : dword) : boolean;

Почему такие странные прототипы? pt нигде не используется в качестве DWORD.

Дальше мелочи либо то же самое.
Но в целом очень приятное впечатление, особенно после всяких AssignFileи FileMode := 648)

Удачи.


Fay   (2005-07-27 17:59:00) [22]

2 Dust ©   (27.07.05 14:51) [12]
В общем неплохо. Только вот

1) fname := Pchar(DateTimeToStr(Now()) + '.dump' + IntToStr(GetTickCount()));
Думаю, так делать нельзя. Почему бы не использовать просто строку (fname : String) ?

2)
 //создание файла
 fh := 0;
 fh := CreateFile(fname, GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ, 0, CREATE_NEW, 0, 0);

Зачем первое присвоение?
Зачем GENERIC_WRITE?
Почему 0, а не nil?
Почему CREATE_NEW, а не CREATE_ALWAYS?

3)
if not WriteFile(fh, Pointer(pt)^, count, pCount, nil) then
   begin
     MessageBox(0, 'Debug Unit ' + #10#13 + ' Ошибка записи в файл', nil, MB_OK);
     Result := -1;
     exit;
   end;
 Result := pCount;

 CloseHandle(fh);

Почему не вызывается CloseHandle при неудачной записи?!


Dust   (2005-07-27 14:51:00) [23]

оцените
http://nostdal.org/paste/f7ad5d66f9538874089be31cde7c5f21.html


Fay   (2005-07-26 18:34:00) [24]

2 Dust ©   (26.07.05 18:23) [10]
Поздравляю! Мы тоже поставили (не сегодня, правда) и стало Щястье.


Dust   (2005-07-26 18:23:00) [25]

да блин, занят я был... конденционер устанавливали у себя в кабинете


Fay   (2005-07-26 17:26:00) [26]

2 Dust ©   (26.07.05 15:56) [7]
Ау!


Fay   (2005-07-26 16:09:00) [27]

2 Dust ©   (26.07.05 15:56) [7]
Клади!


Dust   (2005-07-26 15:56:00) [28]

у меня на решение этого вопроса ушло 2,5 часа рабочего времени.
если желаете, то могу выложить модуль.


Fay   (2005-07-26 13:19:00) [29]

2 Dust ©   (26.07.05 13:09) [4]
Готовое решение пишется за 18 минут 39 секунд.


Ega23   (2005-07-26 13:11:00) [30]

2 Fay это не готовое решение, это вообще не решение, к тому же это неудобно.

Это удобно.
Это - вполне нормальное решение.
А готовность - так тебе же деньги за программирование платят, не так ли?


Dust   (2005-07-26 13:09:00) [31]

2 Fay это не готовое решение, это вообще не решение, к тому же это неудобно.


Ega23   (2005-07-26 13:05:00) [32]

Для Exception-лога
Application.OnException.
В нём ставишь запись в лог.
Все исключения передаёшь наверх через raise.


Alexander Panov   (2005-07-26 13:05:00) [33]

http://delphibase.spb.ru/?action=viewtopic&topic=fileini


Fay   (2005-07-26 13:04:00) [34]

2 Dust ©   (26.07.05 13:00)
>> Есть ли уже готовые решения на эту тему?
Есть!
CreateFile + WriteFile + CloseHandle.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо