Pointer adressieren

Tiak
2006-11-12
2006-11-14
  • Tiak - 2006-11-12

    Weiss jemand wie ich das hier adressieren kann?

    Ich meine damit etwas in diesem Sinn

    VAR_INPUT

    Recieved1:REAL;
    
    Recieved2:REAL;
    
                Recieved3:REAL;
    
                Recieved4:REAL;
    
                Recieved5:REAL;
    
                Recieved6:REAL;
    
                MWNR:dword;
    

    END_VAR

    %MWB(MWNR); = Recieved1;

    %MWB(MWNR+2); = Recieved2;

    %MWB(MWNR+4); = Recieved3;

    %MWB(MWNR+6); = Recieved4;

    %MWB(MWNR+8); = Recieved5;

    %MWB(MWNR+10); = Recieved6;

     
  • Denkes - 2006-11-12

    Hallo Tiak,

    unabhängig von der indirekten Adressierung geht das, was du vorhast gar nicht, denn die Variablen Recieved1... sind vom Typ Real (also 4 Byte) und diese willst du indirekt Bytevariablen zuweisen.

    Gruß Norbert

     
  • Anonymous - 2006-11-13

    Originally created by: Bernhard Werner

    Hallo Tiak,

    verwende doch POINTER

    VAR

     phelp : POINTER TO REAL;
    

    END_VAR

    phelp := ADR(%MB..);

    phelp := phelp + MWNR;

    phelp^ := Recieved1;

    phelp := phelp + SIZEOF(REAL);

    phelp^ := Recieved2;

    etc.

    Bernhard Werner

     
  • Tiak - 2006-11-13

    Hallo Bernhard.

    Danke für deine Hilfe. Wen ich deiner Beispiel benutze kommt da 4 errors kannst du mir da wider helfen.

    1. Expression expected

    2. Expecting ‘)’ before ‘;’

    3. Operant expected

    4. Expecting ELSIF, ELSE OR END_IF before’^’

    VAR_INPUT

    MWNR: DWORD;
    
    Recieved1: REAL;
    
    Recieved2: REAL;
    
    STORE: BOOL;
    

    END_VAR

    IF STORE THEN

    phelp := ADR(%MB0);

    phelp := phelp + MWNR;

    phelp^ := Recieved1;

    phelp := phelp + SIZEOF(REAL) ;

    phelp^ := Recieved2;

    END_IF

    Schöne grübe aus Dänemark

     
  • Anonymous - 2006-11-13

    Originally created by: Fx64

    Hallo Tiak,

    ich denke es genügt nicht den Typ anzugeben:

    phelp := phelp + SIZEOF(REAL);

    ändere mal den sizeof

    phelp := phelp + SIZEOF(Recieved1);

    Viele Grüsse

     
  • Anonymous - 2006-11-14

    Originally created by: Bernhard Werner

    Hallo Tiak,

    Fx64 hat recht. Ich habe den Code nicht ausprobiert und mal wieder C programmiert.

    Bernhard

     
  • Anonymous - 2006-11-14

    Originally created by: Fx64

    Hallo Bernhard,

    wäre doch aber auch schön, wenn man den SIZEOF() nach "C Art" progammieren könnte .

    Viele Grüsse

     

Log in to post a comment.