EbfDevelopmentTools Curso - #2 - como usar la dependencia externa ErickExp.dll

ErickExp.dll es una version basica de regex que no esta basada en el y hecha desde 0 en HEASM, esta libreria permite comparar una cadena pero con atributos que se mencionaran luego

tienes que saber como se usa la especificacion DllIO aqui y ver su documentacion en punto general de la libreria en EbfDevelopmentTools/LibDoc.md at main · ErickStudios/EbfDevelopmentTools

especificaciones

ErickExp.dll usa las siguientes especificaciones

  • DllIO.ReasonForCall no se usa para nada
  • DllIO.Params debe ser un array de 2 elementos, el primero es el string a examinar y luego el examinador

Sintaxis

ErickExp parsea caracter por caracter el string a examinar, tiene la siguiente sintaxis

  • [***]:
    • *** puede ser alguno de los siguientes patrones:
      • Any: cualquier caracter puede ser considerado sin discriminarlo
      • X-Y: comparar cualquier caracter entre el rango de X y Y
      • C91: escape para el corchete abierto
      • C93: escape para el corchete cerrado
    • no comprobado que pasa si la longitud de la sintaxis de [***] es exactamente 3 asi que si lo infringes digamos que, algo malo sucede, no se que, esta vez si no se que pasara
  • D: Compara cualquier digito 0-9
  • cualquier otro caracter sera comparado con ese mismo

Ejemplos

ejemplo de hora

Ejemplo1:

  • String: 23:59:59
  • Examen: [0-2]D:[0-5]D:[0-5]D
  • Resultado: True
    Ejemplo2:
  • String: 00:43:32
  • Examen: [0-2]D:[0-5]D:[0-5]D
  • Resultado: True
    Ejemplo3:
  • String: 31:65:72
  • Examen: [0-2]D:[0-5]D:[0-5]D
  • Resultado: False

retorna

  • 1: si coincide con el formato
  • 0: si no coincide con el formato

usandola en tu programa

para usar la libreria dinamica ErickExp.dll debe saber que el estandart de las librerias dinamicas predeterminadas de KellyBootloader se ubican los archivos dll en la carpeta kelly en la raiz de la unidad donde tengas instalado kellybootloader

tienes que saber que el archivo se llama ErickExp.dll y que es opcional por que posiblemente algunas personas no lo incluyan al instalar KellyBootloader asi que en la documentacion del programa debe especificar que el usuario tiene que tener instalado ErickExp.dll para que funcione, lo mismo para las demas librerias que use tu programa

el nombre completo del archivo es kelly\ErickExp.dll asi que necesita crear un array que contenga la carpeta absoluta de la dependencia , saber cuantos caracteres mide la ruta para luego indicarle al compilador que cree un array con ese tamaño y despues con mucha paciencia ir asignando a todos los elementos desde el 0 hasta la longitud menos 1 y poner los caracteres

(uso C para que se resalte por que no esta la opcion de HEASM y para que se vea bien)

/**
* ErickExpTest.heasm
*
* usa FS0:/kelly/ErickExp.dll
*/

_Use ASCII

%include
    lib/ebf.heasm

//
// la dll solo necesita 2 parametros para funcionar
//

(LET*)1 = 0
(LET*)2 = 2
_CallOut 14 1
DllIO.Params = *1

/**
* _String_
*
* el string a evaluar
*/
Array _String_ _YaLeTocaraXd_

/**
* _Pattern_
*
* el criterio de evaluacion
*/
Array _Pattern_ _YaLeTocaraXd_

/**
* _ErickExpDllFile_
*
* el archivo adjunto de la dll
*
* como EBF no tiene enlazador entonces tenemos que crearlo manualmente
*/
Array _ErickExpDllFile_ AllocatePool->StrLen\s"kelly/ErickExp.dll"

//
// inicializar el archivo adjunto
//

