Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Operator _NEW für Speicherreservierung

narco22
2023-02-02
2023-02-09
  • narco22 - 2023-02-02

    Hallo Leute,

    ich hätte mal eine Frage zur Verwendung des Operators NEW für die Speicherreservierung. Mit dem Operator möchte ich z.B. acht String-Speicherstellen reservieren. Die Syntax sieht dann folgendermaßen aus:

    psPtrToString:= NEW(STRING, 8).

    Der Operator erzeugt ja dann zur Laufzeit ein Array des Typs STRING. Auf die einzelnen Array-Elemente möchte ich zugreifen und Werte hineinschreiben. Wie greift man darauf zu?

    psPtrToString[i]:= sText scheint nicht zu funktionieren.

     
  • nano - 2023-02-03

    Was ich bei dir nicht Verstehe ist:
    psPtrToString[i]

    Was machst du mit [i]?
    Willst du direkt auf die Chars zugreifen?

    Grundsätzlich liegt dein Problem jedoch in der Tatsache (zumindest auf basis der spärlichen Infos die wir haben), darin das du den Pointer nutzt, aber eigentlich willst du ne dereferenzierung um die Speicheradresse zu erhalten.

    VAR
        xInit:BOOL:=TRUE;
        psPtrToString: POINTER TO STRING;
        sText:STRING;
        sOutText:STRING;
    END_VAR
    
    IF (xInit) THEN
        psPtrToString:= __NEW(STRING, 8);
        xInit := FALSE;
    END_IF;
    psPtrToString^:= sText;
    sOutText := psPtrToString^;
    

    Hier wird der Speicher allcoiert, und die Speicheradresse im Pointer gespeichert.

    Später wird der Dereferenzierte Pointer (siehe ^ nach Pointername) mit einem String beschrieben.
    in der nächsten Zeile wird (völlig sinnfrei in diesem Beispiel) der im neu allocierten Speicher hinterlegte WErte ebenfalls durch dereferenzierten Pointer der NEW-Anweisung in einen anderen Speicher zurückgegeben.

    Als grundlagen Beispiel sollte dies eigentlich reichen.

    Auch sei in diesem Zuge auf:
    https://content.helpme-codesys.com/de/CODESYS%20Development%20System/_cds_operator_new.html
    Verwiesen

     
  • narco22 - 2023-02-09

    Danke für die Erläuterung, hat mir schon geholfen.

     

Log in to post a comment.