IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

fonction simple qui bug pour un probleme de type comment corriger cela ? [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 173
    Par défaut fonction simple qui bug pour un probleme de type comment corriger cela ?
    Bonjour,

    je programme une fonction simple qui bug pour un probleme de type comment corriger cela ?







    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    
    $texte="chien ; chat ; cochon"
    $recherche="chat"
    
    
    
    Function codecontients {
    param(
            [Parameter(Mandatory=$true)]
    		[string]$srtsource,
    		[Parameter(Mandatory=$true)]
    		[string]$strech
        )
    
    $flag=0
    [string[]]$InputArray=($srtsource).Split(" ; ")
    
    if ($InputArray -contains $strech)
    {
    $flag=1
    }
    return $flag
    }
    
    if ($(codecontients($texte,$recherche)) -eq 1)
    		{
    				write-host "chaine $recherche trouvé"
    
    		}
    erreur rencontré :



    codecontients : Impossible de traiter la transformation d'argument sur le paramètr
    convertir la valeur en type System.String.
    Au caractère \test.ps1:26 : 20
    + if ($(codecontients($texte,$recherche)) -eq 1)
    + ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidData : ( [codecontients], ParameterBindingA
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,codecontients



    le but étant d’éclater un texte en tableau et de regarder si l'un des membres de ce tableau est le texte recherché

    en vous remerciant,

  2. #2
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    revoir l'appel de ta fonction,
    y a pas de parenthèse en powershell, ni de ... entre les par... bip

    désolé de te faire cherché un peu

  3. #3
    Membre éprouvé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2015
    Messages : 66
    Par défaut
    Le problème ici c'est la virgule dans l'appel à la fonction, car elle rend les deux paramètres $texte et $recherche membres d'un array.
    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $a = 'hello','world'
    $a.GetType()
    
    IsPublic IsSerial Name                                     BaseType                                                                    
    -------- -------- ----                                     --------                                                                     
    True     True     Object[]                                 System.Array
    Du coup ta fonction n'a reçu qu'un paramètre, un array avec deux éléments, au lieu de deux strings séparés : d'où l'erreur.

    Pour régler ce problème il suffit de modifier la ligne d'appel à ta fonction ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((codecontients -srtsource $texte -strech $recherche) -eq 1)
    Qui pourrait s'écrire également ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((codecontients $texte $recherche) -eq 1)
    Mais il vaut mieux la première approche ainsi on sait quel paramètre correspond à quoi (plus facile plus tard pour revenir sur le code et le maintenir).

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 173
    Par défaut
    merci beaucoup cela fonctionne !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction factorielle qui bug
    Par sk8trasher dans le forum Débuter
    Réponses: 12
    Dernier message: 02/06/2012, 09h14
  2. Réponses: 5
    Dernier message: 18/03/2011, 15h35
  3. [XL-2003] macro/fonction simple qui ne recalcule pas après modif
    Par akka01 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 14/03/2011, 08h17
  4. Fonction simple qui ne marche pas
    Par ApocKalipsS dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/05/2010, 11h29
  5. Fonction simple qui ne marche pas
    Par Emotion dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/03/2009, 06h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo