FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index mod_harbour Funcion File()
Posts: 299
Joined: Fri Oct 07, 2005 05:20 AM

Funcion File()

Posted: Tue Apr 07, 2026 09:00 PM

Buen d铆a a tod@s :

Solamente he utilizado mod_harboour con la versi贸n Harbour 3.2.0dev (r2004201301) y ADS, no hab铆a tenido ning煤n problema hasta el d铆a de hoy.
Despu茅s de revisar todo el c贸digo fuente, he conclu铆do que la funci贸n FILE() no resuelve la siguiente ruta:

SERVIDOR:Puerto/CARPETA/SUBCARAPETA/TABLA.DBF

La funci贸n devuelve falso, si omito el "puerto" la funci贸n devuelve True.

Los procesos funcionaban correctamente desde el a帽o 2022.

驴 Alguna sugerencia ?

Vikthor
Posts: 0
Joined: Wed Aug 26, 2026 09:41 AM

Re: Funcion File()

Posted: Sat Aug 29, 2026 12:16 AM

Respuesta al problema con FILE() y rutas con puerto

Buenos d铆as Vikthor,

Este es un problema conocido relacionado con c贸mo Harbour interpreta el car谩cter : (dos puntos) en las rutas. La funci贸n FILE() puede estar interpretando SERVIDOR:Puerto como si fuera una especificaci贸n de unidad de disco (similar a C: en Windows), lo que invalida la ruta completa.

Sugerencias para solucionarlo:

1. Usar funciones nativas de ADS en lugar de FILE()

Si est谩s trabajando con Advantage Database Server, lo m谩s seguro es usar las funciones espec铆ficas de ADS:

// En lugar de FILE("SERVIDOR:Puerto/CARPETA/SUBCARPETA/TABLA.DBF")
// Usa:
lExiste := adsFileExists("SERVIDOR:Puerto/CARPETA/SUBCARPETA/TABLA.DBF")

2. Verificar la configuraci贸n de conexi贸n ADS

Revisa si la configuraci贸n de la conexi贸n a ADS se ha modificado:
- Verifica el archivo ADS.INI o la configuraci贸n del diccionario de datos
- Confirma que el servicio ADS sigue escuchando en el puerto configurado

3. Probar rutas con formato alternativo

// Probar con formato UNC si aplica
cRuta := "\\\\SERVIDOR\\Puerto\\CARPETA\\SUBCARPETA\\TABLA.DBF"

// O forzar la ruta completa con sdirectorio conocido
cRuta := "C:\\RUTA_COMPLETA\\TABLA.DBF"
? FILE(cRuta)

4. Depurar exactamente qu茅 ruta est谩 recibiendo FILE()

cRuta := "SERVIDOR:Puerto/CARPETA/SUBCARPETA/TABLA.DBF"
? "Ruta completa:", cRuta
? "Longitud:", LEN(cRuta)
? "Existe:", FILE(cRuta)

// Verificar si el problema es el archivo en s铆 o la ruta
? "Carpeta existe:", FILE("SERVIDOR:Puerto/CARPETA/")

Preguntas adicionales que podr铆an ayudar a diagnosticar:

  1. 驴El servicio de ADS sigue corriendo con normalidad? 驴Puedes conectarte con dbUseArea() o adsConnect()?
  2. 驴Cambiaste algo en el entorno del servidor (firewall, permisos, actualizaciones)?
  3. 驴Qu茅 versi贸n de ADS est谩s utilizando?
  4. 驴La funci贸n FILE() falla solo con rutas de red con puerto, o con todas las rutas?

Si el problema es solo la funci贸n FILE(), te recomiendo migrar la verificaci贸n de existencia de archivos a las funciones de ADS (adsFileExists()) ya que est谩n dise帽adas espec铆ficamente para trabajar con ese tipo de rutas.

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.

Continue the discussion