Page 1 sur 1
[..] Redéfinir un tableau
Posté : mar. 05 janv. 2021 20:20
par jpascal
Bonjour,
Veuillez m'excuser pour mon titre peu explicite.
La problématique est simple et la solution -j'imagine - l'est tout autant.
Il est possible d'initialiser un tableau avec des valeurs.
Exemple : Local $aArray = ['a', 'b']
Mais si je dois le redéfinir avec d'autres valeurs, je ne peux pas écrire : $aArray = ['c', 'd', 'e']
A mon niveau, je ne sais faire que :
Ce n'est pas bien grave mais cela peut vite devenir lourd.
Voici le code que je cherche à optimiser :
Merci par avance pour vos conseils avisés.
Je vous souhaite par la même occasion tous mes vœux pour cette nouvelle année.
Re: [..] Redéfinir un tableau
Posté : mar. 05 janv. 2021 20:37
par jchd
_ArrayAdd() sinon ReDim mais en effet sans pouvoir spécifier une valeur tableau.
Re: [..] Redéfinir un tableau
Posté : mar. 05 janv. 2021 22:00
par Tlem
Bonsoir.
Et en partant d'un tableau plus grand que ce dont vous avez besoin pour le redimentionner seulement après l'avoir peuplé ?
Re: [..] Redéfinir un tableau
Posté : mar. 05 janv. 2021 22:14
par jpascal
J'avais pensé définir un tableau plus grand mais je n'ai pas trouvé l'intérêt.
Je viens de pondre ce code.
Cela reste lourd et nécessite une fonction supplémentaire.
Re: [..] Redéfinir un tableau
Posté : mar. 05 janv. 2021 22:19
par jpascal
Je viens d'essayer avec _ArrayAdd().
Je pensais ne pas pouvoir l'utiliser mais en fait je peux définir deux fois le tableau $aValue dans le code car c'est "dans un switch".
Les idées sont toujours plus claires :
- après le repas
- après avoir posé la question à la communauté francophone AutoIt.

Re: [..] Redéfinir un tableau
Posté : mer. 06 janv. 2021 00:15
par Tlem
Bonsoir.
Au départ, j’étais parti sur la base de votre code, afin d'éviter de trop fortes modifications.
Du coup, j'avais pensé à :
Code : Tout sélectionner
Test2(2)
Func Test2($iVal)
Local $aArray[5]
Switch $iVal
Case 1
$aArray[0] = 'a'
$aArray[1] = 'b'
ReDim $aArray[2]
Case 2
$aArray[0] = 'c'
$aArray[1] = 'd'
$aArray[2] = 'e'
ReDim $aArray[3]
EndSwitch
_ArrayDisplay($aArray)
EndFunc
Mais bon, c'était vraiment pour aller au plus rapide dans votre approche.
Si vous souhaitez quelque chose de plus simple et de facilement évolutif, je partirais plutôt sur quelque chose de ce genre :
Code : Tout sélectionner
$Array = Test(1)
_ArrayDisplay($Array)
$Array = Test(2)
_ArrayDisplay($Array)
$Array = test(3)
_ArrayDisplay($Array)
Func Test($iVal)
Local $sValues
Switch $iVal
Case 1
$sValues = 'a'
Case 2
$sValues = 'ab'
Case 3
$sValues = 'abc'
EndSwitch
Return StringSplit($sValues, "", 2)
EndFunc
Edit :
Comme Tommy en parle ci-dessous, il est question d'une seule lettre.
Si vous devez rentrer plusieurs caractères, alors il vaut mieux faire cette mofification :
Code : Tout sélectionner
#include <array.au3>
$Array = Test(1)
_ArrayDisplay($Array)
$Array = Test(2)
_ArrayDisplay($Array)
$Array = test(3)
_ArrayDisplay($Array)
Func Test($iVal)
Local $sValues
Switch $iVal
Case 1
$sValues = 'alpha 1'
Case 2
$sValues = 'alpha 2|beta'
Case 3
$sValues = 'alpha 3|beta|gamma xxxx'
EndSwitch
Return StringSplit($sValues, "|", 2)
EndFunc
Comme je l'ai dit ce code est très facilement adaptable.
Re: [..] Redéfinir un tableau
Posté : mer. 06 janv. 2021 01:17
par TommyDDR
Dans le cas précis où vous n'affectez qu'une lettre par case :
Sinon, avec l'ancienne fonction _AsArray (maintenant supprimée de l'UDF ArrayEx.au3) :
Local $array = _AsArray
("a", "b", "c", "d")Func _AsArray
($v_0 = 0, $v_1 = 0, $v_2 = 0, $v_3 = 0, $v_4 = 0, $v_5 = 0, $v_6 = 0, $v_7 = 0, $v_8 = 0, $v_9 = 0, $v_10 = 0, $v_11 = 0, $v_12 = 0, $v_13 = 0, $v_14 = 0, $v_15 = 0, $v_16 = 0, $v_17 = 0, $v_18 = 0, $v_19 = 0, $v_20 = 0) Local $av_Array[21] = [$v_0, $v_1, $v_2, $v_3, $v_4, $v_5, $v_6, $v_7, $v_8, $v_9, $v_10, $v_11, $v_12, $v_13, $v_14, $v_15, $v_16, $v_17, $v_18, $v_19, $v_20] ReDim $av_Array[@NumParams] Return $av_ArrayEndFunc
Ou sinon, en passant par une variable temporaire :
Local $array = ["a", "b", "c"]Local $temp = ["d", "e", "f", "g"]$array = $temp
Re: [..] Redéfinir un tableau
Posté : mer. 06 janv. 2021 13:53
par mikell
Pourquoi juste ne pas carrément redéclarer l'array ?
Re: [..] Redéfinir un tableau
Posté : mer. 06 janv. 2021 13:57
par jpascal
Ce qu'il y a de bien avec la programmation c'est qu'il y a autant de solutions que de programmeurs.
Merci jchd, Tlem et TommyDDR pour vos propositions.
Et longue vie à ce forum d'utilité publique.

Re: [..] Redéfinir un tableau
Posté : mer. 06 janv. 2021 13:58
par jpascal
mikell, c'est ce que j'ai compris après avoir posté cette discussion.
