![]() |
Delphi-Version: 5
Konstantenobjekt / tatsächliche und formale Var-Parameter
Delphi-Quellcode:
Hey beste DP... wo kann ich etwas zu dem oben aufgezeigten Verhalten lesen? Warum darf ich in den Aufruf-Klammern nicht solche Dinge treiben?procedure Test(var Nummer : Integer); var I : Integer; begin Test(I + 1); // Compiler Error, Typ falsch Test(Integer(I + 1)); // Compiler Error, Konstanten Objekt Inc(I); bzw I := I + 1; Test(I); // klappt end; |
AW: Konstantenobjekt / tatsächliche und formale Var-Parameter
Deine Prozedur Test möchte eine veränderbare Variable ("call by Reference").
Wenn du ihr "i + 1" gibst, wie soll man ein "i + 1" verändern können? Ein "i" an sich kann man verändern. Damit ist sie ja auch zufrieden wie du siehst. Das Casten nach Integer bringt auch nichts, denn das Ergebnis dieses Casts ist ja ein neuer Integer. Und der ist vollkommen anonym. Selbst wenn dir deine Test-Prozedur damit etwas anstellen würde, kämst du an dieses Ergebnis nie wieder dran. Die letzten beiden Zeilen machen es richtig: Erst i erhöhen, dann übergeben. Und fröhlichen Stack Overflow noch :-) |
AW: Konstantenobjekt / tatsächliche und formale Var-Parameter
Immerhin sagst du nicht Endlosschleife :)
Ja... du hast natürlich recht. Kannst du noch was zu dem "anonym" sagen? Was passiert eigentlich genau bei solchen Rechenausdrücken? Scheinbar ist das Ergebnis des Terms ja von einem bestimmten Typen... |
AW: Konstantenobjekt / tatsächliche und formale Var-Parameter
Hi,
bei var-Argumenten (auch use by reference) wird eigentlich ein Pointer auf die Variable übergeben - haupsächlich, damit die aufgerufene Procedur ebendiese Variable auch ändern kann -- willst Du dieses Verhalten nicht, lass einfach "var" wech mfg |
AW: Konstantenobjekt / tatsächliche und formale Var-Parameter
Okay, vielen Dank.
Was Anderes als einen Pointer erhalte ich denn durch einen solchen Ausdruck? Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 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 by Thomas Breitkreuz