Page 1 sur 1

[R] _RecFileListToArray

Posté : lun. 16 févr. 2015 10:41
par ferrierd
Bonjour,

J'utilise la fonction _RecFileListToArray pour afficher dans un listview le contenu de fichiers d'un répertoire particulier

Code : Tout sélectionner

_GUICtrlListView_DeleteAllItems($List_OS)
$ar_Array = _RecFileListToArray ($Rapport, "os_*.txt", 1, 0, 2, 2, "")
If @error = "0" then
    for $i = 1 to $ar_Array[0]
        $file = FileOpen($ar_Array[$i],0)
        $ligne = StringSplit(FileReadLine($file),";")
        GUICtrlCreateListViewItem($Ligne[1]&"|"&$Ligne[2]&"|"&$Ligne[3]&"|"&$Ligne[4]&"|"&$Ligne[5]&"|"&$Ligne[6]&"|"&$Ligne[7]&"|"&$Ligne[8]&"|"&$Ligne[10]&"|"&$Ligne[11],$List_OS)
    next
else
    msgbox(64,"","Aucun fichier n'a été trouvé ...")
EndIf
 
Dans mon programme je dispose d'un autre fonctionne qui propose la suppression d'un des fichiers de type os_*.txt
A la suite de quoi je réinitialise l'affichage de mon Listview en relançant la fonction ci-dessus et là un message d'erreur me signale que mon Array ne trouve pas un fichier.
J'ai examiné la valeur ar_Array[0] avant et après suppression d'un fichier de type os_*.txt.
Il apparait que cette valeur est toujours la même que celle initialement trouvé.
J'ai tenté un Dim ar_Array[1], la dimension de mon ar_Array est bien réinitialisée
Ce qui signifie que c'est la fonction _RecFileListToArray qui me retourne toujours le même nombre de fichiers, alors qu'entre les deux appels de fonction ce nombre de fichiers à changé.

Quelqu'un a-t-il été déjà confronté au souci?

Par avance merci
David

Re: [..] _RecFileListToArray

Posté : lun. 16 févr. 2015 11:07
par timmalos
Vous utilsiez une fonction deprecated, plus maintenue. Essayez avec une version plus récente :
http://www.autoitscript.com/forum/topic ... eprecated/
http://www.autoitscript.fr/forum/viewto ... 532#p45532

Re: [..] _RecFileListToArray

Posté : lun. 16 févr. 2015 11:44
par ferrierd
Merci pour votre réponse rapide.
Je vais regarder cela.

En fait je viens de m'apercevoir que le souci résidait dans la suppression du fichier os_*.txt
Cette fonction est un basique Filedelete()

Par contre elle ne se réalise pas tant que le fichier semble "utilisé" par soit mon ar_array (pas le cas car je l'ai réinitialisé) soit la fonction _RecFileListToArray

Peut-etre est-ce du à la fonction depracated de _RecFileListToArray?
Je vais refaire des tests avec _FileListToArrayEx mais pas sûr que le fichier à supprimer sera disponible pour sa suppression...

Si quelqu'un a une idée pour cela.
Merci

Re: [..] _RecFileListToArray

Posté : lun. 16 févr. 2015 12:01
par timmalos
Si c'est le FileDete qui pose problème, peut etre qu'il existe une autre application qui lock le fichier, pouvez vous essayer de le supprimer manuellement ?

Re: [..] _RecFileListToArray

Posté : lun. 16 févr. 2015 12:19
par ferrierd
Je viens d'utiliser la fonction _FileListToArrayEx pas de changement

Apparemment après remplissage de mon listview, je ne peux plus supprimer un fichier de type os_*.txt manuellement
Donc mon souci semble lié à soit:
- ar_Array
- _FileListToArrayEx
- listview

Je vais continuer à chercher dans cette direction.
Merci pour votre aide

Re: [..] _RecFileListToArray

Posté : lun. 16 févr. 2015 12:36
par timmalos
Vous faites un FileOpen sur vos fichiers, sans faire de FileClose, il est donc logique que les lock ne soient pas relachés !

Re: [R] _RecFileListToArray

Posté : lun. 16 févr. 2015 12:49
par ferrierd
Pfff quel boulet je suis...

En effet, le pire c'est que j'avais déjà testé un fileclose() mais je l'avais inséré au mauvais endroit de ma boucle.
Du coup seul le dernier fichier lu était liberé.

Merci beaucoup, c'est résolu.
Désolé pour la perte de temps
Au moins j'ai récupéré une fonction plus à jour !
Bonne journée
David