On 24-11-2010 12:08, Benoît Minisini wrote: > Hi, > > I'm currently thinking about modifying/removing all IsXXXX() functions in > Gambas 3. > > They mainly test the datatype of their expression. So, either the datatype is > known at compile time, and there should be no need of testing it ; either you > are using a Variant, and you can use TypeOf() to get the datatype of the > value. > > I will replace them by some functions that will test if a value can be > converted safely from a string by using localization. This is what most users > expected from these functions. > > For exemple, in french localization: > > IsDate("13/2/20") -> True > IsNumber("3,34") -> True > IsInteger("3,34") -> False > IsNumber("3.34") -> False > > Internally, they will use Val() and see if the conversion works. > > I will kept most of the name, so there will be a big incompatibility between > Gambas 2, current Gambas 3, and final Gambas 3. > > What do you think about that? > > Who is using the IsXXXX() functions, and in which context? >
I use these in my project, a lot less than expected at first: Bluetooth.module: IF IsInteger(Val(sRSSI)) THEN Bluetooth.module: iRSSI = IsInteger(Val(sRSSI)) Events.module: IF rResult!rerunenabled = TRUE AND IF IsDate(rResult!lastrun) THEN Events.module: IF IsBoolean(sValue) THEN sValue = Main.DisplayBool(sValue) Events.module: IF IsBoolean(sCond) THEN sCond = Main.DisplayBool(sCond) Events.module: ELSE IF IsBoolean(vResult) THEN JSON.module: IF NOT IsLetter(sCar) THEN RETURN sCar JSON.module: IF NOT IsLetter(sCar) THEN JSON.module: IF IsNull(vNumber) THEN Error.Raise("Incorrect number") JSON.module: ELSE IF sCar = "-" OR IF IsDigit(sCar) THEN Mail.module: IF IsString(Main.GlobalVar["Minute"]) THEN Main.GlobalVar["Minute"] = Val(Main.GlobalVar["Minute"]) Main.module: IF NOT IsNull(vValue) THEN Main.module: IF IsNumber(Val(tv[k, col].Text)) THEN Main.module: IF IsNumber(Val(gv[k, col].Text)) THEN Main.module:PUBLIC FUNCTION IsTime(sString AS String) AS Boolean Main.module:PUBLIC FUNCTION IsBool(sStr AS String) AS Boolean CDenon.class: IF IsInteger(sValue) THEN CDenon.class: IF IsInteger(sValue) THEN CDenon.class: IF IsNull(Val(sZonecat)) THEN CRFXComRX.class: IF IsDigit(Hex(RecBuf[4])) AND IF IsDigit(Hex(Lsr(RecBuf[3], 4))) THEN CSqueezeServer.class: ELSE IF IsLetter(sCar) OR IF IsDigit(sCar) OR IF InStr("*-._", sCar) THEN FConditionEditor.class: IF NOT (Main.IsBool(Events.EvalFormula(taFormula.Text))) THEN FConditionEditor.class: IF IsBoolean(vVal) THEN FDebug.class: IF IsBoolean(vValue) THEN FTriggerEditor.class: IF IsBoolean(Main.GlobalVar[cmbVariables.Text]) THEN FTriggerEditor.class: ELSE IF NOT IsNumber(Main.GlobalVar[cmbVariables.Text]) THEN FTriggerEditor.class: IF IsNumber(Val(txtDeviceValue.Text)) THEN Regards, Ron_2nd. ------------------------------------------------------------------------------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user