D�place le pointeur de fichier d'un fichier sp�cifi�
#include <WinAPIFiles.au3>
_WinAPI_SetFilePointer ( $hFile, $iPos [, $iMethod = 0] )
$hFile | Handle du fichier � traiter |
$iPos | Nombre d'octets de d�placement du pointeur de fichier. La valeur maximale est de 2^32. Une valeur positive d�place le pointeur de fichier vers l'avant dans le fichier, et une valeur n�gative d�place le pointeur de fichier vers l'arri�re. |
$iMethod | [optionnel] Le point de d�part du d�placement du pointeur de fichier. Peut prendre l'une des valeurs pr�d�finies: $FILE_BEGIN (0) - (par d�faut) Le point de d�part est �gal � z�ro (0) ou au d�but du fichier $FILE_CURRENT (1) - Le point de d�part est la valeur actuelle du pointeur de fichier. $FILE_END (2) - Le point de d�part est la position actuelle de fin de fichier. |
Succ�s: | Retourne le nouveau pointeur de fichier. |
�chec: | Retourne (-1) INVALID_SET_FILE_POINTER, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur. |
Cette fonction peut �galement �tre utilis�e pour interroger la position actuelle du pointeur de fichier en sp�cifiant une m�thode de d�placement de FILE_CURRENT et une distance de z�ro.
Cette fonction enregistre le pointeur de fichier dans une valeur e type LONG. Pour travailler avec des pointeurs de fichiers qui sont sup�rieures � une valeur LONG unique, il faut utiliser la fonction SetFilePointerEx.
Un pointeur du fichier est la position dans le fichier d'une lecture/�criture de/vers par _WinAPI_ReadFile()/_WinAPI_WriteFile().
_WinAPI_CloseHandle, _WinAPI_CreateFile, _WinAPI_FlushFileBuffers, _WinAPI_GetFileSizeEx, _WinAPI_ReadFile, _WinAPI_SetEndOfFile, _WinAPI_WriteFile
Consultez SetFilePointer dans la librairie MSDN.
#include <WinAPIFiles.au3> #include <WinAPIHObj.au3> Local $sFile, $hFile, $sText, $nBytes, $tBuffer ; 1) Cr�e un fichier et �crit des donn�es $sFile = @ScriptDir & '\test.txt' $sText = 'abcdefghijklmnopqrstuvwxyz' $tBuffer = DllStructCreate("byte[" & StringLen($sText) & "]") DllStructSetData($tBuffer, 1, $sText) $hFile = _WinAPI_CreateFile($sFile, 1) _WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), StringLen($sText), $nBytes) _WinAPI_CloseHandle($hFile) ConsoleWrite('1) '& FileRead($sFile) & @CRLF) ; 2) Lit 6 octets � partir de la position 3 $tBuffer = DllStructCreate("byte[6]") $hFile = _WinAPI_CreateFile($sFile, 2, 2) _WinAPI_SetFilePointer($hFile, 3) _WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes) _WinAPI_CloseHandle($hFile) $sText = BinaryToString(DllStructGetData($tBuffer, 1)) ConsoleWrite('2) '& $sText & @CRLF) ; 3) Ecrit les 6 octets d�j� lus � la position 3 � la m�me position, mais en majuscules DllStructSetData($tBuffer, 1, StringUpper($sText)) $hFile = _WinAPI_CreateFile($sFile, 2, 4) _WinAPI_SetFilePointer($hFile, 3) _WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes) _WinAPI_CloseHandle($hFile) $tBuffer = 0 ConsoleWrite('3) '& FileRead($sFile) & @CRLF) ; 4) Tronque la taille du fichier � 12 octets $hFile = _WinAPI_CreateFile($sFile, 2, 4) _WinAPI_SetFilePointer($hFile, 12) _WinAPI_SetEndOfFile($hFile) _WinAPI_CloseHandle($hFile) ConsoleWrite('4) '& FileRead($sFile) & @CRLF) FileDelete($sFile)