Mostrando las entradas con la etiqueta Continue. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Continue. Mostrar todas las entradas

sábado, 22 de noviembre de 2014

Guardar/Cargar configuraciones en un txt




El Tanteador de tenis de mesa tiene una ventana donde se puede configurar los distintos colores del la interfaz clásica, y también se puede guardar y cargar configuraciones, pero... no esta bien programado ni es cómodo para el usuario.
Por ese motivo me puse a buscar un método mas conveniente para crear archivos de configuraciones de colores que se les puede poner el nombre de la persona que eligió esos colores con lo cual es fácil de identificar cuales son los colores que cada persona eligió, con una extencion a nuestro gusto en este caso yo le asigne la extencion .ConfigColor pero puede ser cualquiera a su elección

 Así se ve el archivo de configuración de colores con dos valores: Letra y Fondo,
pero puede tener cientos de valores según la necesidad de nuestro programa.





' gambas class file

' by postapase
Public JuegoColores As String
Public Fondo As String
Public Letra As String

Public Sub Form_Open()
Me.Center
Me.Caption = "Configuracion de colores"
End

Public Sub btnGuardar_Click()
Dim sPath As String

If Dialog.SaveFile() Then Return
sPath = Dialog.Path
File.Save(sPath & ".ConfigColor", JuegoColores)

End

Public Sub ColorButton1_Change()
Actualizar
End

Public Sub ColorButton2_Change()
Actualizar
End

Public Sub Actualizar()
Letra = "Letra=" & ColorButton1.Value
Fondo = "Fondo=" & ColorButton2.Value
LabPostapase.Foreground = ColorButton1.Value
LabPostapase.Background = ColorButton2.Value
JuegoColores = Letra & gb.NewLine
JuegoColores &= Fondo
End

Public Sub btnCargar_Click()
Dim sPath As String
Dim dato As String
Dim ArchivoX As File
Dim LineaX As String
Dim DatoX As String[]

Dialog.Filter = ["*.ConfigColor", ("Configuración de colores")]

If Dialog.OpenFile() Then Return
sPath = Dialog.Path

ArchivoX = Open sPath For Read

While Not Eof(ArchivoX)

Line Input #ArchivoX, LineaX

If InStr(LineaX, "Letra") <> 0 Then
DatoX = Split(LineaX, "=")
ColorButton1.Value = Val(Trim(DatoX[1]))
Continue
Endif

If InStr(LineaX, "Fondo") <> 0 Then
DatoX = Split(LineaX, "=")
ColorButton2.Value = Val(Trim(DatoX[1]))
Continue
Endif

Wend

Close ArchivoX
Actualizar()

End

Public Sub btnPredeterminados_Click()
ColorButton1.Value = &H000000
ColorButton2.Value = &HFFFFFF
Actualizar()
End



Código fuente:  ConfigColor-0.0.1.tar.gz

sábado, 18 de octubre de 2014

Solución a Reto Solveet (Desglose en billetes)

Usando un bucle mediante Repeat/Until y Continue. Si la cantidad data es igual o mayor que 500 le restamos 500 si el resto es mayor o igual a 500 repetimos la operación sino continuamos con el billete menor de 200 así sucesivamente con las demás cantidades, cuando el resto sea 0 detenemos el bucle .



' gambas class file

' by postapase

Public Sub btnDesglosar_Click()
Dim Euros As Long
Dim Resto As Long
Dim Billete500, Billete200, Billete100, Billete50, Billete20, Billete10, Billete5, Moneda2, Moneda1 As Long
Euros = Val(txtEuros.Text)

TextArea1.Clear

Repeat
If Euros >= 500 Then
Resto = Euros - 500
Euros = Resto
Inc Billete500
If Euros < 500 Then
If Billete500 > 1 Then
TextArea1.Text &= Billete500 & " Billetes de 500 euros" & gb.NewLine
Else
TextArea1.Text &= Billete500 & " Billete de 500 euros" & gb.NewLine
Endif
Endif
If Resto > 500 Then Continue
Endif

If Euros >= 200 Then
Resto = Euros - 200
Euros = Resto
Inc Billete200
If Euros < 200 Then
If Billete200 > 1 Then
TextArea1.Text &= Billete200 & " Billetes de 200 euros" & gb.NewLine
Else
TextArea1.Text &= Billete200 & " Billete de 200 euros" & gb.NewLine
Endif
Endif
If Resto > 200 Then Continue
Endif

If Euros >= 100 Then
Resto = Euros - 100
Euros = Resto
Inc Billete100
If Euros < 500 Then
If Billete100 > 1 Then
TextArea1.Text &= Billete100 & " Billetes de 100 euros" & gb.NewLine
Else
TextArea1.Text &= Billete100 & " Billete de 100 euros" & gb.NewLine
Endif
Endif
If Resto > 100 Then Continue
Endif

If Euros >= 50 Then
Resto = Euros - 50
Euros = Resto
Inc Billete50
If Euros < 50 Then
If Billete50 > 1 Then
TextArea1.Text &= Billete50 & " Billetes de 50 euros" & gb.NewLine
Else
TextArea1.Text &= Billete50 & " Billete de 50 euros" & gb.NewLine
Endif
Endif
If Resto > 50 Then Continue
Endif