_ErickExpDllFile_ [0] 'k'
_ErickExpDllFile_ [1] 'e'
_ErickExpDllFile_ [2] 'l'
_ErickExpDllFile_ [3] 'l'
_ErickExpDllFile_ [4] 'y'
_ErickExpDllFile_ [5] 92
_ErickExpDllFile_ [6] 'E'
_ErickExpDllFile_ [7] 'r'
_ErickExpDllFile_ [8] 'i'
_ErickExpDllFile_ [9] 'c'
_ErickExpDllFile_ [10] 'k'
_ErickExpDllFile_ [11] 'E'
_ErickExpDllFile_ [12] 'x'
_ErickExpDllFile_ [13] 'p'
_ErickExpDllFile_ [14] '.'
_ErickExpDllFile_ [15] 'd'
_ErickExpDllFile_ [16] 'l'
_ErickExpDllFile_ [17] 'l'

// obtener el str
call_tapot GetParam 0 _String_
// obtener el examinador
call_tapot GetParam 1 _Pattern_

// copiar la direccion del str
call_tapot SetArrayItem DllIO.Params 0 _String_
// copiar la direccion del examinador
call_tapot SetArrayItem DllIO.Params 1 _Pattern_

// ejecutar la dll
call_tapot ExecuteFile _ErickExpDllFile_

// crear un array para el string del boolean convertido
LET _BooleanConverted_

// imprimir si combinan
Print "Strs\sMatch?:\s"
// convertir el bool a string
call_tapot BooleanToString DllIO.ReturnValue _BooleanConverted_
// imprimir el resultado
call_tapot PrintPool _BooleanConverted_

//
// liberar todo
//

// liberar el string del boolean
FreePool _BooleanConverted_
// liberar los parametros de la dll
FreePool DllIO.Params
1 me gusta

porque metes tus cursos en Off Topic ? no tiene sentido

1 me gusta

yo no los meto ahi, isf los mete ahi, yo no tengo la culpa xd

1 me gusta

Creo que ya se porque mete tus cursos en https://foro.linuxchad.org/c/off-topic/9

No veo que publiques tu código fuente (no cuenta los .heasm, es el código de tu interprete?), y distribuyes un binario precompilado, que además es para windows (siendo que se tiene que usar wine para ejecutarlo desde linux). Además de que es un foro de Linux.

Por lo cuál, para empezar, cálculo que tendrías que compilar para linux también, o liberar el código para que otros lo hagan.

Sino, puede ser que tus cursos continuen siendo Off Topic.

1 me gusta

Además que no pueden ser compilados en GNU/Linux.

1 me gusta

Literal les muestro el codigo fuente de los HEASM hasta les parto el enlace al repositorio, también aquí tienen el codigo fuente de ErickCompiler GitHub - ErickStudios/ErickCompiler: el compilador por exelencia para proyectos lima y ErickAssamebly , el dll de ErickExp.dll no es para windows es para kellybootloader

También hay versión para linux de ErickCompiler qué funciona en todos los linux de 64 bits aquí https://www.mediafire.com/file/u4ewaq5w887o2sg/ErickCompilerLinuxX64.zip/file

Los HEASM están aquí GitHub - ErickStudios/EbfDevelopmentTools: una herramienta de desarrollo para ErickBinaryFormat con libreria std para KellyBootloader ejemplos y usos reales en dependencias oficiales para KellyBootloader en el repositorio, solo que si no ven que aparece en los lenguajes el heasm es por que github no ha agregado heasm a sus lenguajes pero aquí estan

Los HEASM si pueden ser compilados en linux con esta versión GitHub - ErickStudios/EbfDevelopmentTools: una herramienta de desarrollo para ErickBinaryFormat con libreria std para KellyBootloader ejemplos y usos reales en dependencias oficiales para KellyBootloader

El compilador necesitarás dotnet para compilarlo

Gitumhib no cuenta los heasm

El enlaze de Linux de 64 bits de cualquier linux es https://www.mediafire.com/file/u4ewaq5w887o2sg/ErickCompilerLinuxX64.zip/file

Aquí esta el enlaze a un heasm EbfDevelopmentTools/Tests/GetTime.heasm at main · ErickStudios/EbfDevelopmentTools · GitHub por que si existe e

Pero no los cuenta el github por que no se nadie quiere a heasm por eso no es popular y por eso github no se molesta en resaltar la sintaxis heasm

Edit en realidad o el teclado o el copiar pegrq o to estoy tonto por que el enlaze para linux es https://www.mediafire.com/file/u4ewaq5w887o2sg/ErickCompilerLinuxX64.zip/file