Avatar billede jesperbaldur Nybegynder
17. december 2000 - 20:05 Der er 27 kommentarer og
1 løsning

flere decimaler i et stopur

jeg er ved at lave et stotur i visual basic, men jeg kan kun få den til at vise tiden i timmer,minutter,sekunder hvordan laver programmet så det også viser 1/100 af et sekund.
Avatar billede tommyf Nybegynder
17. december 2000 - 20:25 #1
Kan ikke huske hvordan, kun at det ser dårligt ud fordi at VisualBasic ikke kan følge med. Så den opdatere i intervaller på 10/100 af et sekund.
Avatar billede tdaugaard Nybegynder
17. december 2000 - 20:51 #2
Der findes .DLL\'er der kan \"time\"\'e ned til næsten NS ..
Avatar billede jesperbaldur Nybegynder
17. december 2000 - 21:00 #3
Altså programmet skal indeholde to knapper : start og stop, samt en textbox.

Koden:
dim start,slut as date

Startknap:
start=now()

slutknap:
slut= format$(now()-start,\"hh.mm.ss\")

denne kode viser tiden i timer(hh),minutter(mm)og sekunder(ss), men hvordan får man tiden til at komme med 10/100 af et sekund
Avatar billede jesperbaldur Nybegynder
17. december 2000 - 21:01 #4
under slutknap:
text1.text=slut
Avatar billede tdaugaard Nybegynder
17. december 2000 - 21:04 #5
det kan du ikke måle vha. Now() .. forøvrigt er det bedre hvis du bruger Time istedet for now().. men du ikke måle 10/100 sec
Avatar billede jesperbaldur Nybegynder
17. december 2000 - 21:38 #6
er det så ikke muligt i visual basic at lave et stopur som tager flere decimaler med end sekunder
Avatar billede tdaugaard Nybegynder
17. december 2000 - 21:41 #7
Nope .. desværre ikke .. tjaa.. på en måde er det .. vha. en Timer sat til 10 i interval kan du tælle en variabel op.
Avatar billede scb Praktikant
17. december 2000 - 21:50 #8
>tdaugaard, Jeg har netop lige prøvet at lege med en Timer, med interval sat til 10, det dur ikke da Timeren kun bliver serviceret når der er tid, på min P3 600Mhz 192MB ram er der ingen forskel på om timeren er sat til 1 mS eller 10 mS, men det kommer selvfølig også an på hvor langt tid det tager at udfører programmet i Timeren.
-SCB
Avatar billede joern Nybegynder
17. december 2000 - 21:51 #9
Hej Jesper.

Der må være muligheder i  \"TimeFormat Property (Multimedia MCI Control)\"

Uddrag fra hjælpen:

Remarks

The following table lists the TimeFormat property settings for the Multimedia MCI control.

Value     Setting/Time format
0    mciFormatMilliseconds  Milliseconds are stored as a 4-byte integer variable.

Du skal altså tilføje MCI32.OXC til dit projekt ( menu: projekt / Components / Microsoft Multimedia Control )

Med venlig hilsen
Avatar billede tdaugaard Nybegynder
17. december 2000 - 21:56 #10
Smid flg. på din form og smid flg. kode ind som det eneste (bare for en test)
Timer: Timer1
Label: Label1
CommandButton: Command1, Command2

Sæt Timer1\'s interval til 10 og Enabled til False og kør programmet. Tryk på Command1 for at starte og ..2 for at stoppe.

DefInt I
Private ms As Integer
Private sek As Integer
Private min As Integer
Private hou As Integer

Private Sub Command1_Click()
    Timer1.Enabled = True
End Sub

Private Sub Command2_Click()
    Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
    ms = ms + 10
    If ms = 100 Then sek = sek + 1: ms = 0
    If sek = 60 Then min = min + 1: sek = 0
    If min = 60 Then hou = hou + 1: min = 0
   
    Label1.Caption = Pad(hou, 2) & \":\" & Pad(min, 2) & \":\" & Pad(sek, 2) & \".\" & Pad(ms, 3)
End Sub

Function Pad(num As Integer, sz As Integer) As String
    Pad = String(sz - Len(Trim(Str(num))), \"0\") & num
End Function
Avatar billede tdaugaard Nybegynder
17. december 2000 - 21:58 #11
scb:> så skal vi have fat i en Timer DLL der kører ligemeget om Windows giver den tid eller ej..
Avatar billede scb Praktikant
17. december 2000 - 22:03 #12
Der er en funktion der hedder GetTickCount som retunerer tid fra systemstart i mS, jeg kan bare ikke finde noget om den lige nu, og jeg skal tidliiiigt op i morgen.

>tdaugaard: Hvis ellers maskinen er hurtig nok og der ikke kører andre programmer, burde dit forslag virke.

-SCB
Avatar billede scb Praktikant
17. december 2000 - 22:06 #13
Her er noget om:

GetTickCount
The GetTickCount function retrieves the number of milliseconds that have elapsed since the system was started. It is limited to the resolution of the system timer. To obtain the system timer resolution, use the GetSystemTimeAdjustment function.

DWORD GetTickCount(VOID);
Parameters
This function has no parameters.

Return Values
The return value is the number of milliseconds that have elapsed since the system was started.

Remarks
The elapsed time is stored as a DWORD value. Therefore, the time will wrap around to zero if the system is run continuously for 49.7 days.

If you need a higher resolution timer, use a multimedia timer or a high-resolution timer.

Windows NT/2000: To obtain the time elapsed since the computer was started, retrieve the System Up Time counter in the performance data in the registry key HKEY_PERFORMANCE_DATA. The value returned is an 8-byte value. For more information, see Performance Monitoring.

Example
The following example demonstrates how to handle timer wrap around.

DWORD dwStart = GetTickCount();

// Stop if this has taken too long
if( GetTickCount() - dwStart >= TIMELIMIT )
    Cancel();

Where TIMELIMIT is the time interval of interest to the application.

Requirements
  Windows NT/2000: Requires Windows NT 3.1 or later.
  Windows 95/98: Requires Windows 95 or later.
  Header: Declared in Winbase.h; include Windows.h.
  Library: Use Kernel32.lib.

-SCB
Avatar billede tdaugaard Nybegynder
17. december 2000 - 22:07 #14
Fra VBAPI.COM:



--------------------------------------------------------------------------------

GetTickCount Function
Declare Function GetTickCount Lib \"kernel32.dll\" () As Long

Platforms

Windows 95: Supported.
Windows 98: Supported.
Windows NT: Requires Windows NT 3.1 or later.
Windows 2000: Supported.
Windows CE: Unknown.

Description & Usage
GetTickCount determines how much time has elapsed since Windows was last started. The time is measured in milliseconds, although the actual resolution of the function\'s output depends on that of the system timer itself. Therefore, it may not be perfectly accurate to the millisecond. Because of the limitations of the 32-bit integer data type, the reported elapsed time wraps back to zero after about 49.7 days of continuous operation.

Return Value
The function returns the number of milliseconds that have passed since Windows was last started.

Visual Basic-Specific Issues
None.

Parameters
None.

Example

\' Determine about how much time it takes for Visual
\' Basic to compute the square root of a large number.  The elapsed
\' time for that operation is displayed in seconds.
Dim starttime As Long  \' timer value before the calculation
Dim endtime As Long  \' timer value after the calculation
Dim result As Double  \' receives result of square root operation

\' Find how much time has passed since Windows was started.
starttime = GetTickCount()
\' Calculate the square root of a large number.
result = Sqr(54761)
\' Find how much time has now passed since startup.
endtime = GetTickCount()
\' The difference between starttime and endtime is the time it took
\' to calculate the square root.
Debug.Print \"The calculation took\"; (endtime - starttime) / 1000; \"seconds.\"

Category
Time

Back to the Function list.
Back to the Reference section.


--------------------------------------------------------------------------------

Last Modified: March 19, 2000
This page is copyright © 2000 Paul Kuliniewicz. Copyright Information
Go back to the Windows API Guide home page.
E-mail: vbapi@vbapi.com Send Encrypted E-Mail
This page is at http://www.vbapi.com/ref/g/gettickcount.html
Avatar billede tdaugaard Nybegynder
17. december 2000 - 22:15 #15
SÅ er den der!!

Private Declare Function GetTickCount Lib \"kernel32.dll\" () As Long

Private ticks As Long
Private sticks As Long

Private Sub Command1_Click()
    Timer1.Enabled = True
    sticks = GetTickCount
End Sub

Private Sub Command2_Click()
    Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
    ticks = GetTickCount - sticks
   
    hou = Int(((ticks / 1000) / 60) / 60): ticks = ticks - Int(((ticks / 1000) / 60) / 60)
    min = Int((ticks / 1000) / 60): ticks = ticks - Int((ticks / 1000) / 60)
    sek = Int(ticks / 1000): ticks = ticks - (sek * 1000)
   
    Label1.Caption = Pad(hou, 2) & \":\" & Pad(min, 2) & \":\" & Pad(sek, 2) & \".\" & Pad(ticks, 3)
End Sub

Function Pad(num, sz As Integer) As String
    Pad = String(sz - Len(Trim(Str(num))), \"0\") & num
End Function
Avatar billede tdaugaard Nybegynder
17. december 2000 - 22:17 #16
Okay, det her ser bedre ud :

Private Declare Function GetTickCount Lib \"kernel32.dll\" () As Long

Private ticks As Long
Private sticks As Long

Private Sub Command1_Click()
    Timer1.Enabled = True
    sticks = GetTickCount
End Sub

Private Sub Command2_Click()
    Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
    ticks = GetTickCount - sticks
   
    hou = Int(((ticks / 1000) / 60) / 60): ticks = ticks - hou
    min = Int((ticks / 1000) / 60): ticks = ticks - min
    sek = Int(ticks / 1000): ticks = ticks - (sek * 1000)
   
    Label1.Caption = Pad(hou, 2) & \":\" & Pad(min, 2) & \":\" & Pad(sek, 2) & \".\" & Pad(ticks, 3)
End Sub

Function Pad(num, sz As Integer) As String
    Pad = String(sz - Len(Trim(Str(num))), \"0\") & num
End Function
Avatar billede joern Nybegynder
18. december 2000 - 00:41 #17
Hvilken iver og utrættelighed.  Tdaugaard, har du en forbindelse, der altid er åben, ADSl eller så\'nt?

M.v.h. og godnat  Jørn
Avatar billede tdaugaard Nybegynder
18. december 2000 - 00:42 #18
joern:> *G* .. ISDN :-( men den er for det meste altid åben anyway  .. (og jeg har ikke fastpris ..)
Avatar billede jesperbaldur Nybegynder
18. december 2000 - 10:47 #19
hvor skal jeg skrive
Function Pad(num, sz As Integer) As String
    Pad = String(sz - Len(Trim(Str(num))), \"0\") & num
End Function
Avatar billede tdaugaard Nybegynder
18. december 2000 - 10:49 #20
Hvorfor ? eller hvor ?

Du skal bare smide det ind i en form det hele som det eneste .. og så virker det (husk lige kontrollerne..)
Avatar billede jesperbaldur Nybegynder
18. december 2000 - 11:20 #21
hvad for nogen kontrollere
Avatar billede tdaugaard Nybegynder
18. december 2000 - 11:22 #22
En timer, to knapper og en label (du behøver ikke navngive dem for så skal du også rette i koden)
Avatar billede jesperbaldur Nybegynder
18. december 2000 - 11:29 #23
Ok jeg prøver koden når jeg kommer hjem fra skole ca. kl 16.00
Avatar billede tdaugaard Nybegynder
18. december 2000 - 11:42 #24
*tsk* *tsk* sidder og \"Eksperter\" den i skole timerne
Avatar billede jesperbaldur Nybegynder
18. december 2000 - 13:27 #25
Hvad mener du
Avatar billede tdaugaard Nybegynder
18. december 2000 - 13:43 #26
sidder på eksperten i mens du er i skole ... eller var det i et frikvarter ?
Avatar billede jesperbaldur Nybegynder
18. december 2000 - 15:37 #27
okay
nå men når jeg kopier koden og sætter den ind i formens load kommer flg fejlmeddelelse ved denne linie
Private Declare Function GetTickCount_ Lib \"kernel32.dll\" () As Long (den står under formens load)

Compile error:
Only comments may appear after End Sub, End Function or End Property.
Avatar billede jesperbaldur Nybegynder
18. december 2000 - 20:01 #28
Ok jeg fandt selv ud af problemet

tak for hjælpen endnu en gang
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