function oder procedure

e.motion

Mitglied
Sry bin noch ein Delphi anfänger. Hier meine Frage:
Ich kenne Funktionen aus c++ aber was ist bei Delphi der Unterschied zwischen einer function und einer procedure ?
Kann es sein das man in Funktionen keine Objects verwenden kann? also z.B. in einer function nicht edit.text := 'bla'; zuweisen kann?
 

Dario Linsky

Erfahrenes Mitglied
Der eigentlich einzige Unterschied zwischen einer Prozedur und einer Funktion ist der, dass eine Funktion einen Wert direkt zurückgeben kann - eine Prozedur nicht. Ansonsten kann man Funktionen und Prozeduren genau gleich verwenden.

Bei C und C++ sagt man eher, dass eine Prozedur eine Funktion ist, die keinen Wert (void) zurückgibt:
Code:
void meineFunktion(int i)
entspricht in Delphi/Pascal einer Prozedur:
Code:
procedure meineFunktion(i: Integer);
Eine normale Funktion in C++ gibt eben einen Wert zurück:
Code:
int meineFunktion(int i)
entspricht in Delphi/Pascal einer Funktion:
Code:
function meineFunktion(i: Integer): Integer;

Wenn man aus einer Prozedur einen Wert zurückgeben will, müsste man das über Referenz-Parameter erledigen. Das kann man in C++ aber genau so machen.
 

e.motion

Mitglied
vielen dank!
noch eine Frage wie kann ich den Objecte in Funktionen verwenden?
man muss die ja wie Variablen irgendwie globalisieren oder?
 

Dario Linsky

Erfahrenes Mitglied
Wie meinst Du das jetzt genau? Objekte kannst Du ganz normal als Parameter an die Funktion übergeben. Ein Objekt ist ja eigentlich auch nichts anderes als eine Form von Variable (Objektvariable).
Andersrum kannst Du auch eine Funktion in einer Klasse definieren:
Code:
type
  meineKlasse = class(TObject)
  private
  public
    function meineFunktion(parameter: Integer): Integer;
  end;

var
  meinObjekt: meineKlasse;

function meineKlasse.meineFunktion(parameter: Integer): Integer;
begin
  Result := parameter;
end;

Anstatt einen Parameter vom Typ Integer zu übergeben, kannst Du auch ein Objekt vom Typ TForm (oder irgendwas anderes) nehmen. Das gleiche gilt natürlich für den Rückgabewert der Funktion.