Artículo |
Procesando Comandos |
Autor / Fuente |
Harvey Triana |
Tema |
Programación general en Visual Basic |
Actualización |
Octubre 24 de 1997 |
Descripción |
Módulo que procesa el comando y devuelve los argumentos. |
Visual Basic emplea la variable de entorno Command para recuperar la cadena que sigue al nombre de un ejecutable (EXE) . Es tarea del programador recuperar cada argumento de la sarta Command. Es método que describo en este articulo es bastante práctico y sencillo. Usa una sintaxis al estilo Java, el cual recupera cada argumento en un array de entorno llamado args[]. Para que su proyecto goce de esta herramienta, solo tiene que agregar el módulo modArgs, y desde al inicio del programa (normalmente Sub Main), use la línea, GetArgs Command, y tendrá cada argumento en los elementos del array args. Algo muy importante es que los parámetros deben ir separados por una barra de división o slash. Por ejemplo, MiAplicación.EXE Hola Mundo/ 1997. Dentro de la aplicación puede reconocer que: arg(0) = "Hola Mundo" y arg(1) = "1997".
El procedimiento GetArgs tiene una utilidad adicional y es poder enviar datos entre módulos VB, sin haber declarado variables. Personalmente lo he usado mucho de esta manera. Se usa el procedimiento SendCommand (por lexico), por ejemplo desde el código de un Form: SendCommand "Precio/" & Precio. Desde otro Form (generalmente un cuadro de dialogo):
Dim PrecioActual as Currency .... If argsCount = 2 then If arg(0) = "Precio" then PrecioActual = args(1) End if End If ....
De esta manera se reduce código y variables que se utilizan con muy poca frecuencia. Son técnicas de programación para de fanáticos de la eficiencia. El código del módulo se muestra a continuación:
Attribute VB_Name = "modArgs" '===================================================== ' Prosecution Commands ' by Harvey T. '===================================================== DefInt A-Z Option Explicit Public args() As Variant Public argsStore As Boolean Public argsCount As Integer Public Const chSL = "/" Public Sub GetArgs(ByVal s As Variant) Dim nxt As Integer Dim i As Integer Dim x As String s = Trim$(CStr(s)) i = 0 x = s ReDim args(0 To i) Do nxt = InStr(x, chSL) If nxt Then args(i) = RTrim$(Left$(x, nxt - 1)) i = i + 1 ReDim Preserve args(i) x = LTrim$(Mid$(x, nxt + 1)) Else args(i) = x End If Loop Until nxt = 0 argsStore = IIf(args(0) = "", False, True) argsCount = IIf(argsStore, UBound(args) + 1, 0) End Sub Public Sub SendCommand(s As String) GetArgs s End Sub
Este vínculo bajará un proyecto con un ejemplo y este artículo «download» .
Harvey Triana
Envíe sus comentarios a:
[email protected]
Derechos libres de reutilización solo para programación.