Pointer

Dotzi

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

wenn ich in einem FC im Temp-Bereich eine Variable X anlegen vom Typ STRUCT. Und ein Element dieses STRUCT soll Variable Y vom Typ INTEGER sein.
Wie kann ich den Pointer auf diese Variable abfragen?
Code:
L    P#X.Y
funktionert nicht

Code:
L    P#X
liefert mir nur die Anfangsadresse des STRUCT

Ist das nicht in dieser Weise möglich?
 
Man kann mit einem POINTER nur die Anfangsadresse der TEMP-Variable vom Datentyp STRUCT bestimmen:

Code:
      L     P##X                        // POINTER STRUCT-Variable
      LAR1

Oder folgender Programmcode:

Code:
      LAR1  P##X                        // POINTER STRUCT-Variable

Um auf die einzelnen Strukturkomponenten der TEMP-Variable vom Datentyp STRUCT zuzugreifen, muss man einen Offset auf die Anfangsadresse im Adressregister AR1 addieren:

Code:
      L     W [AR1,P#2.0]               // Strukturkomponente

Gruß Kai
 
Nicht ganz, auf die einzelnen Strukturkomponenten kann man natürlich immer noch symbolisch zugreifen.

Code:
  L     #X.Y                        // STRUCT-Variable Strukturkomponente

Gruß Kai
 
Damit hast du natürlich recht.

Es ist mir eben nur nicht möglich in einem Element einer Struktur, das nicht vom Typ Bool ist, ein Bit zu beeinflussen. Wobei diese Struktur beliebig erweitert werden kann, ohne das im Code was geändert werden muss.
Dafür muss dann das Element erst in eine Temp-Variable umkopiert werden und in dieser kann dann der Zugriff erfolgen. Anschließend muss die Variable dann wieder auf das Strukturelement übertragen werden.

So, hoffe nun habe ich mein Anliegen klar und deutlich formuliert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wenn du die Struktur änderst, ohne das dein Baustein das weiß wird es nicht funktionieren. Vor allem dann nicht, wenn die Struktur sich vergrößert ...
Was hast du konkret vor ...?
 
Verstehe ich nicht :confused:

Wo ist das Problem, bei einer Integer Variablen in Deiner Struktur ein Bit zu verändern? Außerdem habe ich es so verstanden, das sich Deine Variable mit der Struktur innerhalb des FCs befindet. Warum soll ich darauf dann über Pointer zugreifen?
 
@Grubba:
Toller Beitrag ... da möchte einer etwas wissen und du fragst : "Warum ?".
Vielleicht hat Dotzi ein ARRAY of STRUCT (z.B.)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Larry:

Naja, er hat z.B. geschrieben, das er erst eine Kopie seiner Variablen anlegen, diese verändern, und dann wieder zurückkopieren würde. Da gehe ich davon aus, das er weiß wie er in der Kopie seiner Integervariablen ein Bit setzt. Und da es bei direkter Bearbeitung seiner Variablen genauso funktioniert, frage ich mich immer noch, wo das Problem liegt. Vielleicht sagt er mir es ja... :ROFLMAO:

Und mein "warum" kommt wohl daher, weil ich mir seine Vorgehensweise absolut nicht erklären kann.

Aber vielleicht bringt Dotzi ja ein wenig Licht in die Sache, also nichts für ungut...;)
 
Verstehe ich nicht :confused:

Wo ist das Problem, bei einer Integer Variablen in Deiner Struktur ein Bit zu verändern? Außerdem habe ich es so verstanden, das sich Deine Variable mit der Struktur innerhalb des FCs befindet. Warum soll ich darauf dann über Pointer zugreifen?


Ich weiß, dieses Thema ruht schon etwas.
Aber nachdem ich diese Antwort gelesen habe, frage ich mich nun.
Wie kann ich in einem Word in einem Struct ein Bit manipulieren? Das ganze natürlich ohneauf direkte Adressen zuzugreifen.

Gruß Dotzi
 
Zurück
Oben