- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 6 von 6

Thema: Problem mit Lookup

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627

    Problem mit Lookup

    Anzeige

    Praxistest und DIY Projekte
    Hallo,
    wie kann man bei dem Befehl "Lookup" die Tabelle über eine Variable auswählen?

    z.b.

    dim Tabelle as Byte

    If ... then
    Tabelle = 1
    Else
    Tabelle =2
    End if


    W1 = Lookup(position , Tabelle)



    1:
    Data 1; 1 usw....
    Data 4; 4 usw....

    2:
    Data 7; 8 usw....
    Data 3; 5 usw....


    Die Variable Position funktioniert wunderbar
    Die Variable Tabelle geht leider nicht.

    Hat jemand dafür eine Erklärung?

    Tobias
    ...

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,

    Du könntest das Lookup gleich in die If-Abfrage bauen.
    Es ist anscheinend nicht vorgesehen an dieser Stelle eine Variable anzugeben

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    ...nicht vorgesehen an dieser Stelle eine Variable anzugeben ..
    In der Tat. da geht nur ein direkter "Label"

    Brave Möglichkeit: Wie Linux sagte, direkt im IF

    Trickreicher
    Code:
    DIM tabelle AS WORD
    
    if  ,,, then 
       tabelle = loadlabel(Tabelle1)
    else 
       tabelle = loadlabel(Tabelle2)
    end if 
    
    ' --------------- nachgemachter lookup
       varia = tabelle + position  
       wert = CPEEK(varia)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    Hallo,
    mit der If Version ist mir das zuviel Schreibarbeit...(zuviele Abfragen)

    Code:
    If Led_flag = 1 Then
    
          Reset Led_flag
    
          Incr Zeile
    
          If Zeile = 20 Then Zeile = 0                          'wenn die 20 Zeilen durch sind geht's von vorne los
    
          Position = Zeile * 10
    
          W1 = Lookup(position , 1)
          Incr Position
          W2 = Lookup(position , 1)
          Incr Position
          W3 = Lookup(position , 1)
          Incr Position
          W4 = Lookup(position , 1)
          Incr Position
          W5 = Lookup(position , 1)
          Incr Position
          W6 = Lookup(position , 1)
          Incr Position
          W7 = Lookup(position , 1)
          Incr Position
          W8 = Lookup(position , 1)
          Incr Position
          W9 = Lookup(position , 1)
          Incr Position
          W10 = Lookup(position , 1)
    
       End If
    @Robert das muss ich mir noch mal ansehen - ich hab´s noch nicht verstanden...
    Code:
    ' --------------- nachgemachter lookup 
       varia = tabelle + position  
       wert = CPEEK(varia)
    ...

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Naja, "Loadlabel" liefert die Anfanges-(byte)Adresse von dieser oder jener Tabelle.
    "+ position" ergibt dann die adresse der n-ten Bytes in der Tabelle
    und mit CPEEK() kann man das Byte dort lesen

    Im Grunde ist das genau das, was Lookup() macht (wenn es um Bytes geht)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    Ach so...
    dann werd ich das doch mal so programmieren!
    Danke!

    Tobias
    ...

Berechtigungen

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

Solar Speicher und Akkus Tests