[R] Bug Array avec For

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
servabat
Niveau 4
Niveau 4
Messages : 69
Enregistré le : sam. 02 avr. 2011 16:26
Status : Hors ligne

[R] Bug Array avec For

#1

Message par servabat »

Bonjour,

J'ai un script qui devrait en théorie marcher mais m'affiche un bug :( :

Code : Tout sélectionner

Local $arr[UBound(DriveGetDrive("Fixed"))]
$arr = DriveGetDrive("Fixed")
For $i = 1 to UBound($arr)
    $DiskLetter = StringUpper( $arr[$i] )
    $label = DriveGetLabel($DiskLetter)
    If $label = "SAMSUNG" Then
        $connect = True
    EndIf
Next
Voici le bug :

Code : Tout sélectionner

C:\Program Files\AutoIt3\SciTE\device.au3 (3) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$DiskLetter = StringUpper($arr[$i])
$DiskLetter = StringUpper(^ ERROR
Merci d'avance,
Servabat
Modifié en dernier par servabat le dim. 24 juil. 2011 22:35, modifié 1 fois.
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Bug Array avec For

#2

Message par PandiPanda »

oulah je comprend pas ce que vous voulez faire xD

Vous declarer une variable Local $arr de taille [UBound(DriveGetDrive("Fixed"))]
ensuite vous refaite avec la même variable ceci;
$arr = DriveGetDrive("Fixed")

??

vous voulez faire quoi?

Edit: ceci devrai vous satisfaire;
► Afficher le texte
Modifié en dernier par PandiPanda le dim. 24 juil. 2011 22:38, modifié 1 fois.
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Bug Array avec For

#3

Message par timmalos »

En autoit, les tableaux commencent toujorus par l'index 0 et non 1.

De plus comme l'aa un peu ddis PandiPanda, votre première ligne ne sert à rien ;) En Autoit pas besoin de déclarer vos variables exactement au type pret.

Code : Tout sélectionner

Local $arr = DriveGetDrive("Fixed")
For $i = 0 to UBound($arr) -1
    $DiskLetter = StringUpper( $arr[$i] )
    $label = DriveGetLabel($DiskLetter)
    If $label = "SAMSUNG" Then
        $connect = True
    EndIf
Next
devrait marcher
servabat
Niveau 4
Niveau 4
Messages : 69
Enregistré le : sam. 02 avr. 2011 16:26
Status : Hors ligne

Re: [..] Bug Array avec For

#4

Message par servabat »

PandiPanda a écrit :oulah je comprend pas ce que vous voulez faire xD

Vous declarer une variable Local $arr de taille [UBound(DriveGetDrive("Fixed"))]
ensuite vous refaite avec la même variable ceci;
$arr = DriveGetDrive("Fixed")

??

vous voulez faire quoi?
Oui, en effet c'était une erreur de ma part. Cette ligne est inutile :)

Merci timmalos, en effet je me suis trompé :D , sa marchait aussi comme ceci:

Code : Tout sélectionner

$arr = DriveGetDrive("Fixed")
For $i = 1 to $arr[0]
    $DiskLetter = StringUpper($arr[$i])
    $label = DriveGetLabel($DiskLetter)
    If $label = "SAMSUNG" Then
        $connect = True
    EndIf
Next
Car la valeur 0 contient le nombre de disques :)

Merci PandiPanda aussi, :)

ps: le but de mon script est de vérifier si le disque "SAMSUNG" est connecté :)

@++, je passe en [R]
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [R] Bug Array avec For

#5

Message par PandiPanda »

c'est fou j'ai éditer mon message pour rien :(
trop lent ...
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [R] Bug Array avec For

#6

Message par timmalos »

Ca m'apprandra à répondre sans avoir verifié la doc.
Les tableaux commencent toujours par 0 c'est vrai, mais quelques fois (comme ici) on met le nombre de valeurs dans cette case ce qui evite de devoir passer par un Ubound() supplémentaire.
Répondre