Comunidad Gambas-es

Versión completa: Conversor numero romano a arabico o arabico a romano
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Alguien   sabe si hay por la web algun programa instalable para Gambas que haga conversion de numero romano a arabe y de arabe a romano.

Tengo un programa que siempre lo usaba ya que no habia otro y era muy bueno y consistia en un ejecutable hecho para Linux Mint que si lo marcabas como ejecutable se lanzaba con el click o desde menu y podias poner los numeros en arabe o romano y te los convertia entre ellos.

Pero ahora hice la transicion de Lubuntu 14.04 a Bunsenlabs y ese mismo programa no se lanza por falta de child process (proceso hijo).

He buscado en la gambas farm y no logro ver nada similar pero seguro que alguno hizo eso en Gambas y no lo encuentro.

Si teneis idea de algo decid, mil gracias por ello.

Por si quereis probar el programa que hablo, tube que subirlo a la web ya que la pagina de donde lo baje alla por 2014 no logre encontrarla no e acuerdo de ella en concreto y no la encuentro en mis bookmarks importados, hice muchas busquedas y nada.
Dejo un enlaze donde lo subi or 7 dias ya que el maga.nz tambien empezo a no loguearme.
Decir ademas que ya he visto un monton de scripts que hacen cosas a medio pero ninguno hace lo que hacias este
rom2num

Gracias.
He logrado obtener ayuda en el foro bunsenlabs para de alguna forma tener algo usable.

Consiste en usar python pip y un script llamado roman.

Si so insteresa dejo el tema →

bunsenlabs

Si quereis usar ha que instalar pip 
Cita:
Código:
sudo apt-get install python3-pip

Despues instalar el script programa
Cita:
Código:
pip3 install --user roman

Y despues para usar el programa hay que tener alias en el bash.rc
Cita:alias a2r="~/.local/bin/roman"

alias r2a="~/.local/bin/roman -r"

Uno para las operaciones romano a arabico y la otra para arabico a romano

Despues para que el script programa se use hay que ira al directorio de su ejecutor que es en 
Cita:cd ~/.local/bin

Y ally darle uso a la interpretacion que el programa acepta
Cita:$ ./roman -r XXX

$ ./roman 30
He conseguido que esto funcione de árabe a romano. Voy a trabajar en el romano al árabe.

GAMBAS
  1. ' Gambas class file
  2.  
  3. HBox1 As HBox
  4. HBox2 As HBox
  5. TextBoxArabIn As TextBox
  6. Label1 As Label
  7. Label2 As Label
  8. LabelRomanOut As Label
  9.  
  10. sThous As String[] = ["", "M", "MM", "MMM", "MMMM", "MMMMM", "MMMMMM", "MMMMMMM", "MMMMMMMM", "MMMMMMMMM"]
  11. sHuns As String[] = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"]
  12. sTens As String[] = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"]
  13. sNumerals As String[] = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"]
  14. sAll As String[][] = [[""], sThous, sHuns, sTens, sNumerals]
  15.  
  16. Public Sub TextBoxArabIn_Change()
  17.  
  18.   Dim sText As String = Trim(TextBoxArabIn.Text)
  19.   Dim sCheck As String = "0123456789"
  20.   Dim iLoop, iCount As Integer
  21.   Dim sWork As New String[]
  22.  
  23.   If Len(sText) > 4 Then sText = Mid(sText, 1, 4)
  24.   sWork.Add("")
  25.   LabelRomanOut.Text = ""
  26.  
  27.   For iLoop = 0 To Len(sText) - 1
  28.     If InStr(sCheck, sText[iLoop]) > 0 Then sWork.Add(sText[iLoop])
  29.   Next
  30.  
  31.   iCount = 5 - sWork.Max
  32.  
  33.   For iLoop = 1 To sWork.Max
  34.     LabelRomanOut.Text &= sAll[iCount][Val(sWork[iLoop])]
  35.     Inc iCount
  36.   Next
  37.  
  38.   TextBoxArabIn.Text = Mid(sWork.Join(""), 1)
  39.  
  40.  
  41. Public Sub Form_Open()
  42.  
  43.   With Me
  44.     .H = 65
  45.     .W = 460
  46.     .Arrangement = Arrange.Vertical
  47.     .Padding = 5
  48.  
  49.   With HBox1 = New HBox(Me)
  50.     .H = 28
  51.  
  52.   With HBox2 = New HBox(Me)
  53.     .H = 28
  54.     .Invert = True
  55.  
  56.   With TextBoxArabIn = New TextBox(HBox1) As "TextBoxArabIn"
  57.     .H = 28
  58.     .W = 80
  59.     .Alignment = Align.Right
  60.  
  61.   With Label1 = New Label(HBox1)
  62.     .H = 28
  63.     .W = 35
  64.     .Alignment = Align.Center
  65.     .Text = " = "
  66.  
  67.   With LabelRomanOut = New Label(HBox1) As "LabelRomanOut"
  68.     .H = 28
  69.     .Border = Border.Plain
  70.     .Expand = True
  71.     .Font = Font["freeserif,12,bold"]
  72.  
  73.   With Label2 = New Label(HBox2)
  74.     .H = 28
  75.     .AutoResize = True
  76.     .Alignment = Align.BottomRight
  77.     .Text = "Charlie Ogier Software"
  78.  


