Ver Mensaje Individual
  #8  
Antiguo 26-03-2008
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 545
Reputación: 17
jhonalone Va por buen camino
Gracias cHackAll (Ahora lo he escrito bien eh!)
No te esfuerces. Esl fallo es de Microsoft. Ahora funciona (?) si no es en el quinto subdirectorio con 9 o más caracteres iguales. Como GetShortPathName. En el quinto subdirectorio pone las dos primeras letras del directorio mas 4 caracteres en base 16 más el caracter 126 (~) mas un 1 y la barra \:
mira es exactamente esto: C:\DATA\MISPRO~1\SUPERPAD\ES273A~1\RUTAW32.EXE
la ruta larga es esta:C:\DATA\Mis Programas y mis licencias\SuperPad\Estoesimposible5\
RutaW32.exe
Falla en el mismo sitio que GetShortPathName.
Esta es la primera función que hice:
[delphi]

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;
[delphi/]

A ver si he aprendido lo del código.

El Resultado es el mismo. Ruego que lo compruebes moviendo el programita de prueba a un subdirectorio que sea el quinto con 9 o más caracteres iguales.

Siempre gracias por tu tiempo y tu esfuerzo.

Un saludo.
Responder Con Cita