Ver Mensaje Individual
  #3  
Antiguo 24-03-2008
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Reputación: 17
jhonalone Va por buen camino
ChakAll, gracias por tu interés, lo primero.
La situación está así con GetShortPathName:
en XP Pro y en Vista64 da error cuando le pides la ruta desde un subdirectorio que hace el número 5 ó más con las mismas 9 ó más letras iniciales iguales.
en ME no da ningún problema, he comprobado hasta con 12 subdirectorios, uno a uno.

Para mi caso particular está resuelto el problema desde el principio, pues en la instalación del programa, no permito cambiar la ruta y no es muy probable que haya 5 subdirectorios parecidos al mío, pero no me deja satisfecho el "gusanillo" ése que nos obliga a ser perfeccionistas...

Aunque pierda un poco de mi tiempo, intentaré con FindFirstFile del API y ya te conteré.

Te pego a continuación la función que utilizo en un proyecto de prueba para que la revises o la pruebes con otro sistema para ver lo de los 5 directorios.

Function Ruta:string;
var
RutaCorta:String;
DirActual:String;
corto:array [0..MAX_PATH] of char;
longitud:Cardinal;
begin
GetDir(0,DirActual);
Longitud:= Sizeof(Corto) -1;
GetShortPathName(PChar(DirActual),@corto,Longitud);
RutaCorta:=String(Pchar(@corto));
if Length(RutaCorta)>3 then Ruta:=RutaCorta+'\'
else Ruta:=RutaCorta; // si es el Dir Raiz C:\ ó A:\ la barra la pone sola
end;


y después la llamo desde un botón y lo escribo en un Edit

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.text:=Ruta;
end;
Responder Con Cita