Función que devuelva una letra de unidad DISPONIBLE.

136 views
Skip to first unread message

RickDeCastro

unread,
Dec 4, 2012, 6:45:15 AM12/4/12
to publice...@googlegroups.com
Hola grupo.
 
Estoy creando una aplicación que debe mapear una unidad de red localmente, a fin de obtener algunos datos, y luego eliminarla.
Para esto necesito saber qué letra de unidad puedo utilizar, sin temor a que la misma ya exista en la máquina del usuario, evitando así errores y conflictos.
 
Sé que si investigo voy a dar con la solución (aunque sea via API de Windows), pero me urge un poco terminar eso y pregunto por si alguien ya tiene esa rutina y puede compartirla.
 
Agradezco anticipadamente cualquier respuesta.
---
Saludos mapeables.
Ricardo De Castro Aquino
Asunción - Paraguay
 

Luis Maria Guayan

unread,
Dec 4, 2012, 7:03:30 AM12/4/12
to publice...@googlegroups.com
Rick, te dejo estos dos artículos de PortalFox

-- Incluye en una matriz información de las unidades de un PC --
http://www.portalfox.com/article.php?sid=87

-- Obtener en un Array Las unidades de disco del PC --
http://www.portalfox.com/article.php?sid=1207

Allí por descarte tienes las unidades libres

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

--
 
 

Alejandro Isla

unread,
Dec 4, 2012, 7:58:20 AM12/4/12
to publice...@googlegroups.com
Pregunta: ¿que te impide directamente usar la forma \\nombre_servidor\recurso_compartido\ ? de esa forma te evitar mapear, etc. etc.

Saludos.

decastro

unread,
Dec 4, 2012, 9:06:39 AM12/4/12
to publice...@googlegroups.com
Excelentes, Luis Ma.!!
Ambas servirían.
Me quedo con la tuya por ser más VFox, después de tantos años recién ahora me entero de la función DRIVETYPE().
Sin embargo, me agradó ver algo de nuestro viejo amigo API man... =))
---

Saludos cordiales
 
Lic. Ricardo De Castro Aquino
Analista de Sistemas Senior
CO.DE.S.I.
---
Tel.: (595 21) 527 119
Asunción – Paraguay

 


 

__________ Información de ESET NOD32 Antivirus, versión de la base de datos de firmas de virus 7761 (20121204) __________

El mensaje fue verificado por ESET NOD32 Antivirus.

http://www.eset-la.com
--
 
 

decastro

unread,
Dec 4, 2012, 9:20:43 AM12/4/12
to publice...@googlegroups.com
El tema es que la unidad a utilizar tiene el acceso restringido a un único usuario especialmente definido.
Por más que intenté acceder a la misma utilizando la Impersonalización del usuario actual, no conseguí acceso a la carpeta deseada.
La única solución que encontré fue -además de impersonalizar- mapear (via API) dicha unidad localmente, usando el usuario específico.
Son puras cuestiones de seguridad.
---
Saludos accesibles.
--
 
 

decastro

unread,
Dec 4, 2012, 10:13:25 AM12/4/12
to publice...@googlegroups.com
Hola grupo.
Por si a alguien le interesa, esta es la función que monté para lo que necesitaba.
*------------------------------------------------------
* Función:        FirstDriveNotMapped()
* Propósito:     Recorre todas las letras del alfabeto hasta 
*                        encontrar una que no esté mapeada en la
*                        máquina local.
*                     Por diseño, evita el uso de la unidad B:
*
* Autor:            Ricardo de Castro A. - (c)CODESI, 2012
* Creada al:    04/12/12 10:53:26 AM
* Parámetros:    ninguno
* Retorna:        Char - Letra de la primera unidad disponible
*                                en el formato "X:".
*
* Ejemplo de uso:
*    ? "Primera letra disponible - " + FirstDriveNotMapped()
*
* Entrada:         ninguna
* Salida:        ninguna
* Supone:        nada
* Registro de cambios:
*  
*------------------------------------------------------
FUNCTION FirstDriveNotMapped()
LOCAL lcUnidad
lcUnidad = ""
FOR ln = 65 TO 90
lnTipo = DRIVETYPE(CHR(ln))
    lcUnidad = CHR(ln)+":"
    IF lnTipo = 1 AND lcUnidad != "B:"
        EXIT
    ENDIF
ENDFOR
RETURN lcUnidad

---
Saludos disponibles.
Ricardo De Castro Aquino
Asunción - Paraguay

 
--
 
 

Reply all
Reply to author
Forward
0 new messages