22-11-2021, 17:36
Buenas!.
Pues en este ejemplo es donde estuve "complicándome" con el carácter de tabulación.
Hice un ejemplo en Gambas donde usaba dos colores y luego con los "mismos colores" y también el mismo ejemplo pero
para Python con la librería Tk.
Con Gambas:
![[Imagen: DwPrv1D.png]](https://i.imgur.com/DwPrv1D.png)
Con Python y la librería TkInter:
![[Imagen: 4WpY9e5.png]](https://i.imgur.com/4WpY9e5.png)
Aunque el nombre de la constante es el mismo para los colores, la configuración no lo es.
En TkInter es como más apagado.
Así que encontré un archivo en /usr/share/X11/rgb.txt
Donde se encuentran todas las configuraciones de colores y creé un ejemplo para poder leerlas.
¿ Sabéis cuantas configuraciones encontré con nombres distintos y configuraciones que podían ser iguales ?
Un total de: 753 configuraciones!.
Y es que podemos encontrar por ejemplo: "floral white" y "FloralWhite"...
Entonces construí una especie de diccionario de sinónimos. Una colección invertida.
Original, ejemplo, parte:
![[Imagen: QCibQOY.png]](https://i.imgur.com/QCibQOY.png)
Y con la inversión puede ser así:
![[Imagen: fErYsu9.png]](https://i.imgur.com/fErYsu9.png)
Y ahora pues estoy intentando crear un ejemplo que me muestre en pantalla todas esas configuraciones con colores.
Os subo la parte que maneja las colecciones con los colores.
Saludos
Pues en este ejemplo es donde estuve "complicándome" con el carácter de tabulación.
Hice un ejemplo en Gambas donde usaba dos colores y luego con los "mismos colores" y también el mismo ejemplo pero
para Python con la librería Tk.
Con Gambas:
![[Imagen: DwPrv1D.png]](https://i.imgur.com/DwPrv1D.png)
Con Python y la librería TkInter:
![[Imagen: 4WpY9e5.png]](https://i.imgur.com/4WpY9e5.png)
Aunque el nombre de la constante es el mismo para los colores, la configuración no lo es.
En TkInter es como más apagado.
Así que encontré un archivo en /usr/share/X11/rgb.txt
Donde se encuentran todas las configuraciones de colores y creé un ejemplo para poder leerlas.
¿ Sabéis cuantas configuraciones encontré con nombres distintos y configuraciones que podían ser iguales ?
Un total de: 753 configuraciones!.
Y es que podemos encontrar por ejemplo: "floral white" y "FloralWhite"...
Entonces construí una especie de diccionario de sinónimos. Una colección invertida.
Original, ejemplo, parte:
![[Imagen: QCibQOY.png]](https://i.imgur.com/QCibQOY.png)
Y con la inversión puede ser así:
![[Imagen: fErYsu9.png]](https://i.imgur.com/fErYsu9.png)
Código:
Public Sub Form_Open()
Dim fichero As String
Dim ruta As String = "/usr/share/X11/rgb.txt"
Dim linea As String
Dim nombredelcolor As String
Dim posicion As Integer
Dim ccolores As New Collection
Try fichero = File.Load(ruta)
For Each linea In Split(fichero, "\n", "'", True, False)
If Left(linea, 1) = "!" Or IsNull(linea) Then
Continue
Else
'Lugar donde se encuentra el primer caracter tabulador por la derecha
posicion = RInStr(linea, "\t")
'El nombre del color se encuentra en una posición más allá del caracter tabulador hasta el final
nombredelcolor = Mid(linea, posicion + 1)
'La nueva linea de texto ya no va a contener el nombre del color
linea = Trim(Left(linea, posicion))
'Sustituyo todos los caracteres de tabulación por espacios
linea = Replace(linea, "\t", " ")
'Añado los valores RGB en decimal como texto y como clave el nombre del color
ccolores.Add(linea, nombredelcolor)
Endif
Next
If Error Then
Print Subst("No encontré el archivo &1 en &2", Split(ruta, "/").last, ruta)
Else
Print "He encontrado " & ccolores.Length & " configuraciones de colores con repetición." '753
Endif
InvertirColeccion(ccolores)
End
Public Function InvertirColeccion(clavevalor As Collection) As Collection
Dim valores_clave As New Collection
Dim valor As String
Dim clave As String
Dim aclaves As String[]
For Each valor In clavevalor
'Obtengo una clave
clave = clavevalor.Key
'Compruebo que el valor no existe como clave en valores_clave
If Not valores_clave.Exist(valor) Then
'En caso de no existir. Creo un array que va contener las claves que sus valores son iguales
aclaves = New String[]
aclaves.Add(clave)
'Asigno a la coleccion como valores el array de claves y como clave el valor que es el mismo con las claves de clavevalor
valores_clave[valor] = aclaves
Else
'Si ya existe una clave valor, añado otra clave de clavevalor al array
valores_clave[valor].Add(clave)
Endif
Next
Print "He encontrado " & valores_clave.Length & " configuraciónes de colores sin repetición " '505
Return valores_clave
End
Y ahora pues estoy intentando crear un ejemplo que me muestre en pantalla todas esas configuraciones con colores.

Os subo la parte que maneja las colecciones con los colores.
Saludos