| j'ai un probléme avec la cde left$(s,n) | |
|
|
Auteur | Message |
---|
RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: j'ai un probléme avec la cde left$(s,n) Mer 31 Aoû 2016 - 18:51 | |
| bonjour a tous c'est dit dans le titre. dans la doc ,il est dit : retourne les N premiers caractères du string$. voila ce qui coince je rentre une date commençant par 05xxxx sous forme chiffrée sans espace. une fois tranformée en xx/xx/xx avec un 0 (zéro) en tête la date est tres fausse alors que 14xxxx, le résultat est bon que faire pour résoudre ce problème? voici mon exemple - Code:
-
dim dat : dat=050816 :' 05 aout 16 ' dim dat : dat=150816 :' 15 aout 16 dim a$ : a$=str$(dat) dim b$ dim c$ dim d$ dim dat$
b$=left$(a$,2) c$=mid$(a$,3,2) d$=right$(a$,2)
print b$ :' pour verif print c$ :' pour verif print d$ :' pour verif
dat$=b$+"/"+c$+"/"+d$ :' pour verif print dat$
' grid 5 ' grid_write 5,1,1,dat$ :' c'est là que je me suis aperçu du problème avec un zéro en tête
| |
|
| |
Pedro
Nombre de messages : 1595 Date d'inscription : 19/01/2014
| Sujet: Problème de date. Mer 31 Aoû 2016 - 20:11 | |
| Bonsoir.
Tu écris ceci:
dim dat : dat=050816 dim a$ : a$=str$(dat)
Str$() efface le '0' placé en tête du nombre.
Tu dois donc ajouter, après a$=str$(dat):
if len(a$)=5 then a$="0"+a$ | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: j'ai un probléme avec la cde left$(s,n) Jeu 1 Sep 2016 - 7:30 | |
| bonjour a tous les 2 ! Ce n'est pas STR$() qui supprime le '0' ! Tu charge la date au début de ton programme dans une variable numérique 'dat'. Et c'est cette variable qui ne garde pas le '0' ! Il suffit donc d'inscrire ta date dans une variable alphanumérique 'dat$'... De plus tu peux alléger ton code de la manière suivante : - Code:
-
dim dat$ : dat$="050816" :' 05 aout 16
MESSAGE dat$
dim b$ , c$ , d$
b$=left$(dat$,2) c$=mid$(dat$,3,2) d$=right$(dat$,2)
MESSAGE "jour : "+b$+CHR$(13)+"mois : "+c$+CHR$(13)+"année : "+d$ : ' pour verif Si tu souhaite garder ton code tel quel alors tu dois ajouter une condition pour tester le nombre de caractères dans ta chaîne. Pour moi c'est se compliquer la vie inutilement mais bon chacun ses goûts ! - Code:
-
dim dat : dat=050816 :' 05 aout 16 ' dim dat : dat=150816 :' 15 aout 16
dim a$ : a$=str$(dat)
IF LEN(a$)=5 THEN a$="0"+a$
dim b$ dim c$ dim d$ dim dat$
b$=left$(a$,2) c$=mid$(a$,3,2) d$=right$(a$,2)
print b$ :' pour verif print c$ :' pour verif print d$ :' pour verif
dat$=b$+"/"+c$+"/"+d$ :' pour verif print dat$
' grid 5 ' grid_write 5,1,1,dat$ :' c'est là que je me suis aperçu du problème avec un zéro en tête J'en profite aussi pour rappeler les variables existantes dans Panoramic : Il y a 3 types de variables:
Réel, Entier (le nom est suivi par %), String (le nom est suivi par $)
a% est un entier (a% = 14) b$ est un string (b$ = "Salut") d est réel (d=12.8953)Bonne journée à tous ! | |
|
| |
RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: Re: j'ai un probléme avec la cde left$(s,n) Jeu 1 Sep 2016 - 18:53 | |
| bonjour a tous @ minigug et pedro le petit code que j'ai posté a été pour moi une interrogation. cette question était donc pourquoi le zero de tête disparaissait. comme cela n'était pas dit dans la doc , je me posais cette question. mais qui donc supprime ce zero. - pedro pense que c'est str$() qui le supprime - minibug dit que c'est la variable dat( donc numerique) vous avez surement raison tous les deux. j'avais bien essayé un '0'+a$ mais le résultat n'était pas bon . et pour finir ,je peux mettre le sujet comme résolu. merci a vous
| |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 4 Sep 2016 - 13:18 | |
| essai ceci : - Code:
-
dim v v = 012.23 print v
end Tu verras que str$(v) n' y est pour rien dans la suppression du 0. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: j'ai un probléme avec la cde left$(s,n) Dim 4 Sep 2016 - 14:08 | |
| Une variable numérique de type entier ou réel supprime automatiquement tous les zéros non significatifs que ce soit au début ou à la fin après le point décimal. Exemples : v = 0123 donne 123 v = 000123,456000 donne 123.456 | |
|
| |
RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: Re: j'ai un probléme avec la cde left$(s,n) Lun 5 Sep 2016 - 18:56 | |
| bonjour a tous merci papydall pour cette explication. - je ne savais pas que ce zéro était systématiquement oté de la variable numérique. - maintenant ," je sais". j'ai donc employé la méthode minibug "dat$=0xxxxx" et bien sur cela fonctionne très bien. ce sujet est donc résolu.
| |
|
| |
Contenu sponsorisé
| Sujet: Re: j'ai un probléme avec la cde left$(s,n) | |
| |
|
| |
| j'ai un probléme avec la cde left$(s,n) | |
|