Utan att veta om logiken stämmer eller inte: du kallar aldrig på funktionen, och funktionen returnerar ingenting. Den borde inte heller ta någon parameter, eftersom du inte ska använda något invärde i funktionen.
Mvh
28 svar · 1 116 visningar · startad av plelkes
Hej,
har försökt mig på ett litet funktion som skall beräkna fram datumet som påskdagen infaller på.
Följande kod har jag snickrat ihop
<%
Session.LCID = 1053
Dim strDate, dteDate, c, n, k, i, j, l, m, d
strDate = Request.Form("year")
dteDate = CDate(strDate)
function ge(easterd)
c = dteDate/100
n = dteDate - 19 * (dteDate/19)
k = (c - 17) / 25
i = c - (c/4) - (c - k )/3 + (19*n) + 15
i = i -30*(i/30)
i = i - (i/28)*(1-(i/28)*(29/(i + 1))*((21 - n))/11)
j = dteDate + (dteDate/4) + i + 2 - c + (c/4)
j = j - 7 * (j / 7)
l = i - j
m = 3 + ( 1 + 40)/44 '// månaden
d = 1 + 28 - 31 * ( m/4) '// dagen
End function
Response. Write "Påskdagen infaller: & easterd
%>
Med ovanstående kod får jag inget skärmutskrift av påskdagen.
Å andra sidan får inte jag ngt felutskrift heller... :h
Utan att veta om logiken stämmer eller inte: du kallar aldrig på funktionen, och funktionen returnerar ingenting. Den borde inte heller ta någon parameter, eftersom du inte ska använda något invärde i funktionen.
Mvh
kallar aldrig på funktionen, och funktionen returnerar ingenting
Trodde att jag gjorde det med
Response. Write "Påskdagen infaller: & easterd
Hur borde det vara?
Den borde inte heller ta någon parameter, eftersom du inte ska använda något invärde i funktionen.
Hur menar du? Jag har ju en formulär, där man väljer år
strDate = Request.Form("year")
dteDate = CDate(strDate)
Menar ni så här:
<%
Session.LCID = 1053
Dim strDate, dteDate, c, n, k, i, j, l, m, d
strDate = Request.Form("year")
dteDate = CDate(strDate)
function easterd()
c = dteDate/100
n = dteDate - 19 * (dteDate/19)
k = (c - 17) / 25
i = c - (c/4) - (c - k )/3 + (19*n) + 15
i = i -30*(i/30)
i = i - (i/28)*(1-(i/28)*(29/(i + 1))*((21 - n))/11)
j = dteDate + (dteDate/4) + i + 2 - c + (c/4)
j = j - 7 * (j / 7)
l = i - j
m = 3 + ( 1 + 40)/44
d = 1 + 28 - 31 * ( m/4)
End function
Response. Write "Påskdagen infaller: " & easterd()
%>
Tyvärr samma nedslående resultat
Du måste returnera något från funktionen också. Nu gör du bara en massa uträkningar som inte används till något.
Jag vet inte heller vilket värde det är tänkt att du vill ha från funktionen, men det vet säkert du.
Mvh
Förresten, ska inte ettan i raden m = 3 + ( 1 + 40)/44 vara ett l? Då förstår jag lite mer, och det ser ut att vara d du vill returnera från funktionen. Eller?
Du har bara kopierat funktionen utan att ha koll på vad den gör, eller hur? :-)
Du har bara kopierat funktionen utan att ha koll på vad den gör, eller hur? :-)
Nej det stämmer inte. Jag har hittat ett "algoritm" som månad och dag för påskens infallande om man har året.
Jag trodde i min nybörjar enfald att jag skall använda mig av en funktion.
Men detta är mitt första försök med att konstruera en funktion
En funktion tar (oftast) emot ett eller flera värden och returnerar ett annat.
Exempel:
Function Addera(a, b)
Addera = a + b
End Function
Response.Write Addera(3, 5)
Detta ger utskriften 8.
dekt: OK jag fattar.
Vilken konstruktion rekomenderar du/ni i mitt fall?
Det beror på vilka värden du vill hämta från funktionen, ju! :-) Säker på att du fattar?
jag fattar det du skrev:
En funktion tar (oftast) emot ett eller flera värden och returnerar ett annat.
Exempel:
kod:--------------------------------------------------------------------------------Function Addera(a, b)
Addera = a + b
End FunctionResponse.Write Addera(3, 5)--------------------------------------------------------------------------------
Detta ger utskriften 8.
Men vet inte hur jag skall anpassa till mina behov :x
om m = månad och d = dag borde du fixa ett slutgiltigt return-värde för funktionen, t.ex. m & "-" & d
Sen skriva ut strDate & "-" & easterd()
som sagt så är jag hellt nybörjare på funktioner..
slutgiltigt return-värde för funktionen, t.ex. m & "-" & d
Hur skulle detta se ut i "min" funktion?
En annan fråga - kan man i ASP skriva formlerna som jag gjorde?
<%
Session.LCID = 1053
Dim strDate, dteDate, c, n, k, i, j, l, m, d
strDate = Request.Form("year")
dteDate = CDate(strDate)
function easterd()
c = dteDate/100
n = dteDate - 19 * (dteDate/19)
k = (c - 17) / 25
i = c - (c/4) - (c - k )/3 + (19*n) + 15
i = i -30*(i/30)
i = i - (i/28)*(1-(i/28)*(29/(i + 1))*((21 - n))/11)
j = dteDate + (dteDate/4) + i + 2 - c + (c/4)
j = j - 7 * (j / 7)
l = i - j
m = 3 + ( 1 + 40)/44
d = 1 + 28 - 31 * ( m/4)
easterd = m & "-" & d
End function
Response. Write "Påskdagen infaller: " & easterd()
%>
Ungefär såhär skulle den kunna se ut, men jag vet inte riktigt vilka returvärden du vill ha. Det finns ju ett antal variabler att välja mellan. Du kanske skulle ta och se över funktionen och göra den enklare?
EDIT: Okey, jag testade funktionen och den gav lite konstiga siffror iaf.
Tyvärr fattar jag inte riktigt vad alla uträkningar gör. Jag tycker att det ser lite väl krångligt ut.
När inträffar påskdagen? Är det någon speciell dag på någon speciell vecka? Skall se om jag kan lösa något.
Håller med om att funktionen returnerar konstiga siffror. Men eftersom jag inte är ngn stjärna på matter, har jag svårt att ändra i formeln. Hittade det hela på denna sida
Mitt syfte är att hitta ett sätt att räkna ut datumet för påskens infallande. För att sedan därifrån kunna ta reda på vissa andra helgdagars infallande
Testa:
<%
Session.LCID = 1053
Dim c, n, k, i, j, l, m, d
function entillnolla(x)
if x < 10 then
entillnolla = "0" & x
else
entillnolla = x
end if
end function
function easterd(y)
c = y \ 100
n = y - 19 * (y \ 19)
k = (c - 17) \ 25
i = c - c \ 4 - (c - k ) \ 3 + 19 * n + 15
i = i - 30 * ( i \ 30 )
i = i - ( i \28 ) * ( 1 - ( i \ 28 ) * ( 29 \ ( i + 1 )) * ((21 - n) \ 11))
j = y + y \ 4 + i + 2 - c + c \ 4
j = j - 7 * ( j \ 7 )
l = i - j
m = 3 + ( l + 40 ) \ 44
d = l + 28 - 31 * ( m \ 4 )
easterd = y & "-" & entillnolla(m) & "-" & entillnolla(d)
End function
Response. Write "Påskdagen infaller: " & easterd(Request.Form("year"))
%>
Jättetack, fungerar som jag har tänkt :birp
Ngra frågor, för att kolla att jag fattat: