Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-07-2005
serhasae serhasae is offline
Miembro
 
Registrado: jun 2004
Ubicación: España
Posts: 117
Poder: 23
serhasae Va por buen camino
Da error en la linea
DeleteFile(dir + sr.Name); Incompatible type String and Pchar.

cambiamos a Pchar ... deletefile (pchar(dir + sr.name))

Da error en la linea:
FindClose(sr); Incompatible type Cardinal and TSearchRec

De todas maneras creo que no esta bien enfocado del todo.

Gracias.

Última edición por serhasae fecha: 12-07-2005 a las 19:49:58.
Responder Con Cita
  #2  
Antiguo 12-07-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

El primer error se refiere a lo siguiente: arriba se usa la función "DeleteFile" sita en la unidad "SysUtils", que a su vez llama a una función del mismo nombre esta vez de la unidad "Windows". La primera requiere un parámetro de tipo "string" y la segunda de tipo "PChar".

Puedes hacer dos cosas, o esto:

Código Delphi [-]
  DeleteFile(PChar(dir + sr.Name));
... para utilizar la función de la unidad "Windows" o añadir la unidad "SysUtils" en alguna cláusula "uses". La función de la unidad "Windows" no es "multiplataforma", la de "SysUtils" sí parece serlo: tú decides, en todo caso.

Respecto del segundo error... la verdad, no sé qué decirte: a mí me funciona bien incluso en caso de no poderse borrar un determinado archivo, cosa que por otro lado se comprueba antes, e incluso estando completamente vacío el directorio que se pasa como parámetro.

Prueba a añadir la unidad "SysUtils" si no lo hiciste ya, de momento no se me ocurre otra cosa que decirte.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 12-07-2005 a las 19:59:04. Razón: (corrección del texto)
Responder Con Cita
  #3  
Antiguo 12-07-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Cita:
Empezado por serhasae
Da error en la linea
DeleteFile(dir + sr.Name); Incompatible type String and Pchar.

cambiamos a Pchar ... deletefile (pchar(dir + sr.name))

Da error en la linea:
FindClose(sr); Incompatible type Cardinal and TSearchRec

De todas maneras creo que no esta bien enfocado del todo.

Gracias.
Tienes un problema con el orden en que se usan las units Windows y SysUtils. Estas funciones estan definidas en ambas, pero evidentemente te esta tomando la de Windows. Yo lo solucionaría poniendo SysUtils.FindClose (por ejemplo) como modo estricto.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 12-07-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Gracias Federico. Es exactamente lo que has dicho. No sabía que al cabo también el procedimiento "FindClose" de la unidad "SysUtils" acaba por llamar a uno del mismo nombre en la unidad "Windows".

Vale, pues, lo dicho más arriba, a lo que se ve, y es que si se utiliza el procedimiento "FindClose" de la unidad "SysUtils" funcionaría, según parece, también en Linux.

Gracias de nuevo Federico.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 12-07-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por jachguate
Yo personalmente creo que no es necesaria la comprobación del FileExists, a menos que dos procesos estén borrando los archivos al mismo tiempo...
Bueno. En realidad tiene un sentido ahí el "FileExists", pero, puede que no del todo correcto o equivocado. Me explico... no, no me explico.

Me explico. Cuando iba a explicarme me he dado cuenta de algo: tal vez sobre definitivamente el "FileExists" puesto que la función "DeleteFile" no causará problemas en caso de que no exista el supuesto archivo a borrar: comprobado.

La intención del "FileExists", sin embargo, era no complicar las cosas con algo así:

Código Delphi [-]
 if ((sr.Attr and faDirectory) <> 0) 
   and (sr.Name <> '.') and (sr.Name <> '..') then

... pero, definitivamente, y, como digo, pienso ahora que el "FileExists" sobra en el procedimiento. Gracias jachguate.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 12-07-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Hola.

Seguramente hay un conflicto de unidades.

Según la ayuda de delphi:

Cita:
Empezado por f1
FindClose
Releases memory allocated by FindFirst.

Unit

SysUtils

Category:

file management routines

procedure FindClose(var F: TSearchRec);

Description

FindClose terminates a FindFirst/FindNext sequence.
Además, que te hace pensar que no está bien enfocado. Yo personalmente creo que no es necesaria la comprobación del FileExists, a menos que dos procesos estén borrando los archivos al mismo tiempo... pero el resto, lo veo muy bien.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 08:28:14.


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