![]() |
Re: Die größer Zahl nehmen ?
also seit 'ner Weile gibt's das wieder (weiß nicht genau, seit D2006 auf jeden Fall)
|
Re: Die größer Zahl nehmen ?
Zitat:
Es gab hier mal ein Thema (vielleicht gibt es das auch noch), im dem der Sinn des Ganzen beschrieben war. Seitdem habe ich mir gemerkt, wenn die Parameter-Werte in der Funktion nicht verändert werden, ein "const" davor zu setzen. Mich würde es jedoch auch interessieren, wieso genau ich das davor setze. :mrgreen: Vielleicht bin ich zu gutgläubig. Grüße, Matze |
Re: Die größer Zahl nehmen ?
Bevor ich mir hier den Wolf tippe:
Zitat:
Zitat:
|
Re: Die größer Zahl nehmen ?
solange man bei einem Integer/LongInt/SmallInt/ShortInt/Cardinal/LongWord/Word/Byte/Boolean mit Var/Out arbeitet, wird eine Refferenz übergeben ... wenn man Const oder nichts übergibt, dann wird (zumindestens bei der Konvention PASCAL ... bei den anderen weiß ich es jetzt nicht) nur der Inhalt koppiert da dieses in der Verarbeitung schneller ist ... muß dann ja nur noch aus dem Variablenspeicher gelesen und nicht erst die Referenz aufgelöst werden.
Vorallem bei größeren Typen wird bei Const/Var/Out die Referenz übergeben und ohne eine Angabe eine Kopie des Inhalts angelegt und damit geareitet. für IN bin ich mir grad nicht ganz sicher. Sozusagen: in Delphi gibt es in der Standardaufrufkonvention und bei vielen Typen kleiner-gleich Integer eigentlich keinen Unterschied zwischen Const oder Nichts ... aber es kann auch nicht schaden, wenn man es macht ... wenn man es immer macht, vergißt man es nicht bei Typen, wo es besser wär :stupid: |
Re: Die größer Zahl nehmen ?
Wenn ich es richtig verstanden habe, meckert der Compiler also, wenn ich aus proc1(Const a: xy)
eine proc2(var b:yz) mit meinem konstanten Parameter aufrufe. Das war früher anders. Da konnte man sowas machen und in der Procedure proc1 mit dem veränderten Parameter weitermachen, aber eben nur intern! An die ursprüngliche Aufrufstelle wurde dann keine Veränderung zurückgegeben. So gesehen, macht das durchaus Sinn! |
Re: Die größer Zahl nehmen ?
wie, das ginge früher mal?
weder in D7 noch Neuer geht's
Delphi-Quellcode:
man kann es sich so vorstellen (von der Verwendung her):
procedure Test2(var x: Integer);
begin x := 123; end; procedure Test1(const x: Integer); begin Test2(x); // [Fehler] Unit1.pas(32): Konstantenobjekt kann end; // nicht als Var-Parameter weitergegeben werden procedure TForm1.FormCreate(Sender: TObject); begin Test1(Tag); end; mit Const ist der Parameter wie eine Konstante ohne Const ist es wie eine lokale Vaiable, welche beim Prozedurstart vorbelegt wurde |
Re: Die größer Zahl nehmen ?
Zitat:
Außerdem meine ich mit früher sowas wie Turbo Pascal, da kommt das ja alles her. und das kannte auch keine const-Angabe bei den Parametern. Zitat:
|
Re: Die größer Zahl nehmen ?
und das geht auch heute noch! gerade ausprobiert!
wenn dagegen const dabei steht, gibt es ne Fehlermeldung vom Compiler: E2197 Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden |
Re: Die größer Zahl nehmen ?
ja klar, ohne CONST ist es ja keine Konstante mehr und darf verändert werden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:06 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