[R] _ArrayCreate innutilisable, par quoi la remplacer ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Gizmo091
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mar. 24 févr. 2009 14:25
Status : Hors ligne

[R] _ArrayCreate innutilisable, par quoi la remplacer ?

#1

Message par Gizmo091 »

Bonjour,
Je n'ai pas trouvé ma réponse en utilisant la fonction recherche, donc je me lance.
J'ai fais un script il y a un an et demi a peu pres qui utilisait la fonction _ArrayCreate .
Celui ci marchait a merveille. J'ai eu des choses à ajouter a ce script mais maintenant la fonction _ArrayCreate ne se trouve plus dans l'autocompletion, n'est plus coloré sinthaxiquement. J'en conclu que elle n'éxiste plus dans les nouvelles versions ( mon Array etant tout le temps vide par la suite ).
Avant je fesais ça :

Code : Tout sélectionner

$ListeDevise = _ArrayCreate("")
Maintenant que faire ?

Merci d'avance
Modifié en dernier par Gizmo091 le mer. 25 févr. 2009 09:21, modifié 1 fois.
Gizmo091
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mar. 24 févr. 2009 14:25
Status : Hors ligne

Re: _ArrayCreate ?

#2

Message par Gizmo091 »

petite up, c'est vraiment important, je suis apprenti et j'en ai besoin pour faire un script en entreprise :s .
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: _ArrayCreate ?

#3

Message par Tlem »

Un petit tour par ici et par là s'impose.
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
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: _ArrayCreate ?

#4

Message par Iste »

apres une tres courte recherche dans l'aide d'autoit, j'ai eu un seul retour pour _ArrayCreate qui est dans "Script Breaking Changes in Recent Versions"

la on y dit :
16th May, 2008 - v3.2.12.0
_ArrayCreate() documentation has been removed. The function is still present but may be removed at a later time. Scripts should be updated to use the array initialization syntax built into AutoIt.
Signez ici
Gizmo091
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mar. 24 févr. 2009 14:25
Status : Hors ligne

Re: _ArrayCreate ?

#5

Message par Gizmo091 »

Tlem a écrit :Un petit tour par ici et par là s'impose.
Désolé je n'ai pas fait attention, au temps pour moi. J'ai édité mon post.
Iste a écrit :apres une tres courte recherche dans l'aide d'autoit, j'ai eu un seul retour pour _ArrayCreate qui est dans "Script Breaking Changes in Recent Versions"
Ok , quel est/sont l'/les autre moyen de créer une Array dynamique ?
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?

#6

Message par ani »

J'avais pas fait attention que cette fonction avait disparu :(
ps: y a plein de script sur le fofo à remettre à jour ^^'

1 dimension

Code : Tout sélectionner

#include <Array.au3>
Dim $array[4] = ["a","b","c","d"] ; çà remplace _ArrayCreate()
_ArrayDisplay($array, "$Array")
2 dimension

Code : Tout sélectionner

#include<Array.au3>
Dim $array[4][2] = [ _
["String0", "a"], _
["String1", "b"], _
["String2", "c"], _
["String3", "d"]]
_ArrayDisplay($array,"$Array")
bonne continuation ;)
Gizmo091
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mar. 24 févr. 2009 14:25
Status : Hors ligne

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?

#7

Message par Gizmo091 »

Oui mais le problème c'est que je ne connais pas la taille de l'array ... j'ajoute les éléments au fur et a mesure que je les lits (je lit des paramètre stocké dans un fichier )
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?

#8

Message par ani »

alors a ce moment là faut se retourner vers _FileReadToArray("fichier",$aRray)

exemple :

Code : Tout sélectionner

#include <Array.au3>
#include <file.au3>
Dim $aRray

If Not _FileReadToArray("e:\1.txt",$aRray) Then
   MsgBox(4096,"Error", " Error reading log to Array     error:" & @error)
   Exit
EndIf

