Archiv verlassen und diese Seite im Standarddesign anzeigen : Ergebnis aus Long-Operation in Byte schreiben - wie
Hallo Leute,
habe ein Problem. Offensichtlich mache ich etwas falsch, denn das Ergebnis stimmt immer nicht.
Ich habe eine Berechnung mit drei Long-Variablen (muß sein, die Werte sind so groß...) Das Ergebnis ist IMMER unter 100 und meine Zielvariable ist ein Byte.
Wie kann ich nun das Ergebnis der Log-Operation an diese Byte-Variable übergeben.....???
MfG, im Voraus, Andreas
MeckPommER
22.10.2008, 13:21
Wenn das Ergebnis der Berechnung mit den Long Variablen stets kleiner als 100 ist, dann kannst du das Ergebnis ganz einfach wieder in eine Long-Variable schreiben und das niederwertigste Byte ist dein Ergebnisbyte.
Am einfachsten macht sich das in Bascom, indem du bei der Dimensionierung deiner Variablen das Byte per Overlay (siehe Handbuch) an die richtige Stelle über die Long Variable mit deinem Ergebnis legst, dann ersparst du dir irgendwelche Umrechnungen.
In Bascom funktioniert auch:
Bytevariable = Longvariable
Das Art der Typenumwandlung ist nicht schön, und Fehler lassen sich so schlecht auffinden, es geht aber. Was meiner Erfahrung nach NICHT geht, ist z.B. folgendes:
Bytevariable = Longvariable +1
Ich habe schon desöfteren festgestellt, das so Gewalt-Typenumwandlungen allein stehen müssen und nicht mit einer anderen Berechnung zusammen in einem Befehl stehen dürfen.
Schimpfen tut der Compiler nicht - es geht nur einfach nicht, bzw. kommen unsinnige Werte heraus.
Gruß MeckPommER
Hallo Meckpommer,
danke erst mal.
Und würde das gehen: Long = Byte * 3000 ??
Mfg, Andreas
MeckPommER
22.10.2008, 14:14
Ich glaube, das "könnte" problematisch werden, da rechts schon ein Typenkonflikt zwischen Byte und 3000 besteht. Lieber so machen:
Long = Byte
Long = Long * 3000
Gruß MeckPommER
Hallo,
danke für die Infos. Ich würde es gern mal mit Overlay probieren.
Habe auch in der Hilfe gelesen.
Nun besteht das LONG ja aus vier Bytes. Welche Bytes sind wie angeordnet?
Entschuldigt, die laienhafte Frage, aber das Byte-Zeug bringt mich immer irgendwie durcheinander....
Ich meine, wo ist das erste Byte, das zweite etc. Ich benötige ja ein Ergebnis, welches zwischen 0... und 100 liegt. also brauche ich ja auch das richtige Byte...???
Danke nochmal!
MfG, Andreas
0-100 ist gleich das erste
DIM longval AS LONG
DIM byteval AS BYTE AT longval OVERLAY
longval = 100
print byteval
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.