#cs ----------------------------------------------------------------------------

	AutoIt Version: 3.3.6.0
	Author:         FKFK
	Version:		 20140515

	Script Function:
	Einen String aus einer Textdatei auslesen.
	Anwendung:
	Datei einbinden oder unterhalb von "#include-once" an eine beliebige Script-Stelle kopieren.
	Parameter:
	$sPfadR = Pfad der auszulesenden Datei (sie wird ausschließlich wie im Texteditor betrachtet) | Der Pfad muss existieren
	$iStringArray = 0 (Standard): Rückgabe als String, Zeilen der Textdatei werden als zusammenhängender Text, mit einem Zeilenumbruch als Trennzeichen, ausgegeben
	1 = Zeilen werden in ein 1DArray geschrieben
	2 = Zeilen und Spalten werden in ein 2DArray geschrieben
	$sTrennzeichen = ; (Standard): Bei zweidimensionalen Arrays das Trennzeichen zwischen den Spalten
	Rückgabewerte:
	String
	oder 1DArray -> 1. Zeile Zeilenzahl, 2. Zeile erste Dateizeile, 3. Zeile zweite Dateizeile usw.
	Fehlerrückgabewerte:
	1 -> Dateierstellungs-/-öffnungsfehler
	2 -> Zeilenlesefehler
	3 -> Fehler beim Schließen des Handles
	4 -> Parameterfehler
	Beispiel:
	_ReadFile ("\\lm.local\IT\admin\0_Ausbildung\FloK\Library\DatenVonTXT.au3")
#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here
#include-once ;Datei darf nur einmal eingebunden werden (sobald es einmal eingebunden ist, kann die Funktion häufig verwendet werden)

#cs Beispiel String
	MsgBox(0, "Der große Test", _ReadFile("DatenVonDatei.au3"))
#ce
;~ #cs Beispiel Array
	#include 'array.au3'
	Local $Array
	$Array = _ReadFile("DatenVonDatei.au3", 1)
	_ArrayDisplay($Array)
;~ #ce


Func _ReadFile($sPfadR, $iStringArray = 0, $sTrennzeichen = ';')
	;Deklarierung der Variablen
	Local $hFile, $sTextzeile, $sReturn, $aReturn, $i = 0, $aSpalten, $sZeile
	;auszulesende Datei
	$hFile = FileOpen($sPfadR) ;Dateipfad (muss existieren)
	If $hFile = -1 Then
		Return SetError(1, 0, 0) ;Ende bei Dateierstellungs-/-öffnungsfehler
	EndIf
	If $iStringArray = 0 Then ;Es soll ein String zurückgegeben werden
		While 1 ;Dauerschleife bis Dateiende
			$sReturn &= FileReadLine($hFile) ;Liest immer die nächste Zeile
			$sReturn &= @CRLF ;Fügt einen Zeilenumbruch an
			If @error = -1 Then ExitLoop
			If @error = 1 Then
				Return SetError(2, 0, 0) ;Ende bei Zeilenlesefehler
			EndIf
		WEnd
		If FileClose($hFile) = 0 Then ;Datei wird geschlossen ;Fehlerüberprüfung
			Return SetError(3, 0, 0) ;Ende bei Fehler beim Schließen des Handles
		EndIf
		Return $sReturn ;Gibt den String zurück
	ElseIf $iStringArray = 1 Then ;Es soll als 1DArray zurückgegeben werden
		While 1 ;Dauerschleife bis Dateiende
			If Not IsArray($aReturn) Then Dim $aReturn[1] ;Deklariert das Array, sofern noch nicht geschehen
			$i += 1 ;Hochzählen der Zählschleife
			ReDim $aReturn[UBound($aReturn) + 1] ;Vergrößert das Array
			$sZeile = FileReadLine($hFile) ;Speichern der Zeile im Array;;;
			If @error = -1 Then ;Bei Dateiende
				$aReturn[0] = UBound($aReturn) - 1 ;Hineinschreiben der Zeilenanzahl
				ExitLoop ;Verlassen der Schleife
			EndIf
			If @error = 1 Then
				Return SetError(2, 0, 0) ;Ende bei Zeilenlesefehler
			EndIf
			$aReturn[UBound($aReturn) - 1] = $sZeile ;Speichern der Zeile im Array;;;
		WEnd
		Return $aReturn
	ElseIf $iStringArray = 2 Then ; Es soll als 2DArray zurückgegeben werden
		While 1 ;Dauerschleife bis Dateiende
			If Not IsArray($aReturn) Then Dim $aReturn[1][1] ;Deklariert das Array, sofern noch nicht geschehen
			$sTextzeile = FileReadLine($hFile) ;Auslesen der Zeile
			If @error = -1 Then ;Bei Dateiende
				ExitLoop ;Verlassen der Schleife
			EndIf
			If @error = 1 Then
				Return SetError(2, 0, 0) ;Ende bei Zeilenlesefehler
			EndIf
			$aSpalten = StringSplit($sTextzeile, $sTrennzeichen, 3) ;Spaltet in Spalten auf
			For $i = 0 To UBound($aSpalten) - 1 ;Spalten in Zeile schreiben
				$aReturn[UBound($aReturn) - 1][$i] = $aSpalten[$i]
			Next

			ReDim $aReturn[UBound($aReturn) + 1][UBound($aReturn, 2) + 1] ;Vergrößert das Array
		WEnd
		Return $aReturn
	Else
		Return SetError(4, 0, 0) ; Fehler bei falschen Parametern
	EndIf
EndFunc   ;==>_ReadFile
