Difference between revisions of "Var/de"

From Lazarus wiki
Jump to navigationJump to search
m
m (Fixed syntax highlighting; deleted category included in page template)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{Var}}
 
{{Var}}
<br>
+
 
Zurück zu den [[Reserved words/de|reservierten Wörtern]].<br>
+
 
<br>
+
Zurück zu den [[Reserved words/de|reservierten Wörtern]].
Das Schlüsselwort <b>Var</b> kennzeichnet den Anfang eines Blocks, in dem die Variablen deklariert (bekannt) gemacht werden.<br>
+
 
Der Block wird vom nächsten Schlüsselwort beendet.<br>
+
=Var=
Es gibt in einer Unit drei Orte, an denen Variablen deklariert werden können:<br>
+
 
 +
==Vorwort==
 +
 
 +
Das Schlüsselwort '''Var''' kennzeichnet den Anfang eines Blocks, in dem die Variablen deklariert (bekannt) gemacht werden.<br>
 +
Der Block wird vom nächsten Schlüsselwort beendet.
 +
 
 +
Es gibt im Haupt-Programm zwei Orte, an denen Variablen deklariert werden können:
 +
 
 +
* Vor dem '''Begin''' des Hauptblockes.
 +
* Im Kopf von '''procedure'''/'''function''' Köpfen.
 +
 
 +
Es gibt in einer Unit drei Orte, an denen Variablen deklariert werden können:
 +
 
 
* interface
 
* interface
 
* implementation
 
* implementation
* im Kopf des Unterprogramms
+
* Im Kopf von '''procedure'''/'''function''' Köpfen.
<br>
+
 
Beispiel:<br>
+
Generell kann es auch in '''class'''/'''object'''-Deklarationen verwendet werden.
<syntaxhighlight>
+
 
 +
Beispiel:
 +
 
 +
<syntaxhighlight lang=pascal>
 
var
 
var
 
   intI: Integer;
 
   intI: Integer;
 
   ...
 
   ...
 
</syntaxhighlight>
 
</syntaxhighlight>
<br>
+
 
<br>
+
==Beispiele in '''procedure'''/'''function'''==
--[[User:Olaf|Olaf]] 16:40, 26 October 2012 (UTC)
+
 
{{AutoCategory}}[[Category:Reserved words/de]]
+
Das '''var''' bei '''i''' hat die Funktion, das nur ein Zeiger der Variable übergeben wird.
 +
 
 +
<syntaxhighlight lang=pascal>
 +
  procedure test(var i: integer);
 +
  var
 +
    a: byte; // normale Deklaration
 +
  begin
 +
    a := 2;
 +
    i := i + a;
 +
  end;
 +
 
 +
var
 +
  b: integer;
 +
begin
 +
  b := 0;
 +
  test(b);
 +
  WriteLn(b); // Ausgabe ist 2
 +
end.
 +
</syntaxhighlight>
 +
 
 +
Würde man es folgendermassen deklarieren, wird die Variable '''b''' nicht verändert und somit '''0''' ausgegeben.
 +
<syntaxhighlight lang=pascal>
 +
 
 +
procedure test(i: integer);
 +
</syntaxhighlight>
 +
 
 +
==Beispiel in '''class'''/'''object'''==
 +
 
 +
Es ist auch in erweiterten '''Record''' möglich.
 +
 
 +
<syntaxhighlight lang=pascal>
 +
type
 +
  MyClass = class(TObject)
 +
    procedure Test;
 +
    var
 +
      i: integer; // var zwingend
 +
  end;
 +
 
 +
  MyObject = object
 +
    procedure Test;
 +
    var
 +
      i: integer;  // var zwingend
 +
  end;
 +
</syntaxhighlight>
 +
 
 +
Dies ist aber nur nötig, wen vorher was anderes deklariert ist, zB. ein '''procedure'''.
 +
 
 +
Hier ist '''var''' nicht nötig.
 +
 
 +
<syntaxhighlight lang=pascal>
 +
  MyClass = class(TObject)
 +
    i: integer; // kein var nötig
 +
    procedure Test;
 +
  end;
 +
</syntaxhighlight>

Latest revision as of 07:18, 3 March 2020

Deutsch (de) English (en) español (es) suomi (fi) français (fr) русский (ru) 中文(中国大陆)‎ (zh_CN)


Zurück zu den reservierten Wörtern.

Var

Vorwort

Das Schlüsselwort Var kennzeichnet den Anfang eines Blocks, in dem die Variablen deklariert (bekannt) gemacht werden.
Der Block wird vom nächsten Schlüsselwort beendet.

Es gibt im Haupt-Programm zwei Orte, an denen Variablen deklariert werden können:

  • Vor dem Begin des Hauptblockes.
  • Im Kopf von procedure/function Köpfen.

Es gibt in einer Unit drei Orte, an denen Variablen deklariert werden können:

  • interface
  • implementation
  • Im Kopf von procedure/function Köpfen.

Generell kann es auch in class/object-Deklarationen verwendet werden.

Beispiel:

var
  intI: Integer;
  ...

Beispiele in procedure/function

Das var bei i hat die Funktion, das nur ein Zeiger der Variable übergeben wird.

  procedure test(var i: integer);
  var
    a: byte; // normale Deklaration
  begin
    a := 2;
    i := i + a;
  end;

var
  b: integer;
begin
  b := 0;
  test(b);
  WriteLn(b); // Ausgabe ist 2
end.

Würde man es folgendermassen deklarieren, wird die Variable b nicht verändert und somit 0 ausgegeben.

procedure test(i: integer);

Beispiel in class/object

Es ist auch in erweiterten Record möglich.

type
  MyClass = class(TObject)
    procedure Test;
    var
      i: integer; // var zwingend
  end;

  MyObject = object
    procedure Test;
    var
      i: integer;  // var zwingend
  end;

Dies ist aber nur nötig, wen vorher was anderes deklariert ist, zB. ein procedure.

Hier ist var nicht nötig.

  MyClass = class(TObject)
    i: integer; // kein var nötig
    procedure Test;
  end;