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 :

Problème affectation de valeur dans un tableau [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 36
    Par défaut Problème affectation de valeur dans un tableau
    Bonjour,
    alors mon soucis c'est que je transfert le contenu d'un tableau dans un second tableau et lorsque je modifie les valeurs de ce second tableau, il modifie aussi le premier !

    Je m'explique :
    - Je construit un tableau à 2 niveaux "tab", que je passe en paramètre d'une fonction "readFile".
    - Cette fonction va lire un fichier plat et effectuer la même opération pour chacune des lignes du fichier.
    - L'opération c'est de trouver la chaîne de caractère décrite dans mon tableau "tab".
    - Donc pour cela je transfert "tab" dans "PS_tab", pour conserver les valeurs d'origines et après je remplace dans "PS_tab" par la chaîne de caractère trouvée.
    - Concrètement "tab" contient "les coordonnées" de la chaîne de caractère à trouvé, pour chaque ligne de mon fichier je dois trouvé 3 chaînes de caractères (la première commence en position 1 et est de longueur 3, la deuxième commence en position 89 et est de longueur 12 et la dernière commence en position 179 et est de longueur 8).
    - Trouvé la chaîne n'est pas un problème j'y arrive très bien !
    - Mon soucis c'est que j'ai besoin de stocker ces chaînes pour appeler une procédure stockée, donc je les stocke dans mon tableau "PS_tab" MAIS CA ECRIT AUSSI DANS "TAB" !!!!!!!

    Quelqu'un aurait-il une solution ? Je mets mon code en dessous, je l'ai simplifier un peu pour ne laisser que la partie qui me pose problème.
    Merci d'avance.


    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    function readFile {
        param([string] $MonFichier, [string] $readfile, [string] $writefile, [string] $procS, [array] $tab,  [int] $type)
        
        Set-Location $rep_script
        
        $var = get-content $readfile
        $erreur = 0
        $nb = $tab.count
        
        For ([int] $h=0; $h -lt $nb; $h++){
            write-host "tab[$h] = "$tab[$h]
        }
            
        foreach ($row in $var){
            $PS_tab = New-Object System.Collections.ArrayList
            
            For ([int] $i=0; $i -lt $nb; $i++){
                $PS_tab.Add($tab[$i]) > $null
                
                write-host "PS_tab[$i] = "$PS_tab[$i]
                write-host "PS_tab[$i][0] = "$PS_tab[$i][0]
                write-host "PS_tab[$i][1] = "$PS_tab[$i][1]
            }
            
            $nbp = $PS_tab.count
            
            For ([int] $j=0; $j -lt $nbp; $j++){
                $var = $PS_tab[$j][1].split(".")
                
                $PS_tab[$j][1] = "aaa" #convertFilePlat $row $var[0] $var[1] "" 3
                #convertFilePlat trouve la chaine de caractère correspondant dans le fichier
                #Var[0] & var[1] sont les positions de début et de fin du champs à extraire TOUJOURS une [STRING]
                
                write-host "test[$j][1] = "$PS_tab[$j][1]
            }
            
            For ([int] $k=0; $k -lt $nb; $k++){
                write-host "tab[$k] = "$tab[$k]
            }
            
            
            #Appel d'une procédure stockée avec les paramètre du tableau
            #Même process pour chaque ligne du fichier readfile
        }
    }
    
    
    #Appel de la fonction readFile
    $PS = "proc_stock_1"
    $tab= @(("@Soc","1.3"),("@Matricule","89.12"),("@Utinfo","179.8"))
    $rtn = readFile $MonFichier $readfile "" $PS $tab 4

  2. #2
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 36
    Par défaut Solution
    J'étaits pas descendu assez bas comme j'ai un tableau de tableau, il fallait descendre au plus bas.
    De plus, la commande New-Object System.Collections.ArrayList nécessite un nom de tableau sans _ (je ne sais pas pourquoi).

    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
    foreach ($row in $var){
                        $PStab = New-Object System.Collections.ArrayList
    
                        For ([int] $i=0; $i -lt $nb; $i++){
                            $inter = New-Object System.Collections.ArrayList
                            
                            For ([int] $j=0; $j -lt 2; $j++){
                                $inter.Add($tab[$i][$j]) > $null
                            }
                            
                            $PStab.Add($inter) > $null
                        }
                        
                        $nbp = $PStab.count
                        
                        For ([int] $j=0; $j -lt $nbp; $j++){
                            $var = $PStab[$j][1].split(".")
                            
                            $PStab[$j][1] = convertFilePlat $row $var[0] $var[1] "" 3
                        }
    
    etc ...

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 10/09/2015, 00h34
  2. problème de valeur dans un tableau se trouvant dans une liste
    Par alaninho dans le forum Général Python
    Réponses: 5
    Dernier message: 16/06/2011, 10h17
  3. Affectation "dynamique" de valeurs dans un tableau
    Par devdebutante dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 25/06/2009, 19h30
  4. Réponses: 5
    Dernier message: 03/11/2007, 18h29
  5. [Tableaux] Problème de valeur dans un tableau (array)
    Par Flushovsky dans le forum Langage
    Réponses: 15
    Dernier message: 24/03/2006, 13h56

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