By registering with us, you'll be able to discuss, share and private message with other members of our community.
SignUp Now!ArrayVariables
Plugins can access TCC array variables directly through the ArrayVariables array. See TakeCmd.h in the SDK for details.
I was aware of the existence of that array (or at least a function to get a pointer to it). TakeCmd.dll hasHELP PLUGINS says:
but I have not been able to find a copy of TakeCmd.h which documents this interface. I vaguely remember seeing a synopsis at one point, and being deeply confused by it. Let me know if you figure it out....
g:\tc24> undecorate ?ArrayVariables@@3PAUARRAYS@@A
struct ARRAYS * ArrayVariables
struct ARRAY
{
LPWSTR szName;
BYTE bytes[64];
};
ARRAY *Arrays = (ARRAY*) GetProcAddress(global.hTCDLL, "?ArrayVariables@@3PAUARRAYS@@A");
Sprintf(szExpr, L"SETARRAY array_name[3,4,5,6]");
Command(szExpr, 0);
Sprintf(szExpr, L"SET array_name[0,0,0,0]=666");
Command(szExpr, 0);
Printf(L"Address of name: 0x%lX\r\n", Arrays[0].szName);
Printf(L"ArrayName = %s\r\n", Arrays[0].szName);
Address of name: 0x1C36B48
ArrayName = array_name
for ( INT i=0; i<64;i++ )
Printf(L"%d ", Arrays[0].bytes[i]);
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 152 121 196 1
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 152 121 196 1
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 8 121 118 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0