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.006 Secs