/ Forside/ Teknologi / Udvikling / VB Scripts / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB Scripts
#NavnPoint
technet 385
MouseKeep.. 300
Dark_Magi.. 250
Harlekin 200
AntonV 200
natmaden 200
EXTERMINA.. 200
gandalf 160
smorch 139
10  strarup 110
Timer og now()
Fra : KooL
Vist : 1156 gange
200 point
Dato : 15-01-04 23:55

Heysan
Er ved at lære VB fra bunden.
Vi har fået til opgave at lave et verdens ur via timer og now funkrionerne m.m.
jeg kan ikke regne ud hvordan jeg trækker en time fra now()

mit script ser således ud atm.
(vær opmærksom på at alle lande viser den samme tid her)

________________________________________________
Option Explicit

Private Sub CmdKBH_Click()
lblBy.Caption = "København"
TmrKBH.Enabled = True
TmrLondon.Enabled = False
TmrNY.Enabled = False
TmrTokyo.Enabled = False
End Sub

Private Sub CmdLondon_Click()
lblBy.Caption = "London"
TmrKBH.Enabled = False
TmrLondon.Enabled = True
TmrNY.Enabled = False
TmrTokyo.Enabled = False
End Sub

Private Sub CmdNY_Click()
lblBy.Caption = "New York"
TmrKBH.Enabled = False
TmrLondon.Enabled = False
TmrNY.Enabled = True
TmrTokyo.Enabled = False
End Sub

Private Sub CmdTokyo_Click()
lblBy.Caption = "Tokyo"
TmrKBH.Enabled = False
TmrLondon.Enabled = False
TmrNY.Enabled = False
TmrTokyo.Enabled = True
End Sub

Private Sub TmrKBH_Timer()
lblTid.Caption = Now()
End Sub

Private Sub TmrLondon_Timer()
lblTid.Caption = Format$(Now())
End Sub

Private Sub TmrNY_Timer()
lblTid.Caption = Now()
End Sub

Private Sub TmrTokyo_Timer()
lblTid.Caption = Now()
End Sub
________________________________________________

Håber vi fanger hvad jeg siger


 
 
Kommentar
Fra : natmaden


Dato : 16-01-04 00:32

heysan selv KooL
VB er ikke nemt at demonstrer her men hvis du lader din cursor stå i starten af en kommando/funktion
og trykker F1 ,vil der åbne en hjælpeside med en udførlig forklaring om hvert emkelt emne og dens brug.
jeg kan jo ikke se ud fra din kode om du har tilføjet de forms der høre til.
men din kode til valg ser da ok ud.
at trække et tid fra now kræver at det du trækker fra også er i samme format som now.
Har ikke lige tid nu men kik i din Hjælp under format/date/hour/now.
Ps en bedre hjælp for du nok gennem menuen>help>books online.
Hjælper dig gerne vidre, men kik lige selv først.
Mvh. Natmaden

Kommentar
Fra : KooL


Dato : 16-01-04 01:18

Mere info.
Alle elementer er der, og alt virker i scriptet (det er jo heller ikke prob)

------------------------------------------------------------
elementer:
4 timere:
TmrKBH
TmrLondon
TmrNY
TmrTokyo
4 knapper:
CmdKBH
CmdLondon
CmdNY
CmdTokyo
3 Labels:
lblTitel (infolabel)
lblBy (label der fortæller hvilken by man ser tiden for)
lblTid (viser tiden for valgte by)
------------------------------------------------------------

prob ligger her:

Private Sub TmrKBH_Timer()
lblTid.Caption = Now()
End Sub

der er fino til KBH - men den er jo ens i London og det går ikke.

der må være en måde at tage tiden og lægge til aller trække fra
det SKAL jo gøres i timerene da klokken skal gå (dvs opdateres hele tiden - derfor er der en timer til hver by)
Kan man evt lave en lokalvariabel og gemme det deri eller noget? (har prøvet men virker ikke som jeg gør det)

Håber det klar lægger spørgsmålet lidt bedre.

tak for dit svar Natmaden.
Desværre er det ikke muligt for mig at bruge hjælp funktionen (længere historie)
men, ja det hvis det skal gemmes i en variabel skal variablen være af typen streng, ellers går der ged i formatet "hh.mm.ss"


Accepteret svar
Fra : natmaden

Modtaget 200 point
Dato : 16-01-04 17:01

Hvad med denne

Kode
Option Explicit
Dim tidszone


Private Sub Form_Load()
' Første tekst på lblBy
lblBy.Caption = "Lokal tid"
' Tekster på knapper
cmdKBH.Caption = "København"
cmdLondon.Caption = "London"
cmdNY.Caption = "New York"
cmdTokyo.Caption = "Tokyo"
' Sæt timer til at opdate en gang i sekundet
tmrVisTid.Interval = 1000
' Fjern forsinkelse opdater nu
tmrVisTid_Timer
End Sub

