Einzelnen Beitrag anzeigen

ele

Registriert seit: 18. Feb 2009
129 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Parameter-Übergabe: normal, var, const

  Alt 3. Jan 2011, 09:30
Beim Fall 1 wird das Objekt By-Value übergeben, das heisst der Wert wird kopiert.
Beim Fall 3 wir das Objekt By-Reference übergeben, das heisst das ein Pointer auf das Objekt übergeben wird.

Fall 2 und 3 sind sich sehr ähnlich, mit dem Unterschied dass im Fall 3 dem Parameter nichts zugewiesen werden kann und der Compiler entsprechende Optimierungen vornehmen kann.

Im Fall 1 kann man dem Parameter-Objekt einen Wert zuweisen. Diese Zuweisung gilt nur innerhalb der Funktion wo der Parameter deklariert wurde.

Im Falle eines Objektes sind die Unterschiede zwischen 1 und 2 nicht so gross, aber das ganze wird vor allem dann interessant wenn man Strings oder Arrays übergibt. Da beim Fall 1 by Value übergeben wird, wird bei jedem Funktionsaufruf der String-Parameter (bzw Array) kopiert, was für die Performance natürlich sub-ideal ist. Im Fall 3 wird nur der Pointer zum String übergeben, was wesentlich schneller geht.
  Mit Zitat antworten Zitat