AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Funktion mit 2 Zahlen

Ein Thema von Axxus · begonnen am 28. Feb 2007 · letzter Beitrag vom 28. Feb 2007
Antwort Antwort
Seite 3 von 3     123
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#21

Re: Funktion mit 2 Zahlen

  Alt 28. Feb 2007, 20:46
Zitat von dominikkv:
das schlüsselwort const bedeutet nur das du a und b nicht mehr verändern kannst (in deiner function), also zB a := 4 wäre dann nicht mehr möglich...du übergibst den wert constant.
und bei jedem functionsaufruf wird a und b neu angelegt und hat nix mit dem "alten" a und b zu tun
ok...

Wenn nichts angegeben wird:
Delphi-Quellcode:
procedure Machwas( a, b: Integer )
{...}
Ist es Call by Value, sprich beim aufruf der Funktion wird für a und b neuer Speicher angelegt und die übergebenen Werte werden dahin kopiert...
Inerhalb der Methode kann man sogar a und b verändern, ohne das dies außerhalb Auswirkungen hat...
Sprich es wär in der Methode z.B. möglich: a := 56;...

Wenn man z.b. nun einen String übergibt, wird der String auch komplett nochmal erstellt und kopiert!




Wenn nun aber Const angegeben wird:
Delphi-Quellcode:
procedure Machwas( Const a, b: Integer )
{...}
Ist es Call by Referenz, sprich es wird nur die Stelle im Speicher übergeben, man greift in der Methode also direkt auf den übergebenen Wert zu, welchen man übergeben hat! Aber! das Schlüsselwort Const verbietet eine Veränderung, sprich a := 56; ist nicht möglich...
Vorteil hat das aber wenn man mit z.B. mit Strings arbeitet! Da werden z.B. die Strings nicht neu angelegt! Was an vielen Stellen viel Performance ausmachen kann...




Wenn nun dagegen Var angegeben wird:
Delphi-Quellcode:
procedure Machwas( Var a, b: Integer )
{...}
Ist es auch Call by Referenz, sprich es wird nur die Stelle im Speicher übergeben, man greift in der Methode also direkt auf den übergebenen Wert zu, welchen man übergeben hat! Aber, wenn man nun den Wert in der Methode verändert: a := 56; ist der Wert nach der Methode außerhalb auch verändert!




Als letztes bleibt noch Out...
Delphi-Quellcode:
procedure Machwas( Out a, b: Integer )
{...}
Hier trifft eigendlich das selbe zu wie beim Schlüsselwort Var, aber man kann auf a und b nicht in der Methode lesend zugreifen, also sowas wie a * b wäre nicht möglich....


So ich hoffe ich hab das alles richtig erklärt =)

Bye Christian
Christian
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf