This is the legacy 4D documentation web site. Documentations are progressively being moved to developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
RESOLVE POINTER
|
RESOLVE POINTER ( aPointer ; varName ; tableNum ; fieldNum ) | ||||||||
Parameter | Type | Description | ||||||
aPointer | Pointer |
![]() |
Pointer for which to retrieve the referenced object | |||||
varName | String |
![]() |
Name of referenced variable or empty string | |||||
tableNum | Longint |
![]() |
Number of referenced table or array element or 0 or -1 | |||||
fieldNum | Longint |
![]() |
Number of referenced field or 0 | |||||
The RESOLVE POINTER command retrieves the information of the object referenced by the pointer expression aPointer and returns it into the parameters varName, tableNum, and fieldNum.
Depending on the nature of the referenced object, RESOLVE POINTER returns the following values:
Referenced object | Parameters | ||
varName | tableNum | fieldNum | |
None (NIL pointer) | "" (empty string) | 0 | 0 |
Variable | Name of the variable | -1 | -1 |
Array | Name of the array | -1 | -1 |
Array element | Name of the array | Element number | -1 |
2D array element | Name of the 2D array | Element row number | Element column number |
Table | "" (empty string) | Table number | 0 |
Field | "" (empty string) | Table number | Field number |
Notes:
Within a form, you create a group of 100 enterable variables called v1, v2... v100. To do so, you perform the following steps:
a. Create one enterable variable that you name v.
b. Set the properties of the object.
c. Attach the following method to that object:
DoSomething(Self) ` DoSomething being a project method in your database
d. At this point, you can either duplicate the variable as many times as you need, or use the Objects on Grid feature in the Form Editor.
e. Within the DoSomething method, if you need to know the index of the variable for which the method is called, you write:
RESOLVE POINTER($1;$vsVarName;$vlTableNum;$vlFieldNum)
$vlVarNum:=Num(Substring($vsVarName;2))
Note that by constructing your form in this way, you write the methods for the 100 variables only once; you do not need to write DoSomething (1), DoSomething (2)...,DoSomething (100).
For debugging purposes, you need to verify that the second parameter ($2) to a method is a pointer to a table. At the beginning of this method, you write: // ...
If(<>DebugOn)
RESOLVE POINTER($2;$vsVarName;$vlTableNum;$vlFieldNum)
If(Not(($vlTableNum>0)&($vlFieldNum=-1)&($vsVarName="")))
// WARNING: The pointer is not a reference to a table
TRACE
End
End if
// ...
See example for the _o_DRAG AND DROP PROPERTIES command.
Here is an example of a 2D array pointer:
ARRAY TEXT(atCities;100;50)
C_POINTER($city)
atCities{1}{2}:="Rome"
atCities{1}{5}:="Paris"
atCities{2}{6}:="New York"
// ...other values
$city:=->atCities{1}{5}
RESOLVE POINTER($city;$var;$rowNum;$colNum)
//$var="atCities"
//$rowNum="1"
//$colNum="5"
_o_DRAG AND DROP PROPERTIES
Field
Get pointer
Is a variable
Is nil pointer
Table
Product: 4D
Theme: Language
Number:
394
Created: 4D v6
Modified: 4D v15
4D Language Reference ( 4D v20 R7)