 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Xav.M Guest
|
Posted: Sun Jun 13, 2004 10:17 pm Post subject: Date impossible |
|
|
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
|
Posted: Sun Jun 13, 2004 10:30 pm Post subject: Re: Date impossible |
|
|
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
|
Posted: Mon Jun 14, 2004 7:08 am Post subject: Re: Date impossible |
|
|
"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
|
Posted: Mon Jun 14, 2004 7:21 am Post subject: Re: Date impossible |
|
|
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
|
Posted: Mon Jun 14, 2004 12:02 pm Post subject: Re: Date impossible |
|
|
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
|
Posted: Mon Jun 14, 2004 1:16 pm Post subject: Re: Date impossible |
|
|
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
|
Posted: Mon Jun 14, 2004 5:00 pm Post subject: Re: Date impossible |
|
|
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
|
Posted: Mon Jun 14, 2004 6:09 pm Post subject: Re: Date impossible |
|
|
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 |
|
 |
Powered by phpBB © 2001, 2006 phpBB Group
|