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 :

Modifier un caractère dans un TEdit.Text


Sujet :

Delphi

  1. #1
    Membre averti
    Avatar de Mic**
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Points : 409
    Points
    409
    Billets dans le blog
    2
    Par défaut Modifier un caractère dans un TEdit.Text
    Bonjour,

    Je souhaite remplacer le caractère point par le caractère virgule dans un TEdit
    Je sais le faire avec TP7 mais il ne fonctionne avec Windows que sous DOSbox ou Virtual Machine ce qui n'est pas pratique pour le partage.
    voici mon essais:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    {---------------------------------------------------------}
    procedure TTL431_Vref_OUT.CalculClick(Sender: TObject);
     
    var hlf,Vs,Vo,R,Rx,Rs,Ia,It: Real;
        ln,ct: integer;
        Ch:PAnsiChar ;
    begin
    ln := 0;
    Ch := PAnsiChar(Edit2.Text);
    ct:= StrLen (Ch);
    if ln <= ct then
    begin
    if CH = #46 then Ch := #44;
    Edit2.Text := PAnsiChar(Ch);
    end;
    Vs := StrToFloat(edit1.Text);
    Vo := StrToFloat(edit2.Text);
    R := StrToFloat(edit3.Text);
    Ia:= StrToFloat(edit4.Text)/1000;
     
     
    hlf:= (Vo/2.5)-1;  {half}
    Rx:= R/hlf;
    Vo:=(2.5/Rx)*(R+Rx);
    Rs:= (Vs-Vo)/Ia;
    Ia:=Ia;
    It:= ((Vo/(R+Rx)+Ia));
     
     
    Vsup.Caption:=FloatToStr(Vs);
    Vout.Caption:=FloatToStr(Vo);
    R2.Caption:=FloatToStrf(Rx,ffFixed,7,2);
    Iak.Caption:=FloatToStr(Ia*1000);
    Rsup.Caption:=FloatToStrf(Rs,ffFixed,6,2);
    I_Total.Caption:=FloatToStrf(It*1000,ffFixed,2,5);
    end;
    end.
    dans cet essais le point n'est pas remplacé et Delphi me le signale en erreur, quelle procédure adopter ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Je souhaite remplacer le caractère point par le caractère virgule dans un TEdit
    s'il s'agit de le remplacer à la saisie (le point du clavier numérique doit être remplacé par le point décimal des formatsettings de l'utilisateur du poste)
    il faut utiliser l'événement onKeyDown du poste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // FMX , Tokyo 10.2.3
    procedure TForm21.Edit1KeyDown(Sender: TObject; var Key: Word;
      var KeyChar: Char; Shift: TShiftState);
    begin
      if keychar='.' then keychar:=FormatSettings.DecimalSeparator;
    end;
    N.B en VCL on utilisera OnKeyPress plutôt que onKeyDown

    S'il s'agit de reproduire le comportement de la procédure du code, deux choix
    soit vous remplacez effectivement le point
    soit vous changez le comportement de StrToFloat et encore deux manières de faire
    - changer les TFormatSettings dans la procédure
    - (++) changer juste avec une autre syntaxe de StrToFloat : function StrToFloat(const S: string; const FormatSettings: TFormatSettings): Extended; overload;
    il y a aussi StrToFloatDef à envisager

    Mais, il y a un mais, vous n'indiquez pas quelle version de Delphi ni quel framework vous utilisez !
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 452
    Points : 24 863
    Points
    24 863
    Par défaut
    Il n'y a pas de boucle dans ce code, si le point est en plein milieu, cela ne fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Ch := PAnsiChar(Edit2.Text);
    ct:= StrLen (Ch);
    if ln <= ct then
    begin
    if CH = #46 then Ch := #44;
    Edit2.Text := PAnsiChar(Ch);
    end;

    c'est plûtot ceci avec une boucle for
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Ch := Edit2.Text;
     
    for I := 1 to Length(Ch ) do
      if Ch[I] = '.' then
         Ch[I] := ',';
     
    Edit2.Text := Ch;

    ou surtout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit2.Text := StringReplace(Edit2.Text, '.', ',', []);
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre averti
    Avatar de Mic**
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Points : 409
    Points
    409
    Billets dans le blog
    2
    Par défaut point décimal modifié en virgule OK
    Merci à tous pour les réponses rapides
    j'en ai testé deux qui fonctionne et j'ai pris la plus simple

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

Discussions similaires

  1. Exclure les caractères dans un TEdit
    Par DavidDB dans le forum Débuter
    Réponses: 4
    Dernier message: 30/04/2008, 17h34
  2. Modifier une ligne dans un fichier txt en java
    Par nihad510 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 09/10/2007, 22h08
  3. [Debutant]Mettre une chaine de caractère dans un TEdit
    Par M E H D I dans le forum C++Builder
    Réponses: 2
    Dernier message: 02/10/2007, 14h08
  4. Comment modifier un caractère dans MySQL
    Par Strategis dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 17/06/2007, 06h54
  5. Filtrer le caractère (.) dans un TEdit
    Par snake23 dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2006, 19h04

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