# Bemerkungen zu UDFs

Wir haben einige Dateien mitgeliefert, die jeweils AutoIt3-Standardfunktionen, so genannten - User Defined Functions enthalten.
UDFs sind Funtionen oder Codeschnipsel, geschrieben in AutoIt3. Über den #include-Befehl kann man diese Funktionen in sein eigenens Skript einbinden ohne sie jedes mal selbst schreiben oder kopieren zu müssen.

Beispiel:

#include <date.au3> MsgBox(0,"Heute","Das heutige Datum ist der " & Now())

Dieses Skript zeigt das heutige Datum in dem Format an, das in den Datums- und Währungseinstellungen deines Betriebssystems eingestellt ist. Z.B.: "Sonntag, 18. Dezember 2005"

Viele UDFs haben optionale Parameter, die weggelassen werden können.Wenn du einen optionalen Parameter verwenden möchtest, muss jeder vorangehende Parameter angegeben sein. Du kannst also nur den vorletzten Parameter weg lassen, wenn der letzte auch weg gelassen wird usw.
Zum Beispiel bei
_ArraySort ( ByRef $a_Array, [[[[$i_Descending], $i_Base=0], $i_Ubound=0, $i_Dim=1]] )
Wenn vor den Parametern das Schlüsselwort "ByRef" steht, dann verändert die Funktion den Wert dieser Varibalen mit dem neuen Wert. Diese Parameter müssen Variablen sein ($xyz), können also keine Konstanten sein.

Die meisten UDF-Funktionen geben den Erfolg oder Misserfolg bei ihrer Ausführung als "return"-Wert an, andere setzen das @error-Flag. Manche tun auch beides...
@error = 0 ;bedeutet stets Erfolg
Return = variiert, aber es ist typischerweise nicht-Null, wennn die Ausführung erfolgreich war, damit es einfach zu handhaben ist.
If someUserFunc() then ;...Funktion hat funktioniert
If Not someUserFunc() then ;...Funktion hat nicht funktioniert
$x = FileReadLine("C:\Datei.txt")
If @error = -1 Then ;Dateiende (eof) wurde erreicht
Wenn eine Funktion das @error-Flag setzen kann, dann solltest du es immer überprüfen, befor du den "return"-Wert benutzt. Wenn @error nämlich einen Fehler zeigt, dann ist der "return"-Wert generell undefiniert...