[fpc-pascal] Dynamic arrays in FP
Michalis Kamburelis
michalis at camelot.homedns.org
Thu May 5 13:30:42 CEST 2005
Jilani Khaldi wrote:
> Hi All,
>
> I have written a little library in C (compiled in as a DLL) to use it in
> Free Pascal and Delphi applications. While the code (below) works with
> Delphi (7), I get an Access Violation using FPC (1.98). Perhaps I am
> missing something.
> Any hint? Thanks!
>
> program fpc_dll;
> {$H+}{$MODE OBJFPC}
>
> uses
> sysutils;
>
> type
> myarray = array of double;
> // if I declare "myarray = array[0..9] of double;" the code runs as
> expected.
>
> function get_array(a, b: myarray; size: integer; value: double):
> integer; cdecl; external 'mylib.dll';
Change this to
type
PDouble = ^Double;
function get_array(a, b: PDouble; size: integer; value: double):
integer; cdecl; external 'mylib.dll';
In C "double a[]" is the same as "double *a" which is the same as "A:
PDouble" in Pascal. "array of Double" is not the same thing as
"PDouble", as fpc developers already explained.
> // extern "C" __cdecl __declspec(dllexport) int get_array(double a[],
> double b[], int size, double val);
...
> qq := get_array(mat1,mat2,kk,3.14);
Change this to
qq := get_array(PDouble(mat1),PDouble(mat2),kk,3.14);
Michalis
More information about the fpc-pascal
mailing list