https://foro.gambas-es.org/viewtopic.php?f=1&t=4429&p=25257#p25257
-----------------------------------
Shell
Martes, 03 Marzo 2015, 20:33

Clase Gb.args
-----------------------------------
Hola!.

¿ Alguien ha creado algún ejemplo o sabéis algo de esta clase ?. No encontré nada.
Estoy haciendo un ejemplo sin esta clase, usando application.args y me temo que me quedo corto.

Lo malo de hacer un componente, clase, es que aunque muestre opciones, si no se crea un ejemplo,
nos quedamos a medias.  :???: 

Os explico "brevemente".

Quiero crear una aplicación para linea de comando. En esta aplicación habrá una serie de argumentos u opciones
por ejemplo:

-year
-language

En principio he creado esta clase: Los nombres no son acertados.

ClaseOpcion. Tiene tres propiedades. El nombre del argumento, si está activa y el valor

[code linenumbers=false syntax=gambas]
Private hopcion As String
Property opcion As String

Private hactiva As Boolean
Property activa As Boolean

Private hvalor As String
Property valor As String

Private Function opcion_Read() As String
  
  Return hopcion  
  
End

Private Sub opcion_Write(Value As String)
  
  hopcion = Value
  
End

Private Function activa_Read() As Boolean
  
  Return hactiva
  
End

Private Sub activa_Write(Value As Boolean)
  
  hactiva = Value  
  
End

Private Function valor_Read() As String
  
  Return hvalor  
  
End

Private Sub valor_Write(Value As String)
  
  hvalor = Value  
  
End
[/code]

Luego en el modulo principal hasta ahora solo muestro las opciones activas:
Así que si escribo en la consola:
 
Aplicación -year  
Me mostraría: -year

Si hago:
Aplicacion -year -language
Me mostraría: 
 -year -language

Muestra primero -year por que es el primer elemento de la colección,
lo hago con un bucle.

[code linenumbers=false syntax=gambas]
Private op As ClaseOpcion  
Private colopciones As New Collection 

Public Sub Main()
  
  Dim parametro As String
  
  op = New ClaseOpcion
  With op
    .opcion = "-year"
    .activa = False    
    .valor = Null
  End With    
  colopciones.Add(op, op.opcion)
  
  op = New ClaseOpcion
  With op
    .opcion = "-language"
    .activa = False    
    .valor = Null
  End With 
  colopciones.Add(op, op.opcion)
  
  op = New ClaseOpcion
  
  'Analizamos los parametros      
  For Each parametro In Application.Args
    'Buscar un nombre de opcion
    If InStr(parametro, "-") And If colopciones.Exist(parametro) Then 
      op = colopciones[parametro]
      'Por ahora solo cambio si la opcion esta activa o no.
      op.activa = True        
    Endif
  Next
  
  'Mostrar opciones activas
  For Each op In colopciones
    'Si esta activa la opcion, muestrala
    If op.activa Then Print op.opcion
  Next
  
End
[/code]


Saludos


