Page 1 sur 1
[R] _ArrayCreate innutilisable, par quoi la remplacer ?
Posté : mar. 24 févr. 2009 14:35
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 :
Maintenant que faire ?
Merci d'avance
Re: _ArrayCreate ?
Posté : mar. 24 févr. 2009 17:06
par Gizmo091
petite up, c'est vraiment important, je suis apprenti et j'en ai besoin pour faire un script en entreprise :s .
Re: _ArrayCreate ?
Posté : mar. 24 févr. 2009 17:14
par Tlem
Un petit tour
par ici et
par là s'impose.
Re: _ArrayCreate ?
Posté : mar. 24 févr. 2009 18:11
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.
Re: _ArrayCreate ?
Posté : mer. 25 févr. 2009 09:23
par Gizmo091
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 ?
Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?
Posté : mer. 25 févr. 2009 11:54
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

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?
Posté : mer. 25 févr. 2009 13:11
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 )
Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?
Posté : mer. 25 févr. 2009 13:41
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

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?
Posté : mer. 25 févr. 2009 14:06
par Tlem
Il y à quand même plus simple.
Il faut créer le tableau par la simple commande :
puis pour chaque éléments à rajouter, utilisez la commande
_ArrayAdd()qui rajoutera tout simplement un élément dans le tableau.

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?
Posté : mer. 25 févr. 2009 14:16
par Gizmo091
Tlem a écrit :Il y à quand même plus simple.
Il faut créer le tableau par la simple commande :
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.
Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?
Posté : mer. 25 févr. 2009 14:23
par ani
La solution donner plus haut ne convient pas ?
avec les info donné par tlem
ExempleCode : 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
Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?
Posté : mer. 25 févr. 2009 14:42
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
Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?
Posté : mer. 25 févr. 2009 15:21
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
ExempleCode : 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,",,,,")
Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?
Posté : mer. 25 févr. 2009 15:27
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")
Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?
Posté : mer. 25 févr. 2009 16:18
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
Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?
Posté : mer. 25 févr. 2009 16:42
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

Re: [..] _ArrayCreate innutilisable, par quoi la remplacer ?
Posté : jeu. 26 févr. 2009 18:05
par Gizmo091
merci, tout est impec pour moi.
