![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#4
|
|||
|
|||
|
Lo siento. Me rindo. Creo que Microsoft nos toma el pelo con el API. Son casi las 2 de la mañana y no puedo más. Llevo toda la tarde con esto y estoy bloqueado. Me devuelve vacia la cadena RegFich.cAlternateFilename, y sin embargo me devuelve correcta la de RegFich.cFilename.
Que alquien me lo explique. Yo desisto. A lo mejor tengo un error en el código y no me doy cuenta... De todas formas creo que el tema no interesa mucho (Solo 27 visitas en dos dias) function RutaDOS(NomFich:String): String; label Salir; var RegFich: TWin32FindData; Control: String; DirActual: String; RutaLarga: string; NombreCorto: String; RutaCorta: String; xx: integer; ControlBusqueda:THandle; AlgoFalla:Boolean; begin ////////////////////////////////////////////////////////////////////////////// // Primero Transformamos la ruta de Directorios hasta el Actual a nombres cortos // 1.- Obtenemos la ruta en que estamos AlgoFalla:=False; //Control del resultado GetDir(0,RutaLarga); RutaLarga:=RutaLarga+'\'+NomFich; //RutaCorta empieza vacía para ir añadiendo en while Length(Rutalarga) > 3 RutaCorta:=''; while Length(RutaLarga) > 2 // Si no es el directorio Raiz (Unidad:\) do begin //Buscamos el directorio que investigaremos actualmente xx:=Length(RutaLarga); while RutaLarga[xx]<>'\' do xx:=xx-1; DirActual:=Copy(RutaLarga,xx+1,Length(RutaLarga)-xx); Delete(Rutalarga,xx,Length(RutaLarga)-xx+1); // eliminamos el directorio que estamos comprobando SetCurrentDirectory(PChar(RutaLarga+'\')); //Fijamos el directorio de búsqueda ControlBusqueda:=FindFirstFile(PChar(RutaLarga+'\'+DirActual), RegFich); if ControlBusqueda=INVALID_HANDLE_VALUE // Algo Falla then begin AlgoFalla:=True; Goto Salir; end else begin // ControlBusqueda<>INVALID_HANDLE_VALUE No hay fallo if RegFich.cFileName=DirActual then NombreCorto:=String(RegFich.cAlternateFilename) else while FindNextFile(ControlBusqueda,RegFich) do if RegFich.cFileName=DirActual then NombreCorto:=String(RegFich.cAlternateFilename); end;// ControlBusqueda<>INVALID_HANDLE_VALUE RutaCorta:=NombreCorto+'\'+RutaCorta; end; //while Length(RutaLarga) > 2 RutaCorta:=RutaLarga+'\'+RutaCorta; // en DirActual debe quedar "Unidad\:" // Aquí termina la ruta de los directorios ////////////////////////////////////////////////////////////////////////////// Salir: if AlgoFalla then RutaCorta:=''; RutaDOS:=RutaCorta; // Terminamos uso de FindFirst/FindNext Windows.FindClose(ControlBusqueda); end; |
|
|
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 |
|