Fonction utile pour interfacer avec des programmes DOS.
Le code illustre :
- la fonction VarType() pour vérifier le passage du paramètre (particularité VFP, les variables sont créées par défaut avec le type Logique et la valeur .F.)
- la vérification de l'existence d'un dossier ou d'un fichier
- l'appel d'une fonction de l'API Windows à partir de Visual FoxPro
- la fonction IIF()
- l'algorithme positif avec sortie unique en fin de module (mon dada)
Source / Exemple :
FUNCTION c83Address && Version courte (8.3) de l'adresse d'un fichier/dossier EXISTANT
LPARAMETER tcPath
LOCAL lcResult
m.lcResult = Space(0)
- Si le fichier ou le dossier existe
IF Vartype(m.tcPath) == 'C'
m.tcPath = Upper(Alltrim(m.tcPath))
LOCAL llPath
m.llPath = Directory(m.tcPath)
IF NOT m.llPath && ce doit être une adresse de fichier
LOCAL ARRAY laFiles[1]
m.llPath = ADir(laFiles, m.tcPath) = 1 && file() ne fonctionne pas avec les adresses courtes
ENDIF
IF m.llPath
DECLARE INTEGER GetShortPathName IN Win32API;
STRING @lpszLongPath, ;
STRING @lpszShortPath,;
INTEGER cchBuffer
LOCAL lnLength, lcShortName, lnResult
m.lnLength = 260
m.lcShortName = SPACE (m.lnLength)
m.lnResult = GetShortPathName(@m.tcPath, @m.lcShortName, m.lnLength)
m.lcResult = Iif(m.lnResult > 0, ;
LEFT (m.lcShortName, m.lnResult),; && la conversion a réussi
m.tcPath) && la conversion a échoué : l'adresse spécifiée est 8.3
ENDIF
ENDIF
RETURN m.lcResult
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.