From 4659a32c6acc1ebf62862fe39d775f5a4fa845a6 Mon Sep 17 00:00:00 2001 From: Lutz Date: Mon, 22 Feb 2021 17:14:44 +0100 Subject: [PATCH] Better doku 6 --- Documentacion/github/FoxBin2Prg_Changes.md | 73 +++++- Documentacion/github/FoxBin2Prg_Internals.md | 231 ++++++++++++------- Documentacion/github/FoxBin2Prg_Object.md | 4 +- Documentacion/github/FoxBin2Prg_Run.md | 5 +- Documentacion/github/FoxBin2Prg_SCM.md | 52 ++++- 5 files changed, 268 insertions(+), 97 deletions(-) diff --git a/Documentacion/github/FoxBin2Prg_Changes.md b/Documentacion/github/FoxBin2Prg_Changes.md index 84bc000..23e2f94 100644 --- a/Documentacion/github/FoxBin2Prg_Changes.md +++ b/Documentacion/github/FoxBin2Prg_Changes.md @@ -1,5 +1,21 @@ -![](FoxBin2Prg Full Change History_38236) -**![](FoxBin2Prg Full Change History_vfpxreleasesmall.png) [release:Latest Release of FoxBin2prg (Download/Descarga)](116407)** +# Purpose of this document +This document is an attempt to recreate the original documentation of FoxBin2Prg out of CodePlex. +I found the documentation on [foxbin2prg](https://github.com/fdbozzo/foxbin2prg/blob/master/README.md) a bit brief. For a short what and why, see there. + +The original document was created by [Fernando D. Bozzo](https://github.com/fdbozzo) whom I like to thank for the great project. Pictures are taken from the original project. +As far as possible these are the original documents. Changes are added where functionality is changed. + +---- +![VFPX logo](https://vfpx.github.io/images/vfpxbanner_small.gif) +This project is part of VFPX. + +---- +# FoxBin2Prg - Change log +## Remark +There is no resent relase, just download or clone from gitlab. +![Picture](pictures/FoxBin2Prg_Full_Change_History_vfpxreleasesmall.png) [https://github.com/fdbozzo/foxbin2prg](https://github.com/fdbozzo/foxbin2prg) + +The changes since 2016/07/24 are a copy out of FoxBin2Prg.prg. If somebody likes to translate, feel free. ## FoxBin2Prg Full Change History @@ -9,7 +25,58 @@ It's my way of thanking them for their contribution. _**Note:** you can click on the version number for downloading this version from GitHub, or you can get all the code history directly from the GitHub repository, which is more easy to search._ -|| Rel.Date || Developer || Ver# || Details || +| Rel.Date | Developer | Ver# | Details | +| - | - | - | - | +| 21/02/2021 | Lutz Scheffler | | added option to create config file template | +| | Lutz Scheffler | | German translation improved | +| 20/02/2021 | Lutz Scheffler | | inserted option DBF_IncludeDeleted to allow including deleted records of DBF | +| 19/02/2021 | Lutz Scheffler | | inserted option DBF_BinChar_Base64 to allow processing of NoCPTrans fields in non base64 way | +| | Lutz Scheffler | | the three above are straight forward, so no extra comment ar within the code | +| 15/02/2021 | Lutz Scheffler | | inserted option ItemPerDBCCheck to split DBC processing from vcx / scx | +| | Lutz Scheffler | | inserted option RedirectFilePerDBCToMain to split DBC processing from vcx / scx | +| 14/02/2021 | Lutz Scheffler | | inserted option UseFilesPerDBC to split DBC processing from vcx / scx | +| **mods** | | | **in this fork (above)** | +| 16/02/2021 | Lutz Scheffler | | conversion prg -> vcx, files per class could create one class multiple times | +| 15/02/2021 | Lutz Scheffler | | processing directory, flush log file after loop instead of file | +| 14/02/2021 | Lutz Scheffler | | conversion prg -> dbf, fields with .NULL. value are incorectly recreated | +| | Lutz Scheffler | | minor translations | +| | Lutz Scheffler | | conversion dbf -> prg, error if only test mode (toFoxBin2Prg.l_ProcessFiles is false) | +| **fixes** | | | **in this fork (above)** | +| - | - | ---fork--- | - | +| 01/04/2020 | FDBOZZO | v1.19.51 | Bug Fix: No se respetan las propiedades de VCX/SCX con nombre "note" (Tracy Pearson) | +| | FDBOZZO | v1.19.51 | Bug Fix: La conversión de tablas falla si algún campo contiene una palabra reservada como UNIQUE (DAJU78) | +| | DH | v1.19.51 | Bug Fix: Manejo de AutoIncrement incompatible con Project Explorer (Dan Lauer) | +| | FDBOZZO | v1.19.51.6 | Bug Fix: Incompatible with VFPA (#36) (Eric Selje) | +| | RHARRIS | v1.19.51.6 | Bug Fix: Si alguno de los archivos-por-clase no tiene CR_LF al final, al ensamblar la clase se pueden superponer instrucciones de forma inválida (Ryan Harris) | +| 14/02/2019 | TRACY_P | v1.19.51.5 | Enhancement: Make FoxBin2Prg more COM friendly when using ESC key (Tracy Pearson) | +| 10/07/2018 | FDBOZZO | v1.19.51.4 | Bug Fix: El ordenamiento alfabético de los objetos de los ADD OBJECT puede causar que algunos objetos se creen en el orden erróneo, provocando comportamientos inesperados (Jochen Kauz) | +| 09/07/2018 | FDBOZZO | v1.19.51.3 | Bug Fix: Error 1098, Cannot find ... [ENDT] that closes ... [TEXT] Issue#26 when there is a field named TEXT as first line-word (KIRIDES) | +| 20/06/2018 | FDBOZZO | v1.19.51.2 | Bug Fix: Cuando se exporta un DBF que pertenece a un DBC sin eventos, falla (Jairo Argüelles/Juan C.Perdomo) | +| 05/05/2018 | SSF1&FDB | v1.19.51.1 | Bug Fix: Si se usa capitalización en la información de las vistas, entonces la información relacionada no se exporta correctamente o completamente y puede perderse (SkySurfer1) | +| 25/03/2018 | FDBOZZO | v1.19.51 | Mejora: Agregado soporte para archivos de memoria (.MEM) | +| 16/03/2018 | FDBOZZO | v1.19.51 | Mejora: Agregado soporte para archivos de macros (.FKY) | +| 15/03/2018 | FDBOZZO | v1.19.50.3 | Bug Fix: Cuando se agregan archivos de texto no-VFP, como html,css,etc, en la sección de Text del proyecto, FoxBin2Prg no mantiene esta selección al regenerar el PJX, dejándolos en la sección Files (Darko Kezic) | +| 12/03/2018 | FDBOZZO | v1.19.50.1 | Bug Fix: Cuando se usa la equivalencia "extension: pj2=pjm" se debe manejar el pjm como un pj2 y no como un pjm de SourceSafe (Darko Kezic) | +| 03/03/2018 | FDBOZZO | v1.19.50 | Mejora: Permitir exportar a texto la información de DBFs cuya apertura está protegida por eventos del DBC | +| | FDBOZZO | v1.19.50 | Mejora: Nueva opción de configuración "PRG_Compat_Level": 0=Legacy, 1=Usar HELPSTRING para comentarios de métodos de clase en vez de "&&" | +| | FDBOZZO | v1.19.50 | Mejora: La información DevInfo de los PJX estará inhabilitada por defecto y se podrá activar con el nuevo switch BodyDevInfo | +| 30/01/2018 | FDBOZZO | v1.19.49.8 | Bug Fix: Cuando se convierte a texto una libreria corrupta con registros duplicados, se genera el error "The specified key already exists" (Kirides) | +| 11/01/2018 | FDBOZZO | v1.19.49.7 | Bug Fix: Cuando se convierte la estructura de un DBF puede dar error si existe un campo llamado I o X (Francisco Prieto) | +| 04/01/2018 | FDBOZZO | v1.19.49.6 | Bug Fix vcx/scx: Cuando se regenera la propiedad \_MemberData se agregan CR/LF por cada miembro, pudiendo provocar un error de "valor muy largo" (Doug Hennnig) | +| | FDBOZZO | v1.19.49.6 | Bug Fix vcx/scx: FoxBin2Prg debería ignorar los registros que el diseñador de FoxPro ignora (Doug Hennig) | +| 20/12/2017 | DH&FDBOZZO | v1.19.49.5 | Bug Fix dbf: Cuando se importan datos de un DB2 a DBF (con DBF_Conversion_Support = 8), los tabs al inicio de los memo se pierden (Doug Hennig) | +| 04/12/2017 | FDBOZZO | v1.19.49.4 | Cuando se usa ClassPerFile an Modo API y se importan clases simples, a veces sus nombres se toman sin comillas, provocando errores (Lutz Scheffler) | +| 03/12/2017 | JS&FDBOZZO | v1.19.49.3 | Bug Fix db2: Los campos "Double" asumen 2 decimales cuando se definen con 0 decimales (Jerry Stager) | +| 02/12/2017 | FDBOZZO | v1.19.49.2 | Bug Fix tx2 v1.19.49: No exporta los objetos a TX2 cuando se usa ClassPerFile (Lutz Scheffler) | +| 25/06/2017 | FDBOZZO | v1.19.49.1 | Bug Fix tx2 v1.19.49: El campo DEVINFO usado en los PJX se estaba usando en los demás binarios, dando errores | +| 12/04/2017 | DH&FDBOZZO | v1.19.49 | Bug Fix & Report pjx: No se estaba guardando el campo User en los archivos PJX (Doug Hennig) | +| 11/04/2017 | FDBOZZO | v1.19.49 | Mejora cfg : En modo objeto permitir indicar un objeto CFG en lugar de un archivo CFG (Lutz Scheffler) | +| | FDBOZZO | v1.19.49 | Bug Fix frx: Cuando dentro de una expresión se usa "&&", se corrompe el registro del FRX generado (Alejandro A Sosa) | +| 28/03/2017 | FDBOZZO | v1.19.49 | Mejora vcx: Implementada sintaxis para importar o exportar clases individuales usando "classlibrary.vcx::classname::import" y "classlibrary.vcx::classname::export" | +| 26/03/2017 | FDBOZZO | v1.19.49 | Mejora cfg: Se permite indicar un archivo CFG por parámetro de cualquier directorio para anular los CFG predeterminados de los subdirectorios, para casos especiales donde sea necesario | +| 25/03/2017 | FDBOZZO | v1.19.49 | Mejora vcx: Poder importar una clase (VC2 generado con ClassPerFile) en un VCX existente (Lutz Scheffler) | +| 23/03/2017 | FDBOZZO | v1.19.49 | Bug Fix vcx: No funciona la generación de una clase individual con "classlib.vcx::classname" (Lutz Scheffler) | +| - | - | ---from github--- |- | | 2016/07/24 (dl=2342+32) | FDBOZZO | [v1.19.48](https://github.com/fdbozzo/foxbin2prg/archive/v1.19.48.zip) | **Bug Fix**: ControlSource of OLE Objects containing quotes are not well regenerated from FR2 (Nathan Brown) | | | FDBOZZO | Preview-5 | **Bug Fix**: 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) | | | FDBOZZO | Preview-4 | **Defect Fix**: When fixing the multi-line memo bug, introduced a new defect on which a single-line memo is not decoded correctly (Nathan Brown) | diff --git a/Documentacion/github/FoxBin2Prg_Internals.md b/Documentacion/github/FoxBin2Prg_Internals.md index c36179a..df72c10 100644 --- a/Documentacion/github/FoxBin2Prg_Internals.md +++ b/Documentacion/github/FoxBin2Prg_Internals.md @@ -28,7 +28,9 @@ like PlasticSCM, Git, Subversion, and the like. Special remark on Merge operation is made, because it is the most difficult and more used operation when working with SCM tools, and this require that generated text files can be manipulated manually or automatically. -_**Note: You came from Visual SourceSafe and have the .pjm but not the real pjx project?**_ +#### Note: +**You came from Visual SourceSafe and have the .pjm but not the real pjx project?** + No problem, just convert the .pjm to .pjx/.pjt sending to FoxBin2Prg, and it generates the real project again. ## Configuration file It is possible to create a template with all options and comments via `FoxBin2Prg.EXE -c cOutputFile`. See [command line](./FoxBin2Prg_Run.md). @@ -38,40 +40,40 @@ These are the FoxBin2Prg.cfg configuration file settings and their meaning: | FoxBin2Prg.cfg keywords | Value (_Default_) | Description | | ----- | ----- | ----- | -| extension: xx2 | | FoxBin2Prg extensions ends in '2' (pj2, vc2, sc2, etc), but you can change that. For example you can change pj2 to pja using this: "extension: pj2=pja" for making it SourceSafe (sccapi v1) compatible | +| extension: xx2 | | FoxBin2Prg extensions ends in '2' (pj2, vc2, sc2, etc), but you can change that.
For example you can change pj2 to pja using this: "extension: pj2=pja" for making it SourceSafe (sccapi v1) compatible | | DontShowProgress | 0 | **Deprecated**. Replaced by ShowProgressbar option from v1.19.40 | -| ShowProgressbar | 0, _1_, 2 | 1=Always show a progress bar, 2=Only show it when processing multiple-files, 0=Don't show progressbar | -| DontShowErrors | _0_, 1 | By default, show message errors in a modal messagebox. Specify "1" if don't want to show errors | +| ShowProgressbar | 0, _1_, 2 | 1=Always show a progress bar,
2=Only show it when processing multiple-files,
0=Don't show progressbar | +| DontShowErrors | _0_, 1 | By default, show message errors in a modal messagebox.
Specify "1" if don't want to show errors | | NoTimestamps | 0, _1_ | By default, timestamp fields are cleared on _Text_ files, because a lot of differencies are generated on binaries and _Text_ files with Timestamps activated. This timestamp field is part of the vcx, scx and other Foxpro binary source code files | -| Debug | _0_, 1, 2 | By default, don't generate individual .Log with process hints. Activate with "1" to find possible error causes and for debugging, "2" is special logging | -| ExtraBackupLevels | 0, _1_, n | By default, one .BAK file is created. With this setting you can make more .N.BAK files, or none at all using 0 | -| ClearUniqueID | 0, _1_ | 0=Keep UniqueID, 1=Clear Unique ID. Very useful for Diff and Merge. By default, UniqueID fields are cleared on _Text_ files, because a lot of differencies are generated with UniqueID activated | -| OptimizeByFilestamp | _0_, 1 | 0=Don't optimize (always regenerate), 1=Optimize (regenerate only when destination filestamp es older). By default this optimization is deactivated, and it is not recommended if using for merge, so _Bin_ and _Text_ files can be modified seperately | -| RemoveNullCharsFromCode | 0, _1_ | 1=Drop NULL chars from source code / 0=Leave NULLs in source code | -| RemoveZOrderSetFromProps | _0_, 1 | 1=Remove ZOrderSet from the properties / 0=Leave ZOrderSet in the properties | +| Debug | _0_, 1, 2 | By default, don't generate individual .Log with process hints.
Activate with "1" to find possible error causes and for debugging,
"2" is special logging | +| ExtraBackupLevels | 0, _1_, n | By default, one _filename_.BAK file is created.
With this setting you can make more _filename_.n.BAK files,
or none at all using 0 | +| ClearUniqueID | 0, _1_ | 0=Keep UniqueID,
1=Clear Unique ID.
Very useful for Diff and Merge. By default, UniqueID fields are cleared on _Text_ files, because a lot of differencies are generated with UniqueID activated | +| OptimizeByFilestamp | _0_, 1 | 0=Don't optimize (always regenerate),
1=Optimize (regenerate only when destination filestamp es older). By default this optimization is deactivated, and it is not recommended if using for merge, so _Bin_ and _Text_ files can be modified seperately.
Dangerous while working with branches! | +| RemoveNullCharsFromCode | 0, _1_ | 1=Drop NULL chars from source code,
0=Leave NULLs in source code | +| RemoveZOrderSetFromProps | _0_, 1 | 1=Remove ZOrderSet from the properties,
0=Leave ZOrderSet in the properties | | XXX_Conversion_Support | n | Defines the conversion operation per filetype | -| | | For code:
0=No support, 1=Generate (Diff), 2=Generate _Text_ ond _Bin_ (Merge) | -| | | For complex data:
(PJX / DBC / DBF): 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) | -| PJX_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional ((Merge/Only Structure!), 4=Generate _Text_ with DATA (Diff), 8=Export and Import DATA (Merge/Structure & Data) and bin) support activated | +| | | For code:
0=No support,
1=Generate (Diff),
2=Generate _Text_ ond _Bin_ (Merge) | +| | | For complex data:
(PJX / DBC / DBF): 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) | +| PJX_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional ((Merge/Only Structure!),
4=Generate _Text_ with DATA (Diff), 8=Export and Import DATA (Merge/Structure & Data) and bin) support activated | | VCX_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional (_Text_ and bin) support activated | | SCX_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional (_Text_ and bin) support activated | | FRX_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional (_Text_ and bin) support activated | | LBX_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional (_Text_ and bin) support activated | | MNX_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional (_Text_ and bin) support activated | | DBC_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional (_Text_ and bin) support activated | -| DBF_Conversion_Support | 0, _1_, 2, 4, 8 | Default value is 1 - just _Text_ support activated. The support for regenerating DBFs structures (value = 2) are disabled by default to not overrite data accidentally. When activating bidirectional support, keep in mind that Data is not restored, just the structure and indexes!. A value of 4 is used to export Structure and Data, but exported data is not imported again. A value of 8 is used for bidirectional support (No General fields!). | -| DBF_Conversion_Included | * | If DBF_Conversion_Support:4, you can specify multiple filemasks: www,fb2p_free.dbf. See below. | -| DBF_Conversion_Excluded | | If DBF_Conversion_Support:4, you can specify multiple filemasks: www,fb2p_free.dbf See below. | -| UseFilesPerDBC | _0_, 1 | 0=One database dc2 file, 1=Multiple file.\*.\*.dc2 files -| | | 0 creates only a file.dc2 with all DBC (file) data -| | | 1 creates a file.dc2 with DBC properties -| | | and additional DBC files per DBC item (stored-proc, table, ..) -| | | Note: recration only if RedirectFilePerDBCToMain is 1 -| RedirectFilePerDBCToMain | _0_, 1 | 0=Don't redirect to file.dc2, 1=Redirect to file.tx2 when selecting file.item.*.dc2 -| ItemPerDBCCheck | _0_, 1 | 0=Don't check file.item.*.dc2 inclusion, 1=Check file.item.*.dc2 inclusion -| DBF_BinChar_Base64 | 0, _1_ | 0=For character type fields, if NoCPTrans 0=do not transform, 1=use Base64 transform (default) -| DBF_IncludeDeleted | _0_, 1 | 0=Do not include deleted records (default), 1=Include deleted records -| UseClassPerFile | _0_, 1 | 0=One library _Text_ file, 1=Multiple file.class.vc2 files, 2=Multiple file.baseclass.class.vc2 files| +| DBF_Conversion_Support | 0, _1_, 2, 4, 8 | Default value is 1 - just _Text_ support activated.
The support for regenerating DBFs structures (value = 2) are disabled by default to not overrite data accidentally. When activating bidirectional support, keep in mind that Data is not restored, just the structure and indexes!.
A value of 4 is used to export Structure and Data, but exported data is not imported again.
A value of 8 is used for bidirectional support (No General fields!).
**Note:** This can be [changed per table](#configuration-file-per-table). | +| DBF_Conversion_Included | * | If DBF_Conversion_Support:4, you can specify multiple filemasks: www,fb2p_free.dbf.
See [Order and range of records](#order-and-range-of-records). | +| DBF_Conversion_Excluded | | If DBF_Conversion_Support:4, you can specify multiple filemasks: www,fb2p_free.dbf.
See [Order and range of records](#order-and-range-of-records). | +| UseFilesPerDBC | _0_, 1 | 0=One database dc2 file, 1=Multiple file.\*.\*.dc2 files.
See [Create File-Per-DBC](#create file-per-dbc) | +| | | 0 creates only a file.dc2 with all DBC (file) data | +| | | 1 creates a file.dc2 with DBC properties | +| | | and additional DBC files per DBC item (stored-proc, table, ..) | +| | | Note: recration only if RedirectFilePerDBCToMain is 1 | +| RedirectFilePerDBCToMain | _0_, 1 | 0=Don't redirect to file.dc2, 1=Redirect to file.tx2 when selecting file.item.*.dc2 | +| ItemPerDBCCheck | _0_, 1 | 0=Don't check file.item.*.dc2 inclusion, 1=Check file.item.*.dc2 inclusion | +| DBF_BinChar_Base64 | 0, _1_ | 0=For character type fields, if NoCPTrans 0=do not transform, 1=use Base64 transform (default)
**Note:** This can be [changed per table](#configuration-file-per-table). | +| DBF_IncludeDeleted | _0_, 1 | 0=Do not include deleted records (default), 1=Include deleted records
**Note:** This can be [changed per table](#configuration-file-per-table). | +| UseClassPerFile | _0_, 1 | 0=One library _Text_ file, 1=Multiple file.class.vc2 files, 2=Multiple file.baseclass.class.vc2 files
See [Create Class-Per-File](#create-class-per-file) | | RedirectClassPerFileToMain | _0_, 1 | 0=Don't redirect to file.vc2, 1=Redirect to file.vc2 when selecting file.class.vc2 | | ClassPerFileCheck | _0_, 1 | 0=Don't check file.class.vc2 inclusion, 1=Check file.class.vc2 inclusion | | ClearDBFLastUpdate | 0, _1_ | 0=Keep DBF LastUpdate, 1=Clear DBF LastUpdate. Useful for Diff, minimizes differences. | @@ -87,11 +89,11 @@ These are the Table.dbf.cfg configuration file settings and their meaning: | FoxBin2Prg.cfg keywords | Value | Description | | ----- | ----- | ----- | -| 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) | -| DBF_Conversion_Order | c_Expression | | Field expresion. ie: name+str(age,3) | -| DBF_Conversion_Condition | c_Expression | Logical expression. ie: age > 10 AND NOT DELETED() | -| DBF_BinChar_Base64 | 0, 1 | 0=For character type fields, if NoCPTrans 0=do not transform, 1=use Base64 transform | -| DBF_IncludeDeleted | 0, 1 | 0=Do not include deleted records, 1=Include deleted records | +| 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) | +| DBF_Conversion_Order | c_Expression | Field expresion (For _INDEX ON_). ie: name+str(age,3),
Empty means no sort order.
usefull only if _DBF_Conversion_Support_>0 | +| DBF_Conversion_Condition | c_Expression | Logical expression (For _SCAN FOR_). ie: age > 10 AND NOT DELETED(),
empty means all files, except _DBF_IncludeDeleted_
usefull only if _DBF_Conversion_Support_>0 | +| DBF_BinChar_Base64 | 0, 1 | 0=For character type fields, if NoCPTrans 0=do not transform,
1=use Base64 transform
usefull only if _DBF_Conversion_Support_>2 | +| DBF_IncludeDeleted | 0, 1 | 0=Do not include deleted records,
1=Include deleted records
usefull only if _DBF_Conversion_Support_>2 | For defaults, see [Configuration file](#configuration-file). @@ -104,20 +106,21 @@ _Text_ files keep lists of objects and their metadata in a special OBJECTDATA ta in which the order of the list is the ZOrder of the object, like this example: ```` DEFINE CLASS cnt_controls AS container && "cnt_controls" class description - *< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" /> + *< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" /> - *-- OBJECTDATA items order determines ZOrder - *< OBJECTDATA: ObjPath="Check2" UniqueID="" Timestamp="" /> - *< OBJECTDATA: ObjPath="Check4" UniqueID="" Timestamp="" /> - *< OBJECTDATA: ObjPath="Label_h" UniqueID="" Timestamp="" /> - *< OBJECTDATA: ObjPath="Textbox_h" UniqueID="" Timestamp="" /> - *< OBJECTDATA: ObjPath="Check1" UniqueID="" Timestamp="" /> - *< OBJECTDATA: ObjPath="Check3" UniqueID="" Timestamp="" /> + *-- OBJECTDATA items order determines ZOrder + * < OBJECTDATA: ObjPath="Check2" UniqueID="" Timestamp="" /> + * < OBJECTDATA: ObjPath="Check4" UniqueID="" Timestamp="" /> + * < OBJECTDATA: ObjPath="Label_h" UniqueID="" Timestamp="" /> + * < OBJECTDATA: ObjPath="Textbox_h" UniqueID="" Timestamp="" /> + * < OBJECTDATA: ObjPath="Check1" UniqueID="" Timestamp="" /> + * < OBJECTDATA: ObjPath="Check3" UniqueID="" Timestamp="" /> ```` - This way, you can rearrange the items to alter their ZOrder, and this does auto-renumbering when regenerating binaries. ### RemoveZOrderSetFromProps setting -_**Note:** The ZOrderSet property is not shown in VFP Properties editor_ +#### Note: +The ZOrderSet property is not shown in VFP Properties editor. + Starting at v1.19.43 there is a new configuration setting named RemoveZOrderSetFromProps, that can be used to automatically remove this property from the objects, if enabled with 1. This property keep the order of the inherited controls used on visual classes using a numeric value like the Tabstop property, @@ -125,7 +128,9 @@ but this property is not shown to the user and sometimes their value is duplicat or form, some control(s) get their order swapped, so when reopening the visual class some objects that should appear on top are on botton and vice versa. -_**VFP ZOrder bug and fix:** Sometimes you can see that some objects are reordered every time you save a visual form/class +##### VFP ZOrder bug and fix: +Sometimes you can see that some objects are reordered every time you save a visual form/class + and regenerate the _Text_ file. This is caused because in some situations VFP can loose the tracking to some ZOrders, and duplicate them. To **fix** this problem, you just need to open your visual form/class, reorder manually the offending objects to force VFP to assign a new ZOrder value and regenerate the _Text_ file. @@ -133,6 +138,7 @@ You can see (only in the _Text_ file or inside the vcx/vct) that the property is before fixing it. Another solution, starting at v1.19.43, is using RemoveZOrderSetFromProps:1 in foxbin2prg.cfg file to remove this from the properties. A better solution is using this setting only in a specific directory used to fix this kind of problems. In any case, for this setting to work properly, you need to regenerate the binary_ + ### DBC ordered fields Starting from v1.19.42 the members of the DBC are ordered alphabetically, including fields of DBFs and Views, Connections, Tables, Views and Relations. All this to minimize the differences when diffing DBCs that have constant changes. @@ -180,7 +186,10 @@ and open it as a table to see all the properties of all the classes of the same For these two cases, and starting from v1.19.22, I've created several `"props_*"` files with ordering by class for the 1st case, and a list with all in it (`"props_all.txt"`) for the second case, so in case of any problems, rearranging some props will be an easy thing. -_**Warning:** These `"props_**"` files are necessary in the foxbin2prg install directory. + +#### Warning: +These `"props_**"` files are necessary in the foxbin2prg install directory. + It's recommended to use the EXE version that have all files included and is faster._ Several Unit Tests (in TESTS directory) are made to make the best effort to cover the most typical use cases. There is also an Excel spreedsheet with the compilation of properties of each class with the order that FoxPro uses internally, @@ -211,10 +220,11 @@ could be using the default setting **`"DBF_Conversion_Support: 1"`** and using * and some tables with their data exported for easy diffing with previous versions, or even use **`"DBF_Conversion_Support: 8"`** (available since v1.19.47) for bidirectional support of data import/export. -**FoxBin2prg.cfg (Main CFG or Directory CFG)** +### Order and range of records +**FoxBin2prg.cfg (Main CFG, Directory CFG or Table CFG)** New foxbin2prg.cfg options for filtering tables from conversion using one or multiple conbinations of filemasks. -**Syntax:** +##### Syntax: ```` "DBF_Conversion_Included: [ , [ , ... ](-,_filemask_-[-,-...-) ]" "DBF_Conversion_Excluded: [ , [ , ... ](-,_filemask_-[-,-...-) ]" @@ -225,17 +235,19 @@ Example of multiple file masks (separte with ","): "DBF_Conversion_Included: PET**.**, ??ME.DBF, ???.DBF, ?.**" ```` -**New configuration options** +### Configuration per table +New configuration options. See [Configuration file per table](#configuration-file-per-table). + These options can be used in any combination inside a dbf particular cfg file, if you create a text file using your dbf filename and adding ".cfg". -**Syntax for filename.dbf.cfg contents:** +#### Syntax for filename.dbf.cfg contents: ```` "DBF_Conversion_Support: <4 for export only or 8 for bidirectional support>" "DBF_Conversion_Order: " "DBF_Conversion_Condition: " ```` -**Example: customers.dbf.cfg** +#### Example: customers.dbf.cfg ```` "DBF_Conversion_Support: 4" "DBF_Conversion_Order: cust_no" @@ -249,7 +261,7 @@ is converted to DBF. The main purpose of FoxBin2Prg is to be used for Diff and Merge with a SCM tool, so in this scenario the data is not needed, but there are use cases where exporting, importing or manipulating data is needed while making the conversions, and for those cases are this properties. -This is a sample program: +#### This is a sample program: ```` *-- DEMO HOOK FOR PROCESSING DBFs AND DB2 LOCAL oFB AS 'c_foxbin2prg' OF 'c:\desa\foxbin2prg\foxbin2prg.prg' @@ -284,13 +296,17 @@ ENDPROC ### Language Support for messages As for version v1.19.38 FoxBin2Prg messages are available natively on Spanish, English, German and French. -_**Note:** The messages on vbs scripts are not translated (are very few), just the FoxPro ones, -which have +90% of the messages._ + +#### Note: +The messages on vbs scripts are not translated (are very few), just the FoxPro ones, +which have +90% of the messages. + **Want to collaborate translating the messages to your language so others can use it?** Just copy the english translation CASE in the final section in FoxBin2Prg.PRG to a new CASE with your country code and translate the messages (can be done in 20 minutes or less), and send it to me. I will include it in the next release ;-) -_**Note:** .h language files are not supported anymore, and are now implemented inside foxbin2prg, +#### Note: +.h language files are not supported anymore, and are now implemented inside foxbin2prg, in the `"C_LANG"` class at the end of the PRG_ ### Multi-config (config per directory) @@ -298,7 +314,8 @@ Starting at version v1.19.25 FoxBin2Prg allow configuration per directory, overriding the main configuration of FoxBin2Prg directory. The override is by each setting, so you can reconfigure one or more settings and the remaining settings are inherited from main CFG. -_**New:**_ From v1.19.42 CFGs are inherited between directories from parent to child, +#### New: +From v1.19.42 CFGs are inherited between directories from parent to child, so if you have all your developments under, let's say, `"c:\devs"` directory and subdirs, de CFG in `"c:\devs"` will be inherited on subdirs, and settings can be overriden one by one if you want to. This inheritance saves a lot of time and minimizes the CFGs needed `":)"` @@ -322,13 +339,11 @@ Debug messages are translated (+90% of debug messages), but capitalization proce and are available just in Spanish (-10% of debug messages). ### Create Class-Per-File - Starting at v1.19.37 you can configure foxbin2prg to generate one class per file using TwoFox naming style "basefile.class.vc2" with the value "1" To configure this, you must first enable it in foxbin2prg.cfg file: ```` -*UseClassPerFile: 1 && 0=One library _Text_ file, 1=Multiple file.class.vc2 files, 2=Multiple file.baseclass.class.vc2 files, -including DBC members +*UseClassPerFile: 1 && 0=One library _Text_ file, 1=Multiple file.class.vc2 files, 2=Multiple file.baseclass.class.vc2 files ```` In example, if you have a classlib "mylib.vcx" with 3 classes inside (`"cl_1, cl_2, cl_3"`) then this files are generated: @@ -337,8 +352,10 @@ In example, if you have a classlib "mylib.vcx" with 3 classes inside (`"cl_1, cl - mylib.cl_2.vc2 - mylib.cl_3.vc2 -_**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" and including DBC members as well. +#### 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, @@ -358,16 +375,55 @@ mydbc.connection.cnx_oracle.dc2 mydbc.table.customers.dc2 mydbc.view.vw_products.dc2 ```` -**Complementary options for the UseClassPerFile setting** +#### Complementary options for the UseClassPerFile setting -_**RedirectClassPerFileToMain**:_ Configuring this setting to 1 will redirect any selection of file.class.vc2 +##### RedirectClassPerFileToMain: +Configuring this setting to 1 will redirect any selection of file.class.vc2 to the main file.vc2 file, which will not let you generate individual vcx files by mistake. -_**ClassPerFileCheck**:_ Configuring this setting to 1 will check the inclusion of all file.class.vc2 files + +##### ClassPerFileCheck: +Configuring this setting to 1 will check the inclusion of all file.class.vc2 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) -_**Note:** If you dont use the Redirect setting, an individual vcx/scx file will be generated. + +#### Note: +If you dont 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: +This is true for SCX files as well. SCX Files may contain a form and a dataenvironment. +It will create sc2 files. + +### Create File-Per-DBC + +Starting at vn.nn.nn you can configure foxbin2prg to generate one 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 dont 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, @@ -416,10 +472,10 @@ loCnv.evaluateConfiguration( '', '', '', '', '', '', '', '', , 'D' ) ? loCnv.hasSupport_Bin2Prg("\file.vcx") ? loCnv.hasSupport_Bin2Prg("\file.ppt") ```` -_**Note:** If you query for support in different subdirectories, +#### 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() @@ -430,7 +486,8 @@ oCFG = loCnv.get_DirSettings( "c:\developments\projects\myproj_1" ) ? oCFG.n_UseClassPerFile ? oCFG.DBF_Conversion_Support ```` -_**Note:** `"get_DirSettings()"` method internally calls `"evaluateConfiguration()"` +#### Note: +`"get_DirSettings()"` method internally calls `"evaluateConfiguration()"` method for refreshing the CFG info before returning the CFG object._ @@ -449,25 +506,24 @@ FOR I = 1 TO oMod.Count && oMod.Count is the total count of files in the PJX ENDFOR ```` - 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 | -| conversionSupportType | loCnv.conversionSupportType( cFilename ) | Return de 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 | cExt ) | Returns .T. if there is support for converting the file or filetype indicated to text | -| hasSupport_Prg2Bin | loCnv.hasSupport_Prg2Bin( cFilename.ext | 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 foxbin 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 | +| 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 | +| **conversionSupportType**
loCnv.conversionSupportType( cFilename ) | Return de 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 foxbin 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 | This is the translation table of old method names up to v1.19.41 and the new names: @@ -480,7 +536,8 @@ This is the translation table of old method names up to v1.19.41 and the new nam | 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_ +#### 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 @@ -515,7 +572,8 @@ and checkin because a merge operation. 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 regenerate the _Text_ files +just for the changed binaries+, and once you have all the boundles of bins/_Text_, you checkin them. -_**Note:** If any binary doesn't have the corresponding _Text_ file, +#### Note: +If any binary doesn't have the corresponding _Text_ file, it can be because it is in use (close opened bin 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 @@ -526,9 +584,12 @@ When you merge a branch, you work on _Text_ files seeing and merging differences When you have done with the merge you need to checkin, but before this, you need to regenerate 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 bins/_Text_. -_**Note:** If at the end of a merge operation there are binaries left, you need to choose the "workspace binaries", +#### Note: +If at the end of a merge operation there are binaries left, you need to choose the "workspace binaries", because anyway you will regenerate 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-and-use-with-SCM-tools)** +---- +Last changed: _Pungenday, 53 Chaos 3187_ \ No newline at end of file diff --git a/Documentacion/github/FoxBin2Prg_Object.md b/Documentacion/github/FoxBin2Prg_Object.md index 2107c8f..c07bcc9 100644 --- a/Documentacion/github/FoxBin2Prg_Object.md +++ b/Documentacion/github/FoxBin2Prg_Object.md @@ -65,7 +65,7 @@ Some settings will overwrite configuration. Using an object as cCFG_File will ov | cNoTimestamps | 0, _1_ | Indicates if timestamp must be cleared ('1' or empty) or not ('0') | | cBackupLevels | 0, _1_, .. | "0" no Bakup, "1", one level _filename_.bak, "n" n levels of Backup _filename_.n.bak | | cClearUniqueID | 0, _1_ | 0=Keep UniqueID in text files, 1=Clear Unique ID. Useful for Diff and Merge | -| cOptimizeByFilestamp | _0_, 1 | 1=Optimize file regeneration depending on file timestamp. Dangerous while working with branches! | +| cOptimizeByFilestamp | _0_, 1 | 1=Optimize file regeneration depending on file timestamp.
Dangerous while working with branches! | | cCFG_File | filename | Indicates a CFG filename for not using the default on foxbin2prg directory or path. | | | object | An object containing configuration options to use. See [Internals](./FoxBin2Prg_Internals.md) for object creation. | #### Note #1 @@ -79,3 +79,5 @@ The _BIN2PRG, PRG2BIN, INTERACTIVE, SHOWMSG_ cTypes might be mixed freely like: ## Return values Return value is 0=OK, 1=Error. +---- +Last changed: _Pungenday, 53 Chaos 3187_ \ No newline at end of file diff --git a/Documentacion/github/FoxBin2Prg_Run.md b/Documentacion/github/FoxBin2Prg_Run.md index 94dab43..c7be3c1 100644 --- a/Documentacion/github/FoxBin2Prg_Run.md +++ b/Documentacion/github/FoxBin2Prg_Run.md @@ -124,4 +124,7 @@ Name------------------------ Right-click/Properties/destination----------- FoxBin2Prg - Binary2Text.lnk \foxbin2prg.exe "BIN2PRG-SHOWMSG" FoxBin2Prg - Text2Binary.lnk \foxbin2prg.exe "PRG2BIN-SHOWMSG" FoxBin2Prg.lnk \foxbin2prg.exe "INTERACTIVE-SHOWMSG" -``` \ No newline at end of file +``` + +---- +Last changed: _Pungenday, 53 Chaos 3187_ \ No newline at end of file diff --git a/Documentacion/github/FoxBin2Prg_SCM.md b/Documentacion/github/FoxBin2Prg_SCM.md index 1c33b67..ae24ab0 100644 --- a/Documentacion/github/FoxBin2Prg_SCM.md +++ b/Documentacion/github/FoxBin2Prg_SCM.md @@ -1,15 +1,45 @@ +# Purpose of this document +This document is an attempt to recreate the original documentation of FoxBin2Prg out of CodePlex. +I found the documentation on [foxbin2prg](https://github.com/fdbozzo/foxbin2prg/blob/master/README.md) a bit brief. For a short what and why, see there. + +The original document was created by [Fernando D. Bozzo](https://github.com/fdbozzo) whom I like to thank for the great project. Pictures are taken from the original project. +As far as possible these are the original documents. Changes are added where functionality is changed. + +---- +![VFPX logo](https://vfpx.github.io/images/vfpxbanner_small.gif) +This project is part of VFPX. + +---- +# FoxBin2Prg - SCM +## Remark +**This is article is a stub.** If you like to use this tool with non SCM tools like [_git_](git-scm.com/), +have a look on [VFPX](https://vfpx.github.io/projects/), there are some that integrate _git_ and _FoxBin2Prg_ into VFP IDE. + ## First, a short mention on SourceSafe For those who keep using it, I recommend running away from it to any other modern SCM out there. -Main reason is that Microsoft doesn't support it anymore, which last version was released in 2005 (Visual SourceSafe 2005, that many people didn't know of) and a lot of people keep using the version that came with Visual Studio 6, released in 1998! (more or less) +Main reason is that Microsoft doesn't support it anymore, +which last version was released in 2005 (Visual SourceSafe 2005, that many people didn't know of) and a lot of people keep using the version that came with Visual Studio 6, released in 1998! (more or less). +(It was nice in the time there was nothing different on Win, in special not this tool.) -It have a big scalability problem, doesn't guarantee the history integrity and it is not client-server, which is crucial on any modern SCM. It's simply too easy to mess with the history and delete files from it manually, or have a corrupted database because a number of reasons, as virus on some client PC, hardware problems or network problems, and in many cases this errors are irrecoverable. +It have a big scalability problem, doesn't guarantee the history integrity and it is not client-server, +which is crucial on any modern SCM. +It's simply too easy to mess with the history and delete files from it manually, +or have a corrupted database because a number of reasons, as virus on some client PC, +hardware problems or network problems, and in many cases this errors are irrecoverable. +Try to run it on a cheap NAS, it's nothing then a pain. -If, despite the warning, you have no other choice that keep using it, then you must know that FoxBin2Prg have integration with it, thanks to the configuration file foxbin2prg.cfg and the capability to change default extensions from tx2 to txa (sc2>sca, and so on). In fact you can merge binaries as you probably have never seen :-) +If, despite the warning, you have no other choice that keep using it, +then you must know that FoxBin2Prg have integration with it, +thanks to the configuration file foxbin2prg.cfg and the capability to change default extensions from tx2 to txa (sc2>sca, and so on). +In fact you can merge binaries as you probably have never seen :-) ---- -People that came from SourceSafe, often tends to think of SCM tools as repositories of code because of the limitations everybody that used SourceSafe knows, but the reality is that a SCM tool is much more than a repository of code, using a SCM tool with FoxBin2Prg you: +People that came from SourceSafe, often tends to think of SCM tools as repositories of code, +because of the limitations everybody that used SourceSafe knows, +but the reality is that a SCM tool is much more than a repository of code, +using a SCM tool with FoxBin2Prg you: * Can Manage the life cycle of an application * Can compare the binaries, using prg-style representations, to know what have changed at any time in the history of the application @@ -24,13 +54,21 @@ People that came from SourceSafe, often tends to think of SCM tools as repositor * Can be free of privative formats and use something else that can be used with more than one SCM tool. SourceSafe is the only that understand SourceSafe, so you are a prisoner * In summary, you are in control of all aspects of a VFP system and there releases and changes -This documentation is to help configure FoxBin2Prg with some modern SCM tools, beginning with the SCM tool I'm using (PlasticSCM) from middle 2013 and that I personally think is the most advanced SCM tool y know until now. +This documentation is to help configure FoxBin2Prg with some modern SCM tools, +beginning with the SCM tool I'm using (PlasticSCM) from middle 2013 +and that I personally think is the most advanced SCM tool y know until now. -In this first quick-guide I will explain what is PlasticSCM, how to configure and how to begin working with Visual FoxPro 9 projects using branch-per-task. +In this first quick-guide I will explain what is PlasticSCM, +how to configure and how to begin working with Visual FoxPro 9 projects using branch-per-task. **Part of this guide can be used with any modern SCM tool, and over time I can add documentation or links for using FoxBin2Prg with other SCM tools.** -If you already are using FoxBin2Prg with another SCM tool, feel free to share how you are using it so others can benefit. +If you already are using FoxBin2Prg with another SCM tool, +feel free to share how you are using it so others can benefit. ## > [Using FoxBin2Prg with PlasticSCM](Using-FoxBin2Prg-with-PlasticSCM) + + +---- +Last changed: _Pungenday, 53 Chaos 3187_ \ No newline at end of file