variablenproblem

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von tim.

    variablenproblem

    hallo zusammen



    bin neu hier!



    und ich habe eine frage! wiso kann ich eine variable die ich in der einten prozedur erstellt habe, in einer anderen prozedur nicht aufrufen????????? :?:



    würde mich freuen wenn ihr mir bald antwortet! :) :)
    weil in diesem fall die variable nur lokal geklariert wird. wenn sie in allen funktionen verfügbar sein soll, musst du sie global (also in der deklarationsabteilung oder zwischen den funktionen, wobei zweiteres der übersichtlichkeit nicht unbedingt zugute kommt).

    EDIT:

    Mouse-Maze schrieb:

    Du musst die Variable mit Public deklarieren! z.B.:

    VB.NET-Quellcode

    1. Public test As String


    bringt innerhalb einer funktion nichts

    tim schrieb:

    weis zufällig jemand wie man eine textbox im eigenschaftsfenster so einschränken kann das man in die textbox nur zahlen eingeben kann?

    Gar nicht.
    Entweder die Eingabe überwachen und alles nichtnumerische verwerfen, oder gleich ne NumericUpDown nehmen - die ist nämlich für sowas gedacht.
    Im TextChange_Event der TextBox:

    VB.NET-Quellcode

    1. Try
    2. Dim wert As Integer = TextBox1.Text
    3. Catch ex As Exception
    4. MsgBox("Sie dürfen keine Buchstaben eingeben, natürlich")
    5. End Try


    MB-Tech schrieb:

    Ich empfehle dir mal ein Buch über VB Programmierung zu lesen.

    Dann hast du auch keine Grundlegende Fragen mehr :)

    MFG
    Das ist doch das Grundlagen-Forum, oder täusch ich mich da?

    //EDIT: Habs vorher überlesen, MaskedTextBox nimm ich da immer...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „JU84553Hgd“ ()

    Entschuldigung aber irgendwie funktioniert das nicht mit public:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Public z1 As Integer
    4. End Sub
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. z1 = 2
    7. End Sub
    8. End Class


    Bei public reklamiert er:Fehler1"Public" ist bei der Deklaration von lokalen Variablen ungültig.

    Und wenn ich beim button1 auf clik der wert der variable ändern möchte sagt er:Fehler2Der Name "z1" wurde nicht deklariert.
    Hast du die Posts überhaupt gelesen? Hier sind 3 Posts die darauf hinweisen wie es machen musst.

    lordknoblauch schrieb:

    weil in diesem fall die variable nur lokal geklariert wird. wenn sie in allen funktionen verfügbar sein soll, musst du sie global (also in der deklarationsabteilung oder zwischen den funktionen, wobei zweiteres der übersichtlichkeit nicht unbedingt zugute kommt).

    EDIT:

    Mouse-Maze schrieb:

    Du musst die Variable mit Public deklarieren! z.B.:

    VB.NET-Quellcode

    1. Public test As String


    bringt innerhalb einer funktion nichts


    JackBauer schrieb:

    egtl kannst du die in der gesamten Form aufrufen.

    Schreibt die ma unter: Public Class am anfang

    picoflop schrieb:

    tim schrieb:

    wiso kann ich eine variable die ich in der einten prozedur erstellt habe, in einer anderen prozedur nicht aufrufen?????????

    Das nennt man "Gültigkeitsbereich" oder auch "Scope" (engl.):
    msdn.microsoft.com/de-de/library/ms973875(en-us).aspx
    So sollte es gehen:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public z1 As Integer
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. End Sub
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. z1 = 2
    7. End Sub
    8. End Class

    mcandy007 schrieb:

    So sollte es gehen:

    Und warum machst du z1 PUBLIC und nicht Private. Oder Protected? Oder Friend?

    Das VERSTEHEN des Gültigkeitsbereich von Deklarationen (Variablen, aber auch Klassen, Methoden etc!) ist WICHTIG! Statt sich zu bemühen, das "irgendwie" zum Laufen zu bekommen, sollte man sich mal eher etwas tiefer mit dieser speziellen Materie beschäftigen.

    Merke: Mit Public läuft alles. Im Zweifel schief.


    Eine Variable GILT immer in dem Block und allen eingeschlossenen (!) Blöcken, in dem sie deklariert wurde.

    Bsp.:

    VB.NET-Quellcode

    1. Public Class Foo
    2. Private somefoo As Integer
    3. Public Sub Bar()
    4. Dim somebar As Double
    5. For i As Integer = 1 To 10
    6. Dim a As String
    7. Next
    8. For i As Double = 1 To 10
    9. Dim a As Char
    10. Next
    11. End Sub
    12. End Class


    Hier haben wir VIER Blöcke:
    1.: Class Foo. Geht bis End Class
    2.: Sub Bar. Geht bis End Sub und ist Teil des Blockes 1
    3.: Die erste For Scheife! Auch eine For Schleife ist ein Block! Ist Teil von Block 2 UND Block 1
    4.: Der zweite For "Block"

    Also gilt:
    1.: somefoo ist innerhalb der gesamten Klasse GÜLTIG. Wegen "private" aber nicht nach außerhalb dieser Klasse "sichtbar"
    2.: sombar ist innerhalb der gesamten Sub gültig, aber in keiner anderen Sub dieser Klasse. "Sichtbar" nur innerhalb dieses Blocks
    3.: Die Laufvariable i liegt in zwei UNABHÄNGIGEN Blöcken. Sie kann deshalb mehrfach deklariert werden, ist aber auch nur genau in DIESEM Block gültig. Nach dem "Next" darf man auf "i" nicht mehr zugreifen! Denn da gilt sie ja nicht mehr.
    4.: Das gleiche gilt für die Variable "a", die ebenfalls innerhalb von 2 Blöcken liegt, die aber nicht verschachtelt sind.


    Was lernen wir daraus? Lesen Bildet!

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