Zitat von
ichbins:
achja, NIEMALS die Prozedur einfach so in die
Unit schreiben sondern IMMER auch im Interface-Bereich reinschreiben. Sonst kann die Prozedur von anderen Prozeduren, die über der einen stehen, nicht aufgerufen werden etc.
Sorry, aber das stimmt so auch nicht. Wie bereits erwähnt kannst du Prozeduren auch nur im Implementationteil benutzen, wenn es Prozeduren sind, die eben nie von aussen aufgerufen werden sollen. Sagen wir mal (ganz stupide) du baust einen Rechner (wie kreativ). Deine Idee wäre es jetzt, dass deine
Unit eine Methode Compute hat, die bekommt 3 Strings (eingegebene Zahlen + Rechenzeichen). Compute gibt dir den String zurück, der das Ergebnis repräsentiert.
Jetzt überlegst du dir, du möchtest als erstes mal die Strings auf Gültigkeit prüfen (deshalb sind's hier auch erstmal Strings). Dazu möchtest du entscheiden ob die Zahlen gültig sind und du das Rechenzeichen kennst. Nehmen wir nun an, du entscheidest dich das in Methoden auszulagern, dann könnte es zu folgendem kommen:
Delphi-Quellcode:
interface
function compute(const Number1, Number2, Operator : String) : String;
implementation
// forwarded, da die Implementierung nach dem ersten Aufruf folgt
function isValidNumber(const Number : String) : Boolean; forward;
function isValidOperator(const Operator : String) : Boolean; forward;
function compute(const Number1, Number2, Operator : String) : String;
begin
// testen ob gültige Nummern und Operator
if isValidNumber(Number1) and isValidNumber(Number2) and isValidOperator(Operator) then
begin
...
end; // if isValidNumber(Number1) and isValidNumber(Number2) and isValidOperator(Operator)
end; // function compute(const Number1, Number2, Operator : String) : String;
function isValidNumber(const Number : String) : Boolean;
begin
...
end;
Wichtig ist halt nur, dass Methoden die folgen mit forward deklariert oder halt vor dem ersten Aufruf implementiert werden müssen. Es macht aber durchaus Sinn Methoden nur im Implementationteil zu halten.