Zitat von
Chewie:
Hä? Du hast die 5 nicht als Konstante deklariert
Das war vielleicht nicht leicht zu verstehen, ich meine das hier:
Code:
function Test : integer;
begin
result := 5;
end;
Das ist nicht als CONST deklariert, stimmt, aber trotzdem nicht variabel, außerdem macht es keinen Sinn solch eine Funktion zu verwenden. Es ist halt ein Beispiel.
Worauf ich hinaus wollte ist folgendes:
Angenommen es muß eine Zahl berechnet werden in einem konkreten Fall, z.B. die Mehrwertsteuer. Wo liegt da hier ein Unterschied ?
Zwischen dem hier:
Delphi-Quellcode:
procedure MWSTproc (netto : real;var brutto : real);
begin
brutto := netto * 1.16;
end;
und dem :
Delphi-Quellcode:
function brutto (netto : real) : real;
begin
brutto := netto * 1.16;
end;
Im Endeffekt wird die Zahl berechnet und basta. Und, wie man sieht ist die eigentliche Berechnung genau dieselbe. Ob das nun im AX Register oder sonstwo gespeichert wird, wen interessiert das ?
In beiden Fällen muß sowieso noch eine globalere Variable deklariert werden, um mit dem berechneten Wert zu hantieren.
Bei Prozeduren würde das hier den Wert liefern (gespeichert in BruttoVar):
Code:
MwstProc (netto,BruttoVar
bei Funktionen:
Code:
BruttoVar := brutto (netto);
Der Nachteil von Funktionen ist halt, daß man nur einen Wert zurück erhält, während man bei Prozeduren mehrere VAR - Parameter übergeben kann. Um beim Beispiel zu bleiben:
Delphi-Quellcode:
procedure BerechneBruttoRabatt (netto, rabatt: real; var BruttoOhneRabatt,BruttoMitRabatt : real);
begin
BruttoOhneRabatt := netto * 1.16;
BruttoMitRabatt := (netto - rabatt) * 1.16;
end;
Diese Prozedur würde ZWEI Zahlen zurückliefern, die man verwenden könnte !
@Assarbad:
Zitat von
Assarbad:
C wurde nämlich erfunden um Programmierern das Leben schwer zu machen.
Ist das Dein Ernst oder ironisch gemeint? C hat meiner Meinung nach gegenüber Delphi folgende Nachteile:
1. kryptische Schreibweise (wegen Steinzeit)
2. Groß- und Kleinschreibung
3. ganz gravierend
folgender Code wäre möglich (in Delphi Syntax):
Delphi-Quellcode:
procedure Test;
begin
showmessage (st);
VAR st : string;
end;
4. usw.