Avatar billede ttopholm Nybegynder
18. maj 2004 - 00:24 Der er 13 kommentarer og
2 løsninger

Kalde funktion igen

Jeg har denne funktion:

forskel = datediff("s", rs("time"),tidnu)


FUNCTION beregn (tid)
  tid1=0
  tid2=0
  tid3=0
  tid4=0
  if tid < 60 then
    tid1 = tid
  end if
 
  if tid >= 60 and tid < 3600 then
    tid2 = int(tid/60) 'minutter
    tid10 = tid  mod 60
    beregn(tid10)
  end if
 
  if tid >= 3600 and tid < 86400 then
    tid3 = int(tid/3600) 'timer
    tid11 = tid mod 3600
    beregn(tid11)
  end if

  if tid >= 86400 then
    tid4 = int(tid/86400) 'dage
    tid12 = tid mod 86400
    beregn(tid12)
  end if
  beregn = tid4 & " Dage, "& tid3 &" Timer, " & tid2 & " Minutter, " & tid1 & " sekunder."
END FUNCTION

Som i kan se, bruger jeg flere steder at funktionen kalder sig. men den skriver kun det første den beregner.. fx. hvis jeg tester beregn(4080) kører den så ned til:
if tid >= 3600 and tid < 86400 then
og kører den, men der er jo noget rest så vil jeg gerne havde den til at gøre igen med rest som i kan se jeg gør her beregn(tid11).. men det gør den ikke fordi det eneste den returnere i funktionen er timenantallet.. og så går den ud af funktion... Hvorfor
Avatar billede michael_stim Ekspert
18. maj 2004 - 00:28 #1
En funktion kan kun returnere en variabel. Så skal du sätte dit resultat i en array.
Avatar billede ttopholm Nybegynder
18. maj 2004 - 00:35 #2
så jeg kraver f.eks lave myarray(0) = tid11 & "Sek."

myarray(1) = tid10 & " blalala"

også sætter bregn = myarray

eller hvad
Avatar billede ttopholm Nybegynder
18. maj 2004 - 00:53 #3
Men hov den holder jo ikke helt.... fordi den skriver faktisk
0 Dage, 2 Timer, 0 Minutter, 0 sekunder 

Fordi jeg har sat dem som 0 i starten... hvis jeg ikke havde def. dem til 0 øverst var det bare tomt.. så den kan umiddelbart returnere mere end en variabel..
Avatar billede pfp Nybegynder
18. maj 2004 - 00:57 #4
ttopholm -> Nej den returnerer kun en variabel, 'beregn'. Beregn er jo bare én enkelt variabel der består af de andre konkateneret.
Avatar billede ttopholm Nybegynder
18. maj 2004 - 00:59 #5
ja.. hvordan skal jeg så gøre det....
Avatar billede pfp Nybegynder
18. maj 2004 - 01:02 #6
Jeg skal lige forstå helt præcist hvad det er du gerne vil først.

Du har en værdi, forskel, som er et antal sekunder. Dette antal sekunder vil du gerne have vist i formatet dage-timer-minutter-sekunder?
Avatar billede ttopholm Nybegynder
18. maj 2004 - 02:17 #7
Ja.. faktisk... vil gerne have det ud i dt du siger... :-)
Avatar billede pfp Nybegynder
18. maj 2004 - 02:36 #8
Jeg har banket en funktion sammen til dig som klarer ærterne:

<%
' sets the current landcode id to Danish
Session.LCID = 1030

myDateTime = "17-05-2004 01:02:03"

Function FormatDateTimeNicely(foo)
    dateDifference = DateDiff("s", foo, Now())
   
    ' calculation days
    intDays = dateDifference / 86400
    tempArray = Split(intDays, ",")
    intDays = tempArray(0)
    leftOvers = DateDifference mod 86400
   
    ' calculation hours
    intHours = leftOvers / 3600
    tempArray = Split(intHours, ",")
    intHours = tempArray(0)
    leftOvers = leftOvers mod 3600
   
    ' calculation minuttes
    intMinuttes = leftOvers / 60
    tempArray = Split(intMinuttes, ",")
    intMinuttes = tempArray(0)
    leftOvers = leftOvers mod 60
   
    ' calculation seconds
    intSeconds = leftOvers
   
    ' fancies up output
    If intDays = 1 then
        strDayText = "dag"
            else
        strDayText = "dage"
    End if
   
    If intHours = 1 then
        strHourText = "time"
            else
        strHourText = "timer"
    End if
   
    If intMinuttes = 1 then
        strMinuttesText = "minut"
            else
        strMinuttesText = "minutter"
    End if
   
    If intSeconds = 1 then
        strSecondsText = "sekund"
            else
        strSecondsText = "sekunder"
    End if
   
    FormatDateTimeNicely = intDays & " " & strDayText & ", " & intHours & " " & strHourText & ", " & intMinuttes
    FormatDateTimeNicely = FormatDateTimeNicely & " " & strMinuttesText & ", " & intSeconds & " " & strSecondsText
End function

Response.Write FormatDateTimeNicely(myDateTime)
%>
Avatar billede pfp Nybegynder
18. maj 2004 - 02:37 #9
Funktionen tager et Now() datoformat som parameter, altså fulddato og tid, og regner så forskellen ud i forhold til dags dato :)
Avatar billede ttopholm Nybegynder
18. maj 2004 - 07:37 #10
Din funktion regner rimelig forkert synes.. hvis jeg taster en dato/tid for 10 sek siger den f.eks 1 dag, 3 timer, 0 minutter, 11 sekunder.. selvom der kun er gået 10 sek.
Avatar billede pfp Nybegynder
18. maj 2004 - 10:55 #11
Hmm, det kigger jeg lige på..
Avatar billede ttopholm Nybegynder
18. maj 2004 - 12:32 #12
Klarede den selv med denne:
Function CountDown(Slut)
  s_s = slut
  s_d = s_s Mod 86400
  d = int(s_s / 86400)
  s_t = s_d Mod 3600
  t = int(s_d / 3600)
  s_m = s_t mod 60
  m =  int(s_t / 60)
  s = s_m
 
  CountDown = "" & d & " dage og " & t & " timer og " & m & " minutter og " & s & " sekunder"
End Function
Avatar billede pfp Nybegynder
18. maj 2004 - 18:21 #13
Er du sikker på den er korrekt?
Avatar billede pfp Nybegynder
18. maj 2004 - 18:23 #14
Jo den ser faktisk ud til at være god nok :)
Avatar billede ttopholm Nybegynder
21. juni 2005 - 09:55 #15
Lukker
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