StringField est une fonction très intéressante, cependant, il est dommage que l'affectation des indices commence à 1 alors que le même type de fonction dans d'autres langages commence souvent à 0 ce qui est parfois utile.
Dans ma petite pendulette, je met le jour en lettres en utilisant la très classique fonction DayOfWeek.
StringField permet de faire l'affectation rapide, sauf que dimanche = 0 et StringField commence à 1
J'ai donc fait une bidouille (moche) , c'est à dire mettre Dimanche en dernière position et mettre un if pour réaffecter 0 au 7 ieme élément (je m'explique sans doute mal)
Code : Tout sélectionner
JourSem = DayOfWeek(Date()) : If JourSem = 0 : JourSem = 7 : EndIf
DateJour$ = StringField("Lundi , Mardi , Mercredi , Jeudi , Vendredi , Samedi, Dimanche", JourSem, ",") +
Day(Date()) +
StringField(" Janvier , Février , Mars , Avril , Mai , Juin , Juillet , Août , Septembre , Octobre , Novembre , Décembre ", Month(Date()), ",") +
Year(Date())
Debug "Date du jour: " + DateJour$
J'avais aussi fait avant, ceci:
Code : Tout sélectionner
Global Dim JourTXT$( 7)
Global Dim MoisTXT$(12)
DataSection
JourSemaine: : Data.s "Dimanche ", "Lundi ", "Mardi ", "Mercredi ", "Jeudi ", "Vendredi ", "Samedi"
Mois: : Data.s " Janvier ", " Février ", " Mars ", " Avril ", " Mai ", " Juin ", " Juillet ", " Août ", " Septembre ", " Octobre " , " Novembre ", " Décembre "
EndDataSection
Restore JourSemaine : For i = 0 To 6 : Read.s JourTXT$(i) : Next i
Restore Mois : For i = 1 To 12 : Read.s MoisTXT$(i) : Next i
Il y a aussi la façon old school
Code : Tout sélectionner
JourTXT(0) = "Dimanche"
JourTXT(1) = "Lundi"
etc
Dans certains langages, comme Perl, on peut faire ceci
Code : Tout sélectionner
my @Jour = ( "Dimanche", "Lundi", "Mardi", ... )
Code : Tout sélectionner
my @Jour = ( "", "Lundi", "Mardi", ... )
Code : Tout sélectionner
JourTxt$() = ("Dimanche", "Lundi", ...)
Avoir une syntaxe de ce type serait super, mais c'est peut-être beaucoup à programmer ?
D'où ma suggestion: ajouter un paramètre optionnel à StringField pour lui indiquer de commencer à 0 et non pas 1
Resultat$ = StringField(Chaine$, Index, Delimiteur$)
Donnerait quelque-chose comme ça:
Resultat$ = StringField(Chaine$, Index, Delimiteur$ [, 0])
En mettant le dernier paramètre comme optionnel, on assure la compatibilité ascendante.
Cela dit, je ne sais pas si c'est facile à réaliser ou très complexe pour éventuellement peu de demandes. (j'ai vu pas mal de sources où il faut bidouiller pour utiliser l'indice 0)