diff --git a/Documentacion/github/FoxBin2Prg_Changes.md b/Documentacion/github/FoxBin2Prg_Changes.md index 698bb02..51521f0 100644 --- a/Documentacion/github/FoxBin2Prg_Changes.md +++ b/Documentacion/github/FoxBin2Prg_Changes.md @@ -19,9 +19,7 @@ As far as possible these are the original documents. Changes are added where fun The older links point to Fernandos repository. For recent verisons see -![Picture](./pictures/FoxBin2Prg_Full_Change_History_vfpxreleasesmall.png) [Fernandos FoxBin2PRG](https://github.com/fdbozzo/foxbin2prg) -![Picture](./pictures/FoxBin2Prg_Full_Change_History_vfpxreleasesmall.png) [This fork](https://github.com/lscheffler/foxbin2prg/tree/fork_mod) -![Picture](./pictures/FoxBin2Prg_Full_Change_History_vfpxreleasesmall.png) [Just the bug fixes of this fork](https://github.com/lscheffler/foxbin2prg/tree/fork) +![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. @@ -32,6 +30,13 @@ _**Note:** you can click on the version number for downloading this version from | Rel.Date | Developer | Version | Details | | - | - | - | - | +| 2021/xx/xx | LScheffler | [v1.19.60]() | **Enhancement**: -cC options learned to create default FoxBin2Prg._cfg file | +| 2021/xx/xx | LScheffler | [v1.19.60]() | **Enhancement**: -t Option learned to create default \._cfg file, if table is open. | +| 2021/xx/xx | LScheffler | [v1.19.60]() | **Enhancement**: Handling of additional non structural index per DBF in Bin2Text and Text2Bin. See [Config per DBF](./FoxBin2Prg_Internals.md#configuration-per-table). | +| 2021/xx/xx | LScheffler | [v1.19.60]() | **Enhancement**: Debug-Logging for Index | +| 2021/xx/xx | LScheffler | [v1.19.60]() | **Bug Fix**: DBF_Conversion_Condition was read, but never used | +| 2021/xx/xx | LScheffler | [v1.19.60]() | **Bug Fix**: DBF_Conversion_Order sets an index that later would be stored as structural index | +| 2021/xx/xx | LScheffler | [v1.19.60]() | **Bug Fix**: config options with text value fail, if line comment is set | | 2021/03/09 | LScheffler | [v1.19.59]() | **Feature**: Logging of settings as settings object passed to execute method (Option debug > 0) | | 2021/03/09 | LScheffler | [v1.19.59]() | **Feature**: Added option to create config file template based on current values of a directory | | 2021/03/09 | LScheffler | [v1.19.59]() | **Bug Fix**: RedirectClassType = 2, Path was set wrong in special config | @@ -379,4 +384,4 @@ _**Note:** you can click on the version number for downloading this version from This project is part of [VFPX](https://vfpx.github.io/). ---- -Last changed: _2021/03/09_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file +Last changed: _2021/03/18_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file diff --git a/Documentacion/github/FoxBin2Prg_Internals.md b/Documentacion/github/FoxBin2Prg_Internals.md index 8aec326..9e862ca 100644 --- a/Documentacion/github/FoxBin2Prg_Internals.md +++ b/Documentacion/github/FoxBin2Prg_Internals.md @@ -11,6 +11,7 @@ As far as possible these are the original documents. Changes are added where fun ---- ## Table of contents - [Why to use this tool](#why-to-use-this-tool) +- [Limitations](#limitations) - [Configuration file](#configuration-file) - [Configuration file per table](#configuration-file-per-table) - [FoxBin2Prg Internals](#foxbin2prg-internals) @@ -66,6 +67,28 @@ and this require that generated text files can be manipulated manually or automa No problem, just convert the .pjm to .pjx/.pjt sending to FoxBin2Prg, and it generates the real project again. +## Limitations +Most of the files look like prg or XML data. Please note, those files are only look alike. +The parsing to generate the binary depends highly on the position of data. +So if a file is defined like +``` + + + I1 +``` +this +``` + I1. +``` +will be nice XML, but not readable to FoxBin2Prg. This is a line by line parser. +Leading and trailing spaces are mostly no problem. + +You might freely change and merge code inside the text files, or data in a table-XML, +but the result must be compilable and keep the structure. +All limitations that occur to a binary format must be kept on the text representation - +the definition of a HEADER class to a VCX will fail. + + ## Configuration file It is possible to create a template or a config with all options and comments via ``` @@ -147,14 +170,16 @@ The options in the template (or in the config that ships with FoxBin2Prg) are co To activate an option remove the asterix and set appropriate value. 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 _Text_ only (Diff),
2=Generate Header _Text_ and _Bin_ (Merge/Only Structure!),
4=Generate _Text_ 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 | +| FoxBin2Prg.cfg keywords | Value | per
file | Description | +| ----- | ----- | ----- | ----- | +| DBF_Conversion_Support | 0, 1, 2, 4, 8 | | 0=No support,
1=Generate Header _Text_ only (Diff),
2=Generate Header _Text_ and _Bin_ (Merge/Only Structure!),
4=Generate _Text_ with DATA (Diff),
8=Export and Import DATA (Merge/Structure & Data) | +| DBF_Conversion_Order | c_Expression | x | 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 | x | 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_IndexList | c_FileList | x | A comma delimited list of additional index files ( cdx or idx ). **Not the structural index file.** | +| 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 | +Setting **per file** could only be used via this configuration file. For defaults, see [Configuration file](#configuration-file). ## FoxBin2Prg Internals @@ -644,7 +669,7 @@ Output file (**O**), Processed (**P1**), Without Errors (**E0**), Supported (**S ## How to use with a SCM tool ### Note -This chapter is without function if the only the _Text_ files are in the source control. +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. @@ -673,10 +698,13 @@ 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) ---- ![VFPX logo](https://vfpx.github.io/images/vfpxbanner_small.gif) This project is part of [VFPX](https://vfpx.github.io/). ---- -Last changed: _2021/03/04_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file +Last changed: _2021/03/18_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file diff --git a/Documentacion/github/FoxBin2Prg_Object.md b/Documentacion/github/FoxBin2Prg_Object.md index 3d11f03..d7535f3 100644 --- a/Documentacion/github/FoxBin2Prg_Object.md +++ b/Documentacion/github/FoxBin2Prg_Object.md @@ -56,6 +56,9 @@ Some settings will overwrite configuration. Using an object as cCFG_File will ov | | * | If _cInputFile_ is a project (pj[x2]) all files of the project, **including** the pjx, will be processed. The extension defines direction of operation. | | | \*\- | If _cInputFile_ is a project (pj[x2]) all files of the project, **excluding** the pjx, will be processed. The extension defines direction of operation. | | | d, D, K, B, M, R, V | SCCAPI (SCCTEXT.PRG) compatibility mode, query the conversion support for the file type specified
Types: d=DBC, D=DBF, K=Form, B=Label, M=Menu, R=Report, V=Class | +| | -C | Create configuration file \ or, if first parameter is empty, FoxBin2Prg._cfg in default folder. With recent values. | +| | -c | Create configuration file template \ or, if first parameter is empty, FoxBin2Prg._cfg in default folder. With inactive default values. | +| | -t | Create per-table configuration file template or, if first parameter is empty and a table open, \._cfg in table folder. With inactive default values. | | cTextName | Text filename. | Only for SCCAPI (SCCTEXT.PRG) compatibility mode. File to use. | | lGenText | .T., .F. | Only for SCCAPI (SCCTEXT.PRG) compatibility mode. .T.=Generates Text, .F.=Generates Binary.
**Note:** _cType_ have predominance over _lGenText_ | | cDontShowErrors | _0_, 1 | '1' for NOT showing errors in MESSAGEBOX | @@ -90,6 +93,7 @@ The _BIN2PRG, PRG2BIN, INTERACTIVE, SHOWMSG_ cTypes might be mixed freely like: #### Note - The swap of _cInputFile_ and _cType_ is not possible here. +- If cType is -cCt, then only the first both parameters are allowed. - Setting _cInputFile_ and _cType_ appropriate, info screen and generation of configuration templates is possible too. See [command line](./FoxBin2Prg_Run.md#usage_1) - While possibe, the SCCAPI (SCCTEXT.PRG) compatibility mode is more an idea of the [command line](./FoxBin2Prg_Run.md). @@ -101,4 +105,4 @@ Return value is 0=OK, 1=Error. This project is part of [VFPX](https://vfpx.github.io/). ---- -Last changed: _2021/03/09_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file +Last changed: _2021/03/18_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file diff --git a/Documentacion/github/FoxBin2Prg_Run.md b/Documentacion/github/FoxBin2Prg_Run.md index a9cde06..361720e 100644 --- a/Documentacion/github/FoxBin2Prg_Run.md +++ b/Documentacion/github/FoxBin2Prg_Run.md @@ -107,14 +107,16 @@ on which fixed parameters must be in the shortcut. The filename is an external variable parameter received when SendingTo FoxBin2Prg with right-click on File Manager. ### Usage 2 -`FoxBin2Prg.EXE [-c cOutputFile] [-C cOutputFile] [-t cOutputFile]` +`FoxBin2Prg.EXE [-cCt [cOutputFile]]` | Parameter | Description | | ----- | ----- | | none | Call Info screen | | -c | creates a template config-file _cOutputFile_ ( like FOXBIN2PRG.CFG ) | | -C | creates a config-file _cOutputFile_ ( like FOXBIN2PRG.CFG ) with the recent options used on the path of cOutputFile | +| | If cOutputFile is empty, a file FOXBIN2PRG._CFG will be created in default foder. | | -t | creates a template table-config-file _cOutputFile_ ( like _TableName_.dbf.cfg ) | +| | If cOutputFile is empty and a table is open is workarea, a file \._CFG will be created in table foder. | ## Return values Return value via _ErrorLevel_ is 0=OK, 1=Error. @@ -163,4 +165,4 @@ FoxBin2Prg.lnk \foxbin2prg.exe "INTERACTIVE-SHOWMSG" This project is part of [VFPX](https://vfpx.github.io/). ---- -Last changed: _2021/03/09_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file +Last changed: _2021/03/18_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file diff --git a/Documentacion/github/FoxBin2prg.md b/Documentacion/github/FoxBin2prg.md index f62b74e..d74ee8a 100644 --- a/Documentacion/github/FoxBin2prg.md +++ b/Documentacion/github/FoxBin2prg.md @@ -43,6 +43,7 @@ generating bidirectional PRG-Style versions that allow recreating the original b - Out of the _Text_ versions you can **generate the original binaries**, so it is useful as backup - The extensions are configurable if you create a FOXBIN2PRG.CFG file - Inheritance of CFG configuration files between directories +- Special configuration per table, allowing additional non structural index files, sorting and ranges of records to include - Methods and properties of _Text_ version are alphabetically sorted for easy comparison - Can set _UseClassPerFile_ setting to create individual files by class - Can set _UseFilesPerDBC_ setting to create individual files by DBC member @@ -84,4 +85,4 @@ FoxBin2Prg can be used in tree ways: This project is part of [VFPX](https://vfpx.github.io/). ---- -Last changed: _2021/03/03_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file +Last changed: _2021/03/18_ ![Picture](./pictures/vfpxpoweredby_alternative.gif) \ No newline at end of file diff --git a/README.md b/README.md index 41f8345..3d8f232 100644 --- a/README.md +++ b/README.md @@ -125,6 +125,15 @@ To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0 ## Changes See [Changes](./Documentacion/github/FoxBin2prg_Changes.md) +## Changes in 1.19.60 +* -cC options learned to create default FoxBin2Prg._cfg file +* -t Option learned to create default \._cfg file, if table is open. +* Handling of additional non structural index per DBF in Bin2Text and Text2Bin +* Debug-Logging for Index +* Bug Fix: DBF_Conversion_Condition was read, but never used +* Bug Fix: DBF_Conversion_Order sets an index that later would be stored as structural index +* Bug Fix: config options with text value fail, if line comment is set + ## Changes in 1.19.59 * Added support for writing to a different folder than the source code using a new tcOutputFolder parameter * Added a configuration item: HomeDir, which determines if HomeDir is saved in PJ2 files (the default is 1 for Yes) @@ -139,15 +148,12 @@ See [Changes](./Documentacion/github/FoxBin2prg_Changes.md) DO FOXBIN2PRG.PRG WITH "-C","template.cfg" ==> Generates a file like FoxBin2Prg.cfg config file with recent settings ``` -## Changes in 1.19.58 -* Added support for writing to a different folder than the source code using a new tcOutputFolder parameter -* Added a configuration item: HomeDir, which determines if HomeDir is saved in PJ2 files (the default is 1 for Yes) - -## Changes pre 1.19.58 +## Changes to Settings To get the new settings in config file, use the new create-a-template function: ``` -DO FOXBIN2PRG.PRG WITH "-c","template.cfg" ==> Generates a template for FoxBin2Prg.cfg config file with newest settings +DO FOXBIN2PRG.PRG WITH "-c","template.cfg" ==> Generates a template for FoxBin2Prg.cfg config file with newest default settings +DO FOXBIN2PRG.PRG WITH "-C","template.cfg" ==> Generates a template for FoxBin2Prg.cfg config file with active settings DO FOXBIN2PRG.PRG WITH "-t","template.dbf.cfg" ==> Generates a template for table.dbf.cfg per table config file with newest settings ``` @@ -172,37 +178,6 @@ The data added by _DBF_IncludeDeleted: 1_ will be ignored by old versions genera It's a good idea to have the _FoxBin2Prg.cfg_ per projekt and and source control, old commits / versions would have the old config. So the settings would fit the data and FoxBin2Prg could generate according to it. - -### Fixes -| Details | -| - | -| Added MEM and FKY options to config template and internal documentation | -| Conversion prg -> vcx, files per class could create one class multiple times | -| Processing directory, flush log file after loop instead of file | -| Conversion prg -> dbf, fields with .NULL. value are incorectly recreated | -| Minor translations | -| Conversion dbf -> prg, error if only test mode (toFoxBin2Prg.l_ProcessFiles is false) | -| DBF_Conversion_Condition, problem with macro expansion | -| Bug on special setting for import in form file[.baseclass].class.vc2 | -| Bug on RedirectClassType = 2 mixed up PATH | -| Bug on RedirectClassType = 2, UseClassPerFile = 2 failed | - -### Features - -| Details | -| - | -| [Documentation](./Documentacion/github/FoxBin2prg.md) reworked. | -| German translation improved | -| Info screen-doc improved | -| Inserted option DBF_IncludeDeleted to allow including deleted records of DBF | -| Inserted option DBF_BinChar_Base64 to allow processing of NoCPTrans fields in non base64 way | -| Inserted option OldFilesPerDBC to control split of DBC, the options below are controled by this | -| Inserted option UseFilesPerDBC to split DBC processing from vcx / scx | -| Inserted option RedirectFilePerDBCToMain to split DBC processing from vcx / scx | -| Inserted option ItemPerDBCCheck to split DBC processing from vcx / scx | -| added option to create config file template | -| New value 2 for option RedirectClassType. Alter single class for input form file[.baseclass].class.vc2 | - --- --- diff --git a/ThorUpdater/FoxBin2Prg - Kopie.zip b/ThorUpdater/FoxBin2Prg - Kopie.zip new file mode 100644 index 0000000..1b934ca Binary files /dev/null and b/ThorUpdater/FoxBin2Prg - Kopie.zip differ diff --git a/foxbin2prg.cfg.txt b/foxbin2prg.cfg.txt index 0bd0500..2c7bd70 100644 --- a/foxbin2prg.cfg.txt +++ b/foxbin2prg.cfg.txt @@ -1,82 +1,110 @@ *################################################################################################################ -*FOXBIN2PRG.CFG configuration options: (If no values given, these are the DEFAULTS) -*Version: v1.19.59 +*FOXBIN2PRG.CFG Konfigurations-Optionen: (Wird die Option nicht aufgeführt, ist der Wert im Beispiel der Default) +*Version: v1.19.60 ***************************************************************************************************************** -*extension: tx2=newext && Specify extensions to use. Default FoxBin2Prg extensions ends in '2' (see at the bottom) -*ShowProgressbar: 1 && 0=Don't show, 1=Allways show, 2= Show only for multi-file processing -*DontShowErrors: 0 && Show message errors by default -*NoTimestamps: 1 && Clear timestamps by default for minimize differences -*Debug: 0 && Don't Activate individual .Log by default -*BodyDevInfo: 0 && [0=Don't keep DevInfo for body pjx records], 1=Keep DevInfo -*ExtraBackupLevels: 1 && By default 1 BAK is created. With this you can make more .N.BAK, or none -*ClearUniqueID: 1 && 0=Keep UniqueID in text files, 1=Clear Unique ID. Useful for Diff and Merge -*ClearDBFLastUpdate: 1 && 0=Keep DBF LastUpdate, 1=Clear DBF LastUpdate. Useful for Diff. -*OptimizeByFilestamp: 0 && 1=Optimize file regeneration depending on file timestamp. Dangerous while working with branches! -*RemoveNullCharsFromCode: 1 && 1=Drop NULL chars from source code -*RemoveZOrderSetFromProps: 0 && 0=Do not remove ZOrderSet property from object, 1=Remove ZOrderSet property from object -*Language: (auto) && Language of shown messages and LOGs. EN=English, FR=French, ES=Español, DE=German, Not defined = AUTOMATIC [DEFAULT] -*ExcludeDBFAutoincNextval: 0 && [0=Do not exclude this value from db2], 1=Exclude this value from db2 -*PRG_Compat_Level: 0 && [0=Legacy], 1=Use HELPSTRING as Class Procedure comment -*HomeDir: 1 && 0 = don't save HomeDir in PJ2, [1 = save HomeDir in PJ2] +* Achtung, die Konfigurationsdateien werden vererbt. +* 1. Defaultwerte +* 2., optional FOXBIN2PRG.CFG im Vereichnis aus dem FOXBIN2PRG.EXE startet +* 3., optional FOXBIN2PRG.CFG in der Wurzel des Arbeitsverzeichnises +* 4., optional FOXBIN2PRG.CFG in jedem Verzeichnis bis zum Arbeitsverzeichnis +* 5., optional Es können spezielle Einstellungen für einzelne DBF's erzeugt werden (Syntax: .dbf.cfg im Verzeichnis der Tabelle) +* 6., Parameter des Aufrufs von FOXBIN2PRG.EXE. + +* Einige Parameter im Aufruf von FOXBIN2PRG.EXE übersteueren diese Vorgaben (bis auf die Defaults) +***************************************************************************************************************** + +*extension: tx2=newext && Umdefinition der Dateiendung der Textdateien. Die vordefinierten Endungen enden mit '2' (Beispiel siehe Ende dieser Datei) +*ShowProgressbar: 1 && 0=Zeige Fortschrittsfenster, 1=Zeige es nicht, 2= Zeige Fortschrittsfenster nur, wen mehrere Dateien konvertiert werden. +*DontShowErrors: 0 && 0=Zeige Fehler an, 1=Zeige keine Fehler an +*NoTimestamps: 1 && 0=Zeitstempel werden nicht gelöscht 1=Zeitstempel werden für minimale Unterschiede gelöscht +*Debug: 0 && 0=Individuelles Logging ist aus 1= Individuelles Log per Datei .Log +*BodyDevInfo: 0 && 0=DevInfo im body-pjx-Datensatz wird nicht erhalten], 1=DevInfo wird erhalten +*ExtraBackupLevels: 1 && Anzahl der Backup-Ebenen der Binärdateien 0=kein Backup, 1=.BAK, n>1= n-Backup-Ebenen, .n.BAK +*ClearUniqueID: 1 && 0=Erhalte die Unique ID in den Text-Dateien, 1=Lösche Unique ID. Nützlich für Diff und Merge +*ClearDBFLastUpdate: 1 && 0=Erhalte DBF LastUpdate, 1=Lösche DBF LastUpdate. Nützlich für Diff und Merge +*OptimizeByFilestamp: 0 && 0=Aus, 1=Optimierte Erzeugung der Binärdateien in Abhängigkeit vom Zeitstempel. Gefährlich beim Arbeiten mit Zweigen! +*RemoveNullCharsFromCode: 1 && 0=Aus 1=Lösche NULL (CHR(0)) Zeichen aus dem Quellcode +*RemoveZOrderSetFromProps: 0 && 0=Aus, 1=Entferne ZOrderSet Eigenschaft von Objekten +*Language: (auto) && Sprache für Anzeigen und Logs. EN=English, FR=Français, ES=Español, DE=Deutsch, Nicht definiert = Automatisch [DEFAULT] +*ExcludeDBFAutoincNextval: 0 && 0=Aus, 1=Entferne diesen Wert aus der Textdate der Datenbank (db2) +*PRG_Compat_Level: 0 && [0=Legacy], 1=Nutze HELPSTRING als Class Procedure Kommentar +*HomeDir: 1 && 0 = Die Eigenschaft HomeDir wird nicht in die PJ2 gespeichert, [1 = Die Eigenschaft wird gespeichert] *---------------------------------------------------------------------------------------------------------------- -*-- Convertion options: -*PJX_Conversion_Support: 2 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge) -*VCX_Conversion_Support: 2 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge) -*SCX_Conversion_Support: 2 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge) -*FRX_Conversion_Support: 2 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge) -*LBX_Conversion_Support: 2 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge) -*MNX_Conversion_Support: 2 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge) -*FKY_Conversion_Support: 1 && 0=No support, 1=Generate TXT only (Diff) -*MEM_Conversion_Support: 1 && 0=No support, 1=Generate TXT only (Diff) -*DBC_Conversion_Support: 2 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge) -*DBF_Conversion_Support: 1 && 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_Included: * && If DBF_Conversion_Support:4, you can specify multiple filemasks: www,fb2p_free.dbf -*DBF_Conversion_Excluded: && If DBF_Conversion_Support:4, you can specify multiple filemasks: www,fb2p_free.dbf +*-- Konvertierungs Optionen: +*PJX_Conversion_Support: 2 && 0=Aus, 1=Erzeuge nur Textdatei (Diff), 2=Erzeuge Text- und Binärdatei (Merge) +*VCX_Conversion_Support: 2 && 0=Aus, 1=Erzeuge nur Textdatei (Diff), 2=Erzeuge Text- und Binärdatei (Merge) +*SCX_Conversion_Support: 2 && 0=Aus, 1=Erzeuge nur Textdatei (Diff), 2=Erzeuge Text- und Binärdatei (Merge) +*FRX_Conversion_Support: 2 && 0=Aus, 1=Erzeuge nur Textdatei (Diff), 2=Erzeuge Text- und Binärdatei (Merge) +*LBX_Conversion_Support: 2 && 0=Aus, 1=Erzeuge nur Textdatei (Diff), 2=Erzeuge Text- und Binärdatei (Merge) +*MNX_Conversion_Support: 2 && 0=Aus, 1=Erzeuge nur Textdatei (Diff), 2=Erzeuge Text- und Binärdatei (Merge) +*FKY_Conversion_Support: 1 && 0=Aus, 1=Erzeuge nur Textdatei (Diff) +*MEM_Conversion_Support: 1 && 0=Aus, 1=Erzeuge nur Textdatei (Diff) +*DBC_Conversion_Support: 2 && 0=Aus, 1=Erzeuge nur Textdatei (Diff), 2=Erzeuge Text- und Binärdatei (Merge) +*DBF_Conversion_Support: 1 && 0=Aus +* && 1=Erzeuge Textdatei nur für Struktur (Diff) +* && 2=Erzeuge Text- und Binärdatei nur für Struktur (Merge) +* && 4=Erzeuge Textdatei nur für Struktur und Daten (Diff) +* && 8=Erzeuge Text- und Binärdatei nur für Struktur und Daten (Merge) +*DBF_Conversion_Included: * && Für DBF_Conversion_Support: 4 kann eine mehrfache Dateimaske zum Einbeziehen angegeben werden, z.B.: www,fb2p_free.dbf +* && *=Alle, Die Maske darf Wildcards (*,?) enthalten +* && Diese Option kann auch per Tabelle gesetzt werden. +*DBF_Conversion_Excluded: && Für DBF_Conversion_Support: 4 kann eine mehrfache Dateimaske zum Ausschließen angegeben werden, z.B.: www,fb2p_free.dbf +* && Leer=Keine Datei auschließen *---------------------------------------------------------------------------------------------------------------- -*-- DBC options -*- File per DBC options (UseFilesPerDBC: 1) -*OldFilesPerDBC: 0 && 1=Turns the File per DBC options on, 0 uses the old UseClassPerFile etc settings. -* && Options below will only read if OldFilesPerDBC is set 1 before! -* && If OldFilesPerDBC is set 0 later, alle setting will be lost -*UseFilesPerDBC: 0 && 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 && 0=Don't redirect to file.dc2, 1=Redirect to file.tx2 when selecting file.item.*.dc2 -*ItemPerDBCCheck: 0 && 0=Don't check file.item.*.dc2 inclusion, 1=Check file.item.*.dc2 inclusion -*DBF_BinChar_Base64: 1 && 0=For character type fields, if NoCPTrans 0=do not transform, 1=use Base64 transform (default) -*DBF_IncludeDeleted: 0 && 0=Do not include deleted records (default), 1=Include deleted records +*-- Optionen für DBC +*- Optionen für Datei per DBC options (UseFilesPerDBC: 1) +*OldFilesPerDBC: 0 && 1=Die unten stehenden DBC Optionen werden aktiviert, 0=Die UseClassPerFile settings werden genutzt. +* && Die unten stehenden Optionen werden nur gelesen, wenn OldFilesPerDBC vorher 1 ist! +* && Wird OldFilesPerDBC wieder auf 0 gesetzt, gehen diese Einstellungen verloren. +*UseFilesPerDBC: 0 && 0=Erzeuge eine dc2 Datei, 1=Erzeuge mehrfache Dateien.*.*.dc2 +* && 0 Erzeugt eine Datei .db2 mit allem Inhalt der DBC +* && 1 Erzeugt eine Datei .dc2 mit den Eigenschaften der Datenbank +* && und zusätzlich eine Datei für jedes Item der Datenbank (Gespeicherte Prozeduren, Tabellen, Views, ..) +* && Achtung! Diese Dateien werden nur dann in die Binädatei einbezogen, wenn RedirectFilePerDBCToMain 1 ist +*RedirectFilePerDBCToMain 0 && Originale Dokumntation: 0=Keine Umlenkung, 1=Erzeuge .dbc, wenn .item.*.dc2 gewählt wurde +* && Die Bimär-Datenbank wird nur dann automatisch zusammen gefügt, wenn diese Option 1 ist! +*ItemPerDBCCheck: 0 && 0=Aus, 1=Teste, ob .item.*.dc2 einbezogen wird. *---------------------------------------------------------------------------------------------------------------- -*-- CLASS and FORM options -*- Class per file options (UseClassPerFile: 1) -*UseClassPerFile: 0 && 0=One library tx2 file, 1=Multiple file.class.tx2 files, 2=Multiple file.baseclass.class.tx2 files -*RedirectClassPerFileToMain: 0 && 0=Don't redirect to file.tx2, 1=Redirect to file.tx2 when selecting file.class.tx2 -* && RedirectClassType: 1 precedes -*RedirectClassType: 0 && For classes created with UseClassPerFile>0 in the form file[.baseclass].class.tx2 -* && Those files could be imported like file.tx2::Class::import or like file[.baseclass].class.tx2 -* && For the second form: -* && 0 Redirect file[.baseclass].class.tx2 to file.VCX and add / replace all other classes of this library -* && 1 Redirect file[.baseclass].class.tx2 to file[.baseclass].class.VCX and do not touch file.VCX -* && 2 Redirect file[.baseclass].class.tx2 to file.VCX and do not touch other classes of file.VCX -*ClassPerFileCheck: 0 && 0=Don't check file.class.tx2 inclusion, 1=Check file.class.tx2 inclusion -* && Only used if import file is in file[.baseclass].class.tx2 syntax -* && Ignored for RedirectClassType: 2 +*-- Optionen für DBF (Transformation der DBF) +*DBF_BinChar_Base64: 1 && Für Felder mit Zeicehn Typ (C,V,M), wenn NoCPTrans, dann 0=nicht transform,ieren, 1=Führe Base64 Transformation aus (default) +* && Dies entspricht dem Flag 4096 in CursorToXML() +* && Diese Option kann auch per Tabelle gesetzt werden. +*DBF_IncludeDeleted: 0 && 0=Ohne gelöschte Datensätze (default), 1=Mit gelöschten Datensätzen +* && Diese Option kann auch per Tabelle gesetzt werden. *---------------------------------------------------------------------------------------------------------------- -*-- Example configuration for SourceSafe compatibility: -*extension: pj2=pja && Text file to PJX -*extension: vc2=vca && Text file to VCX -*extension: sc2=sca && Text file to SCX -*extension: fr2=fra && Text file to FRX -*extension: lb2=lba && Text file to LBX -*extension: mn2=mna && Text file to MNX -*extension: db2=dba && Text file to DBF -*extension: dc2=dca && Text file to DBC -*-- Additional extensions -*extension: fk2=fkx && Text file to FKY -*extension: me2=fkx && Text file to MEM +*-- Optionen für CLASS und FORM +*- Optionen für Datei per Klasse (UseClassPerFile: 1) (für VCX: vc2, für SCX: sc2) +*UseClassPerFile: 0 && 0=Eine Textdatei pro VCX/SCX, 1=Mehrere Dateien .KlassenName.vc2 files, 2=Mehrere Dateien .Basisklasse.KlassenName.vc2 +* && Für 1, 2 wird jeweils auch ein Headerdatei .vc2 erzeugt +*RedirectClassPerFileToMain: 0 && 0=Keine Umlenkung, 1=Klassen (und Objekte) werden in die VCX/SCX geschrieben wenn eine Datei [.Basisklasse].KlassenName.vc2 gewählt wurde +* && RedirectClassType: 1 hat Vorrang +*RedirectClassType: 0 && Für Textdateien die mit UseClassPerFile>0 in der Form file[.baseclass].class.tx2 erstellt wurden. +* && diese Dateien können als file.tx2::Class::import oder als file[.baseclass].class.tx2 importiert werden. +* && Für die zweite Form gilt: +* && 0 Aus file[.baseclass].class.tx2 wird file.VCX und alle dclassen dieser Bibliothek werden neu gelesen +* && 1 Aus file[.baseclass].class.tx2 wird file[.baseclass].class.VCX, die Bibliothek file.VCX wird ignoriert +* && 2 Aus file[.baseclass].class.tx2 wird file.VCX aber alle anderen Klassen bleiben unverändert +*ClassPerFileCheck: 0 && 0=Aus, 1=Teste, ob die Datei einbezogen [.Basisklasse].KlassenName.vc2 wurde +* && Nur für die file[.baseclass].class.tx2 Syntax +* && Wird für RedirectClassType: 2 ignoriert + +*---------------------------------------------------------------------------------------------------------------- +*-- Beispiel für geänderte Textdatei Endungen, hier für SourceSafe Kompatibiltät: +*extension: pj2=pja && Text Datei für PJX +*extension: vc2=vca && Text Datei für VCX +*extension: sc2=sca && Text Datei für SCX +*extension: fr2=fra && Text Datei für FRX +*extension: lb2=lba && Text Datei für LBX +*extension: mn2=mna && Text Datei für MNX +*extension: db2=dba && Text Datei für DBF +*extension: dc2=dca && Text Datei für DBC +*-- Zusätzliche Endungen +*extension: fk2=fkx && Text Datei für FKY +*extension: me2=fkx && Text Datei für MEM + +* \ No newline at end of file diff --git a/foxbin2prg.dbf.cfg.txt b/foxbin2prg.dbf.cfg.txt new file mode 100644 index 0000000..afaf647 --- /dev/null +++ b/foxbin2prg.dbf.cfg.txt @@ -0,0 +1,21 @@ +*################################################################################################################ +*-- Individual DBF configuration file (Syntax: .dbf.cfg im Verzeichnis der Tabelle) Defaults siehe FoxBin2prg.cfg +*Version: v1.19.60 +***************************************************************************************************************** + +*DBF_Conversion_Support: <1,2,4,8> && 0=Aus +* && 1=Erzeuge Textdatei nur für Struktur (Diff) +* && 2=Erzeuge Text- und Binärdatei nur für Struktur (Merge) +* && 4=Erzeuge Textdatei nur für Struktur und Daten (Diff) +* && 8=Erzeuge Text- und Binärdatei nur für Struktur und Daten (Merge) +*DBF_Conversion_Order: && Optional, Reihenfolge der Datensätze. Ausdruck für INDEX ON. ie: name+str(age,3) +* && leer: normale Reihenfolge +*DBF_Conversion_Condition: && Optional, Ausdruck für SELECT FOR. ie: age > 10 AND NOT DELETED() +* && leer: Alle, außer DBF_IncludeDeleted +*DBF_IndexList: && Kommagetrennte Liste von Dateien. Zusätzliche Index - Dateien. CDX oder IDX. Nicht der Strukturelle Index +*DBF_BinChar_Base64: <0,1> && Für Felder mit Zeicehn Typ (C,V,M), wenn NoCPTrans, dann 0=nicht transform,ieren, 1=Führe Base64 Transformation aus +* && Dies entspricht dem Flag 4096 in CursorToXML() +* && Diese Option kann auch per Tabelle gesetzt werden. +*DBF_IncludeDeleted: <0,1> && 0=Ohne gelöschte Datensätze, 1=Mit gelöschten Datensätzen +* && Diese Option kann auch per Tabelle gesetzt werden. +* \ No newline at end of file diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 8bbb04d..1f8ae01 100644 Binary files a/foxbin2prg.exe and b/foxbin2prg.exe differ diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index 8b964b5..1d10d5c 100644 Binary files a/foxbin2prg.pjt and b/foxbin2prg.pjt differ diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index 26dd3be..0012435 100644 Binary files a/foxbin2prg.pjx and b/foxbin2prg.pjx differ diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 59ea6b4..1a4c0c0 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -255,13 +255,13 @@ * 09/03/2021 LScheffler v1.19.59 Enhancement: Added option to create config file template based on current values of a directory * 09/03/2021 LScheffler v1.19.59 Enhancement: Log settings object handed to execute (Debug > 0) -* xx/xx/2021 LScheffler v1.19.xx Enhancement: -cC options learned to create default ._cfg file -* xx/xx/2021 LScheffler v1.19.xx Enhancement: -t Option learned to create default ._cfg file, if table is open. -* xx/xx/2021 LScheffler v1.19.xx Enhancement: Handling of additional non structural index per DBF in Bin2Text and Text2Bin -* xx/xx/2021 LScheffler v1.19.xx Enhancement: Handling of additional non structural index per DBF in Bin2Text and Text2Bin -* xx/xx/2021 LScheffler v1.19.xx Bug Fix: DBF_Conversion_Condition was read, but never used -* xx/xx/2021 LScheffler v1.19.xx Bug Fix: DBF_Conversion_Order sets an index that later would be stored as structural index -* xx/xx/2021 LScheffler v1.19.xx Bug Fix: config options with text value fail, if line comment is set +* xx/xx/2021 LScheffler v1.19.60 Enhancement: -cC options learned to create default FoxBin2Prg._cfg file +* xx/xx/2021 LScheffler v1.19.60 Enhancement: -t Option learned to create default ._cfg file, if table is open. +* xx/xx/2021 LScheffler v1.19.60 Enhancement: Handling of additional non structural index per DBF in Bin2Text and Text2Bin see config per DBF +* xx/xx/2021 LScheffler v1.19.60 Enhancement: Debug-Logging for Index +* xx/xx/2021 LScheffler v1.19.60 Bug Fix: DBF_Conversion_Condition was read, but never used +* xx/xx/2021 LScheffler v1.19.60 Bug Fix: DBF_Conversion_Order sets an index that later would be stored as structural index +* xx/xx/2021 LScheffler v1.19.60 Bug Fix: config options with text value fail, if line comment is set * * @@ -407,6 +407,9 @@ * 05/03/2021 Lutz Scheffler Bug report v1.19.56 For RedirectClassType = 2, Path was set wrong * 09/03/2021 Lutz Scheffler Bug report v1.19.57 For RedirectClassType = 2, Path was set wrong * 09/03/2021 Lutz Scheffler Bug report v1.19.57 RedirectClassType = 2, UseClassPerFile = 2 failed. +* xx/xx/2021 Lutz Scheffler Bug report v1.19.59 DBF_Conversion_Condition was read, but never used +* xx/xx/2021 Lutz Scheffler Bug report v1.19.59 DBF_Conversion_Order sets an index that later would be stored as structural index +* xx/xx/2021 Lutz Scheffler Bug report v1.19.59 config options with text value fail, if line comment is set * * @@ -708,10 +711,13 @@ Endif * only 2 paras for -cCt Do Case - Case Pcount()=1 And tcType=='-t' And !Empty( Dbf() ) + Case Pcount()=1 And tcType == '-t' And !Empty( Dbf() ) tc_InputFile = Dbf() + '._cfg' - Otherwise + Case Pcount()=1 And UPPER( tcType ) =='-C' + tc_InputFile = 'FoxBin2PRG._cfg' + + Case Pcount()#2 And ( UPPER( tcType ) =='-C' OR tcType =='-t' ) tc_InputFile = "" tcType = "" @@ -917,7 +923,7 @@ Define Class c_foxbin2prg As Session Protected n_CFG_Actual, l_Main_CFG_Loaded, o_Configuration, l_CFG_CachedAccess *-- n_FB2PRG_Version = 1.19 - c_FB2PRG_Version_Real = '1.19.59' + c_FB2PRG_Version_Real = '1.19.60' *-- c_Language = '' && EN, FR, ES, DE c_Language_In = '(auto)' @@ -6765,7 +6771,7 @@ Define Class frm_main As Form Thisform.edt_help.Value = loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC+0h0D0A+; STRTRAN(loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_cfg,'&'+'&','')+0h0D0A+; - loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_tab_cfg + STRTRAN(loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_tab_cfg,'&'+'&','') Endif @@ -13396,7 +13402,7 @@ Define Class c_conversor_prg_a_dbf As c_conversor_prg_a_bin .writeLog( '*** ERRORS found - Generation Cancelled' ) Exit Endif -SET STEP ON + toFoxBin2Prg.updateProcessedFile( lnIDInputFile ) .writeBinaryFile_STRUCTURE( @toTable, @toFoxBin2Prg, @lcAlterTable ) @@ -13606,58 +13612,94 @@ SET STEP ON Local I, lnCodError, loEx As Exception ; , loIndex As CL_DBF_INDEX Of 'FOXBIN2PRG.PRG' ; , loDBFUtils As CL_DBF_UTILS Of 'FOXBIN2PRG.PRG' ; + , loLang As CL_LANG Of 'FOXBIN2PRG.PRG' ; , ldLastUpdate ; - , lcIndexFile, llStandAlone - + , lcIndexFile + With This As c_conversor_prg_a_dbf Of 'FOXBIN2PRG.PRG' Store Null To loIndex Store 0 To lnCodError - Store '' To lcIndex, lcIndexFile - loDBFUtils = Createobject('CL_DBF_UTILS') + Store '' To lcIndex + Store .NULL. To lcIndexFile + + If toTable._Indexes.Count # 0 Then + loDBFUtils = Createobject('CL_DBF_UTILS') + + loLang = _Screen.o_FoxBin2Prg_Lang + toFoxBin2Prg.writeLog( Replicate('+', 100) ) + toFoxBin2Prg.writeLog( loLang.C_INDEX2BIN_PROCESSING_LOC ) + toFoxBin2Prg.writeLog( ' ' + Replicate('-', 98) ) *-- Regenero los índices - For Each loIndex In toTable._Indexes FoxObject - lcIndex = 'INDEX ON ' + loIndex._Key + For Each loIndex In toTable._Indexes FoxObject + DO CASE + CASE ISNULL ( m.lcIndexFile ) AND EMPTY (m.loIndex._IndexFile) + toFoxBin2Prg.writeLog( loLang.C_INDEX2BIN_STRUCTURAL_LOC ) + toFoxBin2Prg.writeLog( ' ' + Replicate('- ', 49) ) - If loIndex._TagType = 'BINARY' - lcIndex = lcIndex + ' BINARY' - Else - lcIndex = lcIndex + ' COLLATE "' + loIndex._Collate + '"' + CASE ISNULL ( m.lcIndexFile ) AND m.loIndex._StandAlone + toFoxBin2Prg.writeLog( loLang.C_INDEX2BIN_STANDALONE_LOC + m.loIndex._IndexFile ) - If Not Empty(loIndex._Filter) - lcIndex = lcIndex + ' FOR ' + loIndex._Filter - Endif + CASE ISNULL ( m.lcIndexFile ) + toFoxBin2Prg.writeLog( loLang.C_INDEX2BIN_COMPOUND_LOC + m.loIndex._IndexFile ) + toFoxBin2Prg.writeLog( ' ' + Replicate('- ', 59) ) - lcIndex = lcIndex + ' ' + loIndex._Order + CASE ! m.lcIndexFile == m.loIndex._IndexFile AND m.loIndex._StandAlone + toFoxBin2Prg.writeLog( ' ' + Replicate('-', 98) ) + toFoxBin2Prg.writeLog( loLang.C_INDEX2BIN_STANDALONE_LOC + m.loIndex._IndexFile ) - If Not Inlist(loIndex._TagType, 'NORMAL', 'REGULAR') + CASE ! m.lcIndexFile == m.loIndex._IndexFile + toFoxBin2Prg.writeLog( ' ' + Replicate('-', 98) ) + toFoxBin2Prg.writeLog( loLang.C_INDEX2BIN_COMPOUND_LOC + m.loIndex._IndexFile ) + toFoxBin2Prg.writeLog( ' ' + Replicate('- ', 59) ) + ENDCASE + lcIndexFile = m.loIndex._IndexFile + + lcIndex = 'INDEX ON ' + loIndex._Key + + If loIndex._TagType = 'BINARY' + lcIndex = lcIndex + ' BINARY' + Else + lcIndex = lcIndex + ' COLLATE "' + loIndex._Collate + '"' + + If Not Empty(loIndex._Filter) + lcIndex = lcIndex + ' FOR ' + loIndex._Filter + Endif + + lcIndex = lcIndex + ' ' + loIndex._Order + + If Not Inlist(loIndex._TagType, 'NORMAL', 'REGULAR') *-- Si es PRIMARY lo cambio a CANDIDATE y luego lo recodifico - lcIndex = lcIndex + ' ' + Strtran( loIndex._TagType, 'PRIMARY', 'CANDIDATE' ) + lcIndex = lcIndex + ' ' + Strtran( loIndex._TagType, 'PRIMARY', 'CANDIDATE' ) + Endif Endif - Endif - If m.loIndex._StandAlone Then - lcIndex = m.lcIndex + ' TO ' + m.loIndex._IndexFile - Else &&m.loIndex._StandAlone - lcIndex = m.lcIndex + ' TAG ' + loIndex._TagName + Iif( Empty( m.loIndex._IndexFile ), '', ' OF ' + m.loIndex._IndexFile ) - Endif &&m.loIndex._StandAlone + If m.loIndex._StandAlone Then + lcIndex = m.lcIndex + ' TO ' + m.lcIndexFile + Else &&m.loIndex._StandAlone + lcIndex = m.lcIndex + ' TAG ' + loIndex._TagName + Iif( Empty( m.lcIndexFile ), '', ' OF ' + m.lcIndexFile ) + toFoxBin2Prg.writeLog( ' ' + m.loIndex._TagName ) + Endif &&m.loIndex._StandAlone - &lcIndex. - Endfor + &lcIndex. + Endfor + toFoxBin2Prg.writeLog( Replicate('+', 100) + 0h0D0A ) - Use In (Select(Juststem(.c_OutputFile))) + Use In (Select(Juststem(.c_OutputFile))) *-- La actualización de la fecha sirve para evitar diferencias al regenerar el DBF - If toFoxBin2Prg.l_ClearDBFLastUpdate Then - ldLastUpdate = Evaluate( '{^2013/11/04}' ) - Else - ldLastUpdate = Evaluate( '{^' + toTable._LastUpdate + '}' ) - Endif + If toFoxBin2Prg.l_ClearDBFLastUpdate Then + ldLastUpdate = Evaluate( '{^2013/11/04}' ) + Else + ldLastUpdate = Evaluate( '{^' + toTable._LastUpdate + '}' ) + Endif - loDBFUtils.write_DBC_BackLink( .c_OutputFile, toTable._Database, ldLastUpdate ) + loDBFUtils.write_DBC_BackLink( .c_OutputFile, toTable._Database, ldLastUpdate ) - toFoxBin2Prg.updateProcessedFile() + toFoxBin2Prg.updateProcessedFile() + Endif &&toTable._Indexes.COUNT # 0 + toFoxBin2Prg.writeLog( Replicate('+', 100) ) Endwith && THIS @@ -25619,7 +25661,8 @@ Define Class CL_DBF_INDEXES As CL_COL_BASE Try Local I, lcText, loEx As Exception ; - , loIndex As CL_DBF_INDEX Of 'FOXBIN2PRG.PRG' + , loIndex As CL_DBF_INDEX Of 'FOXBIN2PRG.PRG' ; + loLang As CL_LANG Of 'FOXBIN2PRG.PRG' Store Null To loIndex lcText = '' Dimension taTagInfo(1,6) @@ -25655,8 +25698,9 @@ Define Class CL_DBF_INDEXES As CL_COL_BASE lcIndexFile As String,; lcIndexType As String + loLang = _Screen.o_FoxBin2Prg_Lang toFoxBin2Prg.writeLog( Replicate('+', 100) ) - toFoxBin2Prg.writeLog( ' Processing index tags' ) + toFoxBin2Prg.writeLog( loLang.C_INDEX2TXT_PROCESSING_LOC ) *!* Changed by: SF 18.3.2021 @@ -25703,7 +25747,7 @@ Define Class CL_DBF_INDEXES As CL_COL_BASE laIndexFiles( 1 ) toFoxBin2Prg.writeLog( ' ' + Replicate('-', 98) ) - toF1oxBin2Prg.writeLog( ' Additional index files' ) + toF1oxBin2Prg.writeLog( loLang.C_INDEX2TXT_EXTRAFILES_LOC ) toFoxBin2Prg.writeLog( ' ' + Replicate('- ', 49) ) *Additional index files @@ -25741,11 +25785,11 @@ Define Class CL_DBF_INDEXES As CL_COL_BASE Catch To m.loEx When m.loEx.ErrorNo = 1 *File Not found - toFoxBin2Prg.writeLog( ' Not a File ' + m.lcIndexFile) + toFoxBin2Prg.writeLog( loLang.C_INDEX2TXT_NOFILE_LOC + m.lcIndexFile) Catch To m.loEx When m.loEx.ErrorNo=114 *INDEX does not match - toFoxBin2Prg.writeLog( ' Index does not match table ' + m.lcIndexFile) + toFoxBin2Prg.writeLog( loLang.C_INDEX2TXT_NOTTHISTABLE_LOC + m.lcIndexFile) Catch To m.loEx If This.n_Debug > 0 And _vfp.StartMode = 0 @@ -29945,6 +29989,14 @@ Define Class CL_LANG As Custom C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "" C_WITH_ERRORS_LOC = "" + C_INDEX2TXT_PROCESSING_LOC = "" + C_INDEX2TXT_EXTRAFILES_LOC = "" + C_INDEX2TXT_NOFILE_LOC = "" + C_INDEX2TXT_NOTTHISTABLE_LOC = "" + C_INDEX2BIN_PROCESSING_LOC = "" + C_INDEX2BIN_STRUCTURAL_LOC = "" + C_INDEX2BIN_STANDALONE_LOC = "" + C_INDEX2BIN_COMPOUND_LOC = "" Procedure Init @@ -30140,6 +30192,7 @@ Define Class CL_LANG As Custom TEXT TO .C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_tab_cfg TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 <<>>################################################################################################################ <<>>-- Individual DBF configuration file (syntax: filename.dbf.cfg) Defaults see FoxBin2prg.cfg + <<>>Version: <<_Screen.c_FB2PRG_EXE_Version>> <<>>**************************************************************************************************************** <<>> <<>>DBF_Conversion_Support: <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) @@ -30196,6 +30249,14 @@ Define Class CL_LANG As Custom .C_WARNING_LOC = "AVERTISSEMENT!" .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "AVERTISSEMENT!" + CR_LF+ "ASSUREZ VOUS NE UTILISEZ PAS UN ALIAS DE TABLE SUR LES EXPRESSIONS INDEX CLÉS!! (exemple: index on <>.campo tag keyname)" .C_WITH_ERRORS_LOC = "avec des erreurs" + .C_INDEX2TXT_PROCESSING_LOC = " Processing index" + .C_INDEX2TXT_EXTRAFILES_LOC = " Additional index files" + .C_INDEX2TXT_NOFILE_LOC = " Not a File " + .C_INDEX2TXT_NOTTHISTABLE_LOC = " Index does not match table " + .C_INDEX2BIN_PROCESSING_LOC = " Creating index" + .C_INDEX2BIN_STRUCTURAL_LOC = " TAGs for structural index" + .C_INDEX2BIN_STANDALONE_LOC = " Standalone index " + .C_INDEX2BIN_COMPOUND_LOC = " TAGs for compound index " Case Inlist(tcLanguage, '34', 'ES') && Spanish (Español) *------------------------------------------------------------------------------------------------------------------------------------------- @@ -30369,6 +30430,7 @@ Define Class CL_LANG As Custom TEXT TO .C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_tab_cfg TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 <<>>################################################################################################################ <<>>-- Archivo de configuración individual para DBF (sintaxis: archivo.dbf.cfg) Defaults see FoxBin2prg.cfg + <<>>Version: <<_Screen.c_FB2PRG_EXE_Version>> <<>>**************************************************************************************************************** <<>> <<>>DBF_Conversion_Support: <1,2,4,8> && Ver esta misma configuración más arriba @@ -30425,6 +30487,14 @@ Define Class CL_LANG As Custom .C_WARNING_LOC = "¡ATENCIÓN!" .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "¡ATENCIÓN!" + CR_LF+ "ASEGÚRESE DE QUE NO ESTÁ USANDO UN ALIAS DE TABLA EN LAS EXPRESIONES DE LOS ÍNDICES!! (ej: index on <>.campo tag nombreclave)" .C_WITH_ERRORS_LOC = "con errores" + .C_INDEX2TXT_PROCESSING_LOC = " Processing index" + .C_INDEX2TXT_EXTRAFILES_LOC = " Additional index files" + .C_INDEX2TXT_NOFILE_LOC = " Not a File " + .C_INDEX2TXT_NOTTHISTABLE_LOC = " Index does not match table " + .C_INDEX2BIN_PROCESSING_LOC = " Creating index" + .C_INDEX2BIN_STRUCTURAL_LOC = " TAGs for structural index" + .C_INDEX2BIN_STANDALONE_LOC = " Standalone index " + .C_INDEX2BIN_COMPOUND_LOC = " TAGs for compound index " Case Inlist(tcLanguage, '49', 'DE') && German (Alemán) *------------------------------------------------------------------------------------------------------------------------------------------- @@ -30582,7 +30652,7 @@ Define Class CL_LANG As Custom <<>> <<>>---------------------------------------------------------------------------------------------------------------- <<>>-- Optionen für DBF (Transformation der DBF) - <<>>DBF_BinChar_Base64: 1 && Für Felder mit Zeicehn Typ (C,V,M), wenn NoCPTrans, dann 0=nicht transform,ieren, 1=Führe Base64 Transformation aus (default) + <<>>DBF_BinChar_Base64: 1 && Für Felder mit Zeichen Typ (C,V,M), wenn NoCPTrans, dann 0=nicht transform,ieren, 1=Führe Base64 Transformation aus (default) <<>> && Dies entspricht dem Flag 4096 in CursorToXML() <<>> && Diese Option kann auch per Tabelle gesetzt werden. <<>>DBF_IncludeDeleted: 0 && 0=Ohne gelöschte Datensätze (default), 1=Mit gelöschten Datensätzen @@ -30624,6 +30694,7 @@ Define Class CL_LANG As Custom TEXT TO .C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_tab_cfg TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 <<>>################################################################################################################ <<>>-- Individual DBF configuration file (Syntax: .dbf.cfg im Verzeichnis der Tabelle) Defaults siehe FoxBin2prg.cfg + <<>>Version: <<_Screen.c_FB2PRG_EXE_Version>> <<>>**************************************************************************************************************** <<>> <<>>DBF_Conversion_Support: <1,2,4,8> && 0=Aus @@ -30636,7 +30707,7 @@ Define Class CL_LANG As Custom <<>>DBF_Conversion_Condition: && Optional, Ausdruck für SELECT FOR. ie: age > 10 AND NOT DELETED() <<>> && leer: Alle, außer DBF_IncludeDeleted <<>>DBF_IndexList: && Kommagetrennte Liste von Dateien. Zusätzliche Index - Dateien. CDX oder IDX. Nicht der Strukturelle Index - <<>>DBF_BinChar_Base64: <0,1> && Für Felder mit Zeicehn Typ (C,V,M), wenn NoCPTrans, dann 0=nicht transform,ieren, 1=Führe Base64 Transformation aus + <<>>DBF_BinChar_Base64: <0,1> && Für Felder mit Zeichen Typ (C,V,M), wenn NoCPTrans, dann 0=nicht transform,ieren, 1=Führe Base64 Transformation aus <<>> && Dies entspricht dem Flag 4096 in CursorToXML() <<>> && Diese Option kann auch per Tabelle gesetzt werden. <<>>DBF_IncludeDeleted: <0,1> && 0=Ohne gelöschte Datensätze, 1=Mit gelöschten Datensätzen @@ -30690,6 +30761,15 @@ Define Class CL_LANG As Custom .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "WARNUNG!" + CR_LF+ "STELLEN SIE SICHER, DAS KEIN TABELLENALIAS IM INDEXAUSDRUCK BENUTZT WIRD!! (z.B.: index on <>.campo tag keyname)" .C_WITH_ERRORS_LOC = "mit Fehlern" + .C_INDEX2TXT_PROCESSING_LOC = " Ermittle Index" + .C_INDEX2TXT_EXTRAFILES_LOC = " Zusätzliche Index Dateien" + .C_INDEX2TXT_NOFILE_LOC = " Keine Datei " + .C_INDEX2TXT_NOTTHISTABLE_LOC = " Index passt nicht zur Tabelle " + .C_INDEX2BIN_PROCESSING_LOC = " Erstelle Index" + .C_INDEX2BIN_STRUCTURAL_LOC = " TAGs für den strukturellen Index" + .C_INDEX2BIN_STANDALONE_LOC = " Eigenständige Indexdatei: " + .C_INDEX2BIN_COMPOUND_LOC = " TAGs für verbundene Indexdatei: " + Otherwise && English (Inglés) *------------------------------------------------------------------------------------------------------------------------------------------- *-- NOTE: MUST USE DOUBLE QUOTES, OR SYNTAX ERRORS HAPPEN WHEN COMPILING. STRANGE :( @@ -30863,6 +30943,7 @@ Define Class CL_LANG As Custom TEXT TO .C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_tab_cfg TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 <<>>################################################################################################################ <<>>-- Individual DBF configuration file (syntax: filename.dbf.cfg) Defaults see FoxBin2prg.cfg + <<>>Version: <<_Screen.c_FB2PRG_EXE_Version>> <<>>**************************************************************************************************************** <<>> <<>>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) @@ -30919,6 +31000,16 @@ Define Class CL_LANG As Custom .C_WARNING_LOC = "WARNING!" .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "WARNING!" + CR_LF+ "MAKE SURE YOU ARE NOT USING A TABLE ALIAS ON INDEX KEY EXPRESSIONS!! (ex: index on <>.campo tag keyname)" .C_WITH_ERRORS_LOC = "with errors" + + .C_INDEX2TXT_PROCESSING_LOC = " Processing index" + .C_INDEX2TXT_EXTRAFILES_LOC = " Additional index files" + .C_INDEX2TXT_NOFILE_LOC = " Not a File " + .C_INDEX2TXT_NOTTHISTABLE_LOC = " Index does not match table " + .C_INDEX2BIN_PROCESSING_LOC = " Creating index" + .C_INDEX2BIN_STRUCTURAL_LOC = " TAGs for structural index" + .C_INDEX2BIN_STANDALONE_LOC = " Standalone index " + .C_INDEX2BIN_COMPOUND_LOC = " TAGs for compound index " + .n_LanguageSelectedMethod = 0 && 0=Automatic with VERSION(3) Endcase