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.ReasonForCallno se usa para nadaDllIO.Paramsdebe 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 discriminarloX-Y: comparar cualquier caracter entre el rango de X y YC91: escape para el corchete abiertoC93: 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