Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-03-2008
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 548
Poder: 17
jhonalone Va por buen camino
Otra vez Gracias cHakAll.
¡Qué mas quisiera yo que poder poner el código tan bonito como lo tengo en el editor de Delphi, pero no tengo ni idea cómo se hace.
Conste que he buscado en el foro, pero no sé cómo lo hacéis. Comprenderás que no soy muy experto en el foro, llevo sólo 19 ó 20 posts. Pero prometo enterarme para la próxima vez que tenga que poner código.
Bueno al grano, como dices tu.
Siento informarte que el resultado obtenido con la función GetShortName que me has puesto, es exactamente el mismo que el que he obtenido con la RutaDOS, que yo te puse, es decir este es el resultado: "C:\\\\", el número de barrras es el mismo que los subdirectorios que hay hasta llegar al raiz. Mi SO es WXP Professional.
Probado en el de mi hijo, que es Vista64, el resultado es idéntico, en el antiguo ME si funciona GetShortPathName, el RutaDOS y el GetShortName no los he probado.
Vuelvo a darte las gracias y te pido que no pierdas más tiempo con este tema, no lo merece.

Saludos Juan
Responder Con Cita
  #2  
Antiguo 25-03-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código Delphi [-]
function GetShortName(FileName: string): string;
var
 Actually: string;
 FindData: TWin32FindData;
 Pos, Count: Integer;
begin
 Count := 3;
 Result := UpCase(FileName[1]) + ':';
 while Count < Length(FileName) do
  begin
   Inc(Count);
   Pos := System.Pos('\', Copy(FileName, Count, MAX_PATH));
   if LongBool(Pos) then Inc(Count, Pos - 1) else Count := MAX_PATH;
   Windows.FindClose(FindFirstFile(PChar(Copy(FileName, 1, Count - 1)), FindData));
   if FindData.cAlternateFileName[0] <> #0 then
    Result := Result + '\' + FindData.cAlternateFileName
   else
    Result := Result + '\' + StrUpper(@FindData.cFileName);
  end;
end;

El problema ocurria cuando el nombre dado era un 8.3 válido, ahora debería funcionar. Las etiquetas son [delphi] tu codigo aquí [/delph¡] ó el único boton cafe de la parte superior del editor.

Saludos

Última edición por cHackAll fecha: 25-03-2008 a las 23:47:07.
Responder Con Cita
  #3  
Antiguo 26-03-2008
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 548
Poder: 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
  #4  
Antiguo 26-03-2008
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 548
Poder: 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:
Código 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;

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.

P.D. No te rías, he puesto la raya descolocada...
Responder Con Cita
  #5  
Antiguo 26-03-2008
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 548
Poder: 17
jhonalone Va por buen camino
Gracias cHackAll:
Por todo lo que me has enseñado a mí y a todos en general. Por la labor de maestro que estás haciendo en el Foro.

Un saludo.

Juan.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Rellenar listbox con nombres de ficheros eduarcol Varios 2 11-08-2007 02:40:03
¿ Cómo obtener los nombres de bases de datos? Javi2 Varios 2 22-11-2006 09:46:21
como obtener los nombres de archivos de un directorio ilichhernandez Varios 3 14-07-2006 17:49:57
Copiar nombres de ficheros a un Combo Tomás Varios 2 12-01-2004 16:28:51
Obtener nombres hgiacobone Varios 1 23-07-2003 18:55:02


La franja horaria es GMT +2. Ahora son las 22:51:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi