[Func] Fonction, array2D, Input, Output, savoir-faire

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
martinbrait
Niveau 4
Niveau 4
Messages : 55
Enregistré le : ven. 06 mars 2009 17:17
Status : Hors ligne

[Func] Fonction, array2D, Input, Output, savoir-faire

#1

Message par martinbrait »

à toutes fins utiles, j'ai mis trop longtemps avant de connaître

Code : Tout sélectionner

Func test2()
     ;retourner un tableau à plusieurs dimensions
     $iRowCnt=50
   $iColCnt=100
    
   Local $avRET[$iRowCnt + 1][$iColCnt + 1] ;RAPPEL, je peux transformer dynamiquement les dimensions via ReDim
   $avRET[0][0] = $iRowCnt
   $avRET[0][1] = $iColCnt


       ; Read data to array
       For $r = 1 To $iRowCnt
           For $c = 1 To $iColCnt
               $avRET[$r][$c] = Random()
           Next
       Next

   ;Return data
   Return $avRET
EndFunc



_ArrayDisplay(test2(),"LE TABLEAU 2 DIMENSIONS")

 
Modifié en dernier par martinbrait le mer. 12 sept. 2012 12:37, modifié 3 fois.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [Func] Fonction et array2D pour les nuls

#2

Message par TommyDDR »

Code : Tout sélectionner

Dim $avRET[$iRowCnt + 1][$iColCnt + 1]
Je dis Non !

Pour une déclaration de variable dans une fonction, utilisez Local, pour une déclaration hors fonction, utilisez Global.
Vous n'aurez, normalement pas besoin de déclarer un Global dans une fonction (cela peut poser des problèmes d'accès).

De plus, bannissez le "Dim", l'aide AutoIt vous le dit elle même.
Aide a écrit :The difference between Dim, Local and Global is the scope in which they are created:
Dim = Local scope if the variable name doesn't already exist globally (in which case it reuses the global variable!)
Global = Forces creation of the variable in the Global scope
Local = Forces creation of the variable in the Local/Function scope

You should use Local or Global, instead of Dim, to explicitly state which scope is desired for a variable/constant/array.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
martinbrait
Niveau 4
Niveau 4
Messages : 55
Enregistré le : ven. 06 mars 2009 17:17
Status : Hors ligne

Re: [Func] Fonction et array2D pour les nuls

#3

Message par martinbrait »

Merci beaucoup pour cette mise au point. :)
Correction
Dim $avRET[$iRowCnt + 1][$iColCnt + 1]
devenu
Local $avRET[$iRowCnt + 1][$iColCnt + 1]
apportée dans le script indiqué plus haut.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [Func] Fonction et array2D pour les nuls

#4

Message par TommyDDR »

De rien ;)
Mais une question s'impose, pourquoi avoir poster cette fonction ? Quelle est son utilité ? les post tagué [Func] contiennent des fonctions générales qui peuvent servir pour des script.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
martinbrait
Niveau 4
Niveau 4
Messages : 55
Enregistré le : ven. 06 mars 2009 17:17
Status : Hors ligne

Re: [Func] Fonction et array2D pour les nuls

#5

Message par martinbrait »

Quand on débute, il est très important de faire le tour de tous les types de format qui peuvent être manipulés via les fonctions,
afin de créer ses composants.
En effet, j'ai beaucoup lu, à tort et à travers dans les forums autoit, que les tableaux à plusieurs dimensions étaient
rigoureusement inemployables, et j'ai découvert le contraire récemment.:shock:
Je manipulais quotidiennement mes informations tabulaires dans des strings+(split,explode) :lol:
En débutant, je n'avais jamais osé décortiqué les fonctions stockées dans le dossier include, jusqu'à ce jour.

EN SORTIE DE FONCTION:
Je me demande également si les objets peuvent être directement renvoyés par les fonctions,
ou si il faut en fait
déclarer les objets en variable handle de portée globale
pour les manipuler via diverses fonctions.(exemple souhaité)

