Récupérer le chemin d'un fichier quelqu'il soit et où qu'il soit [Résolu]

Signaler
Messages postés
129
Date d'inscription
mercredi 4 février 2004
Statut
Membre
Dernière intervention
25 juillet 2012
-
Messages postés
129
Date d'inscription
mercredi 4 février 2004
Statut
Membre
Dernière intervention
25 juillet 2012
-
J'ai regardé la faq et souvent il revient utilise extractfilepath ça marche.



Bon et bien pour moi nada



Voilà le code que j'utilise sur un bouton d'une form de mon application :



ShowMessage(ExtractFilePath('Fichier.ext'));



Le showmessage ne me renvoie rien.



J'ai essayé extractfiledir, extractrelativepath, expandfilename et son
homologue en unc et rien du tout toujours une chaîne vide.



La seule syntaxe qui fonctionne correctement chez moi c'est : ExtractFilePath(Application.Exename);



Ce que je recherche moi c'est de pouvoir connaître le chemin d'un
fichier qu'il soit exécutable ou non et qu'il soit en local ou sur le
reseau et n'importe où pas uniquement dans le dossier qui contient mon
application.



J'ai winxp et delphi 7

6 réponses

Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
pour recupérer le chemin d'un fichier il faut tout d'abord faire une recherche soit sur le disque soit sur le réseau utilise FileSearch(const Name, DirList: string): string; il faudra parcourir l'ensemble de l'arborescence.
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
salut,
pour retrouver le fichier il n'y a pas d'autre solution que de parcourir l'arborescence En effet il faut que le programme retrouve le fichier et faute de pouvoir lui indiquer le chemin il faudra bien qu'il le trouve lui-même.
poru faire la recherche tu peux t'inspirer de la source de NoNo40:

Utiliser FindFirst en récursif pour scruter les sous-répertoires.
en lui ajoutant un test pour vérfier que ton fichier est présent.
pour ce qui est du temps de traitement tout dépend du nombre de répertoire, du nombre de fichiers et de la position du fichier recherché par rapport à la racine.( le temps de recherche devrait être similaire à celui obtenu avec la fonction "Recherche" de l'exploreur. je te conseille de mettre un message d'avertissement en cas de recherche pour que l'uitilisateur ne croit pas que l'appli est plantée.
bonne prog
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
10
La fonction ExtractFilePath() ne peut renvoyer quelque-chose que si elle sait de quel fichier tu parles !

Dans ton code, le fichier pourrait se trouver n'importe où sur ton disque...



Essaye plutôt :

ExtractFilePath('C:\MonFichier.txt');

là, la fonction te renverra 'C:\'

@+
Bonne Prog'
Nico [www.ni69.new.fr]

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
Messages postés
220
Date d'inscription
lundi 30 octobre 2000
Statut
Membre
Dernière intervention
15 juillet 2013

La fonction ExtractFilePath(name:string):string; retire en partant de la fin tous les caractères à droite du dernier slash.
En fait, il ne regarde pas si c'est un fichier ou non.

Si on fait
ExtractFilePath('coucou, c''est \ une phrase normale\Pour le test.voilà');
ça donne 'coucou, c''est \ une phrase normale\'
ExtractFilename('coucou, c''est \ une phrase normale\Pour le test.voilà');
ça donne 'Pour le test.voilà'
ExtractFileext('coucou, c''est \ une phrase normale\Pour le test.voilà');
ça donne '.voilà',

Ben voilà, j'ai rajouter mon grain de sel...
Messages postés
129
Date d'inscription
mercredi 4 février 2004
Statut
Membre
Dernière intervention
25 juillet 2012
1
Tout d'abord, je tiens à vous dire un grand merci à tous pour l'aide que vous m'avez apporté.



Je vais maintenant vous tenir au courant de ce que je vais faire et vous donner quelques précisions.



En fait j'ai 2 ordinateurs (un PC et un PC PORTABLE) en réseau avec un simple câble croisé.


Le PC possède une application avec une base de données ACCESS et le PC
PORTABLE va contenir mon application qui doit envoyer des données vers
la base du PC.



Le problème est qu'il me faut vérifier que la base existe bien avant de pouvoir l'ouvrir pour y écrire dessus.



Pour le moment j'ai retenu simplement un :



if FileExists('\\PC\repertoire application\base de donnees.mdb') then

je met le datasource avec ce chemin

else

je génère un message d'erreur;



J'ai répondu réponse acceptée car je voudrais créer une fonction ou une
procédure qui utilise FileSearch et qui me permette de cherche un
fichier pour que mon application ne soit pas bloquée si quelqu'un pour
une raison ou une autre change un nom de dossier pour une mise à jour
par exemple.



En gros, je veux pouvoir retrouver mon fichier s'il existe et qu'il se
situe à un autre endroit que celui initial et tant qu'à réaliser une
fonction ou une procédure autant qu'elle serve pour n'importe quel
fichier comme celà je pourrais la réutiliser pour d'autres fichiers
dans mon application.



Voilà ma situation, le problème c'est que je ne sais pas comment m'y
prendre pour parcourir une arborescence. De plus, si je fais une boucle
qui parcours mon arborescence en cherchant mon fichier en local ou sur
le reseau et qui me rencoie vrai ou faux, j'ai l'impression qu'en temps
d'exécution celà risque d'être long ? non ?



Si quelqu'un a une idée ou même une fonction qui existerait déjà dans
delphi je suis preneur. En attendant, encore merci à tous et désolé
pour la réactivité mais beaucoup de boulot et une connexion bas débit
donc ça aide pas.
Messages postés
129
Date d'inscription
mercredi 4 février 2004
Statut
Membre
Dernière intervention
25 juillet 2012
1
Merci beaucoup pour ces précisions qui me seront très utiles et en plus
de la fonction recherche de fichier que je vais faire, je pense que je
donnerais la possibilité de parcourir le disque pour sélectionner le
bon chemin ou le bon nom de fichier comme dans certaines applications.



Merci encore