Funktionreferenz


FileSetPos

Beschreibung anzeigen in

Setzt die aktuelle Datei-Position.

FileSetPos ( "filehandle", offset, origin )

Parameter

filehandle Das Handle der Datei, wie es von einem früheren Aufruf von FileOpen() zurückgegeben wurde. Alternativ kann ein String mit dem Dateinamen als erster Parameter verwendet werden.
offset Der Abstand um den die Position versetzt wird relativ zur Ausgangsposition(siehe origin). Dieser Wert kann sowohl positiv als auch negativ sein. Negative Werte bewegen rückwärts zur der Ausgangsposition.
origin Muss einer der folgenden sein:
    $FILE_BEGIN (0) = Anfang der Datei.
    $FILE_CURRENT (1) = Aktuelle Position.
    $FILE_END (2) = Ende der Datei.

Die Konstanten sind in FileConstants.au3 definiert.

Rückgabewert

Erfolg: True wenn die Operation erfolgreich verlief.
Fehler: False.

Bemerkungen

Inkludiere Constants.au3 in das Skript um die symbolischen Namen dazu zu nutzen, den Ursprung anzugeben.
Bei Nutzung von FileSetPos() ist beides möglich, Schreiben und Lesen in derselben Datei. Wenn angestrebt wird in die selbe Date zu schreiben und zu lesen, dann ist immer FileFlush() zwischen jedem Schreib- und Lesevorgang aufzurufen.
Den Zeiger in die Mitte der Daten zu bewegen kann dazu benutzt werden um Daten zu überschreiben.

Verwandte Funktionen

FileFlush, FileGetPos, FileOpen, FileRead, FileReadLine, FileWrite, FileWriteLine

Beispiel

#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>

Example()

Func Example()
    ; Erstellt eine Konstante im lokalen Bereich des Dateipfads der gelesen bzw. in den geschrieben werden soll.
    Local Const $sFilePath = _WinAPI_GetTempFileName(@TempDir)

    ; Öffnet die Datei für das schreiben (überschreibt die Datei) und speichert das Handle in einer Variable.
    Local $hFileOpen = FileOpen($sFilePath, $FO_OVERWRITE)
    If $hFileOpen = -1 Then
        MsgBox($MB_SYSTEMMODAL, "", "Es ist während dem lesen der Datei ein Fehler aufgetreten.")
        Return False
    EndIf

    ; Schreibt Daten in die Datei. Dabei wird das durch FileOpen zurückgegebene Handle verwendet.
    FileWriteLine($hFileOpen, "Zeile 1")
    FileWriteLine($hFileOpen, "Zeile 2")
    FileWriteLine($hFileOpen, "Zeile 3")

    ; Entleert den Dateipuffer auf die Festplatte.
    FileFlush($hFileOpen)

    ; Prüft die Dateiposition und versucht den Inhalt der aktuellen Position zu lesen.
    MsgBox($MB_SYSTEMMODAL, "", "Position: " & FileGetPos($hFileOpen) & @CRLF & "Daten: " & @CRLF & FileRead($hFileOpen))

    ; Nun wird die Position des Starts festgelegt.
    FileSetPos($hFileOpen, 0, $FILE_BEGIN)

    ; Prüft die Dateiposition und versucht den Inhalt der aktuellen Position zu lesen.
    MsgBox($MB_SYSTEMMODAL, "", "Position: " & FileGetPos($hFileOpen) & @CRLF & "Daten: " & @CRLF & FileRead($hFileOpen))

    ; Schließt das Handle welches von FileOpen zurückgegeben wurde.
    FileClose($hFileOpen)

    ; Löscht die temporäre Datei.
    FileDelete($sFilePath)
EndFunc   ;==>Example