EN ENTREE DE FONCTION:
Exemple de question que je me pose encore aujourd'hui, je me demande si à l'entrée des fonctions autoit,
on peut admettre une variable de type tableau multidimensionnel, en entrée.(exemple souhaité)

Un grand merci pour votre disponibilité et votre gentillesse!
Modifié en dernier par martinbrait le mer. 12 sept. 2012 12:39, modifié 1 fois.
Avatar du membre
Uranium
Niveau 5
Niveau 5
Messages : 143
Enregistré le : mer. 28 mars 2012 13:13
Status : Hors ligne

Re: [Func] Fonction et array2D pour les nuls

#6

Message par Uranium »

Moi je trouve ça utile car débutant je ne comprenais rien sur l'utilisation des arrays ( quand et comment ) donc sa peut aider des nouveaux je pense :wink:
Mais il aurait plus ça place dans Exemple.

Pourquoi pas en dire un peu plus aussi ? Genre qu'un tableau de taille [6] commence en [0] et finit maximum en [5] ( La partie que j'ai eu le plus de mal à assimiler )
« En mathématiques, “évident” est le mot le plus dangereux. »
Avatar du membre
martinbrait
Niveau 4
Niveau 4
Messages : 55
Enregistré le : ven. 06 mars 2009 17:17
Status : Hors ligne

Re: [Func] Fonction, array2D, Input, Output, savoir-faire

#7

Message par martinbrait »

Bonjour Uranium,

Pour retrouver facilement des dossiers dans une armoire,
on attribue à chacun une référence numérique unique.
On ouvre un dossier par numéro:
On les classe habituellement dans l'ordre numérique croissant.
Les numéros de chaque dossiers se succèdent de 1 en 1.

Mémoriser les bornes naturelles d'un tableau,
c'est imaginer un classement de dossiers dans une armoire.

Dossier 0, Dossier 1, Dossier 2, Dossier 3, Dossier 4,
Dossier 5, Dossier 6, Dossier 7, Dossier 8, Dossier 9,
Dossier 10, Dossier 11 , Dossier 12 etc...

Ainsi, le zéro marque le passage à la dizaine supérieure.
Il faut initialement partir de zéro, dès le début du décompte.
Quand on passe les dizaines,il faut repartir de zéro.
La série en cours est alors une réplique de la série précédente, de 0 à 9, à une dizaine supérieure près.
Le 0 est le chiffre de base de chaque dizaine.
Dans mon armoire, je dispose mes dossiers, les 5 premiers de 0 à 4, les 5 suivants de 5 à 9 etc...

Une dizaine doit donc commencer par zéro et se terminer par neuf,
pour éviter, soit les doublons, soit les manques.
Modifié en dernier par martinbrait le mer. 12 sept. 2012 16:34, modifié 12 fois.
Avatar du membre
martinbrait
Niveau 4
Niveau 4
Messages : 55
Enregistré le : ven. 06 mars 2009 17:17
Status : Hors ligne

Re: [Func] Fonction, array2D, Input, Output, savoir-faire

#8

Message par martinbrait »

Je dois également faire une remarque concernant le superavantage
d'utiliser la fonction vu plus haut dans les tableaux:

En testant l'exemple, on constate que
  • la case 0 est toujours occupée par le décompte du nombre d'enregistrements du tableau
    le premier enregistrement commence effectivement à 1.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [Func] Fonction, array2D, Input, Output, savoir-faire

#9

Message par mikell »

Petite optimisation possible (pour des raisons pratiques)
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [Func] Fonction, array2D, Input, Output, savoir-faire

#10

Message par TommyDDR »

martinbrait a écrit :En testant l'exemple, on constate que
  • la case 0 est toujours occupée par le décompte du nombre d'enregistrements du tableau
    le premier enregistrement commence effectivement à 1.
Cela n'est du qu'à l'utilisation que vous en faite, vous pouvez mettre ce que vous voulez en 0, mettre la taille du tableau n'est qu'un choix (Vous pouvez aussi avoir la taille du tableau par la commande Ubound : voir l'aide associée)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Répondre