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 :

SpinEdit Exception EconvertError


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut SpinEdit Exception EconvertError
    Bonjour

    Si, au lieu d'utiliser les flêches, on double clique sur un SpinEdit pour pouvoir entre une valeur manuellement, le composant se retrouve un instant sans valeur et une erreur est déclenchée avec le message : '' n'est pas une valeur entière correcte.

    Une idée pour pallier cet inconvénient ??


    Merci d'avance

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 096
    Par défaut
    Initialise à Zéro ton SpinEdit ... voir si en jouant avec le OnChange tu ne puissent pas corriger le 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

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Il est initialisé à 0.
    L'erreur se produit avnt l'événement OnChange.

  4. #4
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut
    Salut,

    C'est un des problèmes du SpinEdit. A chaque OnChange, tu appelle automatiquement la conversion texte -> entier. Si la chaine ne représente pas une valeur entière valide, il y plantage. A gérer par exception je pense à un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    try 
          SpinEdit1.Value  //utilisation de ta valeur
       except 
        End;
    Personnellement, je préfère utiliser un simple TEdit (bien plus souple) associé à un TSpinButton: 2 lignes de codes et tu gèrent toi même tes sécurités, tu peut associer des float...
    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
    procedure TFiche1.SpinButton1UpClick(Sender: TObject);
    Var
      ATemps:Double;
    Begin
       If  TryStrToFloat(TimeEdit.Text,ATemps) = true then
       Begin
         ATemps := ATemps + PasDeTemps;
         If (ATemps > 5000) then ATemps:=5000; //limitation max si nécéssaire
         TimeEdit.Text := FloatToStr(ATemps);
       End;
    End;
    {{-------------------------------------------------------------
    --------------------------------------------------------------}
    procedure TFiche1.SpinButton1DownClick(Sender: TObject);
    Begin
      If  TryStrToFloat(TimeEdit.Text,ATemps) = true then
      Begin
        ATemps := ATemps - PasDeTemps;
        If (ATemps < 0.0) then ATemps:=0; //limitation min si nécéssaire
        TimeEdit.Text := FloatToStr(ATemps);
      End;
    End;
    Il faut bien sur initialiser pasdetemps a la valeur de ton choix (= step de ton spinEdit)...

    A+.

  5. #5
    Membre confirmé Avatar de mamou30
    Inscrit en
    Janvier 2007
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 118
    Par défaut
    Initialise ton SpinEdit.min:=0;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure TForm1.SpinEdit1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    if spinedit1.Text='' then spinedit1.Value:=0;
    end;
     
    end.

  6. #6
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Merci à tous deux, je suis satisfait.

    J'ai découvert la propriété Text du composant SpinEdit qui n'apparait pas dans l'inspecteur d'objets mais qui fonctionne bel et bien.

  7. #7
    Candidat au Club
    Femme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Par défaut
    Bonjour

    je déterre ce fil
    il y a encore plus simple, il ne faut pas utiliser SpinEdit.Value qui pose problème dans les conditions qui ont été dites plus haut.

    Perso je fais ceci dans l'évènement OnChange:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TFormModifAction.SpinEdit1Change(Sender: TObject);
    var i,erreur : integer;
    begin
      val(SpinEdit1.text,i,erreur);
      if erreur<>0 then 
    begin
      SpinEdit1.Value:=0;
      exit;  // si erreur quelconque dans le champ texte qui n'est pas convertible, on sort!
    end; 
    SpinEdit1.Value:=i;
     // sinon on utilise la valeur entière qui est dans i
      (...)
    end;
    Voila
    au revoir

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

Discussions similaires

  1. classe d'exception EConvertError
    Par menoulette dans le forum Débuter
    Réponses: 4
    Dernier message: 24/09/2013, 22h28
  2. exception EconvertError avec le message("n'est pas une valeur correct)
    Par menoulette dans le forum Bases de données
    Réponses: 2
    Dernier message: 10/09/2013, 22h55
  3. [XE2]TIdHTTP.Post qui déclenche une exception EConvertError
    Par hohorga dans le forum Composants VCL
    Réponses: 4
    Dernier message: 08/10/2012, 12h15
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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