Den Jean wrote:
On Tuesday 23 November 2004 11:13 am, Florian Klaempfl wrote:
* dynamic arrays : TIntArray = array of integer.
On Intel it works fine but on arm not.
Bindhelp.pas provides TIntArray pascal helper functions to the binding that
is written in C++
eg. this C-code copies integers from the Qt Int Array to the Pascal dynamic
Array of integer
---------------------------------------------------------------------------------------------------
inline void copyQIntsToPInts(const QValueList<int> &qi, PIntArray pi)
{
int len = qi.count();
int *ints;
setIntsLength(pi, len); // this is call to a pascal SetIntsLength function
ints = (int *)getIntsPtr(pi); // this is a call to a pascal GetIntsPtr
function
for (int i = 0; i < len; i++)
ints[i] = qi[i]; // here it crashes
}
----------------------------------------------------------------------------------------------------
I crashes when it uses the address returned by getintsptr
GetIntsPtr is provided by bindhelp.pas:
----------------------------------------------------------------------------------------------------
// Int array helpers
function GetIntsPtr(const PA: TIntArray): Pointer; cdecl; export;
begin
Result := @PA[0];
end;^
I fear the snapshot was created before a lot of dyn. array stuff was fixed.
----------------------------------------------------------------------------------------------------
It works on intel and not on arm.
But when I change the definition of GetIntsPtr to:
----------------------------------------------------------------------------------------------------
function GetIntsPtr(var PA: TIntArray): Pointer; cdecl; export;
begin
Result := @PA[0];
end;
----------------------------------------------------------------------------------------------------
Then it works on the arm to. (changed const to var !)
By the way the definition of the pascal library function in the C++ library is:
----------------------------------------------------------------------------------------------------
typedef void *PIntArray;
typedef void *(*GetIntsPtr)(PIntArray pi);
extern GetIntsPtr getIntsPtr;
----------------------------------------------------------------------------------------------------
* I am using the last arm snapshot you provided because the current cvs version does not compile
I know, but I've to get my arm working first :(
BTW: What OS do you run on your Zaurus? I've a lot of trouble with
OZ 3.5.1 e.g. with that ridiculous dropbear ssh demon used by OZ 3.5.1
I have a Zaurus SL6000. As it is rather new, an upgrade was not a priority yet.
I haven't seen update roms for the SL6000 either.
The SL6000 has a libqte.so.2.3.2 and a libqpe.so.1.5.0
_______________________________________________
fpc-pascal maillist - [EMAIL PROTECTED]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal