viernes, 14 de febrero de 2020

Compilar paso a paso un proyecto de Visual Basic Script

Compilación avanzada de con Visual Studio

Hay veces que el código que ejecutamos no es el mismo que vemos en Visual Studio. Puede haber varias razones, como la utilización de parámetros internos, recompilaciones o cualquier cosa que nos haga ver una cosa y ejecute otra. Para depurar el código que realmente se está ejecutando en la máquina se puede utilizar el método descrito a continuación.

Ejecutamos el archivo .exe generado para nuestra aplicación, y en el momento que deseamos para la ejecución, abrimos Visual Studio y hacemos Depurar -> Asociar al Proceso (ctrl+ Alt + P) y elegimos el hilo de nuestro ejecutable (es el mismo método que se describe a continuación para Visual Basic Script)

Si el código que ejecuta es el mismo de nuestro VS lo mostrará en amarillo, si no es igual, mostrará por donde va, pero la línea no irá en amarillo, eso nos dará la pista de que lo que ejecuta no es lo mismo que tenemos escrito en el código.

Compilación de archivos de Visual Basic Script

Un archivo de Visual Basic Script no se puede compilar, hay que ir poniendo Msgbox para hacerse una idea de por donde va y lo que va haciendo, pero hay veces que la ejecución de un vbs llama a un proyecto de Visual Basic normal y este último si se puede compilar. Para ello necesitamos compilación remota. 


Desde el proyecto VB se ejecuta un procedimiento que es llamado a través de un archivo Vbs esto se hace con el código coloreado.

  Sub Main()
        ' System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = False
        AbrirLog()

         log = LogManager.GetLogger(System.Reflection.Assembly.GetExecutingAssembly().GetType())
        Try
            log4net.Config.XmlConfigurator.Configure()

            Dim i As Integer
            Dim strArg As String = ""
            For i = 1 To Environment.GetCommandLineArgs.Length - 1
                strArg = strArg & Environment.GetCommandLineArgs(i) & " "
            Next

            If strArg = "" Then
                strArg = "Generación del Modelo Físico"
            End If
            EscribirLog("Proceso: " & strArg & " - " & Now())

            PD = New PdCommon.Application
            PDStartTime = Now
            PD.InteractiveMode = InteractiveModeValue.im_Dialog

            LeerConfig()
            'Comprobamos que proceso se quiere realizar.
            If Environment.GetCommandLineArgs.GetLength(0) = 1 Then
                Dim d As New frmMain

                AbrirConexionPD()
                d.ShowDialog()
            End If

            i = 0
            For Each arg As String In Environment.GetCommandLineArgs()

                Select Case i
                    Case 1 'Argumento primero

                        Select Case arg.ToUpper
                            Case "EtiquetaVBs".ToUpper
                                MsgBox("comienza ejecucion VB")
                                ProcedimientoVB()
                                …
                                …

Para ello hacemos lo siguiente:

primero ejecutamos el  proyecto de VB en modo debug para generar el .exe; hecho esto ejecutamos de nuevo desde Visual Studio y vamos al archivo Vbs que contiene una llamada de este estilo al proyecto de VB.

Compilar paso a paso un proyecto de Visual Basic Script


dim EjecObj
Dim Cadena

Cadena = """C:\Proyectos\bin\x86\Debug\ADE.exe"" ""etiquetaVBs"""
set EjecObj = createobject("Wscript.shell")
EjecObj.Run(Cadena)

Hay que tener en cuenta que la ruta llamada debe coincidir con la ruta donde se ha alojado el archivo .exe al generarlo en modo Debug.

Al ejecutar el archivo Vbs que contiene esta líneas, llama al proyecto VB que se ejecuta hasta llegar al MsgBox.   

MsgBox("comienza ejecucion VB")

Al parar en este punto, vamos al proyecto de VB en visual studio y en el menu depurar elegimos asociar al proceso.

Asociar proceso VB


Y elegimos nuestro proyecto como proceso.

Asociar un proceso Visual Basic Script a otro de VB

Y pulsamos asociar, esto no hace aparentemente nada, debemos pulsar en interrumpir todo.

Pausar ejecución de un proceso

Entonces la línea de nuestro Msgbox se queda verde.

Comenzar ejecución de Proceso de Vbs

Ahora pulsamos F11 o F10 para comenzar con la depuración y nos sale el MsgBox.

Depurar un proceso VB Script

Pulsamos aceptar y la línea se pone en amarillo con lo que ya podemos comenzar con la depuración.

Depurar un proceso VB Script


sábado, 1 de febrero de 2020

Cargar y leer diccionarios en Visual Basic.net


Para muchas aplicaciones es interesante crear y administrar grupos de objetos relacionados. Existen dos formas de agrupar objetos: con matrices de objetos y con colecciones (diccionarios) de objetos.
Los diccionarios proporcionan una manera más flexible de trabajar con grupos de objetos. A diferencia de las matrices, el grupo de objetos con el que trabaja puede aumentar y reducirse de manera dinámica. Para algunos diccionarios, podemos asignar una clave a cualquier objeto que incluyamos en la colección y de este modo, recuperar rápidamente el objeto con la clave.

sábado, 18 de enero de 2020

Google App Script: Código común para varios objetos y versionado.


El objetivo de esta entrada consiste explicar cómo tocar el mínimo código imprescindible en diferentes objetos de Google Drive (por ejemplo varias Spreadsheet, Docs, etc conectadas a una plantilla común de código fuente), de modo que el código deberá ser el mismo para todos los objetos, y así el código asociado a cada objeto sea el mínimo posible y llame siempre a funciones globales. Además deberemos tener en cuenta la versión del código común.

Primero, sobre nuestro objeto de Google Drive pulsamos Herramientas -> Editor de secuencias de Comandos.

Desarrollar código con Google Script

sábado, 4 de enero de 2020

Instalar Keras y TensorFlow. Sistema de reconocimiento de imágenes

Keras y TensorFlow


Keras es una biblioteca de redes neuronales de alto nivel que sirve como una capa de abstracción fácil de usar sobre la biblioteca TensorFlow. 

Creamos un environment del mismo nombre en anaconda.

Anaconda navigator

sábado, 28 de diciembre de 2019

Serializar un archivo JSON

Comprendiendo la serialización

La serialización es el proceso de transformar un objeto en una forma que pueda persistir para ser almacenado  o transferido de un dominio de aplicación a otro. Al transformar el objeto, se serializa el objeto; cuando se lee de nuevo, se deserializa el objeto. Se puede serializar un objeto hacia un disco, una secuencia de memoria o hacia  una red. Dos formatos comunes para pasar  objetos entre sistemas son XML y JSON. 

Los objetos son serializados en XML o JSON antes de ser transferidos al cliente. El Framework de.NET tiene clases que admiten binarios, XML y JSON, e incluso podemos crear nuestra propia serialización personalizada.

Serializar un archivo JSON
Más fotos de este estilo.

sábado, 21 de diciembre de 2019

Cargar un datagrid de .Net con traducción de valores

Hay veces que tenemos en base de datos almacenados valores codificados y queremos realizar una pantalla que haga el mantenimiento de dicha tabla pero en vez de  mostrar los códigos deseamos mostrar su significado, pero no siempre existe una tabla con los significados para hacer INNER JOIN o no siempre conviene complicarse, es más sencillo hacerlo por código. 

Así por ejemplo tenemos la siguiente pantalla de mantenimiento de una tabla de la base de datos, pero queremos que en el campo Ambito en vez de R ponga Riesgo y en la columna Capa sustituya A por Av y 2 por  Ambos.

Cargar un datagrid de .Net con traducción de valores