Zeigerarithmetik in SCL

kiestumpe

Level-1
Beiträge
726
Reaktionspunkte
84
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

gibt es in SCL die Möglichkeit Zeigerarithmetik zu betreiben ?
So der Art:
Adresse2 := Adresse1 + Offset;
???
Hintergrund:
Ein FB soll ein DB verarbeitung der mehrere Listen mit unterschiedlichen Längen enthält.
Gruss
kiestupmpe
 
Hallo

Mit etwas Akrobatik geht das schon, wenn die Struktur der Listenelemente bekannt ist und wenn die Listen homogen mit gleichen Elementen aufgebaut ist, dann geht das simpel über Arrays, da kann man dann über die Variation der Indizes den Zugriff gestalten, aber ACHTUNG bei der Typprüfung. Ggf. auch durch Einsatz von ANY-Pointern.

Ist die Listenstruktur nicht einheitlich aber zur Laufzeit relativ bekannt, dann geht das auch, muß aber mit sehr viel Vorsicht zusammengestrickt werden, da sonst die SPS in den STOP geschickt werden könnte.

Mehr kann ich da i.A. nicht zu sagen, sonst müsstest du dein Problem etwas näher beschreiben.

Gruß Barnee
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Barnee,

die Struktur ist teilweise variabel.

Das heist ich habe im DB
< ... > Mehrere Bytes
danach fängt die Liste an
1. Eine Hilfsvariable : WORD
2. Ein Integer, der die folgende Listenlänge n angbit
3. Liste:
3.1 Element 1
3.2 Element 2
...
3.n Element n

danach kommt wieder die gleiche Struktur, nur dass n eben diesmal einen anderen Wert hat. Leider kann ich durch dieses Variable n die Sache nicht in einen UDT giessen, sonst wäre der Zugriff leicht durch den Punktoperator möglich.
Letzlich das Problem, ich übergebe die Adresse der Hilfsvariablen und muss zu dieser etwas Addieren um an die Liste zu kommen. Die Liste soll auf bestimmte Werten durchsucht werden.
Gruss
Frank
 
Das scheint mir so, dass man das sogar ganz elegant mit den Operationen, die auf die Adressregister AR1 bzw. AR2 zugreifen, lösen kann. Bei Anwendung von AR1 bzw. AR2 empfiehlt es sich aber die Inhalte von AR1 bzw. AR2 vorher zu sichern und nach Ausführung der eigenen Manipulation die Inhalte von AR1 bzw. AR2 durch die Sicherung zu restaurieren.
Wenn du mit der Anwendung von AR1 bzw. AR2 Probleme haben solltest, dann zeig doch mal deine FB-Schnittstelle her und ich stelle dann ein Beispiel ins Forum.

Gruß Barnee
 
Zurück
Oben