C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Date impossible

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Xav.M
Guest





PostPosted: Sun Jun 13, 2004 10:17 pm    Post subject: Date impossible Reply with quote



Bonjour,
Je recupere une date a partir d'une formulaire, mais comment vérifier si la
date est corect?? car si j'ai par exemple: 31/06/2003 bien sur , car la
suite, ça plante..
j'utilise c++ Builder 6
exemple de mon code:
TDateTime date;
date= "valeur recupé dans le formlaire";

for (i=0;i<42;i++) //affichage des semaines dans la grille
{
StringGrid2->Cells[0][i] = date.FormatString("dd-mmm");
date=date+7;
}

merci ;-)


Back to top
Fabien LE LEZ
Guest





PostPosted: Sun Jun 13, 2004 10:30 pm    Post subject: Re: Date impossible Reply with quote



On Mon, 14 Jun 2004 00:17:51 +0200, "Xav.M" <XavM (AT) dada (DOT) com>:

Quote:
Je recupere une date a partir d'une formulaire, mais comment vérifier si la
date est corect?

mktime()


--
schtroumpf schtroumpf

Back to top
Pierre Maurette
Guest





PostPosted: Mon Jun 14, 2004 7:08 am    Post subject: Re: Date impossible Reply with quote



"Xav.M" <XavM (AT) dada (DOT) com> typa:

Quote:
Bonjour,
Je recupere une date a partir d'une formulaire, mais comment vérifier si la
date est corect?? car si j'ai par exemple: 31/06/2003 bien sur , car la
suite, ça plante..
j'utilise c++ Builder 6
Votre question n'est donc pas posée sur le bon forum.

Je ne connais que des (très intéressants) groupes en anglais. Voir
peut-être:
borland.public.cppbuilder.vcl.components.using
sur le serveur:
newsgroups.borland.com
Quote:
exemple de mon code:
TDateTime date;
date= "valeur recupé dans le formlaire";

for (i=0;i<42;i++) //affichage des semaines dans la grille
{
StringGrid2->Cells[0][i] = date.FormatString("dd-mmm");
date=date+7;
}
Ce que je ferais pour aller au plus vite:

(EditDate est le TEdit de saisie de la date dans le formulaire)

try
{
TDateTime TDT = TDateTime(EditDate->Text);
}
catch (EConvertError &exception)
{
// Traiter l'erreur. En général, retour au formulaire.
ShowMessage("Mauvais format date");
}

Attention, il peut ne pas être évident pour l'utilisateur que son
erreur vient du fait que le mois de juin ne compte que 30 jours.

