Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Problème avec val(left$(D$,3)) | |
| | Auteur | Message |
---|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Problème avec val(left$(D$,3)) Lun 8 Oct 2012 - 20:03 | |
| Bonsoir à tous, En ce momment, je travaille sur un petit programme où je dois mettre dans un combo certains fichiers d'un répertoire qui commencent par un chiffre, exemples 001fichier.jpg, 095fichier.txt, 475fichier.gnt, etc... Ces fichiers sont mélangés avec d'autres au nom commun. Le programme suivant qui utilise la fonction val(left$(D$,3)) avec file_find_first$ provoque une erreur :Not correct logical expression Error in function Line 11. C'est d'autant plus déconcertant que la chaine A$ commençant par un chiffre en utilisant le même test se retrouve bien dans le combo! - Code:
-
dim A$,D$ combo 42:left 42,150
A$="025acte_photo.jpg" if val(left$(A$,3))>0 then item_add 42,A$
dir_change "c:\mesprog\gen\photos" D$=file_find_first$ print D$ while D$<>"_" if val(left$(D$,3))>0 then item_add 42,D$ D$=file_find_next$ end_while file_find_close
Est-ce normal? Ce problème a-t-il déjà été signalé? Comment pourrais-je contourner le problème? Merci de votre attention, A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Problème avec val(left$(D$,3)) Lun 8 Oct 2012 - 21:01 | |
| Salut Bignono La fonction VAL() d’éclanche une erreur si la chaine de caractères n’est pas numérique ! Donc, il faut tester D’ABORT si c’est NUMERIC ou pas Exemple : - Code:
-
dim a$,b$ a$ = "205abc.xyz" b$ = "1x025k.abc" if val(left$(a$,3)) > 0 then message "Les 3 prémiers caracters de " + a$ + chr$(10) +chr$(13)+"sont numériques" if numeric(left$(b$,3)) > 0 if val(left$(b$,3)) > 0 then message "les 3 prémiers caractères sont numériques" else message "les 3 prémiers caracteres de" + b$ + chr$(10) + chr$(13) +" ne sont pas numeriques" end_if
Voici ton exemple corrigé - Code:
-
dim A$,D$ combo 42:left 42,150
A$="025acte_photo.jpg" if numeric(left$(A$,3)) > 0 if val(left$(A$,3))>0 then item_add 42,A$ end_if
dir_change "c:\mesprog\gen\photos" D$=file_find_first$ print D$ while D$<>"_" if numeric(left$(D$,3)) > 0 if val(left$(D$,3))>0 then item_add 42,D$ end_if D$=file_find_next$ end_while file_find_close
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Problème avec val(left$(D$,3)) Lun 8 Oct 2012 - 21:13 | |
| - Code:
-
dim a$,a a$="1";' si l'on met une lettre çà marche plus a=val(a$) caption 0,a
Heu oui, mais est-ce bien normal ? si le caractère n'est pas numérique, VAL pourrait retourner 0 (mais problème pour a$="0"). Ne faudrait-il pas qu'il retourne -1 ? A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Problème avec val(left$(D$,3)) Lun 8 Oct 2012 - 21:22 | |
| @Jean Claude Si ça retourne -1, que va-t-il retourner pour VAL("-1") ? Ce code est parfaitement correct. - Code:
-
print val("0") print val("5") print val("-1")
Je pense que la fonction VAL() comme telle qu’elle existe est tout à fait logique et c’est au programmeur qu’il prenne soin de tester sa variable string si elle est ou non NUMERIC avant d’utiliser la fonction VAL(). | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Problème avec val(left$(D$,3)) Lun 8 Oct 2012 - 22:02 | |
| Bon, j'étais en entretien avec la nounou qui va remplacer la nounou qui a démissionné, mais j'avais écris ce code qui arrive un peu tard maintenant, mais bon puisqu'il est fait, je le mets ... - Code:
-
Dim A$ : A$="025acte_photo.jpg" list 42 : Ajoute_liste(A$) dir_change "c:\temp"
A$=file_find_first$ while A$<>"_" : Ajoute_liste(A$) : A$=file_find_next$ : end_while file_find_close end
sub Ajoute_liste(temp$) if numeric(left$(temp$,3)) > 0 then if val(left$(temp$,3))>0 then item_add 42,temp$ : display end_sub | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Problème avec val(left$(D$,3)) Lun 8 Oct 2012 - 22:31 | |
| | |
| | | Contenu sponsorisé
| Sujet: Re: Problème avec val(left$(D$,3)) | |
| |
| | | | Problème avec val(left$(D$,3)) | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |