Structure Initialisierung klappt nicht

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von TVX.

    Structure Initialisierung klappt nicht

    Wo mache ich hier den Denkfehler?
    Die Initialisierung klappt nicht. So ist z.B. der String "lOflag" nicht mit dem Wert " /-Y" belegt nachdem ich die Initialisierung aufgerufen habe.

    Definition ist:

    VB.NET-Quellcode

    1. Public Structure StPgmParm
    2. Public lQuelle As String
    3. Public lZiel As String
    4. Public lAnz As Integer
    5. Public lLog As Integer
    6. Public lOverwrite As Boolean
    7. Public lMkDir As Boolean
    8. Public lDateierw As String
    9. Public lOflag As String
    10. Public Sub Initialize()
    11. Dim lQuelle = ""
    12. Dim lZiel = ""
    13. Dim lAnz = 0
    14. Dim lLog = 0
    15. Dim lMkDir = False
    16. Dim lScreen = False
    17. Dim lDateierw = "*.*"
    18. Dim lOflag = " /-Y"
    19. End Sub
    20. End Structure


    und dann der Code in MAIN lautet:

    VB.NET-Quellcode

    1. Dim lPgmParm As New StPgmParm
    2. lPgmParm.Initialize()
    3. Console.WriteLine("hier:" & lPgmParm.lOflag)
    Wo hast du den die defination stehn :?:

    EDIT SO:


    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim lQuelle As String = ""
    3. Dim lZiel As String = ""
    4. Dim lAnz As Integer = 0
    5. Dim lLog As Integer = 0
    6. Dim lDateierw As String = "*.*"
    7. Dim lOflag As String = " /-Y"

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

    Hi
    @TVX: du müsstest auf Typebene statt Dim Public/Protected/Private/Friend/Protected Friend verwenden, da Dim kein Zugriffsmodifizierer ist, auch wenn es funktioniert, das wird somit nur innerhalb von Methodenkörpern verwendet. Bei Structures verhält es sich übrigens anders, als bei Klassen.

    Bei der Zuweisung ist kein Dim nötig, das deklariert jedes mal eine neue Variable, also einfach weglassen.

    Gruß
    ~blaze~
    Du hast da ein kleines Problem. Warum? Nunja, du hast zwar eine Variable in der Structure deklariert, aber nutzen tust du sie nicht.
    Die Initialize-Sub erzeugt ihrerseits noch mal Variablen, die zugewiesen werden. Hier ist das Problem: du hast zwei verschiedene Typenbereiche - einmal die Struktur selbst und dann die Sub. Hierbei muss aber beachtet werden, dass die Sub vor die Struktur gesetzt wird.
    Damit es funktioniert, solltest du statt dem Dim einfach garnichts schreiben.
    Beispiel:

    VB.NET-Quellcode

    1. Public Structure Car
    2. Public Property Name As String
    3. Public Property Id As Int
    4. Public Property SomeProperty As String
    5. Public Sub Initialize()
    6. Name = ""
    7. Id = 0
    8. SomeProperty = "Okay."
    9. End Sub
    10. End Structure

    Alternativ, damit du die Zugehörigkeit besser verstehst, kannst du auch Me.Name = "" nutzen.