Page 1 sur 1
[R] Problème fonction Redim ?
Posté : lun. 30 août 2010 10:59
par scorp84
Bonjour,
J'utilise la version 3.3.6.1 et j'ai un problème avec la fonction redim. Pensant que ça venait de mon code (redim après un _FileListToArrayEx), je suis allé dans la doc et j'ai testé l'exemple mais qui lui aussi me vide mon tableau sans conserver les éléments qui étaient dans le tableau :
► Afficher le texte
Code : Tout sélectionner
; Example Resizing an array
Dim $I, $K, $T, $MSG
Dim $X[4][6], $Y[4][6]
For $I = 0 To 3
For $K = 0 To 5
$T = Int(Random(20) + 1) ;Get random numbers between 1 and 20
$X[$I][$K] = $T
$Y[$I][$K] = $T
Next
Next
ReDim $X[3][8]
Dim $Y[3][8]
$MSG = ""
For $I = 0 To UBound($X, 1) - 1
For $K = 0 To UBound($X, 2) - 1
If $K > 0 Then $MSG = $MSG & ", "
$MSG = $MSG & $X[$I][$K]
Next
$MSG = $MSG & @CR
Next
MsgBox(0, "ReDim Demo", $MSG)
$MSG = ""
For $I = 0 To UBound($Y, 1) - 1
For $K = 0 To UBound($Y, 2) - 1
If $K > 0 Then $MSG = $MSG & ", "
$MSG = $MSG & $Y[$I][$K]
Next
$MSG = $MSG & @CR
Next
MsgBox(0, "ReDim Demo", $MSG)
D'autres ont-ils le même problème que moi sur le code ci-dessus ?
Cela vient il d'un bug avec cette version ou non ?
Merci d'avance pour votre aide.
Amicalement.
BM
Re: [..] Problème fonction Redim ?
Posté : lun. 30 août 2010 14:21
par Tlem
Aucun problème avec le
ReDim de la version 3.3.6.1 de AutoIt.
C'est l'exemple qui n'est pas très explicite.
Essayez ce code :
► Afficher le texte
Code : Tout sélectionner
#include <Array.au3>
Dim $X[4][6]
For $I = 0 To 3
For $K = 0 To 5
$T = Int(Random(20) + 1)
$X[$I][$K] = $T
Next
Next
_Arraydisplay($X, "Avant le ReDim")
ReDim $X[3][8]
_Arraydisplay($X, "Aprés le ReDim")
Re: [..] Problème fonction Redim ?
Posté : lun. 30 août 2010 15:57
par scorp84
Merci Tlem
Ce qui est bizarre c'est que quand j'essaye votre fonction, ça fonctionne mais que quand j'essaye de faire un redim sur le résultat d'un _FileListToArrayEx, il me vide les données.
J'ai trouvé un ancien post de vous

qui explicite la fonction FileListToArrayEx:
http://www.autoitscript.fr/forum/viewto ... ?f=6&t=479
Une fois mon tableau récupéré, j'essaye de lui ajouter des colonnes pour y rentrer des infos.
Voici ce que ça donne :
Code : Tout sélectionner
#include <Array.au3>
#include<FileListToArrayEx.au3>
; Répertoires d'origine et de destination
$ori_rep="C:\Tmp2\*.*"
$dest_rep="C:\Tmp\"
; Séparation rép et ext pour origine
$tmp_fin=StringInStr($ori_rep,"\",0,-1)
$ext=StringMid($ori_rep,$tmp_fin+1,StringLen($ori_rep))
$ori_rep=StringMid($ori_rep,1,$tmp_fin)
$ori_tab = _FileListToArrayEx($ori_rep, $ext,2,"",True)
_ArraySort($ori_tab)
_ArrayDisplay($ori_tab, "Liste rep avant")
ReDim $ori_tab[UBound($ori_tab)][3]
_ArrayDisplay($ori_tab, "Liste rep après")
Je ne vois pas où je me plante
Merci d'avance pour votre aide.
Amicalement.
BM
Re: [..] Problème fonction Redim ?
Posté : lun. 30 août 2010 20:32
par sylvanie
$ori_tab semble être un tableau à une dimension.
Or vous redimensionnez sur 2 dimensions, et l'aide dit :
The number of dimensions must remain the same, or the old array will be forgotten during the ReDim.
Re: [..] Problème fonction Redim ?
Posté : mar. 31 août 2010 16:45
par scorp84
Merci sylvanie
Y aurait-il une fonction pour copier directement de mon tableau à 1 dimension dans un tableau à 2 dimensions ?
Merci d'avance.
Amicalement.
BM
Re: [..] Problème fonction Redim ?
Posté : mer. 01 sept. 2010 20:01
par sylvanie
Nativement, je n'en connais pas. Il faudra en scripter une, pas très compliqué mais bon faut le faire ...
Concernant le thème de ce post, je pense qu'on peut le basculer en [R]