Page 2 sur 2
Re: [EX] Niveau Debutant : Comment fonctionnent les handles ?
Posté : mer. 24 nov. 2010 23:40
par Olive89
Merci pour cette réponse simple et limpide, je continue mon long apprentissage.
A++
Re: [EX] Niveau Debutant : Comment fonctionnent les handles ?
Posté : jeu. 23 déc. 2010 11:44
par DimVar
@SrBelial
J'ai testé l'exercie en 3 etapes :
J'ai toujours "3" comme valeur pour le handle (quand je l'affiche en msgbox, j'ai pas compris comment afficher en console)
J'ai fait F5 pour tester
Par contre pour le dernier exercice, j'ai compilé 3 .exe et lancé les trois. Et là, j'obtiens "1" comme valeur pour le handle.
► Afficher le texte
Code : Tout sélectionner
$file = @TempDir & "\toto.txt"
;1)
$handle = FileOpen ($file,1)
$handle = FileOpen ($file,1)
$handle = FileOpen ($file,1)
MsgBox (0,"",$handle)
FileClose ($handle)
MsgBox (0,"",$handle)
;2)
$handle = FileOpen ($file,1)
MsgBox (0,"",$handle)
FileClose ($handle)
MsgBox (0,"",$handle)
$handle = FileOpen ($file,1)
MsgBox (0,"",$handle)
FileClose ($handle)
MsgBox (0,"",$handle)
$handle = FileOpen ($file,1)
MsgBox (0,"",$handle)
FileClose ($handle)
MsgBox (0,"",$handle)
;3)
;Testé dans 3 scripts
$handle = FileOpen ($file,1)
MsgBox (0,"",$handle)
FileClose ($handle)
MsgBox (0,"",$handle)
Re: [EX] Niveau Debutant : Comment fonctionnent les handles ?
Posté : jeu. 23 déc. 2010 17:03
par SrBelial
Pour les exercices 1 et 2 essayez avec ceci :
► Afficher le texte
Code : Tout sélectionner
$file = @TempDir & "\toto.txt"
$file2 = @TempDir & "\toto2.txt"
;~ 1) on ouvre plusieurs fois à la suite, on affiche, puis on ferme tout
Dim $handle1 = FileOpen ($file,1)
Dim $handle2 = FileOpen ($file,1)
Dim $handle3 = FileOpen ($file,1)
Dim $handle4 = FileOpen ($file2,1)
Dim $handle5 = FileOpen ($file2,1)
Dim $handle6 = FileOpen ($file2,1)
MsgBox (0,"",$handle1 & @crlf & $handle2 & @crlf & $handle3 & @CRLF & $handle4 & @crlf & $handle5 & @crlf & $handle6)
FileClose ($handle1)
FileClose ($handle2)
FileClose ($handle3)
;~ 2) on ouvre une fois le fichier, on affiche le handle, on ferme, plusieurs fois de suite
$handle = FileOpen ($file,1)
MsgBox (0,"",$handle)
FileClose ($handle)
$handle = FileOpen ($file,1)
MsgBox (0,"",$handle)
FileClose ($handle)
$handle = FileOpen ($file,1)
MsgBox (0,"",$handle)
FileClose ($handle)
pour ce qui est de l'interprétation des résultats, elle est planquée ici :
Prière de ne pas la lire tant que vous n'avez pas fait tourner le script au dessus !!
► Afficher le texte
* Pour la première partie du script on constate une chose : les 6 handles forment une suite, et peu importe sur quel fichier ils pointent, la seule chose qui impacte leur valeur c'est leur ordre d'ouverture...
* La seconde partie nous montre que si on ferme un handle et qu'on réouvre un nouvel handle juste après, alors la numérotation reprend là ou elle s'était arrêtée.
( * pour la troisième partie, le but était simplement de montrer qu'on peut avoir plusieurs descripteurs identiques sur le même fichier, ceux ci étant propre à l'application, en l'occurrence un script, ils peuvent très bien avoir la même valeur d'un script à l'autre, rien ne l'interdit)
En gros le but de l'exercice était de montrer que, en dessous du script, il y a tout un système qui est en charge de fournir un service : les handles. Ce système est capable de gérer de façon cohérente une collection d'handles attachée à chaque processus, et ce quels que soient les ressources pointées par ces handles : plusieurs handles vers un même fichier, plusieurs handles dans un même processus, etc ....
Normalement une fois compris ce que fait ce mécanisme, il n'est pas nécessaire de connaitre en détail la façon dont il fonctionne pour maitriser le concept des handles. Il suffit de savoir que ceci existe, et que c'est complètement indépendant du langage utilisé. En autoit on a la chance (je pense) de pouvoir accéder à suffisamment bas niveau à ces handles pour avoir un bon aperçu de leur fonctionnement et de leur intérêt en termes d'optimisation d'accès lecture/écriture dans un fichier.
Voila, en espérant que cela vous ait apporté quelque chose.