Well, not in any particular order:
Yes, CreateDeleteString is *only* for passing strings between your functions and DBPro. If you want to hold ownership of your strings inside your DLL thats up to you. Just pass a pointer back cast as a DWORD:
char* Buffer=NULL;
DWORD GetMyString(void)
{
if (Buffer == NULL)
Buffer=malloc(1024);
strcpy(Buffer, "Hello");
return (DWORD)Buffer;
}
Addresses should be held in a dword variable in DBPro.
The way that * works is that it automatically reads the correct data into your data type, so you *must* read into the correct data type - like this:
i as integer
f as float
b as byte
w as word
i=*Addr : ` will read an integer
f=*Addr : ` will read a float
b=*Addr : ` will read a byte value
w=*Addr : ` will read a word value
Unfortunately, you can't read a double float or a double integer.
Anyway, I've done all that for you - look at my post here -
http://www.darkbasicpro.com/apollo/view.php?t=9394&b=1