; On retire le premier élèment, celui qui retourne le nbre d'element position 0
_ArrayDelete($aRray,0)
_ArrayDisplay($aRray)
Fichier e:\1.txt
$param 1
$param 2
$param 3

n'ayant pas ton fichier, il est dure d'imaginer :)

bonne continuation ;)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?

#9

Message par Tlem »

Il y à quand même plus simple. :shock:

Il faut créer le tableau par la simple commande :

Code : Tout sélectionner

Dim $aTableau[1]
puis pour chaque éléments à rajouter, utilisez la commande _ArrayAdd()qui rajoutera tout simplement un élément dans le tableau. ;)
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é".
Gizmo091
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mar. 24 févr. 2009 14:25
Status : Hors ligne

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?

#10

Message par Gizmo091 »

Tlem a écrit :Il y à quand même plus simple. :shock:

Il faut créer le tableau par la simple commande :

Code : Tout sélectionner

Dim $aTableau[1]
puis pour chaque éléments à rajouter, utilisez la commande _ArrayAdd()qui rajoutera tout simplement un élément dans le tableau. ;)

Si je fais comme tu dis, cela ne change rien, lorsque je veut lire l'array il n'y a rien dedans.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?

#11

Message par ani »

La solution donner plus haut ne convient pas ?

avec les info donné par tlem
Exemple

Code : Tout sélectionner

#include <Array.au3>
Dim $aTableau[1]
$Fichier = "e:\1.txt"
$Fileopen = FileOpen($fichier,0)
while 1 
    $read = FileReadLine($Fileopen)
    If @error = -1 Then ExitLoop
    _ArrayAdd($aTableau,$read) ; on injecte chaque ligne dans le tableau
WEnd

FileClose($Fileopen)
_ArrayDelete($aTableau,0)
_ArrayDisplay($aTableau)
peut tu donner un exemple de fichier a traiter ? stp
Gizmo091
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mar. 24 févr. 2009 14:25
Status : Hors ligne

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?

#12

Message par Gizmo091 »

en fait c'est exactement ce que je fais sauf que toute les lignes ne vont pas dans la meme array :

Exemple de fichier a lire :
T4MEURO
T4E_EUR
Moyennes mensuelles
T4E
TBB
TBB_FRF
Valeurs quotidiennes
TBB
Et le code :

Code : Tout sélectionner

Dim $ListeDevise[1]
Dim $ListeCodeDevise[1]
Dim $ListeTypeClick[1]

    $conf_file = FileOpen("fichieralire.conf", 0)

    If $conf_file = -1 Then
        MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier "&$file_name)
        Exit
    else
        If $LogTrace = 1 then FileWriteLine($log_handle, ":Tentative de login réussi") 
    EndIf

    While 1
        $line = FileReadLine($conf_file)
        If @error = -1 Then ExitLoop
        MsgBox(0, "Erreur",$line)
        _ArrayAdd($ListeDevise,$line)
        _ArrayDisplay($ListeDevise,"cr")
        MsgBox(0, "Erreur", _ArrayToString($ListeDevise,"",$nbDevise,$nbDevise))
        $line = FileReadLine($conf_file)
        If @error = -1 Then ExitLoop
        _ArrayAdd($ListeCodeDevise,$line)
        $line = FileReadLine($conf_file)
        If @error = -1 Then ExitLoop
        _ArrayAdd($ListeTypeClick,$line)
        $line = FileReadLine($conf_file)
        If @error = -1 Then ExitLoop
        $nbDevise = $nbDevise+1
    Wend
Les messages box sont juste la pour tester
Modifié en dernier par Gizmo091 le mer. 25 févr. 2009 15:58, modifié 3 fois.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?

#13

Message par ani »

Cà ne sert à rien de relire le fichier dans ta boucle, on le fait une fois ;) et ensuite on tape le traitement par condition.

