TRY: Often I find that I have to do multiple actions on a non-object variable, for instance I might be working with a large string where I need to replace multiple sub-strings, sometimes on a conditional basis. For example, suppose I have a string S which is a pattern and contains something like "aaa bbb ccc eee". (Note1 : this is NOT a Subst pattern string!)
Currently I need to write a lot of code like: wkS=IIf(somecondition, Replace$(S,"aaa","Somebody"),"") wks=IIf(someothercondition, Replace$(wkS,"bbb","something","else") ... If instr(wkS,"ddd")>0 then Replace$(wkS,"ddd","Tuesday fortnight) ... etc Would it be possible to provide within gambas a "shortcut" method for such whereby I could write wkS=S With wkS IIf(somecondition, Replace$("aaa","Somebody","") ... etc End With where wkS is a String variable, i.e. not an object. It's just an idea, I was wondering if it is possible. I have written quite a lot of sed calls to achieve the things I need to do but they are a royal PITA to develop in the first place and an extremely royal PITA to maintain. CATCH: Another example might illuminate further. Again I'll talk about string variables as they are easiest to convey the idea. Since 3.5 I can do the following sorts of things: Dim MyWeather As String ="Tuesday -32C" Dim MyWeatherComment As String[] = Scan(MyWeather, "* *C") With MyWeatherComment .[0]=Replace( .[0], "Tuesday", "Tomorrow the maximum temp will be" ) .[1]=IIf ( Val ( .[1] ) < 19, .[1] & " Brrrrr!", .[1] & " Phew!") etc End With Print MySArray.Join(" ") which results in "Tomorrow the maximum temp will be -32 Brrrrr!" What I would like to do is Dim MyWeather As String = "Tuesday 1st August 2014. Exp Max:-32C Hum:2%" Dim MyComment As String="Today the maximum temp will be &1 &2" With Scan(MyWeather,"* *. Exp Max:*C *)[2] Print Subst(MyComment, ., IIf( Val(.)<19,"Brrr!", "Phew") End With FINALLY: In the above pretend code of mine it might be hard to see but on that Print line I'm just using dot, (.) to represent the current With target. I don't know how the compiler works with WITH but given the above array constructs we now have, it looks like it expands: WITH <target> .something .... .something ..... END WITH to: WITH <target> <target>.something .... <target>.something ..... END WITH So what I am asking for is an extension such that "." (i.e. " . ") means the current WITH target in any context, or in other words it refers to the WITH target regardless of whether that target is an object or a native datatype. So a lone . would refer to the WITH target itself. regards Bruce -- B Bruen <bbr...@paddys-hill.net> ------------------------------------------------------------------------------ Infragistics Professional Build stunning WinForms apps today! Reboot your WinForms applications with our WinForms controls. Build a bridge from your legacy apps to the future. http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user