ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

c83Address()- version courte (8.3) d'une adresse de fichier ou de dossier EXISTANT   



L'auteur

FoxInCloud (Th. Nivelet)
France 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 > 05 - API et appels systèmes

c83Address()- version courte (8.3) d'une adresse de fichier ou de dossier EXISTANT
# 0000000021
ajouté le 21/10/2004 10:06:21 et modifié le 21/10/2004
consulté 8832 fois
Niveau débutant

Description
Fonction utile pour
- interfacer avec des programmes DOS
- raccourcir les adresses de fichiers stockées dans une table

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 (dada de l'auteur)

Code source :
************************************************************************
    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
Commentaires
Aucun commentaire enregistré ...

Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3