>>It would be easy if you share your current code in a github.

>>Adriano

Nothing to share for this little problem ;-)
try this:

//bufor
GenRowsInMessage = Array[0..100] of Byte;

//proc in db
    create procedure gen_rows_pascal (
    iValue integer not null,
    sValue Smallint not null,
    iValue2 integer not null,
    iValue3 integer not null
) returns (
    result integer not null
)
    external name 'pascaludr!gen_rows'
    engine udr;


//select statement
    SELECT p.RESULT
FROM GEN_ROWS_PASCAL (
296401868, /* iValue 11AA BBCC */
13277, /* sValue 33DD */
582733021, /* iValue2  22BB CCDD */
582733021 /* iValue3  22BB CCDD */
) p;

content of GenRowsInMessage  array
($CC, $BB, $AA, $11, 0, 0, $DD, $33, 0, 0, 0, 0, $DD, $CC, $BB, $22, 0, 0, 
0, 0, $DD, $CC, $BB, $22, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 
0, 4, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, $FF, $FF, 0, 0, 0, 0, 0, 0, 0, 0, 1, 
0, 0, 0, 0, 0, 0, 0, 8, 0, 2, 0, 0, 0, 0, 0, $74, $1B, $54, 8, 0, 0, 0, 0, 
9, 0, 4, 0, 0, 0, 0, 0, $70, $1B, $54, 8, 0)

as you can see alignment has nothing to do - this is not record but array of 
bytes

and here we have
$CC, $BB, $AA, $11, 0, 0, <== iValue
$DD, $33, 0, 0, 0, 0, <== sValue
$DD, $CC, $BB, $22, 0, 0, 0, 0, <== iValue2

why iValue2 have 4 zeros? not two as iValue?
This is not "Delphi compiler problem" but buffer fill - what do you think?

regards,
Karol Bieniaszewski










------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to