25. december 2003 - 22:19Der er
9 kommentarer og 1 løsning
et banalt spørgsmål om if statements og procedures
Jeg har et lille hurtigt spørgsmål... og jeg ved det i grunden godt - men jeg vil blot være 100% sikker på at min antagelse er rigtig.
Jeg har kodet meget i php...og der kan man gøre det at man tjekker om en procedure går godt ved blot at lade proceduren ligge i en if then statement... med den antagelse at den er lig true hvis det er gået godt ..og false hvis et eller andet gik galt.
jeg har en LAAAAAANNNNNNGGGGG procedure i delphi 7.. som connecter til en database flere gange og laver en lang række sql-statements.. jeg vil gerne vide om den gik godt eller ej.
kan man kort sagt gøre følgende: "if tjeckbruger then" ... else ... ?
Kommunerne har digitaliseret indgangen for borgerne. Men bag skærmen håndteres mange arbejdsgange stadig manuelt mellem systemer, mails og organisatoriske siloer.
Enten skal du lave en global variabel, som du selv styrer værdien af inde fra proceduren. Ellers skal du lave proceduren om til en funktion, hvor du returnerer en boolean vha. af variablen Result. Hver gang der er mulighed for en fejlsituation bør du sætte sætningen ind i en Try .. Except struktur.
det lyder rigtigt.. men.. hvordan afgører jeg så i funktionen om de 200 linier går godt?.. jeg kan vel ikke sætte alle linierne ind i en if then statement.. eller?
hmmm.... hvis jeg forstår dig korrekt hrc.. så skal jeg:
1. lave min procedure om til en function. 2. lave en try før al kode.. og fyre én on e: exception do... i exception-delen. 3. siger du at jeg skal initialisere result??!?!.. det lyder lidt underligt. 4. er det virkelig nødvændigt at jeg fyrer en "if not DoThis then raise exception.create('DoThis');" af før enhver delstatement?.. det er vel kun nødvændigt såfremt jeg ønsker at vide hvilken del som gik galt - ikke sandt? Fordi det jeg søger er blot om hele koden gik godt eller ej.
...ps.. jeg forhøjer points for dette spørgsmål til 30.. jeg anede ikke at det var så omfattende :)
ad. 1: Det er korrekt. Hvis du vil sætte noget ind i en if-sætning så er det funktioner.
ad. 2: Konstruktionen:
try try if not KrimseKrams1 then // Hvis det mislykkes... raise exception.create('KrimseKrams1');
if not KrimseKrams2 then raise exception.create('KrimseKrams2'); except on e: exception do raise exception.createfmt('thisfunc'#13#10'%s',[e.message]); end; finally end;
kan jeg godt lide. Her er det en procedure hvori fejlsituationer returneres som exceptions.
I det første eksempel blander jeg det lidt sammen idet jeg bruger exceptions til at skippe intern kode, hvis der sker en fejl undervejs. De udkommenterede linier var for at illustrere, at der var andre løsninger.
3. Det er korrekt at result altid initialiseres, men en god regel er at gøre det først alligevel. Bare vent til du pludselig sidder med C/C++.
Der var to måder at gøre tingene på
result := false try DoSomething; result := true; except end;
eller:
try DoSomething; result := true; except result := false end;
ad. 4: Det er korrekt - i eksemplet var det for at illustrere hvordan man skippede intern kode i tilfælde af fejl. Der er ingen fornuft i at kalde KrimseKrams2 hvis 1'eren fejler.
øhmm... hvordan giver jeg extra points?... jeg kan ikke forhøje til 30points?!?!
Synes godt om
Ny brugerNybegynder
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.