Arrays etc

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 50 Antworten in diesem Thema. Der letzte Beitrag () ist von Facebamm.

    Amelie schrieb:

    Worauf willst du hinaus?
    Dein Programm bekommt den Tageswechsel nicht mit:

    VB.NET-Quellcode

    1. Public now As Date = DateTime.Now
    Dies wird genau ein Mal aufgerufen bei

    VB.NET-Quellcode

    1. Dim klass As New Funktion
    Ich hab mal Deinen Code etwas überarbeitet:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Globalization
    2. Public Class frm_clock
    3. ReadOnly Klass As New Funktion
    4. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    5. ausgabe()
    6. End Sub
    7. Private Sub frm_clock_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    8. Timer1.Start()
    9. End Sub
    10. Private Sub ausgabe()
    11. Dim now As Date = DateTime.Now
    12. Dim h As Integer = now.Hour
    13. Dim m As Integer = now.Minute
    14. Dim s As Integer = now.Second
    15. 'Deutsch
    16. Dim sekunden As String
    17. Dim minuten As String
    18. If Klass.GetWorte(s) = "Ein" Then
    19. sekunden = Klass.GetWorte(s) & "e" & " Sekunde"
    20. Else
    21. sekunden = Klass.GetWorte(s) & " Sekunden"
    22. End If
    23. If Klass.GetWorte(m) = "Ein" Then
    24. minuten = Klass.GetWorte(m) & "e" & " Minute und - "
    25. Else
    26. minuten = Klass.GetWorte(m) & " Minuten und - "
    27. End If
    28. lbl_std.Text = Klass.GetWorte(h) & " Uhr - " & minuten & sekunden
    29. lbl_kwdate.Text = "Heute ist: " & Klass.GetWochentag(now) & " Es ist Kalenderwoche: " & Klass.GetKW(now)
    30. End Sub
    31. End Class
    32. Public Class Funktion
    33. #Region "Arrays"
    34. Private _Einer As String() = {"", "Ein", "Zwei", "Drei", "Vier", "Fünf", "Sechs", "Sieben", "Acht", "Neun"}
    35. Private _Sonderzehner As String() = {"Zehn", "Elf", "Zwölf", "Dreizehn", "Vierzehn", "Fünfzehn", "Sechzehn", "Siebzehn", "Achtzehn", "Neunzehn"}
    36. Private _Zehner As String() = {"", "", "Zwanzig", "Dreißig", "Vierzig", "Fünfzig"}
    37. #End Region
    38. Private CUI As CultureInfo
    39. Public Sub New()
    40. CUI = New CultureInfo(CultureInfo.CurrentCulture.Name)
    41. 'CUI = CultureInfo.CreateSpecificCulture("de-DE")
    42. End Sub
    43. #Region "Funktionen"
    44. Public Function GetWorte(aktlZeit As Integer) As String
    45. Dim Einerwort = String.Empty 'ermittelter Einer aus den Arrays
    46. Dim Zehner = aktlZeit \ 10
    47. Dim Einer = aktlZeit Mod 10
    48. If aktlZeit = 0 Then
    49. Einerwort = "Null"
    50. ElseIf aktlZeit = 1 Then
    51. Einerwort = "Ein"
    52. ElseIf aktlZeit < 10 OrElse aktlZeit > 19 Then
    53. Einerwort = _Einer(Einer)
    54. ElseIf aktlZeit > 9 AndAlso aktlZeit < 20 Then
    55. aktlZeit = 0 + (aktlZeit - 10)
    56. Einerwort = _Sonderzehner(Einer)
    57. End If
    58. Dim Zehnerwort As String
    59. If Zehner > 1 Then
    60. Zehnerwort = "und" & _Zehner(Zehner).ToLower() 'zusammensetzen und kleinschreiben
    61. If aktlZeit = 20 OrElse aktlZeit = 30 OrElse aktlZeit = 40 OrElse aktlZeit = 50 Then
    62. Zehnerwort = _Zehner(Zehner)
    63. End If
    64. Else
    65. Zehnerwort = _Zehner(Zehner)
    66. End If
    67. Dim Gesamtwort = Einerwort & Zehnerwort
    68. Return Gesamtwort
    69. End Function
    70. #End Region
    71. #Region "Datum und KW"
    72. 'Aktuelles Datum erstellen und Wochentags-Name ermitteln
    73. Public Function GetWochentag(Datum As Date) As String
    74. Dim DayName As String = Datum.ToString("dddd")
    75. Dim TodayDatum As String = Datum.ToString("dd MMMM yyyy", CUI)
    76. Return DayName & ", " & TodayDatum
    77. End Function
    78. 'Aktuelle Kalenderwoche ermitteln
    79. ''' <summary>
    80. ''' Kalenderwoche zum Datum ermitteln
    81. ''' </summary>
    82. ''' <param name="Datum"></param>
    83. ''' <returns></returns>
    84. Public Function GetKW(Datum As Date) As Integer
    85. Return CShort(CUI.Calendar.GetWeekOfYear(Datum, CUI.DateTimeFormat.CalendarWeekRule, CUI.DateTimeFormat.FirstDayOfWeek))
    86. End Function
    87. #End Region
    88. 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!
    @RodFromGermany

    ​Imports System.Globalization Habe ich bei den Verweisen angehackt ;)
    ​ReadOnly Klass As New Funktion Warum hier jetzt ReadOnly und nicht DIM?
    ​Public aktlZeit As Integer usw ... Was ich ursprünglich hatte. Ja sehe das es unnötig war ;)
    ​Private CUI As CultureInfov Damit muss ich mich nochmal beschäftigen..

    ​Dein Programm bekommt den Tageswechsel nicht mit: Ruft der TimerTick die Funktion nicht erneut ab?
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Amelie schrieb:

    Ruft der TimerTick die Funktion nicht erneut ab?
    Bei Deinem ursprünglichen Code nicht.
    Teste das ohne den Timer mit einem Button, wo Du die aktuelle Zeit manuell vorgibst.

    Amelie schrieb:

    Warum hier jetzt ReadOnly und nicht DIM?
    Das aschlägt die Codeanalyse vor (VS 2019).
    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!

    Amelie schrieb:

    keine Probleme
    Das ReadOnly ist kein Problem, das ist ne Anmerkung.
    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

    OK ;)
    Ich denke dann schließe ich das Thema bevor wieder einer mecker.. ;)

    EDIT:

    Hab da dann noch eben eine Frage:
    Was wäre besser etc.. Programmeinstellungen in "My.Settings" oder in einer "XML-Datei"?

    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

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

    Besser? Naja, für den Umgang mit den Settings braucht's nicht viel, das geht quasi automatisch. XML-Dateien kannst Du aber problemlos "mitnehmen". Wenn Du das Programm auf nen Stick kopierst oder nen anderen PC.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed
    Hab mich nun erstmal für das My.Settings entschieden, weil ich das mit den XML noch nicht so kapiere. Hatte mir schon ein DataTable angelegt, quasi in dem Aufbau wie die MySet...
    Könnte man ja noch immer umändern oder?
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Kommt wohl drauf an, was Du speichern willst. Je komplexer, desto besser sind XML oder JSON. Wenn's um Dateiformate geht …
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.