IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Conversion String en int


Sujet :

Delphi

  1. #1
    Membre régulier Avatar de jodan33
    Homme Profil pro
    DEveloppeur interoperabilité
    Inscrit en
    Mars 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : DEveloppeur interoperabilité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 95
    Points : 71
    Points
    71
    Par défaut Conversion String en int
    Bonjour,
    un petit souci pour convertir une chaine, j'ai un prog tactille qui accepte le chiffre '01'pour designer un employé , qui est défini dans une base Firebird en VarChar, dans le prog la variableb est _server:string; mon probleme est que si l'on saisi 01 on le nom de la bonne personne et si l'on saisi 1 il ne se passe rien, je souhaiterai que les deux passent.

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Bon résumons car je suis pas sûr d'avoir bien compris.

    Tu disposes dans ta BDD d'un champ VarChar désignant le code employé. Ces codes sont stockés sous la forme '01', '02', '03', etc...
    Ensuite dans ton programme tu travailles avec une variable _serveur de type string.

    Tu souhaites donc lorsque tu stockes '1' dans cette variable pouvoir retrouver le code correspondant dans la BDD soit '01'.

    C'est bien ça ?

    @+ Claudius

  3. #3
    Membre régulier Avatar de jodan33
    Homme Profil pro
    DEveloppeur interoperabilité
    Inscrit en
    Mars 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : DEveloppeur interoperabilité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 95
    Points : 71
    Points
    71
    Par défaut
    oui , en effet ces cela , quand je selectionne 01 sur mon tactille pas de probleme , mais lorsque je saisi 1 il ne passe rien

  4. #4
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    ta variable _server string, tu la convertis en integer, tu rentres ça dans une variable val de type integer et tu refais la démarche inverse.
    val:=strtoint(_server);
    _server:=inttostr(val);

    si _server est '01' ou '1' =>val reçoit 1
    et après _server recevra toujours '1' avec _server:=inttostr(val);

    je ne sais pas si j'ai tout capté...
    mais c'est une astuce.

  5. #5
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    ah, je n'avais pas encore vu le post de claudius, donc, ça ne va pas ...

  6. #6
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    donc maintenant, tu gardes le val qui va contenir le chiffre sans le 0 et tu fais
    _server:='0'+inttostr(val);

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    Soit tu convertis ta variable _serveur en Int et adopte la solution d'Archimède.
    Ou bien si tu veux rester avec une variable string tu peux utiliser cette petite fonction, qui complète à droite ou à gauche une chaine de caractères avec le caractère de ton choix sur une longueur donnée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    type
      TPadPosition = (ppLeading, ppTrailing);
     
    function Pad(const AText: string; ALength: Integer; AFillChar: Char;
      PadPosition: TPadPosition = ppLeading): string;
    begin
      if (Length(AText) >= ALength) or (ALength < 1) then
        Result := AText
      else if PadPosition = ppLeading then
        Result := StringOfChar(AFillChar, ALength - Length(AText)) + AText
      else
        Result := AText + StringOfChar(AFillChar, ALength - Length(AText));
    end;
    Exemple d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      Pad('1', 4, '*'); // renvoie '***1'
      Pad('01', 5, '*', ppTrailing); // renvoie '01***'
      // pour ton cas
      Pad('1', 2, '0'); // renvoie '01'
    Voilou. C'est une fonction générique qui pourra te resservir dans des cas similaires.

    @+ Claudius

  8. #8
    Membre régulier Avatar de jodan33
    Homme Profil pro
    DEveloppeur interoperabilité
    Inscrit en
    Mars 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : DEveloppeur interoperabilité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 95
    Points : 71
    Points
    71
    Par défaut
    Merci , Cl@udius et Archiméde , j'avais commencé qque chose de similaire seulement je n'avais pas utilisé strtoint dans le if , je pensais qu'il ne le prendrai pas merci de m'avoir remis sur la bonne piste , je vais utiliser un 'for' pour cerner tous les cas de 1 à 9 à convertir en 01 à 09.
    je dois auusi gerer les non existant dans la base exemple j'ai 4 serveurs :
    01,02,12,15 (pour info:à chaque N° est associé un prénom) si j'essaie de rentrer 16 je dois afficher un message disant , ce N° n'est pas attirbué ..ou autre.
    en attendant cette partie de code est OK.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    _server:=trim(FTA_PaveSvTa.lserver.caption);
        val:=strtoint(_server);
        if (strtoint(_server)=1) or (strtoint(_server)=01) then
        val:=1;
        if (strtoint(_server)=2) then
        val:=2;
     
        _server:='0' + inttostr(val);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. conversion string en int
    Par edenyorke dans le forum C
    Réponses: 15
    Dernier message: 29/10/2006, 20h49
  2. Réponses: 7
    Dernier message: 26/10/2006, 16h50
  3. [C#] Conversion string to int
    Par OpenGG dans le forum C#
    Réponses: 2
    Dernier message: 23/08/2006, 19h08
  4. conversion string vers int
    Par mathher dans le forum C++
    Réponses: 4
    Dernier message: 14/04/2006, 17h52
  5. [FLASH MX 2004] conversion string en int.
    Par calfater dans le forum Flash
    Réponses: 3
    Dernier message: 26/05/2004, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo