Hier wird doch ein Funktionsaufruf als GoTo missbraucht, was zu einem rekursiven Funktionsaufruf führt (mit den entsprechenden Problemen).
Bei Einsatz einer Schleife ist das aber gar nicht nötig:
AutoIt
#include <File.au3>
#include <WinAPIInternals.au3>
Global $targetPath ; wird im Original-Script ebenfalls an dieser Stelle deklariert
_aufrufendeFunktion()
Func _aufrufendeFunktion() ; _setTargetPath() wird so wie hier innerhalb des Scripts von einer weiteren Funktion aufgerufen
$targetPath = _setTargetPath(0) ; Als Rückgabewert wird entweder eine Pfadangabe oder "" erwartet
ConsoleWrite(@CRLF & " Rueckgabewert nach RETURN: >>>" & $targetPath & "<<<" & @CRLF & @CRLF)
EndFunc ;==>_aufrufendeFunktion
Func _setTargetPath($mode)
While True
Switch $mode
Case 0 ; Aufruf beim Hinzufügen eines neuen Eintrages
Local $sNewPath = FileSelectFolder("Zielverzeichnis auswählen", $targetPath)
If $sNewPath = '' Then Return ''
If __validatePathAccess($sNewPath) Then Return $sNewPath
Case 1 ; Aufruf beim Ändern eines oder meherer vorhandener Einträge
Case Else ; Falscher Übergabeparameter $mode
Return ''
EndSwitch
WEnd
EndFunc ;==>_setTargetPath
Func __validatePathAccess($path)
If _WinAPI_PathIsDirectory($path) Then
If StringRight($path, 1) = "\" Then $path = StringTrimRight($path, 1)
Local $h_tempFile = FileOpen($path & "\DieseDateiSollteGeloeschtWerden.txt", $FO_OVERWRITE)
If $h_tempFile <> -1 Then ; die erforderlichen Zugriffsrechte sind vorhanden
FileClose($h_tempFile)
FileDelete($path & "\DieseDateiSollteGeloeschtWerden.txt")
Return True
EndIf
EndIf
Return False ; es fehlen die erforderlichen Zugriffsrechte
EndFunc ;==>__validatePathAccess
Alles anzeigen