Mostrando las entradas con la etiqueta if-endif-else. Mostrar todas las entradas
Mostrando las entradas con la etiqueta if-endif-else. Mostrar todas las entradas

viernes, 1 de mayo de 2020

Eliminar archivos duplicados


Este código lo hice al ver que una carpeta tenía muchas imágenes repetidas, es decir totalmente idénticas, de ahí surge el problema y la pregunta. ¿Como eliminar las imagenes (.png) iguales?. Pues bien se me ocurrió usar el comando de Linux de consola "sha256sum" el cual te da un hash único, en teoría es imposible que salgan dos hashes iguales si los archivos son diferentes, solamente salen iguales si son idénticos. Este método es usado para comprobar la integridad de un archivo que ha sido descargado. Un ejemplo lo tenemos en el mismo Gambas, en la granja después de elegido un proyecto y descargado Gambas comprueba el hash, si es distinto te tirar error si es igual te dice que el archivo se descargo correctamente.

El código fuente se encuentra en la granja. Saludos

https://gambas.one/gambasfarm/?id=803&action=search


sábado, 30 de abril de 2016

While... Wend (Bucle-Repetición)





' gambas module file

' by postapase
' Da comienzo a un bucle delimitado por las instrucciones While ...WEND.
' El bucle se repite mientras la Expresión sea cierta.
' Si la expresión es falsa al inicio, el bucle nunca se ejecuta.

Public Sub Main()
Dim EntroEnBucle As Boolean ' el valor predeterminado de una variable de tipo boolean es false
Dim x As Integer

x = 1

While x <= 7 'si x es menor o igual a 7 entonces lea la siguiente linea sino lea a partir de la siguiente linea de Wend
Print "x ahora es: "; x
If EntroEnBucle = False Then EntroEnBucle = True
Inc x
Wend 'lea a partir del while

If EntroEnBucle = True
Print "Se entro en el bucle porque la condicion de entrada fue True/verdadera"
Else
Print "No se entro en el bucle porque la condicion de entrada fue false/falsa"
Endif

End

viernes, 17 de abril de 2015

función de IDE gambas


De aquí en mas iré publicando mis análisis del código de la IDE gambas.
Sera algo asi como analisis del codigo de un experto por un novato jaja.
(tengan precaución con mis comentarios no me hago responsable de mis horrores)

' gambas class file

'by postapase

'conjunto de caracteres que no se pueden usar para un nombre de archivo
Private Const FILE_FORBIDDEN_CAR As String = "?*/~" 'declaracion de constante de tipo string

Public Sub Form_Open()
Me.Center 'centra el formulario
End

Public Function CheckFileName(sName As String, Optional sDir As String) As String
'esta función es parte de la ide de gambas 3.7 se encuentra en el modulo Project
'leer el post: http://novatocodegambas.blogspot.com/2014/05/juguemos-ser-benoit-minisini.html
'función compuesta por dos argumentos uno obligatorio que es sName y el otro opcional es decir no es obligatorio
'colocar el argumento. Esta función retorna un valor de tipo string
'partes de la función:
'Declaracion: Public Function CheckFileName
'Argumentos: (sName As String, Optional sDir As String)
'Dato que retorna o devuelve la función: As String
Dim iInd As Integer

If Not sName Then Goto VOID_NAME 'chequea si el nombre es nulo o vacio.
'salta de aqui a la Etiqueta VOID_NAME:

If String.Left$(sName) = "." Then 'chequea si el primer caracter del nombre empieza por punto
iInd = 1
Goto BAD_START 'salta de aqui a la Etiqueta BAD_START: si el if devuelve true
Endif

For iInd = 1 To String.Len(sName) 'recorre el nombre del archivo viendo si tiene un caracter ilegal

If InStr(FILE_FORBIDDEN_CAR, String.Mid$(sName, iInd, 1)) Then Goto BAD_CHAR
'salta de aqui a la Etiqueta BAD_CHAR: si el if devuelve true

Next

If Len(sDir) Then
'verifica si el archivo ya existe
If Exist(sDir &/ sName) Then Goto ALREADY_EXIST 'salta de aqui a la Etiqueta ALREADY_EXIST: si el if devuelve true
Endif

Return
'Nombre vacio"
VOID_NAME:

Return ("Please type a name.") '"Por favor, escriba un nombre."

BAD_CHAR:

Return ("This name contains a forbidden character:") & " [ " & String.Mid$(sName, iInd, 1) & " ]"
'"Este nombre contiene un carácter prohibido"

BAD_START:

Return ("The name cannot begins with a dot.") '"El nombre no puede empezar por un punto."

ALREADY_EXIST:

Return ("This name is already used. Choose another one.") '"Este nombre ya está en uso. Elija otra."

End

Public Sub Button1_Click()
' este codigo lo agregue yo para ver funcionando la funcion
Print File.Name(FileChooser1.SelectedPath)
Print FileChooser1.Dir
Print FileChooser1.SelectedPath

