Bonjour,

je continue mon apprentissage powershell et je bute sur une boucle

L'exercice consiste à traduire des phrases en morse.

Dans un premier temps, j'utilise -replace pour remplacer les lettres par des points et des traits.
Cela fonctionne bien.

Dans un second temps, je dois émettre des bips correspondant aux point et traits, c'est là que ça se corse.

J'utilise
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 foreach($lettre in $phrsae1)
Cette "fonction" ne pose pas de problème pour le premier point mais ne fonctionne pas pour le second.

Lorsque j'entre une "phrase" contenant une seule lettre, le son joué correspond bien à la traduction de la lettre en . et _.
SI je mets deux lettres, il ne se passe rien.
La boucle lettre par lettre ne se fait pas et même le son correspondant à la première n'est pas "joué".

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
$phrase1 = $phrase0.ToUpper()
foreach ($letter in $phrase1){
if ($letter -eq  "A"){[console]::beep(500,300)+[console]::beep(500,600)}`
elseif ($letter -eq  "B"){[console]::beep(500,600)+[console]::beep(500,300)+[console]::beep(500,300)+[console]::beep(500,300)}`
elseif ($letter -eq  "C"){[console]::beep(500,600)+[console]::beep(500,300)+[console]::beep(500,600)+[console]::beep(500,300)} `
elseif ($letter -eq  "D"){[console]::beep(500,600)+[console]::beep(500,300)+[console]::beep(500,300)} `
elseif ($letter -eq  "E"){[console]::beep(500,300) }`
elseif ($letter -eq  "F"){[console]::beep(500,300)+[console]::beep(500,300)+[console]::beep(500,600)+[console]::beep(500,300)}`
elseif ($letter -eq  "G"){[console]::beep(500,600)+[console]::beep(500,600)+[console]::beep(500,300)}`
........
elseif ($letter -eq  "Z"){[console]::beep(500,600)+[console]::beep(500,600)+[console]::beep(500,300)+[console]::beep(500,300)}
}