Einzelnen Beitrag anzeigen

Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#16

Re: Eine Procedure erstellen Beispiel: procedure Removefile

  Alt 5. Aug 2005, 16:51
Hallo ihr,

also...das was Nils da gebaut hast ist eine Methode einer Klasse. Diese kann nur angewendet werden, falls man eine Instanz der Klasse (in diesem Fall Form1) hat. Aufrufkonvention:
Delphi-Quellcode:
<Objektvariable>.<MethodenName>
//Oben z.B.:
Form1.RemoveFile;
Je nachdem wo man sie deklariert sind sie "mehr oder weniger sichtbar". Eine Funktion, die im private-Bereich deklariert wurde, wird nur in der eigenen Unit aufrufbar sein. Im public-Bereich hingegen ist sie fuer alle sichtbar.

Das zweite sind "normale" Funktionen/Prozeduren, welche es ja auch schon im guten alten DOS-Pascal gab. Es gibt mehrere Wege diese zu implementieren:
  • Einfache implementierung ohne interface-Deklaration: Die Funktionen werden einfach im implementation-Teil geschrieben, z.B.:
    Delphi-Quellcode:
    unit Foo;
    interface
    implementation

    function Bar: Integer;
    begin
      Result := 42;
    end;

    end.
    Diese Funktionen sind nur in der eigenen Unit sichtbar, aber auch nur nachdem sie deklariert wurden. Dies wuerde also zu einem Fehler fuehren:
    Delphi-Quellcode:
    unit Foo;
    interface
    implementation

    function Bar: Integer;
    begin
      Result := FooBar;
    end;

    function FooBar: Integer;
    begin
      Result := 42;
    end;

    end.
  • Implementierung mit vorhergehender Deklaration: Dabei wird der Funktionskopf im interface-Teil deklariert, die Implementierung erfolgt wie vorhin im implementation-Teil:
    Delphi-Quellcode:
    unit Foo;
    interface

    function Bar: Integer;

    implementation

    function Bar: Integer;
    begin
      Result := 42;
    end;

    end.
    Die Funktionen sind dabei auch ausserhalb der Unit sichtbar. Weiters sind die Funktionen bereits deklariert, also wuerde dieser Code diesmal funktionieren:
    Delphi-Quellcode:
    unit Foo;
    interface

    function Bar: Integer;
    function FooBar: Integer;

    implementation

    function Bar: Integer;
    begin
      Result := FooBar;
    end;

    function FooBar: Integer;
    begin
      Result := 42;
    end;

    end.
  • Forward-Deklaration von Funktionen: Wir haben vorhin gesehen, dass Funktionen, welche im implementation-Teil implementiert werden, ohne vorher deklariert zu werden, erst nach der Funktion selbst "sichtbar" sind. Was tun wenn die Prozeduren nur in der Unit sichtbar sein sollen, aber trotzdem der zweite Code aus dem ersten Abschnitt funktionieren soll? Dafuer gibt es das Schluesselwort forward:
    Delphi-Quellcode:
    unit Foo;
    interface
    implementation

    function Bar: Integer; forward;
    function FooBar: Integer; forward;

    function Bar: Integer;
    begin
      Result := FooBar;
    end;

    function FooBar: Integer;
    begin
      Result := 42;
    end;

    end.
    Das Schluesselwort forward sagt dem Compiler, dass die Funktion hier nur deklariert wurde, die Implementierung aber spaeter folgt. So sind die Funktionen ausserhalb der Unit nicht sichtbar, aber der Aufruf von FooBar in Bar funktioniert trotzdem.

So, ich hoffe das Tippen hat sich wenigstens gelohnt und die Tipps helfen (ok..einen Teil hat Khabarakh schon erklaert, aber meins ist genauer )

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat