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 2 von 4     12 34      
CepheidenX

Registriert seit: 11. Mär 2003
43 Beiträge
 
Delphi 6 Professional
 
#11
  Alt 3. Jul 2003, 17:19
@Hansa
Ich weis ja nicht was du genau willst.
Aber bei der Übergabe von normalen Parametern in Delphi/Pascal wird (vom compiler, also im Hintergrund) eine neue lokale Variable, also ein Integer oder String ...) für die SubRoutine erzeugt. Wenn Das steuerwort var benutzt wird ist das nicht der Fall.
Naja fast, es wird nur ein Zeiger erzeugt der auf die Variable in der übergeordneten Routine zeigt.
Wie gesagt bekommt der Programmierer davon nichts mit.
Was du mit
Zitat:
Kommst Du etwa aus der falschen Richtung ? Oder ich ?
meinst versteh ich nicht.
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
 
#12
  Alt 3. Jul 2003, 17:25
ich verstehe das genauso wenig, wie Du. 8) Wenn ich folgenden Code habe:

Delphi-Quellcode:
procedure Test (VAR i : integer);
  begin
    i := 5;
  end;
was steht dann hier drin ? :
Delphi-Quellcode:
begin
  showmessage (IntToStr (Test (8));
end;
Gruß
Hansa
  Mit Zitat antworten Zitat
CepheidenX

Registriert seit: 11. Mär 2003
43 Beiträge
 
Delphi 6 Professional
 
#13
  Alt 3. Jul 2003, 17:32
Du meinst wie ShowMessage deklariert ist?
procedure ShowMessage(const Msg: string); kannst du auch selber nachschauen

Edit: Ich versteh nicht ganz worauf du hinaus willst
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
 
#14
  Alt 3. Jul 2003, 17:39
Delphi-Quellcode:
unit TestUnit;

Interface

procedure Test (VAR i : integer);

implementation

procedure Test (VAR i : integer);
  begin
    i := 5;
  end;

end;
was steht dann hier drin ? :
Delphi-Quellcode:
program TestProgramm;

uses TestUnit,.....

begin
  showmessage (IntToStr (Test (8));
end;
??????
Gruß
Hansa
  Mit Zitat antworten Zitat
CepheidenX

Registriert seit: 11. Mär 2003
43 Beiträge
 
Delphi 6 Professional
 
#15
  Alt 3. Jul 2003, 17:44
Könntest du dich bitte so ausdrücken das man versteht was du willst?

Irgendwelchen kommentarlosen Quelltext posten nenne ich nicht verständlich oder klar ausdrücken. Und ein "was steht dann hier drin ? :" bringt es auch nicht wirklich.
Eventuell bin ich ja schwer von Begriff, also hab Verständnis.
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
 
#16
  Alt 3. Jul 2003, 17:55
Viel einfacher gehts wirklich nicht.

Das ist wahrscheinlich eines der kleinsten Programme der Welt. Mir fällt jedenfalls nicht ein, wie es noch kleiner werden könnte. Läßt Du das Programm laufen, was wird dann angezeigt? 5 oder 8 ???

Das ist ein Rätsel, wo die Lösung gleich mitgeliefert wird.
Gruß
Hansa
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#17
  Alt 3. Jul 2003, 18:01
Es wird gar nichts angezeigt, denn du kannst das Programm nicht kompilieren. InttoStr() erwartet als Parameter einen Integer, die Prozedur gibt aber keinen Integer als Rückgabewert zurück.
Sie hat keinen Rückgabewert.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#18
  Alt 3. Jul 2003, 18:08
Zitat von Chewie:
... InttoStr() erwartet als Parameter einen Integer, die Prozedur gibt aber keinen Integer als Rückgabewert zurück.
Code:
procedure Test (VAR i : integer);
  begin
    i := 5;
  end;
Wieso ist da kein Rückgabewert ???
Gruß
Hansa
  Mit Zitat antworten Zitat
CepheidenX

Registriert seit: 11. Mär 2003
43 Beiträge
 
Delphi 6 Professional
 
#19
  Alt 3. Jul 2003, 18:08
1. "was steht dann hier drin ? :" Sagt für mich nicht aus, dass ich Dir sagen soll was nach ausführen deines Programm-Codes af dem Bildschirm ausgegeben wird.

2. ist dein Quelltext fehlerhaft! Ausser du bringst Delphi bei, Zahlen als Variablennamen zu interpretieren. Du kannst einer Prozedur die ein Var-Parameter verlangt keinen Zahlenwert übergeben.

Meinen perönlichen Kommentar verkeif ich mir mal.
Zynismus ist der geglückte Versuch, die Welt so zu sehen, wie sie wirklich ist.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#20
  Alt 3. Jul 2003, 18:16
Zitat von Hansa:
Code:
procedure Test (VAR i : integer);
  begin
    i := 5;
  end;
Wieso ist da kein Rückgabewert ???
Also gut

"Rückgabewert" bedeutet, dass die Rückgabe der Funktion nach Ablauf des Programmblocks (=Funktion) in das Register EAX geschrieben wird. Bei einer Funktion ist da was drin, bei einer Prozedurr wird da nichts reingeschrieben.
Ein Var-Parameter ist kein Rückgabewert. Anstatt
procedure Test (VAR i: Integer); könntest du auch schreiben:
procedure Test (pi: PInteger); VAR bedeutet, dass nicht der Speicherblock, den die Variable belegt, an die Funktion übergeben wird, sondern nur die Startadresse dieses Blocks. Die Funktion kann anhand dieser Adresse in den Speicherblock der Variablen schreiben, und somit kann sich der Wert derr Variablen ändern.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 23:14 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