L'auteur
FoxInCloud (Th. Nivelet) France Membre Simple # 0000000014 enregistré le 13/10/2004
http://www.foxincloud.com/ Nivelet Thierry 75016 Paris de la société Abaque Fiche personnelle
Note des membres
pas de note
|
Contributions > 01 - PRG : Programmation > Conversions
cVFPName() Nom valide pour VFP, avec longueur limitée si nécessaire
# 0000000023
ajouté le 21/10/2004 10:16:25 et modifié le 30/03/2005
consulté 9508 fois
Niveau
débutant
|
Description |
Crée un nom respectant les règles de nomination de VFP.
Peut servir à nommer tout élément VFP : - champ - variable - procédure - etc.
cVFPName_Test() illustre le comportement de cVFPName() |
Code source : |
******************************************************************************************
FUNCTION cVFPName && Nom valide pour VFP, avec longueur limitée si nécessaire
LPARAMETERS ;
tcVFPName, ; && Nom VFP à valider
tnLength && [len(tcVFPName)] Longueur maximale du nom (par ex. 10 pour un nom de champ de table libre)
LOCAL lcResult
m.lcResult = space(0)
IF Vartype(m.tcVFPName) = 'C' ;
AND ! Empty(m.tcVFPName)
* Remove accents
LOCAL lcVFPName
m.lcVFPName = cEuroANSI(alltrim (m.tcVFPName))
* Start with underscore if first is a digit
m.lcVFPName = Iif(IsDigit(m.lcVFPName), UNDERSCORE, Space(0)) + m.lcVFPName
* Turn characters neither digit or letter to underscore
LOCAL lnCar, lcCar
FOR m.lnCar = 1 TO Len(m.lcVFPName)
m.lcCar = Substrc(m.lcVFPName, m.lnCar, 1)
m.lcCar = Iif(isDigit(m.lcCar) or IsAlpha(m.lcCar), ;
m.lcCar, UNDERSCORE)
m.lcResult = m.lcResult + Upper(m.lcCar)
ENDFOR
* Remove duplicate underscores
m.lcResult = cRepCharDel (m.lcResult, UNDERSCORE)
m.lcResult = Iif(m.lcResult==UNDERSCORE, Space(0), m.lcResult)
* Trim right is required
IF Vartype(m.tnLength) = 'N' ;
AND m.tnLength > 0
m.lcResult = Leftc(m.lcResult, m.tnLength)
ENDIF
ENDIF
RETURN m.lcResult
* -----------------------------------------------------------------
PROCEDURE cVFPName_Test
? Sys(16)
? cVFPName ('%cartable/poiré') == '_CARTABLE_POIRE'
? cVFPName ('2cartable.poiré') == '_2CARTABLE_POIRE'
? cVFPName ('2cartable.:poiré') == '_2CARTABLE_POIRE'
? cVFPName ('2cartable.:poiré', 9) == Leftc('_2CARTABLE_POIRE', 9)
? cVFPName ('150') == '_150'
|
Commentaires |
Aucun commentaire enregistré ...
|