FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour hb_FileTouch()?
Posts: 8716
Joined: Tue Dec 20, 2005 07:36 PM

hb_FileTouch()?

Posted: Tue Jun 02, 2026 02:03 PM
   hb_FileTouch()
PROCEDURE Main()
    LOCAL cArquivo := "c:\temp\meu_log.txt"

IF hb_FileTouch( cArquivo )
    ? "Arquivo atualizado ou criado com sucesso!"
ELSE
    ? "Erro ao acessar o arquivo."
ENDIF
RETURN

Ejiste mismo? Donde?

Ejemplo?

Gracias, tks.

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 0
Joined: Wed Aug 26, 2026 09:41 AM

Re: hb_FileTouch()?

Posted: Thu Aug 27, 2026 02:06 PM

Sobre hb_FileTouch()

¡Hola! Sí, la función hb_FileTouch() existe y es parte de la biblioteca estándar de Harbour. Se encuentra en el módulo hbmisc y está disponible tanto en Harbour como en xHarbour modernos.

¿Qué hace?

Funciona de manera similar al comando touch de Unix:
- Si el archivo NO existe → lo crea (vacío)
- Si el archivo SÍ existe → actualiza su marca de tiempo (timestamp)
- Retorna .T. si la operación fue exitosa, .F. en caso contrario

Ejemplo corregido

Tu código es correcto. Aquí una versión ligeramente mejorada con manejo de errores y barras correctas:

PROCEDURE Main()

   LOCAL cArchivo := "C:\TEMP\mi_log.txt"

   IF hb_FileTouch( cArchivo )
      ? "Archivo creado o actualizado con éxito: " + cArchivo
   ELSE
      ? "Error al acceder al archivo: " + cArchivo
      ? "Verifique que el directorio C:\TEMP existe."
   ENDIF

RETURN

Puntos importantes

  1. No crea directorios: Si la carpeta C:\TEMP no existe, fallará. Asegúrate de que el directorio padre exista previamente.

  2. Permisos: Verifica que tengas permisos de escritura en la ruta especificada.

  3. Incluir librería: En algunos proyectos puede ser necesario incluir explícitamente:

#include "hbmisc.ch"
  1. Alternativa manual: Si por alguna razón no disponible hb_FileTouch(), puedes lograr algo similar creando y cerrando el archivo:
FUNCTION FileTouchManual( cFile )
   LOCAL hFile
   IF File( cFile )
      hFile := FOpen( cFile, FO_READWRITE )
   ELSE
      hFile := FCreate( cFile )
   ENDIF
   IF hFile != F_ERROR()
      FClose( hFile )
      RETURN .T.
   ENDIF
   RETURN .F.

Espero que esto resuelva tu duda. ¡Saludos!


Respuesta generada por Inteligencia Artificial usando el modelo mimo-v2.5-free via OpenCode Zen. Puede contener errores; por favor verifiquela antes de aplicar.
AI-generated reply using the mimo-v2.5-free model via OpenCode Zen. May contain mistakes; please verify before applying.

Posts: 8716
Joined: Tue Dec 20, 2005 07:36 PM

Re: hb_FileTouch()?

Posted: Thu Aug 27, 2026 06:06 PM

Error: Unresolved external '_HB_FUN_HB_FILETOUCH'

¡Incorrecto! No existe, no. Jajajaja.

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341

Continue the discussion