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 :

Convertion d'un string en numérique


Sujet :

Delphi

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 41
    Points : 42
    Points
    42
    Par défaut Convertion d'un string en numérique
    Bonjour,

    J'ai un Edit1.text qui contient "12 345.56", je veux convertir ce nombre en Reel pour faire des calculs.
    La fonction "StrToFloat(Edit1.Text)" se plante à cause de l'espace.
    J'ai pensé faire une recherche de caractère ' ' dans ma chaine par la fonction "pos(' ',Edit.text)", mais cette fonction me renvoie 0.
    si quelqu'un a une idée.
    merci d'avance

  2. #2
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    s:=edit1.text;
    while pos(' ',s)>0 do delete(s,pos(' ',s),1);
    edit1.text:=s;
    Tu ne peux pas passer edit1.text comme paramètre à delete
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 41
    Points : 42
    Points
    42
    Par défaut Convertion d'un string en numérique
    merci de votre réponse,
    j'utilise FormatFloat pour afficher le nombre dans edit1, mais après j'ai besoin de ce nombre pour faire des calcul, est ce qu'il y a une fonction qui rend le nombre dans son état initial, càd l'inverse de formatfloat, car avec la fonction pos ça marche pas elle trouve pas l'espace.

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 852
    Points : 11 285
    Points
    11 285
    Billets dans le blog
    6
    Par défaut
    il peut être mofifié dans l'Edit par l'utilisateur ?
    si oui, utiliser FloatToStr après avoir supprimé les espaces éventuels, remplacé le séparateur décimal, etc :
    ce peut être une solution d'écrire : (syntaxe à vérifier !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    S:=Edit1.Text;
    S:=StrReplace(S, #32, #0, [rfReplaceAll]); // enlève tous les espaces
    S:=StrReplace(S, ThousandSeparator, #0, [rfReplaceAll]); // enlève le séparateur des milliers
    if DecimalSeparator='.'
    then c:=','
    else c:='.';
    S:=StrReplace(S, c, DecimalSeparator, [rfReplaceAll]); // assure le séparateur décimal
    try
      f:=StrToFloat(S);
    except
      f:=DefaultValue; // ou toute autre gestion de l'erreur
    end;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @ Med1112, essaye ceci en utilisant "ThousandSeparator":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var
      amount : Currency;
     
    begin
     
    amount := 1234567.89;    // 1,234,567 pounds 89 pence
     
      // Display with the default thousands separator
      ShowMessage('Amount = '+FloatToStrF(amount, ffCurrency, 10, 2));
     
      // Display with a new thousands separator
      ThousandSeparator := ' ';
      ShowMessage('Amount = '+FloatToStrF(amount, ffCurrency, 10, 2));
    A adapter.

    @+,

    Cincap

  6. #6
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var S    : string;
        V    : Double;
        Code : integer;
    begin
    S := Edit1.Text;
    repeat
      Val(S,V,Code);
      Delete(S,Code,1);
    Until Code=0;

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 41
    Points : 42
    Points
    42
    Par défaut Convertion d'un string en numérique
    j'ai essayé le code de tourlourou, et ça marche à la merveille
    merci à tous

  8. #8
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut
    @chaland de passage

    A tout hasard, je précise quand même que ma suggestion traite correctement une chaîne comme celle-ci, par exemple : 'Total = -12 345.56 €'.

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

Discussions similaires

  1. convertion int to string
    Par anisj1m dans le forum C++
    Réponses: 2
    Dernier message: 24/12/2006, 13h54
  2. Convertion Double vers String
    Par brsoft.org dans le forum Langage
    Réponses: 11
    Dernier message: 28/09/2006, 15h19
  3. [C#] Convertion de type (string/int)
    Par M1000 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 22/05/2006, 16h03
  4. Réponses: 4
    Dernier message: 06/05/2005, 13h37
  5. Convertion d'un String en Integer
    Par Tapioca dans le forum ASP
    Réponses: 2
    Dernier message: 16/06/2004, 10h12

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