vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Zeitbereiche effektiv prüfen 
Autor: thovi
Datum: 23.03.09 15:26

Hallo,

ich habe jetzt folgenden Code gefunden:

Class Window1 ' WPF Fenster 
    Private SchaltBereich_1 As New List(Of String)
    Private SchaltBereich_2 As New List(Of String)
    Private SchaltBereich_3 As New List(Of String)
    Private SchaltBereich_4 As New List(Of String)
    Private SchaltBereich_5 As New List(Of String)
 
 Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As _
   System.Windows.RoutedEventArgs) Handles Me.Loaded
        Schaltbereich(1, "23:00", "4:00")
        Schaltbereich(2, "6:00", "12:00")
        Schaltbereich(3, "4:00", "6:00")
        Schaltbereich(4, "18:00", "23:00")
        Schaltbereich(5, "12:00", "18:00")
    End Sub
 
    Private Sub Schaltbereich(ByVal Number As Integer, ByVal StartTime As _
      String, ByVal EndTime As String)
        Dim StartTime_ As TimeSpan = TimeSpan.Parse(StartTime)
        Dim EndTime_ As TimeSpan = TimeSpan.Parse(EndTime)
        Dim SchaltBereich_ As New List(Of String)
        Dim SchnittMenge_ As IEnumerable(Of String)
        If StartTime_ > EndTime_ Then ' Wenn StartZeit grösser als EndZeit
            ' Prüfliste von StartTime bis "23:00" Uhr füllen
            For Time_ As Integer = StartTime_.Hours To 23
                SchaltBereich_.Add(Time_ & ":00")
            Next
            ' Prüfliste von EndTime bis "0:00" Uhr füllen
            For Time_ As Integer = 0 To EndTime_.Hours
                SchaltBereich_.Add(Time_ & ":00")
            Next
        Else ' Wenn StartZeit kleiner als EndZeit
            For Time_ As Integer = StartTime_.Hours To EndTime_.Hours
                SchaltBereich_.Add(Time_ & ":00")
            Next
        End If
        ' Vergleiche nach durchführen
        Select Case Number
            Case 1 ' Die ist der 1. SchaltBereich ohne Prüfung
                SchaltBereich_1 = SchaltBereich_
            Case 2
                SchaltBereich_2 = SchaltBereich_
                ' Prüfung mit Schaltbereich 1
                ' Eine Schnittmenge enthält Elemente aus
                ' Schalbereich_1 UND SchaltBereich_2
                SchnittMenge_ = SchaltBereich_2.Intersect(SchaltBereich_1)
                ' Wenn die Schnittmenge mehr als Null(0) Elemente 
                ' enthält kommt es zu einer Überschneidung
                If SchnittMenge_.Count > 0 Then
                    MsgBox("Überschneidung  Schaltbereich 2 mit Schaltbereich" & _
                      "1")
                End If
                SchaltBereich_2 = SchaltBereich_
            Case 3
                SchaltBereich_3 = SchaltBereich_
                SchnittMenge_ = SchaltBereich_3.Intersect(SchaltBereich_1)
                If SchnittMenge_.Count > 0 Then
                    MsgBox("Überschneidung Schaltbereich 3 mit Schaltbereich 1")
                End If
                SchnittMenge_ = SchaltBereich_3.Intersect(SchaltBereich_2)
                If SchnittMenge_.Count > 0 Then
                    MsgBox("Überschneidung Schaltbereich 3 mit Schaltbereich 2")
                End If
            Case 4
                SchaltBereich_4 = SchaltBereich_
                SchnittMenge_ = SchaltBereich_4.Intersect(SchaltBereich_1)
                If SchnittMenge_.Count > 0 Then
                    MsgBox("Überschneidung Schaltbereich 4 mit Schaltbereich 1")
                End If
                SchnittMenge_ = SchaltBereich_4.Intersect(SchaltBereich_2)
                If SchnittMenge_.Count > 0 Then
                    MsgBox("Überschneidung Schaltbereich 4 mit Schaltbereich 2")
                End If
                SchnittMenge_ = SchaltBereich_4.Intersect(SchaltBereich_3)
                If SchnittMenge_.Count > 0 Then
                    MsgBox("Überschneidung Schaltbereich 4 mit Schaltbereich 3")
                End If
            Case 5
                ' Überprüfung von SchaltBereich_5
        End Select
    End Sub
End Class
Dieser scheint jetzt mit allen Varianten zu funktionieren.
Das Zusammenfallen von Start und Endzeiten wird auch ausgeschlossen.

Für Anmerkungen und Vebesserungen bin ich dankbar.


Mfg Thomas

PS.: Die Überprüfung von 5 wurde wegen 5 kb Nachrichten-Begrenzung gelöscht

'
'///
'
Es gibt keine dummen Fragen. Dumm ist nur der, der nicht fragt sondern dumme Antworten gibt!

Beitrag wurde zuletzt am 23.03.09 um 15:28:40 editiert.

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zeitbereiche effektiv prüfen2.324thovi20.03.09 07:16
Re: Zeitbereiche effektiv prüfen1.881thovi20.03.09 08:35
Re: Zeitbereiche effektiv prüfen1.835thovi20.03.09 09:29
Re: Zeitbereiche effektiv prüfen1.766thovi20.03.09 11:32
Re: Zeitbereiche effektiv prüfen1.763thovi20.03.09 17:51
Re: Zeitbereiche effektiv prüfen2.882Kuno6020.03.09 18:10
Re: Zeitbereiche effektiv prüfen2.188mikeb6921.03.09 09:36
Re: Zeitbereiche effektiv prüfen1.948thovi21.03.09 10:48
Re: Zeitbereiche effektiv prüfen2.332thovi23.03.09 15:26

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel