SOLVED!
Pointer Array Length

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎2021-04-24
06:17 PM
- last edited on
‎2021-09-14
09:39 AM
by
Noemi Balogh
‎2021-04-24
06:17 PM
This is a novice question so maybe someone can help!!
I am using Goodies(APIAny_ActParametersID, &getParams, Nullptr);
getParams->params (API_AddParType) returns a pointer to a list of the parameters in a Library Part
How do I get the number parameters pointed to in order to iterate through the list and find the parameter I'm interested in?? I tried sizeof and just got garbage , so doing something wrong?
Thanks
I am using Goodies(APIAny_ActParametersID, &getParams, Nullptr);
getParams->params (API_AddParType) returns a pointer to a list of the parameters in a Library Part
How do I get the number parameters pointed to in order to iterate through the list and find the parameter I'm interested in?? I tried sizeof and just got garbage , so doing something wrong?
Thanks
Gerry
Windows 11 - Visual Studio 2022; ArchiCAD 27
Windows 11 - Visual Studio 2022; ArchiCAD 27
Solved! Go to Solution.
Labels:
- Labels:
-
Add-On (C++)
1 ACCEPTED SOLUTION
Accepted Solutions
Solution

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎2021-04-26 04:22 PM
‎2021-04-26
04:22 PM
This one is a bit tricky. Here is the relevant code from Element_Test Add-On:
API_GetParamsType getParams; BNZeroMemory (&getParams, sizeof (API_GetParamsType)); err = ACAPI_Goodies (APIAny_GetActParametersID, &getParams); if (err == NoError) { UInt32 nParams = BMGetHandleSize ((GSHandle) getParams.params) / sizeof (API_AddParType); for (UInt32 ii = 0; ii < nParams; ++ii) { const API_AddParType& actParam = (*getParams.params)[ii]; DBPrintf ("%-3u. param: \"%s\" (%s)\n", ii, actParam.name, (actParam.flags & API_ParFlg_Disabled) != 0 ? "disabled" : ""); } } ACAPI_Goodies (APIAny_CloseParametersID); ACAPI_DisposeAddParHdl (&getParams.params);
2 REPLIES 2
Solution

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎2021-04-26 04:22 PM
‎2021-04-26
04:22 PM
This one is a bit tricky. Here is the relevant code from Element_Test Add-On:
API_GetParamsType getParams; BNZeroMemory (&getParams, sizeof (API_GetParamsType)); err = ACAPI_Goodies (APIAny_GetActParametersID, &getParams); if (err == NoError) { UInt32 nParams = BMGetHandleSize ((GSHandle) getParams.params) / sizeof (API_AddParType); for (UInt32 ii = 0; ii < nParams; ++ii) { const API_AddParType& actParam = (*getParams.params)[ii]; DBPrintf ("%-3u. param: \"%s\" (%s)\n", ii, actParam.name, (actParam.flags & API_ParFlg_Disabled) != 0 ? "disabled" : ""); } } ACAPI_Goodies (APIAny_CloseParametersID); ACAPI_DisposeAddParHdl (&getParams.params);

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎2021-04-26 06:41 PM
‎2021-04-26
06:41 PM
Thanks Viklor:
Thanks again
UInt32 nParams = BMGetHandleSize ((GSHandle) getParams.params) / sizeof (API_AddParType);was exactly what I was looking for. Don't know how I missed it but I did.
Thanks again
Gerry
Windows 11 - Visual Studio 2022; ArchiCAD 27
Windows 11 - Visual Studio 2022; ArchiCAD 27