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 ! 8O
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:
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 |