Pointer und DBs

MFe

Member
Beiträge
24
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo an alle,

Ich hoffe mir kann jemand weiterhelfen.
Ich habe in einem GlobalDB mehrere Werte hinterlegt.
Nun brauche ich diese Werte in einem FB, wobei ich dort gern mit einem Pointer arbeiten würde.
Kann ich direkt einen Pointer auf den GlobalDB und das entsprechende Datenwort legen, (in der Art wie L P#DB50.DBW2, was ja leider nicht funktioniert) oder muss ich alle Werte in den InstanzDB umladen???
Oder gibt es sogar auch eine elegante Lösung

Wäre für jede Hilfe dankbar

Martin
 

Onkel Dagobert

Well-known member
Beiträge
4.923
Punkte Reaktionen
929
Bereichsinterne Adressierung, bereichsübergreifender Zeiger

Hallo Martin,

du kannst durch indirekte Adressierung auf die Datenworte eines DB z.Bsp. wie folgt zugreifen:

Code:
      AUF   DB    50
      LAR1  P#DBX 2.0                // Pointer auf Adresse 2.0
      L     DBW [AR1,P#0.0]          // läd DB50.DBW2

oder:

Code:
      AUF   DB    50
      LAR1  P#DBX 0.0                // Pointer auf Adresse 0.0
      L     DBW [AR1,P#2.0]          // läd DB50.DBW2


Das Adressregister AR1 kannst du im Programm verändern, z.Bsp.:

Code:
       +AR1  P#4.0


Gruß, Onkel
 
A

Anonymous

Guest
Hei,
warum muss es denn ein Pointer sein?

Du kannst ja auch direkt auf die Daten zugreifen. L DB50.DBW2

Wenn du den DB frei ändern willst, schlage ihn mit AUF (oder A) ich weiß es im Augenblick nicht, eins ist S5 das andere S7 und dann L DBW2.

Falls ich Dir nichts neues erzähle, dann nichts für ungut

By
 
OP
M

MFe

Member
Beiträge
24
Punkte Reaktionen
0
Hallo,
und danke für die Hilfe. Das Adressieren funktioniert einwandfrei.
Danke

@plc-tippser. Das ist schon richtig mit der direkten Adressierung, nur gibt es Anwendungen bei denen es mit der indirekten Adressierung und der Verwendung von Pointern zu erheblichen Vereinfachungen kommt. Bei diesem Beispiel ja nicht unbedingt, aber bei so einfachen Sachen kann man es halt üben und davon lernen

Gruß
 
Oben