Dein Programm bekommt den Tageswechsel nicht mit:Amelie schrieb:
Worauf willst du hinaus?
Dies wird genau ein Mal aufgerufen beiIch hab mal Deinen Code etwas überarbeitet:
VB.NET-Quellcode
- Imports System.Globalization
- Public Class frm_clock
- ReadOnly Klass As New Funktion
- Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
- ausgabe()
- End Sub
- Private Sub frm_clock_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Timer1.Start()
- End Sub
- Private Sub ausgabe()
- Dim now As Date = DateTime.Now
- Dim h As Integer = now.Hour
- Dim m As Integer = now.Minute
- Dim s As Integer = now.Second
- 'Deutsch
- Dim sekunden As String
- Dim minuten As String
- If Klass.GetWorte(s) = "Ein" Then
- sekunden = Klass.GetWorte(s) & "e" & " Sekunde"
- Else
- sekunden = Klass.GetWorte(s) & " Sekunden"
- End If
- If Klass.GetWorte(m) = "Ein" Then
- minuten = Klass.GetWorte(m) & "e" & " Minute und - "
- Else
- minuten = Klass.GetWorte(m) & " Minuten und - "
- End If
- lbl_std.Text = Klass.GetWorte(h) & " Uhr - " & minuten & sekunden
- lbl_kwdate.Text = "Heute ist: " & Klass.GetWochentag(now) & " Es ist Kalenderwoche: " & Klass.GetKW(now)
- End Sub
- End Class
- Public Class Funktion
- #Region "Arrays"
- Private _Einer As String() = {"", "Ein", "Zwei", "Drei", "Vier", "Fünf", "Sechs", "Sieben", "Acht", "Neun"}
- Private _Sonderzehner As String() = {"Zehn", "Elf", "Zwölf", "Dreizehn", "Vierzehn", "Fünfzehn", "Sechzehn", "Siebzehn", "Achtzehn", "Neunzehn"}
- Private _Zehner As String() = {"", "", "Zwanzig", "Dreißig", "Vierzig", "Fünfzig"}
- #End Region
- Private CUI As CultureInfo
- Public Sub New()
- CUI = New CultureInfo(CultureInfo.CurrentCulture.Name)
- 'CUI = CultureInfo.CreateSpecificCulture("de-DE")
- End Sub
- #Region "Funktionen"
- Public Function GetWorte(aktlZeit As Integer) As String
- Dim Einerwort = String.Empty 'ermittelter Einer aus den Arrays
- Dim Zehner = aktlZeit \ 10
- Dim Einer = aktlZeit Mod 10
- If aktlZeit = 0 Then
- Einerwort = "Null"
- ElseIf aktlZeit = 1 Then
- Einerwort = "Ein"
- ElseIf aktlZeit < 10 OrElse aktlZeit > 19 Then
- Einerwort = _Einer(Einer)
- ElseIf aktlZeit > 9 AndAlso aktlZeit < 20 Then
- aktlZeit = 0 + (aktlZeit - 10)
- Einerwort = _Sonderzehner(Einer)
- End If
- Dim Zehnerwort As String
- If Zehner > 1 Then
- Zehnerwort = "und" & _Zehner(Zehner).ToLower() 'zusammensetzen und kleinschreiben
- If aktlZeit = 20 OrElse aktlZeit = 30 OrElse aktlZeit = 40 OrElse aktlZeit = 50 Then
- Zehnerwort = _Zehner(Zehner)
- End If
- Else
- Zehnerwort = _Zehner(Zehner)
- End If
- Dim Gesamtwort = Einerwort & Zehnerwort
- Return Gesamtwort
- End Function
- #End Region
- #Region "Datum und KW"
- 'Aktuelles Datum erstellen und Wochentags-Name ermitteln
- Public Function GetWochentag(Datum As Date) As String
- Dim DayName As String = Datum.ToString("dddd")
- Dim TodayDatum As String = Datum.ToString("dd MMMM yyyy", CUI)
- Return DayName & ", " & TodayDatum
- End Function
- 'Aktuelle Kalenderwoche ermitteln
- ''' <summary>
- ''' Kalenderwoche zum Datum ermitteln
- ''' </summary>
- ''' <param name="Datum"></param>
- ''' <returns></returns>
- Public Function GetKW(Datum As Date) As Integer
- Return CShort(CUI.Calendar.GetWeekOfYear(Datum, CUI.DateTimeFormat.CalendarWeekRule, CUI.DateTimeFormat.FirstDayOfWeek))
- End Function
- #End Region
- End Class
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!
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!