erikjacobsens eksempel kan kun lade sig gøre pga. bagud kompatibilitet m. tidligere varianter af Pascal. Brug doc404's som måden man gør tingene på i Delphi Pascal.
Tak for svaret, det var lige så simpelt som jeg forventede men jeg kunne ikke finde løsningen. Efter hrc's kommentar har jeg valgt doc404's løsning, hvis doc404 lægger et svar så er der point. //PZ
*g* Ja, den var god! Mit eksempel er ikke "bagud" kompatibelt med Pascal. Det ér Pascal. At Borland så har lavet noget, der egentlig er smartere, er en helt anden sag. Skal man lave portabel Pascal kode, kan man ikke bruge Result-variablen.
Nu skal jeg ikke lægge arm med en af de "store", men jeg har læst dokumentation hvori der står at det er noget der stammer fra Borland Pascal (og det her er Delphi Pascal), så bør man bruge 'result'. Begge ting fungerer dog, men jeg synes at 'result' er smartere idet man kan skifte navn på funktionen uden at skulle skifte det ned gennem koden.
Der er også rekursivitet at være opmærksom på:
function MyGod1 : integer; begin result := 10; result := result * 2; result := result + 1; end;
vil returnere 21 mens funktionen:
function MyGod2 : integer; begin MyGod2 := MyGod2 * 2; end;
vil afstedkomme stak overflow idet MyGod2, på højre side af tildelingsoperatoren, vil kalde funktionen endnu engang og igen vil kalde funktionen osv...
Så du har ret i, at det er en del af Pascal-standarden - men den er der ikke med Borlands gode vilje.
Undskyld i øvrigt til erik. Ville ikke være hofsnog og snyde dig for points, men jeg syntes altså doc404's eksempel var bedst.
Hvor tit har man i øvrigt taget Delphi-kode og flyttet den til noget andet?
Som programmør, med erfaring tilbage til Compass Pascal (har vist endda PolyPascal liggende), har jeg ikke brugt denne syntaks efter Delphi introducerede 'result'.
Jeg siger også, at den er smartere. Det er den. Men det er ikke standard Pascal. Har man ikke brug for at flytte er det jo ligemeget. Ude i den store, rigtige, og virkelige verden kan portabilitet være et argument for kodningsstandarder i den stil vi snakker om her.
Jeg anfægter blot at du indirekte udnævner Delphi til Pascal. Det er ikke de "tidligere varianter" af Pascal, der er underlige. Det er Delphi, der en variant af Pascal.
Idag er Delphi nok den eneste udbredte Pascal compiler. Så porterings behovet er alene af den grund minimalt. Endvidere vil et typisk Delphi program nok indeholde Delphi specifik kode som er betydeligt vanskeligere at portere end brug af result.
Men nogen (bl.a. mig) har nogle principielt positive holdninger til standarder.
Der er andre Pascal-er i verden, trods alt. Delphi er dog et godt bud til en grafisk grænseflade.
Laver man kode på en bare nogenlunde fornuftig måde, vil man adskille fx den grafiske præsentation og forretningslogik. Der er nok ganske meget Delphi-specifik kode i forbindelse med den grafiske præsentation, men der behøver intet være i forretningslogikken, der ved at overholde passende standarder kan genbruges andre steder, på andre platforme, men i samme system.
Men det er i denne sammenhæng en helt akademisk diskussion, da spørgeren ikke har noget af dette i tankerne, og ej heller næppe får behov for det.
Jeg anfægter ikke, at Delphi er en variant af Niklaus Wirths Pascal. Bruger man ArneV's ord, så er Delphi efterhånden standarden - og så har jeg da lidt ret, ikke? (jeg fisker)
Jeg kan skam også lide standarder, kan næsten ikke leve uden dem, standarderne (;-)), og prøver at følge dem stringent. En eller anden lærebog har skrevet at "funktionsnavnet" kun var med pga. bagud kompatibilitet og det har jeg registreret. At det så er en halv sandhed, er en anden sag.
Jeg forlader diskussionen her, inden moderatorerne griber ind.
Det var en voldsom debet som jeg blander mig udenom. Tak for svarene. //PZ
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.