Resulta que me encuentro haciendo pruebas con conecciones mediante redes locales y en una parte del código uso esta funcion, resulta que necesito saber el valor y la longitud que ésta devuelve, pero siempre es del tipo caracter y con longitud de 249, aunque la unidad a examinar sea local o en red:
Aki el fragmento de código...
- Code: Select all Expand view
Function TipoRed()
LOCAL cRuta:= GetModuleFilename(GetInstance())
LOCAL cDrive:= ALLTRIM(UPPER(CurDrive()))+":"
LOCAL cPath:= ALLTRIM(UPPER(WNetGetConnection(cDrive))) //aki devuelve vacio en caso de ser disco local, o el nombre en caso de una unidad de red.
LOCAL cRed:= ALLTRIM(UPPER(SUBSTR(cPath,1,2)))
LOCAL cNomR1:= ALLTRIM(UPPER(SUBSTR(cPath,3)))
LOCAL cNmRed:= SUBSTR(cNomR1,1,AT("\",cNomR1))
msginfo(cRuta)
msginfo(cDrive)
msginfo(cPath)
msginfo(VALTYPE(cPath),LEN(cPath))
msginfo(cRed)
msginfo(cNomR1)
msginfo(cNmRed)
Return nil
Es extraño, y creo que a la vez ilógico, puesto que cuando la unidad a examinar es local o en red, cPath siempre devuelve el mismo valor.
He revizado la fuente en el archivo NET.C, y ahi declara un bufer de 249, pero no entiendo porque devuelve siempre el mismo valor.
Habra una forma de solucionar este problema, o alguna funcion que sustituya a WNetGetConnection()
Saludos y en espera de comentarios...