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.


Procesando Comandos

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: psoft@latino.net.co
Derechos libres de reutilización solo para programación.