stopsoftwarepatents.eu petition banner

AutoIt Français

Communauté Francophone AutoIt
* Connexion   * M’enregistrer

Heures au format UTC + 1 heure


Règles du forum

Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 
Auteur Message
Hors ligne
Niveau 1
Niveau 1
Inscription: Lun 08 Fév 2010 21:12
Messages: 3

Dernier message
Sujet du message: [R] Accés à une variable type Array depuis une fonction
MessagePosté: Lun 08 Fév 2010 22:01 

Bonjour,

Je suis débutant en language Autoit et malgrés mes recherches (docs, forums...) je n'arrive pas a trouver ce qui cloche dans mon script. C'est sans doute une erreur dans mon code mais je n'arrive pas à la déceller.
J'ai creer 2 fonctions pour accéder à un tableau à 2 dimensions.
La fonction pour modifier une valeur dans le tableau (udpVal) ne fonctionne pas.

une idée? d'avance merci.

Code
#include <Array.au3>

global $Myarray[3][2]=[ _
            ["key0","val0"], _
            ["key1","val1"], _
            ["key2","val2"] _
            ]

Func getVal($Myarray,$key)
    $iKey = _ArraySearch($Myarray, $key)
    return $Myarray[$iKey][1]
EndFunc

Func updVal($Myarray,$key,$val)
    $iKey = _ArraySearch($Myarray, $key)
    ConsoleWrite("value for key " & $key & " before update : " & $Myarray[$iKey][1]& @LF)
    $Myarray[$iKey][1]=$val
    ConsoleWrite("new value : " & $Myarray[$iKey][1] & @LF)
    Return $Myarray[$iKey][1]
EndFunc

_ArrayDisplay($Myarray)

updVal($Myarray,"key2","valxxx")

_ArrayDisplay($Myarray)

ConsoleWrite("value for 'key2' is " & getVal($Myarray,"key2") & @LF)
 


la sortie console:

>"D:\autoit\SciTe\..\autoit3.exe" /ErrorStdOut "D:\autoit\Tests\dictFunc.au3"
value for key key2 before update : val2
new value : valxxx
value for 'key2' is val2
>Exit code: 0 Time: 2.549


Dernière édition par padawan1667 le Mar 09 Fév 2010 19:34, édité 1 fois.

 Profil  
 
AutoIt Français
Hors ligne
Niveau 1
Niveau 1
Inscription: Lun 08 Fév 2010 21:12
Messages: 3
Sujet du message: Re: [..] Accés à une variable type Array depuis une fonction
MessagePosté: Lun 08 Fév 2010 22:37 

Je m'auto-répond :D .
Je crois avoir trouver le 'truc' qui manque : Byref
'Byref' permet de lié la variable passé en paramétre de la fonction à la variable original.
Ainsi tout changement dans la fonction affectera la variable d'origine.

Ce qui donne dans mon code:
Code

#include <Array.au3>

global $Myarray[3][2]=[ _
            ["key0","val0"], _
            ["key1","val1"], _
            ["key2","val2"] _
            ]

Func getVal(Byref $Myarray,$key)
    $iKey = _ArraySearch($Myarray, $key)
    return $Myarray[$iKey][1]
EndFunc

Func updVal(Byref $Myarray,$key,$val)
    $iKey = _ArraySearch($Myarray, $key)
    ConsoleWrite("value for key " & $key & " before update : " & $Myarray[$iKey][1]& @LF)
    $Myarray[$iKey][1]=$val
    ConsoleWrite("new value : " & $Myarray[$iKey][1] & @LF)
    Return $Myarray[$iKey][1]
EndFunc

_ArrayDisplay($Myarray)

updVal($Myarray,"key2","valxxx")

_ArrayDisplay($Myarray)

ConsoleWrite("value for 'key2' is " & getVal($Myarray,"key2") & @LF)

 


Résultat:

>"D:\autoit\SciTe\..\autoit3.exe" /ErrorStdOut "D:\autoit\Tests\dictFunc.au3"
value for key key2 before update : val2
new value : valxxx
value for 'key2' is valxxx
>Exit code: 0 Time: 4.351

J'ai juste dans la méthode? désolé j'suis un noob en dév!
Merci.

 Profil  
 
AutoIt Français
Hors ligne
Site Admin
Site Admin
Avatar de l’utilisateur
Inscription: Ven 20 Juil 2007 20:00
Messages: 5598
Age: 43

Localisation: Bordeaux
Sujet du message: Re: [..] Accés à une variable type Array depuis une fonction
MessagePosté: Mar 09 Fév 2010 01:20 

C'est dans votre cas la solution la plus simple. 8)

Si votre fonction ne gère qu'un seul tableau ($Myarray) et puisque celui-ci est déclaré en global, vous pourriez vous contenter de ceci :
Spoiler pour :
Code
#include <Array.au3>

Global $Myarray[3][2]=[ _
            ["key0","val0"], _
            ["key1","val1"], _
            ["key2","val2"] _
            ]

_ArrayDisplay($Myarray)
updVal("key2","valxxx")
_ArrayDisplay($Myarray)

Func updVal($key,$val)
    $iKey = _ArraySearch($Myarray, $key)
    ConsoleWrite("value for key " & $key & " before update : " & $Myarray[$iKey][1]& @LF)
    $Myarray[$iKey][1] = $val
EndFunc



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 ...

Salutations.
Thierry

 Profil  
 
AutoIt Français
Hors ligne
Niveau 1
Niveau 1
Inscription: Lun 08 Fév 2010 21:12
Messages: 3

Haut
Sujet du message: Re: [..] Accés à une variable type Array depuis une fonction
MessagePosté: Mar 09 Fév 2010 19:33 

Merci bien :D

 Profil  
 
Afficher les messages postés depuis:  Trier par  

Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 

Heures au format UTC + 1 heure


Utilisateurs parcourant ce forum: Google [Bot] et 5 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  

AutoIt Français
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group, Sniper_Blue phpBB-3.0 Style © 2007 Sniper_E
Traduction par: phpBB-fr.com