Eine Frage bittet um Erklärung

Ich brauche mal einen Fachmann der mir folgendes erklären oder beantworten kann.^^

Erläutern Sie die Parameterübergabe zwischen einem rufenden Programm und einer Prozedur an Beispielen von Delphi. Gehen Sie dabei auf Gültigkeitsbereich und Initalisierung der Variablen ein. Welche Anforderungen werden an Parameter gestellt?

Ist eine Aufgabenstellung meiner Mitbewohnerin die sie aufbekommen hat. Den Rest der 40 Aufgaben hab ich mit ihr zusammen gelöst und ihr versucht das in einfachen Worten zuerklären aber bei der Frage muss ich nu doch irgendwie passen. Ich hab da keinen Schimmer obwohl ich es eigentlich wissen müsste. :D
 
Es geht um die Übergabe per Wert und per Referenz würd ich sagen und den Gültigkeitsbereich von Variablen (Variablen im Hauptprogramm vs Variablen innerhalb einer Prozedur)

Code:
var a,b:integer;

procedure Foobar(x:integer;var y:integer);
begin
   x := 3;
   y := 4;
end;

begin
   a := 1;
   b := 2;
   Foobar(a,b);
end.

Resultat: a = 1, b = 4 da bei x nur der Wert, bei y aber die Referenz (also das Original) übergeben wird.
 
So ungefähr.^^
Hab noch die halbe Nacht gestern geforscht und es rausgefunden. Pünktlich als meine Mitbewohnerin aufgestanden ist war ich fertig und konnte ihr noch soweit alles in nicht Fachdeutsch beibringen bis sie 9 Uhr zur Prüfung musste.^^

Aber trotzdem Danke :)


Gruß Dreamer
 
a. procedure DoSomeShit( const X: Integer );
b. procedure DoSomeShit( X: Integer );
c. procedure DoSomeShit( var X: Integer );
d. procedure DoSomeShit( X, Y, Z: Integer; A, B, C: Integer ); stdcall;

a -> Der Übergabeparameter wird kopiert als konstante übergeben.
b -> Der Übergabeparameter wird nur kopiert übergeben.
c -> Intern wird der Pointer zur Variable übergeben -> Alle Änderungen werden auch außerhalb der Procedure wirksam. (-> siehe inc() );
d -> Die Werte A, B, C werden in den Stack gepusht. Für X, Y, Z siehe b. !

Hoffe dies war eine qualifizierte Antwort!

EDIT:
Ok, habe mich bei stdcall vertan: bei stdcall werden alle Übergabeparameter in den Stack gepusht

MfG L.W
 
Orginal von Cyberm@ster:
Code:
var a,b:integer;

procedure Foobar(x:integer;var y:integer);
begin
   x := 3;
   y := 4;
end;

begin
   a := 1;
   b := 2;
   Foobar(a,b);
end.

Resultat: a = 1, b = 4 da bei x nur der Wert, bei y aber die Referenz (also das Original) übergeben wird.

Das war die Erklärung ABER ihr Prof wollte es in Worten erklärt haben und das sie nunmal Medienwissenschaften studier und Info machen muss hat sie davon keine Ahnung. Habe ihr da dann einen Text aller Dreamer verfasst der selbst für einen Noob verständlich war. Ich hoffe jedenfalls das er es war.^^
 
Zurück
Oben