drdolittle said:
Care to share that app? I have a few projects that could benefit...
Would love to! But I can't. It's owned by the company I work for. :-(
I am willing to walk you through all the issues we found, and give advice on the design and how we implemented it. You wouldn't need a full lexical parser like I wrote. Some of the fixes could be implemented much easier.
Primary issues we found (and some clever / hacky fixes):
(1) foxel conversion didn't work properly
(2) numeric inputs on memory variables not derived from table variables which exceed (2^31)-1 result in a momentary "Numeric Overflow" wait window message which doesn't affect anything, but is annoying. Fix was to m.var = m.var + (9999999999 - 9999999999).
(3) When applying the (2) fix, any @ get with a picture clause of "@K" it stopped working properly, so we padded the picture clause automatically of the length of the SIZE parameter for width (which is foxels, so it's whatever that value is rounded down) as repeating 9s, as in "@K 99999" for numeric inputs. We surrounded it with an IIF().
(4) On occasion, when the user presses enter on an input field it will accept a 0 amount. This is because the source code generator automatically adds DEFAULT 0 to each line. We changed it to pad that out with spaces, with another fix being to use DEFAULT &k_fcon_k, where k_fcon_k = IIF(TYPE("m.var") = "N", ALLTRIM(STR(m.var,i+d+1,d)), "0"), and the i and d variables are derived by counting the number of 9s in the picture clause to determine as integer 9 positions, and decimal 9 positions.
(5) If you use covers to hide controls in 2.6, they won't work properly. We had to create a shape_cover and a label_cover class which are objects added to thisForm, which then are brought to the top of the z-order. Also, the foxel-to-pixel conversion doesn't alway seem to work properly when you do this, so I created a cover_bumper class, which bumps the covers a few pixels each direction, width and height, so they can be manually positioned in VFP.
(6) In some cases it's desirable to maintain development only in 2.6, so I introduced the "*9*" line comment prefix, which will be removed by the converter so the code is written in 2.6, but then appears in the 9.0 conversion.
A few more. Can't remember them all. But, if you're interested I'll dig them up.
Best regards,
Rick C. Hodgin