Obtener el nombre largo de una ruta a partir de su nombre corto
Artículo por Club Developers · 31 diciembre 2005
2597 vistas
¿Cómo encontrar el nombre largo de una carpeta o un fichero a partir de su nombre corto (8 carácteres + extensión en formato DOS o Windows 16 bits)?
La función GetLongFilename devuelve el nombre largo de una ruta usando la Shell. Si el nombre no puede ser obtenido devolverá el nombre corto pasado como parámetro.
Nota: para obtener el inverso, es decir, el nombre corto a partir del largo, podemos usar la función ExtractShortPathName disponible en la unidad SysUtils a partir de Delphi 4.
La función GetLongFilename devuelve el nombre largo de una ruta usando la Shell. Si el nombre no puede ser obtenido devolverá el nombre corto pasado como parámetro.
delphi
uses ShlObj, Windows; function GetLongFilename(const ShortFilename: string): string; var desktop: IShellFolder; filename: Widestring; pchEaten: Cardinal; ppIdl: PItemIDList; pdwAttributes: Cardinal; buffer: array [0..MAX_PATH] of char; begin result:= ShortFilename; if SHGetDesktopFolder(desktop) = NOERROR then begin filename:= ShortFilename; { Conversion en WideString } if Desktop.ParseDisplayName(0, nil, PWideChar(filename), pchEaten, ppidl, pdwAttributes) = NOERROR then begin if SHGetPathFromIDList(ppidl, buffer) then result:= buffer; end; end; end;
Nota: para obtener el inverso, es decir, el nombre corto a partir del largo, podemos usar la función ExtractShortPathName disponible en la unidad SysUtils a partir de Delphi 4.