Club Delphi  
    Paypal   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

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 25-03-2008
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 571
Poder: 19
jhonalone Va por buen camino
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;
Responder Con Cita
 



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 17:49:34.


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