fdbozzo / foxbin2prg

Visual FoxPro 9 Binary to Text and Text to Binary converter. Replacement for SCCText(X) and TwoFox that is bi-directional (Text is editable)
https://vfpx.codeplex.com/wikipage?title=FoxBin2Prg
MIT License
59 stars 35 forks source link

Convert menu mn2 to mnx with skip for that contains a string with ; sign is missing part after that sign in mnx. #80

Closed bjornhoeksel closed 2 years ago

bjornhoeksel commented 2 years ago

ℹ Computer information

📝 Provide detailed reproduction steps (if any)

I had a problem with converting mn2 files back to mnx files when skip for contains a string with ; sign. See mn2 file to reproduce this problem I fixed this see attached .prg file by Added new method remove_strings (Remove all things between quotes) and Adjusted Procedure analyzeCodeBlock_DefineBAR of Class CL_MENU_OPTION. With this fix I can convert all our menu files without errors

✔️ Expected result

Correct skip for in mnx

❌ Actual result

Missing part after ; sign in skip for in mnx

📷 Screenshots

foxbin2_patch.prg.txt qth_men.mn2.txt

Are there any useful screenshots? WinKey+Shift+S and then just paste them directly into the form

lscheffler commented 2 years ago

Would you be so kind to add comments with date of change, your name (as on github) and something why and what you change? Please check contibuting You might (if you dislike to fork) send me the whole foxbin2prg.prg with your changes. So I do not need to find the right place to add the changes. :)
I can do the version related work.

bjornhoeksel commented 2 years ago

foxbin2prg.PRG.txt Here is the whole file. I added comment of the change on the top

lscheffler commented 2 years ago

The idea I mean is, for example at line 28702, something like

*changed by bjornhoeksel, 220220330
*needs to be changed because off ...
                                    lcLineNoStrings = this.remove_strings(tcLine)
                                    lnLineEnd = OCCURS(";", lcLineNoStrings)

                                    IF lnLineEnd > 0
                                        * We have ; end line markers not between quotes
                                        * Calc first ; not between quotes
                                        lnLineEnd = (OCCURS(";", tcLine) - ((OCCURS(";", tcLine) - lnLineEnd))) + 1
                                    ELSE
                                        * No line markers not between quotes
                                        lnLineEnd = 0
                                    Endif
*/changed by bjornhoeksel, 220220330

so one can easily follow the change in the code. At 28666 you found a PDM documentation style change notice, you might copy this. I still plan to run PDM against the prg, and this would list the changes.

bjornhoeksel commented 2 years ago

foxbin2prg.PRG.txt I marked the changes in this file

lscheffler commented 2 years ago

I will create the versioning and push. Due to problems with PEMEditor it might take a while, I will not confuse this.