_fileopen: transforme le fichier en structure binaire utilisable par les autres fonctions
_fileread: lit une donnée de type et de longueur défini a un offset particulier
_filewrite: écrit une donnée de type et de longueur défini a un offset particulier
_filesave: sauvegarde une structure binaire dans un fichier
attention: si vous merdez dans l'apelle d'une fonction autoit freeze (j'appelle "merder" le fait de donner comme type de donnée "la grand mère de paul version array" par exemple et ce n'est pas à la porté de n'importe quel idiot de merder autant)
► Afficher le textefileadadvance.au3
Code : Tout sélectionner
#include <memory.au3>
; #objectifs de l'UDF# ====================================================================================================================
; 1) permettre une manipulation rapide des fichier de donnée de type bianaire
; 2) faire tourner et retourner votre processeur a coup de _memmovememory et l'user prématurément *rire sadique* niak
; 3) utiliser les dllstruct de façon original
; 4) (le plus important) me familiariser avec le monde passionamant long a taper des dllstruct
; ===============================================================================================================================
; #FUNCTION# ====================================================================================================================
; Name...........: _fileopen
; Description ...: ouvre un fichier et le transforme en structure binaire
; Syntax.........: _fileopen($file)
; Parameters ....: $file - chemin du fichier a ouvrir
;
; Return values .: On Success - retourne une structure binaire du fichier
; On Failure - autoit freeze et on peut rien y faire XD
; @error Value(s): si sa freeze pourquoi faire ?
; Author ........: poke123 (alexandre T.)
; Modified.......: jamais
; Remarks .......: vitesse: 3sec/Mo pour charger puis sauvegarder une copie du fichier (sur un netbook de m.... donc vous pouvez diviser par deux)
; ===============================================================================================================================
func _fileopen($file)
$hwnd=fileopen($file,16)
$data=Fileread($hwnd)
fileclose($hwnd)
$temp=DllStructCreate("byte["&filegetsize($file)&"]")
DllStructSetData($temp,1,$data)
return $temp
EndFunc
; #FUNCTION# ====================================================================================================================
; Name...........: _fileread
; Description ...: lit a l'interieur d'une structure binaire de fichier
; Syntax.........: _fileread($ptr,$offset,$datatype,$datatypeLen)
; Parameters ....: $ptr - structure binaire de fichier retourné par _fileopen
; $offset - position de la donnée binaire (en mode zero-based)
; $datatype - type de donnée a retourner (voir dllstructcreate pour connaitre les type de donnée utilisable)
; $datatypeLen - longueur (en octets) du type de donnée (un int est composé de 32 bits c'est a dire de 4 octets par exemple)
;
; Return values .: On Success - retourne la valeur demandée
; On Failure - autoit freeze et on peut rien y faire (structure oblige ^^)
; @error Value(s): si sa freeze pourquoi faire ?
; Author ........: poke123 (alexandre T.)
; Modified.......: jamais
; Remarks .......: sa ne lit pas vraiment dans le fichier je le reconnait mais ça marche oui ou zut ? ^^
; ===============================================================================================================================
func _fileread($ptr,$offset,$datatype,$datatypeLen)
$dest=DllStructCreate($datatype)
$pdest=DllStructGetPtr($dest)
$psource=Dllstructgetptr($ptr)
_MemMoveMemory($psource+$offset,$pdest,$datatypeLen)
return DllStructGetData($dest,1)
EndFunc
; #FUNCTION# ====================================================================================================================
; Name...........: _filewrite
; Description ...: lit a l'interieur d'une structure binaire de fichier
; Syntax.........: _filewrite($ptr,$offset,$datatype,$datatypeLen,$value)
; Parameters ....: $ptr - structure binaire de fichier retourné par _fileopen
; $offset - position de la donnée binaire (en mode zero-based)
; $datatype - type de donnée de $value (voir dllstructcreate pour connaitre les type de donnée utilisable)
; $datatypeLen - longueur (en octets) du type de donnée (un int est composé de 32 bits c'est a dire de 4 octets par exemple)
; $value - donnée à écrire
; Return values .: On Success - rien, ça marche c'est l'essentiel non ?
; On Failure - autoit freeze et on peut rien y faire ( en fait on peux /prier très fort pour débloquer l'ordi mais les voix de bill gates sont impénétrables)
; @error Value(s): si sa freeze pourquoi faire ?
; Author ........: poke123 (alexandre T.)
; Modified.......: jamais
; Remarks .......: sa n'écrit pas vraiment dans le fichier je le reconnait mais ça marche oui ou zut ? ^^
; ===============================================================================================================================
func _filewrite($ptr,$offset,$datatype,$datatypeLen,$value)
$source=DllStructCreate($datatype)
DllStructSetData($source,1,$value)
$psource=DllStructGetPtr($source)
$pdest=dllstructgetptr($ptr)
_MemMoveMemory($psource,$pdest+$offset,$datatypeLen)
EndFunc
; #FUNCTION# ====================================================================================================================
; Name...........: _filesave
; Description ...: sauvegarde la structure dans un fichier
; Syntax.........: _filesave($ptr,$file)
; Parameters ....: $ptr - structure binaire de fichier retourné par _fileopen
; $file - le fichier de destination (il sera écrasé a l'ouverture !!)
; Return values .: On Success - rien, ça marche c'est l'essentiel non ?
; On Failure - autoit freeze et on peut rien y faire ( nan mais vous avez toujours pas compris ?! )
; @error Value(s): si sa freeze pourquoi faire ?
; Author ........: poke123 (alexandre T.)
; Modified.......: jamais
; Remarks .......: à utiliser après avoir tripatouiller votre fichier pour sauvegarder les modification
; ===============================================================================================================================
func _filesave($ptr,$file)
$hwnd=fileopen($file,18)
$content=DllStructGetData($ptr,1)
filewrite($hwnd,$content)
fileclose($hwnd)
$content=""
EndFunc
*: me prouvez pas que c'est faux