Pointer und DBs

MFe

Level-1
Beiträge
24
Reaktionspunkte
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
 
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
 
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
 
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ß
 
Zurück
Oben