Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 7 von 7

Thema: call-by-reference Beckhoff?

  1. #1
    Registriert seit
    26.11.2005
    Beiträge
    225
    Danke
    111
    Erhielt 41 Danke für 35 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,

    hat jemand von euch schon mal mit call-by-reference in beckhoff gearbeitet, bzw. geht das prinzipiell. Wenn man mit Pointern arbeitet handelt es sich eben nur um call-by-value wie ich schon feststellen musste.
    "Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."
    (Albert Einstein - 14.03.1879 - 18.04.1955)
    Zitieren Zitieren call-by-reference Beckhoff?  

  2. #2
    Avatar von gingele
    gingele ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    26.11.2005
    Beiträge
    225
    Danke
    111
    Erhielt 41 Danke für 35 Beiträge

    Standard

    OK habs rausbekommen, bzw. so hab ich mir das vorgestellt:

    Wenn ich z.B. eine INT-Variable hab, will ich diese überall hochzählen können ohne das ich eine Kopie erstelle.

    Code:
    VAR
    var_int1 : INT :=0;
    pt1 : POINTER TO INT;
    END_VAR
    
    pt1:=ADR(var_int1);
    pt1^:=pt1^+1;
    
    var_int1; (*wird bei pt1^:=pt1^+1; hochgezählt*)
    "Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."
    (Albert Einstein - 14.03.1879 - 18.04.1955)

  3. #3
    Registriert seit
    02.02.2007
    Beiträge
    104
    Danke
    12
    Erhielt 16 Danke für 13 Beiträge

    Standard

    Zitat Zitat von gingele Beitrag anzeigen
    OK habs rausbekommen, bzw. so hab ich mir das vorgestellt:

    Wenn ich z.B. eine INT-Variable hab, will ich diese überall hochzählen können ohne das ich eine Kopie erstelle.

    Code:
    VAR
    var_int1 : INT :=0;
    pt1 : POINTER TO INT;
    END_VAR
    
    pt1:=ADR(var_int1);
    pt1^:=pt1^+1;
    
    var_int1; (*wird bei pt1^:=pt1^+1; hochgezählt*)

    Hallo gingle,

    irgendwie verstehe ich deine beiden Beiträge nicht.
    Den Begriff Call by reference kenne ich nur bei der Übergabe von Parametern an eine Funktion. Die sehe ich bei dir nicht.

    Wenn Du es aber so meintest, kannst Du auch den Übergabeparameter als In-Out deklarieren. Dann kannst Du aus der Unterfunktion auf den übergebenden Parameter zugreifen. Ohne Pointer!

    Gruß

    dummy

  4. Folgender Benutzer sagt Danke zu Dummy für den nützlichen Beitrag:

    gingele (22.07.2011)

  5. #4
    Avatar von gingele
    gingele ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    26.11.2005
    Beiträge
    225
    Danke
    111
    Erhielt 41 Danke für 35 Beiträge

    Standard

    Ich wollte eigentlich die Funktionsweise von call-by-reference. Das Beispiel habe ich nur vereinfacht reingeschrieben. Wenn ich aber pt1 als Inputvariable an einen FB übergebe und dort hochzähle, so wird dieser in dem FB sowie auch in dem aufrufenden FB hochgezählt. Und das war die Funktion die ich wollte.

    Wenn ich das als In-Out deklariere so muss ich in der Funktion erneuten Speicher allokieren,dies will ich eben vermeiden. Klar dreht sich dieses Beispiel nur um einen Intager-Wert, aber ich will dies allgemein nutzen können.
    "Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."
    (Albert Einstein - 14.03.1879 - 18.04.1955)

  6. #5
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    Zitat Zitat von gingele Beitrag anzeigen
    Ich wollte eigentlich die Funktionsweise von call-by-reference.
    Genau das ist doch VAR IN_OUT.

  7. Folgender Benutzer sagt Danke zu StructuredTrash für den nützlichen Beitrag:

    gingele (22.07.2011)

  8. #6
    Avatar von gingele
    gingele ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    26.11.2005
    Beiträge
    225
    Danke
    111
    Erhielt 41 Danke für 35 Beiträge

    Standard

    Habs gerade getestet und musste Feststellen das ich die ganze Adressenbitschubserei quasi umsonst gemacht habe .

    In-Out Variable Funktionieren gleich, habs gerade getestet, ihr hattet recht. Ich dachte das ich da eben zusätlichen Speicher allokiere, war ein Denkfehler ist eigentlich auch logisch.

    Zumindest habe ich was über die Pointer in Beckhoff gelernt.
    "Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."
    (Albert Einstein - 14.03.1879 - 18.04.1955)

  9. #7
    Registriert seit
    02.02.2007
    Beiträge
    104
    Danke
    12
    Erhielt 16 Danke für 13 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von gingele Beitrag anzeigen
    Habs gerade getestet und musste Feststellen das ich die ganze Adressenbitschubserei quasi umsonst gemacht habe .

    In-Out Variable Funktionieren gleich, habs gerade getestet, ihr hattet recht. Ich dachte das ich da eben zusätlichen Speicher allokiere, war ein Denkfehler ist eigentlich auch logisch.

    Zumindest habe ich was über die Pointer in Beckhoff gelernt.
    Grundsätzlich sollte man Pointer nur verwenden, wenn es notwendig ist. Es besteht immer die Gefahr, beim Online-Change auf die Nase zu fallen.
    Man sollte dann schon sehr genau wissen, was man tut.

    Ansonsten würde ich es gut finden, wenn Du dein Beispiel korrigiert hier rein stellst. Ich denke es liest hier der eine oder andere mit der es sonst nicht versteht.

    Gruß

    dummy

Ähnliche Themen

  1. Call, cc, uc, auf
    Von corvus im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 10.01.2011, 01:41
  2. Call in MC7
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 13
    Letzter Beitrag: 17.06.2010, 09:11
  3. Fehler undefined reference
    Von Hannes im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 15.07.2009, 16:56
  4. CALL BLD im OB1 ???
    Von PBO-WE im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 09.07.2009, 20:18
  5. call-by-call im ausland
    Von Markus im Forum Stammtisch
    Antworten: 11
    Letzter Beitrag: 16.10.2004, 14:30

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •