Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3123 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  StrToDate et TFormatSettings

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

StrToDate et TFormatSettings

n°1160473
Zozol
Posté le 26-07-2005 à 16:03:37  profilanswer
 

J'ai une chaine représentant une date sous la forme jj/mm/aa et je souhaite tester la validité de cette date, y compris sur un système américain(ou musulman ou martien...)
 
Je me suis naïvement dit qu'en utilisant StrToDate(string;FormatSettings:TFormatSettings), j'allais m'en tirer, mais non.
 
Voici un resumé de mon code :  
 

function TSegmentMID.VerifierDate(MaDate:string):boolean;
var  FormatSettings : TFormatSettings;
begin
  try
    GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, formatSettings);
    FormatSettings.DateSeparator:='/';
    FormatSettings.ShortDateFormat :='dd/mm/yy';
    StrToDate(MaDate,FormatSettings);  
    result := true
  except
    On Exception do begin
      result = false
    end;
  end;
end;


 
Des fois, ça marche, des fois, ça marche pas  :(  
Selon l'humeur, il me balance (ou non) que le 26/07/05 est une date invalide.
 
Quelqu'un a une solution?


Message édité par Zozol le 27-07-2005 à 11:53:27
mood
Publicité
Posté le 26-07-2005 à 16:03:37  profilanswer
 

n°1160696
bvtk
Posté le 26-07-2005 à 19:39:10  profilanswer
 

Si je comprends bien tu désir sur le système (quelque soit les le FormatSetting) valider que l'utilisateur entre une date dans le bon format.
 
Dans ce cas moi je ferais comme cela:
 
function VerifierDate(const aDateForTest: string):boolean;
var
  aDateTime: TDateTime;
begin
  Result := True;
  try
    aDateTime := StrToDate(aDateForTest);
  except
    Result := False;
  end;
end;
 
 
 


---------------
Téléchargez mes prorgrammes Freeware.
n°1160758
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-07-2005 à 20:51:34  profilanswer
 

Il y a la fonction TryStrToDate pour éviter de taper soi-même le try/except.
Quand tu dis que c'est "selon l'humeur", tu veux dire qu'en donnant la même date et le même code, un coup ça marche un coup ça marche pas ?
Pour avoir mon propre FormatSettings dans mon code je faisais :
  GetLocaleFormatSettings(GetThreadLocale, FormatSettings);
mais je ne vois pas en quoi le fait de le faire avec LOCALE_SYSTEM_DEFAULT poserait problème.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1161103
Zozol
Posté le 27-07-2005 à 09:44:44  profilanswer
 

Non, je me suis mal expliqué.
Je ne souhaite pas vérifié si une chaine represente une date valide sur le système concerné.
 
Je reçois de l'exterieur une date(sous forme d'une string) et je souhaite vérifier que cette date est bien au format dd/mm/yy. Et ce, mème si le système sur lequel tourne mon programme utilise un autre système de date.
 
donc (quelque soit le système sur lequel le programme tourne), 22/02/05 est corect, mais 29/02/05 est incorect
 
Et pour repondre à antp, effectivement, avec la mème date, il me sortait des resultat different :-/

n°1161274
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-07-2005 à 11:32:32  profilanswer
 

Et "temp" dans ton code c'est quoi ? Une variable globale ? T'as vérifié qu'elle était bonne ? :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1161325
Zozol
Posté le 27-07-2005 à 11:55:35  profilanswer
 

antp a écrit :

Et "temp" dans ton code c'est quoi ? Une variable globale ? T'as vérifié qu'elle était bonne ? :D


C'est pas bien de se moquer  :cry:  
 
Oui, bon, d'accord!! J'avais un peu copier/collé/élagué comme un porc.... Voila... J'ai édité mon message d'origine  :kaola:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  StrToDate et TFormatSettings

 

Sujets relatifs
Plus de sujets relatifs à : StrToDate et TFormatSettings


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)