Mais il y a mieux:
- initialiser à une date valide et tester à chaque frappe (OnChange du
TEdit).
- Utiliser un TMaskEdit (je trouve que ça amène plutôt des
contraintes, mais c'est personnel).
- Utilisez un TDateTimePicker (palette "Win32"). Ça fait riche, c'est
joli et facile mais je ne suis pas absolument certain que ça existe
dans toutes les versions.
--
Pierre

Back to top
Xav.M
Guest





PostPosted: Mon Jun 14, 2004 7:21 am    Post subject: Re: Date impossible Reply with quote

Ok ok, merci... mais le probleme que j'ai là, c'est que je reçois sous la
forme d'une AnsiString... d'où l'erreur avec Mktime():
[C++ Erreur] Unit6.cpp(29): E2034 Impossible de convertir 'AnsiString' en
'tm *'


"Fabien LE LEZ" <gramster (AT) gramster (DOT) com> a écrit dans le message de
news:fblpc09djmmkmtic9ldlg7tn9l5s7qk0uk (AT) 4ax (DOT) com...
Quote:
On Mon, 14 Jun 2004 00:17:51 +0200, "Xav.M" <XavM (AT) dada (DOT) com>:

Je recupere une date a partir d'une formulaire, mais comment vérifier si
la
date est corect?

mktime()


--
schtroumpf schtroumpf



Back to top
Martinez Jerome
Guest





PostPosted: Mon Jun 14, 2004 12:02 pm    Post subject: Re: Date impossible Reply with quote

Xav.M wrote:

Quote:
Ok ok, merci... mais le probleme que j'ai là, c'est que je reçois sous la
forme d'une AnsiString... d'où l'erreur avec Mktime():
[C++ Erreur] Unit6.cpp(29): E2034 Impossible de convertir 'AnsiString' en
'tm *'

Sans vouloir etre mechant, il s'agit de la base du C++ (ou meme Java, ou
meme plein d'autres languages...) la : savoir que les valeurs retournées
par des fonctions sont typées.
A toi de convertir un AnsiString (propriétaire Borland, donc lit la doc
: AnsiString.c_str() permet de retrouver un const char*, c'est peut-etre
plus pratique. atoi(), meme si c'et pas C++, permet d'avoir un entier)
dont on ne sait absolument pas la norme (jour/mois/annee?
mois/jour/année? Voir la documentation de ton systeme d'exploitation
pour connaitre la norme de celui-ci dependant de la localisation sans
doute) en une suite d'entier (pour tm*)


Back to top
Pierre Maurette
Guest





PostPosted: Mon Jun 14, 2004 1:16 pm    Post subject: Re: Date impossible Reply with quote

Pierre Maurette <maurette.pierre (AT) free (DOT) fr> typa:
[...]
Quote:
try
{
TDateTime TDT = TDateTime(EditDate->Text);
}
catch (EConvertError &exception)
{
// Traiter l'erreur. En général, retour au formulaire.
ShowMessage("Mauvais format date");
}
J'oubliais un truc important si vous n'avez pas l'habitude: si vous

testez "normalement" votre programme à partir de l'EDI de C++ Builder
6, vous aurez l'impression que "ça plante", comme vous dites. En
réalité, il vous suffit d'acquiter ("OK") la fenêtre de l'exception du
débogueur et de relancer par F9 ou de mieux de tester hors de l'EDI en
lançant directement l'exe.
Si votre question est uniquement de savoir si la date est valide,
comme vous l'écriviez, faites:
dans le Unit1.h, ou autre nom :
....
private: // Déclarations de l'utilisateur
bool __fastcall IsMyDateValid(AnsiString s);
....

dans le Unit1.c, ou autre nom :
//---------------------------------------------------------------------------
bool __fastcall TForm1::IsMyDateValid(AnsiString s)
{
bool Result = true;
try
{
TDateTime TDT = TDateTime(s);
}
catch (EConvertError &exception)
{
Result = false;
}
return Result;
}
//---------------------------------------------------------------------------

Et pour tester, par exemple dans un gestionnaire d'évènement:
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(IsMyDateValid(Edit3->Text))
{
Edit1->Text = "Date correcte";
}
else
{
Edit1->Text = "Date incorrecte";
}
}
//---------------------------------------------------------------------------
--
Pierre

Back to top
Xav.M
Guest





PostPosted: Mon Jun 14, 2004 5:00 pm    Post subject: Re: Date impossible Reply with quote

C'est bon, j'ai pris le calendrier tout fait, c'est vrai que c'est bien
mieux!!!
encore merci
"Martinez Jerome" <jerome.martinez (AT) aenlever-orangefrance (DOT) com.invalid> a
écrit dans le message de news:cak44i$ru61 (AT) news (DOT) rd.francetelecom.fr...
Quote:
Xav.M wrote:

Ok ok, merci... mais le probleme que j'ai là, c'est que je reçois sous
la
forme d'une AnsiString... d'où l'erreur avec Mktime():
[C++ Erreur] Unit6.cpp(29): E2034 Impossible de convertir 'AnsiString'
en
'tm *'

Sans vouloir etre mechant, il s'agit de la base du C++ (ou meme Java, ou
meme plein d'autres languages...) la : savoir que les valeurs retournées
par des fonctions sont typées.
A toi de convertir un AnsiString (propriétaire Borland, donc lit la doc
: AnsiString.c_str() permet de retrouver un const char*, c'est peut-etre
plus pratique. atoi(), meme si c'et pas C++, permet d'avoir un entier)
dont on ne sait absolument pas la norme (jour/mois/annee?
mois/jour/année? Voir la documentation de ton systeme d'exploitation
pour connaitre la norme de celui-ci dependant de la localisation sans
doute) en une suite d'entier (pour tm*)




Back to top
Fabien LE LEZ
Guest





PostPosted: Mon Jun 14, 2004 6:09 pm    Post subject: Re: Date impossible Reply with quote

On Mon, 14 Jun 2004 19:00:15 +0200, "Xav.M" <XavM (AT) dada (DOT) com>:

Quote:
C'est bon, j'ai pris le calendrier tout fait, c'est vrai que c'est bien
mieux!!!
encore merci
"Martinez Jerome" <jerome.martinez (AT) aenlever-orangefrance (DOT) com.invalid> a
écrit dans le message de news:cak44i$ru61 (AT) news (DOT) rd.francetelecom.fr...

A lire d'urgence[*] :
<http://www.giromini.org/usenet-fr/repondre.html>

[*] "d'urgence", ça veut dire : "Merci de ne pas poster sur Usenet
avant d'avoir lu complètement et sérieusement le document en question"

--
schtroumpf schtroumpf

Back to top
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
 


Powered by phpBB © 2001, 2006 phpBB Group