Sign in Join
Wiki copytemporary

Var/de: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Var/de

OldNewLine
1+Zurück zu den [[Reserved words/de|reservierten Wörtern]].
2+
3+# Var
4+
5+## Vorwort
6+
7+Das Schlüsselwort **Var** kennzeichnet den Anfang eines Blocks, in dem die Variablen deklariert (bekannt) gemacht werden.\
8+Der Block wird vom nächsten Schlüsselwort beendet.
9+
10+Es gibt im Haupt-Programm zwei Orte, an denen Variablen deklariert werden können:
11+
12+- Vor dem **Begin** des Hauptblockes.
13+- Im Kopf von **procedure**/**function** Köpfen.
14+
15+Es gibt in einer Unit drei Orte, an denen Variablen deklariert werden können:
16+
17+- interface
18+- implementation
19+- Im Kopf von **procedure**/**function** Köpfen.
20+
21+Generell kann es auch in **class**/**object**-Deklarationen verwendet werden.
22+
23+Beispiel:
24+
25+``` pascal
26+var
27+ intI: Integer;
28+ ...
29+```
30+
31+## Beispiele in **procedure**/**function**
32+
33+Das **var** bei **i** hat die Funktion, das nur ein Zeiger der Variable übergeben wird.
34+
35+``` pascal
36+ procedure test(var i: integer);
37+ var
38+ a: byte; // normale Deklaration
39+ begin
40+ a := 2;
41+ i := i + a;
42+ end;
43+
44+var
45+ b: integer;
46+begin
47+ b := 0;
48+ test(b);
49+ WriteLn(b); // Ausgabe ist 2
50+end.
51+```
52+
53+Würde man es folgendermassen deklarieren, wird die Variable **b** nicht verändert und somit **0** ausgegeben.
54+
55+``` pascal
56+
57+procedure test(i: integer);
58+```
59+
60+## Beispiel in **class**/**object**
61+
62+Es ist auch in erweiterten **Record** möglich.
63+
64+``` pascal
65+type
66+ MyClass = class(TObject)
67+ procedure Test;
68+ var
69+ i: integer; // var zwingend
70+ end;
71+
72+ MyObject = object
73+ procedure Test;
74+ var
75+ i: integer; // var zwingend
76+ end;
77+```
78+
79+Dies ist aber nur nötig, wen vorher was anderes deklariert ist, zB. ein **procedure**.
80+
81+Hier ist **var** nicht nötig.
82+
83+``` pascal
84+ MyClass = class(TObject)
85+ i: integer; // kein var nötig
86+ procedure Test;
87+ end;
88+```
89+
90+---
91+*From the Free Pascal wiki, page "Var/de", as it stood on 2020-03-03 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history