Jag skulle vilja utfärda en varning för att använda de globala cellerna så som de är beskrivna i script-manualen idag. Det kan kosta stora pengar om en ordermodell löper amok.
Anledningen till varningen är att det finns en bugg i SetGvarIf()-funktionens villkorsdel, som under vissa förutsättningar, medför att falska villkor blir sanna. Parametern L som föreslås ovan har ingen inverkan på detta.
Till dess att buggen är fixad, får vi använda oss av vissa begränsningar för att kringgå den och om man beaktar nedanstående kriterier/begränsningar vid scriptskrivningen, kan buggen idag kringgås på ett säkert sätt.
Kriterier:
1) De enda villkor som man idag kan vara helt säker på fungerar i SetGvarIf() är fast inskrivna värden 1 eller 0, eller namngivent: etta:=1, nolla:=0
Ex: SetGvarIf(värde,500,1,T), SetGvarIf(värde,500,nolla,T)
2) Skriv alltid in den fjärde parametern i funktionerna. Ex: GetGvar(500,N) om man skall hämta normal-värdet, och SetGvarIf(värde, 500,1,T) om det är ett villkor som avses. Om inte parametrarna skrivs in kan man ibland råka ut för att de hämtade cellvärdena börja rulla. Det som jag själv fick uppleva vid starten av denna tråd.
3) Tänk på att det är i villkorsdelen av SetGvarIf() som felet ligger, inte i värdedelen. Detta medför att man kan skriva in funktioner, minnesreferenser och namngivna uttryck helt obegränsat till värdedelen, men inte till villkorsdelen. Ex:
värde=”lång beräkningsfunktion” ”minnesreferens” eller ”namngivet uttryck”
SetGvarIf(värde,155,1,T)
Fungerar.
Men
villkor=”lång beräkningsfunktion” ”minnesreferens” eller ”namngivet uttryck”
SetGvarIf(1,155,villkor,T)
Fungerar inte.
4) Ta för vana att alltid skriva ”nul” framför ensamstående funktioner. Ex:
nul=SetGvarIf(värde,500,1,T). På det sättet blir scriptet stabilare och råkar inte ut för nycker.
Använder man sig av ovanstående kriterier och därmed också begränsningar, kan man idag använda sig av de ”globala cellerna” på ett säkert sätt.
Anledningen till varningen är att det finns en bugg i SetGvarIf()-funktionens villkorsdel, som under vissa förutsättningar, medför att falska villkor blir sanna. Parametern L som föreslås ovan har ingen inverkan på detta.
Till dess att buggen är fixad, får vi använda oss av vissa begränsningar för att kringgå den och om man beaktar nedanstående kriterier/begränsningar vid scriptskrivningen, kan buggen idag kringgås på ett säkert sätt.
Kriterier:
1) De enda villkor som man idag kan vara helt säker på fungerar i SetGvarIf() är fast inskrivna värden 1 eller 0, eller namngivent: etta:=1, nolla:=0
Ex: SetGvarIf(värde,500,1,T), SetGvarIf(värde,500,nolla,T)
2) Skriv alltid in den fjärde parametern i funktionerna. Ex: GetGvar(500,N) om man skall hämta normal-värdet, och SetGvarIf(värde, 500,1,T) om det är ett villkor som avses. Om inte parametrarna skrivs in kan man ibland råka ut för att de hämtade cellvärdena börja rulla. Det som jag själv fick uppleva vid starten av denna tråd.
3) Tänk på att det är i villkorsdelen av SetGvarIf() som felet ligger, inte i värdedelen. Detta medför att man kan skriva in funktioner, minnesreferenser och namngivna uttryck helt obegränsat till värdedelen, men inte till villkorsdelen. Ex:
värde=”lång beräkningsfunktion” ”minnesreferens” eller ”namngivet uttryck”
SetGvarIf(värde,155,1,T)
Fungerar.
Men
villkor=”lång beräkningsfunktion” ”minnesreferens” eller ”namngivet uttryck”
SetGvarIf(1,155,villkor,T)
Fungerar inte.
4) Ta för vana att alltid skriva ”nul” framför ensamstående funktioner. Ex:
nul=SetGvarIf(värde,500,1,T). På det sättet blir scriptet stabilare och råkar inte ut för nycker.
Använder man sig av ovanstående kriterier och därmed också begränsningar, kan man idag använda sig av de ”globala cellerna” på ett säkert sätt.
Comment