[Cramel] Nueva versión + Ejemplo

Iniciado por Yuki, Mayo 17, 2017, 09:01:55 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 17, 2017, 09:01:55 AM Ultima modificación: Mayo 17, 2017, 09:04:59 AM por Yuki



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:

Código: text
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 You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.

Que lo disfruten!

Mayo 17, 2017, 10:32:38 AM #1 Ultima modificación: Mayo 17, 2017, 12:54:50 PM por BlackBlex
Buen avance, genial.