Allmänt meddelande

Collapse
No announcement yet.

Fel i script

Collapse
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Fel i script

    Rikard,
    varför fungerar inte det här scriptet?

    Lösenordet sätts i ett annat script som är anslutet till omxs308c, läses från cell 110.

    Fler saker sker i datumkontroll och scriptaktiveringen med cell 103.

    Det borde bara vara att AND:a ihop villkoren, men det fungerar ej.

    Scriptet laddas och ritas upp i kursstaplar fastän lösenordet är fel.

    I lösenords-scriptet är lösenordet 1000 och i detta scriptet 1111 så resterande script borde ej laddas.

    Vad kan vara fel?
    )


    {---Lösenords-kontroll---------------------------------------------------------------------------------------}
    lösen:=1111
    kund:=GetGvar(110) {cell där lösenord lagras}
    validate:=Eqv(lösen,kund)
    {---Datumkontroll----------------------------------------------------------------------------------------------}

    Datumkontroll

    {--Aktivera scriptet ------------------------------------------------------------------------------------}


    data:=GetGVar(103)

    {--Scriptet--------------------------------------------------------------------------------------------------------}
    i20(
    kontroll1=And(validate,Datumkontroll)
    kontroll2=And(kontroll1,data)
    deklarera=SetGVarIf(h,103,lagrah)
    kontroll3=And(kontroll2,deklarera)
    kontroll4=And(Gt(c,GetGVar(103)),Gt(tidnu,0.01))
    kontroll5=And(kontroll3,kontroll4)
    rita=Draw(data,2,gqb)
    kontroll6=And(kontroll5,rita)
    kontroll7=And(kontroll6,data)
    Mult(kontroll7,5)
    )

  • #2
    Kanske går detta inte att göra.

    Problemet är getgvar på cell 103 som ska lagra ett värde och i samma sekvens läsa av ett värde.
    Det verkar som logiken behöver ligga separat..

    Rätt/fel rikard?

    Comment


    • #3
      Så du är tillbaka igen....*flin*

      {---Lösenords-kontroll---------------------------------------------------------------------------------------}
      lösen:=1111
      kund:=GetGvar(110) {cell där lösenord lagras}
      validate:=Eqv(lösen,kund)
      {---Datumkontroll----------------------------------------------------------------------------------------------}

      Datumkontroll

      {--Aktivera scriptet ------------------------------------------------------------------------------------}


      data:=GetGVar(103)

      {--Scriptet--------------------------------------------------------------------------------------------------------}
      i20(
      kontroll1=And(validate,Datumkontroll)
      kontroll2=And(kontroll1,data)
      deklarera=SetGVarIf(h,103,lagrah)
      kontroll3=And(kontroll2,deklarera)
      kontroll4=And(Gt(c,GetGVar(103)),Gt(tidnu,0.01))
      kontroll5=And(kontroll3,kontroll4)
      rita=Draw(data,2,gqb)
      kontroll6=And(kontroll5,rita)
      kontroll7=And(kontroll6,data)
      Mult(kontroll7,5)
      )


      Svårt att se exakt hur du tänkt att det ska fungera, men problemet är raden med Draw-satsen, som det inte görs nån validering på. Nästa fråga är vad "data" är för nåt. kontroll2 blir sant om data och kontroll1 är sanna samtidigt. Lite skumt.

      Däremot raden med deklarera fungerar. Om lagrah är sant stoppas värdet h in i cell 103.

      Kontroll6 fungerar inte, det logiska värdet "rita" vet jag inte riktigt vad det blir. I princip behövs inte den i raden med Draw.

      Skulle nog vara bra om du kunde förklara lite mer hur du vill att det ska fungera, så kan vi snickra ihop det.

      Comment


      • #4
        I'll be back som Arnold Schwarzenegger sa i Terminator-filmerna.

        Jag tog bort data-raden för att ej förvilla, men här kommer den:

        {--Aktivera scriptet ------------------------------------------------------------------------------------}
        tidnu:=Frac(DATE())
        totalt:=Mult(tidnu,1440)
        rest:=Int(Mod(totalt,20)) {20 är periodlängden för scriptet}
        sistaminut:=Gt(rest,19)
        kl:=And(Gt(totalt,790),Lt(totalt,810))
        lagrah:=And(sistaminut,kl)
        data:=GetGVar(103)


        Vi höll på med detta för några månader sedan i phpbb-forumet som nu är borta...

        Vad jag vill göra med sciptet är att få sektionerna lösenordskontroll, datumkontroll och aktivera scriptet att fungera ihop.

        Det enda som är nytt i scriptet är sektionerna lösenordskontroll och datumkontroll som ej fungerar när jag AND:ar ihop dom med tidigare script.

        Problemet verkar vara att deklarera-konstanten ligger sist i i20-sektionen och sätter värdet samtidigt som det läses av ovanför i20-sektionen med getgvar.
        Draw sker också i i20-sektionen.

        Hur scriptet är tänkt att fungera:
        1. kontrolllera gilitigt lösenord
        2. kontrollera giltigt datum-intervall
        3. aktivera sista minuten i timman, dvs i den 59:e minuten i timman
        4. Utför draw om punkterna 1-3 är ok

        Vad är det som behöver ändras om scriptet ska bete sig som jag vill?

        Comment


        • #5
          Här kommer hela scriptet:

          {---Lösenords-kontroll---------------------------------------------------------------------------------------}
          lösen:=1111
          kund:=GetGvar(110) {cell där lösenord lagras}
          validate:=Eqv(lösen,kund)
          {---Datumkontroll----------------------------------------------------------------------------------------------}

          Datumkontroll

          {--Aktivera scriptet ------------------------------------------------------------------------------------}
          tidnu:=Frac(DATE())
          totalt:=Mult(tidnu,1440)
          rest:=Int(Mod(totalt,20)) {20 är periodlängden för scriptet}
          sistaminut:=Gt(rest,19)
          kl:=And(Gt(totalt,790),Lt(totalt,810))
          lagrah:=And(sistaminut,kl)
          data:=GetGVar(103)
          {--Scriptet--------------------------------------------------------------------------------------------------------}
          i20(
          kontroll1=And(validate,Datumkontroll)
          kontroll2=And(kontroll1,data)
          deklarera=SetGVarIf(h,103,lagrah)
          kontroll3=And(kontroll2,deklarera)
          kontroll4=And(Gt(c,GetGVar(103)),Gt(tidnu,0.01))
          kontroll5=And(kontroll3,kontroll4)
          rita=Draw(data,2,gqb)
          kontroll6=And(kontroll5,rita)
          kontroll7=And(kontroll6,data)
          Mult(kontroll7,5)
          )

          Comment


          • #6
            19:e minuten i timman i 20 min-scriptet ska det vara, ej 59:e....

            Comment


            • #7
              Då ska vi se, om vi bryter ner det i molekyler:



              {---Lösenords-kontroll---------------------------------------------------------------------------------------}
              lösen:=1111
              kund:=GetGvar(110) {cell där lösenord lagras}
              validate:=Eqv(lösen,kund)
              {---Datumkontroll----------------------------------------------------------------------------------------------}

              Om lösen och kund stämmer blir "validate" sant


              Datumkontroll

              {--Aktivera scriptet ------------------------------------------------------------------------------------}
              tidnu:=Frac(DATE())
              totalt:=Mult(tidnu,1440)
              rest:=Int(Mod(totalt,20)) {20 är periodlängden för scriptet}
              sistaminut:=Eqv(rest,19) {ändrat till Eqv 19 }
              kl:=And(Gt(totalt,790),Lt(totalt,810))
              lagrah:=And(sistaminut,kl) {lagrah är sant när nytt värde ska skrivas till cell}
              data:=GetGVar(103) {hämtar senast lagrade värde från cell 103}
              {--Scriptet--------------------------------------------------------------------------------------------------------}
              i20(
              kontroll1=And(validate,Datumkontroll) {Det finns ingen variabel "Datumkontroll" definierad}
              SetGVarIf(h,103,lagrah)
              kontroll3=And(kontroll2,deklarera) {onödig rad, deklarera innehåller inget vettigt värde }
              köp1=And(Gt(c,GetGVar(103)),Gt(tidnu,0.01))
              köp2=And(And(köp1,validate),datumkontroll) {datumkontroll måste definieras}
              ritvärde=if(validate,data,0) {om validate är sant returneras värde "data", annars noll}
              Draw(ritvärde,2,gqb)
              Mult(köp2,5)
              )



              Rensat för onödig kod:

              lösen:=1111
              kund:=GetGvar(110) {cell där lösenord lagras}
              validate:=Eqv(lösen,kund)



              tidnu:=Frac(DATE())
              totalt:=Mult(tidnu,1440)
              rest:=Int(Mod(totalt,20)) {20 är periodlängden för scriptet}
              sistaminut:=Eqv(rest,19) {ändrat till Eqv 19 }
              kl:=And(Gt(totalt,790),Lt(totalt,810))
              lagrah:=And(sistaminut,kl) {lagrah är sant när nytt värde ska skrivas till cell}
              data:=GetGVar(103) {hämtar senast lagrade värde från cell 103}

              i20(
              SetGVarIf(h,103,lagrah)
              köp1=And(Gt(c,GetGVar(103)),Gt(tidnu,0.01))
              köp2=And(And(köp1,validate),datumkontroll) {datumkontroll måste definieras}
              ritvärde=if(validate,data,0) {om validate är sant returneras värde "data", annars noll}
              Draw(ritvärde,2,gqb)
              Mult(köp2,5)
              )



              Det här borde fungera om du definierar "datumkontroll" någonstans.


              Comment


              • #8
                Ok, jag prövar detta på måndag.

                Comment


                • #9
                  Det fungerade inte, ingen linje ritades ut trots definition av Datumkontroll.

                  ritvärde borde checka Datumkontroll, eller?

                  Comment


                  • #10
                    Man kan lägga till check för ritvärde med datum:

                    ritvärde=if(And(validate,Datumkontroll),data,0)


                    Det går att testa bara ritfunktionen genom att stoppa in "1" istället för tex validate och datumkontroll. Möjlig felorsak är om cell 2 används till nåt annat samtidigt som Draw-funktionen använder den.

                    Comment


                    • #11
                      Jag prövade att stoppa in 1, men inget hände.

                      Kanske måste jag vänta tills imorgon när cell 103 aktiveras?

                      Cell 2 används bara på ett ställe i scriptet.

                      Comment


                      • #12
                        Du kan alltid prova så här:

                        validate:=1
                        datumkonstroll:=1
                        data:=GetGVar(103)
                        lagrah:=0
                        i20(
                        SetGVarIf(h,103,lagrah)
                        köp1=And(Gt(c,GetGVar(103)),Gt(tidnu,0.01))
                        köp2=And(And(köp1,validate),datumkontroll) {datumkontroll måste definieras}
                        ritvärde=if(validate,data,0) {om validate är sant returneras värde "data", annars noll}
                        Draw(data,2,gqb)
                        Mult(köp2,10)
                        )


                        Om du sätter lagrah:=1 så sparas det aktuella värdet på H för stunden. Ändra igen till 0 efter en insamling så ligger det värdet kvar i cellen. Om validate:=1 och datumkontroll:=1 ska kurvan ritas. Den gjorde det här nu när jag provade.

                        Comment


                        • #13
                          Jag har provat och det scenario du beskriver fungerar.

                          Jag prövad att sätta lagrah till 1 dvs samla in data för en period,
                          ändra lagrah till 0, vi ska visa linjen, fungerar.

                          Sedan gjorde jag om ovanstående och bytte ut validate till 0 dvs ej sant, och då fungerar scriptet ändå... vilket är fel.
                          Scriptet ska ej fungera om lösenordet - validate är fel.

                          Är det något logikfel?

                          Comment


                          • #14
                            Ja, jag hade missat att sätta tillbaka ritvärde i Draw-satsen:

                            Draw(ritvärde,2,gqb)


                            Det ska sätta det ritade värdet till 0 om lösenordet är fel. Köpsignalen kollas mot validate redan så du ska inte kunna få larm från scriptet i så fall.

                            Comment


                            • #15
                              Nu fungerade ditt lilla test-program bättre.

                              Frågan är varför det inte fungerar med originalscriptet.

                              I ditt test-script tar kompilatorn felet datumkonstroll i början och refereringen sker sedan till datumkontroll så frågan är hur kompilatorn fungerar....

                              Comment

                              Working...
                              X