Récupération du nom long d'un fichier à partir FileListBox [Résolu/Fermé]

- - Dernière réponse :  Utilisateur anonyme - 18 mai 2006 à 07:51
Salut à tous

J'ai une fiche avec un drivecombobox, un directorylistbox et un filelistbox. DE plus j'ai 1 edit. Je cherche à récupérer dans les 3 cas (drive, directory, file) le chemin de l'appli ou repertoire sélectionné dans l'édit.

J'ai donc fais ca :

procedure TForm1.FileListBox1Click(Sender: TObject);
begin
Edit1.text:=ExtractFilePath(FileListBox1.Items.Strings[FileListBox1.ItemIndex]);
end;

Bien je vous le donne dans le mille on récupère du vide (un magnifique dégradé de blanc lol).

J'y comprends rien : je vois pas ou ca coince

Merci
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
1651
Date d'inscription
samedi 10 juillet 2004
Dernière intervention
25 juillet 2014
3
Merci
salut,

franky un filelistbox comme son nom l'indique ne contient que le nom du fichier sans le chemin

ce que dit l'aide:

TFileListBox est une boîte liste spécialisée énumérant tous les fichiers d'un répertoire spécifié.

tu ne peux donc pas récupérer le chemin de cette façon


@+

jlen

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de jlen100
Messages postés
1651
Date d'inscription
samedi 10 juillet 2004
Dernière intervention
25 juillet 2014
3
Merci
si tu veux récupérer le répertoire courant utilise getcurrentdir;

var CDir:string;


Cdir:=getcurrentdir;

@+

jlen

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de jlen100
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
3
Merci
Alors,
Monsieur Francky :
  - Le titre de ton message : "Récupération du nom longd'un fichier à partir de FileListBox"
  - Dans le message tu demandes : "récupérer dans les 3 cas (drive, directory, file) le chemin de l'appli ou repertoire sélectionné dans l'édit"

c'est l'un où l'autre

Les deux peut être  

ce qui n'empêche pas, que j'ai quand même fait une boulette
Merci à toi Jlen pour ce rappel (j'avais même pas fait attention au code)

@+
Cirec

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de Cirec
Messages postés
329
Date d'inscription
lundi 30 décembre 2002
Dernière intervention
10 mars 2012
3
Merci
Salut,

dans le cas d'un MultiSelect
MyFile := Format('%s\%s' , [FileListBox.Directory , FileListBox.Items[Index]]);
dans le cas normal
MyFile := Format('%s\%s' , [FileListBox.Directory , FileListBox.ItemIndex]);

dans la clause uses
{$WARNINGS OFF}
FileCtrl,
{$WARNINGS ON}
où juste avant la clause Uses {$WARN UNIT_PLATFORM OFF}, ça evite ce message "L'unité 'FileCtrl' est propre à une plate-forme"
@+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de cs_shining
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
3
Merci
Voici pour toi une foction qui permet de récupérer le Nom Long d'un chemin complet avec Nom de Fichier:

Function ShortToLongFileName(FileName: string): string;
Var
  // avec TWin32FindData on retrouve le nom long à partir du nom court
  FindData: TWin32FindData;
  Search: THandle;
Begin
    Result := '';
    While (True) Do// Boucle infinie
    // elle sera exécuté tant qu'il y a nom de fichier où un répertoire
    // à "convertir"
    Begin
      Search : = Windows.FindFirstFile(PChar(FileName), FindData); // on cherche



      // si le fichier où répertoire est introuvable alors on sort de la boucle
      If Search = INVALID_HANDLE_VALUE Then
        Break;
      // ici on récupère le nom long au quel l'on ajoute le resultat précédant
      // en effet on commence par le nom du fichier puis les nom de repertoires
      Result : = String('\') + FindData.cFileName + Result;
      // ici on récupère le chemin qui va servir pour la recherche suivante
      FileName := ExtractFileDir(FileName);
      Windows.FindClose(Search); // on referme


      If Length(FileName) < = 2 Then
        Break; // si il ne reste plus que le lecteure Ex. C: on sort de la boucle
     End;
    // et à la fin on place le lecteure devant le résultat
    Result := ExtractFileDrive(FileName) + Result;
End ;



Procedure TForm1.Button1Click(Sender: TObject);
Begin
  Label1.Caption : = ShortToLongFileName('E:\Fichie~1\Delphi\Codes-~1\Francky\Fichie~1.txt');
End;

Donne : E:\Fichiers Téléchargés\Delphi\Codes-Sources\Francky\Fichier Test.txt

Mais tu peux aussi varier :

ShortToLongFileName('E:\Fichiers Téléchargés\Delphi\Codes-~1\Francky\Fichie~1.txt');

Voilà
En éspèrant que ça te rendra service














@+
Cirec

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
Salut,

essaye peut être avec ExtractFileName au lieu de ExtractFilePath qui lui extrait le chemin et non le nom

@+
Cirec
Commenter la réponse de Cirec
0
Merci
en utilisant ExtractFileName j'obtiens le nom court :

Si j'ai C:\Mes documents\CV.text j'obtient juste CV.text. Ce que je souhaite c'est obtenir C:\Mes documents\CV.text. C'est pour ca que j'ai utilisé ExtractFilePath qui me donne un edit vide.
Commenter la réponse de Utilisateur anonyme
0
Merci
Merci à vous Jlen et Cirec :

Je vais trouver une autre technique

@+
Commenter la réponse de Utilisateur anonyme
0
Merci
Oui oui tu as raison pour la remarque : le titre correspond pas au message. Je suis un vilain lol.

Bon en fait non mdrrrr : meme pas vrai. En fait je veux récupérer le nom long du fichier. Mais je savais que directement ce n'est pas possible : donc je devais faire une récupération du chemin puis rajouter le nom simple du fichier. Voila tous mon secret lol. DOnc le titre est le but le message la méthodologie : lol.

Oh que je suis de mauvaise fois la : mdrrrrr

Allez A+ et remerci
Commenter la réponse de Utilisateur anonyme
0
Merci
Merci Shining : j'ai appris un nouveau truc grace à toi.

Cirec : merci bcp. Je connaissais une fonction pour récupérer le nom long d'un fichier. Mais la tienne est plus élégante et plus performante.

A+
Commenter la réponse de Utilisateur anonyme

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.