(http://cramel.org/wp-content/uploads/2017/02/logocram.png)
Bueno, me alegra informarles hoy que ya esta disponible la versión de Cramel para su uso.
Ahora Cramel le ofrece las siguientes nuevas características:
- Programación orientada a objetos.
- Compatibilidad con sistemas de 64 bits.
- Capacidad para establecer procedimientos y variables como púbicas o privadas.
- Mayor estabilidad de los ejecutables.
- Aumento en la velocidad de compilación.
- Nuevos operadores.
A continuación un pequeño ejemplo:
Importar "Cramel.cml"
API BuffLen(lpBuff:Entero):Entero,"Kernel32" "lstrlen"
API CopyStrToBuff(lpDst:Entero,lpStr:Cadena):Entero, "Kernel32" "lstrcpy"
API CopyBuffToStr(lpDst:Cadena,lpSrc:Entero):Entero, "Kernel32" "lstrcpy"
API GlobalLock(hMem:Entero):Entero, "Kernel32"
API GlobalUnlock(hMem:Entero):Entero, "Kernel32"
API GlobalAlloc(uFlags,dwBytes:Entero):Entero, "Kernel32"
Const CF_TEXT = 1
Const GMEM_MOVEABLE = &0002
Clase cmlPortapapeles
'Procs privados
Sección Privada
Proc GetTexto():Cadena
Var hMem,Ptr:Entero
Si (Neg OpenClipboard(0)) Entonces Salir
hMem=GetClipboardData(CF_TEXT)
Si (hMem=0) Entonces Salir
Ptr=GlobalLock(hMem)
Resultado = Espacio(BuffLen(Ptr))
CopyBuffToStr(Resultado,Ptr)
GlobalUnlock(Ptr)
Si (Neg CloseClipboard) Entonces Salir
FinProc
Proc SetTexto(Val:Cadena)
Var hMem,Length,Ptr:Entero
Si (Neg OpenClipboard(0)) Entonces Salir
Length=CadLong(Val)+2
hMem=GlobalAlloc(GMEM_MOVEABLE,Length)
Ptr=GlobalLock(hMem)
CopyStrToBuff(Ptr,Val)
SetClipboardData(CF_TEXT,hMem)
GlobalUnlock(Ptr)
Si (Neg CloseClipboard) Entonces Salir
FinProc
Sección Pública
'Procs públicos
Proc Vaciar:Booleano
Si (Neg OpenClipboard(0)) Entonces Salir
Devolver EmptyClipboard()
Si (Neg CloseClipboard) Entonces Salir
FinProc
Proc EsValido(Formato:Entero):Booleano
Devolver IsClipboardFormatAvailable(Formato)
FinProc
'Props públicos
Prop Texto:Cadena
Lectura:GetTexto
Escritura:SetTexto
FinProp
FinClase
' Código de ejemplo.
Var Objeto:pscClip
Crear Objeto
Objeto.Vaciar
Objeto.Texto = "Cramel es un lenguaje de programación increible
muy simple y altamente potente."
Destruir Objeto
Diferencias con el compilador anterior:
- Ahora las variables de cadena pasadas como argumentos por valor no son copiadas.
- Los parámetros por referencia trabajan igual para procedimientos y apis (lo correcto para apis es pasarlas por valor).
- Las cadenas pueden ser multilínea.
Para descargar Cramel haga clic aquí (https://cramel.org/descargar/).
Que lo disfruten!
Buen avance, genial.