Bonjour
Je me retrouve avec un problème concernant le passage en paramètres d'une ligne de commandes.
La ligne que je souhaite envoyer correspond à "p0:CRSS;p1:CRSS VacPlanVacSup;p2:Administrateur;p3:;p4:12;p5:X;p6:;p7:;p8:;p9:O;"
que j'envoie dans ma classe "program.cs" principale.
Le problème est qu'au lieu de me retrouver avec une ligne, j'en ai deux comme ceci :
"p0:CRSS;p1:CRSS"
"VacPlanVacSup;p2:Administrateur;p3:;p4:12;p5:X;p6:;p7:;p8:;p9:O;"
l'espace a disparu entre P1:CRSS et VacPlanVacSup.
voir un aperçu du résultat dans VS2010 dans pièce jointe
Et ici la fonction de traitement :
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 namespace AZUR_LAG { public class Program { /// <summary> /// Point d'entrée principal de l'application. /// </summary> [STAThread] static void Main(string[] args) //ici je récupère la(les) lignes de la commande { MMain InitMain = new MMain(); InitMain.InitMain(args); // je traite la commande Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Appli_gene.FLAgents()); } } }
mon problème vient pour le paramètre P1 qui entre deux points virgules, possède un espace. Sauf que l'espace est considéré comme un retour chariot dans le passage des arguments dans le tableau de string et cela scinde du coup ma ligne de commandes.
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 public void InitMain(string[] command) { ErreurMain = false; try { A_GES_COLL c_A_GES_COLL = new A_GES_COLL(); // exemple "p0:CRSS;p1:CRSS VacPlanVacSup;p2:Administrateur;p3:;p4:12;p5:X;p6:;p7:;p8:;p9:O;" for (int n = 0; n < command.Length; n++) { command[n] = command[n].ToString() + ";"; int i; //Récupération du nom de module appelant i = command[n].ToString().IndexOf("p0:"); if (i != -1) { int j = command[n].ToString().Substring(i + 3).IndexOf(";"); if (j != -1) { GB_AppliAppelante = true; GO_Nom_module = command[n].ToString().Substring(i + 3, j); } else { GB_AppliAppelante = false; GO_Nom_module = ""; } } //Récupération de la précision de module appelant (Facultatif) i = command[n].ToString().IndexOf("p1:"); if (i != -1) { int j = command[n].ToString().Substring(i + 3).IndexOf(";"); if (j != -1) { GO_Precision_module = command[n].ToString().Substring(i + 3, j); } else { GO_Precision_module = ""; } } etc ... }//for (int n = 0; n < command.Length; n++)
Comment je peux faire pour n'avoir qu'une seule et unique ligne avec l'espace à l'intérieur ? (je migre une appli VB6 en C#, et ce truc me pose problèmes)
Partager