Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2013
titooo titooo is offline
Miembro
NULL
 
Registrado: mar 2013
Posts: 33
Poder: 0
titooo Va por buen camino
Question FileExists no encuentra un fichero

Buenas señores/as, tengo una consulta relacionada con FileExists() de Delphi 7, con mi generador de reportes Rave genero un determinado listado en mi escritorio. El tema que cuando pregunto si existe el archivo (a traves de la funcion FileExists) me devuelve false, y realmente si existe y lo sobreescribe ... a que puede deberse el problema? Gracias de antemano
Responder Con Cita
  #2  
Antiguo 01-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
A que lo busca donde no está
Responder Con Cita
  #3  
Antiguo 01-07-2013
titooo titooo is offline
Miembro
NULL
 
Registrado: mar 2013
Posts: 33
Poder: 0
titooo Va por buen camino
Pero yo observo a traves de un showmessage() que ruta le estoy enviando a mi Fileexists(), y lo comparo con la ruta de el archivo existente Y es la misma
Responder Con Cita
  #4  
Antiguo 01-07-2013
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Una posibilidad es que tengas ocultas las extensiones de los archivos en el explorador, de forma que ves c:\mio\pepe.txt como nombre del archivo, pero en realidad existe el c:\mio\pepe.txt.txt ... revisa, porque es para tirarse de los pelos un buen rato jeje.

Pega las rutas en el foro, la que te da tu programa y la real, a ver si es algo del usuario de windows (igual te das cuenta al poner las dos rutas una debajo de la otra )
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 01-07-2013 a las 16:41:39.
Responder Con Cita
  #5  
Antiguo 01-07-2013
titooo titooo is offline
Miembro
NULL
 
Registrado: mar 2013
Posts: 33
Poder: 0
titooo Va por buen camino
jaja gracias a ambos por los aportes, nunca e habia pasado esto, por eso recurri a este hilo... uso extensiones pdf
Responder Con Cita
  #6  
Antiguo 01-07-2013
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
A ver,

En lugar de un ShowMessage, pon un Edit en una ventana y pon la ruta al fichero ahí, en el Edit, selecciona todo el texto y lo copias, pegándolo en un explorador de windows, en la barra de direcciones, así verás si lo localiza o no.

- Puede ser que el fichero tenga una tilde, una contrabarra de más "\" o cualquier otra tontería.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 01-07-2013
titooo titooo is offline
Miembro
NULL
 
Registrado: mar 2013
Posts: 33
Poder: 0
titooo Va por buen camino
Probe y me da exactamente con el archivo
Responder Con Cita
  #8  
Antiguo 01-07-2013
titooo titooo is offline
Miembro
NULL
 
Registrado: mar 2013
Posts: 33
Poder: 0
titooo Va por buen camino
Código Delphi [-]
procedure TForm18.Button1Click(Sender: TObject);
var
  rutavalida:boolean;
  ruta:string;
  i:integer;
begin
  rutavalida:=false;
  begin
  if edit1.Text <> ''
   then
    begin
    if copy(destino.Path, length(destino.Path)-1 ,length(destino.Path)) = '\' then
      ruta:= destino.Path + edit1.text
    else
      ruta:= destino.Path + '\' + edit1.text;
      rutavalida:=true;
    end
  else
    showmessage('Verifique Tipo de Archivo y Destino!');

  edit2.Text:=ruta;
  if fileexists(ruta)=true       {esta es la parte que consulto}
  then
      showmessage ('VA A SOBREESCRIBIR SU ARCHIVO')
  else
  begin
 if rutavalida
 then
  begin
  IF RADIOGROUP1.ItemIndex=-1
  THEN
      SHOWMESSAGE('seleccione un Tipo de Archivo')
  else
  case radiogroup1.ItemIndex of
  0:
    begin
    if edit1.Text<>''
     then
     begin
     if Lblform.Caption='LA'
     then
        begin
          form19.RvSys_aud.DefaultDest    :=rdFile;
          form19.RvProject1_aud.ProjectFile   := ExtractFilePath( Application.ExeName ) + 'Listado_auditoria.rav';
          form19.RvSys_aud.DoNativeOutput := false;
          form19.RvSys_aud.RenderObject   := form19.RvRenderPDF3;
          form19.RvSys_aud.OutputFileName := ruta + '.pdf';
          form19.RvSys_aud.SystemSetups   := form19.RvSys_aud.SystemSetups - [ssAllowSetup];
          form19.RvProject1_aud.Execute;
          form19.RvProject1_aud.Close;
         end;
