Question Retour de fonctions (again) (Résolu)

Plus d'informations
il y a 16 ans 9 mois #4783 par Laurent Dardenne
Pour System.Char c'est normal car une string est aussi un tableau de caractères.

steph_d écrit:

L'affichage de $retour me turlupine car en fait il a gardé la deuxième partie, tous les espaces après le séparateur !

Essaie avec ceci
[code:1]$Retour.split(\";\",[StringSplitOptions]::RemoveEmptyEntries)[/code:1]
Sinon quel est le contenu de $Retour tout de suite aprés l'affectation suivante :
[code:1] $retour = $DataSet.Tables[0].Rows[0][/code:1]
Et quel est le type de $retour après l'opération suivante :
[code:1]$retour = $retour.Split(';')[/code:1]

Il faudrait aussi voir le code d'insertion dans la table, s'il autorise les espaces en début et fin de chaînes, il est normal de les retrouver lors d'une lecture. Si cela pose pb peut-être faut-il les supprimer tout de suite après la lecture dans la table.

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 9 mois #4784 par steph_d
Réponse de steph_d sur le sujet Re:Retour de fonctions (again)
Donnez moi une corde !!!

En fait je me suis trompé dans l'ordre de mes write-host pour le System.Char.

Voici la fonction
[code:1]
Function LireEmailExpediteur
{
param([String]$login, [System.data.odbc.odbcCommand]$odbc)

$odbc.CommandText = \"SELECT UPLI1 FROM SECAPPLIF.UPROFIP1 WHERE UPTYP='U' AND UPCOD='$login'\"
$DataAdapter = new-object System.Data.odbc.odbcDataAdapter($odbc)
$DataSet = new-object System.Data.DataSet
$DataAdapter.Fill($DataSet)
$retour = $DataSet.Tables[0].Rows[0]
write-host -$retour-
write-host ($retour.GetType())
$retour = $retour.Split(';')
#$retour = $Retour.split(\";\",[StringSplitOptions]::RemoveEmptyEntries)
write-host -$retour-
write-host ($retour.GetType())
write-host \"-$($retour[0])-\"
write-host ($retour[0].GetType())

return $retour[0]
}
[/code:1]

Et le retour d'écran
[code:1]
-toto@toto.fr; -
System.String
-toto@toto.fr -
System.String[]
-toto@toto.fr-
System.String
[/code:1]

Donc là c'est tout bon et ça fonctionne même sans le RemoveEmptyEntries. Comme quoi dans le bonne ordre et avec la bonne syntax c'est mieux :laugh:

Pour les espaces c'est notre gescom qui est comme ça.

Donc maintenant je me retrouve avec le problème du fil d'oringine à savoir que la fonction me retourne System.Object[] ! au secours

Merci

Message édité par: steph_d, à: 9/06/09 16:22<br><br>Message édité par: steph_d, à: 9/06/09 16:23

@+ Steph

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

Plus d'informations
il y a 16 ans 9 mois #4785 par steph_d
Réponse de steph_d sur le sujet Re:Retour de fonctions (again)
Pour être complet au cas où voici comment j'appelle ma fonction :
[code:1]
$fic[$EXPEDITEUR] = LireEmailExpediteur $fic[$EXPEDITEUR] $odbcCommande
write-host ($fic[$EXPEDITEUR].GetType())
[/code:1]

Affichage:
[code:1]System.Object[][/code:1]<br><br>Message édité par: steph_d, à: 9/06/09 16:43

@+ Steph

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

Plus d'informations
il y a 16 ans 9 mois #4786 par Laurent Dardenne
steph_d écrit:

On peut pas supprimer un post ?

Non. Il ne faut pas répondre à la seconde demande de post si le délai est dépassé.

Pour ton pb il faut regarder l'usage de la fonction LireEmailExpediteur, Avec retour[0] tu devrais récupérer un objet et pas un tableau.

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 9 mois #4787 par Laurent Dardenne
Tu as un bug dans ton code :
[code:1]$DataAdapter = new-object System.Data.odbc.odbcDataAdapter
$DataAdapter.Fill.OverloadDefinitions
#...
#System.Int32 Fill(DataSet dataSet)[/code:1]
L'émission d'une donnée dans une fonction se fait par défaut dans le pipeline.
Donc tu renvois bien un élément, mais un effet de bord en renvoi un second, ce qui nous donne le tableau :
[code:1]
[void]$DataAdapter.Fill(..)
[/code:1]
Pour le vérifier
[code:1]
LireEmailExpediteur $fic[$EXPEDITEUR] $odbcCommande
#ou
($fic[$EXPEDITEUR]).Count
$fic[$EXPEDITEUR]
[/code:1]

Pour info:
Converting to Array
blogs.msdn.com/powershell/archive/2009/0...erting-to-array.aspx

Array Literals In PowerShell
blogs.msdn.com/powershell/archive/2007/0...s-in-powershell.aspx

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 9 mois #4788 par steph_d
Réponse de steph_d sur le sujet Re:Retour de fonctions (again)
Euh j'ai pas tout compris là ?? Tu me traites de bug et ensuite tu dis que je fais des effets de bord ? Tu me cherchez ? :laugh:
Et c'est qui cette pipeline heing !

Bon sérieursement, j'ai un peu de mal à comprendre ta réponse. J'ai bien compris ce qu'il faisait et je l'avais déjà constaté qu'il me rajoutait quelque chose mais je comprends pas.
Ca fera ça à chaque fois ?
Et à ce moment là je dois adapter mon code de cette façon ?
[code:1]
$test = LireEmailExpediteur $fic[$EXPEDITEUR] $odbcCommande
write-host ($test)
write-host ($test.GetType())
write-host ($test[0])
write-host ($test[0].GetType())
write-host ($test[1])
write-host ($test[1].GetType())
[/code:1]

Affichage
[code:1]
1 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
System.Object[]
1
System.Int32
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
System.String
[/code:1]

Sceptique comme la fosse...

@+ Steph

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

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