Hi there, nice to meet you all.

I'm a beginner using visual basic only started to learn it about a months ago. I'm having serious trouble at the moment.

I need a program that as soon as it is opened it prints the time into 100ths or miliseconds of seconds, then run the proram and then print the time again just as it ends. (timer at the moment only shows the Time as HH:MM:SS, i want it to show HH:MM:SS:Miliseconds if possible)

For example i open the program and the display on the timer label is prined into Text1 then it runs my loop 10000 times then as soon as it finishes the loop i it to print the time on the timer into Text2.

The reason im doing this is i need to investigate speeds of processors in different machines and prove that the faster the processor the quicker it can complete this loop. Timing by had is just not accurate enough.

all i have so far is:

Private Sub Form_Load()
Text1.Caption = time
for x = 1 to 10000
Print "Frost"
next
Text2.Caption = time
Timer1.Interval = 1
Label1.Caption = ""
End Sub
Private Sub Timer1_Timer()
Label1.Caption = Time
End Sub

1) I cant get the timer to go into hundreths or miliseconds.
2) I cant get the form to print the time on the timer into Text1 When it loads up
3) I cant get my loop to work, i have no idea why haha.
4) I cant get the form to print the time on the timer into Text2 When the loops finished.

Thanks so much for any help you can give, im just totally bamboozled as to how i'm supposed to do this.

I cant get it to work and i have been trying for 2 hours +

thanks again

Frost

P.S I have tried to enclose a screenshot of my program not quite the same as the one above but gives you the idea.

[IMG]http://img81.exs.cx/img81/8927/vb6rg.jpg[/IMG]

Private Sub Form_Load()
	Text1.text = time

	for x = 1 to 10000
		Print "Frost"
	next

	Text2.text = time
	Timer1.Interval = 1
	Label1.Caption = ""
End Sub

Private Sub Timer1_Timer()
	Label1.Caption = Time
End Sub

cheers m8, that really has helped so much. so helpful this forum!!!

Frost

Alright, I've Got It:

You Need To Add A Plain Ole Standard Module (It's A Good Practice), inside of the module add this:

Module Code:

Public Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Public Declare Function SetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME) As Long

Public Type SYSTEMTIME
        wYear As Integer
        wMonth As Integer
        wDayOfWeek As Integer
        wDay As Integer
        wHour As Integer
        wMinute As Integer
        wSecond As Integer
        wMilliseconds As Integer
End Type

In your form load event, You'll need this code:

Form Load Code

Dim GMTime As SYSTEMTIME
Dim TheTime As String
GetSystemTime GMTime
    
Text1.Text = GMTime.wHour & ":" & GMTime.wMinute & ":" & GMTime.wSecond & "." & GMTime.wMilliseconds

For x = 1 To 10000
    Print "Frost"
Next

GetSystemTime GMTime

Text2.Text = GMTime.wHour & ":" & GMTime.wMinute & ":" & GMTime.wSecond & "." & GMTime.wMilliseconds
Timer1.Interval = 1
Label1.Caption = ""

And Lastly in your timer event:

Timer Event Code:

Dim GMTime As SYSTEMTIME
Dim TheTime As String
GetSystemTime GMTime

Label1.Caption = GMTime.wHour & ":" & GMTime.wMinute & ":" & GMTime.wSecond & "." & GMTime.wMilliseconds

So Far, This works flawlessly for me. Let me know how it works for you.... if you need an additional help, let me know.

Alright, I've Got It:

You Need To Add A Plain Ole Standard Module (It's A Good Practice), inside of the module add this:

Module Code:

Public Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Public Declare Function SetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME) As Long

Public Type SYSTEMTIME
        wYear As Integer
        wMonth As Integer
        wDayOfWeek As Integer
        wDay As Integer
        wHour As Integer
        wMinute As Integer
        wSecond As Integer
        wMilliseconds As Integer
End Type

In your form load event, You'll need this code:

Form Load Code

Dim GMTime As SYSTEMTIME
Dim TheTime As String
GetSystemTime GMTime
    
Text1.Text = GMTime.wHour & ":" & GMTime.wMinute & ":" & GMTime.wSecond & "." & GMTime.wMilliseconds

For x = 1 To 10000
    Print "Frost"
Next

GetSystemTime GMTime

Text2.Text = GMTime.wHour & ":" & GMTime.wMinute & ":" & GMTime.wSecond & "." & GMTime.wMilliseconds
Timer1.Interval = 1
Label1.Caption = ""

And Lastly in your timer event:

Timer Event Code:

Dim GMTime As SYSTEMTIME
Dim TheTime As String
GetSystemTime GMTime

Label1.Caption = GMTime.wHour & ":" & GMTime.wMinute & ":" & GMTime.wSecond & "." & GMTime.wMilliseconds

So Far, This works flawlessly for me. Let me know how it works for you.... if you need an additional help, let me know.

wow!!! i cant thank you enough that is absolutely perfect!!! well done! Sorry its a little bit late, was away for a couple of days.

(a happy)Frost

wow!!! i cant thank you enough that is absolutely perfect!!! well done! Sorry its a little bit late, was away for a couple of days.

(a happy)Frost

My Pleasure. If you need any other assistance, just let me know.

Be aware that the time is updated in Windows once every eighteenth of a second. Unless your compiler has a way to access the hardware real time clock outside the Windows I/O period, 1/18 s will be the limit of your resolution.

Windows was designed for business, not science.

I didn't Know that. I appreciate that knowledge, since 1/18th isn't as reliable of a system to the millisecond. May I ask where you found this information?

I didn't Know that. I appreciate that knowledge, since 1/18th isn't as reliable of a system to the millisecond. May I ask where you found this information?

The hard way - by trying to control real-time processes.

1/18 second = 55 ms = the length of a Windows jiffy (timeslice). The hardware interrupts the Intel-type computer every 55 ms to switch processes in multiprocessing operating systems such as Windows.

All I/O is done at the beginning of each timeslice when Windows does its mousekeeping. Any I/O request by a program has to wait for the next jiffy.

This proved to be very helpful - thanks!

thanks a million for explaining the use of getsystemtime() .
i was luking for that particular peiece of onfo very badly.
it's really ossom:cool:

vidya

Alright, I've Got It:

You Need To Add A Plain Ole Standard Module (It's A Good Practice), inside of the module add this:

Module Code:

Public Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Public Declare Function SetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME) As Long
 
Public Type SYSTEMTIME
        wYear As Integer
        wMonth As Integer
        wDayOfWeek As Integer
        wDay As Integer
        wHour As Integer
        wMinute As Integer
        wSecond As Integer
        wMilliseconds As Integer
End Type

In your form load event, You'll need this code:

Form Load Code

Dim GMTime As SYSTEMTIME
Dim TheTime As String
GetSystemTime GMTime
 
Text1.Text = GMTime.wHour & ":" & GMTime.wMinute & ":" & GMTime.wSecond & "." & GMTime.wMilliseconds
 
For x = 1 To 10000
    Print "Frost"
Next
 
GetSystemTime GMTime
 
Text2.Text = GMTime.wHour & ":" & GMTime.wMinute & ":" & GMTime.wSecond & "." & GMTime.wMilliseconds
Timer1.Interval = 1
Label1.Caption = ""

And Lastly in your timer event:

Timer Event Code:

Dim GMTime As SYSTEMTIME
Dim TheTime As String
GetSystemTime GMTime
 
Label1.Caption = GMTime.wHour & ":" & GMTime.wMinute & ":" & GMTime.wSecond & "." & GMTime.wMilliseconds

So Far, This works flawlessly for me. Let me know how it works for you.... if you need an additional help, let me know.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.