From bec9dcda8bd60ec7040498cec8bf58aba951d38b Mon Sep 17 00:00:00 2001 From: Lutz Date: Fri, 1 Sep 2023 14:32:26 +0200 Subject: [PATCH] Debug / config Debug set via parameter will not longer be turned off via config altered config setting --- .gitignore | 4 +- Create_FoxBin2Prg.cfg | 9 +- Create_Foxbin2Prg.prg | 2 +- README.md | 4 +- TESTS/DATOS_READONLY/fb2p_dbc.dbc | Bin 9463 -> 0 bytes TESTS/DATOS_READONLY/fb2p_dbc.dct | Bin 53275 -> 0 bytes docs/ChangeLog.md | 6 +- docs/FoxBin2Prg_Internals.md | 6 +- docs/FoxBin2Prg_Object.md | 4 +- docs/FoxBin2Prg_Run.md | 6 +- foxbin2prg.cfg.txt | 11 +- foxbin2prg.dbc.txt | 12 - foxbin2prg.dbf.cfg.txt | 12 - foxbin2prg.pj2 | 2 +- foxbin2prg.prg | 351 ++++++++++++++++++------------ foxbin2prg_keywords.cdx | Bin 25600 -> 0 bytes foxbin2prg_keywords.dbf | Bin 83193 -> 0 bytes 17 files changed, 241 insertions(+), 188 deletions(-) delete mode 100644 TESTS/DATOS_READONLY/fb2p_dbc.dbc delete mode 100644 TESTS/DATOS_READONLY/fb2p_dbc.dct delete mode 100644 foxbin2prg.dbc.txt delete mode 100644 foxbin2prg.dbf.cfg.txt delete mode 100644 foxbin2prg_keywords.cdx delete mode 100644 foxbin2prg_keywords.dbf diff --git a/.gitignore b/.gitignore index 3ce1222..c61e784 100644 --- a/.gitignore +++ b/.gitignore @@ -78,5 +78,5 @@ bin2txt.* *special, settings to create foxbin2prg binary !/foxbin2prg_self.cfg -*re-include -!foxbin2prg_keywords.* +#re-include +#!foxbin2prg_keywords.* diff --git a/Create_FoxBin2Prg.cfg b/Create_FoxBin2Prg.cfg index 9b9ef0a..965026d 100644 --- a/Create_FoxBin2Prg.cfg +++ b/Create_FoxBin2Prg.cfg @@ -23,15 +23,18 @@ Language: EN && Language of shown messages and LOGs. EN=Engli ShowProgressbar: 1 && 0=Don't show, 1=Allways show, 2= Show only for multi-file processing DontShowErrors: 0 && Show message errors by default ExtraBackupLevels: 1 && By default 1 BAK is created. With this you can make more .N.BAK, or none -Debug: 0 && Don't Activate individual .Log by default -*BackgroundImage: && Backgroundimage for process form. Empty for empty Background. File not found uses default. +*Debug: 0 && 0=Don't Activate individual .Log by default +* && 1=Activate individual .Log by default +* && 2=??? +* && Only valid if not controlled by parameter +*BackgroundImage: && Backgroundimage for process form. Empty for empty Background. File not found uses default. HomeDir: 1 && Home Directory in PJX * && 0 don't save HomeDir in PJ2 * && 1 save HomeDir in PJ2 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *-- Settings for config file via parameter only *-- Settings for config file via parameter only -AllowInheritance: 3 && 0=Allow scanning "regular" config files (file via parameter is just additional default) +InhibitInheritance: 3 && 0=Allow scanning "regular" config files (file via parameter is just additional default) * && 1=Only read tree from root of the file given by parameter, not FoxBin2Prg default * && 2=Only read folder and subfolder of the file given by parameter * && 3=Read no other file diff --git a/Create_Foxbin2Prg.prg b/Create_Foxbin2Prg.prg index 03b350f..944022d 100644 --- a/Create_Foxbin2Prg.prg +++ b/Create_Foxbin2Prg.prg @@ -1,6 +1,6 @@ *Create config templates DO FoxBin2Prg.prg WITH "-c","foxbin2prg.cfg.txt",FULLPATH("Create_FoxBin2Prg.cfg","") -DO FoxBin2Prg.prg WITH "-t","foxbin2prg.dbc.txt",FULLPATH("Create_FoxBin2Prg.cfg","") +DO FoxBin2Prg.prg WITH "-t","foxbin2prg.dbf.txt",FULLPATH("Create_FoxBin2Prg.cfg","") *create binaries DO FOXBIN2PRG.PRG WITH JUSTPATH(FULLPATH("","")),"Bin2Prg",,,,,,,,,FULLPATH("Create_FoxBin2Prg.cfg","") diff --git a/README.md b/README.md index f74e28c..672d70d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# FoxBin2Prg 1.20.02 +# FoxBin2Prg 1.20.04 **Binary/Text Converting program for Microsoft Visual FoxPro** ## Lutz Scheffler @@ -153,4 +153,4 @@ See [issue #93](https://github.com/fdbozzo/foxbin2prg/issues/93). ## Usage For usage see [documentation](./docs/FoxBin2Prg.md) -Last changed: _2023-08-31_ +Last changed: _2023/09/01_ diff --git a/TESTS/DATOS_READONLY/fb2p_dbc.dbc b/TESTS/DATOS_READONLY/fb2p_dbc.dbc deleted file mode 100644 index d0a479d2ac87e5a96c672efb6f97d3a48c27a194..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9463 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 H_6PqD781=Always show a progress bar,
2=Only show it when processing multiple-files | | DontShowErrors | _0_, 1 | 0=show message errors in a modal messagebox. (default)
1=don't show errors | | ExtraBackupLevels | 0, _1_, n |
0=No backup
1=One backupfile _\_filename\_.BAK_ (default)
n=n levels of backup in style _\_filename\_.n.BAK_ | -| Debug | _0_, 1, 2 | 0=Off
1=Normal
2=Extended
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 | +| Debug | _0_, 1, 2 | 0=Off
1=Normal
2=Extended
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.
**If cDebug is set via parameter, this is ignored.** | | BackgroundImage | \ | Backgroundimage for process form | | HomeDir | 0, _1_ | 0=don't save HomeDir in PJ2,
1=save HomeDir in PJ2.
Setting this to 0 prevents the PJ2 file from changing just because two developers have the project in different folders | ||| -| AllowInheritance | _0_, 1, 2, 3 | **This settings is for config file via parameter only**
Settings for config file via parameter only0=Allow scanning "regular" config files (file via parameter is just additional default)
1=Only read tree from root of the file given by parameter, not FoxBin2Prg default
2=Only read folder and subfolder of the file given by parameter
3=Read no other file
This is like
0 Default \| Parameter file \| Default near FoxBin2Prg \| all other config files
1 Default \| Parameter file \| Inheritance from root to parent of folder \| folder and subdirs
2 Default \| Parameter file \| folder and subdirs
3 Default \| Parameter file | +| InhibitInheritance | _0_, 1, 2, 3 | **This settings is for config file via parameter only**
Settings for config file via parameter only0=Allow scanning "regular" config files (file via parameter is just additional default)
1=Only read tree from root of the file given by parameter, not FoxBin2Prg default
2=Only read folder and subfolder of the file given by parameter
3=Read no other file
This is like
0 Default \| Parameter file \| Default near FoxBin2Prg \| all other config files
1 Default \| Parameter file \| Inheritance from root to parent of folder \| folder and subdirs
2 Default \| Parameter file \| folder and subdirs
3 Default \| Parameter file | ||| | XXX_Conversion_Support | n | Defines the conversion operation per filetype | | | | For code:
0=No support,
1=Generate _Text_ (Diff),
2=Generate _Text_ and _Bin_ (Merge) | @@ -742,4 +742,4 @@ For options on integrating FoxBin2Prg with SCM tools, look at this topic: See [FoxBin2Prg and use with git](./FoxBin2Prg_git.md) ---- -Last changed: _2023/08/31_ \ No newline at end of file +Last changed: _2023/09/01_ \ No newline at end of file diff --git a/docs/FoxBin2Prg_Object.md b/docs/FoxBin2Prg_Object.md index 6712fcb..0fd230c 100644 --- a/docs/FoxBin2Prg_Object.md +++ b/docs/FoxBin2Prg_Object.md @@ -62,7 +62,7 @@ Some settings will overwrite configuration. Using an object as cCFG_File will ov | 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 | -| cDebug | _0_, 1, 2 | '0 'no debug, '1' for generating process LOGs, stop on errors, '2' like '1' and special log. | +| cDebug | _0_, 1, 2 | '0 'no debug, '1' for generating process LOGs, stop on errors, '2' like '1' and special log.
This has precedence over any value in the config files. Only the first valid value will be used. | | cDontShowProgress | 0, _1_, 2 | '0' show progress, '1' for **not** showing the process window, '2' Show only for multi-file processing | | oModule | | Internal use for Unit Testing | | oEx | | Exception object, return for errorhandling | @@ -101,4 +101,4 @@ The _BIN2PRG, PRG2BIN, INTERACTIVE, SHOWMSG_ cTypes might be mixed freely like: Return value is 0=OK, 1=Error. ---- -Last changed: _2023/08/26_ \ No newline at end of file +Last changed: _2023/09/01_ \ No newline at end of file diff --git a/docs/FoxBin2Prg_Run.md b/docs/FoxBin2Prg_Run.md index 2548ab1..04f5aa5 100644 --- a/docs/FoxBin2Prg_Run.md +++ b/docs/FoxBin2Prg_Run.md @@ -87,7 +87,7 @@ just select and process each one independently, in parallel if you like, but in | 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 | -| cDebug | _0_, 1, 2 | '0 'no debug, '1' for generating process LOGs, stop on errors, '2' like '1' and special log. | +| cDebug | _0_, 1, 2 | '0 'no debug, '1' for generating process LOGs, stop on errors, '2' like '1' and special log.
This has precedence over any value in the config files. | | cDontShowProgress | 0, _1_, 2 | '0' show progress, '1' for **not** showing the process window, '2' Show only for multi-file processing | | cOriginalFileName | text | used in those cases in which inputFile is a temporary filename and you want to generate the correct filename on the header of the _Text_ version | | cRecompile | 0, _1_ | Indicates recompile ('1') the _Binary_ once generated.
True if called from SCCAPI (SCCTEXT.PRG) compatibility mode. | @@ -119,7 +119,7 @@ The filename is an external variable parameter received when SendingTo FoxBin2Pr | | If cOutputFile is empty, a file FOXBIN2PRG.\_CFG will be created in default foder. | | -t (t) | creates a template table-config-file _cOutputFile_ ( like \_TableName\_.dbf.cfg ) | | cCFG_File | Indicates a special CFG filename for default values
Note, if the "regular" config files are used orn not, is controlled by the setting *AllowInheritance* in *this** file. | -| cDebug | '1' for generating process LOGs, stop on errors | +| cDebug | '1' for generating process LOGs, stop on errors
This has precedence over any value in the config files. | ### Usage 3 `FOXBIN2PRG.EXE VERNO` @@ -178,4 +178,4 @@ FoxBin2Prg - Text2Binary.lnk \foxbin2prg.exe "PRG2BIN-SHOWMSG" FoxBin2Prg.lnk \foxbin2prg.exe "INTERACTIVE-SHOWMSG" ``` ---- -Last changed: _2023/08/30_ \ No newline at end of file +Last changed: _2023/09/01_ \ No newline at end of file diff --git a/foxbin2prg.cfg.txt b/foxbin2prg.cfg.txt index 33b553c..034829d 100644 --- a/foxbin2prg.cfg.txt +++ b/foxbin2prg.cfg.txt @@ -1,13 +1,13 @@ *################################################################################################################ *FOXBIN2PRG.CFG configuration options: (If no values given, these are the DEFAULTS) -*Version: v1.20.03 +*Version: v1.20.04 ***************************************************************************************************************** * Note, configuration files will follow an inheritance. * 1. Default values * 2., optional FOXBIN2PRG.CFG in folder of FOXBIN2PRG.EXE * or, if defined, a config file given by a parameter calling FOXBIN2PRG -* if used, the AllowInheritance setting controls if other config files will be evaluated (default). See below. +* if used, the InhibitInheritance setting controls if other config files will be evaluated (default). See below. * 3., optional FOXBIN2PRG.CFG in root of working directory * 4., optional FOXBIN2PRG.CFG in every folder up to the working directory * 5., optional Special settings per single DBF's Syntax: .dbf.cfg in tables folder) @@ -20,14 +20,17 @@ *ShowProgressbar: 1 && 0=Don't show, 1=Allways show, 2=Show only for multi-file processing *DontShowErrors: 0 && Show message errors by default *ExtraBackupLevels: 1 && By default 1 BAK is created. With this you can make more .N.BAK, or none -*Debug: 0 && Don't Activate individual .Log by default +*Debug: 0 && 0=Don't Activate individual .Log by default +* && 1=Activate individual .Log by default +* && 2=??? +* && Only valid if not controlled by parameter *BackgroundImage: && Backgroundimage for process form. Empty for empty Background. File not found uses default. *HomeDir: 1 && Home directory in PJX * && 0 don't save HomeDir in PJ2 * && 1 save HomeDir in PJ2 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *-- Settings for config file via parameter only -*AllowInheritance: 0 && 0=Allow scanning "regular" config files (file via parameter is just additional default) +*InhibitInheritance: 0 && 0=Allow scanning "regular" config files (file via parameter is just additional default) * && 1=Only read tree from root of the file given by parameter, not FoxBin2Prg default * && 2=Only read folder and subfolder of the file given by parameter * && 3=Read no other file diff --git a/foxbin2prg.dbc.txt b/foxbin2prg.dbc.txt deleted file mode 100644 index c4b3895..0000000 --- a/foxbin2prg.dbc.txt +++ /dev/null @@ -1,12 +0,0 @@ -*################################################################################################################ -*-- Individual DBF configuration file (syntax: filename.dbf.cfg) Defaults see FoxBin2prg.cfg -*Version: v1.20.03 -***************************************************************************************************************** - -*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: && Field expresion. ie: name+str(age,3) -*DBF_Conversion_Condition: && Logical expression. ie: age > 10 AND NOT DELETED() -*DBF_IndexList: && comma delimited list of additonal non structural index files, cdx or idx -*DBF_BinChar_Base64: <0,1> && 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 -* \ No newline at end of file diff --git a/foxbin2prg.dbf.cfg.txt b/foxbin2prg.dbf.cfg.txt deleted file mode 100644 index d68cc0a..0000000 --- a/foxbin2prg.dbf.cfg.txt +++ /dev/null @@ -1,12 +0,0 @@ -*################################################################################################################ -*-- Individual DBF configuration file (syntax: filename.dbf.cfg) Defaults see FoxBin2prg.cfg -*Version: v1.19.79 -***************************************************************************************************************** - -*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: && Field expresion. ie: name+str(age,3) -*DBF_Conversion_Condition: && Logical expression. ie: age > 10 AND NOT DELETED() -*DBF_IndexList: && comma delimited list of additonal non structural index files, cdx or idx -*DBF_BinChar_Base64: <0,1> && 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 -* \ No newline at end of file diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index 91a743c..4b53c5f 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -26,7 +26,7 @@ _LegalTrademark = "MIT License" _ProductName = "FOXBIN2PRG" _MajorVer = "1" _MinorVer = "20" -_Revision = "3" +_Revision = "4" _LanguageID = "1034" _AutoIncrement = "0" * diff --git a/foxbin2prg.prg b/foxbin2prg.prg index e429dd1..ba47469 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -1,5 +1,5 @@ #DEFINE DN_FB2PRG_VERSION 1.20 -#DEFINE DC_FB2PRG_VERSION_REAL '1.20.03' +#DEFINE DC_FB2PRG_VERSION_REAL '1.20.04' *--------------------------------------------------------------------------------------------------- * Module.........: FOXBIN2PRG.PRG - FOR VISUAL FOXPRO 9.0 @@ -308,11 +308,15 @@ * 20/08/2023 LScheffler v1.20.00 Bug Fix: codepage is lost on recreation, issue #96, fixes issue #95 (OLE) as well (KestasL) * 30/08/2023 LScheffler v1.20.01 Bug Fix: Some values of config file would not be read, if the inline comment "&&" was not in the line (LScheffler) * 30/08/2023 LScheffler v1.20.01 Bug Fix: config file set by parameter would be ignored, if the folder contains FoxBin2Prg.cfg (LScheffler) -* 30/08/2023 LScheffler v1.20.01 Enhancement: For config file template new options to set config file and debug added +* 30/08/2023 LScheffler v1.20.01 Enhancement: For run to create config file template new options to set config file and debug added * 30/08/2023 LScheffler v1.20.01 Enhancement: New option for parameter set config file to control the use of "regular" config files * 30/08/2023 LScheffler v1.20.01 Bug Fix: Fixed problems with table config files (LScheffler) * 31/08/2023 LScheffler v1.20.02 Enhancement: New option for parameter set config file to control the use of "regular" config files enhanced. * 31/08/2023 LScheffler v1.20.03 Enhancement: New option "tcCFG_File" for get_DirSettings method. +* 01/09/2023 LScheffler v1.20.04 Enhancement: New option "tcDebug" for get_DirSettings method. +* 01/09/2023 LScheffler v1.20.04 Enhancement: For better clearance, renamed setting AllowInheritance to InhibitInheritance. +* 01/09/2023 LScheffler v1.20.04 Enhancement: The debug option set via parameter has precedence over value from config file. +* 01/09/2023 LScheffler v1.20.04 Enhancement: For debug option set via parameter only first valid call is used * * *--------------------------------------------------------------------------------------------------- @@ -1048,9 +1052,10 @@ Define Class c_foxbin2prg As Session *!* + [] ; *!* + [] ; *!* + [] ; -*!* + [] ; +*!* + [] ; *!* + [] ; *!* + [] ; +*!* + [] ; Dimension a_ProcessedFiles(1, 6) Protected n_CFG_Actual, l_Main_CFG_Loaded, o_Configuration, l_CFG_CachedAccess @@ -1085,6 +1090,7 @@ Define Class c_foxbin2prg As Session l_CFG_CachedAccess = .F. n_CFG_EvaluateFromParam = 0 n_Debug = 0 + n_DebugP = .NULL. n_BodyDevInfo = 0 && Indica si se debe incluir el campo DevInfo en el cuerpo de los pjx/pj2 l_Error = .F. && Indicador de errores del proceso actual l_Errors = .F. && Indicador de error de la sesión actual, acumulativo de todos los procesos @@ -1124,7 +1130,7 @@ Define Class c_foxbin2prg As Session n_ExcludeDBFAutoincNextval = 0 l_ClassPerFileCheck = .F. *!* LScheffler 30.08.2023 - n_AllowInheritance = 0 + n_InhibitInheritance = 0 l_RedirectClassPerFileToMain = .F. n_RedirectClassType = 0 && 0=Redireccionar Todas las clases, 1=Redireccionar solo la clase indicada l_NoTimestamps = .T. @@ -1183,7 +1189,8 @@ Define Class c_foxbin2prg As Session *issue #96, [KestasL] keep CodePage relavant information for binary sources i_CPID = 0 &&CPCURRENT(1) *!* LScheffler 31.08.2023 more sophisticated control of inheritance for para file - c_SingleConfig_Folder = '' + c_SingleConfig_Folder = '' + o_CFG = .NULL. Procedure Init Lparameters tcCFG_File, tcCancelWithEscKey @@ -1288,6 +1295,9 @@ Define Class c_foxbin2prg As Session This.o_FSO = Createobject("Scripting.FileSystemObject") *THIS.o_WSH = CREATEOBJECT("WScript.Shell") This.o_Configuration = Createobject("COLLECTION") + This.o_CFG = Createobject('CL_CFG') +*store default + This.o_CFG.CopyFrom(This) This.evaluateConfiguration() Release lcSys16, lnPosProg, lc_Foxbin2prg_EXE, laValues Return @@ -1528,11 +1538,16 @@ Define Class c_foxbin2prg As Session Procedure n_Debug_ACCESS - If This.n_CFG_Actual = 0 Or Isnull( This.o_Configuration( This.n_CFG_Actual ) ) - Return This.n_Debug - Else - Return Nvl( This.o_Configuration( This.n_CFG_Actual ).n_Debug, This.n_Debug ) - Endif + IF ISNULL(This.n_DebugP) THEN + If This.n_CFG_Actual = 0 Or Isnull( This.o_Configuration( This.n_CFG_Actual ) ) + Return This.n_Debug + Else + Return Nvl( This.o_Configuration( This.n_CFG_Actual ).n_Debug, This.n_Debug ) + Endif + ELSE &&ISNULL(This.n_DebugP) + Return This.n_DebugP + + ENDIF &&ISNULL(This.n_DebugP) Endproc @@ -1706,12 +1721,12 @@ Define Class c_foxbin2prg As Session Endproc *!* LScheffler 30.08.2023 - Procedure n_AllowInheritance_ACCESS + Procedure n_InhibitInheritance_ACCESS *only from base config (and only if this is from parameter) If This.n_CFG_Actual = 0 Or Isnull( This.o_Configuration( 1 ) ) - Return This.n_AllowInheritance + Return This.n_InhibitInheritance Else - Return Nvl( This.o_Configuration( 1 ).n_AllowInheritance, This.n_AllowInheritance ) + Return Nvl( This.o_Configuration( 1 ).n_InhibitInheritance, This.n_InhibitInheritance ) Endif Endproc @@ -2355,7 +2370,7 @@ Define Class c_foxbin2prg As Session * toParentCFG (@? IN ) (Uso interno) Si se pasa un valor, el nuevo CFG copiará primero sus valores de aquí para heredarlos * tl_ForceLog (v? IN ) Force logging of settings. used on cfg setting as object * tcCFG_File (v? IN ) Config file. If a config file is set, the normal chain of inheritance is reset and this file is read atop of the defaults -* Normal inheritance may or may not run, see setting AllowInheritance +* Normal inheritance may or may not run, see setting InhibitInheritance *-------------------------------------------------------------------------------------------------------------- Lparameters tcDontShowProgress, tcDontShowErrors, tcNoTimestamps, tcDebug, tcRecompile, tcExtraBackupLevels ; , tcClearUniqueID, tcOptimizeByFilestamp, tc_InputFile, tcInputFile_Type, toParentCFG, tl_ForceLog, tcCFG_File @@ -2371,35 +2386,60 @@ Define Class c_foxbin2prg As Session , lo_Configuration As Collection ; , loLang As CL_LANG Of 'FOXBIN2PRG.PRG' ; , loEx As Exception, llSetSingleConfig, lc_Foxbin2prg_ConfigFile, lc_InputPath - Try With This As c_foxbin2prg Of 'FOXBIN2PRG.PRG' + + If Inlist( Transform(tcDebug), '0', '1', '2' ) Then + .writeLog( C_TAB + ' > Parameter tcDebug: ' + tcDebug +; + IIF(ISNULL(This.n_DebugP), "", ", will be ignored, second use of parameter. Using: " + TRANSFORM(This.n_DebugP) )+CR_LF ) + IF ISNULL(This.n_DebugP) THEN + This.n_Debug = Int(Val(tcDebug)) + This.n_DebugP = This.n_Debug + ENDIF &&ISNULL(This.n_DebugP) + Endif + Store 0 To lnKey llSetSingleConfig = .Null. loLang = _Screen.o_FoxBin2Prg_Lang tcRecompile = Evl(tcRecompile, .c_Recompile) + lo_Configuration = .o_Configuration *!* LScheffler 30.08.2023, is a config file given by programm parameter IF VARTYPE(tcCFG_File)='C' AND !EMPTY(tcCFG_File) THEN - lc_Foxbin2prg_ConfigFile = .c_Foxbin2prg_ConfigFile - .c_Foxbin2prg_ConfigFile = tcCFG_File - .l_Main_CFG_Loaded = .F. - .o_Configuration.Remove(-1) - .n_CFG_EvaluateFromParam = 0 - .l_SingleConfig = .F. - - llSetSingleConfig = .T. - .writeLog( '> ' + Upper(loLang.C_USING_THIS_SETTINGS_LOC) + ': ' + .c_Foxbin2prg_ConfigFile + ; - loLang.C_USING_THIS_SETTINGS_LOC1 ) + IF EMPTY(lo_Configuration.GetKey(tcCFG_File)) THEN + This.writeLog( '> ' + loLang.C_USING_THIS_SETTINGS_LOC6+tcCFG_File ) + + .l_Main_CFG_Loaded = .F. + *restore default + .o_CFG.CopyFrom(.o_CFG,This) + + lc_Foxbin2prg_ConfigFile = .c_Foxbin2prg_ConfigFile + .c_Foxbin2prg_ConfigFile = tcCFG_File + + .o_Configuration.Remove(-1) + .n_CFG_EvaluateFromParam = 0 + .l_SingleConfig = .F. + + llSetSingleConfig = .T. + .writeLog( '> ' + Upper(loLang.C_USING_THIS_SETTINGS_LOC) + ': ' + .c_Foxbin2prg_ConfigFile + ; + loLang.C_USING_THIS_SETTINGS_LOC1 ) + + Else &&EMPTY(lo_Configuration.GetKey(tcCFG_File)) + This.writeLog( '> ' + loLang.C_USING_THIS_SETTINGS_LOC6+tcCFG_File + loLang.C_USING_THIS_SETTINGS_LOC7+; + ICASE(This.n_InhibitInheritance=0, loLang.C_USING_THIS_SETTINGS_LOC2,; + This.n_InhibitInheritance=1, loLang.C_USING_THIS_SETTINGS_LOC3,; + This.n_InhibitInheritance=2, loLang.C_USING_THIS_SETTINGS_LOC4,; + This.n_InhibitInheritance=3, loLang.C_USING_THIS_SETTINGS_LOC5," Failure."+CR_LF)) + + ENDIF &&EMPTY(lo_Configuration.GetKey(tcCFG_File)) ENDIF &&VARTYPE(tcCFG_File)='C' AND !EMPTY(tcCFG_File) lcConfigFile = .c_Foxbin2prg_ConfigFile tc_InputFile = Evl(tc_InputFile, .c_InputFile) tcInputFile_Type = Evl(tcInputFile_Type,'') - lo_Configuration = .o_Configuration If Vartype(lcConfigFile) = "O" loCFG_Manual = lcConfigFile && lcConfigFile is an object CFG generated by get_DirSettings() @@ -2460,18 +2500,18 @@ Define Class c_foxbin2prg As Session DO CASE CASE !.l_SingleConfig *just go ahead - CASE .n_AllowInheritance=0 + CASE .n_InhibitInheritance=0 *read all CASE Empty(lc_InputPath) *whatever, just go ahead - CASE .n_AllowInheritance=3 + CASE .n_InhibitInheritance=3 *read nothing Exit -*!* CASE INLIST(.n_AllowInheritance,1,2) +*!* CASE INLIST(.n_InhibitInheritance,1,2) *!* *not a config file in FoxBinPrg's own folder - CASE INLIST(.n_AllowInheritance,1,2) AND lc_InputPath=.c_SingleConfig_Folder + CASE INLIST(.n_InhibitInheritance,1,2) AND lc_InputPath=.c_SingleConfig_Folder *just in the directory or subdirectory of the config file set by the parameter - CASE .n_AllowInheritance=1 AND .c_SingleConfig_Folder=lc_InputPath + CASE .n_InhibitInheritance=1 AND .c_SingleConfig_Folder=lc_InputPath *just above the config file set by the parameter Otherwise Exit @@ -2601,7 +2641,6 @@ Define Class c_foxbin2prg As Session lo_Configuration.Add( lo_CFG, lcConfigFile ) .n_CFG_Actual = lo_Configuration.Count -ASSERT lo_Configuration.Count<6 .writeLog( '> ' + Upper(loLang.C_CACHING_CONFIG_FOR_DIRECTORY_LOC) + ': ' + lcConfigFile + ; ' CFG_Actual:' + Transform(.n_CFG_Actual) + Icase(.n_CFG_Actual=1, ' [MASTER]', ' [SECONDARY]') ) @@ -2694,8 +2733,11 @@ ASSERT lo_Configuration.Count<6 Case Left( laConfig(m.I), 6 ) == Lower('Debug:') lcValue = Alltrim( Substr( laConfig(m.I), 7 ) ) If Not Inlist( Transform(tcDebug), '0', '1' ) And Inlist( lcValue, '0', '1' ) Then - tcDebug = lcValue - .writeLog( C_TAB + Justfname(lcConfigFile) + ' > tcDebug: ' + Transform(tcDebug) ) + IF ISNULL(This.n_DebugP) THEN + lo_CFG.n_Debug = Int(Val(lcValue)) + ENDIF &&ISNULL(This.n_DebugP) + .writeLog( C_TAB + Justfname(lcConfigFile) + ' > Debug: ' + lcValue +; + IIF(ISNULL(This.n_DebugP), "", ", will be ignored, debug set via parameter. Using: " + TRANSFORM(This.n_DebugP) ) ) Endif *** DH 2021-03-04: handle n_HomeDir configuration setting @@ -2821,14 +2863,14 @@ ASSERT lo_Configuration.Count<6 Endif *!* LScheffler 30.08.2023 - Case Left( laConfig(m.I), 17 ) == Lower('AllowInheritance:') - lcValue = Alltrim( Substr( laConfig(m.I), 18 ) ) + Case Left( laConfig(m.I), 19 ) == Lower('InhibitInheritance:') + lcValue = Alltrim( Substr( laConfig(m.I), 20 ) ) If Inlist( lcValue, '0', '1' , '2' , '3' ) Then IF llSetSingleConfig THEN - lo_CFG.n_AllowInheritance = Int( Val( lcValue ) ) + lo_CFG.n_InhibitInheritance = Int( Val( lcValue ) ) ENDIF &&llSetSingleConfig - .writeLog( C_TAB + Justfname(lcConfigFile) + ' > AllowInheritance: ' + Transform(lcValue) +; + .writeLog( C_TAB + Justfname(lcConfigFile) + ' > InhibitInheritance: ' + Transform(lcValue) +; IIF(m.llSetSingleConfig, "", ", will be ignored, standard configuration file." ) ) Endif @@ -3021,16 +3063,17 @@ ASSERT lo_Configuration.Count<6 If Inlist( Transform(tcNoTimestamps), '0', '1' ) Then lo_CFG.l_NoTimestamps = Not (Transform(tcNoTimestamps) == '0') Endif + If Inlist( Transform(tcClearUniqueID), '0', '1' ) Then lo_CFG.l_ClearUniqueID = Not (Transform(tcClearUniqueID) == '0') Endif - If Inlist( Transform(tcDebug), '0', '1', '2' ) Then - lo_CFG.n_Debug = Int(Val(tcDebug)) - Endif + tcExtraBackupLevels = Evl( tcExtraBackupLevels, Transform( .n_ExtraBackupLevels ) ) + If Isdigit(tcExtraBackupLevels) lo_CFG.n_ExtraBackupLevels = Int( Val( Transform(tcExtraBackupLevels) ) ) Endif + If Inlist( Transform(tcOptimizeByFilestamp), '0', '1', '2' ) Then lo_CFG.n_OptimizeByFilestamp = Int(Val(tcOptimizeByFilestamp)) Endif @@ -3176,26 +3219,22 @@ ASSERT lo_Configuration.Count<6 This.c_SingleConfig_Folder = UPPER(JUSTPATH(tcCFG_File)) This.c_Foxbin2prg_ConfigFile = lc_Foxbin2prg_ConfigFile DO CASE - CASE This.n_AllowInheritance=0 - This.writeLog( '> ' + IIF(This.n_AllowInheritance<3, loLang.C_USING_THIS_SETTINGS_LOC2, loLang.C_USING_THIS_SETTINGS_LOC3 )) - CASE This.n_AllowInheritance=1 - This.writeLog( '> ' + IIF(This.n_AllowInheritance<3, loLang.C_USING_THIS_SETTINGS_LOC2, loLang.C_USING_THIS_SETTINGS_LOC3 )) - CASE This.n_AllowInheritance=2 - This.writeLog( '> ' + IIF(This.n_AllowInheritance<3, loLang.C_USING_THIS_SETTINGS_LOC2, loLang.C_USING_THIS_SETTINGS_LOC3 )) - CASE This.n_AllowInheritance=3 - This.writeLog( '> ' + IIF(This.n_AllowInheritance<3, loLang.C_USING_THIS_SETTINGS_LOC2, loLang.C_USING_THIS_SETTINGS_LOC3 )) - - OTHERWISE - + CASE This.n_InhibitInheritance=0 + This.writeLog( '> ' + loLang.C_USING_THIS_SETTINGS_LOC2 ) + CASE This.n_InhibitInheritance=1 + This.writeLog( '> ' + loLang.C_USING_THIS_SETTINGS_LOC3 ) + CASE This.n_InhibitInheritance=2 + This.writeLog( '> ' + loLang.C_USING_THIS_SETTINGS_LOC4 ) + CASE This.n_InhibitInheritance=3 + This.writeLog( '> ' + loLang.C_USING_THIS_SETTINGS_LOC5 ) ENDCASE - This.writeLog( '> ' + IIF(This.n_AllowInheritance<3, loLang.C_USING_THIS_SETTINGS_LOC2, loLang.C_USING_THIS_SETTINGS_LOC3 )) - IF This.n_AllowInheritance=0 THEN - This.evaluateConfiguration( '', '', '', '', '', '', '', '', This.c_Foxbin2prg_ConfigFile, C_FILETYPE_FILE, @toParentCFG) + IF This.n_InhibitInheritance=0 THEN + This.evaluateConfiguration( '', '', '', '', '', '', '', '', This.c_Foxbin2prg_ConfigFile, C_FILETYPE_FILE, lo_CFG) *In case we run FoxBin2Prg against FoxBin2Prg folder. do not reread - This.n_AllowInheritance = 1 + This.n_InhibitInheritance = 1 - ENDIF &&This.n_AllowInheritance=0 + ENDIF &&This.n_InhibitInheritance=0 ENDIF &&llSetSingleConfig Store .Null. To lo_Configuration, lo_CFG, loEx @@ -3651,7 +3690,7 @@ ASSERT lo_Configuration.Count<6 * tcClearUniqueID (v? IN ) Indica si se debe limpiar el UniqueID ('1') o no ('0' ó vacío) * tcOptimizeByFilestamp (v? IN ) Indica si se debe optimizar por filestamp mayor o igual ('1'), solo igual ('2') o no optimizar ('0' ó vacío) * tcCFG_File (v? IN ) Config file. If a config file is set, the normal chain of inheritance is reset and this file is read atop of the defaults -* Normal inheritance may or may not run, see setting AllowInheritance +* Normal inheritance may or may not run, see setting InhibitInheritance *-------------------------------------------------------------------------------------------------------------- Lparameters tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress ; , toModulo, toEx As Exception, tlRelanzarError, tcOriginalFileName, tcRecompile, tcNoTimestamps ; @@ -3908,13 +3947,13 @@ ASSERT lo_Configuration.Count<6 * added option to create config files Case ( m.lcType=='-t' Or m.lcType=='t' ) And ( Vartype( m.tc_InputFile )='C' And !Empty( m.tc_InputFile ) ) loLang = _Screen.o_FoxBin2Prg_Lang - Strtofile( Strtran( Strtran( '*' + m.loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_tab_cfg, 0h0D0A, 0h0D0A + '*'), 0h0D0A + '*' + 0h0D0A, 0h0D0A0D0A), m.tc_InputFile ) + Strtofile( Strtran( Strtran( '*' + m.loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_tab_cfg, CR_LF, CR_LF + '*'), CR_LF + '*' + CR_LF, CR_LF+CR_LF), m.tc_InputFile ) .writeLog_Flush() Case ( m.lcType=='-c' Or m.lcType=='c' ) tc_InputFile = Iif( Vartype( m.tc_InputFile )='C' And !Empty( m.tc_InputFile ), m.tc_InputFile, 'FoxBin2Prg._cfg' ) loLang = _Screen.o_FoxBin2Prg_Lang - Strtofile( Strtran( '*' + Strtran( m.loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_cfg, 0h0D0A, 0h0D0A + '*'), 0h0D0A + '*' + 0h0D0A, 0h0D0A0D0A), m.tc_InputFile ) + Strtofile( Strtran( '*' + Strtran( m.loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_cfg, CR_LF, CR_LF + '*'), CR_LF + '*' + CR_LF, CR_LF+CR_LF), m.tc_InputFile ) .writeLog_Flush() *!* /Changed by: LScheffler 15.2.2021 @@ -3939,7 +3978,7 @@ ASSERT lo_Configuration.Count<6 tc_InputFile = Iif( Vartype( m.tc_InputFile )='C' And !Empty( m.tc_InputFile ), m.tc_InputFile, 'FoxBin2Prg._cfg' ) loLang = _Screen.o_FoxBin2Prg_Lang - lcText = Strtran( '*' + Strtran( m.loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_cfg, 0h0D0A, 0h0D0A + '*'), 0h0D0A + '*' + 0h0D0A, 0h0D0A0D0A) + lcText = Strtran( '*' + Strtran( m.loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_cfg, CR_LF, CR_LF + '*'), CR_LF + '*' + CR_LF, CR_LF+CR_LF) lnLines = Alines(laLines,m.lcText) *now for each option @@ -4090,8 +4129,8 @@ ASSERT lo_Configuration.Count<6 laOptions(49,1) = "*BackgroundImage:" && Background image laOptions(49,2) = ".c_BackgroundImage" laOptions(49,3) = 7 - laOptions(50,1) = "*AllowInheritance:" && Inheritance out of config via parameter - laOptions(50,2) = ".n_AllowInheritance" + laOptions(50,1) = "*InhibitInheritance:" && Inheritance out of config via parameter + laOptions(50,2) = ".n_InhibitInheritance" laOptions(50,3) = 4 For lnOption = 1 To m.lnOptions @@ -4170,7 +4209,7 @@ ASSERT lo_Configuration.Count<6 Ains(m.laLines,4) laLines( 4 ) = Textmerge( m.loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_Header4 ) For lnLine = 1 To m.lnLines - lcText = m.lcText+ m.laLines( m.lnLine )+0h0D0A + lcText = m.lcText+ m.laLines( m.lnLine )+CR_LF Endfor &&lnLine Strtofile( m.lcText, m.tc_InputFile ) @@ -5459,16 +5498,17 @@ ASSERT lo_Configuration.Count<6 Procedure get_DirSettings *--------------------------------------------------------------------------------------------------- -* PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) -* tcDir (@? IN ) Directorio del que devolver su configuración -* tcCFG_File (v? IN ) Config file. If a config file is set, the normal chain of inheritance is reset and this file is read atop of the defaults -* Normal inheritance may or may not run, see setting AllowInheritance -* RETORNO (@? OUT) Objeto CFG +* PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) +* tcDir (@? IN ) Directorio del que devolver su configuración +* tcDebug (v? IN ) '1' write debug log (posiibly to GETENV("TEMP") ) +* tcCFG_File (v? IN ) Config file. If a config file is set, the normal chain of inheritance is reset and this file is read atop of the defaults +* Normal inheritance may or may not run, see setting InhibitInheritance +* RETORNO (@? OUT) Objeto CFG *--------------------------------------------------------------------------------------------------- - Lparameters tcDir, tcCFG_File + Lparameters tcDir, tcDebug, tcCFG_File If Not Empty(tcDir) - This.evaluateConfiguration( '', '', '', '', '', '', '', '', tcDir, 'D', , , tcCFG_File ) + This.evaluateConfiguration( '', '', '', tcDebug, '', '', '', '', tcDir, 'D', , , tcCFG_File ) Endif If This.n_CFG_Actual = 0 Then @@ -7275,8 +7315,8 @@ Define Class frm_main As Form Thisform.Caption = 'FoxBin2Prg ' + _Screen.c_FB2PRG_EXE_Version + ' - ' + loLang.C_FOXBIN2PRG_SYNTAX_INFO_LOC Endif - Thisform.edt_help.Value = loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC+0h0D0A+; - STRTRAN(loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_cfg,'&'+'&','')+0h0D0A+; + Thisform.edt_help.Value = loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC+CR_LF+; + STRTRAN(loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_cfg,'&'+'&','')+CR_LF+; STRTRAN(loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_tab_cfg,'&'+'&','') Endif @@ -12107,7 +12147,7 @@ Define Class c_conversor_prg_a_vcx As c_conversor_prg_a_bin If Found() Then Error loLang.C_ClassTwice_Header_LOC + ; loLang.C_ClassTwice_Lib_LOC + Justfname( Dbf() ) + ; - loLang.C_ClassTwice_Class_LOC + loClase._ObjName+0h0D0A + loLang.C_ClassTwice_Class_LOC + loClase._ObjName+CR_LF Endif &&FOUND() *!* /Changed by LScheffler 07.12.2021 @@ -14377,7 +14417,7 @@ Define Class c_conversor_prg_a_dbf As c_conversor_prg_a_bin &lcIndex. Endfor - toFoxBin2Prg.writeLog( Replicate('+', 100) + 0h0D0A ) + toFoxBin2Prg.writeLog( Replicate('+', 100) + CR_LF ) Endif &&toTable._Indexes.COUNT # 0 @@ -26704,7 +26744,7 @@ Define Class CL_DBF_INDEXES As CL_COL_BASE ENDTEXT Endif &&!EMPTY(m.lcText) - toFoxBin2Prg.writeLog( Replicate('+', 100)+0h0D0A ) + toFoxBin2Prg.writeLog( Replicate('+', 100)+CR_LF ) * /LScheffler Catch To loEx @@ -27405,7 +27445,7 @@ Define Class CL_DBF_RECORD As CL_CUS_BASE *!* TEXT .. ENDTEXT removes trailing spaces from lines inserted with TEXXTMERGE *!* Char etc are processed special If Vartype(luValue) = 'C' - lcText = lcText + 0h0D0A + ' <' + lcField + '>' + luValue + '' + lcText = lcText + CR_LF + ' <' + lcField + '>' + luValue + '' Else TEXT TO lcText TEXTMERGE NOSHOW flags 1+2 PRETEXT 1+2 additive <<>> <<'<' + lcField + '>'>><><<''>> @@ -30919,7 +30959,7 @@ Define Class CL_CFG As Custom *!* /Changed by: LScheffler 21.02.2021 l_ClassPerFileCheck = .Null. *!* LScheffler 30.08.2023 - n_AllowInheritance = .Null. + n_InhibitInheritance = .Null. n_ExtraBackupLevels = .Null. c_VC2 = .Null. c_SC2 = .Null. @@ -30950,9 +30990,14 @@ Define Class CL_CFG As Custom Procedure CopyFrom *-- Copia las propiedades del CFG indicado - Lparameters toParentCFG + Lparameters toParentCFG,toSourceCFG - With This As CL_CFG Of 'FOXBIN2PRG.PRG' + IF PCOUNT()=1 THEN + toSourceCFG = This + ENDIF &&PCOUNT()=1 + +* With This As CL_CFG Of 'FOXBIN2PRG.PRG' + With toSourceCFG As CL_CFG Of 'FOXBIN2PRG.PRG' .c_Foxbin2prg_FullPath = toParentCFG.c_Foxbin2prg_FullPath .c_Foxbin2prg_ConfigFile = toParentCFG.c_Foxbin2prg_ConfigFile .c_CurDir = toParentCFG.c_CurDir @@ -30986,7 +31031,7 @@ Define Class CL_CFG As Custom *!* /Changed by: LScheffler 21.02.2021 .l_ClassPerFileCheck = toParentCFG.l_ClassPerFileCheck *!* LScheffler 30.08.2023 - .n_AllowInheritance = toParentCFG.n_AllowInheritance + .n_InhibitInheritance = toParentCFG.n_InhibitInheritance .n_ExtraBackupLevels = toParentCFG.n_ExtraBackupLevels .c_VC2 = toParentCFG.c_VC2 .c_SC2 = toParentCFG.c_SC2 @@ -31125,6 +31170,8 @@ Define Class CL_LANG As Custom C_USING_THIS_SETTINGS_LOC3 = "" C_USING_THIS_SETTINGS_LOC4 = "" C_USING_THIS_SETTINGS_LOC5 = "" + C_USING_THIS_SETTINGS_LOC6 = "" + C_USING_THIS_SETTINGS_LOC7 = "" C_WARNING_LOC = "" C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "" C_WITH_ERRORS_LOC = "" @@ -31206,9 +31253,9 @@ Define Class CL_LANG As Custom .C_FILENAME_LOC = "Fichier" .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "ERREUR" .C_FOXBIN2PRG_SYNTAX_INFO_LOC = "SYNTAX AND PARAMETERS INFO" - .C_ClassTwice_Header_LOC = 0h0D0A+"Class defined twice."+0h0D0A - .C_ClassTwice_Lib_LOC = 0h0D0A+"Library: " - .C_ClassTwice_Class_LOC = 0h0D0A+"Class: " + .C_ClassTwice_Header_LOC = CR_LF+"Class defined twice."+0h0D0A + .C_ClassTwice_Lib_LOC = CR_LF+"Library: " + .C_ClassTwice_Class_LOC = CR_LF+"Class: " TEXT TO .C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 <<>>################################################################################################################ <<>>FoxBin2Prg Home Page and download: https://github.com/fdbozzo/foxbin2prg/wiki - Fernando D. Bozzo (2013.11.25) @@ -31272,7 +31319,7 @@ Define Class CL_LANG As Custom <<>> 1. Default values <<>> 2., optional FOXBIN2PRG.CFG in folder of FOXBIN2PRG.EXE <<>> or, if defined, a config file given by a parameter calling FOXBIN2PRG - <<>> if used, the AllowInheritance setting controls if other config files will be evaluated (default) + <<>> if used, the InhibitInheritance setting controls if other config files will be evaluated (default) <<>> 3., optional FOXBIN2PRG.CFG in root of working directory <<>> 4., optional FOXBIN2PRG.CFG in every folder up to the working directory <<>> 5., optional Special settings per single DBF's Syntax: .dbf.cfg in tables folder) @@ -31285,14 +31332,17 @@ Define Class CL_LANG As Custom <<>>ShowProgressbar: 1 && 0=Don't show, 1=Allways show, 2=Show only for multi-file processing <<>>DontShowErrors: 0 && Show message errors by default <<>>ExtraBackupLevels: 1 && By default 1 BAK is created. With this you can make more .N.BAK, or none - <<>>Debug: 0 && Don't Activate individual .Log by default + <<>>Debug: 0 && 0=Don't Activate individual .Log by default + <<>> && 1=Activate individual .Log by default + <<>> && 2=??? + <<>> && Only valid if not controlled by parameter <<>>BackgroundImage: && Backgroundimage for process form. Empty for empty Background. File not found uses default. <<>>HomeDir: 1 && Home directory in PJX <<>> && 0 don't save HomeDir in PJ2 <<>> && 1 save HomeDir in PJ2 <<>>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <<>>-- Settings for config file via parameter only - <<>>AllowInheritance: 0 && 0=Allow scanning "regular" config files (file via parameter is just additional default) + <<>>InhibitInheritance: 0 && 0=Allow scanning "regular" config files (file via parameter is just additional default) <<>> && 1=Only read directory branch from root to parent of folder and below, not FoxBin2Prg default <<>> && 2=Only read folder and subfolder of the file given by parameter <<>> && 3=Read no other file @@ -31458,10 +31508,12 @@ Define Class CL_LANG As Custom .C_USE_FILE_TIMESTAMP_OPTIMIZATION_LOC = "Utilisez le fichier Optimisation d'horodatage" .C_USING_THIS_SETTINGS_LOC = "Utilisation de ce paramčtre" .C_USING_THIS_SETTINGS_LOC1 = " BY PARAMETER, skipping all previous config!" - .C_USING_THIS_SETTINGS_LOC2 = " Parsing of full configuration allowed."+0h0D0A - .C_USING_THIS_SETTINGS_LOC3 = " Parsing configuration in parent~ and subdirectories allowed."+0h0D0A - .C_USING_THIS_SETTINGS_LOC4 = " Parsing configuration in subdirectories allowed."+0h0D0A - .C_USING_THIS_SETTINGS_LOC5 = " Parsing of other configuration allowed."+0h0D0A + .C_USING_THIS_SETTINGS_LOC2 = " Parsing of full configuration allowed."+CR_LF + .C_USING_THIS_SETTINGS_LOC3 = " Parsing configuration in parent~ and subdirectories allowed."+CR_LF + .C_USING_THIS_SETTINGS_LOC4 = " Parsing configuration in subdirectories allowed."+CR_LF + .C_USING_THIS_SETTINGS_LOC5 = " Parsing of other configuration not allowed."+CR_LF + .C_USING_THIS_SETTINGS_LOC6 = "External configuration file set: " + .C_USING_THIS_SETTINGS_LOC7 = ", using cached config." .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" @@ -31473,11 +31525,11 @@ Define Class CL_LANG As Custom .C_INDEX2BIN_STRUCTURAL_LOC = " TAGs for structural index" .C_INDEX2BIN_STANDALONE_LOC = " Standalone index " .C_INDEX2BIN_COMPOUND_LOC = " TAGs for compound index " - .C_PJXPATH_ERR_LOC1 = 0h0D0A + 'Main file "' - .C_PJXPATH_ERR_LOC2 = 0h0D0A + 'Project icon file "' - .C_PJXPATH_ERR_LOC3 = 0h0D0A + 'File ""' - .C_PJXPATH_ERR_LOC4 = '"' + 0h0D0A + 'not in PJX folder structure, "' - .C_PJXPATH_ERR_LOC5 = '",' + 0h0D0A + 'check option "CheckFileInPath".' + 0h0D0A0D0A + .C_PJXPATH_ERR_LOC1 = CR_LF + 'Main file "' + .C_PJXPATH_ERR_LOC2 = CR_LF + 'Project icon file "' + .C_PJXPATH_ERR_LOC3 = CR_LF + 'File ""' + .C_PJXPATH_ERR_LOC4 = '"' + CR_LF + 'not in PJX folder structure, "' + .C_PJXPATH_ERR_LOC5 = '",' + CR_LF + 'check option "CheckFileInPath".' + CR_LF+CR_LF Case Inlist(tcLanguage, '34', 'ES') && Spanish (Espańol) *------------------------------------------------------------------------------------------------------------------------------------------- @@ -31521,9 +31573,9 @@ Define Class CL_LANG As Custom .C_FILENAME_LOC = "Archivo" .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "ERROR" .C_FOXBIN2PRG_SYNTAX_INFO_LOC = "INFORMACIÓN DE SINTAXIS Y PARÁMETROS" - .C_ClassTwice_Header_LOC = 0h0D0A+"Class defined twice."+0h0D0A - .C_ClassTwice_Lib_LOC = 0h0D0A+"Library: " - .C_ClassTwice_Class_LOC = 0h0D0A+"Class: " + .C_ClassTwice_Header_LOC = CR_LF+"Class defined twice."+CR_LF + .C_ClassTwice_Lib_LOC = CR_LF+"Library: " + .C_ClassTwice_Class_LOC = CR_LF+"Class: " TEXT TO .C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 <<>>################################################################################################################ <<>>Página principal y descarga de FoxBin2Prg: https://github.com/fdbozzo/foxbin2prg/wiki - Fernando D. Bozzo (2013.11.25) @@ -31587,7 +31639,7 @@ Define Class CL_LANG As Custom <<>> 1. Default values <<>> 2., optional FOXBIN2PRG.CFG in folder of FOXBIN2PRG.EXE <<>> or, if defined, a config file given by a parameter calling FOXBIN2PRG - <<>> if used, the AllowInheritance setting controls if other config files will be evaluated (default) + <<>> if used, the InhibitInheritance setting controls if other config files will be evaluated (default) <<>> 3., optional FOXBIN2PRG.CFG in root of working directory <<>> 4., optional FOXBIN2PRG.CFG in every folder up to the working directory <<>> 5., optional Special settings per single DBF's Syntax: .dbf.cfg in tables folder) @@ -31600,14 +31652,17 @@ Define Class CL_LANG As Custom <<>>ShowProgressbar: 1 && 0=Don't show, 1=Allways show, 2=Show only for multi-file processing <<>>DontShowErrors: 0 && Show message errors by default <<>>ExtraBackupLevels: 1 && By default 1 BAK is created. With this you can make more .N.BAK, or none - <<>>Debug: 0 && Don't Activate individual .Log by default + <<>>Debug: 0 && 0=Don't Activate individual .Log by default + <<>> && 1=Activate individual .Log by default + <<>> && 2=??? + <<>> && Only valid if not controlled by parameter <<>>BackgroundImage: && Backgroundimage for process form. Empty for empty Background. File not found uses default. <<>>HomeDir: 1 && Home directory in PJX <<>> && 0 don't save HomeDir in PJ2 <<>> && 1 save HomeDir in PJ2 <<>>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <<>>-- Settings for config file via parameter only - <<>>AllowInheritance: 0 && 0=Allow scanning "regular" config files (file via parameter is just additional default) + <<>>InhibitInheritance: 0 && 0=Allow scanning "regular" config files (file via parameter is just additional default) <<>> && 1=Only read directory branch from root to parent of folder and below, not FoxBin2Prg default <<>> && 2=Only read folder and subfolder of the file given by parameter <<>> && 3=Read no other file @@ -31773,10 +31828,12 @@ Define Class CL_LANG As Custom .C_USE_FILE_TIMESTAMP_OPTIMIZATION_LOC = "Usar Optimización de filestamp de archivo" .C_USING_THIS_SETTINGS_LOC = "Usando esta configuración" .C_USING_THIS_SETTINGS_LOC1 = " BY PARAMETER, skipping all previous config!" - .C_USING_THIS_SETTINGS_LOC2 = " Parsing of full configuration allowed."+0h0D0A - .C_USING_THIS_SETTINGS_LOC3 = " Parsing configuration in parent~ and subdirectories allowed."+0h0D0A - .C_USING_THIS_SETTINGS_LOC4 = " Parsing configuration in subdirectories allowed."+0h0D0A - .C_USING_THIS_SETTINGS_LOC5 = " Parsing of other configuration allowed."+0h0D0A + .C_USING_THIS_SETTINGS_LOC2 = " Parsing of full configuration allowed."+CR_LF + .C_USING_THIS_SETTINGS_LOC3 = " Parsing configuration in parent~ and subdirectories allowed."+CR_LF + .C_USING_THIS_SETTINGS_LOC4 = " Parsing configuration in subdirectories allowed."+CR_LF + .C_USING_THIS_SETTINGS_LOC5 = " Parsing of other configuration not allowed."+CR_LF + .C_USING_THIS_SETTINGS_LOC6 = "External configuration file set: " + .C_USING_THIS_SETTINGS_LOC7 = ", using cached config." .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" @@ -31788,11 +31845,11 @@ Define Class CL_LANG As Custom .C_INDEX2BIN_STRUCTURAL_LOC = " TAGs for structural index" .C_INDEX2BIN_STANDALONE_LOC = " Standalone index " .C_INDEX2BIN_COMPOUND_LOC = " TAGs for compound index " - .C_PJXPATH_ERR_LOC1 = 0h0D0A + 'Main file "' - .C_PJXPATH_ERR_LOC2 = 0h0D0A + 'Project icon file "' - .C_PJXPATH_ERR_LOC3 = 0h0D0A + 'File ""' - .C_PJXPATH_ERR_LOC4 = '"' + 0h0D0A + 'not in PJX folder structure, "' - .C_PJXPATH_ERR_LOC5 = '",' + 0h0D0A + 'check option "CheckFileInPath".' + 0h0D0A0D0A + .C_PJXPATH_ERR_LOC1 = CR_LF + 'Main file "' + .C_PJXPATH_ERR_LOC2 = CR_LF + 'Project icon file "' + .C_PJXPATH_ERR_LOC3 = CR_LF + 'File ""' + .C_PJXPATH_ERR_LOC4 = '"' + CR_LF + 'not in PJX folder structure, "' + .C_PJXPATH_ERR_LOC5 = '",' + CR_LF + 'check option "CheckFileInPath".' + CR_LF+CR_LF Case Inlist(tcLanguage, '49', 'DE') && German (Alemán) *------------------------------------------------------------------------------------------------------------------------------------------- @@ -31803,7 +31860,7 @@ Define Class CL_LANG As Custom .C_BACKLINK_CANT_UPDATE_BL_LOC = "Backlink kann nicht aktualisiert werden" .C_BACKLINK_OF_TABLE_LOC = "von Tabelle" .C_BACKUP_OF_LOC = "Erzeuge Backup von: " - .C_CACHING_CONFIG_FOR_DIRECTORY_LOC = "Caching Config für Verzeichnis" + .C_CACHING_CONFIG_FOR_DIRECTORY_LOC = "Caching Konfiguration für Verzeichnis" .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Kann Datei [<>] nicht generieren, da sie schreibgeschützt ist" .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "Optimierung: Grund Datei [<>] Schon verarbeitet, das Überspringen Verarbeitung der Datei [<>]" .C_CONFIGFILE_LOC = "Benutzte Konfigurationsdatei:" @@ -31836,9 +31893,9 @@ Define Class CL_LANG As Custom .C_FILENAME_LOC = "Datei" .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FEHLER" .C_FOXBIN2PRG_SYNTAX_INFO_LOC = "SYNTAX UND PARAMETER INFORMATION" - .C_ClassTwice_Header_LOC = 0h0D0A+"Klasse doppelt deklariert."+0h0D0A - .C_ClassTwice_Lib_LOC = 0h0D0A+"Bibliothek: " - .C_ClassTwice_Class_LOC = 0h0D0A+"Klasse: " + .C_ClassTwice_Header_LOC = CR_LF+"Klasse doppelt deklariert."+CR_LF + .C_ClassTwice_Lib_LOC = CR_LF+"Bibliothek: " + .C_ClassTwice_Class_LOC = CR_LF+"Klasse: " TEXT TO .C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 <<>>################################################################################################################ <<>>FoxBin2Prg Home Page and download: https://github.com/fdbozzo/foxbin2prg/wiki - Fernando D. Bozzo (2013.11.25) @@ -31903,7 +31960,7 @@ Define Class CL_LANG As Custom <<>> 1. Defaultwerte <<>> 2., optional FOXBIN2PRG.CFG im Vereichnis aus dem FOXBIN2PRG.EXE startet <<>> Oder, wenn definiert, eine Konfigurationsdatei die per parameter an FOXBIN2PRG übergeben wurde. - <<>> Wird diese genutzt, steuert die Einstellung AllowInheritance, ob folgende Konfigurationsdateien ausgewertet werden. (default) + <<>> Wird diese genutzt, steuert die Einstellung InhibitInheritance, ob folgende Konfigurationsdateien ausgewertet werden. (default) <<>> 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) @@ -31916,7 +31973,10 @@ Define Class CL_LANG As Custom <<>>ShowProgressbar: 1 && 0=Zeige Fortschrittsfenster, 1=Zeige es nicht, 2=Zeige Fortschrittsfenster nur, wenn mehrere Dateien konvertiert werden. <<>>DontShowErrors: 0 && 0=Zeige Fehler an, 1=Zeige keine Fehler an <<>>ExtraBackupLevels: 1 && Anzahl der Backup-Ebenen der Binärdateien 0=kein Backup, 1=.BAK, n>1= n-Backup-Ebenen, .n.BAK - <<>>Debug: 0 && 0=Individuelles Logging ist aus 1= Individuelles Log per Datei .Log + <<>>Debug: 0 && 0=Individuelles Logging ist aus + <<>> && 1=Individuelles Log per Datei .Log + <<>> && 2=??? + <<>> && Nur gültig, wenn nicht durch einen Parameter übersteuert <<>>BackgroundImage: && Hintergrundbild für das Formular zur Fortschrittsanzeige. <<>> && Leer erzeugt kein Hintergrundbild. Wird die Datei nicht gefunden, wird der Standardhintergrund verwendet. <<>>HomeDir: 1 && Speichern der HomeDir Eigenschaft in die PJX @@ -31924,7 +31984,7 @@ Define Class CL_LANG As Custom <<>> && 1 Die Eigenschaft wird gespeichert <<>>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <<>>-- Settings for config file via parameter only - <<>>AllowInheritance: 0 && 0=Alle Konfiguration wird gelesen (Die Datei aus dem Parameter ist nur ein zusätzlicher default) + <<>>InhibitInheritance: 0 && 0=Alle Konfiguration wird gelesen (Die Datei aus dem Parameter ist nur ein zusätzlicher default) <<>> && 1=Nur die Vererbung in den Verezeichnissen , Im Verzeichnis der Konfiguration und Unterverzeichnisse werden gelesen <<>> && 2=Nur die Konfiguration des Veruzeichnisses der Parameterdatei und Unterverzeichnisse werden gelesen <<>> && 3=Keine weiter Konfiguration wird gelesen @@ -32113,10 +32173,12 @@ Define Class CL_LANG As Custom .C_USE_FILE_TIMESTAMP_OPTIMIZATION_LOC = "Verwenden Sie die Datei-Zeitstempel-Optimierung" .C_USING_THIS_SETTINGS_LOC = "Mit dieser Einstellung" .C_USING_THIS_SETTINGS_LOC1 = " BY PARAMETER, alle vorherigen Einstellungen werden zurückgesetzt!" - .C_USING_THIS_SETTINGS_LOC2 = " Komplette Auswertung der Konfiguration gestattet."+0h0D0A - .C_USING_THIS_SETTINGS_LOC3 = " Konfigurationsdateien von Unterverzeichnissen und ererbete Konfigurationen aus dem Baum werden ausgewertet."+0h0D0A - .C_USING_THIS_SETTINGS_LOC4 = " Konfigurationsdateien von Unterverzeichnissen werden ausgewertet."+0h0D0A - .C_USING_THIS_SETTINGS_LOC5 = " Es werdenm keine anderen Konfigurationsdateien gelesen."+0h0D0A + .C_USING_THIS_SETTINGS_LOC2 = " Komplette Auswertung der Konfiguration gestattet."+CR_LF + .C_USING_THIS_SETTINGS_LOC3 = " Konfigurationsdateien von Unterverzeichnissen und ererbete Konfigurationen aus dem Baum werden ausgewertet."+CR_LF + .C_USING_THIS_SETTINGS_LOC4 = " Konfigurationsdateien von Unterverzeichnissen werden ausgewertet."+CR_LF + .C_USING_THIS_SETTINGS_LOC5 = " Es werden keine anderen Konfigurationsdateien gelesen."+CR_LF + .C_USING_THIS_SETTINGS_LOC6 = "Externe Konfigurationsdatei übergeben: " + .C_USING_THIS_SETTINGS_LOC7 = ", nutze gespeicherte Konfiguration." .C_WARNING_LOC = "WARNUNG!" .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" @@ -32129,11 +32191,11 @@ Define Class CL_LANG As Custom .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: " - .C_PJXPATH_ERR_LOC1 = 0h0D0A + 'Hauptdatei "' - .C_PJXPATH_ERR_LOC2 = 0h0D0A + 'Projekt-Icon Datei "' - .C_PJXPATH_ERR_LOC3 = 0h0D0A + 'Datei ""' - .C_PJXPATH_ERR_LOC4 = '"' + 0h0D0A + 'ist nicht in der PJX Ordner Struktur, "' - .C_PJXPATH_ERR_LOC5 = '",' + 0h0D0A + 'siehe Option "CheckFileInPath".' + 0h0D0A0D0A + .C_PJXPATH_ERR_LOC1 = CR_LF + 'Hauptdatei "' + .C_PJXPATH_ERR_LOC2 = CR_LF + 'Projekt-Icon Datei "' + .C_PJXPATH_ERR_LOC3 = CR_LF + 'Datei ""' + .C_PJXPATH_ERR_LOC4 = '"' + CR_LF + 'ist nicht in der PJX Ordner Struktur, "' + .C_PJXPATH_ERR_LOC5 = '",' + CR_LF + 'siehe Option "CheckFileInPath".' + CR_LF+CR_LF Otherwise && English (Inglés) @@ -32178,9 +32240,9 @@ Define Class CL_LANG As Custom .C_FILENAME_LOC = "File" .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "ERROR" .C_FOXBIN2PRG_SYNTAX_INFO_LOC = "SYNTAX AND PARAMETERS INFO" - .C_ClassTwice_Header_LOC = 0h0D0A+"Class defined twice."+0h0D0A - .C_ClassTwice_Lib_LOC = 0h0D0A+"Library: " - .C_ClassTwice_Class_LOC = 0h0D0A+"Class: " + .C_ClassTwice_Header_LOC = CR_LF+"Class defined twice."+CR_LF + .C_ClassTwice_Lib_LOC = CR_LF+"Library: " + .C_ClassTwice_Class_LOC = CR_LF+"Class: " TEXT TO .C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 <<>>################################################################################################################ <<>>FoxBin2Prg Home Page and download: https://github.com/fdbozzo/foxbin2prg/wiki - Fernando D. Bozzo (2013.11.25) @@ -32244,7 +32306,7 @@ Define Class CL_LANG As Custom <<>> 1. Default values <<>> 2., optional FOXBIN2PRG.CFG in folder of FOXBIN2PRG.EXE <<>> or, if defined, a config file given by a parameter calling FOXBIN2PRG - <<>> if used, the AllowInheritance setting controls if other config files will be evaluated (default). See below. + <<>> if used, the InhibitInheritance setting controls if other config files will be evaluated (default). See below. <<>> 3., optional FOXBIN2PRG.CFG in root of working directory <<>> 4., optional FOXBIN2PRG.CFG in every folder up to the working directory <<>> 5., optional Special settings per single DBF's Syntax: .dbf.cfg in tables folder) @@ -32257,14 +32319,17 @@ Define Class CL_LANG As Custom <<>>ShowProgressbar: 1 && 0=Don't show, 1=Allways show, 2=Show only for multi-file processing <<>>DontShowErrors: 0 && Show message errors by default <<>>ExtraBackupLevels: 1 && By default 1 BAK is created. With this you can make more .N.BAK, or none - <<>>Debug: 0 && Don't Activate individual .Log by default + <<>>Debug: 0 && 0=Don't Activate individual .Log by default + <<>> && 1=Activate individual .Log by default + <<>> && 2=??? + <<>> && Only valid if not controlled by parameter <<>>BackgroundImage: && Backgroundimage for process form. Empty for empty Background. File not found uses default. <<>>HomeDir: 1 && Home directory in PJX <<>> && 0 don't save HomeDir in PJ2 <<>> && 1 save HomeDir in PJ2 <<>>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <<>>-- Settings for config file via parameter only - <<>>AllowInheritance: 0 && 0=Allow scanning "regular" config files (file via parameter is just additional default) + <<>>InhibitInheritance: 0 && 0=Allow scanning "regular" config files (file via parameter is just additional default) <<>> && 1=Only read tree from root of the file given by parameter, not FoxBin2Prg default <<>> && 2=Only read folder and subfolder of the file given by parameter <<>> && 3=Read no other file @@ -32430,10 +32495,12 @@ Define Class CL_LANG As Custom .C_USE_FILE_TIMESTAMP_OPTIMIZATION_LOC = "Use file timestamp Optimization" .C_USING_THIS_SETTINGS_LOC = "Using this settings" .C_USING_THIS_SETTINGS_LOC1 = " BY PARAMETER, skipping all previous config!" - .C_USING_THIS_SETTINGS_LOC2 = " Parsing of full configuration allowed."+0h0D0A - .C_USING_THIS_SETTINGS_LOC3 = " Parsing configuration in parent~ and subdirectories allowed."+0h0D0A - .C_USING_THIS_SETTINGS_LOC4 = " Parsing configuration in subdirectories allowed."+0h0D0A - .C_USING_THIS_SETTINGS_LOC5 = " Parsing of other configuration allowed."+0h0D0A + .C_USING_THIS_SETTINGS_LOC2 = " Parsing of full configuration allowed."+CR_LF + .C_USING_THIS_SETTINGS_LOC3 = " Parsing configuration in parent~ and subdirectories allowed."+CR_LF + .C_USING_THIS_SETTINGS_LOC4 = " Parsing configuration in subdirectories allowed."+CR_LF + .C_USING_THIS_SETTINGS_LOC5 = " Parsing of other configuration not allowed."+CR_LF + .C_USING_THIS_SETTINGS_LOC6 = "External configuration file set: " + .C_USING_THIS_SETTINGS_LOC7 = ", using cached config." .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" @@ -32446,11 +32513,11 @@ Define Class CL_LANG As Custom .C_INDEX2BIN_STRUCTURAL_LOC = " TAGs for structural index" .C_INDEX2BIN_STANDALONE_LOC = " Standalone index " .C_INDEX2BIN_COMPOUND_LOC = " TAGs for compound index " - .C_PJXPATH_ERR_LOC1 = 0h0D0A + 'Main file "' - .C_PJXPATH_ERR_LOC2 = 0h0D0A + 'Project icon file "' - .C_PJXPATH_ERR_LOC3 = 0h0D0A + 'File ""' - .C_PJXPATH_ERR_LOC4 = '"' + 0h0D0A + 'not in PJX folder structure, "' - .C_PJXPATH_ERR_LOC5 = '",' + 0h0D0A + 'check option "CheckFileInPath".' + 0h0D0A0D0A + .C_PJXPATH_ERR_LOC1 = CR_LF + 'Main file "' + .C_PJXPATH_ERR_LOC2 = CR_LF + 'Project icon file "' + .C_PJXPATH_ERR_LOC3 = CR_LF + 'File ""' + .C_PJXPATH_ERR_LOC4 = '"' + CR_LF + 'not in PJX folder structure, "' + .C_PJXPATH_ERR_LOC5 = '",' + 0h0D0A + 'check option "CheckFileInPath".' + CR_LF+CR_LF .n_LanguageSelectedMethod = 0 && 0=Automatic with VERSION(3) diff --git a/foxbin2prg_keywords.cdx b/foxbin2prg_keywords.cdx deleted file mode 100644 index 57e7d5f9dad87580dd174d214408edd1db79beaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25600 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 Pq2Jk+tO|4$pY#6!tM2Mo diff --git a/foxbin2prg_keywords.dbf b/foxbin2prg_keywords.dbf deleted file mode 100644 index 1752096e52ca6fcd2ecb9c79f7f948b229005bdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83193 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