vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Variable wurde nicht deklariert ? 
Autor: Major Kottan
Datum: 21.07.18 10:29

Hallo,

Ich habe folgendes Problem in einer Funktion in einem Klassenmodul:

Function Einlesen() As String()
        Dim Untouched As Boolean
        Dim TmpValue As String
        Dim I As Integer
        Dim ArrLaenge As Integer
 
        dateiliste = Directory.GetFiles(verzeichnis, "*.*")
        ArrLaenge = dateiliste.Length - 1
        Do
            Untouched = True
            For I = 0 To ArrLaenge - 1
                If File.GetCreationTime(dateiliste(I)) > _
                  File.GetCreationTime(dateiliste(I + 1)) Then
                    TmpValue = dateiliste(I)
                    dateiliste(I) = dateiliste(I + 1)
                    dateiliste(I + 1) = TmpValue
                    Untouched = False
                End If
            Next I
        Loop Until Untouched
        Return dateiliste
    End Function
Fehlermeldung:"ArrLaenge wurde nicht deklariert. Aufgrund der Schutzstufe ist unter Umständen kein Zugriff möglich."

Warum des steht doch da: Dim ArrLaenge As Integer ?

Bin neu eingestiegen in die VB Programmierung. Bitte um Hilfestellung, was ich da übersehe.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Variable wurde nicht deklariert ? 
Autor: Kuno60
Datum: 21.07.18 14:26

Hallo,

"ArrLaenge" ist deklariert, aber "dateiliste" und "verzeichnis" sind nicht deklariert (zumindest nicht innerhalb dieser Funktion).
Wo genau tritt denn der Fehler auf?
Ansonsten ist die Funktion richtig.

So kann man es auch schreiben (liefert das gleiche Ergebnis):
Function Einlesen(verzeichnis As String) As String()
    Dim di As New DirectoryInfo(verzeichnis)
 
    Dim dateiliste = From f In di.EnumerateFiles
                     Order By f.CreationTime
                     Select f.FullName
 
    Return dateiliste.ToArray
  End Function
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Variable wurde nicht deklariert ? 
Autor: Major Kottan
Datum: 21.07.18 18:05

Danke Kuno für die Alternative. Sieht einfacher aus und muß ich danach probieren.

Möchte aber stehen, warum mein Code nicht funktioniert.
dateiliste und verzeichnis sind als Variablen im Klassenmodul definiert.

Public Class cDateiListe
    Private datanzahl As Integer
    Private dateiliste() As String
    Private verzeichnis As String
    Private verzeichnis_Laenge As Byte
    Private datName As String
Wenn ich meinen Code jetzt im Einzelschrittmodus debugge,

Function Einlesen() As String()
        Dim Untouched As Boolean
        Dim TmpValue As String
        Dim I As Integer
        Dim ArrLaenge As Integer
 
        dateiliste = Directory.GetFiles(verzeichnis, "*.*")
        ArrLaenge = dateiliste.Length - 1
        Do
            Untouched = True
            For I = 0 To ArrLaenge - 1
                If File.GetCreationTime(dateiliste(I)) > _
                  File.GetCreationTime(dateiliste(I + 1)) Then
                    TmpValue = dateiliste(I)
                    dateiliste(I) = dateiliste(I + 1)
                    dateiliste(I + 1) = TmpValue
                    Untouched = False
                End If
            Next I
        Loop Until Untouched
        Return dateiliste
    End Function
dann sehe ich daß datiliste.Legnth der Wert 84 zugewiesen wird, ArrLaenge jedoch nichts ??

Fehlermeldung: error BC34051"ArrLaenge wurde nicht deklariert. Aufgrund der Schutzstufe ist unter Umständen kein Zugriff möglich."

Was aber offenbar nicht stimmt. Und I durchläuft die For Next Schleife trotzdem bis 83 ?
Ah sehe gerade, offenbar bezieht sich der Fehler nur auf das Überwachungsfenster ??!
Etwas unverständlich für mich.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Variable wurde nicht deklariert ? 
Autor: Manfred X
Datum: 22.07.18 07:51

Ich habe versucht, Dein Problem mal schnell zu reproduzieren (VS 2017).
Weder im lokalen noch im allgemeinen Überwachungsfenster traten
bei der Variable "arrLaenge" Ausnahme-Meldungen auf.

Deine Klasse ist - so weit Du den Code gepostet hast - "seltsam" strukturiert
Sollte das nicht eher so oder ähnlich aussehen?
(Properties, Membervariablen, interne (private) Methoden)

Public Class cDateiliste
 
    'Interne Datenhaltung
    Private _dateiliste() As String
    Private _verzeichnis As String
 
    '??????????
    'Private datanzahl As Integer
    'Private verzeichnis_Laenge As Byte
    'Private datName As String
 
 
    Public Property Verzeichnis As String
        Set(value As String)
            _verzeichnis = value
            Einlesen()
        End Set
        Get
            Return _verzeichnis
        End Get
    End Property
 
 
    'evt. Friend/Private 
    Public ReadOnly Property Dateiliste As String()
        Get
            Return _dateiliste
        End Get
    End Property
 
 
    Private Sub Einlesen()
 
        _dateiliste = (From fi As IO.FileInfo In
              New IO.DirectoryInfo(_verzeichnis).EnumerateFiles
                  Order By fi.CreationTime Ascending
                  Select fi.FullName).ToArray
    End Sub
 
End Class


Beitrag wurde zuletzt am 22.07.18 um 07:53:26 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Variable wurde nicht deklariert ? 
Autor: Major Kottan
Datum: 22.07.18 09:34

Vielen Dank an Kuno,

Dein viel kürzerer und einfacherer Code hat das Problem sehr schnell gelöst.
Gibt halt noch viel zu lernen. Vorallem weiß ich offenbar nicht, daß eine viel einfachere Lösung existiert und ich versuche deswegen die kompliziertere (das Array zu sortieren) ...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Variable wurde nicht deklariert ? 
Autor: Manfred X
Datum: 22.07.18 10:37

Hallo!

Nein. Der Vorschlag von Kuno60 ist zwar kürzer,
hat aber mit Deinem eingangs geschilderten Problem nichts zu tun.

Dein Code zum Sortieren war zwar "umständlich", aber syntaktisch
korrekt.

Manchmal hilft es in solchen Fällen, das PDB-File der Projekt-
Konfiguration zu löschen und das Projekt danach neu zu erstellen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel