Absolute/de: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: Absolute/de
| Old | New | Line | |
|---|---|---|---|
| 1 | + | Zurück zu den [[Reserved words/de|reservierten Wörtern]]. | |
| 2 | + | ||
| 3 | + | # Absolute | |
| 4 | + | ||
| 5 | + | 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. | |
| 6 | + | ||
| 7 | + | ``` pascal | |
| 8 | + | Var | |
| 9 | + | sintI: ShortInt; | |
| 10 | + | lintI: LongInt absolute sintI; | |
| 11 | + | ||
| 12 | + | begin | |
| 13 | + | // korrekte Anzeige | |
| 14 | + | lintI := 20; | |
| 15 | + | WriteLn(lintI: 8, sintI: 8); // Anzeige: 20 20 | |
| 16 | + | ||
| 17 | + | // unsinnige Anzeige | |
| 18 | + | lintI := 2000; | |
| 19 | + | WriteLn(lintI: 8, sintI: 8); // Anzeige: 2000 -48 | |
| 20 | + | ||
| 21 | + | end. | |
| 22 | + | ``` | |
| 23 | + | ||
| 24 | + | --Olaf 17:08, 19 October 2012 (UTC) | |
| 25 | + | ||
| 26 | + | Ein praktisches Anwendungsbeispiel: | |
| 27 | + | ||
| 28 | + | ``` pascal | |
| 29 | + | var | |
| 30 | + | rcol: record | |
| 31 | + | r, g, b: byte; | |
| 32 | + | end; | |
| 33 | + | acol: array[0..2] of byte absolute rcol; // Gleicher Speicherbereich, wie rcol. | |
| 34 | + | ||
| 35 | + | begin | |
| 36 | + | acol[0] := 22; | |
| 37 | + | acol[1] := 44; | |
| 38 | + | acol[2] := 66; | |
| 39 | + | ||
| 40 | + | WriteLn(rcol.r); | |
| 41 | + | WriteLn(rcol.g); | |
| 42 | + | WriteLn(rcol.b); | |
| 43 | + | end. | |
| 44 | + | ``` | |
| 45 | + | ||
| 46 | + | Ausgabe: | |
| 47 | + | ||
| 48 | + | ```text | |
| 49 | + | 22 | |
| 50 | + | 44 | |
| 51 | + | 66 | |
| 52 | + | ``` | |
| 53 | + | ||
| 54 | + | ## Direkter Speicherzugriff | |
| 55 | + | ||
| 56 | + | **absolute** kann man auch verwenden, um direkte mit einem Bezeichner auf eine Speicherzelle zu zeigen. | |
| 57 | + | ||
| 58 | + | ZB. einen direkten Zugiff auf ein GPIO-Port eines AVRs. | |
| 59 | + | ||
| 60 | + | ``` pascal | |
| 61 | + | var | |
| 62 | + | LED_PORT: Byte absolute $38; | |
| 63 | + | LED_DDR: Byte absolute $37; | |
| 64 | + | ||
| 65 | + | begin | |
| 66 | + | LED_DDR := $FF; | |
| 67 | + | LED_PORT := $FF; | |
| 68 | + | ... | |
| 69 | + | ``` | |
| 70 | + | ||
| 71 | + | Unter DOS kann man so auf das erste Zeichen im Video-RAM zugreifen. | |
| 72 | + | ||
| 73 | + | ``` pascal | |
| 74 | + | var | |
| 75 | + | Zeichen: Byte absolute $B800:$0000; | |
| 76 | + | ``` | |
| 77 | + | ||
| 78 | + | Unter moderen OS wird solch eine Zugriff vom OS blockiert. | |
| 79 | + | ||
| 80 | + | --- | |
| 81 | + | *From the Free Pascal wiki, page "Absolute/de", as it stood on 2020-01-29 after a change by Mathias, 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).* | |
| 82 | + | Category: Reserved words/de |
