![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание логов [D5, D7, Win2k, WinXP]
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.