Such mal in der Bascom Hilfe nach "overlay", das sollte sein was du suchst.
Gruss, Andreas
Hallo Forum,
ich habe mal wieder eine Frage.
Ich habe eine "Long" Variable. Davon brauche ich jeweils die einzelnen Zahlen. Also möchte ich den Long in Bytes zerlegen.
Habe schonmal etwas gegooglet, aber das hat mir nicht wirklich geholfen. Kann mir das jemand nochmal erklären? evtl. auch mit kleinem Beispiel?
Vielen Dank im voraus.
Mfg
bnitram
Such mal in der Bascom Hilfe nach "overlay", das sollte sein was du suchst.
Gruss, Andreas
Nam et ipsa scientia potestas est..
Hi,
dafür nimmt man normalerweise Overlays. Es gibt zwar auch noch eine andere Möglichkeit, aber ein Overlay ist wohl die eleganteste. Beachte aber, dass eine Overlay-Variable keine eigentständige Variable ist, d.h. sie benötigt keinen Speicherplatz, aber wenn du sie änderst, änderst du damit auch die übergeordnete Variable.
Ein Beispiel findest du in der Bascom-Hilfe
Gruß
Chris
Danke schon mal für die Antworten,
ich habe mal etwas gelesen und getestet, aber das will noch nicht so recht.
Hier Ausschnitte aus meinem Code:
Ich will das so haben, das ich später als "byte1" den Wert habe, der an der entsprechender Stelle von "Lvar" steht. In diesem Fall müsste es ja theoretisch die "1" sein. Aber nur theoretisch. Es funktioniert ja nichCode:Dim Lvar As Long At &H60 Dim Bvar1 As Byte At &H60 Overlay Dim Bvar2 As Byte At &H61 Overlay Dim Bvar3 As Byte At &H62 Overlay Dim Bvar4 As Byte At &H63 Overlay Dim Byte1 ; Byte2 ; Byte3 ; Byte4 As Byte Lvar = 12345678 Byte1 = Bvar1 Byte2 = Bvar2 Byte3 = Bvar3 Byte4 = Bvar4
Was mache ich falsch?
Mfg
bnitram
PS:
wahrscheinlich alles xD Blick da noch nicht wirklich durch.
Hi,
so wird das nichts! Informier dich über die Grundlagen, dann wird dir auch klar, warum das so nicht geht
Eine Byte-Variable enthält ja nicht eine Stelle der Zahl, sondern eben ein Byte der Zahl. Das geht los beim LSB, dann das nächste Byte, nochmal ein Byte und dann das MSB.
Wenn du die Stellen auslesen möchtest, wärs evtl. einfacher, das über ne String-Variable & Overlay zu machen
Gruß
Chris
Was willst du eigentlich machen? Du willst die Dezimalstellen einzeln rausholen? Dann führt der Weg hier nicht zum Ziel.
Mit der Methode hier zerlegst du die gesamte 4-byte Binärrepresentation der long int in bytes, also Gruppen zu 8 bit.
In dem Fall wär 12345678 = 78*256^0 + 97*256^1 + 188*256^2 + 0*256^3.
und der Inhalt der 4 bytes: 78, 97, 188, 0.
Die Dezimalstellen kriegst du mit jede Menge /10, %10 Operationen raus. Bzw. wär Umwandlung in String wirklich eine Überlegung wert.
Code:1ste Stelle = zahl%10 zahl /= 10 2te Stelle = zahl%10 zahl /= 10 3te Stelle = zahl%10 ...
Ja. Eigentlich wollte ich es so haben das ich auch der Long variable die Einzelnen Ziffer rausholen kann.
Allerdings sind die Zahlen groß. Mit einem String funktioniert das nicht.
Mfg
bnitram
Edit:
Wie könnte ich denn die Long Variable in einen String umwandeln?
Ehrlich gesagt ist das nicht so schwer mit der Bascom Hilfe rauszufinden.Wie könnte ich denn die Long Variable in einen String umwandeln?
Code:var = STR(x)
Hallo malthy,
danke für dein Tipp.
Jetzt funktioniert alles!
Mfg
bnitram
Lesezeichen