Einzelnen Beitrag anzeigen

Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#7

Re: Deklarierung einer "function"

  Alt 8. Jan 2006, 11:13
Zitat von emteg:
Genau wie procedures, kannst du das beliebig in deinen quelltext reinpacken:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  procedure ZeigeNachricht(Text: string);
  function Addieren(a: integer; b: integer): integer;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

{...}
Kann man eben nicht. Eine selbstgeschriebene Methode hat nichts unter published zu suchen.
@mindforce: Es gibt generell zwei Typen von Prozeduren: lokale Prozeduren und Methoden. Erstere stehen irgendwo unter implementation. Vereinfacht kann man sagen, dass du hier nicht auf die Formcontrols zugreifen kannst/sollst:
Delphi-Quellcode:
function Add(const a, b: Integer): Integer;
begin
  Result := a + b;
  // Result := StrToInt(Edit1.Text) + a + b
  // geht nicht, bzw. nur über hässliche Irrwege
end;
Außerdem kann man nur in Code unterhalb der Funktion auf diese zugreifen.
Methoden gehören zu deiner Form, du kannst problemlos auf alle Controls der Form zugreifen. Soll die Methode auch von anderen Units/Klassen aufgerufen werden, deklarierst du sie unter public, sonst private.
Delphi-Quellcode:
TForm1 = class(TForm)
private
  function Add(const a: Integer): Integer;
public
  [...]
Den Code schreibst du nun unter implementation, wobei du den Klassennamen vor den Funktionsnamen hängst (bestimmt die Zugehörigkeit der Methode) oder einfach im type-Abschnitt Strg + Shift + C drückst:
Delphi-Quellcode:
function TForm1.Add(const a: Integer): Integer;
begin
  Result := StrToInt(Edit1.Text) + a;
end;
Das war jetzt ziemlich vereinfacht, Genaueres musst du aber erst wissen, wenn du dich intensiver mit OOP beschäftigst.

Zitat:
Im quelltext musst du bei fenstern noch den namen der unit dazu schreiben.
Erstens gilt das für alle Klassen, zweitens ist es der Klassenname.
Zitat:
Bei functions sollte man auf jedenfall dem result einen default wert zuweisen, falls irgendetwas schief geht.
Wenn eine Exception geworfen wird, muss das Ergebnis der Funktion als ungültig betrachtet werden. Etwas wie
Delphi-Quellcode:
function TForm1.Addieren(a: integer; b: integer): integer;
begin
  Result:=0;
  Result:=a+b;
end;
ist völlig unsinnig.

[edit]ichbins war schneller [/edit]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat