Bonjours a tous.
cela fait maintenant 2 jours que je me casse la tête à essayer de trouver pourquoi ma procédure ne marche pas...
c'est une procédure qui analyse un texte (d'un jeu en ligne) et qui en extrait les valeurs voulus.
voici la procédure qui m'embête:
voila le texte que je cherche a annaliser:
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 procedure NbTroupeArmee(NomTroupes, Source:String); var Ligne, Ligne2, Ligne3:String; // décomposition des étapes pour trouver où ca plante. i,j:Integer; begin j:=NbSousChaine(NomTroupes,Source); //NbSousChaine fonction qui renvoi le nombre de fois que la chaine est répété dans la source. //début de la boucle for i:= 1 to j do begin Armee:=gauche(' ',Ndroite(NomTroupes,Source,i)); //Ndroite fonction qui renvois ce qu'il y a à droite de la 'i' ème chaine 'NomTroupes' // gauche fonction qui renvoi ce qu'il y a à gauche de ' '. Ligne:=Ndroite(NomTroupes+Armee+' '+char(#9)+char(#9),Source,i); Ligne2:=gauche(' '+char(#9),ligne); Ligne3:=StrReplace(' ','',StrReplace(char(#9),'',StrReplace('.','',Ligne2))); // Suppression des . des milliers et des espaces NbTroupes:=StrToInt(Ligne3); //affectation des valeurs aux variables déclarées dans mon Unit. if Armee= 'Armée 1' then VarArmee1:=IntToStr(NbTroupes); if Armee= 'Armée 2' then VarArmee2:=IntToStr(NbTroupes); if Armee= 'Armée 3' then VarArmee3:=IntToStr(NbTroupes); if Armee= 'Réserve' then VarArmeeR:=IntToStr(NbTroupes); end; end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 {Réorganisation Unité Origine Destination Stock Quantité Leopard 3 Réserve 3.000.000 Sous-marin d attaque Réserve 1.500.000 Sous-marin lanceur d engins Réserve 1.010.000 Eurofighter Typhoon Réserve 64.000.000 F22 Raptor Réserve 46.100.000 Frégate de 2nd rang Réserve 1.600.000 Northrop B2 Spirit Réserve 600.000 Eurofighter Typhoon Armée 1 35.000.000 F22 Raptor Armée 1 15.000.000 }
Dans ma procédure, je donne le Nom des troupes ('F22 Raptor ' par exemple) avec le texte au dessus comme source
dan un 1er temps je détermine le nombre de fois qu'est répété la troupe cherchée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part procedure NbTroupeArmee(NomTroupes, Source:String);
ensuite je commence ma boucle For To Do
Code : Sélectionner tout - Visualiser dans une fenêtre à part j:=NbSousChaine(NomTroupes,Source);
je récupère l'Armée de la 1er Troupe (ici Réserve)
je récupère le nombre de troupe en le nettoyant (ici 46100000)
Enfin j'affecte les valeurs trouvées a des variables voulu en fonction des armée.
Mon problème:
i:=1 nikel.
i:=2 la variable "Ligne" renvoi '' (vide) ce qui fait planter l'affectation de ma variable "Ligne2" (je l'ai décomposé en 3 lignes pour savoir où ça plantait).
Je ne vois pas pourquoi tout ce passe bien avec la boucle quand i:=1 et que ce merde quand i:=2. Je demande donc de l'aide pour m'ouvrir les yeux s'il vous plais et de me donner des pistes pour enlever ce tronc d'arbre dans mon pied, sinon je vais finir chauve.
PS: je suis débutant alors pardonnez mon code
Merci d'avance.
Jeanver
Partager