I. Présentation ♪▲
Produit : 4D v11 SQL · Plateforme : Windows
Sous Windows, il est possible de mapper des lecteurs réseaux en lecteurs logiques (E:, F:, H:, etc.).
Le code 4D ci-dessous propose un exemple pour retourner une liste des lecteurs réseau courants.
Nous utilisons deux tableaux qui recevront les résultats.
Le tableau tt_LecteurUNC stocke les lettres des lecteurs.
Le tableau tt_CheminUNC stocke les chemins UNC correspondants.
C_TEXTE
(
flux_sortie;
flux_entree;
flux_erreur;
$separateur
;
$CRLF
;
$Fini
;
$continuer
;
$tmpTestCaractere
)
C_ENTIER LONG
(
$PremierOK
;
$PremierNL
;
$DernierePosition
;
$tmpPositionTrouvee
;
$tmpLongueur
;
$tmpLongeurTrouvee
)
C_ENTIER LONG
(
$tmpLongueurUNC
;
$DernierCaractereTrouve
;
$compteur
)
TABLEAU TEXTE
(
tt_TrouvesUNC;
0
)
TABLEAU TEXTE
(
tt_LecteurUNC;
0
)
TABLEAU TEXTE
(
tt_CheminUNC;
0
)
$separateur
:=
"-------------------------------------------------------------------------------"
flux_sortie:=
""
flux_entree:=
""
flux_erreur:=
""
$CRLF
:=
Caractere
(
Retour chariot
)+
Caractere
(
Retour à la ligne
)
LANCER PROCESS EXTERNE
(
"NET USE"
;
flux_entree;
flux_sortie;
flux_erreur)
$Fini
:=
""
$DernierePosition
:=
1
$numTrouve
:=
0
` chaque ligne commençant par OK est mise dans le tableau
Repeter
$PremierOK
:=
Position
(
"OK"
;
flux_sortie;
$DernierePosition
)
$PremierNL
:=
Position
(
$CRLF
;
flux_sortie;
$PremierOK
)
Si
(
$PremierOK
>
$DernierePosition
)
$DernierePosition
:=
$PremierNL
AJOUTER A TABLEAU
(
tt_TrouvesUNC;
Sous chaine
(
flux_sortie;
$PremierOK
;(
$PremierNL
-
$PremierOK
)))
$numTrouve
:=
$numTrouve
+
1
Sinon
$Fini
:=
"oui"
Fin de si
Jusque
(
$Fini
=
"oui"
)
` retire tout ce qui se trouve avant la lettre du lecteur réseau
Boucle
(
$compteur
;
1
;
Taille tableau
(
tt_TrouvesUNC))
$tmpLongueur
:=
Longueur
(
tt_TrouvesUNC{$compteur
})-
13
tt_TrouvesUNC{$compteur
}:=
Sous chaine
(
tt_TrouvesUNC{$compteur
};
14
;
$tmpLongueur
)
Fin de boucle
` enlève la chaine "Microsoft Windows Network" des elements du tableau
Boucle
(
$compteur
;
1
;
Taille tableau
(
tt_TrouvesUNC))
$tmpPositionTrouvee
:=
Position
(
"RÇseau Microsoft Windows"
;
tt_TrouvesUNC{$compteur
};
1
;
$tmpLongeurTrouvee
)
Si
(
$tmpPositionTrouvee
#
0
)
tt_TrouvesUNC{$compteur
}:=
Sous chaine
(
tt_TrouvesUNC{$compteur
};
1
;
$tmpPositionTrouvee
-
1
)
Fin de si
Fin de boucle
` séparer en deux tableaux : lettres des lecteurs et chemin UNC
Boucle
(
$compteur
;
1
;
Taille tableau
(
tt_TrouvesUNC))
AJOUTER A TABLEAU
(
tt_LecteurUNC;
Sous chaine
(
tt_TrouvesUNC{$compteur
};
1
;
2
))
AJOUTER A TABLEAU
(
tt_CheminUNC;
Sous chaine
(
tt_TrouvesUNC{$compteur
};
11
))
Fin de boucle
` enlève l'espace blanc des éléments de tt_CheminUNC
Boucle
(
$compteur
;
1
;
Taille tableau
(
tt_CheminUNC))
$continuer
:=
"oui"
Repeter
$tmpLongueurUNC
:=
Longueur
(
tt_CheminUNC{$compteur
})
$DernierCaractereTrouve
:=
Position
(
" "
;
tt_CheminUNC{$compteur
};
$tmpLongueurUNC
)
$tmpTestCaractere
:=
Sous chaine
(
tt_CheminUNC{$compteur
};
$DernierCaractereTrouve
)
Si
(
$tmpTestCaractere
=
" "
)
tt_CheminUNC{$compteur
}:=
Sous chaine
(
tt_CheminUNC{$compteur
};
1
;
$DernierCaractereTrouve
-
1
)
Sinon
$continuer
:=
"non"
Fin de si
Jusque
(
$continuer
=
"non"
)
Fin de boucle
Résultat dans le débogueur de 4D (adresse IP du lecteur Y: fictive) :