OK, I do not know if BINT32 can help you. I suppose yes, maybe just as a starting. In any case you can find download here:
http://www.thinbasic.com/index.php?opti ... &Itemid=66
ZIP file contains binary and sources (Power Basic) of BINT32. Check Examples directory for examples on how to use it. Examples are in source and compiled form so you can have a look at source before execute.
BINT32 is quite basic engine but full of potentiality. Language has all the main program flow you need: WHILE/WEND, DO/LOOP, FOR/NEXT, IF/ELSE/ELSEIF, GOTO/GOSUB, SELECT/CASE. It has just 2 data types: numbers (extended, 10 bytes) and strings (dynamic any size up to 2Gb automatically handled by the interpreter). More, the language can be extended by the calling application (or directly into the engine) adding new keywords and linking them to compiled functions using function pointers.
BINT32 is not anymore maintained but if someone would like to port to any other language or just have some more info, please ask in our forum at
http://community.thinbasic.com
Maybe that will be the next major update for PureBasic 4.
That would be a big pro for me using Pure Basic and I suppose for many others. OLE32 strings are nothing more that few pointers to memory buffers. Delphi has also something very close. Mainly a string is a 32bit pointers to a buffer. Buffer is than organized in 2 parts: first 4 bytes contain string len (DWORD), second parts is the string itself. VARPTR function of a OLE32 string return a pointer to the string pointer. STRPTR function of a OLE32 string will return a pointer to the first byte of the string data, LEN of a OLE string just return the first 4 bytes (DWORD) info. All OLE32 strings can contain any kind of data up to 2Gb in size. In any case OLE engine add a NULL terminator always. In this way OLE strings can also be used for API functions where an ASCIIZ string is expected: you just need to pass STRPTR(MyOleString) to be API compatible. If someone is interested we can discuss in another thread.
Ciao
Eros