Smile  Pues seria util tener un programa para eso a distancia de click, imagino que en gambas se pueda hacer por eso lo puse por aqui. Lo que no esperaba era que alguien lo hiciera tan rapido ya que por mucho que busquemos por net no hay ninguno y debe ser dificil hacerlo. Pero Gambas es potente y nos pude sorprender.

Gracias por tu aporte estare atento al hilo por lo menos puedo leer código y intentar aprender.
BIEN. Aquí está el programa completo. Ahora puedes convertirlo de cualquier manera. Hazme saber si hay algún error.

GAMBAS
  1. ' Gambas class file
  2.  
  3. HBox1 As HBox
  4. HBox2 As HBox
  5. HBox3 As HBox
  6. TextBoxArabIn As TextBox
  7. TextBoxRomanIn As TextBox
  8. Label1 As Label
  9. Label2 As Label
  10. Label3 As Label
  11. LabelRomanOut As Label
  12. LabelArabOut As Label
  13. Panel1 As Panel
  14.  
  15. sThous As String[] = ["", "M", "MM", "MMM", "MMMM", "MMMMM", "MMMMMM", "MMMMMMM", "MMMMMMMM", "MMMMMMMMM"]
  16. sHuns As String[] = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"]
  17. sTens As String[] = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"]
  18. sNumerals As String[] = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"]
  19. sAll As String[][] = [[""], sThous, sHuns, sTens, sNumerals]
  20.  
  21. Public Sub TextBoxArabIn_Change()
  22.  
  23.   Dim sText As String = Trim(TextBoxArabIn.Text)
  24.   Dim iLoop, iCount As Integer
  25.   Dim sWork As New String[]
  26.  
  27.   If Len(sText) > 4 Then sText = Mid(sText, 1, 4)
  28.   sWork.Add("")
  29.   LabelRomanOut.Text = ""
  30.  
  31.   For iLoop = 0 To Len(sText) - 1
  32.     If InStr("0123456789", sText[iLoop]) > 0 Then sWork.Add(sText[iLoop])
  33.   Next
  34.  
  35.   iCount = 5 - sWork.Max
  36.  
  37.   For iLoop = 1 To sWork.Max
  38.     LabelRomanOut.Text &= sAll[iCount][Val(sWork[iLoop])]
  39.     Inc iCount
  40.   Next
  41.  
  42.   TextBoxArabIn.Text = Mid(sWork.Join(""), 1)
  43.   TextBoxRomanIn.Text = LabelRomanOut.Text
  44.  
  45.  
  46. Public Sub TextBoxRomanIn_Change()
  47.  
  48.   Dim sOrder As String[] = ["M", "D", "C", "L", "X", "V", "I"]
  49.   Dim iOrder As Integer[] = [1000, 500, 100, 50, 10, 5, 1]
  50.   Dim sLess As String[] = ["CM", "CD", "XC", "XL", "IX", "IV"]
  51.   Dim iLess As Integer[] = [900, 400, 90, 40, 9, 4]
  52.   Dim sText As String = Trim(UCase(TextBoxRomanIn.Text))
  53.   Dim iLoop, iTotal As Integer
  54.   Dim iPos As Integer
  55.   Dim sHold, sVal As String
  56.  
  57.   For iLoop = 0 To Len(sText) - 1
  58.     If InStr("MDCLXVI", sText[iLoop]) > 0 Then sHold &= sText[iLoop]
  59.   Next
  60.  
  61.   sText = sHold
  62.  
  63.   For iLoop = 0 To sLess.Max
  64.     iPos = InStr(sHold, sLess[iLoop])
  65.     If iPos > 0 Then
  66.       sVal = Mid(sHold, iPos, 2)
  67.       iTotal += iLess[sLess.Find(sVal)]
  68.       sHold = Replace(sHold, sVal, "")
  69.     End If
  70.   Next
  71.  
  72.   For iLoop = 0 To Len(sHold) - 1
  73.     iTotal += iOrder[sOrder.Find(sHold[iLoop])]
  74.   Next
  75.  
  76.   LabelArabOut.Text = Str(iTotal)
  77.   TextBoxRomanIn.Text = sText
  78.   TextBoxArabIn.Text = LabelArabOut.Text
  79.  
  80.  
  81. Public Sub Form_Open()
  82.  
  83.   With Me
  84.     .H = 100
  85.     .W = 460
  86.     .Arrangement = Arrange.Vertical
  87.     .Padding = 5
  88.     .Title = "V=5"
  89.  
  90.   HBox1 = New HBox(Me)
  91.   HBox1.H = 28
  92.  
  93.   With TextBoxArabIn = New TextBox(HBox1) As "TextBoxArabIn"
  94.     .H = 28
  95.     .W = 80
  96.     .Alignment = Align.Right
  97.  
  98.   With Label1 = New Label(HBox1)
  99.     .H = 28
  100.     .W = 35
  101.     .Alignment = Align.Center
  102.     .Text = " = "
  103.  
  104.   With LabelRomanOut = New Label(HBox1) As "LabelRomanOut"
  105.     .H = 28
  106.     .Border = Border.Plain
  107.     .Expand = True
  108.     .Font = Font["freeserif,12,bold"]
  109.  
  110.   Panel1 = New Panel(Me)
  111.   Panel1.H = 7
  112.  
  113.   HBox3 = New HBox(Me)
  114.   HBox3.H = 28
  115.  
  116.   With TextBoxRomanIn = New TextBox(HBox3) As "TextBoxRomanIn"
  117.     .H = 28
  118.     .Expand = True
  119.     .Font = Font["freeserif,12,bold"]
  120.  
  121.   With Label3 = New Label(HBox3)
  122.     .H = 28
  123.     .W = 35
  124.     .Alignment = Align.Center
  125.     .Text = " = "
  126.  
  127.   With LabelArabOut = New Label(HBox3) As "LabelArabOut"
  128.     .H = 28
  129.     .W = 80
  130.     .Border = Border.Plain
  131.     .Alignment = Align.Right
  132.  
  133.   With HBox2 = New HBox(Me)
  134.     .H = 28
  135.     .Invert = True
  136.  
  137.   With Label2 = New Label(HBox2)
  138.     .H = 28
  139.     .AutoResize = True
  140.     .Alignment = Align.BottomRight
  141.     .Text = "Charlie Ogier Software V1.0.0"
  142.  


