diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 7d11842..8a1a770 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,7 +1,7 @@ # How to contribute to FoxBin2Prg ## Bug report? -- Please check [issues](https://github.com/lscheffler/foxbin2prg/issues) if the bug is reported +- Please check [issues](https://github.com/fdbozzo/foxbin2prg/issues) if the bug is reported - If you're unable to find an open issue addressing the problem, open a new one. Be sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring. - Please add your current configuration creating a config file via ``` @@ -17,14 +17,13 @@ DO FOXBIN2PRG.PRG WITH '-C','FoxBin.cfg' - See [New version](#new-version) for additional tasks ## Coding conventions - Start reading our code and you'll get the hang of it. We optimize for readability: - Beautification is done like: - - Keywords: UPPER case + - Keywords: Mixed case - Symbols: First occurence - - Indentation Space, 1 - - Indent anything then Comments + - Indentation Tabs, 1 + - Indent anything then comments - Please do not run BeautifyX with mDots insertion against the code. - We ALWAYS put spaces after list items and method parameters (`[1, 2, 3]`, not `[1,2,3]`), around operators (`x = 1`, not `x=1`). - This is open source software. Consider the people who will read your code, and make it look nice for them. It's sort of like driving a car: Perhaps you love doing donuts when you're alone, but with passengers the goal is to make the ride as smooth as possible. @@ -33,47 +32,90 @@ Start reading our code and you'll get the hang of it. We optimize for readabilit ## New version Please note, there are some tasks to set up a new version. Stuff is a bit scattered, so this is where to look up. -1. Please create a fork at github - - See this [guide](https://www.dataschool.io/how-to-contribute-on-github/) for setting up and using a fork - - If allready forked, pull the recent state, or get most recent version otherwise. -2. clonr from https://github.com/lscheffler/foxbin2prg. -**Note: If you have cloned the project, you must run it against itself to create the binaries and exes.** +- New fork + 1. Please create a fork at github + - See this [guide](https://www.dataschool.io/how-to-contribute-on-github/) for setting up and using a fork + 2. clone your fork to your computer +- Existing fork + 1. If allready forked, gather the recent state of the master to your fork (for example: "Sync fork" in github on top of your repository) + 2. Pull the recent state, + 3. or get most recent version otherwise. +**Note: You must run FoxBin2Prg against itself to create the binaries and exes:** ``` CD "path_to_FoxBin2Prg" *This uses a special configuration DO ReCreate_FoxBin2Prg.prg ``` -**Note: Do not run FoxBin2Prg.prg directly.** -3. On top of _FoxBin2Prg.prg_ there are two version numbers: -`#DEFINE DN_FB2PRG_VERSION 1.20` -`#DEFINE DC_FB2PRG_VERSION_REAL '1.20.00'` -4. Please set the **minor** part of _DC_FB2PRG_VERSION_REAL_ to a new number. - **Do not** alter the **1.20** part. This is written to the text files. - Alteration might force that the files must be newly commited, what is not everybodies taste. -5. Add a meaningfull description of the change in the changes list on top of _FoxBin2Prg.prg_. +**Note: Do not run FoxBin2Prg.prg directly.** +3. Do your changes +4. On top of _FoxBin2Prg.prg_ there are two version numbers: +``` +#DEFINE DN_FB2PRG_VERSION 1.21 +#DEFINE DC_FB2PRG_VERSION_REAL '1.21.01' +``` +5. Please set the **minor** part of _DC_FB2PRG_VERSION_REAL_ to a new number. + **Do not** alter the **1.21** part. This is written to the text files. + Alteration might force that the files must be newly commited, what is not everybodies taste. + The value might be altered, if the file structure of the text files is changed. +6. Add a meaningfull description of the change in the changes list on top of _FoxBin2Prg.prg_. The most recent entries for changes in the middle of this section around _* _, The most recent bugs are listed above _* _ -6. Alter version in _README.md_ -7. Add a description to _docs\ChangeLog.md_ -8. If a change to the config files is made please add the description to the various properties (multi lang) +7. Alter version in _README.md_ +8. Add a description to _docs\ChangeLog.md_ +9. If a change to the config files is made, please add the description to the various properties (multi lang) - _C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_cfg:_ for general settings - _C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_tab_cfg:_ for settings per table -9. If a change to the parameters is made, change _C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_ properties. -1. For changed functionality, add descriptive text on the appropriate _.md_ file in _docs_ folder. -11. Please alter the footer of \*.md files touched to recent date. -12. Alter the version number for the EXE to the version used above. -13. Create the text representation of the binary sources running like +10. If a change to the parameters is made, change _C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_ properties. +11. For changed functionality, add descriptive text on the appropriate _.md_ file in _docs_ folder. +13. Please alter the footer of \*.md files touched to recent date. +14. Alter the version number of the EXE to the version used above. +15. Create the text representation of the binary sources running like ``` CD "path_to_FoxBin2Prg" *This uses a special configuration DO Create_FoxBin2Prg.prg ``` -**Note: Do not run FoxBin2Prg.prg directly.** -14. commit -15. push to your fork -16. create a pull request +**Note: Do not run FoxBin2Prg.prg directly.** +16. **The following steps are not neccesary, if you use *VPXDeployment* to create a new version that is applicable for Thor use.** +17. Compile to EXE **in VFP9 SP2** +18. Change Thor ([see below](#thor-conventions)) +19. commit +20. push to your fork +21. Create a pull request + +## Thor conventions +This project is part of [VFPX](https://vfpx.github.io/) and published via [Thor](https://github.com/VFPX/Thor). +Some steps must be done to create the information for Thor +### Using VFPXDeployment +The standard procedure to create the Thor files is runing VFPXDeployment via Thor. +1. If you add or remove files to FoxBin2Prg, that you need in the release: + - alter *BuildProcess/installedfiles.txt*, see [here](https://github.com/VFPX/VFPXDeployment/blob/main/docs/Documentation.md#installedfilestxt) + - open the *Helper/Clean_ThorFolder.prg* file + - navigate to *Get_CompareFiles procedure* + - alter the TEXT .. ENDTEXT section to remove all files deleted and add new files, check the block for examples. + - There is a programm *Helper/GetRevisions.prg* to create the list, but this need to run VFPXDeployment one time to create the INSTALLEDFILES directory before. +2. Run VFPXDeployment. It will set version number to EXE, compile, set several documentation and create the files for Thor. +3. commit +4. push to your fork +5. create a pull request + +### Without VFPXDeployment +If you do not use VFPXDeployment +There are some considerations to make to add a new version to Thor. +Please check [Supporting Thor Updater](https://vfpx.github.io/thorupdate/) +In special: +- Update _Project.txt_, in special the version number +- update the *Helper/Clean_ThorFolder.prg* file, see above +- add files to _FoxBin2Prg.zip_, namely + - FoxBin2Prg.prg, + - FoxBin2Prg.exe, + - the config files templates + - Clean_ThorFolder.prg +- Update the version number in _FoxBin2PrgVersion.txt_ +- Update the changelog in _FoxBin2PrgVersion.txt_ +- The use of CreateThorUpdate.ps1 is not longer recommended. Thanks ---- -Last changed: _2023/08/30_ +Last changed: _2023/11/26_ ![Picture](../docs/pictures/vfpxpoweredby_alternative.gif) diff --git a/BuildProcess/Thor_Update_FoxBin2PRG.prg b/BuildProcess/Thor_Update_FoxBin2PRG.prg new file mode 100644 index 0000000..a52b247 --- /dev/null +++ b/BuildProcess/Thor_Update_FoxBin2PRG.prg @@ -0,0 +1,45 @@ +lparameters; + toUpdateObject +local; + lcRepositoryURL as string, ; + lcDownloadsBranch as string, ; + lcDownloadsURL as string, ; + lcVersionFileURL as string, ; + lcZIPFileURL as string, ; + lcRegisterWithThor as string + +* Get the URL for the version and ZIP files. + +lcRepositoryURL = 'https://github.com/fdbozzo/foxbin2prg' + && the URL for the project's repository +* Note: If you use a more recent version of git, your default branch may not be "master". +lcDownloadsBranch = 'master' +lcDownloadsURL = strtran(m.lcRepositoryURL, 'github.com', ; + 'raw.githubusercontent.com') + '/' + m.lcDownloadsBranch + '/ThorUpdater/' +lcVersionFileURL = m.lcDownloadsURL + 'FoxBin2PRGVersion.txt' &&'FoxBin2PRGVersion.txt' + && the URL for the file containing code to get the available version number +lcZIPFileURL = m.lcDownloadsURL + 'FoxBin2PRG.zip' + && the URL for the zip file containing the project + + +text to lcRegisterWithThor noshow textmerge + messagebox('From the Thor menu, choose "More -> Open Folder -> Components" to see the folder where FoxBin2PRG was installed', 0, 'FoxBin2PRG Installed', 5000) +endtext + +* Set the properties of the passed updater object. + +with m.toUpdateObject + .ApplicationName = 'FoxBin2PRG' + .VersionLocalFilename = 'FoxBin2PRGVersionFile.txt' + .VersionFileURL = m.lcVersionFileURL + .SourceFileUrl = m.lcZIPFileURL + .Component = 'Yes' + .Link = m.lcRepositoryURL + .LinkPrompt = 'FoxBin2PRG Home Page' + .ProjectCreationDate = date(2023, 8, 6) + .RegisterWithThor = m.lcRegisterWithThor +endwith + +return m.toUpdateObject + +*created by VFPX Deployment, 06.08.2023 15:23:02 \ No newline at end of file diff --git a/BuildProcess/afterbuild.prg b/BuildProcess/afterbuild.prg new file mode 100644 index 0000000..8f5221d --- /dev/null +++ b/BuildProcess/afterbuild.prg @@ -0,0 +1,14 @@ +* This program should can tasks like +* - FoxBin2Prg, if the automatic way was not used +* - git processing like add, commit or push +* - set debug info On in pjx or include file +* +* The program runs after +* - FoxBin2Prg is, if enabled, run +* - Thor files are created and zipped +* - git is, if enabled, run +* +* This program can use the public +* variables discussed in the documentation as necessary. + +return diff --git a/BuildProcess/buildme.prg b/BuildProcess/buildme.prg new file mode 100644 index 0000000..13058ee --- /dev/null +++ b/BuildProcess/buildme.prg @@ -0,0 +1,76 @@ +*BuildMe.prg for [add your application] +* +* This program should perform any build tasks necessary for the project, such +* as updating version numbers in code or include files. This program can use the public +* variables discussed in the documentation as necessary. +LOCAL; + lcVerno as String,; + lnProject as Integer,; + llFound as Boolean,; + loProject as Project + +*Get FoxBin2Prg verno from FoxBin2Prg.prg +lcVerno = "VERNO" +DO foxbin2prg.prg WITH lcVerno + +*Set Thor verno +pcVersion = m.lcVerno +pcFullVersion = m.lcVerno +pcPJXFile = pcPJXFile &&"foxbin2prg.pjx" +*Set FoxBin2Prg.exe verno +For lnProject = 1 To _vfp.Projects.Count + If Upper(Fullpath(m.pcPJXFile))==Upper(_vfp.Projects(m.lnProject).Name) Then + _vfp.Projects(m.lnProject).VersionNumber = m.lcVerno + llFound = .T. + Exit + + Endif &&Upper(Fullpath(m.pcPJXFile))==Upper(_vfp.Projects(m.lnProject).Name) +Endfor &&lnProject + +If !m.llFound + If _Vfp.Projects.Count>0 + loProject = _vfp.ActiveProject + Endif &&_Vfp.Projects.Count>0 + + MODIFY PROJECT (Fullpath(m.pcPJXFile)) Noshow Nowait Noprojecthook + _vfp.ActiveProject.VersionNumber = m.lcVerno + _vfp.ActiveProject.Close + + If _Vfp.Projects.Count>0 + _vfp.ActiveProject = m.loProject + Endif &&_Vfp.Projects.Count>0 +Endif &&!m.llFound + +* ToDo +llFound = FILE(Fullpath("FOXBIN2PRG.CFG")) +If m.llFound + rename FOXBIN2PRG.CFG to FOXBIN2PRG.CFG.tmp +Endif &&m.llFound + +strtofile("Language: EN","FOXBIN2PRG.CFG") +DO foxbin2prg.prg WITH "-c", "foxbin2prg.cfg.txt" +DO foxbin2prg.prg WITH "-t", "foxbin2prg.dbf.cfg.txt" +delete file FOXBIN2PRG.CFG + +If m.llFound + rename FOXBIN2PRG.CFG.tmp to FOXBIN2PRG.CFG +Endif &&m.llFound + +*set english on +*export foxbin2prg.cfg.txt and foxbin2prg.dbf.cfg.txt +*set english off + +return + +*Stuff we can do: +* - get version number (pcVersion) from an include file +* - set version number (pcVersion) to an include file +* - set version number to pjx used +* - set debug info off in pjx or include file +* - If FoxBin2Prg internal to VFPXDeployment is not fitting, run own way +* - create pcFullVersion like you use in the .VersionNumber of Version*.txt file for use in README.md +* (else it will use pcVersion) +* like the example in the Version text template: +pcFullVersion = pcVersion+' - ' + pcJulian +* - copy files to ../InstalledFiles subfolder +* - modify documentation diff --git a/FOXBIN2PRG.DBF.CFG.TXT b/FOXBIN2PRG.DBF.CFG.TXT index 04e01fe..9de1450 100644 --- a/FOXBIN2PRG.DBF.CFG.TXT +++ b/FOXBIN2PRG.DBF.CFG.TXT @@ -1,6 +1,6 @@ *################################################################################################################ *-- Individual DBF configuration file (syntax: filename.dbf.cfg) Defaults see FoxBin2prg.cfg -*Version: v1.21.00 +*Version: v1.21.01 ***************************************************************************************************************** *DBF_Conversion_Support: <0,1,2,4,8> && 0=No support, 1=Generate Header TXT only (Diff), 2=Generate Header TXT and BIN (Merge/Only Structure!), 4=Generate TXT with DATA (Diff), 8=Export and Import DATA (Merge/Structure & Data) diff --git a/FileName_Caps/Filename_caps.pj2 b/FileName_Caps/Filename_caps.pj2 index 9afa058..3317e9d 100644 --- a/FileName_Caps/Filename_caps.pj2 +++ b/FileName_Caps/Filename_caps.pj2 @@ -39,14 +39,14 @@ FOR EACH loProject IN _VFP.Projects FOXOBJECT ENDFOR STRTOFILE( '', '__newproject.f2b' ) -BUILD PROJECT Filename_caps.PJX FROM '__newproject.f2b' +BUILD PROJECT Filename_caps.pjx FROM '__newproject.f2b' FOR EACH loProject IN _VFP.Projects FOXOBJECT loProject.Close() ENDFOR -MODIFY PROJECT 'Filename_caps.PJX' NOWAIT NOSHOW NOPROJECTHOOK +MODIFY PROJECT 'Filename_caps.pjx' NOWAIT NOSHOW NOPROJECTHOOK -loProject = _VFP.Projects('Filename_caps.PJX') +loProject = _VFP.Projects('Filename_caps.pjx') WITH loProject.FILES .ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" /> @@ -80,7 +80,7 @@ WITH loProject ENDWITH -_VFP.Projects('Filename_caps.PJX').Close() +_VFP.Projects('Filename_caps.pjx').Close() *ERASE '__newproject.f2b' CD (lcCurdir) RETURN \ No newline at end of file diff --git a/INSTALLEDFILES/license b/INSTALLEDFILES/license new file mode 100644 index 0000000..892f2c8 --- /dev/null +++ b/INSTALLEDFILES/license @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2014 Fernando D. Bozzo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 59a0b81..ab55289 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# FoxBin2Prg 1.21.00 +# FoxBin2Prg 1.21.01 **Binary/Text Converting program for Microsoft Visual FoxPro** ## Lutz Scheffler @@ -11,13 +11,14 @@ The spanish documentation is not longer maintained - it would fade. Remind yourself to compile the exe first. ## Regenerate after download / clone / pull -**Note: If you have cloned the project, you must run it against itself to create the binaries and exes.** +**Note: If you have cloned or pulled the project, you must run it against itself to create the binaries and exes.** Run ``` CD "path_to_FoxBin2Prg" *This uses a special configuration DO ReCreate_FoxBin2Prg.prg -``` +``` +**Note: Do not run FoxBin2Prg.prg directly.** --- If you like to value my work, support the Geeks at @@ -153,4 +154,18 @@ See [issue #93](https://github.com/fdbozzo/foxbin2prg/issues/93). ## Usage For usage see [documentation](./docs/FoxBin2Prg.md) -Last changed: _2023/10/20_ +---- +![VFPX logo](https://vfpx.github.io/images/vfpxbanner_small.gif) +This project is part of [VFPX](https://vfpx.github.io/). + +---- +Last changed: _2023-08-09_ ![Picture](./docs/pictures/vfpxpoweredby_alternative.gif) + +Rework Thor_Update_FoxBin2Prg.prg, GetNotes() useless or to much. + +location der Dateien +- remotes version file (version auf github) lcAppID + 'Version.txt' +- locales version file (version im localen thor) lcAppID + 'VersionFile.txt' +das muss nicht in der Wurzel liegen + + diff --git a/TESTS/DATOS_READONLY/f_containers.f_base1.SCT b/TESTS/DATOS_READONLY/f_containers.f_base1.SCT new file mode 100644 index 0000000..e6f1623 Binary files /dev/null and b/TESTS/DATOS_READONLY/f_containers.f_base1.SCT differ diff --git a/TESTS/DATOS_READONLY/f_containers.f_base1.SCX b/TESTS/DATOS_READONLY/f_containers.f_base1.SCX new file mode 100644 index 0000000..ffddbf1 Binary files /dev/null and b/TESTS/DATOS_READONLY/f_containers.f_base1.SCX differ diff --git a/TESTS/DATOS_READONLY/fb2p_dbc.dbc b/TESTS/DATOS_READONLY/fb2p_dbc.dbc index 138784e..f4969f7 100644 Binary files a/TESTS/DATOS_READONLY/fb2p_dbc.dbc and b/TESTS/DATOS_READONLY/fb2p_dbc.dbc differ diff --git a/TESTS/DATOS_READONLY/fb2p_dbc.dct b/TESTS/DATOS_READONLY/fb2p_dbc.dct index a8a3cfd..c1feb58 100644 Binary files a/TESTS/DATOS_READONLY/fb2p_dbc.dct and b/TESTS/DATOS_READONLY/fb2p_dbc.dct differ diff --git a/TESTS/DATOS_READONLY/foxuser_fdbozzo.cdx b/TESTS/DATOS_READONLY/foxuser_fdbozzo.cdx index 5f7579e..f0d1d24 100644 Binary files a/TESTS/DATOS_READONLY/foxuser_fdbozzo.cdx and b/TESTS/DATOS_READONLY/foxuser_fdbozzo.cdx differ diff --git a/TESTS/DATOS_READONLY/foxuser_fdbozzo.dbf b/TESTS/DATOS_READONLY/foxuser_fdbozzo.dbf index 6850805..fc3da72 100644 Binary files a/TESTS/DATOS_READONLY/foxuser_fdbozzo.dbf and b/TESTS/DATOS_READONLY/foxuser_fdbozzo.dbf differ diff --git a/TESTS/DATOS_READONLY/foxuser_fdbozzo.fpt b/TESTS/DATOS_READONLY/foxuser_fdbozzo.fpt index 314bd22..335b246 100644 Binary files a/TESTS/DATOS_READONLY/foxuser_fdbozzo.fpt and b/TESTS/DATOS_READONLY/foxuser_fdbozzo.fpt differ diff --git a/TESTS/DATOS_READONLY/vw_local_encuestas.dbf b/TESTS/DATOS_READONLY/vw_local_encuestas.dbf index 9e4efd3..54b8ff0 100644 Binary files a/TESTS/DATOS_READONLY/vw_local_encuestas.dbf and b/TESTS/DATOS_READONLY/vw_local_encuestas.dbf differ diff --git a/ThorUpdater/Thor_Update_FoxBin2Prg.prg b/ThorUpdater/Thor_Update_FoxBin2Prg.prg new file mode 100644 index 0000000..d910af4 --- /dev/null +++ b/ThorUpdater/Thor_Update_FoxBin2Prg.prg @@ -0,0 +1,513 @@ +lparameters toUpdateObject +local lcAppName, ; + lcAppID, ; + lcRepositoryURL, ; + lcDownloadsURL, ; + lcVersionFileURL, ; + lcZIPFileURL, ; + lcRegisterWithThor + +* Set the project settings; edit these for your specific project. + +lcAppName = 'FoxBin2Prg' + && the name of the project +lcAppID = 'FoxBin2Prg' + && similar to lcAppName but must be URL-friendly (no spaces or other + && illegal URL characters) +lcRepositoryURL = 'https://github.com/fdbozzo/foxbin2prg' + && the URL for the project's repository + +* If the version file and zip file are in the ThorUpdater folder of the +* master branch of a GitHub repository, these don't need to be edited. +* Otherwise, set lcVersionFileURL and lcZIPFileURL to the correct URLs. + +lcDownloadsURL = strtran(lcRepositoryURL, 'github.com', ; + 'raw.githubusercontent.com') + '/master/ThorUpdater/' +lcVersionFileURL = lcDownloadsURL + lcAppID + 'Version.txt' + && the URL for the file containing code to get the available version number +lcZIPFileURL = lcDownloadsURL + lcAppID + '.zip' + && the URL for the zip file containing the project + +* This is code to execute after the project has been installed by Thor for the +* first time. Edit this if you want do something different (such as running +* the installed code) or display a different message. You can use code like +* this if you want to execute the installed code; Thor replaces +* ##InstallFolder## with the installation path for the project: +* +* 'do "##InstallFolder##MyProject.prg"' + +text to lcRegisterWithThor noshow textmerge + messagebox('From the Thor menu, choose "More -> Open Folder -> Components" to see the folder where <> was installed', 0, '<> Installed', 5000) +endtext + +* Set the properties of the passed updater object. You likely won't need to edit this code. + +with toUpdateObject + .ApplicationName = lcAppName + .Component = 'Yes' + .VersionLocalFilename = lcAppID + 'VersionFile.txt' + .RegisterWithThor = lcRegisterWithThor + .VersionFileURL = lcVersionFileURL + .SourceFileUrl = lcZIPFileURL + .Link = lcRepositoryURL + .LinkPrompt = lcAppName + ' Home Page' + .Notes = GetNotes() +endwith +return toUpdateObject + +* Get the notes for the project. Edit this code as necessary. + +procedure GetNotes +local lcNotes +text to lcNotes noshow +Developed by Fernando D. Bozzo - GitHub: https://github.com/fdbozzo/foxbin2prg + +FoxBin2Prg is a 2-way conversor for Visual FoxPro 9 binary files intended to be used with SCM tools (Diff and Merge operations) or just for backup + +Supported formats are: PJX, PJM, SCX, VCX, FRX, LBX, MNX, DBC, DBF, MEM, FKY + +Demo video using FoxBin2Prg with PlasticSCM: http://youtu.be/sE4wQ50Itqg + +Change History ------------------------------------------------------------- + +2017/12/04 v1.19.49.4 +- Bug Fix VCX: When using ClassPerFile in API Mode and importing single classes, sometimes their names get unquoted, throwing errors / Reported by Lutz Scheffler (https://github.com/fdbozzo/foxbin2prg/issues/11) + +2017/12/03 v1.19.49.3 +- Bug Fix: "Double" field types are explicitly defined with 0 decimals when no decimals are defined (Jerry Stager) + +2017/12/03 v1.19.49.2 +- Bug Fix: ClassPerFile export didn't work correctly starting from v1.19.49 / Reported by Lutz Scheffler (https://github.com/fdbozzo/foxbin2prg/issues/9) + +2017/06/25 v1.19.49.1 +- Bug Fix: DEVINFO field is only used when doing PJX conversions. On other files throw errors + +2017/04/26 v1.19.49 +- Replace Scripting.FileSystemObject MoveFile with Win32API equivalent +- Added support for using temporal CFG file for low-level API operations +- Bug Fix: Single-class export with "classlib.vcx::classname" syntax did not export (Lutz Scheffler) +- Added single-class import support ("library.vcx::classname::import") +- Added new single-class export syntax ("library.vcx::classname::export") +- Both single-class syntaxes doesn't require a CFG configuration +- Bug Fix: Partially corrupted frx/lbx info generated when using "&&" string inside field expressions (Alejandro A Sosa) +- sys(2023) secure temp: When sys(2023) points to "program files", then getenv("temp") is used +- Add more options to config.fpw to minimize interference from existent configs +- Feature: Save the contents of User field (Doug Hennig). Note: DevInfo is already supported + +2016/07/11 v1.19.48 +- Bug Fix: Error message 'variable tcOutputFile not found' (german version) (Andy Kasper) +- Bug Fix: Menu location 'Before' always changed to 'after' when convert (Andy Kasper) +- Bug Fix: DBF conversion restrictions are not always respected when using particular CFGs for DBFs (Nathan Brown) +- Bug Fix db2: When reading a miltiline-memo with old db2 data, an index out of range error occurs +- Bug Fix db2: When using ExcludeDBFAutoincNextval: 1 setting in FoxBin2Prg.cfg and at the same time the data import with an AutoInc field, then error "Error 2088, Field is read-only" occurs (Nathan Brown) +- Defect Fix db2: When fixing the multi-line memo bug, introduced a new defect on which a single-line memo is not decoded correctly (Nathan Brown) +- Bug Fix pj2: When a binary is regenerated from a PJ2 file containing files with parenthesis and spaces, the error "Error 36, Command contains unrecognized phrase/keyword" occurs (Nathan Brown) +- Bug Fix frx: ControlSource of OLE Objects containing quotes are not well regenerated from FR2 (Nathan Brown) + +2016/06/08 v1.19.47 +- Bug Fix: When a filename "*" is specified with a type "*", an automatic regeneration of all binary files is made from text files (Alejandro Sosa) +- BugFix: Added variable declaration (Doug Hennig) +- BugFix: Fixed incorrectly named variable (Doug Hennig) +- BugFix: Added missing assignment (Doug Hennig) +- Enhancement: Put double quotes around path in case in contains single quote (Doug Hennig) +- BugFix: Added "+16" to Debug flags to maintain internal defaults to not generate timestamps on xx2 files +- Feature: Added support for appending data from DB2 to DBF with the new value DBF_Conversion_Support=8. All datatypes except General. (Walter Nicholls) + +2016/02/06 v1.19.46 +- Bug Fix: set_UserValue() method causes error when trying to get information about another error and the VFP binary table can not be opened (ie, because corrupted memo) +- Feature: Added internal support for querying directory cfg information, with a new optional parameter, for API methods that require it (ie: get_Ext2FromExt, hasSupport*) +- Feature: Convert FUNCTION to PROCEDURE for maintaining compatibility with the way that VFP save methods on binaries +- New fb2p_diff.exe: Allow a quick Diff of VFP9 binaries, for those that don't need converting to text manually +- Bug Fix: When processing a directory or a project with all the files, sometimes an "Alias already in use" error may occur (Dave Crozier) +- Bug Fix mnx: When menu options contains '&&' in their texts, menu binary is corrupted when regenerated (Walter Nichols) +- Bug Fix fb2p_diff: When calling fb2p_diff.exe from a directory out of FoxBin2Prg dir, an error is thrown because FoxBin2Prg is not found (Mike Potjer) +- Feature: In some environments and under some conditions WSscript.Shell object can cause problems, so now it's replaced with Win32 native functions (Aurélien Dellieux) +- Bug Fix frx/lbx: Ordering of report objects changes the ZOrder of near objects that can overlap, which can cause bad visualization and printing (Ryan Harris) +- Bug Fix frx/lbx: When regenerating reports or labels with multiline texts center or right aligned, alignment is not completely right (Ryan Harris) +- Bug Fix frx/lbx: When grouping objects in design mode, generating text and regenerating binary cause the lost of the grouping (does not affect data) (Lutz Scheffler) +- Bug Fix Pjx: SPR and MPR files are not correctly identified in the PJX Project info (Ralf Wagner) +- Bug Fix Pj2: An error is thrown when regenerating a PJX from a PJ2 when some file have parenthesis in it's name (EddieC) +- Feature (dbf): New ExcludeDBFAutoincNextval parameter for minimizing DB2 differences (edyshor) +- Bug Fix: When processing a file on root dir, a 2062 error occurs (Aurélien Dellieux) +- Feature: Added VFP 9 runtimes (vfp9r.dll, vfp9renu.dll) so FoxBin2Prg can be used with VFP when VPF IDE is not installed + + +2015/06/21 v1.19.45 +- Bug Fix mnx: When a menu that uses single quotes or an expression in the option's MESSAGE is exported to text, when regenerating the menu from the text there are parts of the message that are cut off (Mike Potjer) +- Bug Fix: When processing multiple PJ2 files, an error "variable llError not defined" can occur (Lutz Scheffler) +- Bug Fix pjx/pj2: PJX/PJ2 projects that references files from other disk units throw errors for those files when processing with "*" or "*-" options (Matt Slay) +- Bug Fix: When processing multiple-files, sometimes encountered errores are not reported +- Feature (API-PJX): New loadModule() method that returns the internal FoxBin2Prg Project object when the full name of an existent project file is specified +- Feature (API-PJX): New getFilesNotFound() method for the FoxBin2Prg's Project object, that returns the count of files referenced in the project that are not found on disk and an array with all the existence state of each file + + +2015/05/31 v1.19.44 +- Bug Fix: In certain PCs FoxBin2Prg does not return error codes when called from an external program, so another terminating method is implemented (Ralf Wagner) +- Allow exporting DBF data when using DBF_Conversion_Support:1 and optional individual CFG files +- Bug Fix: A previous bug fix on cascading errors management caused reseting the error status, making that sometimes errors don't get reported + + +2015/05/10 v1.19.43 +- Feature: Added new CFG setting "RemoveZOrderSetFromProps" for removing ZOrderSet property when you want to maintain the original class ZOrder always, avoid unnecesary differences and fix some visual on top/on bottom control problems (Ryan Harris) +- Feature: Do not allow progressbar window become the default output window of ? command (Lutz Scheffler) +- Bug Fix: Fixed VFP9 SP1 validation message +- Bug Fix: FoxBin2Prg does not return error codes when called from an external program (Ralf Wagner) +- Bug Fix: FoxBin2Prg sometimes generates an OLE error when executed as object more than once on a file with problems (Fidel Charny) +- Bug Fix: When a form have AutoCenter=.T., there are times that when regenerating the binary and executing it does not shows centered (Esteban H) + + +2015/04/16 v1.19.42 +- Feature: Added VFP 9 SP1 runtime validation +- Bug Fix: Broken SourceSafe compatibility because an error is thrown when querying for file support (Tuvia Vinitsky) +- Bug Fix scx/vcx: Process only one TEXT/ENDTEXT nesting level because TEXT/ENDTEXT can't be nested (Lutz Scheffler) +- Feature: Make some error descriptions more informative and precise (Lutz Scheffler) +- Feature (API): Allow specifying inputFile with relative path (Lutz Scheffler) +- Bug Fix scx: Metadata of Dataenvironment not properly generated when Dataenvironment is renamed +- Bug Fix: Added PJX/PJ2 generation when specifying "file.pjx", "*" (Lutz Scheffler) +- Some enhancements in german translations (Lutz Scheffler) +- Feature: Added multiprocessing of projects (*.pjx, *.pj2) when specifying "file.pjx", "*" (Lutz Scheffler) +- Change FoxBin2Prg base class from custom to session (Lutz Scheffler) +- Feature: Allow processing all project files without converting the PJX/2, with "*-" (Lutz Scheffler) +- Bug Fix pjx/pj2: If end of line (CR+LF) is used on pjx's "Build" properties data, generated pj2 is malformed +- Feature: Default foxbin2prg.cfg configuration file renamed to foxbin2prg.cfg.txt to no overwrite user cfg (Lutz Scheffler) +- Added DOS errOut output support and implemented in writeErrorLog when logging errors +- Feature: Added full support for *? file masks for multi-processing files of the same extension (Lutz Scheffler) +- Feature (API): Added new parameter to allow alternative main CFG (Lutz Scheffler) +- Feature (API): Added new get_Processed() method for obtaining information about processed files (Lutz Scheffler) +- Feature: Added new file processing output to DOS stdOut (Lutz Scheffler) +- Bug Fix: Fixed processing cancelation with Esc key +- Feature: Sort table/view fields alphabetically to facilitate diffing and merging, while maintaining a list with the original field order for correct DBC regeneration (Ryan Harris) +- Feature: Apply ClassPerFile to DBC connections, tables, views and SPs (Ryan Harris) +- Bug Fix vw: Views now save/restore their Path and RecordCount properties +- Feature: New default FoxBin2Prg App icon and background image, configurable with a new CFG "BackgroundImage" setting +- Bug Fix mnx: Empty Pad name is not kept when regenerating a menu defined with and empty Pad name (Lutz Scheffler) +- Feature (API): New property "l_ProcessFiles" that allow setting to .F. when using foxbin2prg as object to get Processing file info with get_Processed method without actual processing +- Bug Fix frx/lbx: Trimmed some extra CR,LF,TAB from FR2/LB2 tag that where included in previous versions (Ryan Harris) +- Bug Fix scx/vcx/dbc: Delete ERR files when processing with UseClassPerFile switch (Ryan Harris) +- Feature: Implemented CFG inheritance between directories +- Feature (API): New method get_DirSettings() that returns the CFG settings object for the indicated directory (Lutz Scheffler) +- Feature: Allow generation of text for a single class of a librery when using ClassPerFile (Lutz Scheffler) +- Feature (API): Renowned method names to English to facilitate international understanding (Mike Potjer) + +2015/01/18 v1.19.41 +- Bug Fix db2: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. +- Bug Fix vcx/scx: Erroneous detection of PROCEDURE/ENDPROC structures when used as parameters of LPARAMETERS and start in new line (Ryan Harris) + +2015/01/11 v1.19.40 +- Enhancement frx/lbx: Clean ASCII 0 from expression field for Dataenvironment, Cursors and Relations +- Bug fix frx/lbx: When using Dataenvironment with more than one cursor, remaining cursors are lost +- Feature: Added new configuration "ShowProgressbar:2" to activate the progressbar only when a directory is selected and deactivate it for individual files (Jim Nelson) +- Bug fix dbf: [Error 12, variable "tcOutputFile" is not found] when DBF_Conversion_Support=4 and output file is the same as existent one (Mike Potjer) +- Feature scx/vcx/sc2/vc2: Added new code checking to find duplicated object names for the same class and container to notify those cases of file corruption +- Fix for "Error 2183: Operation requires that SET MULTILOCKS is set to ON" in some DBF convertions + +2015/01/01 v1.19.39 +- Bug fix vbs: vbs scripts does not show FoxBin2Prg process errors correctly +- When using BIN2PRG or PRG2BIN keywords with FoxBin2Prg command line, allow processing one file (Mike Potjer) +- Add keyword SHOWMSG and use INTERACTIVE keyword for an interactive dialog (Mike Potjer) +- When processing a directory from commandline with foxbin2prg alone and the INTERACTIVE keyword, show a dialog to ask what to process (Mike Potjer) +- Bug fix dc2: DisplayClass and DisplayClassLibrary values got the wrong value "Default" and not the corresponding own values (Christopher Kurth/Ryan Harris) +- Deleted recompilation scripts for language, because it is an automatic selection now + +2014/12/13 v1.19.38 +- Feature: Now is possible to use FoxBin2Prg for batch conversions directly from the File Explorer (see README.txt), without the need of vbs scripts, that sometimes can make trouble or are not permitted by IT department (Francisco Prieto) +- Feature: Enhanced Multilanguage support by 3 ways: 1-Automatic [DEFAULT] (depending on VERSION(3)); 2-By parameter, using the new method ChangeLanguage(); 3-Using the new setting "Language" in foxbin2prg.cfg +- Feature: Detection of duplicated methods on vc2/sc2 files to notify those cases of vcx/scx file corruption (Álvaro Castrillón) + +2014/11/30 v1.19.37 +- Feature: Added Class per file support, configurable with UseClassPerFile:1 (Ryan Harris/Lutz Scheffler) +- Feature: foxbin2prg.cfg configuration options can now have "&&" comments at the right of the values (edyshor) +- Feature: Added support for the new "ClearDBFLastUpdate" setting in FoxBin2Prg.cfg, activated by default to minimize DB2 differences (edyshor) +- Feature: Enhanced progressbar indication, with more detailed information +- Feature: vcx/scx broken properties autofix because an erroneous manual user edition on the vcx/scx +- Feature: vcx/scx autofix por Hidden and Protected duplicated properties (some type of corruption or bad manual user edit) +- Feature: Added a validation for FRX to notify the user if it is not a VFP 9 REPORT +- Feature: Batch convertions can now be interrupted with the Esc key +- Bug Fix dbf: "Error 1903, String is too long to fit" when converting long DBF files with "DBF_Conversion_Support:4" to text (edyshor) +- Bug Fix vcx/scx: Sometimes some properties get the description of a similarly named property +- Bug Fix vcx/scx: Hidden and Protected properties are not ordered alphabetically +- Various Code Optimizations for enhancing processing performance + +2014/10/08 v1.19.36 +- Bug fix mnx: When generating mn2 text view, menu all pad IDs are generated as _000000000 (bug introduced in v1.19.36) +- Enhancement: New "VFP9_FoxBin2Prg.vbs" script for "SendTo" menu, that replaces FoxBin2Prg.exe in this menu and adds a process status message + +2014/09/26 v1.19.35 +- Enhancement: Always generate the same Timestamp and UniqueID for binaries, for minimizing differences when regenerating them (Marcio Gomez G.) + +2014/09/19 v1.19.34 +- Bug Fix: If run from VFP Command Window and there is a file in use, an error is thrown because can't capitalize source file (Jim Nelson) + +2014/08/29 v1.19.33 +- Bug Fix mnx: Menu doesn't generate well when there is a Bar of #BAR type without a name (Peter Hipp) +- Bug Fix mnx: If a menu option have an associated Procedure with 1 line of code, the Procedure is converted to Command (Peter Hipp) + +2014/08/26 v1.19.32 +- If exists a property called "text" it is confused with a text/endtext structure (Peter Hipp) + +2014/08/22 v1.19.31 +- Trash cleanup code on binary methods, normally added by tools like ReFox and others +- Added EXE version number when generating a debug LOG file +- Enhanced recognition of #IF..#ENDIF instructions when there are spaces between # symbol and the command name +- Added capitalization normalization for input files +- Added new c_Language property for querying actual compiled language (EN,ES,DE,etc) + +2014/08/07 v1.19.30 +- Bug Fix vcx/scx: Bad EndText block detection when the previous line ends with "," or ";" (Jim Nelson) +- Bug Fix vcx/scx: Some methods are not alphabetically sorted in some inheritance situations (Ryan Harris) +- Added FoxUnit test cases to bug fix confirmation of both + +2014/08/01 v1.19.29 +- Bug Fix vcx/scx: Bad Text block detection when the previous line ends with "," (M_N_M) +- Optimizations and refactoring + +2014/07/26 v1.19.28 +- Feature: Added new options in foxbin2prg.cfg (DBF_Conversion_Included, DBF_Conversion_Excluded) and in filename.dbf.cfg (DBF_Conversion_Order, DBF_Conversion_Condition) for exporting DBFs data to text when DBF_Conversion_Support is 4 (Edyshor) + +2014/07/18 v1.19.27 +- Feature: Added support for exporting DBF data for DIFF (It's intended just for DIFF small DBFs, as config ones, not for true Data export. Binary fields are not exported and there is not an Import Data feature) (Doug Hennig) + +2014/07/06 v1.19.26 +- Feature: Drop asterisks between "ENDPROC" and "PROCEDURE", analyzed in that exact order, to regenerate binary without errors. (Daniel Sánchez) +- Feature: Add the l_DropNullCharsFromCode configuration option, enabled by default, to allow droping NULLs from source code. (Matt Slay) +- Bug Fix cfg: ExtraBackupLevel does not work when using multi-configuration + +2014/06/25 v1.19.25 +- When processing one or multiple files with vbs scripts, show a message indicating the status of the generation, and show the error log if any error occurs (Pedro Gutiérrez M.) +- Code cleaning and normalization +- ClearUniqueID is True by default for tx2 files +- OptimizeByTimestamp is False by default, to avoid possible automatic modifications made by VFP when opening a form or a classlib +- New AllowMultiConfig switch enabled by default, that allow a foxbin2prg.CFG file per directory, overriding main CFG (Mario Peschke) + +2014/06/15 v1.19.24 +- Bug Fix scx/vcx: The absence of AGAIN keyword on some USE commands throws "tabla in use" error if used the PRG version from VFP command window (Matt Slay) +- Bug Fix scx/vcx: A table field called "text" that begins the line can be confused with the TEXT/ENDTEXT structure and can wrong recognize the rest of the code (Mario Peschke) +- Bug Fix scx/vcx: GetTimeStamp internal method throwse an error when day or month have just 1 digit (happen from v1.19.23) +- New "run_aftercreate_db2" event that permits execution of an external program when using FoxBin2Prg as object (for example, to export table data) +- New FoxUnit Unit Tests to verify new functionality and "text" bug fix +- Added foxbin2prg_de.h file translation of most messages to German (Mario Peschke) + +2014/06/07 v1.19.23 +- Timestamps and UniqueIds values are back on binaries, and they are just cleaned up on tx2 files if NoTimestamps and ClearUniqueID flags are set. This minimizes some differences on the binary side. +- Added sccdata default value when regenerating PJX binary (which is automatically completed on the PJX when opened anyway) +- Fixed timestamp evaluation for "OptimizeByFilestamp" optimization that evaluates just .??X files, and now .??T (memo) filestamps are evaluated too +- Fixed missing BordeCcolor property on props_optiongroup.txt file +- Fixed missing Stretch property on props_image.txt file (Kenny Vermassen) +- Fixed missing Enabled property on props_image.txt file + +2014/05/17 v1.19.22 +- Bug Fix vcx/scx: Picture property of a form class does not show the image. Does not happen with control pictures (Fidel Charny) +- Bug Fix scx/vcx: Incorrect detection of PROCEDURE/ENDPROC/TEXT/ENDTEXT that can cause lost of some methods in some circunstantes (Andres Mendoza) +- Bug Fix scx/vcx: Some options from the optiongroup control loose there width when subclassed from a class with autosize=.T. (Miguel Duran) +- Added evaluation and generation of properties by classtype, when applicable +- Added support of property evaluation from external file (props_*.txt) +- Added enhanced Unit Tests of bitmap comparisons of screen captures before/after (the original is compared with the regenerated of the regenerated binary, for more accuracy) +- A lot of garbage collect optimizations all over the code +- Added Unit Testing of configuration by defaults, by file and by parameters +- Added Unit Testing for checking the generation of classes, forms, reports and menus +- Added new switch OptimizeByFilestamp (active by default) for making possible deactivation of this regeneration optimization by file timestamp, in case someone wants to force regeneration allways + +2014/05/01 v1.19.21 +- Added support to convert to text or binary all files of a project from pjx or pj2 (Matt Slay) +- Added optimization on the search of the capitalization program when processing projects +- Added keyword AGAIN on table openings, for enhancing concurrence (Jim Nelson) +- Added optimization based on file timestamps for regenerating only newer binaries and tx2 files (Matt Slay) +- Added English translation in foxbin2prg_en.h for the LOG message of new timestamp optimization +- section simplification: Methods and arrays doesn't require preceding * and ^ symbols anymore. + +2014/04/17 v1.19.20 +- New: CDX filename in DB2 files have relative paths now. This help show less differences when regenerating DB2 files from different paths + +2014/04/02 v1.19.19 +- New: DBF Hook that let intercalate a personalized process between DBF creation and index creation when processing a DB2 file (example program in "tests\demo_hook_dbf.prg" included) + +2014/03/25 v1.19.18 +- Bug Fix vcx/scx: Image controls with stretched icons or images, get redimensioned to original size when regenerating binary (Arturo Ramos) +- Bug Fix vcx/scx: Library level comments are not kept (Ryan Harris) + +2014/03/16 v1.19.17 +- Bug Fix frx/lbx: Double-quoted expressiones make fx2/lb2 files corrupt (Ryan Harris) +- Bug Fix frx/lbx: Multiline Comments are lost (Ryan Harris) +- frx/lbx tag2 field enhance: when used for tooltips, real values are shown in regards of b64 normal encoding +- Bug Fix mnx: Multiline Comments on Bars/Pads makes MN2 file corrupt (Ryan Harris) +- Bug Fix mnx: Some procedures doesn't generate correctly (Ryan Harris) +- English translation file foxbin2prg_en.h syntax corrected (Ryan Harris) +- Bug Fix vcx/scx: Lowercase saved Dataenvironment property causes Reserved2 value to be not calculated +- Bug Fix frx: character on print condition on field makes fr2 file corrupt +- Bug Fix mnx: Using double-quotes on prompt option fields makes mn2 file invalid (Ryan Harris) + +2014/03/10 v1.19.16 +- Bug Fix vcx/scx: properties loose there hidden/protected visibility when no default value assigned (Ryan Harris) +- Bug Fix vcx/scx: character value with length >255 in addobject property regenerates with tag included (Ryan Harris) +- Bug Fix vcx/scx: When regenerating binari file with empty procedure makes FoxPro crash when trying to modify it on IDE +- Bug Fix scx/vcx: Binary can be corrupted if the class have a multiline comment (Tested on: Ffc\_frxcursor.vcx) +- Bug Fix: If _memberdata contains CR inside there values, they can be lost when regenerating tx2 text files +- Bug Fix: Property values with spaces at the right loose this spaces +- Bug Fix: When 2 or more methods share the same name (ej: met and met2) tx2 text file gets corrupted (Ryan Harris) + +2014/03/04 v1.19.15 +- Bug Fix: OLE information cleared when a legacy TX2 is processed +- Bug Fix: Default value of NoTimestamp = 0 ==> Now is 1, as should be +- Bug Fix: DBFs backlink info cleared when DBC is recreated (Ryan Harris) +- Feature: Lowercase capitalization in tx2 filename headers to minimize differences + +2014/03/01 v1.19.14 +- Load of configuration is optimized (foxbin2prg.cfg) to read cfg only once for a massive processing of multiple conversions +- .vbs scripts have been modified to respect the conversion support configuration defined in foxbin2prg.cfg configuration file +- 2 new functions where added to enhance and encapsulate the external use of the evaluation of the conversion support (requires previous call to EvaluarConfiguracion()). Used on .vbs scripts +- ExtraBackupLevels Regression: when no defined value, no backup is made +- New default value ClearUniqueID = 1 in foxbin2prg.cfg for minimizing differences in the SCM + +2014/02/26 v1.19.13 +- Bug Fix: If NoTimestamp setting of foxbin2prg.cfg is changed, opposite value is evaluated (Ryan Harris) +- Encapsulated foxbin2prg.cfg file for enhancing FoxUnit automated testing +- Internal change of property l_UseTimestamps by l_NoTimestamps +- With ExtraBackupLevels setting you can now deactivate backups if setting to 0 (Ryan Harris proposal) +- foxbin2prg.log file checking dropped, to activate the log file use foxbin2prg.cfg setting Debug=1 +- In TX2 header files show the file without path, because genereting it from different places makes unnecesary differences in Diff (Ryan Harris proposal) +- Created a lot of FoxUnit automated tests to check all settings of foxbin2prg.cfg configuration file + +2014/02/23 v1.19.12 +- Generation of VC2/SC2 with new header metadata for centralizing uniqueid, timestamp and ZOrder and big reduce of differences in a diff/merge (enhancement proposed by Ryan Harris) +- BINARY regeneration from the new metadata header (remains compatible with old VC2/SC2) +- FoxUnit test cases fixed for the new functionality +- Cleaning, Refactorization and optimization of Code +- Presentation enhancement of VC2/SC2 file headers + +2014/02/13 v1.19.11 +- WITH/ENDWITH optimizations with a conversion performance gain up to 16% more fast +- Bug Fix: Just one level of #IF was contemplated, throwing an error if more levels are nested +- Bug Fix: When regenerating the PJX, default home directory not always was correct +- New FoxUnit automated test added to check bug fix of nested #IF + +2014/02/09 v1.19.10 +- Added parametrization to enable configuration support for each kind of binary (0=None, 1=Only TX2, 2=TX2 and Binary) +- Fixed default NoTimestamps setting +- EXPERIMENTAL: Added new configuration parameter "ClearUniqueID" in foxbin2prg.cfg for Clearing UniqueID in binaries and text versions. Works well and apparently FoxProdoesn't make use of it, but more testing is required +- Adjusted some FoxUnit test cases + +2014/02/08 v1.19.9 +- New configuration items in foxbin2prg.cfg +- Localization Bug: When recompiling with localization file foxbin2prg_en.h renamed to foxbin2prg.h, syntax error occurs +- Debug information of .LOG files enhanced +- New parametrization for the number of backups, now just one .BAK by default (earlier was 10) +- Enabled configuration file foxbin2prg.cfg by default +- Change in default behavior: Now Timestamps are disabled by default. You can change this on foxbin2prg.cfg + +2014/02/03 v1.19.8 +- Bug fix: ActivePage error when executing a regenerated binary with a PageFrame / New FoxUnit test to test solution +- Added cNoTimestamps='1' to batch conversion vbs scripts + +2014/02/02 v1.19.7 +- Added Ole encapsulation in just 1 place +- Adjusted Blocksize of generated binaries +- New cNoTimestamps parameter. If '1' is given, then no timestamps are generated (useful for diff/merge) + +2014/01/31 v1.19.6 +- Added SourceSafe support (SCCAPI) for Diff and Merge +- SCX bug fix: Dataenvironment sometimes doesn't regenerates correctly +- Functionality change: Automatic recompilation enabled by default again because some methods doesn't show on form edit. Can be deactivated passing '0' to cRecompile param + +2014/01/26 v1.19.5 +- Added Multilanguage support and Localization file for English. To use it rename the new file foxbin2prg_en.h to foxbin2prg.h and recompile + +2014/01/24 v1.19.4 +- New "Recompile" parameter for recompiling from PJX directory (if provided) +- Functionality change: Now FoxBin2Prg does not recompile bins for default, because it do on bin dir and that can throw compilation errors. Use new parameter if needed or recompile by your own +- DBC: Added support for multiline "comment" property +- VBS Batch scripts: Added progress bar + +2014/01/18 v1.19.3 +- Change on TXT timestamps to preserve empty values that can save a lot of differences when diff/merging. Previously empty timestamps get converted to datetime +- Optimization on TXT generation of ZOrders + +2014/01/13 v1.19.2 +- Fix on PJX regeneration caused for something missing in the last change of "Autor" to "Author" + +2014/01/08 v1.19.1 +- Small change on TX2 headers to drop the "Generated" timestamp that causes unnecesary differences / Updated the EXE version with the correct one + +2014/01/08 v1.19 +- Added new debug flag on .vbs scripts to show a "End process" message for batch processing +- Bug Fix scx/vcx: Improper order of Reserved3 props cause event access to not fire +- Bug Fix dbf: Improper index generated when the type is Candidate +- Added support for converting SourceSafe PJM to FoxBin PJ2 +- Added validation for Menus when converting from older versions, so user can convert it to VFP 9 format first +- Change in MN2 property: "Autor" was changed to "Author". You can add the missing letter to MN2 or regenerate + +2014/01/07 v1.18.1 +- Added a vbs script (Normalize_FileNames.vbs) for FileNames normalizing in batch mode, and updated FileName_Caps.exe and the call on FoxBin2prg + +2014/01/06 v1.18 +- mnx bug fix: Generation of DO Procedure or Command when no Procedure or Command available to call when empty option is created (Fidel Charny) +- Added support for DBFs earlier than VFP 9 for generating DB2 text, but DBF regeneration is in VFP 9 version! +- dbf bug fix: DBFs linked to a DBC that use long field names throw error when regenerating DBFs +- dbf bug fix: Some view info is lost when generating text from DBC + +2014/01/03 v1.17 +- mnx bug fix: Location value is lost and some menus doesn't render properly (Fidel Charny) +- Added 2 VB scripts (Convert_VFP9_BIN_2_PRG.vbs and Convert_VFP9_PRG_2_BIN.vbs) for batch converting of dirs and files if a shortcut is placed on "SendTo" user folder +- Added new Unit Testing cases for menus + +2014/01/02 v1.16 +- Added support for Menus (MNX) + +2013/12/18 v1.15 +- Added support for DBF, DBC and CDX binaries + +2013/12/15 v1.14 +- scx bug fix: autocenter property do nothing (Arturo Ramos) +- scx bug fix: Last COMMENT record is lost (Fidel Charny) + +2013/12/08 v1.13 +- frx/lbx bug fix: "Error 1924, TOREG is not an object" on some reports (Fidel Charny) + +2013/12/08 v1.12 +- Added support for Reports (FRX) and Labels (LBX) + +2013/12/08 v1.11 +- scx/vcx bug fix: _memberdata value corrupted when the value is a long one (Edgar Kummers) + +2013/12/07 v1.10 +- scx/vcx bug fix: when there are methods with the same name, there code is assigned to erroneous objects (Fidel Charny) + +2013/12/07 v1.9 +- scx/vcx bug fix: last fix keep loosing some properties (Fidel Charny) + +2013/12/06 v1.8 +- scx/vcx bug fix: last fix keep loosing some properties (Fidel Charny) +- sort function encapsulated and reused on BIN and TXT generation for safety + +2013/12/03 v1.7 +- vcx/scx bug fix: some properties get lost and picture clause is not displayed if "Name" is not the last property on memo (Fidel Charny) +- Added verification of readOnly files and report this to Log file in debug mode + +2013/12/02 v1.6 +- Complete refactoring of BIN and TXT generation +- Changes of various algorithms +- scx/vcx bug fix: Array properties didn't save (Fidel Charny) +- Unit testing cases with FoxUnit + +2013/11/27 v1.5 +- Bug fix: On some forms dataenvironment didn't regenerate appropiately (Luis Martínez) + +2013/11/27 v1.4 +- Added mask support +- Added support for extension configuration on file foxbin2prg.cfg, so one can use "vca" instead of "vc2", etc +- Added support for a new parameter for Log generation + +2013/11/24 v1.3 +- Bug fixes, code cleaning, refactoring + +2013/11/24 v1.2 +- Bug fixes, code cleaning, refactoring + +2013/11/22 v1.1 +- Bug fixes + +2013/11/22 v1.0 +- Initial creation of clases on prg and support of VCX/SCX/PJX files + +EndText + +return lcNotes diff --git a/docs/ChangeLog.md b/docs/ChangeLog.md index d8bd222..e489016 100644 --- a/docs/ChangeLog.md +++ b/docs/ChangeLog.md @@ -15,6 +15,9 @@ As far as possible these are the original documents. Changes are added where fun - [Remark](#remark) - [Full Change History](#full-change-history) +For recent verisons see +![Picture](./pictures/FoxBin2Prg_Full_Change_History_vfpxreleasesmall.png) [FoxBin2PRG](https://github.com/fdbozzo/foxbin2prg) + ## Full Change History This page is not only to get the history of the changes, but to keep a permanent list of people that have contributed to enhance FoxBin2Prg and that I feel as part of the ADN of this tool. @@ -24,7 +27,8 @@ _**Note:** you can click on the version number for downloading this version from | Rel.Date | Developer | Version | Details | | - | - | - | - | -| 2023/10/20 | LScheffler | [v1.21.00](https://github.com/lscheffler/foxbin2prg/releases/tag/v1.21.00) | **Bug Fix**: Problems with spanish characters in comment. (ccantrell72) | +| 2023/11/19 | LScheffler | [v1.21.01](https://github.com/lscheffler/foxbin2prg/releases/tag/v1.21.01) | **Bug Fix**: Problems regenerating databases with splited contents due to the removed Spanish characters in comment. (LScheffler) | +| 2023/10/20 | LScheffler | [v1.21.00](https://github.com/lscheffler/foxbin2prg/releases/tag/v1.21.00) | **Bug Fix**: Problems with Spanish characters in comment. (ccantrell72) | | 2023/09/06 | LScheffler | [v1.20.07](https://github.com/lscheffler/foxbin2prg/releases/tag/v1.20.07) | **Enhancement**: Option to block processing of directories. If file ".FoxBin2Prg_Ignore" is existing, this directories and all subdirectries will be ignored. (Mainly set up to ignore local GoFish settings) (LScheffler) | | 2023/09/06 | LScheffler | [v1.20.06](https://github.com/lscheffler/foxbin2prg/releases/tag/v1.20.06) | **Bug Fix**: Problems recreating tables (LScheffler) | | 2023/09/03 | LScheffler | [v1.20.05](https://github.com/lscheffler/foxbin2prg/releases/tag/v1.20.05) | **Bug Fix**: Problems recreating menu files (introduced with codepage) (LScheffler) | @@ -438,4 +442,9 @@ _**Note:** you can click on the version number for downloading this version from | 2013/11/22 | FDBOZZO | [v1.0](https://github.com/fdbozzo/foxbin2prg/tree/v1.0---pública) | Initial creation of clases on prg and support of VCX/SCX/PJX files | ---- -Last changed: _2023/10/20_ \ No newline at end of file +Last changed: _2023/11/19_ +![VFPX logo](https://vfpx.github.io/images/vfpxbanner_small.gif) +This project is part of [VFPX](https://vfpx.github.io/). + +---- +Last changed: _2023/11/26_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file diff --git a/docs/FoxBin2Prg.md b/docs/FoxBin2Prg.md index fe767dc..d7f8fa6 100644 --- a/docs/FoxBin2Prg.md +++ b/docs/FoxBin2Prg.md @@ -20,18 +20,19 @@ As far as possible these are the original documents. Changes are added where fun - [Keep reading](#keep-reading) ## Source -Original repository at https://github.com/lscheffler/foxbin2prg. +Original repository at https://github.com/fdbozzo/foxbin2prg. +Or install via [Thor](https://github.com/VFPX/Thor/blob/master/Docs/Thor_install.md), this keeps you on the latest version. ## Download -Regenerate after download / clone / pull from https://github.com/lscheffler/foxbin2prg. -**Note: If you have cloned the project, you must run it against itself to create the binaries and exes.** -Run +Regenerate after download / clone / pull from https://github.com/lscheffler/foxbin2prg. +**Note: You you must run FoxBin2Prg against itself to create the binaries and exes.** +Run: ``` CD "path_to_FoxBin2Prg" *This uses a special configuration DO ReCreate_FoxBin2Prg.prg -``` - +``` +**Note: Do not run FoxBin2Prg.prg directly.** ## Requirements - A copy of MS VFP9 SP1, at least _3504_ - Runs with VFPA (Note, you need to recompile the EXE or use the PRG) @@ -96,4 +97,8 @@ FoxBin2Prg can be used in tree ways: - [FoxBin2Prg and use with git](./FoxBin2Prg_git.md) ---- -Last changed: _2023/08/26_ \ No newline at end of file +![VFPX logo](https://vfpx.github.io/images/vfpxbanner_small.gif) +This project is part of [VFPX](https://vfpx.github.io/). + +---- +Last changed: _2023/11/26_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file diff --git a/docs/FoxBin2Prg_Internals.md b/docs/FoxBin2Prg_Internals.md index 783b3b6..a91c7e5 100644 --- a/docs/FoxBin2Prg_Internals.md +++ b/docs/FoxBin2Prg_Internals.md @@ -513,268 +513,273 @@ In example, if you have a classlib "mylib.vcx" with 3 classes inside ( "cl_1, cl - mylib.cl_3.vc2 #### Important note The settings of UseClassPerFile and related options are sensible. If changed the wrong way it's easy to destroy classlibs. - -#### Recommended new setting -Starting at v1.19.42 you can configure FoxBin2Prg to generate one class per file. -Using the naming style "basefile._baseclass_.class.vc2" with the new value "2". - -To configure this, you must first enable it in foxbin2prg.cfg file: -```` -*UseClassPerFile: 2 && 0=One library _Text_ file, 1=Multiple file.class.vc2 files, 2=Multiple file.baseclass.class.vc2 files, -including DBC members -```` -In example, if you have a classlib "mylib.vcx" with 3 classes inside ( "cl_1, cl_2, cl_3") then this files are generated: - -- mylib.vc2 => Header file, with all conforming classes annotated inside - - mylib.custom.cl_1.vc2 - - mylib.form.cl_2.vc2 - - mylib.textbox.cl_3.vc2 -#### Complementary options for the UseClassPerFile setting -##### RedirectClassPerFileToMain: + +#### Recommended new setting +Starting at v1.19.42 you can configure FoxBin2Prg to generate one class per file. +Using the naming style "basefile._baseclass_.class.vc2" with the new value "2". + +To configure this, you must first enable it in foxbin2prg.cfg file: +```` +*UseClassPerFile: 2 && 0=One library _Text_ file, 1=Multiple file.class.vc2 files, 2=Multiple file.baseclass.class.vc2 files, +including DBC members +```` +In example, if you have a classlib "mylib.vcx" with 3 classes inside ( "cl_1, cl_2, cl_3") then this files are generated: + +- mylib.vc2 => Header file, with all conforming classes annotated inside + - mylib.custom.cl_1.vc2 + - mylib.form.cl_2.vc2 + - mylib.textbox.cl_3.vc2 +#### Complementary options for the UseClassPerFile setting +##### RedirectClassPerFileToMain: Configuring this setting to 1 will redirect any selection of file[.baseclass].class.vc2 -to the main file.vc2 file, which will not let you generate individual vcx files by mistake. +to the main file.vc2 file, which will not let you generate individual vcx files by mistake. RedirectClassType: 1 precedes this setting for files in the - -##### ClassPerFileCheck + +##### ClassPerFileCheck Configuring this setting to 1 will check the inclusion of all file[.baseclass].class.vc2 files -annotated on file.vc2 main file, otherwise no checking is made and when reconstructing the vcx/scx all files +annotated on file.vc2 main file, otherwise no checking is made and when reconstructing the vcx/scx all files containing the file.class.ext naming will be included in the _Binary_ (useful when you want to add external classes to the library). This is only used, if import file is in file[.baseclass].class.tx2 syntax. Ignored for RedirectClassType: 2 - -#### Note -If you don't use the redirect setting, an individual vcx/scx file will be generated. -This can be useful if you want to divide a big library in smaller pieces. - -#### Note + +#### Note +If you don't use the redirect setting, an individual vcx/scx file will be generated. +This can be useful if you want to divide a big library in smaller pieces. + +#### Note By default, these settings are valid for SCX and DBC files as well. SCX files may expand to header, form and dataenvironment, and a DBC may be split into header and several files of the objects contained. -If you like finer and independend control over forms and databases, check +If you like finer and independend control over forms and databases, check - [Create File-Per-Form](create_file_per_form) and - [Create File-Per-DBC](#create-file-per-dbc) ### Create File-Per-Form Starting at 1.20.05 you can configure FoxBin2Prg to generate Form (sc2) files independent of classlibrary. -The major idea is, that the class settings to split a vcx into multiple files result into splitting a form(SCX into a form header, a from and a dataenvironment file, what might be overkill. (splitting classes is great, so one does not need to merge the whole lib, but a form is a form.) +The major idea is, that the class settings to split a vcx into multiple files result into splitting a form (SCX into a form header, a from and a dataenvironment file, what might be overkill. (splitting classes is great, so one does not need to merge the whole lib, but a form is a form.) To configure this, you must first enable it in foxbin2prg.cfg file: ```` UseFormSettings: 1 ```` The settings of the four options are similar to the one of the [class options](#create-class-per-file), except they are named \*Form\* instead of \*Class\*. -### Create File-Per-DBC -Starting at 1.19.55 you can configure FoxBin2Prg to generate one _Text_ file per dbc item using naming style "DatabaseName.item.name.dc2" -with the value "1" -To configure this, you must first enable it in foxbin2prg.cfg file: -```` -*UseFilesPerDBC: 0 && 0=One database dc2 file, 1=Multiple file.*.*.dc2 files -```` -In example, if you have a classlib "MyData.dbc" with 3 tables inside ( "tl_1, tl_2, tl_3") and stored procedures. -Then this files are generated: - -- MyData.vc2 => Header file, with all database settings and conforming items annotated inside - - MyData.database.storedproceduressource.dc2 -> stored procedures - - MyData.table.tl_1.dc2 - - MyData.table.tl_2.dc2 - - MyData.table.tl_3.dc2 - -#### Complementary options for the UseFilesPerDBC setting -##### RedirectFilePerDBCToMain -`*RedirectFilePerDBCToMain 0 && 0=Don't redirect to file.dc2, 1=Redirect to file.tx2 when selecting file.item.*.dc2` -Configuring this setting to 1 will redirect any selection of DataBaseName.*.dc2 -to the main DataBaseName.dc2 file, which will not let you generate individual DBC files by mistake. - -##### ItemPerDBCCheck -`*ItemPerDBCCheck: 0 && 0=Don't check file.item.*.dc2 inclusion, 1=Check file.item.*.dc2 inclusion` -Configuring this setting to 1 will check the inclusion of all DataBaseName.*.dc2 files -annotated on DataBaseName.dc2 main file, otherwise no checking is made and when reconstructing the dbc files - -#### Note -If you don't use the Redirect setting, an individual dbc file will be generated. -There is no real use of this. +### Create File-Per-DBC +Starting at 1.19.55 you can configure FoxBin2Prg to generate one _Text_ file per dbc item using naming style "DatabaseName.item.name.dc2" +with the value "1" +To configure this, you must first enable it in foxbin2prg.cfg file: +```` +*UseFilesPerDBC: 0 && 0=One database dc2 file, 1=Multiple file.*.*.dc2 files +```` +In example, if you have a classlib "MyData.dbc" with 3 tables inside ( "tl_1, tl_2, tl_3") and stored procedures. +Then this files are generated: -### FoxBin2Prg API -With v1.19.42 version started an enhanced API support, making public methods that where only for internal use up to now. -When using FoxBin2Prg as an object, you can access low level functionalities not available when using as external program, -that allow you to implement your own tools, like the VFP tools I've implemented for working with PlasticSCM. - -The return value of `execute()` method, is an error code, where 0 means *No errors*. -You can also get an Exception reference in case of errors, passing extra parameters as in the next examples. - -First you instantiate FoxBin2Prg as object, using this syntax: -```` -LOCAL loCnv AS c_foxbin2prg OF "\FOXBIN2PRG.PRG" && For Intellisense -SET PROCEDURE TO "\FOXBIN2PRG.EXE" -loCnv = CREATEOBJECT("c_foxbin2prg") -```` -Now some examples: - -Convert a file.vcx to text: -```` -loCnv.execute( "\file.vcx" ) -```` -Generate the _Binary_ classlib from the text file.vc2: -```` -loCnv.execute( "\file.vc2" ) -```` -Convert all files of a project.pjx to text: -```` -loCnv.execute( "\project.pjx", "*" ) -```` -Return a `laProc` array of processed forms _**after**_ processing a project: -```` -DIMENSION laProcs(1,6) -lnErr = loCnv.execute("C:\DESA\foxbin2prg\TESTS\DATOS_TEST\fb2p_test.pjx", "*", "", "", "1", "0", "1") -lnCnt = loCnv.get_Processed(@laProcs, "*.scx") -```` -Return a laProc array of processed classlibs _**before**_ processing a project -(almost no file processing here, just minimal header reading): -```` -DIMENSION aProcs(1,6) -loCnv.l_ProcessFiles = .F. -lnErr = loCnv.execute("C:\DESA\foxbin2prg\TESTS\DATOS_TEST\fb2p_test.pjx", "*", "", "", "1", "0", "1") -lnCnt = loCnv.get_Processed(@aProcs, "*.vcx") -```` -Check if a file has support for converting to text: -```` -loCnv.evaluateConfiguration( '', '', '', '', '', '', '', '', , 'D' ) -? loCnv.hasSupport_Bin2Prg("\file.vcx") -? loCnv.hasSupport_Bin2Prg("\file.ppt") -```` -#### Note -If you query for support in different subdirectories, -then you need to call `evaluateConfiguration()` method for refreshing the CFG info that is used by those methods. - -Clear the cache of processed files for allowing reprocessing a file: -```` -loCnv.clearProcessedFiles() -```` -Get a CFG object with the settings that will be applied to a directory -```` -oCFG = loCnv.get_DirSettings( "c:\developments\projects\myproj_1" ) -? oCFG.n_UseClassPerFile -? oCFG.DBF_Conversion_Support -```` -#### Note -`get_DirSettings()` method internally calls `evaluateConfiguration()` -method for refreshing the CFG info before returning the CFG object. - - -Check if a file was processed: -```` -? loCnv.wasProcessed( "c:\developments\projects\myfile.vcx" ) -```` -Get the internal FoxBin2Prg's Project project of a given PJX and return an array with existence of files on disk: -```` -STORE null TO oMod, oEx -DIMENSION aFiles(1,2) && col.1=Name, col.2=File exist on disk -loCnv.loadModule("c:\developments\projects\myfile.pjx", @oMod, @oEx, .F. ) -nFilesNotFound = oMod.getFilesNotFound(@aFiles) -FOR I = 1 TO oMod.Count && oMod.Count is the total count of files in the PJX - ? aFiles(1,2), aFiles(1,1) -ENDFOR -```` - -#### PEM -This is a list of available methods and properties: - -| Method()/Property
Syntax | Description | -| -| - | -| **execute**
loCnv.execute( cInputFile [,cType [,cTextName [,lGenText [,cDontShowErrors [,cDebug [,cDontShowProgress [,oModule [,oEx [,lRelanzarError [,cOriginalFileName [,cRecompile [,cNoTimestamps [,cBackupLevels [,cClearUniqueID [,cOptimizeByFilestamp [,cCFG_File](,cType-[,cTextName-[,lGenText-[,cDontShowErrors-[,cDebug-[,cDontShowProgress-[,oModule-[,oEx-[,lRelanzarError-[,cOriginalFileName-[,cRecompile-[,cNoTimestamps-[,cBackupLevels-[,cClearUniqueID-[,cOptimizeByFilestamp-[,cCFG_File ] ] ] ] ] ] ] ] ] ] ] ] ] ] ) | Main execution method to start a conversion
See [Object version](./FoxBin2Prg_Object.md#execute) | -| **conversionSupportType**
loCnv.conversionSupportType( cFilename ) | Return the code of the support type (0,1,2,4,8) | -| **get_DBF_Configuration**
loCnv.get_DBF_Configuration( cInputFile, @oOutDbfCfg ) | Returns 1 if a CFG is found for the indicated DBF, or 0 if not | -| **hasSupport_Bin2Prg**
loCnv.hasSupport_Bin2Prg( cFilename.ext )
loCnv.hasSupport_Bin2Prg( cExt ) | Returns .T. if there is support for converting the file or filetype indicated to _text_ | -| **hasSupport_Prg2Bin**
loCnv.hasSupport_Prg2Bin( cFilename.ext )
loCnv.hasSupport_Prg2Bin( cExt ) | Returns .T. if there is support for converting the file or filetype indicated to _Binary_ | -| **evaluateConfiguration**
loCnv.evaluateConfiguration( cDontShowProgress [,cDontShowErrors [,cNoTimestamps [,cDebug [,cRecompile [,cBackupLevels [,cClearUniqueID [,cOptimizeByFilestamp [,cInputFile [,cInputFileTypeType [,cCFG_File](,cDontShowErrors-[,cNoTimestamps-[,cDebug-[,cRecompile-[,cBackupLevels-[,cClearUniqueID-[,cOptimizeByFilestamp-[,cInputFile-[,cInputFileTypeType-[,cCFG_File) ] ] ] ] ] ] ] ] ) | Forces FoxBin2Prg to process the directory indicated in the cInputFile and update any CFG in the directory or their parents | -| **loadProgressbarForm**
loCnv.loadProgressbarForm() | Load and show the progressbar form as upper level window | -| **unloadProgressbarForm**
loCnv.unloadProgressbarForm() | Hide and unload the progressbar form | -| **updateProgressbar**
loCnt.updateProgressbar( cText, nValue, nTotal, nType ) | Update the progressbar and the message. nType indicates which progressbar to update, being 0=1st PB and 1=2nd PB | -| **get_DirSettings**
loCnv.get_DirSettings( cDir ) | Returns a CFG object with the settings that are applied on the indicated directory | -| **get_Ext2FromExt**
loCnv.get_Ext2FromExt( cExt ) | Returns the _text extension_ corresponding to the _Binary_ extension indicated | -| **get_Processed**
loCnv.get_Processed( @aProcessed, cFileMask ) | Returns an array with the status of the files being processed or that will be processed in no-real-process-mode if you set `l_ProcessFiles=.F.` before the call. Columns returned are 6: "cFile, cInOutType, cProcessed, cHasErrors, cSupported, cExpanded"` | -| **clearProcessedFiles**
loCnv.clearProcessedFiles() | Clear the statistics and the cache about processed files. If a file was processed and is already processed, being not cached will force to process it again | -| **wasProcessed**
loCnv.wasProcessed( cFile ) | Returns .T. if the fullpath-file was processed, searching in the internal cache | - -#### Renamed -This is the translation table of old method names up to v1.19.41 and the new names: - -| Old name | New name | -| -| - | -| Ejecutar | Execute | -| TieneSoporte_** | hasSupport_** | -| EvaluarConfiguracion | EvaluateConfiguration | -| AvanceDelProceso | updateProgressbar | -| cargar_frm_avance | loadProgressbarForm | -| descargar_frm_avance | unloadProgressbarForm | - -#### Note -Any method or property not documented in this help, could be renamed, changed or deleted, so please, do not use it_ - -### Log to StdOut -When running from a DOS window, you can get the output to console (same order as array obtained with get_Processed method, -except that element 1 \[filename\] is shown last): - -```` -C:\DESA\foxbin2prg>foxbin2prg.exe "tests\datos_test\fb2p_dbc.dbc" | find /V -```` - -```` -I,P1,E0,S1,X0,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.dbc -O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.dc2 -O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.connection.remote_connection_dbf.dc2 -O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.connection.remote_connection_oracle.dc2 -O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.table.fb2p_depto.dc2 -O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.table.nombrelargodeldbf.dc2 -O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.rv_db_debug_setup.dc2 -O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.vista_local.dc2 -O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.vw_local_encuestas.dc2 -O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.vw_ora_convenios.dc2 -O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.vw_ora_dual.dc2 -O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.database.storedproceduressource.dc2 -```` - -#### First line -The first line means: -Input file (**I**), Processed (**P1**), Without Errors (**E0**), Supported (**S1**), Not Extended file (**X0**) and the full path filename. - -#### Last line -The last line means: -Output file (**O**), Processed (**P1**), Without Errors (**E0**), Supported (**S1**), Extended file (**X1**) and the full path filename. - -## How to use with a SCM tool -### Note +- MyData.vc2 => Header file, with all database settings and conforming items annotated inside + - MyData.database.storedproceduressource.dc2 -> stored procedures + - MyData.table.tl_1.dc2 + - MyData.table.tl_2.dc2 + - MyData.table.tl_3.dc2 + +#### Complementary options for the UseFilesPerDBC setting +##### RedirectFilePerDBCToMain +`*RedirectFilePerDBCToMain 0 && 0=Don't redirect to file.dc2, 1=Redirect to file.tx2 when selecting file.item.*.dc2` +Configuring this setting to 1 will redirect any selection of DataBaseName.*.dc2 +to the main DataBaseName.dc2 file, which will not let you generate individual DBC files by mistake. + +##### ItemPerDBCCheck +`*ItemPerDBCCheck: 0 && 0=Don't check file.item.*.dc2 inclusion, 1=Check file.item.*.dc2 inclusion` +Configuring this setting to 1 will check the inclusion of all DataBaseName.*.dc2 files +annotated on DataBaseName.dc2 main file, otherwise no checking is made and when reconstructing the dbc files + +#### Note +If you don't use the Redirect setting, an individual dbc file will be generated. +There is no real use of this. + +### FoxBin2Prg API +With v1.19.42 version started an enhanced API support, making public methods that where only for internal use up to now. +When using FoxBin2Prg as an object, you can access low level functionalities not available when using as external program, +that allow you to implement your own tools, like the VFP tools I've implemented for working with PlasticSCM. + +The return value of `execute()` method, is an error code, where 0 means *No errors*. +You can also get an Exception reference in case of errors, passing extra parameters as in the next examples. + +First you instantiate FoxBin2Prg as object, using this syntax: +```` +LOCAL loCnv AS c_foxbin2prg OF "\FOXBIN2PRG.PRG" && For Intellisense +SET PROCEDURE TO "\FOXBIN2PRG.EXE" +loCnv = CREATEOBJECT("c_foxbin2prg") +```` +Now some examples: + +Convert a file.vcx to text: +```` +loCnv.execute( "\file.vcx" ) +```` +Generate the _Binary_ classlib from the text file.vc2: +```` +loCnv.execute( "\file.vc2" ) +```` +Convert all files of a project.pjx to text: +```` +loCnv.execute( "\project.pjx", "*" ) +```` +Return a `laProc` array of processed forms _**after**_ processing a project: +```` +DIMENSION laProcs(1,6) +lnErr = loCnv.execute("C:\DESA\foxbin2prg\TESTS\DATOS_TEST\fb2p_test.pjx", "*", "", "", "1", "0", "1") +lnCnt = loCnv.get_Processed(@laProcs, "*.scx") +```` +Return a laProc array of processed classlibs _**before**_ processing a project +(almost no file processing here, just minimal header reading): +```` +DIMENSION aProcs(1,6) +loCnv.l_ProcessFiles = .F. +lnErr = loCnv.execute("C:\DESA\foxbin2prg\TESTS\DATOS_TEST\fb2p_test.pjx", "*", "", "", "1", "0", "1") +lnCnt = loCnv.get_Processed(@aProcs, "*.vcx") +```` +Check if a file has support for converting to text: +```` +loCnv.evaluateConfiguration( '', '', '', '', '', '', '', '', , 'D' ) +? loCnv.hasSupport_Bin2Prg("\file.vcx") +? loCnv.hasSupport_Bin2Prg("\file.ppt") +```` +#### Note +If you query for support in different subdirectories, +then you need to call `evaluateConfiguration()` method for refreshing the CFG info that is used by those methods. + +Clear the cache of processed files for allowing reprocessing a file: +```` +loCnv.clearProcessedFiles() +```` +Get a CFG object with the settings that will be applied to a directory +```` +oCFG = loCnv.get_DirSettings( "c:\developments\projects\myproj_1" ) +? oCFG.n_UseClassPerFile +? oCFG.DBF_Conversion_Support +```` +#### Note +`get_DirSettings()` method internally calls `evaluateConfiguration()` +method for refreshing the CFG info before returning the CFG object. + + +Check if a file was processed: +```` +? loCnv.wasProcessed( "c:\developments\projects\myfile.vcx" ) +```` +Get the internal FoxBin2Prg's Project project of a given PJX and return an array with existence of files on disk: +```` +STORE null TO oMod, oEx +DIMENSION aFiles(1,2) && col.1=Name, col.2=File exist on disk +loCnv.loadModule("c:\developments\projects\myfile.pjx", @oMod, @oEx, .F. ) +nFilesNotFound = oMod.getFilesNotFound(@aFiles) +FOR I = 1 TO oMod.Count && oMod.Count is the total count of files in the PJX + ? aFiles(1,2), aFiles(1,1) +ENDFOR +```` + +#### PEM +This is a list of available methods and properties: + +| Method()/Property
Syntax | Description | +| -| - | +| **execute**
loCnv.execute( cInputFile [,cType [,cTextName [,lGenText [,cDontShowErrors [,cDebug [,cDontShowProgress [,oModule [,oEx [,lRelanzarError [,cOriginalFileName [,cRecompile [,cNoTimestamps [,cBackupLevels [,cClearUniqueID [,cOptimizeByFilestamp [,cCFG_File](,cType-[,cTextName-[,lGenText-[,cDontShowErrors-[,cDebug-[,cDontShowProgress-[,oModule-[,oEx-[,lRelanzarError-[,cOriginalFileName-[,cRecompile-[,cNoTimestamps-[,cBackupLevels-[,cClearUniqueID-[,cOptimizeByFilestamp-[,cCFG_File ] ] ] ] ] ] ] ] ] ] ] ] ] ] ) | Main execution method to start a conversion
See [Object version](./FoxBin2Prg_Object.md#execute) | +| **conversionSupportType**
loCnv.conversionSupportType( cFilename ) | Return the code of the support type (0,1,2,4,8) | +| **get_DBF_Configuration**
loCnv.get_DBF_Configuration( cInputFile, @oOutDbfCfg ) | Returns 1 if a CFG is found for the indicated DBF, or 0 if not | +| **hasSupport_Bin2Prg**
loCnv.hasSupport_Bin2Prg( cFilename.ext )
loCnv.hasSupport_Bin2Prg( cExt ) | Returns .T. if there is support for converting the file or filetype indicated to _text_ | +| **hasSupport_Prg2Bin**
loCnv.hasSupport_Prg2Bin( cFilename.ext )
loCnv.hasSupport_Prg2Bin( cExt ) | Returns .T. if there is support for converting the file or filetype indicated to _Binary_ | +| **evaluateConfiguration**
loCnv.evaluateConfiguration( cDontShowProgress [,cDontShowErrors [,cNoTimestamps [,cDebug [,cRecompile [,cBackupLevels [,cClearUniqueID [,cOptimizeByFilestamp [,cInputFile [,cInputFileTypeType [,cCFG_File](,cDontShowErrors-[,cNoTimestamps-[,cDebug-[,cRecompile-[,cBackupLevels-[,cClearUniqueID-[,cOptimizeByFilestamp-[,cInputFile-[,cInputFileTypeType-[,cCFG_File) ] ] ] ] ] ] ] ] ) | Forces FoxBin2Prg to process the directory indicated in the cInputFile and update any CFG in the directory or their parents | +| **loadProgressbarForm**
loCnv.loadProgressbarForm() | Load and show the progressbar form as upper level window | +| **unloadProgressbarForm**
loCnv.unloadProgressbarForm() | Hide and unload the progressbar form | +| **updateProgressbar**
loCnt.updateProgressbar( cText, nValue, nTotal, nType ) | Update the progressbar and the message. nType indicates which progressbar to update, being 0=1st PB and 1=2nd PB | +| **get_DirSettings**
loCnv.get_DirSettings( cDir ) | Returns a CFG object with the settings that are applied on the indicated directory | +| **get_Ext2FromExt**
loCnv.get_Ext2FromExt( cExt ) | Returns the _text extension_ corresponding to the _Binary_ extension indicated | +| **get_Processed**
loCnv.get_Processed( @aProcessed, cFileMask ) | Returns an array with the status of the files being processed or that will be processed in no-real-process-mode if you set `l_ProcessFiles=.F.` before the call. Columns returned are 6: "cFile, cInOutType, cProcessed, cHasErrors, cSupported, cExpanded"` | +| **clearProcessedFiles**
loCnv.clearProcessedFiles() | Clear the statistics and the cache about processed files. If a file was processed and is already processed, being not cached will force to process it again | +| **wasProcessed**
loCnv.wasProcessed( cFile ) | Returns .T. if the fullpath-file was processed, searching in the internal cache | + +#### Renamed +This is the translation table of old method names up to v1.19.41 and the new names: + +| Old name | New name | +| -| - | +| Ejecutar | Execute | +| TieneSoporte_** | hasSupport_** | +| EvaluarConfiguracion | EvaluateConfiguration | +| AvanceDelProceso | updateProgressbar | +| cargar_frm_avance | loadProgressbarForm | +| descargar_frm_avance | unloadProgressbarForm | + +#### Note +Any method or property not documented in this help, could be renamed, changed or deleted, so please, do not use it_ + +### Log to StdOut +When running from a DOS window, you can get the output to console (same order as array obtained with get_Processed method, +except that element 1 \[filename\] is shown last): + +```` +C:\DESA\foxbin2prg>foxbin2prg.exe "tests\datos_test\fb2p_dbc.dbc" | find /V +```` + +```` +I,P1,E0,S1,X0,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.dbc +O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.dc2 +O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.connection.remote_connection_dbf.dc2 +O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.connection.remote_connection_oracle.dc2 +O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.table.fb2p_depto.dc2 +O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.table.nombrelargodeldbf.dc2 +O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.rv_db_debug_setup.dc2 +O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.vista_local.dc2 +O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.vw_local_encuestas.dc2 +O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.vw_ora_convenios.dc2 +O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.vw_ora_dual.dc2 +O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.database.storedproceduressource.dc2 +```` + +#### First line +The first line means: +Input file (**I**), Processed (**P1**), Without Errors (**E0**), Supported (**S1**), Not Extended file (**X0**) and the full path filename. + +#### Last line +The last line means: +Output file (**O**), Processed (**P1**), Without Errors (**E0**), Supported (**S1**), Extended file (**X1**) and the full path filename. + +## How to use with a SCM tool +### Note This chapter is without function if the only the _Text_ files are in the source control. - -Here we need to identify 2 distinct operations: checkin because a _Binary_ modification with the IDE -and checkin because a merge operation. - -### Checkin because a _Binary_ modification within the IDE -When you work with the VFP 9 IDE, you modify the _Binary_ files (forms, classlib and the like), -then you checkin your modifications, but before doing this you generate the _Text_ files +just for the changed _Binaries_+, -and once you have all the boundles of _Binaries_/_Text_, you checkin them. -#### Note: -If any _Binary_ doesn't have the corresponding _Text_ file, -it can be because it is in use (close opened _Binariy_ and CLEAR ALL at VFP command window), -or because you really haven't made any changes to the code, -in which case you should undo the changes to the _Binaries_ that don't have their _Text_ files using the "undo" option -for these files of your SCM tool. - - -### Checkin because a merge operation -When you merge a branch, you work on _Text_ files seeing and merging differences manually or automatically. -When you have done with the merge you need to checkin, but before this, -you need to generate the _Binaries_ (forms, classlib, etc) just from the _Text_ files merged, to sync their code. -Once you have done, then you checkin the boundle of _Binaries_/_Text_. -#### Note -If at the end of a merge operation there are _Binaries_ left, you need to choose the "workspace binaries", -because anyway you will generate them later from their _Text_ files. - - -For options on integrating FoxBin2Prg with SCM tools, look at this topic: -**> [FoxBin2Prg and use with SCM tools](./FoxBin2Prg_SCM.md)** + +Here we need to identify 2 distinct operations: checkin because a _Binary_ modification with the IDE +and checkin because a merge operation. + +### Checkin because a _Binary_ modification within the IDE +When you work with the VFP 9 IDE, you modify the _Binary_ files (forms, classlib and the like), +then you checkin your modifications, but before doing this you generate the _Text_ files +just for the changed _Binaries_+, +and once you have all the boundles of _Binaries_/_Text_, you checkin them. +#### Note: +If any _Binary_ doesn't have the corresponding _Text_ file, +it can be because it is in use (close opened _Binariy_ and CLEAR ALL at VFP command window), +or because you really haven't made any changes to the code, +in which case you should undo the changes to the _Binaries_ that don't have their _Text_ files using the "undo" option +for these files of your SCM tool. + + +### Checkin because a merge operation +When you merge a branch, you work on _Text_ files seeing and merging differences manually or automatically. +When you have done with the merge you need to checkin, but before this, +you need to generate the _Binaries_ (forms, classlib, etc) just from the _Text_ files merged, to sync their code. +Once you have done, then you checkin the boundle of _Binaries_/_Text_. +#### Note +If at the end of a merge operation there are _Binaries_ left, you need to choose the "workspace binaries", +because anyway you will generate them later from their _Text_ files. + + +For options on integrating FoxBin2Prg with SCM tools, look at this topic: +**> [FoxBin2Prg and use with SCM tools](./FoxBin2Prg_SCM.md)** ## How to use with _git_ See [FoxBin2Prg and use with git](./FoxBin2Prg_git.md) - ----- -Last changed: _2023/09/06_ \ No newline at end of file + +---- +Last changed: _2023/09/06_ +![VFPX logo](https://vfpx.github.io/images/vfpxbanner_small.gif) +This project is part of [VFPX](https://vfpx.github.io/). + +---- +Last changed: _2023/11/26_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file diff --git a/docs/FoxBin2Prg_Object.md b/docs/FoxBin2Prg_Object.md index 0fd230c..5b2ffb1 100644 --- a/docs/FoxBin2Prg_Object.md +++ b/docs/FoxBin2Prg_Object.md @@ -101,4 +101,9 @@ The _BIN2PRG, PRG2BIN, INTERACTIVE, SHOWMSG_ cTypes might be mixed freely like: Return value is 0=OK, 1=Error. ---- -Last changed: _2023/09/01_ \ No newline at end of file +Last changed: _2023/09/01_ +![VFPX logo](https://vfpx.github.io/images/vfpxbanner_small.gif) +This project is part of [VFPX](https://vfpx.github.io/). + +---- +Last changed: _2023/11/26_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file diff --git a/docs/FoxBin2Prg_Run.md b/docs/FoxBin2Prg_Run.md index 04f5aa5..0e85dc3 100644 --- a/docs/FoxBin2Prg_Run.md +++ b/docs/FoxBin2Prg_Run.md @@ -177,5 +177,10 @@ FoxBin2Prg - Binary2Text.lnk \foxbin2prg.exe "BIN2PRG-SHOWMSG" FoxBin2Prg - Text2Binary.lnk \foxbin2prg.exe "PRG2BIN-SHOWMSG" FoxBin2Prg.lnk \foxbin2prg.exe "INTERACTIVE-SHOWMSG" ``` + ---- -Last changed: _2023/09/01_ \ No newline at end of file +![VFPX logo](https://vfpx.github.io/images/vfpxbanner_small.gif) +This project is part of [VFPX](https://vfpx.github.io/). + +---- +Last changed: _2023/11/26_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) diff --git a/docs/FoxBin2Prg_git.md b/docs/FoxBin2Prg_git.md index 2bbb042..3d69fae 100644 --- a/docs/FoxBin2Prg_git.md +++ b/docs/FoxBin2Prg_git.md @@ -38,7 +38,7 @@ CTRL+C, CTRL+V on Explorer might save the day. ;) ## Requirements ### #1 A copy of FoxBin2Prg. -Or Install via [Thor](https://github.com/VFPX/Thor/blob/master/Docs/Thor_install.md), this keeps you on the latest version. +Or install via [Thor](https://github.com/VFPX/Thor/blob/master/Docs/Thor_install.md), this keeps you on the latest version. ### #2 It might be a good idea to have a copy of git. @@ -288,17 +288,18 @@ If I have to checkout old stuff - the setting will fit. ```` *################################################################################################################ *FOXBIN2PRG.CFG configuration options: (If no values given, these are the DEFAULTS) -*Version: v1.20.01 +*Version: v1.21.01 ***************************************************************************************************************** * Note, configuration files will follow an inheritance. * 1. Default values -* 2., optional FOXBIN2PRG.CFG in folder of FOXBIN2PRG.EXE -* or, if defined, a config file given by a parameter calling FOXBIN2PRG -* if used, the AllowInheritance setting controls if other config files will be evaluated -* 3., optional FOXBIN2PRG.CFG in root of working directory -* 4., optional FOXBIN2PRG.CFG in every folder up to the working directory -* 5., optional Special settings per single DBF's Syntax: .dbf.cfg in tables folder) +* 2. optional FOXBIN2PRG.CFG in folder of FOXBIN2PRG.EXE, +* or, if defined, a config file given by a parameter calling FOXBIN2PRG, +* if used, the AllowInheritance setting controls if other config files will be evaluated, +* 3. optional FOXBIN2PRG.CFG in root of working directory, +* 4. optional FOXBIN2PRG.CFG in every folder up to the working directory, +* 5. optional Special settings per single DBF's Syntax:.dbf.cfg in tables folder), +* 6. Parameter calling FOXBIN2PRG.EXE. * Some Parameter calling FOXBIN2PRG.EXE overturn this settings (except Defaults) ***************************************************************************************************************** @@ -424,4 +425,4 @@ All use off this are the last four lines. But I like to keep the template (recen This project is part of [VFPX](https://vfpx.github.io/). ---- -Last changed: _2023/03/30_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file +Last changed: _2023/11/26_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file diff --git a/docs/pictures/readme.md b/docs/pictures/readme.md index 3251ad0..5f5f30c 100644 --- a/docs/pictures/readme.md +++ b/docs/pictures/readme.md @@ -9,4 +9,4 @@ This folder containes the pictures for the reworked documentation resources for - [FoxBin2Prg](../FoxBin2Prg.md) ---- -Last changed: _2023/08/26_ \ No newline at end of file +Last changed: _2021/03/03_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) diff --git a/docs/pictures/vfpxbanner_small.gif b/docs/pictures/vfpxbanner_small.gif new file mode 100644 index 0000000..55eb5d2 Binary files /dev/null and b/docs/pictures/vfpxbanner_small.gif differ diff --git a/docs/pictures/vfpxbanner_small.png b/docs/pictures/vfpxbanner_small.png new file mode 100644 index 0000000..3d53546 Binary files /dev/null and b/docs/pictures/vfpxbanner_small.png differ diff --git a/docs/pictures/vfpxpoweredby_alternative.gif b/docs/pictures/vfpxpoweredby_alternative.gif new file mode 100644 index 0000000..5708761 Binary files /dev/null and b/docs/pictures/vfpxpoweredby_alternative.gif differ diff --git a/foxbin2prg.cfg.txt b/foxbin2prg.cfg.txt index 87b0133..f01666e 100644 --- a/foxbin2prg.cfg.txt +++ b/foxbin2prg.cfg.txt @@ -1,6 +1,6 @@ *################################################################################################################ *FOXBIN2PRG.CFG configuration options: (If no values given, these are the DEFAULTS) -*Version: v1.21.00 +*Version: v1.21.01 ***************************************************************************************************************** * Note, configuration files will follow an inheritance. diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index cc3d43f..e1ae4e7 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -25,7 +25,7 @@ _LegalTrademark = "MIT License" _ProductName = "FOXBIN2PRG" _MajorVer = "1" _MinorVer = "21" -_Revision = "0" +_Revision = "1" _LanguageID = "1034" _AutoIncrement = "0" * @@ -39,14 +39,14 @@ FOR EACH loProject IN _VFP.Projects FOXOBJECT ENDFOR STRTOFILE( '', '__newproject.f2b' ) -BUILD PROJECT foxbin2prg.PJX FROM '__newproject.f2b' +BUILD PROJECT foxbin2prg.pjx FROM '__newproject.f2b' FOR EACH loProject IN _VFP.Projects FOXOBJECT loProject.Close() ENDFOR -MODIFY PROJECT 'foxbin2prg.PJX' NOWAIT NOSHOW NOPROJECTHOOK +MODIFY PROJECT 'foxbin2prg.pjx' NOWAIT NOSHOW NOPROJECTHOOK -loProject = _VFP.Projects('foxbin2prg.PJX') +loProject = _VFP.Projects('foxbin2prg.pjx') WITH loProject.FILES .ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" /> @@ -55,7 +55,7 @@ WITH loProject.FILES .ADD('foxbin2prg.dbf.cfg.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" /> .ADD('foxbin2prg.ico') && *< FileMetadata: Type="x" Cpid="0" Timestamp="0" ID="0" ObjRev="0" User="" /> .ADD('foxbin2prg.jpg') && *< FileMetadata: Type="x" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" /> - .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="546" User="" /> + .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" User="" /> .ADD('props_all.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" /> .ADD('props_checkbox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" /> .ADD('props_collection.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" /> @@ -134,7 +134,7 @@ WITH loProject ENDWITH -_VFP.Projects('foxbin2prg.PJX').Close() +_VFP.Projects('foxbin2prg.pjx').Close() *ERASE '__newproject.f2b' CD (lcCurdir) RETURN \ No newline at end of file diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 23d1a0e..eb7739b 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -1,5 +1,5 @@ #DEFINE DN_FB2PRG_VERSION 1.21 -#DEFINE DC_FB2PRG_VERSION_REAL '1.21.00' +#DEFINE DC_FB2PRG_VERSION_REAL '1.21.01' *--------------------------------------------------------------------------------------------------- * Module.........: FOXBIN2PRG.PRG - FOR VISUAL FOXPRO 9.0 @@ -321,7 +321,8 @@ * 03/09/2023 LScheffler v1.20.05 Enhancement: Inserted options to allow splitting of SCX handling from VCX * 06/09/2023 LScheffler v1.20.06 Bug Fix: Problems recreating tables (LScheffler) * 06/09/2023 LScheffler v1.20.07 Enhancement: Option to block processing of directories. If file ".FoxBin2Prg_Ignore" is existing, this directories and all subdirectries will be ignored. (Mainly set up to ignore local GoFish settings) (LScheffler) -* 20/10/2023 LScheffler v1.21.00 Problems with spanish characters in comment. (ccantrell72) +* 20/10/2023 LScheffler v1.21.00 Problems with Spanish characters in comment. (ccantrell72) +* 19/11/2023 LScheffler v1.21.01 Problems regenerating databases with splited contents due to the removed Spanish characters in comment. (LScheffler) * * *--------------------------------------------------------------------------------------------------- @@ -500,7 +501,9 @@ * 04/08/2023 KestasL Bug REPORT v1.19.78 Bin2Text: Forms with ole controls conversion error issue #95 (also: any vcx) (KestasL) * 04/08/2023 KestasL Bug REPORT v1.19.78 Codepage is lost on recreation, issue #96 (KestasL) * 28/08/2023 LScheffler Bug REPORT v1.20.00 Sometimes Language is not changed fitting to conmfig file -* 20/10/2023 ccantrell72 Bug REPORT v1.20.07 Problems with spanish characters in comment. +* 20/10/2023 ccantrell72 Bug REPORT v1.20.07 Problems with Spanish characters in comment. +* 19/09/2023 LScheffler Bug REPORT v1.21.00 Splitted database file is not regenerated. Problem with removed Spanish comment. + * * *--------------------------------------------------------------------------------------------------- @@ -14979,7 +14982,28 @@ Define Class c_conversor_prg_a_dbc As c_conversor_prg_a_bin toFoxBin2Prg.normalizeFileCapitalization( .T., lcInputFile_Class ) lcTempTxt = Filetostr( lcInputFile_Class ) - For Y = 7 To Alines( laLines, lcTempTxt ) +*!* Changed by: SF 19.11.2023 +*!* +*!* Changed by: SF
+*!* Problem with removed Spanish comment, the fixed start at line 7 failes +*!*
+*!*
+ +* For Y = 7 To Alines( laLines, lcTempTxt ) + Local; + lnHeaderEnd as number +* we just asume, Header is not longer then 9 lines + lnHeaderEnd = 10 + For Y = 1 To Alines( laLines, lcTempTxt ) + If m.Y < lnHeaderEnd Then + IF LEFT( laLines( m.Y), 23 ) = '*< FOXBIN2PRG: Version=' Then +*Header ends two lines below + lnHeaderEnd = m.Y + 2 + Endif &&LEFT( laLines( m.Y), 23 ) = '*< FOXBIN2PRG: Version=' + Loop + Endif &&m.Y < lnHeaderEnd + +*!* /Changed by: SF 19.11.2023 C_FB2PRG_CODE = C_FB2PRG_CODE + laLines(m.Y) + CR_LF Endfor diff --git a/foxbin2prg_keywords.db2 b/foxbin2prg_keywords.db2 index fe0967d..b4c8160 100644 --- a/foxbin2prg_keywords.db2 +++ b/foxbin2prg_keywords.db2 @@ -1,8 +1,7 @@ *-------------------------------------------------------------------------------------------------------------------------------------------------------- -* (ES) AUTOGENERADO - ATENCIN!! - NO PENSADO PARA EJECUTAR!! USAR SOLAMENTE PARA INTEGRAR CAMBIOS Y ALMACENAR CON HERRAMIENTAS SCM!! * (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! *-------------------------------------------------------------------------------------------------------------------------------------------------------- -*< FOXBIN2PRG: Version="1.20" SourceFile="foxbin2prg_keywords.dbf" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) +*< FOXBIN2PRG: Version="1.21" SourceFile="foxbin2prg_keywords.dbf" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) *