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

Langage Delphi Discussion :

Probleme de conversion de dates


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 38
    Points : 26
    Points
    26
    Par défaut Probleme de conversion de dates
    hello,

    je suis en train de faire une procedure qui a pour but de stocker une date dans une base mysql.

    C'est a l'utilisateur de l'application d'entrer la date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    datefinale:=formatdatetime('yyyy-mm-dd',strtodate(daterecue));
    et dans datefinale (string) je converti la date tapée par l'utilisateur en format aaaa-mm-jj pour que ca rentre dans ma table...

    Mais ce qui est tres etrange, c'est que quand l'utilisateur tape la date sous ce format là:

    23/06/1996, tout se passe bien...la date est correctement convertie en 1996-06-23

    par contre, quand il tape la date sous le format 1996-06-23, le programme se plante en faisant une erreur Econverterror et me dis que la date 1996-06-23 n'est pas un format valide...

    daterecue est une variable de type string. J'ai tenté le strtodate et le strtodatetime..mais ca fait la meme erreur

    Alors ma question est:
    comment puis je faire pour que quoi que tape l'utilisateur, si la date n'est pas valide (j'exige de l'utilisateur de la taper sous la forme 23/06/1996 mais si celui ci la tape mal je veux juste lui envoyer un message dans un memo lui rappelant de la taper sous la forme 23/06/1996), ca la redemande sous le bon format ???

    Vous me suivez ?? ou alors, si ca existe, de gerer l'entrée de plusieurs formats de date (avant de les tranformer en format aaaa-mm-jj pour la table)

    je me tire les cheveux...
    Merci de votre aide

    Manu

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 93
    Points : 35
    Points
    35
    Par défaut
    Salut,
    utilise un mask, je l'ai pas encore fait mais regarde du coté TCustomMaskEdit, ca devrait regler ton problème.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    merci, mais je ne peux pas utiliser de masque car je récupere la date à partir de ce que tape l'utilisateur dans un logiciel tiers... je n'ai aucun controle sur ce que peux taper l'utilisateur...

    C'est pour ca que je ne sais pas comment faire pour gerer les erreurs si il a tapé qqchose de mauvais...etc

    merci quand meme

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    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 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    il faut se servir des exceptions, justement, grâce à un bloc try-except :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Good := False;
    repeat
     try
      datefinale:=formatdatetime('yyyy-mm-dd',strtodate(daterecue));
      good := true;
     except
      on EConvertError do ShowMessage('Et le format, minus !!!'); 
     end;
    until Good;
    on peut sûrement faire plus élégant...
    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
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Normalement, ton problème est lié aux paramètres locaux : cherche "Currency and date/time formatting variables" dans ton aide Delphi, et plus précisemment les variables globales "DateSeparator", "ShortDateFormat" et "LongDateFormat".
    En effet, tu aurais certainement un comportement différent avec un Windows américain...

    Le but est de sauvegarder leur valeur, les modifier pour les adapter au format que tu souhaites (=> gestion par exception des erreurs), puis de "remettre" l'ancienne valeur pour ne pas perturber les autres fonctions de l'application (=>finally).

    En gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Try
       // Sauvegarde des variable de formatage.
       Try
          // Assignation des nouvelles variables de formatage.
          // Conversion de date.
       Except
          // Erreur : date invalide.
       End;
    Finally
       // Restaurer les variables de formatage initiales.
    End;
    J'espère que ça va te débloquer.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. Probleme de Conversion de Date
    Par restesouple dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/11/2007, 01h59
  2. Probleme de conversion String -> Date avec SimpleDateFormat.parse(String)
    Par jeanlouis_lecodeur dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 02/07/2007, 09h18
  3. Réponses: 2
    Dernier message: 16/02/2007, 21h34
  4. [MySQL] Probleme de conversion de date en format francophone
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 21/11/2006, 11h40
  5. [debutant]probleme de conversion de date
    Par julien31009 dans le forum Langage
    Réponses: 6
    Dernier message: 22/10/2006, 15h56

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