![]() |
@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:
|
ich verstehe das genauso wenig, wie Du. 8) Wenn ich folgenden Code habe:
Delphi-Quellcode:
was steht dann hier drin ? :
procedure Test (VAR i : integer);
begin i := 5; end;
Delphi-Quellcode:
begin
showmessage (IntToStr (Test (8)); end; |
Du meinst wie ShowMessage deklariert ist?
Delphi-Quellcode:
kannst du auch selber nachschauen :-)
procedure ShowMessage(const Msg: string);
Edit: Ich versteh nicht ganz worauf du hinaus willst |
Delphi-Quellcode:
was steht dann hier drin ? :
unit TestUnit;
Interface procedure Test (VAR i : integer); implementation procedure Test (VAR i : integer); begin i := 5; end; end;
Delphi-Quellcode:
??????
program TestProgramm;
uses TestUnit,..... begin showmessage (IntToStr (Test (8)); end; |
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. :roll: Eventuell bin ich ja schwer von Begriff, also hab Verständnis. |
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. :mrgreen: |
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. |
Zitat:
Code:
Wieso ist da kein Rückgabewert ???
procedure Test (VAR i : integer);
begin i := 5; end; |
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. :| |
Zitat:
"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
Delphi-Quellcode:
könntest du auch schreiben:
procedure Test (VAR i: Integer);
Delphi-Quellcode:
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.
procedure Test (pi: PInteger);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:21 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-2025 by Thomas Breitkreuz