VBS, IF-Bedingung an Funktion übergeben
Hallo,
ich bin dabei ein Skript in VBS zu schreiben und dabei auf ein Problem gestoßen. Ich habe eine Funktion erstellt, in der abhängig von einer IF-Bedingung eine Datei gelöscht werden soll. Die Bedingung zum Löschen soll als Parameter an die Funktion übergeben werden, ist das irgendwie möglich?
Hier mal ein Beispiel (die Funktion ist stark verkürzt):
Die IF-Bedingung in der Funktion würde ohne den Übergabeparameter dann so aussehen:
Hinweis: objFile.Name gibt den Namen der Datei zurück, etwa "abc2012.txt"
Das Ganze funktioniert jetzt natürlich nicht, da es das Objekt objFile nur innerhalb der Funktion gibt. Ich müsste diese Bedingung also möglichst als String oder Parameter übergeben, ohne, dass schon bei der Übergabe versucht wird den Namen des Objekts abzurufen.
Ich hoffe das war einigermaßen verständlich.
PSaR04
ich bin dabei ein Skript in VBS zu schreiben und dabei auf ein Problem gestoßen. Ich habe eine Funktion erstellt, in der abhängig von einer IF-Bedingung eine Datei gelöscht werden soll. Die Bedingung zum Löschen soll als Parameter an die Funktion übergeben werden, ist das irgendwie möglich?
Hier mal ein Beispiel (die Funktion ist stark verkürzt):
fDateiLoeschen(left(objFile.Name, 3) = "abc")
function fDateiLoeschen (strBedingung)
IF strBedingung Then objFile.delete
end function
Die IF-Bedingung in der Funktion würde ohne den Übergabeparameter dann so aussehen:
IF left(objFile.Name, 3) = "abc" Then objFile.delete
Hinweis: objFile.Name gibt den Namen der Datei zurück, etwa "abc2012.txt"
Das Ganze funktioniert jetzt natürlich nicht, da es das Objekt objFile nur innerhalb der Funktion gibt. Ich müsste diese Bedingung also möglichst als String oder Parameter übergeben, ohne, dass schon bei der Übergabe versucht wird den Namen des Objekts abzurufen.
Ich hoffe das war einigermaßen verständlich.
PSaR04
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 193836
Url: https://administrator.de/contentid/193836
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo PSaR04.
Das ist kein besonders guter Stil. Du kannst das If Statement auch vorher im Code ausführen. Aber um deine Frage zu beantworten: Schau dir mal die Eval() Funktion an.
Grüße
rubberman
Das ist kein besonders guter Stil. Du kannst das If Statement auch vorher im Code ausführen. Aber um deine Frage zu beantworten: Schau dir mal die Eval() Funktion an.
Sub fTest(strBedingung)
If Eval(strBedingung) Then
WScript.Echo strBedingung & " ist WAHR."
Else
WScript.Echo strBedingung & " ist FALSCH."
End If
End Sub
fTest "1=1"
fTest "1<1"
Grüße
rubberman
Hallo PSaR04.
Wie schon geschrieben, das If Statement vorher ausführen und in Abhängigkeit vom Ergebnis die Funktion zum Löschen ausführen.
Die Fehlermeldung deutet darauf hin, dass objFile in der Prozedur/Funktion keine Gültigkeit hat. Entweder du deklarierst objFile als globale Variable (auch wieder kein guter Stil), oder du übergibst das Objekt ByRef als weiteren Parameter mit an die Prozedur/Funktion.
Grüße
rubberman
Wie schon geschrieben, das If Statement vorher ausführen und in Abhängigkeit vom Ergebnis die Funktion zum Löschen ausführen.
Die Fehlermeldung deutet darauf hin, dass objFile in der Prozedur/Funktion keine Gültigkeit hat. Entweder du deklarierst objFile als globale Variable (auch wieder kein guter Stil), oder du übergibst das Objekt ByRef als weiteren Parameter mit an die Prozedur/Funktion.
Grüße
rubberman
Hallo PSaR04.
Ich sehe keinen Grund warum das nicht funktionieren soll (aber ich kenne ja auch deinen Code nicht).
Erstelle mal eine Textdatei "test.txt" im selben Verzeichnis und führe folgendes Script aus:
Grüße
rubberman
Ich sehe keinen Grund warum das nicht funktionieren soll (aber ich kenne ja auch deinen Code nicht).
Erstelle mal eine Textdatei "test.txt" im selben Verzeichnis und führe folgendes Script aus:
Sub fTest(strBedingung)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("test.txt")
If Eval(strBedingung) Then
WScript.Echo strBedingung & " ist WAHR."
Else
WScript.Echo strBedingung & " ist FALSCH."
End If
End Sub
fTest "LCase(objFSO.GetExtensionName(objFile.Name))=""txt"""
fTest "LCase(objFSO.GetExtensionName(objFile.Name))=""jpg"""
rubberman