Funktionreferenz


_WinAPI_ReadFile

Beschreibung anzeigen in

Liest Daten von einer Datei

#include <WinAPIFiles.au3>
_WinAPI_ReadFile ( $hFile, $pBuffer, $iToRead, ByRef $iRead [, $tOverlapped = 0] )

Parameter

$hFile Handle zu einer zu lesenden Datei
$pBuffer Zeiger auf den Puffer der die zu lesenden Daten von einer Datei enthält
$iToRead Maximale Anzahl von zu lesenden Bytes
$iRead Anzahl von zu lesenden Bytes
$tOverlapped [optional] Rine $tagOVERLAPPED Struktur oder ein Pointer zu dieser

Rückgabewert

Erfolg: True
Fehler: False. Es ist _WinAPI_GetLastError() aufzurufen um erweiterte Fehlerinformationen zu erhalten.

Verwandte Funktionen

$tagOVERLAPPED, _WinAPI_CloseHandle, _WinAPI_CreateFile, _WinAPI_FlushFileBuffers, _WinAPI_GetFileSizeEx, _WinAPI_SetEndOfFile, _WinAPI_SetFilePointer, _WinAPI_WriteFile

Siehe auch

Suche nach ReadFile in der MSDN Bibliothek.

Beispiel

#include <WinAPIFiles.au3>
#include <WinAPIHObj.au3>

Global $sTempFile, $hFile, $sText, $nBytes, $tBuffer, $iSize

; 1) Erstellt eine Datei und schreibt Daten hinein
$sTempFile = @ScriptDir & '\test.txt'
$sText = 'abcdefghijklmnopqrstuvwxyz'
$tBuffer = DllStructCreate("byte[" & StringLen($sText) & "]")
DllStructSetData($tBuffer, 1, $sText)
$hFile = _WinAPI_CreateFile($sTempFile, 1)
_WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), StringLen($sText), $nBytes)
$iSize = _WinAPI_GetFileSizeEx($hFile)
_WinAPI_CloseHandle($hFile)
; Ausgabe in die Konsole
ConsoleWrite('1):' & $iSize & ' ' & FileRead($sTempFile) & @CRLF)

; 2) liest 6 Bytes ab Position 3
$tBuffer = DllStructCreate("byte[6]")
$hFile = _WinAPI_CreateFile($sTempFile, 2, 2)
$iSize = _WinAPI_GetFileSizeEx($hFile)
_WinAPI_SetFilePointer($hFile, 3)
_WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes)
_WinAPI_CloseHandle($hFile)
$sText = BinaryToString(DllStructGetData($tBuffer, 1))
; Ausgabe in die Konsole
ConsoleWrite('2):' & $iSize & ' ' & $sText & @CRLF)

; 3) Schreibt die vorher gelesenen 6 Bytes an die gleiche Position, aber in Großbuchstaben
DllStructSetData($tBuffer, 1, StringUpper($sText))
$hFile = _WinAPI_CreateFile($sTempFile, 2, 4)
$iSize = _WinAPI_GetFileSizeEx($hFile)
_WinAPI_SetFilePointer($hFile, 3)
_WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes)
_WinAPI_CloseHandle($hFile)
$tBuffer = 0
; Ausgabe in die Konsole
ConsoleWrite('3):' & $iSize & ' ' & FileRead($sTempFile) & @CRLF)

; 4) kürze die Dateigröße auf 12 Bytes
$hFile = _WinAPI_CreateFile($sTempFile, 2, 4)
_WinAPI_SetFilePointer($hFile, 12)
_WinAPI_SetEndOfFile($hFile)
$iSize = _WinAPI_GetFileSizeEx($hFile)
_WinAPI_CloseHandle($hFile)
; Ausgabe in die Konsole
ConsoleWrite('4):' & $iSize & ' ' & FileRead($sTempFile) & @CRLF)

FileDelete($sTempFile)