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. |