Utilisateur anonyme
-
17 mai 2006 à 20:15
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).
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 17 mai 2006 à 22:12
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)
cs_shining
Messages postés304Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention10 mars 2012 17 mai 2006 à 23:01
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"
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 17 mai 2006 à 23:17
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
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.
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.