Responder Con Cita
  #9  
Antiguo 01-07-2013
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
¿que hay en "destino.path" y en "edit1.text"?
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 01-07-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola titooo.

Estoy viendo un error lógico que seguramente te esté ocasionando el problema.

Supongo que en esta línea queres verificar si existe el delimitador '\':
Código Delphi [-]
  if copy(destino.Path, length(destino.Path)-1 ,length(destino.Path)) = '\' then
Pero de ese modo, estas tomando los últimos 2 caracteres... Si por ejemplo destino.Path contiene 'C:\Carpeta@\' el resultado será: '@\' y la igualdad no se cumplirá nunca.

Tendría que ser:
Código Delphi [-]
  if copy(destino.Path, length(destino.Path), length(destino.Path)) = '\' then

De todos modos es mas simple hacer:
Código Delphi [-]
...
var
  FullName : string;
begin
  if edit1.Text <> '' then
  begin
    FullName  := IncludeTrailingPathDelimiter(destino.Path) + Edit1.Text;
    if FileExists(FullName) then
    ...
y no necesitas comprobación ya que la función incluye el delimitador '\' sólo si no existe al final de la cadena enviada en el argumento.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 01-07-2013
titooo titooo is offline
Miembro
NULL
 
Registrado: mar 2013
Posts: 33
Poder: 0
titooo Va por buen camino
Gracias ecfiiisaaa lo pruebo y comento si sirvioo saludos! vos siempre salvandome las papas jaja.
Responder Con Cita
  #12  
Antiguo 01-07-2013
titooo titooo is offline
Miembro
NULL
 
Registrado: mar 2013
Posts: 33
Poder: 0
titooo Va por buen camino
No funciono :/
Responder Con Cita
  #13  
Antiguo 01-07-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
titooo,

Cita:
Empezado por titooo
...yo observo a traves de un showmessage() que ruta le estoy enviando...y lo comparo con la ruta de el archivo existente y es la misma...
Pregunto:

1- ¿Puedes publicar el valor del campo Ruta empleado en la función FileExists?.

2- ¿Existe alguna regla de seguridad aplicada al archivo en cuestión que pueda influir en el problema?.

Revisa este código:
Código Delphi [-]
function SearchFile(Path, FileName : String) : Boolean;
var
  searchResult : TSearchRec;

begin

   Path := IncludeTrailingPathDelimiter(Path) + FileName;

   if FindFirst(Path, faAnyFile, searchResult) = 0 then
      Result := True
   else
      Result := False;

end;
El código anterior es una forma alterna a la función FileExists para verificar la existencia de un archivo, te sugiero probarla para ver su comportamiento con el archivo en cuestión.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 01-07-2013 a las 23:16:31.
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
Fallo copyfile y fileexists en servicio windows y red Ivanzinho Varios 4 13-08-2013 09:50:59
FileExists() no lee .dll en system32 to_to API de Windows 21 29-05-2013 23:15:11
Duda con FileExists nena_yei OOP 12 04-11-2010 17:20:05
FileExists o DirectoryExists pero no solo en el actual pnikkosis OOP 2 01-12-2009 04:24:07
Fileexists sobre una red Kipow Varios 2 26-05-2006 14:57:43


La franja horaria es GMT +2. Ahora son las 22:17:36.


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