AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Rückgabewerte von Funktionen und Prozeduren
Thema durchsuchen
Ansicht
Themen-Optionen

Rückgabewerte von Funktionen und Prozeduren

Ein Thema von Hansa · begonnen am 3. Jul 2003 · letzter Beitrag vom 4. Jul 2003
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1
  Alt 3. Jul 2003, 15:20
Zitat von sakura:
Na dann ändere mal. Eine Prozedure kann keinen Rückgabewert haben.
Da bitte ich aber mal um Erläuterung.

[================================================]
Dieser Thread wurde von folgendem Thread abgetrennt, da die Inhalte beide diskussionswürdig sind, allerdings verschieden Voraussetzungen mit sich bringen.
http://www.delphipraxis.net/viewtopic.php?t=6884

Mit freundlichen Grüßen,
SAKURA
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 3. Jul 2003, 15:36
Zitat von Hansa:
Da bitte ich aber mal um Erläuterung.
Was genau willst Du hören. var-Parameter sind keine Rückgabewerte

Ich quotiere doch glatt noch einmal den Delphi-Language Guide:
Zitat:
Code:
[b]Prozedurdeklarationsabschnitt [/b]-> Prozedurdeklaration
                              -> Funktionsdeklaration
[b]Prozedurdeklaration [/b]-> Prozedurkopf ';' [Direktive] [Portabilitäts-Direktive]
                       Block ';'
[b]Funktionsdeklaration [/b]-> Funktionskopf ';' [Direktive] [Portabilitäts-Direktive]
                     Block ';'
[b]Funktionskopf [/b]-> FUNCTION Bezeichner [Formale Parameter] ':' (Einfacher Typ | STRING)
[b]Prozedurkopf [/b]-> PROCEDURE Bezeichner [Formale Parameter]
[b]Formale Parameter [/b]-> '(' Formaler Parameter ';'. ')'
[b]Formaler Parameter [/b]-> [VAR | CONST | OUT] Parameter
[b]Parameter [/b]-> Bezeichnerliste [':' ([ARRAY OF] Einfacher Typ | STRING | DATEI)]
          -> Bezeichner ':' Einfacher Typ '=' Konstanter Ausdruck
Darin ist der Aufbau einer Prozedur und einer Funktion sehr gut erklärt. Beide können optional eine Parameterliste haben. Eine Funktion liefert einen Ergebniswert zurück, wohingegen eine Prozedure dieses nicht tut. Beide können jedoch variable Parameter haben, welche auch Ausgabewerte aufnehmen können.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3
  Alt 3. Jul 2003, 15:44
Ach du Schande, Sakura bringt tatsächlich die Grammatik. Hätte ich das vorher gewußt.

Aber was hindert einen daran, den VAR Paramter als Rückgabewert zu benutzen. Wie bei einer Funktion
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 3. Jul 2003, 16:00
Wie gesagt, ich habe geschreiben, das man var-Parameter nutzen kann, aber das sind keine Prozedur-Rückgabe werden, es sind halt "[in|out] Parameter", welche einen Rückgabewert aufnehmen kann. Es ist ein kleiner, feiner Unterschied.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5
  Alt 3. Jul 2003, 16:19
Dann schreibe doch wenigstens, warum. Man kann eine Prozedur nicht so übergeben:
Delphi-Quellcode:
var i : integer;

i := procedure Iwert

aber schon als i := IFunction, wobei:

Function IFunction : integer;
Pseudocode halt
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 3. Jul 2003, 16:24
Hansa, Du hast mit Deinem Ansatz aber völlig am Problem vorbei manövriert. Es geht hier um "Prozedurvariablen", welche eigentlich Pointer sind. Damit würde auch folgender Code problemlos gehen (Zuweisung einer Prozedur auf eine "Prozedurvariable")
Delphi-Quellcode:
procedure Oehm(X, C: Integer);
begin
  ShowMessage(IntToStr(X + C));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  F: procedure (A, B: Integer);
begin
  F := Oehm;
  F(1, 2);
end;
Dabei wird Owhm F zugewiesen. Oehm ist eine Prozedur.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
CepheidenX

Registriert seit: 11. Mär 2003
43 Beiträge
 
Delphi 6 Professional
 
#7
  Alt 3. Jul 2003, 16:36
Worum gehts denn hier eigentlich noch? Sicher doch nicht um den unterschied zwischen Funktionen (gibt einen Funktionswert zurück) und Prozeduren (gibt keinen Funktionswert zurück).
Das ist doch wieder so ein Punkt den C-Programmierer nehemn um Pascal bzw Delphi schlecht zumachen. Denn sie meinen es ist verwirrend da zu unterscheiden, immerhin gibt es in C ja nur Funktionen (mit und ohne Rückgabewert).

Was die Parameterübergabe bei Prozeduren angeht, da sollte man erstmal in die Online Hilfe schauen
Stichwort: Parameter
Zynismus ist der geglückte Versuch, die Welt so zu sehen, wie sie wirklich ist.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8
  Alt 3. Jul 2003, 16:42
Zitat:
...Funktionen (gibt einen Funktionswert zurück) und Prozeduren (gibt keinen Funktionswert zurück)...
Eine Prozedur gibt keinen Funktionswert zurück, aber einen VAR-Parameter. Eine Function gibt nur EINEN zurück, Prozeduren mehrere.
Gruß
Hansa
  Mit Zitat antworten Zitat
CepheidenX

Registriert seit: 11. Mär 2003
43 Beiträge
 
Delphi 6 Professional
 
#9
  Alt 3. Jul 2003, 16:52
Das sind aber Parameter! da steckt ein andere Mechanismus hinter.

In Delphi gibt es 4 Parameterformen (Wert-, (Var) Variablen-, (const) Konstanten- oder (out) Ausgabeparameter) sie geben an wie die Variablen in der Routine behandelt wird.

Bei VAR-Parametern wird KEINE neue Variable erzeugt, wie bei den anderen. im Prinzip wird nur ein Zeiger übergeben. Somit haben verönderungen in der Subroutine direkte Auswirkungen auf die Variable.

Im Prinzip würde das auch bei Funktionen gehen. Aber Borland hat das eben nicht so vorgesehen.
Zynismus ist der geglückte Versuch, die Welt so zu sehen, wie sie wirklich ist.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10
  Alt 3. Jul 2003, 17:12
Zitat von CepheidenX:
...Bei VAR-Parametern wird KEINE neue Variable erzeugt, wie bei den anderen...
Kommst Du etwa aus der falschen Richtung ? Oder ich ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 22:56 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