Sorry for not responding, I forgot about this thread :)
John J., actually I don't know if you remember some other languages that let you redefine something. Say you got the COBOL language. In COBOL, you can redefine an allocated zone into something different.
Of course. In C++, this is called casting. You can convert just about anything to just about anything else with a simple cast. Unfortunately, Blitz doesn't support this (BlitzMax probably does) natively, and only has some basic string/int/etc. conversion (nothing to do with banks).
So even if Blitz does store strings in the same format as your banks, there's really no way to convert between the two quickly.
Well the real question was: "Can we do string manipulation faster than how blitz does it". Meaning that there could be an alternate method.
As far as I know, this isn't possible in BlitzBasic. A more flexible language like BlitzMax or C++ can, but not BlitzBasic.
But, what exactly is it you're trying to process that needs to be so fast? In MaXML 2.0, I read an entire XML file into a bank and peek values out, which is very fast (just like C strings). As the file is parsed, the appropriate pieces of information are converted back into strings and placed in their data structures. There are many ways you can do fast string processing in Blitz, but it's hard to tell what method is best without knowing just what needs to be done.
Unfortunately, Blitz may not be capable of the speeds you want, from what it sounds like. If speed is that critical, I'd write a DLL in BlitzMax or C++ and shift the processing load over to that.
P.S. Probably the reason Blitz strings are so slow in comparison to banks is simply because strings are not fixed in length. When you add 3 characters to a 100 character string, for example, you're not just writing 3 characters to memory, but actually:
1. Allocating space in memory for 103 characters
2. Writing 100 + 3 characters to the new memory area
3. Deallocate the old 100 characters
I'm not sure about this, but basically you can't easily "resize" a block of memory without copying it's contents into a new larger block and destroying the old.
When you know the maximum size of your strings, you can use more efficient string methods, like C strings, or in your case, Banks.