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

Utilisateur anonyme - 17 mai 2006 à 20:15 - 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
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 17 mai 2006 à 20:40
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

Merci jlen100 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

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

var CDir:string;


Cdir:=getcurrentdir;

@+

jlen

Merci jlen100 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de jlen100
Meilleure réponse
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 17 mai 2006 à 22:12
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

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de Cirec
Meilleure réponse
cs_shining 329 Messages postés lundi 30 décembre 2002Date d'inscription 10 mars 2012 Dernière intervention - 17 mai 2006 à 23:01
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"
@+

Merci cs_shining 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de cs_shining
Meilleure réponse
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 17 mai 2006 à 23:17
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

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de Cirec
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 17 mai 2006 à 20:27
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
Utilisateur anonyme - 17 mai 2006 à 20:33
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
Utilisateur anonyme - 17 mai 2006 à 20:53
0
Merci
Merci à vous Jlen et Cirec :

Je vais trouver une autre technique

@+
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 17 mai 2006 à 22:27
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
Utilisateur anonyme - 18 mai 2006 à 07:51
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.