4D v16.3

RESOLVE POINTER

Home

 
4D v16.3
RESOLVE POINTER

RESOLVE POINTER 


 

RESOLVE POINTER ( Zeiger ; Name ; TabNum ; FeldNum ) 
Parameter Typ   Beschreibung
Zeiger  Zeiger in Zeiger für den das referenzierte Objekt gefunden werden soll
Name  String in Name der referenzierten Variablen oder leerer String
TabNum  Lange Ganzzahl in Ziffer der referenzierten Tabelle bzw. Arrayelemente oder 0 oder -1
FeldNum  Lange Ganzzahl in Ziffer des referenzierten Feldes oder 0

Der Befehl RESOLVE POINTER findet die Information des referenzierten Objekts über Zeiger und gibt ihn in den Parametern VarName, TabNum und FeldNum zurück.

RESOLVE POINTER gibt je nach Art des referenzierten Objekts folgende Werte zurück:

Referenziertes ObjektParameter
VarNameTabNumFeldNum
None (Zeiger NIL)"" (leerer String)00
VariableName der Variablen-1-1
ArrayName des Array-1-1
Array ElementName des ArrayElementnummer-1
2D Array ElementName des 2D ArrayElement ZeilennummerElement Spaltennummer
Tabelle"" (leerer String)Tabellennummer0
Feld"" (leerer String)TabellennummerFeldnummer

Hinweise:

  • Ist der in Zeiger übergebene Wert kein Zeigerausdruck, tritt ein Syntaxfehler auf.
  • RESOLVE POINTER funktioniert nicht mit Zeigern auf lokale Variablen. Da per Definition mehrere lokale Variablen mit dem gleichen Namen an verschiedenen Stellen existieren können, kann der Befehl nicht die korrekte Variable finden.

Sie erstellen in einem Formular eine Gruppe von 100 eingebbaren Variablen, bezeichnet mit v1, v2... v100. Dazu führen Sie folgendes aus:

a. Erstellen Sie eine eingebbare Variable mit der Bezeichnung v.

b. Legen Sie die Eigenschaften des Objekts fest.

c. Weisen Sie diesem Objekt folgende Methode zu:

 DoSomething(Self` DoSomething ist eine Projektmethode in Ihrer Datenbank

d. An dieser Stelle können Sie nun entweder die Variable so oft wie benötigt duplizieren oder das Symbol für Matrix im Formulareditor verwenden.

e. Müssen Sie den Index der Variablen wissen, für den die Methode aufgerufen wurde, schreiben Sie in der Methode DoSomething:

 RESOLVE POINTER($1;$vsVarName;$vlTableNum;$vlFieldNum)
 $vlVarNum:=Num(Substring($vsVarName;2))

Bauen Sie Ihr Formular auf diese Weise auf, schreiben Sie die Methoden für die 100 Variablen nur einmal; Sie müssen nicht schreiben DoSomething (1), DoSomething (2)...,DoSomething (100).

Zur Fehlerbehebung müssen Sie prüfen, ob der zweite Parameter ($2) einer Methode ein Zeiger auf eine Tabelle ist. Zu Beginn dieser Methode schreiben Sie:

  ` ...
 If(◊DebugOn)
    RESOLVE POINTER($2;$vsVarName;$vlTableNum;$vlFieldNum)
    If(Not(($vlTableNum>0)&($vlFieldNum=0)&($vsVarName="")))
  ` WARNUNG: Der Zeiger ist keine Referenz auf eine Tabelle
       TRACE
       End
    End if
  ` ...

Siehe Beispiel zum Befehl DRAG AND DROP PROPERTIES.

Beispiel für einen Zeiger auf ein 2D Array:

 ARRAY TEXT(atCities;100;50)
 C_POINTER($city)
 atCities{1}{2}:="Rom"
 atCities{1}{5}:="Paris"
 atCities{2}{6}:="New York"
  // ...andere Werte
 $city:=->atCities{1}{5}
 RESOLVE POINTER($city;$var;$rowNum;$colNum)
  //$var="atCities"
  //$rowNum="1"
  //$colNum="5"



Siehe auch 

DRAG AND DROP PROPERTIES
Field
Get pointer
Is a variable
Nil
Table

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Programmiersprache
Nummer: 394

This command can be run in preemptive processes

 
GESCHICHTE 

Erstellt: 4D v6
Geändert: 4D v15

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)