ok pour fichier ;) avec de la couleur, mais tu oublie l'essentiel ?
que veut tu rentrer dans le tableau $ListeDevise, $ListeCodeDevise, $ListeTypeClick

Exemple

Code : Tout sélectionner

#include <Array.au3>
Dim $ListeDevise[1]
Dim $ListeCodeDevise[1]
Dim $ListeTypeClick[1]
Dim $nbDevise = 0 ; Ca sert pour quoi ?

$conf_file = FileOpen("e:\1.txt", 0)
While 1
    $line = FileReadLine($conf_file)
    If @error = -1 Then ExitLoop
    If StringInStr($line,"_") Then
        _ArrayAdd($ListeDevise,$line)
    ElseIf StringInStr($line," ") Then
        _ArrayAdd($ListeCodeDevise,$line)
    Else
        _ArrayAdd($ListeTypeClick,$line)
    EndIf       
    $nbDevise = $nbDevise + 1
Wend

FileClose($conf_file)
_ArrayDelete($ListeDevise,0)
_ArrayDelete($ListeCodeDevise,0)
_ArrayDelete($ListeTypeClick,0)
    
_ArrayDisplay($ListeDevise,"llll")
_ArrayDisplay($ListeCodeDevise,",,,,")
_ArrayDisplay($ListeTypeClick,",,,,")
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?

#14

Message par Tlem »

Si les fichiers ont toujours la même forme et que les valeurs ont toujours la même place dans le fichier, alors passez plutôt par un _FileReadToArray().
Ceci aura pour effet de créer un tableau avec les lignes de votre fichier.
Ensuite il est simple d'attribuer à un autre tableau les valeurs des éléments du premier tableau. ;)

Code : Tout sélectionner

Dim $ListeDevise[1]
Dim $ListeCodeDevise[1]
Dim $ListeTypeClick[1]

If Not _FileReadToArray($conf_file, $aConf_file) Then 
    MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier "&$file_name)
    Exit
EndIf

If $LogTrace = 1 then FileWriteLine($log_handle, ":Tentative de login réussi") 

; Ligne 1 = T4E_EUR                 => $aConf_file[1]
; Ligne 2 = Moyennes mensuelles     => $aConf_file[2]
; Ligne 3 = T4E                     => $aConf_file[3]
; Ligne 4 = TBB                     => $aConf_file[4]
; Ligne 5 = TBB_FRF                 => $aConf_file[5]
; Ligne 6 = Valeurs quotidiennes    => $aConf_file[6]
; Ligne 7 = TBB                     => $aConf_file[7]

_ArrayAdd($ListeDevise,$aConf_file[1])      ; <= Modifiez le nombre pour la valeur recherchée.
_ArrayAdd($ListeCodeDevise,$aConf_file[2])  ; <= Modifiez le nombre pour la valeur recherchée.
_ArrayAdd($ListeTypeClick,$aConf_file[3])   ; <= Modifiez le nombre pour la valeur recherchée.

_ArrayDisplay($ListeDevise,"cr")
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é".
Gizmo091
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mar. 24 févr. 2009 14:25
Status : Hors ligne

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?

#15

Message par Gizmo091 »

J'ai essayé ta méthode :

Code : Tout sélectionner

>"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "Y:\xxx.au3"    
Y:\xxx.au3 (121) : ==> Unknown function name.:
If Not (_FileReadToArray($conf_file, $aConf_file) =1) Then
If Not (^ ERROR
>Exit code: 1    Time: 15.781
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?

#16

Message par ani »

l'erreur unknow function name = Nom de fonction inconnu
Il manque l'include dont la fonction _file... se trouve
#include <file.au3>
et faudra surement ajouter #include <Array.au3> pour toute fonction _array...

bonne continuation ;)
Gizmo091
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mar. 24 févr. 2009 14:25
Status : Hors ligne

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?

#17

Message par Gizmo091 »

merci, tout est impec pour moi. :)
Répondre