Prüfen ob Zeitpunkt erreicht ist…

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Prüfen ob Zeitpunkt erreicht ist…

    Moin! :)
    Da das Problem im Code liegt - und der Code sehr lang ist, habe ich diesen hochgeladen!

    Problembeschreibung:
    Ich möchte eine Zeit prüfen, ob dieser Zeitpunkt erreicht ist, diese man vorher eingespeichert hat.
    Falls die gewünschte Zeit erreicht ist, soll sich ein Fenster öffnen.
    Und die Verbleibende Zeit soll dann aufhören zu zählen.
    Nach dem Klick auf „OK“, soll es dann weiter zählen.
    Ich hoffe ich könnte mein Problem gut Beschreiben.
    Die passende stelle im Code ist kommentiert! :!:
    Ich freue mich sehr auf hilfreiche Antworten.
    BIG THX


    edit2:

    VB.NET-Quellcode

    1. Using dlg As New frmWarnung
    2. ' Wenn das Fenster erscheint sollte,
    3. ' die Verbleibendezeit stoppen und nicht
    4. ' weiter gezählt werden!
    5. guthaben_temp = guthaben ' sichern...
    6. dlg.ShowDialog()
    7. guthaben = guthaben_temp ' laden....
    8. ' Wenn man jetzt auf OK geklickt hat,
    9. ' sollte die Verbleibende Zeit wieder
    10. ' hoch gezählt werden!
    11. RestlicheZeitAnzeigen()
    12. End Using

    Aus irgendeinen unbekannten Grund springt die Anzeige auf 1:30min.
    Leider finde ich die Ursache derzeit nicht! ;(
    Visual Basic.NET 8o
    MS-SQL
    8o

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Cheffboss“ ()

    @Cheffboss Wo ist das Problem?

    VB.NET-Quellcode

    1. If DateDime.Now > DEIN_ZEITPUNKT Then
    2. CountDownTimer.Stop()
    3. WarnDialog.Show()
    4. CountDownTimer.Start()
    5. End If
    Und beim nächsten Mal postest Du ein compilierendes Projekt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    Danke, für deine schnelle Antwort.
    Leider habe ich bereits(beide) Timer bereits gestoppt.
    Habe das Problem noch nicht lösen könnnen.

    VB.NET-Quellcode

    1. Me.tmrCheck.Enabled = False

    Zeile 34
    Visual Basic.NET 8o
    MS-SQL
    8o
    @Cheffboss Mach hier mal ein TimeSpan draus und teste mit <=.

    VB.NET-Quellcode

    1. Dim prüfer As String = Me.lblDebugZeitVerstrichen.Text
    2. If prüfer = "0:0:59:55" Then
    ======
    Halte auch ihn selbst an: tmrStatusAuslesen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    @RodFromGermany
    Das Programm arbeitet genauso wie mit prüfer As String.
    Der Fehler ist damit leider noch nicht gefunden... ;(

    VB.NET-Quellcode

    1. Dim prüfer As TimeSpan = ZeitVerbleibend_Debug
    2. If prüfer.Seconds = 55 Then ' auch mit <= getestet...
    3. Me.tmrStatusAuslesen.Enabled = False
    4. Me.tmrCheck.Enabled = False
    Visual Basic.NET 8o
    MS-SQL
    8o
    @Cheffboss Du musst die verbleibende Gesamtzeit testen, nicht aber die ausgeblendeten Sekunden:

    VB.NET-Quellcode

    1. If prüfer.TotalSeconds < 55 Then
    =======
    Was ist das???????

    VB.NET-Quellcode

    1. Dim obj As Object = 1 ' Euro kosten pro Stunde...

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    @RodFromGermany
    Die Object Variable wird aus einer Datenbank gelesen.
    Ich habe diese zum testen jetzt auf Decimal geändert.
    Aber das war nicht der Fehler.
    Mit dem Code:

    VB.NET-Quellcode

    1. If prüfer.TotalSeconds < 55 Then

    Greift das Programm nicht auf die weiteren Code Zeilen.
    Ich bin mir sicher, das Problem liegt nicht in der Auswahl.
    Sondern zwischen den Using.

    Visual Basic.NET 8o
    MS-SQL
    8o
    @Cheffboss Du verwendest 2 Sekunden-Timer.
    Mach mal alles mit nur einem Timer.
    ==============
    Ich habs gefunden.
    In RestZeitAnzeigen() holst Du Dir

    VB.NET-Quellcode

    1. Dim dt As DateTime = Now
    , da ist alles was gewartet wurde für die Katz.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    @RodFromGermany
    Danke, für diesen Tipp mit den Timern. :)
    Ich werde dies morgen testen(habe Feierabend).
    Wäre, echt super, falls das die Lösung ist.

    @an alle anderen
    Ich freue mich auf eure Hilfe. :thumbup:
    Ich hoffe das Problem kann durch eure Hilfe behoben werden.
    Visual Basic.NET 8o
    MS-SQL
    8o
    @Cheffboss Ich hab Dir gerade den Fehler oben angehängt.
    Du musst da eine prozess-dynamische Variable nehmen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    Ich habe heute versucht weiter zu arbeiten, leider habe ich noch keine Lösung gefunden.
    Ich habe der Funktion RestZeitAnzeigen einen Parameter mitgeben.
    Und im Timer kurz vor dem ausführen speichere ich die aktuelle Zeit in eine backup Variable.
    Oder bin ich da auf den Falschen weg? ?(

    VB.NET-Quellcode

    1. Public Function RestZeitAnzeigen(wert As Boolean) As DateTime
    2. Dim dt As DateTime
    3. If wert Then
    4. dt = Now
    5. Else
    6. dt = backup
    7. End If
    8. Im Timer:
    9. Wenn Zeit dann:
    10. Using dlg As New frmWarnung
    11. backup = Now
    12. dlg.ShowDialog()
    13. RestZeitAnzeigen(False)
    14. End Using
    Visual Basic.NET 8o
    MS-SQL
    8o
    @Cheffboss Wenn ich von dem Namen der Funktion RestZeitAnzeigen() ausgehe, müsstest Du die Instanz-eigene Restzeit als TimeSpan halten und dann auf .Now draufaddieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    Danke, für deine Ratschläge. :)

    @an alle
    Leider bin ich zu doof, und finde keine Lösung. ;(
    Deshalb habe ich nun einen Programmierer beauftragt.
    Deshalb kann man diesen Beitrag nun closen.

    Nochmals Danke, an euch!
    Visual Basic.NET 8o
    MS-SQL
    8o

    Cheffboss schrieb:

    finde keine Lösung.
    Du solltest das Programm völlig neu schreiben, nicht aber in dem vermurksten Projekt rumeditieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!