ID: Q119636
The information in this article applies to:
When you are writing libraries using the FoxPro Library Construction Kit (LCK), you can pass variables or array elements to a function in the library. You can also pass an array by reference into an library function. Once the reference is passed, each element can be accessed from within the library routine. The code to do this is shown below.
/* C code that creates the DLL. */
#include <windows.h>
#include <pro_ext.h>
/* The Putback() function is optional. It sends the element of the
array back to the FoxPro screen so you can see that the routine
has found the array element. */
void Putback(long arr_element)
{
Value val;
val.ev_type = 'I';
val.ev_width =10;
val.ev_long = arr_element;
_PutStr("\nThe current value is -");
_PutValue(&val);
}
void FAR load_array(ParamBlk FAR *parm)
{
int start; /* Starting value of Loop. */
long array[50]; /* Create array to hold FoxPro array. */
Value val; /* Create Value structure. */
Locator loc; /* Create Locator structure. */
start=0;
loc = parm->p[0].loc; /* Store the contents of the FoxPro array
in the Locator structure. */
/* Get the number of elements from the FoxPro array. */
loc.l_subs = (int)_ALen(parm->p[0].loc.l_NTI, AL_ELEMENTS);
/* FOR loop to get the array elements. */
for(start=0;start != loc.l_subs ; start ++){
loc.l_sub1=(start+1);
/* Store the contents of the FoxPro array in a Value Structure. */
_Load(&loc,&val);
/* Copy the contents of the FoxPro array to the function array.*/
array[start]=val.ev_long;
Putback(array[start]); /* Calls the structure Putback. */
}
}
FoxInfo myFoxInfo[]={
{"LOAD_ARRAY",(FPFI)load_array,1,"R"},
};
FoxTable _FoxTable={
(FoxTable FAR*)0, sizeof(myFoxInfo) / sizeof(FoxInfo), myFoxInfo
};
/* End of C code. */
This code is used in FoxPro:
SET LIBRARY TO lckarray.dll
DIMENSION foxarray(5)
foxarray(1)=10
foxarray(2)=20
foxarray(3)=30
foxarray(4)=40
foxarray(5)=50
? load_array(@foxarray)
There will be a .T. at the end of the elements listed. This should not
cause a problem since passing the elements back to FoxPro is not necessary.
Additional reference words: FoxWin FoxDos LCK 2.00 2.50 2.50a 2.50b 2.60 KBCategory: kbprg kbcode KBSubcategory: FxtoolLck
Last Reviewed: August 28, 1995