-
        

Ergebnis 1 bis 6 von 6

Thema: Ergebnis aus Long-Operation in Byte schreiben - wie

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.10.2004
    Ort
    Thüringen
    Beiträge
    133

    Ergebnis aus Long-Operation in Byte schreiben - wie

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    53
    Beiträge
    1.080
    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
    Mein Hexapod im Detail auf www.vreal.de

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.10.2004
    Ort
    Thüringen
    Beiträge
    133
    Hallo Meckpommer,

    danke erst mal.
    Und würde das gehen: Long = Byte * 3000 ??

    Mfg, Andreas

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    53
    Beiträge
    1.080
    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
    Mein Hexapod im Detail auf www.vreal.de

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.10.2004
    Ort
    Thüringen
    Beiträge
    133

    OVERLAY - welches Byte wo??

    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

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    0-100 ist gleich das erste
    Code:
    DIM longval AS LONG   
    DIM byteval AS BYTE AT longval OVERLAY
      longval = 100
      print byteval
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •