![]() |
Re: Function/Procedure -Deklaration ?!
@fauxx
Zitat:
|
Re: Function/Procedure -Deklaration ?!
Eine Kombination von const und var macht keinen Sinn. Ich weiß noch nicht mal, ob das der Compiler überhaupt akzeptiert. Mir const sagst du ihm der Parameter wird in der Prozedur nicht veränder und mit var sagst du ihm wieder, er soll den Parameter verändern. :?
|
Re: Function/Procedure -Deklaration ?!
Das ist elementar. Sieh Dir das an (und ausprobieren !) :
Delphi-Quellcode:
Const bringt eine Konstante. Keine Änderung/Rückgabewert möglich. OHNE bringt in der Prozedur den Parameter unter, der innerhalb als Variable benutzt werden kann. Aber immer noch kein Rückgabewert. Nach außen nicht sichtbar. 8) VAR schließlich liefert den Wert auch zurück.
procedure test (OHNE/CONST/VAR a : integer);
begin a := a + 1; end; procedure TForm1.Button1Click(Sender: TObject); var b : integer; begin b := 1; test (b); showmessage (IntToStr (b)); end; |
Re: Function/Procedure -Deklaration ?!
Stichworte wären auch by reference und by value. by refernece heißt, es wird eine Speicherstelle als Parameter übergeben. Wird in der Prozedur der Wert dieser Speicherstelle verändert, bleibt diese Änderung nach verlassen der Prozedur erhalten. Von "zurückgeben" kann man, wenn man es genau nimmt, nicht sprechen. by value bedeutet, dass eine Kopie des Wertes als Parameter an die Prozedur übergeben wird. Und wenn ich die Kopie ändere, hat dies logischerweise keinen Einfluss auf das Original.
|
Re: Function/Procedure -Deklaration ?!
soweit ist das in der Theorie schon richtig. Den Const Parameter habe ich noch nie gebraucht. Im Prinzip reicht Wert (OHNE) und VAR - Parameter. Den CONST kann man mit einer lokalen Variablen selber bauen, sofern der Wert (Input bzw.OHNE Parameter) direkt der lokalen Variablen zugewiesen wird. Der VAR - Prameter liefert den dann. Wie Luckie sagt, sieht das im Speicher dann eben so aus. 8)
|
Re: Function/Procedure -Deklaration ?!
Zitat:
|
Re: Function/Procedure -Deklaration ?!
Aber du hast die damit verbundenen Begriffe nicht genannt, was ich noch mal nachholen wollte.
|
Re: Function/Procedure -Deklaration ?!
Hi Leute,
Soweit ich weiß, ist der Aufruf mit const schneller, da der Compiler nur den Wert übergibt, ohne die Möglichkeit diesen zu ändern. Er legt also auch keine temporäre Lokale Variable an... Könnte man vielleicht ausmessen mit GetTickCount, und ein paar 1000 Routinenaufrufen... Wenn jemand Lust und Zeit hat... Mfg Mike. |
Re: Function/Procedure -Deklaration ?!
Ob das merklich schneller ist bezweifle ich. :gruebel:
Auf jeden Fall benötigt es weniger Speicherplatz... |
Re: Function/Procedure -Deklaration ?!
Moin!
Zitat:
1. Werte die eine Grösse < 4 Bytes haben, werden trotzdem als DWORD gepusht - wegen dem alignment 2. Werte die die grösser als 4 Bytes sind, werden als Zeiger übergeben (Referenz) und somit sind sie auch nur 4 Bytes gross. Daher: Wie sollte das weniger Speicherplatz brauchen? Ob nun Const oder Var - er muss so oder so bei einem Element mit einer Grösse > 4 Bytes einen Zeiger / Referenz auf dieses übergeben, somit ändert sich da nix dran. MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:34 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