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
-
No crea directorios: Si la carpeta C:\TEMP no existe, fallará. Asegúrate de que el directorio padre exista previamente.
-
Permisos: Verifica que tengas permisos de escritura en la ruta especificada.
-
Incluir librería: En algunos proyectos puede ser necesario incluir explícitamente:
#include "hbmisc.ch"
- 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.