Fonctions path_win_to_msdos et path_msdos_to_win meme pour les fichiers/repertoires en reseau!!!

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 317 fois - Téléchargée 33 fois

Contenu du snippet

2 fonctions qui vous permettent de convertir des chemins (de fichiers ou de repertoires) du format MS-DOS (8 caracteres max. pour le nom et 3 pour l' extension) vers le format win32 et vis versa!
Fonctionne même avec les unités reseau.
Cette fois, le code est bien de moi même si je me suis basé sur diverses exemples ...

Source / Exemple :


function PATH_WIN_TO_MSDOS(PathComprido : String) : String;
var aTmp: array[0..MAX_PATH] of char;    // MAX_PATH = 260 ...
begin
  if GetShortPathName(PChar(PathComprido),aTmp,Sizeof(aTmp)-1)=0
  then Result:= ''
  else Result:=StrPas(aTmp);
end;

function PATH_MSDOS_TO_WIN(PathCurto : String) : String;
var aInfo: TSHFileInfo;
    FileDrive: ShortString;
begin
  RESULT := '';

  if PathCurto <> ''
  then begin
    FileDrive := ExtractFileDrive(PathCurto) + '\';

    // Retirer la barre à la fin :
    if PathCurto[length(PathCurto)] = '\'
    then PathCurto := Copy(PathCurto, 1, length(PathCurto) - 1);

    While (Length(PathCurto) > Length(FileDrive))
      And (SHGetFileInfo(PChar(PathCurto),0,aInfo,Sizeof(aInfo),SHGFI_DISPLAYNAME)<>0) do
    begin
      if RESULT = ''
      then Result := String(aInfo.szDisplayName)
      else Result := String(aInfo.szDisplayName) + '\' + RESULT;

      PathCurto := ExtractFileDir(PathCurto);    // Rechercher le nom long du repertoire contenant le fichier/repertoire actuel ...
    end;

    RESULT := FileDrive + RESULT;
  end;
end;

Conclusion :


C' est une amelioration des 2 fonctions que j' ai mis en commentaire sur une source du meme objectif.
Cette fois, le code est bien de moi même si je me suis basé sur diverses exemples ...

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
samedi 9 juin 2007
Statut
Membre
Dernière intervention
1 septembre 2010

merci
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
n.c.
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
21
ShlObj ou ShellApi, ouais... j'ai lu après ton msg sur l'autre page qui précisait ShellApi. Je n'ai pas vérifié.
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Les uses à ajouter sont shellAPI et c tout je crois ...
En fait, j' ai déposé ce source à la suite de la source de Grandvizir qui apporte une solution plus 'complexe' (avec plus de lignes) mais sans ShellAPI je crois, mais, qui ne fonctionne que dans un sens.
Merci en tout cas à lui, parce que je n' avais pas vu que l' ancienne version de mes fonctions (qui se trouve en commentaire dans sa source) ne renvoyait pas tout le path.
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Merci Julio, malheureusement je n' ai pas le temps de poster mes sources sur plusieurs sites.
Je les poste ici donc, mais si tu veux, tu peux toi meme les poster sur ton site: il y a aucun probleme.
En tout cas, merci de l' interet que tu portes à mes sources.
PS: j' ai encore amelioré ton nain, tu as vu?
Afficher les 6 commentaires

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.