Добавляем автоматическую обработку ошибок
На форме располагаем стандартный компонент ApplicationEvents и в обработке события OnException компонента пишем строки: (многоточие - пишите Ваш код, вся суть в другой части кода)
uses ...SyncObjs... Public CheckEvent: TEvent; ClassRef: TClass; ... procedure TForm1.ApplicationEvents2Exception(Sender: TObject; E: Exception); var LogFile: TextFile; ClassTree: String; begin // обработка исключений в программе AssignFile(LogFile,ExtractFilePath(paramstr(0))+'errors.log'); if FileExists(ExtractFilePath(paramstr(0))+'errors.log') then begin Append(LogFile); WriteLn(LogFile); end else begin ReWrite(LogFile); WriteLn(LogFile,'ФИО пользователя: '+...); WriteLn(LogFile,'Эл. адрес: '+...); WriteLn(LogFile,'Серийный номер: '+...); WriteLn(LogFile,'-------------------------------------------------------------'); WriteLn(LogFile,'Платформа: '+...+' (ver. '+...+' build '+...+')'); WriteLn(LogFile,'Тип процессора: '+...); WriteLn(LogFile,'Память: '+...+' кб'); WriteLn(LogFile,'Сист. пользователь: '+...); WriteLn(LogFile,'============================================================='); WriteLn(LogFile); end; WriteLn(LogFile); WriteLn(LogFile,DateToStr(Date)+' '+TimeToStr(Time)); WriteLn(LogFile,'-------------------------------------------------------------'); ClassTree:=E.ClassName; ClassRef:=E.ClassType; while ClassRef.ClassParent<>nil do begin ClassRef:=ClassRef.ClassParent; ClassTree:=ClassRef.ClassName+' => '+ClassTree; end; WriteLn(LogFile,ClassTree+':'); WriteLn(LogFile,E.Message); WriteLn(LogFile,'-------------------------------------------------------------'); Flush(LogFile); CloseFile(LogFile); Application.MessageBox('Во время работы программы возникла ошибка. Данные об ошибке сохранены в файл errors.txt. По возможности передайте файл разработчикам.', 'Ошибка в программе',mb_ok+mb_IconError); end;
В общем, в результате добавления следующего кода в Вашу программу, собирание ошибок программы представляет собой более приятный процесс…
Автор статьи - Калашников [Silent] Игорь
Комментарии