Datentypen Grundlagenübung

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Datentypen Grundlagenübung

    Hallo,

    mache gerade ein paar Anfängerübungen zu Datentypen aus dem Rheinwerk, Einstieg in Visual Basic 2012.

    Frage 1: Wenn ich Visual Studio 2019 verwende, welche Programmiersprache ist das dann? Ich bin mehr als verwirrt, da überall die Kürzel VB6, VB.NET, VBA, VB... verwendet werden aber wenn mich jemand fragen würde hätte ich keine Ahnung, was ich eigentlich verwende?

    Frage 1.1: Ich habe ein neues Projekt geöffnet und unter einem bestimmten Pfad gesichert. Dort ist auch die .sln Datei. Nun will ich das Projekt nochmals umbenennen aber wenn ich auf "File > Save As" gehe, da speichert es mir nur eine .vb Datei ab mit dem neuen Namen. Wie kann ich das im Nachhinein neu unter einem anderen Pfad bzw. unter einem anderen Namen speichern, sodass am Ende alle nötigen Dateien beisammen sind?

    Frage 2: Habe in den Einstellungen Option Strict On gesetzt, was denke ich im Buch nicht gemacht wurde. Folgende Fehler erhalte ich:

    Option Strict On disallows implicit conversions from 'String' to 'Char' in Zeile 17
    Option Strict On disallows implicit conversions from 'String' to 'Date' in Zeile 18


    Nun habe ich schon diverses zu Option Strict On gelesen aber so richtig kapiert habe ich es einfach noch nicht. Muss ich jetzt hier manuell eine Konvertierung vornehmen? In Zeile 6 bzw. 7 ist doch festgelegt, dass Ch ein Char und Dt ein Date ist.

    Nun steht ja in Zeile 17 bzw. 18

    VB.NET-Quellcode

    1. Ch = "a"
    2. Dt = "18.12.2012"

    also beides als String angegeben durch die Anführungszeichen " ". Wenn ich diese entferne (mein offenbar falscher Gedanke: damit es nicht als String gelesen wird), kommen folgende Fehler:
    End of statement expected in Zeile 18
    'a' is not declared in Zeile 17
    Conversion from 'Double' to 'Date' requires calling the 'Date.FromOADate' method in Zeile 18


    VB.NET-Quellcode

    1. Option Strict On ' Nur nochmal, damit ich es nicht vergesse
    2. Public Class Form1
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Dim Bo As Boolean
    5. Dim By As Byte
    6. Dim Ch As Char
    7. Dim Dt As Date
    8. Dim Db As Double
    9. Dim It As Integer
    10. Dim Lg As Long
    11. Dim Sh As Short
    12. Dim Sg As Single
    13. Dim St As String
    14. Bo = True
    15. By = 200
    16. Ch = "a"
    17. Dt = "18.12.2012"
    18. Db = 1 / 7
    19. It = 2000000000
    20. Lg = 3000000000
    21. Sh = 30000
    22. Sg = 1 / 7
    23. St = "Zeichenkette"
    24. Label1.Text =
    25. "Boolean: " & Bo & vbCrLf &
    26. "Byte: " & By & vbCrLf &
    27. "Char: " & Ch & vbCrLf &
    28. "Double: " & Db & vbCrLf &
    29. "Date: " & Dt & vbCrLf &
    30. "Integer: " & It & vbCrLf &
    31. "Long: " & Lg & vbCrLf &
    32. "Short: " & Sh & vbCrLf &
    33. "Single: " & Sg & vbCrLf &
    34. "String: " & St
    35. End Sub
    36. End Class

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

    Wenn Du VS2019 verwendest, kannst Du bei Projekterstellung festlegen, welche Sprache Du verwendest. VB.NET, C#, F#, …


    [Allgemein] VB.NET, VB6, VBA, VBS — Mit welcher Sprache programmiere ich eigentlich?

    In VS ist somit Deine VB-Sprache VB.NET

    Ch = "a"
    Ch ist ein Char, "a" ein String. Ein String kann nicht ohne möglicherweise eintretenden Datenverlust in ein Char umgewandelt werden. Wenn da "ab" stehen würde, würde nämlich das b unter den Tisch fallen. Zeige dem Compiler, dass das "a" ein Char sein soll und alles ist gut: Ch = "a"c
    "18.12.2012" ist auch ein String. Und kein Date. Daher rebelliert der Compiler. Zeige dem Compiler, dass das ein Date sein soll und alles ist gut: Dt = #12/18/2020#.
    Statt dem Compiler was passenden anzubieten, kannst Du natürlich auch Strings verwenden. Dann musst Du diese aber in die korrekten Datentypen konvertieren bzw. den Text parsen: Dt = Date.Parse("18.12.2020")
    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.

    Benutzername schrieb:

    Option Strict On ' Nur nochmal, damit ich es nicht vergesse
    Du kannst im Studio fest verdrahten, dass alle neuen VB-Projekte mit Strict On erstellt werden:
    Visual Studio - Empfohlene Einstellungen
    Dann kannst Du in der Deklarationszeile einer Variable gleich eine Zuweisung durchführen:

    VB.NET-Quellcode

    1. Dim Bo As Boolean = True
    2. Dim By As Byte = 200
    3. Dim Ch As Char = "a"
    4. Dim Dt As Date = "18.12.2012"
    5. Dim Db As Double = 1 / 7
    6. Dim It As Integer = 2000000000
    7. Dim Lg As Long = 3000000000
    8. Dim Sh As Short = 30000
    9. Dim Sg As Single = 1 / 7
    10. Dim St As String = "Zeichenkette"
    @VaporiZed Das Datum ist anders herum:

    docs.microsoft.com/de-de/dotne…data-types/date-data-type
    Korrekt sieht es dann so aus:

    VB.NET-Quellcode

    1. Dim Ch As Char = "a"c
    2. Dim Dt As Date = #12/18/2012#
    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!
    Öhm, ja. Hab ich ja auch stehen.

    VaporiZed schrieb:

    Zeige dem Compiler, dass das ein Date sein soll und alles ist gut: Dt = #12/18/2020#.
    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 OK, da hat was geflimmert. Sorry.
    Wenn ich die andere Variante lt. Link eingebe, mag er es im Studio 2013 nicht:

    wohl aber im Studio 2017:
    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!

    Benutzername schrieb:

    mache gerade ein paar Anfängerübungen zu Datentypen aus dem Rheinwerk, Einstieg in Visual Basic 2012.
    Nicht das!
    Das ist von Thomas Theiss, und das Buch ist ein rechter Anfänger-Verderber.
    Such dir ein anderes OpenBook - Kühnel/Leibhard haben was vernünftiges verzapft, oder Löffelmann.

    Wie du also schon gesehen hast, ist Theiss nicht fähig, Datentypen richtig zu behandeln.
    (Fast-)Vollzitat des direkten Vorposts an dieser Stelle entfernt ~VaporiZed

    Danke für den Hinweis. Das genannte Buch wurde uns als "das Buch" zu Beginn nahegelegt... Kühnel/Leibhard habe ich mir nun als Lesezeichen gesetzt.

    Leider sind hier keine einfache Übungen zu den jeweiligen Kapiteln, was ich beim Theiss-Buch praktisch fand/finde. Sind die Übungen dort ebenfalls untauglich wie der restliche Inhalt oder kann ich Kühnel/Leibhard zur Lehre und Theiss für die Übungen nehmen?
    Ich brauche so einfache Aufgaben, da es absolut keinen Sinn für mich macht, die an uns gestellten Übungen/Hausaufgaben zu bearbeiten. (Vorlesung: was ist 1+4?, Übung/HA: berechnen sie die Quadratwurzel der Farbe der Sonne geteilt durch den Geschmacks des Mondes)

    Bin mittlerweile gefühlt kilometerweit abgehängt in der "Einführung". Muss erstmal den ganzen Kram und seine Funktionen kapieren à la was passiert, wenn...
    Habe hier im Forum diesen einen Thread mit Programmierideen entdeckt, aber selbst dort sind die Anfängeraufgaben für mich alles andere als machbar.

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

    Benutzername schrieb:

    Sind die Übungen dort ebenfalls untauglich wie der restliche Inhalt oder kann ich Kühnel/Leibhard zur Lehre und Theiss für die Übungen nehmen?
    Weiss ichnicht, wie die Übungen sind.
    Übungen sind je vlt. nicht per se schlecht - nur welche Lösung als "richtig" gelten mag.
    Einige Übungen schienen mir aber auch wirklich schlecht, etwa, wenn er "übt", einen Haufen Pictureboxen zu erstellen, und irgendwie zu bewegen.
    Weil Animation ist in WinForms Sache von OwnerDrawing - SteuerElemente sollte man zur Laufzeit nicht erzeugen müssen.
    Zumindest die diesbezügliche Theisssche Übung ist schlecht, denn sowas macht man schlichtweg nicht.

    Aber das ist ein SpezialThema, wo er sich (mal wieder) böse verhauen hat, wie gesagt: seine anderen Übungen kenn ich nicht.