AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rückgabewert Referenzieren

Ein Thema von jjep · begonnen am 23. Jun 2008 · letzter Beitrag vom 23. Jun 2008
Antwort Antwort
jjep

Registriert seit: 19. Jun 2007
Ort: Wettingen CH
78 Beiträge
 
#1

Rückgabewert Referenzieren

  Alt 23. Jun 2008, 16:27
Hallihallo

Man kann ja die Übergabeparameter einer Methode mit "var" definieren, um sie nur zu referenzieren:

procedure Tester(a: Integer; var b: Integer);
Mein Ziel ist es den Rückgabewert einer Funktion referenziert zurückgeben...
Ist dies überhaupt möglich?
Ich weiss, es ist natürlich möglich der Rückgabewert auch als Übergabewert zu definiere, aber ich würde die ander Lösung bevorzugen...
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Rückgabewert Referenzieren

  Alt 23. Jun 2008, 16:38
In dem Fall müsstest du einen Pointer zurückgeben.
Delphi-Quellcode:
function (foo: TBar): PInteger;
begin
  result := @Foobar;
end;
Wobei Foobar dann keine lokale Variable der Funktion sein darf, da sie nach Verlassen der Function nicht mehr existiert.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
jjep

Registriert seit: 19. Jun 2007
Ort: Wettingen CH
78 Beiträge
 
#3

Re: Rückgabewert Referenzieren

  Alt 23. Jun 2008, 16:46
jo das mit der lokalen Variable ist klar...

danke
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Rückgabewert Referenzieren

  Alt 23. Jun 2008, 16:53
Bei nicht elementaren Typen wird übrigens immer nur eine Referenz zurückgegeben, so dass man da nicht zusätzlich mit Pointern hantieren muss. Ausgenommen davon sind aber Delphi-Strings, und ich glaube auch Records und statische Arrays - diese werden ohne Handarbeit ByValue übergeben. Edit: Bei statischen Arrays aber dann auch nur lokale wenn ich mich nicht irre, für die es ja auch Sinn macht. 100%ig sicher bin ich allerdings nicht, wie es für alle möglichen Fälle im einzelnen aussieht.

(Das aber nur der Vollständigkeit halbar )
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Rückgabewert Referenzieren

  Alt 23. Jun 2008, 16:59
Wenn man sich einmal fragt was bei Verwendung von Var, Out etc. passiert liegt die Lösung auf der Hand (wurde auch bereits gepostet). Ein by-Reference übergebener Wert ist nichts anderes als das ein Pointer auf den Wert übergeben wird.

Hast du also beispielsweise eine Funktion in einer DLL welche einen Var-parameter erwartet kannst du die Funktion außerhalb auch mit einem Pointerparameter definieren. Und Rückgabewerte von Funktionen können natürlich auch Pointer-Typen sein
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 17:39 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