AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Funktions-Parameter record: Call-by-value??

Ein Thema von Bambi · begonnen am 15. Jun 2015 · letzter Beitrag vom 15. Jun 2015
Antwort Antwort
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#1

AW: Funktions-Parameter record: Call-by-value??

  Alt 15. Jun 2015, 15:26
Da kann man im Prinzip lange darüber streiten, ob Zeiger Referenzen oder Values sind. Letztendlich funktioniert die Übergabe von Parametern auf Instruktionsebene immer nur by-value; der Prozessor arbeitet erst einmal nur mit Werten. Alles darüber sind "nur" semantische Unterschiede, wenn auch nützliche. An der Stelle sollten wir uns aber nicht festbeißen.

Geschieht das per Call-On-Value (also wird der Record kopiert) oder per Call-On-Reference (nur die Referenz auf den Record wird übergeben).
Das Problem ist, dass ich im private-Bereich der Klasse ein Feld "FData: TMyDataRecord" deklariert hab, das die Daten sammelt und sobald alles vollständig ist das Event aufruft: "OnEvent(self, FData)". Call-On-Value wäre also angebracht.
BTW: Kann ich Call-On-Value nicht mit "const" vor dem Parameter erzwingen?
Deine Überlegung ist vermutlich: Der Event-Handler soll nicht an dem Feld herummanipulieren dürfen, also möchte ich call-by-value.
Nun das Problem dabei: Wenn dein Record groß ist, dann wird das Kopieren des Records aufwendig. Was du tatsächlich möchtest, das ist eine schreibgeschützte Referenz auf das Record; und die bekommst du mit const . Sollte eine Kopie nötig sein, wird der Event-Handler das schon machen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz