Developer forum
cancel
Showing results for 
Search instead for 
Did you mean: 

Problem: Persistent Parameter Arrays Values & deletion

Nader Belal
Mentor
Hi everyone,

I have a problem with parameter arrays and deletion process that can be resumed as, inability to delete their values with every known process ...

Background:
I have a bunch of 2D parameter arrays of different types mainly integers that goes in parallel (ie: all have same length and width) to act as information placeholders; and the majority of these integer arrays were used with values{2} function, and connected to the GUI using UI_INFIELD function (or any of its version).
Mentioned arrays will have a size 20*50 (but I was working with a smaller version of them).

Problem:
What ever process I try to delete those arrays, I find that they still have the same width, or some get deleted others as if nothing happened.

Tested methods:
  • Substitution of "APPLICATION_QUERY" function method "firstoccasion_in_progress" with time stamp as explained in DELETE AN ITEM FROM A PARAMETER ARRAY
  • Using Parameter Buffer Manipulation using Braza's method in LIMITING RANGE OF PARAMETER ARRAYS either by not copying undesired values from Parameter Arrays or Temporary Variable Arrays, of vise versa
  • Deleting all values from Parameter Arrays (including re-initialising them with 1-2 values) then copying the values from Temporary Variable Arrays to Parameter Arrays.
    In this time, many arrays didn't accept any values.
  • Changing parameter arrays names.
  • Arrays' script manipulations were defined in "Parameter Script" & "Master Script"


Request:
A sure fire method for parameter array value update.
A good friend of mine have once told me that I´m so brute that I´m capable of creating a GDL script capable of creating GDLs.
2 REPLIES 2

Bruce
Booster
Have you tried re-declaring the arrays?

The process for flexible-length arrays:

1. Declare a temporary array
2. Fill the temporary array with the parameter array
3. Re-declare the parameter array
4. VALUES commands to be listed after this declaration, not before


Sample code, where 'size1' is an integer parameter, and myArray is a length parameter, activated as an array.
IF GLOB_MODPAR_NAME = "size1" THEN
	DIM _tempArray []
	_tempArray = myArray
	
	DIM myArray []
	FOR ii = 1 to size1
		IF ii > vardim1(_tempArray) THEN
			_value = 0
		ELSE
			_value = _tempArray[ii]
		ENDIF
		myArray[ii] = _value
	NEXT ii
	PARAMETERS myArray = myArray
ENDIF

VALUES "myArray" RANGE (0, )
Bruce Walker

http://www.brucepwalker.com

https://www.mindmeister.com/65450406



-- since v8.1 --

AC24 6004 INT Full | Windows 10 64 Pro | 2.8 GHz Intel i7-7700HQ | 32 Gb RAM | NVIDIA GeForce GTX 1060 6 Gb

Peter Baksa
Graphisoft
Graphisoft
Hi Moonlight,

This code works for me:
if GLOB_MODPAR_NAME = "reset" then
	dim ar1[1][1]
	dim ar2[1][1]
	parameters ar1 = ar1, ar2 = ar2
endif
Maybe if there is another connection between your arrays based on some GLOB_MODPAR_NAME, it might not work as expected.
Péter Baksa
Software Engineer, Library as a Platform
Graphisoft SE, Budapest

Still looking?

Browse more topics

Back to forum

See latest solutions

Accepted solutions

Start a new discussion!