VBS - Object als Return Value einer Funktion
Hallo,
wie gebe ich aus einer Funktion ein Object als return value zurück und wie greife ich dann darauf zu?
Was ist hier falsch:
wie gebe ich aus einer Funktion ein Object als return value zurück und wie greife ich dann darauf zu?
Was ist hier falsch:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile1 = CreateTextFile("d:\temp\huhu", True)
WScript.Echo objFile1.Path
Function CreateTextFile(strFile, OverWriteFlag)
On Error Resume Next
Set CreateTextFile = objFSO.CreateTextFile(strFile, OverWriteFlag)
If Err.Number <> 0 Then
WScript.Echo "CreateTextFile: Fehler beim Anlegen von " & strFile
If Err.Number = -2147024784 Then
WScript.Echo "Fehlernr. " & Err.Number & ": nicht genügend Plattenplatz"
Else
WScript.Echo "Fehlernr. " & Err.Number & ": " & Err.Description
End If
End If
On Error GoTo 0
End Function ' CreateTextFile
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 52396
Url: https://administrator.de/forum/vbs-object-als-return-value-einer-funktion-52396.html
Ausgedruckt am: 17.05.2025 um 18:05 Uhr
4 Kommentare
Neuester Kommentar
Hallo MSchyska!
Auch wenn ich der Function nicht den Namen einer FSO-Methode gegeben, sondern sie vielleicht "MakeTextFile" genannt hätte, funktioniert die Funktion.
Der Fehler entsteht erst beim Test, da ein offenes "TextFile"-Objekt keine "Path"-Eigenschaft hat. Versuch zB statt der "WScript.Echo"-Zeile
Grüße
bastla
Auch wenn ich der Function nicht den Namen einer FSO-Methode gegeben, sondern sie vielleicht "MakeTextFile" genannt hätte, funktioniert die Funktion.
Der Fehler entsteht erst beim Test, da ein offenes "TextFile"-Objekt keine "Path"-Eigenschaft hat. Versuch zB statt der "WScript.Echo"-Zeile
objFile1.WriteLine "Dieses Textfile wurde mit einer Function erstellt."
objFile1.Close
Grüße
bastla
Hallo MSchyska!
Wenn die Funktion kein Objekt zurückliefert, erhältst Du als Ergebnis "Nothing", also müsste
funktionieren. Allerdings wird bei jedem Aufruf der Funktion versucht, die Textdatei zu erzeugen, was bei einem nicht gewünschten Überschreiben das Vorhaben eigentlich schon zum Scheitern verurteilt ...
Alternativ kannst Du es natürlich über "On Error" versuchen, aber ich frage mich, wozu Du überhaupt den ganzen Aufwand treiben willst (nur wegen des in der Funktion selbst verwendeten Errorhandlings?). Eine Diskussion über saubere Programmierung möchte ich im Zusammenhang mit Scripting allerdings nicht führen ...
Grüße
bastla
Wenn die Funktion kein Objekt zurückliefert, erhältst Du als Ergebnis "Nothing", also müsste
If Not CreateTextFile("d:\temp\huhu", False) = Nothing Then Set objFile1 = CreateTextFile("d:\temp\huhu", False)
Alternativ kannst Du es natürlich über "On Error" versuchen, aber ich frage mich, wozu Du überhaupt den ganzen Aufwand treiben willst (nur wegen des in der Funktion selbst verwendeten Errorhandlings?). Eine Diskussion über saubere Programmierung möchte ich im Zusammenhang mit Scripting allerdings nicht führen ...
Grüße
bastla