Private Sub cmdKBH_Click()
' Lån teksten fra knappen
lblBy.Caption = cmdKBH.Caption
' Sæt tidszonen
tidszone = 0
' Fjern forsinkelse opdater nu
tmrVisTid_Timer
End Sub

Private Sub cmdLondon_Click()
lblBy.Caption = cmdLondon.Caption
tidszone = -1
tmrVisTid_Timer
End Sub
Private Sub cmdNY_Click()
lblBy.Caption = cmdNY.Caption
tidszone = -6
tmrVisTid_Timer
End Sub

Private Sub cmdTokyo_Click()
lblBy.Caption = cmdTokyo.Caption
tidszone = 9
tmrVisTid_Timer
End Sub

Private Sub tmrVisTid_Timer()
lblTid.Caption = Now + (tidszone / 24)
End Sub


Kommentar
Fra : natmaden


Dato : 16-01-04 17:07

Den består af.
1 Timer
4 Knapper
2 Labels
og tidszonerne er kun et gæt(juster dem selv)
og det kan laves på mange andre måder.

Kommentar
Fra : natmaden


Dato : 16-01-04 18:37

Denne er med 2x4 labels og en timer

[/code]
Option Explicit

Private Sub Form_Load()
lblBy(0).Caption = "København"
lblTid(0).ToolTipText = "0"
lblBy(1).Caption = "London"
lblTid(1).ToolTipText = "-1"
lblBy(2).Caption = "New York"
lblTid(2).ToolTipText = "-6"
lblBy(3).Caption = "Tokyo"
lblTid(3).ToolTipText = "9"
' Sæt timer til at opdate en gang i sekundet
tmrVisTid.Interval = 1000
' Fjern forsinkelse opdater nu
tmrVisTid_Timer
End Sub
Private Sub tmrVisTid_Timer()
Dim i
For i = 0 To 3
lblTid(i).Caption = Now + (Val(lblTid(i).ToolTipText) / 24)
Next
End Sub
[/code]

Kommentar
Fra : KooL


Dato : 16-01-04 18:40

Thx natmaden :D

du er guld vær ;)
vil lige lege lidt med det først - så er dine pionts hjemme

Mvh KoL

Kommentar
Fra : KooL


Dato : 17-01-04 04:27

Hej Natmaden :)

weee

det kom til at se sådan her ud:
Kode
Option Explicit
Dim Forskæld As Integer

Private Sub CmdKBH_Click()
lblBy.Caption = "København"
lblTid.Visible = True
Tmr_Timer
End Sub

Private Sub CmdLondon_Click()
lblBy.Caption = "London"
lblTid.Visible = True
Forskæld = -1
Tmr_Timer
End Sub

Private Sub CmdNY_Click()
lblBy.Caption = "New York"
lblTid.Visible = True
Forskæld = -6
Tmr_Timer
End Sub

Private Sub CmdTokyo_Click()
lblBy.Caption = "Tokyo"
lblTid.Visible = True
Forskæld = 9
Tmr_Timer
End Sub

Private Sub Tmr_Timer()
lblTid.Caption = Now() + (Forskæld / 24)
End Sub

Er ikke sikker på NY tiden - men det er oxo underordnet :)

lblBy.Caption = cmdKBH.Caption <-- hehe, den var fræk! Det havde jeg ikke tænkt på.
noget jeg ikke viste, men som entlig oxo var logisk nok, var at man kan aktivere et andet element, uden at det er et af elementets funktioner:
Kode
Private Sub cmdTokyo_Click()
tmrVisTid_Timer <-- OK! fedt :)
End Sub


så lige et par spørgsmål på falderebet:
(giver ekstra points for disse ;)

Now + (tidszone / 24) <-- virker men kan ikke genneskue hvorfor´. det giver ingen mening at dividere med 24. (jeg er klar over at der er 24 timer i døgnet - men stadigvæk)

Timer.Interval <-- kan ikke se et det er nyttigt til noget! den kan jo max sættes til omkring 11 sek.
og hvor er logikken i at 1000 ca er et sekundt?

Tusinde tak for din visdom Natmaden :)
Jeg lærte en del der :D super fedt!!
Pointne er dine - vil bare se om du kan svarre på tillægs spørgsmålene, og dermed spæde flere points i

Mvh KoL

Kommentar
Fra : KooL


Dato : 17-01-04 04:31

BTW - dit andet svar..
lidt for udvidet for mig endnu - skal først til at lære om lykker i VB nu.
:)

Kommentar
Fra : KooL


Dato : 17-01-04 04:39

ups - glæmte lige at adde forskæld til københavn
Forskæld = 24
:P

Kommentar
Fra : natmaden


Dato : 17-01-04 06:39

