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

lunes, 5 de septiembre de 2016

Como agregar número de versión de Gambas a nuestra aplicación?


Examinando el código del propio Gambas (ver) buscando aprender algo nuevo, me llamo la atención este código.

Rutina que obtiene la versión de Gambas, ubicada en la clase de inicio llamada "Project"

Private Sub InitVersion()

Dim sVer As String
Dim aVer As String[]

'Shell "gbx" & System.Version & " -V" To sVer
'FullVersion = Trim(Mid$(sVer, InStr(sVer, "-") + 1))
FullVersion = System.FullVersion
aVer = Split(FullVersion, ".")
aVer.Remove(aVer.Max)
Version = aVer.Join(".")

Exec [System.Path &/ "bin/gbx" & System.Version, "-V"] To sVer
FullVersionWithRevision = Trim(sVer)
If FullVersionWithRevision Ends ".0" Then FullVersionWithRevision = Left$(FullVersionWithRevision, -2)

Catch

Version = "?"

End


desglosemos un poco.....

Exec [System.Path &/ "bin/gbx" & System.Version, "-V"] To sVer


 System.Path=/usr
 System.Version=3

 linea de exec=    /usr/bin/gbx3   -V
 

sVer=3.9.0
 


FullVersionWithRevision = Trim(sVer)  'Elimina espacios en blanco del final de una cadena.

 
If FullVersionWithRevision Ends ".0" Then  FullVersionWithRevision = Left$(FullVersionWithRevision, -2)


si la versión termina en ".0" entonces elimina esos dos caracteres el punto y el cero. Quedando en este caso en "3.9"


Aquí mi adaptación a el programa Taller2015

Public VersionGambas As String

Public Sub Form_Open()
ObtenerVersionGambas() 'ejecutamos la subrutina para que obtenga la version y la guarde en la variable VersionGambas
LabVersionGambas.Text = VersionGambas ' le asignamos a la propiedad text el string almacenado en VersionGambas
End

Public Sub ObtenerVersionGambas()
Dim sVer As String

Exec [System.Path &/ "bin/gbx" & System.Version, "-V"] To sVer

VersionGambas = Trim(sVer)
If VersionGambas Ends ".0" Then
VersionGambas = Left$(VersionGambas, -2)
Endif

Catch

VersionGambas = "?"

End

Resultado




lunes, 27 de mayo de 2013

Estado de memoria



'declaramos variables
Public memlibre As String
Public memusada As String
Public memtotal As String
Public largo1 As Integer
Public largo2 As Integer
Public fecha1 As String

Public Sub Form_Open()
  Dim i, e As Integer 'contadores de los for
  Dim b, z, x, w, mbmemusada, mbmemlibre, mbmemtotal As String
 'exec ejecuta el comando como en consola y deja el resultado
 'en la variable fecha1. en consola seria: date +%A\ %d\ %B\ %Y  
 'devuelve este formato: lunes 27 mayo 2013
Exec ["date", "+%A %d %B %Y"] To fecha1
'agregamos un título personalizado a nuestro formulario
  Me.Title = "Estado de Memoria" & " - " & fecha1
'centramos el formulario
  Me.Center
'obtenemos las 2 primeras lineas de informacion de memoria de /proc/meminfo


  Exec ["grep", "MemTotal:", "/proc/meminfo"] To memtotal
  Exec ["grep", "MemFree:", "/proc/meminfo"] To memlibre
  largo1 = Len(memtotal) 'obtenemos el largo de la primera línea del archivo /proc/meminfo
  largo2 = Len(memlibre) 'obtenemos el largo de la segunda línea del archivo /proc/meminfo
'aquí empieza el proceso de extracción de los números que es el dato que nos interesa mostrar
'tomamos el primer caracter, si es un número lo agregamos a la variable x sino seguimos
'en el ciclo hasta recorrer todo el string sacando la cifra numérica.
'La variable x va concatenando los números que vamos encontrando
'asi se muestra el dato crudo:
' MemTotal:        1805400 kB
' MemFree: 184108 kB

For i = 1 To largo1 Step +1
  z = Mid$(memtotal, i, 1)
   Select Case Asc(z)
    Case 47 To 57
      x &= z
   End Select
Next
'El mismo proceso que el for anterior, pero con la sengunda línea obtenida de /proc/meminfo
For e = 1 To largo2 Step +1
  b = Mid$(memlibre, e, 1)
   Select Case Asc(b)
    Case 47 To 57
      w &= b
    End Select
Next
  'Convirtiendo de kb a mb
  mbmemtotal = Int(x / 1024)
  mbmemlibre = Int(w / 1024)
 'Ingreso de datos de memoria total en los textbox
  txtmemtotalmb.Text = mbmemtotal & " MB"
  txtmemtotalkb.Text = x & " KB"
  'Ingreso de datos de memoria libre en los textbox
  txtlibremb.Text = mbmemlibre & " MB"
  txtLibrekb.Text = w & " KB"
  'Calculo e ingreso de datos de memoria usada en los textbox
  mbmemusada = mbmemtotal - mbmemlibre
  memusada = mbmemusada * 1024
  txtusadamb.Text = mbmemusada & " MB"
  txtusadakb.Text = memusada & " KB"

End

Public Sub btnSalir_Click()
'cerramos el programa
  Me.close
End