Avatar billede dmg Nybegynder
25. august 2010 - 20:09 Der er 3 kommentarer og
2 løsninger

Loop fejler hver 32767 gang.

Hej Experts,

US keyboard.
Jeg har lavet et script som kalder en funktion der skal kore hvert sekundt i 24 timer.

Det ser ud til at virke helt fint, men problemet er jeg modtager en overflow fejl hver 32767 record.

Sub test()
   
    Dim check As Boolean
    Dim counter As Long
    check = True
    counter = 0
   
    Dim hours As Long
    Dim RunInSeconds As Long
   
    hours = 24
    RunInSeconds = 3600 * hours

    Do
        Do While counter < RunInSeconds + 1
            counter = counter + 1
            If counter = RunInSeconds Then
                check = False
                Exit Do
            End If
        'Call wait4Xsec(1)
        Sleep 1000
        Call take_meas(counter)
        Loop
    Loop Until check = False
End Sub
Avatar billede claes57 Ekspert
25. august 2010 - 20:42 #1
det skal den gøre - et heltal går til ca 64000 - (65536) - og med fortegn (en bit), så kun til det halve (32768-1)
Du skal definere din tæller til et dobbelt-heltal - så kører den langt længere.
Avatar billede arne_v Ekspert
25. august 2010 - 20:53 #2
integer gaar til 32767 men long gaar til 2.1 mia.
Avatar billede dmg Nybegynder
25. august 2010 - 21:48 #3
Arrhh helt sikkert.

Funktionen jeg kalder

"Call take_meas(counter)"

Blev defineret med en integer: Sub take_meas(counter as Integer)

Saa snart jeg andrede den til Sub take_meas(counter as Long)
virkede det fint.

Mange tak boys! Smid et svar begge saa jeg kan give points.
Avatar billede claes57 Ekspert
26. august 2010 - 11:04 #4
ok - nu kender du fejl 32767, såvel som fejl 40.
Avatar billede arne_v Ekspert
27. august 2010 - 00:21 #5
.
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