cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
27 juil. 2005 à 13:50
sorlok
Messages postés3Date d'inscriptionvendredi 21 avril 2006StatutMembreDernière intervention20 mars 2009
-
9 août 2007 à 14:43
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
sorlok
Messages postés3Date d'inscriptionvendredi 21 avril 2006StatutMembreDernière intervention20 mars 2009 9 août 2007 à 14:43
Dépassements de capacités dans tous les sens, ça marche pas du tout
stefdeus
Messages postés3Date d'inscriptionmercredi 12 mars 2003StatutMembreDernière intervention28 novembre 2006 28 nov. 2006 à 14:26
Le problème avec la fonction isdate() c'est qu'elle prend comme bonnes toutes les dates : DD/MM/YYYY MM/DD/YY etc.
Au moins avec cette fonction on restreint vraiment les possibiltés : la date doit être sur 8 au format DDMMYYYY et respecter un certain nombre de conditions...
Merci
Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007 27 sept. 2005 à 13:21
Salut Dragon
Repeter n fois la meme erreur et chronometrer le temps que ça prend n'est pas une bonne idée.
La premiere fois l'erreur va prendre beaucoup de temps a etre generer, les fois suivantes s'est quasi instantané.
Autre chose, c'est byzarre mais chez moi le temps que prend .NET a generer um erreur est de loin plus long que VB.
Faut dire aussi l'object erreur de .NET est trés complet.
cs_dragon
Messages postés2336Date d'inscriptionsamedi 14 juillet 2001StatutMembreDernière intervention 5 mai 20096 24 sept. 2005 à 02:13
pour du VBA tu as access, word ou excel dépendant du cas
pour le VB, c'est VB6.0 qu'il faut utiliser
pour VB.net c'est VB.net lol
en passant, c'est pas le sujet ici. Tu as un forum sur le site pour ça et un engin de recherche pour trouver tes réponses si elles ont déjà été posé
Herbiti
Messages postés3Date d'inscriptionjeudi 22 septembre 2005StatutMembreDernière intervention22 septembre 2005 23 sept. 2005 à 20:01
j'ai une question:
comment fais-je pour lire les apllications VB. Je programme en VB, mais par l'intermédiaire de access.
Je transpute le code dans access, mais la plupart du temps, il me dit que c'est une belle erreur. Que dois-je faire??
Merci
cs_dragon
Messages postés2336Date d'inscriptionsamedi 14 juillet 2001StatutMembreDernière intervention 5 mai 20096 23 sept. 2005 à 12:43
ça dépend, en vb6.0 oui ça prend beaucoup de processus, en .net c'est un peu moins pire, mais ça se compte vraiment en dimillième de secondes.
sur plus de 10000 fois, le temps est identique. Sauf si tu dois le faire encore plus fréquent que ça, là tu vas finir par avec un tick de différence en utilisant la gestion d'erreur.
Mais bon rendu là, ça fait tu réellement une différence ??? dèsfois mieux vaut perdre ça que d'avoir un bug ou une page de code qui va quand même faloir à être parcourru et qui risque au final d'être aussi long avec toutes les divisions et surtout toutes les comparaisons à faire pour le mois
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 23 sept. 2005 à 09:56
Fort heureusement les logiciels ne sont pas écrits ainsi sinon on aurait constamment le sablier sur l'écran, la gestion d'erreurs consomme énormément de cycles processeurs.
cs_dragon
Messages postés2336Date d'inscriptionsamedi 14 juillet 2001StatutMembreDernière intervention 5 mai 20096 23 sept. 2005 à 03:34
c'est quand même moins compliquer d,utiliser la fonction isdate et mettre ta date dans un champ date et si ça plante, ben elle est pas valide. Faut juste trapper l'erreur
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 23 sept. 2005 à 01:10
bien entendu que le 29 février 2000 a existé.
Pour être bissextile, une année doit avoir son millésime divisible par 4. Toutefois, celles dont le millésime est divisible par 100 ne sont bissextiles que si leur millésime est aussi divisible par 400 : 2000 sera bissextile, 1700, 1800 et 1900 ne l'ont pas été.
Suffit d'ouvrir le Larousse.
Herbiti
Messages postés3Date d'inscriptionjeudi 22 septembre 2005StatutMembreDernière intervention22 septembre 2005 22 sept. 2005 à 22:06
le 29 février 2000 n'existe pas?? je ne crois pas que ce soit vrai.
sev622
Messages postés62Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention12 septembre 2005 17 août 2005 à 18:48
merci pour ta remarque sur le type à renvoyer...on l'adapte comme on veut.
Le paramètre d'entrée est un integer parce que je demande à l'utilisateur d'entrer la date sous le format jjmmaaaa et non jj/mm/aaaa mais là aussi, il est facile d'adapter à ce que l'on veut
Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007 17 août 2005 à 16:08
Je suis d'accord avec Benouille en ce qui concerne les erreurs.
Forcer une erreur pour tester un resultat n'est pas une bonne solution de programmation.
En plus, une erreur prend du temps a se generer surtout en .Net avec le try catch.
Mais en parlant de temps, la fonction Isdate utilisée en .Net prend aussi beaucoup de temps a s'executer la premiere fois.
J'ai déjá demander dans le forum pourquoi mais sans reponse.
Peut-etre qu'un de vous sait.
Alors se fabriquer une fonction soi-meme n'est peut-etre pas une mauvaise idée.
Sev622 au sujet de ta fonction:
Tu devrais plutot rendre true ou false soit boolean plutot qu'un integer 0 ou 1
du genre
Function verifdate(ByVal datesaisie As Integer) AS BOOLEAN
' ----------
ton parametre d'entrée est du tipe Integer, mais si je veux tester: 12/12/05 ça ne marchera pas. Je pense que le parametre devrait etre en string.
Pendant que je parle de integer, oui c'est vrai qu'il va aussi loin que le long en VB.
Benouille, peux-tu expliquer un peu mieux cette difference entre int32 et integer. Lequel vaut mieux utiliser et dans quel cas?
Merci d'avance.
cs_dragon
Messages postés2336Date d'inscriptionsamedi 14 juillet 2001StatutMembreDernière intervention 5 mai 20096 1 août 2005 à 15:32
en vb6.0 un type integer est l'équivalent de int16 en .net
et en 6.0 le type long est équivalent a un int32 ou un integer en .net
pour le test d,une erreur, je sasi très bien, j'ai l'ai programmer en 6.0 a cause que la source est sous 6.0. Et jai bien indiquer "au pire". Si tu es en C, la focntione isDate existe pas, donc on se débrouille autrement et la validation a partir d'une erreur est peut-être pas propre, mais c,est vite fait lol
cs_Benouille
Messages postés215Date d'inscriptionjeudi 24 octobre 2002StatutMembreDernière intervention 7 septembre 2007 1 août 2005 à 14:50
en fait un integer en vb.net n'est pas tout a fait un long, c'est un int32 mais surtout c'est un objet.
int16, int32 et int64 comme int et long sont des types simples, integer est un objet int32.
enfin si je dis pas de conneries ;)
vb nouille
cs_Benouille
Messages postés215Date d'inscriptionjeudi 24 octobre 2002StatutMembreDernière intervention 7 septembre 2007 1 août 2005 à 14:47
dragon en vb net ça donne plutot :
public function isDate(jour as string) as boolean
try
dim verification as date = cdate (jour)
return true
catch
return false
end try
end function
mais utiliser une erreur comme solution de programation, c'est pas bien !
enfin y parait ;)
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 27 juil. 2005 à 21:56
A savoir : un integer en vb.net est un long en vb6.
Mais il est vrai que les fonctions cdate() et isdate() t'auraient surement facilité la tâche.
cs_dragon
Messages postés2336Date d'inscriptionsamedi 14 juillet 2001StatutMembreDernière intervention 5 mai 20096 27 juil. 2005 à 20:32
au pire qui fonctionne toujours et dans tout les languages (peut-être adapter avec un try/catch)
public function isDate(jour as string) as boolean
on error goto erreur
dim verification as date
verification = jour
return true
erreur:
return false
end function
sev622
Messages postés62Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention12 septembre 2005 27 juil. 2005 à 18:37
oups ! j'utilise cette fonction pour asp, je ne savais pas qu'il y en avait une toute faite !
concernant le type integer, je n'ai pas eu de dépassement de capacité...
et pour la boucle des 400ans, je corrigerai ça plus tard.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 27 juil. 2005 à 16:05
Ouais, c'est pour cà que je doute de l'efficacité de cette source, il vaux mieux utiliser la fonction standard de VB !
DarK Sidious
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200825 27 juil. 2005 à 15:01
Yep, y'a plein de dépassement de capacité car il ne faut pas utiliser des types Integer !
Autre petit point nécessitant une légère modification d'algo :
Le 29 février 2000 n'existe pas.
Tous les 400 ans, le 29 février est invalidé. Ce fut le cas en 1600, 2000 et ce sera le cas en 2400, 2800, ...
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 27 juil. 2005 à 13:50
Et tu connais la fonction IsDate de VB ?
Sinon, comment compte tu passer un interger au format jjmmaaaa sachant qu'un integer est limité à 32565 ?
9 août 2007 à 14:43
28 nov. 2006 à 14:26
Au moins avec cette fonction on restreint vraiment les possibiltés : la date doit être sur 8 au format DDMMYYYY et respecter un certain nombre de conditions...
Merci
27 sept. 2005 à 13:21
Repeter n fois la meme erreur et chronometrer le temps que ça prend n'est pas une bonne idée.
La premiere fois l'erreur va prendre beaucoup de temps a etre generer, les fois suivantes s'est quasi instantané.
Autre chose, c'est byzarre mais chez moi le temps que prend .NET a generer um erreur est de loin plus long que VB.
Faut dire aussi l'object erreur de .NET est trés complet.
24 sept. 2005 à 02:13
pour le VB, c'est VB6.0 qu'il faut utiliser
pour VB.net c'est VB.net lol
en passant, c'est pas le sujet ici. Tu as un forum sur le site pour ça et un engin de recherche pour trouver tes réponses si elles ont déjà été posé
23 sept. 2005 à 20:01
comment fais-je pour lire les apllications VB. Je programme en VB, mais par l'intermédiaire de access.
Je transpute le code dans access, mais la plupart du temps, il me dit que c'est une belle erreur. Que dois-je faire??
Merci
23 sept. 2005 à 12:43
sur plus de 10000 fois, le temps est identique. Sauf si tu dois le faire encore plus fréquent que ça, là tu vas finir par avec un tick de différence en utilisant la gestion d'erreur.
Mais bon rendu là, ça fait tu réellement une différence ??? dèsfois mieux vaut perdre ça que d'avoir un bug ou une page de code qui va quand même faloir à être parcourru et qui risque au final d'être aussi long avec toutes les divisions et surtout toutes les comparaisons à faire pour le mois
23 sept. 2005 à 09:56
23 sept. 2005 à 03:34
23 sept. 2005 à 01:10
Pour être bissextile, une année doit avoir son millésime divisible par 4. Toutefois, celles dont le millésime est divisible par 100 ne sont bissextiles que si leur millésime est aussi divisible par 400 : 2000 sera bissextile, 1700, 1800 et 1900 ne l'ont pas été.
Suffit d'ouvrir le Larousse.
22 sept. 2005 à 22:06
17 août 2005 à 18:48
Le paramètre d'entrée est un integer parce que je demande à l'utilisateur d'entrer la date sous le format jjmmaaaa et non jj/mm/aaaa mais là aussi, il est facile d'adapter à ce que l'on veut
17 août 2005 à 16:08
Forcer une erreur pour tester un resultat n'est pas une bonne solution de programmation.
En plus, une erreur prend du temps a se generer surtout en .Net avec le try catch.
Mais en parlant de temps, la fonction Isdate utilisée en .Net prend aussi beaucoup de temps a s'executer la premiere fois.
J'ai déjá demander dans le forum pourquoi mais sans reponse.
Peut-etre qu'un de vous sait.
Alors se fabriquer une fonction soi-meme n'est peut-etre pas une mauvaise idée.
Sev622 au sujet de ta fonction:
Tu devrais plutot rendre true ou false soit boolean plutot qu'un integer 0 ou 1
du genre
Function verifdate(ByVal datesaisie As Integer) AS BOOLEAN
' ----------
ton parametre d'entrée est du tipe Integer, mais si je veux tester: 12/12/05 ça ne marchera pas. Je pense que le parametre devrait etre en string.
Pendant que je parle de integer, oui c'est vrai qu'il va aussi loin que le long en VB.
Benouille, peux-tu expliquer un peu mieux cette difference entre int32 et integer. Lequel vaut mieux utiliser et dans quel cas?
Merci d'avance.
1 août 2005 à 15:32
et en 6.0 le type long est équivalent a un int32 ou un integer en .net
pour le test d,une erreur, je sasi très bien, j'ai l'ai programmer en 6.0 a cause que la source est sous 6.0. Et jai bien indiquer "au pire". Si tu es en C, la focntione isDate existe pas, donc on se débrouille autrement et la validation a partir d'une erreur est peut-être pas propre, mais c,est vite fait lol
1 août 2005 à 14:50
int16, int32 et int64 comme int et long sont des types simples, integer est un objet int32.
enfin si je dis pas de conneries ;)
vb nouille
1 août 2005 à 14:47
public function isDate(jour as string) as boolean
try
dim verification as date = cdate (jour)
return true
catch
return false
end try
end function
mais utiliser une erreur comme solution de programation, c'est pas bien !
enfin y parait ;)
27 juil. 2005 à 21:56
Mais il est vrai que les fonctions cdate() et isdate() t'auraient surement facilité la tâche.
27 juil. 2005 à 20:32
public function isDate(jour as string) as boolean
on error goto erreur
dim verification as date
verification = jour
return true
erreur:
return false
end function
27 juil. 2005 à 18:37
concernant le type integer, je n'ai pas eu de dépassement de capacité...
et pour la boucle des 400ans, je corrigerai ça plus tard.
27 juil. 2005 à 16:05
DarK Sidious
27 juil. 2005 à 15:01
Autre petit point nécessitant une légère modification d'algo :
Le 29 février 2000 n'existe pas.
Tous les 400 ans, le 29 février est invalidé. Ce fut le cas en 1600, 2000 et ce sera le cas en 2400, 2800, ...
27 juil. 2005 à 13:50
Sinon, comment compte tu passer un interger au format jjmmaaaa sachant qu'un integer est limité à 32565 ?
DarK Sidious