Redirected to fpc-devel for a larger audience.
-------- Original-Nachricht --------
Betreff: TMemDataset : pb & suggestions
Datum: Fri, 06 Oct 2006 11:34:51 +0200
Von: Oro06
Antwort an:
An: core
Hi,
i'm trying to use TMemDataset on arm/wince and
actually getting bus error/alignement issue.
1°) pb
in short :
all records are stored in a big memory stream
each record is accessed using base address+offset(multiple of RecSize where RecSize is the sum of all fields size)
then each field is also accessed using base record address+field offset
finally accessing datas give something like this : pChar(Buffer+MDSGetFieldOffset(I))^
and this give alignement errors
is there a proper way to make it mode cpu portable ?
2°)missing feature :
-this architecure can't handle blob/strings with unfixed length (with sqlight datasets, length for string fields is 0) -as indicated in sources, record delete is unefficient as it duplicate the full stream (see line 364 memds.pp)
3°)proposed changes
a-use of an internal TList or TLockList to navigate between records b-handle a second internal 'aligned size' longint for each fields used for storing datas in memory with internalalignedsize=usersize+some alignement unused bytes
c-strings are no more stored directly in the record buffer but allocated in the heap and only a pointer to it
is stored in record buffer
d-add of blob handling with same rule as strings
->i don't see maintener on snv log for this unit so i'm about to do that and of course
any comments regarding this and/or multicpu best practice appreciated
regards
or
re
