-> Hier kostenlos registrieren
Hallo zusammen,
ich habe mich soeben gefragt, welche Anwendungsfälle für Referenzen existieren. So wie ich es Verstanden habe, ersetzen Referenzen die indirekte Adressierung (Pointer) bei optimierten Bausteinen. Wieso geht man den Umweg über eine Referenz, wenn die Variable direkt symbolisch angesprochen werden kann? Gibt es hierbei vielleicht irgendwelche Vorteile bezüglich der Speicherbelegung zur Laufzeit?
Hier ein kleiner SCL-Auszug, welcher die gleiche Aufgabe mit und ohne den Einsatz einer Referenz ausführt.
#Result := #a + #b; //Ergebnis = 15
"Referenz_Ergebnis"."Ergebnis 1" := #Result; //Ergebnis in DB schreiben
#MyRefInt:= REF(#a);
#MyRefInt^ := 3;
#Result := #a + #b; //Ergebnis = 13
"Referenz_Ergebnis"."Ergebnis 2" := #Result; //Ergebnis in DB Schreiben
#a := 5; //Variable a rücksetzen
#Result := #a + #b; //Ergebnis = 15
"Referenz_Ergebnis"."Ergebnis 3" := #Result;
#a := 3; //entspricht obiger Referenzoperation
#Result := #a + #b; // Ergebnis = 13
"Referenz_Ergebnis"."Ergebnis 4" := #Result;
#a := 5;
Für eure Erfahrungen und Meinungen wäre ich sehr dankbar.
Gruß
PLC1
ich habe mich soeben gefragt, welche Anwendungsfälle für Referenzen existieren. So wie ich es Verstanden habe, ersetzen Referenzen die indirekte Adressierung (Pointer) bei optimierten Bausteinen. Wieso geht man den Umweg über eine Referenz, wenn die Variable direkt symbolisch angesprochen werden kann? Gibt es hierbei vielleicht irgendwelche Vorteile bezüglich der Speicherbelegung zur Laufzeit?
Hier ein kleiner SCL-Auszug, welcher die gleiche Aufgabe mit und ohne den Einsatz einer Referenz ausführt.
#Result := #a + #b; //Ergebnis = 15
"Referenz_Ergebnis"."Ergebnis 1" := #Result; //Ergebnis in DB schreiben
#MyRefInt:= REF(#a);
#MyRefInt^ := 3;
#Result := #a + #b; //Ergebnis = 13
"Referenz_Ergebnis"."Ergebnis 2" := #Result; //Ergebnis in DB Schreiben
#a := 5; //Variable a rücksetzen
#Result := #a + #b; //Ergebnis = 15
"Referenz_Ergebnis"."Ergebnis 3" := #Result;
#a := 3; //entspricht obiger Referenzoperation
#Result := #a + #b; // Ergebnis = 13
"Referenz_Ergebnis"."Ergebnis 4" := #Result;
#a := 5;
Für eure Erfahrungen und Meinungen wäre ich sehr dankbar.
Gruß
PLC1