Question Faire un tableau vite fait depuis Excel

Plus d'informations
il y a 14 ans 4 mois #5737 par Madrolle
Read-HostToArray, très bien trouvé, je vote pour.

j'ai opté pour une solution où l'on peut choisir la séquence de fin avec le '.' par défaut, un classique.

j'avoue ne pas comprendre pourquoi la chaîne vide se comporte différemment, j'ai adapté mon code en conséquence.

Merci pour vos contributions.

[code:1]
function Read-HostToArray {
param([String]$fin='.')

[string[]]$tab=@()
Write-Host \"Collez ici vos données .\"

do {
$tab+=$(read-host)
} until ($tab -eq $fin)

if ($fin -eq ''){ $cut=3 } else { $cut=2 }
$tab[0..$($tab.length-$cut)]
}
[/code:1]

ShellDealer sur Twitter

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 8 mois #15428 par Madrolle
Depuis une éternité, je voulais me faire une version WPF qui n'a que des avantages, voilà c'est fait, un gadget sert tous les jours.

[code:1]
Add-Type -AssemblyName PresentationFramework
Add-Type -AssemblyName PresentationCore
Add-Type -AssemblyName WindowsBase

Function New-arrayOfString () {
[XML]$xaml = @'
<Window x:Name=\"array_box\"
xmlns=\"schemas.microsoft.com/winfx/2006/xaml/presentation\";
xmlns:«»x=\"schemas.microsoft.com/winfx/2006/xaml\";
Title=\"New-array\" MinWidth=\"200\" MinHeight=\"150\" Width=\"300\" Height=\"450\" Background=\"#FF012456\">
<Grid Margin=\"0\">
<TextBox x:Name=\"liste\" Margin=\"10\" VerticalScrollBarVisibility=\"Visible\" AcceptsReturn=\"True\" Foreground=\"#FF012456\" HorizontalScrollBarVisibility=\"Visible\"/>
</Grid>
</Window>
'@
$reader = New-Object System.Xml.XmlNodeReader $xaml
$form = [Windows.Markup.xamlreader]::load($reader)
$liste = $form.FindName('liste')
$form.showdialog() | Out-Null

[string[]]$e = ($liste.text -split \"`r`n\"«»)
$e
#$e.gettype()
}
[/code:1]

Il suffit de fermer la fenêtre pour que les lignes ajoutées soient disponibles.
Ne pas oublier le mode '-sta' si powershell 2, testé avec .NET 4.0

Cela dit quand il n'y a qu'une ligne dans la box (éventuellement vide), ça me sort obstinément vers la variable de destination une [string] et non un [string[]] Si quel-qu'un à une solution à ce petit détail énervant ...

Message édité par: Perso, à: 27/07/13 23:31<br><br>Message édité par: Perso, à: 28/07/13 12:18

ShellDealer sur Twitter

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 8 mois #15434 par Laurent Dardenne
Salut,
Perso écrit:

Si quelqu'un à une solution à ce petit détail énervant ...

Utilise la groupement @() :
[code:1]
$Result=@( New-arrayOfString )
[/code:1]
Ou la virgule sur le résultat
[code:1]
[string[]]$e = ($liste.text -split \&quot;`r`n\&quot;«»)
,$e
}
[/code:1]
Ainsi le type de ta variable n'est pas transformé .<br><br>Message édité par: Laurent Dardenne, à: 28/07/13 13:33

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 8 mois #15438 par Madrolle
Ha, merci ! la virgule est exactement ce qui me fallait.
(comme pour Get-member, ça ne me serait pas venu à l'esprit)

[code:1],($liste.text -split \&quot;`r`n\&quot;«»)[/code:1]

ShellDealer sur Twitter

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.072 secondes
Propulsé par Kunena