cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 12 nov. 2004 à 19:16
Unité Windows... Bien vu :)
cs_clandestino
Messages postés16Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention11 novembre 2004 11 nov. 2004 à 12:27
Sous windows :
getfullpathname et getshortpathname sont les deux apis à utiliser...
Clandestino
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 10 nov. 2004 à 17:21
Je limite toujours les fonctions SH~ dans mes projets. Je préfère les fonctions basiques de Delphi en ASM. Au moins, on sait ce qu'on fait.
Ceci dit, on ne fait pas tout, et on a alors besoin des astuces de MAURICIO. Et c'est plus court... certes ! Merci encore de sa participation :)
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 9 nov. 2004 à 11:20
De rien, toujours à disposition!
Au fait, il semble qu' il ne renvoit que le nom du fichier et pas avec toute l' arborescence:
je vais y jeter un oeil tout à l' heure et je le remettrai comme source!!!
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 8 nov. 2004 à 18:53
super ton code mauricio, je le garde :D tres court et tres utile.
merci
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 8 nov. 2004 à 11:42
Voici 2 fonctions qui vous font la conversion dans les 2 sens (pratique non?).
Il vous faudra mettre ShellAPI dans les uses unit ...
function FICHEIRO_NOME_CURTO(Const NomeComprido : String) : String;
var aTmp: array[0..255] of char;
begin
if GetShortPathName(PChar(NomeComprido),aTmp,Sizeof(aTmp)-1)=0
then Result:= NomeComprido
else Result:=StrPas(aTmp);
end;
function FICHEIRO_NOME_COMPRIDO(Const NomeCurto : String) : String;
var aInfo: TSHFileInfo;
begin
if SHGetFileInfo(PChar(NomeCurto),0,aInfo,Sizeof(aInfo),SHGFI_DISPLAYNAME)<>0
then Result:= String(aInfo.szDisplayName)
else Result:= NomeCurto;
end;
Les fonctions sont de moi mais la source originale non ...
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 6 nov. 2004 à 20:33
Je n'utilise pas Kylix. Mais sinon voilà... ok!
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 6 nov. 2004 à 19:38
OK, le motif est valable.
Seulement, ça peut poser des problèmes de portabilité vers Kylix si l'on remplace des constantes symboliques par leur valeurs. Ou alors, on devrait utiliser les directives de compilation :
{$IFDEF WIN32}$10{$ENDIF}{$IFDEF KYLIX}FILE_ATTRIBUTE_DIRECTORY{$ENDIF}.
Comme ça, tout le monde est content. ;o)
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 6 nov. 2004 à 19:27
Je l'avais enlevé puisque ça vient de FileCtrls.pas
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 5 nov. 2004 à 23:50
Pas mal, pas mal...
Pour ceux qui se demandent à quoi correspond la "valeur magique" $10, eh bien il s'agit de FILE_ATTRIBUTE_DIRECTORY. Ca rend le code plus facilement compréhensible.
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 5 nov. 2004 à 22:31
Super ton MicrosoftDiskOperatingSystemToMicrosoftWindowsNomDeFichier !
12 nov. 2004 à 19:16
11 nov. 2004 à 12:27
getfullpathname et getshortpathname sont les deux apis à utiliser...
Clandestino
10 nov. 2004 à 17:21
Ceci dit, on ne fait pas tout, et on a alors besoin des astuces de MAURICIO. Et c'est plus court... certes ! Merci encore de sa participation :)
9 nov. 2004 à 11:20
Au fait, il semble qu' il ne renvoit que le nom du fichier et pas avec toute l' arborescence:
je vais y jeter un oeil tout à l' heure et je le remettrai comme source!!!
8 nov. 2004 à 18:53
merci
8 nov. 2004 à 11:42
Il vous faudra mettre ShellAPI dans les uses unit ...
function FICHEIRO_NOME_CURTO(Const NomeComprido : String) : String;
var aTmp: array[0..255] of char;
begin
if GetShortPathName(PChar(NomeComprido),aTmp,Sizeof(aTmp)-1)=0
then Result:= NomeComprido
else Result:=StrPas(aTmp);
end;
function FICHEIRO_NOME_COMPRIDO(Const NomeCurto : String) : String;
var aInfo: TSHFileInfo;
begin
if SHGetFileInfo(PChar(NomeCurto),0,aInfo,Sizeof(aInfo),SHGFI_DISPLAYNAME)<>0
then Result:= String(aInfo.szDisplayName)
else Result:= NomeCurto;
end;
Les fonctions sont de moi mais la source originale non ...
6 nov. 2004 à 20:33
6 nov. 2004 à 19:38
Seulement, ça peut poser des problèmes de portabilité vers Kylix si l'on remplace des constantes symboliques par leur valeurs. Ou alors, on devrait utiliser les directives de compilation :
{$IFDEF WIN32}$10{$ENDIF}{$IFDEF KYLIX}FILE_ATTRIBUTE_DIRECTORY{$ENDIF}.
Comme ça, tout le monde est content. ;o)
6 nov. 2004 à 19:27
5 nov. 2004 à 23:50
Pour ceux qui se demandent à quoi correspond la "valeur magique" $10, eh bien il s'agit de FILE_ATTRIBUTE_DIRECTORY. Ca rend le code plus facilement compréhensible.
5 nov. 2004 à 22:31