Difference between revisions of "Absolute/de"

From Lazarus wiki
Jump to navigationJump to search
(Created page with "{{Absolute}} <br> <br> =Absolute= Bei Absolute zeigen beide Variablen auf den selben Speicherbereich. Der in der Variablen gespeicherte Wert, wird von der Variablen solange ri...")
 
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
{{Absolute}}
 
{{Absolute}}
<br>
+
 
<br>
+
Zurück zu den [[Reserved words/de|reservierten Wörtern]].
 +
 
 +
 
 
=Absolute=
 
=Absolute=
Bei Absolute zeigen beide Variablen auf den selben Speicherbereich.
+
 
Der in der Variablen gespeicherte Wert, wird von der Variablen solange richtig angezeigt, wie der gespeicherte Inhalt der Variablen im Wertebereich der ausgebenden Variable ist.<br>
+
Bei dem Modifier '''Absolute''' zeigen beide Variablen auf den selben Speicherbereich.
<br>
+
Der in der Variablen gespeicherte Wert, wird von der Variablen solange richtig angezeigt, wie der gespeicherte Inhalt der Variablen im Wertebereich der ausgebenden Variable ist.
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang="pascal">
 
Var
 
Var
 
   sintI: ShortInt;
 
   sintI: ShortInt;
Line 14: Line 17:
 
// korrekte Anzeige
 
// korrekte Anzeige
 
     lintI := 20;
 
     lintI := 20;
     ShowMessage(inttostr(lintI) + '  ' + inttostr(sintI)); // Anzeige: 20  20
+
     WriteLn(lintI: 8, sintI: 8); // Anzeige: 20  20
  
 
// unsinnige Anzeige
 
// unsinnige Anzeige
 
     lintI := 2000;
 
     lintI := 2000;
     ShowMessage(inttostr(lintI) + '  ' + inttostr(sintI)); // Anzeige: 2000 -45
+
     WriteLn(lintI: 8, sintI: 8); // Anzeige: 2000 -48
  
end;
+
end.
 
</syntaxhighlight>
 
</syntaxhighlight>
<br>
+
 
<br>
 
 
--[[User:Olaf|Olaf]] 17:08, 19 October 2012 (UTC)
 
--[[User:Olaf|Olaf]] 17:08, 19 October 2012 (UTC)
[[category:Pascal]]
+
 
 +
Ein praktisches Anwendungsbeispiel:
 +
 
 +
<syntaxhighlight lang="pascal">
 +
var
 +
  rcol: record
 +
    r, g, b: byte;
 +
  end;
 +
  acol: array[0..2] of byte absolute rcol; // Gleicher Speicherbereich, wie rcol.
 +
 
 +
begin
 +
  acol[0] := 22;
 +
  acol[1] := 44;
 +
  acol[2] := 66;
 +
 
 +
  WriteLn(rcol.r);
 +
  WriteLn(rcol.g);
 +
  WriteLn(rcol.b);
 +
end.
 +
</syntaxhighlight>
 +
 
 +
Ausgabe:
 +
 
 +
<syntaxhighlight lang="text">
 +
22
 +
44
 +
66
 +
</syntaxhighlight>
 +
 
 +
==Direkter Speicherzugriff==
 +
'''absolute''' kann man auch verwenden, um direkte mit einem Bezeichner auf eine Speicherzelle zu zeigen.
 +
 
 +
ZB. einen direkten Zugiff auf ein GPIO-Port eines AVRs.
 +
<syntaxhighlight lang="pascal">
 +
var
 +
  LED_PORT: Byte absolute $38;
 +
  LED_DDR:  Byte absolute $37;
 +
 
 +
begin
 +
  LED_DDR := $FF;
 +
  LED_PORT := $FF;
 +
  ...
 +
</syntaxhighlight>
 +
 
 +
Unter DOS kann man so auf das erste Zeichen im Video-RAM zugreifen.
 +
<syntaxhighlight lang="pascal">
 +
var
 +
  Zeichen: Byte absolute $B800:$0000;
 +
</syntaxhighlight>
 +
 
 +
Unter moderen OS wird solch eine Zugriff vom OS blockiert.
 +
 
 +
 
 +
[[Category:Reserved words/de]]

Latest revision as of 17:25, 29 January 2020

Deutsch (de) English (en) español (es) suomi (fi) français (fr) русский (ru)

Zurück zu den reservierten Wörtern.


Absolute

Bei dem Modifier Absolute zeigen beide Variablen auf den selben Speicherbereich. Der in der Variablen gespeicherte Wert, wird von der Variablen solange richtig angezeigt, wie der gespeicherte Inhalt der Variablen im Wertebereich der ausgebenden Variable ist.

Var
  sintI: ShortInt;
  lintI: LongInt absolute sintI;

begin
	// korrekte Anzeige
    lintI := 20;
    WriteLn(lintI: 8, sintI: 8); // Anzeige: 20  20

	// unsinnige Anzeige
    lintI := 2000;
    WriteLn(lintI: 8, sintI: 8); // Anzeige: 2000 -48

end.

--Olaf 17:08, 19 October 2012 (UTC)

Ein praktisches Anwendungsbeispiel:

var
  rcol: record
    r, g, b: byte;
  end;
  acol: array[0..2] of byte absolute rcol; // Gleicher Speicherbereich, wie rcol.

begin
  acol[0] := 22;
  acol[1] := 44;
  acol[2] := 66;

  WriteLn(rcol.r);
  WriteLn(rcol.g);
  WriteLn(rcol.b);
end.

Ausgabe:

22
44
66

Direkter Speicherzugriff

absolute kann man auch verwenden, um direkte mit einem Bezeichner auf eine Speicherzelle zu zeigen.

ZB. einen direkten Zugiff auf ein GPIO-Port eines AVRs.

var
  LED_PORT: Byte absolute $38;
  LED_DDR:  Byte absolute $37;

begin
  LED_DDR := $FF;
  LED_PORT := $FF;
  ...

Unter DOS kann man so auf das erste Zeichen im Video-RAM zugreifen.

var
  Zeichen: Byte absolute $B800:$0000;

Unter moderen OS wird solch eine Zugriff vom OS blockiert.