C83address() version courte (8.3) de l'adresse d'un fichier/dossier existant

Contenu du snippet

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
  • Lire l'adresse courte
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

A voir également

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.