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.