Dient der Definition einer objektbasierten Datenstruktur im Programmsegment (Flash).
Syntax:
Methoden (nur lesbar) | ||
---|---|---|
Name | Beschreibung | Rückgabetyp |
.ByteValue(offset) | Byte lesen | byte |
.WordValue(offset) | Word lesen | word |
.IntegerValue(offset) | Integer lesen | integer |
.LongValue(offset) | Long lesen | long |
.SingleValue(offset) | Single lesen | single |
.StringValue(offset,bytes) | String lesen mit Längenvorgabe | string |
.PString(offset) | Pascal-String lesen (Start-Byte ist Länge) | string |
.CString(offset) | C-String lesen (Nullterminiert) | string |
.Addr | Adresse der Datenstruktur im Flash | word |
.SizeOf | Vom Objekt belegte Anzahl Bytes lesen. | byte |
Das Setzen der Daten ab der angegebenen Word-Adresse im Flash. Eine falsche oder fehlerhafte Adresse wird mit einer Assembler-Fehlermeldung quittiert. Achten sie darauf das es sich hier um eine Word-Adresse handelt, wie z.B. die Bootloaderadresse FIRSTBOOTSTART. Die Byte-Adresse wäre (wordAddresse*2)
Mit dieser Funktionalität ist es möglich Daten an einer ganz bestimmten, festen Position im Programmspeicher (Flash) abzulegen. Wird das kompilierte Programm größer oder gleich dieser Adresse, werden die Daten überschrieben. Daher ist über die Speicherbelegung zu prüfen ob genügend Freiraum vorhanden ist.
Die Direktiven zur Ablage von Daten innerhalb eines Datenobjektes.
Hinweis
Der Zugriff über die Objektgrenzen hinaus ist möglich und wird nicht geprüft.
Bei Datenobjekten können Strukturdeklarationen für eine vereinfachte Ablage und auch Zugriff verwendet werden. Siehe hierzu: Pointer, Absatz "SuperImpose"
' Initialisierung [..] ' Hauptprogramm dim a as byte dim s as string a=tabelle1.ByteValue(4) ' Byte lesen von tabelle1 + 4, Ergebnis: 5 s=tabelle1.CString(11) ' C-String lesen, Ergebnis: "Hallo" s=tabelle1.StringValue(11,2) ' String lesen mit Längenvorgabe: Ergebnis: "Ha" s=tabelle1.PString(17) ' Pascal-String lesen, erstes Byte ist Länge(10). Ergebnis: "i love you" Print "&h"+Hex(tabelle1.Addr) ' Adresse der Datenstruktur im Flash anzeigen do loop ' Datenstruktur im Flash definieren data tabelle1 .db 1,2,3,4,5 .dw &h4af1,&hcc55,12345 .db "Hallo",0 .db 10,"i love you",0 enddata
Daten ablegen anhand einer Strukturdeklaration.
Beispiel:
struct ENTRY word fnAddr string text[12] endstruct [..] data table ENTRY { myfunc1, "Menu Nr. 1" } ENTRY { myfunc2, "Menu Nr. 2" } ENTRY { myfunc3, "Menu Nr. 3" } enddata