michaenh Skrevet 7. august 2003 Del Skrevet 7. august 2003 Hei. Programmet mitt skal sjekke en del før den starter opp. Dersom alle sjekkene er sant så kjøre programmet. Som jeg vet kan jeg gjøre dette på to måte: 1. if og if else setninger... ganske mange. 2. En for løkke x med case setninger. Dersom det er false->break og close; Hva synes dere er best? Er det noen andre måter å gjøre det på? michael Lenke til kommentar
Format71 Skrevet 7. august 2003 Del Skrevet 7. august 2003 Hva med exceptions? procedure CheckDitt; begin if Ditt <> HvaDetSKulleHaVært then raise EMinEgenExceptionKlasse; end; begin try CheckDitt(); CheckDatt(); except On E:EMinEgenExceptionKlasse do Siden EMinEgenExceptionKlasse har blitt kastet skal ikke applikasjonen kjøre. Derfor avslutter vi den her på ett eller annet vis... end; end; Alternativt med bruk av returverdier: function CheckDitt: boolean; begin result := Ditt = HvaDetSKulleHaVært; end; begin if (not CheckDitt) or (not CheckDatt) then AvsluttApplikasjonen; end; Det er i if'ens natura at den ikke sjekker alt dersom den ikke trenger. Hvis CheckDitt returnerer false vil du får en 'not false' som er true, og dermed vil if'en være true uansett hva CheckDatt returnerer. Dermed vil ikke applikasjonen bruke tid på å kalle CheckDatt før den kaller AvsluttApplikasjonen. Exception-måten er jo litt mer fancy, men man kan fort komme inn i en diskusjon om det er 'riktig bruk' av exceptions eller ikke og om man vil få en liten performance svikt i forhold til if-metoden. Har litt problemer med å se at en while-løkke er noen god løsning. Tenker du på noe slikt som dette? (Bruker repeat fordi det er mer logisk enn while...) repeat case i of 0: avslutt := not CheckDitt; 1: avslutt := not CheckDatt; end; inc(i); until (i = 2) or (avslutt=true); Det er jo en mulig og litt fancy løsning forsåvidt, men om det er en lesbar lett forstålig løsning vet jeg ikke... Men gjør det slik du selv vil. Fungerer det så er det riktig. Etterhvert som du får mere erfaring vil du kanskje se at løsningen du har valgt har en eller annen svakhet og da ser du kanskje at du vil gjøre det annerledes neste gang osv... -Vegar Lenke til kommentar
michaenh Skrevet 7. august 2003 Forfatter Del Skrevet 7. august 2003 Hei. function StartWork: boolean var I: integer; begin result := true; for I:=0 to x do begin case I of 0: begin if not SjekkDitt() then return := false; break; end; 1: 2: . . . x end; end; end; Slik har jeg gjort det foreløpig. Men forslaget ditt høres også bra ut.. Lenke til kommentar
michaenh Skrevet 7. august 2003 Forfatter Del Skrevet 7. august 2003 skrev feil her sånn, men det visste vel de fleste av dere... 0: begin if not SjekkDitt() then //dersom sjekk ditt ikke sjekkes begin return := false; //start arbeid skal ikke fortsette break; //hopper av case og løkke end; end 1: .... //neste case 8) Lenke til kommentar
michaenh Skrevet 7. august 2003 Forfatter Del Skrevet 7. august 2003 Uff det ble stygt med den forrige eksemplet.. prøver igjen jeg.. 0: begin if not SjekkDitt() then //dersom sjekk ditt ikke sjekkes begin return := false; //start arbeid skal ikke fortsette->false break; //hopper av case og løkke end; end; 1: .... //neste case Lenke til kommentar
michaenh Skrevet 7. august 2003 Forfatter Del Skrevet 7. august 2003 jeg gir opp.. hehe.. i forhåndsvisning så det bra ut... men det spiller ingen rolle... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå