AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Konstantenobjekt / tatsächliche und formale Var-Parameter
Thema durchsuchen
Ansicht
Themen-Optionen

Konstantenobjekt / tatsächliche und formale Var-Parameter

Ein Thema von Jonas Shinaniganz · begonnen am 6. Aug 2013 · letzter Beitrag vom 6. Aug 2013
Antwort Antwort
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#1

Konstantenobjekt / tatsächliche und formale Var-Parameter

  Alt 6. Aug 2013, 14:14
Delphi-Version: 5
Delphi-Quellcode:

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;
Hey beste DP... wo kann ich etwas zu dem oben aufgezeigten Verhalten lesen? Warum darf ich in den Aufruf-Klammern nicht solche Dinge treiben?
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Konstantenobjekt / tatsächliche und formale Var-Parameter

  Alt 6. Aug 2013, 14:20
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
  Mit Zitat antworten Zitat
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#3

AW: Konstantenobjekt / tatsächliche und formale Var-Parameter

  Alt 6. Aug 2013, 14:29
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...
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!

Geändert von Jonas Shinaniganz ( 6. Aug 2013 um 14:34 Uhr)
  Mit Zitat antworten Zitat
mentaltec

Registriert seit: 28. Sep 2012
60 Beiträge
 
#4

AW: Konstantenobjekt / tatsächliche und formale Var-Parameter

  Alt 6. Aug 2013, 14:32
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
  Mit Zitat antworten Zitat
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#5

AW: Konstantenobjekt / tatsächliche und formale Var-Parameter

  Alt 6. Aug 2013, 14:39
Okay, vielen Dank.

Was Anderes als einen Pointer erhalte ich denn durch einen solchen Ausdruck?

Grüße
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!
  Mit Zitat antworten Zitat
Antwort Antwort


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