J'aurais besoins d'un peu d'aide s'il vous plait.
D'une part j'ai pas vraiment l'habitude d'utiliser les tableau multi dimensionnels donc je ne sais pas si je m'y prend correctement ou pas.
J'essaie de faire un logiciel qui clique dans un navigateur selon un endroit sélectionné par l'utilisateur, sur un emplacement ou se trouve un champ pour entrer des éléments dans une base de données. Voila le contexte
Pour cela j'ai besoins d'une fonction qui trie les noms des fichiers que je récupère quelque part par un FileSelectFolder. Ensuite je transforme en array le nom des éléments que je récupère par un _FileListToArray. Jusque la tout se passe bien. C'est a ce moment que je fais appel à une fonction Organise qui trie les fichiers par ordre d'ancienneté. Dans cette fonction je crée un tableau destiné à contenir les années, mois, jours, heures, minutes et secondes à la quel les fichiers ont étés crées.
Et c'est la que je ne sais pas si c'est ma syntaxe qui est fausse, si le tableau est pas assez grand(j'ai essayé de l'agrandir ça n'a pas fonctionné), si cela ne fonctionne qu'avec des variables normales ou encor si les deux dimensions du tableau sont du même type ou ont besoins de l'être.
Bref j'ai cet erreur:
Array variable has incorrect number of subscripts or subscript dimension range exceeded
Voici le code:
Code : Tout sélectionner
;~ Fonction qui trie les fichiers d'un dossier selon leur anciennete (prend en parametre le nom du fichier et le chemin vers ce fichier
Func _Organise($files, $path)
;~ creation et initialisation de la variable d'incrementation de la premiere boucle
local $i = $files[0]
;~ creation du tableau qui vas stocker les dates de creation
local $filetimes[$files[0]][7]
;~ boucle d'initialisation du tableau qui vas stocker les dates de creation, c'est a ce niveau que j'ai l'erreur
while $i>0
$filetimes[$i] = FileGetTime($path&"\"&$files[$i],1)
$i-=1
WEnd
$i=$files[0]
While $i>0
$j=$files[0]
While $j>0
;~ on teste si l'annee du fichier i est plus grande qu'une autre situe dans le tableau
If $filetimes[$i][0]>$filetimes[$j][0] Then
;~ si c'est le cas on remplace cette valeur par la valeur selectionnee actuellement
$tempfile = $files[$i]
$files[$i] = $files[$j]
$files[$j] = $tempfile
ElseIf $filetimes[$i][0]=$filetimes[$j][0] Then
If $filetimes[$i][1]>$filetimes[$j][1] Then
$tempfile = $files[$i]
$files[$i] = $files[$j]
$files[$j] = $tempfile
ElseIf $filetimes[$i][1]=$filetimes[$j][1] Then
If $filetimes[$i][2]>$filetimes[$j][2] Then
$tempfile = $files[$i]
$files[$i] = $files[$j]
$files[$j] = $tempfile
ElseIf $filetimes[$i][2]=$filetimes[$j][2] Then
If $filetimes[$i][3]>$filetimes[$j][3] Then
$tempfile = $files[$i]
$files[$i] = $files[$j]
$files[$j] = $tempfile
ElseIf $filetimes[$i][3]=$filetimes[$j][3] Then
If $filetimes[$i][4]>$filetimes[$j][4] Then
$tempfile = $files[$i]
$files[$i] = $files[$j]
$files[$j] = $tempfile
ElseIf $filetimes[$i][4]=$filetimes[$j][4] Then
If $filetimes[$i][5]>$filetimes[$j][5] Then
$tempfile = $files[$i]
$files[$i] = $files[$j]
$files[$j] = $tempfile
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
$j-=1
WEnd
$i-=1
WEnd
Return $files
EndFunc
N'hésitez pas à me faire part de vos critiques sur la syntaxe ou ma manière de m'y prendre pour trier mes éléments aussi