Message.Info(CheckFileName(File.Name(FileChooser1.SelectedPath), FileChooser1.Dir))
'muestra el mensaje con el string que retorno la funcion CheckFileName
'si sale un mensaje sin texto es que el nombre esta correcto.

End

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

miércoles, 16 de abril de 2014

Recordar elecciones de checkbox



' Gambas class file

' antes que nada el componente gb.Settings( gestión de archivo de configuración debe estar activado)
' Proyecto, propiedades, componentes y buscas gb.Settings y activarlo

' estas variables de tipo boolean serán las que guardaremos en el archivo de configuración,
' si ellas están en true los botones se verán, si en false los botones no se verán, pues al estar
' en true los checkbox en su propiedad value estarán en true y ejecutaran su código interno.
' (/home/aqui ira tu nombre de usuario/.config/gambas3/checkbox.conf
' veras algo asi:
' [Visualizar]
' VerBoton1 = True
' VerBoton2 = True



Public VerBoton1 As Boolean
Public VerBoton2 As Boolean

Public Sub CheckboxVerBoton1_Click()
' al hacer clic en el checkbox, el checkbox analizara si su propiedad value es true o false
' sera true cuando el cuadrado tenga la v del ok y sera falso cuando este en blanco.
  If CheckboxVerBoton1.Value = True Then
     btn1.Visible = True
     VerBoton1 = True
  Else
    btn1.Visible = False
    VerBoton1 = False
  Endif
' con estas lineas guardamos en la variable de tipo Boolean  VerBoton1 si es igual a True o False
 Settings["Visualizar/VerBoton1"] = VerBoton1
 Settings.Save ' guarda en el archivo de configuracion ahora mismo, sino se pone esta linea
 ' se guardara cuando el programa se cierre

End

Public Sub CheckboxVerBoton2_Click()

  If CheckboxVerBoton2.Value = True Then
    btn2.Visible = True
    VerBoton2 = True
  Else
   btn2.Visible = False
   VerBoton2 = False
  Endif
   
 Settings["Visualizar/VerBoton2"] = VerBoton2
 Settings.Save

End
Public Sub Form_Open()
  ' con estas dos lineas leemos el archivo Settings para saber
  '  que valores tienen las variables VerBoton1 y VerBoton2
  VerBoton2 = Settings["Visualizar/VerBoton2"]
  VerBoton1 = Settings["Visualizar/VerBoton1"]
  
  If VerBoton1 = True Then
    CheckboxVerBoton1.Value = True
  Else
    CheckboxVerBoton1.Value = False
  Endif
 
   If VerBoton2 = True Then
    CheckboxVerBoton2.Value = True
  Else
    CheckboxVerBoton2.Value = False
  Endif
End

https://www.dropbox.com/s/pwa787c6gxdgtvi/checkbox-0.0.1.tar.gz

lunes, 18 de noviembre de 2013

Tanteador de Tenis de mesa


Buenas gente tanto tiempo, estoy medio desconectado de la programación y por eso me cuesta mucho retomar y programar se me olvidan cosas recién aprendidas, les consulto algo, soy jugador de ping pong y se me ocurrió crear un anotador de tantos digital para visualizar en pantalla completa, pero me encontré que no es simple como pensaba pues esta lleno de variables, y la verdad necesito mucha ayuda o mejor dicho me gustaría que alguien se sumara con este proyecto ojala sean todos a ver si sacamos este proyecto adelante ya que seria muy beneficioso para el deporte.
Recién comense el proyecto y esta plagado de errores y código basura pero soy novato y estoy aprendiendo voy a subir lo que he hecho, si alguien le interesa y le hace mejoras me gustaría que las subieran también. gracias

Tres cosas importantes faltan, una es terminar el proyecto que funcione bien
dos: que se ponga en pantalla completa
tres: que se pueda ir para atrás y para adelante en los tantos manteniendo todo como estaba antes por si el que anota se equivoca.

Nota: este post es estrategico: Como Crear Grupos De Trabajo Para Hacer Proyectos De Programación...
http://www.gambas-es.org/viewtopic.php?f=7&t=2799

Código fuente:  Dropbox: Tanteador-0.0.3
(el boton mas del jugador 2 esta funcionando, algunas mejoras visuales en el codigo fuente)
Dropbox: Tanteador-0.0.4.tar.gz
Dropbox: Tanteador-0.0.7.tar.gz
Dropbox: Tanteador-0.0.8.tar.gz
(ahora el boton saque indica adecuadamente quien saca en cada nuevo set)problema 2 resuelto.
Dropbox: Tanteador-0.0.9.tar.gz
problema 1 resuelto ( bueno por primera vez el programa toma color y esta funcionando, aun hay pequeños detalles que corregir pero FUNCIONAAAAAA!!!!)
DEJO UN PAQUETE DE INSTALACION DEB AQUI: gambas3-tanteador_0.0.1-0ubuntu1_all.deb  (ubuntu, mint)
sourceforge: tanteador 0.1.3

Tanteador-0.1.7.tar.gz
gambas3-tanteador_0.0.1-0ubuntu3_all.deb

Última versión