On 07/01/2014 10:59 AM, Paul Breneman wrote:
Below is code from a C program (that works).
From the ".h" files:
typedef uint32_t PICO_INFO;
typedef uint32_t PICO_STATUS;
PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps5000aGetUnitInfo)
(
int16_t handle,
int8_t * string,
int16_t stringLength,
int16_t *requiredSize,
PICO_INFO info
);
From a ".c" program:
int16_t i = 0;
int16_t requiredSize = 0;
int8_t line [10];
PICO_STATUS status = PICO_OK;
status = ps5000aGetUnitInfo(unit->handle, line, sizeof (line),
&requiredSize, i);
**************
Here is the dll call I'm having trouble with:
function ps5000aGetUnitInfo
(handle : smallInt;
var str : Pchar;
stringLength : smallInt;
var requiredSize : smallInt;
info : integer
) : integer;
{$IFDEF WIN32} stdcall; external 'ps5000a.dll';{$ENDIF}
I have two console programs that are almost identical.
Here is my FPC 2.6.4 call (that works):
Status := ps5000aGetUnitInfo( ps5000a_handle, MyReturnStr,
StringLen, requiredSize, RInfo);
Here is my D7 call (that doesn't work):
Status := ps5000aGetUnitInfo( ps5000a_handle, @MyReturnStr,
StringLen, requiredSize, RInfo);
In D7 I have to add "@" on "MyReturnStr or the program crashes. With
the "@" added the program doesn't crash, but things still don't work.
Any suggestions on what to look at?
Sorry, but after I sent the email above I realized that I was editing a
file in the wrong folder. Free Pascal doesn't work with "var" on the
line below:
var str : Pchar;
This is what works on FPC 2.6.4:
function ps5000aGetUnitInfo
(handle : smallInt;
Str : Pchar;
stringLength : smallInt;
var requiredSize : smallInt;
info : integer
) : integer;
{$IFDEF WIN32} stdcall; external 'ps5000a.dll';{$ENDIF}
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal