[R] Problème fonction Redim ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

[R] Problème fonction Redim ?

#1

Message 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
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
Modifié en dernier par scorp84 le mer. 01 sept. 2010 20:41, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11823
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problème fonction Redim ?

#2

Message 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
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Problème fonction Redim ?

#3

Message 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
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Problème fonction Redim ?

#4

Message 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.
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Problème fonction Redim ?

#5

Message 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
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Problème fonction Redim ?

#6

Message 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]
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Répondre