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
Partager