Moin Moin,
bin vor kurzem auf den Trichter gekommen, ich könne ma wieder etwas Programmieren. Dazu eine kurze Vorgeschichte: ich hab 2014 in der Schule die ersten Programme realisiert und nach meinem Abschluss nie wieder was mit Programmieren am Hut gehabt, bis vor 3 Tagen als ich ne Idee hatte und mich die gepackt hatte mich mehr wieder mit dem Programmieren zu befassen. Daher bitte ich um etwas Nachsicht für unsauberes Programmieren und Antworten für einen VB Anfänger, sodass ich es verstehen kann.
Zu meinem Vorhaben: Ich benötige einen Timer der in einer 2. Form zu starten und zu beenden ist. Dieser Timer soll eine Progressbar in dieser Form füllen und am ende der vorher festgelegten Zeit eine Variable X einen Wert geben.
Dieser Timer muss jedoch die Funktion beibehalten auch wenn diese Form bzw. Das Programm geschlossen wird ("Offline betrieb").
Idee zur Realisierung des "Offline Betriebes":
Alle Zeiten(Anfang/Ende/Differenz o.Ä.) werde ich in einer Datei speichern lassen nach beendigen des Programmes und nach neu öffnen des Programmes entsprechend auslesen lassen. Das wird aber ein späterer Schritt für mich und nur eine Info vorab nicht das eventuell eure Lösungen später mit diesem Vorhaben nicht mehr Kompatibel sind.
Meine Frage:
A: Ist mein vorhaben wie ich es möchte überhaupt möglich?
B: Im folgendem ist ein von mir Programmiertes Beispielprogramm der einen solchen funktionsfähigen Timer beinhaltet jedoch kann man ihn umgehen in dem man während des Prozesses die System Zeit entsprechend anpasst. Wie kann ich diese Lösung so abändern das es nicht mehr möglich ist die vorher Festgelegte Zeitspanne über diesen Trick zu verkürzen.
Modul:
Form 1
Form 2
P.S. ich habe mal VB 6.0 Code genommen um diesen Code hier zu implementieren ich hoffe das es richtig ist und nicht VB.net (Ich habe einfach eine Normale VB Windows Form Anwendung als Projekt gestartet)
und in den Labels hoffentlich auch das entsprechend richtige angegeben (Visual Studio 2017 - alles neuste Version)
MFG Barohn
bin vor kurzem auf den Trichter gekommen, ich könne ma wieder etwas Programmieren. Dazu eine kurze Vorgeschichte: ich hab 2014 in der Schule die ersten Programme realisiert und nach meinem Abschluss nie wieder was mit Programmieren am Hut gehabt, bis vor 3 Tagen als ich ne Idee hatte und mich die gepackt hatte mich mehr wieder mit dem Programmieren zu befassen. Daher bitte ich um etwas Nachsicht für unsauberes Programmieren und Antworten für einen VB Anfänger, sodass ich es verstehen kann.
Zu meinem Vorhaben: Ich benötige einen Timer der in einer 2. Form zu starten und zu beenden ist. Dieser Timer soll eine Progressbar in dieser Form füllen und am ende der vorher festgelegten Zeit eine Variable X einen Wert geben.
Dieser Timer muss jedoch die Funktion beibehalten auch wenn diese Form bzw. Das Programm geschlossen wird ("Offline betrieb").
Idee zur Realisierung des "Offline Betriebes":
Alle Zeiten(Anfang/Ende/Differenz o.Ä.) werde ich in einer Datei speichern lassen nach beendigen des Programmes und nach neu öffnen des Programmes entsprechend auslesen lassen. Das wird aber ein späterer Schritt für mich und nur eine Info vorab nicht das eventuell eure Lösungen später mit diesem Vorhaben nicht mehr Kompatibel sind.
Meine Frage:
A: Ist mein vorhaben wie ich es möchte überhaupt möglich?
B: Im folgendem ist ein von mir Programmiertes Beispielprogramm der einen solchen funktionsfähigen Timer beinhaltet jedoch kann man ihn umgehen in dem man während des Prozesses die System Zeit entsprechend anpasst. Wie kann ich diese Lösung so abändern das es nicht mehr möglich ist die vorher Festgelegte Zeitspanne über diesen Trick zu verkürzen.
Modul:
Form 1
Form 2
Visual Basic-Quellcode
- Public Class Form2
- Dim Zeit As Integer = 30
- Dim rest1 As Boolean
- Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Label1.Text = "Startzeit" & vbCrLf & vntStartZeit
- Label2.Text = "Endzeit" & vbCrLf & vntEndZeit
- Label3.Text = "Restzeit" & vbCrLf & rest & "Sec."
- Label4.Text = x & "X"
- If timerstart = True Then
- rest = DateDiff("s", Now, vntEndZeit)
- rest1 = rest <= 0
- If rest1 = False Then
- ProgressBar1.Maximum = lngZeitDiff
- ProgressBar1.Value = lngZeitDiff - rest
- Button1.Enabled = False
- Timer1.Enabled = True
- ElseIf rest1 = True Then
- vntStartZeit = "00.00.0000 00:00:00"
- vntEndZeit = "00.00.0000 00:00:00"
- rest = 0
- Label1.Text = "Startzeit" & vbCrLf & vntStartZeit
- Label2.Text = "Endzeit" & vbCrLf & vntEndZeit
- Label3.Text = "Restzeit" & vbCrLf & rest & "Sec."
- x = x + 1
- Label4.Text = x & "X"
- Form1.Label1.Text = x & "X"
- timerstart = False
- Me.Show()
- MsgBox("Zeit abgelaufen", vbOKOnly, "Hinweis")
- End If
- End If
- End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- timerstart = True
- vntStartZeit = Now
- vntEndZeit = DateAdd("s", zeit, Now)
- lngZeitDiff = DateDiff("s", vntStartZeit, vntEndZeit)
- rest = lngZeitDiff
- Label1.Text = "Startzeit" & vbCrLf & vntStartZeit
- Label2.Text = "Endzeit" & vbCrLf & vntEndZeit
- Label3.Text = "Restzeit" & vbCrLf & rest & "Sec."
- Button1.Enabled = False
- ProgressBar1.Maximum = lngZeitDiff
- Timer1.Enabled = True
- End Sub
- Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
- ProgressBar1.Increment(1)
- rest1 = rest <= 0
- If rest1 = True Then
- vntStartZeit = "00.00.0000 00:00:00"
- vntEndZeit = "00.00.0000 00:00:00"
- rest = 0
- Label1.Text = "Startzeit" & vbCrLf & vntStartZeit
- Label2.Text = "Endzeit" & vbCrLf & vntEndZeit
- Label3.Text = "Restzeit" & vbCrLf & rest & "Sec."
- x = x + 1
- Label4.Text = x & "X"
- Form1.Label1.Text = x & "X"
- timerstart = False
- Timer1.Enabled = False
- ProgressBar1.Value = ProgressBar1.Minimum
- timerstart = False
- MsgBox("Zeit abgelaufen", vbOKOnly, "Hinweis")
- Button1.Enabled = True
- Else
- rest = rest - 1
- Label3.Text = "Restzeit" & vbCrLf & rest & "Sec."
- End If
- End Sub
- End Class
P.S. ich habe mal VB 6.0 Code genommen um diesen Code hier zu implementieren ich hoffe das es richtig ist und nicht VB.net (Ich habe einfach eine Normale VB Windows Form Anwendung als Projekt gestartet)
und in den Labels hoffentlich auch das entsprechend richtige angegeben (Visual Studio 2017 - alles neuste Version)
MFG Barohn