En este ejemplo se va a ver como funciona una bandera en el flujo de un programa, como usarlas
para que se cumpla una condición y también como usar múltiples banderas.
Supongamos un caso hipotético que a la hora de crear una lista de nombres para luego imprimirlos,
una aplicación ha creado un archivo de texto con este formato:
Citar:
Bien. Más o menos los símbolos de "-----" suelen aparecer al comienzo de cada página impresa o texto.
A mi me gustaría que lo mostrase de esta forma:
Un encabezado nombres, los caracteres "-----" y luego debajo que vayan apareciendo todos los nombres.
Citar:
Busco que solo se muestre "--------" una sola vez y no más de una.
El resultado de convertir el código en Python a gambas fue este:
Public Sub Main()
Dim contenido As String
contenido = File.Load("ListaNombres.txt")
ProcesarContenido(contenido)
End
Public Sub ProcesarContenido(texto As String)
Dim linea As String
Dim bandera As Boolean
bandera = False
For Each linea In Split(texto, "\n")
linea = Trim(linea)
If Left(linea, 1) = "-" Then
If Not bandera Then
Print linea
bandera = True
Endif
Else
Print linea
Endif
Next
End
Dim contenido As String
contenido = File.Load("ListaNombres.txt")
ProcesarContenido(contenido)
End
Public Sub ProcesarContenido(texto As String)
Dim linea As String
Dim bandera As Boolean
bandera = False
For Each linea In Split(texto, "\n")
linea = Trim(linea)
If Left(linea, 1) = "-" Then
If Not bandera Then
Print linea
bandera = True
Endif
Else
Print linea
Endif
Next
End
La salida fue:
Citar:
Ahora bien, me surgió esta duda. ¿ Y si quiero múltiples banderas ?. Supongamos esta vez que la salida de la aplicación fue esta:
Citar:
Ahora se repite NOMBRES también!.
Bien, se me ocurrió que podía usar una colección de banderas.
Public Sub Main()
Dim contenido As String
Dim banderas As Collection
banderas = ["-------": False, "NOMBRES": False]
contenido = File.Load("ListaNombres.txt")
ProcesarContenido(contenido, banderas)
End
Public Sub ProcesarContenido(texto As String, semaforos As Collection)
Dim linea As String
For Each linea In Split(texto, "\n")
linea = Trim(linea)
If semaforos.Exist(linea) Then
If Not semaforos[linea] Then
Print linea
semaforos[linea] = True
Endif
Else
Print linea
Endif
Next
End
Dim contenido As String
Dim banderas As Collection
banderas = ["-------": False, "NOMBRES": False]
contenido = File.Load("ListaNombres.txt")
ProcesarContenido(contenido, banderas)
End
Public Sub ProcesarContenido(texto As String, semaforos As Collection)
Dim linea As String
For Each linea In Split(texto, "\n")
linea = Trim(linea)
If semaforos.Exist(linea) Then
If Not semaforos[linea] Then
Print linea
semaforos[linea] = True
Endif
Else
Print linea
Endif
Next
End
La salida fue:
Citar:
Evitamos la repetición de "-------" y "NOMBRES"
Si aplicamos una interfaz con formulario podríamos escoger que palabras no queremos que se muestren más de una vez.
Aquí tenéis el código:
Saludos
Banderas_Semaforos.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Banderas_Semaforos.tar.gz | |
Tamaño: | 4.98 KB | |
Descargado: | 45 veces |
Banderas_Semaforos.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Banderas_Semaforos.tar.gz | |
Tamaño: | 4.98 KB | |
Descargado: | 45 veces |
Banderas_Semaforos.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Banderas_Semaforos.tar.gz | |
Tamaño: | 4.98 KB | |
Descargado: | 45 veces |