Step 7 Länge eines Datentyps ermitteln

HelmiMUC

Level-1
Beiträge
95
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

gibt es die Möglichkeit über eine (System-)Funktion rauszufinden, wie groß ein Datentyp in Byte ist?
also z. B.:

DatentypGröße (Byte)
Byte1 Byte
Word2 Bytes
Int2 Bytes
DInt4 Bytes
......
 
Grundsätzlich... Nein.

Was hast du den vor? Möchtest du irgendwo etwas mit variabler Länge übergeben?
Schreib mal ein wenig genauer.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man kann in TEMP hintereinander 2 Variablen des Datentyps anlegen, die Adressen der Variablen ermitteln und voneinander abziehen.
Code:
L P##tempVar2
L P##tempVar1
-D
SRD 3
T #sizeOfVar

Harald
 
ich habe einen DB der immer den gleichen Datentyp beinhaltet (insg. 1000 Variablen).

Dazu habe ich eine Variable die die Nummer der Variablen beinhaltet in die etwas geschrieben werden soll.

Um nun die Adresse zu ermitteln mach ich folgendes:

Code:
L Variable
L 4             //entspricht der Länge des verwendeten Datentypes im DB (hier Time_Of_Day)
*I
T Adresse

Ich bin kein Freund von festen Zahlen im Code (egal welche Sprache).
Und würde gerne die 4 ersetzen durch eine "Systemfunktion" die mir anhand des übergebenen Datentypes die Länge ausspuckt

Analog zu "SizeOf" in Delphi z. B.
 
Zuletzt bearbeitet:
Hallo,
so wie ich das lese ist das mit der Konstanten 4 nicht das einzige Unschöne, das du da hast. Wenn du aber einen konstanten Datentyp hast dann kannst du auch mit einer Konstanten für die Adresse-Berechnung arbeiten.
Aber erstmal vorab : dein Codeschnipsel kann dir unmöglich die richtige Adresse deines Datentyps liefern. Wie machst du denn da weiter im Code ?
DT oder DateAndTime ist übrigens auch nicht 4 Byte lang sondern 8.

Ich würde den Code so erstellen :
- In dem DB ein Array mit gewünschter Länge vom gewünschten Datentyp erstellen.
- Den DB symbolisch benennen
- Den Pointer auf das erste Element des Arrays laden
- den Pointer um den Wert des Indexes-1 * Datentyp-Breite erhöhen
- Nun das Element über indirekte Adressierung laden und damit arbeiten

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

sorry - ich hab mich im Thread drüber total verhaut - es muss heissen: "Time_Of_Day".
Dann stimmt auch wieder die 4 dazu.

So wie du das beschrieben hast, Larry, mach ich das auch
nur ohne Array

sondern so:

Code:
L Variable
+ -1
L4
*I
T Adresse

//...

L Adresse
SLW 3
LAR1

//...

AUF DB[#DB_No]
L Wert
T DB[AR1, #P0.0]
 
Zurück
Oben