Variable & Konstante

  • VB.NET

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

    Variable & Konstante

    Hallo,
    ich habe ein Problem, ich habe in einer Spalte Namens PCName Daten stehen und will die Nutzen um auf ein Pfad zuzugreifen ..
    jetzt habe ich das Problem,

    VB.NET-Quellcode

    1. Const StartMenu_Verz = "\\" & KlickPCNamen & "\test\Start Menu\"


    Da sagt er mir Konstanter Ausdruck erforderlich.
    Was habe ich da falsch gemacht? Die Variable KlickPCName ist ein String

    VB.NET-Quellcode

    1. Const KlickPCNamen = "..."
    2. Const StartMenu_Verz = "\\" & KlickPCNamen & "\test\Start Menu\"
    funktioniert.

    Konstanten dürfen ihren Wert nicht verändern, da sie bereits zur Kompilierungszeit in die .exe geschrieben werden.
    Da KlickPCNamen zu diesem Zeitpunkt noch nicht bekannt ist, bekommst du eine Fehlermeldung.
    Du kannst alternativ mit ReadOnly arbeiten, was die einmalige Veränderung des Werts der Variable erlaubt.

    VB.NET-Quellcode

    1. Dim KlickPCNamen = "..." ' keine Konstante
    2. ReadOnly StartMenu_Verz = "\\" & KlickPCNamen & "\test\Start Menu\" ' kann nicht mehr verändert werden
    Hier mal der ganze code..

    VB.NET-Quellcode

    1. Dim KlickPCNamen As String
    2. Dim StartMenu_Datei
    3. Dim StartMenu_Ordner
    4. Dim FSO As Object
    5. ' Klick auswerten
    6. If e.ColumnIndex = 0 AndAlso e.RowIndex >= 0 Then
    7. 'Zeigt den Eintrag an, der in der Spalte 0 steht und schreibt ihn in ein String
    8. Try
    9. KlickPCNamen = "" &
    10. VerknGridView.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
    11. MessageBox.Show(KlickPCNamen)
    12. Catch ex As Exception
    13. MessageBox.Show(ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    14. End Try
    15. End If
    16. ReadOnly StartMenu_Verz = "\\" & KlickPCNamen & "\gsf\Start Menu\"
    17. MessageBox.Show(StartMenu_Verz)
    18. FSO = CreateObject("Scripting.filesystemobject")
    19. For Each StartMenu_Datei In FSO.getfolder(StartMenu_Verz).Files
    20. Me.SMListView.Items.Add(StartMenu_Datei.Name)
    21. Next
    22. 'UnterOrdner anzeigen'
    23. For Each StartMenu_Ordner In FSO.getfolder(StartMenu_Verz).subfolders
    24. Me.SMListView.Items.Add(StartMenu_Ordner.Name)
    25. Next



    weil jetzt sagt er mir, dass "ReadOnly" ist bei der Deklaration von lokalen Variablen ungültig. ist
    Test ist der Wert, der eingefügt wird.
    Einen String, den du einer Konstante zuweist, kannst du nur aus anderen konstanten Strings konstruieren.
    Andere konstante String sind entweder solche, die du in deinem Code mit "" einprogrammierst, oder solche, die sich in einer weiteren als Const deklarierten Variable befinden.

    Bei mir funktioniert der gepostete Code ohne Probleme; habe ihn in der IDE ausprobiet, weil ich mir nicht sicher war.
    Am besten machst du es mit dem ReadOnly-Keyword (zweiter Code im oberen Post).

    Edit: Jetzt, wo ich mir den Code ansehe, fällt mir auf, dass Const und ReadOnly eigentlich gar nicht notwendig sind.
    Wozu willst du sie denn verwenden?
    Die zwei Schlüsselwörter sind eher dafür da, um z.B. in Klassen zu verhindern, dass von außen eine Variable geändert wird.
    habe ich oben beschrieben .. ich möchte den PCNamen der im DataGridView ist verwenden, um die Lücke die da ist zu füllen.. um dann alle Verknüpfungen im ListView angezeigt zu bekommen
    ich will dann später mit Drag & Drop etc verknüpfungen austauschen bzw hinzufügen und löschen etc.. halt mir das alles vereinfachen anstatt bei jedem PC im Explorer drauf zu gehen und jedes da so
    anfassen..