Convertir un nom de fichier court en nom de fichier long
Depuis Windows 95, on peut gérer des noms de fichiers longs contenant des espaces, ce qui permet d'avoir des noms de fichiers plus significatifs que lorsqu'on était limité au format 8.3. Pourtant, lors du passage de paramètres aux applications, pour que la gestion soit plus facile, il arrive souvent que Windows envoie les noms de fichiers tronqués, ainsi "Mes Documents" est converti en "MESDOC~1". On s'en rend facilement compte en cliquant, dans l'explorateur, avec le bouton droit sur un fichier long, et en affichant l'onglet "Propriétés", on a une valeur "Nom MS-DOS". Le problème est que, dans une application Win9x, ca ne fait pas très beau d'afficher "C:\MESDOC~1\Web\PAGED~25.HTM", et ce n'est surtout pas très significatif...
Voici donc une fonction qui permet de convertir un nom de fichier court en nom de fichier long. Attention, le fichier doit exister pour que cette fonction renvoie le nom complet , sinon elle renvoie la partie de répertoire existant physiquement...
nom de fichier court vers long
function ShortToLongFileName(const FileName: string): string;
var
SearchRec: TSearchRec;
temp, s: string;
x: integer;
begin
s := ExpandFileName(FileName);
repeat
x := FindFirst(s, faAnyFile, SearchRec);
FindClose(SearchRec);
if x = 0 then
begin
if temp = '' then temp := SearchRec.Name
else temp := SearchRec.Name + '\' + temp;
end;
Delete(s, Pos(ExtractFileName(s), s), Length(ExtractFileName(s)));
if s[Length(s)] = '\' then Delete(s, Length(s), 1);
until s = ExtractFileDir(s);
if pos('\', temp) <> 1 then temp := '\' + temp;
Result := ExtractFileDir(s) + temp;
end;
3 requête(s) SQL executée(s) en 0.001 Secs - Temps total de génération de la page : 0.007 Secs
