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