If Euros >= 20 Then
Resto = Euros - 20
Euros = Resto
Inc Billete20
If Euros < 20 Then
If Billete20 > 1 Then
TextArea1.Text &= Billete20 & " Billetes de 20 euros" & gb.NewLine
Else
TextArea1.Text &= Billete20 & " Billete de 20 euros" & gb.NewLine
Endif
Endif
If Resto > 20 Then Continue
Endif

If Euros >= 10 Then
Resto = Euros - 10
Euros = Resto
Inc Billete10
If Euros < 10 Then
If Billete10 > 1 Then
TextArea1.Text &= Billete10 & " Billetes de 10 euros" & gb.NewLine
Else
TextArea1.Text &= Billete10 & " Billete de 10 euros" & gb.NewLine
Endif
Endif
If Resto > 10 Then Continue
Endif

If Euros >= 5 Then
Resto = Euros - 5
Euros = Resto
Inc Billete5
If Euros < 5 Then
If Billete20 > 1 Then
TextArea1.Text &= Billete5 & " Billetes de 5 euros" & gb.NewLine
Else
TextArea1.Text &= Billete5 & " Billete de 5 euros" & gb.NewLine
Endif
Endif
If Resto > 5 Then Continue
Endif

If Euros >= 2 Then
Resto = Euros - 2
Euros = Resto
Inc Moneda2
If Euros < 2 Then
If Moneda2 > 1 Then
TextArea1.Text &= Moneda2 & " Monedas de 2 euros" & gb.NewLine
Else
TextArea1.Text &= Moneda2 & " Moneda de 2 euros" & gb.NewLine
Endif
Endif
If Resto >= 2 Then Continue
Endif

If Euros >= 1 Then
Resto = Euros - 1
Euros = Resto
Inc Moneda1
If Euros < 1 Then
If Moneda1 > 1 Then
TextArea1.Text &= Moneda1 & " Monedas de 1 euros" & gb.NewLine
Else
TextArea1.Text &= Moneda1 & " Moneda de 1 euros" & gb.NewLine
Endif
Endif
If Resto > 1 Then Continue
Endif
Until Resto = 0

End

jueves, 4 de septiembre de 2014

Ordenamiento de burbuja usando Repeat y Continue

Otro ejemplo usando Repeat y Continue



Que es el Ordenamiento_de_burbuja?

' gambas class file
'by postapase

Public num As Integer
Public numeritos As String

Public Sub Form_Open()
Me.Center
End

Public Sub Button1_Click()
Dim arrayNum As Integer[] = ["55", "86", "48", "16", "82"]
Dim x, y, a, s, Rota1, Rota2 As Integer

TextArea1.Clear

Repeat
If a = 4 Then a = 0
If y = 4 Then y = 0
If arrayNum[y] < arrayNum[a + 1] Then
Inc y
Inc a
Inc s
Continue
Endif
Rota1 = 0
Rota2 = 0
Rota1 = arrayNum[y]
Rota2 = arrayNum[a + 1]
arrayNum[y] = Rota2
arrayNum[a + 1] = Rota1
Dec s
For Each num In arrayNum
numeritos &= num & " "
Wait 0.2
Next
TextArea1.Text &= numeritos & gb.NewLine
numeritos = ""
Until s > 4

For Each num In arrayNum
numeritos &= num & " "
Wait 0.2
Next
TextArea1.Text &= gb.NewLine & "Resultado final es: " & numeritos & gb.NewLine
End

Código fuente: OrdenandoNumeros

Continue

Aquí un ejemplo de como usar Continue y su modo de aplicarlo.


' gambas class file

'by postapase (novato en programación)

Public Sub btnBuscar_Click()
Dim x, contador, encontrados As Integer '

For x = 1 To txtNumero.Text
If Right$(CString(x)) <> 5 Then Continue 'Right$ nos devuelve el primer caracter empezando de la derecha, y si es diferente a cinco
' no ejecuta las lineas después de este comentario va derecho al Next y del Next a la primera linea dentro del For ,
' en este caso( If Right$(CString(x)) <> 5 Then Continue ), y si es igual se ejecutan las lines siguientes a continue
' aqui el sentido de usar continue
Inc encontrados
Wait 0.05
TextArea1.Text &= " (" & encontrados & ") números terminados en 5: " & x & gb.NewLine
Next

End

Public Sub txtNumero_KeyPress()
Select Case Key.Code ' examina que tecla fue presionada
Case 48 To 57 'si se preciona alguna tecla del 0 al nueve no hace nada
Case Else ' en cambio si se preciona cualquier tecla que no sea las incluidas en el Case anterior detiene el evento
'lo que logramos con esto es que el usuario no pueda teclear letras o cualquier caracter que no sea un número
Stop Event
End Select
End

Public Sub Form_Open()
Me.Center
End
Código fuente: Continue-0.0.1.tar.gz