Question
Retour de fonctions (again) (Résolu)
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 9 mois #4783
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Retour de fonctions (again)
Pour System.Char c'est normal car une string est aussi un tableau de caractères.
steph_d écrit:
[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.
steph_d écrit:
Essaie avec ceciL'affichage de $retour me turlupine car en fait il a gardé la deuxième partie, tous les espaces après le séparateur !
[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.
- steph_d
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 0
il y a 16 ans 9 mois #4784
par steph_d
@+ Steph
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
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
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
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.
- steph_d
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 0
il y a 16 ans 9 mois #4785
par steph_d
@+ Steph
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
[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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 9 mois #4786
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Retour de fonctions (again)
steph_d écrit:
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.
Non. Il ne faut pas répondre à la seconde demande de post si le délai est dépassé.On peut pas supprimer un post ?
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 9 mois #4787
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Retour de fonctions (again)
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
[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.
- steph_d
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 0
il y a 16 ans 9 mois #4788
par steph_d
@+ Steph
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 ? 
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...
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.112 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Retour de fonctions (again) (Résolu)