[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: php
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 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

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.