-> Hier kostenlos registrieren
Hallo, ich habe in einem FB als Input eine Struktur, welche unter anderem folgendes Element hat.
Eingangsstruktur.Parameter (wobei Parameter ein Pointer auf eine Struktur ist).
Diesem Element wurde schon die Adresse auf eine Globale Struktur übergeben.
nun wollte ich folgendes machen, um einem Unterprogramm, welches ein Zeiger auf einen DINT Wert erwartet, den Zeiger zuzuweisen.
Die Adresse wird richtig übergeben (sehe ich korrekt im Dintpointer), jedoch funktioniert es irgendwie nicht wirklich, da irgendwie Daten auf einem anderen Speicherbereich überschrieben werden. Und diverse Funktionen wie bspw. ein fliehende nicht mehr funktionieren.
ist die adressübergabe so überhaupt zulässig, oder schaut codesys da vielleicht irgendwie intern auf die Adrsse des Pointers "Parameter" (so kommt es mir nämlich vor, also würde die Adresse von Parameter + der Offset von Dintwert in der Struktur überschrieben).
Das passiert allerdings sogar, schon, wenn nur der angegeben Code ausgeführt wird, mehr nicht. Dabei wird dort ja nicht mal der Pointer beschrieben, sondern nur ausgelesen.
Benutze ich ein In_Out anstatt einen Pointer auf "Parameter" dann funktioniert es einwandfrei.
hat jemand eine Idee?
Eingangsstruktur.Parameter (wobei Parameter ein Pointer auf eine Struktur ist).
Diesem Element wurde schon die Adresse auf eine Globale Struktur übergeben.
nun wollte ich folgendes machen, um einem Unterprogramm, welches ein Zeiger auf einen DINT Wert erwartet, den Zeiger zuzuweisen.
Code:
Unterprogramm.Dintpointer := ADR(Parameter^.Dintwert);
Die Adresse wird richtig übergeben (sehe ich korrekt im Dintpointer), jedoch funktioniert es irgendwie nicht wirklich, da irgendwie Daten auf einem anderen Speicherbereich überschrieben werden. Und diverse Funktionen wie bspw. ein fliehende nicht mehr funktionieren.
ist die adressübergabe so überhaupt zulässig, oder schaut codesys da vielleicht irgendwie intern auf die Adrsse des Pointers "Parameter" (so kommt es mir nämlich vor, also würde die Adresse von Parameter + der Offset von Dintwert in der Struktur überschrieben).
Das passiert allerdings sogar, schon, wenn nur der angegeben Code ausgeführt wird, mehr nicht. Dabei wird dort ja nicht mal der Pointer beschrieben, sondern nur ausgelesen.
Benutze ich ein In_Out anstatt einen Pointer auf "Parameter" dann funktioniert es einwandfrei.
hat jemand eine Idee?