Obtener el nombre largo de una ruta a partir de su nombre corto
Artículo por Club Developers · 31 diciembre 2005
2776 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.



