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

informatixo 133 Messages postés mercredi 4 février 2004Date d'inscription 25 juillet 2012 Dernière intervention - 29 août 2005 à 18:22 - Dernière réponse : informatixo 133 Messages postés mercredi 4 février 2004Date d'inscription 25 juillet 2012 Dernière intervention
- 31 août 2005 à 08:20
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
Afficher la suite 

7 réponses

Répondre au sujet
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 29 août 2005 à 20:37
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jlen100
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 30 août 2005 à 18:19
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jlen100
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 29 août 2005 à 18:55
0
Utile
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 !
Commenter la réponse de ni69
cs_barbichette 247 Messages postés lundi 30 octobre 2000Date d'inscription 15 juillet 2013 Dernière intervention - 30 août 2005 à 11:05
0
Utile
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...
Commenter la réponse de cs_barbichette
informatixo 133 Messages postés mercredi 4 février 2004Date d'inscription 25 juillet 2012 Dernière intervention - 30 août 2005 à 11:25
0
Utile
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.
Commenter la réponse de informatixo
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 30 août 2005 à 18:46
Commenter la réponse de jlen100
informatixo 133 Messages postés mercredi 4 février 2004Date d'inscription 25 juillet 2012 Dernière intervention - 31 août 2005 à 08:20
0
Utile
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
Commenter la réponse de informatixo

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.