Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
Autor
Nachricht
Djawed
Newbie
Newbie

Anmeldedatum: 14.12.2009
Beiträge: 3

Progressbar
Verfasst am: 01.01.2010, 18:44

Hallo,

ich habe eine progressbar die mir eine Zeit simuliert (z.b. 10 sekunden). Es wird eine Rechenaufgabe angezeigt,in dem Fall für 10 sekunden, innerhalb dieser zeit muss man die aufgabe beantworten. Abhängig von der Geschwindigkeit der beantwortung der Aufgabe erfolgt eine Bepunktung.

Wie kann ich das jetzt realisieren,dass wenn man schneller eine Aufgabe beantwortet mehr Punkte bekommt als wenn ich für die Frage länger gebraucht hätte, dass heisst, dass die Bepunktung von der Zeit abhängt.

Hoffe ihr könnt mir weiterhelfen!!!
_________________
 
The-God-of-all_
Poster
Poster

Anmeldedatum: 20.05.2007
Beiträge: 170
Wohnort: App.Path


Verfasst am: 02.01.2010, 15:47

Also ich würde beim starten der Zeit (also wenn die Zeit anfängt zu laufen) Die aktuelle Zeit in einer Variable speichern. Am besten holst du dir die Zeit mithilfe von der Funktion GetTickCount. Die gibt die Zeit seit dem Systemstart in Millisekunden zurück.
Code:
Private Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long

Dann erstellst du einen Timer der in einem bestimmten Intervall überprüft ob die Zeit um ist und die Progress Bar aktualisiert. Wie viel Zeit vergangen ist kannst du ausrechnen indem du den Anfangswert von GetTickCount den du dir geholt hast vom neuen abziehst.
Beispiel:
(Bitte folgende Elemente hinzufügen: 1 Progressbar, 1 Command Button und 1 Timer, alle mit den standard Namen)
Code:
Option Explicit

Private Declare Function GetTickCount Lib "kernel32" () As Long

Private startTime As Long

Private Sub Command1_Click()
    Dim timeDiff As Long
    timeDiff = GetTickCount() - startTime 'Wie viel Zeit ist vergangen?
    MsgBox "Du hast " & (timeDiff / 1000) & " Sekunden gebraucht!" 'Zeit ausgeben
    Timer1.Enabled = False 'Den Timer stoppen
End Sub

Private Sub Form_Load()
    startTime = GetTickCount() 'Zeit speichern
    'Timer initialiseren
    Timer1.Interval = 250 'alle 250 Millisekunden aktualiseren
    Timer1.Enabled = True 'Timer starten
    'Progressbar initialiseren
    ProgressBar1.Min = 0 'Bei 0 Anfangen
    ProgressBar1.Max = 10000 'Bei 10.000 Millisekunden ist der Balken voll durch gelaufen
    ProgressBar1.Value = 0 'Die Bar startet bei 0
End Sub

Private Sub Timer1_Timer()
    Dim timeDiff As Long
    timeDiff = GetTickCount() - startTime 'Wie viel Zeit ist vergangen?
    If timeDiff < 10000 Then 'Wenn noch nicht 10.000 Millisekunden vergangen sind
        ProgressBar1.Value = timeDiff 'Die ProgressBar aktualiserieren
    Else 'Wenn DIe Zeit um ist
        Timer1.Enabled = False 'Timer wieder deaktivieren
        MsgBox "Zeit ist um!"
    End If
   
End Sub
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten

Tags: progressbar, zeit, geschwindigkeit, sekunden, aufgabe

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Wichtig: Filebrowser z.B. für ein RAT 2116 13.01.2008, 11:14
Keine neuen Beiträge msgbox mit symbol _&_ z.B. yesno oder systemmodal 1077 26.09.2008, 23:16
Keine neuen Beiträge Abändern eines Ordnernamens (z.B. C:\Programme = Programme) 1194 23.04.2008, 15:33
Keine neuen Beiträge "Zurück-Funktion" mit Listview und z.B. DirView 733 17.04.2008, 13:30
Keine neuen Beiträge Fenster auslesen z.b von icq oder msn wer online kommt 1222 11.02.2008, 16:46
 



[ Time: 0.1980s ][ Queries: 85 (0.0206s) ][ GZIP on - Debug on ]