Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/05/2008, à 09:02

tominardi

Free Pascal - Comparer deux chaînes de caractères

Salut,

Dans le cadre d'une appli réalisé sous Lazarus, j'ai besoin de parser un fichier XML, de récupérer les valeurs, les analyser et changer l'état d'un objet selon la valeur.

Pour parser le fichier XML, pas de soucis. J'ai testé j'arrive bien à récupérer ma valeur.

extrait simplifié du fichier xml :

<fichier xml>
  <sujet>Vrai</sujet>
</fichier xml>

La valeur récupérer, "Vrai" est non typé. Pour être sur de la typer, je la stocke dans une variable "test" de type String.

Je souhaite changer l'état d'un bouton radio selon la valeur de "test". On passe par une variable "sujet" car dans les faits il y a 5 sujets différents. Pour le test j'ai une zone de saisie qui permet d'écrire la comparaison.

if (test = 'Vrai') then
 begin
  sujet:=true;
  zonedesaisie.Text:='Comparaison : Vrai = '+test;
 end
else
 begin
  sujet:=false;
  zonedesaisie.Text:='Comparaison : Faux = '+test;
 end;

bouton_radio.checked:=sujet;

Seulement, dans les faits, la comparaison de chaînes semble plus compliqué. En effet, avec ce code, la zone de saisie affiche : "Faux = Vrai". Donc il considère que ma chaîne 'Vrai' n'est pas égale à 'Vrai'.

Je suppose donc qu'il y a une manipulation à faire pour comparer des chaînes dans ce langage.

Ma question donc, comment comparer deux chaînes ?

Merci d'avance.

Hors ligne

#2 Le 26/05/2008, à 09:51

tominardi

Re : Free Pascal - Comparer deux chaînes de caractères

J'ai utilisé la fonction CompareText (http://www.freepascal.org/docs-html/rtl/sysutils/comparetext.html)
Mais j'ai un soucis.
Quand je 'Vrai' à 'Vrai', il ne trouve pas que les deux valeurs sont identiques. Le 'Vrai' issue du XML est supérieur à celui en dur.
Cependant, comme la valeur 'Faux' issue du XML est inférieur, j'ai des résultats utiles (puisque sujet ne peut être que 'vrai' ou 'faux') et je peux donc produire un code qui retournera des résultats exacts.

Mais je ne considère pas ça comme résolu, puisqu'il s'agit d'une méthode de sioux.

Je me demande si cela ne vient pas du type des variables :

Ma valeur 'test' semble être de type AnsiString, alors que je le compare à 'vrai' qui est peut être un simple String. Cela doit être différent dans la méthode de comparaison.

Hors ligne