Si el programa funciona aqui, solo necesito ahora hacerle la parte grafica creo que eso lo puedo intentar.

Menudo trabajo hiciste en tan poco tiempo. Es que soys genios por aqui  Smile .

A ver si ponemos algun .deb por aqui para que funcione a click, tambien lo puedes subir a gambas farm creo que seria un buen programa para tener ally.

Seguir informando sobre el tema grafico.
He hecho un Fmain y le he puesto los componentes o controles con el nombre especificado, le he puesto distintos colores a los componentes para diferenciar mientras intento hacer que me devuelva el resultado en el tema grafico.

El color background blanco pertenece a los label con el nombre LabelRomanOut y LabelArabOut.

Pero no logro hacer que me aparezca el resultad en los componentes.
Podria ser falta de algun componente le puse gb.qt5 y gb.qt5.ext ?
Podria necesitar algun Module ?



Dejo una imagen.

[Imagen: Captura-de-ecr-2021-03-18-19-32-48.png]

[Perdona pero soy muy novato en esto de Gambas ya apenas se algunas cosillas más que nada conozco un poquito el IDE y sus menus pero de programación no entiendo mucho]

Gracias
Creo que lo has entendido mal. Los gráficos se crean en el código. Sólo tienes que pegar el código y ejecutar el programa.