Ja der blir lidt at for klare.
starter lige bagfra. Forskæld = 24 til københavn. mener jeg skal være 0
og vent du bare med lykker , men det er nok indexseret labels, der er det mest specielle ved den,
men får du nok også lært når det er tid til det

'form_load' er fastlagt til at blive udført automatiskt nå et VB-pgm. startes, det var derfor at jeg havde
lagt data ind der, da tekster og knapper så er udfyldt, med hvad der nu skal stå.
Dine 'lblTid.Visible = True' tror jeg er overflødige, og ellers ville de nok også høre til i 'form_load'
da der ikke er grund til at knappen får at vide at den skal være synlig når der trykkes på den,
den er jo allerede synlig når man trykker.

Det er bare sådan at VB's ur tæller til 1000 på et sekund, og det er ikke ca. Men meget præcist.
Jeg bruger 'tmrVisTid.Interval = 1000' for at programmet altid starter 'tmrVisTid' en gang i sekundet.

Når man bruger 'Now' retunere den både dato og klokkeslet , sådan ser vi det, men internt arbejder uret med
et tidsstempel (TimeStamp) det er et langt tal som er fastlagt til at være 0 en gang i 1987 ,
Der er så lagt 1 til 1000 gange i sekundet siden,,, stort tal, Men funktionen 'Now' beregner det så
det er læsbart for os. Prøv 'Now+1',,,,, det vil ændre i datoen.

Jeg må desværre løbe nu , kikker tilbage i aften. med et par nemme eksembler,, hvis du vil !
Hav en god dag.
Natmaden

Kommentar
Fra : KooL


Dato : 17-01-04 14:57

Hej Natmaden :)

Super Kewl ;) du spreder om dig med guldkorn :D

Forskæld = 24:
--------------
ja, ved det godt. Lavede lige en tanketorsk. Jeg tænkte på at man ikke kunne dividere med 0; men det skal man jo heller ikke. 0 er jo tælleren :)
(24 / 24 = 0 ) <- det gav jo prinsippet det samme :P


lblTid.Visible = True & knappers caption:
--------------------------------------
Iden her er at jeg fra starten har sat lbltid til visible = false i elementers egenskaber
Men det glæmte jeg at informere om, så det kunne du jo ikke se.
på den måde er der ikke vist nogen tid når proggy starter op.
Det er det samme med knappers caption - de er oxo sat til fra start at have en værdi.
(jeg skal lige ind i det her, og lære at give alle info - sry)

Interval = 1000:
---------------
Så er det derfor jeg har forskællige datoer - heh; hermed lavet om til 1000 (kørte med 1 før)
At de har valgt at sætte 1 sek til 1000; OK accepteret. Sådan er det bare.
Men hvorfor ændre datoen sig ved et Interval på 1?
jeg mener - det er jo stadig det samme tal der trækkes fra..

Timestamp:
-----------
ahh, det forklare jo en del - f.eks det underlige tal man får hvis man gemmer Now() i en Long variabel og skriver variablen ud på en label :)

Now():
------
Now() + 1 <-- ændre dagen
Now() + (1/24) <-- ændre Timen
Now() + (1/12) <-- ændre Timen
Jeg har svæt ved at se logikken i det, og dermed regne koden for ændring af mm.yyyy og mm.ss ud


Det er ikke nødvendig med exempler, med mindre det er den eneste måde du kan forklare det på.
point posen er ikke helt tom endnu :D

Mvh KoL

Godkendelse af svar
Fra : KooL


Dato : 20-01-04 15:44

Tak for svaret natmaden.
Super cool :D

Hvis du får tid engang må du godt svarre på det sidste - hvis du kan.
Der er kommet ca 100 points oveni alt i alt, som tak for ekstra god service ;)

Mvh KoL
                        

Kommentar
Fra : natmaden


Dato : 21-01-04 14:06

Tak for dine rosende ord!
Det gør jeg, skal jeg nok svare dig på.
Jeg har lidt for mange jern i ilden for tiden, men jeg er stadig her på siden, og har nok tid til i nat.
Sådan er det at være en natmad

Kommentar
Fra : natmaden


Dato : 22-01-04 22:03

Now er vel sammensat af date og time
når vi tæller , tæller vi måske fra 1 til 9 og 10 er jo sammesat af to cifffer
en dag opstår lige efter 23:59:59 , altså 1-00:00:00 nogen sammensatte tal men ikke alle ciffere er fra 0-9
det er nok det der gør den moget special .
Hvis man så tallet i ur-chippen, ville det have en dato-tid, hvorpå at det står på nul.nul
det kunne være 31-12-1980.00:00:00 =timestamp = 0.0 .
den 1-1-1981.00:00:00 være 1.0
Dagen er et heltal og tiden på dagen er et decimaltal.
Int(Now) virker som Date

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409070
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste