Veo que, en efecto, hay algún problema cuando se usa la rutina con un nombre que de por sí es corto. Intenta con esta función:
Código Delphi
[-]
function GetShortName(const FileName: String): String;
var
ShortName: PChar;
Size: Cardinal;
begin
Size := GetShortPathName(PChar(FileName), nil, 0);
if Size > 0 then
begin
GetMem(ShortName, Size);
GetShortPathName(PChar(FileName), ShortName, Size);
Result := ShortName;
FreeMem(ShortName);
end
else
Result := FileName;
end;
// Saludos