Mira el video.
En efecto yo me fijo en tu codigo y creo que esa class.c tiene especificado el formulario o sea lo hiciste todo ally pero por algun motivo a mi el FMAIN grafico me sale todo en a te dejo foto.

Asi como soy tan novato pense que tenia que hacerle un FMAIN y al leer bien el código veo que ya lo haz hecho aqui →
Cita:
  1. Public Sub Form_Open()
  2.  
  3.   With Me
  4.     .H = 100
  5.     .W = 460
  6.     .Arrangement = Arrange.Vertical
  7.     .Padding = 5
  8.     .Title = "V=5"
  9.   End With
  10.  
  11.   HBox1 = New HBox(Me)
  12.   HBox1.H = 28
  13.  
  14.   With TextBoxArabIn = New TextBox(HBox1) As "TextBoxArabIn"
  15.     .H = 28
  16.     .W = 80
  17.     .Alignment = Align.Right
  18.   End With
  19.  
  20.   With Label1 = New Label(HBox1)
  21.     .H = 28
  22.     .W = 35
  23.     .Alignment = Align.Center
  24.     .Text = " = "
  25.   End With
  26.  
  27.   With LabelRomanOut = New Label(HBox1) As "LabelRomanOut"
  28.     .H = 28
  29.     .Border = Border.Plain
  30.     .Expand = True
  31.     .Font = Font["freeserif,12,bold"]
  32.   End With
  33.  
  34.   Panel1 = New Panel(Me)
  35.   Panel1.H = 7
  36.  
  37.   HBox3 = New HBox(Me)
  38.   HBox3.H = 28
  39.  
  40.   With TextBoxRomanIn = New TextBox(HBox3) As "TextBoxRomanIn"
  41.     .H = 28
  42.     .Expand = True
  43.     .Font = Font["freeserif,12,bold"]
  44.   End With
  45.  
  46.   With Label3 = New Label(HBox3)
  47.     .H = 28
  48.     .W = 35
  49.     .Alignment = Align.Center
  50.     .Text = " = "
  51.   End With
  52.  
  53.   With LabelArabOut = New Label(HBox3) As "LabelArabOut"
  54.     .H = 28
  55.     .W = 80
  56.     .Border = Border.Plain
  57.     .Alignment = Align.Right
  58.   End With
  59.  
  60.   With HBox2 = New HBox(Me)
  61.     .H = 28
  62.     .Invert = True
  63.   End With
  64.  
  65.   With Label2 = New Label(HBox2)
  66.     .H = 28
  67.     .AutoResize = True
  68.     .Alignment = Align.BottomRight
  69.     .Text = "Charlie Ogier Software V1.0.0"
  70.   End With
  71.  
  72. En


Pero a mi ese Form Open me sale tal que asi :
[Imagen: Captura-de-ecr-2021-03-19-15-27-02.png]

Y en efecto en tu video veo que sale bien a la primera.

Ya intente hacer un uevo proyecto marcando pryecto gtk y sigue igual, seguro es algo que hago yo mal.
Páginas: 1 2