Benutzer mit den meisten Antworten
If Then Routine läuft ins leere

Frage
-
Hallo,
irgendwie habe ich einen Knoten im Hirn, jedenfalls brauche ich mal wieder Hilfe.
Mein Programm prüft bei jedem Strart, ob alle erforderlichen Verzeichnisse vorhanden sind und soll für den Fall, dass ein Verzeichnis fehlt dies melden und vorschlagen das Verzeichnis neu anzulegen.
Insgesamt habe ich im extremfall 63 Verzeichnisse. Die Zahl hängt davon ab, ob ich den dazugehörigen Variablen einen Namen gegeben habe.
Heisst der erste Ordner = "Ordner1" oder ist das Namensfeld leer ="" soll auch kein Verzeichnis erzeugt werden
Das hat auch soweit geklapp so lange es noch gar keine Einträge im Zielverzeichnis gab.
Wurden alle Ordner angelegt und einer manuell von mir entfernt, wurde der beim nächste mal nicht wieder erzeugt.
Aktuell habe ich es mit folgendem Code versucht:
If
Ordner60 = "S60" Or Ordner60 = "" Or Directory.Exists(ZielVerzeichnis & Ordner60) Then
'nichts
MsgBox(
"Ordner60: " & ZielVerzeichnis & Ordner60 & " existiert")
Else
MsgBox(ZielVerzeichnis & Ordner60 &
" wird angelegt")
MkDir(ZielVerzeichnis & Ordner60)
End If
Dabei habe ich nun folgende Ergebnisse:
Zunächst werden alle Ordner die es geben soll auch angelegt, die, die nicht erzeugt werden sollen gibt es auch nicht.
Lösche ich nun z.B. Ordner 10 und aus dem Zielverzeichnis und starte das Programm neu, bekomme ich beim aktuellen Code noch für den ersten bestehenden Ordner angezeigt, dass er existiert und dann nichts mehr. Als ob der Rest der Routine gar nicht existieren würde.
Wo liegt mein Fehler?
Stefan
Liebe Grüße Stefan
Antworten
-
Hallo Stefan,
wie ich sehe, war Dir mein Vorschlag von letztens noch etwas viel - versuchen wir es mal mit einem kleineren Schritt.
Um Dir die Anlage zu erleichtern erstelle Dir eine kleine Funktion.
Wenn ich das oben richtig interpretiere, könnte die so aussehen:'Public Shared ZielVerzeichnis As String = "...." Public Shared Function VerzeichnisAnlage(ByVal ordnerName As String, ByVal vorgabeName As String) As Boolean ' Kein Verzeichnisname oder Vorgabe => auslassen If Not String.IsNullOrEmpty(ordnerName) AndAlso ordnerName <> vorgabeName Then Dim pfad As String = IO.Path.Combine(ZielVerzeichnis, ordnerName) If IO.Directory.Exists(pfad) Then MsgBox("Ordner60: " & pfad & " existiert bereits.") Return True Else Try IO.Directory.CreateDirectory(pfad) MessageBox.Show(pfad & " wurde angelegt.") Return True Catch ex As Exception MessageBox.Show(pfad & " konnte nicht angelegt werden:" & Environment.NewLine & ex.Message) End Try End If End If Return False End Function
Die kannst Du dann 63 Mal (oder so oft Du magst) aufrufen
VerzeichnisAnlage(Ordner60, "S60")
VerzeichnisAnlage(Ordner61, "S61")
VerzeichnisAnlage(Ordner62, "S62")
(Und später, wenn das doch mal ein Dictionary werden sollte, es in eine Schleife umbauen.)
Gruß Elmar- Als Antwort markiert Giftzwockel Montag, 17. August 2009 17:06
Alle Antworten
-
Hallo Stefan,
wie ich sehe, war Dir mein Vorschlag von letztens noch etwas viel - versuchen wir es mal mit einem kleineren Schritt.
Um Dir die Anlage zu erleichtern erstelle Dir eine kleine Funktion.
Wenn ich das oben richtig interpretiere, könnte die so aussehen:'Public Shared ZielVerzeichnis As String = "...." Public Shared Function VerzeichnisAnlage(ByVal ordnerName As String, ByVal vorgabeName As String) As Boolean ' Kein Verzeichnisname oder Vorgabe => auslassen If Not String.IsNullOrEmpty(ordnerName) AndAlso ordnerName <> vorgabeName Then Dim pfad As String = IO.Path.Combine(ZielVerzeichnis, ordnerName) If IO.Directory.Exists(pfad) Then MsgBox("Ordner60: " & pfad & " existiert bereits.") Return True Else Try IO.Directory.CreateDirectory(pfad) MessageBox.Show(pfad & " wurde angelegt.") Return True Catch ex As Exception MessageBox.Show(pfad & " konnte nicht angelegt werden:" & Environment.NewLine & ex.Message) End Try End If End If Return False End Function
Die kannst Du dann 63 Mal (oder so oft Du magst) aufrufen
VerzeichnisAnlage(Ordner60, "S60")
VerzeichnisAnlage(Ordner61, "S61")
VerzeichnisAnlage(Ordner62, "S62")
(Und später, wenn das doch mal ein Dictionary werden sollte, es in eine Schleife umbauen.)
Gruß Elmar- Als Antwort markiert Giftzwockel Montag, 17. August 2009 17:06
-
Hallo Oliver,
nicht das ich das Problem aus den Augen verloren hätte - wie könnte ich auch ;-) - nö, ich war einfach mal weg.
Zunächst habe ich das mit 63 mal auf nicht Vorhandensein geprüft, das hat aber nicht den gewünschten erfolg gebracht.
Dein Code da unten sieht für mich viel versprechend aus. Und ganz nebenbei lerne ich das mit einem Rückgabewert.
Danke.
Liebe Grüße Stefan