Avatar billede mysitesolution Nybegynder
13. august 2003 - 20:55 Der er 16 kommentarer og
1 løsning

Simulering af fejl

Jeg har fået lavet mig en OnException procedure, men hvordan tester jeg den? Kan man ikke simulere en fejl eller noget?
Avatar billede arne_v Ekspert
13. august 2003 - 21:07 #1
Det kan du vel sagtens.

Division med nul er formentlig en af de nemmeste af simulere.
Avatar billede jelzin101 Praktikant
13. august 2003 - 21:07 #2
nu har jeg aldrig lavet noget delphi og kender ikke sproget men nedenstående skulle give et godt udgangspunkt->

function Fact(i);
begin
if (i == 1) then Return  1
else Return i * Fact(i);
end;

og så kald
fact(0)

så vil den ret sikkert komme med en outofmemory  eller tilsvarende:)
Avatar billede mysitesolution Nybegynder
13. august 2003 - 21:12 #3
arne_v - Hvordan?

jelzin101 -  Din funktion virke rikke
Avatar billede jelzin101 Praktikant
13. august 2003 - 21:15 #4
for at citere mig selv :
"Nu har jeg aldrig lavet noget delphi og kender ikke sproget men nedenstående skulle give et godt udgangspunkt"

betydende - jeg giver dig noget pseudoagtig kode som du så selv skal lave om til gyldig delphi syntax. hvilket ikke burde volde de store problemer.
Avatar billede mysitesolution Nybegynder
13. august 2003 - 21:17 #5
jep jep...så det nu
Avatar billede arne_v Ekspert
13. august 2003 - 21:17 #6
i := 0;
  i := 1 div i;

bør give en exception !
Avatar billede mysitesolution Nybegynder
13. august 2003 - 21:22 #7
nope... det gør den ikke
Avatar billede mysitesolution Nybegynder
13. august 2003 - 21:24 #8
Jo nu gør den, hvis jeg satte en showmessage(inttostr(i)); ind efter, så gjorde den
delphi har jo slettet det når det ikke blev brugt åbenbart
Avatar billede arne_v Ekspert
13. august 2003 - 21:24 #9
Hvis i er erklæret integer og du sætter i til nul og derefter
dividerer et med i, så skal du få en exception.
Avatar billede arne_v Ekspert
13. august 2003 - 21:25 #10
Nå.

OK virkede din OnException så ?
Avatar billede mysitesolution Nybegynder
13. august 2003 - 21:25 #11
Ved ikke om du lige vil hjælpe lidt til? Når jeg kører den så går den ikke over på min egen  procedure

jeg har sat Application.OnException := minprocedure;
Avatar billede mysitesolution Nybegynder
13. august 2003 - 21:26 #12
procedure TfrmMain.MyExceptions(Sender: TObject; E: Exception);
begin
  MessageDlg('Der er fundet en fejl' + #13#10#13#10 + 'Fejlnavn: ' + E.ClassName + #13#10 + 'Fejl: ' + E.Message, mtError, [mbOK], 0);
end;
Avatar billede arne_v Ekspert
13. august 2003 - 21:30 #13
Jeg er ikk ehelt sikker på at jeg forstår din kode.

Application.OnException := minprocedure

procedure TfrmMain.MyExceptions

hvor bliver minprocedure og MyExceptions koblet ?
Avatar billede mysitesolution Nybegynder
13. august 2003 - 21:32 #14
Application.OnException := frmMain.MyExceptions;

procedure TfrmMain.MyExceptions(Sender: TObject; E: Exception);
begin
  MessageDlg('Der er fundet en fejl' + #13#10#13#10 + 'Fejlnavn: ' + E.ClassName + #13#10 + 'Fejl: ' + E.Message, mtError, [mbOK], 0);
end;
Avatar billede armena Nybegynder
13. august 2003 - 21:33 #15
procedure TfrmMain.MyExceptions(Sender: TObject; E: Exception);
begin
E.Message := 'Der er fundet en fejl' + #10+#10+'Fejl:'+#10+E.Message;
Application.ShowException(E);
end;

Skriv det her i din Form create:
Application.OnException := MyExceptions;
Avatar billede mysitesolution Nybegynder
13. august 2003 - 21:38 #16
arne_v - Vil du have noget points, så lig et svar, ellers får armena dem..

ps hjalp efter jeg satte application.onexception i OnCreate
Avatar billede arne_v Ekspert
13. august 2003 - 21:40 #17
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester