C# Probléme pour controlez un code postal [Résolu]

Signaler
Messages postés
19
Date d'inscription
lundi 8 novembre 2004
Statut
Membre
Dernière intervention
18 novembre 2004
-
Messages postés
1
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
15 novembre 2005
-
Bonjour a tous !!!

Je suis débutante dans le c# !et d'ailleurs nouvelle dans ce forum aussi !!!

Et je voudrais savoir comment contrôler qu'un code postal est correct, mais voilà mon champ est de type char donc je ne peux pas faire:

((_Organisme.codePostal<"01000")||(_Organisme.codePostal>"99999"))

Comment puis-je faire???????????
Merci pour vos futures réponses!!!!

Aurore

14 réponses

Messages postés
1183
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
12
oups

/// <summary>
/// Fonction qui va tester le code postal
/// </summary>
/// Le code postal A tester

/// <returns>True si le code postal est correct, False sinon</returns>
public static bool f_Verifie_CP(string Code_Postal)
{
//Par défaut on retourne true
bool retour = true;

try
{
//ON fait les tests qu'il faut
if( (Convert.ToInt32(Code_Postal)<1000) || (Convert.ToInt32(Code_Postal)> 99999) )
{
retour = false;
}
}
catch(Exception xcp)
{
MessageBox.Show(xcp.Message);
}

return retour;
}

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
1183
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
12
Salut et Bienvenue,

Tu peux poster un peu de code histoire d'y voir plus clair :o)))
Tu dis que ton champ est de type char???

Attention il me semble que le code postal de la Corse contient des lettres aussi donc ton test du dessus ne fonctionnera pas...il me semble

Sinon Tu peux faire une fonction Qui retourne un booléen si ton code postal est correct ou non :

namespace Outils
{
public class Fonction
{
/// <summary>
/// Fonction qui va tester le code postal
/// </summary>
/// Le code postal A tester

/// <returns>True si le code postal est correct, False sinon</returns>
public static bool f_Verifie_CP(string Code_Postal)
{
//Par défaut on retourne true
bool retour = true;

//ON fait les tests qu'il faut
if( (Code_Postal<"01000") || (Code_Postal>   "99999") )
{
retour = false;
}

return retour;
}
}
}


du coup a l'utilisation ca sera plus simple :

if(Outils.Fonction.f_Verifie_CP(_Organisme.codePostal))
{
//......
}

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
19
Date d'inscription
lundi 8 novembre 2004
Statut
Membre
Dernière intervention
18 novembre 2004

Mais en fait le ligne
if( (Code_Postal<"01000") || (Code_Postal> "99999") )
ne fonctionne pas il me met un message d'erreur :

L'opérateur '<' ne peut pas être appliqué aux opérandes de type 'string' et 'int'

Je ne comprends pas pourquoi il me met ce message!!!!!

Aurore
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
15
Sinon tu peux utiliser des expressions régulières (REXEXP) ainsi que des validators.

::|The S@ib|::
MVP C#.NET
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
15
using System.Text.RegularExpressions;

void MatchRegex(string input )
{

    RegexOptions   options = RegexOptions.None;
    Regex          regex = new Regex(@"^\d{5}$", options);
    bool   isMatch = regex.IsMatch(input);
    if( isMatch )
return true
   return false;

   }

::|The S@ib|::
MVP C#.NET
Messages postés
19
Date d'inscription
lundi 8 novembre 2004
Statut
Membre
Dernière intervention
18 novembre 2004

Merci beaucoup je suis enfin arriver à avoir un contrôle correct!!!!!!
Merci!!!

A plus...

Pour d'autres renseignements ;-)

AuroreAurore
Messages postés
1183
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
12
valide la reponse qui ta convenu(avec le bouton "reponses acceptez" ou alors si tu a fait un truc poste le (histoire que cela serve a d'autre...)

merci :o)))
@+

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
15
"ou alors"

J'aurais mis un "et',

Valide et poste une source:)

::|The S@ib|::
MVP C#.NET
Messages postés
1183
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
12
lol...

oui valide ET poste une source :o)))

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
19
Date d'inscription
lundi 8 novembre 2004
Statut
Membre
Dernière intervention
18 novembre 2004

Voilà j'ai validé la réponse mais par contre j'ai pas posté car j'ai rien changé à ce que tu m'as donné!!!!!

Meçri encore de tout ses renseignements !!!!!

A bientot

AuroreAurore
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
15
Bon bah , mes regexp n'ont pas plu :(

Pourtant c'était plus propre et efficasse et + cours ...

bouhhh :(

::|The S@ib|::
MVP C#.NET
Messages postés
1183
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
12
oui mais pour commencer y a qd meme plus simple...

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
242
Date d'inscription
jeudi 8 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2005

lol! Bien joué le regex malgré l'exception corse! (et depuis quand un void retourne true ou false? lol)
Messages postés
1
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
15 novembre 2005

C'est quoi ce code à 2 balles, je veux bien que le compilateur optimise le code mais bon, ça n'empêche pas de coder correctement



ça c'est une horreur, une hérésie, même un étudiant programmeur de
première année après 1 mois de cours ne le fait plus, sous peine de
hautes sanctions



<Garbage Code>

using System.Text.RegularExpressions;



void MatchRegex(string input )

{ RegexOptions options = RegexOptions.None;

Regex regex = new Regex(@"^\d{5}$", options);

bool isMatch = regex.IsMatch(input);

<Heresie>

if( isMatch )

return true

return false;

</Heresie> }

</Garbage Code>





return new Regex(@"^\d{5}$", RegexOptions.None).IsMatch(input);





ça ne sert à rien de déclarer une nouvelle variable booléenne pour la tester ensuite et retrouner juste sa valeur.

Et ne me dites pas que c'est à but didactique car je ne vous croirais pas